//===============================For AI Request============================
function Is_struct takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == true )
endfunction
function Ownerfilter takes nothing returns boolean
local integer n = udg_tplayernumber
return ( GetOwningPlayer(GetFilterUnit()) == Player(n - 1) )
endfunction
function Hp_ok takes nothing returns boolean
return ( GetUnitLifePercent(GetFilterUnit()) > udg_min_life )
endfunction
//================== AI Training =====================
function Non_Struct takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction
function Check_AI_numbers takes nothing returns boolean
local integer n = udg_tplayernumber
return CountUnitsInGroup(GetUnitsOfPlayerMatching(Player(n), Condition(function Non_Struct))) <= 100
endfunction
function AiFirstUpgrade takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Fupgrade_build[udg_Race[n + 1]] )
set n = 0
endfunction
function AiSecondUpgrade takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Supgrade_build[udg_Race[n + 1]] )
set n = 0
endfunction
function AiTrainMelee takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Mele_Unit[udg_Race[n + 1]] )
set n = 0
endfunction
function AiTrainMage takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Mage_Unit[udg_Race[n + 1]] )
set n = 0
endfunction
function AiTrainTank takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Tank_Unit[udg_Race[n + 1]] )
set n = 0
endfunction
function AiTrainRange takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Range_Unit[udg_Race[n + 1]] )
set n = 0
endfunction
function AiTrainFlying takes nothing returns nothing
local integer n = udg_tplayernumber
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Flyng_Unit[udg_Race[n + 1]] )
set n = 0
endfunction
//=================use two next functions linked============
function FirstBuildingTrain takes integer playernumber, integer order returns nothing
local unit upon
local integer c = 1
set udg_tplayernumber = playernumber
set udg_AI_army[udg_tplayernumber] = GetUnitsOfPlayerAndTypeId(Player(udg_tplayernumber), udg_Main_build[udg_Race[udg_tplayernumber + 1]])
if (order == 1) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMelee)
elseif (order == 2) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainRange)
elseif (order == 3) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMage)
elseif (order == 4) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainTank)
elseif (order == 5) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainFlying)
elseif (order == 6) then
set upon = GroupPickRandomUnit(udg_AI_army[udg_tplayernumber])
call SelectUnitForPlayerSingle(upon, Player(udg_tplayernumber) )
loop
exitwhen c > 7
call ForceUICancelBJ( Player(udg_tplayernumber) )
set c = c + 1
endloop
call IssueTrainOrderByIdBJ( upon, udg_Fupgrade_build[udg_Race[udg_tplayernumber + 1]] )
endif
call DestroyGroup (udg_AI_army[udg_tplayernumber])
set udg_tplayernumber = 0
set upon = null
set c = 0
endfunction
//=================use two next functions linked============
function SecondBuildingTrain takes integer playernumber, integer order returns nothing
local unit upon
local integer c = 1
set udg_tplayernumber = playernumber
set udg_AI_army[udg_tplayernumber] = GetUnitsOfPlayerAndTypeId(Player(udg_tplayernumber), udg_Fupgrade_build[udg_Race[udg_tplayernumber + 1]])
if (order == 1) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMelee)
elseif (order == 2) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainRange)
elseif (order == 3) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMage)
elseif (order == 4) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainTank)
elseif (order == 5) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainFlying)
elseif (order == 6) then
set upon = GroupPickRandomUnit(udg_AI_army[udg_tplayernumber])
call SelectUnitForPlayerSingle(upon, Player(udg_tplayernumber) )
loop
exitwhen c > 7
call ForceUICancelBJ( Player(udg_tplayernumber) )
set c = c + 1
endloop
call IssueTrainOrderByIdBJ( upon, udg_Supgrade_build[udg_Race[udg_tplayernumber + 1]] )
endif
call DestroyGroup (udg_AI_army[udg_tplayernumber])
set udg_tplayernumber = 0
set upon = null
set c = 0
endfunction
//=================use two next functions linked============
function CastleBuildingTrain takes integer playernumber, integer order returns nothing
set udg_tplayernumber = playernumber
set udg_AI_army[udg_tplayernumber] = GetUnitsOfPlayerAndTypeId(Player(udg_tplayernumber), udg_Supgrade_build[udg_Race[udg_tplayernumber + 1]])
if (order == 1) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMelee)
elseif (order == 2) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainRange)
elseif (order == 3) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainMage)
elseif (order == 4) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainTank)
elseif (order == 5) then
call ForGroup(udg_AI_army[udg_tplayernumber], function AiTrainFlying)
endif
call DestroyGroup (udg_AI_army[udg_tplayernumber])
set udg_tplayernumber = 0
endfunction
//===0000 call ForGroup( udg_AI_army[udg_tplayernumber], function Train2 ) 00000
//==================AI research =================
function ReschArmor takes nothing returns nothing
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R002' )
endfunction
function ReschDamage takes nothing returns nothing
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R001' )
endfunction
function ReschLife takes nothing returns nothing
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R000' )
endfunction
function ReschDefBuild takes nothing returns nothing
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R004' )
endfunction
//================Linked functions=================
function TechBuildingOrder takes integer playernumber, integer order returns nothing
set udg_AI_army[playernumber] = GetUnitsOfPlayerAndTypeId(Player(playernumber), udg_Tech_build[udg_Race[playernumber + 1]])
if (order == 1) then
call ForGroup(udg_AI_army[playernumber], function ReschArmor)
elseif (order == 2) then
call ForGroup(udg_AI_army[playernumber], function ReschDamage)
elseif (order == 3) then
call ForGroup(udg_AI_army[playernumber], function ReschLife)
elseif (order == 4) then
call ForGroup(udg_AI_army[playernumber], function ReschDefBuild)
endif
call DestroyGroup (udg_AI_army[playernumber])
endfunction
//===============================================
function SetMinor takes integer Apl, integer Bpl returns integer
local integer P1 = GetPlayerUnitCount(ConvertedPlayer(Apl), false)
local integer P2 = GetPlayerUnitCount(ConvertedPlayer(Bpl), false)
if ( P1 > P2) then
return Bpl
endif
return Apl
endfunction
//===============================================
function CheckWeakEbony takes integer playernumber returns integer
local integer c = 1
local integer t
local integer minor
loop
exitwhen c > 4
set t = (GetConvertedPlayerId(udg_Ebony_player[c]) - 1)
if (t != 0) then
set minor = SetMinor(playernumber,t)
set c = c + 1
else
set c = c + 1
endif
endloop
return minor
endfunction
function CheckWeakTyr takes integer playernumber returns integer
local integer c = 1
local integer t
local integer minor
loop
exitwhen c > 4
set t = (GetConvertedPlayerId(udg_tyr_player[c]) - 1)
if (t != 0) then
set minor = SetMinor(playernumber,t)
set c = c + 1
else
set c = c + 1
endif
endloop
return minor
endfunction
function CheckAiGold takes player AIPlayer, integer gold returns boolean
return ( GetPlayerState(AIPlayer, PLAYER_STATE_RESOURCE_GOLD) >= gold )
endfunction
function CheckAiKPoints takes player AIPlayer, integer kpoint returns boolean
return ( GetPlayerState(AIPlayer, PLAYER_STATE_RESOURCE_LUMBER) >= kpoint )
endfunction
function CheckAiPlayerRank takes player p, integer kills returns boolean
return ( GetPlayerScore(p, PLAYER_SCORE_UNITS_KILLED) >= kills )
endfunction
//===============================Massive attack============================
function Mass_Attack takes player Enm, player Own returns nothing
local integer C = 1
local integer mon = GetRandomInt(1, 3)
local location Ep
local group army
local group s_army
local group Enemg
if ( mon != 3) then
call DestroyGroup (Enemg)
call DestroyGroup (army)
call DestroyGroup (s_army)
call RemoveLocation(Ep)
return
endif
set Enemg = GetUnitsOfPlayerMatching(Enm, Condition(function Is_struct))
set Ep = GetUnitLoc(GroupPickRandomUnit(Enemg))
call DestroyGroup (Enemg)
set army = GetUnitsOfPlayerMatching(Own, Condition(function Hp_ok))
loop
exitwhen C > 10
set s_army = GetRandomSubGroup(12, army)
call GroupPointOrderLocBJ( s_army, "attack", Ep )
call GroupRemoveGroup( s_army, army )
call DestroyGroup (s_army)
set C = C + 1
endloop
call DestroyGroup (army)
call RemoveLocation(Ep)
set mon = 0
endfunction
function AIattack takes integer playernumber, location target returns nothing
local group g = GetUnitsOfPlayerMatching(Player(playernumber), Condition(function Hp_ok))
local group sg
local integer c = 1
loop
exitwhen c > 10
set sg = GetRandomSubGroup(12, g)
call GroupPointOrderLocBJ( g, "attack",target)
call GroupRemoveGroup(sg, g )
call DestroyGroup (sg)
set c = c + 1
endloop
call DestroyGroup (g)
call RemoveLocation(target)
set c = 0
endfunction
function AIattackb takes integer playernumber, location target returns nothing
local group g = GetUnitsOfPlayerMatching(Player(playernumber), Condition(function Non_Struct))
local group sg
local integer c = 1
loop
exitwhen c > 10
set sg = GetRandomSubGroup(12, g)
call GroupPointOrderLocBJ( g, "attack",target)
call GroupRemoveGroup(sg, g )
call DestroyGroup (sg)
set c = c + 1
endloop
call DestroyGroup (g)
call RemoveLocation(target)
set c = 0
endfunction
//================== AI Expander order =============
function Noself takes integer playernumber returns boolean
return ( GetFilterPlayer() != Player(playernumber) )
endfunction
function Noally takes integer playernumber returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetFilterUnit()), Player(playernumber)) == false )
endfunction
function Is_enemy takes nothing returns boolean
local integer playernumber = udg_tplayernumber
return (Is_struct() and Noself(playernumber) and Noally(playernumber))
endfunction
//== local player Pl = Player(6)
function Exp_order takes player Pl, real range returns nothing
local integer m = GetRandomInt(1, 3)
local group targetg
local location target
set udg_tplayernumber = GetConvertedPlayerId(Pl)-1
set targetg = GetUnitsInRangeOfLocMatching(range, GetPlayerStartLocationLoc(Pl), Condition(function Is_enemy))
if ( m != 3 ) then
call DestroyGroup(targetg)
call RemoveLocation (target)
return
elseif ( IsUnitGroupEmptyBJ(targetg) == false ) then
set target = GetUnitLoc(GroupPickRandomUnit(targetg))
call AIattack(udg_tplayernumber,target)
endif
call RemoveLocation(target)
call DestroyGroup (targetg)
set m = 0
set range = 0
set Pl = null
endfunction
//======================AI Defending ===============00
function DefOrder takes nothing returns nothing
local integer n = udg_tplayernumber
call IssuePointOrderLocBJ( GetEnumUnit(), "attack", udg_target[n] )
set n = 0
endfunction
function AiDefendOrder takes real range, integer playernumber, unit attacked returns nothing
local group g
local integer p = playernumber
set udg_tplayernumber = playernumber
set udg_target[p] = GetUnitLoc(attacked)
set g = GetUnitsInRangeOfLocMatching(range, udg_target[p], Condition(function Ownerfilter))
call ForGroup( g, function DefOrder)
call DestroyGroup (g)
call RemoveLocation(udg_target[p])
set udg_tplayernumber = 0
set p = 0
endfunction
//=========================== AI defending ally ================
function CheckAlly takes unit attacked returns boolean
local integer n = udg_tplayernumber
return (( udg_AI_defending_on[n] == false ) and ( IsUnitType(attacked, UNIT_TYPE_STRUCTURE) == true ) and ( IsPlayerAlly(GetOwningPlayer(attacked), Player(n)) == true ))
endfunction
function DefAllyFilter takes nothing returns boolean
local integer n = udg_tplayernumber
return (Non_Struct() and (GetOwningPlayer(GetFilterUnit()) == Player(n - 1)))
endfunction
function DefAllyOrder takes nothing returns nothing
local integer n = udg_tplayernumber
call IssuePointOrderLocBJ( GetEnumUnit(), "attack", udg_target[n] )
endfunction
function AIDefendAlly takes real range, integer playernumber, unit attacked returns nothing
local integer p = playernumber
set udg_tplayernumber = playernumber
set udg_target[p] = GetUnitLoc(attacked)
set udg_AI_army[p] = GetUnitsInRangeOfLocMatching(range, udg_target[p], Condition(function DefAllyFilter))
if ( IsUnitGroupEmptyBJ(udg_AI_army[p]) == true ) then
call DestroyGroup (udg_AI_army[p])
set udg_AI_army[p] = GetUnitsInRangeOfLocMatching(range * 1.5, udg_target[p], Condition(function DefAllyFilter))
endif
call ForGroup( udg_AI_army[p], function DefAllyOrder )
call DestroyGroup (udg_AI_army[p])
call RemoveLocation(udg_target[p])
set udg_tplayernumber = 0
set p = 0
endfunction
function Attackweak takes integer playernumber returns nothing
local integer targetnumber
if (playernumber <= 4) then
set targetnumber = CheckWeakEbony(playernumber)
if (targetnumber == playernumber) then
set targetnumber = 0
return
endif
else
set targetnumber = CheckWeakTyr(playernumber)
if (targetnumber == playernumber) then
set targetnumber = 0
return
endif
endif
call Mass_Attack(Player(targetnumber),Player(playernumber))
set targetnumber = 0
endfunction
function Total_Attack takes player Pl returns nothing
local integer m = GetRandomInt(1, 3)
local group targetg
local location target
set udg_tplayernumber = GetConvertedPlayerId(Pl)-1
set targetg = GetUnitsInRangeOfLocMatching(39999, GetPlayerStartLocationLoc(Pl), Condition(function Is_enemy))
if ( m != 3 ) then
call DestroyGroup(targetg)
call RemoveLocation (target)
return
elseif ( IsUnitGroupEmptyBJ(targetg) == false ) then
set target = GetUnitLoc(GroupPickRandomUnit(targetg))
call AIattackb(udg_tplayernumber,target)
endif
call RemoveLocation(target)
call DestroyGroup (targetg)
set m = 0
set Pl = null
endfunction
function TotalAttack takes integer playernumber returns nothing
local integer targetnumber
if (playernumber <= 4) then
set targetnumber = GetRandomInt(5, 8)
else
set targetnumber = GetRandomInt(1, 4)
endif
call Total_Attack(Player(targetnumber))
set targetnumber = 0
endfunction
Name | Type | is_array | initial_value |
Ability_temp | abilcode | No | |
actual_income | integer | Yes | |
Actual_shop | group | No | |
actualbound | rect | Yes | |
AI_army | group | Yes | |
AI_ASG_F | group | Yes | |
AI_ASG_m | group | Yes | |
AI_ASG_M | group | Yes | |
AI_ASG_R | group | Yes | |
AI_ASG_T | group | Yes | |
AI_attacking_on | boolean | Yes | |
AI_defending_on | boolean | Yes | |
AI_exptime | real | Yes | |
AI_FU_ON | boolean | Yes | |
AI_hash | hashtable | No | |
Ai_item | item | No | |
AI_loc | location | No | |
Ai_raceUnits | group | No | |
AI_RSCHng | boolean | Yes | |
AI_SU_ON | boolean | Yes | |
AI_timers | hashtable | No | |
AI_TowerRatio | real | Yes | |
AIBattletime | real | Yes | |
AIC_AssaultLover | real | No | 60.00 |
AIC_CityLover | real | No | 4000.00 |
AIC_CountryLover | real | No | 8000.00 |
AIC_EmpireLover | real | No | 15000.00 |
AIC_ExpandLover | real | No | 60.00 |
AIC_FightLover | real | No | 90.00 |
AIC_FlyDefault | real | No | 80.00 |
AIC_FlyHate | real | No | 120.00 |
AIC_FlyLover | real | No | 40.00 |
AIC_MageDefault | real | No | 60.00 |
AIC_MageHate | real | No | 90.00 |
AIC_MageLover | real | No | 20.00 |
AIC_MeleDefault | real | No | 30.00 |
AIC_MeleHate | real | No | 70.00 |
AIC_MeleLover | real | No | 15.00 |
AIC_PillageLover | boolean | Yes | |
AIC_RangeDefault | real | No | 50.00 |
AIC_RangeHate | real | No | 90.00 |
AIC_RangeLover | real | No | 20.00 |
AIC_RazeLover | boolean | Yes | |
AIC_RDefault | real | No | 70.00 |
AIC_RHate | real | No | 100.00 |
AIC_RLover | real | No | 50.00 |
AIC_SiegeLover | real | No | 240.00 |
AIC_TankDefault | real | No | 70.00 |
AIC_TankHate | real | No | 100.00 |
AIC_TankLover | real | No | 25.00 |
AIC_TowerHate | real | No | 1000.00 |
AIC_TowerLover | real | No | 400.00 |
AIC_TowerNormal | real | No | 600.00 |
AIExpAttackratio | real | Yes | |
AIGoldArmor | integer | Yes | |
AIGoldDmg | integer | Yes | |
AIGoldHp | integer | Yes | |
AIGoldState | integer | Yes | |
AIKillpState | integer | Yes | |
AIKillsState | integer | Yes | |
AIMassAttackratio | real | Yes | |
AIRangeExp | real | Yes | |
AIRangeMass | real | Yes | |
AIReschAR | real | Yes | |
AIReschDMG | real | Yes | |
AIReschHP | real | Yes | |
AITrainFlyingRatio | real | Yes | |
AITrainMagRatio | real | Yes | |
AITrainMeRatio | real | Yes | |
AITrainRangeRatio | real | Yes | |
AITrainTankRatio | real | Yes | |
AIUpgradetime | real | Yes | |
Alexander_target | location | No | |
AllG | group | No | |
AllP | location | No | |
AllU | unit | No | |
Anibal_target | location | No | |
Arca_destruida | boolean | Yes | |
archamgepoint1 | location | No | |
archamgepointcaster | location | No | |
archmagecaster | unit | No | |
archmagecurseunit | unit | No | |
archmagegroup | group | No | |
archmagerect | rect | No | |
Arrow_hash | hashtable | No | |
Atila_army_1 | group | No | |
Atila_target | location | No | |
Av_on_group | group | No | |
basher_dmg | real | No | |
basher_targetpoint | location | No | |
basher_txt | string | No | |
bashercaster | unit | No | |
bashertarget | unit | No | |
bat_caster | unit | No | |
bat_real | real | No | |
bat_storm_count | integer | No | |
BMS | hashtable | No | |
BMS_C | unit | No | |
BMS_G | group | No | |
BMS_T | location | No | |
bonebag_angle | real | No | |
bonebag_caster | unit | No | |
bonebag_castp | location | No | |
bonebag_target | location | No | |
bonebag_targetB | location | No | |
bonebag_Utarget | unit | No | |
brutal_angle | real | No | |
brutal_increment | real | No | 30.00 |
brutal_tmp | location | No | |
brutal_tmp1 | location | No | |
brutal_tmp2 | location | No | |
brutalHit_target | unit | No | |
brutalHit_unit | unit | No | |
Builder_temp | unit | No | |
buildingpoint | location | No | |
builds | integer | Yes | |
buy_point | location | No | |
buy_shop | group | No | |
buy_true | boolean | No | |
buy_unit | unit | No | |
buyingunit | unit | No | |
C_wall | integer | No | |
cache | hashtable | No | |
cast_obstacle | integer | No | |
Caster | unit | No | |
Castle_mode_value | integer | No | |
Castwall | abilcode | Yes | |
Castwall_hash | hashtable | No | |
Charguer_Unit | unitcode | Yes | |
CHT_L | string | No | |
CHT_O | string | No | |
cont | integer | No | |
Cont_ai | integer | No | |
count_a | integer | No | |
count_b | integer | No | |
Cu_order | string | No | |
D_item | item | No | |
Damned_fire_caster | unit | No | |
Dangle | real | Yes | |
Dead_time | boolean | No | |
dead_tower_point | location | No | |
death_point | location | No | |
death_t | timer | No | |
Dennygroup | group | No | |
DenUnit | unit | No | |
DIgroup | group | Yes | |
distancia | real | Yes | |
distancia_b | real | Yes | |
Dpoint | location | No | |
DS_ang | real | No | |
DS_ang2 | real | No | |
DS_c | unit | No | |
DS_Dst | real | No | |
DS_g | group | No | |
DS_g2 | group | No | |
DS_gt | group | No | |
DS_p | location | No | |
DS_p2 | location | No | |
DS_p3 | location | No | |
DS_t | unit | No | |
Dscale | real | Yes | |
Ebony_inc | integer | No | |
Ebony_player | player | Yes | |
EbonyForces | integer | No | |
egc | group | No | |
egh | group | No | |
egv | group | No | |
Enemy_Ebony_target | group | No | |
Enemy_tyr_target | group | No | |
ExitTunnel_unit | unit | Yes | |
FA | real | No | |
fake_innate | abilcode | Yes | |
flask_attaking | unit | No | |
flask_group | group | No | |
flask_unit_point | location | No | |
flask_unit_pointB | location | No | |
Flyng_Unit | unitcode | Yes | |
FoodareaT | rect | No | |
FoodGroup | group | No | |
fortress_mode_value | integer | No | |
free_contador | integer | No | |
Fupgrade_build | unitcode | Yes | |
gmode | trigger | No | |
Grupo_rescate | group | No | |
Guard2_Unit | unitcode | Yes | |
Guard3_Unit | unitcode | Yes | |
Guard_Unit | unitcode | Yes | |
hasst | boolean | Yes | |
Have_mageW | boolean | Yes | |
Have_meleeW | boolean | Yes | |
Have_rangeW | boolean | Yes | |
Have_tankW | boolean | Yes | |
HD | boolean | Yes | |
hero_esc | group | No | |
HG | group | No | |
hiddengroup | group | No | |
hidetax | boolean | Yes | |
HR | unit | Yes | |
IB_R | real | No | |
IB_U | unit | No | |
IB_X | real | No | |
IB_Y | real | No | |
ice_chaos_point | location | No | |
ice_chaos_region | rect | No | |
ice_chaos_timer | timer | No | |
ice_time | real | No | |
Iconpatch | string | Yes | |
Icont | integer | No | |
IM_BG | group | No | |
IM_BP | location | No | |
Inc_armor | integer | No | 50 |
Inc_dmg | integer | No | 75 |
Inc_hp | integer | No | 75 |
infogame | string | No | . Type -gmode for see details about currently game mode. |
Init_timer | timer | No | |
Innate | abilcode | Yes | |
Innate_Ability | hashtable | No | |
Innate_counter | integer | Yes | |
Innate_group | group | Yes | |
Innate_id | integer | No | |
INTW | integer | No | |
ISH | hashtable | No | |
IU | unit | No | |
Juana_target | location | No | |
Killer_temp | integer | No | |
kiss_value | real | No | |
kissed_unit | unit | No | |
Kissing_life | real | No | |
kissing_unit | unit | No | |
Knock_angle | real | No | |
Knock_attacked | unit | No | |
knock_increment | real | No | -40.00 |
Knock_tmp1 | location | No | |
Knock_tmp2 | location | No | |
Knock_tmp3 | location | No | |
knock_unit | unit | No | |
kunyonya_group | group | No | |
level_bat | integer | No | |
level_batstorm | real | No | |
Lightc | hashtable | No | |
Load_U | hashtable | No | |
mage_on | boolean | No | |
Mage_Unit | unitcode | Yes | |
Main_build | unitcode | Yes | |
Mele_Unit | unitcode | Yes | |
melee_on | boolean | No | |
min_life | real | No | 90.00 |
mission1 | quest | No | |
ModeC | hashtable | No | |
Modetext | string | No | |
moneda | integer | No | |
MP | hashtable | No | |
Mtrust | real | No | |
Mtrustr | real | No | |
Mtrustt | real | No | |
muerte | real | Yes | |
Muertes_1 | real | No | |
Muertes_2 | real | No | |
Muertes_3 | real | No | |
Muertes_4 | real | No | |
Muertes_5 | real | No | |
Muertes_6 | real | No | |
Muertes_7 | real | No | |
Muertes_8 | real | No | |
NBL | integer | No | |
new_point | location | No | |
ngc | group | No | |
ngh | group | No | |
ngv | group | No | |
Novice_On | boolean | No | |
Obs_loc | location | No | |
Obstacles | abilcode | Yes | |
obstacles_hash | hashtable | No | |
Obuy_unit | unit | No | |
ogc | group | No | |
ogh | group | No | |
Ogreslam_effect | effect | No | |
Ogslam_angle | real | No | |
Ogslam_atkedpoint | location | No | |
Ogslam_atkpoint | location | No | |
Ogslam_Atkunit | unit | No | |
ogslam_cont | integer | No | 31 |
Ogslam_destinypoint | location | No | |
Ogslam_increment | real | No | 35.00 |
Ogslam_Targetunit | unit | No | |
Ogslamint | integer | No | |
Ogslamtxt | string | No | |
ogv | group | No | |
Otbuild | unitcode | Yes | |
owned_Main | unitcode | Yes | |
owned_second | unitcode | Yes | |
owned_third | unitcode | Yes | |
Ownhash | hashtable | No | |
pbuild | location | No | |
Percival_scape | group | No | |
pillager | unit | No | |
Player_Ai | player | Yes | |
Player_color | string | Yes | |
player_count | integer | No | |
player_online | integer | No | |
Player_Race | player | No | |
Player_rank | string | Yes | |cffffcc00Novice|r |
Player_ready | boolean | Yes | |
provoke_on | boolean | No | |
punto_construccion | location | No | |
Q_Commands | string | No | |
Q_Instructions | string | No | |
Q_Wincondition | string | No | |
Race | integer | Yes | |
Rand_innate | integer | No | |
rand_point | location | No | |
Random_trash | unit | No | |
Random_trashP | location | No | |
Randomholy | integer | No | |
range_on | boolean | No | |
Range_Unit | unitcode | Yes | |
ravager_count | integer | No | |
ravager_end | integer | No | |
ravager_on | boolean | Yes | |
ravager_player | integer | Yes | |
ravager_timer | timer | Yes | |
ravager_unit | unit | Yes | |
rect_p | location | No | |
Relic1_p | location | No | |
Relic2_p | location | No | |
repel_count | integer | No | |
repel_end | integer | No | |
repel_on | boolean | Yes | |
repel_player | integer | Yes | |
repel_timer | timer | Yes | |
repel_unit | unit | Yes | |
rescate_count | integer | No | |
rescate_countB | integer | No | |
Saladino_army | group | No | |
Saladino_army1 | group | No | |
Saladino_exp | group | No | |
Saladino_target | location | No | |
saladinobajoataque | boolean | No | |
Save_U | hashtable | No | |
Selected_item | item | No | |
setting_on | boolean | No | |
settle | unit | Yes | |
settlevent | boolean | Yes | |
sgc | group | No | |
sgh | group | No | |
sgv | group | No | |
Shop_build | unitcode | Yes | |
shop_near | boolean | No | |
shop_zone | rect | Yes | |
si_innate | integer | No | |
Siege_Unit | unitcode | Yes | |
Skills_list | hashtable | No | |
SNP | hashtable | No | |
solo_on | boolean | No | |
sound_Now | sound | No | |
SR | real | No | |
SSR | hashtable | No | |
SSRU | unit | No | |
SStriked_unit | unit | No | |
ST | hashtable | No | |
STE | string | No | Our zone is safe now, check your tech building to install your settlement.!!! |
Stronghold_mode_Value | integer | No | |
SU | unit | No | |
SUA | real | No | |
Succubus_esc | group | No | |
summoner_bat | player | No | |
Supgrade_build | unitcode | Yes | |
Surfer_angle | real | No | |
Surfer_arrow | unit | No | |
surfer_arrow | group | No | |
Surfer_dist | real | No | |
Surfer_link | lightning | No | |
Surfer_Lt | location | No | |
Surfer_on | boolean | No | |
Surfer_p1 | location | No | |
Surfer_p2 | location | No | |
Surfer_p3 | location | No | |
Surfer_unit | unit | No | |
Surfer_unl | boolean | No | |
TAIdef | integer | No | |
tank_on | boolean | No | |
Tank_Unit | unitcode | Yes | |
target | location | Yes | |
Tarjeted_Trash | unit | No | |
Tarjeted_trashP | location | No | |
tax1 | integer | Yes | |
tax2 | integer | Yes | |
tax3 | integer | Yes | |
tct | integer | No | |
Tech_build | unitcode | Yes | |
Temp_group1 | group | No | |
Temp_group2 | group | No | |
Temp_group3 | group | No | |
temp_point | location | No | |
temp_point2 | location | No | |
temp_region | rect | No | |
temp_unit | unit | No | |
tempdest | destructable | No | |
TempPN | integer | No | |
TGE | string | No | Your army clams you: We need train to be more powerfull. Go to the tech house and set your training portal!. |
TGR | boolean | Yes | |
tgroup | group | No | |
thief_gold_A | integer | No | |
thief_kp_A | integer | No | |
timer | timer | No | |
Timer_turno | integer | No | |
Tower_build | unitcode | Yes | |
tower_in_rect | boolean | Yes | |
Tower_int | integer | No | |
tower_min | real | No | 39999.00 |
Tower_next | unit | Yes | |
Tower_p | location | No | |
tower_rect | rect | No | |
tower_tmp | real | No | |
tpg | force | No | |
tplayernumber | integer | No | |
tr | timer | No | |
Tunnel_on | boolean | Yes | |
turno | integer | No | |
tyr_player | player | Yes | |
TyrForces | integer | No | |
unitmode | timer | No | |
Unitstoremove | group | No | |
UP_Dtrange | integer | No | |
UP_effect | string | Yes | |
UP_loadint | integer | No | |
UP_loadtype | integer | No | |
UP_rank | integer | No | |
utr | unitcode | No | |
vampire_group | group | No | |
Vampire_pos | location | No | |
Vampire_rot | location | No | |
vampire_unit | unit | No | |
VampireOrde_caster | unit | No | |
VampireOrde_face | real | No | |
VampireOrde_group | group | No | |
VampireOrde_pointa | location | No | |
VampireOrde_pointc | location | No | |
VampireOrde_pointS | location | No | |
VampireOrde_pointX | location | No | |
VampireOrde_pointY | location | No | |
VampireOrde_pointZ | location | No | |
VampireOrde_rect | rect | No | |
VampireOrde_timer | timer | No | |
VampireOrde_variant1 | real | No | |
Vampiretemp_caster | unit | No | |
victory_B | real | No | |
victory_R | real | No | |
vudu_dmg | real | No | |
vudu_group | group | No | |
vudu_unit | unit | No | |
Walldoodad | destructablecode | Yes | |
walltype | unitcode | Yes | |
Warlord_on | boolean | No | |
Warrior_on | boolean | No | |
waves | hashtable | No | |
wcounter | integer | No | |
wdoodad | integer | No | |
weak_target | boolean | Yes | |
Xmax | real | No | |
Xmin | real | No | |
Ymax | real | No | |
Ymin | real | No |
function Trig_Map_Begin_Actions takes nothing returns nothing
local integer c = 1
local integer d = 1
local integer e = 5
set udg_Xmin = GetRectMinX(GetPlayableMapRect())
set udg_Xmax = GetRectMaxX(GetPlayableMapRect())
set udg_Ymin = GetRectMinY(GetPlayableMapRect())
set udg_Ymax = GetRectMaxY(GetPlayableMapRect())
call SetTimeOfDay( 5.30 )
call TriggerSleepAction( 0.20 )
call ShowUnitHide( gg_unit_n01B_0146 )
call ShowUnitHide( gg_unit_n01B_0147 )
call ShowUnitHide( gg_unit_n01B_0148 )
call ShowUnitHide( gg_unit_n01B_0153 )
call ShowUnitHide( gg_unit_n01B_0154 )
call ShowUnitHide( gg_unit_n01B_0155 )
call ShowUnitHide( gg_unit_n01B_0156 )
call ShowUnitHide( gg_unit_n01B_0177 )
set udg_turno = 1
set udg_Timer_turno = 20
set udg_setting_on = true
loop
exitwhen c > 8
if (GetPlayerSlotState(ConvertedPlayer(c)) == PLAYER_SLOT_STATE_PLAYING) then
set udg_player_online = ( udg_player_online + 1 )
call SetPlayerFlagBJ( PLAYER_STATE_GIVES_BOUNTY, true, ConvertedPlayer(c) )
set udg_actualbound[c] = RectFromCenterSizeBJ(GetPlayerStartLocationLoc(ConvertedPlayer(c)), 900.00, 900.00)
call SetPlayerStateBJ( ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD, 100 )
call SetPlayerAbilityAvailableBJ( false, 'A06D', ConvertedPlayer(c) )
call SetPlayerAbilityAvailableBJ( false, 'A06J', ConvertedPlayer(c) )
call SetPlayerAbilityAvailableBJ( false, 'A06M', ConvertedPlayer(c) )
else
endif
set c = c + 1
endloop
loop
exitwhen d > 4
if (GetPlayerSlotState(ConvertedPlayer(d)) == PLAYER_SLOT_STATE_PLAYING) then
set udg_TyrForces = ( udg_TyrForces + 1 )
set udg_tyr_player[udg_TyrForces] = ConvertedPlayer(d)
else
set udg_victory_R = ( udg_victory_R + 1 )
endif
set d = d + 1
endloop
loop
exitwhen e > 8
if (GetPlayerSlotState(ConvertedPlayer(e)) == PLAYER_SLOT_STATE_PLAYING ) then
set udg_EbonyForces = ( udg_EbonyForces + 1 )
set udg_Ebony_player[udg_EbonyForces] = ConvertedPlayer(e)
else
set udg_victory_B = ( udg_victory_B + 1 )
endif
set e = e + 1
endloop
set udg_Player_color[1] = "|cffff0000"
set udg_Player_color[2] = "|cff0000cc"
set udg_Player_color[3] = "|cff1ce6b9"
set udg_Player_color[4] = "|cff003399"
set udg_Player_color[5] = "|cffffff00"
set udg_Player_color[6] = "|cfff29400"
set udg_Player_color[7] = "|cff009036"
set udg_Player_color[8] = "|cfff19fc1"
call SetPlayerColorBJ( Player(0), PLAYER_COLOR_RED, true )
call SetPlayerColorBJ( Player(1), PLAYER_COLOR_BLUE, true )
call SetPlayerColorBJ( Player(2), PLAYER_COLOR_CYAN, true )
call SetPlayerColorBJ( Player(3), PLAYER_COLOR_PURPLE, true )
call SetPlayerColorBJ( Player(4), PLAYER_COLOR_YELLOW, true )
call SetPlayerColorBJ( Player(5), PLAYER_COLOR_ORANGE, true )
call SetPlayerColorBJ( Player(6), PLAYER_COLOR_GREEN, true )
call SetPlayerColorBJ( Player(7), PLAYER_COLOR_PINK, true )
set udg_Relic1_p = GetUnitLoc(gg_unit_n001_0079)
set udg_Relic2_p = GetUnitLoc(gg_unit_n001_0086)
endfunction
//===========================================================================
function InitTrig_Map_Begin takes nothing returns nothing
set gg_trg_Map_Begin = CreateTrigger( )
call TriggerAddAction( gg_trg_Map_Begin, function Trig_Map_Begin_Actions )
endfunction
function Trig_FirstScreen_Actions takes nothing returns nothing
local integer c = 1
set udg_temp_point = GetRectCenter(gg_rct_RaceRect)
call StartTimerBJ( udg_unitmode, false, 15.00 )
loop
exitwhen c > 8
call PanCameraToTimedLocForPlayer( ConvertedPlayer(c), udg_temp_point, 0 )
set c = c + 1
endloop
set c = 0
call RemoveLocation(udg_temp_point)
call TriggerSleepAction( 1.00 )
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_3149" )
endfunction
//===========================================================================
function InitTrig_FirstScreen takes nothing returns nothing
set gg_trg_FirstScreen = CreateTrigger( )
call TriggerAddAction( gg_trg_FirstScreen, function Trig_FirstScreen_Actions )
endfunction
function Trig_start_hash_Actions takes nothing returns nothing
call StartTimerBJ( udg_Init_timer, false, 60.00 )
call CreateTimerDialogBJ( GetLastCreatedTimerBJ(), "TRIGSTR_5492" )
call TimerDialogDisplayBJ( true, GetLastCreatedTimerDialogBJ() )
// Enabling Data storing (work fine this?)
set udg_cache = InitHashtableBJ( )
set udg_Lightc = InitHashtableBJ( )
set udg_Save_U = InitHashtableBJ( )
set udg_Load_U = InitHashtableBJ( )
set udg_ModeC = InitHashtableBJ( )
set udg_waves = InitHashtableBJ( )
set udg_Arrow_hash = InitHashtableBJ( )
set udg_Skills_list = InitHashtableBJ( )
set udg_Innate_Ability = InitHashtableBJ( )
set udg_obstacles_hash = InitHashtableBJ( )
set udg_Castwall_hash = InitHashtableBJ( )
set udg_ST = InitHashtableBJ( )
set udg_SNP = InitHashtableBJ( )
set udg_ISH = InitHashtableBJ( )
set udg_SSR = InitHashtableBJ( )
set udg_MP = InitHashtableBJ( )
set udg_BMS = InitHashtableBJ( )
set udg_AI_hash = InitHashtableBJ( )
set udg_AI_timers = InitHashtableBJ( )
set udg_Ownhash = InitHashtableBJ( )
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_start_hash takes nothing returns nothing
set gg_trg_start_hash = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_start_hash, 0.50 )
call TriggerAddAction( gg_trg_start_hash, function Trig_start_hash_Actions )
endfunction
function Trig_Setting_Skillsfor_AI_Actions takes nothing returns nothing
// global skills
call SaveIntegerBJ('A018', 1, 101, udg_Skills_list )
call SaveIntegerBJ('A019', 2, 101, udg_Skills_list )
call SaveIntegerBJ('A01A', 3, 101, udg_Skills_list )
// ---------------------------------------------------------------meele
// templar w
call SaveIntegerBJ( 1, 1, StringHashBJ(UnitId2StringBJ('H00O')), udg_Skills_list )
call SaveIntegerBJ('A06S', 1, 1, udg_Skills_list )
call SaveIntegerBJ('A01E', 2, 1, udg_Skills_list )
// phoenix w
call SaveIntegerBJ( 2, 1, StringHashBJ(UnitId2StringBJ('H02D')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 2, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 2, udg_Skills_list )
// dwarf w
call SaveIntegerBJ( 3, 1, StringHashBJ(UnitId2StringBJ('H00N')), udg_Skills_list )
call SaveIntegerBJ( 'A01B', 1, 3, udg_Skills_list )
call SaveIntegerBJ( 'A00T', 2, 3, udg_Skills_list )
// orc w
call SaveIntegerBJ( 4, 1, StringHashBJ(UnitId2StringBJ('O000')), udg_Skills_list )
call SaveIntegerBJ( 'A01D', 1, 4, udg_Skills_list )
call SaveIntegerBJ( 'A01C', 2, 4, udg_Skills_list )
// kobold w
call SaveIntegerBJ( 5, 1, StringHashBJ(UnitId2StringBJ('E00C')), udg_Skills_list )
call SaveIntegerBJ( 'A05A', 1, 5, udg_Skills_list )
call SaveIntegerBJ( 'A059', 2, 5, udg_Skills_list )
// vampire w
call SaveIntegerBJ( 6, 1, StringHashBJ(UnitId2StringBJ('U00V')), udg_Skills_list )
call SaveIntegerBJ( 'A038', 1, 6, udg_Skills_list )
call SaveIntegerBJ( 'AUcs', 2, 6, udg_Skills_list )
// skeleton w
call SaveIntegerBJ( 7, 1, StringHashBJ(UnitId2StringBJ('U011')), udg_Skills_list )
call SaveIntegerBJ( 'A03I', 1, 7, udg_Skills_list )
call SaveIntegerBJ( 'A03Z', 2, 7, udg_Skills_list )
// warden w
call SaveIntegerBJ( 8, 1, StringHashBJ(UnitId2StringBJ('E00G')), udg_Skills_list )
call SaveIntegerBJ( 'A06O', 1, 8, udg_Skills_list )
call SaveIntegerBJ( 'A087', 2, 8, udg_Skills_list )
// thief w
call SaveIntegerBJ( 9, 1, StringHashBJ(UnitId2StringBJ('H02A')), udg_Skills_list )
call SaveIntegerBJ( 'A0A0', 1, 9, udg_Skills_list )
call SaveIntegerBJ( 'A0A1', 2, 9, udg_Skills_list )
// troll w
call SaveIntegerBJ( 10, 1, StringHashBJ(UnitId2StringBJ('O00C')), udg_Skills_list )
call SaveIntegerBJ( 'A002', 1, 10, udg_Skills_list )
call SaveIntegerBJ( 'A07J', 2, 10, udg_Skills_list )
// ---------------------------------------------------------------ranged
// shooter w
call SaveIntegerBJ( 11, 1, StringHashBJ(UnitId2StringBJ('E00O')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 11, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 11, udg_Skills_list )
// hunter w
call SaveIntegerBJ( 12, 1, StringHashBJ(UnitId2StringBJ('E001')), udg_Skills_list )
call SaveIntegerBJ( 'A008', 1, 12, udg_Skills_list )
call SaveIntegerBJ( 'A00I', 2, 12, udg_Skills_list )
// sniper w
call SaveIntegerBJ( 13, 1, StringHashBJ(UnitId2StringBJ('E00L')), udg_Skills_list )
call SaveIntegerBJ( 'A0AK', 1, 13, udg_Skills_list )
call SaveIntegerBJ( 'A0AH', 2, 13, udg_Skills_list )
// blade w
call SaveIntegerBJ( 14, 1, StringHashBJ(UnitId2StringBJ('O00N')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 14, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 14, udg_Skills_list )
// sneak w
call SaveIntegerBJ( 15, 1, StringHashBJ(UnitId2StringBJ('H00E')), udg_Skills_list )
call SaveIntegerBJ( 'A08K', 1, 15, udg_Skills_list )
call SaveIntegerBJ( 'A08P', 2, 15, udg_Skills_list )
// succubus w
call SaveIntegerBJ( 16, 1, StringHashBJ(UnitId2StringBJ('E009')), udg_Skills_list )
call SaveIntegerBJ( 'A02C', 1, 16, udg_Skills_list )
call SaveIntegerBJ( 'A02Z', 2, 16, udg_Skills_list )
// reaver w
call SaveIntegerBJ( 17, 1, StringHashBJ(UnitId2StringBJ('E00B')), udg_Skills_list )
call SaveIntegerBJ( 'A03P', 1, 17, udg_Skills_list )
call SaveIntegerBJ( 'A03Q', 2, 17, udg_Skills_list )
// night w
call SaveIntegerBJ( 18, 1, StringHashBJ(UnitId2StringBJ('H00O')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 18, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 18, udg_Skills_list )
// slayer w
call SaveIntegerBJ( 19, 1, StringHashBJ(UnitId2StringBJ('H00O')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 19, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 19, udg_Skills_list )
// ravager w
call SaveIntegerBJ( 20, 1, StringHashBJ(UnitId2StringBJ('N02J')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 20, udg_Skills_list )
call SaveIntegerBJ( 'A011', 2, 20, udg_Skills_list )
// ---------------------------------------------------------------mage
// mage w
call SaveIntegerBJ( 21, 1, StringHashBJ(UnitId2StringBJ('H02M')), udg_Skills_list )
call SaveIntegerBJ( 'A08G', 1, 21, udg_Skills_list )
call SaveIntegerBJ( 'A08H', 2, 21, udg_Skills_list )
// sorceres w
call SaveIntegerBJ( 22, 1, StringHashBJ(UnitId2StringBJ('H02L')), udg_Skills_list )
call SaveIntegerBJ( 'A0A3', 1, 22, udg_Skills_list )
call SaveIntegerBJ( 'A06P', 2, 22, udg_Skills_list )
// explosive w
call SaveIntegerBJ( 23, 1, StringHashBJ(UnitId2StringBJ('N02S')), udg_Skills_list )
call SaveIntegerBJ( 'A0AB', 1, 23, udg_Skills_list )
call SaveIntegerBJ( 'A0A7', 2, 23, udg_Skills_list )
// lightning w
call SaveIntegerBJ( 24, 1, StringHashBJ(UnitId2StringBJ('O00B')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 24, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 24, udg_Skills_list )
// golem w
call SaveIntegerBJ( 25, 1, StringHashBJ(UnitId2StringBJ('N020')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 25, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 25, udg_Skills_list )
// vamp w
call SaveIntegerBJ( 26, 1, StringHashBJ(UnitId2StringBJ('H00W')), udg_Skills_list )
call SaveIntegerBJ( 'A04G', 1, 26, udg_Skills_list )
call SaveIntegerBJ( 'A04T', 2, 26, udg_Skills_list )
// lich w
call SaveIntegerBJ( 27, 1, StringHashBJ(UnitId2StringBJ('U01E')), udg_Skills_list )
call SaveIntegerBJ( 'A045', 1, 27, udg_Skills_list )
call SaveIntegerBJ( 'A047', 2, 27, udg_Skills_list )
// druid w
call SaveIntegerBJ( 28, 1, StringHashBJ(UnitId2StringBJ('E00F')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 28, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 28, udg_Skills_list )
// fallen w
call SaveIntegerBJ( 29, 1, StringHashBJ(UnitId2StringBJ('H02O')), udg_Skills_list )
call SaveIntegerBJ( 'A08X', 1, 29, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 29, udg_Skills_list )
// vudu w
call SaveIntegerBJ( 30, 1, StringHashBJ(UnitId2StringBJ('O00I')), udg_Skills_list )
call SaveIntegerBJ( 'A07P', 1, 30, udg_Skills_list )
call SaveIntegerBJ( 'A07S', 2, 30, udg_Skills_list )
// ---------------------------------------------------------------tank
// knight w
call SaveIntegerBJ( 31, 1, StringHashBJ(UnitId2StringBJ('H00Q')), udg_Skills_list )
call SaveIntegerBJ( 'A049', 1, 31, udg_Skills_list )
call SaveIntegerBJ( 'A04C', 2, 31, udg_Skills_list )
// bloody w
call SaveIntegerBJ( 32, 1, StringHashBJ(UnitId2StringBJ('H030')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 32, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 32, udg_Skills_list )
// thunder w
call SaveIntegerBJ(33, 1, StringHashBJ(UnitId2StringBJ('H02W')), udg_Skills_list )
call SaveIntegerBJ( 'A0AP', 1, 33, udg_Skills_list )
call SaveIntegerBJ( 'A0AQ', 2, 33, udg_Skills_list )
// chieftain w
call SaveIntegerBJ( 34, 1, StringHashBJ(UnitId2StringBJ('H02N')), udg_Skills_list )
call SaveIntegerBJ( 'A08C', 1, 34, udg_Skills_list )
call SaveIntegerBJ( 'A08E', 2, 34, udg_Skills_list )
// ogre w
call SaveIntegerBJ( 35, 1, StringHashBJ(UnitId2StringBJ('O00D')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 35, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 35, udg_Skills_list )
// dark w
call SaveIntegerBJ( 36, 1, StringHashBJ(UnitId2StringBJ('U01G')), udg_Skills_list )
call SaveIntegerBJ( 'A04R', 1, 36, udg_Skills_list )
call SaveIntegerBJ( 'S002', 2, 36, udg_Skills_list )
// ghoul w
call SaveIntegerBJ( 37, 1, StringHashBJ(UnitId2StringBJ('U01A')), udg_Skills_list )
call SaveIntegerBJ( 'A03V', 1, 37, udg_Skills_list )
call SaveIntegerBJ( 'A04F', 2, 37, udg_Skills_list )
// huntress w
call SaveIntegerBJ( 38, 1, StringHashBJ(UnitId2StringBJ('E00K')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 38, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 38, udg_Skills_list )
// bandit w
call SaveIntegerBJ( 39, 1, StringHashBJ(UnitId2StringBJ('H02S')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 39, udg_Skills_list )
call SaveIntegerBJ( 'A08V', 2, 39, udg_Skills_list )
// berserk w
call SaveIntegerBJ( 40, 1, StringHashBJ(UnitId2StringBJ('O00K')), udg_Skills_list )
call SaveIntegerBJ( 'A06S', 1, 40, udg_Skills_list )
call SaveIntegerBJ( 'A01E', 2, 40, udg_Skills_list )
endfunction
//===========================================================================
function InitTrig_Setting_Skills takes nothing returns nothing
set gg_trg_Setting_Skills = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_Setting_Skills, 1.00 )
call TriggerAddAction( gg_trg_Setting_Skills, function Trig_Setting_Skillsfor_AI_Actions )
endfunction
function Trig_Selecting_race_Conditions takes nothing returns boolean
return GetUnitTypeId(GetManipulatingUnit()) == 'e00D'
endfunction
function Trig_Selecting_race_Func004002002 takes nothing returns boolean
return ( R2I(GetItemLifeBJ(GetFilterItem())) == udg_Race[GetConvertedPlayerId(udg_Player_Race)] )
endfunction
function Trig_Selecting_race_Actions takes nothing returns nothing
local location newpoint
call DisableTrigger( gg_trg_Tank_mode )
call DisableTrigger( gg_trg_Mage_mode )
call DisableTrigger( gg_trg_Melee_mode )
call DisableTrigger( gg_trg_Range_mode )
set udg_Player_Race = GetOwningPlayer(GetManipulatingUnit())
set udg_Race[GetConvertedPlayerId(udg_Player_Race)] = R2I(GetItemLifeBJ(GetManipulatedItem()))
set udg_Player_ready[GetConvertedPlayerId(udg_Player_Race)] = true
set udg_Selected_item = RandomItemInRectBJ(gg_rct_itemsRects, Condition(function Trig_Selecting_race_Func004002002))
call DisplayTextToForce( GetPlayersEnemies(udg_Player_Race), ( ( udg_Player_color[GetConvertedPlayerId(udg_Player_Race)] + GetItemName(udg_Selected_item) ) + ( " Empire|r is here commanded by " + ( ( udg_Player_color[GetConvertedPlayerId(udg_Player_Race)] + GetPlayerName(udg_Player_Race) ) + "|r" ) ) ) )
call RemoveItem( udg_Selected_item )
call RemoveUnit( GetManipulatingUnit() )
set newpoint = GetRectCenter(udg_actualbound[GetConvertedPlayerId(udg_Player_Race)])
call CreateNUnitsAtLoc( 1, udg_Shop_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_buy_shop )
set udg_buildingpoint = OffsetLocation(newpoint, 0.00, 700.00)
call CreateNUnitsAtLoc( 1, udg_Tech_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_buildingpoint, bj_UNIT_FACING )
call SaveUnitHandleBJ( GetLastCreatedUnit(), 1, GetConvertedPlayerId(udg_Player_Race), udg_ST )
call RemoveLocation(udg_buildingpoint)
set udg_buildingpoint = OffsetLocation(newpoint, -450.00, 350.00)
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_buildingpoint, bj_UNIT_FACING )
call SelectUnitForPlayerSingle( GetLastCreatedUnit(), udg_Player_Race )
call RemoveLocation(udg_buildingpoint)
call CreateNUnitsAtLoc( 1, 'h007', udg_Player_Race, newpoint, bj_UNIT_FACING )
call UnitAddItemByIdSwapped( 'I001', GetLastCreatedUnit() )
call UnitAddItemByIdSwapped( 'amrc', GetLastCreatedUnit() )
call UnitAddItemByIdSwapped( 'whwd', GetLastCreatedUnit() )
if (udg_melee_on == true) then
call CreateNUnitsAtLoc( 8, udg_Mele_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnomelee )
elseif (udg_range_on == true) then
call CreateNUnitsAtLoc( 8, udg_Range_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnorange )
elseif (udg_mage_on == true) then
call CreateNUnitsAtLoc( 8, udg_Mage_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnomage )
elseif (udg_tank_on == true) then
call CreateNUnitsAtLoc( 8, udg_Tank_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnotank )
else
call CreateNUnitsAtLoc( 5, udg_Mele_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call CreateNUnitsAtLoc( 2, udg_Range_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
call CreateNUnitsAtLoc( 1, udg_Mage_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, newpoint, bj_UNIT_FACING )
endif
call RemoveLocation(newpoint)
call ResetToGameCameraForPlayer( udg_Player_Race, 0 )
call PanCameraToTimedLocForPlayer( udg_Player_Race, GetPlayerStartLocationLoc(udg_Player_Race), 1.00 )
endfunction
//===========================================================================
function InitTrig_Selecting_race takes nothing returns nothing
set gg_trg_Selecting_race = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Selecting_race, EVENT_PLAYER_UNIT_PICKUP_ITEM )
call TriggerAddCondition( gg_trg_Selecting_race, Condition( function Trig_Selecting_race_Conditions ) )
call TriggerAddAction( gg_trg_Selecting_race, function Trig_Selecting_race_Actions )
endfunction
function filterpr takes nothing returns boolean
return ( GetOwningPlayer(GetFilterUnit()) == udg_Player_Race )
endfunction
function slotON takes nothing returns boolean
return (( udg_Player_ready[udg_Cont_ai] == false ) and (GetPlayerSlotState(ConvertedPlayer(udg_Cont_ai)) == PLAYER_SLOT_STATE_PLAYING))
endfunction
function RemoveG takes nothing returns nothing
call RemoveUnit( GetEnumUnit() )
endfunction
function RemoveIT takes nothing returns nothing
call RemoveItem( GetEnumItem() )
endfunction
function Trig_StartingAI_Actions takes nothing returns nothing
set udg_Cont_ai = 1
loop
exitwhen udg_Cont_ai > 8
if (slotON()) then
set udg_Player_Race = ConvertedPlayer(udg_Cont_ai)
set udg_Ai_item = RandomItemInRectSimpleBJ(gg_rct_itemsRects)
set udg_Race[GetConvertedPlayerId(udg_Player_Race)] = R2I(GetItemLifeBJ(udg_Ai_item))
set udg_Ai_raceUnits = GetUnitsInRectMatching(gg_rct_RaceRect, Condition(function filterpr))
call RemoveUnit( GroupPickRandomUnit(udg_Ai_raceUnits) )
set udg_Player_ready[GetConvertedPlayerId(udg_Player_Race)] = true
call DestroyGroup (udg_Ai_raceUnits)
call DisplayTextToForce( GetPlayersEnemies(udg_Player_Race), ( ( udg_Player_color[GetConvertedPlayerId(udg_Player_Race)] + GetItemName(udg_Ai_item) ) + ( " Empire|r is here commanded by " + ( ( udg_Player_color[GetConvertedPlayerId(udg_Player_Race)] + GetPlayerName(udg_Player_Race) ) + "|r" ) ) ) )
call RemoveItem( udg_Ai_item )
set udg_new_point = GetRectCenter(udg_actualbound[GetConvertedPlayerId(udg_Player_Race)])
call CreateNUnitsAtLoc( 1, udg_Shop_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_buy_shop )
set udg_buildingpoint = OffsetLocation(udg_new_point, 0.00, 700.00)
call CreateNUnitsAtLoc( 1, udg_Tech_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_buildingpoint, bj_UNIT_FACING )
call SaveUnitHandleBJ( GetLastCreatedUnit(), 1, GetConvertedPlayerId(udg_Player_Race), udg_ST )
call RemoveLocation(udg_buildingpoint)
set udg_buildingpoint = OffsetLocation(udg_new_point, -450.00, 350.00)
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_buildingpoint, bj_UNIT_FACING )
call RemoveLocation(udg_buildingpoint)
call CreateNUnitsAtLoc( 1, 'h007', udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call UnitAddItemByIdSwapped( 'I001', GetLastCreatedUnit() )
call UnitAddItemByIdSwapped( 'amrc', GetLastCreatedUnit() )
call UnitAddItemByIdSwapped( 'whwd', GetLastCreatedUnit() )
if (udg_melee_on == true) then
call CreateNUnitsAtLoc( 8, udg_Mele_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnomelee )
elseif (udg_range_on == true) then
call CreateNUnitsAtLoc( 8, udg_Range_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnorange )
elseif (udg_mage_on == true) then
call CreateNUnitsAtLoc( 8, udg_Mage_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnomage )
elseif (udg_tank_on == true) then
call CreateNUnitsAtLoc( 8, udg_Tank_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call TriggerExecute( gg_trg_disnotank )
else
call CreateNUnitsAtLoc( 5, udg_Mele_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call CreateNUnitsAtLoc( 2, udg_Range_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
call CreateNUnitsAtLoc( 1, udg_Mage_Unit[udg_Race[GetConvertedPlayerId(udg_Player_Race)]], udg_Player_Race, udg_new_point, bj_UNIT_FACING )
endif
call RemoveLocation(udg_new_point)
call ResetToGameCameraForPlayer( udg_Player_Race, 0 )
call PanCameraToTimedLocForPlayer( udg_Player_Race, GetPlayerStartLocationLoc(udg_Player_Race), 1.00 )
call TriggerSleepAction( 0.50 )
else
endif
set udg_Cont_ai = udg_Cont_ai + 1
endloop
call DisableTrigger( gg_trg_Tank_mode )
call DisableTrigger( gg_trg_Mage_mode )
call DisableTrigger( gg_trg_Melee_mode )
call DisableTrigger( gg_trg_Range_mode )
call TriggerSleepAction( 5.00 )
set udg_Unitstoremove = GetUnitsInRectAll(gg_rct_RaceRect)
call ForGroupBJ( udg_Unitstoremove, function RemoveG )
call DestroyGroup (udg_Unitstoremove)
call EnumItemsInRectBJ( gg_rct_itemsRects, function RemoveIT )
if (GetTriggerExecCount(gg_trg_StartingAI) == 1) then
call TriggerExecute( gg_trg_detect_AI )
endif
endfunction
//===========================================================================
function InitTrig_StartingAI takes nothing returns nothing
set gg_trg_StartingAI = CreateTrigger( )
call TriggerRegisterTimerExpireEventBJ( gg_trg_StartingAI, udg_Init_timer )
call TriggerAddAction( gg_trg_StartingAI, function Trig_StartingAI_Actions )
endfunction
function Trig_infonovice_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for melee unit at: |cffffcc004 Kills - 8 Kills - 16 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for ranged unit at: |cffffcc006 Kills - 12 Kills - 20 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for tank units at: |cffffcc008 Kills - 16 Kills - 24 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Fortress Income: " + "|cffffcc0015|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Stronghold Income: " + "|cffffcc0030|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Castle Income: " + "|cffffcc0060|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infonovice takes nothing returns nothing
set gg_trg_infonovice = CreateTrigger( )
call DisableTrigger( gg_trg_infonovice )
call TriggerAddAction( gg_trg_infonovice, function Trig_infonovice_Actions )
endfunction
function Trig_infowarrior_Actions takes nothing returns nothing
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Upgrades for melee unit at: |cffffcc008 Kills - 16 Kills - 24 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Setting upgrades for ranged unit to: |cffffcc0012 Kills - 24 Kills - 32 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Setting upgrades for tank units to: |cffffcc0014 Kills - 28 Kills - 36 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Fortress Income: " + "|cffffcc008|r Gold" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Stronghold Income: " + "|cffffcc0022|r Gold" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Castle Income: " + "|cffffcc0036|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infowarrior takes nothing returns nothing
set gg_trg_infowarrior = CreateTrigger( )
call DisableTrigger( gg_trg_infowarrior )
call TriggerAddAction( gg_trg_infowarrior, function Trig_infowarrior_Actions )
endfunction
function Trig_infowarlord_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for melee unit to: |cffffcc006 Kills - 16 Kills - 36 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for ranged unit to: |cffffcc008 Kills - 20 Kills - 40 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for tank units to: |cffffcc0014 Kills - 28 Kills - 46 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Fortress Income: " + "|cffffcc006|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Stronghold Income: " + "|cffffcc0016|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Castle Income: " + "|cffffcc0024|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infowarlord takes nothing returns nothing
set gg_trg_infowarlord = CreateTrigger( )
call DisableTrigger( gg_trg_infowarlord )
call TriggerAddAction( gg_trg_infowarlord, function Trig_infowarlord_Actions )
endfunction
function Trig_Melee_mode_Conditions takes nothing returns boolean
return ( TimerGetElapsed(udg_unitmode) < 15 )
endfunction
function Trig_Melee_mode_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call AdjustPlayerStateBJ( 300, ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD )
set c = c + 1
endloop
set c = 0
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_5944" )
set udg_melee_on = true
call DisableTrigger( GetTriggeringTrigger() )
call DisableTrigger( gg_trg_Tank_mode )
call DisableTrigger( gg_trg_Mage_mode )
call DisableTrigger( gg_trg_Range_mode )
endfunction
//===========================================================================
function InitTrig_Melee_mode takes nothing returns nothing
set gg_trg_Melee_mode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Melee_mode, Player(0), "-MM", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Melee_mode, Player(0), "-MELEE", false )
call TriggerAddCondition( gg_trg_Melee_mode, Condition( function Trig_Melee_mode_Conditions ) )
call TriggerAddAction( gg_trg_Melee_mode, function Trig_Melee_mode_Actions )
endfunction
function Trig_disnomelee_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call SetPlayerTechMaxAllowedSwap( udg_Mage_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Range_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Tank_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Siege_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Flyng_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
set c = c + 1
endloop
set c = 0
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_disnomelee takes nothing returns nothing
set gg_trg_disnomelee = CreateTrigger( )
call TriggerAddAction( gg_trg_disnomelee, function Trig_disnomelee_Actions )
endfunction
function Trig_Range_mode_Conditions takes nothing returns boolean
return ( TimerGetElapsed(udg_unitmode) < 15 )
endfunction
function Trig_Range_mode_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call AdjustPlayerStateBJ( 300, ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD )
set c = c + 1
endloop
set c = 0
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_5943" )
set udg_range_on = true
call DisableTrigger( GetTriggeringTrigger() )
call DisableTrigger( gg_trg_Tank_mode )
call DisableTrigger( gg_trg_Mage_mode )
call DisableTrigger( gg_trg_Melee_mode )
endfunction
//===========================================================================
function InitTrig_Range_mode takes nothing returns nothing
set gg_trg_Range_mode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Range_mode, Player(0), "-RM", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Range_mode, Player(0), "-RANGE", false )
call TriggerAddCondition( gg_trg_Range_mode, Condition( function Trig_Range_mode_Conditions ) )
call TriggerAddAction( gg_trg_Range_mode, function Trig_Range_mode_Actions )
endfunction
function onrange takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call SetPlayerTechMaxAllowedSwap( udg_Mele_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Mage_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Tank_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Siege_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Flyng_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
set c = c + 1
endloop
set c = 0
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_disnorange takes nothing returns nothing
set gg_trg_disnorange = CreateTrigger( )
call TriggerAddAction( gg_trg_disnorange, function onrange )
endfunction
function Trig_Mage_mode_Conditions takes nothing returns boolean
return ( TimerGetElapsed(udg_unitmode) < 15 )
endfunction
function Trig_Mage_mode_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call AdjustPlayerStateBJ( 590, ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD )
set c = c + 1
endloop
set c = 0
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_5942" )
set udg_mage_on = true
call DisableTrigger( GetTriggeringTrigger() )
call DisableTrigger( gg_trg_Tank_mode )
call DisableTrigger( gg_trg_Range_mode )
call DisableTrigger( gg_trg_Melee_mode )
endfunction
//===========================================================================
function InitTrig_Mage_mode takes nothing returns nothing
set gg_trg_Mage_mode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Mage_mode, Player(0), "-MG", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Mage_mode, Player(0), "-MAGIC", false )
call TriggerAddCondition( gg_trg_Mage_mode, Condition( function Trig_Mage_mode_Conditions ) )
call TriggerAddAction( gg_trg_Mage_mode, function Trig_Mage_mode_Actions )
endfunction
function onmage takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call SetPlayerTechMaxAllowedSwap( udg_Mele_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Range_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Tank_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Siege_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Flyng_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
set c = c + 1
endloop
call DisableTrigger( GetTriggeringTrigger() )
set c = 0
endfunction
//===========================================================================
function InitTrig_disnomage takes nothing returns nothing
set gg_trg_disnomage = CreateTrigger( )
call TriggerAddAction( gg_trg_disnomage, function onmage )
endfunction
function Trig_Tank_mode_Conditions takes nothing returns boolean
return ( TimerGetElapsed(udg_unitmode) < 15 )
endfunction
function Trig_Tank_mode_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call AdjustPlayerStateBJ( 1850, ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD )
set c = c + 1
endloop
set c = 0
call DisplayTextToForce( GetPlayersAll(), "|cffffcc00Tank mode enabled:|r 1850 gold are added to all players")
set udg_tank_on = true
call DisableTrigger( GetTriggeringTrigger() )
call DisableTrigger( gg_trg_Mage_mode )
call DisableTrigger( gg_trg_Range_mode )
call DisableTrigger( gg_trg_Melee_mode )
endfunction
//===========================================================================
function InitTrig_Tank_mode takes nothing returns nothing
set gg_trg_Tank_mode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Tank_mode, Player(0), "-TM", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Tank_mode, Player(0), "-TANK", false )
call TriggerAddCondition( gg_trg_Tank_mode, Condition( function Trig_Tank_mode_Conditions ) )
call TriggerAddAction( gg_trg_Tank_mode, function Trig_Tank_mode_Actions )
endfunction
function ontank takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
call SetPlayerTechMaxAllowedSwap( udg_Mele_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Mage_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Range_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Siege_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
call SetPlayerTechMaxAllowedSwap( udg_Flyng_Unit[udg_Race[GetConvertedPlayerId(ConvertedPlayer(c))]], 0, ConvertedPlayer(c) )
set c = c + 1
endloop
call DisableTrigger( GetTriggeringTrigger() )
set c = 0
endfunction
//===========================================================================
function InitTrig_disnotank takes nothing returns nothing
set gg_trg_disnotank = CreateTrigger( )
call TriggerAddAction( gg_trg_disnotank, function ontank )
endfunction
function Trig_Novicemode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_Novicemode_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has Selected/Defaulted |cff7777aaNovice Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Novice Mode"
set udg_Novice_On = true
set udg_Warrior_on = false
set udg_Warlord_on = false
// Switching Constants conditions
call SaveIntegerBJ( 6, 1, 1, udg_ModeC )
call SaveIntegerBJ( 12, 2, 1, udg_ModeC )
call SaveIntegerBJ( 24, 3, 1, udg_ModeC )
call SaveIntegerBJ( 10, 1, 2, udg_ModeC )
call SaveIntegerBJ( 20, 2, 2, udg_ModeC )
call SaveIntegerBJ( 30, 3, 2, udg_ModeC )
call SaveIntegerBJ( 8, 1, 3, udg_ModeC )
call SaveIntegerBJ( 16, 2, 3, udg_ModeC )
call SaveIntegerBJ( 28, 3, 3, udg_ModeC )
call SaveIntegerBJ( 12, 1, 4, udg_ModeC )
call SaveIntegerBJ( 24, 2, 4, udg_ModeC )
call SaveIntegerBJ( 32, 3, 4, udg_ModeC )
set udg_Castle_mode_value = 60
set udg_Stronghold_mode_Value = 30
set udg_fortress_mode_value = 15
set udg_gmode = gg_trg_infonovice
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_Novicemode takes nothing returns nothing
set gg_trg_Novicemode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Novicemode, Player(0), "-novice", true )
call TriggerAddCondition( gg_trg_Novicemode, Condition( function Trig_Novicemode_Conditions ) )
call TriggerAddAction( gg_trg_Novicemode, function Trig_Novicemode_Actions )
endfunction
function Trig_Warriormode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_Warriormode_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has selected |cffffcc00Warrior Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Warrior Mode"
set udg_Novice_On = false
set udg_Warrior_on = true
set udg_Warlord_on = false
// Switching Constants conditions
call SaveIntegerBJ( 8, 1, 1, udg_ModeC )
call SaveIntegerBJ( 16, 2, 1, udg_ModeC )
call SaveIntegerBJ( 24, 3, 1, udg_ModeC )
call SaveIntegerBJ( 12, 1, 2, udg_ModeC )
call SaveIntegerBJ( 24, 2, 2, udg_ModeC )
call SaveIntegerBJ( 32, 3, 2, udg_ModeC )
call SaveIntegerBJ( 12, 1, 3, udg_ModeC )
call SaveIntegerBJ( 22, 2, 3, udg_ModeC )
call SaveIntegerBJ( 34, 3, 3, udg_ModeC )
call SaveIntegerBJ( 14, 1, 4, udg_ModeC )
call SaveIntegerBJ( 28, 2, 4, udg_ModeC )
call SaveIntegerBJ( 36, 3, 4, udg_ModeC )
set udg_Castle_mode_value = 36
set udg_Stronghold_mode_Value = 22
set udg_fortress_mode_value = 8
set udg_gmode = gg_trg_infowarrior
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_Warriormode takes nothing returns nothing
set gg_trg_Warriormode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Warriormode, Player(0), "-warrior", true )
call TriggerAddCondition( gg_trg_Warriormode, Condition( function Trig_Warriormode_Conditions ) )
call TriggerAddAction( gg_trg_Warriormode, function Trig_Warriormode_Actions )
endfunction
function Trig_WarlordMode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_WarlordMode_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has selected |cffff0000Warlord Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Warlord Mode"
set udg_Novice_On = false
set udg_Warrior_on = false
set udg_Warlord_on = true
// Switching Constants conditions
call SaveIntegerBJ( 10, 1, 1, udg_ModeC )
call SaveIntegerBJ( 20, 2, 1, udg_ModeC )
call SaveIntegerBJ( 30, 3, 1, udg_ModeC )
call SaveIntegerBJ( 12, 1, 2, udg_ModeC )
call SaveIntegerBJ( 24, 2, 2, udg_ModeC )
call SaveIntegerBJ( 36, 3, 2, udg_ModeC )
call SaveIntegerBJ( 14, 1, 3, udg_ModeC )
call SaveIntegerBJ( 24, 2, 3, udg_ModeC )
call SaveIntegerBJ( 32, 3, 3, udg_ModeC )
call SaveIntegerBJ( 14, 1, 4, udg_ModeC )
call SaveIntegerBJ( 28, 2, 4, udg_ModeC )
call SaveIntegerBJ( 46, 3, 4, udg_ModeC )
set udg_Castle_mode_value = 24
set udg_Stronghold_mode_Value = 16
set udg_fortress_mode_value = 6
set udg_gmode = gg_trg_infowarlord
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_WarlordMode takes nothing returns nothing
set gg_trg_WarlordMode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_WarlordMode, Player(0), "-warlord", true )
call TriggerAddCondition( gg_trg_WarlordMode, Condition( function Trig_WarlordMode_Conditions ) )
call TriggerAddAction( gg_trg_WarlordMode, function Trig_WarlordMode_Actions )
endfunction
function Trig_timerturno_Actions takes nothing returns nothing
set udg_Timer_turno = ( udg_Timer_turno - 1 )
if ( udg_Timer_turno == 0 ) then
set udg_Timer_turno = 20
set udg_turno = ( udg_turno + 1 )
endif
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 1, ( udg_player_online + 5 ), ( "|cffffcc00Turn: " + ( I2S(udg_turno) + " - ends in:|r" ) ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 2, ( udg_player_online + 5 ), I2S(udg_Timer_turno) )
endfunction
//===========================================================================
function InitTrig_timerturno takes nothing returns nothing
set gg_trg_timerturno = CreateTrigger( )
call DisableTrigger( gg_trg_timerturno )
call TriggerRegisterTimerEventPeriodic( gg_trg_timerturno, 1.00 )
call TriggerAddAction( gg_trg_timerturno, function Trig_timerturno_Actions )
endfunction
function Trig_get_vampire_Func001002002 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) == 'n025' )
endfunction
function Trig_get_vampire_Actions takes nothing returns nothing
set udg_vampire_group = GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function Trig_get_vampire_Func001002002))
if ( IsUnitGroupEmptyBJ(udg_vampire_group) == false ) then
set udg_vampire_unit = GroupPickRandomUnit(udg_vampire_group)
call EnableTrigger( gg_trg_daytime )
call EnableTrigger( gg_trg_nighttime )
call DestroyGroup(udg_vampire_group)
else
call DestroyGroup(udg_vampire_group)
endif
endfunction
//===========================================================================
function InitTrig_get_vampire takes nothing returns nothing
set gg_trg_get_vampire = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_get_vampire, 80.00 )
call TriggerAddAction( gg_trg_get_vampire, function Trig_get_vampire_Actions )
endfunction
function Trig_actualiza_Actions takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
set udg_builds[c] = ( CountLivingPlayerUnitsOfTypeId(udg_Main_build[udg_Race[c]], ConvertedPlayer(c)) + CountLivingPlayerUnitsOfTypeId(udg_Fupgrade_build[udg_Race[c]], ConvertedPlayer(c)) + CountLivingPlayerUnitsOfTypeId(udg_Supgrade_build[udg_Race[c]], ConvertedPlayer(c)))
set c = c + 1
endloop
set c = 1
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 5, 2, ( "|cffff0000Emblems left:" + ( I2S(R2I(( 4.00 - udg_victory_R ))) + "|r" ) ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 5, ( udg_TyrForces + 3 ), ( "|cffffff00Emblems left:" + ( I2S(R2I(( 4.00 - udg_victory_B ))) + "|r" ) ) )
loop
exitwhen c > udg_TyrForces
call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, ( c + 2 ), udg_Iconpatch[udg_Race[GetConvertedPlayerId(udg_tyr_player[c])]] )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 1, ( c + 2 ), ( ( ( "- " + udg_Player_color[c] ) + GetPlayerName(udg_tyr_player[c]) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 2, ( c + 2 ), ( ( "|cffff0000" + I2S(GetPlayerScore(udg_tyr_player[c], PLAYER_SCORE_UNITS_KILLED)) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 3, ( c + 2 ), ( ( "|cff7777aa" + I2S(udg_builds[GetConvertedPlayerId(udg_tyr_player[c])]) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 4, ( c + 2 ), ( ( "|cffffcc00" + I2S(GetPlayerState(udg_tyr_player[c], PLAYER_STATE_RESOURCE_GOLD)) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 5, ( c + 2 ), ( ( udg_Player_color[GetConvertedPlayerId(udg_tyr_player[c])] + udg_Player_rank[GetConvertedPlayerId(udg_tyr_player[c])] ) + "|r" ) )
set c = c + 1
endloop
set c = 1
loop
exitwhen c > udg_EbonyForces
set udg_Ebony_inc = ( c + ( udg_TyrForces + 1 ) )
call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, ( udg_Ebony_inc + 2 ), udg_Iconpatch[udg_Race[GetConvertedPlayerId(udg_Ebony_player[c])]] )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 1, ( udg_Ebony_inc + 2 ), ( ( ( "- " + udg_Player_color[GetConvertedPlayerId(udg_Ebony_player[c])] ) + GetPlayerName(udg_Ebony_player[c]) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 2, ( udg_Ebony_inc + 2 ), ( ( "|cffff0000" + I2S(GetPlayerScore(udg_Ebony_player[c], PLAYER_SCORE_UNITS_KILLED)) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 3, ( udg_Ebony_inc + 2 ), ( ( "|cff7777aa" + I2S(udg_builds[GetConvertedPlayerId(udg_Ebony_player[c])]) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 4, ( udg_Ebony_inc + 2 ), ( ( "|cffffcc00" + I2S(GetPlayerState(udg_Ebony_player[c], PLAYER_STATE_RESOURCE_GOLD)) ) + "|r" ) )
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 5, ( udg_Ebony_inc + 2 ), ( ( udg_Player_color[GetConvertedPlayerId(udg_Ebony_player[c])] + udg_Player_rank[GetConvertedPlayerId(udg_Ebony_player[c])] ) + "|r" ) )
set c = c + 1
endloop
endfunction
//===========================================================================
function InitTrig_actualiza takes nothing returns nothing
set gg_trg_actualiza = CreateTrigger( )
call DisableTrigger( gg_trg_actualiza )
call TriggerRegisterTimerEventPeriodic( gg_trg_actualiza, 1.00 )
call TriggerAddAction( gg_trg_actualiza, function Trig_actualiza_Actions )
endfunction
function Trig_builder_Actions takes nothing returns nothing
call CreateNUnitsAtLoc( 1, 'u01Y', Player(0), GetCameraTargetPositionLoc(), bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 5.00, 'BTLF', GetLastCreatedUnit() )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "humanbuild" )
call IssueBuildOrderByIdLocBJ( GetLastCreatedUnit(), udg_Otbuild[GetRandomInt(1, 10)], GetUnitLoc(GetLastCreatedUnit()) )
endfunction
//===========================================================================
function InitTrig_builder takes nothing returns nothing
set gg_trg_builder = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_builder, Player(0), "-build", true )
call TriggerAddAction( gg_trg_builder, function Trig_builder_Actions )
endfunction
function Trig_abretunel_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A017'
endfunction
function Trig_abretunel_Func004002 takes nothing returns nothing
set udg_ExitTunnel_unit[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetEnumUnit()
endfunction
function Trig_abretunel_Actions takes nothing returns nothing
set udg_Tunnel_on[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = true
call TriggerSleepAction( 0.10 )
set udg_Temp_group1 = GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetSpellAbilityUnit()), 'n011')
call ForGroupBJ( udg_Temp_group1, function Trig_abretunel_Func004002 )
call DestroyGroup(udg_Temp_group1)
endfunction
//===========================================================================
function InitTrig_abretunel takes nothing returns nothing
set gg_trg_abretunel = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_abretunel, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_abretunel, Condition( function Trig_abretunel_Conditions ) )
call TriggerAddAction( gg_trg_abretunel, function Trig_abretunel_Actions )
endfunction
function Trig_entratunel_Conditions takes nothing returns boolean
return udg_Tunnel_on[GetConvertedPlayerId(GetOwningPlayer(GetEnteringUnit()))] == true
endfunction
function Trig_entratunel_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(udg_ExitTunnel_unit[GetConvertedPlayerId(GetOwningPlayer(GetEnteringUnit()))])
call SetUnitPositionLocFacingBJ( GetEnteringUnit(), udg_temp_point, -45.00 )
call IssuePointOrderLocBJ( GetEnteringUnit(), "attack", OffsetLocation(udg_temp_point, 250.00, -250.00) )
call RemoveLocation(udg_temp_point)
endfunction
//===========================================================================
function InitTrig_entratunel takes nothing returns nothing
set gg_trg_entratunel = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel1 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel2 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel3 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel4 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel5 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel6 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel7 )
call TriggerRegisterEnterRectSimple( gg_trg_entratunel, gg_rct_Tunel8 )
call TriggerAddCondition( gg_trg_entratunel, Condition( function Trig_entratunel_Conditions ) )
call TriggerAddAction( gg_trg_entratunel, function Trig_entratunel_Actions )
endfunction
function Trig_cierratunnel_Conditions takes nothing returns boolean
return ( GetDyingUnit() == udg_ExitTunnel_unit[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))] )
endfunction
function Trig_cierratunnel_Actions takes nothing returns nothing
set udg_Tunnel_on[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))] = false
endfunction
//===========================================================================
function InitTrig_cierratunnel takes nothing returns nothing
set gg_trg_cierratunnel = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_cierratunnel, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_cierratunnel, Condition( function Trig_cierratunnel_Conditions ) )
call TriggerAddAction( gg_trg_cierratunnel, function Trig_cierratunnel_Actions )
endfunction
//TESH.scrollpos=-1
//TESH.alwaysfold=0
function TMC takes nothing returns boolean
return GetKillingUnitBJ()!= GetDyingUnit()
endfunction
function TMA takes nothing returns nothing
local unit k = GetKillingUnitBJ()
local texttag t=CreateTextTagUnitBJ("MASSIVE KILL +5kp", k, 0, 14.00, 100.00, 0.00, 0.00, 100.00 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(2)
call DestroyTextTag(t)
set k = null
endfunction
//===========================================================================
function InitTrig_MK takes nothing returns nothing
set gg_trg_MK = CreateTrigger( )
call TriggerAddCondition( gg_trg_MK, Condition( function TMC ) )
call TriggerAddAction( gg_trg_MK, function TMA )
endfunction
function Tpillage takes nothing returns nothing
local unit k = udg_pillager
local texttag t=CreateTextTagUnitBJ("PILLAGE!", k, 0, 14.00, 70.00, 0.00, 0.00, 100.00 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(2)
call DestroyTextTag(t)
set k = null
endfunction
//===========================================================================
function InitTrig_Ptext takes nothing returns nothing
set gg_trg_Ptext = CreateTrigger( )
call TriggerAddAction( gg_trg_Ptext, function Tpillage )
endfunction
function Trig_Build_resources_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ( ( "+ " + I2S(( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / 10 )) ), GetDyingUnit(), 0, 8, 100, 100, 25, 15 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_Build_resources takes nothing returns nothing
set gg_trg_Build_resources = CreateTrigger( )
call TriggerAddAction( gg_trg_Build_resources, function Trig_Build_resources_Actions )
endfunction
function Trig_Thief_Conditions takes nothing returns boolean
return ((GetUnitTypeId(GetAttacker()) == 'n028' ) and (IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == false) and (GetOwningPlayer(GetAttackedUnitBJ()) != GetOwningPlayer(GetAttacker())) and (IsPlayerAlly(GetOwningPlayer(GetAttackedUnitBJ()), GetOwningPlayer(GetAttacker())) == false))
endfunction
function Trig_Thief_Func003C takes nothing returns boolean
return (( udg_thief_gold_A == 5 ) or (udg_thief_gold_A == 6 ))
endfunction
function Trig_Thief_Func004C takes nothing returns boolean
return udg_thief_kp_A == 7
endfunction
function Trig_Thief_Actions takes nothing returns nothing
set udg_thief_gold_A = GetRandomInt(1, 14)
set udg_thief_kp_A = GetRandomInt(1, 30)
if ( Trig_Thief_Func003C() ) then
call TriggerExecute( gg_trg_Thief_Gold )
call AdjustPlayerStateBJ( GetUnitLevel(GetAttackedUnitBJ()), GetOwningPlayer(GetAttacker()), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( 0 - GetUnitLevel(GetAttackedUnitBJ()) ), GetOwningPlayer(GetAttackedUnitBJ()), PLAYER_STATE_RESOURCE_GOLD )
endif
if ( Trig_Thief_Func004C() ) then
call TriggerExecute( gg_trg_Thief_Kp )
call AdjustPlayerStateBJ( GetUnitLevel(GetAttackedUnitBJ()), GetOwningPlayer(GetAttacker()), PLAYER_STATE_RESOURCE_LUMBER )
call AdjustPlayerStateBJ( ( 0 - GetUnitLevel(GetAttackedUnitBJ()) ), GetOwningPlayer(GetAttackedUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endif
set udg_thief_gold_A = 0
set udg_thief_kp_A = 0
endfunction
//===========================================================================
function InitTrig_Thief takes nothing returns nothing
set gg_trg_Thief = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Thief, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Thief, Condition( function Trig_Thief_Conditions ) )
call TriggerAddAction( gg_trg_Thief, function Trig_Thief_Actions )
endfunction
function Trig_Thief_Gold_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ( ( "-" + I2S(GetUnitLevel(GetAttackedUnitBJ())) + "g" ), GetAttackedUnitBJ(), 0, 9.00, 100, 100, 10.00, 0 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_Thief_Gold takes nothing returns nothing
set gg_trg_Thief_Gold = CreateTrigger( )
call TriggerAddAction( gg_trg_Thief_Gold, function Trig_Thief_Gold_Actions )
endfunction
function Trig_Mtrust_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ( ( "-" + I2S(R2I(udg_Mtrustt))), GetSpellTargetUnit(), 0, 18.00, 100, 10, 10.00, 0 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_Mtrust_text takes nothing returns nothing
set gg_trg_Mtrust_text = CreateTrigger( )
call TriggerAddAction( gg_trg_Mtrust_text, function Trig_Mtrust_Actions )
endfunction
function Trig_Thief_Kp_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ( ( "-" + I2S(GetUnitLevel(GetAttackedUnitBJ())) + "kp"), GetAttackedUnitBJ(), 0, 9.00, 100, 10, 100.00, 0 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_Thief_Kp takes nothing returns nothing
set gg_trg_Thief_Kp = CreateTrigger( )
call TriggerAddAction( gg_trg_Thief_Kp, function Trig_Thief_Kp_Actions )
endfunction
function Clear takes integer unitdata, integer killer_temp, integer looping, integer dtrange, integer loadtype, integer loadint, integer rank, string loadstr, unit k, unit d returns nothing
set unitdata = 0
set killer_temp = 0
set looping = 0
set dtrange = 0
set loadtype = 0
set loadint = 0
set rank = 0
set loadstr = null
set k = null
set d = null
endfunction
function UPC takes nothing returns boolean
return IsUnitType(GetKillingUnitBJ(), UNIT_TYPE_HERO) == false
endfunction
function UPA takes nothing returns nothing
local unit k = GetKillingUnitBJ()
local unit d = GetDyingUnit()
local boolean tpe1 = false
local boolean tpe2 = false
local boolean tpe3 = false
local boolean tpe4 = false
local boolean hav1 = false
local boolean hav2 = false
local boolean hav3 = false
local boolean hav4 = false
local boolean ck1 = false
local boolean ck2 = false
local boolean ck3 = false
local texttag t = null
local integer unitdata = 0
local integer killer_temp = 0
local integer looping = 1
local integer dtrange = 0
local integer loadtype = 0
local integer loadint = 0
local integer rank = 0
local string loadstr = null
local location newpoint
local integer innateid
local integer floop
set innateid = LoadIntegerBJ(1, GetHandleIdBJ(k), udg_Innate_Ability)
if ( GetOwningPlayer(k) == GetOwningPlayer(d) ) then
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
call RemoveLocation(newpoint)
return
elseif ( IsPlayerAlly(GetOwningPlayer(k), GetOwningPlayer(d)) == true ) then
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
call RemoveLocation(newpoint)
return
elseif ( IsUnitType(GetKillingUnitBJ(), UNIT_TYPE_STRUCTURE) == true ) then
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
call RemoveLocation(newpoint)
return
endif
set killer_temp = ( GetUnitUserData(k) + GetUnitFoodUsed(d))
call SetUnitUserData( k, killer_temp )
if ( GetUnitUserData(k) >= 3 ) and ( GetUnitUserData(k) < 12 ) then
call UnitAddAbilityBJ( 'S000', k )
elseif ( GetUnitUserData(k) >= 12 ) and ( GetUnitUserData(k) < 36 ) then
call SetUnitAbilityLevelSwapped( 'S000', k, 2 )
elseif ( GetUnitUserData(k) >= 36 ) and ( GetUnitUserData(k) < 80 ) then
call SetUnitAbilityLevelSwapped( 'S000',k, 3 )
elseif ( GetUnitUserData(k) >= 80 ) then
call SetUnitAbilityLevelSwapped( 'S000', k, 4 )
endif
set dtrange = LoadIntegerBJ(1, StringHashBJ(UnitId2StringBJ(GetUnitTypeId(k))), udg_Load_U)
set loadstr = LoadStringBJ(1, dtrange, udg_Save_U)
set tpe1 = ( dtrange > 0 ) and ( dtrange < 31 )
set tpe2 = ( dtrange > 30 ) and ( dtrange < 61 )
set tpe3 = ( dtrange > 60 ) and ( dtrange < 91 )
set tpe4 = ( dtrange > 90 ) and ( dtrange < 121 )
if ( tpe1 == true ) then
set loadtype = 1
set loadint = dtrange
elseif ( tpe2 == true ) then
set loadtype = 2
set loadint = ( dtrange - 30 )
elseif ( tpe3 == true ) then
set loadtype = 3
set loadint = ( dtrange - 60 )
elseif ( tpe4 == true ) then
set loadtype = 4
set loadint = ( dtrange - 90 )
endif
set ck1 = (loadint < 11)
set ck2 = ( loadint > 10 ) and ( loadint < 21)
set ck3 = ( loadint > 20 ) and ( loadint < 31)
if ( ck1 == true ) then
set rank = 3
elseif ( ck2 == true ) then
set rank = 1
elseif ( ck3 == true ) then
set rank = 2
endif
set unitdata = LoadIntegerBJ(rank, loadtype, udg_ModeC)
if ( unitdata == 0 ) then
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
call RemoveLocation(newpoint)
return
endif
if ( GetUnitUserData(k) >= unitdata ) then
if ( rank == 3 ) then
set hav1 = ( loadtype == 1) and ( udg_Have_meleeW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav2 = ( loadtype == 2) and ( udg_Have_rangeW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav3 = ( loadtype == 3) and ( udg_Have_mageW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav4 = ( loadtype == 4) and ( udg_Have_tankW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
if (hav1 == true) or (hav2 == true) or (hav3 == true) or (hav4 == true) then
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
call RemoveLocation(newpoint)
return
else
set floop = 1
loop
exitwhen floop > 6
call UnitRemoveItemFromSlotSwapped( floop, k )
set floop = floop + 1
endloop
if (loadtype == 1) then
set udg_Have_meleeW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 2) then
set udg_Have_rangeW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 3) then
set udg_Have_mageW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 4) then
set udg_Have_tankW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
endif
endif
endif
set t = CreateTextTagUnitBJ( I2S(GetUnitUserData(k))+"/"+I2S(unitdata) , k, 0, 9.00, 100.00, 100.00, 100.00, 15.00 )
call SetTextTagVelocityBJ(t,64,90)
set newpoint = GetUnitLoc(k)
if ( IsUnitInGroup(k, udg_Grupo_rescate) == true ) then
call GroupRemoveUnitSimple(k, udg_Grupo_rescate )
endif
call GroupRemoveUnitSimple(k, udg_Innate_group[innateid])
call FlushChildHashtableBJ( GetHandleIdBJ(k), udg_Innate_Ability )
call RemoveUnit( k )
call CreateNUnitsAtLoc( 1, String2UnitIdBJ(loadstr), GetOwningPlayer(k), newpoint, bj_UNIT_FACING )
call UnitAddAbilityBJ( udg_Innate[innateid],GetLastCreatedUnit())
call UnitAddAbilityBJ( udg_fake_innate[innateid],GetLastCreatedUnit())
call SaveIntegerBJ( innateid, 1, GetHandleIdBJ(GetLastCreatedUnit()), udg_Innate_Ability )
call AddSpecialEffectLocBJ( newpoint, udg_UP_effect[udg_Race[GetConvertedPlayerId(GetOwningPlayer(k))]] )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(newpoint)
if ( GetPlayerController(GetOwningPlayer(GetLastCreatedUnit())) == MAP_CONTROL_COMPUTER ) then
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetPlayerStartLocationLoc(GetOwningPlayer(GetLastCreatedUnit())) )
endif
else
set t = CreateTextTagUnitBJ( I2S(GetUnitUserData(k))+"/"+I2S(unitdata) , k, 0, 9.00, 100.00, 50.00, 50.00, 35.00 )
call SetTextTagVelocityBJ(t,64,90)
endif
call PolledWait(1)
call DestroyTextTag(t)
call Clear(unitdata,killer_temp,looping,dtrange,loadtype,loadint,rank,loadstr,k,d)
endfunction
//===========================================================================
function InitTrig_UP takes nothing returns nothing
set gg_trg_UP = CreateTrigger( )
call DisableTrigger( gg_trg_UP )
call TriggerRegisterAnyUnitEventBJ( gg_trg_UP, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_UP, Condition( function UPC ) )
call TriggerAddAction( gg_trg_UP, function UPA )
endfunction
function RCVC takes nothing returns boolean
local unit d = GetDyingUnit()
local integer dtrange = 0
local integer loadtype = 0
local integer loadint = 0
local boolean b1
local boolean b2
local boolean b3
local boolean b4
local boolean c1
local boolean c2
local boolean c3
set dtrange = LoadIntegerBJ(1, StringHashBJ(UnitId2StringBJ(GetUnitTypeId(d))), udg_Load_U)
set b1 = ( dtrange > 0 ) and ( dtrange < 31 )
set b2 = ( dtrange > 30 ) and ( dtrange < 61 )
set b3 = ( dtrange > 60 ) and ( dtrange < 91 )
set b4 = ( dtrange > 90 ) and ( dtrange < 121 )
if ( b1 == true ) then
set loadtype = 1
set loadint = dtrange
elseif ( b2 == true ) then
set loadtype = 2
set loadint = ( dtrange - 30 )
elseif ( b3 == true ) then
set loadtype = 3
set loadint = ( dtrange - 60 )
elseif ( b4 == true ) then
set loadtype = 4
set loadint = ( dtrange - 90 )
endif
set c1 = ( loadint > 0 ) and ( loadint < 11)
set c2 = ( loadint > 10 ) and ( loadint < 21)
set c3 = ( loadint > 20 ) and ( loadint < 31)
if ( c1 == true ) then
set d = null
set dtrange = 0
set loadint = 0
set loadtype = 0
return true
elseif ( c2 == true ) then
set d = null
set dtrange = 0
set loadint = 0
set loadtype = 0
return false
elseif ( c3 == true ) then
set d = null
set dtrange = 0
set loadint = 0
set loadtype = 0
return true
endif
set d = null
set dtrange = 0
set loadint = 0
set loadtype = 0
return false
endfunction
function RCVA takes nothing returns nothing
local unit d = GetDyingUnit()
local integer n = GetConvertedPlayerId(GetOwningPlayer(d))
local group g = GetUnitsOfPlayerAndTypeId(GetOwningPlayer(d), 'h03B')
local unit m = GroupPickRandomUnit(g)
local integer stock = LoadIntegerBJ(n,StringHashBJ(UnitId2StringBJ(GetUnitTypeId(d))), udg_ST)
if not (m == null) then
set stock = stock + 1
call RemoveUnitFromStockBJ( GetUnitTypeId(d), m )
call AddUnitToStockBJ( GetUnitTypeId(d), m, stock, stock)
call SaveIntegerBJ( stock,n,StringHashBJ(UnitId2StringBJ(GetUnitTypeId(d))), udg_ST )
endif
set d = null
set m = null
set stock = 0
set n = 0
call DestroyGroup(g)
endfunction
//===========================================================================
function InitTrig_RCV takes nothing returns nothing
set gg_trg_RCV = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_RCV, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_RCV, Condition( function RCVC ) )
call TriggerAddAction( gg_trg_RCV, function RCVA )
endfunction
function BURC takes nothing returns boolean
return GetUnitTypeId(GetSellingUnit()) == 'h03B'
endfunction
function BURA takes nothing returns nothing
local unit s = GetSellingUnit()
local integer n = GetConvertedPlayerId(GetOwningPlayer(s))
local unit l = GetSoldUnit()
local integer stock = LoadIntegerBJ(n,StringHashBJ(UnitId2StringBJ(GetUnitTypeId(l))),udg_ST)
set stock = stock - 1
if ( stock < 1) then
call RemoveUnitFromStockBJ( GetUnitTypeId(l), s )
call SaveIntegerBJ( stock,n,StringHashBJ(UnitId2StringBJ(GetUnitTypeId(l))), udg_ST )
else
call RemoveUnitFromStockBJ( GetUnitTypeId(l), s )
call AddUnitToStockBJ( GetUnitTypeId(l), s, stock, stock)
call SaveIntegerBJ( stock,n, StringHashBJ(UnitId2StringBJ(GetUnitTypeId(l))), udg_ST )
endif
set s = null
set l = null
set stock = 0
set n = 0
endfunction
//===========================================================================
function InitTrig_BUR takes nothing returns nothing
set gg_trg_BUR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_BUR, EVENT_PLAYER_UNIT_SELL )
call TriggerAddCondition( gg_trg_BUR, Condition( function BURC ) )
call TriggerAddAction( gg_trg_BUR, function BURA )
endfunction
function TGRA takes nothing returns nothing
local integer ca = 1
local integer cb = 1
local unit u = null
local boolean array tr
loop
exitwhen ca > 3
set tr[ca] = false
set ca = ca + 1
endloop
loop
exitwhen cb > 8
set tr[1] = GetPlayerState(ConvertedPlayer(cb), PLAYER_STATE_RESOURCE_FOOD_CAP) > 99
set tr[2] = GetPlayerScore(ConvertedPlayer(cb), PLAYER_SCORE_UNITS_KILLED) > 59
set tr[3] = udg_TGR[cb] == false
if (tr[1]==true) and (tr[2]==true) and (tr[3]==true) then
set u = LoadUnitHandleBJ(1, cb, udg_ST)
call UnitAddAbilityBJ( 'A0AD', u )
set udg_TGR[GetConvertedPlayerId(ConvertedPlayer(cb))] = true
call QuestMessageBJ( GetForceOfPlayer(ConvertedPlayer(cb)), bj_QUESTMESSAGE_COMPLETED, udg_TGE )
endif
set cb = cb + 1
endloop
set ca = 0
set cb = 0
set u = null
endfunction
//===========================================================================
function InitTrig_TGR takes nothing returns nothing
set gg_trg_TGR = CreateTrigger( )
call TriggerAddAction( gg_trg_TGR, function TGRA )
endfunction
function TGSC takes nothing returns boolean
return GetUnitTypeId(GetSellingUnit()) == 'n031'
endfunction
function TGSE takes nothing returns nothing
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "chest", GetEnumUnit(), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl" ))
endfunction
function TGSA takes nothing returns nothing
local unit u = GetSoldUnit()
local location p = GetUnitLoc(GetSellingUnit())
local group g
call SetUnitOwner( u, Player(PLAYER_NEUTRAL_AGGRESSIVE), true )
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "chest", u, "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl" ))
set g = CreateNUnitsAtLoc( 11, GetUnitTypeId(u), Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
call ForGroupBJ( g, function TGSE )
call RemoveLocation(p)
call DestroyGroup(g)
set u = null
endfunction
//===========================================================================
function InitTrig_TGS takes nothing returns nothing
set gg_trg_TGS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_TGS, EVENT_PLAYER_UNIT_SELL )
call TriggerAddCondition( gg_trg_TGS, Condition( function TGSC) )
call TriggerAddAction( gg_trg_TGS, function TGSA )
endfunction
function Trig_owningbuild_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 1.00 ) or ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 2.00 ) or ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 3.00 ))
endfunction
function Trig_owningbuild_Func002001 takes nothing returns boolean
return ( GetPlayerController(GetOwningPlayer(GetKillingUnitBJ())) == MAP_CONTROL_COMPUTER )
endfunction
function Trig_owningbuild_Func003001 takes nothing returns boolean
return ( GetPlayerSlotState(GetOwningPlayer(GetKillingUnitBJ())) == PLAYER_SLOT_STATE_LEFT )
endfunction
function Trig_owningbuild_Func005Func001Func001C takes nothing returns boolean
return GetUnitDefaultAcquireRange(GetDyingUnit()) == 3.00
endfunction
function Trig_owningbuild_Func005Func001C takes nothing returns boolean
return GetUnitDefaultAcquireRange(GetDyingUnit()) == 2.00
endfunction
function Trig_owningbuild_Func005C takes nothing returns boolean
return GetUnitDefaultAcquireRange(GetDyingUnit()) == 1.00
endfunction
function Trig_owningbuild_Actions takes nothing returns nothing
local location p
call TriggerExecute( gg_trg_Build_resources )
if ( Trig_owningbuild_Func002001() ) then
return
endif
if ( Trig_owningbuild_Func003001() ) then
return
endif
set p = GetUnitLoc(GetDyingUnit())
if ( Trig_owningbuild_Func005C() ) then
call CreateNUnitsAtLoc( 1, udg_owned_Main[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], GetOwningPlayer(GetKillingUnitBJ()), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 45.00, 'BTLF', GetLastCreatedUnit() )
call SavePlayerHandleBJ(GetOwningPlayer(GetDyingUnit()),1,GetHandleIdBJ(GetLastCreatedUnit()),udg_Ownhash)
call RemoveLocation(p)
else
if ( Trig_owningbuild_Func005Func001C() ) then
call CreateNUnitsAtLoc( 1, udg_owned_second[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], GetOwningPlayer(GetKillingUnitBJ()), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 45.00, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(p)
call SavePlayerHandleBJ(GetOwningPlayer(GetDyingUnit()),1,GetHandleIdBJ(GetLastCreatedUnit()),udg_Ownhash)
else
if ( Trig_owningbuild_Func005Func001Func001C() ) then
call CreateNUnitsAtLoc( 1, udg_owned_third[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], GetOwningPlayer(GetKillingUnitBJ()), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 45.00, 'BTLF', GetLastCreatedUnit() )
call SavePlayerHandleBJ(GetOwningPlayer(GetDyingUnit()),1,GetHandleIdBJ(GetLastCreatedUnit()),udg_Ownhash)
call RemoveLocation(p)
endif
endif
endif
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / 10 ), GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / -20 ), GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD )
endfunction
//===========================================================================
function InitTrig_owningbuild takes nothing returns nothing
set gg_trg_owningbuild = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_owningbuild, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_owningbuild, Condition( function Trig_owningbuild_Conditions ) )
call TriggerAddAction( gg_trg_owningbuild, function Trig_owningbuild_Actions )
endfunction
function Trig_Pillage_A_Conditions takes nothing returns boolean
return ( GetUnitDefaultAcquireRange(GetSpellAbilityUnit()) == 10 )
endfunction
function Trig_Pillage_A_Func006Func001C takes nothing returns boolean
return udg_Ability_temp == 'A065'
endfunction
function Trig_Pillage_A_Func006C takes nothing returns boolean
return udg_Ability_temp == 'A00W'
endfunction
function Trig_Pillage_A_Actions takes nothing returns nothing
local player A = LoadPlayerHandleBJ(1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_Ownhash)
local location p = GetUnitLoc(GetSpellAbilityUnit())
call ClearSelectionForPlayer( GetOwningPlayer(GetSpellAbilityUnit()) )
set udg_Builder_temp = GetSpellAbilityUnit()
set udg_Ability_temp = GetSpellAbilityId()
call TriggerSleepAction( 0.10 )
if ( Trig_Pillage_A_Func006C() ) then
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(udg_Builder_temp))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
call RemoveLocation(p)
set udg_pillager = GetLastCreatedUnit()
call TriggerExecute( gg_trg_Ptext )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / 20), GetOwningPlayer(udg_Builder_temp), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / -20), A, PLAYER_STATE_RESOURCE_GOLD )
else
if ( Trig_Pillage_A_Func006Func001C() ) then
call RemoveLocation(p)
return
endif
call RemoveLocation(p)
endif
call RemoveUnit( udg_Builder_temp )
set A = null
endfunction
//===========================================================================
function InitTrig_Pillage_A takes nothing returns nothing
set gg_trg_Pillage_A = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_A, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_A, Condition( function Trig_Pillage_A_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_A, function Trig_Pillage_A_Actions )
endfunction
function Trig_Pillage_B_Conditions takes nothing returns boolean
return GetUnitDefaultAcquireRange(GetSpellAbilityUnit()) == 11.00
endfunction
function Trig_Pillage_B_Func007Func001C takes nothing returns boolean
return udg_Ability_temp == 'A065'
endfunction
function Trig_Pillage_B_Func007C takes nothing returns boolean
return udg_Ability_temp == 'A00X'
endfunction
function Trig_Pillage_B_Actions takes nothing returns nothing
local player A = LoadPlayerHandleBJ(1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_Ownhash)
local location p = GetUnitLoc(GetSpellAbilityUnit())
call ClearSelectionForPlayer( GetOwningPlayer(GetSpellAbilityUnit()) )
set udg_Builder_temp = GetSpellAbilityUnit()
set udg_Ability_temp = GetSpellAbilityId()
call TriggerSleepAction( 0.10 )
if ( Trig_Pillage_B_Func007C() ) then
call CreateNUnitsAtLoc( 1, udg_Fupgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(udg_Builder_temp))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / 20), GetOwningPlayer(udg_Builder_temp), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / -20), A, PLAYER_STATE_RESOURCE_GOLD )
call RemoveLocation(p)
set udg_pillager = GetLastCreatedUnit()
call TriggerExecute( gg_trg_Ptext )
else
if ( Trig_Pillage_B_Func007Func001C() ) then
call RemoveLocation(p)
return
else
endif
call RemoveLocation(p)
endif
call RemoveUnit( udg_Builder_temp )
set A = null
endfunction
//===========================================================================
function InitTrig_Pillage_B takes nothing returns nothing
set gg_trg_Pillage_B = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_B, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_B, Condition( function Trig_Pillage_B_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_B, function Trig_Pillage_B_Actions )
endfunction
function Trig_Pillage_C_Conditions takes nothing returns boolean
return ( GetUnitDefaultAcquireRange(GetSpellAbilityUnit()) == 12.00 )
endfunction
function Trig_Pillage_C_Func007Func001C takes nothing returns boolean
return udg_Ability_temp == 'A065'
endfunction
function Trig_Pillage_C_Func007C takes nothing returns boolean
return udg_Ability_temp == 'A00Z'
endfunction
function Trig_Pillage_C_Actions takes nothing returns nothing
local player A = LoadPlayerHandleBJ(1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_Ownhash)
local location p = GetUnitLoc(GetSpellAbilityUnit())
call ClearSelectionForPlayer( GetOwningPlayer(GetSpellAbilityUnit()) )
set udg_Builder_temp = GetSpellAbilityUnit()
set udg_Ability_temp = GetSpellAbilityId()
call TriggerSleepAction( 0.10 )
if ( Trig_Pillage_C_Func007C() ) then
call CreateNUnitsAtLoc( 1, udg_Supgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(udg_Builder_temp))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
set udg_pillager = GetLastCreatedUnit()
call TriggerExecute( gg_trg_Ptext )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / 20), GetOwningPlayer(udg_Builder_temp), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( (GetPlayerState(A, PLAYER_STATE_RESOURCE_GOLD) / -20), A, PLAYER_STATE_RESOURCE_GOLD )
call RemoveLocation(p)
else
if ( Trig_Pillage_C_Func007Func001C() ) then
call RemoveLocation(p)
return
else
endif
call RemoveLocation(p)
endif
call RemoveUnit( udg_Builder_temp )
set A = null
endfunction
//===========================================================================
function InitTrig_Pillage_C takes nothing returns nothing
set gg_trg_Pillage_C = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_C, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_C, Condition( function Trig_Pillage_C_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_C, function Trig_Pillage_C_Actions )
endfunction
function Trig_AutorebuildA_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 10 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildA_Actions takes nothing returns nothing
local location d = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), d, bj_UNIT_FACING )
call RemoveLocation(d)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Ownhash )
endfunction
//===========================================================================
function InitTrig_AutorebuildA takes nothing returns nothing
set gg_trg_AutorebuildA = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildA, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildA, Condition( function Trig_AutorebuildA_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildA, function Trig_AutorebuildA_Actions )
endfunction
function Trig_AutorebuildB_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 11.00 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildB_Actions takes nothing returns nothing
local location p = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Fupgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
call RemoveLocation(p)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Ownhash )
endfunction
//===========================================================================
function InitTrig_AutorebuildB takes nothing returns nothing
set gg_trg_AutorebuildB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildB, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildB, Condition( function Trig_AutorebuildB_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildB, function Trig_AutorebuildB_Actions )
endfunction
function Trig_AutorebuildC_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 12.00 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildC_Actions takes nothing returns nothing
local location q = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Supgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), q, bj_UNIT_FACING )
call RemoveLocation(q)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Ownhash )
endfunction
//===========================================================================
function InitTrig_AutorebuildC takes nothing returns nothing
set gg_trg_AutorebuildC = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildC, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildC, Condition( function Trig_AutorebuildC_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildC, function Trig_AutorebuildC_Actions )
endfunction
function Trig_Autodestroy_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A065'
endfunction
function Trig_Autodestroy_Actions takes nothing returns nothing
local location p = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLoc( 1, 'u003', GetOwningPlayer(GetSpellAbilityUnit()), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "attack", GetSpellAbilityUnit() )
call RemoveLocation(p)
call FlushChildHashtableBJ( GetHandleIdBJ(GetSpellAbilityUnit()), udg_Ownhash )
endfunction
//===========================================================================
function InitTrig_Autodestroy takes nothing returns nothing
set gg_trg_Autodestroy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Autodestroy, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Autodestroy, Condition( function Trig_Autodestroy_Conditions ) )
call TriggerAddAction( gg_trg_Autodestroy, function Trig_Autodestroy_Actions )
endfunction
function Trig_Debbuger_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_5933" )
endfunction
//===========================================================================
function InitTrig_Debbuger takes nothing returns nothing
set gg_trg_Debbuger = CreateTrigger( )
call TriggerAddAction( gg_trg_Debbuger, function Trig_Debbuger_Actions )
endfunction
function SEA takes nothing returns nothing
local integer ca = 1
local integer cb = 1
local unit u = null
loop
exitwhen ca > 5
set udg_settlevent[ca] = false
set ca = ca + 1
endloop
loop
exitwhen cb > 8
set udg_settlevent[1] = not(udg_hasst[GetConvertedPlayerId(ConvertedPlayer(cb))])
set udg_Temp_group1 = GetUnitsOfPlayerAndTypeId(ConvertedPlayer(cb), udg_Fupgrade_build[udg_Race[cb]])
set udg_settlevent[2] = (CountUnitsInGroup(udg_Temp_group1) > 0)
call DestroyGroup(udg_Temp_group1)
set udg_Temp_group1 = GetUnitsOfPlayerAndTypeId(ConvertedPlayer(cb), udg_Supgrade_build[udg_Race[cb]])
set udg_settlevent[3] = ( CountUnitsInGroup(udg_Temp_group1) > 0 )
call DestroyGroup(udg_Temp_group1)
set udg_Temp_group1 = GetUnitsOfPlayerAndTypeId(ConvertedPlayer(cb), udg_Tower_build[udg_Race[cb]])
set udg_settlevent[4] = ( CountUnitsInGroup(udg_Temp_group1) > 4 )
call DestroyGroup(udg_Temp_group1)
set udg_Temp_group1 = GetUnitsOfPlayerAndTypeId(ConvertedPlayer(cb), udg_Main_build[udg_Race[cb]])
set udg_settlevent[5] = ( CountUnitsInGroup(udg_Temp_group1) > 2 )
call DestroyGroup(udg_Temp_group1)
if (udg_settlevent[1]==true) and (udg_settlevent[2]==true) and (udg_settlevent[3]==true) and (udg_settlevent[4]==true) and (udg_settlevent[5]==true) then
set u = LoadUnitHandleBJ(1, cb, udg_ST)
call UnitAddAbilityBJ( 'A0AC', u )
set udg_hasst[GetConvertedPlayerId(ConvertedPlayer(cb))] = true
call QuestMessageBJ( GetForceOfPlayer(ConvertedPlayer(cb)), bj_QUESTMESSAGE_COMPLETED, udg_STE )
endif
set cb = cb + 1
endloop
set ca = 0
set cb = 0
set u = null
endfunction
//===========================================================================
function InitTrig_SE takes nothing returns nothing
set gg_trg_SE = CreateTrigger( )
call TriggerAddAction( gg_trg_SE, function SEA )
endfunction
function TXC takes nothing returns boolean
return udg_hidetax[GetConvertedPlayerId(GetTriggerPlayer())] == true
endfunction
function TXA takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
set udg_tax1[c] = ( CountLivingPlayerUnitsOfTypeId(udg_Main_build[udg_Race[c]], ConvertedPlayer(c)) * udg_fortress_mode_value )
set udg_tax2[c] = ( CountLivingPlayerUnitsOfTypeId(udg_Fupgrade_build[udg_Race[c]], ConvertedPlayer(c)) * udg_Stronghold_mode_Value )
set udg_tax3[c] = ( CountLivingPlayerUnitsOfTypeId(udg_Supgrade_build[udg_Race[c]], ConvertedPlayer(c)) * udg_Castle_mode_value )
set udg_actual_income[c] = ( udg_tax1[c] + ( udg_tax2[c] + udg_tax3[c] ) )
call AdjustPlayerStateBJ( udg_actual_income[c], ConvertedPlayer(c), PLAYER_STATE_RESOURCE_GOLD )
if ( TXC() ) then
else
set udg_tpg = GetForceOfPlayer(ConvertedPlayer(c))
call DisplayTextToForce( udg_tpg, ( "Incoming gold: |cffccff00+" + ( I2S(udg_actual_income[c]) + "|r" ) ) )
call DestroyForce( udg_tpg)
endif
set c = c + 1
endloop
set c = 0
call PlaySoundBJ( gg_snd_ReceiveGold )
call TriggerExecute( gg_trg_actualiza )
call TriggerExecute( gg_trg_SE )
call TriggerExecute( gg_trg_TGR )
endfunction
//===========================================================================
function InitTrig_taxing takes nothing returns nothing
set gg_trg_taxing = CreateTrigger( )
call DisableTrigger( gg_trg_taxing )
call TriggerRegisterTimerEventPeriodic( gg_trg_taxing, 20.00 )
call TriggerAddAction( gg_trg_taxing, function TXA )
endfunction
function TXAn takes nothing returns nothing
set udg_tax1[9] = ( CountLivingPlayerUnitsOfTypeId(udg_Main_build[udg_Race[9]], ConvertedPlayer(PLAYER_NEUTRAL_AGGRESSIVE)) * udg_fortress_mode_value )
set udg_tax2[9] = ( CountLivingPlayerUnitsOfTypeId(udg_Fupgrade_build[udg_Race[9]], ConvertedPlayer(PLAYER_NEUTRAL_AGGRESSIVE)) * udg_Stronghold_mode_Value )
set udg_tax3[9] = ( CountLivingPlayerUnitsOfTypeId(udg_Supgrade_build[udg_Race[9]], ConvertedPlayer(PLAYER_NEUTRAL_AGGRESSIVE)) * udg_Castle_mode_value )
set udg_actual_income[9] = ( udg_tax1[9] + ( udg_tax2[9] + udg_tax3[9] ) )
call AdjustPlayerStateBJ( udg_actual_income[9], ConvertedPlayer(PLAYER_NEUTRAL_AGGRESSIVE), PLAYER_STATE_RESOURCE_GOLD )
endfunction
//===========================================================================
function InitTrig_Tax_Neutral takes nothing returns nothing
set gg_trg_Tax_Neutral = CreateTrigger( )
call DisableTrigger( gg_trg_Tax_Neutral )
call TriggerRegisterTimerEventPeriodic( gg_trg_Tax_Neutral, 20.00 )
call TriggerAddAction( gg_trg_Tax_Neutral, function TXAn )
endfunction
function Trig_Innate_Actions takes nothing returns nothing
local integer r = GetRandomInt(1, 3)
local integer i
if ( r == 2 ) then
set i = GetRandomInt(1, 9)
call UnitAddAbilityBJ( udg_Innate[i], GetTrainedUnit() )
call UnitAddAbilityBJ( udg_fake_innate[i], GetTrainedUnit() )
call GroupAddUnitSimple( GetTrainedUnit(), udg_Innate_group[i] )
call SaveIntegerBJ( i, 1, GetHandleIdBJ(GetTrainedUnit()), udg_Innate_Ability )
endif
set r = 0
set i = 0
endfunction
//===========================================================================
function InitTrig_Innate takes nothing returns nothing
set gg_trg_Innate = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Innate, EVENT_PLAYER_UNIT_TRAIN_FINISH )
call TriggerAddAction( gg_trg_Innate, function Trig_Innate_Actions )
endfunction
function Trig_Ar_mode_Conditions takes nothing returns boolean
return ( udg_setting_on == true )
endfunction
function Trig_Ar_mode_Actions takes nothing returns nothing
call TriggerExecute( gg_trg_StartingAI )
endfunction
//===========================================================================
function InitTrig_Ar_mode takes nothing returns nothing
set gg_trg_Ar_mode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Ar_mode, Player(0), "-AR", false )
call TriggerAddCondition( gg_trg_Ar_mode, Condition( function Trig_Ar_mode_Conditions ) )
call TriggerAddAction( gg_trg_Ar_mode, function Trig_Ar_mode_Actions )
endfunction
function Trig_droped_item_Func002002002 takes nothing returns boolean
return ( UnitInventorySizeBJ(GetFilterUnit()) == 6 )
endfunction
function Trig_droped_item_Func003A takes nothing returns nothing
set udg_temp_unit = GetEnumUnit()
if ( UnitHasItem(udg_temp_unit, udg_D_item) == true ) then
call GroupRemoveUnitSimple( udg_temp_unit, udg_DIgroup[1] )
else
call GroupRemoveUnitSimple( udg_temp_unit, udg_DIgroup[1] )
call IssueTargetItemOrder( udg_temp_unit, "smart", udg_D_item )
endif
endfunction
function Trig_droped_item_Actions takes nothing returns nothing
set udg_D_item = RandomItemInRectSimpleBJ(GetPlayableMapRect())
set udg_DIgroup[1] = GetUnitsOfPlayerMatching(udg_Player_Ai[GetRandomInt(1, udg_player_count)], Condition(function Trig_droped_item_Func002002002))
call ForGroupBJ( udg_DIgroup[1], function Trig_droped_item_Func003A )
set udg_temp_unit = null
set udg_D_item = null
call DestroyGroup (udg_DIgroup[1])
endfunction
//===========================================================================
function InitTrig_droped_item takes nothing returns nothing
set gg_trg_droped_item = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_droped_item, 30.00 )
call TriggerAddAction( gg_trg_droped_item, function Trig_droped_item_Actions )
endfunction
function Trig_deadvamp_Conditions takes nothing returns boolean
return ( GetUnitTypeId(GetDyingUnit()) == 'H00W' )
endfunction
function Trig_deadvamp_Actions takes nothing returns nothing
call PlaySoundOnUnitBJ( gg_snd_BansheeDeath, 100, GetDyingUnit() )
endfunction
//===========================================================================
function InitTrig_deadvamp takes nothing returns nothing
set gg_trg_deadvamp = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_deadvamp, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_deadvamp, Condition( function Trig_deadvamp_Conditions ) )
call TriggerAddAction( gg_trg_deadvamp, function Trig_deadvamp_Actions )
endfunction
function EBA takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
set udg_muerte[c] = 0.00
set c = c + 1
endloop
set c = 0
endfunction
//===========================================================================
function InitTrig_EB takes nothing returns nothing
set gg_trg_EB = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_EB, 2.00 )
call TriggerAddAction( gg_trg_EB, function EBA )
endfunction
function MBC takes nothing returns boolean
return GetUnitTypeId(GetDyingUnit()) != 'u020'
endfunction
function MBA takes nothing returns nothing
set udg_muerte[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = udg_muerte[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + 1
if udg_muerte[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] == 7 then
call PlaySoundBJ( gg_snd_laught )
call AdjustPlayerStateBJ( 5, Player(GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))), PLAYER_STATE_RESOURCE_LUMBER )
call TriggerExecute( gg_trg_MK )
endif
endfunction
//===========================================================================
function InitTrig_MB takes nothing returns nothing
set gg_trg_MB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MB, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_MB, Condition( function MBC ) )
call TriggerAddAction( gg_trg_MB, function MBA )
endfunction
function DSA takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 9
if ( IsUnitInGroup(GetDyingUnit(), udg_Innate_group[c]) == true ) then
call GroupRemoveUnitSimple( GetDyingUnit(), udg_Innate_group[c] )
endif
set c = c + 1
endloop
set c = 0
endfunction
//===========================================================================
function InitTrig_Dies takes nothing returns nothing
set gg_trg_Dies = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Dies, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_Dies, function DSA )
endfunction
function Trig_Settleof_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A0AC' )
endfunction
function Trig_Settleof_Actions takes nothing returns nothing
call UnitRemoveAbilityBJ( 'A0AC', GetSpellAbilityUnit() )
call EnableTrigger( gg_trg_RCV )
endfunction
//===========================================================================
function InitTrig_Settleof takes nothing returns nothing
set gg_trg_Settleof = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Settleof, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Settleof, Condition( function Trig_Settleof_Conditions ) )
call TriggerAddAction( gg_trg_Settleof, function Trig_Settleof_Actions )
endfunction
function Trig_Trainingodd_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A0AD' )
endfunction
function Trig_Trainingodd_Actions takes nothing returns nothing
call UnitRemoveAbilityBJ( 'A0AD', GetSpellAbilityUnit() )
endfunction
//===========================================================================
function InitTrig_Trainingodd takes nothing returns nothing
set gg_trg_Trainingodd = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Trainingodd, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Trainingodd, Condition( function Trig_Trainingodd_Conditions ) )
call TriggerAddAction( gg_trg_Trainingodd, function Trig_Trainingodd_Actions )
endfunction
function Trig_FR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 25 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ))
endfunction
function Trig_FR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_FR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_FR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_warrior
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Warrior|r" )
if ( Trig_FR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + " Great Warrior|r" )
call AdjustPlayerStateBJ( 5, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_FR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "First Warrior|r" )
call AdjustPlayerStateBJ( 10, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + "|r just become " ) + udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) )
call AdjustPlayerStateBJ( 40, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_FR takes nothing returns nothing
set gg_trg_FR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_FR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_FR, Condition( function Trig_FR_Conditions ) )
call TriggerAddAction( gg_trg_FR, function Trig_FR_Actions )
endfunction
function Trig_SR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 60 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ))
endfunction
function Trig_SR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_SR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_SR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_master
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Master|r" )
if ( Trig_SR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "High Master|r" )
call AdjustPlayerStateBJ( 12, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_SR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Great Master|r" )
call AdjustPlayerStateBJ( 25, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + "|r has been promoted to " ) + udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) )
call AdjustPlayerStateBJ( 60, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_SR takes nothing returns nothing
set gg_trg_SR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_SR, Condition( function Trig_SR_Conditions ) )
call TriggerAddAction( gg_trg_SR, function Trig_SR_Actions )
endfunction
function Trig_TR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 110 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ) )
endfunction
function Trig_TR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_TR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_TR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_general
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "General|r" )
if ( Trig_TR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Great General|r" )
call AdjustPlayerStateBJ( 20, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_TR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Chieftain General|r" )
call AdjustPlayerStateBJ( 40, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + "|r has been promoted to " ) + udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) )
call AdjustPlayerStateBJ( 80, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_TR takes nothing returns nothing
set gg_trg_TR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_TR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_TR, Condition( function Trig_TR_Conditions ) )
call TriggerAddAction( gg_trg_TR, function Trig_TR_Actions )
endfunction
function Trig_FOR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 180 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ))
endfunction
function Trig_FOR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_FOR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_FOR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_killer
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Killer|r" )
if ( Trig_FOR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Evil Killer|r" )
call AdjustPlayerStateBJ( 30, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_FOR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Killer Psychopath|r" )
call AdjustPlayerStateBJ( 60, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + "|r has become to " ) + udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) )
call AdjustPlayerStateBJ( 100, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_FOR takes nothing returns nothing
set gg_trg_FOR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_FOR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_FOR, Condition( function Trig_FOR_Conditions ) )
call TriggerAddAction( gg_trg_FOR, function Trig_FOR_Actions )
endfunction
function Trig_FIR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 260 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ))
endfunction
function Trig_FIR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_FIR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_FIR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_chacal
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "The Chacal|r" )
if ( Trig_FIR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "The Butcher Chacal|r" )
call AdjustPlayerStateBJ( 40, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_FIR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "The Unholy Chacal|r" )
call AdjustPlayerStateBJ( 80, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + ( ", " + ( udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + " is here " ) ) ) + "... Stop it!" ) )
call AdjustPlayerStateBJ( 120, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_FIR takes nothing returns nothing
set gg_trg_FIR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_FIR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_FIR, Condition( function Trig_FIR_Conditions ) )
call TriggerAddAction( gg_trg_FIR, function Trig_FIR_Actions )
endfunction
function Trig_SIR_Conditions takes nothing returns boolean
return (( IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE) == false ) and ( GetPlayerScore(GetOwningPlayer(GetKillingUnitBJ()), PLAYER_SCORE_UNITS_KILLED) == 400 ) and ( GetOwningPlayer(GetKillingUnitBJ()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) ))
endfunction
function Trig_SIR_Func006Func001C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 1
endfunction
function Trig_SIR_Func006C takes nothing returns boolean
return GetTriggerExecCount(GetTriggeringTrigger()) == 2
endfunction
function Trig_SIR_Actions takes nothing returns nothing
set udg_sound_Now = gg_snd_Warlord
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Lord|r" )
if ( Trig_SIR_Func006C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Overlord|r" )
call AdjustPlayerStateBJ( 60, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
if ( Trig_SIR_Func006Func001C() ) then
call ConditionalTriggerExecute( gg_trg_SER )
set udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] = ( udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + "Warlord|r" )
call AdjustPlayerStateBJ( 120, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
call DisplayTextToForce( GetPlayersAll(), ( ( ( ( "Hail " + udg_Player_color[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) + GetPlayerName(GetOwningPlayer(GetKillingUnitBJ())) ) + "|r, " ) + ( udg_Player_rank[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] + " of this World!" ) ) )
call AdjustPlayerStateBJ( 140, GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_LUMBER )
endfunction
//===========================================================================
function InitTrig_SIR takes nothing returns nothing
set gg_trg_SIR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SIR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_SIR, Condition( function Trig_SIR_Conditions ) )
call TriggerAddAction( gg_trg_SIR, function Trig_SIR_Actions )
endfunction
function HDDC takes nothing returns boolean
return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true
endfunction
function HDDA takes nothing returns nothing
call UnitRemoveAbilityBJ( 'S000', GetDyingUnit() )
call SetUnitUserData( GetDyingUnit(), 0 )
endfunction
//===========================================================================
function InitTrig_HDD takes nothing returns nothing
set gg_trg_HDD = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_HDD, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_HDD, Condition( function HDDC ) )
call TriggerAddAction( gg_trg_HDD, function HDDA )
endfunction
function VSC takes nothing returns boolean
return GetLearnedSkillBJ() == 'S002'
endfunction
function VSA takes nothing returns nothing
call UnitAddAbilityBJ( 'A052', GetLearningUnit() )
call SetUnitAbilityLevelSwapped( 'A052', GetLearningUnit(), GetUnitAbilityLevelSwapped('S002', GetLearningUnit()) )
endfunction
//===========================================================================
function InitTrig_VS takes nothing returns nothing
set gg_trg_VS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_VS, EVENT_PLAYER_HERO_SKILL )
call TriggerAddCondition( gg_trg_VS, Condition( function VSC ) )
call TriggerAddAction( gg_trg_VS, function VSA )
endfunction
function PIC takes nothing returns boolean
return GetLearnedSkillBJ() == 'A0A0'
endfunction
function PIA takes nothing returns nothing
call UnitAddAbilityBJ( 'A0A2', GetLearningUnit() )
call SetUnitAbilityLevelSwapped( 'A0A2', GetLearningUnit(), GetUnitAbilityLevelSwapped('A0A0', GetLearningUnit()) )
endfunction
//===========================================================================
function InitTrig_PI takes nothing returns nothing
set gg_trg_PI = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_PI, EVENT_PLAYER_HERO_SKILL )
call TriggerAddCondition( gg_trg_PI, Condition( function PIC ) )
call TriggerAddAction( gg_trg_PI, function PIA )
endfunction
function MPC takes nothing returns boolean
return GetSpellAbilityId() == 'A0AN'
endfunction
function MPT takes nothing returns nothing
local timer tr = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(1,GetHandleIdBJ(tr), udg_MP)
local real ang = LoadRealBJ(2,GetHandleIdBJ(tr), udg_MP)
local location p = GetUnitLoc(u)
local location q
set ang = ( ang + 20.00 )
set q = PolarProjectionBJ(p, 350, ang)
call CreateNUnitsAtLoc( 1, 'u020', GetOwningPlayer(u), p, ang )
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "breathoffire", q )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call SaveRealBJ(ang, 2, GetHandleIdBJ(tr), udg_MP )
call RemoveLocation(p)
call RemoveLocation(q)
set u = null
set ang = 0
set tr = null
call DestroyTimer(tr)
endfunction
function MPA takes nothing returns nothing
local timer t = CreateTimer()
local unit u = GetSpellAbilityUnit()
local real ang = GetUnitFacing(u)
call SaveUnitHandleBJ(u, 1, GetHandleIdBJ(t), udg_MP )
call SaveRealBJ(ang, 2, GetHandleIdBJ(t), udg_MP )
call TimerStart(t, 0.01, true, function MPT)
call PolledWait(0.18)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_MP)
call DestroyTimer(t)
set ang = 0.00
set u = null
endfunction
//===========================================================================
function InitTrig_MP takes nothing returns nothing
set gg_trg_MP = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MP, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_MP, Condition( function MPC ) )
call TriggerAddAction( gg_trg_MP, function MPA )
endfunction
function SSRM takes nothing returns nothing
local timer ti = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(1,GetHandleIdBJ(ti), udg_SSR)
local real inc = LoadRealBJ(2,GetHandleIdBJ(ti), udg_SSR)
local real ang = LoadRealBJ(3,GetHandleIdBJ(ti), udg_SSR)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
set inc = 0.9 * inc
set p = GetUnitLoc(u)
call SetUnitPathing( u, false )
call SetUnitPositionLoc( u, p1 )
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, 2, GetHandleIdBJ(ti), udg_SSR )
set u = null
set inc = 0
set ang = 0
set ti = null
call DestroyTimer(ti)
endfunction
function SSRA takes nothing returns nothing
local timer t = CreateTimer()
local unit u = udg_SSRU
local real inc = 16
local real ang = udg_SUA
call SaveUnitHandleBJ(u, 1, GetHandleIdBJ(t), udg_SSR )
call SaveRealBJ(inc, 2, GetHandleIdBJ(t), udg_SSR )
call SaveRealBJ(ang, 3, GetHandleIdBJ(t), udg_SSR )
call TimerStart(t, 0.02, true, function SSRM)
call PolledWait(0.6)
call SetUnitPathing( u, true )
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_SSR)
call DestroyTimer(t)
set u = null
set inc = 0
set ang = 0
endfunction
function SSRC takes nothing returns boolean
return (IsUnitType(udg_SSRU, UNIT_TYPE_STRUCTURE) == false)
endfunction
//===========================================================================
function InitTrig_SSR takes nothing returns nothing
set gg_trg_SSR = CreateTrigger( )
call TriggerAddCondition( gg_trg_SSR, Condition( function SSRC ) )
call TriggerAddAction( gg_trg_SSR, function SSRA )
endfunction
function ISD takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_SU)) == true )
endfunction
function ISDmg takes real dmg,location p returns nothing
local group g = GetUnitsInRangeOfLocMatching(70, p, Condition(function ISD))
local unit u = null
local integer i = 1
set i = 1
loop
exitwhen i > CountUnitsInGroup(g)
set u = GroupPickRandomUnit(g)
set udg_SSRU = u
call UnitDamageTargetBJ( udg_SU, u, dmg, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call ConditionalTriggerExecute( gg_trg_SSR )
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "head", u, "Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl"))
call GroupRemoveUnit(g,u)
endloop
set u = null
call DestroyGroup(g)
endfunction
function SSM takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit arrow = LoadUnitHandleBJ(StringHashBJ("arrow"),GetHandleIdBJ(t), udg_ISH)
local real angle = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(t), udg_ISH)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(t), udg_ISH)
local location p2 = GetUnitLoc(arrow)
local location p1 = null
set p1 = PolarProjectionBJ(p2, inc, angle)
if ((GetLocationX(p1)> udg_Xmax) or (GetLocationX(p1) < udg_Xmin) or (GetLocationY(p1) > udg_Ymax) or (GetLocationY(p1) < udg_Ymin)) then
set p1 = p2
endif
call SetUnitPathing( arrow, false )
call SetUnitPositionLoc( arrow, p1 )
call DestroyEffectBJ(AddSpecialEffectLocBJ( p2, "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl" ))
call ISDmg(udg_SR,p1)
call RemoveLocation(p2)
call RemoveLocation(p1)
set arrow = null
set inc = 0
set angle = 0
set t = null
call DestroyTimer(t)
endfunction
function SSC takes nothing returns boolean
return GetSpellAbilityId() == 'A0AK'
endfunction
function SSA takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local location p1 = GetUnitLoc(u)
local location p2 = GetSpellTargetLoc()
local real angle = AngleBetweenPoints(p1,p2)
local location p3 = PolarProjectionBJ(p1, 50.00,angle)
local unit arrow = null
local real inc = 50
local timer t = CreateTimer()
set udg_SU = u
set udg_SR = ( 10.00 + ( I2R(GetUnitAbilityLevelSwapped('A0AK', udg_SU)) * 20.00 ) )
set udg_SUA = angle
call PolledWait(0.1)
call CreateNUnitsAtLoc( 1, 'u021', GetOwningPlayer(u),p3,angle )
set arrow = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 0.6, 'BTLF', arrow)
call SaveUnitHandleBJ(arrow, StringHashBJ("arrow"), GetHandleIdBJ(t),udg_ISH)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t),udg_ISH)
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t),udg_ISH)
call TimerStart(t, 0.01, true, function SSM)
call PolledWait(0.6)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_ISH)
call DestroyTimer(t)
set u = null
set arrow = null
set inc = 0
set angle = 0
call RemoveLocation(p3)
call RemoveLocation(p2)
call RemoveLocation(p1)
set udg_SU = null
set udg_SR = 0
set udg_SUA = 0
endfunction
//===========================================================================
function InitTrig_SS takes nothing returns nothing
set gg_trg_SS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SS, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_SS, Condition( function SSC ) )
call TriggerAddAction( gg_trg_SS, function SSA )
endfunction
function CMM takes nothing returns boolean
return GetSpellAbilityId() == 'A0AI'
endfunction
function CMA takes nothing returns nothing
local unit c = GetSpellAbilityUnit()
call UnitAddAbilityBJ( 'A0AG', c )
call PolledWait(5)
call UnitRemoveAbilityBJ( 'A0AG', c )
set c = null
endfunction
//===========================================================================
function InitTrig_CM takes nothing returns nothing
set gg_trg_CM = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_CM, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_CM, Condition( function CMM ) )
call TriggerAddAction( gg_trg_CM,function CMA)
endfunction
function RFC takes nothing returns boolean
return UnitHasBuffBJ(GetAttacker(), 'B022') == true
endfunction
function RFA takes nothing returns nothing
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "weapon", GetAttacker(), "Abilities\\Weapons\\GyroCopter\\GyroCopterImpact.mdl" ))
endfunction
//===========================================================================
function InitTrig_RF takes nothing returns nothing
set gg_trg_RF = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_RF, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_RF, Condition( function RFC ) )
call TriggerAddAction( gg_trg_RF, function RFA )
endfunction
function NBC takes nothing returns boolean
return GetSpellAbilityId()=='A0AB'
endfunction
function NBB takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(1,GetHandleIdBJ(t), udg_cache)
local real s = LoadRealBJ(2,GetHandleIdBJ(t), udg_cache)
local location p = GetUnitLoc(u)
local unit n = null
set s = s*1.2
call SetUnitScalePercent( u, s*2, s*2, s*2 )
call CreateNUnitsAtLocFacingLocBJ( 1, 'u01X', Player(0), p,p)
set n = GetLastCreatedUnit()
call UnitDamagePointLoc( n, 0, ( I2R(udg_NBL) * (s*0.000035) ), p, 0.00001 * s, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL )
call SetUnitScalePercent( n, s, s, s )
call UnitApplyTimedLifeBJ( 0.01, 'BTLF', n )
call SaveRealBJ(s, 2, GetHandleIdBJ(t), udg_cache )
set u = null
set n = null
set s = 0
call RemoveLocation(p)
set t = null
call DestroyTimer(t)
endfunction
function NBA takes nothing returns nothing
local location p = GetSpellTargetLoc()
local timer t = CreateTimer()
local unit u = null
local real s = 0.1
set udg_NBL = GetUnitAbilityLevelSwapped('A0AB', GetSpellAbilityUnit() )
call PolledWait(4.0)
call CreateNUnitsAtLocFacingLocBJ( 1, 'u01W', Player(0), p, p )
set u = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( 3.00, 'BTLF', u )
call SaveUnitHandleBJ(u, 1, GetHandleIdBJ(t), udg_cache )
call SaveRealBJ(s, 2, GetHandleIdBJ(t), udg_cache )
call TimerStart(t, 0.03, true, function NBB)
call PolledWait(3.0)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_cache)
call DestroyTimer(t)
set u = null
set s = 0
call RemoveLocation(p)
call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 0.20, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 90.00, 60, 60.00 )
endfunction
//===========================================================================
function InitTrig_NB takes nothing returns nothing
set gg_trg_NB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_NB, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_NB, Condition( function NBC ) )
call TriggerAddAction( gg_trg_NB, function NBA )
endfunction
function NAC takes nothing returns boolean
return GetSpellAbilityId() == 'A0AB'
endfunction
function NAA takes nothing returns nothing
call PlaySoundBJ( gg_snd_Nitro )
endfunction
//===========================================================================
function InitTrig_NA takes nothing returns nothing
set gg_trg_NA = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_NA, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_NA, Condition( function NAC ) )
call TriggerAddAction( gg_trg_NA, function NAC )
endfunction
function Trig_IBTT_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ(R2S(udg_IB_R), udg_IB_U, 0, 8.00, 100.00, 100.00, 100.00, 100.00 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(2)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_IBTT takes nothing returns nothing
set gg_trg_IBTT = CreateTrigger( )
call TriggerAddAction( gg_trg_IBTT, function Trig_IBTT_Actions )
endfunction
function IMC takes nothing returns boolean
return GetSpellAbilityId() == 'A0AA'
endfunction
function IMA takes nothing returns nothing
call PlaySoundOnUnitBJ( gg_snd_impact, 100, GetSpellAbilityUnit() )
endfunction
//===========================================================================
function InitTrig_IM takes nothing returns nothing
set gg_trg_IM = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_IM, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_IM, Condition( function IMC ) )
call TriggerAddAction( gg_trg_IM, function IMA )
endfunction
function IBdf takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_IB_U)) == true )
endfunction
function IBDmg takes real dmg,location p returns nothing
local group g = GetUnitsInRangeOfLocMatching(200, p, Condition(function IBdf))
local unit u = null
local integer i = 1
set i = 1
loop
exitwhen i > CountUnitsInGroup(g)
set u = GroupPickRandomUnit(g)
call UnitDamageTargetBJ( udg_IB_U, u, (dmg/4), ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call GroupRemoveUnit(g,u)
endloop
set u = null
call DestroyGroup(g)
endfunction
function GetXY takes location p returns boolean
set udg_IB_X = GetLocationX(p)
set udg_IB_Y = GetLocationY(p)
return ((udg_IB_X > udg_Xmax) or (udg_IB_X < udg_Xmin) or (udg_IB_Y > udg_Ymax) or (udg_IB_Y < udg_Ymin))
endfunction
function GetParabolaZ takes real x,real d,real h returns real
return 4 * h * x * (d - x) / (d * d)
endfunction
function IBC takes nothing returns boolean
return GetSpellAbilityId()=='A0AA'
endfunction
function IB_BUCLE takes nothing returns nothing
local timer ti = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(ti), udg_cache)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(ti), udg_cache)
local real ang = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(ti), udg_cache)
local real d = LoadRealBJ(2,GetHandleIdBJ(ti), udg_cache)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
local real xi = LoadRealBJ(3,GetHandleIdBJ(ti), udg_cache) + inc
local real h = GetParabolaZ(xi,d,udg_IB_R)
set inc = ( inc - 1 )
call SetUnitPathing( u, false )
call SetUnitFlyHeight( u, h, 0 )
if GetXY(p1) then
set p1 = p
endif
call SetUnitPositionLoc( u, p1 )
if h < 0 then
call DestroyEffect(AddSpecialEffectLocBJ( p1, "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl" ))
set udg_IB_U = u
call IBDmg(udg_IB_R,p1)
endif
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(ti), udg_cache )
call SaveRealBJ(xi, 3, GetHandleIdBJ(ti), udg_cache )
set u = null
set d = 0
set xi = 0
set h = 0
set ti = null
call DestroyTimer(ti)
endfunction
function IBA takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local real ang = GetUnitFacing(u) + 180
local timer te = CreateTimer()
local location p = GetUnitLoc(u)
local real imp = DistanceBetweenPoints(p, GetSpellTargetLoc())
local location pe = PolarProjectionBJ(p, (100/imp) * 1000, ang)
local real d = DistanceBetweenPoints(p, pe)
local real inc = (d + 200)/20
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(te), udg_cache )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(te), udg_cache )
call SaveRealBJ(ang, StringHashBJ("angle"), GetHandleIdBJ(te), udg_cache )
call SaveRealBJ(d, 2, GetHandleIdBJ(te), udg_cache )
set udg_IB_R = (250/imp)*200
call UnitAddAbilityBJ( 'Amrf', u )
call UnitRemoveAbilityBJ( 'Amrf', u )
call SetCameraTargetControllerNoZForPlayer( GetOwningPlayer(u), u, 0, 0, false )
call TimerStart(te, 0.03, true, function IB_BUCLE)
call PolledWait(0.6)
call SetUnitPathing( u, true )
call ResetToGameCameraForPlayer( GetOwningPlayer(u), 0 )
call FlushChildHashtableBJ(GetHandleIdBJ(te), udg_cache)
call DestroyTimer(te)
set u = null
set inc = 0
set ang = 0
set d = 0
call RemoveLocation(p)
call RemoveLocation(pe)
endfunction
//===========================================================================
function InitTrig_IB takes nothing returns nothing
set gg_trg_IB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_IB, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_IB, Condition( function IBC ) )
call TriggerAddAction( gg_trg_IB, function IBA )
endfunction
function Trig_AL_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A0A4'
endfunction
function Trig_AL_Func002002003 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetSpellAbilityUnit())) == true )
endfunction
function Trig_AL_Func003A takes nothing returns nothing
call CreateNUnitsAtLocFacingLocBJ( 1, 'u01U', GetOwningPlayer(GetSpellAbilityUnit()), udg_AllP, udg_AllP )
call UnitApplyTimedLifeBJ( 0.60, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "banish", GetEnumUnit() )
call GroupRemoveUnitSimple( GetEnumUnit(), udg_AllG )
endfunction
function Trig_AL_Actions takes nothing returns nothing
set udg_AllP = GetSpellTargetLoc()
set udg_AllG = GetUnitsInRangeOfLocMatching(512, udg_AllP, Condition(function Trig_AL_Func002002003))
call ForGroupBJ( udg_AllG, function Trig_AL_Func003A )
call RemoveLocation(udg_AllP)
call DestroyGroup(udg_AllG)
endfunction
//===========================================================================
function InitTrig_AL takes nothing returns nothing
set gg_trg_AL = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AL, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_AL, Condition( function Trig_AL_Conditions ) )
call TriggerAddAction( gg_trg_AL, function Trig_AL_Actions )
endfunction
function Trig_MT_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A0A1'
endfunction
function Trig_MT_Actions takes nothing returns nothing
set udg_Mtrust = ( ( 10.00 + ( 5.00 * I2R(GetUnitAbilityLevelSwapped('A0A1', GetSpellAbilityUnit())) ) ) / 100.00 )
set udg_Mtrustr = ( I2R(GetPlayerState(GetOwningPlayer(GetSpellAbilityUnit()), PLAYER_STATE_RESOURCE_GOLD)) * udg_Mtrust )
set udg_Mtrustt = ( ( 50.00 * I2R(GetUnitAbilityLevelSwapped('A0A1', GetSpellAbilityUnit())) ) + udg_Mtrustr )
call TriggerExecute( gg_trg_Mtrust_text )
call UnitDamageTargetBJ( GetSpellAbilityUnit(), GetSpellTargetUnit(), udg_Mtrustt, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call SetPlayerStateBJ( GetOwningPlayer(GetSpellAbilityUnit()), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetOwningPlayer(GetSpellAbilityUnit()), PLAYER_STATE_RESOURCE_GOLD) - ( R2I(udg_Mtrustt) / 10 ) ) )
set udg_Mtrust = 0.00
set udg_Mtrustr = 0.00
set udg_Mtrustt = 0.00
endfunction
//===========================================================================
function InitTrig_MT takes nothing returns nothing
set gg_trg_MT = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MT, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_MT, Condition( function Trig_MT_Conditions ) )
call TriggerAddAction( gg_trg_MT, function Trig_MT_Actions )
endfunction
function Trig_DS_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A09R'
endfunction
function Trig_DS_Func006002003 takes nothing returns boolean
return ((IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(udg_DS_c)) == true ) and (Non_Struct() == true))
endfunction
function Trig_DS_Func010002 takes nothing returns nothing
call SetUnitPositionLoc( GetEnumUnit(), udg_DS_p3 )
endfunction
function Trig_DS_Func012A takes nothing returns nothing
call UnitDamageTargetBJ( udg_DS_c, GetEnumUnit(), ( ( 20.00 * I2R(CountUnitsInGroup(udg_DS_g2)) ) * I2R(GetUnitAbilityLevelSwapped('A09R', udg_DS_c)) ), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL )
call AddSpecialEffectTargetUnitBJ( "chest", GetEnumUnit(), "Abilities\\Weapons\\GryphonRiderMissile\\GryphonRiderMissileTarget.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
function Trig_DS_Actions takes nothing returns nothing
set udg_DS_c = GetTriggerUnit()
set udg_DS_p = GetSpellTargetLoc()
set udg_DS_p2 = GetUnitLoc(udg_DS_c)
set udg_DS_ang = AngleBetweenPoints(udg_DS_p2, udg_DS_p)
set udg_DS_p3 = PolarProjectionBJ(udg_DS_p2, 300.00, udg_DS_ang)
set udg_DS_g2 = GetUnitsInRangeOfLocMatching(300.00, udg_DS_p3, Condition(function Trig_DS_Func006002003))
set udg_DS_p = PolarProjectionBJ(udg_DS_p3, 150.00, udg_DS_ang)
call CreateNUnitsAtLoc( 1, 'u01S', GetOwningPlayer(udg_DS_c), udg_DS_p, udg_DS_ang )
call UnitApplyTimedLifeBJ( 0.30, 'BTLF', GetLastCreatedUnit() )
call ForGroupBJ( udg_DS_g2, function Trig_DS_Func010002 )
call RemoveLocation(udg_DS_p3)
call ForGroupBJ( udg_DS_g2, function Trig_DS_Func012A )
call DestroyGroup(udg_DS_g2)
call RemoveLocation(udg_DS_p)
call RemoveLocation(udg_DS_p2)
set udg_DS_c = null
set udg_DS_ang = 0.00
endfunction
//===========================================================================
function InitTrig_DS takes nothing returns nothing
set gg_trg_DS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DS, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_DS, Condition( function Trig_DS_Conditions ) )
call TriggerAddAction( gg_trg_DS, function Trig_DS_Actions )
endfunction
function ddcicle takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(t), udg_cache)
local location p = GetUnitLoc(u)
call DestroyEffect(AddSpecialEffectLocBJ( p, "Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeTarget.mdl" ))
set t = null
call DestroyTimer(t)
if ( GetUnitAbilityLevelSwapped('A0BG', u) == 1 ) then
call CreateNUnitsAtLoc( 1, 'u026', GetOwningPlayer(u), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
elseif ( GetUnitAbilityLevelSwapped('A0BG', u) == 2 ) then
call CreateNUnitsAtLoc( 1, 'u027', GetOwningPlayer(u), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
elseif ( GetUnitAbilityLevelSwapped('A0BG', u) == 3 ) then
call CreateNUnitsAtLoc( 1, 'u025', GetOwningPlayer(u), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
elseif ( GetUnitAbilityLevelSwapped('A0BG', u) == 4 ) then
call CreateNUnitsAtLoc( 1, 'u028', GetOwningPlayer(u), p, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
endif
set u = null
call RemoveLocation(p)
endfunction
function ddcs takes nothing returns boolean
return GetSpellAbilityId() == 'A0BG'
endfunction
function ddca takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local timer t = CreateTimer()
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(t), udg_cache )
call TimerStart(t, 0.1, true, function ddcicle)
call PolledWait(1)
loop
exitwhen ( UnitHasBuffBJ(u, 'BNdc') == false )
call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1))
endloop
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_cache )
call DestroyTimer(t)
set u = null
endfunction
//===========================================================================
function InitTrig_DD takes nothing returns nothing
set gg_trg_DD = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DD, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_DD, Condition( function ddcs ) )
call TriggerAddAction( gg_trg_DD, function ddca )
endfunction
function Trig_fc_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A08X'
endfunction
function Trig_fc_Func005002002 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetSpellAbilityUnit())) == true )
endfunction
function Trig_fc_Actions takes nothing returns nothing
set udg_archmagecaster = GetSpellAbilityUnit()
set udg_temp_point = GetSpellTargetLoc()
set udg_archmagerect = RectFromCenterSizeBJ(udg_temp_point, 200.00, 200.00)
call RemoveLocation(udg_temp_point)
set udg_archmagegroup = GetUnitsInRectMatching(udg_archmagerect, Condition(function Trig_fc_Func005002002))
call RemoveRect(udg_archmagerect)
set udg_archmagecurseunit = GroupPickRandomUnit(udg_archmagegroup)
call DestroyGroup(udg_archmagegroup)
call EnableTrigger( gg_trg_co )
call TriggerSleepAction( ( ( I2R(GetUnitAbilityLevelSwapped('A08X', GetSpellAbilityUnit())) * 14.00 ) + 6.00 ) )
call DisableTrigger( gg_trg_co )
set udg_archmagecurseunit = null
set udg_archmagecaster = null
endfunction
//===========================================================================
function InitTrig_fc takes nothing returns nothing
set gg_trg_fc = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_fc, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_fc, Condition( function Trig_fc_Conditions ) )
call TriggerAddAction( gg_trg_fc, function Trig_fc_Actions )
endfunction
function Trig_SJ_Conditions takes nothing returns boolean
return ((GetSpellAbilityId() == 'A08O') and ( udg_Surfer_on == false ))
endfunction
function Trig_SJ_Func004002002 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) == 'u01O' )
endfunction
function Trig_SJ_Func005Func007C takes nothing returns boolean
return udg_Surfer_dist >= 802.00
endfunction
function Trig_SJ_Func005C takes nothing returns boolean
return IsUnitGroupEmptyBJ(udg_surfer_arrow) == true
endfunction
function Trig_SJ_Actions takes nothing returns nothing
set udg_Surfer_unit = GetSpellAbilityUnit()
set udg_surfer_arrow = GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function Trig_SJ_Func004002002))
if ( Trig_SJ_Func005C() ) then
set udg_tpg = GetForceOfPlayer(GetOwningPlayer(GetTriggerUnit()))
call DisplayTextToForce( udg_tpg, "TRIGSTR_4412" )
call DestroyGroup(udg_surfer_arrow)
call DestroyForce(udg_tpg)
else
set udg_Surfer_arrow = GroupPickRandomUnit(udg_surfer_arrow)
call DestroyGroup(udg_surfer_arrow)
set udg_Surfer_p1 = GetUnitLoc(udg_Surfer_arrow)
set udg_Surfer_p3 = GetUnitLoc(udg_Surfer_unit)
set udg_Surfer_dist = DistanceBetweenPoints(udg_Surfer_p1, udg_Surfer_p3)
if ( Trig_SJ_Func005Func007C() ) then
set udg_tpg = GetForceOfPlayer(GetOwningPlayer(GetTriggerUnit()))
call DisplayTextToForce( udg_tpg, "TRIGSTR_4413" )
call RemoveLocation(udg_Surfer_p1)
call RemoveLocation(udg_Surfer_p3)
call DestroyForce(udg_tpg)
else
set udg_Surfer_on = true
call AddLightningLoc( "SPLK", udg_Surfer_p1, udg_Surfer_p3 )
call SetLightningColorBJ( GetLastCreatedLightningBJ(), 0.00, 1, 1.00, 0.40 )
set udg_Surfer_angle = AngleBetweenPoints(udg_Surfer_p3, udg_Surfer_p1)
call SetUnitPathing( udg_Surfer_unit, false )
set udg_Surfer_link = GetLastCreatedLightningBJ()
call EnableTrigger( gg_trg_sn )
call EnableTrigger( gg_trg_sen )
call UnitRemoveAbilityBJ( 'A08O', udg_Surfer_unit )
call UnitAddAbilityBJ( 'A08Q', udg_Surfer_unit )
call TriggerSleepAction( 2.50 )
call DisableTrigger( gg_trg_sn )
call DisableTrigger( gg_trg_sen )
call UnitRemoveAbilityBJ( 'A08Q', udg_Surfer_unit )
call UnitAddAbilityBJ( 'A08O', udg_Surfer_unit )
call SetUnitPathing( udg_Surfer_unit, true )
call DestroyLightningBJ( udg_Surfer_link )
call RemoveLocation(udg_Surfer_p1)
call RemoveLocation(udg_Surfer_p3)
set udg_Surfer_on = false
endif
endif
endfunction
//===========================================================================
function InitTrig_SJ takes nothing returns nothing
set gg_trg_SJ = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SJ, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_SJ, Condition( function Trig_SJ_Conditions ) )
call TriggerAddAction( gg_trg_SJ, function Trig_SJ_Actions )
endfunction
function Trig_sn_Conditions takes nothing returns boolean
return udg_Surfer_on == true
endfunction
function Trig_sn_Actions takes nothing returns nothing
set udg_Surfer_Lt = GetUnitLoc(udg_Surfer_arrow)
set udg_Surfer_p2 = PolarProjectionBJ(udg_Surfer_Lt, ( 0.00 - udg_Surfer_dist ), udg_Surfer_angle)
call SetUnitPositionLoc( udg_Surfer_unit, udg_Surfer_p2 )
call MoveLightningLoc( udg_Surfer_link, udg_Surfer_p2, udg_Surfer_Lt )
call AddSpecialEffectTargetUnitBJ( "origin", udg_Surfer_unit, "Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_Surfer_p2)
call RemoveLocation(udg_Surfer_Lt)
endfunction
//===========================================================================
function InitTrig_sn takes nothing returns nothing
set gg_trg_sn = CreateTrigger( )
call DisableTrigger( gg_trg_sn )
call TriggerRegisterTimerEventPeriodic( gg_trg_sn, 0.02 )
call TriggerAddCondition( gg_trg_sn, Condition( function Trig_sn_Conditions ) )
call TriggerAddAction( gg_trg_sn, function Trig_sn_Actions )
endfunction
function Trig_sen_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A08Q'
endfunction
function Trig_sen_Actions takes nothing returns nothing
set udg_Surfer_on = false
call DestroyLightningBJ( udg_Surfer_link )
endfunction
//===========================================================================
function InitTrig_sen takes nothing returns nothing
set gg_trg_sen = CreateTrigger( )
call DisableTrigger( gg_trg_sen )
call TriggerRegisterAnyUnitEventBJ( gg_trg_sen, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_sen, Condition( function Trig_sen_Conditions ) )
call TriggerAddAction( gg_trg_sen, function Trig_sen_Actions )
endfunction
function arrow_move takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit arrow = LoadUnitHandleBJ(StringHashBJ("arrow"),GetHandleIdBJ(t), udg_Arrow_hash)
local real angle = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(t), udg_Arrow_hash)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(t), udg_Arrow_hash)
local location p2 = GetUnitLoc(arrow)
local location p1 = null
set p1 = PolarProjectionBJ(p2, inc, angle)
if ((GetLocationX(p1)> udg_Xmax) or (GetLocationX(p1) < udg_Xmin) or (GetLocationY(p1) > udg_Ymax) or (GetLocationY(p1) < udg_Ymin)) then
set p1 = p2
endif
call SetUnitPathing( arrow, false )
call SetUnitPositionLoc( arrow, p1 )
call RemoveLocation(p2)
call RemoveLocation(p1)
set arrow = null
set inc = 0
set angle = 0
set t = null
call DestroyTimer(t)
endfunction
function Trig_stunningarrow_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A08K' ) ) then
return false
endif
return true
endfunction
function Trig_stunningarrow_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local location p1 = GetUnitLoc(u)
local location p2 = GetSpellTargetLoc()
local real angle = AngleBetweenPoints(p1,p2)
local location p3 = PolarProjectionBJ(p1, 200.00,angle)
local unit arrow = null
local real inc = 30
local timer t = CreateTimer()
call PolledWait(0.2)
call CreateNUnitsAtLoc( 1, 'u01O', GetOwningPlayer(u),p3,angle )
set arrow = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'A08M', arrow )
call SetUnitAbilityLevelSwapped( 'A08M', arrow, GetUnitAbilityLevelSwapped(GetSpellAbilityId(),u) )
call UnitApplyTimedLifeBJ( 2.5, 'BTLF', arrow)
call SaveUnitHandleBJ(arrow, StringHashBJ("arrow"), GetHandleIdBJ(t),udg_Arrow_hash)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t),udg_Arrow_hash)
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t),udg_Arrow_hash)
call TimerStart(t, 0.02, true, function arrow_move)
call PolledWait(2.5)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_Arrow_hash)
call DestroyTimer(t)
set u = null
set arrow = null
set inc = 0
set angle = 0
call RemoveLocation(p3)
call RemoveLocation(p2)
call RemoveLocation(p1)
endfunction
//===========================================================================
function InitTrig_STA takes nothing returns nothing
set gg_trg_STA = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_STA, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_STA, Condition( function Trig_stunningarrow_Conditions ) )
call TriggerAddAction( gg_trg_STA, function Trig_stunningarrow_Actions )
endfunction
function Trig_AC_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A08G'
endfunction
function Trig_AC_Func005002002 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetSpellAbilityUnit())) == true )
endfunction
function Trig_AC_Actions takes nothing returns nothing
set udg_archmagecaster = GetSpellAbilityUnit()
set udg_temp_point = GetSpellTargetLoc()
set udg_archmagerect = RectFromCenterSizeBJ(udg_temp_point, 200.00, 200.00)
call RemoveLocation(udg_temp_point)
set udg_archmagegroup = GetUnitsInRectMatching(udg_archmagerect, Condition(function Trig_AC_Func005002002))
call RemoveRect(udg_archmagerect)
set udg_archmagecurseunit = GroupPickRandomUnit(udg_archmagegroup)
call DestroyGroup(udg_archmagegroup)
call EnableTrigger( gg_trg_CB )
call TriggerSleepAction( ( ( I2R(GetUnitAbilityLevelSwapped('A08G', GetSpellAbilityUnit())) * 2.00 ) + 6.00 ) )
call DisableTrigger( gg_trg_CB )
set udg_archmagecurseunit = null
set udg_archmagecaster = null
endfunction
//===========================================================================
function InitTrig_AC takes nothing returns nothing
set gg_trg_AC = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AC, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_AC, Condition( function Trig_AC_Conditions ) )
call TriggerAddAction( gg_trg_AC, function Trig_AC_Actions )
endfunction
function Trig_stomphero_Conditions takes nothing returns boolean
return (( GetUnitTypeId(GetAttacker()) == 'H02N' ) and ( UnitHasBuffBJ(GetAttacker(), 'B01Y') == true ))
endfunction
function Trig_stomphero_Actions takes nothing returns nothing
local unit attacker = GetAttacker()
local unit attacked = GetAttackedUnitBJ()
local location p = GetUnitLoc(GetAttackedUnitBJ())
call TriggerSleepAction( 0.10 )
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "origin", attacked, "abilities\\weapons\\DemolisherMissile\\DemolisherMissile.mdl"))
call CreateNUnitsAtLocFacingLocBJ( 1, 'u01M', GetOwningPlayer(attacker), p,p )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "thunderclap" )
call UnitApplyTimedLifeBJ( 0.30, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(p)
set attacker = null
set attacked = null
endfunction
//===========================================================================
function InitTrig_SH takes nothing returns nothing
set gg_trg_SH = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SH, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_SH, Condition( function Trig_stomphero_Conditions ) )
call TriggerAddAction( gg_trg_SH, function Trig_stomphero_Actions )
endfunction
function Trig_stompincursor_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A083'
endfunction
function Trig_stompincursor_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
call TriggerSleepAction( 0.20 )
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "chest", caster, "Abilities\\Spells\\Undead\\OrbOfDeath\\OrbOfDeathMissile.mdl" ))
set caster = null
endfunction
//===========================================================================
function InitTrig_SI takes nothing returns nothing
set gg_trg_SI = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SI, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_SI, Condition( function Trig_stompincursor_Conditions ) )
call TriggerAddAction( gg_trg_SI, function Trig_stompincursor_Actions )
endfunction
function BMS_C takes nothing returns boolean
return GetSpellAbilityId() == 'A0B9'
endfunction
function BMS_move takes nothing returns nothing
local timer ti = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(ti), udg_BMS)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(ti), udg_BMS)
local real ang = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(ti), udg_BMS)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
set inc = ( inc - 1 )
set p = GetUnitLoc(u)
call SetUnitPathing( u, false )
call SetUnitPositionLoc( u, p1 )
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(ti), udg_BMS )
set u = null
set ti = null
call DestroyTimer(ti)
endfunction
function BMS_A takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local location p = GetUnitLoc(u)
local real inc = ((DistanceBetweenPoints(p,udg_BMS_T) + 200)/20)
local real ang = AngleBetweenPoints(GetUnitLoc(u), udg_BMS_T)
local timer te = CreateTimer()
local location p1 = null
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(te), udg_BMS )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(te), udg_BMS )
call SaveRealBJ(ang, StringHashBJ("angle"), GetHandleIdBJ(te), udg_BMS )
call SaveLocationHandleBJ(p, StringHashBJ("p"), GetHandleIdBJ(te), udg_BMS )
call TriggerSleepAction( 0.1 )
call UnitAddAbilityBJ( 'A0BA', u )
call SetUnitAnimation( u, "spin" )
call TimerStart(te, 0.02, true, function BMS_move)
call PolledWait(0.4)
call UnitRemoveAbilityBJ( 'A0BA', u )
call UnitRemoveAbilityBJ( 'A0B9', u )
call SetUnitPathing( u, true )
call ResetUnitAnimation( u )
call FlushChildHashtableBJ(GetHandleIdBJ(te), udg_BMS)
call DestroyTimer(te)
set u = null
set inc = 0
set ang = 0
call RemoveLocation(p)
call RemoveLocation(p1)
call RemoveLocation(udg_BMS_T)
endfunction
//===========================================================================
function InitTrig_BMS takes nothing returns nothing
set gg_trg_BMS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_BMS, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_BMS, Condition( function BMS_C ) )
call TriggerAddAction( gg_trg_BMS, function BMS_A )
endfunction
function BMSc_C takes nothing returns boolean
return GetSpellAbilityId() == 'A0B4'
endfunction
function BMSc_g takes nothing returns nothing
call UnitAddAbilityBJ( 'A0B9', GetEnumUnit() )
call SetUnitFacingToFaceUnitTimed( GetEnumUnit(), GetSpellTargetUnit(), 0 )
call IssueImmediateOrderBJ( GetEnumUnit(), "berserk" )
endfunction
function BMSc_A takes nothing returns nothing
set udg_BMS_C = GetSpellAbilityUnit()
set udg_BMS_T = GetUnitLoc(GetSpellTargetUnit())
set udg_BMS_G = GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetSpellAbilityUnit()), 'n03D')
call ForGroupBJ( udg_BMS_G, function BMSc_g )
call DestroyGroup(udg_BMS_G)
call SetUnitPositionLoc( udg_BMS_C, udg_BMS_T)
set udg_BMS_C = null
endfunction
//===========================================================================
function InitTrig_BMSc takes nothing returns nothing
set gg_trg_BMSc = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_BMSc, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_BMSc, Condition( function BMSc_C ) )
call TriggerAddAction( gg_trg_BMSc, function BMSc_A )
endfunction
function Trig_KU_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A07P' )
endfunction
function Trig_KU_Func001002002 takes nothing returns boolean
return ( GetUnitDefaultAcquireRange(GetFilterUnit()) == 33.00 )
endfunction
function Trig_KU_Func002A takes nothing returns nothing
call UnitAddAbilityBJ( 'A07O', GetEnumUnit() )
call UnitAddAbilityBJ( 'A07Q', GetEnumUnit() )
call UnitRemoveAbilityBJ( 'A07L', GetEnumUnit() )
call IssueImmediateOrderBJ( GetEnumUnit(), "selfdestructon" )
endfunction
function Trig_KU_Actions takes nothing returns nothing
set udg_kunyonya_group = GetUnitsOfPlayerMatching(GetOwningPlayer(GetSpellAbilityUnit()), Condition(function Trig_KU_Func001002002))
call ForGroupBJ( udg_kunyonya_group, function Trig_KU_Func002A )
call DestroyGroup(udg_kunyonya_group)
endfunction
//===========================================================================
function InitTrig_KU takes nothing returns nothing
set gg_trg_KU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_KU, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_KU, Condition( function Trig_KU_Conditions ) )
call TriggerAddAction( gg_trg_KU, function Trig_KU_Actions )
endfunction
function Trig_DKU_Conditions takes nothing returns boolean
return ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 33.00 )
endfunction
function Trig_DKU_Actions takes nothing returns nothing
call AddSpecialEffectTargetUnitBJ( "overhead", GetDyingUnit(), "Objects\\Spawnmodels\\Human\\HumanLargeDeathExplode\\HumanLargeDeathExplode.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
//===========================================================================
function InitTrig_DKU takes nothing returns nothing
set gg_trg_DKU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DKU, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_DKU, Condition( function Trig_DKU_Conditions ) )
call TriggerAddAction( gg_trg_DKU, function Trig_DKU_Actions )
endfunction
function Trig_VU_Conditions takes nothing returns boolean
return UnitHasBuffBJ(GetTriggerUnit(), 'B01L') == true
endfunction
function tfil takes nothing returns boolean
return (( GetFilterUnit() != GetTriggerUnit()) and ( UnitHasBuffBJ(GetFilterUnit(), 'B01L') == true ))
endfunction
function Trig_VU_Actions takes nothing returns nothing
call TriggerSleepAction( 0.30 )
set udg_vudu_dmg = GetUnitLifePercent(GetTriggerUnit())
set udg_temp_point = GetUnitLoc(GetTriggerUnit())
set udg_vudu_group = GetUnitsInRangeOfLocMatching(550.00, udg_temp_point, Condition(function tfil))
call RemoveLocation(udg_temp_point)
set udg_vudu_unit = GroupPickRandomUnit(udg_vudu_group)
call DestroyGroup(udg_vudu_group)
call SetUnitLifePercentBJ( udg_vudu_unit, udg_vudu_dmg)
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "chest", udg_vudu_unit, "Abilities\\Weapons\\HydraliskImpact\\HydraliskImpact.mdl" ))
endfunction
//===========================================================================
function InitTrig_VU takes nothing returns nothing
set gg_trg_VU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_VU, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_VU, Condition( function Trig_VU_Conditions ) )
call TriggerAddAction( gg_trg_VU, function Trig_VU_Actions )
endfunction
function lighting_move takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit dmy = LoadUnitHandleBJ(StringHashBJ("dummy"),GetHandleIdBJ(t), udg_Lightc)
local unit c = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(t), udg_Lightc)
local real angle = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(t), udg_Lightc)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(t), udg_Lightc)
local real dist = LoadRealBJ(StringHashBJ("dist"),GetHandleIdBJ(t), udg_Lightc)
local location p2 = GetUnitLoc(dmy)
local location p1 = null
local location p3 = GetUnitLoc(c)
local boolean back = LoadBooleanBJ(StringHashBJ("back"),GetHandleIdBJ(t), udg_Lightc)
if ( back == false ) then
set inc = ( dist / 150 )
set dist = dist - inc
else
set inc = ( dist / 150 )
set dist = dist + inc
set angle = AngleBetweenPoints(p2,p3)
endif
if ( inc < 1 ) then
set back = true
set angle = AngleBetweenPoints(p2,p3)
call SaveBooleanBJ(back, StringHashBJ("back"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t), udg_Lightc )
endif
set p1 = PolarProjectionBJ(p2, inc, angle)
call SetUnitPathing( dmy, false )
call SetUnitPositionLoc( dmy, p1 )
call RemoveLocation(p3)
call RemoveLocation(p2)
call RemoveLocation(p1)
call SaveRealBJ(dist, StringHashBJ("dist"), GetHandleIdBJ(t), udg_Lightc )
set t = null
set dmy = null
set inc = 0
set angle = 0
call DestroyTimer(t)
endfunction
function Trig_lightshield_Conditions takes nothing returns boolean
return (GetSpellAbilityId() == 'A06T')
endfunction
function Trig_lightshield_Actions takes nothing returns nothing
local unit c = GetSpellAbilityUnit()
local location p1 = GetUnitLoc(c)
local location p2 = GetSpellTargetLoc()
local real dist = ( DistanceBetweenPoints(p1,p2) + 200)
local real inc = (dist/150)
local real angle = AngleBetweenPoints(p1,p2)
local timer t = CreateTimer()
local unit dmy = null
local boolean back = false
local real life = ( inc - (inc/7) )
call PolledWait(0.2)
call CreateNUnitsAtLoc( 1, 'u002', GetOwningPlayer(c), p1,angle)
set dmy = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( life, 'BTLF', dmy)
call SaveUnitHandleBJ(c, StringHashBJ("caster"), GetHandleIdBJ(t), udg_Lightc )
call SaveUnitHandleBJ(dmy, StringHashBJ("dummy"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(dist, StringHashBJ("dist"), GetHandleIdBJ(t), udg_Lightc )
call SaveBooleanBJ(back, StringHashBJ("back"), GetHandleIdBJ(t), udg_Lightc )
call SaveLocationHandleBJ(p1, StringHashBJ("p1"), GetHandleIdBJ(t), udg_Lightc )
call SaveLocationHandleBJ(p2, StringHashBJ("p2"), GetHandleIdBJ(t), udg_Lightc )
call TimerStart(t, 0.01, true, function lighting_move)
call PolledWait(inc)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_Lightc)
call DestroyTimer(t)
set c = null
set dmy = null
set inc = 0
set angle = 0
set dist = 0
set life = 0
call RemoveLocation(p2)
call RemoveLocation(p1)
endfunction
//===========================================================================
function InitTrig_LO takes nothing returns nothing
set gg_trg_LO = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_LO, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_LO, Condition( function Trig_lightshield_Conditions ) )
call TriggerAddAction( gg_trg_LO, function Trig_lightshield_Actions )
endfunction
function LM takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit dmy = LoadUnitHandleBJ(StringHashBJ("dummy"),GetHandleIdBJ(t), udg_Lightc)
local unit c = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(t), udg_Lightc)
local real angle = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(t), udg_Lightc)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(t), udg_Lightc)
local real dist = LoadRealBJ(StringHashBJ("dist"),GetHandleIdBJ(t), udg_Lightc)
local location p2 = GetUnitLoc(dmy)
local location p1 = null
local location p3 = GetUnitLoc(c)
local boolean back = LoadBooleanBJ(StringHashBJ("back"),GetHandleIdBJ(t), udg_Lightc)
if ( back == false ) then
set inc = ( dist / 150 )
set dist = dist - inc
else
set inc = ( dist / 150 )
set dist = dist + inc
set angle = AngleBetweenPoints(p2,p3)
endif
if ( inc < 1 ) then
set back = true
set angle = AngleBetweenPoints(p2,p3)
call SaveBooleanBJ(back, StringHashBJ("back"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t), udg_Lightc )
endif
set p1 = PolarProjectionBJ(p2, inc, angle)
call SetUnitPathing( dmy, false )
call SetUnitPositionLoc( dmy, p1 )
call RemoveLocation(p3)
call RemoveLocation(p2)
call RemoveLocation(p1)
call SaveRealBJ(dist, StringHashBJ("dist"), GetHandleIdBJ(t), udg_Lightc )
set t = null
set dmy = null
set inc = 0
set angle = 0
call DestroyTimer(t)
endfunction
function LOHC takes nothing returns boolean
return (GetSpellAbilityId() == 'A0AF')
endfunction
function LOHA takes nothing returns nothing
local unit c = GetSpellAbilityUnit()
local location p1 = GetUnitLoc(c)
local location p2 = GetSpellTargetLoc()
local real dist = ( DistanceBetweenPoints(p1,p2) + 200)
local real inc = (dist/150)
local real angle = AngleBetweenPoints(p1,p2)
local timer t = CreateTimer()
local unit dmy = null
local boolean back = false
local real life = ( inc - (inc/7) )
call PolledWait(0.2)
call CreateNUnitsAtLoc( 1, 'u002', GetOwningPlayer(c), p1,angle)
set dmy = GetLastCreatedUnit()
call UnitApplyTimedLifeBJ( life, 'BTLF', dmy)
call SetUnitAbilityLevelSwapped( 'A06W', dmy, GetUnitAbilityLevelSwapped('A0AF', c) )
call SaveUnitHandleBJ(c, StringHashBJ("caster"), GetHandleIdBJ(t), udg_Lightc )
call SaveUnitHandleBJ(dmy, StringHashBJ("dummy"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(angle, StringHashBJ("angle"), GetHandleIdBJ(t), udg_Lightc )
call SaveRealBJ(dist, StringHashBJ("dist"), GetHandleIdBJ(t), udg_Lightc )
call SaveBooleanBJ(back, StringHashBJ("back"), GetHandleIdBJ(t), udg_Lightc )
call SaveLocationHandleBJ(p1, StringHashBJ("p1"), GetHandleIdBJ(t), udg_Lightc )
call SaveLocationHandleBJ(p2, StringHashBJ("p2"), GetHandleIdBJ(t), udg_Lightc )
call TimerStart(t, 0.01, true, function LM)
call PolledWait(inc)
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_Lightc)
call DestroyTimer(t)
set c = null
set dmy = null
set inc = 0
set angle = 0
set dist = 0
set life = 0
call RemoveLocation(p2)
call RemoveLocation(p1)
endfunction
//===========================================================================
function InitTrig_LOH takes nothing returns nothing
set gg_trg_LOH = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_LOH, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_LOH, Condition( function LOHC ) )
call TriggerAddAction( gg_trg_LOH, function LOHA )
endfunction
function Trig_LB_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A0AR' )
endfunction
function Trig_LB_Func003Func001A takes nothing returns nothing
call UnitAddAbilityBJ( 'A0AS', GetEnumUnit() )
call SetUnitAbilityLevelSwapped( 'A0AS', GetEnumUnit(), GetUnitAbilityLevelSwapped('A0AR', GetSpellAbilityUnit()) )
endfunction
function Trig_LB_Func003Func006A takes nothing returns nothing
call UnitRemoveAbilityBJ( 'A0AS', GetEnumUnit() )
endfunction
function Trig_LB_Func003C takes nothing returns boolean
return IsUnitGroupEmptyBJ(udg_Temp_group1) == true
endfunction
function Trig_LB_Actions takes nothing returns nothing
set udg_temp_unit = GetSpellAbilityUnit()
set udg_Temp_group1 = GetUnitsOfTypeIdAll('u002')
if ( Trig_LB_Func003C() ) then
set udg_tpg = GetForceOfPlayer(GetOwningPlayer(udg_temp_unit))
call DisplayTextToForce( udg_tpg, "TRIGSTR_5625" )
set udg_temp_unit = null
call DestroyForce( udg_tpg)
call DestroyGroup(udg_Temp_group1)
else
call ForGroupBJ( udg_Temp_group1, function Trig_LB_Func003Func001A )
call DestroyGroup(udg_Temp_group1)
set udg_temp_unit = null
call TriggerSleepAction( 3.00 )
set udg_Temp_group1 = GetUnitsOfTypeIdAll('u002')
call ForGroupBJ( udg_Temp_group1, function Trig_LB_Func003Func006A )
call DestroyGroup(udg_Temp_group1)
endif
endfunction
//===========================================================================
function InitTrig_LB takes nothing returns nothing
set gg_trg_LB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_LB, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_LB, Condition( function Trig_LB_Conditions ) )
call TriggerAddAction( gg_trg_LB, function Trig_LB_Actions )
endfunction
function LFC takes nothing returns boolean
return ( ( GetSpellAbilityId() == 'A06P' ) or ( GetSpellAbilityId() == 'A06N' ))
endfunction
function LFE takes nothing returns nothing
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "chest", GetEnumUnit(), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl" ))
endfunction
function LFA takes nothing returns nothing
local unit c = GetSpellAbilityUnit()
local unit r = null
local unit t = GetSpellTargetUnit()
local group s = GetUnitsSelectedAll(GetOwningPlayer(c))
local location p = GetUnitLoc(t)
local location p1 = null
local real inc = 280.00
local real angle = GetUnitFacing(t)
local real angleb = 0
local integer n = CountUnitsInGroup(s)
local integer cont = 1
call SaveGroupHandleBJ( s, StringHashBJ("g"), GetHandleIdBJ(s), udg_cache )
call ForGroupBJ( s, function LFE )
call PolledWait( 0.40 )
loop
exitwhen cont > n
set p1 = PolarProjectionBJ(p, inc, angle)
set angleb = ( 360.00 / I2R(n) )
set r = GroupPickRandomUnit(s)
if ( IsUnitType(r, UNIT_TYPE_STRUCTURE) == true) then
call GroupRemoveUnitSimple(r, s )
else
call SetUnitPositionLocFacingLocBJ( r, p1, p )
endif
call RemoveLocation(p1)
set angle = ( angle - angleb )
call GroupRemoveUnitSimple( r, s )
set cont = cont + 1
endloop
set c = null
set r = null
set t = null
set inc = 0.00
set angle = 0.00
set angleb = 0.00
set cont = 0
set n = 0
call DestroyGroup (s)
call RemoveLocation(p)
endfunction
//===========================================================================
function InitTrig_LF takes nothing returns nothing
set gg_trg_LF = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_LF, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_LF, Condition( function LFC ) )
call TriggerAddAction( gg_trg_LF, function LFA )
endfunction
function Silverslash_move takes nothing returns nothing
local timer ti = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(ti), udg_cache)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(ti), udg_cache)
local real ang = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(ti), udg_cache)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
set inc = ( inc - 1 )
set p = GetUnitLoc(u)
call SetUnitPathing( u, false )
call SetUnitPositionLoc( u, p1 )
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(ti), udg_cache )
set u = null
set ti = null
call DestroyTimer(ti)
endfunction
function Trig_silverslashX_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A06H'
endfunction
function Trig_silverslashX_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local real inc = 30.00
local real ang = GetUnitFacing(u)
local timer te = CreateTimer()
local location p = GetUnitLoc(u)
local location p1 = null
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(te), udg_cache )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(te), udg_cache )
call SaveRealBJ(ang, StringHashBJ("angle"), GetHandleIdBJ(te), udg_cache )
call SaveLocationHandleBJ(p, StringHashBJ("p"), GetHandleIdBJ(te), udg_cache )
call TriggerSleepAction( 0.04 )
call UnitAddAbilityBJ( 'A06J', u )
call SetUnitAnimation( u, "Attack" )
call TimerStart(te, 0.02, true, function Silverslash_move)
call PolledWait(0.4)
call UnitRemoveAbilityBJ( 'A06J', u )
call SetUnitPathing( u, true )
call ResetUnitAnimation( u )
call FlushChildHashtableBJ(GetHandleIdBJ(te), udg_cache)
call DestroyTimer(te)
set u = null
set inc = 0
set ang = 0
call RemoveLocation(p)
call RemoveLocation(p1)
endfunction
//===========================================================================
function InitTrig_silverslashX takes nothing returns nothing
set gg_trg_silverslashX = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_silverslashX, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_silverslashX, Condition( function Trig_silverslashX_Conditions ) )
call TriggerAddAction( gg_trg_silverslashX, function Trig_silverslashX_Actions )
endfunction
function Masterslash_move takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(t), udg_cache)
local real inc = LoadRealBJ(StringHashBJ("inc"),GetHandleIdBJ(t), udg_cache)
local real ang = LoadRealBJ(StringHashBJ("angle"),GetHandleIdBJ(t), udg_cache)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
set inc = ( inc - 1 )
set p = GetUnitLoc(u)
call SetUnitPathing( u, false )
call SetUnitPositionLoc( u, p1 )
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t), udg_cache )
set u = null
set t = null
call DestroyTimer(t)
endfunction
function Trig_Masterslash_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A06L'
endfunction
function Trig_Masterslash_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local real inc = 30.00
local real ang = GetUnitFacing(u)
local timer t = CreateTimer()
local location p = GetUnitLoc(u)
local integer count = GetTriggerExecCount(GetTriggeringTrigger())
local location p1 = null
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(t), udg_cache )
call SaveRealBJ(inc, StringHashBJ("inc"), GetHandleIdBJ(t), udg_cache )
call SaveRealBJ(ang, StringHashBJ("angle"), GetHandleIdBJ(t), udg_cache )
call SaveLocationHandleBJ(p, StringHashBJ("inc"), GetHandleIdBJ(t), udg_cache )
call SaveIntegerBJ( count, StringHashBJ("id"), GetHandleIdBJ(t), udg_cache )
call UnitAddAbilityBJ( 'A06M', u )
call TriggerSleepAction( 0.04 )
call SetUnitAnimation( u, "Attack" )
call TimerStart(t, 0.02, true, function Masterslash_move)
call PolledWait(0.5)
call UnitRemoveAbilityBJ( 'A06M', u )
call SetUnitPathing( u, true )
call ResetUnitAnimation( u )
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_cache )
call DestroyTimer(t)
set u = null
set inc = 0
set ang = 0
call RemoveLocation(p)
call RemoveLocation(p1)
endfunction
//===========================================================================
function InitTrig_Masterslash takes nothing returns nothing
set gg_trg_Masterslash = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Masterslash, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Masterslash, Condition( function Trig_Masterslash_Conditions ) )
call TriggerAddAction( gg_trg_Masterslash, function Trig_Masterslash_Actions )
endfunction
function Bgcicle takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(StringHashBJ("caster"),GetHandleIdBJ(t), udg_cache)
local location p = GetUnitLoc(u)
call DestroyEffect(AddSpecialEffectLocBJ( p, "Environment\\NightElfBuildingFire\\ElfLargeBuildingFire1.mdl" ))
call DestroyEffect(AddSpecialEffectTargetUnitBJ( "overhead", u, "Environment\\SmallBuildingFire\\SmallBuildingFire2.mdl" ))
call DestroyEffect(AddSpecialEffectTargetUnitBJ( "chest", u, "Environment\\SmallBuildingFire\\SmallBuildingFire2.mdl" ))
call UnitDamagePointLoc( u, 0, 300.00, p, (1.2 * I2R(GetUnitAbilityLevelSwapped('A0BE', u))), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE )
call RemoveLocation(p)
set u = null
set t = null
call DestroyTimer(t)
endfunction
function bgcs takes nothing returns boolean
return GetSpellAbilityId() == 'A0BE'
endfunction
function bgca takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local timer t = CreateTimer()
call SaveUnitHandleBJ(u, StringHashBJ("caster"), GetHandleIdBJ(t), udg_cache )
call TimerStart(t, 0.05, true, function Bgcicle)
call PolledWait(1)
loop
exitwhen ( UnitHasBuffBJ(u, 'B026') == false )
call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1))
endloop
call FlushChildHashtableBJ(GetHandleIdBJ(t), udg_cache )
call DestroyTimer(t)
set u = null
endfunction
//===========================================================================
function InitTrig_BG takes nothing returns nothing
set gg_trg_BG = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_BG, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_BG, Condition( function bgcs ) )
call TriggerAddAction( gg_trg_BG, function bgca )
endfunction
function Trig_Elven_militia_Conditions takes nothing returns boolean
return (GetUnitTypeId(GetAttackedUnitBJ()) == 'n02C')
endfunction
function Trig_Elven_militia_Actions takes nothing returns nothing
local integer I = GetRandomInt(1, 7)
local unit At = GetAttackedUnitBJ()
if ( I == 5 ) then
call GroupRemoveUnitSimple(At, udg_Grupo_rescate )
call UnitAddAbilityBJ( 'A06A', At )
call IssueImmediateOrderBJ( At, "mirrorimage" )
call PolledWait(1)
call UnitRemoveAbilityBJ( 'A06A', At )
else
endif
set At = null
set I = 0
endfunction
//===========================================================================
function InitTrig_Elven_militia takes nothing returns nothing
set gg_trg_Elven_militia = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Elven_militia, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Elven_militia, Condition( function Trig_Elven_militia_Conditions ) )
call TriggerAddAction( gg_trg_Elven_militia, function Trig_Elven_militia_Actions )
endfunction
function Trig_Elven_warrior_Conditions takes nothing returns boolean
return (GetUnitTypeId(GetAttackedUnitBJ()) == 'h02B')
endfunction
function Trig_Elven_warrior_Actions takes nothing returns nothing
local integer I = GetRandomInt(1, 6)
local unit At = GetAttackedUnitBJ()
if ( I == 5 ) then
call GroupRemoveUnitSimple(At, udg_Grupo_rescate )
call UnitAddAbilityBJ( 'A06A', At )
call IssueImmediateOrderBJ( At, "mirrorimage" )
call PolledWait(1)
call UnitRemoveAbilityBJ( 'A06A', At )
else
endif
set At = null
set I = 0
endfunction
//===========================================================================
function InitTrig_Elven_warrior takes nothing returns nothing
set gg_trg_Elven_warrior = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Elven_warrior, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Elven_warrior, Condition( function Trig_Elven_warrior_Conditions ) )
call TriggerAddAction( gg_trg_Elven_warrior, function Trig_Elven_warrior_Actions )
endfunction
function PFC takes nothing returns boolean
return ( GetSpellAbilityId() == 'A06E' )
endfunction
function PFA takes nothing returns nothing
local unit p = GetSpellAbilityUnit()
call UnitAddAbilityBJ( 'A06D', p )
call TriggerSleepAction( 10.00 )
call UnitRemoveAbilityBJ( 'A06D', p )
set p = null
endfunction
//===========================================================================
function InitTrig_phoenix_fire takes nothing returns nothing
set gg_trg_phoenix_fire = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_phoenix_fire, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_phoenix_fire, Condition( function PFC) )
call TriggerAddAction( gg_trg_phoenix_fire, function PFA )
endfunction
function GUT takes nothing returns boolean
return (( GetUnitTypeId(GetAttacker()) == 'h00V' ) or ( GetUnitTypeId(GetAttacker()) == 'h00X' ) or ( GetUnitTypeId(GetAttacker()) == 'n01U' ) or ( GetUnitTypeId(GetAttacker()) == 'O00D' ))
endfunction
function BC takes nothing returns boolean
return (( GUT()) and ( GetUnitTypeId(GetAttackedUnitBJ()) == 'o00E' ))
endfunction
function BA takes nothing returns nothing
local unit t = GetAttackedUnitBJ()
local unit a = GetAttacker()
local location pp
local location tp
call TriggerSleepAction( 0.20 )
set tp = GetUnitLoc(t)
set pp = PolarProjectionBJ(tp, 500.00, GetUnitFacing(a))
call UnitAddAbilityBJ( 'A04Z', t)
call IssuePointOrderLocBJ( t, "shockwave", pp)
call AddSpecialEffectLocBJ( tp, "Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl" )
call RemoveLocation(tp)
call RemoveLocation(pp)
call RemoveUnit( t )
set t = null
set a = null
endfunction
//===========================================================================
function InitTrig_Bowling takes nothing returns nothing
set gg_trg_Bowling = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Bowling, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Bowling, Condition( function BC ) )
call TriggerAddAction( gg_trg_Bowling, function BA )
endfunction
function Trig_basher_pierce_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A049'
endfunction
function Trig_basher_pierce_Actions takes nothing returns nothing
set udg_bashercaster = GetSpellAbilityUnit()
set udg_bashertarget = GetSpellTargetUnit()
set udg_basher_targetpoint = GetUnitLoc(udg_bashertarget)
set udg_basher_dmg = ( ( 3.00 + ( 0.50 * I2R(GetUnitAbilityLevelSwapped('A049', udg_bashercaster)) ) ) * I2R(GetHeroStatBJ(bj_HEROSTAT_STR, udg_bashercaster, true)) )
set udg_basher_txt = I2S(R2I(udg_basher_dmg))
call UnitDamageTargetBJ( udg_bashercaster, udg_bashertarget, udg_basher_dmg, ATTACK_TYPE_PIERCE, DAMAGE_TYPE_NORMAL )
call UnitDamagePointLoc( udg_bashertarget, 0.10, 250.00, udg_basher_targetpoint, ( ( 0.80 + ( 0.20 * I2R(GetUnitAbilityLevelSwapped('A049', udg_bashercaster)) ) ) * I2R(GetHeroStatBJ(bj_HEROSTAT_STR, udg_bashercaster, true)) ), ATTACK_TYPE_PIERCE, DAMAGE_TYPE_NORMAL )
call TriggerExecute( gg_trg_BasherTxt )
endfunction
//===========================================================================
function InitTrig_basher_pierce takes nothing returns nothing
set gg_trg_basher_pierce = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_basher_pierce, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_basher_pierce, Condition( function Trig_basher_pierce_Conditions ) )
call TriggerAddAction( gg_trg_basher_pierce, function Trig_basher_pierce_Actions )
endfunction
function Trig_BasherTxt_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ("+" + udg_basher_txt, udg_bashertarget, 0, 14.00, 100, 0.00, 0.00, 0 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_BasherTxt takes nothing returns nothing
set gg_trg_BasherTxt = CreateTrigger( )
call TriggerAddAction( gg_trg_BasherTxt, function Trig_BasherTxt_Actions )
endfunction
function KSC takes nothing returns boolean
return GetSpellAbilityId() == 'A04U'
endfunction
function KSA takes nothing returns nothing
local unit kg = GetSpellAbilityUnit()
local unit kd = GetSpellTargetUnit()
local real kl = ( GetUnitLifePercent(kg) / ( 6.00 - I2R(GetUnitAbilityLevelSwapped(GetSpellAbilityId(), kg)) ) )
local real kv = GetUnitStateSwap(UNIT_STATE_LIFE, kd)
call SetUnitLifeBJ( kg, ( GetUnitStateSwap(UNIT_STATE_LIFE, kg) + kv ) )
call SetUnitLifePercentBJ( kd, ( GetUnitLifePercent(kg) - kl ) )
set kg = null
set kd = null
set kl = 0
set kv = 0
endfunction
//===========================================================================
function InitTrig_KS takes nothing returns nothing
set gg_trg_KS = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_KS, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_KS, Condition( function KSC) )
call TriggerAddAction( gg_trg_KS, function KSA )
endfunction
function OSC takes nothing returns boolean
return GetSpellAbilityId() == 'A051'
endfunction
function OSA takes nothing returns nothing
set udg_Ogslam_Atkunit = GetSpellAbilityUnit()
set udg_Ogslam_Targetunit = GetSpellTargetUnit()
call SetUnitFacingToFaceUnitTimed( udg_Ogslam_Targetunit, udg_Ogslam_Atkunit, 0 )
set udg_ogslam_cont = 31
call TriggerSleepAction( 0.35 )
call AddSpecialEffectTargetUnitBJ( "weapon", udg_Ogslam_Atkunit, "Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
set udg_Ogslam_angle = GetUnitFacing(udg_Ogslam_Atkunit)
call AddSpecialEffectTargetUnitBJ( "origin", udg_Ogslam_Targetunit, "Abilities\\Weapons\\RedDragonBreath\\RedDragonMissile.mdl" )
set udg_Ogreslam_effect = GetLastCreatedEffectBJ()
call EnableTrigger( gg_trg_OgreslamB )
call TriggerExecute( gg_trg_OgreslamB )
call TriggerSleepAction( 0.65 )
call DisableTrigger( gg_trg_OgreslamB )
call DestroyEffectBJ( udg_Ogreslam_effect )
call SetUnitPathing( udg_Ogslam_Targetunit, true )
set udg_Ogslam_increment = 35.00
endfunction
//===========================================================================
function InitTrig_Ogreslam takes nothing returns nothing
set gg_trg_Ogreslam = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Ogreslam, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Ogreslam, Condition( function OSC ) )
call TriggerAddAction( gg_trg_Ogreslam, function OSA )
endfunction
function Trig_Ogslamdmg_Actions takes nothing returns nothing
local texttag t=CreateTextTagUnitBJ("+" + udg_Ogslamtxt, udg_Ogslam_Targetunit, 0, 12.00, 100, 0.00, 0.00, 0 )
call SetTextTagVelocityBJ(t,64,90)
call PolledWait(1)
call DestroyTextTag(t)
endfunction
//===========================================================================
function InitTrig_Ogslamdmg takes nothing returns nothing
set gg_trg_Ogslamdmg = CreateTrigger( )
call TriggerAddAction( gg_trg_Ogslamdmg, function Trig_Ogslamdmg_Actions )
endfunction
function Trig_OgreslamB_Actions takes nothing returns nothing
set udg_ogslam_cont = ( udg_ogslam_cont - 1 )
set udg_Ogslam_increment = ( udg_Ogslam_increment - 1.00 )
set udg_Ogslam_atkpoint = GetUnitLoc(udg_Ogslam_Atkunit)
set udg_Ogslam_atkedpoint = GetUnitLoc(udg_Ogslam_Targetunit)
set udg_Ogslam_destinypoint = PolarProjectionBJ(udg_Ogslam_atkedpoint, udg_Ogslam_increment, udg_Ogslam_angle)
call SetUnitPathing( udg_Ogslam_Targetunit, false )
call SetUnitPositionLoc( udg_Ogslam_Targetunit, udg_Ogslam_destinypoint )
call UnitDamagePointLoc( udg_Ogslam_Targetunit, 0.01, 150.00, udg_Ogslam_atkedpoint, ( 500.00 / ( udg_Ogslam_increment - 1 ) ), ATTACK_TYPE_PIERCE, DAMAGE_TYPE_NORMAL )
if (udg_ogslam_cont == 0) then
set udg_Ogslamint = R2I(( 500.00 / ( udg_Ogslam_increment - 1 ) ))
set udg_Ogslamtxt = I2S(udg_Ogslamint)
call TriggerExecute( gg_trg_Ogslamdmg )
endif
call RemoveLocation(udg_Ogslam_atkpoint)
call RemoveLocation(udg_Ogslam_atkedpoint)
call RemoveLocation(udg_Ogslam_destinypoint)
endfunction
//===========================================================================
function InitTrig_OgreslamB takes nothing returns nothing
set gg_trg_OgreslamB = CreateTrigger( )
call DisableTrigger( gg_trg_OgreslamB )
call TriggerRegisterTimerEventPeriodic( gg_trg_OgreslamB, 0.02 )
call TriggerAddAction( gg_trg_OgreslamB, function Trig_OgreslamB_Actions )
endfunction
function VOCC takes nothing returns boolean
return GetSpellAbilityId() == 'A04G'
endfunction
function VOA takes nothing returns nothing
set udg_VampireOrde_caster = GetSpellAbilityUnit()
set udg_VampireOrde_pointa = GetUnitLoc(udg_VampireOrde_caster)
set udg_VampireOrde_rect = RectFromCenterSizeBJ(udg_VampireOrde_pointa, 1000.00, 1000.00)
call StartTimerBJ( udg_VampireOrde_timer, false, ( 8.00 + ( 2.00 * I2R(GetUnitAbilityLevelSwapped('A04G', udg_VampireOrde_caster)) ) ) )
call TriggerSleepAction( 1.00 )
set udg_VampireOrde_face = GetUnitFacing(udg_VampireOrde_caster)
call EnableTrigger( gg_trg_Vampireordeloop )
call EnableTrigger( gg_trg_VampireordelooB )
endfunction
//===========================================================================
function InitTrig_Vampireordecast takes nothing returns nothing
set gg_trg_Vampireordecast = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Vampireordecast, EVENT_PLAYER_UNIT_SPELL_CHANNEL )
call TriggerAddCondition( gg_trg_Vampireordecast, Condition( function VOCC) )
call TriggerAddAction( gg_trg_Vampireordecast, function VOA)
endfunction
function Trig_grand_fire_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A03P'
endfunction
function Trig_grand_fire_Func003002002 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(udg_flask_attaking)) == true )
endfunction
function Trig_grand_fire_Func005Func001C takes nothing returns boolean
return ( UnitHasBuffBJ(GetEnumUnit(), 'B00L') == true )
endfunction
function Trig_grand_fire_Func005A takes nothing returns nothing
if ( Trig_grand_fire_Func005Func001C() ) then
set udg_flask_unit_pointB = GetUnitLoc(GetEnumUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u016', GetOwningPlayer(udg_flask_attaking), udg_flask_unit_pointB, udg_flask_unit_pointB )
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "breathoffire", PolarProjectionBJ(udg_flask_unit_pointB, 0.00, GetUnitFacing(GetLastCreatedUnit())) )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_flask_unit_pointB)
endif
endfunction
function Trig_grand_fire_Actions takes nothing returns nothing
set udg_flask_attaking = GetSpellAbilityUnit()
set udg_flask_unit_point = GetSpellTargetLoc()
set udg_flask_group = GetUnitsInRectMatching(RectFromCenterSizeBJ(udg_flask_unit_point, 600.00, 600.00), Condition(function Trig_grand_fire_Func003002002))
call TriggerSleepAction( 1.00 )
call ForGroupBJ( udg_flask_group, function Trig_grand_fire_Func005A )
call DestroyGroup (udg_flask_group)
call RemoveLocation(udg_flask_unit_point)
endfunction
//===========================================================================
function InitTrig_grand_fire takes nothing returns nothing
set gg_trg_grand_fire = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_grand_fire, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_grand_fire, Condition( function Trig_grand_fire_Conditions ) )
call TriggerAddAction( gg_trg_grand_fire, function Trig_grand_fire_Actions )
endfunction
function Trig_vampiredead_Conditions takes nothing returns boolean
return ( GetDyingUnit() == udg_vampire_unit )
endfunction
function Trig_vampiredead_Actions takes nothing returns nothing
call DisableTrigger( gg_trg_daytime )
call DisableTrigger( gg_trg_nighttime )
endfunction
//===========================================================================
function InitTrig_vampiredead takes nothing returns nothing
set gg_trg_vampiredead = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_vampiredead, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_vampiredead, Condition( function Trig_vampiredead_Conditions ) )
call TriggerAddAction( gg_trg_vampiredead, function Trig_vampiredead_Actions )
endfunction
function Trig_breathdeath_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A03I'
endfunction
function Trig_breathdeath_Func004C takes nothing returns boolean
return GetUnitTypeId(udg_Damned_fire_caster) == 'U012'
endfunction
function Trig_breathdeath_Actions takes nothing returns nothing
set udg_Damned_fire_caster = GetSpellAbilityUnit()
set udg_Dead_time = true
call StartTimerBJ( udg_death_t, false, 1.00 )
if ( Trig_breathdeath_Func004C() ) then
call UnitResetCooldown( udg_Damned_fire_caster )
call IssueImmediateOrderBJ( udg_Damned_fire_caster, "unbearform" )
endif
endfunction
//===========================================================================
function InitTrig_breathdeath takes nothing returns nothing
set gg_trg_breathdeath = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_breathdeath, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_breathdeath, Condition( function Trig_breathdeath_Conditions ) )
call TriggerAddAction( gg_trg_breathdeath, function Trig_breathdeath_Actions )
endfunction
function BDCC takes nothing returns boolean
return GetSpellAbilityId() == 'A03I'
endfunction
function BDC takes nothing returns boolean
return GetUnitTypeId(udg_Damned_fire_caster) == 'U012'
endfunction
function BDA takes nothing returns nothing
set udg_Damned_fire_caster = GetSpellAbilityUnit()
if ( BDC() ) then
call IssueImmediateOrderBJ( udg_Damned_fire_caster, "unbearform" )
endif
endfunction
//===========================================================================
function InitTrig_breathdeath_back takes nothing returns nothing
set gg_trg_breathdeath_back = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_breathdeath_back, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( gg_trg_breathdeath_back, Condition( function BDCC) )
call TriggerAddAction( gg_trg_breathdeath_back, function BDA )
endfunction
function DRC takes nothing returns boolean
return (( udg_Dead_time == true ) and (GetUnitTypeId(GetKillingUnitBJ()) == 'U011') and (IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == false))
endfunction
function DRA takes nothing returns nothing
set udg_death_point = GetUnitLoc(GetDyingUnit())
call ReplaceUnitBJ( GetDyingUnit(), 'u010', bj_UNIT_STATE_METHOD_ABSOLUTE )
call CreateNUnitsAtLoc( 1, 'u010', GetOwningPlayer(GetKillingUnitBJ()), udg_death_point, GetUnitFacing(GetKillingUnitBJ()) )
call RemoveLocation(udg_death_point)
endfunction
//===========================================================================
function InitTrig_Deathreplace takes nothing returns nothing
set gg_trg_Deathreplace = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Deathreplace, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Deathreplace, Condition( function DRC) )
call TriggerAddAction( gg_trg_Deathreplace, function DRA)
endfunction
function BBC takes nothing returns boolean
return GetSpellAbilityId() == 'A039'
endfunction
function BBA takes nothing returns nothing
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00X', GetOwningPlayer(udg_bonebag_caster), udg_bonebag_targetB, udg_bonebag_targetB )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "innerfire", GetSpellAbilityUnit() )
call SetUnitPositionLoc( udg_bonebag_caster, udg_bonebag_target )
if ( GetUnitTypeId(udg_bonebag_caster) == 'u00Z' ) then
call IssueImmediateOrderBJ( udg_bonebag_caster, "unbearform" )
else
endif
call UnitDamagePointLoc( udg_bonebag_caster, 0.02, 300.00, udg_bonebag_targetB, 20.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ( udg_bonebag_castp, "units\\undead\\Skeleton\\Skeleton.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_bonebag_targetB)
call RemoveLocation(udg_bonebag_target)
call RemoveLocation(udg_bonebag_castp)
endfunction
//===========================================================================
function InitTrig_bonebag takes nothing returns nothing
set gg_trg_bonebag = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bonebag, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( gg_trg_bonebag, Condition( function BBC) )
call TriggerAddAction( gg_trg_bonebag, function BBA)
endfunction
function BBHC takes nothing returns boolean
return GetSpellAbilityId() == 'A03F'
endfunction
function BBHA takes nothing returns nothing
call SelectUnitForPlayerSingle( udg_bonebag_caster, GetOwningPlayer(udg_bonebag_caster) )
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00X', GetOwningPlayer(udg_bonebag_caster), udg_bonebag_targetB, udg_bonebag_targetB )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "innerfire", GetSpellAbilityUnit() )
call SetUnitPositionLoc( udg_bonebag_caster, udg_bonebag_target )
if (GetUnitTypeId(udg_bonebag_caster) == 'U012') then
call IssueImmediateOrderBJ( udg_bonebag_caster, "unbearform" )
else
endif
call UnitDamagePointLoc( udg_bonebag_caster, 0.02, 300.00, udg_bonebag_targetB, 70.00, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL )
call RemoveLocation(udg_bonebag_targetB)
call RemoveLocation(udg_bonebag_target)
call RemoveLocation(udg_bonebag_castp)
endfunction
//===========================================================================
function InitTrig_bonebagH takes nothing returns nothing
set gg_trg_bonebagH = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bonebagH, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( gg_trg_bonebagH, Condition( function BBHC) )
call TriggerAddAction( gg_trg_bonebagH, function BBHA)
endfunction
function BBCC takes nothing returns boolean
return GetSpellAbilityId() == 'A039'
endfunction
function BBCA takes nothing returns nothing
set udg_bonebag_caster = GetSpellAbilityUnit()
if ( GetUnitTypeId(udg_bonebag_caster) == 'u00Z') then
call UnitResetCooldown( udg_bonebag_caster )
endif
set udg_bonebag_Utarget = GetSpellTargetUnit()
set udg_bonebag_targetB = GetUnitLoc(udg_bonebag_Utarget)
set udg_bonebag_castp = GetUnitLoc(udg_bonebag_caster)
set udg_bonebag_angle = GetUnitFacing(udg_bonebag_Utarget)
set udg_bonebag_target = PolarProjectionBJ(udg_bonebag_targetB, -50.00, udg_bonebag_angle)
endfunction
//===========================================================================
function InitTrig_bonebagCall takes nothing returns nothing
set gg_trg_bonebagCall = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bonebagCall, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_bonebagCall, Condition( function BBCC) )
call TriggerAddAction( gg_trg_bonebagCall, function BBCA)
endfunction
function BBHCC takes nothing returns boolean
return GetSpellAbilityId() == 'A03F'
endfunction
function BBHCA takes nothing returns nothing
set udg_bonebag_caster = GetSpellAbilityUnit()
if ( GetUnitTypeId(udg_bonebag_caster) == 'U012' ) then
call UnitResetCooldown( udg_bonebag_caster )
endif
set udg_bonebag_Utarget = GetSpellTargetUnit()
set udg_bonebag_targetB = GetUnitLoc(udg_bonebag_Utarget)
set udg_bonebag_castp = GetUnitLoc(udg_bonebag_caster)
set udg_bonebag_angle = GetUnitFacing(udg_bonebag_Utarget)
set udg_bonebag_target = PolarProjectionBJ(udg_bonebag_targetB, -100.00, udg_bonebag_angle)
call AddSpecialEffectLocBJ( udg_bonebag_castp, "units\\undead\\Skeleton\\Skeleton.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
//===========================================================================
function InitTrig_bonebagHCall takes nothing returns nothing
set gg_trg_bonebagHCall = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bonebagHCall, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_bonebagHCall, Condition( function BBHCC) )
call TriggerAddAction( gg_trg_bonebagHCall, function BBHCA)
endfunction
function Trig_Disarm_Conditions takes nothing returns boolean
return ( ( GetSpellAbilityId() == 'A03C' ) and ( GetUnitTypeId(GetSpellAbilityUnit()) == 'U011' ))
endfunction
function Trig_Disarm_Func008002 takes nothing returns nothing
call SetUnitPathing( GetEnumUnit(), false )
endfunction
function Trig_Disarm_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call SetUnitPathing( GetSpellAbilityUnit(), false )
call AddSpecialEffectLocBJ( udg_temp_point, "units\\undead\\Skeleton\\Skeleton.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_temp_point)
call TriggerSleepAction( 0.50 )
set udg_Temp_group2 = GetUnitsOfTypeIdAll('U012')
call ForGroupBJ( udg_Temp_group2, function Trig_Disarm_Func008002 )
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Disarm takes nothing returns nothing
set gg_trg_Disarm = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Disarm, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Disarm, Condition( function Trig_Disarm_Conditions ) )
call TriggerAddAction( gg_trg_Disarm, function Trig_Disarm_Actions )
endfunction
function Trig_Disarm_Unit_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A03J'
endfunction
function Trig_Disarm_Unit_Func008002 takes nothing returns nothing
call SetUnitPathing( GetEnumUnit(), false )
endfunction
function Trig_Disarm_Unit_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call SetUnitPathing( GetSpellAbilityUnit(), false )
call AddSpecialEffectLocBJ( udg_temp_point, "units\\undead\\Skeleton\\Skeleton.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_temp_point)
call TriggerSleepAction( 0.50 )
set udg_Temp_group2 = GetUnitsOfTypeIdAll('u00Z')
call ForGroupBJ( udg_Temp_group2, function Trig_Disarm_Unit_Func008002 )
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Disarm_Unit takes nothing returns nothing
set gg_trg_Disarm_Unit = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Disarm_Unit, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Disarm_Unit, Condition( function Trig_Disarm_Unit_Conditions ) )
call TriggerAddAction( gg_trg_Disarm_Unit, function Trig_Disarm_Unit_Actions )
endfunction
function Trig_Rearm_Conditions takes nothing returns boolean
return (( GetSpellAbilityId() == 'A03C' ) and ( GetUnitTypeId(GetSpellAbilityUnit()) == 'U012' ))
endfunction
function Trig_Rearm_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call SetUnitPathing( GetSpellAbilityUnit(), true )
call RemoveLocation(udg_temp_point)
endfunction
//===========================================================================
function InitTrig_Rearm takes nothing returns nothing
set gg_trg_Rearm = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Rearm, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Rearm, Condition( function Trig_Rearm_Conditions ) )
call TriggerAddAction( gg_trg_Rearm, function Trig_Rearm_Actions )
endfunction
function Trig_Rearm_Unit_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A03J'
endfunction
function Trig_Rearm_Unit_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call SetUnitPathing( GetSpellAbilityUnit(), true )
call RemoveLocation(udg_temp_point)
endfunction
//===========================================================================
function InitTrig_Rearm_Unit takes nothing returns nothing
set gg_trg_Rearm_Unit = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Rearm_Unit, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Rearm_Unit, Condition( function Trig_Rearm_Unit_Conditions ) )
call TriggerAddAction( gg_trg_Rearm_Unit, function Trig_Rearm_Unit_Actions )
endfunction
function Trig_brutal_hit_Actions takes nothing returns nothing
set udg_brutal_increment = ( udg_brutal_increment - 2.00 )
set udg_brutal_angle = GetUnitFacing(udg_brutalHit_unit)
set udg_brutal_tmp = GetUnitLoc(udg_brutalHit_unit)
set udg_brutal_tmp1 = GetUnitLoc(udg_brutalHit_target)
set udg_brutal_tmp2 = PolarProjectionBJ(udg_brutal_tmp, udg_brutal_increment, udg_brutal_angle)
call SetUnitPositionLoc( udg_brutalHit_unit, udg_brutal_tmp2 )
call RemoveLocation(udg_brutal_tmp)
call RemoveLocation(udg_brutal_tmp1)
call RemoveLocation(udg_brutal_tmp2)
endfunction
//===========================================================================
function InitTrig_brutal_hit takes nothing returns nothing
set gg_trg_brutal_hit = CreateTrigger( )
call DisableTrigger( gg_trg_brutal_hit )
call TriggerRegisterTimerEventPeriodic( gg_trg_brutal_hit, 0.04 )
call TriggerAddAction( gg_trg_brutal_hit, function Trig_brutal_hit_Actions )
endfunction
function Trig_brutal_hitA_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A01W'
endfunction
function Trig_brutal_hitA_Actions takes nothing returns nothing
call TriggerSleepAction( 0.20 )
set udg_brutalHit_unit = GetSpellAbilityUnit()
set udg_brutalHit_target = GetSpellTargetUnit()
set udg_temp_point2 = GetUnitLoc(udg_brutalHit_target)
call SetUnitPathing( udg_brutalHit_unit, false )
call EnableTrigger( gg_trg_brutal_hit )
call TriggerExecute( gg_trg_brutal_hit )
call TriggerSleepAction( 0.24 )
call DisableTrigger( gg_trg_brutal_hit )
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00F', GetOwningPlayer(udg_brutalHit_unit), udg_temp_point2, GetUnitLoc(udg_brutalHit_target) )
call UnitApplyTimedLifeBJ( 0.70, 'BTLF', bj_lastCreatedUnit )
call SetUnitPathing( udg_brutalHit_unit, true )
set udg_brutalHit_unit = null
set udg_brutalHit_target = null
set udg_brutal_increment = 30.00
call RemoveLocation(udg_temp_point2)
endfunction
//===========================================================================
function InitTrig_brutal_hitA takes nothing returns nothing
set gg_trg_brutal_hitA = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_brutal_hitA, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_brutal_hitA, Condition( function Trig_brutal_hitA_Conditions ) )
call TriggerAddAction( gg_trg_brutal_hitA, function Trig_brutal_hitA_Actions )
endfunction
function Trig_bat_storm_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A038'
endfunction
function Trig_bat_storm_Actions takes nothing returns nothing
set udg_Vampire_pos = GetSpellTargetLoc()
set udg_bat_caster = GetSpellAbilityUnit()
set udg_summoner_bat = GetOwningPlayer(udg_bat_caster)
set udg_level_bat = GetUnitAbilityLevelSwapped('A038', udg_bat_caster)
set udg_bat_storm_count = 1
loop
exitwhen udg_bat_storm_count > udg_level_bat
set udg_bat_real = I2R(udg_bat_storm_count)
set udg_level_batstorm = ( 90.00 * udg_bat_real )
set udg_Vampire_rot = PolarProjectionBJ(udg_Vampire_pos, ( 65.00 * I2R(udg_level_bat) ), udg_level_batstorm)
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00W', udg_summoner_bat, udg_Vampire_rot, udg_Vampire_pos )
call UnitApplyTimedLifeBJ( 22.00, 'BTLF', GetLastCreatedUnit() )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "locustswarm" )
call RemoveLocation(udg_Vampire_rot)
set udg_bat_storm_count = udg_bat_storm_count + 1
endloop
call RemoveLocation(udg_Vampire_pos)
endfunction
//===========================================================================
function InitTrig_bat_storm takes nothing returns nothing
set gg_trg_bat_storm = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bat_storm, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_bat_storm, Condition( function Trig_bat_storm_Conditions ) )
call TriggerAddAction( gg_trg_bat_storm, function Trig_bat_storm_Actions )
endfunction
function Trig_bloodyAura_Conditions takes nothing returns boolean
return GetItemTypeId(GetManipulatedItem()) == 'I00B'
endfunction
function Trig_bloodyAura_Actions takes nothing returns nothing
call UnitAddAbilityBJ( 'A02I', GetManipulatingUnit() )
endfunction
//===========================================================================
function InitTrig_bloodyAura takes nothing returns nothing
set gg_trg_bloodyAura = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bloodyAura, EVENT_PLAYER_UNIT_PICKUP_ITEM )
call TriggerAddCondition( gg_trg_bloodyAura, Condition( function Trig_bloodyAura_Conditions ) )
call TriggerAddAction( gg_trg_bloodyAura, function Trig_bloodyAura_Actions )
endfunction
function Trig_bloodyAuraoff_Conditions takes nothing returns boolean
return GetItemTypeId(GetManipulatedItem()) == 'I00B'
endfunction
function Trig_bloodyAuraoff_Actions takes nothing returns nothing
call UnitRemoveAbilityBJ( 'A02I', GetManipulatingUnit() )
endfunction
//===========================================================================
function InitTrig_bloodyAuraoff takes nothing returns nothing
set gg_trg_bloodyAuraoff = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_bloodyAuraoff, EVENT_PLAYER_UNIT_DROP_ITEM )
call TriggerAddCondition( gg_trg_bloodyAuraoff, Condition( function Trig_bloodyAuraoff_Conditions ) )
call TriggerAddAction( gg_trg_bloodyAuraoff, function Trig_bloodyAuraoff_Actions )
endfunction
function Trig_battlepressence_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A02X' ) ) then
return false
endif
return true
endfunction
function Trig_battlepressence_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00N', GetOwningPlayer(GetSpellAbilityUnit()), udg_temp_point, udg_temp_point )
call UnitApplyTimedLifeBJ( 0.50, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_temp_point)
endfunction
//===========================================================================
function InitTrig_battlepressence takes nothing returns nothing
set gg_trg_battlepressence = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_battlepressence, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_battlepressence, Condition( function Trig_battlepressence_Conditions ) )
call TriggerAddAction( gg_trg_battlepressence, function Trig_battlepressence_Actions )
endfunction
function Trig_Condena_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00L'
endfunction
function Trig_Condena_Func007A takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "purge", GroupPickRandomUnit(udg_Temp_group1) )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetEnumUnit() )
endfunction
function Trig_Condena_Actions takes nothing returns nothing
set udg_temp_region = RectFromCenterSizeBJ(GetUnitLoc(GetSpellTargetUnit()), 700.00, 700.00)
set udg_Temp_group1 = GetUnitsInRectAll(udg_temp_region)
set udg_rand_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 20, 'u007', GetOwningPlayer(GetSpellAbilityUnit()), udg_rand_point, udg_rand_point )
set udg_Temp_group2 = GetLastCreatedGroup()
call RemoveLocation(udg_rand_point)
call ForGroupBJ( udg_Temp_group2, function Trig_Condena_Func007A )
call RemoveRect(udg_temp_region)
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Condena takes nothing returns nothing
set gg_trg_Condena = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Condena, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Condena, Condition( function Trig_Condena_Conditions ) )
call TriggerAddAction( gg_trg_Condena, function Trig_Condena_Actions )
endfunction
function Trig_Trapping_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A011'
endfunction
function Trig_Trapping_Func006002 takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "ensnare", GroupPickRandomUnit(udg_Temp_group1) )
endfunction
function Trig_Trapping_Func007002 takes nothing returns nothing
call UnitApplyTimedLifeBJ( 0.50, 'BTLF', GetEnumUnit() )
endfunction
function Trig_Trapping_Actions takes nothing returns nothing
set udg_temp_region = RectFromCenterSizeBJ(GetUnitLoc(GetSpellTargetUnit()), 700.00, 700.00)
set udg_Temp_group1 = GetUnitsInRectAll(udg_temp_region)
set udg_rand_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 20, 'u007', GetOwningPlayer(GetSpellAbilityUnit()), udg_rand_point, udg_rand_point )
set udg_Temp_group2 = GetLastCreatedGroup()
call ForGroupBJ( udg_Temp_group2, function Trig_Trapping_Func006002 )
call ForGroupBJ( udg_Temp_group2, function Trig_Trapping_Func007002 )
call RemoveRect(udg_temp_region)
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Trapping takes nothing returns nothing
set gg_trg_Trapping = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Trapping, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Trapping, Condition( function Trig_Trapping_Conditions ) )
call TriggerAddAction( gg_trg_Trapping, function Trig_Trapping_Actions )
endfunction
function Trig_holylight_Conditions takes nothing returns boolean
return (( GetSpellAbilityId() == 'A00J' ) and ( GetUnitTypeId(GetSpellAbilityUnit()) == 'H00O' ))
endfunction
function Trig_holylight_Func006002 takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "holybolt", GroupPickRandomUnit(udg_Temp_group1) )
endfunction
function Trig_holylight_Func007002 takes nothing returns nothing
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetEnumUnit() )
endfunction
function Trig_holylight_Actions takes nothing returns nothing
set udg_temp_region = RectFromCenterSizeBJ(GetUnitLoc(GetSpellAbilityUnit()), 700.00, 700.00)
set udg_Temp_group1 = GetUnitsInRectOfPlayer(udg_temp_region, GetOwningPlayer(GetSpellAbilityUnit()))
set udg_rand_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 4, 'u009', GetOwningPlayer(GetSpellAbilityUnit()), udg_rand_point, udg_rand_point )
set udg_Temp_group2 = GetLastCreatedGroup()
call ForGroupBJ( udg_Temp_group2, function Trig_holylight_Func006002 )
call ForGroupBJ( udg_Temp_group2, function Trig_holylight_Func007002 )
call RemoveRect(udg_temp_region)
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_holylight takes nothing returns nothing
set gg_trg_holylight = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_holylight, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_holylight, Condition( function Trig_holylight_Conditions ) )
call TriggerAddAction( gg_trg_holylight, function Trig_holylight_Actions )
endfunction
function Trig_crusadershield_Conditions takes nothing returns boolean
return UnitHasBuffBJ(GetAttackedUnitBJ(), 'BHad') == true
endfunction
function Trig_crusadershield_Actions takes nothing returns nothing
set udg_Randomholy = GetRandomInt(1, 15)
if ( udg_Randomholy == 10 ) then
set udg_rand_point = GetUnitLoc(GetAttackedUnitBJ())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u009', GetOwningPlayer(GetAttackedUnitBJ()), udg_rand_point, udg_rand_point )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "holybolt", GetAttackedUnitBJ() )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_rand_point)
else
endif
endfunction
//===========================================================================
function InitTrig_crusadershield takes nothing returns nothing
set gg_trg_crusadershield = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_crusadershield, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_crusadershield, Condition( function Trig_crusadershield_Conditions ) )
call TriggerAddAction( gg_trg_crusadershield, function Trig_crusadershield_Actions )
endfunction
function Trig_Frenzy_Conditions takes nothing returns boolean
return ((UnitHasBuffBJ(GetAttacker(), 'B00E') == true) and ( UnitHasBuffBJ(GetAttacker(), 'B00D') == false ))
endfunction
function Trig_Frenzy_Actions takes nothing returns nothing
set udg_Randomholy = GetRandomInt(1, 15)
if ( udg_Randomholy == 10) then
set udg_rand_point = GetUnitLoc(GetAttackedUnitBJ())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u005', GetOwningPlayer(GetAttacker()), udg_rand_point, udg_rand_point )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "unholyfrenzy", GetAttacker() )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_rand_point)
endif
endfunction
//===========================================================================
function InitTrig_Frenzy takes nothing returns nothing
set gg_trg_Frenzy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Frenzy, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Frenzy, Condition( function Trig_Frenzy_Conditions ) )
call TriggerAddAction( gg_trg_Frenzy, function Trig_Frenzy_Actions )
endfunction
function Trig_Blood_lust_Conditions takes nothing returns boolean
return (( UnitHasBuffBJ(GetAttackedUnitBJ(), 'B00C') == true ) and ( UnitHasBuffBJ(GetAttackedUnitBJ(), 'Bblo') == false ))
endfunction
function Trig_Blood_lust_Actions takes nothing returns nothing
set udg_Randomholy = GetRandomInt(1, 10)
if (udg_Randomholy == 10 ) then
set udg_rand_point = GetUnitLoc(GetAttackedUnitBJ())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00M', GetOwningPlayer(GetAttackedUnitBJ()), udg_rand_point, udg_rand_point )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "bloodlust", GetAttackedUnitBJ() )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_rand_point)
endif
endfunction
//===========================================================================
function InitTrig_Blood_lust takes nothing returns nothing
set gg_trg_Blood_lust = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Blood_lust, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Blood_lust, Condition( function Trig_Blood_lust_Conditions ) )
call TriggerAddAction( gg_trg_Blood_lust, function Trig_Blood_lust_Actions )
endfunction
function Trig_Shadowstrike_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A02C'
endfunction
function Trig_Shadowstrike_Func003002003 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(udg_temp_unit)) == true )
endfunction
function Trig_Shadowstrike_Actions takes nothing returns nothing
set udg_temp_unit = GetSpellAbilityUnit()
set udg_rand_point = GetUnitLoc(GetSpellTargetUnit())
set udg_Temp_group1 = GetUnitsInRangeOfLocMatching(280.00, udg_rand_point, Condition(function Trig_Shadowstrike_Func003002003))
set udg_cont = 1
loop
exitwhen udg_cont > ( 2 + GetUnitAbilityLevelSwapped('A02C', udg_temp_unit) )
set udg_SStriked_unit = GroupPickRandomUnit(udg_Temp_group1)
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00I', GetOwningPlayer(udg_temp_unit), udg_rand_point, udg_rand_point )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "shadowstrike", udg_SStriked_unit )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call GroupRemoveUnitSimple( udg_SStriked_unit, udg_Temp_group1 )
set udg_cont = udg_cont + 1
endloop
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
set udg_temp_unit = null
endfunction
//===========================================================================
function InitTrig_Shadowstrike takes nothing returns nothing
set gg_trg_Shadowstrike = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Shadowstrike, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Shadowstrike, Condition( function Trig_Shadowstrike_Conditions ) )
call TriggerAddAction( gg_trg_Shadowstrike, function Trig_Shadowstrike_Actions )
endfunction
function Trig_blink_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A029'
endfunction
function Trig_blink_Actions takes nothing returns nothing
set udg_temp_unit = GetSpellAbilityUnit()
set udg_rand_point = GetSpellTargetLoc()
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00K', GetOwningPlayer(udg_temp_unit), udg_rand_point, udg_rand_point )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "thunderclap" )
call UnitApplyTimedLifeBJ( 0.50, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_rand_point)
set udg_temp_unit = null
endfunction
//===========================================================================
function InitTrig_blink takes nothing returns nothing
set gg_trg_blink = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_blink, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_blink, Condition( function Trig_blink_Conditions ) )
call TriggerAddAction( gg_trg_blink, function Trig_blink_Actions )
endfunction
function Trig_blink_Hero_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A02F'
endfunction
function Trig_blink_Hero_Actions takes nothing returns nothing
set udg_temp_unit = GetSpellAbilityUnit()
set udg_rand_point = GetSpellTargetLoc()
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00L', GetOwningPlayer(udg_temp_unit), udg_rand_point, udg_rand_point )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "thunderclap" )
call UnitApplyTimedLifeBJ( 0.50, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_rand_point)
set udg_temp_unit = null
endfunction
//===========================================================================
function InitTrig_blink_Hero takes nothing returns nothing
set gg_trg_blink_Hero = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_blink_Hero, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_blink_Hero, Condition( function Trig_blink_Hero_Conditions ) )
call TriggerAddAction( gg_trg_blink_Hero, function Trig_blink_Hero_Actions )
endfunction
function Trig_Lanza_roca_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00T'
endfunction
function Trig_Lanza_roca_Func006002 takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "creepthunderbolt", GroupPickRandomUnit(udg_Temp_group1) )
endfunction
function Trig_Lanza_roca_Func007002 takes nothing returns nothing
call UnitApplyTimedLifeBJ( 2.00, 'BTLF', GetEnumUnit() )
endfunction
function Trig_Lanza_roca_Actions takes nothing returns nothing
set udg_temp_region = RectFromCenterSizeBJ(GetUnitLoc(GetSpellTargetUnit()), 1000.00, 1000.00)
set udg_Temp_group1 = GetUnitsInRectAll(udg_temp_region)
set udg_rand_point = GetUnitLoc(GetSpellTargetUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u008', GetOwningPlayer(GetSpellAbilityUnit()), udg_rand_point, udg_rand_point )
set udg_Temp_group2 = GetLastCreatedGroup()
call ForGroupBJ( udg_Temp_group2, function Trig_Lanza_roca_Func006002 )
call ForGroupBJ( udg_Temp_group2, function Trig_Lanza_roca_Func007002 )
call RemoveRect(udg_temp_region)
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Lanza_roca takes nothing returns nothing
set gg_trg_Lanza_roca = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Lanza_roca, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Lanza_roca, Condition( function Trig_Lanza_roca_Conditions ) )
call TriggerAddAction( gg_trg_Lanza_roca, function Trig_Lanza_roca_Actions )
endfunction
function Trig_Lanza_rocab_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A006'
endfunction
function Trig_Lanza_rocab_Func006002 takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "creepthunderbolt", GroupPickRandomUnit(udg_Temp_group1) )
endfunction
function Trig_Lanza_rocab_Func007002 takes nothing returns nothing
call UnitApplyTimedLifeBJ( 2.00, 'BTLF', GetEnumUnit() )
endfunction
function Trig_Lanza_rocab_Actions takes nothing returns nothing
set udg_temp_region = RectFromCenterSizeBJ(GetUnitLoc(GetSpellTargetUnit()), 1000.00, 1000.00)
set udg_Temp_group1 = GetUnitsInRectAll(udg_temp_region)
set udg_rand_point = GetUnitLoc(GetSpellTargetUnit())
call CreateNUnitsAtLocFacingLocBJ( 2, 'u008', GetOwningPlayer(GetSpellAbilityUnit()), udg_rand_point, udg_rand_point )
set udg_Temp_group2 = GetLastCreatedGroup()
call ForGroupBJ( udg_Temp_group2, function Trig_Lanza_rocab_Func006002 )
call ForGroupBJ( udg_Temp_group2, function Trig_Lanza_rocab_Func007002 )
call RemoveRect(udg_temp_region)
call RemoveLocation(udg_rand_point)
call DestroyGroup (udg_Temp_group1)
call DestroyGroup (udg_Temp_group2)
endfunction
//===========================================================================
function InitTrig_Lanza_rocab takes nothing returns nothing
set gg_trg_Lanza_rocab = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Lanza_rocab, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Lanza_rocab, Condition( function Trig_Lanza_rocab_Conditions ) )
call TriggerAddAction( gg_trg_Lanza_rocab, function Trig_Lanza_rocab_Actions )
endfunction
function Trig_batattackeffect_Conditions takes nothing returns boolean
return GetUnitTypeId(GetAttacker()) == 'u00U'
endfunction
function Trig_batattackeffect_Actions takes nothing returns nothing
call DestroyEffectBJ(AddSpecialEffectTargetUnitBJ( "head", GetAttackedUnitBJ(), "Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl"))
endfunction
//===========================================================================
function InitTrig_batattackeffect takes nothing returns nothing
set gg_trg_batattackeffect = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_batattackeffect, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_batattackeffect, Condition( function Trig_batattackeffect_Conditions ) )
call TriggerAddAction( gg_trg_batattackeffect, function Trig_batattackeffect_Actions )
endfunction
function Trig_frenzyon_Conditions takes nothing returns boolean
return UnitHasBuffBJ(GetAttacker(), 'B00D') == true
endfunction
function Trig_frenzyon_Actions takes nothing returns nothing
set udg_new_point = GetUnitLoc(GetAttackedUnitBJ())
set udg_rand_point = GetUnitLoc(GetAttacker())
call AddSpecialEffectTargetUnitBJ( "left hand", GetAttacker(), "Abilities\\Weapons\\SerpentWardMissile\\SerpentWardMissile.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_new_point)
call RemoveLocation(udg_rand_point)
endfunction
//===========================================================================
function InitTrig_frenzyon takes nothing returns nothing
set gg_trg_frenzyon = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_frenzyon, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_frenzyon, Condition( function Trig_frenzyon_Conditions ) )
call TriggerAddAction( gg_trg_frenzyon, function Trig_frenzyon_Actions )
endfunction
function Trig_frenzyheroOn_Conditions takes nothing returns boolean
return UnitHasBuffBJ(GetAttacker(), 'B01C') == true
endfunction
function Trig_frenzyheroOn_Actions takes nothing returns nothing
call AddSpecialEffectTargetUnitBJ( "left hand", GetAttacker(), "Abilities\\Weapons\\SerpentWardMissile\\SerpentWardMissile.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
//===========================================================================
function InitTrig_frenzyheroOn takes nothing returns nothing
set gg_trg_frenzyheroOn = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_frenzyheroOn, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_frenzyheroOn, Condition( function Trig_frenzyheroOn_Conditions ) )
call TriggerAddAction( gg_trg_frenzyheroOn, function Trig_frenzyheroOn_Actions )
endfunction
function Trig_Castfrenzy_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A06S'
endfunction
function Trig_Castfrenzy_Actions takes nothing returns nothing
set udg_Caster = GetSpellAbilityUnit()
set udg_rand_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u01T', GetOwningPlayer(udg_Caster), udg_rand_point, udg_rand_point )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "thunderclap" )
call UnitApplyTimedLifeBJ( 0.50, 'BTLF', GetLastCreatedUnit() )
call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_Caster), udg_rand_point, udg_rand_point )
call SetUnitAbilityLevelSwapped( 'A06R', GetLastCreatedUnit(), GetUnitAbilityLevelSwapped('A06S', udg_Caster) )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "unholyfrenzy", udg_Caster )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
set udg_Caster = null
call RemoveLocation(udg_rand_point)
endfunction
//===========================================================================
function InitTrig_Castfrenzy takes nothing returns nothing
set gg_trg_Castfrenzy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Castfrenzy, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Castfrenzy, Condition( function Trig_Castfrenzy_Conditions ) )
call TriggerAddAction( gg_trg_Castfrenzy, function Trig_Castfrenzy_Actions )
endfunction
function Trig_provoke_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00D'
endfunction
function Trig_provoke_Actions takes nothing returns nothing
set udg_temp_point = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00E', GetOwningPlayer(GetSpellAbilityUnit()), udg_temp_point, udg_temp_point )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "innerfire", GetSpellAbilityUnit() )
call RemoveLocation(udg_temp_point)
endfunction
//===========================================================================
function InitTrig_provoke takes nothing returns nothing
set gg_trg_provoke = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_provoke, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_provoke, Condition( function Trig_provoke_Conditions ) )
call TriggerAddAction( gg_trg_provoke, function Trig_provoke_Actions )
endfunction
function RLC takes nothing returns boolean
if udg_repel_on[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] == true then
return (GetUnitTypeId(GetTriggerUnit()) == 'O000')
endif
return false
endfunction
function RLB takes nothing returns nothing
local timer ti = GetExpiredTimer()
local unit u = LoadUnitHandleBJ(1,GetHandleIdBJ(ti), udg_cache)
local real inc = LoadRealBJ(2,GetHandleIdBJ(ti), udg_cache)
local real ang = GetUnitFacing(u)
local location p = GetUnitLoc(u)
local location p1 = PolarProjectionBJ(p, inc, ang)
set inc = ( inc + 2 )
set p = GetUnitLoc(u)
call SetUnitPathing( u, false )
call SetUnitPositionLoc( u, p1 )
call RemoveLocation(p)
call RemoveLocation(p1)
call SaveRealBJ(inc, 2, GetHandleIdBJ(ti), udg_cache )
set u = null
set inc = 0
set ang = 0
set ti = null
call DestroyTimer(ti)
endfunction
function RLA takes nothing returns nothing
local unit a = GetAttacker()
local unit d = udg_repel_unit[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]
local location p = GetUnitLoc(a)
local timer tr = CreateTimer()
local real inc = -40
call SaveUnitHandleBJ(a, 1, GetHandleIdBJ(tr), udg_cache )
call SaveRealBJ(inc, 2, GetHandleIdBJ(tr), udg_cache )
call DestroyEffect(AddSpecialEffectTargetUnitBJ( "origin", d, "Abilities\\Spells\\Human\\Defend\\DefendCaster.mdl" ))
call TriggerSleepAction( 0.25 )
call CreateNUnitsAtLocFacingLocBJ( 1, 'u00B', GetOwningPlayer(d), p, p )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call IssueTargetOrder( GetLastCreatedUnit(), "thunderbolt", a )
call TimerStart(tr, 0.03, true, function RLB)
call PolledWait(0.25)
call DestroyEffect(AddSpecialEffectTargetUnitBJ( "origin", a, "Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl" ))
call FlushChildHashtableBJ(GetHandleIdBJ(tr), udg_cache)
call DestroyTimer(tr)
set p = GetUnitLoc(a)
call RemoveLocation(p)
call SetUnitPathing( a, true )
set a = null
set d = null
set inc = 0
endfunction
//===========================================================================
function InitTrig_knock_B takes nothing returns nothing
set gg_trg_knock_B = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_knock_B, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_knock_B, Condition( function RLC ) )
call TriggerAddAction( gg_trg_knock_B, function RLA )
endfunction
function Trig_repeler_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A01D'
endfunction
function Trig_repeler_Func001001 takes nothing returns boolean
return ( udg_repel_count == 8 )
endfunction
function Trig_repeler_Actions takes nothing returns nothing
if ( Trig_repeler_Func001001() ) then
set udg_repel_count = 0
else
call DoNothing( )
endif
set udg_repel_count = ( udg_repel_count + 1 )
set udg_repel_player[udg_repel_count] = GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))
set udg_repel_unit[udg_repel_count] = GetSpellAbilityUnit()
if GetUnitAbilityLevelSwapped('A01D', GetSpellAbilityUnit()) == 1 then
set udg_repel_on[udg_repel_player[udg_repel_count]] = true
call StartTimerBJ( udg_repel_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 15.00 )
call SetUnitPathing( udg_repel_unit[udg_repel_count], false )
else
if GetUnitAbilityLevelSwapped('A01D', GetSpellAbilityUnit()) == 2 then
set udg_repel_on[udg_repel_player[udg_repel_count]] = true
call StartTimerBJ( udg_repel_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 18.00 )
call SetUnitPathing( udg_repel_unit[udg_repel_count], false )
else
if GetUnitAbilityLevelSwapped('A01D', GetSpellAbilityUnit()) == 3 then
set udg_repel_on[udg_repel_player[udg_repel_count]] = true
call StartTimerBJ( udg_repel_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 21.00 )
call SetUnitPathing( udg_repel_unit[udg_repel_count], false )
else
if GetUnitAbilityLevelSwapped('A01D', GetSpellAbilityUnit()) == 4 then
set udg_repel_on[udg_repel_player[udg_repel_count]] = true
call StartTimerBJ( udg_repel_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 24.00 )
call SetUnitPathing( udg_repel_unit[udg_repel_count], false )
endif
endif
endif
endif
endfunction
//===========================================================================
function InitTrig_repeler takes nothing returns nothing
set gg_trg_repeler = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_repeler, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_repeler, Condition( function Trig_repeler_Conditions ) )
call TriggerAddAction( gg_trg_repeler, function Trig_repeler_Actions )
endfunction
function Trig_repelerON_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A01D'
endfunction
function Trig_repelerON_Actions takes nothing returns nothing
call UnitAddAbilityBJ( 'A02H', GetSpellAbilityUnit() )
endfunction
//===========================================================================
function InitTrig_repelerON takes nothing returns nothing
set gg_trg_repelerON = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_repelerON, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_repelerON, Condition( function Trig_repelerON_Conditions ) )
call TriggerAddAction( gg_trg_repelerON, function Trig_repelerON_Actions )
endfunction
function Trig_repeler_off_Func001001 takes nothing returns boolean
return ( udg_repel_end == 8 )
endfunction
function Trig_repeler_off_Actions takes nothing returns nothing
if ( Trig_repeler_off_Func001001() ) then
set udg_repel_end = 0
else
call DoNothing( )
endif
set udg_repel_end = ( udg_repel_end + 1 )
set udg_repel_on[udg_repel_player[udg_repel_end]] = false
call SetUnitPathing( udg_repel_unit[udg_repel_end], true )
call UnitRemoveAbilityBJ( 'A02H', udg_repel_unit[udg_repel_end] )
endfunction
//===========================================================================
function InitTrig_repeler_off takes nothing returns nothing
set gg_trg_repeler_off = CreateTrigger( )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[1] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[2] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[3] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[4] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[5] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[6] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[7] )
call TriggerRegisterTimerExpireEventBJ( gg_trg_repeler_off, udg_repel_timer[8] )
call TriggerAddAction( gg_trg_repeler_off, function Trig_repeler_off_Actions )
endfunction
function Trig_ravager_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A002'
endfunction
function Trig_ravager_Func001001 takes nothing returns boolean
return ( udg_ravager_count == 8 )
endfunction
function Trig_ravager_Actions takes nothing returns nothing
if ( Trig_ravager_Func001001() ) then
set udg_ravager_count = 0
else
call DoNothing( )
endif
set udg_ravager_count = ( udg_ravager_count + 1 )
set udg_ravager_player[udg_ravager_count] = GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))
set udg_ravager_unit[udg_ravager_count] = GetSpellAbilityUnit()
if GetUnitAbilityLevelSwapped('A002', GetSpellAbilityUnit()) == 1 then
set udg_ravager_on[udg_ravager_player[udg_ravager_count]] = true
call StartTimerBJ( udg_ravager_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 4.00 )
call SetUnitPathing( udg_ravager_unit[udg_ravager_count], false )
else
if GetUnitAbilityLevelSwapped('A002', GetSpellAbilityUnit()) == 2 then
set udg_ravager_on[udg_ravager_player[udg_ravager_count]] = true
call StartTimerBJ( udg_ravager_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 5.00 )
call SetUnitPathing( udg_ravager_unit[udg_ravager_count], false )
else
if GetUnitAbilityLevelSwapped('A002', GetSpellAbilityUnit()) == 3 then
set udg_ravager_on[udg_ravager_player[udg_ravager_count]] = true
call StartTimerBJ( udg_ravager_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 6.00 )
call SetUnitPathing( udg_ravager_unit[udg_ravager_count], false )
else
if GetUnitAbilityLevelSwapped('A002', GetSpellAbilityUnit()) == 4 then
set udg_ravager_on[udg_ravager_player[udg_ravager_count]] = true
call StartTimerBJ( udg_ravager_timer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 7.00 )
call SetUnitPathing( udg_ravager_unit[udg_ravager_count], false )
endif
endif
endif
endif
endfunction
//===========================================================================
function InitTrig_ravager takes nothing returns nothing
set gg_trg_ravager = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_ravager, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_ravager, Condition( function Trig_ravager_Conditions ) )
call TriggerAddAction( gg_trg_ravager, function Trig_ravager_Actions )
endfunction
function Trig_furyon_attack_Conditions takes nothing returns boolean
return (( udg_ravager_on[GetConvertedPlayerId(GetOwningPlayer(GetAttacker()))] == true ) and ( GetUnitTypeId(GetAttacker()) == 'O00C' ) and ( IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == false ))
endfunction
function Trig_furyon_attack_Actions takes nothing returns nothing
set udg_new_point = GetUnitLoc(GetAttackedUnitBJ())
set udg_rand_point = GetUnitLoc(GetAttacker())
call AddSpecialEffectTargetUnitBJ( "chest", GetAttackedUnitBJ(), "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_new_point)
call RemoveLocation(udg_rand_point)
endfunction
//===========================================================================
function InitTrig_furyon_attack takes nothing returns nothing
set gg_trg_furyon_attack = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_furyon_attack, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_furyon_attack, Condition( function Trig_furyon_attack_Conditions ) )
call TriggerAddAction( gg_trg_furyon_attack, function Trig_furyon_attack_Actions )
endfunction
function Trig_Player_Leaves_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "|cffff0000" + ( GetPlayerName(GetTriggerPlayer()) + " has left the game!|r" ) ) )
set udg_Player_color[GetConvertedPlayerId(GetTriggerPlayer())] = "|cff7b7b7b"
endfunction
//===========================================================================
function InitTrig_Player_Leaves takes nothing returns nothing
set gg_trg_Player_Leaves = CreateTrigger( )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(1) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(2) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(3) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(4) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(5) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(6) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(7) )
call TriggerRegisterPlayerEventLeave( gg_trg_Player_Leaves, ConvertedPlayer(8) )
call TriggerAddAction( gg_trg_Player_Leaves, function Trig_Player_Leaves_Actions )
endfunction
function Trig_names_city_Actions takes nothing returns nothing
call SetTextTagPermanent(CreateTextTagLocBJ( "Huapi Island", Location(-4590.00, -8130.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Puerto Peligro", Location(-3430.00, -5800.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Loos River", Location(-5620.00, -5090.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Ishagho", Location(-6830.00, -3470.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Dhurban", Location(-5150.00, -2350.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Samokha", Location(-5180.00, -790.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Qhotkar", Location(-6670.00, 1570.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Rocafirme", Location(-4980.00, 2160.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Uqthar", Location(-3500.00, 3030.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Driegde", Location(-3170.00, 780.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Nasyon", Location(-5350.00, 6120.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Treeshouse", Location(-2320.00, 6320.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Lightroad", Location(-1540.00, 4250.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Freeglade", Location(-2000.00, -720.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Ebony", Location(-2270, -4120.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Southern Post", Location(1440.00, -8000.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Brandtown", Location(2570, -6830.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Hidden Light", Location(3650.00, -4820.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Coldroad", Location(3300.00, -2500.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Myst", Location(4930.00, -3570.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Hopeless Peak", Location(6890.00, -6900.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Arkasvia", Location(6940.00, -720.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Ciudad del Paso", Location(4900.00, -1190.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Price", Location(3150.00, -620.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Tyr", Location(2390.00, 450.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Beyondgate", Location(6960.00, 1820.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Bonecity", Location(6960.00, 3980.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Durn", Location(6300.00, 6130.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Nightvalley", Location(4500.00, 5500.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
call SetTextTagPermanent(CreateTextTagLocBJ( "Moonglade", Location(1280.00, 5220.00), 0, 18.00, 100, 100, 100, 65.00 ), true )
endfunction
//===========================================================================
function InitTrig_names_city takes nothing returns nothing
set gg_trg_names_city = CreateTrigger( )
call TriggerAddAction( gg_trg_names_city, function Trig_names_city_Actions )
endfunction
function Trig_obstacles_Conditions takes nothing returns boolean
return ( IsUnitType(GetSpellAbilityUnit(), UNIT_TYPE_STRUCTURE) == true )
endfunction
function Trig_obstacles_Actions takes nothing returns nothing
set udg_free_contador = 1
loop
exitwhen udg_free_contador > 10
if ( GetUnitTypeId(GetSpellAbilityUnit()) == udg_Tower_build[udg_free_contador] ) then
set udg_cast_obstacle = LoadIntegerBJ(1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_obstacles_hash)
if ( udg_cast_obstacle <= 1 ) then
call SaveIntegerBJ( ( udg_cast_obstacle + 1 ), 1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_obstacles_hash )
else
call UnitRemoveAbilityBJ( udg_Obstacles[udg_free_contador], GetSpellAbilityUnit() )
call FlushChildHashtableBJ( GetHandleIdBJ(GetSpellAbilityUnit()), udg_obstacles_hash )
endif
else
endif
set udg_free_contador = udg_free_contador + 1
endloop
set udg_cast_obstacle = 0
endfunction
//===========================================================================
function InitTrig_obstacles takes nothing returns nothing
set gg_trg_obstacles = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_obstacles, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_obstacles, Condition( function Trig_obstacles_Conditions ) )
call TriggerAddAction( gg_trg_obstacles, function Trig_obstacles_Actions )
endfunction
function Trig_Wall_Conditions takes nothing returns boolean
return ((IsUnitType(GetSpellAbilityUnit(), UNIT_TYPE_STRUCTURE) == true) and ( GetSpellAbilityId() != 'A0AT'))
endfunction
function Trig_Wall_Actions takes nothing returns nothing
set udg_wcounter = 1
loop
exitwhen udg_wcounter > 10
if ( GetUnitTypeId(GetSpellAbilityUnit()) == udg_Otbuild[udg_wcounter] ) then
set udg_C_wall = LoadIntegerBJ(1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_Castwall_hash)
if ( udg_C_wall <= 5 ) then
call SaveIntegerBJ( ( udg_C_wall + 1 ), 1, GetHandleIdBJ(GetSpellAbilityUnit()), udg_Castwall_hash )
else
call UnitRemoveAbilityBJ( udg_Castwall[udg_wcounter], GetSpellAbilityUnit() )
call FlushChildHashtableBJ( GetHandleIdBJ(GetSpellAbilityUnit()), udg_Castwall_hash )
endif
else
endif
set udg_wcounter = udg_wcounter + 1
endloop
set udg_C_wall = 0
endfunction
//===========================================================================
function InitTrig_Wall takes nothing returns nothing
set gg_trg_Wall = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Wall, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Wall, Condition( function Trig_Wall_Conditions ) )
call TriggerAddAction( gg_trg_Wall, function Trig_Wall_Actions )
endfunction
function Trig_Wf_Conditions takes nothing returns boolean
return ( GetUnitDefaultAcquireRange(GetConstructedStructure()) == 6.00 )
endfunction
function Trig_Wf_Func002Func001C takes nothing returns boolean
return GetUnitTypeId(GetConstructedStructure()) == udg_walltype[udg_wdoodad]
endfunction
function Trig_Wf_Actions takes nothing returns nothing
set udg_wdoodad = 1
loop
exitwhen udg_wdoodad > 10
if ( Trig_Wf_Func002Func001C() ) then
set udg_Dpoint = GetUnitLoc(GetConstructedStructure())
call RemoveUnit( GetConstructedStructure() )
call CreateDestructableLoc( udg_Walldoodad[udg_wdoodad], udg_Dpoint, udg_Dangle[udg_wdoodad], udg_Dscale[udg_wdoodad], 0 )
call RemoveLocation(udg_Dpoint)
else
endif
set udg_wdoodad = udg_wdoodad + 1
endloop
endfunction
//===========================================================================
function InitTrig_Wf takes nothing returns nothing
set gg_trg_Wf = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Wf, EVENT_PLAYER_UNIT_CONSTRUCT_FINISH )
call TriggerAddCondition( gg_trg_Wf, Condition( function Trig_Wf_Conditions ) )
call TriggerAddAction( gg_trg_Wf, function Trig_Wf_Actions )
endfunction
function AIDefc takes nothing returns boolean
return (IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == true)
endfunction
function AI_def takes nothing returns nothing
local unit u = GetAttackedUnitBJ()
local integer c = 1
local integer no = GetConvertedPlayerId(GetOwningPlayer(u))
local integer na
if ((udg_AI_defending_on[no] == false) and (GetPlayerController(GetOwningPlayer(u)) == MAP_CONTROL_COMPUTER))then
call AiDefendOrder(4500,no,u)
set udg_TAIdef = no
call TriggerExecute( gg_trg_AI_Def_ON)
set udg_TAIdef = 0
endif
loop
exitwhen c > 8
if ((udg_AI_defending_on[c] == false) and (IsPlayerAlly(ConvertedPlayer(c), GetOwningPlayer(u)) == true) and (GetPlayerController(ConvertedPlayer(c)) == MAP_CONTROL_COMPUTER)) then
set na = GetConvertedPlayerId(ConvertedPlayer(c))
call AIDefendAlly(4500, na, u)
set udg_TAIdef = na
call TriggerExecute( gg_trg_AI_Def_ON)
set udg_TAIdef = 0
endif
set c = c + 1
endloop
set c = 0
set u = null
set no = 0
set na = 0
endfunction
//===========================================================================
function InitTrig_AI_defends takes nothing returns nothing
set gg_trg_AI_defends = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AI_defends, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AI_defends, Condition( function AIDefc ) )
call TriggerAddAction( gg_trg_AI_defends, function AI_def )
endfunction
function Trig_AI_Def_ON_Actions takes nothing returns nothing
local integer N = udg_TAIdef
set udg_AI_defending_on[N] = true
call PolledWait(15)
set udg_AI_defending_on[N] = false
set N = 0
endfunction
//===========================================================================
function InitTrig_AI_Def_ON takes nothing returns nothing
set gg_trg_AI_Def_ON = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Def_ON, function Trig_AI_Def_ON_Actions )
endfunction
function Fug1 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[1])
endfunction
function Fug2 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[2])
endfunction
function Fug3 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[3])
endfunction
function Fug4 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[4])
endfunction
function Fug5 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[5])
endfunction
function Fug6 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[6])
endfunction
function Fug7 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[7])
endfunction
function Fug8 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[8])
endfunction
function Fug9 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[9])
endfunction
function Fug10 takes nothing returns boolean
return (GetUnitTypeId(GetTrainedUnit()) == udg_Fupgrade_build[10])
endfunction
function FugradepC takes nothing returns boolean
return (Fug1() or Fug2() or Fug3() or Fug4() or Fug5() or Fug6() or Fug7() or Fug8() or Fug9() or Fug10())
endfunction
function FugradepA takes nothing returns nothing
local unit u = GetTrainedUnit()
local integer n = GetConvertedPlayerId(GetOwningPlayer(u))
set udg_AI_FU_ON[n] = true
set u = null
set n = 0
endfunction
//===========================================================================
function InitTrig_AITowerON takes nothing returns nothing
set gg_trg_AITowerON = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AITowerON, EVENT_PLAYER_UNIT_TRAIN_FINISH )
call TriggerAddCondition( gg_trg_AITowerON, Condition( function FugradepC ) )
call TriggerAddAction( gg_trg_AITowerON, function FugradepA )
endfunction
function CheckTONa takes nothing returns nothing
local integer cn = 1
loop
exitwhen cn > 8
if (udg_AI_FU_ON[cn] == true) then
if ((GetPlayerController(Player(cn - 1)) == MAP_CONTROL_COMPUTER ) and ( GetAIDifficulty(Player(cn - 1)) != AI_DIFFICULTY_NEWBIE)) then
set udg_INTW = cn
set udg_AI_FU_ON[cn] = false
call TriggerExecute( gg_trg_AI_CastTower)
endif
endif
set cn = cn + 1
endloop
set cn = 0
endfunction
//===========================================================================
function InitTrig_AI_CheckTON takes nothing returns nothing
set gg_trg_AI_CheckTON = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_AI_CheckTON, 6.00 )
call TriggerAddAction( gg_trg_AI_CheckTON, function CheckTONa )
endfunction
function buildtower takes nothing returns nothing
local location p = GetUnitLoc(GetEnumUnit())
local location q = PolarProjectionBJ(p, (GetRandomDirectionDeg() + 256), GetRandomDirectionDeg())
local integer n = GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))
call CreateNUnitsAtLoc( 1, 'u022', GetOwningPlayer(GetEnumUnit()), q, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 5.00, 'BTLF', GetLastCreatedUnit() )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "humanbuild" )
call IssueBuildOrderByIdLocBJ( GetLastCreatedUnit(), udg_Tower_build[udg_Race[n]], q )
call RemoveLocation(p)
call RemoveLocation(q)
set n = 0
endfunction
function Ctower takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
local group g = GetUnitsOfPlayerAndTypeId(Player(n - 1), udg_Main_build[udg_Race[n]])
call ForGroupBJ( g, function buildtower )
call DestroyGroup(g)
set g = GetUnitsOfPlayerAndTypeId(Player(n - 1), udg_Fupgrade_build[udg_Race[n]])
call ForGroupBJ( g, function buildtower )
call DestroyGroup(g)
set g = GetUnitsOfPlayerAndTypeId(Player(n - 1), udg_Supgrade_build[udg_Race[n]])
call ForGroupBJ( g, function buildtower )
call DestroyGroup(g)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Castower takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_INTW
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AI_TowerRatio[Pnumber], true, function Ctower)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_CastTower takes nothing returns nothing
set gg_trg_AI_CastTower = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_CastTower, function AIA_Castower )
endfunction
function Trig_AI_Ends_Resch_Conditions takes nothing returns boolean
return ( GetPlayerController(GetOwningPlayer(GetResearchingUnit())) == MAP_CONTROL_COMPUTER )
endfunction
function Trig_AI_Ends_Resch_Actions takes nothing returns nothing
set udg_AI_RSCHng[GetConvertedPlayerId(GetOwningPlayer(GetResearchingUnit()))] = false
endfunction
//===========================================================================
function InitTrig_AI_Ends_Resch takes nothing returns nothing
set gg_trg_AI_Ends_Resch = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AI_Ends_Resch, EVENT_PLAYER_UNIT_RESEARCH_FINISH )
call TriggerAddCondition( gg_trg_AI_Ends_Resch, Condition( function Trig_AI_Ends_Resch_Conditions ) )
call TriggerAddAction( gg_trg_AI_Ends_Resch, function Trig_AI_Ends_Resch_Actions )
endfunction
function ChArmor takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
if (udg_AI_RSCHng[n + 1] == false) then
if (CheckAiGold(Player(n),udg_AIGoldArmor[n + 1])) then
set udg_AIGoldArmor[n + 1] = ( udg_AIGoldArmor[n + 1] + udg_Inc_armor )
call TechBuildingOrder(n,1)
endif
if udg_AIGoldArmor[n + 1] >= 800 then
call DestroyTimer(t)
endif
endif
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_ResearchArmor takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIReschAR[Pnumber], true, function ChArmor)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_ResearchArmor takes nothing returns nothing
set gg_trg_AI_ResearchArmor = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_ResearchArmor, function AIA_ResearchArmor )
endfunction
function ChDmg takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
if (udg_AI_RSCHng[n + 1] == false) then
if (CheckAiGold(Player(n),udg_AIGoldDmg[n + 1])) then
set udg_AIGoldDmg[n + 1] = ( udg_AIGoldDmg[n + 1] + udg_Inc_dmg )
call TechBuildingOrder(n,2)
endif
if udg_AIGoldDmg[n + 1] >= 900 then
call DestroyTimer(t)
endif
endif
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_ResearchDmg takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIReschDMG[Pnumber], true, function ChDmg)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_ResearchDamage takes nothing returns nothing
set gg_trg_AI_ResearchDamage = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_ResearchDamage, function AIA_ResearchDmg )
endfunction
function ChHp takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
if (udg_AI_RSCHng[n + 1] == false) then
if (CheckAiGold(Player(n),udg_AIGoldHp[n + 1])) then
set udg_AIGoldHp[n + 1] = ( udg_AIGoldHp[n + 1] + udg_Inc_hp )
call TechBuildingOrder(n,3)
endif
if udg_AIGoldHp[n + 1] >= 900 then
call DestroyTimer(t)
endif
endif
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_ResearchHp takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIReschHP[Pnumber], true, function ChHp)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_ResearchHp takes nothing returns nothing
set gg_trg_AI_ResearchHp = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_ResearchHp, function AIA_ResearchHp )
endfunction
function ChTw takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
if (udg_AI_RSCHng[n + 1] == false) then
if (CheckAiKPoints(Player(n),200)) then
call TechBuildingOrder(n,4)
endif
if (CheckAiKPoints(Player(n),400)) then
call DestroyTimer(t)
endif
endif
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_ResearchTw takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIUpgradetime[Pnumber], true, function ChTw)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_ResearchTower takes nothing returns nothing
set gg_trg_AI_ResearchTower = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_ResearchTower, function AIA_ResearchTw )
endfunction
function ChMe takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call FirstBuildingTrain(n,1)
call PolledWait(0.2)
call SecondBuildingTrain(n,1)
call PolledWait(0.2)
call CastleBuildingTrain(n,1)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_TrainMe takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AITrainMeRatio[Pnumber], true, function ChMe)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_Trainmelee takes nothing returns nothing
set gg_trg_AI_Trainmelee = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Trainmelee, function AIA_TrainMe )
endfunction
function ChRa takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call FirstBuildingTrain(n,2)
call PolledWait(0.2)
call SecondBuildingTrain(n,2)
call PolledWait(0.2)
call CastleBuildingTrain(n,2)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_TrainRa takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AITrainRangeRatio[Pnumber], true, function ChRa)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_TrainRange takes nothing returns nothing
set gg_trg_AI_TrainRange = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_TrainRange, function AIA_TrainRa )
endfunction
function Chmag takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call FirstBuildingTrain(n,3)
call PolledWait(0.2)
call SecondBuildingTrain(n,3)
call PolledWait(0.2)
call CastleBuildingTrain(n,3)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Trainmag takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AITrainMagRatio[Pnumber], true, function Chmag)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_TrainMage takes nothing returns nothing
set gg_trg_AI_TrainMage = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_TrainMage, function AIA_Trainmag )
endfunction
function Chta takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call FirstBuildingTrain(n,4)
call PolledWait(0.2)
call SecondBuildingTrain(n,4)
call PolledWait(0.2)
call CastleBuildingTrain(n,4)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Trainta takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AITrainTankRatio[Pnumber], true, function Chta)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_TrainTank takes nothing returns nothing
set gg_trg_AI_TrainTank = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_TrainTank, function AIA_Trainta )
endfunction
function Chfa takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call CastleBuildingTrain(n,5)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Trainfa takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AITrainFlyingRatio[Pnumber], true, function Chfa)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_TrainFlying takes nothing returns nothing
set gg_trg_AI_TrainFlying = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_TrainFlying, function AIA_Trainfa )
endfunction
function Chup takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
if CheckAiGold(Player(n),1360 ) then
call SecondBuildingTrain(n,6)
elseif CheckAiGold(Player(n),590) then
call FirstBuildingTrain(n,6)
endif
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Upgrad takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIUpgradetime[Pnumber], true, function Chup)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_Upgradebar takes nothing returns nothing
set gg_trg_AI_Upgradebar = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Upgradebar, function AIA_Upgrad )
endfunction
function Chex takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
local real area = LoadRealBJ(2,GetHandleIdBJ(t),udg_AI_timers)
call Exp_order(Player(n),area)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Expand takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call SaveRealBJ(udg_AIRangeExp[Pnumber],2,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIExpAttackratio[Pnumber], true, function Chex)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_Expand_attack takes nothing returns nothing
set gg_trg_AI_Expand_attack = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Expand_attack, function AIA_Expand )
endfunction
function Chwk takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call Attackweak(n)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Aweak takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIBattletime[Pnumber], true, function Chwk)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_Weak_target takes nothing returns nothing
set gg_trg_AI_Weak_target = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Weak_target, function AIA_Aweak )
endfunction
function Chtat takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call TotalAttack(n)
set t = null
call DestroyTimer(t)
set n = 0
endfunction
function AIA_Tattack takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, udg_AIMassAttackratio[Pnumber], true, function Chtat)
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AI_Siege_attack takes nothing returns nothing
set gg_trg_AI_Siege_attack = CreateTrigger( )
call TriggerAddAction( gg_trg_AI_Siege_attack, function AIA_Tattack )
endfunction
function Chtankmode takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer n = LoadIntegerBJ(1,GetHandleIdBJ(t),udg_AI_timers)
call SecondBuildingTrain(n,6)
call DestroyTimer(t)
set n = 0
endfunction
function AIA_mode takes nothing returns nothing
local timer t = CreateTimer()
local integer Pnumber = udg_TempPN
if ((udg_tank_on)) or (udg_mage_on) then
call FirstBuildingTrain(Pnumber,6)
call SaveIntegerBJ(Pnumber,1,GetHandleIdBJ(t),udg_AI_timers)
call TimerStart(t, 145, false, function Chtankmode)
endif
set Pnumber = 0
endfunction
//===========================================================================
function InitTrig_AITMM takes nothing returns nothing
set gg_trg_AITMM = CreateTrigger( )
call TriggerAddAction( gg_trg_AITMM, function AIA_mode )
endfunction
function Trig_AIFU_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER ) and (udg_AI_FU_ON[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] == false ))
endfunction
function Trig_AIFU_Actions takes nothing returns nothing
set udg_AI_FU_ON[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = true
endfunction
//===========================================================================
function InitTrig_AIFU takes nothing returns nothing
set gg_trg_AIFU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AIFU, EVENT_PLAYER_UNIT_UPGRADE_FINISH )
call TriggerAddCondition( gg_trg_AIFU, Condition( function Trig_AIFU_Conditions ) )
call TriggerAddAction( gg_trg_AIFU, function Trig_AIFU_Actions )
endfunction
function Trig_AISU_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER ) and ( GetUnitTypeId(GetTriggerUnit()) == udg_Supgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]] ) )
endfunction
function Trig_AISU_Actions takes nothing returns nothing
set udg_AI_SU_ON[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = true
endfunction
//===========================================================================
function InitTrig_AISU takes nothing returns nothing
set gg_trg_AISU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AISU, EVENT_PLAYER_UNIT_UPGRADE_FINISH )
call TriggerAddCondition( gg_trg_AISU, Condition( function Trig_AISU_Conditions ) )
call TriggerAddAction( gg_trg_AISU, function Trig_AISU_Actions )
endfunction
function Trig_AITF_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetConstructedStructure())) == MAP_CONTROL_COMPUTER ) and ( GetUnitTypeId(GetConstructedStructure()) == udg_Tower_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetConstructedStructure()))]] ) )
endfunction
function Trig_AITF_Actions takes nothing returns nothing
local real ang = GetRandomDirectionDeg()
local location c = GetUnitLoc(GetConstructedStructure())
local integer n = 1
loop
exitwhen n > 3
set udg_Obs_loc = PolarProjectionBJ(c, GetRandomDirectionDeg() + 60, ang)
call CreateNUnitsAtLoc( 1, 'u01Y', GetOwningPlayer(GetConstructedStructure()), udg_Obs_loc, bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 5.00, 'BTLF', GetLastCreatedUnit() )
call IssueBuildOrderByIdLocBJ( GetLastCreatedUnit(), udg_Otbuild[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetConstructedStructure()))]], udg_Obs_loc)
set ang = ang + 120
set n = n + 1
call RemoveLocation(udg_Obs_loc)
endloop
set n = 0
set ang = 0
call RemoveLocation(c)
endfunction
//===========================================================================
function InitTrig_AITF takes nothing returns nothing
set gg_trg_AITF = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AITF, EVENT_PLAYER_UNIT_CONSTRUCT_FINISH )
call TriggerAddCondition( gg_trg_AITF, Condition( function Trig_AITF_Conditions ) )
call TriggerAddAction( gg_trg_AITF, function Trig_AITF_Actions )
endfunction
function Trig_AIDU_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetAttackedUnitBJ())) == MAP_CONTROL_COMPUTER ) and ( GetUnitLifePercent(GetAttackedUnitBJ()) < 15.00 ) and (GetAIDifficulty(GetOwningPlayer(GetAttackedUnitBJ())) == AI_DIFFICULTY_INSANE ))
endfunction
function Trig_AIDU_Actions takes nothing returns nothing
call SaveUnitHandleBJ( GetAttackedUnitBJ(), 1, 1, udg_AI_hash )
call TriggerRegisterUnitInRangeSimple( gg_trg_AIDR, 256, GetAttackedUnitBJ() )
call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_Dennygroup )
endfunction
//===========================================================================
function InitTrig_AIDU takes nothing returns nothing
set gg_trg_AIDU = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AIDU, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AIDU, Condition( function Trig_AIDU_Conditions ) )
call TriggerAddAction( gg_trg_AIDU, function Trig_AIDU_Actions )
endfunction
function Trig_AIDR_Actions takes nothing returns nothing
local unit denny = LoadUnitHandleBJ(1, 1, udg_AI_hash)
local unit v = GetTriggerUnit()
local location p
if (GetOwningPlayer(v) == GetOwningPlayer(denny) ) then
set p = GetRandomLocInRect(GetPlayableMapRect())
call IssueTargetOrderBJ( v, "attack", denny )
call GroupRemoveUnitSimple( v, udg_Grupo_rescate )
call PolledWait(4)
call IssuePointOrderLocBJ( v, "patrol", p )
call RemoveLocation(p)
endif
set denny = null
set v = null
call RemoveLocation(p)
endfunction
//===========================================================================
function InitTrig_AIDR takes nothing returns nothing
set gg_trg_AIDR = CreateTrigger( )
call TriggerAddAction( gg_trg_AIDR, function Trig_AIDR_Actions )
endfunction
function Trig_detect_AI_Actions takes nothing returns nothing
local integer c = 1
set udg_AI_loc = Location(-4800.00, -10875.00)
call TriggerSleepAction( 1.00 )
loop
exitwhen c > 8
if ( GetPlayerController(ConvertedPlayer(c)) == MAP_CONTROL_COMPUTER) then
call TriggerSleepAction( 0.50 )
set udg_player_count = ( udg_player_count + 1 )
set udg_Player_Ai[udg_player_count] = ConvertedPlayer(c)
else
endif
set c = c + 1
endloop
if ( udg_player_count <= 0 ) then
call DisableTrigger( gg_trg_owningcastleAi )
else
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_492" )
if ( GetPlayerController(Player(0)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00T', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(1)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00U', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(2)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00W', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(3)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00Y', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(4)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00X', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(5)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00V', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(6)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e00Z', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
if ( GetPlayerController(Player(7)) == MAP_CONTROL_COMPUTER ) then
call CreateNUnitsAtLoc( 1, 'e010', Player(0), udg_AI_loc, bj_UNIT_FACING )
endif
call RemoveLocation(udg_AI_loc)
call TriggerSleepAction( 2.00 )
call EnableTrigger( gg_trg_owningcastleAi )
call EnableTrigger( gg_trg_move_f_rescue )
call EnableTrigger( gg_trg_move_f_rescueb )
call EnableTrigger( gg_trg_move_f_rescuec )
call EnableTrigger( gg_trg_Recognize )
call EnableTrigger( gg_trg_buyorder )
call EnableTrigger( gg_trg_buyankorder )
call EnableTrigger( gg_trg_buyanks )
call EnableTrigger( gg_trg_AIheroscape )
call EnableTrigger( gg_trg_AIThirdcape )
call EnableTrigger( gg_trg_AImoveheroG )
call EnableTrigger( gg_trg_rescatab )
call EnableTrigger( gg_trg_shopping )
call EnableTrigger( gg_trg_abilitiesOrcAI )
call EnableTrigger( gg_trg_AIHR )
call EnableTrigger( gg_trg_AIHD )
call EnableTrigger( gg_trg_AHL )
call EnableTrigger(gg_trg_Tax_Neutral)
endif
set c = 0
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_detect_AI takes nothing returns nothing
set gg_trg_detect_AI = CreateTrigger( )
call TriggerAddAction( gg_trg_detect_AI, function Trig_detect_AI_Actions )
endfunction
function Trig_disable_Ai_selector_Func003A takes nothing returns nothing
call IssueTargetOrderBJ( GetEnumUnit(), "smart", GroupPickRandomUnit(udg_Temp_group2) )
endfunction
function Trig_disable_Ai_selector_Actions takes nothing returns nothing
local group g = GetUnitsInRectAll(gg_rct_Region_079)
set udg_Temp_group2 = GetUnitsOfTypeIdAll('ncop')
call ForGroupBJ(g, function Trig_disable_Ai_selector_Func003A )
call DestroyGroup(g)
call DestroyGroup(udg_Temp_group2)
call PolledWait(5)
call DisableTrigger( gg_trg_SFAI )
call DisableTrigger( gg_trg_SEAI )
call DisableTrigger( gg_trg_SSAI )
call DisableTrigger( gg_trg_SAAI )
call DisableTrigger( gg_trg_SBAI )
call DisableTrigger( gg_trg_SDAI )
call DisableTrigger( gg_trg_SCAI )
call DisableTrigger( gg_trg_SDVAI )
call DisableTrigger( gg_trg_SIAI )
call DisableTrigger( gg_trg_SRAI )
call DisableTrigger( gg_trg_STAI )
endfunction
//===========================================================================
function InitTrig_disable_Ai_selector takes nothing returns nothing
set gg_trg_disable_Ai_selector = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_disable_Ai_selector, 100.00 )
call TriggerAddAction( gg_trg_disable_Ai_selector, function Trig_disable_Ai_selector_Actions )
endfunction
function istroll takes nothing returns boolean
return (( GetUnitTypeId(GetTriggerUnit()) == 'n02I' ) or ( GetUnitTypeId(GetTriggerUnit()) == 'n02H' ) or ( GetUnitTypeId(GetTriggerUnit()) == 'n02G' ))
endfunction
function Trig_AT_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER ) and ( IsUnitInGroup(GetTriggerUnit(), udg_Av_on_group) == false ) and (istroll() == true))
endfunction
function Trig_AT_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
call GroupAddUnitSimple(u, udg_Av_on_group )
call GroupRemoveUnitSimple( u, udg_Grupo_rescate )
call IssueImmediateOrderBJ(u, "avatar" )
call TriggerSleepAction( 8.50 )
call GroupRemoveUnitSimple(u, udg_Av_on_group )
set u = null
endfunction
//===========================================================================
function InitTrig_AT takes nothing returns nothing
set gg_trg_AT = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AT, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AT, Condition( function Trig_AT_Conditions ) )
call TriggerAddAction( gg_trg_AT, function Trig_AT_Actions )
endfunction
function Trig_abilitiesOrcAI_Func001C takes nothing returns boolean
if ( ( GetUnitTypeId(GetAttackedUnitBJ()) == 'o006' ) ) then
return true
endif
if ( ( GetUnitTypeId(GetAttackedUnitBJ()) == 'o007' ) ) then
return true
endif
if ( ( GetUnitTypeId(GetAttackedUnitBJ()) == 'O000' ) ) then
return true
endif
return false
endfunction
function Trig_abilitiesOrcAI_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetAttackedUnitBJ())) == MAP_CONTROL_COMPUTER ) and ( udg_provoke_on == false ) and Trig_abilitiesOrcAI_Func001C())
endfunction
function Trig_abilitiesOrcAI_Actions takes nothing returns nothing
set udg_provoke_on = true
call IssueImmediateOrderBJ( GetAttackedUnitBJ(), "taunt" )
call TriggerSleepAction( 10.00 )
set udg_provoke_on = false
endfunction
//===========================================================================
function InitTrig_abilitiesOrcAI takes nothing returns nothing
set gg_trg_abilitiesOrcAI = CreateTrigger( )
call DisableTrigger( gg_trg_abilitiesOrcAI )
call TriggerRegisterAnyUnitEventBJ( gg_trg_abilitiesOrcAI, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_abilitiesOrcAI, Condition( function Trig_abilitiesOrcAI_Conditions ) )
call TriggerAddAction( gg_trg_abilitiesOrcAI, function Trig_abilitiesOrcAI_Actions )
endfunction
function FuriousST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Angry Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 70
set udg_AIExpAttackratio[n] = 50
set udg_AIMassAttackratio[n] = 110
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 46
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Enraged Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 50
set udg_AIExpAttackratio[n] = 40
set udg_AIMassAttackratio[n] = 90
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 36
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Furious Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 43
set udg_AIExpAttackratio[n] = 40
set udg_AIMassAttackratio[n] = 70
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 26
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SFAI takes nothing returns nothing
set gg_trg_SFAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SFAI, gg_rct_Furious )
call TriggerAddAction( gg_trg_SFAI, function FuriousST )
endfunction
function EvilST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Deceitful Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 70
set udg_AIExpAttackratio[n] = 60
set udg_AIMassAttackratio[n] = 105
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 67
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Wicked Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 45
set udg_AIExpAttackratio[n] = 45
set udg_AIMassAttackratio[n] = 85
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 47
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Evil Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 39
set udg_AIExpAttackratio[n] = 38
set udg_AIMassAttackratio[n] = 65
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 27
set udg_AIC_PillageLover[n + 1] = true
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SEAI takes nothing returns nothing
set gg_trg_SEAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SEAI, gg_rct_Evil )
call TriggerAddAction( gg_trg_SEAI, function EvilST )
endfunction
function SmartST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Mage Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 50
set udg_AIExpAttackratio[n] = 80
set udg_AIMassAttackratio[n] = 100
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 45
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Sorceror Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 45
set udg_AIExpAttackratio[n] = 55
set udg_AIMassAttackratio[n] = 80
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 35
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Magic Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 40
set udg_AIExpAttackratio[n] = 50
set udg_AIMassAttackratio[n] = 60
set udg_AIReschAR[n] = udg_AIC_RLover
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 25
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SSAI takes nothing returns nothing
set gg_trg_SSAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SSAI, gg_rct_Smart )
call TriggerAddAction( gg_trg_SSAI, function SmartST )
endfunction
function ArcaneST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Erudite Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 70
set udg_AIExpAttackratio[n] = 60
set udg_AIMassAttackratio[n] = 92
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 60
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Sage Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 53
set udg_AIExpAttackratio[n] = 50
set udg_AIMassAttackratio[n] = 72
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 40
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Arcane Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerLover
set udg_AIBattletime[n] = 37
set udg_AIExpAttackratio[n] = 41
set udg_AIMassAttackratio[n] = 52
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 20
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SAAI takes nothing returns nothing
set gg_trg_SAAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SAAI, gg_rct_Arcane )
call TriggerAddAction( gg_trg_SAAI, function ArcaneST )
endfunction
function BtchST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Ripper Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 59
set udg_AIExpAttackratio[n] = 62
set udg_AIMassAttackratio[n] = 83
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 60
set udg_AIC_RazeLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Mutilator Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 53
set udg_AIExpAttackratio[n] = 48
set udg_AIMassAttackratio[n] = 63
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 50
set udg_AIC_RazeLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Butcher Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 46
set udg_AIExpAttackratio[n] = 39
set udg_AIMassAttackratio[n] = 43
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 40
set udg_AIC_RazeLover[n + 1] = true
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
call TriggerExecute( gg_trg_AI_TrainTank )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SBAI takes nothing returns nothing
set gg_trg_SBAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SBAI, gg_rct_Butcher )
call TriggerAddAction( gg_trg_SBAI, function BtchST )
endfunction
function DarkST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Unholy Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 96
set udg_AIExpAttackratio[n] = 71
set udg_AIMassAttackratio[n] = 85
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 120
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Fallen Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerHate
set udg_AIBattletime[n] = 71
set udg_AIExpAttackratio[n] = 52
set udg_AIMassAttackratio[n] = 65
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 80
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Dark Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 40
set udg_AIExpAttackratio[n] = 35
set udg_AIMassAttackratio[n] = 45
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 40
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Upgradebar )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SDAI takes nothing returns nothing
set gg_trg_SDAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SDAI, gg_rct_Dark )
call TriggerAddAction( gg_trg_SDAI, function DarkST )
endfunction
function CrazyST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Crazy Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 86
set udg_AIExpAttackratio[n] = 61
set udg_AIMassAttackratio[n] = 50
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 70
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Mad Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 61
set udg_AIExpAttackratio[n] = 42
set udg_AIMassAttackratio[n] = 45
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 50
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Insane Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 43
set udg_AIExpAttackratio[n] = 31
set udg_AIMassAttackratio[n] = 40
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 30
set udg_AIC_PillageLover[n + 1] = true
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Upgradebar )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SCAI takes nothing returns nothing
set gg_trg_SCAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SCAI, gg_rct_Crazy )
call TriggerAddAction( gg_trg_SCAI, function CrazyST )
endfunction
function treachST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Villain Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 76
set udg_AIExpAttackratio[n] = 51
set udg_AIMassAttackratio[n] = 87
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 120
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Betrayer Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 57
set udg_AIExpAttackratio[n] = 42
set udg_AIMassAttackratio[n] = 77
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 80
set udg_AIC_PillageLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Treacherous Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerLover
set udg_AIBattletime[n] = 47
set udg_AIExpAttackratio[n] = 33
set udg_AIMassAttackratio[n] = 67
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyLover
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 40
set udg_AIC_PillageLover[n + 1] = true
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainMage )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Upgradebar )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_STAI takes nothing returns nothing
set gg_trg_STAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_STAI, gg_rct_Treacherous )
call TriggerAddAction( gg_trg_STAI, function treachST )
endfunction
function DivineST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Legendary Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 63
set udg_AIExpAttackratio[n] = 37
set udg_AIMassAttackratio[n] = 100
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 100
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Saint Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 53
set udg_AIExpAttackratio[n] = 32
set udg_AIMassAttackratio[n] = 80
set udg_AIReschAR[n] = udg_AIC_RLover
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n + 1] = 80
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Divine Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 43
set udg_AIExpAttackratio[n] = 30
set udg_AIMassAttackratio[n] = 60
set udg_AIReschAR[n] = udg_AIC_RLover
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_EmpireLover
set udg_AIRangeMass[n] = udg_AIC_EmpireLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyLover
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 60
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SDVAI takes nothing returns nothing
set gg_trg_SDVAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SDVAI, gg_rct_Divine )
call TriggerAddAction( gg_trg_SDVAI, function DivineST )
endfunction
function InsiST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Raider Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 70
set udg_AIExpAttackratio[n] = 60
set udg_AIMassAttackratio[n] = 110
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RDefault
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CityLover
set udg_AIRangeMass[n] = udg_AIC_CityLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeDefault
set udg_AIUpgradetime[n] = 80
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Slicker Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 49
set udg_AIExpAttackratio[n] = 45
set udg_AIMassAttackratio[n] = 90
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RDefault
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyHate
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankDefault
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 50
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Insidious Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 39
set udg_AIExpAttackratio[n] = 38
set udg_AIMassAttackratio[n] = 72
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RLover
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankLover
set udg_AITrainRangeRatio[n] = udg_AIC_RangeLover
set udg_AIUpgradetime[n] = 30
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SIAI takes nothing returns nothing
set gg_trg_SIAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SIAI, gg_rct_Insidious )
call TriggerAddAction( gg_trg_SIAI, function InsiST )
endfunction
function RogueST takes nothing returns nothing
local integer n = R2I(GetUnitDefaultAcquireRange(GetEnteringUnit()))
call RemoveUnit( GetEnteringUnit() )
set udg_TempPN = n
if ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Player(n), "Blackguard Knight" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 80
set udg_AIExpAttackratio[n] = 41
set udg_AIMassAttackratio[n] = 100
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageDefault
set udg_AITrainMeRatio[n] = udg_AIC_MeleDefault
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 45
set udg_AIC_RazeLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Player(n), "Varlet Lord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerNormal
set udg_AIBattletime[n] = 65
set udg_AIExpAttackratio[n] = 38
set udg_AIMassAttackratio[n] = 85
set udg_AIReschAR[n] = udg_AIC_RDefault
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RHate
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageHate
set udg_AITrainMeRatio[n] = udg_AIC_MeleHate
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 35
set udg_AIC_RazeLover[n + 1] = true
elseif ( GetAIDifficulty(Player(n)) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Player(n), "Rogue Warlord" )
set udg_AI_TowerRatio[n + 1] = udg_AIC_TowerLover
set udg_AIBattletime[n] = 53
set udg_AIExpAttackratio[n] = 34
set udg_AIMassAttackratio[n] = 60
set udg_AIReschAR[n] = udg_AIC_RHate
set udg_AIReschHP[n] = udg_AIC_RHate
set udg_AIReschDMG[n] = udg_AIC_RLover
set udg_AIRangeExp[n] = udg_AIC_CountryLover
set udg_AIRangeMass[n] = udg_AIC_CountryLover
set udg_AITrainFlyingRatio[n] = udg_AIC_FlyDefault
set udg_AITrainMagRatio[n] = udg_AIC_MageLover
set udg_AITrainMeRatio[n] = udg_AIC_MeleLover
set udg_AITrainTankRatio[n] = udg_AIC_TankHate
set udg_AITrainRangeRatio[n] = udg_AIC_RangeHate
set udg_AIUpgradetime[n] = 25
set udg_AIC_RazeLover[n + 1] = true
endif
call TriggerExecute( gg_trg_AITMM )
call TriggerExecute( gg_trg_AI_Siege_attack )
call TriggerExecute( gg_trg_AI_Expand_attack )
call TriggerExecute( gg_trg_AI_ResearchArmor )
call TriggerExecute( gg_trg_AI_ResearchDamage )
call TriggerExecute( gg_trg_AI_ResearchHp )
call TriggerExecute( gg_trg_AI_ResearchTower )
call TriggerExecute( gg_trg_AI_TrainFlying )
call TriggerExecute( gg_trg_AI_TrainRange )
call TriggerExecute( gg_trg_AI_TrainTank )
call TriggerExecute( gg_trg_AI_Trainmelee )
call TriggerExecute( gg_trg_AI_Upgradebar )
call TriggerExecute( gg_trg_AI_Weak_target )
set udg_TempPN = 0
endfunction
//===========================================================================
function InitTrig_SRAI takes nothing returns nothing
set gg_trg_SRAI = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_SRAI, gg_rct_Rogue )
call TriggerAddAction( gg_trg_SRAI, function RogueST )
endfunction
function rescue takes nothing returns boolean
return ((GetPlayerController(GetOwningPlayer(GetAttackedUnitBJ())) == MAP_CONTROL_COMPUTER) and (GetUnitLifePercent(GetAttackedUnitBJ()) < 70.00) and (IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == false ) and (IsUnitInGroup(GetAttackedUnitBJ(), udg_Grupo_rescate) == false))
endfunction
function Trig_rescatab_Actions takes nothing returns nothing
local unit survivor = GetAttackedUnitBJ()
local location esc = GetUnitLoc(survivor)
local real array dist1
local integer R_count = 0
local integer B_count = 0
local boolean ok = false
local integer team = 0
local location p
local location q
if (IsPlayerAlly(GetOwningPlayer(survivor), udg_Ebony_player[1]) == true ) then
set team = 4
else
set team = 0
endif
if (GetUnitLifePercent(survivor) > 55.00) then
if ( GetUnitDefaultAcquireRange(GetAttacker()) >= 501 ) then
set p = PolarProjectionBJ(esc, 800.00, (GetUnitFacing(GetAttacker())))
else
set p = PolarProjectionBJ(esc, 400.00, (GetUnitFacing(GetAttacker())))
endif
call IssuePointOrderLocBJ( survivor, "move",p)
call GroupAddUnitSimple( survivor, udg_Grupo_rescate )
call RemoveLocation(esc)
call RemoveLocation(p)
set team = 0
set dist1[1] = 0
set dist1[2] = 0
set dist1[3] = 0
set dist1[4] = 0
set R_count = 0
set B_count = 0
call PolledWait(2)
call GroupRemoveUnitSimple( survivor, udg_Grupo_rescate )
set q = GetPlayerStartLocationLoc(GetOwningPlayer(survivor))
call IssuePointOrderLocBJ( survivor, "attack",q)
set survivor = null
call RemoveLocation(q)
elseif (GetUnitLifePercent(survivor) < 55.00) then
set B_count = 1
set dist1[0] = 39999.00
call GroupAddUnitSimple( survivor, udg_Grupo_rescate )
loop
exitwhen B_count> 4
set ok = (GetPlayerSlotState(ConvertedPlayer(( B_count + team ))) == PLAYER_SLOT_STATE_PLAYING) and ( udg_Arca_destruida[( B_count + team )] == false)
if ( ok == true ) then
set p = GetPlayerStartLocationLoc(ConvertedPlayer(( B_count + team )))
set dist1[B_count] = DistanceBetweenPoints(esc, p)
if ( dist1[B_count] <= dist1[( B_count - 1 )] ) then
set R_count = GetConvertedPlayerId(ConvertedPlayer(( B_count + team )))
else
set dist1[B_count] = dist1[( B_count - 1)]
endif
call RemoveLocation(p)
else
set dist1[B_count] = 39999.00
endif
set B_count = B_count + 1
endloop
call IssuePointOrderLocBJ( survivor, "move", GetPlayerStartLocationLoc(ConvertedPlayer(R_count)) )
call RemoveLocation(esc)
call RemoveLocation(q)
set team = 0
set dist1[1] = 0
set dist1[2] = 0
set dist1[3] = 0
set dist1[4] = 0
set R_count = 0
set B_count = 0
set survivor = null
call RemoveLocation(p)
endif
endfunction
//===========================================================================
function InitTrig_rescatab takes nothing returns nothing
set gg_trg_rescatab = CreateTrigger( )
call DisableTrigger( gg_trg_rescatab )
call TriggerRegisterAnyUnitEventBJ( gg_trg_rescatab, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_rescatab, Condition( function rescue ) )
call TriggerAddAction( gg_trg_rescatab, function Trig_rescatab_Actions )
endfunction
function EVAL takes nothing returns boolean
return (( IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true ) or ( GetUnitTypeId(GetTriggerUnit()) == 'h007' ))
endfunction
function Trig_shopping_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER ) and (EVAL()))
endfunction
function Trig_shopping_Actions takes nothing returns nothing
set udg_buyingunit = GetTriggerUnit()
if (UnitInventoryCount(udg_buyingunit) <= 5) then
if ( (GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 370 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I005') == false)) then
call UnitAddItemByIdSwapped( 'I005', udg_buyingunit )
call AdjustPlayerStateBJ( -370, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 370 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I00C') == false)) then
call UnitAddItemByIdSwapped( 'I00C', udg_buyingunit )
call AdjustPlayerStateBJ( -370, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 290 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I008') == false)) then
call UnitAddItemByIdSwapped( 'I008', udg_buyingunit )
call AdjustPlayerStateBJ( -290, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 280 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I007') == false)) then
call UnitAddItemByIdSwapped( 'I007', udg_buyingunit )
call AdjustPlayerStateBJ( -280, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 270 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I004') == false)) then
call UnitAddItemByIdSwapped( 'I004', udg_buyingunit )
call AdjustPlayerStateBJ( -270, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 270 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I00B') == false)) then
call UnitAddItemByIdSwapped( 'I00B', udg_buyingunit )
call AdjustPlayerStateBJ( -270, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 240 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I00A') == false)) then
call UnitAddItemByIdSwapped( 'I00A', udg_buyingunit )
call AdjustPlayerStateBJ( -240, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 230 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I00D') == false)) then
call UnitAddItemByIdSwapped( 'I00D', udg_buyingunit )
call AdjustPlayerStateBJ( -230, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
if ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER) >= 170 ) and (UnitHasItemOfTypeBJ(udg_buyingunit, 'I009') == false)) then
call UnitAddItemByIdSwapped( 'I009', udg_buyingunit )
call AdjustPlayerStateBJ( -170, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
endif
endif
endif
endif
endif
endif
endif
endif
else
endif
call IssuePointOrderLocBJ( udg_buyingunit, "move", GetPlayerStartLocationLoc(GetOwningPlayer(udg_buyingunit)) )
set udg_buyingunit = null
endfunction
//===========================================================================
function InitTrig_shopping takes nothing returns nothing
set gg_trg_shopping = CreateTrigger( )
call DisableTrigger( gg_trg_shopping )
call TriggerRegisterUnitInRangeSimple( gg_trg_shopping, 256, gg_unit_n001_0086 )
call TriggerRegisterUnitInRangeSimple( gg_trg_shopping, 256, gg_unit_n001_0079 )
call TriggerAddCondition( gg_trg_shopping, Condition( function Trig_shopping_Conditions ) )
call TriggerAddAction( gg_trg_shopping, function Trig_shopping_Actions )
endfunction
function Trig_buyanks_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER ) and ( IsUnitType(GetTriggerUnit(), UNIT_TYPE_MECHANICAL) == false ) and ( UnitInventorySizeBJ(GetTriggerUnit()) == 6 ))
endfunction
function Trig_buyanks_Func007Func001C takes nothing returns boolean
return ((GetPlayerState(GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_GOLD) >= 400) and ( UnitHasItemOfTypeBJ(udg_buyingunit, 'ankh') == false ))
endfunction
function Trig_buyanks_Func007C takes nothing returns boolean
return UnitInventoryCount(udg_buyingunit) <= 5
endfunction
function Trig_buyanks_Actions takes nothing returns nothing
set udg_buyingunit = GetTriggerUnit()
if ( Trig_buyanks_Func007C() ) then
if ( Trig_buyanks_Func007Func001C() ) then
call UnitAddItemByIdSwapped( 'ankh', udg_buyingunit )
call AdjustPlayerStateBJ( -400, GetOwningPlayer(udg_buyingunit), PLAYER_STATE_RESOURCE_LUMBER )
else
endif
else
endif
call IssuePointOrderLocBJ( udg_buyingunit, "move", GetPlayerStartLocationLoc(GetOwningPlayer(udg_buyingunit)) )
set udg_buyingunit = null
endfunction
//===========================================================================
function InitTrig_buyanks takes nothing returns nothing
set gg_trg_buyanks = CreateTrigger( )
call DisableTrigger( gg_trg_buyanks )
call TriggerRegisterUnitInRangeSimple( gg_trg_buyanks, 256, gg_unit_n001_0086 )
call TriggerRegisterUnitInRangeSimple( gg_trg_buyanks, 256, gg_unit_n001_0079 )
call TriggerAddCondition( gg_trg_buyanks, Condition( function Trig_buyanks_Conditions ) )
call TriggerAddAction( gg_trg_buyanks, function Trig_buyanks_Actions )
endfunction
function Trig_Recognize_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetEnteringUnit())) == MAP_CONTROL_COMPUTER ) and ( UnitInventorySizeBJ(GetEnteringUnit()) == 6 ) and ( IsUnitType(GetEnteringUnit(), UNIT_TYPE_MECHANICAL) == false ))
endfunction
function Trig_Recognize_Func003002003001 takes nothing returns boolean
return ( IsUnitInGroup(GetFilterUnit(), udg_buy_shop) == true )
endfunction
function Trig_Recognize_Func003002003002 takes nothing returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetEnteringUnit())) == true )
endfunction
function Trig_Recognize_Func003002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Recognize_Func003002003001(), Trig_Recognize_Func003002003002() )
endfunction
function Trig_Recognize_Func004Func002Func001C takes nothing returns boolean
return (( UnitInventoryCount(udg_buy_unit) <= 5 ) and ( UnitHasItemOfTypeBJ(udg_buy_unit, 'phea') == false ))
endfunction
function Trig_Recognize_Func004Func002C takes nothing returns boolean
return ( GetPlayerState(GetOwningPlayer(udg_buy_unit), PLAYER_STATE_RESOURCE_GOLD) >= 150 )
endfunction
function Trig_Recognize_Func004Func003Func001C takes nothing returns boolean
return (( UnitInventoryCount(udg_buy_unit) <= 5 ) and ( UnitHasItemOfTypeBJ(udg_buy_unit, 'stwp') == false ) )
endfunction
function Trig_Recognize_Func004Func003C takes nothing returns boolean
return GetPlayerState(GetOwningPlayer(udg_buy_unit), PLAYER_STATE_RESOURCE_GOLD) >= 250
endfunction
function Trig_Recognize_Func004C takes nothing returns boolean
return ( IsUnitGroupEmptyBJ(udg_Actual_shop) == false )
endfunction
function Trig_Recognize_Actions takes nothing returns nothing
set udg_buy_unit = GetEnteringUnit()
set udg_buy_point = GetUnitLoc(udg_buy_unit)
set udg_Actual_shop = GetUnitsInRangeOfLocMatching(600.00, udg_buy_point, Condition(function Trig_Recognize_Func003002003))
if ( Trig_Recognize_Func004C() ) then
call IssueImmediateOrderBJ( udg_buy_unit, "stop" )
if ( Trig_Recognize_Func004Func002C() ) then
if ( Trig_Recognize_Func004Func002Func001C() ) then
call UnitAddItemByIdSwapped( 'phea', udg_buy_unit )
call AdjustPlayerStateBJ( -150, GetOwningPlayer(udg_buy_unit), PLAYER_STATE_RESOURCE_GOLD )
else
endif
else
endif
if ( Trig_Recognize_Func004Func003C() ) then
if ( Trig_Recognize_Func004Func003Func001C() ) then
call UnitAddItemByIdSwapped( 'stwp', udg_buy_unit )
call AdjustPlayerStateBJ( -250, GetOwningPlayer(udg_buy_unit), PLAYER_STATE_RESOURCE_GOLD )
else
endif
else
endif
else
endif
call DestroyGroup(udg_Actual_shop)
call RemoveLocation(udg_buy_point)
endfunction
//===========================================================================
function InitTrig_Recognize takes nothing returns nothing
set gg_trg_Recognize = CreateTrigger( )
call DisableTrigger( gg_trg_Recognize )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone1 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone2 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone3 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone4 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone5 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone6 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone7 )
call TriggerRegisterEnterRectSimple( gg_trg_Recognize, gg_rct_secureZone8 )
call TriggerAddCondition( gg_trg_Recognize, Condition( function Trig_Recognize_Conditions ) )
call TriggerAddAction( gg_trg_Recognize, function Trig_Recognize_Actions )
endfunction
function Trig_move_f_rescue_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetEnteringUnit())) == MAP_CONTROL_COMPUTER ) and ( GetUnitLifePercent(GetEnteringUnit()) < 50.00 ) and ( IsUnitInGroup(GetEnteringUnit(), udg_Grupo_rescate) == true ))
endfunction
function Trig_move_f_rescue_Actions takes nothing returns nothing
call GroupRemoveUnitSimple( GetEnteringUnit(), udg_Grupo_rescate )
endfunction
//===========================================================================
function InitTrig_move_f_rescue takes nothing returns nothing
set gg_trg_move_f_rescue = CreateTrigger( )
call DisableTrigger( gg_trg_move_f_rescue )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone1 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone2 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone3 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone4 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone5 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone6 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone7 )
call TriggerRegisterEnterRectSimple( gg_trg_move_f_rescue, gg_rct_secureZone8 )
call TriggerAddCondition( gg_trg_move_f_rescue, Condition( function Trig_move_f_rescue_Conditions ) )
call TriggerAddAction( gg_trg_move_f_rescue, function Trig_move_f_rescue_Actions )
endfunction
function Trig_move_f_rescueb_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetLeavingUnit())) == MAP_CONTROL_COMPUTER ) and ( IsUnitInGroup(GetLeavingUnit(), udg_Grupo_rescate) == true ))
endfunction
function Trig_move_f_rescueb_Actions takes nothing returns nothing
call GroupRemoveUnitSimple( GetLeavingUnit(), udg_Grupo_rescate )
endfunction
//===========================================================================
function InitTrig_move_f_rescueb takes nothing returns nothing
set gg_trg_move_f_rescueb = CreateTrigger( )
call DisableTrigger( gg_trg_move_f_rescueb )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone1 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone2 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone3 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone4 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone5 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone6 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone7 )
call TriggerRegisterLeaveRectSimple( gg_trg_move_f_rescueb, gg_rct_secureZone8 )
call TriggerAddCondition( gg_trg_move_f_rescueb, Condition( function Trig_move_f_rescueb_Conditions ) )
call TriggerAddAction( gg_trg_move_f_rescueb, function Trig_move_f_rescueb_Actions )
endfunction
function Trig_move_f_rescuec_Conditions takes nothing returns boolean
return ( IsUnitInGroup(GetDyingUnit(), udg_Grupo_rescate) == true )
endfunction
function Trig_move_f_rescuec_Actions takes nothing returns nothing
call GroupRemoveUnitSimple( GetDyingUnit(), udg_Grupo_rescate )
endfunction
//===========================================================================
function InitTrig_move_f_rescuec takes nothing returns nothing
set gg_trg_move_f_rescuec = CreateTrigger( )
call DisableTrigger( gg_trg_move_f_rescuec )
call TriggerRegisterAnyUnitEventBJ( gg_trg_move_f_rescuec, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_move_f_rescuec, Condition( function Trig_move_f_rescuec_Conditions ) )
call TriggerAddAction( gg_trg_move_f_rescuec, function Trig_move_f_rescuec_Actions )
endfunction
function Trig_AImoveheroG_Conditions takes nothing returns boolean
return (( GetPlayerController(GetOwningPlayer(GetEnteringUnit())) == MAP_CONTROL_COMPUTER ) and ( IsUnitType(GetEnteringUnit(), UNIT_TYPE_HERO) == true ) and ( IsUnitInGroup(GetEnteringUnit(), udg_hero_esc) == true ))
endfunction
function Trig_AImoveheroG_Actions takes nothing returns nothing
call GroupRemoveUnitSimple( GetEnteringUnit(), udg_hero_esc )
endfunction
//===========================================================================
function InitTrig_AImoveheroG takes nothing returns nothing
set gg_trg_AImoveheroG = CreateTrigger( )
call DisableTrigger( gg_trg_AImoveheroG )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone1 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone2 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone3 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone4 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone5 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone6 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone7 )
call TriggerRegisterEnterRectSimple( gg_trg_AImoveheroG, gg_rct_secureZone8 )
call TriggerAddCondition( gg_trg_AImoveheroG, Condition( function Trig_AImoveheroG_Conditions ) )
call TriggerAddAction( gg_trg_AImoveheroG, function Trig_AImoveheroG_Actions )
endfunction
function Trig_AIheroscape_Conditions takes nothing returns boolean
return (( IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_HERO) == true ) and ( GetPlayerController(GetOwningPlayer(GetAttackedUnitBJ())) == MAP_CONTROL_COMPUTER ) and ( GetUnitLifePercent(GetAttackedUnitBJ()) < 35.00 ) and ( IsUnitInGroup(GetAttackedUnitBJ(), udg_hero_esc) == false ))
endfunction
function Trig_AIheroscape_Func001Func001C takes nothing returns boolean
return UnitHasItemOfTypeBJ(GetAttackedUnitBJ(), 'stwp') == true
endfunction
function Trig_AIheroscape_Func001C takes nothing returns boolean
return UnitHasItemOfTypeBJ(GetAttackedUnitBJ(), 'amrc') == true
endfunction
function Trig_AIheroscape_Actions takes nothing returns nothing
if ( Trig_AIheroscape_Func001C() ) then
call UnitUseItemPointLoc( GetAttackedUnitBJ(), GetItemOfTypeFromUnitBJ(GetAttackedUnitBJ(), 'amrc'), GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
else
if ( Trig_AIheroscape_Func001Func001C() ) then
call UnitUseItemPointLoc( GetAttackedUnitBJ(), GetItemOfTypeFromUnitBJ(GetAttackedUnitBJ(), 'stwp'), GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_hero_esc )
else
call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_hero_esc )
call IssuePointOrderLocBJ( GetAttackedUnitBJ(), "move", GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
endif
endif
endfunction
//===========================================================================
function InitTrig_AIheroscape takes nothing returns nothing
set gg_trg_AIheroscape = CreateTrigger( )
call DisableTrigger( gg_trg_AIheroscape )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AIheroscape, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AIheroscape, Condition( function Trig_AIheroscape_Conditions ) )
call TriggerAddAction( gg_trg_AIheroscape, function Trig_AIheroscape_Actions )
endfunction
function OCAI takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 1.00 ) or ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 2.00 ) or ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 3.00 ) )
endfunction
function OCAIC takes nothing returns boolean
return ((GetPlayerController(GetOwningPlayer(GetKillingUnitBJ())) == MAP_CONTROL_COMPUTER) and OCAI())
endfunction
function Trig_owningcastleAi_Actions takes nothing returns nothing
local integer pnum
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / 10 ), GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / -20 ), GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD )
if ((udg_AIC_RazeLover[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] == true) and ( GetOwningPlayer(GetDyingUnit()) != Player(PLAYER_NEUTRAL_AGGRESSIVE) )) then
return
else
if (udg_AIC_PillageLover[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] == true) then
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / 20 ), GetOwningPlayer(GetKillingUnitBJ()), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD) / -20 ), GetOwningPlayer(GetDyingUnit()), PLAYER_STATE_RESOURCE_GOLD )
set pnum = GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ())) - 1
set udg_pillager = GetKillingUnitBJ()
call TriggerExecute( gg_trg_Ptext )
else
set pnum = GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ())) - 1
endif
if ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 1.00 ) then
set udg_punto_construccion = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], Player(pnum), udg_punto_construccion, bj_UNIT_FACING )
call RemoveLocation(udg_punto_construccion)
else
if ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 2.00 ) then
set udg_punto_construccion = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Fupgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], Player(pnum), udg_punto_construccion, bj_UNIT_FACING )
call RemoveLocation(udg_punto_construccion)
else
if ( GetUnitDefaultAcquireRange(GetDyingUnit()) == 3.00 ) then
set udg_punto_construccion = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Supgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))]], Player(pnum), udg_punto_construccion, bj_UNIT_FACING )
call RemoveLocation(udg_punto_construccion)
endif
endif
endif
endif
set pnum = 0
endfunction
//===========================================================================
function InitTrig_owningcastleAi takes nothing returns nothing
set gg_trg_owningcastleAi = CreateTrigger( )
call DisableTrigger( gg_trg_owningcastleAi )
call TriggerRegisterAnyUnitEventBJ( gg_trg_owningcastleAi, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_owningcastleAi, Condition( function OCAIC ) )
call TriggerAddAction( gg_trg_owningcastleAi, function Trig_owningcastleAi_Actions )
endfunction
function Trig_AIHR_Conditions takes nothing returns boolean
return ( GetPlayerController(GetOwningPlayer(GetRevivableUnit())) == MAP_CONTROL_COMPUTER )
endfunction
function Trig_AIHR_Actions takes nothing returns nothing
set udg_HD[GetConvertedPlayerId(GetOwningPlayer(GetRevivableUnit()))] = true
set udg_HR[GetConvertedPlayerId(GetOwningPlayer(GetRevivableUnit()))] = GetRevivableUnit()
endfunction
//===========================================================================
function InitTrig_AIHR takes nothing returns nothing
set gg_trg_AIHR = CreateTrigger( )
call DisableTrigger( gg_trg_AIHR )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AIHR, EVENT_PLAYER_HERO_REVIVABLE )
call TriggerAddCondition( gg_trg_AIHR, Condition( function Trig_AIHR_Conditions ) )
call TriggerAddAction( gg_trg_AIHR, function Trig_AIHR_Actions )
endfunction
function AIHDA takes nothing returns nothing
local integer c = 1
loop
exitwhen c > 8
if ( udg_HD[c] == true ) then
if (GetPlayerState(GetOwningPlayer(udg_HR[c]), PLAYER_STATE_RESOURCE_FOOD_USED) < ( GetPlayerState(GetOwningPlayer(udg_HR[c]), PLAYER_STATE_RESOURCE_FOOD_CAP) - 6 )) then
set udg_HG = GetUnitsOfPlayerAndTypeId(ConvertedPlayer(c), udg_Tech_build[udg_Race[c]])
if ( IsUnitGroupEmptyBJ(udg_HG) == false ) then
set udg_temp_point2 = GetUnitLoc(GroupPickRandomUnit(udg_HG))
call ReviveHeroLoc( udg_HR[c], udg_temp_point2, false )
call AdjustPlayerStateBJ( ( GetUnitLevel(udg_HR[c]) * -100 ), GetOwningPlayer(udg_HR[c]), PLAYER_STATE_RESOURCE_GOLD )
call RemoveLocation(udg_temp_point2)
endif
call DestroyGroup (udg_HG)
set udg_HD[c] = false
endif
endif
set c = c + 1
endloop
set c = 0
endfunction
//===========================================================================
function InitTrig_AIHD takes nothing returns nothing
set gg_trg_AIHD = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_AIHD, 5.00 )
call TriggerAddAction( gg_trg_AIHD, function AIHDA )
endfunction
function AHLC takes nothing returns boolean
return GetPlayerController(GetOwningPlayer(GetLevelingUnit())) == MAP_CONTROL_COMPUTER
endfunction
function AHLA takes nothing returns nothing
local unit hero = GetLevelingUnit()
local integer level = GetUnitLevel(hero)
local integer Hero_number = LoadIntegerBJ(1, StringHashBJ(UnitId2StringBJ(GetUnitTypeId(hero))), udg_Skills_list)
local integer Normal_skill = LoadIntegerBJ(2, Hero_number,udg_Skills_list)
local integer Ultimate_skill = LoadIntegerBJ(1, Hero_number,udg_Skills_list)
local integer AGI = LoadIntegerBJ(1, 101,udg_Skills_list)
local integer STR = LoadIntegerBJ(2, 101,udg_Skills_list)
local integer INT = LoadIntegerBJ(3, 101,udg_Skills_list)
if ( (level == 1) or (level == 3) or (level == 6) or (level == 8) or (level == 12)) then
call SelectHeroSkill(hero, STR)
elseif ((level == 11) or (level == 13) or (level == 16) or (level == 18) or (level == 21)) then
call SelectHeroSkill(hero, INT)
elseif ((level == 22) or (level == 23) or (level == 24) or (level == 25) or (level == 12)) then
call SelectHeroSkill(hero, AGI)
elseif ((level == 2) or (level == 4) or (level == 7) or (level == 9)) then
call SelectHeroSkill(hero, Normal_skill)
elseif ((level == 5) or (level == 10) or (level == 15) or (level == 20)) then
call SelectHeroSkill(hero, Ultimate_skill)
endif
set hero = null
set level = 0
set Hero_number = 0
set Normal_skill = 0
set Ultimate_skill = 0
set AGI = 0
set STR = 0
set INT = 0
endfunction
//===========================================================================
function InitTrig_AHL takes nothing returns nothing
set gg_trg_AHL = CreateTrigger( )
call DisableTrigger( gg_trg_AHL )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AHL, EVENT_PLAYER_HERO_LEVEL )
call TriggerAddCondition( gg_trg_AHL, Condition( function AHLC ) )
call TriggerAddAction( gg_trg_AHL, function AHLA )
endfunction
function Trig_AIThirdcape_Conditions takes nothing returns boolean
return (( UnitInventorySizeBJ(GetAttackedUnitBJ()) == 6 ) and ( GetPlayerController(GetOwningPlayer(GetAttackedUnitBJ())) == MAP_CONTROL_COMPUTER ) and ( GetUnitLifePercent(GetAttackedUnitBJ()) < 30.00 ) and ( IsUnitInGroup(GetAttackedUnitBJ(), udg_hero_esc) == false ))
endfunction
function Trig_AIThirdcape_Func001Func001C takes nothing returns boolean
return UnitHasItemOfTypeBJ(GetAttackedUnitBJ(), 'stwp') == true
endfunction
function Trig_AIThirdcape_Func001C takes nothing returns boolean
return UnitHasItemOfTypeBJ(GetAttackedUnitBJ(), 'amrc') == true
endfunction
function Trig_AIThirdcape_Actions takes nothing returns nothing
if ( Trig_AIThirdcape_Func001C() ) then
call UnitUseItemPointLoc( GetAttackedUnitBJ(), GetItemOfTypeFromUnitBJ(GetAttackedUnitBJ(), 'amrc'), GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
else
if ( Trig_AIThirdcape_Func001Func001C() ) then
call UnitUseItemPointLoc( GetAttackedUnitBJ(), GetItemOfTypeFromUnitBJ(GetAttackedUnitBJ(), 'stwp'), GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_hero_esc )
else
call GroupAddUnitSimple( GetAttackedUnitBJ(), udg_hero_esc )
call IssuePointOrderLocBJ( GetAttackedUnitBJ(), "move", GetPlayerStartLocationLoc(GetOwningPlayer(GetAttackedUnitBJ())) )
endif
endif
endfunction
//===========================================================================
function InitTrig_AIThirdcape takes nothing returns nothing
set gg_trg_AIThirdcape = CreateTrigger( )
call DisableTrigger( gg_trg_AIThirdcape )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AIThirdcape, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AIThirdcape, Condition( function Trig_AIThirdcape_Conditions ) )
call TriggerAddAction( gg_trg_AIThirdcape, function Trig_AIThirdcape_Actions )
endfunction
function se1 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == true )
endfunction
function se2 takes nothing returns boolean
return ( GetFilterPlayer() != Player(3) )
endfunction
function se3 takes nothing returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetFilterUnit()), Player(3)) == false )
endfunction
function sems takes nothing returns boolean
return (se1() and se2() and se3())
endfunction
function Trig_saladino_expansion_Actions takes nothing returns nothing
set udg_moneda = GetRandomInt(1, 3)
if ( udg_moneda != 3 ) then
return
endif
set udg_Saladino_exp = GetUnitsInRangeOfLocMatching(3500.00, GetPlayerStartLocationLoc(Player(3)), Condition(function sems))
if (IsUnitGroupEmptyBJ(udg_Saladino_exp) == false ) then
set udg_Saladino_target = GetUnitLoc(GroupPickRandomUnit(udg_Saladino_exp))
call DestroyGroup (udg_Saladino_exp)
call ConditionalTriggerExecute( gg_trg_saladino_ataque_expansion )
else
endif
endfunction
//===========================================================================
function InitTrig_saladino_expansion takes nothing returns nothing
set gg_trg_saladino_expansion = CreateTrigger( )
call DisableTrigger( gg_trg_saladino_expansion )
call TriggerRegisterTimerEventPeriodic( gg_trg_saladino_expansion, 33.00 )
call TriggerAddAction( gg_trg_saladino_expansion, function Trig_saladino_expansion_Actions )
endfunction
function Trig_saladino_investigar_Conditions takes nothing returns boolean
return GetPlayerState(Player(3), PLAYER_STATE_RESOURCE_GOLD) >= 200
endfunction
function Trig_saladino_investigar_Func004A takes nothing returns nothing
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R002' )
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R001' )
call IssueUpgradeOrderByIdBJ( GetEnumUnit(), 'R000' )
endfunction
function Trig_saladino_investigar_Actions takes nothing returns nothing
set udg_Saladino_army = GetUnitsOfPlayerAndTypeId(Player(3), udg_Tech_build[udg_Race[4]])
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_investigar_Func004A )
call DestroyGroup (udg_Saladino_army)
endfunction
//===========================================================================
function InitTrig_saladino_investigar takes nothing returns nothing
set gg_trg_saladino_investigar = CreateTrigger( )
call DisableTrigger( gg_trg_saladino_investigar )
call TriggerRegisterTimerEventPeriodic( gg_trg_saladino_investigar, 98.00 )
call TriggerAddCondition( gg_trg_saladino_investigar, Condition( function Trig_saladino_investigar_Conditions ) )
call TriggerAddAction( gg_trg_saladino_investigar, function Trig_saladino_investigar_Actions )
endfunction
function Trig_saladino_defender_Conditions takes nothing returns boolean
return (( udg_saladinobajoataque == false ) and ( IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == true ) and ( GetOwningPlayer(GetAttackedUnitBJ()) == Player(3) ) )
endfunction
function salfilter takes nothing returns boolean
return (( GetOwningPlayer(GetFilterUnit()) == Player(3) ) and ( GetUnitLifePercent(GetFilterUnit()) >= 70.00 ))
endfunction
function Trig_saladino_defender_Func003A takes nothing returns nothing
call IssuePointOrderLocBJ( GetEnumUnit(), "attack", udg_temp_point2 )
endfunction
function Trig_saladino_defender_Actions takes nothing returns nothing
set udg_temp_point2 = GetUnitLoc(GetAttackedUnitBJ())
set udg_Saladino_army = GetUnitsInRangeOfLocMatching(4500.00, udg_temp_point2, Condition(function salfilter))
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_defender_Func003A )
call DestroyGroup (udg_Saladino_army)
call RemoveLocation(udg_temp_point2)
set udg_saladinobajoataque = true
call TriggerSleepAction( 10.00 )
set udg_saladinobajoataque = false
endfunction
//===========================================================================
function InitTrig_saladino_defender takes nothing returns nothing
set gg_trg_saladino_defender = CreateTrigger( )
call DisableTrigger( gg_trg_saladino_defender )
call TriggerRegisterAnyUnitEventBJ( gg_trg_saladino_defender, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_saladino_defender, Condition( function Trig_saladino_defender_Conditions ) )
call TriggerAddAction( gg_trg_saladino_defender, function Trig_saladino_defender_Actions )
endfunction
function Trig_saladino_defender_ally_Conditions takes nothing returns boolean
return (( udg_saladinobajoataque == false ) and ( IsUnitType(GetAttackedUnitBJ(), UNIT_TYPE_STRUCTURE) == true ) and ( IsPlayerAlly(GetOwningPlayer(GetAttackedUnitBJ()), Player(3)) == true ))
endfunction
function saalfilter takes nothing returns boolean
return (( GetOwningPlayer(GetFilterUnit()) == Player(3) ) and ( GetUnitLifePercent(GetFilterUnit()) >= 70.00 ))
endfunction
function Trig_saladino_defender_ally_Func003C takes nothing returns boolean
return IsUnitGroupEmptyBJ(udg_Saladino_army) == true
endfunction
function Trig_saladino_defender_ally_Func004A takes nothing returns nothing
call IssuePointOrderLocBJ( GetEnumUnit(), "attack", udg_temp_point2 )
endfunction
function Trig_saladino_defender_ally_Actions takes nothing returns nothing
set udg_temp_point2 = GetUnitLoc(GetAttackedUnitBJ())
set udg_Saladino_army = GetUnitsInRangeOfLocMatching(4500.00, udg_temp_point2, Condition(function saalfilter))
if ( Trig_saladino_defender_ally_Func003C() ) then
call DestroyGroup (udg_Percival_scape)
set udg_Saladino_army = GetUnitsInRangeOfLocMatching(6000.00, udg_temp_point2, Condition(function saalfilter))
else
endif
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_defender_ally_Func004A )
call DestroyGroup (udg_Saladino_army)
call RemoveLocation(udg_temp_point2)
set udg_saladinobajoataque = true
call TriggerSleepAction( 10.00 )
set udg_saladinobajoataque = false
endfunction
//===========================================================================
function InitTrig_saladino_defender_ally takes nothing returns nothing
set gg_trg_saladino_defender_ally = CreateTrigger( )
call DisableTrigger( gg_trg_saladino_defender_ally )
call TriggerRegisterAnyUnitEventBJ( gg_trg_saladino_defender_ally, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_saladino_defender_ally, Condition( function Trig_saladino_defender_ally_Conditions ) )
call TriggerAddAction( gg_trg_saladino_defender_ally, function Trig_saladino_defender_ally_Actions )
endfunction
function Trig_saladino_entrenar_Func001001001002 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction
function Trig_saladino_entrenar_Conditions takes nothing returns boolean
return CountUnitsInGroup(GetUnitsOfPlayerMatching(Player(3), Condition(function Trig_saladino_entrenar_Func001001001002))) <= 100
endfunction
function Trig_saladino_entrenar_Func003A takes nothing returns nothing
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Fupgrade_build[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Mele_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Tank_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Mele_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Range_Unit[udg_Race[4]] )
endfunction
function Trig_saladino_entrenar_Func006A takes nothing returns nothing
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Supgrade_build[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), 'n014' )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Mele_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Tank_Unit[udg_Race[4]] )
endfunction
function Trig_saladino_entrenar_Func009A takes nothing returns nothing
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Tank_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Range_Unit[udg_Race[4]] )
call IssueTrainOrderByIdBJ( GetEnumUnit(), udg_Flyng_Unit[udg_Race[4]] )
endfunction
function Trig_saladino_entrenar_Actions takes nothing returns nothing
set udg_Saladino_army = GetUnitsOfPlayerAndTypeId(Player(3), udg_Main_build[udg_Race[4]])
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_entrenar_Func003A )
call DestroyGroup (udg_Saladino_army)
set udg_Saladino_army = GetUnitsOfPlayerAndTypeId(Player(3), udg_Fupgrade_build[udg_Race[4]])
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_entrenar_Func006A )
call DestroyGroup (udg_Saladino_army)
set udg_Saladino_army = GetUnitsOfPlayerAndTypeId(Player(3), udg_Supgrade_build[udg_Race[4]])
call ForGroupBJ( udg_Saladino_army, function Trig_saladino_entrenar_Func009A )
call DestroyGroup (udg_Saladino_army)
endfunction
//===========================================================================
function InitTrig_saladino_entrenar takes nothing returns nothing
set gg_trg_saladino_entrenar = CreateTrigger( )
call DisableTrigger( gg_trg_saladino_entrenar )
call TriggerRegisterTimerEventPeriodic( gg_trg_saladino_entrenar, 38.00 )
call TriggerAddCondition( gg_trg_saladino_entrenar, Condition( function Trig_saladino_entrenar_Conditions ) )
call TriggerAddAction( gg_trg_saladino_entrenar, function Trig_saladino_entrenar_Actions )
endfunction
function RHA takes nothing returns nothing
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Innate_Ability )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Arrow_hash )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_ISH )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_Lightc )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_MP )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_SNP )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_SSR )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_ST )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_cache )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_obstacles_hash )
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), udg_waves )
endfunction
//===========================================================================
function InitTrig_Removehandles takes nothing returns nothing
set gg_trg_Removehandles = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Removehandles, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_Removehandles, function RHA )
endfunction
function DTRC takes nothing returns boolean
return (( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[1]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[2]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[3]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[4]] ))
endfunction
function DTRA takes nothing returns nothing
set udg_victory_R = ( udg_victory_R + 1 )
set udg_Arca_destruida[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))] = true
if ( GetPlayerController(GetOwningPlayer(GetDyingUnit())) == MAP_CONTROL_COMPUTER ) then
endif
endfunction
//===========================================================================
function InitTrig_Defeat_teamR takes nothing returns nothing
set gg_trg_Defeat_teamR = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Defeat_teamR, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Defeat_teamR, Condition( function DTRC ) )
call TriggerAddAction( gg_trg_Defeat_teamR, function DTRA )
endfunction
function DTBC takes nothing returns boolean
return (( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[8]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[7]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[6]] ) or ( GetUnitTypeId(GetDyingUnit()) == udg_Shop_build[udg_Race[5]] ))
endfunction
function DTBA takes nothing returns nothing
set udg_victory_B = ( udg_victory_B + 1 )
set udg_Arca_destruida[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))] = true
if ( GetPlayerController(GetOwningPlayer(GetDyingUnit())) == MAP_CONTROL_COMPUTER ) then
endif
endfunction
//===========================================================================
function InitTrig_Defeat_teamB takes nothing returns nothing
set gg_trg_Defeat_teamB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Defeat_teamB, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Defeat_teamB, Condition( function DTBC ) )
call TriggerAddAction( gg_trg_Defeat_teamB, function DTBA )
endfunction
function WAC takes nothing returns boolean
return udg_solo_on == false
endfunction
function WAA takes nothing returns nothing
local integer c = 1
call PlayThematicMusicBJ( "Sound\\Music\\mp3Music\\PursuitTheme.mp3" )
call TriggerSleepAction( 2.00 )
call TriggerExecute( gg_trg_cinematicend1 )
call TriggerSleepAction( 5.00 )
loop
exitwhen c > udg_EbonyForces
call DisplayTextToForce( GetPlayersAll(), ( ( udg_Player_color[GetConvertedPlayerId(udg_Ebony_player[c])] + GetPlayerName(udg_Ebony_player[c]) ) + ( "|r, the " + ( udg_Player_color[GetConvertedPlayerId(udg_Ebony_player[c])] + ( udg_Player_rank[GetConvertedPlayerId(udg_Ebony_player[c])] + "|r has win!" ) ) ) ) )
set c = c + 1
endloop
call TriggerSleepAction( 1.00 )
set c = 0
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_win1 takes nothing returns nothing
set gg_trg_win1 = CreateTrigger( )
call TriggerRegisterVariableEvent( gg_trg_win1, "udg_victory_R", EQUAL, 4.00 )
call TriggerAddCondition( gg_trg_win1, Condition( function WAC ) )
call TriggerAddAction( gg_trg_win1, function WAA )
endfunction
function CEAA takes nothing returns nothing
call DestroyTrigger( gg_trg_actualiza )
call DisableTrigger( gg_trg_taxing )
call DisableTrigger( gg_trg_timerturno )
call FogEnableOff( )
call PauseAllUnitsBJ( true )
call TriggerSleepAction( 9.00 )
call DisplayTimedTextToForce( GetPlayersAll(), 10.00, "TRIGSTR_3482" )
call MultiboardMinimizeBJ( false, GetLastCreatedMultiboard() )
endfunction
//===========================================================================
function InitTrig_cinematicend1 takes nothing returns nothing
set gg_trg_cinematicend1 = CreateTrigger( )
call TriggerAddAction( gg_trg_cinematicend1, function CEAA )
endfunction
function WBC takes nothing returns boolean
return udg_solo_on == false
endfunction
function WBA takes nothing returns nothing
local integer c = 1
call PlayThematicMusicBJ( "Sound\\Music\\mp3Music\\PursuitTheme.mp3" )
call TriggerSleepAction( 2.00 )
call TriggerExecute( gg_trg_cinematicend1 )
call TriggerSleepAction( 5.00 )
loop
exitwhen c > udg_TyrForces
call DisplayTextToForce( GetPlayersAll(), ( ( udg_Player_color[GetConvertedPlayerId(udg_tyr_player[c])] + GetPlayerName(udg_tyr_player[c]) ) + ( "|r, the " + ( udg_Player_color[GetConvertedPlayerId(udg_tyr_player[c])] + ( udg_Player_rank[GetConvertedPlayerId(udg_tyr_player[c])] + "|r has win!" ) ) ) ) )
set c = c + 1
endloop
set c = 0
call TriggerSleepAction( 1.00 )
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_win2 takes nothing returns nothing
set gg_trg_win2 = CreateTrigger( )
call TriggerRegisterVariableEvent( gg_trg_win2, "udg_victory_B", EQUAL, 4.00 )
call TriggerAddCondition( gg_trg_win2, Condition( function WBC ) )
call TriggerAddAction( gg_trg_win2, function WBA )
endfunction
function SMBC takes nothing returns boolean
return (( GetPlayerSlotState(Player(4)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(5)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(6)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(7)) == PLAYER_SLOT_STATE_EMPTY ))
endfunction
function SMBA takes nothing returns nothing
set udg_solo_on = true
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_356" )
call DisableTrigger( gg_trg_Defeat_teamB )
call DisableTrigger( gg_trg_Defeat_teamR )
call DisableTrigger( gg_trg_win1 )
call DisableTrigger( gg_trg_win2 )
call DisableTrigger( gg_trg_cinematicend1 )
endfunction
//===========================================================================
function InitTrig_solomode_2 takes nothing returns nothing
set gg_trg_solomode_2 = CreateTrigger( )
call TriggerAddCondition( gg_trg_solomode_2, Condition( function SMBC ) )
call TriggerAddAction( gg_trg_solomode_2, function SMBA )
endfunction
function SMAC takes nothing returns boolean
return (( GetPlayerSlotState(Player(3)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(2)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(1)) == PLAYER_SLOT_STATE_EMPTY ) and ( GetPlayerSlotState(Player(0)) == PLAYER_SLOT_STATE_EMPTY ))
endfunction
function SMAA takes nothing returns nothing
set udg_solo_on = true
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_355" )
call DisableTrigger( gg_trg_Defeat_teamB )
call DisableTrigger( gg_trg_Defeat_teamR )
call DisableTrigger( gg_trg_win1 )
call DisableTrigger( gg_trg_win2 )
call DisableTrigger( gg_trg_cinematicend1 )
endfunction
//===========================================================================
function InitTrig_solomode_1 takes nothing returns nothing
set gg_trg_solomode_1 = CreateTrigger( )
call TriggerAddCondition( gg_trg_solomode_1, Condition( function SMAC ) )
call TriggerAddAction( gg_trg_solomode_1, function SMAA )
endfunction