Skip to content

Commit 4220476

Browse files
carlosrpgchrisinajar
authored andcommitted
Enable hidden duel arena and small duel code refactory (#2301)
* Enable hidden duel arena and smal duel code refactory * details, props, trees, waterfall, statues, etc. * minimap updated, moved the shop a bit * resized azazel. updated minimap
1 parent 72d773d commit 4220476

File tree

9 files changed

+124
-159
lines changed

9 files changed

+124
-159
lines changed

content/maps/oaa.vmap

67 KB
Binary file not shown.

content/materials/overviews/oaa.tga

0 Bytes
Binary file not shown.

content/materials/overviews/oaa.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
"settings"
2-
{
3-
"clampu" "1"
4-
"clampv" "1"
5-
"nocompress" "1"
6-
"nomip" "1"
7-
8-
}
1+
"settings"
2+
{
3+
"clampu" "1"
4+
"clampv" "1"
5+
"nocompress" "1"
6+
"nomip" "1"
7+
8+
}

content/materials/overviews/oaa.vmat

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
"Layer0"
2-
{
3-
"Shader" "ui.vfx"
4-
"F_TRANSLUCENT" "0"
5-
"Texture" "materials/overviews/oaa.tga"
6-
}
1+
"Layer0"
2+
{
3+
"Shader" "ui.vfx"
4+
"F_TRANSLUCENT" "0"
5+
"Texture" "materials/overviews/oaa.tga"
6+
}
-4.45 KB
Binary file not shown.

game/resource/overviews/oaa.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
oaa
2-
{
3-
material materials/overviews/oaa.vmat
4-
pos_x -10240
5-
pos_y 10240
6-
scale 20.000
7-
}
8-
1+
oaa
2+
{
3+
material materials/overviews/oaa.vmat
4+
pos_x -10240
5+
pos_y 10240
6+
scale 20.000
7+
}
8+

game/scripts/vscripts/components/duels/duels.lua

+88-100
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ DUEL_IS_STARTING = 21
77

88
Duels = Duels or {}
99
local zoneNames = {
10-
"duel_1",
11-
"duel_2",
10+
"duel_1", -- small arena
11+
"duel_2", -- small arena
1212
"duel_3",
1313
"duel_4",
14+
"duel_5",
1415
}
1516

1617
local DuelPreparingEvent = Event()
@@ -23,7 +24,6 @@ Duels.onEnd = DuelEndEvent.listen
2324

2425
function Duels:Init ()
2526
DebugPrint('Init duels')
26-
2727
self.currentDuel = nil
2828
iter(zoneNames):foreach(partial(self.RegisterZone, self))
2929

@@ -247,7 +247,7 @@ function Duels:StartDuel(options)
247247
end)
248248
end
249249

250-
function Duels:ActuallyStartDuel(options)
250+
function Duels:SplitDuelPlayers(options)
251251
-- respawn everyone
252252
local goodPlayerIndex = 1
253253
local badPlayerIndex = 1
@@ -318,125 +318,95 @@ function Duels:ActuallyStartDuel(options)
318318
Notifications:TopToAll({text="#duel_not_enough_players", duration=2.0})
319319
self.currentDuel = nil
320320
Music:PlayBackground(1, 7)
321-
return
321+
return nil
322322
end
323-
324323
Music:SetMusic(13)
325324

326325
local playerSplitOffset = RandomInt(0, maxPlayers)
327326
if options.players then
328327
playerSplitOffset = math.min(options.players, maxPlayers)
329328
end
330-
-- local playerSplitOffset = maxPlayers
331-
local spawnLocations = RandomInt(0, 1) == 1
332-
local arenaChoice = RandomInt(0, 1) == 1
333-
local duel_1 = 'duel_1'
334-
local duel_2 = 'duel_2'
335-
if arenaChoice then
336-
duel_1 = 'duel_3'
337-
end
338-
local spawn1 = Entities:FindByName(nil, duel_1 .. '_spawn_1'):GetAbsOrigin()
339-
local spawn2 = Entities:FindByName(nil, duel_1 .. '_spawn_2'):GetAbsOrigin()
340329

341-
if spawnLocations then
342-
local tmp = spawn1
343-
spawn1 = spawn2
344-
spawn2 = tmp
330+
if playerSplitOffset > maxPlayers / 2.0 then
331+
playerSplitOffset = maxPlayers - playerSplitOffset
345332
end
346333

