Name | Type | is_array | initial_value |
Allplayerforce | force | No | |
allyinteger | integer | Yes | |
allystring | string | Yes | |
base | unit | Yes | |
baseinteger | integer | Yes | |
baseinteger2 | integer | Yes | |
bounty | integer | No | |
bountymoney | real | Yes | |
bountyreal | real | No | |
bountystring | string | No | |
camerainteger | integer | No | |
Campfirebuilding | unitcode | No | |
capitalrace | integer | Yes | |
centerstring | string | No | |
circlepos | location | Yes | |
colorcode | string | Yes | |
colorcodeplayer | string | Yes | |
colorcodetimer | string | No | |
colorname | string | Yes | |
colorrealpercent1 | real | Yes | |
colorrealpercent2 | real | Yes | |
colorrealpercent3 | real | Yes | |
COPtype | destructablecode | No | |
counter | integer | Yes | |
counternextpl | integer | Yes | |
countryinteger | integer | Yes | |
countryregion | rect | Yes | |
Countrystring | string | Yes | |
currentlocation | location | No | |
currentlocation2 | location | No | |
currentlocation3 | location | No | |
currentrallypoint | location | No | |
currentunitgroup | group | No | |
currentunitgroup3 | group | No | |
currentunitgroup4 | group | No | |
customvalueunit | integer | Yes | |
D | integer | No | |
Deaths | integer | Yes | |
Defendabilitybuff | buffcode | No | |
Defendabilitytype | abilcode | No | |
Defendabilitytypebases | abilcode | No | |
defender | unit | Yes | |
defendermarker | abilcode | No | |
Dummytype | unitcode | No | |
E | integer | No | |
endinteger | integer | No | |
endinteger2 | integer | No | |
F | integer | No | |
floatingtext | texttag | Yes | |
Fog | integer | No | |
gameHasBegun | boolean | No | false |
gameisOn | integer | No | |
gameIsOver | boolean | No | false |
giveteam3goldbonus | integer | No | |
giveteamGoldBonus | boolean | Yes | false |
goldBonus | integer | Yes | |
H | integer | No | |
Haven | unit | Yes | |
Havenarea | rect | Yes | |
Haveninteger | integer | Yes | |
Havennumber | integer | No | 0 |
highestnumber | integer | No | |
Hostchooses | timer | No | |
hostoptionsunit | unit | No | |
hoststarted | integer | No | |
I | integer | No | |
IncomeModifier1 | integer | Yes | |
Incomemodifier2 | integer | No | |
isFirst | boolean | No | true |
ismiddle | boolean | No | true |
isTeamsMode | boolean | No | false |
J | integer | No | |
K | integer | No | |
Kills | integer | Yes | |
lastPlayer | player | No | |
M | integer | No | |
Mapname | string | No | |
maxspawn | integer | No | |
middleplayer | player | No | |
Modeabilityavh | abilcode | No | |
modeinteger | integer | No | |
modeinteger2 | integer | No | |
Multiboard | multiboard | No | |
multiboardmode | integer | No | |
multiboardtaken | boolean | No | |
N | integer | No | |
nationplayer | integer | Yes | |
nextpl | player | Yes | |
numbases | integer | No | |
numcitiesregion | integer | Yes | |
nummerationbase | integer | No | |
numraces | integer | No | |
numregions | integer | No | |
O | integer | No | |
P | integer | No | |
Pinggroup | force | No | |
Pinglocation | location | No | |
playercheckowner | integer | No | |
playerinmulti | integer | Yes | |
playerLeft | boolean | Yes | false |
Playername | string | Yes | |
playerplaying | force | No | |
playerrowed | integer | No | |
playerrowednumbers | integer | Yes | |
playersNumber | integer | No | |
playerspawns | unit | Yes | |
playertaken | boolean | Yes | |
Playertools | unit | Yes | |
Playertoolstype | unitcode | No | |
Porttype | unitcode | No | |
R | integer | No | |
racebase | unitcode | Yes | |
racecapital | unitcode | Yes | |
Raceitem | itemcode | Yes | |
racemodavailable | boolean | No | |
Racemodtimer | timer | No | |
raceplayer | integer | Yes | |
racetaken | boolean | Yes | |
RaceTavern | unit | Yes | |
random1 | integer | No | |
random2 | integer | No | |
Randommode | integer | No | |
Randommodstring | string | No | |
regionbasesowned | integer | Yes | |
regioncontrol | integer | Yes | |
regionplayer | integer | Yes | |
riskgameplay | integer | No | |
Selectspawnability | abilcode | No | |
sortingvalues | integer | Yes | |
spawn | boolean | No | |
spawncorrection | integer | Yes | |
spawnfromplayers | integer | Yes | |
spawningnumber | integer | Yes | |
spawnlocation | location | Yes | |
spawnregion | rect | Yes | |
spawnsperround | integer | Yes | |
spawnstring | string | No | |
spawnunit | unitcode | Yes | |
spawnunit2 | unitcode | Yes | |
spawnunit3 | unitcode | Yes | |
spawnunit4 | unitcode | Yes | |
spawnunit5 | unitcode | Yes | |
spawnX | real | Yes | |
spawnY | real | Yes | |
specialspawn | integer | Yes | |
specialspawninteger | integer | Yes | |
Startingdefender | unitcode | No | |
stringfog | string | No | |
stringgame | string | No | |
stringmode | string | No | |
stringmode2 | string | No | |
stringmultiboardmode | string | No | |
stringtournament | string | No | |
T | integervar | No | |
tempInteger | integer | No | |
tempinteger10 | integer | No | |
tempinteger2 | integer | No | |
tempinteger3 | integer | No | |
tempinteger4 | integer | No | |
tempinteger5 | integer | No | |
tempinteger6 | integer | No | |
tempinteger7 | integer | No | |
Tempplayergroup2 | force | No | |
timeinteger | integer | No | |
timeintegerstart | integer | No | |
timeofday | integer | No | |
timestring | string | No | |
Tournament | integer | No | |
tower | unit | Yes | |
Towerevolutiontech | techcode | No | |
Towerevolve | integer | No | |
towerevovlestring | string | No | |
Towerinteger | integer | No | |
Turns | integer | No | |
typeoftower | unitcode | No | |
U | integer | No | |
version | string | No | |
won | boolean | Yes | false |
X | integer | No |
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Turntimeonmulitboard_Actions takes nothing returns nothing
local multiboarditem mbitem = null
if udg_timeinteger == 0 then
call ConditionalTriggerExecute( gg_trg_Give_Gold )
set udg_timeinteger = udg_timeintegerstart
else
endif
if udg_timeinteger <= 3 then
set udg_colorcodetimer = "|cffff0000"
call StartSound( gg_snd_BattleNetTick )
else
set udg_colorcodetimer = "|cffffcc00"
endif
set mbitem = MultiboardGetItem( udg_Multiboard, 0, 0 )
call MultiboardSetItemValue(mbitem, ( ( "Turn Time: " + udg_colorcodetimer ) + ( I2S(udg_timeinteger) + "|r" ) ))
call MultiboardReleaseItem(mbitem)
set udg_timeinteger = ( udg_timeinteger - 1 )
endfunction
//===========================================================================
function InitTrig_Turntimeonmulitboard takes nothing returns nothing
set gg_trg_Turntimeonmulitboard = CreateTrigger( )
call DisableTrigger( gg_trg_Turntimeonmulitboard )
call TriggerRegisterTimerEventPeriodic( gg_trg_Turntimeonmulitboard, 1.00 )
call TriggerAddAction( gg_trg_Turntimeonmulitboard, function Trig_Turntimeonmulitboard_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_give_spawns_new1_Actions takes nothing returns nothing
local unit u
local player p
local location rally
set udg_H = 1
loop
exitwhen udg_H > udg_numregions
if udg_regioncontrol[udg_H] != 0 then
set udg_spawn = true
set p = Player(udg_regioncontrol[udg_H] -1 )
set udg_spawningnumber[udg_H] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + udg_spawncorrection[udg_H] )
if udg_riskgameplay != 1 then
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( ( udg_spawnsperround[udg_H] * udg_maxspawn ) - udg_spawningnumber[udg_H] ) )
if udg_spawningnumber[udg_H] < ( udg_spawnsperround[udg_H] * udg_maxspawn ) then
if udg_specialspawninteger[udg_H] == 0 then
set u = CreateUnit( p, udg_spawnunit[udg_H] , udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_specialspawn[udg_H] = ( udg_specialspawn[udg_H] + 1 )
if udg_specialspawn[udg_H] < udg_specialspawninteger[udg_H] then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_specialspawn[udg_H] = 0
set udg_spawn = false
endif
endif
else
set udg_spawn = false
endif
else
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) - udg_spawningnumber[udg_H] ) )
if udg_spawningnumber[udg_H] < ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) + 0 ) and ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) + 0 ) >= 1 then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
endif
if udg_spawn == true then
call SetUnitUserData( u, udg_H )
set rally = GetUnitRallyPoint(udg_playerspawns[udg_H])
call IssuePointOrderLoc( u, "attack", rally )
call RemoveLocation ( rally )
set udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + 1 )
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( GetItemCharges(UnitItemInSlot(udg_playerspawns[udg_H], 0)) - 1 ) )
else
endif
else
endif
set udg_H = udg_H + 1
endloop
call PolledWait( 0.50 )
call ConditionalTriggerExecute( gg_trg_give_spawns_2 )
endfunction
//===========================================================================
function InitTrig_give_spawns_1 takes nothing returns nothing
set gg_trg_give_spawns_1 = CreateTrigger( )
call TriggerAddAction( gg_trg_give_spawns_1, function Trig_give_spawns_new1_Actions )
endfunction
//TESH.scrollpos=18
//TESH.alwaysfold=0
function Trig_give_spawns_new2_Actions takes nothing returns nothing
local unit u
local player p
local location rally
set udg_H = 1
loop
exitwhen udg_H > udg_numregions
if udg_regioncontrol[udg_H] != 0 then
set udg_spawn = true
set p = Player(udg_regioncontrol[udg_H] -1 )
set udg_spawningnumber[udg_H] = udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )]
if udg_riskgameplay != 1 then
if udg_spawnsperround[udg_H] >= 2 and udg_spawningnumber[udg_H] < ( udg_spawnsperround[udg_H] * udg_maxspawn ) then
set u = CreateUnit( p, udg_spawnunit2[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
else
if udg_spawningnumber[udg_H] < ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) + 0 ) and ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) + 0 ) >= 2 then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
endif
if udg_spawn == true then
call SetUnitUserData( u, udg_H )
set rally = GetUnitRallyPoint(udg_playerspawns[udg_H])
call IssuePointOrderLoc( u, "attack", rally )
call RemoveLocation ( rally )
set udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + 1 )
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( GetItemCharges(UnitItemInSlot(udg_playerspawns[udg_H], 0)) - 1 ) )
else
endif
else
endif
set udg_H = udg_H + 1
endloop
call PolledWait( 0.50 )
call ConditionalTriggerExecute( gg_trg_give_spawns_3 )
endfunction
//===========================================================================
function InitTrig_give_spawns_2 takes nothing returns nothing
set gg_trg_give_spawns_2 = CreateTrigger( )
call TriggerAddAction( gg_trg_give_spawns_2, function Trig_give_spawns_new2_Actions )
endfunction
//TESH.scrollpos=21
//TESH.alwaysfold=0
function Trig_give_spawns_3_Actions takes nothing returns nothing
local unit u
local player p
local location rally
set udg_H = 1
loop
exitwhen udg_H > udg_numregions
if udg_regioncontrol[udg_H] != 0 then
set udg_spawn = true
set p = Player(udg_regioncontrol[udg_H] -1 )
set udg_spawningnumber[udg_H] = udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )]
if udg_riskgameplay != 1 then
if udg_spawnsperround[udg_H] >= 3 and udg_spawningnumber[udg_H] < ( udg_spawnsperround[udg_H] * udg_maxspawn ) then
set u = CreateUnit( p, udg_spawnunit3[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
else
if udg_spawningnumber[udg_H] < ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) + 0 ) and ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) + 0 ) >= 3 then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
endif
if udg_spawn == true then
call SetUnitUserData( u, udg_H )
set rally = GetUnitRallyPoint(udg_playerspawns[udg_H])
call IssuePointOrderLoc( u, "attack", rally )
call RemoveLocation ( rally )
set udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + 1 )
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( GetItemCharges(UnitItemInSlot(udg_playerspawns[udg_H], 0)) - 1 ) )
else
endif
else
endif
set udg_H = udg_H + 1
endloop
call PolledWait( 0.50 )
call ConditionalTriggerExecute( gg_trg_give_spawns_4 )
endfunction
//===========================================================================
function InitTrig_give_spawns_3 takes nothing returns nothing
set gg_trg_give_spawns_3 = CreateTrigger( )
call TriggerAddAction( gg_trg_give_spawns_3, function Trig_give_spawns_3_Actions )
endfunction
//TESH.scrollpos=23
//TESH.alwaysfold=0
function Trig_give_spawns_4_Actions takes nothing returns nothing
local unit u
local player p
local location rally
set udg_H = 1
loop
exitwhen udg_H > udg_numregions
if udg_regioncontrol[udg_H] != 0 then
set udg_spawn = true
set p = Player(udg_regioncontrol[udg_H] -1 )
set udg_spawningnumber[udg_H] = udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )]
if udg_riskgameplay != 1 then
if udg_spawnsperround[udg_H] >= 4 and udg_spawningnumber[udg_H] < ( udg_spawnsperround[udg_H] * udg_maxspawn ) then
set u = CreateUnit( p, udg_spawnunit4[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
else
if udg_spawningnumber[udg_H] < ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) + 0 ) and ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) + 0 ) >= 4 then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
endif
if udg_spawn == true then
call SetUnitUserData( u, udg_H )
set rally = GetUnitRallyPoint(udg_playerspawns[udg_H])
call IssuePointOrderLoc( u, "attack", rally )
call RemoveLocation ( rally )
set udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + 1 )
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( GetItemCharges(UnitItemInSlot(udg_playerspawns[udg_H], 0)) - 1 ) )
else
endif
else
endif
set udg_H = udg_H + 1
endloop
call PolledWait( 0.50 )
call ConditionalTriggerExecute( gg_trg_give_spawns_5 )
endfunction
//===========================================================================
function InitTrig_give_spawns_4 takes nothing returns nothing
set gg_trg_give_spawns_4 = CreateTrigger( )
call TriggerAddAction( gg_trg_give_spawns_4, function Trig_give_spawns_4_Actions )
endfunction
//TESH.scrollpos=9
//TESH.alwaysfold=0
function Trig_give_spawns_5_Actions takes nothing returns nothing
local unit u
local player p
local location rally
set udg_H = 1
loop
exitwhen udg_H > udg_numregions
if udg_regioncontrol[udg_H] != 0 then
set udg_spawn = true
set p = Player(udg_regioncontrol[udg_H] -1 )
set udg_spawningnumber[udg_H] = udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )]
if udg_riskgameplay != 1 then
if udg_spawnsperround[udg_H] >= 5 and udg_spawningnumber[udg_H] < ( udg_spawnsperround[udg_H] * udg_maxspawn ) then
set u = CreateUnit( p, udg_spawnunit5[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
else
if udg_spawningnumber[udg_H] < ( ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) * udg_maxspawn ) + 0 ) and ( ( ( udg_numcitiesregion[udg_H] + 1 ) / 2 ) + 0 ) >= 5 then
set u = CreateUnit( p, udg_spawnunit[udg_H], udg_spawnX[udg_H], udg_spawnY[udg_H], bj_UNIT_FACING )
else
set udg_spawn = false
endif
endif
if udg_spawn == true then
call SetUnitUserData( u, udg_H )
set rally = GetUnitRallyPoint(udg_playerspawns[udg_H])
call IssuePointOrderLoc( u, "attack", rally )
call RemoveLocation ( rally )
set udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( udg_H + ( ( udg_regioncontrol[udg_H] - 1 ) * 100 ) )] + 1 )
call SetItemCharges( UnitItemInSlot(udg_playerspawns[udg_H], 0), ( GetItemCharges(UnitItemInSlot(udg_playerspawns[udg_H], 0)) - 1 ) )
else
endif
else
endif
set udg_H = udg_H + 1
endloop
endfunction
//===========================================================================
function InitTrig_give_spawns_5 takes nothing returns nothing
set gg_trg_give_spawns_5 = CreateTrigger( )
call TriggerAddAction( gg_trg_give_spawns_5, function Trig_give_spawns_5_Actions )
endfunction
//TESH.scrollpos=47
//TESH.alwaysfold=0
function Regionnews takes string s returns nothing
loop
exitwhen not udg_multiboardtaken
call PolledWait( 1)
endloop
set udg_multiboardtaken = true
call MultiboardSetItemValueBJ( udg_Multiboard, 1, ( udg_playersNumber + 4 ), s )
call PolledWait( 5)
set udg_multiboardtaken = false
call PolledWait( 1)
if not udg_multiboardtaken then
call MultiboardSetItemValueBJ( udg_Multiboard, 1, ( udg_playersNumber + 4 ), "" )
endif
endfunction
function Trig_Activate_Region_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetChangingUnit()) == udg_typeoftower ) ) then
return false
endif
return true
endfunction
function Trig_Activate_Region_Actions takes nothing returns nothing
local integer a = GetUnitUserData(GetChangingUnit())
local integer b = GetPlayerId(GetOwningPlayer(GetChangingUnit())) + 1
local integer c = GetPlayerId(GetChangingUnitPrevOwner()) + 1
local string s
set udg_regionbasesowned[( a + ( 100 * ( b - 1 ) ) )] = ( udg_regionbasesowned[(a + ( 100 * ( b - 1 ) ) )] + 1 )
set udg_regionbasesowned[(a + ( 100 * ( c - 1 ) ) )] = ( udg_regionbasesowned[(a + ( 100 * ( c - 1 ) ) )] - 1 )
set udg_counter[c] = ( udg_counter[c] - 1 )
set udg_counter[b] = ( udg_counter[b] + 1 )
if udg_regioncontrol[a] == c then
if udg_Haveninteger[a] != 0 then
call SetUnitOwner( udg_Haven[udg_Haveninteger[a]], Player(PLAYER_NEUTRAL_PASSIVE), true )
call UnitAddAbility( udg_Haven[udg_Haveninteger[a]], 'Ane2' )
endif
set udg_goldBonus[c] = ( udg_goldBonus[c] - udg_numcitiesregion[a] )
set udg_regioncontrol[a] = 0
call SetUnitOwner( udg_playerspawns[a], Player(PLAYER_NEUTRAL_PASSIVE), true )
call SetUnitAnimation( udg_playerspawns[a], "death")
set udg_regionplayer[c] = ( udg_regionplayer[c] - 1 )
else
endif
if b <= 12 then
if udg_regionbasesowned[(a + ( 100 * ( b - 1 ) ) )] == udg_numcitiesregion[a] then
set udg_regionplayer[b] = ( udg_regionplayer[b] + 1 )
call IssuePointOrderLoc(udg_playerspawns[a], "setrally", udg_spawnlocation[a])
call SetUnitOwner( udg_playerspawns[a], Player(b - 1), true )
call SetUnitAnimation( udg_playerspawns[a], "stand")
set udg_goldBonus[b] = ( udg_goldBonus[b] + udg_numcitiesregion[a] )
set udg_regioncontrol[a] = b
if udg_Haveninteger[a] != 0 then
call SetUnitOwner( udg_Haven[udg_Haveninteger[a]], Player(b - 1), true )
call UnitRemoveAbility( udg_Haven[udg_Haveninteger[a]], 'Ane2' )
endif
if udg_multiboardmode != 2 then
set s = ("|cffffcc00" + ( udg_Countrystring[a] + ( "|r" + ( " taken by " + ( udg_colorcodeplayer[b] + ( GetPlayerName(ConvertedPlayer(b)) + "|r" ) ) ) ) ) )
call Regionnews(s)
endif
endif
endif
endfunction
//===========================================================================
function InitTrig_Activate_Region takes nothing returns nothing
set gg_trg_Activate_Region = CreateTrigger( )
call DisableTrigger( gg_trg_Activate_Region )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Activate_Region, EVENT_PLAYER_UNIT_CHANGE_OWNER )
call TriggerAddCondition( gg_trg_Activate_Region, Condition( function Trig_Activate_Region_Conditions ) )
call TriggerAddAction( gg_trg_Activate_Region, function Trig_Activate_Region_Actions )
endfunction
//TESH.scrollpos=14
//TESH.alwaysfold=0
function Trig_Pass_defend_base_Unit_Conditions takes nothing returns boolean
if GetIssuedOrderId() == OrderId("frostnova") and IsUnitType(GetOrderedUnit(), UNIT_TYPE_STRUCTURE) == true and GetUnitUserData(GetOrderTargetUnit()) < 100 and IsUnitType(GetOrderTargetUnit(), UNIT_TYPE_ANCIENT) == false then
return true
endif
return false
endfunction
function Trig_Pass_defend_base_Unit_Actions takes nothing returns nothing
local integer bnum = GetUnitUserData(GetOrderedUnit())
local player target = GetOwningPlayer(GetOrderTargetUnit())
local unit old = udg_defender[bnum]
local location loc = GetUnitLoc(GetOrderTargetUnit())
set udg_M = bnum
call IssueImmediateOrder( GetOrderedUnit(), "stop" )
call SetUnitUserData( udg_defender[bnum], udg_customvalueunit[bnum] )
if target != GetOwningPlayer(udg_base[bnum]) then
call SetUnitOwner( udg_base[bnum], target, true )
call SetUnitOwner( udg_tower[bnum], target, true )
if udg_riskgameplay == 2 then
if bnum == udg_capitalrace[udg_raceplayer[GetPlayerId(target) + 1]] then
call ReplaceUnitBJ( udg_base[bnum], udg_racecapital[udg_raceplayer[GetPlayerId(target) + 1]], bj_UNIT_STATE_METHOD_RELATIVE )
else
call ReplaceUnitBJ( udg_base[bnum], udg_racebase[udg_raceplayer[GetPlayerId(target) + 1 ]], bj_UNIT_STATE_METHOD_RELATIVE )
endif
set udg_base[bnum] = GetLastReplacedUnitBJ()
call UnitAddAbility( udg_base[bnum], udg_Defendabilitytypebases )
call SetUnitUserData( udg_base[bnum], bnum )
endif
call IssuePointOrderLoc( udg_base[bnum], "setrally", udg_circlepos[bnum] )
else
endif
if GetUnitTypeId(udg_defender[bnum]) == udg_Dummytype or GetUnitTypeId(udg_defender[bnum]) == udg_Startingdefender then
call RemoveUnit( old )
else
call UnitRemoveAbility( old, udg_defendermarker )
call SetUnitPositionLoc( udg_defender[bnum], loc )
call UnitRemoveType( old, UNIT_TYPE_SNARED )
call UnitRemoveAbility( old, udg_Defendabilitybuff )
endif
set udg_defender[bnum] = GetOrderTargetUnit()
set udg_customvalueunit[bnum] = GetUnitUserData(udg_defender[bnum])
call SetUnitUserData( udg_defender[bnum], ( bnum + 100 ) )
call UnitAddAbility( udg_defender[bnum], udg_defendermarker )
call SetUnitPositionLoc( GetOrderTargetUnit(), udg_circlepos[bnum] )
call UnitAddAbility( udg_defender[bnum], udg_Defendabilitytype )
call IssueTargetOrder( udg_defender[bnum], "ensnare", udg_defender[bnum] )
call RemoveLocation ( loc )
endfunction
//===========================================================================
function InitTrig_Pass_defend_base_Unit takes nothing returns nothing
set gg_trg_Pass_defend_base_Unit = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pass_defend_base_Unit, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
call TriggerAddCondition( gg_trg_Pass_defend_base_Unit, Condition( function Trig_Pass_defend_base_Unit_Conditions ) )
call TriggerAddAction( gg_trg_Pass_defend_base_Unit, function Trig_Pass_defend_base_Unit_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Defenderfix_Conditions takes nothing returns boolean
if GetUnitAbilityLevel( GetOrderedUnit(), udg_defendermarker) == 1 and GetIssuedOrderId() == OrderId("smart") then
return true
else
return false
endif
endfunction
function Trig_Defenderfix_Actions takes nothing returns nothing
call PolledWait( 0.05 )
call IssueImmediateOrder( GetOrderedUnit(), "holdposition" )
endfunction
//===========================================================================
function InitTrig_Defenderfix takes nothing returns nothing
set gg_trg_Defenderfix = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Defenderfix, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Defenderfix, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
call TriggerAddCondition( gg_trg_Defenderfix, Condition( function Trig_Defenderfix_Conditions ) )
call TriggerAddAction( gg_trg_Defenderfix, function Trig_Defenderfix_Actions )
endfunction
//TESH.scrollpos=25
//TESH.alwaysfold=0
function Trig_Deathtrigger_Func005Func004Func001002003 takes nothing returns boolean
return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and GetOwningPlayer(GetFilterUnit()) == GetOwningPlayer(GetDyingUnit()) and GetWidgetLife(GetFilterUnit()) > .405 and IsUnitType(GetFilterUnit(), UNIT_TYPE_ANCIENT) == false
endfunction
function AdjustPlayerGold takes player pl, integer j returns nothing
call SetPlayerState( pl, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( pl, PLAYER_STATE_RESOURCE_GOLD) + j)
call SetPlayerState( pl, PLAYER_STATE_GOLD_GATHERED, GetPlayerState( pl, PLAYER_STATE_GOLD_GATHERED) + j)
endfunction
function Trig_Deathtrigger_Func005Func004Func002Func008002003 takes nothing returns boolean
return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and GetOwningPlayer(GetFilterUnit()) == GetOwningPlayer(GetKillingUnit()) and GetWidgetLife(GetFilterUnit()) > .405 and IsUnitType(GetFilterUnit(), UNIT_TYPE_ANCIENT) == false and GetUnitUserData(GetFilterUnit()) < 100
endfunction
function Trig_Deathtrigger_Actions takes nothing returns nothing
local unit ds = GetDyingUnit()
local unit ks = GetKillingUnit()
local player pl = GetOwningPlayer(ks)
local integer e = GetPlayerId(pl) + 1
local integer f = GetPlayerId(GetOwningPlayer(ds)) + 1
local integer g = 0
local integer m = GetUnitPointValue(ds)
local integer t = GetUnitPointValue(ks)
local real i = I2R(m)
local unit h = null
local group k = null
local integer j = 0
local real re = 0
local integer z = 0
local integer lowesthpint
local unit lowesthpunit
local integer unithp
if udg_bounty >= 1 and IsUnitType(ds, UNIT_TYPE_SUMMONED) == false and e != f then
set re = udg_bountymoney[ e] + (i * udg_bountyreal)
set j = R2I( re)
if j > 0 then
call AdjustPlayerGold( pl, j)
endif
set udg_bountymoney[ e] = re - j
endif
set udg_Deaths[f] = ( udg_Deaths[f] + m )
set udg_Kills[e] = ( udg_Kills[e] + m )
if GetUnitUserData(ds) >= 100 then
set g = GetUnitUserData(ds) - 100
call SetUnitUserData( ds, udg_customvalueunit[g] )
if IsUnitType(ks, UNIT_TYPE_STRUCTURE) == true or GetWidgetLife(ks) <= 0.405 or IsUnitType(ks, UNIT_TYPE_MAGIC_IMMUNE) == true then
set udg_defender[g] = CreateUnitAtLoc( GetOwningPlayer(udg_base[g]), udg_Dummytype , udg_circlepos[g], bj_UNIT_FACING )
set udg_customvalueunit[g] = GetUnitUserData(udg_defender[g])
call UnitAddAbility( udg_defender[g], udg_defendermarker )
call UnitAddAbility( udg_defender[g], udg_Defendabilitytype )
call IssueTargetOrder( udg_defender[g], "ensnare", udg_defender[g] )
call SetUnitUserData( udg_defender[g], ( g + 100 ) )
else
set k = GetUnitsInRangeOfLocMatching(105.00, udg_circlepos[g], Condition(function Trig_Deathtrigger_Func005Func004Func001002003))
if FirstOfGroup(k) == null then
set lowesthpint = 100000
set lowesthpunit = ks
call DestroyGroup( k )
set k = null
set k = GetUnitsInRangeOfLocMatching(800.00, udg_circlepos[g], Condition(function Trig_Deathtrigger_Func005Func004Func002Func008002003))
loop
set h = FirstOfGroup(k)
exitwhen h == null
set t = GetUnitPointValue(h)
set unithp = R2I(GetWidgetLife(h)) + t*40
if unithp < lowesthpint then
set lowesthpint = unithp
set lowesthpunit = h
endif
call GroupRemoveUnit(k, h)
endloop
set udg_defender[g] = lowesthpunit
set udg_customvalueunit[g] = GetUnitUserData(udg_defender[g])
call UnitAddAbility( udg_defender[g], udg_defendermarker )
call SetUnitUserData( udg_defender[g], ( g + 100 ) )
call SetUnitPositionLoc( lowesthpunit, udg_circlepos[g] )
call SetUnitOwner( udg_base[g], GetOwningPlayer(lowesthpunit), true )
call UnitAddAbility( lowesthpunit, udg_Defendabilitytype)
call IssueTargetOrder( lowesthpunit, "ensnare", lowesthpunit )
call SetUnitOwner( udg_tower[g], GetOwningPlayer(lowesthpunit), true )
if udg_riskgameplay == 2 then
if g == udg_capitalrace[udg_raceplayer[e]] then
call ReplaceUnitBJ( udg_base[g], udg_racecapital[udg_raceplayer[e]], bj_UNIT_STATE_METHOD_RELATIVE )
else
call ReplaceUnitBJ( udg_base[g], udg_racebase[udg_raceplayer[e]], bj_UNIT_STATE_METHOD_RELATIVE )
endif
set udg_base[g] = GetLastReplacedUnitBJ()
call UnitAddAbility( udg_base[g], udg_Defendabilitytypebases )
call SetUnitUserData( udg_base[g], g )
call IssuePointOrderLoc(udg_base[g], "setrally", udg_circlepos[g])
endif
else
set h = FirstOfGroup(k)
set udg_defender[g] = h
set udg_customvalueunit[g] = GetUnitUserData(h)
call UnitAddAbility( h, udg_defendermarker )
call SetUnitUserData( h, ( g + 100 ) )
call SetUnitPositionLoc( h, udg_circlepos[g] )
call UnitAddAbility( h, udg_Defendabilitytype )
call IssueTargetOrder( h, "ensnare", h )
endif
endif
endif
if GetUnitUserData(ds) != 0 and GetOwningPlayer(ds) != Player(PLAYER_NEUTRAL_AGGRESSIVE) then
set udg_spawnfromplayers[( GetUnitUserData(ds) + ( ( f - 1 ) * 100 ) )] = ( udg_spawnfromplayers[( GetUnitUserData(ds) + ( ( f - 1 ) * 100 ) )] - 1 )
endif
call DestroyGroup( k )
set k = null
endfunction
//===========================================================================
function InitTrig_Deathtrigger takes nothing returns nothing
set gg_trg_Deathtrigger = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Deathtrigger, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_Deathtrigger, function Trig_Deathtrigger_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_remove_Defend_base_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == udg_Defendabilitytype ) ) then
return false
endif
return true
endfunction
function Trig_remove_Defend_base_Actions takes nothing returns nothing
call UnitRemoveAbility( GetSpellAbilityUnit() ,udg_Defendabilitytype)
endfunction
//===========================================================================
function InitTrig_remove_Defend_base takes nothing returns nothing
set gg_trg_remove_Defend_base = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_remove_Defend_base, EVENT_PLAYER_UNIT_SPELL_ENDCAST )
call TriggerAddCondition( gg_trg_remove_Defend_base, Condition( function Trig_remove_Defend_base_Conditions ) )
call TriggerAddAction( gg_trg_remove_Defend_base, function Trig_remove_Defend_base_Actions )
endfunction