function addGold takes integer gold returns nothing
local integer i = 0
loop
exitwhen i >= udg_maxPlayers
call SetPlayerStateBJ( Player(i), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD) + R2I(gold*(udg_maxPlayers/IMaxBJ(2,udg_players))) ) )
set i = i + 1
endloop
endfunction
function addLumber takes integer lumber returns nothing
local integer i = 0
loop
exitwhen i >= udg_maxPlayers
call SetPlayerStateBJ( Player(i), PLAYER_STATE_RESOURCE_LUMBER, ( GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_LUMBER) + R2I(lumber*(udg_maxPlayers/IMaxBJ(2,udg_players)) ) ) )
set i = i + 1
endloop
endfunction
function getPlayerCount takes nothing returns integer
local integer playerCount = 0
local integer maxPlayers = udg_maxPlayers
local integer i = 0
loop
exitwhen i >= maxPlayers
if udg_heroSelected[i] and GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and IsPlayerInForce(Player(i), GetPlayersByMapControl(MAP_CONTROL_USER)) then
set playerCount=playerCount+1
endif
set i = i + 1
endloop
return playerCount
endfunction
function getExpectedPlayerCount takes nothing returns integer
local integer playerCount = 0
local integer maxPlayers = udg_maxPlayers
local integer i = 0
loop
exitwhen i >= maxPlayers
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and IsPlayerInForce(Player(i), GetPlayersByMapControl(MAP_CONTROL_USER)) then
set playerCount=playerCount+1
endif
set i = i + 1
endloop
return playerCount
endfunction
function createItem takes integer s, real i, unit u returns nothing
local integer percentageChance = R2I(i)
if GetRandomInt(0, percentageChance) == 1 then
set udg_itempos = GetUnitLoc(u)
call CreateItemLoc(s, udg_itempos)
call RemoveLocation(udg_itempos)
endif
endfunction
function spawnTome takes nothing returns nothing
call createItem('lmbr', 60, GetDyingUnit())
call createItem('gold', 100 , GetDyingUnit())
call createItem('I020', 350 , GetDyingUnit())
call createItem('I01Z', 350 , GetDyingUnit())
call createItem('100K', 250, GetDyingUnit())
call createItem('tdex', 150 , GetDyingUnit())
call createItem('tdx2', 300, GetDyingUnit())
call createItem('tint', 100 , GetDyingUnit())
call createItem('tin2', 300, GetDyingUnit())
call createItem('tpow', 300, GetDyingUnit())
call createItem('tstr', 100 , GetDyingUnit())
call createItem('tst2', 300, GetDyingUnit())
call createItem('manh', 100 , GetDyingUnit())
call createItem('I051', 500, GetDyingUnit())
call createItem('I00Q', 500, GetDyingUnit())
call createItem('I01Y', 500, GetDyingUnit())
endfunction
function spawnB takes integer amount, integer unitType, rect spawn, rect target returns nothing
local integer i = 0
local integer newAmount = amount
local real minX = GetRectMinX(spawn)
local real minY = GetRectMinY(spawn)
local real maxX = GetRectMaxX(spawn) - minX
local real maxY = GetRectMaxY(spawn) - minY
local real divX = maxX/amount + 5
local real divY = maxY/amount + 5
local real x = 0
local real y = 0
if amount > 60 then
set newAmount = 60
endif
if ( udg_enemyUnitCount+newAmount < 350) then
set divX = maxX/newAmount + 5
set divY = maxY/newAmount + 5
set udg_enemyUnitCount=udg_enemyUnitCount+newAmount
loop
exitwhen i >= newAmount
set udg_bspawnp = OffsetLocation(Location(minX, minY), x, y)
call CreateNUnitsAtLoc( 1, unitType, udg_enemies[udg_currentPlayer], udg_bspawnp, bj_UNIT_FACING )
set udg_currentPlayer = udg_currentPlayer + 1
if udg_currentPlayer > 5 then
set udg_currentPlayer = 0
endif
call RemoveLocation(udg_bspawnp)
set udg_bspawnp = GetRectCenter(target)
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", udg_bspawnp )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_badgroup )
call RemoveLocation(udg_bspawnp)
set i = i + 1
set x = x + divX
if x >= maxX then
set x=0
set y=y+divY
endif
endloop
endif
endfunction
function spawnBC takes integer amount, integer unitType, rect spawn, rect target returns nothing
local integer i = 0
local integer newAmount = amount
local real minX = GetRectMinX(spawn)
local real minY = GetRectMinY(spawn)
local real maxX = GetRectMaxX(spawn) - minX
local real maxY = GetRectMaxY(spawn) - minY
local real divX = maxX/amount + 5
local real divY = maxY/amount + 5
local real x = 0
local real y = 0
if amount > 30 then
set newAmount = 30
endif
if ( udg_enemyUnitCount+newAmount < 300) then
set divX = maxX/newAmount + 5
set divY = maxY/newAmount + 5
set udg_enemyUnitCount=udg_enemyUnitCount+newAmount
loop
exitwhen i >= newAmount
set udg_bspawnp = OffsetLocation(Location(minX, minY), x, y)
call CreateNUnitsAtLoc( 1, unitType, udg_enemies[udg_currentPlayer], udg_bspawnp, bj_UNIT_FACING )
call RemoveLocation(udg_bspawnp)
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_badgroup )
set udg_currentPlayer = udg_currentPlayer + 1
if udg_currentPlayer > 5 then
set udg_currentPlayer = 0
endif
set udg_bspawnp = GetRectCenter(target)
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", udg_bspawnp )
call RemoveLocation(udg_bspawnp)
set i = i + 1
set x = x + divX
if x >= maxX then
set x=0
set y=y+divY
endif
endloop
endif
endfunction
function spawnG takes integer amount, integer unitType, rect spawn, rect target returns nothing
local integer i = 0
if ( udg_goodUnitCount+amount < 100 ) then
set udg_goodUnitCount=udg_goodUnitCount+amount
loop
exitwhen i >= amount
set udg_gspawnp = GetRandomLocInRect(spawn)
call CreateNUnitsAtLoc( 1, unitType, udg_npc, udg_gspawnp, bj_UNIT_FACING )
call RemoveLocation(udg_gspawnp)
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_goodgroup )
set udg_gspawnp = GetRectCenter(target)
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", udg_gspawnp )
call RemoveLocation(udg_gspawnp)
set i = i + 1
endloop
endif
endfunction
Name | Type | is_array | initial_value |
activeItem | item | No | |
archerCount | integer | No | 1 |
attributeBonus | integer | No | 1 |
auxBase | unit | No | UnitNull |
babi | integer | No | |
badgroup | group | No | |
base | unit | No | UnitNull |
baseMaxed | boolean | No | |
battletimer | timer | No | |
bombp | location | No | |
bossabilities | abilcode | Yes | |
bossCrit | integer | No | 1 |
bosses | unitcode | Yes | |
bossEvasion | integer | No | 1 |
bossgroup | group | No | |
bossitem | location | No | |
bossmovement | integer | No | 350 |
bossRez | integer | No | |
bspawnp | location | No | |
bspawnp2 | location | No | |
buildHighPriest | boolean | No | |
buildRanger | boolean | No | |
buildSwordmen | boolean | No | |
captainJack | quest | No | |
captainJackMark | effect | No | |
CleanedItem | item | Yes | |
compGroup | force | No | |
compUnits | group | No | |
createdShop | boolean | No | |
critlevel | integer | No | |
currentPlayer | integer | No | |
deadHeros | group | No | |
deadHeroTmp | unit | Yes | |
defendQuest | quest | No | |
difficultyButton | button | Yes | |
difficultyDialog | dialog | No | |
difficultyIndex | integer | No | |
difficultyRatio | real | No | |
difficultyStrings | string | Yes | |
difficultyValues | integer | Yes | |
difficultyVotes | integer | Yes | |
effectCounter | integer | No | |
effectDestroyTimer | timer | No | |
effects | effect | Yes | |
endGameTimer | timer | No | |
endmade | boolean | No | |
enemies | player | Yes | |
enemiesAround | integer | No | |
enemy | player | No | Player20 |
enemy2 | player | No | Player21 |
enemy3 | player | No | Player22 |
enemy4 | player | No | Player23 |
enemy5 | player | No | Player19 |
enemy6 | player | No | Player18 |
enemyBase3 | unit | No | |
enemyBase4 | unit | No | |
enemyPlayers | force | No | |
enemypower | integer | No | 1 |
enemyUnitCount | integer | No | |
expectedPlayers | integer | No | 1 |
firespawn | unit | No | |
foodCount | integer | No | |
foodCountReal | real | No | |
footmanCount | integer | No | 3 |
forwardBase | unit | No | |
gateQuest | quest | No | |
goodgroup | group | No | |
goodUnitCount | integer | No | |
goodunits | unitcode | Yes | |
gspawnp | location | No | |
guardian | unit | No | |
guardianMade | boolean | No | |
hardVotes | integer | No | |
hasKey | boolean | Yes | |
hero | unit | No | |
heroArray | unit | Yes | |
heroMade | boolean | No | |
heros | group | No | |
heroSelected | boolean | Yes | |
heroSpawnChance | integer | No | 0 |
herotypes | unitcode | Yes | |
income | integer | No | 5 |
increaseCount | integer | No | |
infernopos | location | No | |
interestRate | real | No | 10.00 |
ItemCleanupFlag | boolean | No | |
ItemCleanupTimer | timer | No | |
itempos | location | No | |
itemShop | unit | No | |
itemSounds | sound | Yes | |
itemStatAbilities | abilcode | Yes | |
itemStatCount | integer | No | |
itemStatTypes | itemcode | Yes | |
itemStatValues | integer | Yes | |
ItemsToClean | integer | No | |
knightCount | integer | No | 0 |
legendarySkill | boolean | Yes | |
lightninggroup | group | No | |
lightningLevel | integer | No | |
Loop | integervar | No | |
lumber | integer | No | 2 |
lumberIncome | integer | No | 2 |
lumbermil2 | unit | No | |
lumbermill | unit | No | |
lumberTimer1 | timer | No | |
lumberTimer2 | timer | No | |
mainquest | quest | No | |
mastery | boolean | Yes | |
maxFood | integer | No | 250 |
maxPlayers | integer | No | 12 |
mortarCount | integer | No | 0 |
mtics | integer | No | |
neutralHostile | player | No | PlayerNA |
newItem | itemcode | No | |
normalVotes | integer | No | 0 |
npc | player | No | Player12 |
outpostCount | integer | No | 1 |
outpostGroup | group | No | |
outposts | rect | Yes | |
peasant | unit | Yes | |
pickg | group | No | |
playerabilities | abilcode | Yes | |
players | integer | No | 1 |
playGroup | force | No | |
poisongroup | group | No | |
poisonStrikePoint | location | No | |
priestCount | integer | No | 1 |
purpleBaseOpened | boolean | No | |
querk | boolean | Yes | |
randomItems | itemcode | Yes | |
rangerSpeed | real | Yes | 300.00 |
redBaseOpened | boolean | No | |
reslv | integer | No | |
resumeMusicTimer | timer | No | |
secondBaseDestroyQuest | quest | No | |
secondBaseQuestMark | effect | No | |
selected_unit | unit | No | |
shopKeeper | unit | No | |
shopKeeperMade | boolean | No | |
surviveQuestMark | effect | No | |
tempAbility | abilcode | No | |
tempBool | boolean | No | |
tempEffect | effect | No | |
tempForce | force | No | |
tempGroup | group | No | |
tempInt | integer | No | |
tempItem | item | No | |
tempItemType | itemcode | No | |
tempLevel | integer | No | |
tempPg | force | No | |
tempPlayer | player | No | |
tempPlayerGroup | force | No | |
tempPlayers | real | No | 1.00 |
tempPoint | location | No | |
tempPoint2 | location | No | |
tempReal | real | No | |
tempStr | string | No | |
tempUnit | unit | No | |
timereduce | real | No | |
upgradeLevel | integer | No | 0 |
villagerCount | integer | No | |
villagerGroup | group | No | |
villagerQuest | quest | No | |
villagerQuestComplete | boolean | No | |
villagerQuestMark | effect | No | |
vis | fogmodifier | Yes | |
visionGroup | force | No | |
wanderers | unitcode | Yes | |
wintimer | timer | No | |
yellowBaseOpened | boolean | No | |
yellowGateQuest | boolean | No |
function Trig_spawn_Actions takes nothing returns nothing
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(10, 'u00E', gg_rct_Aspawn1, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 8) then
call spawnBC(10, 'u00F', gg_rct_Aspawn1, gg_rct_base)
elseif (udg_enemypower >= 9) then
call spawnBC(10, 'u008', gg_rct_Aspawn1, gg_rct_base)
endif
//archer
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(5, 'n004', gg_rct_Aspawn2, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 8) then
call spawnBC(5, 'n003', gg_rct_Aspawn2, gg_rct_base)
elseif (udg_enemypower >= 9) then
call spawnBC(5, 'n000', gg_rct_Aspawn2, gg_rct_base)
endif
//mage
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(3, 'u00D', gg_rct_Aspawn3, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 8) then
call spawnBC(3, 'u00C', gg_rct_Aspawn3, gg_rct_base)
elseif (udg_enemypower >= 9) then
call spawnBC(3, 'u007', gg_rct_Aspawn3, gg_rct_base)
endif
//necro
if (udg_enemypower >= 2 and udg_enemypower <= 3) then
call spawnBC(1, 'u00A', gg_rct_Aspawn4, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 8) then
call spawnBC(1, 'u00B', gg_rct_Aspawn4, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(1, 'u009', gg_rct_Aspawn4, gg_rct_base)
endif
//orc
if (udg_enemypower >= 6 and udg_enemypower <= 8) then
call spawnBC(1, 'n001', gg_rct_Aspawn5, gg_rct_base)
elseif (udg_enemypower >= 9 and udg_enemypower <= 12) then
call spawnBC(1, 'n005', gg_rct_Aspawn5, gg_rct_base)
elseif (udg_enemypower >= 14) then
call spawnBC(1, 'n002', gg_rct_Aspawn5, gg_rct_base)
endif
endfunction
function InitTrig_spawnBad takes nothing returns nothing
set udg_players = getPlayerCount()
set gg_trg_spawnBad = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnBad, 30.00 )
call TriggerAddAction( gg_trg_spawnBad, function Trig_spawn_Actions )
endfunction
function Trig_enemyspawn2_Conditions takes nothing returns boolean
if ( not ( IsUnitAliveBJ(gg_unit_unp1_0139) == true ) ) then
return false
endif
return true
endfunction
function Trig_enemyspawn2_Actions takes nothing returns nothing
if ( IsUnitAliveBJ(udg_forwardBase) == true ) then
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(8, 'u00E', gg_rct_Bspawn1, gg_rct_forwardBase)
call spawnBC(8, 'u00E', gg_rct_Bspawn1, gg_rct_forwardBase)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(8, 'u00F', gg_rct_Bspawn1, gg_rct_forwardBase)
elseif (udg_enemypower >= 10) then
call spawnBC(8, 'u008', gg_rct_Bspawn1, gg_rct_forwardBase)
endif
//archer
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(5, 'n004', gg_rct_Bspawn2, gg_rct_forwardBase)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(5, 'n003', gg_rct_Bspawn2, gg_rct_forwardBase)
elseif (udg_enemypower >= 10) then
call spawnBC(5, 'n000', gg_rct_Bspawn2, gg_rct_forwardBase)
endif
//mage
if (udg_enemypower >= 2 and udg_enemypower <= 3) then
call spawnBC(2, 'u00D', gg_rct_Bspawn3, gg_rct_forwardBase)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(2, 'u00C', gg_rct_Bspawn3, gg_rct_forwardBase)
elseif (udg_enemypower >= 10) then
call spawnBC(2, 'u007', gg_rct_Bspawn3, gg_rct_forwardBase)
endif
elseif ( IsUnitAliveBJ(udg_forwardBase) == false) then
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(8, 'u00E', gg_rct_Bspawn1, gg_rct_base)
call spawnBC(8, 'u00E', gg_rct_Bspawn1, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(8, 'u00F', gg_rct_Bspawn1, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(8, 'u008', gg_rct_Bspawn1, gg_rct_base)
endif
//archer
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(5, 'n004', gg_rct_Bspawn2, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(5, 'n003', gg_rct_Bspawn2, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(5, 'n000', gg_rct_Bspawn2, gg_rct_base)
endif
//mage
if (udg_enemypower >= 2 and udg_enemypower <= 3) then
call spawnBC(2, 'u00D', gg_rct_Bspawn3, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(2, 'u00C', gg_rct_Bspawn3, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(2, 'u007', gg_rct_Bspawn3, gg_rct_base)
endif
endif
endfunction
//===========================================================================
function InitTrig_spawnBad2 takes nothing returns nothing
set udg_players = getPlayerCount()
set gg_trg_spawnBad2 = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnBad2, 30.00 )
call TriggerAddCondition( gg_trg_spawnBad2, Condition( function Trig_enemyspawn2_Conditions ) )
call TriggerAddAction( gg_trg_spawnBad2, function Trig_enemyspawn2_Actions )
endfunction
function Trig_enemyspawn3_Conditions takes nothing returns boolean
if ( not ( IsUnitAliveBJ(udg_enemyBase3) == true ) ) then
return false
endif
return true
endfunction
function Trig_enemyspawn3_Actions takes nothing returns nothing
if ( IsUnitAliveBJ(udg_forwardBase) == true ) then
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(8, 'u00E', gg_rct_miniSpawn, gg_rct_forwardBase)
call spawnBC(8, 'u00E', gg_rct_miniSpawn, gg_rct_forwardBase)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(8, 'u00F', gg_rct_miniSpawn, gg_rct_forwardBase)
elseif (udg_enemypower >= 10) then
call spawnBC(8, 'u008', gg_rct_miniSpawn, gg_rct_forwardBase)
endif
//archer
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(2, 'n004', gg_rct_miniSpawn, gg_rct_forwardBase)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(2, 'n003', gg_rct_miniSpawn, gg_rct_forwardBase)
elseif (udg_enemypower >= 10) then
call spawnBC(2, 'n000', gg_rct_miniSpawn, gg_rct_forwardBase)
endif
elseif ( IsUnitAliveBJ(udg_forwardBase) == false) then
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(8, 'u00E', gg_rct_miniSpawn, gg_rct_base)
call spawnBC(8, 'u00E', gg_rct_miniSpawn, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(8, 'u00F', gg_rct_miniSpawn, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(8, 'u008', gg_rct_miniSpawn, gg_rct_base)
endif
//archer
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(2, 'n004', gg_rct_miniSpawn, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(2, 'n003', gg_rct_miniSpawn, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(2, 'n000', gg_rct_miniSpawn, gg_rct_base)
endif
endif
endfunction
//===========================================================================
function InitTrig_spawnBad3 takes nothing returns nothing
set udg_players = getPlayerCount()
set gg_trg_spawnBad3 = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnBad3, 30.00 )
call TriggerAddCondition( gg_trg_spawnBad3, Condition( function Trig_enemyspawn3_Conditions ) )
call TriggerAddAction( gg_trg_spawnBad3, function Trig_enemyspawn3_Actions )
endfunction
function Trig_enemyspawn4_Conditions takes nothing returns boolean
if ( not ( IsUnitAliveBJ(udg_enemyBase4) == true ) ) then
return false
endif
return true
endfunction
function Trig_enemyspawn4_Actions takes nothing returns nothing
//melee
if (udg_enemypower >= 1 and udg_enemypower <= 3) then
call spawnBC(5, 'u00E', gg_rct_miniSpawn2, gg_rct_base)
call spawnBC(5, 'u00E', gg_rct_miniSpawn2, gg_rct_base)
elseif (udg_enemypower >= 4 and udg_enemypower <= 9) then
call spawnBC(5, 'u00F', gg_rct_miniSpawn2, gg_rct_base)
elseif (udg_enemypower >= 10) then
call spawnBC(5, 'u008', gg_rct_miniSpawn2, gg_rct_base)
endif
endfunction
//===========================================================================
function InitTrig_spawnBad4 takes nothing returns nothing
set udg_players = getPlayerCount()
set gg_trg_spawnBad4 = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnBad4, 30.00 )
call TriggerAddCondition( gg_trg_spawnBad4, Condition( function Trig_enemyspawn4_Conditions ) )
call TriggerAddAction( gg_trg_spawnBad4, function Trig_enemyspawn4_Actions )
endfunction
function Trig_spawngood_Actions takes nothing returns nothing
//allies
if (udg_buildSwordmen) then
call spawnG(udg_footmanCount, 'hhes', gg_rct_base, gg_rct_enemybase)
else
call spawnG(udg_footmanCount, 'hfoo', gg_rct_base, gg_rct_enemybase)
endif
if (udg_buildRanger) then
call spawnG(udg_archerCount, 'e000', gg_rct_base, gg_rct_enemybase)
else
call spawnG(udg_archerCount, 'nhea', gg_rct_base, gg_rct_enemybase)
endif
if (udg_buildHighPriest) then
call spawnG(udg_priestCount, 'nchp', gg_rct_base, gg_rct_enemybase)
else
call spawnG(udg_priestCount, 'hmpr', gg_rct_base, gg_rct_enemybase)
endif
call spawnG(udg_knightCount, 'hkni', gg_rct_base, gg_rct_enemybase)
call spawnG(udg_mortarCount, 'hmtm', gg_rct_base, gg_rct_enemybase)
endfunction
//===========================================================================
function InitTrig_spawnGood takes nothing returns nothing
set gg_trg_spawnGood = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnGood, 60.00 )
call TriggerAddAction( gg_trg_spawnGood, function Trig_spawngood_Actions )
endfunction
function Trig_spawngoodAux_Conditions takes nothing returns boolean
if ( not ( IsUnitAliveBJ(udg_forwardBase) == true ) ) then
return false
endif
return true
endfunction
function Trig_spawngoodAux_Actions takes nothing returns nothing
if ( IsUnitAliveBJ(udg_auxBase) == true ) then
//allies
if (udg_buildSwordmen) then
call spawnG(udg_footmanCount/2 + 4, 'hhes', gg_rct_forwardSpawn, gg_rct_enemybase2)
else
call spawnG(udg_footmanCount/2, 'hfoo', gg_rct_forwardSpawn, gg_rct_enemybase2)
endif
if (udg_buildRanger) then
call spawnG(udg_archerCount/2, 'e000', gg_rct_forwardSpawn, gg_rct_enemybase2)
else
call spawnG(udg_archerCount/2, 'nhea', gg_rct_forwardSpawn, gg_rct_enemybase2)
endif
if (udg_buildHighPriest) then
call spawnG(udg_priestCount/2, 'nchp', gg_rct_forwardSpawn, gg_rct_enemybase2)
else
call spawnG(udg_priestCount/2, 'hmpr', gg_rct_forwardSpawn, gg_rct_enemybase2)
endif
else
//allies
if (udg_buildSwordmen) then
call spawnG(udg_footmanCount/2 + 4, 'hhes', gg_rct_forwardSpawn, gg_rct_enemybase)
else
call spawnG(udg_footmanCount/2, 'hfoo', gg_rct_forwardSpawn, gg_rct_enemybase)
endif
if (udg_buildRanger) then
call spawnG(udg_archerCount/2, 'e000', gg_rct_forwardSpawn, gg_rct_enemybase)
else
call spawnG(udg_archerCount/2, 'nhea', gg_rct_forwardSpawn, gg_rct_enemybase)
endif
if (udg_buildHighPriest) then
call spawnG(udg_priestCount/2, 'nchp', gg_rct_forwardSpawn, gg_rct_enemybase)
else
call spawnG(udg_priestCount/2, 'hmpr', gg_rct_forwardSpawn, gg_rct_enemybase)
endif
endif
endfunction
//===========================================================================
function InitTrig_spawnGoodOutpost takes nothing returns nothing
set gg_trg_spawnGoodOutpost = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_spawnGoodOutpost, 60.00 )
call TriggerAddCondition( gg_trg_spawnGoodOutpost, Condition( function Trig_spawngoodAux_Conditions ) )
call TriggerAddAction( gg_trg_spawnGoodOutpost, function Trig_spawngoodAux_Actions )
endfunction
function Trig_spawn_Actions_StartB takes nothing returns nothing
call spawnB(30, 'u00E', gg_rct_enemystart, gg_rct_base)
call spawnB(8, 'u00E', gg_rct_enemystart, gg_rct_base)
call spawnB(5, 'n004', gg_rct_enemystart, gg_rct_base)
call spawnB(3, 'u00D', gg_rct_enemystart, gg_rct_base)
endfunction
function InitTrig_spawnBadStart takes nothing returns nothing
set gg_trg_spawnBadStart = CreateTrigger( )
call TriggerAddAction( gg_trg_spawnBadStart, function Trig_spawn_Actions_StartB )
endfunction
function Trig_spawn_Actions_StartG takes nothing returns nothing
call spawnG(20, 'hfoo', gg_rct_base, gg_rct_enemybase2)
call spawnG(10, 'nhea', gg_rct_base, gg_rct_enemybase2)
call spawnG(5, 'hmpr', gg_rct_base, gg_rct_enemybase2)
endfunction
function InitTrig_spawnGoodStart takes nothing returns nothing
set gg_trg_spawnGoodStart = CreateTrigger( )
call TriggerAddAction( gg_trg_spawnGoodStart, function Trig_spawn_Actions_StartG )
endfunction
function Trig_items_Actions takes nothing returns nothing
call createItem('lmbr', 100, GetDyingUnit())
call createItem('gold', 250 , GetDyingUnit())
call createItem('I020', 500 , GetDyingUnit())
call createItem('I01Z', 500 , GetDyingUnit())
call createItem('100K', 250, GetDyingUnit())
call createItem('tdex', 250 , GetDyingUnit())
call createItem('tdx2', 500, GetDyingUnit())
call createItem('tint', 250 , GetDyingUnit())
call createItem('tin2', 500, GetDyingUnit())
call createItem('tpow', 500, GetDyingUnit())
call createItem('tstr', 250 , GetDyingUnit())
call createItem('tst2', 500, GetDyingUnit())
call createItem('manh', 250 , GetDyingUnit())
call createItem('I051', 500, GetDyingUnit())
call createItem('I00Q', 500, GetDyingUnit())
call createItem('I01Y', 500, GetDyingUnit())
endfunction
function InitTrig_itemDrops takes nothing returns nothing
local integer i = 18
local integer maxEnemies = 24
set gg_trg_itemDrops = CreateTrigger( )
loop
exitwhen i >=maxEnemies
call TriggerRegisterPlayerUnitEventSimple( gg_trg_itemDrops, Player(i), EVENT_PLAYER_UNIT_DEATH )
set i=i+1
endloop
call TriggerAddAction( gg_trg_itemDrops, function Trig_items_Actions )
endfunction
function Trig_leave_Func006A takes nothing returns nothing
call AdjustPlayerStateBJ( ( GetPlayerState(GetTriggerPlayer(), PLAYER_STATE_RESOURCE_GOLD) / udg_players ), GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( GetPlayerState(GetTriggerPlayer(), PLAYER_STATE_RESOURCE_LUMBER) / udg_players ), GetEnumPlayer(), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
function Trig_leave_Func008002 takes nothing returns nothing
call RemoveUnit( GetEnumUnit() )
endfunction
function Trig_leave_Actions takes nothing returns nothing
set udg_tempUnit = udg_heroArray[GetConvertedPlayerId(GetTriggerPlayer())]
call GroupRemoveUnitSimple( udg_tempUnit, udg_heros )
call RemoveUnit( udg_tempUnit )
call ForceRemovePlayerSimple( GetTriggerPlayer(), udg_playGroup )
set udg_players = getPlayerCount()
call ForForce( udg_playGroup, function Trig_leave_Func006A )
set udg_tempGroup = GetUnitsOfPlayerAll(GetTriggerPlayer())
call ForGroupBJ( udg_tempGroup, function Trig_leave_Func008002 )
call DestroyGroup (udg_tempGroup)
call ConditionalTriggerExecute( gg_trg_setDifficulty )
endfunction
//===========================================================================
function InitTrig_leave takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_leave = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerEventLeave( gg_trg_leave, Player(i))
set i = i + 1
endloop
call TriggerAddAction( gg_trg_leave, function Trig_leave_Actions )
endfunction
function Trig_camMid_Actions takes nothing returns nothing
call ResetToGameCameraForPlayer( GetTriggerPlayer(), 0 )
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, 2025.00, 0 )
endfunction
//===========================================================================
function InitTrig_camMid takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_camMid = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_camMid, Player(i), "-mid", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_camMid, function Trig_camMid_Actions )
endfunction
function Trig_camFar_Actions takes nothing returns nothing
call ResetToGameCameraForPlayer( GetTriggerPlayer(), 0 )
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, 2500.00, 0 )
endfunction
//===========================================================================
function InitTrig_camFar takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_camFar = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_camFar, Player(i), "-far", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_camFar, function Trig_camFar_Actions )
endfunction
function Trig_camVeryFar_Actions takes nothing returns nothing
call ResetToGameCameraForPlayer( GetTriggerPlayer(), 0 )
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, 2950.00, 0 )
endfunction
//===========================================================================
function InitTrig_camVeryFar takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_camVeryFar = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_camVeryFar, Player(i), "-vfar", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_camVeryFar, function Trig_camVeryFar_Actions )
endfunction
function Trig_kills_Func001A takes nothing returns nothing
call DisplayTimedTextToForce( udg_playGroup, 5.0, ( GetPlayerName(GetEnumPlayer()) + ( " Kills: " + I2S(GetPlayerScore(GetEnumPlayer(), PLAYER_SCORE_UNITS_KILLED)) ) ) )
endfunction
function Trig_kills_Actions takes nothing returns nothing
call ForForce( udg_playGroup, function Trig_kills_Func001A )
endfunction
//===========================================================================
function InitTrig_kills takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_kills = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_kills, Player(i), "-kills", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_kills, function Trig_kills_Actions )
endfunction
function Trig_playtime_Actions takes nothing returns nothing
call DisplayTimedTextToForce( udg_playGroup, 5.0, ( "Playtime: " + ( I2S(udg_mtics) + " minutes." ) ) )
endfunction
//===========================================================================
function InitTrig_playtime takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_playtime = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_playtime, Player(i), "-playtime", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_playtime, function Trig_playtime_Actions )
endfunction
function Trig_stats_Actions takes nothing returns nothing
set udg_tempStr = "Gold Income: " + I2S(udg_income*udg_maxPlayers/IMaxBJ(2,udg_players)) + "\nLumber Income: " + I2S(udg_lumber*udg_maxPlayers/IMaxBJ(2, udg_players)) + "\nFootmen Count: " + I2S(udg_footmanCount) + "\nArcher Count: " + I2S(udg_archerCount) + "\nPriest Count: " + I2S(udg_priestCount) + "\nChance to spawn Hero: " + I2S(udg_heroSpawnChance) + "%\nKnight Count: " + I2S(udg_knightCount) + "\nMortar Count: " + I2S(udg_mortarCount) + "\nTotal Units: " + I2S(udg_footmanCount+udg_archerCount+udg_priestCount+udg_mortarCount+udg_knightCount) + "/35\nUpgrade Count: " + I2S(udg_upgradeLevel)+ "\nFood: " + I2S(udg_foodCount) + "/" + I2S(udg_maxFood) + " +" + R2S(udg_interestRate) + "%"
call DisplayTimedTextToForce( udg_playGroup, 5.00, udg_tempStr )
endfunction
//===========================================================================
function InitTrig_stats takes nothing returns nothing
local integer maxPlayers = udg_maxPlayers
local integer i = 0
set gg_trg_stats = CreateTrigger( )
loop
exitwhen i >= maxPlayers
call TriggerRegisterPlayerChatEvent( gg_trg_stats, Player(i), "-stats", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_stats, function Trig_stats_Actions )
endfunction