347-
for playerNumber = 1,playerSplitOffset do
348-
DebugPrint('Adding player number ' .. playerNumber)
349-
local goodGuy = self:GetUnassignedPlayer(goodPlayers, goodPlayerIndex)
350-
local badGuy = self:GetUnassignedPlayer(badPlayers, badPlayerIndex)
351-
local goodPlayer = PlayerResource:GetPlayer(goodGuy.id)
352-
local badPlayer = PlayerResource:GetPlayer(badGuy.id)
353-
local goodHero = goodPlayer:GetAssignedHero()
354-
local badHero = badPlayer:GetAssignedHero()
334+
if options.isFinalDuel then
335+
playerSplitOffset = 0
336+
end
355337

356-
goodGuy.duelNumber = 1
357-
badGuy.duelNumber = 1
338+
return
339+
{
340+
MaxPlayers = maxPlayers,
341+
PlayerSplitOffset = playerSplitOffset,
342+
GoodPlayers = goodPlayers,
343+
BadPlayers = badPlayers,
344+
GoodPlayerIndex = goodPlayerIndex,
345+
BadPlayerIndex = badPlayerIndex,
346+
}
347+
end
358348

359-
SafeTeleportAll(goodHero, spawn1, 150)
360-
SafeTeleportAll(badHero, spawn2, 150)
349+
function Duels:ActuallyStartDuel(options)
350+
local split = self:SplitDuelPlayers(options)
351+
if split == nil then
352+
return
353+
end
361354

362-
if arenaChoice then
363-
self.zones[3].addPlayer(goodGuy.id)
364-
self.zones[3].addPlayer(badGuy.id)
365-
else
366-
self.zones[1].addPlayer(goodGuy.id)
367-
self.zones[1].addPlayer(badGuy.id)
368-
end
355+
DebugPrint("Duel Player Split")
356+
DebugPrint(split.PlayerSplitOffset)
369357

370-
MoveCameraToPlayer(goodHero)
371-
MoveCameraToPlayer(badHero)
358+
local bigArenaIndex = RandomInt(3, 5)
359+
local smallArenaIndex = RandomInt(1, 2)
372360

373-
-- stop player action
374-
goodHero:Stop()
375-
badHero:Stop()
361+
self:SpawnPlayersOnArenas(split, smallArenaIndex, bigArenaIndex)
362+
self:PreparePlayersToStartDuel(options, split)
376363

377-
-- disable respawn
378-
goodHero:SetRespawnsDisabled(true)
379-
badHero:SetRespawnsDisabled(true)
380-
end
364+
end
381365

382-
spawnLocations = RandomInt(0, 1) == 1
383-
arenaChoice = RandomInt(0, 1) == 1
384-
if arenaChoice then
385-
duel_2 = 'duel_4'
386-
end
366+
function Duels:SpawnPlayerOnArena(playerSplit, arenaIndex, duelNumber)
387367

388-
spawn1 = Entities:FindByName(nil, duel_2 .. '_spawn_1'):GetAbsOrigin()
389-
spawn2 = Entities:FindByName(nil, duel_2 .. '_spawn_2'):GetAbsOrigin()
368+
local spawn1 = Entities:FindByName(nil, 'duel_' .. tostring(arenaIndex) .. '_spawn_1'):GetAbsOrigin()
369+
local spawn2 = Entities:FindByName(nil, 'duel_' .. tostring(arenaIndex) .. '_spawn_2'):GetAbsOrigin()
390370

391-
if spawnLocations then
392-
local tmp = spawn1
393-
spawn1 = spawn2
394-
spawn2 = tmp
395-
end
371+
local goodGuy = self:GetUnassignedPlayer(playerSplit.GoodPlayers, playerSplit.GoodPlayerIndex)
372+
local badGuy = self:GetUnassignedPlayer(playerSplit.BadPlayers, playerSplit.BadPlayerIndex)
373+
local goodPlayer = PlayerResource:GetPlayer(goodGuy.id)
374+
local badPlayer = PlayerResource:GetPlayer(badGuy.id)
375+
local goodHero = goodPlayer:GetAssignedHero()
376+
local badHero = badPlayer:GetAssignedHero()
396377

