globals
integer MaxEvents = 500
integer MaxEventsPerTick = 30
integer CurrentEventIndex = 0
unit array DamageTargets[500]
unit array DamageSources[500]
endglobals
Name | Type | is_array | initial_value |
armor_level | integer | No | |
armor_type | integer | No | |
blacksmithFactoryCount | integer | Yes | |
BLEED_RESISTANT | integer | No | 2 |
bonus_gold_amount | integer | No | |
bonus_life_amount | integer | No | |
bonus_lumber_amount | integer | No | |
bonus_point_amount | integer | No | |
bonus_point_increase | integer | No | |
builders | unit | Yes | |
buildType | integer | Yes | |
challenge_wave | string | Yes | |
challenge_wave_type | integer | No | |
current_enemy_type | unitcode | No | |
current_level | integer | No | -1 |
current_lives | integer | No | |
current_points | integer | No | 0 |
CURSE_RESISTANT | integer | No | 3 |
damagedUnit | unit | No | |
damagingUnit | unit | No | |
difficulty | integer | No | |
difficulty_modifier | integer | No | |
difficultyDialog | dialog | No | |
difficultyDialogButtons | button | Yes | |
dummies | unit | Yes | |
dummy_bleed | unit | Yes | |
dummy_burn | unit | Yes | |
dummy_cold | unit | Yes | |
dummy_curse | unit | Yes | |
dummy_flaming | unit | Yes | |
dummy_freeze | unit | Yes | |
dummy_frostfire | unit | Yes | |
dummy_poison | unit | Yes | |
dummy_shock | unit | Yes | |
dummy_steam | unit | Yes | |
dummy_wet | unit | Yes | |
dummyIndex | integer | No | 300 |
dummyIndex_bleed | integer | No | 0 |
dummyIndex_burn | integer | No | 0 |
dummyIndex_cold | integer | No | 0 |
dummyIndex_curse | integer | No | 0 |
dummyIndex_flaming | integer | No | 0 |
dummyIndex_freeze | integer | No | 0 |
dummyIndex_frostfire | integer | No | 0 |
dummyIndex_poison | integer | No | 0 |
dummyIndex_shock | integer | No | 0 |
dummyIndex_steam | integer | No | 0 |
dummyIndex_wet | integer | No | 0 |
enemies_alive | integer | No | |
ENEMY_DIFFICULTY | real | No | 20.00 |
enemy_level | integer | No | |
enemy_move_regions | rect | Yes | |
ENEMY_SCALING_HEALTH | real | No | 1.25 |
enemy_spawn_regions | rect | Yes | |
enemy_spawn_timer | timer | No | |
enemy_type_air | unitcode | Yes | |
enemy_type_basic | unitcode | Yes | |
enemy_type_special | unitcode | Yes | |
FIRE_ARMOR | integer | No | |
fourth_item_option | integer | No | |
gold_level | integer | No | |
GOLD_SCALING | real | No | 1.16 |
goldFactoryCount | integer | Yes | |
goldGeneratorIncrease | real | No | |
goldIncome | integer | Yes | |
greedFactoryCount | integer | Yes | |
griefFactoryCount | integer | Yes | |
ICE_ARMOR | integer | No | 1 |
item_inc | integer | No | |
itemOptionButtons | button | Yes | |
itemOptionDialog | dialog | No | |
itemOptionIntegers | integer | Yes | 0 |
itemOptions | string | Yes | |
itemOptionTypes | itemcode | Yes | |
leaderboard | multiboard | No | |
level_run_timer | timer | No | |
levelUpTable | hashtable | No | |
lifeFactoryCount | integer | No | |
lifeFactoryIncrease | integer | No | |
lifeIncome | integer | No | |
LIGHTNING_ARMOR | integer | No | 2 |
lumberFactoryCount | integer | Yes | |
lumberGeneratorIncrease | real | No | |
lumberIncome | integer | Yes | |
MAX_CHALLENGE_WAVE_COUNT | integer | No | 10 |
MAX_DUMMIES | integer | No | 20 |
MAX_ENEMIES | integer | No | 250 |
MAX_ENEMY_TYPE_AIR | integer | No | |
MAX_ENEMY_TYPE_BASIC | integer | No | |
MAX_ENEMY_TYPE_SPECIAL | integer | No | |
MAX_ITEM_COUNT | integer | No | 28 |
max_level | integer | No | 50 |
MAX_STATUS_EFFECT | integer | No | |
MAX_TOWER_TYPES | integer | No | 19 |
multishot_abilities | abilcode | Yes | |
MULTISHOT_TOWER_COUNT | integer | No | 16 |
multishot_unit_types | unitcode | Yes | |
next_level_timer | timer | No | |
player_count | integer | No | |
player_region | rect | Yes | |
player_towers | group | Yes | |
playing | boolean | Yes | |
point | location | No | |
pointIncome | integer | No | |
points_to_win | integer | No | |
POISON_RESISTANT | integer | No | 4 |
powerGeneratorCount | integer | Yes | |
random_tower_upgrade | real | No | |
resource_timer | timer | No | |
reward_timer | timer | No | |
spawned_unit | unit | No | |
speedrunFactoryCount | integer | No | |
STARTING_GOLD | integer | No | 200 |
STARTING_LIVES | integer | No | 100 |
STARTING_LUMBER | integer | No | 300 |
STARTING_POINTS | integer | No | 1000 |
status_effects | abilcode | Yes | |
tempAbility | abilcode | No | |
tempGroup | group | No | |
tempGroup2 | group | No | |
tempInt | integer | No | |
tempInt2 | integer | No | |
tempPlayer | player | No | |
tempPlayerGroup | force | No | |
tempPoint | location | No | |
tempPoint2 | location | No | |
tempReal | real | No | |
tempReal2 | real | No | |
tempUnit | unit | No | |
tower_types | unitcode | Yes | |
unit_names | string | Yes | |
unitId | integer | No | |
unitType | unitcode | No | |
upgrade_random_tower | boolean | No | |
win_game_timer | timer | No | |
winFactoryCount | integer | No | |
winFactoryIncrease | integer | No |
function Trig_collectDamage_Actions takes nothing returns nothing
// Store events
set DamageTargets[CurrentEventIndex] = BlzGetEventDamageTarget()
set DamageSources[CurrentEventIndex] = GetEventDamageSource()
//set DamageAmounts[CurrentEventIndex] = GetEventDamage()
if CurrentEventIndex < MaxEvents - 1 then
set CurrentEventIndex = CurrentEventIndex + 1
endif
endfunction
//===========================================================================
function InitTrig_collectDamageEvents takes nothing returns nothing
local integer index
set gg_trg_collectDamageEvents = CreateTrigger( )
set index = 4
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_collectDamageEvents, Player(index), EVENT_PLAYER_UNIT_DAMAGED, null)
set index = index + 1
exitwhen index == 8
endloop
call TriggerAddAction(gg_trg_collectDamageEvents, function Trig_collectDamage_Actions)
endfunction
function Min takes integer a, integer b returns integer
if a < b then
return a
else
return b
endif
endfunction
function Trig_processDamage_Actions takes nothing returns nothing
local integer i = 0
call DisableTrigger(gg_trg_collectDamageEvents)
loop
exitwhen i >= Min(MaxEventsPerTick, CurrentEventIndex) // Process only the max allowed events
set udg_damagedUnit = DamageTargets[i]
set udg_damagingUnit = DamageSources[i]
//tower level up ability
call ConditionalTriggerExecute( gg_trg_levelUpOnHit )
//items abilities status effects
call ConditionalTriggerExecute( gg_trg_bloodOrb )
call ConditionalTriggerExecute( gg_trg_cursedOrb )
call ConditionalTriggerExecute( gg_trg_fireOrb )
call ConditionalTriggerExecute( gg_trg_frostOrb )
call ConditionalTriggerExecute( gg_trg_poisonOrb )
call ConditionalTriggerExecute( gg_trg_frostfireStaff )
call ConditionalTriggerExecute( gg_trg_staffOfSteam )
call ConditionalTriggerExecute( gg_trg_waterOrb )
//tower abilities status effects
call ConditionalTriggerExecute( gg_trg_castBleed )
call ConditionalTriggerExecute( gg_trg_castPoison )
call ConditionalTriggerExecute( gg_trg_castCold )
call ConditionalTriggerExecute( gg_trg_castFreeze )
call ConditionalTriggerExecute( gg_trg_castWet )
call ConditionalTriggerExecute( gg_trg_castShock )
call ConditionalTriggerExecute( gg_trg_castBurning )
call ConditionalTriggerExecute( gg_trg_castCurse )
//tower abilities
call ConditionalTriggerExecute( gg_trg_castShockweaverTower )
call ConditionalTriggerExecute( gg_trg_castArrowImprovement )
call ConditionalTriggerExecute( gg_trg_castPoisonStealGold )
call ConditionalTriggerExecute( gg_trg_castAssasinRemoveHyperspeed )
call ConditionalTriggerExecute( gg_trg_castArcherTower )
call ConditionalTriggerExecute( gg_trg_castBleedDamage )
call ConditionalTriggerExecute( gg_trg_castSlowBleed )
call ConditionalTriggerExecute( gg_trg_castRangerTowerDamage )
call ConditionalTriggerExecute( gg_trg_castAssasinTowerDamage )
call ConditionalTriggerExecute( gg_trg_castSkeletalTower )
call ConditionalTriggerExecute( gg_trg_castRevenantDamage )
call ConditionalTriggerExecute( gg_trg_castBurningDamage )
call ConditionalTriggerExecute( gg_trg_castFireMageDamage )
call ConditionalTriggerExecute( gg_trg_castHeatFlayerBounty )
call ConditionalTriggerExecute( gg_trg_castFlameLasherDamage )
call ConditionalTriggerExecute( gg_trg_castAirBonusDamage )
call ConditionalTriggerExecute( gg_trg_castLightningBonusDamage )
call ConditionalTriggerExecute( gg_trg_castArcstormTower )
call ConditionalTriggerExecute( gg_trg_castCoinTower )
call ConditionalTriggerExecute( gg_trg_castLifeTower )
call ConditionalTriggerExecute( gg_trg_castLifeTowerDamage )
call ConditionalTriggerExecute( gg_trg_castLifeTowerRemoveHyperArmor )
call ConditionalTriggerExecute( gg_trg_castPriestTowerDamage )
call ConditionalTriggerExecute( gg_trg_castPriestTower )
call ConditionalTriggerExecute( gg_trg_castCurseTowerDamage )
//items
call ConditionalTriggerExecute( gg_trg_goldMine )
call ConditionalTriggerExecute( gg_trg_assasinsDagger )
call ConditionalTriggerExecute( gg_trg_axeOfMurderousWoodcutting )
call ConditionalTriggerExecute( gg_trg_cleansingStaff )
call ConditionalTriggerExecute( gg_trg_cloakOfFlames )
call ConditionalTriggerExecute( gg_trg_coinOfGreed )
call ConditionalTriggerExecute( gg_trg_commandersAxe )
call ConditionalTriggerExecute( gg_trg_stormHammer )
call ConditionalTriggerExecute( gg_trg_crypticDagger )
call ConditionalTriggerExecute( gg_trg_cursedStaff )
call ConditionalTriggerExecute( gg_trg_flamingSword )
call ConditionalTriggerExecute( gg_trg_lifeTotem )
call ConditionalTriggerExecute( gg_trg_flagOfWinning )
call ConditionalTriggerExecute( gg_trg_lightningStaff )
call ConditionalTriggerExecute( gg_trg_merchantsGold )
call ConditionalTriggerExecute( gg_trg_rangersBow )
call ConditionalTriggerExecute( gg_trg_runeOfSpeed )
call ConditionalTriggerExecute( gg_trg_staffOfFrost )
call ConditionalTriggerExecute( gg_trg_triforce )
call ConditionalTriggerExecute( gg_trg_unholyDagger )
call ConditionalTriggerExecute( gg_trg_vampiricDagger )
call ConditionalTriggerExecute( gg_trg_theEye )
call ConditionalTriggerExecute( gg_trg_opiemonstersMask )
call ConditionalTriggerExecute( gg_trg_wtiisWacker )
call ConditionalTriggerExecute( gg_trg_mysteriousCheese )
call ConditionalTriggerExecute( gg_trg_removeResistances )
set i = i + 1
endloop
set CurrentEventIndex = CurrentEventIndex - i
call EnableTrigger(gg_trg_collectDamageEvents)
endfunction
//===========================================================================
function InitTrig_processDamage takes nothing returns nothing
set gg_trg_processDamage = CreateTrigger( )
call TriggerRegisterTimerEvent(gg_trg_processDamage, 0.03, true)
call TriggerAddAction( gg_trg_processDamage, function Trig_processDamage_Actions )
endfunction