397-
for playerNumber = playerSplitOffset+1,maxPlayers do
398-
DebugPrint('Adding player number ' .. playerNumber)
399-
local goodGuy = self:GetUnassignedPlayer(goodPlayers, goodPlayerIndex)
400-
local badGuy = self:GetUnassignedPlayer(badPlayers, badPlayerIndex)
401-
local goodPlayer = PlayerResource:GetPlayer(goodGuy.id)
402-
local badPlayer = PlayerResource:GetPlayer(badGuy.id)
403-
local goodHero = goodPlayer:GetAssignedHero()
404-
local badHero = badPlayer:GetAssignedHero()
405378

406-
goodGuy.duelNumber = 2
407-
badGuy.duelNumber = 2
379+
DebugPrint('Spawning Hero ' .. goodHero:GetUnitName() .. ' and ' .. badHero:GetUnitName() .. ' on Arena ' .. tostring(arenaIndex) .. ' duelNumber ' .. tostring(duelNumber) )
380+
goodGuy.duelNumber = duelNumber
381+
badGuy.duelNumber = duelNumber
408382

409-
SafeTeleportAll(goodHero, spawn1, 150)
410-
SafeTeleportAll(badHero, spawn2, 150)
383+
SafeTeleportAll(goodHero, spawn1, 150)
384+
SafeTeleportAll(badHero, spawn2, 150)
411385

412-
if arenaChoice then
413-
self.zones[4].addPlayer(goodGuy.id)
414-
self.zones[4].addPlayer(badGuy.id)
415-
else
416-
self.zones[2].addPlayer(goodGuy.id)
417-
self.zones[2].addPlayer(badGuy.id)
418-
end
386+
self.zones[arenaIndex].addPlayer(goodGuy.id)
387+
self.zones[arenaIndex].addPlayer(badGuy.id)
419388

420-
MoveCameraToPlayer(goodHero)
421-
MoveCameraToPlayer(badHero)
389+
MoveCameraToPlayer(goodHero)
390+
MoveCameraToPlayer(badHero)
422391

423-
-- stop player action
424-
goodHero:Stop()
425-
badHero:Stop()
392+
-- stop player action
393+
goodHero:Stop()
394+
badHero:Stop()
426395

427-
-- disable respawn
428-
goodHero:SetRespawnsDisabled(true)
429-
badHero:SetRespawnsDisabled(true)
430-
end
396+
-- disable respawn
397+
goodHero:SetRespawnsDisabled(true)
398+
badHero:SetRespawnsDisabled(true)
399+
end
431400

432-
for _,player in ipairs(badPlayers) do
401+
function Duels:PreparePlayersToStartDuel(options, playerSplit)
402+
for _,player in ipairs(playerSplit.BadPlayers) do
433403
if player.assigned == nil then
434404
local hero = PlayerResource:GetSelectedHeroEntity(player.id)
435405
hero:Stop()
436406
hero:AddNewModifier(nil, nil, "modifier_out_of_duel", nil)
437407
end
438408
end
439-
for _,player in ipairs(goodPlayers) do
409+
for _,player in ipairs(playerSplit.GoodPlayers) do
440410
if player.assigned == nil then
441411
local hero = PlayerResource:GetSelectedHeroEntity(player.id)
442412
hero:Stop()
@@ -445,17 +415,21 @@ function Duels:ActuallyStartDuel(options)
445415
end
446416

447417
self.currentDuel = {
448-
goodLiving1 = playerSplitOffset,
449-
badLiving1 = playerSplitOffset,
450-
goodLiving2 = maxPlayers - playerSplitOffset,
451-
badLiving2 = maxPlayers - playerSplitOffset,
452-
duelEnd1 = playerSplitOffset == 0,
453-
duelEnd2 = maxPlayers == playerSplitOffset,
454-
badPlayers = badPlayers,
455-
goodPlayers = goodPlayers,
456-
badPlayerIndex = badPlayerIndex,
457-
goodPlayerIndex = goodPlayerIndex
418+
goodLiving1 = playerSplit.PlayerSplitOffset,
419+
badLiving1 = playerSplit.PlayerSplitOffset,
420+
goodLiving2 = playerSplit.MaxPlayers - playerSplit.PlayerSplitOffset,
421+
badLiving2 = playerSplit.MaxPlayers - playerSplit.PlayerSplitOffset,
422+
duelEnd1 = playerSplit.PlayerSplitOffset == 0,
423+
duelEnd2 = playerSplit.MaxPlayers == playerSplit.PlayerSplitOffset,
424+
badPlayers = playerSplit.BadPlayers,
425+
goodPlayers = playerSplit.GoodPlayers,
426+
badPlayerIndex = playerSplit.BadPlayerIndex,
427+
goodPlayerIndex = playerSplit.GoodPlayerIndex
458428
}
429+
430+
DebugPrint("Duel Info")
431+
DebugPrintTable(self.currentDuel)
432+
459433
DuelStartEvent.broadcast(self.currentDuel)
460434

461435
if options.timeout == nil then
@@ -472,6 +446,20 @@ function Duels:ActuallyStartDuel(options)
472446
end
473447
end
474448

449+
function Duels:SpawnPlayersOnArenas(playerSplit, arenaIndex1, arenaIndex2)
450+
451+
-- Smaller Arena
452+
for playerNumber = 1, playerSplit.PlayerSplitOffset do
453+
self:SpawnPlayerOnArena(playerSplit, arenaIndex1, 1)
454+
end
455+
456+
-- Bigger Arena
457+
for playerNumber = playerSplit.PlayerSplitOffset + 1, playerSplit.MaxPlayers do
458+
self:SpawnPlayerOnArena(playerSplit, arenaIndex2, 2)
459+
end
460+
461+
end
462+
475463
function Duels:GetUnassignedPlayer (group, max)
476464
while true do
477465
local playerIndex = RandomInt(1, max)

game/scripts/vscripts/components/duels/final-duel.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ function FinalDuel:Trigger (team)
3838

3939
Duels:StartDuel({
4040
players = 0,
41-
timeout = FINAL_DUEL_TIMEOUT
41+
timeout = FINAL_DUEL_TIMEOUT,
42+
isFinalDuel = true
4243
})
4344
end
4445

game/scripts/vscripts/components/duels/runes.lua

+12-36
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,21 @@ if DuelRunes == nil then
88
end
99

1010
function DuelRunes:Init ()
11-
DuelRunes.zone1 = ZoneControl:CreateZone('duel_1_rune_hill', {
12-
mode = ZONE_CONTROL_EXCLUSIVE_OUT,
13-
margin = 0,
14-
padding = 0,
15-
players = {
16-
}
17-
})
1811

19-
DuelRunes.zone2 = ZoneControl:CreateZone('duel_2_rune_hill', {
20-
mode = ZONE_CONTROL_EXCLUSIVE_OUT,
21-
margin = 0,
22-
padding = 0,
23-
players = {
24-
}
25-
})
26-
DuelRunes.zone3 = ZoneControl:CreateZone('duel_3_rune_hill', {
27-
mode = ZONE_CONTROL_EXCLUSIVE_OUT,
28-
margin = 0,
29-
padding = 0,
30-
players = {
31-
}
32-
})
12+
for index,key in pairs(Duels.zones) do
13+
DebugPrint("Init rune hill for arena #" .. tostring(index))
3314

34-
DuelRunes.zone4 = ZoneControl:CreateZone('duel_4_rune_hill', {
35-
mode = ZONE_CONTROL_EXCLUSIVE_OUT,
36-
margin = 0,
37-
padding = 0,
38-
players = {
39-
}
40-
})
15+
local runeHill = ZoneControl:CreateZone('duel_' .. tostring(index) .. '_rune_hill', {
16+
mode = ZONE_CONTROL_EXCLUSIVE_OUT,
17+
margin = 0,
18+
padding = 0,
19+
players = {
20+
}
21+
})
4122

42-
DuelRunes.zone1.onStartTouch(DuelRunes.StartTouch)
43-
DuelRunes.zone1.onEndTouch(DuelRunes.EndTouch)
44-
DuelRunes.zone2.onStartTouch(DuelRunes.StartTouch)
45-
DuelRunes.zone2.onEndTouch(DuelRunes.EndTouch)
46-
DuelRunes.zone3.onStartTouch(DuelRunes.StartTouch)
47-
DuelRunes.zone3.onEndTouch(DuelRunes.EndTouch)
48-
DuelRunes.zone4.onStartTouch(DuelRunes.StartTouch)
49-
DuelRunes.zone4.onEndTouch(DuelRunes.EndTouch)
23+
runeHill.onStartTouch(DuelRunes.StartTouch)
24+
runeHill.onEndTouch(DuelRunes.EndTouch)
25+
end
5026

5127
Duels.onEnd(function()
5228
Timers:RemoveTimer('DuelRunes')

0 commit comments

Comments
 (0)