• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Triggers

Warcraft4_Typhoon.w3x
Variables
Utils
GetPlayerColorString
Initialization
DisableSave
Races
UseCustomConsole
InitConstants
PrepareToChooseRace
CreateChooseRaceInterface
CreateChooseRaceInterface
InitRaces
ChooseRaceTimer
UnitIndexer
UnitIndexer
Variables
Damage Engine
Make sure to copy this entire folder
Required Lua
LinkedList
Hook
Global Initialization
GlobalRemap
Timed
Events
- - - Modifier events - - -
- - - Unique events - - -
- - - Non-Modifier events - - -
- - - Wrap-up events - - -
- - - Old but still working - - -
- - - Special Controls - - -
Event getters (read-only)
Event variables (read/write)
Pre-Damage Setters
Filter Types
Constants
Unit Classes
Armor Types
Attack Types
Damage Types
Defense Types
Weapon Types
Damage Engine Config
Damage Engine
Heal Event
Heal Events
Heal Configuration
Heal Check Loop
Heal Add Unit
Heal Remove Unit
Next 3 are optional
Heal Unit
Heal Adjust On Damage
Heal Adjust After Damage
On Heal
FadeSystem
FadeSystemInit
FSMainLoop
FSAddUnit
AddUnitTemplate
Hero Librarian
Seal Scroll
Erudite Aura
Chronicles Choose
Tomb of Silence
Tomb of Silence End
Untitled Trigger 008
Hero Queen
Resilience
Queens Duty
Spider Attack
Untitled Trigger 020
Broodmother
Life for the Queen
Life for the Queen 2
Untitled Trigger 018
Royal Guard Dies
Royal Guard Dies Copy
Cooldpwn Life for the QUeen
Life for the Queen UnLearn
Untitled Trigger 014
Brood Aura Setup
Brood Aura
Cocoon
Life for the Queen Ultimate
Life for the Queen Aura Loop
Untitled Trigger 024
Hero Giant Spider
Growth Revive
Growth
Growth Windwalk
Growth UnLearn
---------------------------
Ambush
Ambush Activate
---------------------------
Insatiable Hunger
Insatiable Hunger Loop
Hero Weawer
Strings of Fate
String of Fate Effect
Unraveling
Hero Gatekeeper
Overpower
Overpower Loop
Underlord Aura New
Underlord Aura Learn
Underlord Aura Dmg reduction
Underlord Aura HP Regen
Piercing Strike Copy
Stronghold
Stronghold Loop
Chitin Shield Copy
Chitin Shield Copy Copy
Gatherer
Untitled Trigger 012 Copy
Gatherer
Cancel
Untitled Trigger 002
Start Building
Burrow SFX Copy
Burrow SFX Copy Copy
Cocoon Work Cancle Copy
CocoonTech Copy
Untitled Trigger 009
Building Death
Remove rally from new gatherer
Webspiner
Retreat Copy
Retreat
Retreat Heal
Untitled Trigger 016
Untitled Trigger 017
Widow
Dark Swarm Cast
Dark Swarm End
Buff System
Run Buffing
Buff Periodic
Stun Plugin Documentation
Stun Config
Stun Debuff
Vizier
Bloodlust Copy
Deadly Posion
Enlightenment
Enlightment Bonus Damage
Insgiht
Return Buff after Burrow
Spider Trap
Spider Trap Execution
Spider Trap Execution Copy
Swarm Detect
Swarm Detect Damage from Swarmer
Swarm Building Debuff
Swarm Building Debuff Copy
Untitled Trigger 004
Untitled Trigger 004 Copy
---------------------------
Ambusher Attack Copy 2
Ambush Loop
Ambusher Death Remove timer
Ambush Dmg Combat
Cocoon System
Webbed Ground
---------------------------
CocoonBuild
CocoonLoop
CocoonDie
---------------------------
Select Nerubian Eggs
Select Nerubian Eggs Copy
Select Nerubian Eggs Copy Copy
One Click One Train Script Broodling
One Click One Train Script Broodling Copy
One Click One Train Script Broodling Copy 2
One Click One Train Script Broodling Copy 3
One Click One Train Script Broodling Copy 4
One Click One Train Script Broodling Copy 5
One Click One Train Script Broodling Copy 6
One Click One Train Script Broodling Copy 7
One Click One Train Script Broodling Copy 8
One Click One Train Script Broodling Copy 9
One Click One Train Script Broodling Copy 10
One Click One Train Script Broodling Copy 11
Cocoon Work
Cocoon Work Cancle
CocoonTech
---------------------------
Web System
---------------------------
Burrow SFX
Spider Lord
Line Attack
Upgrades
Dark Swarm Cast Copy
---------------------------
Acceleration
Acceleration Research
Acceleration Spider Tech
---------------------------
Feast
Burrowed Spiderling Die
---------------------------
Spawned Nerubian Dies
---------------------------
Brood Keeper Minions Setup Copy
Brood Keeper Minions Setup
Brood Keeper Minions Move Dummy
Brood Keeper Minions Respawn
Brood Keeper Minions Destroy
---------------------------
Pick up Egg
Drop an Egg
Die with Egg
Easy Use Nerubian Egg Pickup
Drop an Egg Copy
Stun Plugin
Bloodlust
Spell Steal
Dispell
Stun Buff
Dispell Run
Spell Steal Run
Debuff Run
Category Restrictions
Category 2
Category 3
Category 4
Tunnel System
Tunnel
Tunnel Cast
Tunnel End Cast
Nerubian Traps
Nerubian Traps
Untitled Trigger 010
Start Requirement
Cancel Requirement
Plague Cloud Immunity
Untitled Trigger 005
Untitled Trigger 007
New air unit
Bommerang
Bommerang Ignore
TAVERN HEROES
Untitled Trigger 006
Windlord
Thunder Strike
---------------------------
Untitled Trigger 025
Lightning Rod
Lightning Rod Loop
---------------------------
Zephyr Waley
Stonemother
Crystal Shell Learn
Crystal Shell
Crystal Shell UnLearn
---------------------------
Seismic Activity
Seismic Activity Loop
---------------------------
Earthen Throne
Earthen Throne Effect
---------------------------
Kobold
Piercing Strike
---------------------------
Lit the Candles
Lit the Candles Copy
---------------------------
Water Lord
Deep Freeze Cast
Deep Freeze Cast Copy
Deep Freeze Loop
---------------------------
Track Living Waters
Living Waters
Living Waters Single Use
Living Waters Drown
Living Waters Loop
Items
Urn of Shadows Copy
Scroll of Secrets
Scroll of Secrets Loop
General
unit takes damage
Naga Build Tick
NAGA
Pin Down
---------------------------
Tidal Stone
Tidal Stone Copy
String of Fate Effect Copy
Untitled Trigger 015
---------------------------
Murloc Slave Order Sarver
Overseer System
Overwork On
Overwork Off
Free spot Overseer
Free spot Overseer Copy 2
Free spot Overseer Copy
Free spot Overseer Copy Copy 2
Free spot Overseer Copy Copy
Free spot Overseer Copy Copy Copy
---------------------------
Enchantment
Enchantment Exe
---------------------------
Frost Bolt
---------------------------
Essense Drain
Enchantment Copy
---------------------------
Tiderunner
Piranha Instincts
Huntsman
Catch a Fish
Catch a Fish Copy
Catch a Fish Death
Catch a Fish Cancel
---------------------------
Toxic Skin
Hero: Merciless One
Guards
---------------------------
Brainwash
Brainwash Cancel
Brainwash Expire
---------------------------
Dark Visions
---------------------------
Naga Caster
Water Shield
---------------------------
Summon Sea Elemental
Sea Elemental Death
---------------------------
Magic Disruption
---------------------------
Cleansing Waters
Hero: Hight Arcanist
Clarity Aura
---------------------------
Arcane Blast Copy 2 Copy 2
Arcane Runes Expire
---------------------------
Arcane Arrows Init
Arcane Arrows Cast
Arcane Arrows Loop
---------------------------
Arcane Projection
Arcane Projection Copy
Arcane Projection Death
Turtle Caravan
Turtle Caravan Range Detect
Turtle Caravan Disable
Murmidon
Abduct
Abduct Error
Abduct End
Hero: Commander
Pillars Cast
Pillar Die
Morphing Ray Cast
Morphing Ray Channel
Morphing Ray Interupt
---------------------------
War Command
War Command Learb
War Command Die
---------------------------
Victory Blow
---------------------------
Stop Concuer
Stop Concuer Copy
---------------------------
Hero: Tidemistress
Shockwave Cast
Shockwave Slide
Shockwave Cast Second
---------------------------
Ocean Breeze Cast
---------------------------
Moonsoon Learn
Moonsoon UnLearn
Monsoon Aura
Monsoon Cast
Moonsoon Death
---------------------------
Eye of the Storm Cast
Eye of the Storm Stop
Eye of the Storm Loop
---------------------------
Caustic Gas
---------------------------
Naga Witch
Muddy Waters
Muddy Waters Loop
Abyssal Curse
Abyssal Curse Copy
Abyssal Curse Dispell
---------------------------
Start Building Naga
Naga End SFX
Naga Death Shop
Untitled Trigger 012
Naga Remove Slave
Naga Builded
Cancel Copy
Cancel Copy Copy
---------------------------
Untitled Trigger 013
Untitled Trigger 013 Copy
---------------------------
Slave Sacrifice
Slave Consume
Slave Consume Copy
---------------------------
Tidal Load In
Tidal Load Out
Tidal Guard Spawn ob Build
Untitled Trigger 003
Untitled Trigger 011
Untitled Trigger 011 Copy
Untitled Trigger 011 Copy Copy
Sunken Treasury
Orb of Water
Enchanted Vial
Enchanted Vial Loop
Enchanted Vial Copy
---------------------------
Bugfix with mana
Bugfix with mana Execute
Bugfix with mana Copy
Bugfix with mana Execute Copy
---------------------------
Untitled Trigger 001
---------------------------
Seasickness
Seasick Loop
---------------------------
Seasickness Copy
---------------------------
New Items
Untitled Trigger 022 Copy
Untitled Trigger 023
Untitled Trigger 022
---------------------------
Untitled Trigger 019
Untitled Trigger 019 Copy
---------------------------
Untitled Trigger 021
function StartGameSound(whichPlayer)
    if (udg_StartGameSound == nil) then
        udg_StartGameSound = CreateSoundFromLabel('H02Arthas03',false,false,false,10,10)
    end
    if (GetLocalPlayer()==whichPlayer) then
        StartSound(udg_StartGameSound)
    end  
end


function ErrorMessage(error, whichPlayer)
    if udg_ErrorSound == nil then
        udg_ErrorSound = CreateSoundFromLabel("InterfaceError",false,false,false,10,10)
    end
    local error = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n|cffffcc00"+error+"|r"
    if (GetLocalPlayer()==whichPlayer) then
        ClearTextMessages()
        DisplayTimedTextToPlayer(whichPlayer,0.52,0.96,2,error)
        StartSound(udg_ErrorSound)
    end
end
Name Type is_array initial_value
A integer No
AbductTable hashtable No
AfterDamageEvent real No
ambush_level integer No
Ambush_unit_preset unitcode Yes
AmbushersTable hashtable No
AmbusherWaitGroup group No
AMSAmount real Yes
angle real No
AOEDamageEvent real No
AOEDamageSource unit No
AOEString string No
ArcaneRunes_Group group No
ArcaneUnit unit No
Archives_Type abilcode No
ARMOR_TYPE_ETHEREAL integer No
ARMOR_TYPE_FLESH integer No
ARMOR_TYPE_METAL integer No
ARMOR_TYPE_NONE integer No
ARMOR_TYPE_STONE integer No
ARMOR_TYPE_WOOD integer No
armor_var real No
ArmorDamageEvent real No
ArmorTypeDebugStr string Yes
ATTACK_TYPE_CHAOS integer No
ATTACK_TYPE_HERO integer No
ATTACK_TYPE_MAGIC integer No
ATTACK_TYPE_NORMAL integer No
ATTACK_TYPE_PIERCE integer No
ATTACK_TYPE_SIEGE integer No
ATTACK_TYPE_SPELLS integer No
AttackTypeDebugStr string Yes
BarrageAlreadyDMG group No
Brainwash hashtable No
BrainwashUnits group No
BreezeGroup group No
Broodaura_HP_Bonus abilcode Yes
BroodCareHealTarget unit No
BroodCareLifeMeter real No
BroodGuardTable hashtable No
BroodKeeperMinions hashtable No
BS_Bonus_Ability abilcode Yes
BS_Buff buffcode Yes
BS_Buff_Ability abilcode Yes
BS_Buff_Category integer Yes
BS_Buff_Duration real Yes
BS_Buff_Type integer Yes
BS_Buffed_Event real No
BS_Buffed_Unit unit Yes
BS_Buffing_Unit unit Yes
BS_Event_Index integer No
BS_Index1 integervar No
BS_Index2 integer No
BS_Index3 integervar No
BS_IntegerA integervar No
BS_MagicImmune boolean Yes
BS_MaxStack integer Yes
BS_Permanent boolean Yes
BS_Recycle boolean No
BS_Stack integer Yes
BS_Use_Bonus boolean Yes
BuildHastable hashtable No
buildings_BuildNaga group No
BurrowedUnit unit No
Caster unit No
CasterMindBlast unit No
CatchFishTable hashtable No
ChooseRace button Yes
ChoosingRace dialog No
ClearDamageEvent trigger No
CocoonGroup group No
CocoonHashTable hashtable No
CocoonTimer real No
CONVERTED_ATTACK_TYPE attacktype Yes
CONVERTED_DAMAGE_TYPE damagetype Yes
DAMAGE_FACTOR_BRACERS real No
DAMAGE_FACTOR_ELUNES real No
DAMAGE_FACTOR_ETHEREAL real No
DAMAGE_TYPE_ACID integer No
DAMAGE_TYPE_COLD integer No
DAMAGE_TYPE_DEATH integer No
DAMAGE_TYPE_DEFENSIVE integer No
DAMAGE_TYPE_DEMOLITION integer No
DAMAGE_TYPE_DISEASE integer No
DAMAGE_TYPE_DIVINE integer No
DAMAGE_TYPE_ENHANCED integer No
DAMAGE_TYPE_FIRE integer No
DAMAGE_TYPE_FORCE integer No
DAMAGE_TYPE_LIGHTNING integer No
DAMAGE_TYPE_MAGIC integer No
DAMAGE_TYPE_MIND integer No
DAMAGE_TYPE_NORMAL integer No
DAMAGE_TYPE_PLANT integer No
DAMAGE_TYPE_POISON integer No
DAMAGE_TYPE_SHADOW_STRIKE integer No
DAMAGE_TYPE_SLOW_POISON integer No
DAMAGE_TYPE_SONIC integer No
DAMAGE_TYPE_SPIRIT_LINK integer No
DAMAGE_TYPE_UNIVERSAL integer No
DAMAGE_TYPE_UNKNOWN integer No
DamageAmount real No
DamageBlockingAbility abilcode No
DamageEngineEnabled boolean No
DamageEvent real No
DamageEventAmount real No
DamageEventAOE integer No
DamageEventAOEGroup group No
DamageEventArmorPierced real No
DamageEventArmorT integer No
DamageEventAttackT integer No
DamageEventDamageT integer No
DamageEventDefenseT integer No
DamageEventLevel integer No
DamageEventOverride boolean No
DamageEventPrevAmt real No
DamageEventSource unit No
DamageEventsWasted integer No
DamageEventTarget unit No
DamageEventTrigger trigger No
DamageEventType integer No
DamageEventUserAmt real No
DamageEventWeaponT integer No
DamageFilterAttackT integer No
DamageFilterConfigured boolean No
DamageFilterDamageT integer No
DamageFilterFailChance real No
DamageFilterMinAmount real No
DamageFilterRunChance real No
DamageFilterSource unit No
DamageFilterSourceA abilcode No
DamageFilterSourceB buffcode No
DamageFilterSourceC integer No
DamageFilterSourceI itemcode No
DamageFilterSourceT unitcode No
DamageFilterTarget unit No
DamageFilterTargetA abilcode No
DamageFilterTargetB buffcode No
DamageFilterTargetC integer No
DamageFilterTargetI itemcode No
DamageFilterTargetT unitcode No
DamageFilterType integer No
DamageModifierEvent real No
DamageScalingUser real No
DamageScalingWC3 real No
DamageTypeBlocked integer No
DamageTypeCode integer No
DamageTypeCriticalStrike integer No
DamageTypeDebugStr string Yes
DamageTypeExplosive integer No
DamageTypeHeal integer No
DamageTypePure integer No
DamageTypePureExplosive integer No
DamageTypeReduced integer No
DeathEvent real No
Debuff_Buffs buffcode Yes
Debuff_IntegerA integervar No
Debuff_IntegerB integervar No
Debuff_Number integer No
Debuff_Unit unit No
DeepFreezeGroup group No
DeepFreezeTable hashtable No
DEFENSE_TYPE_DIVINE integer No
DEFENSE_TYPE_FORTIFIED integer No
DEFENSE_TYPE_HEAVY integer No
DEFENSE_TYPE_HERO integer No
DEFENSE_TYPE_LIGHT integer No
DEFENSE_TYPE_MEDIUM integer No
DEFENSE_TYPE_NORMAL integer No
DEFENSE_TYPE_UNARMORED integer No
DefenseTypeDebugStr string Yes
DestinyOverTimeUnits group No
DestinyRemainingTime real No
DestinyTable hashtable No
Devour_table hashtable No
DevourGroup group No
Dispell_BuffCount integer No
Dispell_Buffs_Number integer No
Dispell_Buffs_Type integer No
Dispell_Categories integer No
Dispell_Category integer Yes
Dispell_IntegerA integervar No
Dispell_IntegerB integervar No
Dispell_Target unit No
Distance real No
DiveAttackAudioInt integer No
DiveAttackCanceled boolean Yes
DiveAttackCaster unit Yes
DiveAttackChaseDur real No
DiveAttackCooldownMax real No
DiveAttackCooldownMin real No
DiveAttackCooldownTimer real Yes
DiveAttackDamage real Yes
DiveAttackDamageMax real No
DiveAttackDamageMin real No
DiveAttackDir real No
DiveAttackDist real No
DiveAttackGroup group No
DiveAttackGroupAutocast group No
DiveAttackHeal real Yes
DiveAttackHealMultiplier real No
DiveAttackHeight real Yes
DiveAttackHeightLoss real No
DiveAttackIndex integer No
DiveAttackLocCasterCurrent location No
DiveAttackLocCasterNew location No
DiveAttackLocCursor location No
DiveAttackLoop integervar No
DiveAttackMaxDur real Yes
DiveAttackMoveSpeed real No
DiveAttackSpeed real Yes
DiveAttackSpeedMultiplier real No
DiveAttackState integer Yes
DiveAttackTarget unit Yes
DiveAttackUnit unit Yes
dmg real No
DmgEvBracers itemcode No
DmgEvMana real No
DmgEvManaMult real No
DmgEvMSlvl integer No
DmgEvRecursionN integer No
DmgEvRunning boolean No
DmgEvStarted boolean No
DmgEvTimer timer No
DmgEvTrig trigger No
DummyDamageRetraction hashtable No
EmberGroup group No
EnemiesRiptide group No
EnhancedDamageTarget unit No
ErrorMessage string No
ErrorPlayer player No
ErrorSound sound No
Exp integer Yes
ExpTable hashtable No
FadeSystemGroup group No
FadeSystemHash hashtable No
FadeUnitKey integer No
FearGroup group No
FearTable hashtable No
FL_Ability abilcode No
FL_Alpha real Yes
FL_Caster unit Yes
FL_CasterLoc location Yes
FL_CheckVisibility boolean No
FL_CollisionBoolean boolean No
FL_CutRange real No
FL_Duration real Yes
FL_Lightning lightning Yes
FL_MaxDistance real No
FL_PercentDamage real Yes
FL_SE effect Yes
FL_SlowFactor real No
FL_StringSE string No
FL_StringSE2 string No
FL_Target unit Yes
FL_TargetLoc location Yes
FL_UnitDistance real Yes
FSBlue real No
FSEnd real No
FSFadeIn boolean No
FSGreen real No
FSRed real No
FSRemove boolean No
FSSpeed real No
FSStart real No
FSStartOpacity real No
FSTinted boolean No
FSUnit unit No
Gamers force No
Gold integer No
GuardianCooldownGroup group No
Handle integer No
handle handle No
hash_BuildNaga hashtable No
HashTable_ArcaneRunes hashtable No
HashtableRiptide hashtable No
heal_amount real No
heal_check boolean No
HEAL_CHECK_INTERVAL real No
heal_count integer No
heal_diff real No
heal_exitwhen integer No
heal_indexRef integer Yes
heal_indices integer Yes
heal_inSys boolean Yes
heal_integer integervar No
heal_lastLife real Yes
heal_life real No
heal_regen real Yes
heal_source unit No
heal_target unit No
HEAL_THRESHOLD real No
heal_timer timer No
HealEvent real No
HideDamageFrom boolean Yes
HM_Angle real Yes
HM_Angle_Add real Yes
HM_CASTER unit No
HM_CHECK boolean No
HM_Check_Homing boolean Yes
HM_Count integer Yes
HM_Damage real Yes
HM_DAMAGE real No
HM_Distance real Yes
HM_DISTANCE real No
HM_Distance2 real Yes
HM_Group group Yes
HM_LEVEL integer No
HM_Mui integer Yes
HM_Point_Dummy location Yes
HM_Points location Yes
HM_Sfx string Yes
HM_SFX string No
HM_Speed real Yes
HM_SPEED real No
HM_Speed_Add real Yes
HM_SPEED_ADD real No
HM_Unit_Caster unit Yes
HM_Unit_Dummy unit Yes
HM_Unit_Target unit Yes
HM_Unit_Type unitcode No
i integer No
ImpaleDMG boolean No
Index integer Yes
InfestedBuildingTable hashtable No
Intrappola_Bi boolean Yes
Intrappola_BOOL boolean Yes
Intrappola_Caster unit Yes
Intrappola_Count integer Yes
Intrappola_Distance real Yes
Intrappola_Effect1 effect Yes
Intrappola_Light lightning Yes
Intrappola_Target unit Yes
IsDamageAttack boolean No
IsDamageCode boolean No
IsDamageMelee boolean No
IsDamageRanged boolean No
IsDamageSpell boolean No
Jump_Caster unit No
Jump_Hashtable hashtable No
Jump_Leapers group No
LastDamageHP real No
LastDmgPrevAmount real Yes
LastDmgPrevType integer Yes
LastDmgSource unit Yes
LastDmgTarget unit Yes
LastDmgValue real Yes
LastDmgWasSpell boolean Yes
LethalDamageEvent real No
LethalDamageHP real No
LifeForQueenTable hashtable No
LifefortheQueen_Group group No
Lightning lightning No
LightningRodGroup group No
LightningRodTable hashtable No
LitCandleTable hashtable No
LivingWaterGroup group No
LivingWaterTable hashtable No
ManabugTable hashtable No
MathSacrifice real No
MindBlastTable hashtable No
MuddyWaters hashtable No
MuddyWatersUnits group No
MurlocOrderTable hashtable No
MurlocTideDamage group No
NagaOverseerTable hashtable No
NerubianHashtable hashtable No
NextDamageIsAttack boolean No
NextDamageIsMelee boolean No
NextDamageIsRanged boolean No
NextDamageOverride boolean No
NextDamageType integer No
NextDamageWeaponT integer No
NextHealAmount real No
NextHealSource unit No
NextHealTarget unit No
OnDamageEvent real No
Order ordercode No
Overseers integer Yes 1
Point location No
Point_2 location No
Point_3 location No
Points location Yes
PreDamageEvent real No
PStun_Category integer No
PStun_Event real No
PStun_LeakPoint location No
QJ_AoE boolean No
QJ_AoERadius real No
QJ_AoESFX string No
QJ_attackTypeID integer No
QJ_Caster unit No
QJ_Collision boolean No
QJ_Damage real No
QJ_damageTypeID integer No
QJ_Homing boolean No
QJ_Model unitcode No
QJ_Pierce boolean No
QJ_Position location No
QJ_Size real No
QJ_Solo boolean No
QJ_Speed real No
QJ_TargetPoint location No
QJ_TargetUnit unit No
QJS_Angle real No
QJS_arrowGroup group No
QJS_arrowPos location No
QJS_arrowTable hashtable No
QJS_atkTypePreset attacktype Yes
QJS_AttackType attacktype No
QJS_DamagedGroup group No
QJS_DamageType damagetype No
QJS_Distance real No
QJS_dmgTypePreset damagetype Yes
QJS_movePos location No
QJS_tempPos location No
QJS_tempPos_Target location No
QJS_victimGroup group No
QJS_victimPos location No
RaceChoosenTable hashtable No
Random integer No
RayCasters group No
Ready integer No
Real real Yes
RealSacrifice real No
regen_buildup real Yes
REGEN_EVENT_INTERVAL real No
REGEN_STRENGTH_VALUE real No
REGEN_THRESHOLD real No
regen_timeleft real Yes
RemainingTime_Stagger real No
RemainingTimeofDestiny real No
RemoveDamageEvent boolean No
ReportLife real No
RessurectTable hashtable No
Restoration unit No
RetreatGroup group No
RetreatTable hashtable No
RevealWarning string No You will be revealed to your opponents unless you build a town-hall type structure.
RiptideHeal real No
RoyalGuard hashtable No
RS_Angle real Yes
RS_Boolean boolean Yes
RS_Caster unit Yes
RS_CurDis real Yes
RS_Index integer Yes
RS_LevelA integer Yes
RS_Loc location Yes
RS_MaxD real Yes
RS_MaxH real Yes
RS_Player player Yes
RS_Real real Yes
RS_Speed real Yes
RS_Target unit Yes
SeaElementalTable hashtable No
SeasickGroup group No
SeasickTable hashtable No
SecretTimer real No
SeismicActivityGroup group No
SeismicActivityTable hashtable No
Shockwaves group No
Slaves group No
SourceDamageEvent real No
SpellDamageAbility abilcode No
SpellSteal_BuffCount integer No
SpellSteal_Buffs_Number integer No
SpellSteal_Caster unit No
SpellSteal_Categories integer No
SpellSteal_Category integer Yes
SpellSteal_IntegerA integervar No
SpellSteal_IntegerB integervar No
SpellSteal_Target unit No
spider_size real No
SpiderLord_LineAttackGroup group No
SpiderLordLineDamageAmount real No
SS_CheckIntegerA integervar No
SS_CountStuns integer No
StartGameSound sound No
StormEyeGroup group No
StrongholdGroup group No
StrongholdTable hashtable No
Target unit No
TargetMindBlast unit No
TempBool boolean No
TempInteger integer No
TempLoc location No
tempReal1_BuildNaga real No
tempReal2_BuildNaga real No
TempUnit unit No
TempX real No
TempY real No
Tic sound No
TidalGuard hashtable No
TimerGameStart integer No
TrueSightAbility ability No
UDex integer No
UDexGen integer No
UDexNext integer Yes
UDexPrev integer Yes
UDexRecycle integer No
UDexUnits unit Yes
UDexWasted integer No
UMovNext integer Yes
UMovPrev integer Yes
UnderlordGroup group No
Unit unit No
UNIT_CLASS_ANCIENT integer No
UNIT_CLASS_ATTACKS_FLYING integer No
UNIT_CLASS_ATTACKS_GROUND integer No
UNIT_CLASS_DEAD integer No
UNIT_CLASS_ETHEREAL integer No
UNIT_CLASS_FLYING integer No
UNIT_CLASS_GIANT integer No
UNIT_CLASS_GROUND integer No
UNIT_CLASS_HERO integer No
UNIT_CLASS_MAGIC_IMMUNE integer No
UNIT_CLASS_MECHANICAL integer No
UNIT_CLASS_MELEE integer No
UNIT_CLASS_PEON integer No
UNIT_CLASS_PLAGUED integer No
UNIT_CLASS_POISONED integer No
UNIT_CLASS_POLYMORPHED integer No
UNIT_CLASS_RANGED integer No
UNIT_CLASS_RESISTANT integer No
UNIT_CLASS_SAPPER integer No
UNIT_CLASS_SLEEPING integer No
UNIT_CLASS_SNARED integer No
UNIT_CLASS_STRUCTURE integer No
UNIT_CLASS_STUNNED integer No
UNIT_CLASS_SUMMONED integer No
UNIT_CLASS_TAUREN integer No
UNIT_CLASS_TOWNHALL integer No
UNIT_CLASS_UNDEAD integer No
UnitDamageRegistered boolean Yes
UnitGroup group No
UnitGroup_2 group No
UnitIndexerEnabled boolean No
UnitIndexEvent real No
UnitIndexLock integer Yes
UnitMoving boolean Yes
UnitMovingEvent real No
UnitMovingX real Yes
UnitMovingY real Yes
VialGroup group No
VialNagaTable hashtable No
WEAPON_TYPE_AM_CHOP integer No
WEAPON_TYPE_CH_SLICE integer No
WEAPON_TYPE_CL_SLICE integer No
WEAPON_TYPE_CM_SLICE integer No
WEAPON_TYPE_MH_BASH integer No
WEAPON_TYPE_MH_CHOP integer No
WEAPON_TYPE_MH_SLICE integer No
WEAPON_TYPE_MH_STAB integer No
WEAPON_TYPE_ML_CHOP integer No
WEAPON_TYPE_ML_SLICE integer No
WEAPON_TYPE_MM_BASH integer No
WEAPON_TYPE_MM_CHOP integer No
WEAPON_TYPE_MM_SLICE integer No
WEAPON_TYPE_MM_STAB integer No
WEAPON_TYPE_NONE integer No
WEAPON_TYPE_RH_BASH integer No
WEAPON_TYPE_WH_BASH integer No
WEAPON_TYPE_WH_SLICE integer No
WEAPON_TYPE_WL_BASH integer No
WEAPON_TYPE_WL_SLICE integer No
WEAPON_TYPE_WL_STAB integer No
WEAPON_TYPE_WM_BASH integer No
WEAPON_TYPE_WM_SLICE integer No
WEAPON_TYPE_WM_STAB integer No
WeaponTypeDebugStr string Yes
Weather weathereffect No
WeatherUnit unit No
WEBB lightningtype No
x1 real Yes
x2 real Yes
y1 real Yes
y2 real Yes
z1 real Yes
z2 real Yes
ZeroDamageEvent real No
function GetPlayerColorString(player)
    local c = GetPlayerColor(player)
    if c == PLAYER_COLOR_RED then
        return "|cffFF0202"
    elseif c == PLAYER_COLOR_BLUE then
        return "|cff0041FF"
    elseif c == PLAYER_COLOR_CYAN then
        return "|cff1BE5B8"
    elseif c == PLAYER_COLOR_PURPLE then
        return "|cff530080"
    elseif c == PLAYER_COLOR_YELLOW then
        return "|cffFFFC00"
    elseif c == PLAYER_COLOR_ORANGE then
        return "|cffFE890D"
    elseif c == PLAYER_COLOR_GREEN then
        return "|cff1FBF00"
    elseif c == PLAYER_COLOR_PINK then
        return "|cffE45AAF"
    elseif c == PLAYER_COLOR_LIGHT_GRAY then
        return "|cff949596"
    elseif c == PLAYER_COLOR_LIGHT_BLUE then
        return "|cff7DBEF1"
    elseif c == PLAYER_COLOR_AQUA then
        return "|cff0F6145"
    elseif c == PLAYER_COLOR_BROWN then
        return "|cff4D2903" 
    else
        return "|cffFFFFFF"
    end
end
DisableSave
Events
Time - Every 0.00 seconds of game time
Conditions
Actions
Custom script: BlzFrameSetVisible(BlzGetFrameByName("EscMenuSaveLoadContainer", 0), false)
Custom script: BlzFrameSetEnable(BlzGetFrameByName("SaveGameFileEditBox" , 0), false)
races = {
    {
        id=1,
        name='Human',
        mainBuilding = FourCC('htow'),
        icon = 'ChooseRace\\Human.blp',
        worker = FourCC('hpea')
        
    },
    {
        id=2,
        name='Orc',
        mainBuilding = FourCC('orge'),
        icon = 'ChooseRace\\Orc.blp',
        worker = FourCC('opeo')
    },
    {
        id=3,
        name='Undead',
        mainBuilding = FourCC('unpl'),
        icon = 'ChooseRace\\Undead.blp',
        worker = FourCC('uaco'),
        ghoal = FourCC('ugho')
    },
    {
        id=4,
        name='Night Elf',
        mainBuilding = FourCC('etol'),
        icon = 'ChooseRace\\Elf.blp',
        worker = FourCC('ewsp')
    },
    {
        id=5,
        name='Nerubian',
        mainBuilding = FourCC('o00D'),
        icon = 'ChooseRace\\Nerubian.blp',
        worker = FourCC('o002')
    },
    {
        id=6,
        name='Naga',
        mainBuilding = FourCC('o00N'),
        icon = 'ChooseRace\\Naga.blp',
        worker = FourCC('n00A'),
        overseer = FourCC('n00E'),
    },
    {
        id=7,
        name='Random',
        icon = 'Random.blp'
    },
}
-- in 1.31 and upto 1.32.9 PTR (when I wrote this). Frames are not correctly saved and loaded, breaking the game.
-- This runs all functions added to it with a 0s delay after the game was loaded.
FrameLoader = {
    OnLoadTimer = function ()
        for _,v in ipairs(FrameLoader) do v() end

    end
    ,OnLoadAction = function()
        TimerStart(FrameLoader.Timer, 0, false, FrameLoader.OnLoadTimer)
     end
}
function FrameLoaderAdd(func)
    if not FrameLoader.Timer then
        FrameLoader.Trigger = CreateTrigger()
        FrameLoader.Timer = CreateTimer()
        TriggerRegisterGameEvent(FrameLoader.Trigger, EVENT_GAME_LOADED)
        TriggerAddAction(FrameLoader.Trigger, FrameLoader.OnLoadAction)
    end
    table.insert(FrameLoader, func)
end


--[[
 CustomConsoleUI by Tasyen
 CustomConsoleUI allows to change the UI during the game, when setuped correctly. This excludes the mouse cursor and the UI sounds.
 In non reforged it can also not change the Idle worker Button nor the no inventory cover.
 How to setup this: First you have to make the default Console Textures be hidden that is done in Game Interface.
    Set ConsoleTexture01 to ConsoleTexture06 to UI\Widgets\EscMenu\Human\blank-background.blp
    The Day of Time clock has hardcoded textures therefore you need to swap it out. That also should be done in Gameinterface.
    TimeOfDayIndicator to the model included in this system.
    Now export and Import war3mapImported\CustomConsoleUI.toc & war3mapImported\CustomConsoleUI.fdf
    Finally you have to set the used textures into local data

UseCustomConsole(player, index)
CreateCustomConsole()
--]]
do
    local real = MarkGameStarted
    local idleWorkerButton, idleWorkerButtonOverlay, idleWorkerButtonOverlayParent
    local customInventoryCoverParent, customInventoryCover, fullscreenFrame
    local data = {
        [1] = { --1
            "ui\\console\\human\\humanuitile01",
            "ui\\console\\human\\humanuitile02",
            "ui\\console\\human\\humanuitile03",
            "ui\\console\\human\\humanuitile04",
            "war3mapImported\\HumanUITile05",
            "war3mapImported\\HumanUITile06",
            "ui\\console\\human\\humanuitile-timeindicatorframe",
            "ui\\console\\human\\humanuitile-inventorycover",
            "ReplaceableTextures\\CommandButtons\\BTNPeasant",
            -- postion offset
            x = 0.0009,
            y = 0.0
        },
        [2] = { --2
            "ui\\console\\orc\\orcuitile01",
            "ui\\console\\orc\\orcuitile02",
            "ui\\console\\orc\\orcuitile03",
            "ui\\console\\orc\\orcuitile04",
            "war3mapImported\\OrcUITile05",
            "war3mapImported\\OrcUITile05",
            "ui\\console\\orc\\orcuitile-timeindicatorframe",
            "ui\\console\\orc\\orcuitile-inventorycover",
            "ReplaceableTextures\\CommandButtons\\BTNPeon",
            x = 0.0009,
            y = 0.0
        },
        [3] = { --3
            "ui\\console\\undead\\undeaduitile01",
            "ui\\console\\undead\\undeaduitile02",
            "ui\\console\\undead\\undeaduitile03",
            "ui\\console\\undead\\undeaduitile04",
            "war3mapImported\\UndeadUITile05",
            "war3mapImported\\UndeadUITile06",
            "ui\\console\\undead\\undeaduitile-timeindicatorframe",
            "ui\\console\\undead\\undeaduitile-inventorycover",
            "ReplaceableTextures\\CommandButtons\\BTNAcolyte",
            x = 0.0009,
            y = 0.0
        },
        [4] = { --4
            "ui\\console\\nightelf\\nightelfuitile01",
            "ui\\console\\nightelf\\nightelfuitile02",
            "ui\\console\\nightelf\\nightelfuitile03",
            "ui\\console\\nightelf\\nightelfuitile04",
            "war3mapImported\\NightElfUITile05",
            "war3mapImported\\NightElfUITile06",
            "ui\\console\\nightelf\\nightelfuitile-timeindicatorframe",
            "ui\\console\\nightelf\\nightelfuitile-inventorycover",
            "ReplaceableTextures\\CommandButtons\\BTNWisp",
            x = 0.0009,
            y = 0.0
        },
        [5] = { --5
            "war3mapImported\\naga01",
            "war3mapImported\\naga02",
            "war3mapImported\\naga03",
            "war3mapImported\\naga04",
            "war3mapImported\\nagauitile05",
            "war3mapImported\\nagauitile06",
            "war3mapImported\\nagauitile-timeindicatorframe",
            "war3mapImported\\nagauitile-inventorycover",
            "ReplaceableTextures\\CommandButtons\\BTNMurgalSlave",
            x = 0.0009,
            y = 0.0
        },
        [6] = { --7
            "war3mapImported\\nerub-tile 1",
            "war3mapImported\\nerub-tile 2",
            "war3mapImported\\nerub-tile 3",
            "war3mapImported\\nerub-tile 4",
            "war3mapImported\\nerub-tile 5",
            "war3mapImported\\nerub-tile 6",
            "war3mapImported\\nerub-timeindicatorframe",
            "war3mapImported\\nerub-inventory cover",
            "BTNGatherer",
            x = 0.0009,
            y = 0.0,
        }
    }

    function UseCustomConsole(player, index)
        if GetLocalPlayer() ~= player then return end
        if not index then index = GetHandleId(GetPlayerRace(player)) end
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI5T", 0), data[index][5], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI6T", 0), data[index][6], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI4T", 0), data[index][4], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI3T", 0), data[index][3], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI2TL", 0), data[index][2], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI2TR", 0), data[index][2] , 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI1T", 0), data[index][1], 0, false)

        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI1B", 0), data[index][1], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI2B", 0), data[index][2], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI3B", 0), data[index][3], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI4B", 0), data[index][4], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI5B", 0), data[index][5], 0, false)
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUI6B", 0), data[index][6], 0, false)
    
        
        BlzFrameSetTexture(BlzGetFrameByName("CustomConsoleUIClock", 0), data[index][7] ,0, true)
        if GetLocalizedString("REFORGED") ~= "REFORGED" then
            BlzFrameSetTexture(BlzGetFrameByName("InventoryCoverTexture", 0), data[index][8] ,0, true)    
          --BlzFrameSetTexture(idleWorkerButtonOverlay, data[index][9], 0, false)    
        else
            BlzFrameSetTexture(customInventoryCover, data[index][8] ,0, true)
        end
        
        if data[index].x then BlzFrameSetPoint(BlzGetFrameByName("CustomConsoleUIClock", 0), FRAMEPOINT_TOP, BlzGetFrameByName("ConsoleUI", 0), FRAMEPOINT_TOP, data[index].x, data[index].y) end
        
    end
    function CreateCustomConsole()
        BlzLoadTOCFile( "war3mapimported\\CustomConsoleUI.toc" )
        
        BlzCreateSimpleFrame( "CustomConsoleUI", BlzGetFrameByName("ConsoleUI", 0), 0)
        BlzFrameSetLevel(BlzGetFrameByName("CustomConsoleUI", 0), 0)
        if GetLocalizedString("REFORGED") ~= "REFORGED" then
            --idleWorkerButton = BlzFrameGetChild(BlzGetFrameByName("ConsoleUI", 0), 7)
           -- idleWorkerButtonOverlayParent = BlzCreateSimpleFrame( "SimpleTextureFrame", idleWorkerButton, 0 )
           -- idleWorkerButtonOverlay = BlzGetFrameByName("SimpleTextureFrameValue", 0)
        --    BlzFrameSetAllPoints(idleWorkerButtonOverlay, idleWorkerButton)
          --  BlzFrameSetLevel(idleWorkerButtonOverlayParent, 4)
        else
            customInventoryCoverParent  = BlzCreateSimpleFrame( "SimpleTextureFrame", BlzGetFrameByName("ConsoleUI", 0), 0)
            BlzFrameSetLevel(customInventoryCoverParent, 4)
            customInventoryCover = BlzGetFrameByName("SimpleTextureFrameValue", 0)
            BlzFrameSetAbsPoint(customInventoryCover, FRAMEPOINT_BOTTOMRIGHT, 0.6, 0)
            BlzFrameSetAbsPoint(customInventoryCover, FRAMEPOINT_TOPLEFT, 0.6 - 0.128, 0.2558)
        end

        -- Preload
        BlzGetOriginFrame(ORIGIN_FRAME_ITEM_BUTTON, 0)
        BlzGetFrameByName("InventoryCoverTexture", 0)
        BlzGetFrameByName("CustomConsoleUIClock", 0)
        BlzGetFrameByName("CustomConsoleUI5T", 0)
        BlzGetFrameByName("CustomConsoleUI6T", 0)
        BlzGetFrameByName("CustomConsoleUI4T", 0)
        BlzGetFrameByName("CustomConsoleUI3T", 0)
        BlzGetFrameByName("CustomConsoleUI2TL", 0)
        BlzGetFrameByName("CustomConsoleUI2TR", 0)
        BlzGetFrameByName("CustomConsoleUI1T", 0)
        BlzGetFrameByName("CustomConsoleUI1B", 0)
        BlzGetFrameByName("CustomConsoleUI2B", 0)
        BlzGetFrameByName("CustomConsoleUI3B", 0)
        BlzGetFrameByName("CustomConsoleUI4B", 0)
        BlzGetFrameByName("CustomConsoleUI5B", 0)
        BlzGetFrameByName("CustomConsoleUI6B", 0)
    end
    local function Init()
        CreateCustomConsole()
        UseCustomConsole(GetLocalPlayer())
        
        if GetLocalizedString("REFORGED") == "REFORGED" then
            TimerStart(CreateTimer(), 1/32.0, true, function()
                BlzFrameSetVisible(customInventoryCoverParent, not BlzFrameIsVisible(BlzGetOriginFrame(ORIGIN_FRAME_ITEM_BUTTON, 0)))
            end)
        end
    end
    function MarkGameStarted()
        xpcall(function()
        real()
        Init()
        if FrameLoaderAdd then FrameLoaderAdd(Init) end        
    end, print)
    end
end
Default melee game initialization for all players
InitConstants
Events
Map initialization
Conditions
Actions
-------- --------
-------- The above function calls code from the Custom Script section of the map. --------
-------- To view the Custom Script section, you can click on the map name in the upper left hand corner --------
-------- of the screen. For this example, is says "(8)DeadlockCustomRace.w3x". --------
Quest - Create a Required quest titled |cffffc800SUPPORT|r with the description If you would like to support and boost updates of this project, please visit my Patreon page:|cffffc800https://www.patreon.com/Maxwell_Steven|rSpecial thanks:- |cffffc800Skool You|r (Tier 3) , using icon path ReplaceableTextures\CommandButtons\BTNChestOfGold.blp
Hashtable - Create a hashtable
Set Variable Set DeepFreezeTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set hash_BuildNaga = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set Brainwash = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set HashtableRiptide = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set AmbushersTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set TidalGuard = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set SeismicActivityTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set AbductTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set LitCandleTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set FearTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set InfestedBuildingTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set LifeForQueenTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set NagaOverseerTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set RoyalGuard = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set Devour_table = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set BroodKeeperMinions = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set SeaElementalTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set BuildHastable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set LivingWaterTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set LightningRodTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set CatchFishTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set DestinyTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set StrongholdTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set RessurectTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set QJS_arrowTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set ExpTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set SeasickTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set RaceChoosenTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set NerubianHashtable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set MindBlastTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set MurlocOrderTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set Jump_Hashtable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set CocoonHashTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set DummyDamageRetraction = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set DestinyTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set BroodGuardTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set HashTable_ArcaneRunes = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set VialNagaTable = (Last created hashtable)
Hashtable - Create a hashtable
Set Variable Set ManabugTable = (Last created hashtable)
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
Player - Limit training of Keeper of the Grove to 1 for (Picked player)
Player - Limit training of Blood Mage to 1 for (Picked player)
Player - Limit training of Death Knight to 1 for (Picked player)
Player - Limit training of Crypt Lord to 1 for (Picked player)
Player - Limit training of Crypt Lord to 1 for (Picked player)
Player - Limit training of Naga Myrmidon to 1 for (Picked player)
Player - Limit training of Blood Mage to 1 for (Picked player)
Player - Limit training of Blood Mage to 1 for (Picked player)
Player - Limit training of Tauren Chieftain to 1 for (Picked player)
Player - Limit training of Firelord to 1 for (Picked player)
Player - Limit training of Beastmaster to 1 for (Picked player)
Player - Limit training of Tauren Chieftain to 1 for (Picked player)
Player - Make Spider Unavailable for training/construction by (Picked player)
Player - Make Footman Unavailable for training/construction by (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Enable Blight Growth Large for (Picked player)
Player - Enable Blight Growth Small for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Set the current research level of R00C (Unexpected type: 'techcode') to 1 for (Picked player)
Player - Set the current research level of R00N (Unexpected type: 'techcode') to 1 for (Picked player)
Player - Disable Berserker Upgrade (Icon) for (Picked player)
Player - Disable Berserker Upgrade (Icon) for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Devotion Aura for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
Player - Disable Spell Book for (Picked player)
PrepareToChooseRace
Events
Time - Elapsed game time is 0.00 seconds
Conditions
Actions
Set Variable Set TimerGameStart = "11"
Player Group - Pick every player in (All players matching (((Matching player) slot status) Equal to Is playing).) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked player) controller) Not equal to Computer
Then - Actions
Set Variable Set ErrorPlayer = (Picked player)
Custom script: udg_Random = (GetPlayerState(udg_ErrorPlayer, PLAYER_STATE_OBSERVER))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Random Equal to 0
Then - Actions
Player Group - Add (Picked player) to Gamers
Set Variable Set Ready = (Ready + 1)
Else - Actions
Else - Actions
Cinematic - Fade out over 0.00 seconds using texture Black Mask and color ( 0 %, 0 %, 0 %) with 0 % transparency
Cinematic - Show filter
Cinematic - Turn on letterbox mode (hide interface) for Gamers : fade out over 0.00 seconds
Cinematic - Enable user control for (All players) .
0.06 0.072
0,08 ч
playerRaces = {}
interface = {}


function HideChooseRaceTitle()
    BlzFrameSetVisible(interface.chooseRaceFrameText, false)
    BlzFrameSetVisible(interface.chooseRaceFrame, false)
end

function HideChooseRaceInterface()
    local raceButtons = interface.raceButtons
    for i, button in ipairs(raceButtons) do
        BlzFrameSetVisible(button, false)
    end
    BlzFrameSetVisible(interface.raceTooltipText, false)
    BlzFrameSetVisible(interface.raceTooltip, false)
end

function CreateChooseRaceButtons()
    CreateChooseRaceTitle()
    local mainFrame = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
    local baseOffsetX = 0.080
    local middleLineOffset = baseOffsetX * (#races - 1) / 2
    interface.raceButtons = {}
    for i, race in ipairs(races) do
        local button = BlzCreateFrame('ScoreScreenBottomButtonTemplate', mainFrame, 0, 0)
        local icon = BlzGetFrameByName('ScoreScreenButtonBackdrop', 0)
        BlzFrameSetSize(button, 0.08, 0.096)
        local offsetX = baseOffsetX * (i - 1) - middleLineOffset
        BlzFrameSetPoint(button, FRAMEPOINT_BOTTOM, mainFrame, FRAMEPOINT_BOTTOM, offsetX , 0.35)
        BlzFrameSetTexture(icon, race.icon, 0, true)
        interface.raceButtons[i] = button
        onRaceClick(button, race)
    end

    BlzFrameSetText(interface.chooseRaceFrameText, 'Choose Race: 10')

    ForForce( GetPlayersAll(), function() 
        if(GetPlayerState(GetEnumPlayer(), PLAYER_STATE_OBSERVER) == 1 
            or GetPlayerController(player) == MAP_CONTROL_COMPUTER) then
            BlzFrameSetVisible(interface.chooseRaceFrame, false)
        end
    end)
end

function CreateChooseRaceTitle()
    local mainFrame = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
    local chooseRaceFrame = BlzCreateFrame('ListBoxWar3', mainFrame, 0, 0)
    BlzFrameSetSize(chooseRaceFrame, 0.21, 0.06)
    BlzFrameSetPoint(chooseRaceFrame, FRAMEPOINT_BOTTOM, mainFrame, FRAMEPOINT_BOTTOM, 0, 0.45)

    local textFrame = BlzCreateFrameByType('TEXT', 'StandardInfoTextTemplate', chooseRaceFrame, '', 0)
    BlzFrameSetSize(textFrame, 0.20, 0.05)
    BlzFrameSetPoint(textFrame, FRAMEPOINT_CENTER, chooseRaceFrame, FRAMEPOINT_CENTER, 0, 0)
    BlzFrameSetTextAlignment(textFrame, TEXT_JUSTIFY_MIDDLE, TEXT_JUSTIFY_CENTER)
    BlzFrameSetScale(textFrame, 2)
    interface.chooseRaceFrame = chooseRaceFrame
    interface.chooseRaceFrameText = textFrame 
end

function CreateRaceTooltip(button, race)
    local mainFrame = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
    local tooltipFrame = BlzCreateFrame('ListBoxWar3', mainFrame, 0, 0)
    BlzFrameSetSize(tooltipFrame, 0.14, 0.04)
    BlzFrameSetPoint(tooltipFrame, FRAMEPOINT_BOTTOM, button, FRAMEPOINT_TOP, 0, 0)

    local tooltipTextFrame = BlzCreateFrameByType('TEXT', 'StandardInfoTextTemplate', tooltipFrame, '', 0)
    BlzFrameSetSize(tooltipTextFrame, 0.11, 0.04)
    BlzFrameSetPoint(tooltipTextFrame, FRAMEPOINT_CENTER, tooltipFrame, FRAMEPOINT_CENTER, 0, 0)
    BlzFrameSetTextAlignment(tooltipTextFrame, TEXT_JUSTIFY_MIDDLE, TEXT_JUSTIFY_CENTER)
    BlzFrameSetText(tooltipTextFrame, race.name)
    BlzFrameSetTooltip(button, tooltipFrame)
    interface.raceTooltip = tooltipFrame
    interface.raceTooltipText = tooltipTextFrame
end

function onRaceClick(button, race)
    local clickTrigger = CreateTrigger()
    TriggerAddAction(clickTrigger, function()
        SetRace(race)
    end)
    BlzTriggerRegisterFrameEvent(clickTrigger, button, FRAMEEVENT_CONTROL_CLICK)
end

function SetRace(race)
    local player = GetTriggerPlayer()
    local playerId = GetConvertedPlayerId(player)
    playerRaces[GetConvertedPlayerId(player)] = race
    if(player == GetLocalPlayer()) then
        HideChooseRaceInterface()
    end
    udg_Ready = udg_Ready - 1
    if(udg_Ready == 0) then
        udg_TimerGameStart = 0
    end
end
CreateChooseRaceInterface
Events
Time - Elapsed game time is 0.01 seconds
Conditions
Actions
Cinematic - Fade out over 0.00 seconds using texture Black Mask and color ( 0 %, 0 %, 0 %) with 0 % transparency
Custom script: CreateChooseRaceButtons()
Player Group - Pick every player in (All players matching (((Matching player) slot status) Equal to Is playing).) and do (Actions)
Loop - Actions
Set Variable Set ErrorPlayer = (Picked player)
Custom script: udg_Random = (GetPlayerState(udg_ErrorPlayer, PLAYER_STATE_OBSERVER))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Random Equal to 0
((Picked player) controller) Not equal to Computer
Then - Actions
Custom script: StartGameSound(udg_ErrorPlayer)
Custom script: SetPlayerState(udg_ErrorPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS)
Else - Actions
Trigger - Turn on ChooseRaceTimer <gen>
function SelectedRaceMessage()
local player = GetEnumPlayer()
local race = playerRaces[GetConvertedPlayerId(player)]
local playerColor = GetPlayerColorString(player)
if(race == nil or race.name == 'Random') then
DisplayTextToForce( GetPlayersAll(), GetPlayerName(player) .. ': Random' )
return;
end
DisplayTextToForce( GetPlayersAll(), playerColor .. GetPlayerName(player) .. ': ' .. race.name .. "|r" )
end
function InitRaces()
    ForForce( GetPlayersAll(), function() 
        InitRace()
        SelectedRaceMessage()
    end)
end


function InitAIRace(player)
    local compRace = GetPlayerRace(player)
    local playerId = GetConvertedPlayerId(player)
    if(compRace == RACE_HUMAN) then
        playerRaces[playerId] = races[1]
    end
    if(compRace == RACE_ORC) then
        playerRaces[playerId] = races[2]
    end
    if(compRace == RACE_UNDEAD) then
        playerRaces[playerId] = races[3]
    end
    if(compRace == RACE_NIGHTELF) then
        playerRaces[playerId] = races[4]
    end
end

function InitRace()
    local player = GetEnumPlayer()
    local playerId = GetConvertedPlayerId(player)
    if(GetPlayerState(player, PLAYER_STATE_OBSERVER) == 1 ) then return end

    if(GetPlayerController(player) == MAP_CONTROL_COMPUTER) then
      InitAIRace(player)
    end

    local race = playerRaces[playerId]
    if(player == GetLocalPlayer()) then 
        HideChooseRaceInterface()
        HideChooseRaceTitle()
    end
    if(race == nil or race.name == 'Random') then
        local randomRaceIndex = GetRandomInt(1, #races - 1)
        race = races[randomRaceIndex]
    end

    if(race.name == 'Human') then
        MeleeStartingUnitsHuman(player, GetPlayerStartLocationLoc(player), true, true, true)
        UseCustomConsole(player, 1)
    end
    if(race.name == 'Orc') then
        MeleeStartingUnitsOrc(player, GetPlayerStartLocationLoc(player), true, true, true)
        UseCustomConsole(player, 2)
    end
    if(race.name == 'Undead') then
        MeleeStartingUnitsUndead(player, GetPlayerStartLocationLoc(player), true, true, true)
        UseCustomConsole(player, 3)
    end
    if(race.name == 'Night Elf') then
        MeleeStartingUnitsNightElf(player, GetPlayerStartLocationLoc(player), true, true, true)
        UseCustomConsole(player, 4)
    end
    if(race.name == 'Naga') then
        MeleeStartingUnitsNaga(race, player)
        UseCustomConsole(player, 5)
    end
    if(race.name == 'Nerubian') then
        MeleeStartingUnitsCustomRace(race, player)
        UseCustomConsole(player, 6)
    end
end

function ReplaceToCustomRace(player, race)
    unit = GetEnumUnit()
    if (GetUnitTypeId(unit) == FourCC('hpea') and GetOwningPlayer(unit) == player) then
        ReplaceUnitBJ(unit, race.worker, bj_UNIT_STATE_METHOD_RELATIVE)
        workerLoc = GetUnitLoc(GetLastReplacedUnitBJ())
    end
    if GetUnitTypeId(unit) == FourCC('htow') and GetOwningPlayer(unit) == player then
        ReplaceUnitBJ(unit, race.mainBuilding, bj_UNIT_STATE_METHOD_RELATIVE)
    end
end

function MeleeStartingUnitsNaga(race, player)
    MeleeStartingUnitsHuman(player, GetPlayerStartLocationLoc(player), true, true, true)
    ForGroupBJ( GetUnitsInRectOfPlayer(GetPlayableMapRect(), player), function() ReplaceToCustomRace(player, race) end)
    CreateNUnitsAtLoc(1, race.overseer, player, workerLoc, bj_UNIT_FACING)
    workerLoc=nil
end

function MeleeStartingUnitsCustomRace(race, player)
    MeleeStartingUnitsHuman(player, GetPlayerStartLocationLoc(player), true, true, true)
    ForGroupBJ( GetUnitsInRectOfPlayer(GetPlayableMapRect(), player), function() ReplaceToCustomRace(player, race) end)
    workerLoc=nil
end
ChooseRaceTimer
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TimerGameStart Not equal to 11
Then - Actions
Sound - Play BattleNetTick <gen>
Set Variable Set TimerGameStart = (TimerGameStart - 1)
Custom script: BlzFrameSetText(interface.chooseRaceFrameText, 'Choose Race: ' .. udg_TimerGameStart)
Else - Actions
Set Variable Set TimerGameStart = (TimerGameStart - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TimerGameStart Less than or equal to 0
Then - Actions
Melee Game - Remove creeps and critters from used start locations (for all players)
Melee Game - Use melee time of day (for all players)
Custom script: InitRaces()
Melee Game - Limit Heroes to 1 per Hero-type (for all players)
Melee Game - Give trained Heroes a Scroll of Town Portal (for all players)
Melee Game - Set starting resources (for all players)
Melee Game - Run melee AI scripts (for computer players)
Melee Game - Enforce victory/defeat conditions (for all players)
Sound - Play GameFound <gen>
Cinematic - Turn off letterbox mode (show interface) for Gamers : fade in over 1.00 seconds
Cinematic - Fade in over 1.00 seconds using texture Black Mask and color ( 0 %, 0 %, 0 %) with 0 % transparency
Player Group - Pick every player in (All players matching (((Matching player) slot status) Equal to Is playing).) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked player) controller) Not equal to Computer
Then - Actions
Set Variable Set UnitGroup = (Units owned by (Picked player).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Custom script: BlzFrameSetVisible(interface.chooseRaceFrame, false)
Else - Actions
Trigger - Turn off (This trigger)
Else - Actions
function Trig_Unit_Indexer_Func005Func002C()
    if ( not ( udg_UnitIndexLock[udg_UDex] == 0 ) ) then
        return false
    end
    return true
end

function Trig_Unit_Indexer_Func005C()
    if ( not ( GetUnitUserData(udg_UDexUnits[udg_UDex]) == 0 ) ) then
        return false
    end
    return true
end

function Trig_Unit_Indexer_Func014Func003C()
    if ( not ( udg_UDexWasted == 32 ) ) then
        return false
    end
    return true
end

function Trig_Unit_Indexer_Func014Func005C()
    if ( not ( udg_UDexRecycle == 0 ) ) then
        return false
    end
    return true
end

function Trig_Unit_Indexer_Func014C()
    if ( not ( udg_UnitIndexerEnabled == true ) ) then
        return false
    end
    if ( not ( GetUnitUserData(GetFilterUnit()) == 0 ) ) then
        return false
    end
    return true
end
     
function ClearUnitIndex()
    if ( Trig_Unit_Indexer_Func005C() ) then
        udg_UnitIndexLock[udg_UDex] = ( udg_UnitIndexLock[udg_UDex] - 1 )
        if ( Trig_Unit_Indexer_Func005Func002C() ) then
            udg_UDexNext[udg_UDexPrev[udg_UDex]] = udg_UDexNext[udg_UDex]
            udg_UDexPrev[udg_UDexNext[udg_UDex]] = udg_UDexPrev[udg_UDex]
            udg_UDexPrev[udg_UDex] = 0
            udg_UnitIndexEvent = 0.00
            udg_UnitIndexEvent = 2.00
            udg_UnitIndexEvent = 0.00
            udg_UDexUnits[udg_UDex] = nil
            udg_UDexNext[udg_UDex] = udg_UDexRecycle
            udg_UDexRecycle = udg_UDex
        else
        end
    else
    end
end
     
function IndexUnit()
        local pdex = udg_UDex
        local ndex
    -- -
    -- You can customize the following block - if conditions are false the (Matching unit) won't be indexed.
    -- -
    if ( Trig_Unit_Indexer_Func014C() ) then
        udg_UDexWasted = ( udg_UDexWasted + 1 )
        if ( Trig_Unit_Indexer_Func014Func003C() ) then
            udg_UDexWasted = 0
            udg_UDex = udg_UDexNext[0]
            while udg_UDex == 0 do
                ndex = udg_UDexNext[udg_UDex]
                ClearUnitIndex()
                udg_UDex = ndex
            end
        end
        if ( Trig_Unit_Indexer_Func014Func005C() ) then
            udg_UDex = ( udg_UDexGen + 1 )
            udg_UDexGen = udg_UDex
        else
            udg_UDex = udg_UDexRecycle
            udg_UDexRecycle = udg_UDexNext[udg_UDex]
        end
        udg_UDexUnits[udg_UDex] = GetFilterUnit()
        SetUnitUserData( udg_UDexUnits[udg_UDex], udg_UDex )
        udg_UDexPrev[udg_UDexNext[0]] = udg_UDex
        udg_UDexNext[udg_UDex] = udg_UDexNext[0]
        udg_UDexNext[0] = udg_UDex
        udg_UnitIndexLock[udg_UDex] = 1
        udg_UnitIndexEvent = 0.00
        udg_UnitIndexEvent = 1.00
        udg_UnitIndexEvent = 0.00
        udg_UDex = pdex
    end
        return false
end
     
function InitializeUnitIndexer()
        local b = Filter(IndexUnit)
        local re = CreateRegion()
        local t = GetTriggeringTrigger()
        local r = GetWorldBounds()
        RegionAddRect(re, r)
        TriggerRegisterEnterRegion(t, re, b)
        TriggerClearActions(t)
        TriggerAddAction(t, ClearUnitIndex)
    udg_UnitIndexerEnabled = true
        for i=bj_MAX_PLAYER_SLOTS, 0, -1 do
            GroupEnumUnitsOfPlayer(bj_lastCreatedGroup, Player(i), b)
        end
        RemoveRect(r)
        re = nil
        r = nil
        t = nil
        b = nil
    udg_UnitIndexEvent = 3.00
    udg_UnitIndexEvent = 0.00
end
UnitIndexer
Events
Map initialization
Conditions
Actions
Custom script: InitializeUnitIndexer()
do
    --[[
        Doubly-Linked List v1.3.0.0 by Wrda, Eikonium and Bribe
        ------------------------------------------------------------------------------
        A script that allows the possibility to create a sequence of any object
        linked together.
        ------------------------------------------------------------------------------
    API:
        LinkedList.create(head) -> LinkedList
        - Creates or resets a table as a LinkedList head.
        - Allows a user-specified head or generates a new one.
     
        list:insert([node_or_value, after]) -> listNode
        - Inserts *before* the given list/node unless "after" is true.
        - If a "node or value" is passed, the system will check if the node is
          a table. If the table isn't yet part of a LinkedList structure, it
          will be converted into the node that is returned at the end of this
          function. If the table is a part of the LinkedList structure, or a
          different type of value than a table, then it will be assigned as a
          generic "value" (mapped to node.value)
        - Returns the inserted node that was added to the list (if addition was successful).
     
        list:remove(node) -> boolean
        - Removes a node from whatever list it is a part of and calls self:onRemove().
        - Returns true if it was sucessful.
     
        for node in list:loop([backwards]) do [stuff] end
        - Iterates over all nodes in "list".
     
        fromList:merge(intoList[, backwardsFrom, backwardsInto])
        - Removes all nodes from one list and adds them into another.
     
        list:reset() -> boolean
        - Removes all nodes from the given linked list, calling node:onRemove() on each.
        - Returns true if sucessful.
     
        - readonly list.n : integer -> the number of nodes in the list.
    ]]
        ---@class LinkedList:table
        ---@field head LinkedList
        ---@field next listNode|LinkedList
        ---@field prev listNode|LinkedList
        ---@field n integer
        LinkedList = {}
        LinkedList.__index = LinkedList
     
        ---@class listNode:LinkedList
        ---@field remove fun(node:listNode)->boolean
        ---@field onRemove fun(self:listNode)
     
        ---Creates or resets a table as a LinkedList head.
        ---@param head? LinkedList allows a user-specified head or generates a new one.
        ---@return LinkedList
        function LinkedList.create(head)
            if head and type(head) == "table" then
                local h = head.head
                if h then
                    if h ~= head then
                        return --user passed an active ListNode. This is not allowed.
                    end
                    if h.n > 0 then --first empty any lists that still have nodes.
                        for node in head:loop() do node:onRemove() end
                    end
                end
            else
                head = {}
            end
            setmetatable(head, LinkedList)
            head.next = head
            head.prev = head
            head.head = head
            head.n = 0
            return head
        end
     
        ---Node can be an existing table, or a new table will be created to represent the
        ---node. "list" can either be the head, or any point where you want the node to be
        ---inserted. It will insert *before* the given head/node, unless "backward" is true.
        ---@param list listNode|LinkedList
        ---@param node_or_value? any
        ---@param insertAfter? boolean
        ---@return listNode node that was added to the list (if addition was successful)
        function LinkedList.insert(list, node_or_value, insertAfter)
            if not list then return end
            local head = list.head
            if not head then return end
            local node, value
     
            if node_or_value then
                if type(node_or_value) == "table" then
                    if node_or_value.head then --table is already part of a linked list. Treat it as a "value"
                        value = node_or_value
                    else
                        node = node_or_value --table will be transmuted into the linked list node itself.
                    end
                else
                    --User passed a non-table value.
                    value = node_or_value
                end
            end
            if insertAfter then list = list.next end
     
            node = node or {}   ---@type listNode
            setmetatable(node, LinkedList)
            list.prev.next = node
            node.prev = list.prev
            list.prev = node
            node.next = list
            node.head = head
            head.n = head.n + 1
            node.value = value
            node.onRemove = function() node.head = nil end
            return node
        end
     
        ---Removes a node from whatever list it is a part of. A node cannot be a part of
        ---more than one list at a time, so there is no need to pass the containing list as
        ---an argument.
        ---@param node listNode
        ---@return boolean wasRemoved
        function LinkedList:remove(node)
            node = node or self
            if node then
                local head = node.head
                if head and head ~= node then
                    node.prev.next = node.next
                    node.next.prev = node.prev
                    head.n = head.n - 1
                    node:onRemove()
                    return true
                end
            end
        end
     
        ---Enables the generic for-loop for LinkedLists.
        ---Syntax: "for node in LinkedList.loop(list) do print(node) end"
        ---Alternative Syntax: "for node in list:loop() do print(node) end"
        ---@param list LinkedList
        ---@param backward? boolean
        function LinkedList.loop(list, backward)
            list = list.head
            local loopNode = list   ---@type listNode
            local direction = backward and "prev" or "next"
            return function()
                loopNode = loopNode[direction]
                return loopNode ~= list and loopNode or nil
            end
        end
     
        ---Merges LinkedList "from" to another LinkedList "into"
        ---@param from LinkedList|listNode
        ---@param into LinkedList|listNode
        ---@param backwardFrom boolean
        ---@param backwardInto boolean
        function LinkedList.merge(from, into, backwardFrom, backwardInto)
            if from and from.head and into and into.head then
                local directionFrom = backwardFrom and "prev" or "next"
                local n, v
                local node = from[directionFrom]
                from = from.head
                while node ~= from do
                    n, v = node[directionFrom], node.value
                    node:remove()
                    into:insert(node, backwardInto).value = v
                    node = n
                end
            end
        end
     
        ---Removes all nodes from the given linked list.
        ---@param list LinkedList
        ---@return boolean was_reset
        function LinkedList.reset(list)
            return list:create() ~= nil
        end
    end
if LinkedList then --https://www.hiveworkshop.com/threads/definitive-doubly-linked-list.339392/
--[[--------------------------------------------------------------------------------------
    Hook v4.1.0.0 by Bribe, with very special thanks to:
    Eikonium and Jampion for bug reports, feature improvements, teaching me new things.
    MyPad for teaching me new things
    Wrda and Eikonium for the better LinkedList approach
----------------------------------------------------------------------------------------]]
    Hook = {}
    
    local _LOW_PRIO     = -0.1 -- a number to represent what should be the lowest priority for a before-hook (lower values run first).
    local _HIGH_PRIO    = 9001  -- a number to represent what should be the lowest priority for an after-hook (lower values run first).
    local _SKIP_HOOK    = "skip hook" --when this is returned from a Hook.addSimple function, the hook will stop.
    
    local hookBefore    = {} ---@type Hook[]    --stores a list of functions that are called prior to a hooked function.
    local hookAfter     = {} ---@type Hook[]    --stores a list of functions that are called after a hooked function.
    local hookedFunc    = {} ---@type function[]    --stores a list of overriden functions
    
    ---@class Hook:LinkedList
    ---@field add       function
    ---@field addSimple function
    ---@field flush     function
    ---@field func      function

    ---@class hookNode  :listNode
    ---@field weight    number
    ---@field head      Hook
    ---@field func      fun(hook:Hook)

    ---@class hookInstance:table
    ---@field args      table
    ---@field call      function
    ---@field skip      boolean
    ---@field returned  table
--[[--------------------------------------------------------------------------------------
    Internal functions
----------------------------------------------------------------------------------------]]
    ---@param oldFunc string
    ---@param parent? table
    ---@return table
    ---@return table hookedFuncParent
    ---@return function? hooked_func_or_nil
    ---@return function hooked_func
    local function parseArgs(oldFunc, parent)
        parent = parent or _G
        local hfp = hookedFunc[parent]
        local hf = hfp and hfp[oldFunc]
        return parent, hfp, hf, hf or parent[oldFunc]
    end

--[[--------------------------------------------------------------------------------------
    Hook.add
    Args: string oldFunc, function userFunc[, number weight, table parent, function default]
          @ oldFunc is a string that represents the name of a function (e.g. "CreateUnit")
          @ userFunc is the function you want to be called when the original function is
            called*.
          @ weight is an optional parameter that determines whether your hook takes place
            "before" the original function is called, or after. Broken down like this:
            
            (a) if "weight" is "nil", "false" or a "negative number", it is treated as a
                "before hook". If "nil" or "false", "_LOW_PRIO" will be assigned as the weight.
            (b) if "weight" is "true", "0" or a "positive number", it is treated as an
                "after hook". If "true", 
            
          @ parent is an optional parameter for where the oldFunc is hosted. By default,
            it assumes a global (_G table) such as "BJDebugMsg".
          @ default is a function that you can inject into the table in case that variable
            is not found. If the variable is not found and a function is not passed as a
            default, the addition will fail.
    
    Returns two items:
        1. The original function you are hooking (if successful) or nil (if failed).
        2. A table to represent your hook registry. This is part of a linked list belonging
           to the function you hooked and aligned with whether it is a "before" or "after"
           hook. Its most relevant use would be to be passed to "Hook.remove(userHookTable)",
           as that is the way to remove a single hook in version 4.0.
    
    *The function you specify in Hook.add can take exactly one argument: a table. That
    table has the following properties within itself:
    
    args
    (table)
        Contains the original arguments passed during a hook. Useful for referencing in an
        "after hook". Can be modified by a "before hook".
    
    returned
    (table or nil)
        Contains a table of the return value(s) from "before" hooks and (if applicable) the
        original function. This is either "nil", or usually only holds a single index. To
        initialize this correctly, use table.pack(returnVal[, returnVal2, returnVal3, ...]).
    
    old
    (function)
        The original, native function that has been hooked (in case you want to call it).
    
    skip
    (boolean)
    Note: Set this to "true" from within a before-hook callback function to prevent the
          original function from being called. Users can check if this is set to true if
          they want to change the behavior of their own hooks accordingly.
----------------------------------------------------------------------------------------]]
    ---@param oldFunc string
    ---@param userFunc fun(hook:table)
    ---@param weight? number
    ---@param parent? table
    ---@param default? function
    ---@return function original_function
    ---@return hookNode newUserNode
    function Hook.add(oldFunc, userFunc, weight, parent, default)
        if type(oldFunc) ~= "string" or type(userFunc) ~= "function" then
            --print "Hook.add Error: The first argument must be a string, the second must be a function."
            return
        end
        local parent, hfp, hf, old = parseArgs(oldFunc, parent)
        
        if not old or type(old) ~= "function" then
            if default then
                old             = default
                parent[oldFunc] = default
            else
                --print("Hook.add Error: Tried to hook a function that doesn't exist: " .. oldFunc .. ".\nTry calling Hook.add from a Global Initialization function.")
                return
            end
        end
        if not hf then
            if not hfp then
                hfp                 = {}
                hookedFunc[parent]  = hfp
            end
            hfp[oldFunc]    = old ---@type function
            local hb        = LinkedList.create()   ---@type Hook
            hookBefore[old] = hb
            hb.func         = old
            local ha        = LinkedList.create()   ---@type Hook
            hookAfter[old]  = ha
            ha.func         = old
            parent[oldFunc] =
            function(...)
                local this = {args = table.pack(...), call = old, skip = false } ---@type hookInstance
                
                for userNode in hb:loop() do userNode.func(this) end
                
                local r
                if not this.skip then
                    r = table.pack(old(table.unpack(this.args, 1, this.args.n)))
                    if r.n > 0 then this.returned = r end
                end
                r = this.returned
                if not (r and type(r) == "table" and r.n and r.n > 0) then
                    r = nil; this.returned = nil
                --else
                    --print("Hook report: returning " .. r.n .. " values.")
                end
                
                for userNode in ha:loop() do userNode.func(this) end
                
                if r then return table.unpack(r, 1, r.n) end
            end
        end
        
        weight = weight or _LOW_PRIO
        if weight == true then weight = _HIGH_PRIO end
        
        --This creates and inserts newUserNode into the corresponding table with taking into consideration the weight of each item.
        local tab = weight < 0 and hookBefore[old] or hookAfter[old]
        local insertPoint = tab.head
        local newUserNode
        for node in tab:loop() do
            if node.weight > weight then insertPoint = node; break end
        end
        newUserNode = insertPoint:insert(nil, true) ---@type hookNode
        newUserNode.func = userFunc
        newUserNode.weight = weight
        newUserNode.remove = Hook.remove
        
        --print("indexing")
        return old, newUserNode
    end
    
    ---Remove a registered hook by passing the node returned from the second
    ---return value of Hook.add.
    ---@param node hookNode
    ---@return integer number_of_hooks_remaining
    function Hook.remove(node)
        local r = 0
        local head = node.head
        if head then
            node:remove()
            r = hookBefore[head.func].n + hookAfter[head.func].n
            if r == 0 then
                Hook.flush(head.func)
            end
        end
        return r
    end
    
--[[--------------------------------------------------------------------------------------
    Hook.flush
    Args: string oldFunc[, table parent]
    Desc: Purges all hooks associated with the given function string and sets the original
          function back inside of the parent table.
----------------------------------------------------------------------------------------]]
    
    ---Hook.flush
    ---@param oldFunc string
    ---@param parent? table
    function Hook.flush(oldFunc, parent)
        local parent, hfp, hf, old = parseArgs(oldFunc, parent)
        if hf then
            parent[oldFunc] = old
            hookBefore[old] = nil
            hookAfter[old]  = nil
            hfp[oldFunc]    = nil
        end
    end
    
--[[--------------------------------------------------------------------------------------
    The user-function parameters and behavior are different from Hook.add. This uses
    the original format I wanted for hook-behavior, but it became clear that there
    were scenarios where the user should be able to do more.
    
    "Before hook" parameters are the arguments of the original function call. This is
    useful in a situation where you don't want to unpack the args yourself to see them in
    an intuitive way, and don't need the additional complexities of the table to determine
    what you want to do.
    
    Return: If anything other than "nil" is returned, it will prevent any additional
            "before" hooks with a lower priority from running, as well as prevent the
            original function from being called. If returning a value other than "nil"
            would break the expectations of the original function, return the string
            "stop hook" instead.
    
    "After hook"
    ------------
    Args: Takes the return value(s) as parameter(s), if there was any return value.
----------------------------------------------------------------------------------------]]
    ---@param oldFunc string
    ---@param userFunc function
    ---@param weight? number
    ---@param parent? table
    ---@param default? function
    ---@return function original_function
    ---@return hookNode newUserNode
    function Hook.addSimple(oldFunc, userFunc, weight, parent, default)
        return Hook.add(oldFunc,
        function(hook)
            local r = hook.returned
            if weight and (weight == true or weight >= 0) then
                if r then
                    userFunc(table.unpack(r, 1, r.n))
                else
                    userFunc()
                end
            elseif not hook.skip and not r then
                r = userFunc(table.unpack(hook.args, 1, hook.args.n))
                if r and #r > 0 then
                    if r[1] ~= _SKIP_HOOK then
                        hook.returned = table.pack(r)
                    end
                    hook.skip = true
                end
            end
        end, weight, parent, default)
    end
    
end
if Hook then --https://www.hiveworkshop.com/threads/hook.339153
    
    -- Global Initialization 2.2.2.0 by Bribe, with special thanks to Tasyen, Forsakn and Troll-Brain
    
    local sFuncs
    local function Flush()
        if sFuncs then return end
        sFuncs = {}
        Hook.add("InitBlizzard",
        function()
            local t = CreateTimer()
            TimerStart(t, 0.00, false,
            function()
                DestroyTimer(t)
                for _, f in ipairs(sFuncs) do f() end
                sFuncs          = nil
                OnGlobalInit    = nil
                OnTrigInit      = nil
                OnMapInit       = nil
                OnGameStart     = nil
                Hook.flush("InitBlizzard")
                Hook.flush("InitGlobals")
                Hook.flush("InitCustomTriggers")
                Hook.flush("RunInitializationTriggers")
            end)
        end)
    end
    
    local function Init(str, backup, func, priority)
        if not func or type(func) == "number" then
            func, priority = priority, func or true
        end
        if not Hook.add(str, func, priority) then
            backup(priority, func)
        end
        Flush()
    end
    
    ---@param priority number | function
    ---@param func? function
    function OnGlobalInit(priority, func) -- Runs once all GUI variables are instantiated.
        Init("InitGlobals", function(priority, func) Hook.add("InitBlizzard", func, priority) end, func, priority)
    end
    
    ---@param priority number | function
    ---@param func? function
    function OnTrigInit(priority, func) -- Runs once all InitTrig_ are called
        Init("InitCustomTriggers", OnGlobalInit, func, priority)
    end
    
    ---@param priority number | function
    ---@param func? function
    function OnMapInit(priority, func) -- Runs once all Map Initialization triggers are run
        Init("RunInitializationTriggers", OnTrigInit, func, priority)
    end
    
    ---@param func function
    function OnGameStart(func) -- Runs once the game has actually started
        Flush()
        sFuncs[#sFuncs + 1] = func
    end
end
if Hook then --https://www.hiveworkshop.com/threads/hook.339153
--[[--------------------------------------------------------------------------------------
    Global Variable Remapper v1.0.1.1 by Bribe
    - Intended to empower the GUI user-base and those who design systems for them.
 
    API:
        GlobalRemap(variableStr, getterFunc, setterFunc)
        @variableStr is a string such as "udg_MyVariable"
        @getterFunc is a function that takes nothing but returns the expected value when
            "udg_MyVariable" is referenced.
        @setterFunc is a function that takes a single argument (the value that is being
            assigned) and allows you to do what you want when someone uses "Set MyVariable = SomeValue".
            The function doesn't need to do anything nor return anything. Enables read-only
            GUI variables for the first time in WarCraft 3 history.
    
    Systems that use this should call GlobalRemap via Global Initialization or later:
    https://www.hiveworkshop.com/threads/global-initialization.317099/

----------------------------------------------------------------------------------------]]
 
    local getters, setters, skip
 
    ---GlobalRemap
    ---@param var string
    ---@param getFunc? fun() ->value?
    ---@param setFunc? fun(value)
    function GlobalRemap(var, getFunc, setFunc)
        if not skip then
            getters, setters, skip = {}, {}, DoNothing
 
            local mt = getmetatable(_G)
            if not mt then
                mt = {}
                setmetatable(_G, mt) 
            end
            
            --hook.args = {1:table, 2:index}
            Hook.add("__index",
            function(hook)
                local func = getters[hook.args[2]]
                if func then
                    hook.skip = true
                    hook.returned = table.pack(func())
                end
            end, nil, mt,
            function(a, b)
                return rawget(a, b)
            end)

            --hook.args = {1:table, 2:index, 3:value}
            Hook.add("__newindex", 
            function(hook)
                local func = setters[hook.args[2]]
                if func then
                    hook.skip = true
                    func(hook.args[3])
                end
            end, nil, mt,
            function(a, b, c)
                rawset(a, b, c)
            end)
        end
        _G[var] = nil                   --Delete the variable from the global table.
        getters[var] = getFunc or skip  --Assign a function that returns what should be returned when this variable is referenced.
        setters[var] = setFunc or skip  --Assign a function that captures the value the variable is attempting to be set to.
    end
end
if LinkedList then --https://www.hiveworkshop.com/threads/definitive-doubly-linked-list.339392
--[[--------------------------------------------------------------------------------------
    Timed Call and Echo v1.2.1.0, code structure credit to Eikonium and Jesus4Lyf
    
    Timed.call([delay, ]userFunc)
    -> Call userFunc after 'delay' seconds. Delay defaults to 0 seconds.
    
    Timed.echo(userFunc[, timeout, userTable])
    -> Returns userTable or a new table.
    -> calls userFunc every "timeout" seconds until userFunc returns true or you call
       userTable:remove()
    
    Node API (for the tables returned by Timed.echo):
        node.elapsed -> the number of seconds that 'node' has been iterating for.
----------------------------------------------------------------------------------------]]
    
    local _TIMEOUT = 0.03125 --default echo timeout
    
    Timed = {}
    ---@class timedNode:listNode
    ---@field elapsed number
    
--[[--------------------------------------------------------------------------------------
    Internal
----------------------------------------------------------------------------------------]]
    
    local zeroList, _ZERO_TIMER
    
--[[--------------------------------------------------------------------------------------
    Name: Timed.call
    Args: [delay, ]userFunc
    Desc: After "delay" seconds, call "userFunc".
----------------------------------------------------------------------------------------]]
    
    ---Core function by Eikonium; zero-second expiration is a simple list by Bribe
    ---@param delay number|function
    ---@param userFunc? function|number
    function Timed.call(delay, userFunc)
        if not userFunc or delay == 0.00 then
            if not zeroList then
                zeroList = {}
                _ZERO_TIMER = _ZERO_TIMER or CreateTimer()
                TimerStart(_ZERO_TIMER, 0.00, false, 
                function()
                    local tempList = zeroList
                    zeroList = nil
                    for _, func in ipairs(tempList) do func() end
                end)
            end
            zeroList[#zeroList + 1] = userFunc or delay
            return
        end
        local t = CreateTimer()
        TimerStart(t, delay, false,
        function()
            DestroyTimer(t)
            userFunc()
        end)
    end
 
    local lists = {}
 
--[[--------------------------------------------------------------------------------------
    Timed.echo is reminiscent of Jesus4Lyf's Timer32 module. It borrows from it with the
    LinkedList syntax and "exitwhen true" nature of the original T32 module.

    Desc: Calls userFunc every timeout seconds (by default, every 0.03125 seconds). If
        your own node should be specified but you want to use the default timeout, you
        can use Timed.echo(yourFunc, nil, myTable).
    Warn: This merges all timeouts of the same value together, so large numbers can cause
        expirations to occur too early on.
----------------------------------------------------------------------------------------]]
    ---@param userFunc fun(node:timedNode):boolean -- if true, echo will stop
    ---@param timeout? number
    ---@param node? timedNode
    ---@return timedNode new_node
    function Timed.echo(userFunc, timeout, node)
        timeout = timeout or _TIMEOUT
        local list = lists[timeout]
        local t
        node = node or {} ---@type timedNode
        if list then
            t = list.timer
            local r = TimerGetRemaining(t)
            if r < timeout * 0.50 then --the merge uses rounding to determine if
                local q = list.queue   --the first expiration should be skipped
                if not q then
                    q = LinkedList.create()
                    list.queue = q
                end
                node.elapsed = r       --add the remaining timeout to the elapsed time for this node.
                node.func = userFunc
                return q:insert(node)
            end
            node.elapsed = r - timeout --the instance will be called on the next tick, despite not being around for the full tick.
        else
            list = LinkedList.create()
            lists[timeout] = list
            t = CreateTimer()       --one timer per timeout interval
            list.timer = t
            TimerStart(t, timeout, true,
            function()
                for tNode in list:loop() do
                    tNode.elapsed = tNode.elapsed + timeout
                    if tNode.func(tNode) then --function can return true to remove itself from the list.
                        tNode:remove()
                    end
                end
                -- delayed add to list
                if list.queue then
                    list.queue:merge(list)
                    list.queue = nil
                end
                --
                if list.n == 0 then --list is empty; delete it.
                    lists[timeout] = nil
                    PauseTimer(t)
                    DestroyTimer(t)
                end
            end)
            node.elapsed = 0.00
        end
        node.func = userFunc
        return list:insert(node)
    end
end
Damage Engine Config
Events
Map initialization
Game - DamageModifierEvent becomes Greater than 0
Game - LethalDamageEvent becomes Less than or equal to 0
Game - DamageEvent becomes Not equal to 0.00
Game - AfterDamageEvent becomes Less than 0
Game - AOEDamageEvent becomes Greater than or equal to 0
Game - SourceDamageEvent becomes Equal to 0
Game - PreDamageEvent becomes Equal to 0
Game - ArmorDamageEvent becomes Equal to 0
Game - ZeroDamageEvent becomes Equal to 0
Conditions
Actions
-------- You can add extra classifications here if you want to differentiate between your triggered damage --------
-------- Use DamageTypeExplosive (or any negative value damage type) if you want a unit killed by that damage to explode --------
-------- - --------
-------- The pre-defined type Code might be set by Damage Engine if Unit - Damage Target is detected and the user didn't define a type of their own. --------
-------- "Pure" is especially important because it overrides both the Damage Engine as well as WarCraft 3 damage modification. --------
-------- I therefore gave the user "Explosive Pure" in case one wants to combine the functionality of the two. --------
-------- - --------
Set Variable Set DamageTypePureExplosive = "-2"
Set Variable Set DamageTypeExplosive = "-1"
Set Variable Set DamageTypeCode = "1"
Set Variable Set DamageTypePure = "2"
-------- - --------
Set Variable Set DamageTypeHeal = "3"
Set Variable Set DamageTypeBlocked = "4"
Set Variable Set DamageTypeReduced = "5"
-------- - --------
Set Variable Set DamageTypeCriticalStrike = "6"
-------- - --------
if  Hook        -- https://www.hiveworkshop.com/threads/hook.339153
and Timed then  -- https://www.hiveworkshop.com/threads/timed-call-and-echo.339222/

--[[--------------------------------------------------------------------------------------
    
    Lua Damage Engine Version 2.0.0.0
    
    Documentation is found in the code, not in this header.
    
    I'd like to give very special thanks to Eikonium for equipping me with the debugging
    tools I needed to get Lua Damage Engine published. I'd also like to thank MindWorX and
    Eikonium for getting me started with VSCode, which has changed my (programming) life.

    If you want GUI functionality, you also will need the following library:
    Global Variable Remapper    - https://www.hiveworkshop.com/threads/global-variable-remapper
    
----------------------------------------------------------------------------------------]]

OnGlobalInit(1, function() Damage = {}

    ---@class damageEvent:LinkedList
    ---@class damageEventRegistry:listNode
    ---@class damageInstance:table

--[[--------------------------------------------------------------------------------------
    Configurable variables are listed below
----------------------------------------------------------------------------------------]]
    
    local _USE_GUI          = GlobalRemap
    
    local _USE_EXTRA        = _USE_GUI  --If you don't use DamageEventLevel/DamageEventAOE/SourceDamageEvent, set this to false
    local _USE_ARMOR_MOD    = true      --If you do not modify nor detect armor/defense, set this to false
    local _USE_MELEE_RANGE  = true      --If you do not detect melee nor ranged damage, set this to false
    
    local _LIMBO            = 16        --When manually-enabled recursion is enabled via Damage.recurion, the engine will never go deeper than LIMBO.
    local _DEATH_VAL        = 0.405     --In case M$ or Bliz ever change this, it'll be a quick fix here.
    
    local _TYPE_CODE        = 1         --Must be the same as udg_DamageTypeCode, or 0 if you prefer to disable the automatic flag.
    local _TYPE_PURE        = 2         --Must be the same as udg_DamageTypePure
    
    --These variables coincide with Blizzard's "limitop" type definitions.
    local _FILTER_ATTACK    = 0     --LESS_THAN
    local _FILTER_MELEE     = 1     --LESS_THAN_OR_EQUAL
    local _FILTER_OTHER     = 2     --EQUAL
    local _FILTER_RANGED    = 3     --GREATER_THAN_OR_EQUAL
    local _FILTER_SPELL     = 4     --GREATER_THAN
    local _FILTER_CODE      = 5     --NOT_EQUAL
    
    local CheckUnitType = IsUnitType
    local t1, t2, t3    ---@type trigger
    local current       = nil   ---@type damageInstance
    local userIndex     = nil   ---@type damageEventRegistry
    local checkConfig
    do
        local GetUnitItem   = UnitItemInSlot
        local GetItemType   = GetItemTypeId
        local GUTI          = GetUnitTypeId
        local GUAL          = GetUnitAbilityLevel
        local GRR           = GetRandomReal
        local function checkItem(u,  id) 
            if CheckUnitType(u, UNIT_TYPE_HERO) then
                for i = 0, UnitInventorySize(u) - 1 do
                    if GetItemType(GetUnitItem(u, i)) == id then return true end
                end
            end
        end
        checkConfig = function() if not userIndex.configured then return true
        
--[[--------------------------------------------------------------------------------------
    Mapmakers should comment-out any of the below lines that they will never need to check
    for, and move the most common checks to the top of the list.
----------------------------------------------------------------------------------------]]
            
            elseif userIndex.sourceType  and GUTI(current.source) ~= userIndex.sourceType then
            elseif userIndex.targetType  and GUTI(current.target) ~= userIndex.targetType then
            elseif userIndex.sourceBuff  and GUAL(current.source, userIndex.sourceBuff) == 0 then
            elseif userIndex.targetBuff  and GUAL(current.target, userIndex.targetBuff) == 0 then
            elseif userIndex.failChance  and GRR(0.00, 1.00) <= userIndex.failChance then
            elseif userIndex.userType    and current.userType ~= userIndex.userType then
            elseif userIndex.source      and userIndex.source ~= current.source then
            elseif userIndex.target      and userIndex.target ~= current.target then
            elseif userIndex.attackType  and userIndex.attackType ~= current.attackType then
            elseif userIndex.damageType  and userIndex.damageType ~= current.damageType then
            elseif userIndex.sourceItem  and not checkItem(current.source, userIndex.sourceItem) then
            elseif userIndex.targetItem  and not checkItem(current.target, userIndex.targetItem) then
            elseif userIndex.sourceClass and not CheckUnitType(current.source, userIndex.sourceClass) then
            elseif userIndex.targetClass and not CheckUnitType(current.target, userIndex.targetClass) then
            elseif current.damage >= userIndex.damageMin then
            
--[[--------------------------------------------------------------------------------------
    Configuration section is over. The rest of the library is hard-coded.
----------------------------------------------------------------------------------------]]
            
                --print("Configuration passed")
                return true
            end
            --print("Checking failed")
        end
    end 
    
--[[--------------------------------------------------------------------------------------
    Readonly variables are defined below.
----------------------------------------------------------------------------------------]]
    
    local readonly          = {}
    
    readonly.index          = function() return current end         --Damage.index is the currently-running damage table that contains properties like source/target/damage.
    
    local lastRegistered    = nil                                   ---@type damageEventRegistry
    readonly.lastRegistered = function() return lastRegistered end  --Damage.lastRegistered identifies whatever damage event was most recently added.
    
    readonly.userIndex      = function() return userIndex end       --Damage.userIndex identifies the registry table for the damage function that's currently running.
    
    local sourceStacks      = 1
    readonly.sourceStacks   = function() return sourceStacks end    --Damage.sourceStacks holds how many times a single unit was hit from the same source using the same attack. AKA udg_DamageEventLevel.
    
    local sourceAOE         = 1
    readonly.sourceAOE      = function() return sourceAOE end       --Damage.sourceAOE holds how many units were hit by the same source using the same attack. AKA udg_DamageEventAOE.

    local originalSource
    readonly.originalSource = function() return originalSource end  --Damage.originalSource tracks whatever source unit started the current series of damage event(s). AKA udg_AOEDamageSource.
    
    local originalTarget
    readonly.originalTarget = function() return originalTarget end  --Damage.originalTarget tracks whatever target unit was first hit by the original source. AKA udg_EnhancedDamageTarget.
    
    local _DAMAGING         = LinkedList.create()   ---@type damageEvent
    readonly.damagingEvent  = function() return _DAMAGING end
    
    local _ARMOR            = LinkedList.create()   ---@type damageEvent
    readonly.armorEvent     = function() return _ARMOR end
    
    local _DAMAGED          = LinkedList.create()   ---@type damageEvent
    readonly.damagedEvent   = function() return _DAMAGED end
    
    local _ZERO             = LinkedList.create()   ---@type damageEvent
    readonly.zeroEvent      = function() return _ZERO end
    
    local _AFTER            = LinkedList.create()   ---@type damageEvent
    readonly.afterEvent     = function() return _AFTER end
    
    local _LETHAL           = LinkedList.create()   ---@type damageEvent
    readonly.lethalEvent    = function() return _LETHAL end
    
    local _SOURCE           = LinkedList.create()   ---@type damageEvent
    readonly.sourceEvent    = function() return _SOURCE end
    
    local GetUnitLife       = GetWidgetLife
    local SetUnitLife       = SetWidgetLife
    local Alive             = UnitAlive
    local disableT          = DisableTrigger
    local enableT           = EnableTrigger
    local hasLethal         ---@type boolean
    local hasSource         ---@type boolean
    
    ---@class damageEvent

    ---@class damageEventRegistry
    ---@field minAOE        integer
    ---@field filters       boolean[]
    ---@field targetClass   unittype
    ---@field sourceClass   unittype
    ---@field targetItem    itemtype
    ---@field sourceItem    itemtype
    ---@field sourceType    unittype
    ---@field targetType    unittype
    ---@field targetBuff    integer
    ---@field sourceBuff    integer
    ---@field source        unit
    ---@field target        unit
    ---@field attackType    attacktype
    ---@field damageType    damagetype
    ---@field weaponType    weapontype
    ---@field damageMin     number
    ---@field userType      integer
    ---@field trig          trigger
    ---@field eFilter       integer
    ---@field trigFrozen    boolean
    ---@field levelsDeep    integer

    ---@class damageInstance
    ---@field source        unit
    ---@field target        unit
    ---@field damage        real
    ---@field prevAmt       real
    ---@field isAttack      boolean
    ---@field isRanged      boolean
    ---@field isMelee       boolean
    ---@field attackType    attacktype
    ---@field damageType    damagetype
    ---@field weaponType    weapontype
    ---@field isCode        boolean
    ---@field isSpell       boolean
    ---@field recursiveFunc damageEventRegistry[]
    ---@field userType      integer
    ---@field armorPierced  real
    ---@field prevArmorT    integer
    ---@field armorType     integer
    ---@field prevDefenseT  integer
    ---@field defenseType   integer


    local dreaming ---@type boolean
    ---Turn on (true) or off (false or nil) Damage Engine
    ---@param on boolean
    function Damage.enable(on)
        if on then
            if dreaming then enableT(t3)
            else enableT(t1); enableT(t2) end
        else
            if dreaming then disableT(t3)
            else disableT(t1); disableT(t2) end
        end
    end
    
    local breakCheck = {}   ---@type function[]
    local override          ---@type boolean
    
    breakCheck[_DAMAGING]   = function() return override or current.userType == _TYPE_PURE end
    breakCheck[_ARMOR]      = function() return current.damage <= 0.00 end
    breakCheck[_LETHAL]     = function() return hasLethal and Damage.life > _DEATH_VAL end
    
    ---@return boolean
    local function damageOrAfter() return current.damageType == DAMAGE_TYPE_UNKNOWN end
    breakCheck[_DAMAGED]    = damageOrAfter
    breakCheck[_AFTER]      = damageOrAfter
    
    local function defaultCheck() end
    
    ---Common function to run any major event in the system.
    ---@param head damageEventRegistry
    ---@return boolean ran_yn
    local function runEvent(head)
        local check = breakCheck[head] or defaultCheck
        if dreaming or check() then
            return
        end
        userIndex = head.next
        if userIndex ~= head then
            Damage.enable(false)
            enableT(t3)
            dreaming = true
            
            --print("Start of event running")
            repeat
                if not userIndex.trigFrozen and userIndex.filters[userIndex.eFilter] and checkConfig() and not hasSource or (head ~= _SOURCE or (userIndex.minAOE and sourceAOE > userIndex.minAOE)) then
                    userIndex.func()
                end
                userIndex = userIndex.next
            until userIndex == head or check()
            --print("End of event running")
            
            dreaming = nil
            Damage.enable(true)
            disableT(t3)
        end
        return true
    end
    
--[[--------------------------------------------------------------------------------------
    Creates a new table for the damage properties for each particular event sequence.
----------------------------------------------------------------------------------------]]
    
    ---Create a new damage instance
    ---@param src unit
    ---@param tgt unit
    ---@param amt number
    ---@param a boolean
    ---@param r boolean
    ---@param at attacktype
    ---@param dt damagetype
    ---@param wt weapontype
    ---@param fromCode boolean
    ---@return damageInstance
    local function create(src, tgt, amt, a, r, at, dt, wt, fromCode)
        local d = { ---@type damageInstance
            source              = src,
            target              = tgt,
            damage              = amt,
            isAttack            = a or _USE_GUI and udg_NextDamageIsAttack,
            isRanged            = r,
            attackType          = at, 
            damageType          = dt, 
            weaponType          = wt, 
            prevAmt             = amt,
            userAmt             = amt
        }
        d.isSpell               = at == ATTACK_TYPE_NORMAL and not d.isAttack
        if fromCode or Damage.nextType or d.damageType == DAMAGE_TYPE_MIND or (d.damageType == DAMAGE_TYPE_UNKNOWN and d.damage ~= 0.00) or (_USE_GUI and (udg_NextDamageIsAttack or udg_NextDamageIsRanged or udg_NextDamageIsMelee or udg_NextDamageWeaponT)) then
            d.isCode            = true
            d.userType          = Damage.nextType or _TYPE_CODE
            Damage.nextType     = nil
            if _USE_MELEE_RANGE and not d.isSpell then
                d.isMelee       = _USE_GUI and udg_NextDamageIsMelee or (a and not r)
                d.isRanged      = _USE_GUI and udg_NextDamageIsRanged or (a and r)
            end
            d.eFilter           = _FILTER_CODE
            if _USE_GUI then
                udg_NextDamageIsAttack      = nil
                if udg_NextDamageWeaponT then
                    d.weaponType            = ConvertWeaponType(udg_NextDamageWeaponT)
                    udg_NextDamageWeaponT   = nil
                end
                if _USE_MELEE_RANGE then
                    udg_NextDamageIsMelee   = nil
                    udg_NextDamageIsRanged  = nil
                end
            end
        else
            d.userType          = 0
        end
        return d
    end
    
    local GetDamage         = GetEventDamage
    local createFromEvent
    do
        local GetSource     = GetEventDamageSource
        local GetTarget     = GetTriggerUnit
        local GetIsAttack   = BlzGetEventIsAttack
        local GetAttackType = BlzGetEventAttackType
        local GetDamageType = BlzGetEventDamageType
        local GetWeaponType = BlzGetEventWeaponType
        
        ---Create a damage event from a naturally-occuring event.
        ---@param isCode? boolean
        ---@return damageInstance
        function createFromEvent(isCode)
            local d = create(GetSource(), GetTarget(), GetDamage(), GetIsAttack(), false, GetAttackType(), GetDamageType(), GetWeaponType(), isCode)
            if not d.isCode then
                if d.damageType == DAMAGE_TYPE_NORMAL and d.isAttack then
                    if _USE_MELEE_RANGE then
                        d.isMelee       = CheckUnitType(d.source, UNIT_TYPE_MELEE_ATTACKER)
                        d.isRanged      = CheckUnitType(d.source, UNIT_TYPE_RANGED_ATTACKER)
                        if d.isMelee and d.isRanged then
                            d.isMelee   = d.weaponType  -- Melee units play a sound when damaging. In naturally-occuring cases where a
                            d.isRanged  = not d.isMelee -- unit is both ranged and melee, the ranged attack plays no sound.
                        end
                        if d.isMelee then
                            d.eFilter   = _FILTER_MELEE
                        elseif d.isRanged then
                            d.eFilter   = _FILTER_RANGED
                        else
                            d.eFilter   = _FILTER_ATTACK
                        end
                    else
                        d.eFilter       = _FILTER_ATTACK
                    end
                else
                    if d.isSpell then
                        d.eFilter   = _FILTER_SPELL
                    else
                        d.eFilter   = _FILTER_OTHER
                    end
                end
            end
            return d
        end
    end
    
    local alarmSet
    Damage.targets = udg_DamageEventAOEGroup
    
    local function onAOEEnd()
        if _USE_EXTRA then
            runEvent(_SOURCE)
            sourceAOE       = 1
            sourceStacks    = 1
            originalTarget  = nil
            originalSource  = nil
            GroupClear(Damage.targets)
        end
    end
    
    ---Handle any desired armor modification.
    ---@param reset? boolean
    local function setArmor(reset)
        if _USE_ARMOR_MOD then
            local pierce    ---@type real
            local at        ---@type integer
            local dt        ---@type integer
            if reset then
                pierce  =   current.armorPierced
                at      =   current.prevArmorT
                dt      =   current.prevDefenseT
            else
                pierce  =  -current.armorPierced
                at      =   current.armorType
                dt      =   current.defenseType
            end
            if pierce ~= 0.00 then --Changed condition thanks to bug reported by BLOKKADE
                BlzSetUnitArmor(current.target, BlzGetUnitArmor(current.target) + pierce)
            end
            if current.prevArmorT ~= current.armorType then
                BlzSetUnitIntegerField(current.target, UNIT_IF_ARMOR_TYPE, at)
            end
            if current.prevDefenseT ~= current.defenseType then
                BlzSetUnitIntegerField(current.target, UNIT_IF_DEFENSE_TYPE, dt)
            end
        end
    end
    
    local proclusGlobal     = {}                ---@type boolean[]
    local fischerMorrow     = {}                ---@type boolean[]
    local SetEventDamage    = BlzSetEventDamage
    
    local doPreEvents
    do
        local SetEventAttackType     = BlzSetEventAttackType
        local SetEventDamageType     = BlzSetEventDamageType
        local SetEventWeaponType     = BlzSetEventWeaponType
        
        ---Setup pre-events before running any user-facing damage events.
        ---@param d damageInstance
        ---@param natural? boolean
        ---@return boolean isZeroDamage_yn
        doPreEvents = function(d, natural)
            if _USE_ARMOR_MOD then
                d.armorType      = BlzGetUnitIntegerField(d.target, UNIT_IF_ARMOR_TYPE)
                d.defenseType    = BlzGetUnitIntegerField(d.target, UNIT_IF_DEFENSE_TYPE)
                d.prevArmorT     = d.armorType
                d.prevDefenseT   = d.defenseType
                d.armorPierced   = 0.00
            end
            current             = d
            
            proclusGlobal[d.source] = true
            fischerMorrow[d.target] = true
            
            if d.damage == 0.00 then
                return true
            end
            override = d.damageType == DAMAGE_TYPE_UNKNOWN
            runEvent(_DAMAGING)
            if natural then
                SetEventAttackType(d.attackType)
                SetEventDamageType(d.damageType)
                SetEventWeaponType(d.weaponType)
                SetEventDamage(d.damage)
            end
            setArmor()
        end
    end
    
    local function afterDamage() 
        if current then
            runEvent(_AFTER)
            current = nil
        end
        override = nil
    end
    
    local canKick                   = true
    local sleepLevel                = 0
    local totem, kicking, eventsRun
    local prepped                   = nil       ---@type damageInstance
    local recursiveStack            = {}        ---@type damageInstance[]
    local UDT                       = UnitDamageTarget
    
    local function finish()
        if eventsRun then
            eventsRun = nil
            afterDamage()
        end
        current = nil
        override = nil
        if canKick and not kicking then
            if #recursiveStack > 0 then
                kicking = true
                local i = 1
                local exit
                repeat
                    sleepLevel  = sleepLevel + 1
                    exit        = #recursiveStack
                    repeat
                        prepped = recursiveStack[i]
                        if Alive(prepped.target) then
                            doPreEvents(prepped) --don't evaluate the pre-event
                            if prepped.damage > 0.00 then
                                disableT(t1) --Force only the after armor event to run.
                                enableT(t2)  --in case the user forgot to re-enable this
                                totem = true
                                UDT(prepped.source, prepped.target, prepped.damage, prepped.isAttack, prepped.isRanged, prepped.attackType, prepped.damageType, prepped.weaponType)
                            else
                                runEvent(_DAMAGED)
                                if prepped.damage < 0.00 then
                                    --No need for BlzSetEventDamage here
                                    SetUnitLife(prepped.target, GetUnitLife(prepped.target) - prepped.damage)
                                end
                                setArmor(true)
                            end
                            afterDamage()
                        end
                        i = i + 1
                    until (i >= exit)
                until (i >= #recursiveStack)
            end
            for i = 1, #recursiveStack do
                recursiveStack[i].recursiveFunc.trigFrozen  = nil
                recursiveStack[i].recursiveFunc.levelsDeep  = 0
                recursiveStack[i] = nil
            end
            sleepLevel      = 0
            prepped, kicking, dreaming = nil, nil, nil
            Damage.enable(true)
            
            proclusGlobal = {} ---@type boolean[]
            fischerMorrow = {} ---@type boolean[]
            --print("Cleared up the groups")
        end
    end
    
    local function failsafeClear()
        setArmor(true)
        canKick = true
        kicking, totem = nil, nil
        runEvent(_DAMAGED)
        eventsRun = true
        finish()
    end
    
    local lastInstance       ---@type damageInstance
    local attacksImmune = {} ---@type boolean[]
    local damagesImmune = {} ---@type boolean[]
    
    t1 = CreateTrigger()
    TriggerRegisterAnyUnitEventBJ(t1, EVENT_PLAYER_UNIT_DAMAGING)
    TriggerAddCondition(t1, Filter(function()
        local d = createFromEvent()
        --print("Pre-damage event running for " .. GetUnitName(GetTriggerUnit()))
        if alarmSet then
            if totem then --WarCraft 3 didn't run the DAMAGED event despite running the DAMAGING event.
                if d.damageType == DAMAGE_TYPE_SPIRIT_LINK or d.damageType == DAMAGE_TYPE_DEFENSIVE or d.damageType == DAMAGE_TYPE_PLANT then
                    lastInstance    = current
                    totem           = nil
                    canKick         = nil
                else
                    failsafeClear() --Not an overlapping event - just wrap it up
                end
            else
                finish() --wrap up any previous damage index
            end
            
            if _USE_EXTRA then
                if d.source ~= originalSource then
                    onAOEEnd()
                    originalSource = d.source
                    originalTarget = d.target
                elseif d.target == originalTarget then
                    sourceStacks = sourceStacks + 1
                elseif not IsUnitInGroup(d.target, Damage.targets) then
                    sourceAOE = sourceAOE + 1
                end
            end
        else
            alarmSet = true
            Timed.call(
            function()
                alarmSet, dreaming = nil, nil
                Damage.enable(true)
                if totem then
                    failsafeClear() --WarCraft 3 didn't run the DAMAGED event despite running the DAMAGING event.
                else
                    canKick = true
                    kicking = nil
                    finish()
                end
                onAOEEnd()
                current = nil
                --print("Timer wrapped up")
            end)
            if _USE_EXTRA then
                originalSource  = d.source
                originalTarget  = d.target
            end
        end
        if _USE_EXTRA then GroupAddUnit(Damage.targets, d.target) end
        if doPreEvents(d, true) then
            runEvent(_ZERO)
            canKick = true
            finish()
        end
        totem = not lastInstance or attacksImmune[d.attackType] or damagesImmune[d.damageType] or not CheckUnitType(d.target, UNIT_TYPE_MAGIC_IMMUNE)
    end))
    
    t2 = CreateTrigger()
    TriggerRegisterAnyUnitEventBJ(t2, EVENT_PLAYER_UNIT_DAMAGED)
    TriggerAddCondition(t2, Filter(function() 
        local r = GetDamage()
        local d = current
        --print("Second damage event running for " .. GetUnitName(GetTriggerUnit()))
        if prepped                              then prepped = nil
        elseif dreaming or d.prevAmt == 0.00    then return
        elseif totem                            then totem = nil
        else
            afterDamage()
            d               = lastInstance
            current         = d
            lastInstance    = nil
            canKick         = true
        end
        setArmor(true)
        d.userAmt = d.damage
        d.damage = r
        
        if r > 0.00 then
            runEvent(_ARMOR)
            if hasLethal or d.userType < 0 then
                Damage.life = GetUnitLife(d.target) - d.damage
                if Damage.life <= _DEATH_VAL then
                    if hasLethal then
                        runEvent(_LETHAL)
                        
                        d.damage = GetUnitLife(d.target) - Damage.life
                    end
                    if d.userType < 0 and Damage.life <= _DEATH_VAL then
                        SetUnitExploded(d.target, true)
                    end
                end
            end
        end
        if d.damageType ~= DAMAGE_TYPE_UNKNOWN then runEvent(_DAMAGED) end
        SetEventDamage(d.damage)
        eventsRun = true
        if d.damage == 0.00 then finish() end
    end))
    
    --Call to enable recursive damage on your trigger.
    function Damage.inception() userIndex.inceptionTrig = true end
    
    ---add a recursive damage instance
    ---@param d damageInstance
    local function addRecursive(d) 
        if d.damage ~= 0.00 then
            d.recursiveFunc = userIndex
            if kicking and proclusGlobal[d.source] and fischerMorrow[d.target] then
                if not userIndex.inceptionTrig then
                    userIndex.trigFrozen = true
                elseif not userIndex.trigFrozen and userIndex.levelsDeep < sleepLevel then
                    userIndex.levelsDeep = userIndex.levelsDeep + 1
                    userIndex.trigFrozen = userIndex.levelsDeep >= _LIMBO
                end
            end
            recursiveStack[#recursiveStack + 1] = d
            --print("recursiveStack: " .. #recursiveStack .. " levelsDeep: " .. userIndex.levelsDeep .. " sleepLevel: " .. sleepLevel)
        end
    end
    
    t3 = CreateTrigger()
    TriggerRegisterAnyUnitEventBJ(t3, EVENT_PLAYER_UNIT_DAMAGING)
    TriggerAddCondition(t3, Filter(function()
        addRecursive(createFromEvent(true))
        SetEventDamage(0.00)
    end))
    disableT(t3)
    
    ---register a new damage event
    ---@param head damageEvent
    ---@param func function
    ---@param lbs number
    ---@param filt? integer
    ---@param trig? trigger
    ---@return damageEventRegistry
    function Damage.register(head, func, lbs, filt, trig)
        filt = filt or _FILTER_OTHER
        if trig and lastRegistered and lastRegistered.trig and lastRegistered.trig == trig then
            lastRegistered.filters[filt]= true
            return
        end
        
        hasLethal                       = hasLethal or head == _LETHAL
        hasSource                       = hasSource or head == _SOURCE
        
        local id                        = {} ---@type damageEventRegistry
        lastRegistered                  = id
        
        id.filters                      = {}
        if filt == _FILTER_OTHER then 
            id.filters[_FILTER_ATTACK]  = true
            id.filters[_FILTER_MELEE]   = true
            id.filters[_FILTER_OTHER]   = true
            id.filters[_FILTER_RANGED]  = true
            id.filters[_FILTER_SPELL]   = true
            id.filters[_FILTER_CODE]    = true
        elseif filt == _FILTER_ATTACK then
            id.filters[_FILTER_ATTACK]  = true
            id.filters[_FILTER_MELEE]   = true
            id.filters[_FILTER_RANGED]  = true
        else                            
            id.filters[filt]            = true
        end
        id.levelsDeep                   = 0
        id.trig                         = trig
        lbs                             = lbs or 1.00
        id.weight                       = lbs
        id.func                         = func
        
        local insertAt = head
        for node in head:loop() do if node.weight > lbs then insertAt = node; break end end
        insertAt:insert(id)
        
        --print("Registered new event to " .. var)
        return lastRegistered
    end
    ---Remove registered damage event by index
    ---@param index damageEventRegistry
    ---@return boolean removed_yn
    function Damage.remove(index)
        if lastRegistered == index then lastRegistered = nil end
        return index:remove()
    end
    
    Hook.addSimple("TriggerRegisterVariableEvent",
    function(whichTrig, varName, opCode, limitVal)
        local index = ((varName == "udg_DamageModifierEvent" and limitVal < 4)  or varName == "udg_PreDamageEvent")     and _DAMAGING   or
            (varName == "udg_DamageModifierEvent"                               or varName == "udg_ArmorDamageEvent")   and _ARMOR      or
            ((varName == "udg_DamageEvent" and limitVal == 2 or limitVal == 0)  or varName == "udg_ZeroDamageEvent")    and _ZERO       or
            (varName == "udg_DamageEvent"                                       or varName == "udg_OnDamageEvent")      and _DAMAGED    or
            varName == "udg_AfterDamageEvent"                                                                           and _AFTER      or
            varName == "udg_LethalDamageEvent"                                                                          and _LETHAL     or
            (varName == "udg_AOEDamageEvent"                                    or varName == "udg_SourceDamageEvent")  and _SOURCE
        if index then
            local id = Damage.register(index, function() if IsTriggerEnabled(whichTrig) then ConditionalTriggerExecute(whichTrig) end end, limitVal, GetHandleId(opCode), whichTrig)
            if index == _SOURCE then
                id.minAOE = (varName == "udg_AOEDamageEvent" and 1)             or (varName == "udg_SourceDamageEvent" and 0)
            end
            return "skip hook"
        end
    end)
    
    for i = 0, 26 do udg_CONVERTED_DAMAGE_TYPE[i] = ConvertDamageType(i) end
    
    --For filling an array with values from a table.
    ---@param arr table
    ---@param tbl table
    ---@param offset? integer
    local function fillArray(arr, tbl, offset)
        for i, v in ipairs(tbl) do arr[i + (offset or -1)] = v end
    end
    
    --For filling a group of similarly-named variables.
    ---@param prefix string
    ---@param tbl table
    ---@param offset? integer
    local function fillVars(prefix, tbl, offset)
        for i, v in ipairs(tbl) do _G[prefix .. v] = i + (offset or -1) end
    end
    
    local list
    if _USE_GUI then
        udg_DamageTypeDebugStr[0]   = "UNKNOWN"
        udg_DamageTypeDebugStr[4]   = "NORMAL"
        udg_DamageTypeDebugStr[5]   = "ENHANCED"
        udg_DAMAGE_TYPE_UNKNOWN     = 0
        udg_DAMAGE_TYPE_NORMAL      = 4
        udg_DAMAGE_TYPE_ENHANCED    = 5
    end
    damagesImmune[0]            = true
    damagesImmune[4]            = true
    damagesImmune[5]            = true
    fillArray(damagesImmune, {false,  false,    false,      true,     true,     false,    false,   false,   true,   false,   false,   false,  false,     false,        true,          true,          false,          false,        true}, 7)
    if _USE_GUI then
        list =               {"FIRE", "COLD", "LIGHTNING", "POISON", "DISEASE", "DIVINE", "MAGIC", "SONIC", "ACID", "FORCE", "DEATH", "MIND", "PLANT", "DEFENSIVE", "DEMOLITION", "SLOW_POISON", "SPIRIT_LINK", "SHADOW_STRIKE", "UNIVERSAL"}
        fillArray(udg_DamageTypeDebugStr, list, 7)
        fillVars("udg_DAMAGE_TYPE_", list, 7)
    end
    fillArray(attacksImmune, { false,    true,      true,    true,    false,   true,    true})
    if _USE_GUI then
        list               = {"SPELLS", "NORMAL", "PIERCE", "SIEGE", "MAGIC", "CHAOS", "HERO"}
        fillArray(udg_AttackTypeDebugStr, list)
        fillVars("udg_ATTACK_TYPE_", list)
        
        fillArray(udg_WeaponTypeDebugStr, {"NONE", "METAL_LIGHT_CHOP", "METAL_MEDIUM_CHOP", "METAL_HEAVY_CHOP", "METAL_LIGHT_SLICE", "METAL_MEDIUM_SLICE", "METAL_HEAVY_SLICE", "METAL_MEDIUM_BASH", "METAL_HEAVY_BASH", "METAL_MEDIUM_STAB", "METAL_HEAVY_STAB", "WOOD_LIGHT_SLICE", "WOOD_MEDIUM_SLICE", "WOOD_HEAVY_SLICE", "WOOD_LIGHT_BASH", "WOOD_MEDIUM_BASH", "WOOD_HEAVY_BASH", "WOOD_LIGHT_STAB", "WOOD_MEDIUM_STAB", "CLAW_LIGHT_SLICE", "CLAW_MEDIUM_SLICE", "CLAW_HEAVY_SLICE", "AXE_MEDIUM_CHOP", "ROCK_HEAVY_BASH"})
        fillVars("udg_WEAPON_TYPE_",      {"NONE",     "ML_CHOP",           "MM_CHOP",           "MH_CHOP",          "ML_SLICE",           "MM_SLICE",           "MH_SLICE",          "MM_BASH",          "MH_BASH",          "MM_STAB",          "MH_STAB",          "WL_SLICE",          "WM_SLICE",         "WH_SLICE",         "WL_BASH",          "WM_BASH",         "WH_BASH",         "WL_STAB",         "WM_STAB",          "CL_SLICE",          "CM_SLICE",          "CH_SLICE",         "AM_CHOP",         "RH_BASH"})
        
        list = {"LIGHT", "MEDIUM", "HEAVY", "FORTIFIED", "NORMAL", "HERO", "DIVINE", "UNARMORED"}
        fillArray(udg_DefenseTypeDebugStr, list)
        fillVars("udg_DEFENSE_TYPE_", list)
        
        list = {"NONE", "FLESH", "METAL", "WOOD", "ETHEREAL", "STONE"}
        fillArray(udg_ArmorTypeDebugStr, list)
        fillVars("udg_ARMOR_TYPE_", list)
        
        fillVars("udg_UNIT_CLASS_", {"HERO", "DEAD", "STRUCTURE", "FLYING", "GROUND", "ATTACKS_FLYING", "ATTACKS_GROUND", "MELEE", "RANGED", "GIANT", "SUMMONED", "STUNNED", "PLAGUED", "SNARED", "UNDEAD", "MECHANICAL", "PEON", "SAPPER", "TOWNHALL", "ANCIENT", "TAUREN", "POISONED", "POLYMORPHED", "SLEEPING", "RESISTANT", "ETHEREAL", "MAGIC_IMMUNE"})
        
        for i = 0, 6 do udg_CONVERTED_ATTACK_TYPE[i] = ConvertAttackType(i) end
    end
    
    ---Apply damage directly via Damage Engine
    ---@param src unit
    ---@param tgt unit
    ---@param amt real
    ---@param a boolean
    ---@param r boolean
    ---@param at attacktype
    ---@param dt damagetype
    ---@param wt weapontype
    ---@return damageInstance
    function Damage.apply(src, tgt, amt, a, r, at, dt, wt)
        local d ---@type damageInstance
        if dreaming then
            d = create(src, tgt, amt, a, r, at, dt, wt, true)
            addRecursive(d)
        else
            UDT(src, tgt, amt, a, r, at, dt, wt)
            d = current
            finish()
        end
        return d
    end
    ---Deal spell damage using the below simple criteria
    ---@param src unit
    ---@param tgt unit
    ---@param amt real
    ---@param dt damagetype
    ---@return damageInstance
    function Damage.applySpell(src,  tgt,  amt, dt)
        return Damage.apply(src, tgt, amt, nil, nil, nil, dt, nil)
    end
    function Damage.applyAttack(src, tgt, amt, ranged, at, wt)
        return Damage.apply(src, tgt, amt, true, ranged, at, DAMAGE_TYPE_NORMAL, wt)
    end
    
--[[--------------------------------------------------------------------------------------
    The below section defines how GUI interacts with Damage Engine and vice-versa. This is
a breakthrough in coding thanks to the innovation brought forth via Global Variable Remapper.
----------------------------------------------------------------------------------------]]
    
    if _USE_GUI then
        ---Remap damageInstance types of variables (DamageEventSource/Target/Amount/etc)
        ---@param oldVarStr string
        ---@param newVarStr string
        ---@param get? boolean
        ---@param set? boolean
        local function map(oldVarStr, newVarStr, get, set)
            GlobalRemap(oldVarStr, get and function() return current[newVarStr] end, set and function(val) current[newVarStr] = val end)
        end
        map("udg_DamageEventAmount", "damage", true, true)
        map("udg_DamageEventType", "userType", true, true)
        if _USE_ARMOR_MOD then
            map("udg_DamageEventArmorPierced", "armorPierced", true, true)
            map("udg_DamageEventArmorT", "armorType", true, true)
            map("udg_DamageEventDefenseT", "defenseType", true, true)
        end
        map("udg_DamageEventSource", "source", true)
        map("udg_DamageEventTarget", "target", true)
        map("udg_DamageEventPrevAmt", "prevAmt", true)
        map("udg_DamageEventUserAmt", "userAmt", true)
        map("udg_IsDamageAttack", "isAttack", true)
        map("udg_IsDamageCode", "isCode", true)
        map("udg_IsDamageSpell", "isSpell", true)
        if _USE_MELEE_RANGE then 
            map("udg_IsDamageMelee", "isMelee", true)
            map("udg_IsDamageRanged", "isRanged", true)
        end
        GlobalRemap("udg_DamageEventAOE", function() return sourceAOE end)
        GlobalRemap("udg_DamageEventLevel", function() return sourceStacks end)
        GlobalRemap("udg_AOEDamageSource", function() return originalSource end)
        GlobalRemap("udg_EnhancedDamageTarget", function() return originalTarget end)
        
        GlobalRemap("udg_LethalDamageHP", function() return Damage.life end, function(var) Damage.life = var end)
        
        GlobalRemap("udg_DamageEventAttackT", function() return GetHandleId(current.attackType) end, function(var) current.attackType  = ConvertAttackType(var) end)
        GlobalRemap("udg_DamageEventDamageT", function() return GetHandleId(current.damageType) end, function(var) current.damageType  = ConvertDamageType(var) end)
        GlobalRemap("udg_DamageEventWeaponT", function() return GetHandleId(current.weaponType) end, function(var) current.weaponType  = ConvertWeaponType(var) end)
        
        --New GUI vars unique to version 2.0: boolean DamageEngineEnabled, boolean DamageFilterConfigured, real DamageEventUserAmt
        
        GlobalRemap("udg_DamageEngineEnabled", nil, function(val) Damage.enable(val) end)
        GlobalRemap("udg_NextDamageType", nil, function(val) Damage.nextType = val end)
        GlobalRemap("udg_RemoveDamageEvent", nil, function() Damage.remove(userIndex) end)
        GlobalRemap("udg_DamageFilterSourceC", nil, function(val) current.sourceClass = ConvertUnitType(val) end)
        GlobalRemap("udg_DamageFilterTargetC", nil, function(val) current.targetClass = ConvertUnitType(val) end)
        
        ---Remap damageEventRegistry type variables (DamageFilterSource/Target/MinAmount/etc)
        ---@param oldVarStr string
        ---@param newVarStr string
        local function configVar(oldVarStr, newVarStr)
            GlobalRemap(oldVarStr, nil,
            function(val)
                userIndex[newVarStr] = val
            end)
        end
        configVar("udg_DamageFilterSource", "source")
        configVar("udg_DamageFilterTarget", "target")
        configVar("udg_DamageFilterSourceT", "sourceType")
        configVar("udg_DamageFilterTargetT", "targetType")
        configVar("udg_DamageFilterType", "userType")
        configVar("udg_DamageFilterAttackT", "attackType")
        configVar("udg_DamageFilterDamageT", "damageType")
        configVar("udg_DamageFilterSourceI", "sourceItem")
        configVar("udg_DamageFilterTargetI", "targetItem")
        configVar("udg_DamageFilterMinAmount", "damageMin")
        configVar("udg_DamageFilterSourceA", "sourceBuff")
        configVar("udg_DamageFilterSourceB", "sourceBuff")
        configVar("udg_DamageFilterTargetA", "targetBuff")
        configVar("udg_DamageFilterTargetB", "targetBuff")
        configVar("udg_DamageFilterFailChance", "failChance")
        
        GlobalRemap("udg_DamageFilterRunChance", nil,
        function(val)
            userIndex.failChance = 1.00 - val
        end)
        GlobalRemap("udg_DamageFilterConfigured",
        function()
            local c = userIndex.configured
            if not c then
                userIndex.configured = 0
                return false
            elseif c == 0 then
                userIndex.configured = 1
                return checkConfig()
            end
            return true
        end)
        
--[[--------------------------------------------------------------------------------------
    Set references to readonly variables for public use.
----------------------------------------------------------------------------------------]]
        
        setmetatable(Damage, {
            __index =
            function(tbl, key)
                local index = readonly[key]
                if index then return index() end
                return rawget(tbl, key)
            end,
            
            __newindex =
            function(tbl, key, val)
                if readonly[key] then return end
                rawset(tbl, key, val)
            end
        })
    end
end)
end
0: 1
60000: 0
66667: 0
70000: 0
76667: 0
83333: 0
146667: 0
153333: 0
160000: 0
223333: 0
230000: 0
236667: 0
333333: 0
Heal Events
Events
Conditions
Actions
-------- This trigger needs to exist due to a bug in World Editor --------
-------- It happens when pasting triggers with real variable events prior to those reals being created in Variable Editor. --------
Set Variable Set UnitIndexEvent = DeathEvent
Set Variable Set DamageEvent = AfterDamageEvent
- A unit's maximum regeneration should never exceed HEAL_THRESHOLD/HEAL_CHECK_INTERVAL
- To allow for higher regen, you'll need to increase HEAL_THRESHOLD or decrease HEAL_CHECK_INTERVAL
- If a unit exceeds REGEN_THRESHOLD regen per REGEN_EVENT_INTERVAL seconds, the event HealEvent Equal to 0.50 will fire every REGEN_EVENT_INTERVAL seconds until the regen slows.
- The system will try to ignore hero strength-based regeneration. Adjust the REGEN_STRENGTH_VALUE to the amount in your gameplay constants. WC3 default is 0.05.
- HERO_BASE_REGEN is the max base regen of a hero. Undead heros regen the fastest while on blight at 2.00HP/sec.
Heal Configuration
Events
Map initialization
Conditions
Actions
-------- Configurable --------
Set Variable Set HEAL_THRESHOLD = "5.00"
Set Variable Set HEAL_CHECK_INTERVAL = "0.05"
-------- With these current values, a unit with 100 HP regen/sec. could constantly fire off the heal event. --------
-------- --------
Countdown Timer - Start heal_timer as a Repeating timer that will expire in HEAL_CHECK_INTERVAL seconds
-------- --------
Set Variable Set REGEN_STRENGTH_VALUE = "0.05"
Set Variable Set REGEN_THRESHOLD = "5.00"
Set Variable Set REGEN_EVENT_INTERVAL = "1.00"
This trigger automatically runs events when units are healed. It cannot detect the source of the healing on its own.
Heal Check Loop
Events
Time - heal_timer expires
Conditions
Actions
Set Variable Set heal_exitwhen = (heal_count - 1)
For each (Integer heal_integer ) from 0 to heal_exitwhen , do (Actions)
Loop - Actions
Set Variable Set heal_integer = heal_indices[heal_integer]
-------- --------
Set Variable Set heal_target = UDexUnits[heal_integer]
Set Variable Set heal_life = (Life of heal_target)
Set Variable Set heal_diff = (heal_life - heal_lastLife[heal_integer])
Set Variable Set heal_lastLife[heal_integer] = heal_life
-------- --------
Set Variable Set heal_amount = (heal_diff - (Max(0.00, heal_regen[heal_integer])))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_amount Greater than or equal to HEAL_THRESHOLD
Then - Actions
Set Variable Set HealEvent = "1.00"
Set Variable Set HealEvent = "0.00"
Else - Actions
Set Variable Set heal_regen[heal_integer] = ((heal_regen[heal_integer] + heal_diff) x 0.50)
-------- The next section was added in version 1.1.0.0 to introduce regeneration events. --------
Set Variable Set regen_buildup[heal_integer] = (regen_buildup[heal_integer] + heal_diff)
Set Variable Set regen_timeleft[heal_integer] = (regen_timeleft[heal_integer] - HEAL_CHECK_INTERVAL)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
regen_timeleft[heal_integer] Less than or equal to 0.00
Then - Actions
-------- Reset the regen event clock --------
Set Variable Set regen_timeleft[heal_integer] = REGEN_EVENT_INTERVAL
-------- Analyze the amount regenerated in the past REGEN_CHECK_INTERVAL --------
Set Variable Set heal_amount = regen_buildup[heal_integer]
Set Variable Set regen_buildup[heal_integer] = "0.00"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(heal_target is A Hero) Equal to True
Then - Actions
-------- Don't spam the event due to regeneration caused by hero attributes --------
Set Variable Set heal_diff = (heal_amount - ((Real((Strength of heal_target (Include bonuses)))) x REGEN_STRENGTH_VALUE))
Else - Actions
Set Variable Set heal_diff = heal_amount
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_diff Greater than or equal to REGEN_THRESHOLD
Then - Actions
Set Variable Set HealEvent = "0.50"
Set Variable Set HealEvent = "0.00"
Else - Actions
Else - Actions
-------- --------
Set Variable Set heal_integer = heal_indexRef[heal_integer]
Add a unit to the system when it's created or is ressurrected/finishes reincarnating.

I have disallowed mechanical units, structures and locust units from being registered, though you can enable any of those if you want.
Heal Add Unit
Events
Game - UnitIndexEvent becomes Equal to 1.00
Game - DeathEvent becomes Equal to 2.00
Conditions
heal_inSys[UDex] Equal to False
(UDexUnits[UDex] is Mechanical) Equal to False
(Default movement speed of UDexUnits[UDex]) Not equal to 0.00
Actions
Custom script: if GetUnitAbilityLevel(udg_UDexUnits[udg_UDex], 'Aloc') > 0 then
Skip remaining actions
Custom script: end
Set Variable Set heal_inSys[UDex] = "true"
Set Variable Set heal_indices[heal_count] = UDex
Set Variable Set heal_indexRef[UDex] = heal_count
Set Variable Set heal_lastLife[UDex] = (Life of UDexUnits[UDex])
Set Variable Set regen_timeleft[UDex] = REGEN_EVENT_INTERVAL
Set Variable Set heal_count = (heal_count + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_count Equal to 1
Then - Actions
Trigger - Turn on Heal_Check_Loop <gen>
Else - Actions
Remove a unit when it starts reincarnating, dies or is removed from the game
Heal Remove Unit
Events
Game - DeathEvent becomes Equal to 0.50
Game - DeathEvent becomes Equal to 1.00
Game - DeathEvent becomes Equal to 3.00
Game - UnitIndexEvent becomes Equal to 2.00
Conditions
heal_inSys[UDex] Equal to True
Actions
Set Variable Set heal_inSys[UDex] = "false"
Set Variable Set heal_count = (heal_count - 1)
Set Variable Set heal_indices[heal_indexRef[UDex]] = heal_indices[heal_count]
Set Variable Set heal_indexRef[heal_indices[heal_count]] = heal_indexRef[UDex]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_count Equal to 0
Then - Actions
Trigger - Turn off Heal_Check_Loop <gen>
Else - Actions
Heal Unit is used to manually trigger heals.
The other 2 triggers are only important if you're using the optional requirement, DamageEngine.
Run this trigger, ignoring conditions, to trigger a heal. There are 3 variables to consider when healing a unit:

NextHealTarget = the unit being healed
NextHealSource = optional source of healing
NextHealAmount = how much the unit is to be healed

Alternatively, if you simply want to check if a unit has a pending heal that needs its event to fire, simply set NextHealTarget to the unit you want to check, set the heal_check boolean variable to True, then run this trigger.
Heal Unit
Events
Conditions
Actions
Custom script: local id = udg_heal_integer
Custom script: local amount = udg_heal_amount
Custom script: local source
Set Variable Set heal_target = NextHealTarget
Set Variable Set heal_integer = (Custom value of heal_target)
Set Variable Set heal_life = (Life of heal_target)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_check Equal to True
Then - Actions
Set Variable Set heal_check = "false"
Set Variable Set heal_amount = ((heal_life - ((heal_regen[heal_integer] x (Elapsed time for heal_timer)) / HEAL_CHECK_INTERVAL)) - heal_lastLife[heal_integer])
-------- A potential heal still has to exceed HEAL_THRESHOLD --------
Set Variable Set heal_diff = HEAL_THRESHOLD
Else - Actions
Unit - Set life of heal_target to ((Life of heal_target) + NextHealAmount)
Set Variable Set heal_amount = ((Life of heal_target) - heal_life)
-------- If the heal ended up being less than 1.00, ignore the event --------
Set Variable Set heal_diff = "1.00"
-------- Don't run the event if there was little to nothing to heal --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
heal_amount Greater than or equal to heal_diff
Then - Actions
-------- Don't let the event for this heal run more than once --------
Set Variable Set heal_lastLife[heal_integer] = (heal_lastLife[heal_integer] + heal_amount)
-------- Set the source, if one was assigned --------
Custom script: source = udg_heal_source
Set Variable Set heal_source = NextHealSource
-------- Fire the event --------
Set Variable Set HealEvent = "0.00"
Set Variable Set HealEvent = "1.00"
Set Variable Set HealEvent = "0.00"
-------- Reset the source, if a previous one was assigned --------
Custom script: udg_heal_source = source
Custom script: source = null
Else - Actions
-------- Reset variables to their previous states --------
Custom script: udg_heal_amount = amount
Custom script: udg_heal_integer = id
Set Variable Set heal_target = UDexUnits[heal_integer]
Set Variable Set NextHealAmount = "0.00"
Set Variable Set NextHealSource = No unit
Set Variable Set NextHealTarget = No unit
When a unit takes damage, check if it has any unnaccounted-for pending heals.
Heal Adjust On Damage
Events
Game - DamageEvent becomes Equal to 1.00
Conditions
Actions
Set Variable Set NextHealTarget = DamageEventTarget
Set Variable Set heal_check = "true"
Trigger - Run Heal_Unit <gen> (ignoring conditions)
When the damage has been dealt, update the unit's life in the system so that if it is healed between now and its next heal the event will fire properly.
Heal Adjust After Damage
Events
Game - AfterDamageEvent becomes Equal to 1.00
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DamageEventAmount Greater than 0.00
Then - Actions
Set Variable Set TempInteger = (Custom value of DamageEventTarget)
Set Variable Set heal_lastLife[TempInteger] = ((Life of DamageEventTarget) - (heal_regen[TempInteger] x ((Elapsed time for heal_timer) / HEAL_CHECK_INTERVAL)))
Else - Actions
Set Variable Set NextHealTarget = DamageEventTarget
Set Variable Set heal_check = "true"
Trigger - Run Heal_Unit <gen> (ignoring conditions)
On Heal
Events
Game - HealEvent becomes Equal to 1.00
Game - HealEvent becomes Equal to 0.50
Conditions
(heal_target has buff Shadow Strike) Equal to True
Actions
Set Variable Set heal_amount = (heal_amount x 0.60)
Default melee game initialization for all players
FadeSystemInit
Events
Map initialization
Conditions
Actions
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
-------- Add this to your map initialization --------
-------- It simply initializes the hashtable for the system --------
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
Hashtable - Create a hashtable
Set Variable Set FadeSystemHash = (Last created hashtable)
FSMainLoop
Events
Time - Every 0.05 seconds of game time
Conditions
Actions
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
-------- This is the main loop. It's pretty basic as long as you know hashtables. --------
-------- There's no need to change anything here except the timer (if you wanna make it tick faster maybe) --------
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
Unit Group - Pick every unit in FadeSystemGroup and do (Actions)
Loop - Actions
Set Variable Set TempUnit = (Picked unit)
Custom script: udg_FadeUnitKey = GetHandleId(udg_TempUnit)
Set Variable Set TempBool = (Load FadeUnitKey of (Key FadeIn.) from FadeSystemHash.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempBool Equal to True
Then - Actions
Hashtable - Save ((Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) - (Load FadeUnitKey of (Key FadeSpeed.) from FadeSystemHash.)) as FadeUnitKey of (Key FadeStart.) in FadeSystemHash .
Else - Actions
Hashtable - Save ((Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) + (Load FadeUnitKey of (Key FadeSpeed.) from FadeSystemHash.)) as FadeUnitKey of (Key FadeStart.) in FadeSystemHash .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load FadeUnitKey of (Key FadeTinted.) from FadeSystemHash.) Equal to True
Then - Actions
Animation - Change TempUnit 's vertex coloring to ( (Load FadeUnitKey of (Key FadeRed.) from FadeSystemHash.) %, (Load FadeUnitKey of (Key FadeGreen.) from FadeSystemHash.) %, (Load FadeUnitKey of (Key FadeBlue.) from FadeSystemHash.) %) with (Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) % transparency
Else - Actions
Animation - Change TempUnit 's vertex coloring to ( 100 %, 100 %, 100 %) with (Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) % transparency
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((TempBool Equal to True) and ((Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) Less than or equal to (Load FadeUnitKey of (Key FadeEnd.) from FadeSystemHash.))) or ((TempBool Equal to False) and ((Load FadeUnitKey of (Key FadeStart.) from FadeSystemHash.) Greater than or equal to (Load FadeUnitKey of (Key FadeEnd.) from FadeSystemHash.)))
Then - Actions
Unit Group - Remove TempUnit from FadeSystemGroup .
Hashtable - Clear all child hashtables of child FadeUnitKey in FadeSystemHash .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempBool Equal to True
Then - Actions
Unit - Remove TempUnit from the game
Hashtable - Clear all child hashtables of child FadeUnitKey in FadeSystemHash .
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in FadeSystemGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
FSAddUnit
Events
Conditions
Actions
Custom script: udg_FadeUnitKey = GetHandleId(udg_FSUnit)
Unit Group - Add FSUnit to FadeSystemGroup
Animation - Change FSUnit 's vertex coloring to ( FSRed %, FSGreen %, FSBlue %) with FSStart % transparency
Hashtable - Save FSStart as FadeUnitKey of (Key FadeStart.) in FadeSystemHash .
Hashtable - Save FSEnd as FadeUnitKey of (Key FadeEnd.) in FadeSystemHash .
Hashtable - Save FSSpeed as FadeUnitKey of (Key FadeSpeed.) in FadeSystemHash .
Hashtable - Save FSFadeIn as FadeUnitKey of (Key FadeIn.) in FadeSystemHash .
Hashtable - Save FSTinted as FadeUnitKey of (Key FadeTinted.) in FadeSystemHash .
Hashtable - Save FSRed as FadeUnitKey of (Key FadeRed.) in FadeSystemHash .
Hashtable - Save FSGreen as FadeUnitKey of (Key FadeGreen.) in FadeSystemHash .
Hashtable - Save FSBlue as FadeUnitKey of (Key FadeBlue.) in FadeSystemHash .
Trigger - Turn on FSMainLoop <gen>
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
-------- Clearing the variables --------
-------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
Set Variable Set FSUnit = No unit
Set Variable Set FSStart = "0.00"
Set Variable Set FSEnd = "0.00"
Set Variable Set FSSpeed = "0.00"
Set Variable Set FSFadeIn = "false"
Set Variable Set FSTinted = "false"
Set Variable Set FSRed = "0.00"
Set Variable Set FSGreen = "0.00"
Set Variable Set FSBlue = "0.00"
AddUnitTemplate
Events
Conditions
Actions
Set Variable Set FSUnit = (Triggering unit)
Set Variable Set FSStartOpacity = "0.00"
Set Variable Set FSStart = "0.00"
Set Variable Set FSEnd = "100.00"
Set Variable Set FSSpeed = "5.00"
Set Variable Set FSFadeIn = "false"
Set Variable Set FSTinted = "false"
Set Variable Set FSRed = "0.00"
Set Variable Set FSGreen = "0.00"
Set Variable Set FSBlue = "0.00"
Trigger - Run FSAddUnit <gen> (ignoring conditions)
Seal Scroll
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set UnitGroup = (Units within 250.00 of Point.)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is A structure) Equal to False
((Picked unit) is Magic Immune) Equal to False
((Picked unit) is Mechanical) Equal to False
((Picked unit) is A flying unit) Equal to False
Then - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Ensnare to (Last created unit)
Unit - Order (Last created unit) to Orc Raider - Ensnare . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Else - Actions
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
Erudite Aura
Events
Unit - A unit Dies
Conditions
(Owner of (Triggering unit)) Not equal to Neutral Passive
(Unit-type of (Triggering unit)) Not equal to Footman
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) has buff Brilliance Aura) Equal to True) or ((((Matching unit) has buff Brilliance Aura) Equal to True) or (((Matching unit) has buff Brilliance Aura) Equal to True))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Owner of (Killing unit)) Equal to (Owner of (Picked unit))
Then - Actions
Set Variable Set Exp[0] = (Load 0 of (Key (Picked unit).) from ExpTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Exp[0] Equal to 0
Then - Actions
Hashtable - Save (Hero experience of (Picked unit)) as 0 of (Key (Picked unit).) in ExpTable .
Else - Actions
Hashtable - Save (Hero experience of (Picked unit)) as 1 of (Key (Picked unit).) in ExpTable .
Set Variable Set Exp[1] = (Load 1 of (Key (Picked unit).) from ExpTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) has buff Brilliance Aura) Equal to True
Then - Actions
Set Variable Set Exp[2] = (Integer(((Real((Exp[1] - Exp[0]))) x 0.20)))
Hero - Add Exp[2] experience to (Picked unit) , Show level-up graphics
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) has buff Brilliance Aura) Equal to True
Then - Actions
Set Variable Set Exp[2] = (Integer(((Real((Exp[1] - Exp[0]))) x 0.35)))
Hero - Add Exp[2] experience to (Picked unit) , Show level-up graphics
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) has buff Brilliance Aura) Equal to True
Then - Actions
Set Variable Set Exp[2] = (Integer(((Real((Exp[1] - Exp[0]))) x 0.50)))
Hero - Add Exp[2] experience to (Picked unit) , Show level-up graphics
Else - Actions
Hashtable - Save (Hero experience of (Picked unit)) as 0 of (Key (Picked unit).) in ExpTable .
Else - Actions
Do nothing
Custom script: DestroyGroup (udg_UnitGroup)
Chronicles Choose
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Player - Enable Spell Book for (Owner of (Triggering unit))
Unit - Set level of Holy Light for (Triggering unit) to 3
Unit - Set level of Divine Shield for (Triggering unit) to 3
Unit - Set level of Banish for (Triggering unit) to 3
Unit - Set level of Flame Strike for (Triggering unit) to 3
Unit - Set level of Siphon Mana for (Triggering unit) to 3
Unit - Set level of Thunder Clap for (Triggering unit) to 3
Unit - Set level of Storm Bolt for (Triggering unit) to 3
Unit - Set level of Summon Water Elemental for (Triggering unit) to 3
Unit - Set level of Blizzard for (Triggering unit) to 3
Player - Disable Spell Book for (Owner of (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Player - Enable Spell Book for (Owner of (Triggering unit))
Unit - Set level of Shadow Strike for (Triggering unit) to 3
Unit - Set level of Blink for (Triggering unit) to 3
Unit - Set level of Fan of Knives for (Triggering unit) to 3
Unit - Set level of Entangling Roots for (Triggering unit) to 3
Unit - Set level of Force of Nature for (Triggering unit) to 3
Unit - Set level of Immolation for (Triggering unit) to 3
Unit - Set level of Mana Burn for (Triggering unit) to 3
Unit - Set level of Scout for (Triggering unit) to 3
Player - Disable Spell Book for (Owner of (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Player - Enable Spell Book for (Owner of (Triggering unit))
Unit - Set level of Healing Wave for (Triggering unit) to 3
Unit - Set level of Serpent Ward for (Triggering unit) to 3
Unit - Set level of Hex for (Triggering unit) to 3
Unit - Set level of War Stomp for (Triggering unit) to 3
Unit - Set level of Shockwave for (Triggering unit) to 3
Unit - Set level of Wind Walk for (Triggering unit) to 3
Unit - Set level of Mirror Image for (Triggering unit) to 3
Unit - Set level of Chain Lightning for (Triggering unit) to 3
Unit - Set level of Feral Spirit for (Triggering unit) to 3
Unit - Set level of Far Sight for (Triggering unit) to 3
Player - Disable Spell Book for (Owner of (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Player - Enable Spell Book for (Owner of (Triggering unit))
Unit - Add Spell Book to (Triggering unit)
Unit - Set level of Death Coil for (Triggering unit) to 3
Unit - Set level of Dark Ritual for (Triggering unit) to 3
Unit - Set level of Death Pact for (Triggering unit) to 3
Unit - Set level of Frost Nova for (Triggering unit) to 3
Unit - Set level of Frost Armor for (Triggering unit) to 3
Unit - Set level of Impale for (Triggering unit) to 3
Unit - Set level of Carrion Swarm for (Triggering unit) to 3
Unit - Set level of Carrion Beetles for (Triggering unit) to 3
Unit - Set level of Sleep for (Triggering unit) to 3
Player - Disable Spell Book for (Owner of (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Player - Enable Spell Book for (Owner of (Triggering unit))
Unit - Add Spell Book to (Triggering unit)
Unit - Set level of Battle Roar for (Triggering unit) to 3
Unit - Set level of Silence for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Parasite for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Unit - Set level of Channel for (Triggering unit) to 3
Player - Disable Spell Book for (Owner of (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Else - Actions
Tomb of Silence
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Tranquility
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Cloud to (Last created unit)
Unit - Order (Last created unit) to Human Dragonhawk Rider - Cloud . Point
Unit - Add a (0.00 + (10.00 x (Real((Level of Tranquility for (Triggering unit)))))) second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Tomb of Silence End
Events
Unit - A unit Stops casting an ability
Unit - A unit Finishes casting an ability
Conditions
(Ability being cast) Equal to Tranquility
Actions
Unit - Remove Tranquility (Effect) buff from (Triggering unit)
Unit - Add a 0.01 second Generic expiration timer to (Load 0 of (Key (Triggering unit).) in NerubianHashtable.)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in NerubianHashtable .
Untitled Trigger 008
Events
Unit - A unit Starts the effect of an ability
Conditions
(Unit-type of (Triggering unit)) Equal to Blood Mage
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Holy Light
(Ability being cast) Equal to Divine Shield
(Ability being cast) Equal to Banish
(Ability being cast) Equal to Flame Strike
(Ability being cast) Equal to Siphon Mana
(Ability being cast) Equal to Thunder Clap
(Ability being cast) Equal to Storm Bolt
(Ability being cast) Equal to Summon Water Elemental
(Ability being cast) Equal to Blizzard
(Ability being cast) Equal to Shadow Strike
(Ability being cast) Equal to Blink
(Ability being cast) Equal to Fan of Knives
(Ability being cast) Equal to Entangling Roots
(Ability being cast) Equal to Force of Nature
(Ability being cast) Equal to Immolation
(Ability being cast) Equal to Mana Burn
(Ability being cast) Equal to Scout
(Ability being cast) Equal to Healing Wave
(Ability being cast) Equal to Serpent Ward
(Ability being cast) Equal to Hex
(Ability being cast) Equal to War Stomp
(Ability being cast) Equal to Shockwave
(Ability being cast) Equal to Wind Walk
(Ability being cast) Equal to Mirror Image
(Ability being cast) Equal to Chain Lightning
(Ability being cast) Equal to Feral Spirit
(Ability being cast) Equal to Far Sight
(Ability being cast) Equal to Death Coil
(Ability being cast) Equal to Dark Ritual
(Ability being cast) Equal to Death Pact
(Ability being cast) Equal to Frost Nova
(Ability being cast) Equal to Frost Armor
(Ability being cast) Equal to Impale
(Ability being cast) Equal to Carrion Swarm
(Ability being cast) Equal to Carrion Beetles
(Ability being cast) Equal to Sleep
(Ability being cast) Equal to Battle Roar
(Ability being cast) Equal to Silence
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Parasite
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Spell Book
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Level of Spell Book for (Triggering unit)) Equal to 0
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Set Variable Set Archives_Type = "A00C"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Set Variable Set Archives_Type = "A00H"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Set Variable Set Archives_Type = "A00F"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Set Variable Set Archives_Type = "A00G"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Set Variable Set Archives_Type = "A08B"
Else - Actions
Set Variable Set DamageEventAmount = (Cooldown of (Ability being cast), Level: 2.)
Wait 0.00 seconds
Unit - For Unit (Triggering unit) , end cooldown of ability Archives_Type
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Resilience
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Battle Roar
Actions
-------- System Setup --------
-------- -------------------- --------
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set UnitGroup = (Units within 1000.00 of Point matching ((((Matching unit) is A structure) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of (Triggering unit)).) Equal to True))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Sentry Ward
(Unit-type of (Picked unit)) Equal to Sentry Ward
(Unit-type of (Picked unit)) Equal to Scout Tower
(Unit-type of (Picked unit)) Equal to Guard Tower
(Unit-type of (Picked unit)) Equal to Cannon Tower
(Unit-type of (Picked unit)) Equal to Arcane Tower
(Unit-type of (Picked unit)) Equal to Farm
(Unit-type of (Picked unit)) Equal to Watch Tower
(Unit-type of (Picked unit)) Equal to Burrow
(Unit-type of (Picked unit)) Equal to Moon Well
Then - Actions
Set Variable Set BS_Buff_Ability[BS_Index2] = "A04P"
Else - Actions
Set Variable Set BS_Buff_Ability[BS_Index2] = "A04M"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A04L"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B00F"
Set Variable Set BS_Buff_Duration[BS_Index2] = "35.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
-------- -------------------- --------
-------- Finish Setup --------
Queens Duty
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Death Knight
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to True
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DamageEventAmount Greater than (Life of DamageEventTarget)
Then - Actions
Set Variable Set Point = (Position of DamageEventTarget)
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Orc\OrcLargeDeathExplode\OrcLargeDeathExplode.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\Gross3.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\Climax Orange.mdx
Special Effect - Destroy (Last created special effect)
Unit - Make DamageEventTarget Explode on death
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing 25.00 damage of attack type Normal and damage type Normal
Unit - Create 1 . Sentry Ward for (Owner of DamageEventSource) at Point facing Default building facing degrees
Unit - Remove Rally from (Last created unit)
Unit - Move (Last created unit) instantly to Point
Wait 0.00 seconds
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Else - Actions
Spider Attack
Events
Unit - A unit Is issued an order with no target
Conditions
(Unit-type of (Triggering unit)) Equal to Blood Mage
Or - Any (Conditions) are true
Conditions
(Issued order) Equal to (Order(parasiteon))
(Issued order) Equal to (Order(parasiteoff))
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Issued order) Equal to (Order(parasiteon))
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Issued order) Equal to (Order(parasiteoff))
Then - Actions
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Else - Actions
Untitled Trigger 020
Events
Unit - A unit Is attacked
Conditions
(Unit-type of (Attacking unit)) Equal to Blood Mage
(Level of Parasite for (Attacking unit)) Not equal to 0
(Level of Item Damage Bonus (+1) for (Attacking unit)) Not equal to 0
Actions
Unit - Order (Attacking unit) to Neutral - Parasite . (Attacked unit)
Broodmother
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup_2 = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Immolation) Equal to True)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup_2) Equal to 0
Then - Actions
Do nothing
Else - Actions
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of Unit)
Set Variable Set UnitGroup = (Units within 500.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is alive) Equal to True)) and ((((((Matching unit) is A structure) Equal to False) and (((Unit-type of (Matching unit)) Not equal to Sentry Ward) and (((Unit-type of (Matching unit)) Not equal to Sentry Ward) and ((Unit-type of (Matching unit)) Not equal to Goblin Land Mine)))) and ((Life of (Matching unit)) Less than (Max life of (Matching unit)))) and ((((Matching unit) is Mechanical) Equal to False) and ((((Matching unit) is hidden) Equal to False) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True))))).)
Set Variable Set BroodCareHealTarget = No unit
Set Variable Set BroodCareLifeMeter = "100.00"
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Percentage life of (Picked unit)) Less than BroodCareLifeMeter
Then - Actions
Set Variable Set BroodCareLifeMeter = (Percentage life of (Picked unit))
Set Variable Set BroodCareHealTarget = (Picked unit)
Else - Actions
Do nothing
Unit - Set life of BroodCareHealTarget to ((Life of BroodCareHealTarget) + (10.00 x (Real((Level of Immolation for Unit)))))
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of BroodCareHealTarget using Abilities\Spells\Undead\VampiricAura\VampiricAuraTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of BroodCareHealTarget using Abilities\Spells\Other\Cleave\CleaveDamageTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of BroodCareHealTarget using Abilities\Spells\Other\AcidBomb\BottleImpact.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of BroodCareHealTarget using Abilities\Weapons\KeeperGroveMissile\KeeperGroveMissile.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set BroodCareHealTarget = No unit
Custom script: DestroyGroup (udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup_2)
Life for the Queen
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(DamageEventTarget is an illusion) Equal to False
(Unit-type of DamageEventTarget) Equal to Death Knight
(Level of Berserk for DamageEventTarget) Not equal to 0
(DamageEventTarget is an illusion) Equal to False
DamageEventAmount Not equal to 0.00
DamageEventAmount Greater than 5.00
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Matching unit) Equal to DamageEventTarget))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) in LifeForQueenTable.) Not equal to No unit
((Load 0 of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
(Level of Devotion Aura for (Load 0 of (Key (Picked unit).) in LifeForQueenTable.)) Not equal to 0
Then - Actions
Unit - Set life of (Load 0 of (Key (Picked unit).) in LifeForQueenTable.) to ((Life of (Load 0 of (Key (Picked unit).) in LifeForQueenTable.)) - (DamageEventAmount x 0.40))
Set Variable Set DamageEventAmount = (DamageEventAmount x 0.60)
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup)
Life for the Queen 2
Events
Unit - A unit Learns a skill
Conditions
((Triggering unit) is an illusion) Equal to False
(Learned Hero Skill) Equal to Berserk
(Load 1 of (Key (Triggering unit).) from LifeForQueenTable.) Equal to 0
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Triggering unit)) Equal to 1
Then - Actions
Set Variable Set Point = ((Position of (Triggering unit)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Triggering unit)) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = ((Position of (Triggering unit)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in LifeForQueenTable .
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Triggering unit)) Equal to 3
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) from the game
Set Variable Set Point = ((Position of (Triggering unit)) offset by 170.00 towards (Random angle) degrees.)
Custom script: RemoveLocation(udg_Point)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in LifeForQueenTable .
Else - Actions
Else - Actions
Untitled Trigger 018
Events
Unit - A unit Finishes reviving
Conditions
((Triggering unit) is an illusion) Equal to False
(Level of Berserk for (Reviving Hero)) Not equal to 0
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.) is alive) Equal to False
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Reviving Hero)) Equal to 1
Then - Actions
Set Variable Set Point = ((Position of (Reviving Hero)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Reviving Hero)) at Point facing (Facing of (Reviving Hero)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Reviving Hero)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Reviving Hero) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Reviving Hero).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Reviving Hero)) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Else - Actions
Set Variable Set Point = ((Position of (Reviving Hero)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Reviving Hero)) at Point facing (Facing of (Reviving Hero)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Reviving Hero)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Reviving Hero) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Reviving Hero).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Reviving Hero)) Equal to 3
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Reviving Hero).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Else - Actions
Set Variable Set Point = ((Position of (Reviving Hero)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Reviving Hero)) at Point facing (Facing of (Reviving Hero)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Reviving Hero)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Reviving Hero) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Reviving Hero).) in LifeForQueenTable .
Else - Actions
Else - Actions
Royal Guard Dies
Events
Unit - A unit Dies
Conditions
((Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) is alive) Equal to True
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Carrion Beetle (Level 1)
(Unit-type of (Triggering unit)) Equal to Carrion Beetle (Level 1)
(Unit-type of (Triggering unit)) Equal to Carrion Beetle (Level 1)
Actions
Hashtable - Save 40.00 as 1 of (Key (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.).) in LifeForQueenTable .
Unit Group - Add (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) to GuardianCooldownGroup
Trigger - Turn on Cooldpwn_Life_for_the_QUeen <gen>
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Triggering unit) from the game
Custom script: RemoveLocation(udg_Point)
Royal Guard Dies Copy
Events
Unit - A unit Dies
Conditions
((Triggering unit) is an illusion) Equal to False
(Unit-type of (Triggering unit)) Equal to Death Knight
Actions
Unit Group - Remove (Triggering unit) from GuardianCooldownGroup .
Unit - For Unit (Triggering unit) , end cooldown of ability Berserk
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Cooldpwn Life for the QUeen
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in GuardianCooldownGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) from LifeForQueenTable.) Not equal to 0.00
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from LifeForQueenTable.) - 0.25) as 1 of (Key (Picked unit).) in LifeForQueenTable .
Else - Actions
Unit Group - Remove (Picked unit) from GuardianCooldownGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Picked unit)) Equal to 1
Then - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Picked unit)) at Point facing (Facing of (Picked unit)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Picked unit)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Picked unit).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Picked unit)) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Picked unit).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Picked unit).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Else - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Picked unit)) at Point facing (Facing of (Picked unit)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Picked unit)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Picked unit).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Berserk for (Picked unit)) Equal to 3
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Picked unit).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Picked unit).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Else - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 170.00 towards (Random angle) degrees.)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Picked unit)) at Point facing (Facing of (Picked unit)) degrees
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Follow . (Picked unit)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in LifeForQueenTable .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Picked unit).) in LifeForQueenTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in GuardianCooldownGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Life for the Queen UnLearn
Events
Unit - A unit Uses an item
Conditions
((Triggering unit) is an illusion) Equal to False
(Item-type of (Item being manipulated)) Equal to Tome of Retraining
(Unit-type of (Triggering unit)) Equal to Death Knight
Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.))
Special Effect - Create a special effect at Point using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.) from the game
Custom script: RemoveLocation(udg_Point)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in LifeForQueenTable .
Untitled Trigger 014
Events
Unit - A unit enters (Playable map area)
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Unit - Remove Rally from (Triggering unit)
Brood Aura Setup
Events
Map initialization
Conditions
Actions
Set Variable Set Broodaura_HP_Bonus[1] = "A0BE"
Set Variable Set Broodaura_HP_Bonus[2] = "A0BF"
Set Variable Set Broodaura_HP_Bonus[3] = "A0BG"
Set Variable Set Ambush_unit_preset[1] = "u00O"
Set Variable Set Ambush_unit_preset[2] = "u00P"
Set Variable Set Ambush_unit_preset[3] = "u00Q"
Brood Aura
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Spell Damage Reduction for (Matching unit)) Not equal to 0)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Unholy Aura) Equal to False))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set Unit = (Picked unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((Level of Devotion Aura for (Matching unit)) Not equal to 0) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True)))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Number of units in UnitGroup_2) Equal to 0
Then - Actions
Unit - Remove Spell Damage Reduction from Unit
Unit - Remove Item Life Bonus (Greater) from Unit
Unit - Remove Item Life Bonus (Greater) from Unit
Unit - Remove Item Life Bonus (Greater) from Unit
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Devotion Aura for (Matching unit)) Not equal to 0)) and (((Unit-type of (Matching unit)) Equal to Death Knight) and (((Matching unit) is an illusion) Equal to False))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of Unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Mechanical) Equal to False)) or ((Unit-type of (Matching unit)) Equal to Sentry Ward)) and (((Matching unit) is alive) Equal to True)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Damage Reduction for (Picked unit)) Not equal to (Level of Devotion Aura for Unit)
Then - Actions
Unit - Remove Spell Damage Reduction from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Unit - Add Spell Damage Reduction to (Picked unit)
Unit - Add Broodaura_HP_Bonus[(Level of Devotion Aura for Unit)] to (Picked unit)
Unit - Set level of Spell Damage Reduction for (Picked unit) to (Level of Devotion Aura for Unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Damage Reduction for (Picked unit)) Not equal to 0
Then - Actions
Else - Actions
Unit - Add Spell Damage Reduction to (Picked unit)
Unit - Add Broodaura_HP_Bonus[(Level of Devotion Aura for Unit)] to (Picked unit)
Else - Actions
Unit - Remove Spell Damage Reduction from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Unit - Remove Item Life Bonus (Greater) from (Picked unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Cocoon
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Forked Lightning
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Add Parasite to (Last created unit)
Unit - Set level of Parasite for (Last created unit) to (Level of Forked Lightning for (Triggering unit))
Unit - Order (Last created unit) to Neutral - Parasite . (Target unit of ability being cast)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Life for the Queen Ultimate
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Battle Roar
Actions
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set Point_2 = (Point offset by 160.00 towards ((Facing of (Triggering unit)) + 90.00) degrees.)
Special Effect - Create a special effect at Point_2 using Abilities\Spells\Undead\Darksummoning\DarkSummonTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point_2 using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Triggering unit)) at Point_2 facing (Facing of (Triggering unit)) degrees
Hashtable - Save Handle Of (Last created unit) as 2 of (Key (Triggering unit).) in LifeForQueenTable .
Unit - Add a 60.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Set Variable Set Point_2 = (Point offset by 160.00 towards ((Facing of (Triggering unit)) - 90.00) degrees.)
Special Effect - Create a special effect at Point_2 using Abilities\Spells\Undead\Darksummoning\DarkSummonTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point_2 using war3mapImported\SummonGuard.mdx
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Carrion Beetle (Level 1) for (Owner of (Triggering unit)) at Point_2 facing (Facing of (Triggering unit)) degrees
Hashtable - Save Handle Of (Last created unit) as 1 of (Key (Triggering unit).) in LifeForQueenTable .
Hashtable - Save 60.00 as 0 of (Key (Triggering unit).) in LifeForQueenTable .
Unit - Add a 60.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Unit - Add Spell Book to (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Unit Group - Add (Triggering unit) to LifefortheQueen_Group
Trigger - Turn on Life_for_the_Queen_Aura_Loop <gen>
0 timer
1 A unit
2 B unit
5 bool A
6 bool B
Life for the Queen Aura Loop
Events
Time - Every 0.10 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in LifefortheQueen_Group and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 0 of (Key (Picked unit).) from LifeForQueenTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from LifeForQueenTable.) Not equal to 0.00
((Picked unit) is alive) Equal to True
Or - Any (Conditions) are true
Conditions
((Load 1 of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
((Load 2 of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Hashtable - Save ((Load 0 of (Key (Picked unit).) from LifeForQueenTable.) - 0.10) as 0 of (Key (Picked unit).) in LifeForQueenTable .
For each (Integer A) from 1 to 2 , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set Point_2 = (Position of (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 800.00
Then - Actions
Hashtable - Save True as ((Integer A) + 2) of (Key (Picked unit).) in LifeForQueenTable .
Lightning - Destroy (Load 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable.)
Hashtable - Clear all child hashtables of child (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable .
Lightning - Create a Drain Life lightning effect from source Point_2 to target Point
Hashtable - Save Handle Of (Last created lightning effect) as 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable .
Else - Actions
Hashtable - Save False as ((Integer A) + 2) of (Key (Picked unit).) in LifeForQueenTable .
Lightning - Destroy (Load 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable.)
Hashtable - Clear all child hashtables of child (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable .
Lightning - Create a Drain Life lightning effect from source Point_2 to target Point
Lightning - Change color of (Load 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable.) to ( 1 0.00 0.00 ) with 1.00 alpha
Hashtable - Save Handle Of (Last created lightning effect) as 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable .
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of (Key (Picked unit).) from LifeForQueenTable.) Equal to False
(Load 4 of (Key (Picked unit).) from LifeForQueenTable.) Equal to False
Then - Actions
Unit - Remove Spell Book from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Else - Actions
Unit - Add Spell Book to (Picked unit)
Unit - Add Spell Book to (Picked unit)
Else - Actions
For each (Integer A) from 1 to 2 , do (Actions)
Loop - Actions
Lightning - Destroy (Load 0 of (Key (Load (Integer A) of (Key (Picked unit).) in LifeForQueenTable.).) in LifeForQueenTable.)
Unit - Remove Spell Book from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in LifeForQueenTable .
Unit Group - Remove (Picked unit) from LifefortheQueen_Group .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in LifefortheQueen_Group) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Untitled Trigger 024
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Carrion Beetle (Level 1)
Actions
Lightning - Destroy (Load 0 of (Key (Triggering unit).) in LifeForQueenTable.)
Growth Revive
Events
Unit - A unit Finishes reviving
Conditions
(Unit-type of (Reviving Hero)) Equal to Crypt Lord
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Reviving Hero)) Equal to 1
Then - Actions
Unit - Set Unit: (Reviving Hero) 's Real Field: Selection Scale ('ussc') to Value: 2.25
Animation - Change (Reviving Hero) 's size to ( 130.00 %, 130.00 %, 130.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Reviving Hero)) for (Owner of (Reviving Hero))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Reviving Hero)) Equal to 2
Then - Actions
Unit - Set Unit: (Reviving Hero) 's Real Field: Selection Scale ('ussc') to Value: 2.50
Animation - Change (Reviving Hero) 's size to ( 160.00 %, 160.00 %, 160.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Reviving Hero)) for (Owner of (Reviving Hero))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Reviving Hero)) Equal to 3
Then - Actions
Unit - Set Unit: (Reviving Hero) 's Real Field: Selection Scale ('ussc') to Value: 2.75
Animation - Change (Reviving Hero) 's size to ( 190.00 %, 190.00 %, 190.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Reviving Hero)) for (Owner of (Reviving Hero))
Unit - Add Building Damage Aura (Tornado) to (Reviving Hero)
Else - Actions
Growth
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Attribute Bonus
Actions
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Spells\Undead\Possession\PossessionMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Spells\Undead\Unsummon\UnsummonTarget.mdl
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Triggering unit)) Equal to 1
Then - Actions
Unit - Set Unit: (Triggering unit) 's Real Field: Selection Scale ('ussc') to Value: 2.25
Animation - Change (Triggering unit) 's size to ( 130.00 %, 130.00 %, 130.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Triggering unit)) for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Triggering unit)) Equal to 2
Then - Actions
Unit - Set Unit: (Triggering unit) 's Real Field: Selection Scale ('ussc') to Value: 2.50
Animation - Change (Triggering unit) 's size to ( 160.00 %, 160.00 %, 160.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Triggering unit)) for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Attribute Bonus for (Triggering unit)) Equal to 3
Then - Actions
Unit - Set Unit: (Triggering unit) 's Real Field: Selection Scale ('ussc') to Value: 2.75
Animation - Change (Triggering unit) 's size to ( 190.00 %, 190.00 %, 190.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to (Level of Attribute Bonus for (Triggering unit)) for (Owner of (Triggering unit))
Unit - Add Building Damage Aura (Tornado) to (Triggering unit)
Else - Actions
Growth Windwalk
Events
Unit - A unit Is issued an order targeting an object
Unit - A unit Is issued an order targeting a point
Unit - A unit Is issued an order with no target
Conditions
(Unit-type of (Triggering unit)) Equal to Crypt Lord
((Triggering unit) has buff Wind Walk) Equal to False
(Level of Attribute Bonus for (Triggering unit)) Greater than 1
Actions
Hero - Create Rune of Dispel Magic and give it to (Triggering unit)
Growth UnLearn
Events
Unit - A unit Uses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Tome of Retraining
Actions
Unit - Set Unit: (Triggering unit) 's Real Field: Selection Scale ('ussc') to Value: 2.00
Animation - Change (Triggering unit) 's size to ( 100.00 %, 100.00 %, 100.00 %) of its original size
Player - Set the current research level of R01E (Unexpected type: 'techcode') to 0 for (Owner of (Triggering unit))
Unit - Remove Building Damage Aura (Tornado) from (Triggering unit)
Unit - Remove Wind Walk buff from (Triggering unit)
Ambush
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Silence
Actions
Set Variable Set Point = (Target point of ability being cast)
Unit - Create 1 . Goblin Land Mine for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Set level of Item Damage Bonus (+1) for (Last created unit) to (Level of Silence for (Triggering unit))
Unit - Set Max HP of (Last created unit) to (20 + (100 x (Level of Silence for (Triggering unit))))
Unit - Add a 120.00 second Generic expiration timer to (Last created unit)
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Special Effect - Create a special effect at Point using war3mapImported\SandWaveDamage.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Set Variable Set angle = (Random angle)
For each (Integer B) from 1 to 4 , do (Actions)
Loop - Actions
Set Variable Set Point = ((Target point of ability being cast) offset by (Random real number between 125.00 and 300.00) towards (angle + 0.00) degrees.)
Set Variable Set angle = (angle + (Random real number between 70.00 and 120.00))
Unit - Create 1 . Goblin Land Mine for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Set level of Item Damage Bonus (+1) for (Last created unit) to (Level of Silence for (Triggering unit))
Unit - Set Max HP of (Last created unit) to (20 + (100 x (Level of Silence for (Triggering unit))))
Unit - Add a 120.00 second Generic expiration timer to (Last created unit)
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Special Effect - Create a special effect at Point using war3mapImported\SandWaveDamage.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Ambush Activate
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Goblin Land Mine
Actions
Set Variable Set Point = (Position of (Dying unit))
Special Effect - Create a special effect at Point using war3mapImported\SandWaveDamage.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Killing unit) Equal to No unit
Then - Actions
Unit - Create 1 . Ambush_unit_preset[(Level of Item Damage Bonus (+1) for (Dying unit))] for (Owner of (Dying unit)) at Point facing Default building facing degrees
Unit - Add a 45.00 second Generic expiration timer to (Last created unit)
Unit - Move (Last created unit) instantly to Point
Else - Actions
Unit - Remove (Dying unit) from the game
Custom script: RemoveLocation(udg_Point)
Insatiable Hunger
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Chain Lightning
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Hashtable - Save Handle Of (Last created unit) as 2 of (Key (Triggering unit).) in Devour_table .
Unit - Add Devour to (Last created unit)
Unit - Add Devour Cargo to (Last created unit)
Unit - Order (Last created unit) to Orc Kodo Beast - Devour . (Target unit of ability being cast)
Unit - Add a 12.00 second Generic expiration timer to (Last created unit)
Hashtable - Save 12.00 as 1 of (Key (Triggering unit).) in Devour_table .
Unit Group - Add (Triggering unit) to DevourGroup
Trigger - Turn on Insatiable_Hunger_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Insatiable Hunger Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in DevourGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from Devour_table.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) from Devour_table.) Not equal to 0.00
((Picked unit) is alive) Equal to True
Then - Actions
Special Effect - Create a special effect attached to the head (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Weapons\HydraliskImpact\HydraliskImpact.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set Point = (Position of (Picked unit))
Hashtable - Save ((Load 1 of (Key (Picked unit).) from Devour_table.) - 0.25) as 1 of (Key (Picked unit).) in Devour_table .
Unit - Move (Load 2 of (Key (Picked unit).) in Devour_table.) instantly to Point
Custom script: RemoveLocation(udg_Point)
Else - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Objects\Spawnmodels\Demon\DemonSmallDeathExplode\DemonSmallDeathExplode.mdl
Special Effect - Destroy (Last created special effect)
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in Devour_table .
Unit Group - Remove (Picked unit) from DevourGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in DevourGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Strings of Fate
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spirit Link
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Special Effect - Create a special effect at Point using war3mapImported\LawOfBloodScroll_Cast.mdx
Special Effect - Set Scale of (Last created special effect) to 0.60
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 1000.00 of Point matching (((((Matching unit) is alive) Equal to True) and ((Matching unit) Not equal to (Target unit of ability being cast))) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit)).) Equal to True)))).)
Set Variable Set UnitGroup = (Random (1 + (3 x (Level of Spirit Link for (Triggering unit)))) units from UnitGroup)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Acid Bomb to (Last created unit)
Unit - Set level of Spirit Link for (Last created unit) to (Level of Spirit Link for (Triggering unit))
Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
String of Fate Effect
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
((DamageEventTarget has buff Slow) Equal to True) and ((DamageEventSource belongs to an enemy of (Owner of DamageEventTarget).) Equal to True)
DamageEventAmount Not equal to 0.00
(Level of Item Damage Bonus (+1) for DamageEventSource) Equal to 0
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DamageEventAmount Equal to 0.00
Then - Actions
Do nothing
Else - Actions
Set Variable Set Point = (Position of DamageEventTarget)
Set Variable Set UnitGroup = (Units within 1500.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) has buff Slow) Equal to True) and ((Matching unit) Not equal to DamageEventTarget))).)
Set Variable Set Unit = (Random unit from (Units owned by (Owner of DamageEventSource) of type Keeper of the Grove))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of DamageEventSource) at Point facing Default building facing degrees
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Unit - Add a 0.25 second Generic expiration timer to (Last created unit)
Unit - Cause (Last created unit) to damage (Picked unit) , dealing (DamageEventAmount x 0.15) damage of attack type Spells and damage type Normal
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
Unraveling
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dispel Magic
Actions
Set Variable Set Point = (Target point of ability being cast)
Special Effect - Create a special effect at Point using Units\NightElf\Wisp\WispExplode.mdl
Special Effect - Set Color of (Last created special effect) to r: 100 , g: 0 , b: 255
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\s_EvilWave_Effect.mdx
Special Effect - Set Color of (Last created special effect) to r: 100 , g: 0 , b: 255
Special Effect - Set Scale of (Last created special effect) to 0.80
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within (100.00 + (100.00 x (Real((Level of Dispel Magic for (Triggering unit)))))) of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False)) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Unit-type of (Matching unit)) is A town-hall-type unit) Equal to False)))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Add Purge (Neutral Hostile) to (Last created unit)
Unit - Add a 6.00 second Generic expiration timer to (Last created unit)
Unit - Order (Last created unit) to Orc Shaman - Purge . (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units within (100.00 + (100.00 x (Real((Level of Dispel Magic for (Triggering unit)))))) of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False)) and ((((Matching unit) is Summoned) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit)).) Equal to True))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Acid Bomb to (Last created unit)
Unit - Set level of Acid Bomb for (Last created unit) to (Level of Dispel Magic for (Triggering unit))
Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: DestroyGroup (udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Every thing between these lines you can easily modify

***************************************************************************************************

Note: If you wanna change the AOE damage you're gonna have to edit the Dummy Spell in the Object Editor.
Overpower
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Aerial Shackles
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RS_Index[1] Equal to 0
Then - Actions
-------- If no instances are running we turn on the Loop --------
Trigger - Turn on Overpower_Loop <gen>
Else - Actions
-------- Here we increase the indexes +1 --------
Set Variable Set RS_Index[1] = (RS_Index[1] + 1)
Set Variable Set RS_Index[2] = (RS_Index[2] + 1)
-------- The MUI Boolean = True --------
Set Variable Set RS_Boolean[RS_Index[2]] = "true"
-------- Stores the caster unit into a variable for later use --------
Set Variable Set RS_Caster[RS_Index[2]] = (Triggering unit)
-------- Stores the target unit into a variable for later use --------
Set Variable Set RS_Target[RS_Index[2]] = (Target unit of ability being cast)
-------- Stores the caster unit position into a variable for later use --------
Set Variable Set RS_Loc[1] = (Position of (Triggering unit))
-------- Stores the target unit position into a variable for later use --------
Set Variable Set RS_Loc[2] = (Position of (Target unit of ability being cast))
-------- Stores the ability Level --------
Set Variable Set RS_LevelA[RS_Index[2]] = (Level of Harvest (Gold and Lumber) for (Triggering unit))
-------- ************************************************************************************************** --------
-------- The Max Distance in which the unit flies --------
Set Variable Set RS_MaxD[RS_Index[2]] = (250.00 + (Distance between RS_Loc[1] and RS_Loc[2]))
-------- The Max Height in which the unit flies --------
Set Variable Set RS_MaxH[RS_Index[2]] = (Random real number between 150.00 and 250.00)
-------- The speed in which the unit flies --------
Set Variable Set RS_Speed[RS_Index[2]] = "25.00"
-------- The innitial damage dealt to the target --------
-------- The eye candy that appears when the unit gets hit --------
Special Effect - Create a special effect at RS_Loc[2] using WaterBlast.mdx
Special Effect - Destroy (Last created special effect)
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Target unit of ability being cast)
-------- ************************************************************************************************** --------
-------- Sets the owner of the caster unit --------
Set Variable Set RS_Player[RS_Index[2]] = (Owner of (Triggering unit))
-------- THe angle which the unit will move --------
Set Variable Set RS_Angle[RS_Index[2]] = (Angle from RS_Loc[2] to RS_Loc[1])
-------- The current distance will be used in the Loop trigger --------
Set Variable Set RS_CurDis[RS_Index[2]] = "0.00"
-------- Turning Collision for the target 0FF --------
Unit - Turn collision for RS_Target[RS_Index[2]] Off .
-------- Adding + Removing the storm grow ability in which we'll use for parabola --------
Unit - Add Storm Crow Form to (Target unit of ability being cast)
Unit - Remove Storm Crow Form from (Target unit of ability being cast)
-------- Removing all the point leaks --------
Custom script: RemoveLocation( udg_RS_Loc[1] )
Custom script: RemoveLocation( udg_RS_Loc[2] )
Overpower Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer RS_Index[3] ) from 1 to RS_Index[2] , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RS_Boolean[RS_Index[3]] Equal to True
Then - Actions
-------- Again sets the location of the target --------
Set Variable Set RS_Loc[3] = (Position of RS_Target[RS_Index[3]])
-------- The point where the caster will be moved every 0.03 seconds --------
Set Variable Set RS_Loc[4] = (RS_Loc[3] offset by RS_Speed[RS_Index[3]] towards RS_Angle[RS_Index[3]] degrees.)
-------- Moving the target --------
Unit - Move RS_Target[RS_Index[3]] instantly to RS_Loc[4]
-------- Increasing the current distance --------
Set Variable Set RS_CurDis[RS_Index[3]] = (RS_CurDis[RS_Index[3]] + RS_Speed[RS_Index[3]])
-------- Storing the variables in seperate Reals --------
Set Variable Set RS_Real[1] = RS_MaxH[RS_Index[3]]
Set Variable Set RS_Real[2] = RS_MaxD[RS_Index[3]]
Set Variable Set RS_Real[3] = RS_CurDis[RS_Index[3]]
-------- The almighty parabola --------
Custom script: udg_RS_Real[4] = ( 4 * udg_RS_Real[1] / udg_RS_Real[2]) * ( udg_RS_Real[2] - udg_RS_Real[3]) * ( udg_RS_Real[3] / udg_RS_Real[2] )
-------- Applying the effect --------
Animation - Change RS_Target[RS_Index[3]] flying height to RS_Real[4] at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RS_CurDis[RS_Index[3]] Greater than RS_MaxD[RS_Index[3]]
Then - Actions
-------- Turning Collision for the target 0N --------
Unit - Turn collision for RS_Target[RS_Index[3]] On .
Unit - Remove Item Hero Stat Bonus (+1 Agility) from RS_Target[RS_Index[3]]
-------- Creating the dummy unit --------
Unit - Create 1 . Footman for (Owner of RS_Caster[RS_Index[3]]) at RS_Loc[3] facing Default building facing degrees
Unit - Add Storm Bolt to (Last created unit)
Unit - Set level of Storm Bolt for (Last created unit) to (Level of Aerial Shackles for RS_Caster[RS_Index[3]])
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . RS_Target[RS_Index[3]]
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
-------- Some eye candy that appears when the unit hits the ground --------
Special Effect - Create a special effect at RS_Loc[3] using war3mapImported\Cataclysm.mdx
Special Effect - Set Scale of (Last created special effect) to 0.60
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at RS_Loc[3] using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at RS_Loc[3] using war3mapImported\Explosion.mdx
Special Effect - Destroy (Last created special effect)
-------- Setting how many instances are running -1 --------
Set Variable Set RS_Index[1] = (RS_Index[1] - 1)
-------- Resetting the MUI Boolean --------
Set Variable Set RS_Boolean[RS_Index[3]] = "false"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RS_Index[1] Equal to 0
Then - Actions
-------- Resetting all indexes --------
Set Variable Set RS_Index[2] = "0"
-------- Turning of this trigger for efficiency --------
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
-------- Resetting the Reals we used earlier --------
Custom script: udg_RS_Real[1] = 0
Custom script: udg_RS_Real[2] = 0
Custom script: udg_RS_Real[3] = 0
Custom script: udg_RS_Real[4] = 0
-------- Removing Point leakies. --------
Custom script: RemoveLocation( udg_RS_Loc[3] )
Custom script: RemoveLocation( udg_RS_Loc[4] )
Else - Actions
Underlord Aura New
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Spell Damage Reduction for (Matching unit)) Not equal to 0)) and (((Matching unit) is alive) Equal to True)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set Unit = (Picked unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((Level of Devotion Aura for (Matching unit)) Not equal to 0) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True)))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Number of units in UnitGroup_2) Equal to 0
Then - Actions
Unit - Remove Spell Damage Reduction from Unit
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Devotion Aura for (Matching unit)) Not equal to 0)) and (((Unit-type of (Matching unit)) Equal to Crypt Lord) or ((Unit-type of (Matching unit)) Equal to Crypt Lord))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of Unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Mechanical) Equal to False)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Damage Reduction for (Picked unit)) Not equal to (Level of Devotion Aura for Unit)
Then - Actions
Unit - Remove Spell Damage Reduction from (Picked unit)
Unit - Add Spell Damage Reduction to (Picked unit)
Unit - Set level of Spell Damage Reduction for (Picked unit) to (Level of Devotion Aura for Unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Damage Reduction for (Picked unit)) Not equal to 0
Then - Actions
Else - Actions
Unit - Add Spell Damage Reduction to (Picked unit)
Else - Actions
Unit - Remove Spell Damage Reduction from (Picked unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Underlord Aura Learn
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Unholy Aura
Actions
Trigger - Turn on Underlord_Aura_Dmg_reduction <gen>
Trigger - Turn on Underlord_Aura_HP_Regen <gen>
Unit Group - Add (Triggering unit) to UnderlordGroup
Underlord Aura Dmg reduction
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Number of units in UnderlordGroup) Not equal to 0
DamageEventAmount Not equal to 0.00
Or - Any (Conditions) are true
Conditions
(Unit-type of DamageEventSource) Equal to Crypt Fiend
(Unit-type of DamageEventSource) Equal to Crypt Fiend
(Unit-type of DamageEventSource) Equal to Tauren
(Unit-type of DamageEventSource) Equal to Arachnathid Earth-borer
(Unit-type of DamageEventSource) Equal to Spider
(Unit-type of DamageEventSource) Equal to Spider
(Unit-type of DamageEventSource) Equal to Goblin Land Mine
(Unit-type of DamageEventSource) Equal to Crypt Lord
(Unit-type of DamageEventSource) Equal to Raider
Actions
Set Variable Set Point = (Position of DamageEventTarget)
Unit Group - Pick every unit in UnderlordGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) belongs to an ally of (Owner of DamageEventTarget).) Equal to True
((Picked unit) is alive) Equal to True
((Picked unit) is hidden) Equal to False
((Picked unit) is an illusion) Equal to False
Then - Actions
Set Variable Set Unit = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Unit Not equal to No unit
Then - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 1000.00
Then - Actions
Set Variable Set DamageEventAmount = (DamageEventAmount x (1.00 - (0.10 x (Real((Level of Unholy Aura for Unit))))))
Else - Actions
Custom script: RemoveLocation(udg_Point_2)
Else - Actions
Else - Actions
Custom script: RemoveLocation(udg_Point)
Underlord Aura HP Regen
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Level of Item Hero Stat Bonus (+1 Agility) for (Matching unit)) Not equal to 0))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 0
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set BurrowedUnit = (Picked unit)
Unit Group - Pick every unit in UnderlordGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) belongs to an ally of (Owner of BurrowedUnit).) Equal to True
((Picked unit) is alive) Equal to True
((Picked unit) is hidden) Equal to False
((Picked unit) is an illusion) Equal to False
Then - Actions
Set Variable Set Unit = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Unit Not equal to No unit
Then - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 1000.00
Then - Actions
Unit - Set life of BurrowedUnit to ((Life of BurrowedUnit) + (0.80 x (Real((Level of Unholy Aura for Unit)))))
Else - Actions
Custom script: RemoveLocation(udg_Point_2)
Else - Actions
Else - Actions
Set Variable Set BurrowedUnit = No unit
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup)
Piercing Strike Copy
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Level of Trueshot Aura for DamageEventSource) Not equal to 0
(Current research level of R01C (Unexpected type: 'techcode') for (Owner of DamageEventSource)) Not equal to 0
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
DamageEventAttackT Equal to 6
Actions
Set Variable Set DamageEventArmorPierced = ((Armor of DamageEventTarget) / 2.00)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventTarget using Abilities\Weapons\QuillSprayMissile\QuillSprayMissile.mdl
Special Effect - Destroy (Last created special effect)
Stronghold
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Taunt
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\s_EvilWave_Effect.mdx
Special Effect - Set Color of (Last created special effect) to r: 255 , g: 255 , b: 0
Special Effect - Set Scale of (Last created special effect) to 0.50
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 600.00 of Point matching (((((Unit-type of (Matching unit)) Equal to Spider) or (((Unit-type of (Matching unit)) Equal to Spider) or ((Unit-type of (Matching unit)) Equal to Spider))) or (((Unit-type of (Matching unit)) Equal to Spider) or ((Unit-type of (Matching unit)) Equal to Spider))) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an ally of (Owner of (Triggering unit)).) Equal to True) and ((((Matching unit) is an illusion) Equal to False) and ((Level of Spell Book for (Matching unit)) Equal to 0))))).)
Unit Group - Pick every unit in (Random 3 units from UnitGroup) and do (Actions)
Loop - Actions
Animation - Change (Picked unit) 's vertex coloring to ( 100 %, 10.00 %, 10.00 %) with 0 % transparency
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Human\Feedback\SpellBreakerAttack.mdl
Special Effect - Destroy (Last created special effect)
Unit - Add Spell Book to (Picked unit)
Unit Group - Add (Picked unit) to StrongholdGroup
Hashtable - Save 12.00 as 1 of (Key (Picked unit).) in StrongholdTable .
Trigger - Turn on Stronghold_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Stronghold Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in StrongholdGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from StrongholdTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
(Load 1 of (Key (Picked unit).) from StrongholdTable.) Not equal to 0.00
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from StrongholdTable.) - 0.25) as 1 of (Key (Picked unit).) in StrongholdTable .
Else - Actions
Animation - Change (Picked unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 0 % transparency
Unit - Remove Spell Book from (Picked unit)
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in StrongholdTable .
Unit Group - Remove (Picked unit) from StrongholdGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in StrongholdGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Chitin Shield Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Unit-type of (Triggering unit)) Equal to Crypt Lord
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Thunder Clap to (Last created unit)
Unit - Set level of Thunder Clap for (Last created unit) to (Level of Burrow (Crypt Fiend) for (Triggering unit))
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap .
Custom script: RemoveLocation(udg_Point)
Wait 0.00 seconds
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Chitin Shield Copy Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Unit-type of (Triggering unit)) Equal to Crypt Lord
Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + 45.00)
Untitled Trigger 012 Copy
Events
Unit - A unit Is issued an order targeting a point
Conditions
(Unit-type of (Triggering unit)) Equal to Peon
((Triggering unit) is Magic Immune) Equal to False
((Triggering unit) is hidden) Equal to False
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Issued order) Equal to (Order(custom_u006))
Then - Actions
Unit Group - Add (Triggering unit) to Slaves
Else - Actions
Unit Group - Remove (Triggering unit) from Slaves .
Gatherer
Events
Unit - A unit Finishes construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructed structure)) Equal to Ziggurat
(Unit-type of (Constructed structure)) Equal to Altar of Darkness
(Unit-type of (Constructed structure)) Equal to Barracks
(Unit-type of (Constructed structure)) Equal to Great Hall
(Unit-type of (Constructed structure)) Equal to Stronghold
(Unit-type of (Constructed structure)) Equal to Fortress
(Unit-type of (Constructed structure)) Equal to Sacrificial Pit
(Unit-type of (Constructed structure)) Equal to Arcane Sanctum
(Unit-type of (Constructed structure)) Equal to Tauren Totem
(Unit-type of (Constructed structure)) Equal to War Mill
(Unit-type of (Constructed structure)) Equal to Beastiary
(Unit-type of (Constructed structure)) Equal to Voodoo Lounge
(Unit-type of (Constructed structure)) Equal to Nerubian Tower
(Unit-type of (Constructed structure)) Equal to Nerubian Tower
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructed structure)) Equal to Ziggurat
Then - Actions
Wait 0.00 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Equal to (Order(stand down))
And - All (Conditions) are true
Conditions
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(o00D))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(o00I))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(h006))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(u00L))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(u006))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(u001))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(h009))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(o00C))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(u000))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(o00G))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(o00H))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(move))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(attack))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(harvest))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(gather))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(smart))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(resumeharvest))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(follow))
(Current order of (Load 3 of (Key (Constructed structure).) in BuildHastable.)) Not equal to (Order(patroll))
Then - Actions
Set Variable Set Point_2 = ((Position of (Constructed structure)) offset by 200.00 towards 270.00 degrees.)
Unit - Order (Load 3 of (Key (Constructed structure).) in BuildHastable.) to Move To . Point_2
Custom script: RemoveLocation(udg_Point_2)
Unit Group - Remove (Load 3 of (Key (Constructed structure).) in BuildHastable.) from Slaves .
Else - Actions
Else - Actions
Unit - Remove classification of A sapper from (Constructed structure)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Kill (Load 0 of (Key (Constructed structure).) in BuildHastable.)
Hashtable - Clear all child hashtables of child (Key (Constructed structure).) in BuildHastable .
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Constructed structure)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructed structure)) Equal to Sacrificial Pit
Then - Actions
Unit - Remove classification of A sapper from (Constructed structure)
Else - Actions
Cancel
Events
Unit - A unit Cancels construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Cancelled structure)) Equal to Ziggurat
(Unit-type of (Cancelled structure)) Equal to Altar of Darkness
(Unit-type of (Cancelled structure)) Equal to Barracks
(Unit-type of (Cancelled structure)) Equal to Great Hall
(Unit-type of (Cancelled structure)) Equal to Stronghold
(Unit-type of (Cancelled structure)) Equal to Fortress
(Unit-type of (Cancelled structure)) Equal to Arcane Sanctum
(Unit-type of (Cancelled structure)) Equal to Sacrificial Pit
(Unit-type of (Cancelled structure)) Equal to Tauren Totem
(Unit-type of (Cancelled structure)) Equal to War Mill
(Unit-type of (Cancelled structure)) Equal to Beastiary
(Unit-type of (Cancelled structure)) Equal to Voodoo Lounge
(Unit-type of (Cancelled structure)) Equal to Nerubian Tower
(Unit-type of (Cancelled structure)) Equal to Nerubian Tower
Actions
Unit - Remove classification of A sapper from (Cancelled structure)
Unit - Kill (Load 0 of (Key (Cancelled structure).) in BuildHastable.)
Hashtable - Clear all child hashtables of child (Key (Cancelled structure).) in BuildHastable .
Untitled Trigger 002
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Load 0 of (Key (Triggering unit).) in BuildHastable.)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Load 0 of (Key (Triggering unit).) in BuildHastable.)
Start Building
Events
Unit - A unit Begins construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructing structure)) Equal to Ziggurat
(Unit-type of (Constructing structure)) Equal to Altar of Darkness
(Unit-type of (Constructing structure)) Equal to Barracks
(Unit-type of (Constructing structure)) Equal to Great Hall
(Unit-type of (Constructing structure)) Equal to Arcane Sanctum
(Unit-type of (Constructing structure)) Equal to Tauren Totem
(Unit-type of (Constructing structure)) Equal to Sacrificial Pit
(Unit-type of (Constructing structure)) Equal to War Mill
(Unit-type of (Constructing structure)) Equal to Beastiary
(Unit-type of (Constructing structure)) Equal to Voodoo Lounge
(Unit-type of (Constructing structure)) Equal to Nerubian Tower
(Unit-type of (Constructing structure)) Equal to Nerubian Tower
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructing structure)) Equal to Ziggurat
Then - Actions
Set Variable Set Point = (Position of (Constructing structure))
Set Variable Set Distance = "500.00"
Unit Group - Pick every unit in Slaves and do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to Distance
Then - Actions
Set Variable Set Distance = (Distance between Point and Point_2)
Set Variable Set Unit = (Picked unit)
Else - Actions
Custom script: RemoveLocation(udg_Point_2)
Hashtable - Save Handle Of Unit as 3 of (Key (Constructing structure).) in BuildHastable .
Custom script: RemoveLocation(udg_Point)
Else - Actions
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Constructing structure)
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Constructing structure)
Set Variable Set Point = (Position of (Constructing structure))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Move (Last created unit) instantly to Point
Unit - Add Locust Swarm to (Last created unit)
Unit - Order (Last created unit) to Undead Crypt Lord - Locust Swarm .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructing structure)) Equal to Ziggurat
Then - Actions
Unit - Add a 31.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructing structure)) Equal to Barracks
(Unit-type of (Constructing structure)) Equal to Altar of Darkness
(Unit-type of (Constructing structure)) Equal to Beastiary
(Unit-type of (Constructing structure)) Equal to Voodoo Lounge
Then - Actions
Unit - Add a 41.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructing structure)) Equal to Tauren Totem
(Unit-type of (Constructing structure)) Equal to Arcane Sanctum
(Unit-type of (Constructing structure)) Equal to War Mill
Then - Actions
Unit - Add a 51.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructing structure)) Equal to Great Hall
Then - Actions
Unit - Add a 120.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructing structure)) Equal to Sacrificial Pit
Then - Actions
Unit - Add a 26.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructing structure)) Equal to Nerubian Tower
(Unit-type of (Constructing structure)) Equal to Nerubian Tower
Then - Actions
Unit - Add a 36.00 second Generic expiration timer to (Last created unit)
Else - Actions
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Constructing structure).) in BuildHastable .
Hashtable - Save Handle Of (Constructing structure) as 0 of (Key (Last created unit).) in BuildHastable .
Burrow SFX Copy
Events
Unit - A unit Begins training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Peon
Actions
Unit - Replace (Triggering unit) with a Sentry Ward using The old unit's relative life and mana
Selection - Select (Last replaced unit) for (Owner of (Last replaced unit))
Burrow SFX Copy Copy
Events
Unit - A unit Begins training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Unit - Set Unit: (Triggering unit) 's Integer Field: Unit Classification ('utyp') to Value: ((Unit: (Triggering unit)'s Integer Field: Unit Classification ('utyp')) Or 512)
Unit - Add classification of An Ancient to (Triggering unit)
Unit - Add Item Damage Bonus (+1) to (Last replaced unit)
Cocoon Work Cancle Copy
Events
Unit - A unit Cancels training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Unit - Remove classification of An Ancient from (Triggering unit)
Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
CocoonTech Copy
Events
Unit - A unit Finishes training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Unit - Remove classification of An Ancient from (Triggering unit)
Set Variable Set Point = (Position of (Triggering unit))
Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
Unit - Turn collision for (Triggering unit) Off .
Unit - Move (Trained unit) instantly to Point
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Untitled Trigger 009
Events
Unit - A unit Finishes an upgrade
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Great Hall
(Unit-type of (Triggering unit)) Equal to Stronghold
(Unit-type of (Triggering unit)) Equal to Fortress
Actions
Unit - Remove Spell Book from (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Building Death
Events
Unit - A unit Dies
Conditions
(Level of Spell Book for (Triggering unit)) Not equal to 0
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\Conflagrate Green.mdx
Special Effect - Destroy (Last created special effect)
For each (Integer A) from 1 to 12 , do (Actions)
Loop - Actions
Unit - Create 1 . Rat for Neutral Passive at Point facing Default building facing degrees
Unit - Set (Last created unit) movement speed to (Random real number between 100.00 and 200.00)
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Set Variable Set spider_size = (Random real number between 20.00 and 40.00)
Animation - Change (Last created unit) 's size to ( spider_size %, spider_size %, spider_size %) of its original size
Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
Set Variable Set Point_2 = (Point offset by 600.00 towards (Random angle) degrees.)
Unit - Order (Last created unit) to Move To . Point_2
Set Variable Set FSUnit = (Last created unit)
Set Variable Set FSStartOpacity = "150.00"
Set Variable Set FSStart = "0.00"
Set Variable Set FSEnd = "100.00"
Set Variable Set FSSpeed = "2.00"
Set Variable Set FSFadeIn = "false"
Set Variable Set FSTinted = "true"
Set Variable Set FSRed = "0.00"
Set Variable Set FSGreen = "0.00"
Set Variable Set FSBlue = "0.00"
Trigger - Run FSAddUnit <gen> (ignoring conditions)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Remove rally from new gatherer
Events
Unit - A unit enters (Playable map area)
Conditions
(Unit-type of (Triggering unit)) Equal to Peon
Actions
Unit - Remove Rally from (Triggering unit)
Retreat Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Carrion Beetles
Actions
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + 20.00)
Retreat
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Cyclone
Actions
Unit Group - Add (Target unit of ability being cast) to RetreatGroup
Retreat Heal
Events
Time - Every 1.00 seconds of game time
Conditions
(Number of units in RetreatGroup) Not equal to 0
Actions
Unit Group - Pick every unit in RetreatGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
((Picked unit) has buff Cyclone) Equal to True
((Picked unit) has buff Cyclone (Extra)) Equal to True
Then - Actions
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + 41.00)
Else - Actions
Unit Group - Remove (Picked unit) from RetreatGroup .
Untitled Trigger 016
Events
Unit - A unit enters (Playable map area)
Conditions
(Unit-type of (Triggering unit)) Equal to Disease Cloud
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Add a 2.00 second Generic expiration timer to (Triggering unit)
Special Effect - Create a special effect at Point using war3mapImported\Cure3.mdx
Special Effect - Set Scale of (Last created special effect) to 0.55
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Untitled Trigger 017
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Disease Cloud
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\RaiseSkeleton.mdx
Special Effect - Destroy (Last created special effect)
Unit - Remove (Triggering unit) from the game
Custom script: RemoveLocation(udg_Point)
Dark Swarm Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Cloud
Actions
Set Variable Set Point = (Target point of ability being cast)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in NerubianHashtable .
Unit - Add a 20.00 second Generic expiration timer to (Last created unit)
Unit - Add Locust Swarm to (Last created unit)
Unit - Order (Last created unit) to Undead Crypt Lord - Locust Swarm .
Custom script: RemoveLocation(udg_Point)
Dark Swarm End
Events
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Cloud
Actions
Set Variable Set Unit = (Load 0 of (Key (Triggering unit).) in NerubianHashtable.)
Unit - Add a 0.01 second Generic expiration timer to Unit
Hashtable - Save Handle Of No unit as 0 of (Key (Triggering unit).) in NerubianHashtable .
Made by Noobsmoke
Buff System v1.8
Run Buffing
Events
Conditions
Actions
Set Variable Set BS_Recycle = "true"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Index2] is alive) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Index2] is Magic Immune) Equal to True
BS_MagicImmune[BS_Index2] Equal to False
Then - Actions
Set Variable Set BS_Recycle = "false"
Else - Actions
Else - Actions
Set Variable Set BS_Recycle = "false"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Recycle Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Index2] has buff BS_Buff[BS_Index2]) Equal to True
Then - Actions
For each (Integer BS_Index3 ) from 1 to (BS_Index2 - 1) , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buffed_Unit[BS_Index3] Equal to BS_Buffed_Unit[BS_Index2]
BS_Buff[BS_Index3] Equal to BS_Buff[BS_Index2]
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Stack[BS_Index3] Less than BS_MaxStack[BS_Index3]
Then - Actions
Set Variable Set BS_Stack[BS_Index3] = (BS_Stack[BS_Index3] + 1)
Else - Actions
Set Variable Set BS_Buffing_Unit[BS_Index3] = BS_Buffing_Unit[BS_Index2]
Set Variable Set BS_Buffed_Unit[BS_Index3] = BS_Buffed_Unit[BS_Index2]
Set Variable Set BS_Buff_Ability[BS_Index3] = BS_Buff_Ability[BS_Index2]
Set Variable Set BS_Bonus_Ability[BS_Index3] = BS_Bonus_Ability[BS_Index2]
Set Variable Set BS_Use_Bonus[BS_Index3] = BS_Use_Bonus[BS_Index2]
Set Variable Set BS_Buff[BS_Index3] = BS_Buff[BS_Index2]
Set Variable Set BS_Buff_Duration[BS_Index3] = BS_Buff_Duration[BS_Index2]
Set Variable Set BS_Buff_Category[BS_Index3] = BS_Buff_Category[BS_Index2]
Set Variable Set BS_MaxStack[BS_Index3] = BS_MaxStack[BS_Index2]
Set Variable Set BS_Buff_Type[BS_Index3] = BS_Buff_Type[BS_Index2]
Set Variable Set BS_Permanent[BS_Index3] = BS_Permanent[BS_Index2]
Set Variable Set BS_MagicImmune[BS_Index3] = BS_MagicImmune[BS_Index2]
Set Variable Set BS_Index2 = (BS_Index2 - 1)
Set Variable Set BS_Event_Index = BS_Index3
Set Variable Set BS_Buffed_Event = "3.00"
Set Variable Set BS_Buffed_Event = "0.00"
Set Variable Set BS_Buff_Duration[BS_Index3] = BS_Buff_Duration[BS_Event_Index]
Else - Actions
Else - Actions
Set Variable Set BS_Event_Index = BS_Index2
Set Variable Set BS_Buffed_Event = "1.00"
Set Variable Set BS_Buffed_Event = "0.00"
Set Variable Set BS_Buff_Duration[BS_Index2] = BS_Buff_Duration[BS_Event_Index]
For each (Integer BS_IntegerA ) from 1 to 14 , do (Actions)
Loop - Actions
Player - Disable BS_Buff_Ability[BS_Index2] for (Player(BS_IntegerA))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buff_Duration[BS_Index2] Greater than 0.00
Then - Actions
Unit - Add BS_Buff_Ability[BS_Index2] to BS_Buffed_Unit[BS_Index2]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Use_Bonus[BS_Index2] Equal to True
Then - Actions
Player - Disable BS_Bonus_Ability[BS_Index2] for (Owner of BS_Buffed_Unit[BS_Index2])
Unit - Add BS_Bonus_Ability[BS_Index2] to BS_Buffed_Unit[BS_Index2]
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Buff_Periodic <gen> is on) Not equal to True
Then - Actions
Trigger - Turn on Buff_Periodic <gen>
Else - Actions
Else - Actions
Made by Noobsmoke
Buff System v1.8
Buff Periodic
Events
Time - Every 0.05 seconds of game time
Conditions
Actions
For each (Integer BS_Index1 ) from 1 to BS_Index2 , do (Actions)
Loop - Actions
Set Variable Set BS_Recycle = "false"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buff_Duration[BS_Index1] Greater than or equal to 0.05
(BS_Buffed_Unit[BS_Index1] is alive) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Index1] is Magic Immune) Equal to True
BS_MagicImmune[BS_Index1] Equal to False
Then - Actions
Set Variable Set BS_Recycle = "true"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Permanent[BS_Index1] Equal to False
Then - Actions
Set Variable Set BS_Buff_Duration[BS_Index1] = (BS_Buff_Duration[BS_Index1] - 0.05)
Else - Actions
Else - Actions
Set Variable Set BS_Recycle = "true"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Recycle Equal to True
Then - Actions
Set Variable Set BS_Event_Index = BS_Index1
Set Variable Set BS_Buffed_Event = "2.00"
Set Variable Set BS_Buffed_Event = "0.00"
Unit - Remove BS_Buff_Ability[BS_Index1] from BS_Buffed_Unit[BS_Index1]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Use_Bonus[BS_Index1] Equal to True
Then - Actions
Unit - Remove BS_Bonus_Ability[BS_Index1] from BS_Buffed_Unit[BS_Index1]
Else - Actions
Unit - Remove BS_Buff[BS_Index1] buff from BS_Buffed_Unit[BS_Index1]
Set Variable Set BS_Buffing_Unit[BS_Index1] = BS_Buffing_Unit[BS_Index2]
Set Variable Set BS_Buffed_Unit[BS_Index1] = BS_Buffed_Unit[BS_Index2]
Set Variable Set BS_Buff_Ability[BS_Index1] = BS_Buff_Ability[BS_Index2]
Set Variable Set BS_Bonus_Ability[BS_Index1] = BS_Bonus_Ability[BS_Index2]
Set Variable Set BS_Use_Bonus[BS_Index1] = BS_Use_Bonus[BS_Index2]
Set Variable Set BS_Buff[BS_Index1] = BS_Buff[BS_Index2]
Set Variable Set BS_Buff_Duration[BS_Index1] = BS_Buff_Duration[BS_Index2]
Set Variable Set BS_Buff_Category[BS_Index1] = BS_Buff_Category[BS_Index2]
Set Variable Set BS_Stack[BS_Index1] = BS_Stack[BS_Index2]
Set Variable Set BS_MaxStack[BS_Index1] = BS_MaxStack[BS_Index2]
Set Variable Set BS_Buff_Type[BS_Index1] = BS_Buff_Type[BS_Index2]
Set Variable Set BS_Permanent[BS_Index1] = BS_Permanent[BS_Index2]
Set Variable Set BS_MagicImmune[BS_Index1] = BS_MagicImmune[BS_Index2]
Set Variable Set BS_Index2 = (BS_Index2 - 1)
Set Variable Set BS_Index1 = (BS_Index1 - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Index2 Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
Stun Plugin is used to stun units using buff system.
Why is this plugin necessary ?
Because there is no way to simulate a stun and multiple stuns buff don't stack and cause permanent stuns when they are stacked.
How this works :
When a unit gets affected by any buff from stuns category it will get stunned by a dummy spell. That stun lasts forever and it will be removed only after a unit will no longer be affected by any buff from stuns category.
To import the Stun Plugin you will have to copy/paste :
(Object Data) - Dummy (0) *unit*, Stun (SystemBuff) *buff*, Stun(SystemBuff) *ability*
(Trigger) - Stun Config, Stun Buff, Stun Debuff

Why not don't we fire the Stun Buff trigger when a unit gets a buff from stuns category ?
Because you may have triggers that reduce the stun duration and you have to make sure that duration is decreased or increased and the unit gets stunned after
Made by Noobsmoke
Buff System v1.8
Stun Config
Events
Map initialization
Conditions
Actions
Set Variable Set PStun_Category = "2"
Made by Noobsmoke
Buff System v1.8
Stun Debuff
Events
Game - BS_Buffed_Event becomes Equal to 2.00
Conditions
BS_Buff_Category[BS_Event_Index] Equal to PStun_Category
Actions
Set Variable Set SS_CountStuns = "0"
For each (Integer SS_CheckIntegerA ) from 1 to BS_Index2 , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buffed_Unit[SS_CheckIntegerA] Equal to BS_Buffed_Unit[BS_Event_Index]
BS_Buff_Category[SS_CheckIntegerA] Equal to PStun_Category
Then - Actions
Set Variable Set SS_CountStuns = (SS_CountStuns + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SS_CountStuns Greater than or equal to 2
Then - Actions
Skip remaining actions
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SS_CountStuns Less than 2
Then - Actions
Unit - Remove Stunned buff from BS_Buffed_Unit[BS_Event_Index]
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Bloodlust Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ray of Disruption
((Target unit of ability being cast) belongs to an ally of (Owner of (Triggering unit)).) Equal to True
Actions
-------- -------------------- --------
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A01R"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A01S"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B00I"
Set Variable Set BS_Buff_Duration[BS_Index2] = "20.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
-------- -------------------- --------
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Deadly Posion
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Inner Fire
Actions
-------- -------------------- --------
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A040"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A03Z"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B016"
Set Variable Set BS_Buff_Duration[BS_Index2] = "60.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
-------- -------------------- --------
Enlightenment
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Mind Rot
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Rejuvenation to (Last created unit)
Unit - Order (Last created unit) to Night Elf Druid Of The Claw - Rejuvenation . (Target unit of ability being cast)
Custom script: RemoveLocation(udg_Point)
Enlightment Bonus Damage
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
DamageEventAmount Not equal to 0.00
Or - Any (Conditions) are true
Conditions
IsDamageSpell Equal to True
(Unit-type of DamageEventSource) Equal to Spirit Walker
(Unit-type of DamageEventSource) Equal to Necromancer
(Unit-type of DamageEventSource) Equal to Shaman
(Unit-type of DamageEventSource) Equal to Priest
(Unit-type of DamageEventSource) Equal to Sorceress
(Unit-type of DamageEventSource) Equal to Gryphon Rider
(Unit-type of DamageEventSource) Equal to Witch Doctor
(Unit-type of DamageEventSource) Equal to Shaman
(Unit-type of DamageEventSource) Equal to Spirit Walker
(Unit-type of DamageEventSource) Equal to Banshee
(Unit-type of DamageEventSource) Equal to Necromancer
(Unit-type of DamageEventSource) Equal to Frost Wyrm
(Unit-type of DamageEventSource) Equal to Obsidian Statue
(Unit-type of DamageEventSource) Equal to Druid of the Talon (Night Elf Form)
(Unit-type of DamageEventSource) Equal to Faerie Dragon
(Unit-type of DamageEventSource) Equal to Druid of the Talon (Storm Crow Form)
(Unit-type of DamageEventSource) Equal to Naga Siren
(Unit-type of DamageEventSource) Equal to Naga Siren
(DamageEventSource has buff Invisibility) Equal to True
Actions
Set Variable Set DamageEventAmount = (DamageEventAmount + (DamageEventAmount x 0.25))
Insgiht
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Invisibility
Actions
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A039"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A02V"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B00Z"
Set Variable Set BS_Buff_Duration[BS_Index2] = "30.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
Return Buff after Burrow
Events
Unit - A unit Finishes casting an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Bear Form
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Neutral Hostile)
(Ability being cast) Equal to Burrow (Scarab lvl 2)
(Ability being cast) Equal to Burrow (Scarab lvl 3)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Devotion Aura) Equal to True
(Level of Spell Book for (Triggering unit)) Equal to 0
(Level of Spell Book for (Triggering unit)) Equal to 0
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Devotion Aura) Equal to True
(Level of Spell Book for (Triggering unit)) Equal to 0
(Level of Spell Book for (Triggering unit)) Equal to 0
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Devotion Aura) Equal to True
(Level of Spell Book for (Triggering unit)) Equal to 0
(Level of Spell Book for (Triggering unit)) Equal to 0
Then - Actions
Unit - Add Spell Book to (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) is in StrongholdGroup.) Equal to True
(Level of Spell Book for (Triggering unit)) Equal to 0
Then - Actions
Animation - Change (Triggering unit) 's vertex coloring to ( 100 %, 10.00 %, 10.00 %) with 0 % transparency
Unit - Add Spell Book to (Triggering unit)
Unit Group - Add (Triggering unit) to StrongholdGroup
Else - Actions
Spider Trap Execution
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Goblin Land Mine
(Killing unit) Equal to No unit
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Silence\SilenceAreaBirth.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Disease Cloud for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add a 25.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Spider Trap Execution Copy
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Spider
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 0.50
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\BansheeMissile\BansheeMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 0.50
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Unit - Remove (Triggering unit) from the game
Swarm Detect
Events
Unit - A unit enters (Playable map area)
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Weapons\BansheeMissile\BansheeMissile.mdl
Special Effect - Set Color of (Last created special effect) to r: 200 , g: 255 , b: 0
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 2.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Spider for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Add a 8.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Swarm Detect Damage from Swarmer
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Wind Rider
(Unit-type of DamageEventTarget) Equal to Spider
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
(DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to False
Actions
Set Variable Set DamageEventAmount = "0.00"
Swarm Building Debuff
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Wind Rider
(DamageEventTarget is A structure) Equal to True
DamageEventAmount Greater than or equal to 45.00
(Current research level of R009 (Unexpected type: 'techcode') for (Owner of DamageEventSource)) Not equal to 0
IsDamageSpell Equal to False
(DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Matching unit) Equal to DamageEventTarget))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) in InfestedBuildingTable.) Equal to No unit
Then - Actions
Set Variable Set Point = (Position of DamageEventTarget)
Unit - Create 1 . Footman for (Owner of DamageEventSource) at Point facing Default building facing degrees
Unit - Move (Last created unit) instantly to Point
Unit - Add Locust Swarm to (Last created unit)
Unit - Order (Last created unit) to Undead Crypt Lord - Locust Swarm .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Picked unit).) in InfestedBuildingTable .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in InfestedBuildingTable .
Custom script: RemoveLocation(udg_Point)
Else - Actions
Unit - Set life of (Load 0 of (Key (Picked unit).) in InfestedBuildingTable.) to 100 %
Custom script: DestroyGroup (udg_UnitGroup)
Swarm Building Debuff Copy
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Wind Rider
DamageEventAmount Greater than 0.00
(Current research level of R009 (Unexpected type: 'techcode') for (Owner of DamageEventSource)) Not equal to 0
IsDamageSpell Equal to False
(Level of Item Armor Bonus (+1) for DamageEventSource) Equal to 0
Actions
Unit - Add Item Armor Bonus (+1) to DamageEventSource
Set Variable Set Point = (Position of DamageEventTarget)
Set Variable Set Point_2 = (Position of DamageEventSource)
Special Effect - Create a special effect at Point using Abilities\Weapons\BansheeMissile\BansheeMissile.mdl
Special Effect - Set Color of (Last created special effect) to r: 200 , g: 255 , b: 0
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 2.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Spider for (Owner of DamageEventSource) at Point_2 facing (Facing of DamageEventSource) degrees
Unit - Add a 8.00 second Generic expiration timer to (Last created unit)
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Unit - Remove Item Armor Bonus (+1) from DamageEventSource
Untitled Trigger 004
Events
Unit - A unit Dies
Conditions
((Triggering unit) is A structure) Equal to True
(Load 0 of (Key (Triggering unit).) in InfestedBuildingTable.) Not equal to No unit
Actions
Unit - Add a 0.25 second Generic expiration timer to (Load 0 of (Key (Triggering unit).) in InfestedBuildingTable.)
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in InfestedBuildingTable.).) in InfestedBuildingTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in InfestedBuildingTable .
Untitled Trigger 004 Copy
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
(Load 0 of (Key (Triggering unit).) in InfestedBuildingTable.) Not equal to No unit
Actions
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in InfestedBuildingTable.).) in InfestedBuildingTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in InfestedBuildingTable .
Ambusher Attack Copy 2
Events
Unit - A unit Starts the effect of an ability
Conditions
(Current research level of R003 (Unexpected type: 'techcode') for (Owner of (Triggering unit))) Not equal to 0
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
Then - Actions
Animation - Reset (Load 2 of (Key (Triggering unit).) in AmbushersTable.) 's animation
Unit - Remove (Load 2 of (Key (Triggering unit).) in AmbushersTable.) from the game
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Triggering unit).) from AmbushersTable.) Greater than or equal to 10.00
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Cripple to (Last created unit)
Unit - Order (Last created unit) to Undead Necromancer - Cripple . (Triggering unit)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Hashtable - Save 0.00 as 1 of (Key (Triggering unit).) in AmbushersTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in AmbushersTable .
Else - Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit Group - Add (Triggering unit) to AmbusherWaitGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
Then - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing 270.00 degrees
Hashtable - Save Handle Of (Last created unit) as 2 of (Key (Triggering unit).) in AmbushersTable .
Unit - Move (Last created unit) instantly to Point
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Hashtable - Save 0.00 as 1 of (Key (Triggering unit).) in AmbushersTable .
Else - Actions
Custom script: RemoveLocation(udg_Point)
Trigger - Turn on Ambush_Loop <gen>
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Ambush Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in AmbusherWaitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current research level of R003 (Unexpected type: 'techcode') for (Owner of (Picked unit))) Not equal to 0
((Picked unit) is alive) Equal to True
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from AmbushersTable.) + 0.25) as 1 of (Key (Picked unit).) in AmbushersTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) from AmbushersTable.) Equal to 10.00
Then - Actions
Else - Actions
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in AmbushersTable .
Unit Group - Remove (Picked unit) from SeasickGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in AmbusherWaitGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Ambusher Death Remove timer
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
(Unit-type of (Triggering unit)) Equal to Crypt Fiend
Actions
Animation - Reset (Load 2 of (Key (Triggering unit).) in AmbushersTable.) 's animation
Unit - Remove (Load 2 of (Key (Triggering unit).) in AmbushersTable.) from the game
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in AmbushersTable .
Ambush Dmg Combat
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Current research level of R003 (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
Or - Any (Conditions) are true
Conditions
(Unit-type of DamageEventTarget) Equal to Crypt Fiend
(Unit-type of DamageEventTarget) Equal to Crypt Fiend
DamageEventAmount Not equal to 0.00
Actions
Hashtable - Save 0.00 as 1 of (Key handle.) in AmbushersTable .
Webbed Ground
Events
Unit - A unit Finishes construction
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructed structure)) Equal to Ziggurat
Then - Actions
Set Variable Set Point = (Position of (Constructed structure))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 3 and shape Circle
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Random point in (Region centered at (Position of (Constructed structure)) with size (1200.00, 1200.00)))
Environment - Change terrain type at Point to Ashenvale - Grassy Dirt using variation -1 in an area of size 1 and shape Square
Custom script: RemoveLocation(udg_Point)
Else - Actions
CocoonBuild
Events
Unit - A unit Finishes construction
Conditions
(Unit-type of (Constructed structure)) Equal to Ziggurat
Actions
-------- --------------------------------------------------- --------
Set Variable Set Point = ((Position of (Constructed structure)) offset by 150.00 towards 244.20 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Constructed structure)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 1 of (Key (Constructed structure).) in CocoonHashTable .
Hashtable - Save Handle Of (Constructed structure) as 0 of (Key (Last created unit).) in CocoonHashTable .
-------- --------------------------------------------------- --------
Set Variable Set Point = ((Position of (Constructed structure)) offset by 160.00 towards 147.31 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Constructed structure)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 2 of (Key (Constructed structure).) in CocoonHashTable .
Hashtable - Save Handle Of (Constructed structure) as 0 of (Key (Last created unit).) in CocoonHashTable .
-------- --------------------------------------------------- --------
Set Variable Set Point = ((Position of (Constructed structure)) offset by 170.00 towards 55.90 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Constructed structure)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 3 of (Key (Constructed structure).) in CocoonHashTable .
Hashtable - Save Handle Of (Constructed structure) as 0 of (Key (Last created unit).) in CocoonHashTable .
-------- --------------------------------------------------- --------
Set Variable Set Point = ((Position of (Constructed structure)) offset by 180.00 towards 343.93 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Constructed structure)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 4 of (Key (Constructed structure).) in CocoonHashTable .
Hashtable - Save Handle Of (Constructed structure) as 0 of (Key (Last created unit).) in CocoonHashTable .
-------- --------------------------------------------------- --------
Unit Group - Add (Constructed structure) to CocoonGroup
CocoonLoop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in CocoonGroup and do (Actions)
Loop - Actions
Set Variable Set CocoonTimer = (Load 0 of (Key (Picked unit).) from CocoonHashTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CocoonTimer Greater than 0.00
Then - Actions
Hashtable - Save (CocoonTimer - 1.00) as 0 of (Key (Picked unit).) in CocoonHashTable .
Else - Actions
Hashtable - Save 40.00 as 0 of (Key (Picked unit).) in CocoonHashTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) in CocoonHashTable.) Equal to No unit
Then - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 150.00 towards 244.20 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 1 of (Key (Picked unit).) in CocoonHashTable .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 2 of (Key (Picked unit).) in CocoonHashTable.) Equal to No unit
Then - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 160.00 towards 147.31 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 2 of (Key (Picked unit).) in CocoonHashTable .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of (Key (Picked unit).) in CocoonHashTable.) Equal to No unit
Then - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 170.00 towards 55.90 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 3 of (Key (Picked unit).) in CocoonHashTable .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 4 of (Key (Picked unit).) in CocoonHashTable.) Equal to No unit
Then - Actions
Set Variable Set Point = ((Position of (Picked unit)) offset by 180.00 towards 343.93 degrees.)
Unit - Create 1 . Sentry Ward for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Animation - Change (Last created unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Rally from (Last created unit)
Custom script: RemoveLocation(udg_Point)
Hashtable - Save Handle Of (Last created unit) as 4 of (Key (Picked unit).) in CocoonHashTable .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Load 1 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 2 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 3 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 4 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
Then - Actions
Unit Group - Remove (Picked unit) from CocoonGroup .
Else - Actions
CocoonDie
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
(Unit-type of (Triggering unit)) Equal to Ziggurat
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Ziggurat
Then - Actions
Unit Group - Remove (Triggering unit) from CocoonGroup .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Then - Actions
Animation - Change (Triggering unit) 's animation speed to 100.00 % of its original speed
Unit Group - Add (Load 0 of (Key (Triggering unit).) in CocoonHashTable.) to CocoonGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Triggering unit) Equal to (Load 1 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 1 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Triggering unit) Equal to (Load 2 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 2 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Triggering unit) Equal to (Load 3 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 3 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Triggering unit) Equal to (Load 4 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 4 of (Key (Load 0 of (Key (Triggering unit).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CocoonHashTable .
Else - Actions
Else - Actions
Select Nerubian Eggs
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Berserk
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Load 1 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 2 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 3 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 4 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Clear selection for (Owner of (Triggering unit)) .
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 1 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 2 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 2 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 3 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 4 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 4 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
Select Nerubian Eggs Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Berserk
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((Unit-type of (Matching unit)) Equal to Ziggurat))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 0
Then - Actions
Selection - Clear selection for (Owner of (Triggering unit)) .
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Load 1 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 2 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 3 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Load 4 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 1 of (Key (Picked unit).) in CocoonHashTable.) to selection for (Owner of (Picked unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 2 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 2 of (Key (Picked unit).) in CocoonHashTable.) to selection for (Owner of (Picked unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 3 of (Key (Picked unit).) in CocoonHashTable.) to selection for (Owner of (Picked unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 4 of (Key (Picked unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Picked unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 4 of (Key (Picked unit).) in CocoonHashTable.) to selection for (Owner of (Picked unit))
Else - Actions
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup_2)
Select Nerubian Eggs Copy Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Berserk
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((Unit-type of (Matching unit)) Equal to Ziggurat))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Load 1 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 2 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 3 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Load 4 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Clear selection for (Owner of (Triggering unit)) .
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 1 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 1 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 2 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 2 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 2 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 3 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 3 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 4 of (Key (Triggering unit).) in CocoonHashTable.) Not equal to No unit
(Level of Item Damage Bonus (+1) for (Load 4 of (Key (Triggering unit).) in CocoonHashTable.)) Equal to 0
Then - Actions
Selection - Add (Load 4 of (Key (Triggering unit).) in CocoonHashTable.) to selection for (Owner of (Triggering unit))
Else - Actions
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup_2)
One Click One Train Script Broodling
Events
Game - Button for train Spider pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Spider
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy
Events
Game - Button for train Spider pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Spider
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 2
Events
Game - Button for train Arachnathid Earth-borer pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Arachnathid Earth-borer
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 3
Events
Game - Button for train Necromancer pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Necromancer
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 4
Events
Game - Button for train Gargoyle pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Gargoyle
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 5
Events
Game - Button for train Crypt Fiend pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Crypt Fiend
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 6
Events
Game - Button for train Crypt Fiend pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Crypt Fiend
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 7
Events
Game - Button for train Spirit Walker pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Spirit Walker
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 8
Events
Game - Button for train Shaman pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Shaman
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 9
Events
Game - Button for train Wind Rider pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Wind Rider
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 10
Events
Game - Button for train Tauren pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Tauren
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
One Click One Train Script Broodling Copy 11
Events
Game - Button for train Raider pressed.
Conditions
Actions
Set Variable Set UnitGroup = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 1
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Pause (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Wait 0.00 seconds
Set Variable Set UnitGroup_2 = (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is selected by (Owner of (Triggering unit)).) Equal to True) and (((Unit-type of (Matching unit)) Equal to Sentry Ward) and (((Matching unit) is An Ancient) Equal to False))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Unpause (Picked unit)
Unit - Order (Random unit from UnitGroup_2) to train/upgrade to a Raider
Custom script: DestroyGroup (udg_UnitGroup_2)
Else - Actions
Cocoon Work
Events
Unit - A unit Begins training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Animation - Change (Triggering unit) 's animation speed to 100.00 % of its original speed
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Unit - Set Unit: (Triggering unit) 's Integer Field: Unit Classification ('utyp') to Value: ((Unit: (Triggering unit)'s Integer Field: Unit Classification ('utyp')) Or 512)
Unit - Add classification of An Ancient to (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Load 0 of (Key (Triggering unit).) in CocoonHashTable.)) Not equal to Ziggurat
Then - Actions
Unit - Add Rally to (Triggering unit)
Else - Actions
Do nothing
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in (Units currently selected by (Owner of (Triggering unit)))) Greater than 1
Then - Actions
Selection - Remove (Triggering unit) from selection for (Owner of (Triggering unit))
Else - Actions
Cocoon Work Cancle
Events
Unit - A unit Cancels training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Wait 0.00 seconds
Animation - Change (Triggering unit) 's animation speed to 5.00 % of its original speed
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Unit - Remove classification of An Ancient from (Triggering unit)
Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
CocoonTech
Events
Unit - A unit Finishes training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Unit - Remove classification of An Ancient from (Triggering unit)
Set Variable Set Point = (Position of (Triggering unit))
Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
Unit - Turn collision for (Triggering unit) Off .
Unit - Move (Trained unit) instantly to Point
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Rally-Point of (Load 0 of (Key (Triggering unit).) in CocoonHashTable.) as a unit) Not equal to No unit
Then - Actions
Unit - Order (Trained unit) to Right-Click . (Rally-Point of (Load 0 of (Key (Triggering unit).) in CocoonHashTable.) as a unit)
Else - Actions
Set Variable Set Point_2 = (Rally-Point of (Load 0 of (Key (Triggering unit).) in CocoonHashTable.) as a point)
Unit - Order (Trained unit) to Move To . Point_2
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Web System
Events
Time - Every 0.50 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Unit-type of (Matching unit)) Equal to Peon) or ((Unit-type of (Matching unit)) Equal to Sentry Ward)) and (((Matching unit) has buff Devotion Aura) Equal to True)) and ((Level of Permanent Invisibility for (Matching unit)) Equal to 0)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Add Permanent Invisibility to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Unit-type of (Matching unit)) Equal to Peon) or ((Unit-type of (Matching unit)) Equal to Sentry Ward)) and (((Matching unit) has buff Devotion Aura) Equal to True)) and ((Level of Permanent Invisibility for (Matching unit)) Not equal to 0)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in (Units within 500.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to True) and ((Level of Spell Book for (Matching unit)) Not equal to 0))).)) Equal to 0
Then - Actions
Unit - Remove Permanent Invisibility from (Picked unit)
Else - Actions
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Unit-type of (Matching unit)) Equal to Peon) or ((Unit-type of (Matching unit)) Equal to Sentry Ward)) and (((Matching unit) has buff Devotion Aura) Equal to False)) and ((Level of Permanent Invisibility for (Matching unit)) Not equal to 0)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Permanent Invisibility from (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Burrow SFX
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Ability being cast) Equal to Burrow (Crypt Fiend)
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\Dig.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Line Attack
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Tauren
(DamageEventTarget is in SpiderLord_LineAttackGroup.) Equal to False
DamageEventAmount Greater than 0.00
Actions
Set Variable Set SpiderLordLineDamageAmount = DamageEventAmount
Set Variable Set DamageEventAmount = "0.00"
Set Variable Set Point = (Position of DamageEventSource)
Set Variable Set Point_2 = (Position of DamageEventTarget)
Unit Group - Remove all units from SpiderLord_LineAttackGroup .
For each (Integer A) from 1 to 6 , do (Actions)
Loop - Actions
Set Variable Set Point_3 = (Point offset by (120.00 x (Real((Integer A)))) towards (Angle from Point to Point_2) degrees.)
Special Effect - Create a special effect at Point_3 using Abilities\Spells\Undead\Impale\ImpaleMissTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point_3 using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit Group - Pick every unit in (Units within 140.00 of Point_3.) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
((Picked unit) is A flying unit) Equal to False
((Picked unit) belongs to an enemy of (Owner of DamageEventSource).) Equal to True
((Picked unit) is in SpiderLord_LineAttackGroup.) Equal to False
Then - Actions
Unit Group - Add (Picked unit) to SpiderLord_LineAttackGroup
Else - Actions
Custom script: RemoveLocation(udg_Point_3)
Unit - Create 1 . Footman for (Owner of DamageEventSource) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Set Variable Set Unit = (Last created unit)
Unit Group - Pick every unit in SpiderLord_LineAttackGroup and do (Actions)
Loop - Actions
Unit - Cause Unit to damage (Picked unit) , dealing (SpiderLordLineDamageAmount x 1.00) damage of attack type Normal and damage type Normal
Unit Group - Remove all units from SpiderLord_LineAttackGroup .
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Dark Swarm Cast Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
Actions
Unit - Add Parasite to (Triggering unit)
Unit - For (Triggering unit) , Ability Parasite , Hide ability: False
Acceleration
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
(Killing unit) Not equal to No unit
(Current research level of R000 (Unexpected type: 'techcode') for (Owner of (Triggering unit))) Not equal to 0
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Spider for (Owner of (Triggering unit)) at Point facing (Random angle) degrees
Unit - Disable supply usage for (Last created unit) .
Unit - Add a 60 second Generic expiration timer to (Last created unit)
Unit - Add classification of Summoned to (Last created unit)
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Last created unit)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Acceleration Research
Events
Unit - A unit Finishes research
Conditions
(Researched tech-type) Equal to R000 (Unexpected type: 'techcode')
Actions
Player - Make Spider Unavailable for training/construction by (Owner of (Triggering unit))
Player - Make Spider Available for training/construction by (Owner of (Triggering unit))
Acceleration Spider Tech
Events
Unit - A unit Finishes training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
(Unit-type of (Trained unit)) Equal to Spider
Actions
Unit - Replace (Trained unit) with a Spider using The old unit's relative life and mana
Set Variable Set Point = (Rally-Point of (Load 0 of (Key (Triggering unit).) in CocoonHashTable.) as a point)
Unit - Order (Last replaced unit) to Right-Click . Point
Custom script: RemoveLocation(udg_Point)
Feast
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Spider
(DamageEventTarget is A structure) Equal to False
DamageEventAmount Not equal to 0.00
(Current research level of R001 (Unexpected type: 'techcode') for (Owner of DamageEventSource)) Not equal to 0
(DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
Or - Any (Conditions) are true
Conditions
(DamageEventTarget has buff Stunned) Equal to True
(DamageEventTarget has buff Stunned (Pause)) Equal to True
(Current movement speed of DamageEventTarget) Equal to 0.00
(Current movement speed of DamageEventTarget) Less than (Default movement speed of DamageEventTarget)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Current movement speed of DamageEventTarget) Equal to 0.00
(DamageEventTarget has buff Stunned) Equal to True
(DamageEventTarget has buff Stunned (Pause)) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing 6.00 damage of attack type Normal and damage type Normal
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventTarget using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
Special Effect - Destroy (Last created special effect)
Trigger - Turn on (This trigger)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current movement speed of DamageEventTarget) Less than (Default movement speed of DamageEventTarget)
Then - Actions
Trigger - Turn off (This trigger)
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing 3.00 damage of attack type Normal and damage type Normal
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventTarget using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
Special Effect - Destroy (Last created special effect)
Trigger - Turn on (This trigger)
Else - Actions
Burrowed Spiderling Die
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Spider
(Unit-type of (Triggering unit)) Equal to Spider
(Unit-type of (Triggering unit)) Equal to Raider
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Raider
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Replace (Triggering unit) with a Raider using The old unit's relative life and mana
Unit - Kill (Triggering unit)
Special Effect - Create a special effect at Point using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Spider
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Replace (Triggering unit) with a Spider using The old unit's relative life and mana
Unit - Kill (Triggering unit)
Special Effect - Create a special effect at Point using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Spider
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\NightElf\CorrosiveBreath\ChimaeraAcidTargetArt.mdl
Special Effect - Destroy (Last created special effect)
Unit - Remove (Triggering unit) from the game
Custom script: RemoveLocation(udg_Point)
Else - Actions
Spawned Nerubian Dies
Events
Unit - A unit Dies
Conditions
((Triggering unit) is Summoned) Equal to True
(Unit-type of (Triggering unit)) Equal to Spider
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\NightElf\CorrosiveBreath\ChimaeraAcidTargetArt.mdl
Special Effect - Destroy (Last created special effect)
Unit - Remove (Triggering unit) from the game
Custom script: RemoveLocation(udg_Point)
Brood Keeper Minions Setup Copy
Events
Unit - A unit Finishes research
Conditions
(Researched tech-type) Equal to R004 (Unexpected type: 'techcode')
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is an illusion) Equal to False) and (((Unit-type of (Matching unit)) Equal to Raider) or ((Unit-type of (Matching unit)) Equal to Raider)))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Unit - Create 1 . Footman for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Add Locust Swarm to (Last created unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Picked unit)) Equal to Raider
Then - Actions
Unit - Order (Last created unit) to Undead Crypt Lord - Locust Swarm .
Else - Actions
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Picked unit).) in BroodKeeperMinions .
Hashtable - Save Handle Of (Picked unit) as 0 of (Key (Last created unit).) in BroodKeeperMinions .
Custom script: call RemoveLocation(udg_Point)
Brood Keeper Minions Setup
Events
Unit - A unit enters (Playable map area)
Conditions
(Unit-type of (Entering unit)) Equal to Raider
((Triggering unit) is alive) Equal to True
((Triggering unit) is an illusion) Equal to False
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current research level of R004 (Unexpected type: 'techcode') for (Owner of (Triggering unit))) Not equal to 0
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Locust Swarm to (Last created unit)
Unit - Order (Last created unit) to Undead Crypt Lord - Locust Swarm .
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Entering unit).) in BroodKeeperMinions .
Hashtable - Save Handle Of (Entering unit) as 0 of (Key (Last created unit).) in BroodKeeperMinions .
Custom script: call RemoveLocation(udg_Point)
Else - Actions
Trigger - Turn on Brood_Keeper_Minions_Move_Dummy <gen>
Brood Keeper Minions Move Dummy
Events
Time - Every 0.50 seconds of game time
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Number of units in (Units of type Raider)) Not equal to 0
(Number of units in (Units of type Raider)) Not equal to 0
Then - Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is an illusion) Equal to False) and (((Unit-type of (Matching unit)) Equal to Raider) or ((Unit-type of (Matching unit)) Equal to Raider)))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Unit - Move (Load 0 of (Key (Picked unit).) in BroodKeeperMinions.) instantly to Point
Custom script: call RemoveLocation(udg_Point)
Custom script: call DestroyGroup (udg_UnitGroup)
Else - Actions
Trigger - Turn off (This trigger)
Brood Keeper Minions Respawn
Events
Time - Every 15.00 seconds of game time
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in (Units of type Raider)) Not equal to 0
Then - Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is an illusion) Equal to False) and ((Unit-type of (Matching unit)) Equal to Raider))))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Order (Load 0 of (Key (Picked unit).) in BroodKeeperMinions.) to Undead Crypt Lord - Locust Swarm .
Custom script: call DestroyGroup (udg_UnitGroup)
Else - Actions
Brood Keeper Minions Destroy
Events
Unit - A unit Dies
Conditions
((Triggering unit) is an illusion) Equal to False
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Raider
(Unit-type of (Triggering unit)) Equal to Raider
Actions
Unit - Kill (Load 0 of (Key (Triggering unit).) in BroodKeeperMinions.)
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in BroodKeeperMinions.).) in BroodKeeperMinions .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in BroodKeeperMinions .
Pick up Egg
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Sentry Ward
Then - Actions
Hashtable - Save (Life of (Target unit of ability being cast)) as 0 of (Key (Triggering unit).) in BroodGuardTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.) Not equal to No unit
Then - Actions
Unit Group - Add (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.) to CocoonGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Target unit of ability being cast) Equal to (Load 1 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 1 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Target unit of ability being cast).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Target unit of ability being cast) Equal to (Load 2 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 2 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Target unit of ability being cast).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Target unit of ability being cast) Equal to (Load 3 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 3 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Target unit of ability being cast).) in CocoonHashTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Target unit of ability being cast) Equal to (Load 4 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable.)
Then - Actions
Hashtable - Save Handle Of No unit as 4 of (Key (Load 0 of (Key (Target unit of ability being cast).) in CocoonHashTable.).) in CocoonHashTable .
Hashtable - Clear all child hashtables of child (Key (Target unit of ability being cast).) in CocoonHashTable .
Else - Actions
Else - Actions
Unit - Remove (Target unit of ability being cast) from the game
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Triggering unit)
Unit - Remove Dark Conversion (Malganis) from (Triggering unit)
Unit - Add Howl of Terror (Neutral Hostile) to (Triggering unit)
Else - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Target must be a Nerubian Egg."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Drop an Egg
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Howl of Terror (Neutral Hostile)
Actions
Unit - Add Dark Conversion (Malganis) to (Triggering unit)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Remove Howl of Terror (Neutral Hostile) from (Triggering unit)
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Sentry Ward for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Set life of (Last created unit) to (Load 0 of (Key (Triggering unit).) from BroodGuardTable.)
Unit - Remove Rally from (Last created unit)
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Die with Egg
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Raider
((Triggering unit) is an illusion) Equal to False
(Level of Item Hero Stat Bonus (+1 Agility) for (Triggering unit)) Not equal to 0
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current research level of R000 (Unexpected type: 'techcode') for (Owner of (Triggering unit))) Not equal to 0
Then - Actions
Trigger - Run Acceleration <gen> (ignoring conditions)
Else - Actions
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Remove Howl of Terror (Neutral Hostile) from (Triggering unit)
Unit - Add Dark Conversion (Malganis) to (Triggering unit)
Easy Use Nerubian Egg Pickup
Events
Unit - A unit Is issued an order targeting an object
Conditions
(Unit-type of (Target unit of issued order)) Equal to Sentry Ward
(Unit-type of (Ordered unit)) Equal to Raider
(Level of Item Hero Stat Bonus (+1 Agility) for (Ordered unit)) Equal to 0
(Issued order) Not equal to (Order(attack))
Actions
Trigger - Turn off (This trigger)
Unit - Order (Ordered unit) to Special Malganis - Dark Conversion . (Target unit of issued order)
Trigger - Turn on (This trigger)
Drop an Egg Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Burrow (Crypt Fiend)
(Unit-type of (Triggering unit)) Equal to Raider
(Level of Item Hero Stat Bonus (+1 Agility) for (Triggering unit)) Not equal to 0
Actions
Unit - Add Dark Conversion (Malganis) to (Triggering unit)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Remove Howl of Terror (Neutral Hostile) from (Triggering unit)
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Sentry Ward for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Set life of (Last created unit) to (Load 0 of (Key (Triggering unit).) from BroodGuardTable.)
Unit - Remove Rally from (Last created unit)
Unit - Move (Last created unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Bloodlust
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spell Book
Actions
-------- -------------------- --------
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A01R"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A01S"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B002"
Set Variable Set BS_Buff_Duration[BS_Index2] = "10.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
-------- -------------------- --------
Made by Noobsmoke

Spell Steal exemple
Spell Steal
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set SpellSteal_Caster = (Casting unit)
Set Variable Set SpellSteal_Target = (Target unit of ability being cast)
Set Variable Set SpellSteal_Buffs_Number = "1"
Set Variable Set SpellSteal_Category[1] = "1"
Set Variable Set SpellSteal_Categories = "1"
Trigger - Run Spell_Steal_Run <gen> (ignoring conditions)
Made by Noobsmoke

Dispell example
Dispell
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Item Damage Bonus (+1)
Actions
Set Variable Set Dispell_Target = (Target unit of ability being cast)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Dispell_Target belongs to an ally of (Owner of (Triggering unit)).) Equal to True
Then - Actions
Set Variable Set Dispell_Buffs_Type = "0"
Set Variable Set Dispell_Buffs_Number = "1"
Set Variable Set Dispell_Category[1] = "1"
Set Variable Set Dispell_Category[2] = "2"
Set Variable Set Dispell_Category[3] = "4"
Set Variable Set Dispell_Categories = "3"
Else - Actions
Set Variable Set Dispell_Buffs_Type = "1"
Set Variable Set Dispell_Buffs_Number = "1"
Set Variable Set Dispell_Category[1] = "1"
Set Variable Set Dispell_Categories = "1"
Trigger - Run Dispell_Run <gen> (ignoring conditions)
Made by Noobsmoke
Buff System v1.8
Stun Buff
Events
Game - PStun_Event becomes Equal to 1.00
Conditions
BS_Buff_Category[BS_Event_Index] Equal to PStun_Category
Actions
Set Variable Set PStun_Event = "0.00"
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Event_Index] has buff Vampiric Aura) Equal to False
Then - Actions
Set Variable Set PStun_LeakPoint = (Center of (Playable map area))
Unit - Create 1 . Footman for Neutral Hostile at PStun_LeakPoint facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . BS_Buffed_Unit[BS_Event_Index]
Custom script: RemoveLocation(udg_PStun_LeakPoint)
Else - Actions
Made by Noobsmoke
Buff System v1.8
Dispell Run
Events
Conditions
Actions
Set Variable Set Dispell_BuffCount = "0"
For each (Integer Dispell_IntegerA ) from 1 to BS_Index2 , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buffed_Unit[Dispell_IntegerA] Equal to Dispell_Target
BS_Buff_Type[Dispell_IntegerA] Equal to Dispell_Buffs_Type
Dispell_BuffCount Less than Dispell_Buffs_Number
Then - Actions
For each (Integer Dispell_IntegerB ) from 1 to Dispell_Categories , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buff_Category[Dispell_IntegerA] Equal to Dispell_Category[Dispell_IntegerB]
Then - Actions
Set Variable Set BS_Buff_Duration[Dispell_IntegerA] = "0.00"
Set Variable Set Dispell_BuffCount = (Dispell_BuffCount + 1)
Set Variable Set Dispell_IntegerB = Dispell_Categories
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Dispell_BuffCount Greater than Dispell_Buffs_Number
Then - Actions
Set Variable Set Dispell_IntegerA = BS_Index2
Else - Actions
Else - Actions
Else - Actions
Made by Noobsmoke
Buff System v1.8
Spell Steal Run
Events
Conditions
Actions
Set Variable Set SpellSteal_BuffCount = "0"
For each (Integer SpellSteal_IntegerA ) from 1 to BS_Index2 , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buffed_Unit[SpellSteal_IntegerA] Equal to SpellSteal_Target
BS_Buff_Type[SpellSteal_IntegerA] Equal to 1
SpellSteal_BuffCount Less than SpellSteal_Buffs_Number
Then - Actions
For each (Integer SpellSteal_IntegerB ) from 1 to SpellSteal_Categories , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buff_Category[SpellSteal_IntegerA] Equal to SpellSteal_Category[SpellSteal_IntegerB]
Then - Actions
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffed_Unit[BS_Index2] = SpellSteal_Caster
Set Variable Set BS_Buff_Ability[BS_Index2] = BS_Buff_Ability[SpellSteal_IntegerA]
Set Variable Set BS_Bonus_Ability[BS_Index2] = BS_Bonus_Ability[SpellSteal_IntegerA]
Set Variable Set BS_Use_Bonus[BS_Index2] = BS_Use_Bonus[SpellSteal_IntegerA]
Set Variable Set BS_Buff[BS_Index2] = BS_Buff[SpellSteal_IntegerA]
Set Variable Set BS_Buff_Duration[BS_Index2] = BS_Buff_Duration[SpellSteal_IntegerA]
Set Variable Set BS_Buff_Category[BS_Index2] = BS_Buff_Category[SpellSteal_IntegerA]
Set Variable Set BS_Stack[BS_Index2] = BS_Stack[SpellSteal_IntegerA]
Set Variable Set BS_MaxStack[BS_Index2] = BS_MaxStack[SpellSteal_IntegerA]
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = BS_Permanent[SpellSteal_IntegerA]
Set Variable Set BS_MagicImmune[BS_Index2] = BS_MagicImmune[SpellSteal_IntegerA]
Trigger - Run Run_Buffing <gen> (ignoring conditions)
Set Variable Set BS_Buff_Duration[SpellSteal_IntegerA] = "0.00"
Set Variable Set SpellSteal_BuffCount = (SpellSteal_BuffCount + 1)
Set Variable Set SpellSteal_IntegerB = SpellSteal_Categories
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellSteal_BuffCount Greater than SpellSteal_Buffs_Number
Then - Actions
Set Variable Set SpellSteal_IntegerA = BS_Index2
Else - Actions
Else - Actions
Else - Actions
Made by Noobsmoke
Buff System v1.8
Debuff Run
Events
Conditions
Actions
For each (Integer Debuff_IntegerB ) from 1 to Debuff_Number , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Debuff_Unit has buff Debuff_Buffs[Debuff_IntegerB]) Equal to True
Then - Actions
For each (Integer Debuff_IntegerA ) from 1 to BS_Index2 , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buffed_Unit[Debuff_IntegerA] Equal to Debuff_Unit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BS_Buff[Debuff_IntegerA] Equal to Debuff_Buffs[Debuff_IntegerB]
Then - Actions
Set Variable Set BS_Permanent[Debuff_IntegerA] = "false"
Set Variable Set BS_Buff_Duration[Debuff_IntegerA] = "0.00"
Else - Actions
Else - Actions
Else - Actions
Made by Noobsmoke

Category 2 is for stuns. Stuns have duration time reduced by 50% on heroes.
Category 2
Events
Game - BS_Buffed_Event becomes Equal to 1.00
Game - BS_Buffed_Event becomes Equal to 3.00
Conditions
BS_Buff_Category[BS_Event_Index] Equal to 2
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Event_Index] is A Hero) Equal to True
Then - Actions
Set Variable Set BS_Buff_Duration[BS_Event_Index] = (BS_Buff_Duration[BS_Event_Index] x 0.50)
Else - Actions
Set Variable Set PStun_Event = "1.00"
Made by Noobsmoke

Category 3 is for disarm. Disarm have duration time reduced by 15% on heroes.
Category 3
Events
Game - BS_Buffed_Event becomes Equal to 1.00
Game - BS_Buffed_Event becomes Equal to 3.00
Conditions
BS_Buff_Category[BS_Event_Index] Equal to 3
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Event_Index] is A Hero) Equal to True
Then - Actions
Set Variable Set BS_Buff_Duration[BS_Event_Index] = (BS_Buff_Duration[BS_Event_Index] x 0.85)
Else - Actions
Made by Noobsmoke

Category 4 is for slow. Slow have duration time reduced by 50% on heroes.
Category 4
Events
Game - BS_Buffed_Event becomes Equal to 1.00
Game - BS_Buffed_Event becomes Equal to 3.00
Conditions
BS_Buff_Category[BS_Event_Index] Equal to 4
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BS_Buffed_Unit[BS_Event_Index] is A Hero) Equal to True
Then - Actions
Set Variable Set BS_Buff_Duration[BS_Event_Index] = (BS_Buff_Duration[BS_Event_Index] x 0.50)
Else - Actions
Tunnel
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set Point_2 = (Position of (Target unit of ability being cast))
Set Variable Set Unit = (Target unit of ability being cast)
Set Variable Set TargetMindBlast = (Triggering unit)
Unit - Turn collision for TargetMindBlast Off .
Unit - Turn collision for Unit Off .
Unit - Hide Unit
Unit - Hide TargetMindBlast
Unit - Move TargetMindBlast instantly to Point_2
Unit - Move Unit instantly to Point
Unit - Move TargetMindBlast instantly to Point_2
Unit - Move Unit instantly to Point
Unit - Turn collision for TargetMindBlast On .
Unit - Turn collision for Unit On .
Unit - Unhide Unit
Unit - Unhide TargetMindBlast
Unit - Add Unload (Air Transports), (Goblin Zeppelin) to TargetMindBlast
Unit - Order TargetMindBlast to Unload All At . Point_2
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Wait 0.00 seconds
Set Variable Set Point = (Position of TargetMindBlast)
Set Variable Set Point_2 = (Position of Unit)
Unit - Turn collision for TargetMindBlast Off .
Unit - Turn collision for Unit Off .
Unit - Hide Unit
Unit - Hide TargetMindBlast
Unit - Move TargetMindBlast instantly to Point_2
Unit - Move Unit instantly to Point
Unit - Move TargetMindBlast instantly to Point_2
Unit - Move Unit instantly to Point
Unit - Turn collision for TargetMindBlast On .
Unit - Turn collision for Unit On .
Unit - Unhide Unit
Unit - Unhide TargetMindBlast
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Tunnel Cast
Events
Unit - A unit Begins channeling an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Item Hero Stat Bonus (+1 Agility) for (Target unit of ability being cast)) Equal to 0
Then - Actions
Animation - Add the work animation tag to (Triggering unit)
Animation - Add the work animation tag to (Target unit of ability being cast)
Unit - Remove Load (Goblin Zeppelin) from (Triggering unit)
Unit - Remove Unload (Air Transports), (Goblin Zeppelin) from (Triggering unit)
Unit - Remove Dark Conversion (Malganis) from (Target unit of ability being cast)
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Triggering unit)
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Target unit of ability being cast)
Else - Actions
Trigger - Turn off Tunnel_End_Cast <gen>
Unit - Order (Triggering unit) to Stop .
Trigger - Turn on Tunnel_End_Cast <gen>
Tunnel End Cast
Events
Unit - A unit Starts the effect of an ability
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
Animation - Remove the work animation tag to (Triggering unit)
Animation - Remove the work animation tag to (Target unit of ability being cast)
Unit - Add Load (Goblin Zeppelin) to (Triggering unit)
Unit - Add Unload (Air Transports), (Goblin Zeppelin) to (Triggering unit)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Target unit of ability being cast)
Unit - Add Dark Conversion (Malganis) to (Target unit of ability being cast)
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Nerubian Traps
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(DamageEventSource belongs to an enemy of (Owner of DamageEventTarget).) Equal to True
(DamageEventTarget is A structure) Equal to True
(DamageEventSource is A structure) Equal to False
(DamageEventSource is A ground unit) Equal to True
DamageEventAmount Not equal to 0.00
Or - Any (Conditions) are true
Conditions
(Current research level of R00K (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(Current research level of R00L (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(Current research level of R00M (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
Actions
Set Variable Set Point = (Position of DamageEventTarget)
Set Variable Set Point_2 = (Position of DamageEventSource)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 400.00
(Current research level of R00L (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(Random integer number between 1 and 100) Less than or equal to 30
Then - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Spells\Items\AIfb\AIfbSpecialArt.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause DamageEventTarget to damage DamageEventSource , dealing 24.00 damage of attack type Spells and damage type Normal
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 400.00
(Current research level of R00K (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(Random integer number between 1 and 100) Less than or equal to 20
Then - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Spells\Items\AIob\AIobSpecialArt.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Weapons\LichMissile\LichMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Spells\Other\FrostBolt\FrostBoltMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of DamageEventTarget) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Frost Nova to (Last created unit)
Unit - Order (Last created unit) to Undead Lich - Frost Nova . DamageEventSource
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to 400.00
(Current research level of R00M (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(Random integer number between 1 and 100) Less than or equal to 10
Then - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using abilities\weapons\catapult\catapultmissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of DamageEventTarget) at Point facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Storm Bolt to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . DamageEventSource
Else - Actions
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Untitled Trigger 010
Events
Unit - A unit Finishes research
Conditions
Or - Any (Conditions) are true
Conditions
(Researched tech-type) Equal to R00K (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00L (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00M (Unexpected type: 'techcode')
Actions
Player - Enable Devotion Aura for (Owner of (Triggering unit))
Start Requirement
Events
Unit - A unit Begins research
Conditions
Or - Any (Conditions) are true
Conditions
(Researched tech-type) Equal to R00K (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00L (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00M (Unexpected type: 'techcode')
Actions
Player - Set the current research level of R00N (Unexpected type: 'techcode') to 0 for (Owner of (Triggering unit))
Cancel Requirement
Events
Unit - A unit Cancels research
Conditions
Or - Any (Conditions) are true
Conditions
(Researched tech-type) Equal to R00K (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00L (Unexpected type: 'techcode')
(Researched tech-type) Equal to R00M (Unexpected type: 'techcode')
Actions
Player - Set the current research level of R00N (Unexpected type: 'techcode') to 1 for (Owner of (Triggering unit))
Untitled Trigger 005
Events
Time - Every 0.33 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((Matching unit) has buff Disease) Equal to True))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 0
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Raider
(Unit-type of (Picked unit)) Equal to Tauren
(Unit-type of (Picked unit)) Equal to Shaman
(Unit-type of (Picked unit)) Equal to Spirit Walker
(Unit-type of (Picked unit)) Equal to Crypt Fiend
(Unit-type of (Picked unit)) Equal to Necromancer
(Unit-type of (Picked unit)) Equal to Keeper of the Grove
(Unit-type of (Picked unit)) Equal to Blood Mage
(Unit-type of (Picked unit)) Equal to Death Knight
(Unit-type of (Picked unit)) Equal to Crypt Lord
(Unit-type of (Picked unit)) Equal to Raider
(Unit-type of (Picked unit)) Equal to Tauren
(Unit-type of (Picked unit)) Equal to Crypt Lord
(Unit-type of (Picked unit)) Equal to Crypt Fiend
(Unit-type of (Picked unit)) Equal to Crypt Fiend
(Unit-type of (Picked unit)) Equal to Crypt Fiend
Then - Actions
Unit - Remove Disease buff from (Picked unit)
Else - Actions
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup)
Untitled Trigger 007
Events
Unit - A unit Begins casting an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Raider
(Unit-type of (Target unit of ability being cast)) Equal to Tauren
(Unit-type of (Target unit of ability being cast)) Equal to Shaman
(Unit-type of (Target unit of ability being cast)) Equal to Spirit Walker
(Unit-type of (Target unit of ability being cast)) Equal to Crypt Fiend
(Unit-type of (Target unit of ability being cast)) Equal to Necromancer
(Unit-type of (Target unit of ability being cast)) Equal to Raider
(Unit-type of (Target unit of ability being cast)) Equal to Tauren
(Unit-type of (Target unit of ability being cast)) Equal to Crypt Fiend
(Unit-type of (Target unit of ability being cast)) Equal to Crypt Fiend
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Possession
(Ability being cast) Equal to Possession (Channeling)
(Ability being cast) Equal to Possession (Neutral Hostile)
(Ability being cast) Equal to Charm (Neutral Hostile)
(Ability being cast) Equal to Charm
Actions
Unit - Order (Triggering unit) to Stop .
Bommerang
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Wind Rider
DamageEventAmount Greater than 5.00
IsDamageSpell Equal to False
Actions
Set Variable Set Point = (Position of DamageEventTarget)
Set Variable Set Point_2 = (Position of DamageEventSource)
Unit - Create 1 Wind Rider for Neutral Passive at Point facing Point_2
Unit - Move (Last created unit) instantly to Point
Unit - Order (Last created unit) to Attack Once . DamageEventSource
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(DamageEventTarget is A ground unit) Equal to True
Then - Actions
Animation - Change (Last created unit) flying height to 0.00 at 0.00
Else - Actions
Animation - Change (Last created unit) flying height to (Current flying height of DamageEventTarget) at 0.00
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Bommerang Ignore
Events
Game - PreDamageEvent becomes Equal to 1.00
Game - DamageEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Wind Rider
Actions
Set Variable Set DamageAmount = "0.00"
Untitled Trigger 006
Events
Player - Player 1 (Red) skips a cinematic sequence
Conditions
Actions
Unit - Create 1 . Firelord for Player 1 (Red) at (Player 1 (Red) start location) facing Default building facing degrees
Hero - Set (Last created unit) Hero-level to 10 , Hide level-up graphics
Thunder Strike
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Level of Bash for DamageEventSource) Not equal to 0
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
DamageEventAttackT Equal to 6
DamageEventDamageT Not equal to 9
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 100) Less than or equal to (30 + (0 x (Level of Bash for DamageEventSource)))
Then - Actions
Trigger - Turn off (This trigger)
Set Variable Set Point = (Position of DamageEventSource)
Set Variable Set UnitGroup = (Units within 700.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((((Matching unit) is alive) Equal to True) and ((Owner of (Matching unit)) Not equal to Neutral Passive)) and ((((Matching unit) belongs to an ally of (Owner of DamageEventSource).) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))))))).)
Set Variable Set UnitGroup_2 = (Random (1 + (1 x (Level of Bash for DamageEventSource))) units from UnitGroup)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Unit - Cause DamageEventSource to damage (Picked unit) , dealing (20.00 + (10.00 x (Real((Level of Bash for DamageEventSource))))) damage of attack type Spells and damage type Normal
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using war3mapImported\GH3_Lightning.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Weapons\ChimaeraLightningMissile\ChimaeraLightningMissile.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: DestroyGroup(udg_UnitGroup_2)
Trigger - Turn on (This trigger)
Else - Actions
Untitled Trigger 025
Events
Unit - A unit Is issued an order targeting an object
Unit - A unit Is issued an order targeting a point
Unit - A unit Is issued an order with no target
Conditions
(Unit-type of (Triggering unit)) Equal to Firelord
Actions
Animation - Change (Triggering unit) flying height to 0.00 at 1.00
Animation - Change (Triggering unit) flying height to 0.00 at 0.00
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Lightning Rod
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Acid Bomb
Actions
Set Variable Set Point = (Position of (Triggering unit))
Hashtable - Save 15.25 as 1 of (Key (Target unit of ability being cast).) in LightningRodTable .
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Target unit of ability being cast).) in LightningRodTable .
Unit Group - Add (Target unit of ability being cast) to LightningRodGroup
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Storm Bolt to (Last created unit)
Unit - Set level of Storm Bolt for (Last created unit) to (Level of Acid Bomb for (Triggering unit))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . (Target unit of ability being cast)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Trigger - Turn on Lightning_Rod_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Lightning Rod Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in LightningRodGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from LightningRodTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
((Picked unit) has buff Acid Bomb) Equal to True
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from LightningRodTable.) - 0.25) as 1 of (Key (Picked unit).) in LightningRodTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Load 1 of (Key (Picked unit).) from LightningRodTable.) Equal to 0.25
(Load 1 of (Key (Picked unit).) from LightningRodTable.) Equal to 3.25
(Load 1 of (Key (Picked unit).) from LightningRodTable.) Equal to 6.25
(Load 1 of (Key (Picked unit).) from LightningRodTable.) Equal to 9.25
(Load 1 of (Key (Picked unit).) from LightningRodTable.) Equal to 12.25
Then - Actions
Set Variable Set Point = (Position of (Picked unit))
Unit - Create 1 . Footman for (Owner of (Load 0 of (Key (Picked unit).) in LightningRodTable.)) at Point facing Default building facing degrees
Unit - Add Storm Bolt to (Last created unit)
Unit - Set level of Storm Bolt for (Last created unit) to (Level of Acid Bomb for (Load 0 of (Key (Picked unit).) in LightningRodTable.))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in LightningRodTable .
Unit Group - Remove (Picked unit) from LightningRodGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in LightningRodGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Zephyr Waley
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Carrion Swarm
Actions
Wait 0.00 seconds
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set Point_2 = (Point offset by 290.00 towards (Angle from Point to (Target point of ability being cast)) degrees.)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Order (Last created unit) to Neutral Beastmaster - Stampede . Point_2
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Set Variable Set Point_2 = (Point offset by 700.00 towards (Facing of (Triggering unit)) degrees.)
Set Variable Set Point_3 = (Point_2 offset by 290.00 towards (Facing of (Triggering unit)) degrees.)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point_2 facing (Facing of (Triggering unit)) degrees
Unit - Order (Last created unit) to Neutral Beastmaster - Stampede . Point_3
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point_3)
Set Variable Set Point_2 = (Point offset by 1000.00 towards (Facing of (Triggering unit)) degrees.)
Set Variable Set Point_3 = (Point_2 offset by 290.00 towards (Facing of (Triggering unit)) degrees.)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point_2 facing (Facing of (Triggering unit)) degrees
Unit - Order (Last created unit) to Neutral Beastmaster - Stampede . Point_3
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point_3)
Set Variable Set Point_2 = (Point offset by 1400.00 towards (Facing of (Triggering unit)) degrees.)
Set Variable Set Point_3 = (Point_2 offset by 290.00 towards (Facing of (Triggering unit)) degrees.)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point_2 facing (Facing of (Triggering unit)) degrees
Unit - Order (Last created unit) to Neutral Beastmaster - Stampede . Point_3
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point_3)
Crystal Shell Learn
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Spiked Carapace
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spiked Carapace for (Triggering unit)) Equal to 1
Then - Actions
Unit - Add Spell Damage Reduction to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spiked Carapace for (Triggering unit)) Equal to 2
Then - Actions
Unit - Set level of Spell Damage Reduction for (Triggering unit) to 2
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spiked Carapace for (Triggering unit)) Equal to 3
Then - Actions
Unit - Set level of Spell Damage Reduction for (Triggering unit) to 3
Else - Actions
Crystal Shell
Events
Unit - A unit Starts the effect of an ability
Conditions
(Unit-type of (Triggering unit)) Not equal to Footman
(Target unit of ability being cast) Not equal to No unit
(Level of Spiked Carapace for (Target unit of ability being cast)) Not equal to 0
(Ability being cast) Not equal to Siphon Mana
(Ability being cast) Not equal to Life Drain
(Ability being cast) Not equal to Death Coil
(Ability being cast) Not equal to Frost Arrows
(Ability being cast) Not equal to Searing Arrows
((Triggering unit) belongs to an enemy of (Owner of (Target unit of ability being cast)).) Equal to True
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 100) Less than or equal to (10 + (10 x (Level of Spiked Carapace for (Target unit of ability being cast))))
Then - Actions
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Weapons\VengeanceMissile\VengeanceMissile.mdl
Special Effect - Set Color of (Last created special effect) to r: 255 , g: 25 , b: 120
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set Order = (Current order of (Triggering unit))
Set Variable Set Caster = (Triggering unit)
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Target unit of ability being cast)) at Point facing Default building facing degrees
Set Variable Set Unit = (Last created unit)
Unit - Add (Ability being cast) to Unit
Unit - Set level of (Ability being cast) for Unit to (Level of (Ability being cast) for Caster)
Custom script: IssueTargetOrderById(udg_Unit,udg_Order,udg_Caster)
Unit - Add a 1.00 second Generic expiration timer to Unit
Custom script: RemoveLocation(udg_Point)
Else - Actions
Crystal Shell UnLearn
Events
Unit - A unit Uses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Tome of Retraining
Actions
Unit - Remove Spell Damage Reduction from (Triggering unit)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Seismic Activity
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = (Position of (Triggering unit))
Hashtable - Save 5.00 as 1 of (Key (Triggering unit).) in SeismicActivityTable .
Unit Group - Add (Triggering unit) to SeismicActivityGroup
Special Effect - Create a special effect at Point using war3mapImported\Cataclysm.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\Explosion.mdx
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Thunder Clap to (Last created unit)
Unit - Set level of Thunder Clap for (Last created unit) to (Level of Channel for (Triggering unit))
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap .
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Trigger - Turn on Seismic_Activity_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Seismic Activity Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SeismicActivityGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from SeismicActivityTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
(Load 1 of (Key (Picked unit).) from SeismicActivityTable.) Not equal to 0.00
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from SeismicActivityTable.) - 0.25) as 1 of (Key (Picked unit).) in SeismicActivityTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Load 1 of (Key (Picked unit).) from SeismicActivityTable.) Equal to 4.00
(Load 1 of (Key (Picked unit).) from SeismicActivityTable.) Equal to 3.00
(Load 1 of (Key (Picked unit).) from SeismicActivityTable.) Equal to 2.00
(Load 1 of (Key (Picked unit).) from SeismicActivityTable.) Equal to 1.00
Then - Actions
Set Variable Set Point = (Position of (Picked unit))
Special Effect - Create a special effect at Point using war3mapImported\Cataclysm.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\Explosion.mdx
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of (Picked unit)) at Point facing Default building facing degrees
Unit - Add Thunder Clap to (Last created unit)
Unit - Set level of Thunder Clap for (Last created unit) to (Level of Channel for (Picked unit))
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap .
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in SeismicActivityTable .
Unit Group - Remove (Picked unit) from SeismicActivityGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in SeismicActivityGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Earthen Throne
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to War Stomp
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for Neutral Hostile at Point facing 0.00 degrees
Unit - Add Slow Aura (Tornado) to (Last created unit)
Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
Set Variable Set RealSacrifice = "0.00"
For each (Integer A) from 0 to 31 , do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Point offset by 900.00 towards RealSacrifice degrees.)
Set Variable Set RealSacrifice = (RealSacrifice + 11.25)
Unit - Create 1 . Footman for Neutral Passive at Point_2 facing (Angle from Point_2 to Point) degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point_2
Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Earthen Throne Effect
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
((DamageEventTarget has buff Slow) Equal to True) and ((DamageEventSource has buff Slow) Equal to False)
DamageEventAmount Not equal to 0.00
Actions
Set Variable Set DamageEventAmount = (DamageEventAmount / 2.00)
Piercing Strike
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Level of Bash for DamageEventSource) Not equal to 0
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
DamageEventAttackT Equal to 6
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 100) Less than or equal to (10 + (10 x (Level of Bash for DamageEventSource)))
Then - Actions
Set Variable Set DamageEventType = DamageTypeCriticalStrike
Set Variable Set DamageEventArmorPierced = "100.00"
Special Effect - Create a special effect attached to the overhead (Unexpected type: 'attachpoint') of DamageEventTarget using war3mapImported\Armor Penetration Orange.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventTarget using Abilities\Spells\Human\SpellSteal\SpellStealMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of DamageEventTarget using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
Special Effect - Destroy (Last created special effect)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Lit the Candles
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = (Target point of ability being cast)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\LavaSpawnMissile\LavaSpawnBirthMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Sentry Ward for (Owner of (Triggering unit)) at Point facing 270.00 degrees
Unit - Add a 180.00 second Generic expiration timer to (Last created unit)
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in LitCandleTable .
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Lit the Candles Copy
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Sentry Ward
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
Special Effect - Set Scale of (Last created special effect) to 0.50
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\LavaSpawnMissile\LavaSpawnBirthMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 1.00
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Killing unit) Not equal to No unit
Then - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Cripple (Warlock) to (Last created unit)
Unit - Set level of Cripple (Warlock) for (Last created unit) to (Level of Channel for (Load 0 of (Key (Triggering unit).) in LitCandleTable.))
Unit - Order (Last created unit) to Undead Necromancer - Cripple . (Load 0 of (Key (Triggering unit).) in LitCandleTable.)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Else - Actions
Unit - Remove (Triggering unit) from the game
Custom script: RemoveLocation(udg_Point)
Deep Freeze Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Storm Bolt
(Unit-type of (Target unit of ability being cast)) Not equal to Lava Spawn (Level 1)
(Unit-type of (Target unit of ability being cast)) Not equal to Lava Spawn (Level 1)
(Unit-type of (Target unit of ability being cast)) Not equal to Lava Spawn (Level 1)
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Animation - Change (Target unit of ability being cast) 's animation speed to 0.00 % of its original speed
Unit Group - Add (Target unit of ability being cast) to DeepFreezeGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 1
Then - Actions
Unit - Add Spell Book to (Target unit of ability being cast)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 2
Then - Actions
Unit - Add Spell Book to (Target unit of ability being cast)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 3
Then - Actions
Unit - Add Spell Book to (Target unit of ability being cast)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
((Target unit of ability being cast) is A Hero) Equal to True
(Level of (Target unit of ability being cast)) Greater than or equal to 6
Then - Actions
Hashtable - Save ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) / 2.00) as 1 of (Key (Target unit of ability being cast).) in DeepFreezeTable .
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Aerial Shackles to (Last created unit)
Unit - Order (Last created unit) to Human Dragonhawk Rider - Aerial Shackles . (Target unit of ability being cast)
Unit - Add a ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) / 2.00) second Generic expiration timer to (Last created unit)
Else - Actions
Hashtable - Save ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) x 1) as 1 of (Key (Target unit of ability being cast).) in DeepFreezeTable .
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Aerial Shackles to (Last created unit)
Unit - Order (Last created unit) to Human Dragonhawk Rider - Aerial Shackles . (Target unit of ability being cast)
Unit - Add a ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) x 1) second Generic expiration timer to (Last created unit)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Destroy (Last created special effect)
Trigger - Turn on Deep_Freeze_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Deep Freeze Cast Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Storm Bolt
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Lava Spawn (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Lava Spawn (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Lava Spawn (Level 1)
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Animation - Change (Target unit of ability being cast) 's animation speed to 0.00 % of its original speed
Unit - Replace (Target unit of ability being cast) with a (Unit-type of (Target unit of ability being cast)) using The old unit's life and mana
Unit - Add a 60 second Generic expiration timer to (Last replaced unit)
Unit Group - Add (Last replaced unit) to DeepFreezeGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 1
Then - Actions
Unit - Add Spell Book to (Last replaced unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 2
Then - Actions
Unit - Add Spell Book to (Last replaced unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Storm Bolt for (Triggering unit)) Equal to 3
Then - Actions
Unit - Add Spell Book to (Last replaced unit)
Else - Actions
Hashtable - Save ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) x 1) as 1 of (Key (Last replaced unit).) in DeepFreezeTable .
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Aerial Shackles to (Last created unit)
Unit - Order (Last created unit) to Human Dragonhawk Rider - Aerial Shackles . (Last replaced unit)
Unit - Add a ((2.00 + (4.00 x (Real((Level of Storm Bolt for (Triggering unit)))))) x 1) second Generic expiration timer to (Last created unit)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Destroy (Last created special effect)
Trigger - Turn on Deep_Freeze_Loop <gen>
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Deep Freeze Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in DeepFreezeGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from DeepFreezeTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
(Load 1 of (Key (Picked unit).) from DeepFreezeTable.) Not equal to 0.00
((Picked unit) has buff Stunned (Pause)) Equal to True
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from DeepFreezeTable.) - 0.25) as 1 of (Key (Picked unit).) in DeepFreezeTable .
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Destroy (Last created special effect)
Else - Actions
Unit - Remove Stunned (Pause) buff from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Animation - Change (Picked unit) 's animation speed to 100.00 % of its original speed
Animation - Reset (Picked unit) 's animation
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in DeepFreezeTable .
Unit Group - Remove (Picked unit) from DeepFreezeGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in DeepFreezeGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Track Living Waters
Events
Unit - A unit Is issued an order with no target
Conditions
Or - Any (Conditions) are true
Conditions
(Issued order) Equal to (Order(flamingarrows))
(Issued order) Equal to (Order(unflamingarrows))
(Unit-type of (Triggering unit)) Equal to Firelord
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Issued order) Equal to (Order(flamingarrows))
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Issued order) Equal to (Order(unflamingarrows))
Then - Actions
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Else - Actions
Living Waters
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(DamageEventSource is A Hero) Equal to True
(Unit-type of DamageEventSource) Equal to Firelord
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
DamageEventAttackT Equal to 6
DamageEventDamageT Not equal to 9
(Level of Searing Arrows for DamageEventSource) Not equal to 0
(Level of Item Damage Bonus (+1) for DamageEventSource) Not equal to 0
(DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
(Mana of DamageEventSource) Greater than or equal to 8.00
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(DamageEventSource is in LivingWaterGroup.) Equal to True
(Level of Item Damage Bonus (+1) for DamageEventSource) Equal to 0
Then - Actions
Unit - Remove Item Damage Bonus (+1) from DamageEventSource
Else - Actions
Unit Group - Add DamageEventTarget to LivingWaterGroup
Custom script: udg_Handle = GetHandleId(udg_DamageEventTarget)
Hashtable - Save 2.00 as 1 of Handle in LivingWaterTable .
Hashtable - Save Handle Of DamageEventSource as 0 of Handle in LivingWaterTable .
Trigger - Turn on Living_Waters_Loop <gen>
Set Variable Set Point = (Position of DamageEventTarget)
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing (5.00 x (Real((Level of Searing Arrows for DamageEventSource)))) damage of attack type Spells and damage type Normal
Set Variable Set UnitGroup = (Units within 600.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and (((Unit-type of (Matching unit)) Not equal to Footman) and (((((Matching unit) is alive) Equal to True) and ((Owner of (Matching unit)) Not equal to Neutral Passive)) and ((((Matching unit) belongs to an ally of (Owner of DamageEventSource).) Equal to True) and ((Life of (Matching unit)) Less than (Max life of (Matching unit))))))))).)
Unit Group - Pick every unit in (Random 1 units from UnitGroup) and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using war3mapImported\CrushingWaveDamageSoundless.mdx
Special Effect - Destroy (Last created special effect)
Set Variable Set NextHealTarget = (Picked unit)
Set Variable Set NextHealSource = DamageEventSource
Set Variable Set NextHealAmount = (5.00 x (Real((Level of Searing Arrows for DamageEventSource))))
Trigger - Run Heal_Unit <gen> (ignoring conditions)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Set Color of (Last created special effect) to r: 50 , g: 200 , b: 255
Special Effect - Destroy (Last created special effect)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Living Waters Single Use
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Searing Arrows
Actions
Unit - Order (Triggering unit) to Night Elf Priestess Of The Moon - Activate Searing Arrows .
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Unit Group - Add (Triggering unit) to LivingWaterGroup
Hashtable - Save 3.00 as 1 of (Key (Triggering unit).) in LivingWaterTable .
Unit - Order (Triggering unit) to Night Elf Priestess Of The Moon - Activate Searing Arrows .
Trigger - Turn on Living_Waters_Loop <gen>
Living Waters Drown
Events
Unit - A unit Dies
Conditions
((Triggering unit) is in LivingWaterGroup.) Equal to True
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 240.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and (((Unit-type of (Matching unit)) Not equal to Footman) and (((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) Not equal to Neutral Passive) and (((Matching unit) belongs to an ally of (Owner of (Load 0 of (Key (Triggering unit).) in LivingWaterTable.)).) Equal to True))) and ((((Matching unit) is Mechanical) Equal to False) and ((Life of (Matching unit)) Less than (Max life of (Matching unit))))))))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using war3mapImported\CrushingWaveDamageSoundless.mdx
Special Effect - Destroy (Last created special effect)
Set Variable Set NextHealTarget = (Picked unit)
Set Variable Set NextHealSource = (Load 0 of (Key (Triggering unit).) in LivingWaterTable.)
Set Variable Set NextHealAmount = (15.00 + (15.00 x (Real((Level of Searing Arrows for (Load 0 of (Key (Triggering unit).) in LivingWaterTable.))))))
Trigger - Run Heal_Unit <gen> (ignoring conditions)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Living Waters Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in LivingWaterGroup and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 1 of (Key (Picked unit).) from LivingWaterTable.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
(Load 1 of (Key (Picked unit).) from LivingWaterTable.) Not equal to 0.00
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from LivingWaterTable.) - 0.25) as 1 of (Key (Picked unit).) in LivingWaterTable .
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in LivingWaterTable .
Unit Group - Remove (Picked unit) from LivingWaterGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in LivingWaterGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Urn of Shadows Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Sentry Ward
Then - Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Add a 0.25 second Generic expiration timer to (Target unit of ability being cast)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Inventory (Hero) to (Last created unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Hero - Create Scroll of Regeneration and give it to (Last created unit)
Hero - Order (Last created unit) to use (Last created item)
Hero - Create Scroll of Regeneration and give it to (Last created unit)
Hero - Order (Last created unit) to use (Last created item)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Raider
(Level of Dark Conversion (Malganis) for (Target unit of ability being cast)) Equal to 0
Then - Actions
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Target unit of ability being cast)
Unit - Remove Howl of Terror (Neutral Hostile) from (Target unit of ability being cast)
Unit - Add Dark Conversion (Malganis) to (Target unit of ability being cast)
Set Variable Set Unit = (Target unit of ability being cast)
Set Variable Set Point = (Position of Unit)
Unit - Create 1 . Sentry Ward for (Owner of Unit) at Point facing Default building facing degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Set life of (Last created unit) to (Load 0 of (Key (Target unit of ability being cast).) from BroodGuardTable.)
Unit - Remove Rally from (Last created unit)
Unit - Move (Last created unit) instantly to Point
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Wait 0.00 seconds
Hero - Order (Triggering unit) to use (Item carried by (Triggering unit) of type Healing Salve) on (Last created unit)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "This unit do not have Nerubian Egg."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Scroll of Secrets
Events
Unit - A unit Uses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Moonstone
Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
Player - Set the current research level of R00C (Unexpected type: 'techcode') to 0 for (Picked player)
Set Variable Set SecretTimer = "40.00"
Trigger - Turn on Scroll_of_Secrets_Loop <gen>
Set Variable Set UnitGroup = (Units of type Flying Machine)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove True Sight (Flying Machine) from (Picked unit)
Unit - Add True Sight (Flying Machine) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units of type Sentry Ward)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Detector (Sentry Ward) from (Picked unit)
Unit - Add Detector (Sentry Ward) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units of type Watcher Ward)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Detector (Sentry Ward) from (Picked unit)
Unit - Add Detector (Sentry Ward) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Level of Magic Sentry (Human Towers) for (Matching unit)) Not equal to 0))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Magic Sentry (Human Towers) from (Picked unit)
Unit - Add Magic Sentry (Human Towers) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Level of True Sight (Neutral 1) for (Matching unit)) Not equal to 0))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove True Sight (Neutral 1) from (Picked unit)
Unit - Add True Sight (Neutral 1) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((Level of True Sight (Shade) for (Matching unit)) Not equal to 0))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove True Sight (Shade) from (Picked unit)
Unit - Add True Sight (Shade) to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((Matching unit) has buff Detected) Equal to True))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Detected buff from (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((Matching unit) has buff Devotion Aura) Equal to True))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Remove Spell Book from (Picked unit)
Unit - Remove Spell Book from (Picked unit)
Unit - Add Spell Book to (Picked unit)
Unit - Add Spell Book to (Picked unit)
Custom script: DestroyGroup (udg_UnitGroup)
Scroll of Secrets Loop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set SecretTimer = (SecretTimer - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SecretTimer Less than or equal to 0.00
Then - Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
Player - Set the current research level of R00C (Unexpected type: 'techcode') to 1 for (Picked player)
Set Variable Set SecretTimer = "0.00"
Trigger - Turn off (This trigger)
Else - Actions
unit takes damage
Events
Unit - A unit UNKNOWN PRESET: PlayerUnitEventDamaged
Conditions
((Triggering unit) is A structure) Equal to True
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Barracks
(Unit-type of (Triggering unit)) Equal to Altar of the Depths
(Unit-type of (Triggering unit)) Equal to Workshop
(Unit-type of (Triggering unit)) Equal to Arcane Sanctum
(Unit-type of (Triggering unit)) Equal to Arcane Vault
(Unit-type of (Triggering unit)) Equal to Coral Bed
(Unit-type of (Triggering unit)) Equal to Shrine of Azshara
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
(Unit-type of (Triggering unit)) Equal to Coral Bed
(Unit-type of (Triggering unit)) Equal to War Mill
(Unit-type of (Triggering unit)) Equal to Great Hall
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
Actions
Set Variable Set tempReal1_BuildNaga = (Load (Key damageTaken.) of (Key (Missing string for 'BlzGetEventDamageTarget').) from hash_BuildNaga.)
Hashtable - Save (tempReal1_BuildNaga + (Damage taken)) as (Key damageTaken.) of (Key (Missing string for 'BlzGetEventDamageTarget').) in hash_BuildNaga .
Naga Build Tick
Events
Time - Every 0.01 seconds of game time
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in buildings_BuildNaga) Not equal to 0
Then - Actions
Unit Group - Pick every unit in buildings_BuildNaga and do (Actions)
Loop - Actions
Set Variable Set tempReal1_BuildNaga = (Load (Key damageTaken.) of (Key (Picked unit).) from hash_BuildNaga.)
Set Variable Set tempReal1_BuildNaga = (tempReal1_BuildNaga + (Life of (Picked unit)))
Set Variable Set tempReal1_BuildNaga = (tempReal1_BuildNaga - (0.10 x (Max life of (Picked unit))))
Set Variable Set tempReal2_BuildNaga = ((Max life of (Picked unit)) x 0.90)
Hashtable - Save (tempReal1_BuildNaga / tempReal2_BuildNaga) as (Key buildProgress.) of (Key (Picked unit).) in hash_BuildNaga .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(tempReal1_BuildNaga / tempReal2_BuildNaga) Greater than or equal to 0.70
((Load 1 of (Key (Picked unit).) in BuildHastable.) is alive) Equal to True
Then - Actions
Unit - Add a 0.01 second Generic expiration timer to (Load 1 of (Key (Picked unit).) in BuildHastable.)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.70
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.75
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.80
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.85
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.90
(tempReal1_BuildNaga / tempReal2_BuildNaga) Equal to 0.95
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Picked unit)
Set Variable Set Point = (Position of (Picked unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Else - Actions
Trigger - Turn off (This trigger)
Pin Down
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ensnare
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Cripple (Neutral Hostile) to (Last created unit)
Unit - Order (Last created unit) to Undead Necromancer - Cripple . (Target unit of ability being cast)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Tidal Stone
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Mana Shield
Actions
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Tidal Stone Copy
Events
Unit - A unit Is issued an order with no target
Conditions
(Issued order) Equal to (Order(manashieldoff))
(Unit-type of (Ordered unit)) Equal to Coral Bed
Actions
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
String of Fate Effect Copy
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
((DamageEventTarget has buff Mana Shield) Equal to False) and ((DamageEventTarget is A structure) Equal to True)
DamageEventAmount Not equal to 0.00
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DamageEventAmount Equal to 0.00
Then - Actions
Do nothing
Else - Actions
Set Variable Set Point = (Position of DamageEventTarget)
Set Variable Set UnitGroup = (Units within 600.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) has buff Mana Shield) Equal to True) and ((((Matching unit) belongs to an ally of (Owner of DamageEventTarget).) Equal to True) and ((Matching unit) Not equal to DamageEventTarget)))).)
Set Variable Set Unit = (Random unit from UnitGroup)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Mana of Unit) Less than DamageEventAmount
Then - Actions
Set Variable Set DamageEventAmount = (DamageEventAmount - (Mana of Unit))
Unit - Set mana of Unit to 0
Else - Actions
Unit - Cause DamageEventSource to damage Unit , dealing DamageEventAmount damage of attack type Normal and damage type Normal
Set Variable Set DamageEventAmount = "0.00"
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup)
Untitled Trigger 015
Events
Unit - A unit Finishes an upgrade
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Coral Bed
(Unit-type of (Triggering unit)) Equal to Coral Bed
Actions
Unit - Set mana of (Triggering unit) to 150.00
Murloc Slave Order Sarver
Events
Unit - A unit Is issued an order targeting an object
Unit - A unit Is issued an order targeting a point
Unit - A unit Is issued an order with no target
Conditions
(Unit-type of (Triggering unit)) Equal to Mur'gul Slave
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Issued order) Equal to (Order(harvest))
(Issued order) Equal to (Order(resumeharvesting))
Then - Actions
Unit - Remove Berserk buff from (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of issued order)) Equal to Gold Mine
Then - Actions
Hashtable - Save 1 as 0 of (Key (Triggering unit).) in MurlocOrderTable .
Hashtable - Save Handle Of (Target unit of issued order) as 1 of (Key (Triggering unit).) in MurlocOrderTable .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Destructible-type of (Target destructible of issued order)) Equal to LTlt (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ATtr (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ATtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to BTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to BTtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to KTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to YTft (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to YTst (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to YTct (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to YTwt (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to Ytsc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to JTct (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to JTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to DTsh (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to CTtr (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to CTtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ITtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ITtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to NTtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to FTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to LTlt (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to WTst (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to NTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to NTiw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to OTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ZTtw (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to ZTtc (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to GTsh (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to VTlt (Unexpected type: 'destructablecode')
(Destructible-type of (Target destructible of issued order)) Equal to FTtw (Unexpected type: 'destructablecode')
Then - Actions
Hashtable - Save Handle Of (Target destructible of issued order) as 1 of (Key (Triggering unit).) in MurlocOrderTable .
Hashtable - Save 2 as 0 of (Key (Triggering unit).) in MurlocOrderTable .
Else - Actions
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in MurlocOrderTable .
Overseer System
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Unit-type of (Matching unit)) Equal to Mur'gul Slave) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) is hidden) Equal to False)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set UnitGroup_2 = (Units within 1000.00 of Point matching ((((Unit-type of (Matching unit)) Equal to Naga Myrmidon) and ((Level of Item Hero Stat Bonus (+1 Agility) for (Matching unit)) Not equal to 0)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of (Picked unit)).) Equal to True))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup_2) Not equal to 0
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Life of (Picked unit)) Greater than or equal to 6.00
Then - Actions
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 5.00)
Else - Actions
Unit - Set life of (Picked unit) to 1.00
Unit - Remove Item Damage Bonus (+1) from (Picked unit)
Unit - Remove Item Move Speed Bonus from (Picked unit)
Unit - Add Item Move Speed Bonus to (Picked unit)
Animation - Change (Picked unit) 's vertex coloring to ( 100 %, 60.00 %, 60.00 %) with 0 % transparency
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current order of (Picked unit)) Not equal to (Order(resumeharvesting))
(Level of Harvest (Neutral), (Gold and Lumber) for (Picked unit)) Equal to 0
Then - Actions
Animation - Remove the gold animation tag to (Picked unit)
Animation - Remove the lumber animation tag to (Picked unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 1
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 1 of (Key (Picked unit).) in MurlocOrderTable.) is alive) Equal to True
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
Unit - Order (Picked unit) to Right-Click . (Random destructible in (Region centered at Point_2 with size (1200.00, 1200.00)))
Custom script: RemoveLocation(udg_Point_2)
Else - Actions
Else - Actions
Else - Actions
Custom script: DestroyGroup (udg_UnitGroup_2)
Set Variable Set UnitGroup_2 = (Units within 1000.00 of Point matching (((Unit-type of (Matching unit)) Equal to Naga Myrmidon) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of (Picked unit)).) Equal to True))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup_2) Equal to 0
((Picked unit) has buff Slow) Equal to False
Then - Actions
Animation - Change (Picked unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 0 % transparency
Unit - Add Item Damage Bonus (+1) to (Picked unit)
Unit - Remove Item Move Speed Bonus from (Picked unit)
Unit - Remove Item Move Speed Bonus from (Picked unit)
Unit - Remove Slow Aura (Tornado) from (Picked unit)
Unit - Remove Devotion Aura buff from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current order of (Picked unit)) Not equal to (Order(resumeharvesting))
(Level of Harvest (Neutral), (Gold and Lumber) for (Picked unit)) Equal to 0
Then - Actions
Animation - Remove the gold animation tag to (Picked unit)
Animation - Remove the lumber animation tag to (Picked unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 1
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 1 of (Key (Picked unit).) in MurlocOrderTable.) is alive) Equal to True
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
Unit - Order (Picked unit) to Right-Click . (Random destructible in (Region centered at Point_2 with size (1200.00, 1200.00)))
Custom script: RemoveLocation(udg_Point_2)
Else - Actions
Else - Actions
Else - Actions
Animation - Change (Picked unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 0 % transparency
Unit - Add Item Move Speed Bonus to (Picked unit)
Unit - Add Slow Aura (Tornado) to (Picked unit)
Unit - Remove Item Move Speed Bonus from (Picked unit)
Unit - Remove Item Damage Bonus (+1) from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current order of (Picked unit)) Not equal to (Order(resumeharvesting))
((Picked unit) has buff Slow) Equal to False
(Level of Harvest (Neutral), (Gold and Lumber) for (Picked unit)) Equal to 0
Then - Actions
Animation - Remove the gold animation tag to (Picked unit)
Animation - Remove the lumber animation tag to (Picked unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 1
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 0 of (Key (Picked unit).) from MurlocOrderTable.) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 1 of (Key (Picked unit).) in MurlocOrderTable.) is alive) Equal to True
Then - Actions
Unit - Order (Picked unit) to Right-Click . (Load 1 of (Key (Picked unit).) in MurlocOrderTable.)
Else - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
Unit - Order (Picked unit) to Right-Click . (Random destructible in (Region centered at Point_2 with size (1200.00, 1200.00)))
Custom script: RemoveLocation(udg_Point_2)
Else - Actions
Else - Actions
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup (udg_UnitGroup_2)
Custom script: DestroyGroup (udg_UnitGroup)
Overwork On
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Tranquility
Actions
Animation - Change (Triggering unit) 's animation speed to 60.00 % of its original speed
Unit - Add Item Hero Stat Bonus (+1 Agility) to (Triggering unit)
Sound - Play OrcVictory01 <gen> at 100 % volume, attached to (Triggering unit)
Hashtable - Save Handle Of (Last played sound) as 0 of (Key (Triggering unit).) in TidalGuard .
Overwork Off
Events
Unit - A unit Finishes casting an ability
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Tranquility
Actions
Animation - Change (Triggering unit) 's animation speed to 100.00 % of its original speed
Unit - Remove Item Hero Stat Bonus (+1 Agility) from (Triggering unit)
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Sound - Stop (Load 0 of (Key (Triggering unit).) in TidalGuard.) After fading
Free spot Overseer
Events
Unit - A unit Dies
Unit - A unit Changes owner
Conditions
(Unit-type of (Triggering unit)) Equal to Naga Myrmidon
Actions
Set Variable Set Overseers[(Player number of (Owner of (Triggering unit)))] = (Overseers[(Player number of (Owner of (Triggering unit)))] - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Overseers[(Player number of (Owner of (Triggering unit)))] Less than (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and ((((Matching unit) is A town-hall-type unit) Equal to True) and (((Matching unit) is alive) Equal to True)))))
Then - Actions
Player - Make Naga Myrmidon Unavailable for training/construction by (Owner of (Triggering unit))
Else - Actions
Player - Limit training of Naga Myrmidon to 0 for (Owner of (Triggering unit))
Player - Limit training of Naga Myrmidon to (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and ((((Matching unit) is A town-hall-type unit) Equal to True) and (((Triggering unit) Not equal to (Matching unit)) and ((((Matching unit) is alive) Equal to True) and ((Level of Item Damage Bonus (+1) for (Matching unit)) Equal to 0))))))) for (Owner of (Triggering unit))
Free spot Overseer Copy 2
Events
Unit - A unit Dies
Unit - A unit Changes owner
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Great Hall
(Unit-type of (Triggering unit)) Equal to Stronghold
(Unit-type of (Triggering unit)) Equal to Fortress
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Overseers[(Player number of (Owner of (Triggering unit)))] Less than (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and ((((Matching unit) is A town-hall-type unit) Equal to True) and (((Matching unit) is alive) Equal to True)))))
Then - Actions
Else - Actions
Player - Make Naga Myrmidon Available for training/construction by (Owner of (Triggering unit))
Player - Limit training of Naga Myrmidon to 0 for (Owner of (Triggering unit))
Player - Limit training of Naga Myrmidon to (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and ((((Matching unit) is A town-hall-type unit) Equal to True) and (((Triggering unit) Not equal to (Matching unit)) and ((((Matching unit) is alive) Equal to True) and ((Level of Item Damage Bonus (+1) for (Matching unit)) Equal to 0))))))) for (Owner of (Triggering unit))
Free spot Overseer Copy
Events
Unit - A unit Begins training a unit
Conditions
(Trained unit-type) Equal to Naga Myrmidon
Actions
Set Variable Set Overseers[(Player number of (Owner of (Triggering unit)))] = (Overseers[(Player number of (Owner of (Triggering unit)))] + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Number of living Naga Myrmidon units owned by (Owner of (Triggering unit))) + Overseers[(Player number of (Owner of (Triggering unit)))]) Greater than or equal to (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and (((Matching unit) is A town-hall-type unit) Equal to True))))
Then - Actions
Player - Make Naga Myrmidon Available for training/construction by (Owner of (Triggering unit))
Else - Actions
Player - Make Naga Myrmidon Unavailable for training/construction by (Owner of (Triggering unit))
Free spot Overseer Copy Copy 2
Events
Game - Button for train Naga Myrmidon pressed.
Conditions
((Owner of (Triggering unit)) Current gold) Greater than or equal to 225
((Owner of (Triggering unit)) Current lumber) Greater than or equal to 30
(((Owner of (Triggering unit)) Food cap) - ((Owner of (Triggering unit)) Food used)) Greater than or equal to 2
((Triggering unit) has buff Freezing Breath) Equal to False
Actions
Set Variable Set Unit = (Triggering unit)
Set Variable Set Gold = ((Owner of (Triggering unit)) Current gold)
Wait 0.00 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Owner of Unit) Current gold) Less than Gold
Then - Actions
Set Variable Set Overseers[(Player number of (Owner of Unit))] = (Overseers[(Player number of (Owner of Unit))] + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Overseers[(Player number of (Owner of Unit))] Greater than or equal to (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of Unit)) and ((((Matching unit) is A town-hall-type unit) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((Level of Item Damage Bonus (+1) for (Matching unit)) Equal to 0))))))
Then - Actions
Player - Make Naga Myrmidon Available for training/construction by (Owner of Unit)
Else - Actions
Player - Make Naga Myrmidon Unavailable for training/construction by (Owner of Unit)
Else - Actions
Free spot Overseer Copy Copy
Events
Unit - A unit Cancels training a unit
Conditions
(Trained unit-type) Equal to Naga Myrmidon
(Trained unit-type) Not equal to Mur'gul Slave
Actions
Set Variable Set Overseers[(Player number of (Owner of (Triggering unit)))] = (Overseers[(Player number of (Owner of (Triggering unit)))] - 1)
Wait 0.00 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Overseers[(Player number of (Owner of (Triggering unit)))] Less than (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and (((Matching unit) is A town-hall-type unit) Equal to True))))
Then - Actions
Player - Make Naga Myrmidon Unavailable for training/construction by (Owner of (Triggering unit))
Else - Actions
Free spot Overseer Copy Copy Copy
Events
Unit - A unit Finishes training a unit
Conditions
(Trained unit-type) Equal to Naga Myrmidon
Actions
Set Variable Set Overseers[(Player number of (Owner of (Triggering unit)))] = (Overseers[(Player number of (Owner of (Triggering unit)))] - 1)
Enchantment
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Silence
Actions
Set Variable Set Point = (Target point of ability being cast)
Special Effect - Create a special effect at Point using Units\NightElf\Wisp\WispExplode.mdl
Special Effect - Set Color of (Last created special effect) to r: 255 , g: 0 , b: 255
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Roar to (Last created unit)
Unit - Order (Last created unit) to Night Elf Druid Of The Claw - Roar .
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Enchantment Exe
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(DamageEventTarget is Magic Immune) Equal to False
(DamageEventSource has buff Roar) Equal to True
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
Actions
Trigger - Turn off (This trigger)
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing (DamageEventAmount x 0.30) damage of attack type Magic and damage type Normal
Trigger - Turn on (This trigger)
Frost Bolt
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frost Bolt
Actions
Special Effect - Create a special effect attached to the weapon (Unexpected type: 'attachpoint') of (Triggering unit) using war3mapImported\Mini Comet.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the weapon (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Weapons\LichMissile\LichMissile.mdl
Special Effect - Destroy (Last created special effect)
Essense Drain
Events
Unit - A unit Starts the effect of an ability
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Druid of the Claw (Night Elf Form)
((Triggering unit) belongs to an enemy of (Owner of (Target unit of ability being cast)).) Equal to True
(Current research level of R013 (Unexpected type: 'techcode') for (Owner of (Target unit of ability being cast))) Not equal to 0
Actions
Set Variable Set NextHealTarget = (Target unit of ability being cast)
Set Variable Set NextHealSource = (Target unit of ability being cast)
Set Variable Set NextHealAmount = (Real((For (Triggering unit), Mana cost of (Ability being cast), Level 0.)))
Trigger - Run Heal_Unit <gen> (ignoring conditions)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Weapons\PriestMissile\PriestMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Weapons\ChimaeraLightningMissile\ChimaeraLightningMissile.mdl
Special Effect - Destroy (Last created special effect)
Enchantment Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Finger of Pain (Neutral Hostile)
Actions
Unit - Remove classification of Magic Immune from (Target unit of ability being cast)
Piranha Instincts
Events
Time - Every 3.00 seconds of game time
Conditions
Or - Any (Conditions) are true
Conditions
(Number of units in (Units of type Footman)) Not equal to 0
(Number of units in (Units of type Footman)) Not equal to 0
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and (((Unit-type of (Matching unit)) Equal to Footman) or ((Unit-type of (Matching unit)) Equal to Footman))))
Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Current research level of R00P (Unexpected type: 'techcode') for (Owner of (Picked unit))) Not equal to 0
Then - Actions
Set Variable Set Point = (Position of (Picked unit))
Unit - Set level of Endurance Aura for (Picked unit) to ((Number of units in (Units within 900.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of (Picked unit)).) Equal to True)) and (((Unit-type of (Matching unit)) Equal to Footman) or ((Unit-type of (Matching unit)) Equal to Footman))).)) - 1)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup)
Catch a Fish
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Target unit of ability being cast).) in CatchFishTable .
Hashtable - Save Handle Of (Target unit of ability being cast) as 0 of (Key (Triggering unit).) in CatchFishTable .
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Ensnare to (Last created unit)
Unit - Order (Last created unit) to Orc Raider - Ensnare . (Target unit of ability being cast)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Catch a Fish Copy
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
((Target unit of ability being cast) has buff Ensnare (Air)) Equal to True
((Target unit of ability being cast) has buff Ensnare (General)) Equal to True
((Target unit of ability being cast) has buff Ensnare (Ground)) Equal to True
Then - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Unit - For Unit (Triggering unit) , end cooldown of ability Channel
Set Variable Set ErrorMessage = "Target already catched."
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Else - Actions
Catch a Fish Death
Events
Unit - A unit Dies
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Channel for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Remove Ensnare (Ground) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Unit - Remove Ensnare (General) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Unit - Remove Ensnare (Air) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in CatchFishTable.).) in CatchFishTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CatchFishTable .
Else - Actions
Unit - Order (Load 0 of (Key (Triggering unit).) in CatchFishTable.) to Stop .
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in CatchFishTable.).) in CatchFishTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CatchFishTable .
Catch a Fish Cancel
Events
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Unit - Remove Ensnare (Ground) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Unit - Remove Ensnare (General) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Unit - Remove Ensnare (Air) buff from (Load 0 of (Key (Triggering unit).) in CatchFishTable.)
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in CatchFishTable.).) in CatchFishTable .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in CatchFishTable .
Toxic Skin
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Level of Trueshot Aura for DamageEventTarget) Not equal to 0
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
(DamageEventSource is A melee attacker) Equal to True
(Current research level of R00S (Unexpected type: 'techcode') for (Owner of DamageEventTarget)) Not equal to 0
(DamageEventSource belongs to an enemy of (Owner of DamageEventTarget).) Equal to True
Actions
Set Variable Set Point = (Position of DamageEventSource)
Unit - Create 1 . Footman for (Owner of DamageEventTarget) at Point facing Default building facing degrees
Unit - Add Unholy Frenzy to (Last created unit)
Unit - Order (Last created unit) to Undead Necromancer - Unholy Frenzy . DamageEventSource
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Guards
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Battle Roar
Actions
Set Variable Set Point = ((Position of (Triggering unit)) offset by 150.00 towards ((Facing of (Triggering unit)) + 45.00) degrees.)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 1
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) + 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) + 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) + 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = ((Position of (Triggering unit)) offset by 150.00 towards ((Facing of (Triggering unit)) - 45.00) degrees.)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 1
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) - 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) - 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Battle Roar for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 . Tentacle for (Owner of (Triggering unit)) at Point facing ((Facing of (Triggering unit)) - 45.00) degrees
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Else - Actions
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Custom script: RemoveLocation(udg_Point)
Brainwash
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set UnitGroup = (Units within 700.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A Hero) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and ((Owner of (Matching unit)) Not equal to Neutral Passive)))))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Hashtable - Save Handle Of (Triggering unit) as 3 of (Key (Picked unit).) in Brainwash .
Hashtable - Save 20.00 as 0 of (Key (Picked unit).) in Brainwash .
Hashtable - Save Handle Of (Owner of (Picked unit)) as 1 of (Key (Picked unit).) in Brainwash .
Hashtable - Save Handle Of (Player((Random integer number between 1 and 24))) as 2 of (Key (Picked unit).) in Brainwash .
Unit - Change ownership of (Picked unit) to (Load 2 of (Key (Picked unit).) in Brainwash.) and Change color
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdl
Special Effect - Destroy (Last created special effect)
Unit - Add Slow Aura (Tornado) to (Picked unit)
Unit Group - Add (Picked unit) to BrainwashUnits
Custom script: DestroyGroup(udg_UnitGroup)
Trigger - Turn on Brainwash_Expire <gen>
Brainwash Cancel
Events
Unit - A unit Stops casting an ability
Unit - A unit Finishes casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit Group - Pick every unit in BrainwashUnits and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Triggering unit) Equal to (Load 3 of (Key (Picked unit).) in Brainwash.)
Then - Actions
Hashtable - Save 0.00 as 0 of (Key (Picked unit).) in Brainwash .
Trigger - Run Brainwash_Expire <gen> (ignoring conditions)
Else - Actions
Brainwash Expire
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in BrainwashUnits and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 0 of (Key (Picked unit).) from Brainwash.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RemainingTime_Stagger Greater than 0.00
((Picked unit) is alive) Equal to True
Then - Actions
Hashtable - Save (RemainingTime_Stagger - 1.00) as 0 of (Key (Picked unit).) in Brainwash .
Else - Actions
Unit - Remove Slow Aura (Tornado) from (Picked unit)
Unit - Remove Cloud buff from (Picked unit)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdl
Special Effect - Destroy (Last created special effect)
Unit - Change ownership of (Picked unit) to (Load 1 of (Key (Picked unit).) in Brainwash.) and Change color
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in Brainwash .
Unit Group - Remove (Picked unit) from BrainwashUnits .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in BrainwashUnits) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Dark Visions
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Silence
Actions
Set Variable Set Point = (Target point of ability being cast)
Special Effect - Create a special effect at Point using units\nightelf\SpiritOfVengeance\SpiritOfVengeance.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 205.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit)).) Equal to True)))))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Unholy Frenzy to (Last created unit)
Unit - Set level of Unholy Frenzy for (Last created unit) to (Level of Silence for (Triggering unit))
Unit - Order (Last created unit) to Undead Necromancer - Unholy Frenzy . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Water Shield
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Mind Rot
Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
-------- -------------------- --------
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A05K"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A05I"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B01Q"
Set Variable Set BS_Buff_Duration[BS_Index2] = "60.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "1"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "0"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
-------- -------------------- --------
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Summon Sea Elemental
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = ((Position of (Triggering unit)) offset by 110.00 towards ((Facing of (Triggering unit)) - 90.00) degrees.)
Unit - Create 1 . Water Elemental (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Add a 60 second Generic expiration timer to (Last created unit)
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Unit - Add Spell Book to (Triggering unit)
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in SeaElementalTable .
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in SeaElementalTable .
Sea Elemental Death
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Naga Siren
(Unit-type of (Triggering unit)) Equal to Water Elemental (Level 1)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Naga Siren
(Level of Spell Book for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Remove Spell Book from (Triggering unit)
Unit - Kill (Load 0 of (Key (Triggering unit).) in SeaElementalTable.)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Water Elemental (Level 1)
Then - Actions
Unit - Remove Spell Book from (Load 0 of (Key (Triggering unit).) in SeaElementalTable.)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Magic Disruption
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Abolish Magic
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Dispel Magic to (Last created unit)
Unit - Order (Last created unit) to Orc Spirit Walker - Disenchant . Point
Unit - Order (Last created unit) to Human Priest - Dispel . (Target unit of ability being cast)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Cleansing Waters
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Abolish Magic
Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using war3mapImported\CrushingWaveDamageSoundless.mdx
Special Effect - Destroy (Last created special effect)
Set Variable Set NextHealTarget = (Target unit of ability being cast)
Set Variable Set NextHealSource = (Triggering unit)
Set Variable Set NextHealAmount = "100.00"
Trigger - Run Heal_Unit <gen> (ignoring conditions)
Clarity Aura
Events
Unit - A unit Starts the effect of an ability
Conditions
(Random integer number between 1 and 100) Less than or equal to 35
Or - Any (Conditions) are true
Conditions
((Triggering unit) has buff Brilliance Aura) Equal to True
((Triggering unit) has buff Brilliance Aura) Equal to True
((Triggering unit) has buff Brilliance Aura) Equal to True
Actions
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Spells\Other\FrostBolt\FrostBoltMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Spells\Items\AIma\AImaTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Triggering unit) using Abilities\Spells\NightElf\SpiritOfVengeance\SpiritOfVengeanceBirthMissile.mdl
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Brilliance Aura) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 0.))) x 0.30))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 1.))) x 0.30))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 2.))) x 0.30))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Brilliance Aura) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 0.))) x 0.50))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 1.))) x 0.50))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 2.))) x 0.50))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) has buff Brilliance Aura) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 0.))) x 0.70))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 1.))) x 0.70))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Wait 0.00 seconds
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ((Real((For (Triggering unit), Mana cost of (Ability being cast), Level 2.))) x 0.70))
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Else - Actions
Arcane Blast Copy 2 Copy 2
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Parasite
Actions
Set Variable Set Caster = (Triggering unit)
Set Variable Set Target = (Target unit of ability being cast)
Set Variable Set DamageAmount = (10.00 + (30.00 x (Real((Level of Parasite for Caster)))))
Hashtable - Save 60.00 as 0 of (Key (Triggering unit).) in HashTable_ArcaneRunes .
Unit Group - Add Caster to ArcaneRunes_Group
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of Target using Abilities\Spells\Human\StormBolt\StormBoltMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of Target using war3mapImported\Arcane Bomb.mdx
Special Effect - Destroy (Last created special effect)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Blood Mage
Then - Actions
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Priest
Then - Actions
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Game - Display to (All players) the text: (String((Level of (Ability being cast) for (Triggering unit))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Parasite for Caster) Equal to 1
Then - Actions
Set Variable Set DamageAmount = (DamageAmount + (10.00 x (((Real((For Caster, Mana cost of Parasite, Level 0.))) - 30.00) / 5.00)))
Unit - For Unit Caster , Set mana cost of ability Parasite , Level: 0 to ((For Caster, Mana cost of Parasite, Level 0.) + 5)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Parasite for Caster) Equal to 2
Then - Actions
Set Variable Set DamageAmount = (DamageAmount + (20.00 x (((Real((For Caster, Mana cost of Parasite, Level 1.))) - 30.00) / 10.00)))
Unit - For Unit Caster , Set mana cost of ability Parasite , Level: 1 to ((For Caster, Mana cost of Parasite, Level 1.) + 10)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Parasite for Caster) Equal to 3
Then - Actions
Set Variable Set DamageAmount = (DamageAmount + (30.00 x (((Real((For Caster, Mana cost of Parasite, Level 2.))) - 30.00) / 15.00)))
Unit - For Unit Caster , Set mana cost of ability Parasite , Level: 2 to ((For Caster, Mana cost of Parasite, Level 2.) + 15)
Else - Actions
Unit - Cause Caster to damage Target , dealing DamageAmount damage of attack type Spells and damage type Magic
Game - Display to (All players) the text: MANA UPDATE
Trigger - Turn on Arcane_Runes_Expire <gen>
Arcane Runes Expire
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in ArcaneRunes_Group and do (Actions)
Loop - Actions
Set Variable Set RemainingTime_Stagger = (Load 0 of (Key (Picked unit).) from HashTable_ArcaneRunes.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
RemainingTime_Stagger Greater than 0.00
((Picked unit) is alive) Equal to True
Then - Actions
Hashtable - Save (RemainingTime_Stagger - 1.00) as 0 of (Key (Picked unit).) in HashTable_ArcaneRunes .
Else - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\OrbOfDeath\OrbOfDeathMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - For Unit (Picked unit) , Set mana cost of ability Parasite , Level: 0 to 30
Unit - For Unit (Picked unit) , Set mana cost of ability Parasite , Level: 1 to 30
Unit - For Unit (Picked unit) , Set mana cost of ability Parasite , Level: 2 to 30
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in HashTable_ArcaneRunes .
Unit Group - Remove (Picked unit) from ArcaneRunes_Group .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in ArcaneRunes_Group) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Arcane Arrows Init
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Priest
Then - Actions
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
Else - Actions
Set Variable Set HM_CASTER = (Triggering unit)
Set Variable Set HM_LEVEL = (Level of (Ability being cast) for (Triggering unit))
-------- Configure this settings --------
Set Variable Set HM_DAMAGE = (30.00 + (50.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))
Set Variable Set HM_DISTANCE = "250.00"
Set Variable Set HM_SPEED_ADD = "0.00"
Set Variable Set HM_SFX = "war3mapImported\ArcaneMissileComplete2.mdx"
Set Variable Set HM_Unit_Type = "h00M"
-------- Number of missiles that will come out --------
Set Variable Set HM_Count[0] = "5"
Set Variable Set HM_Count[1] = "0"
-------- You can make the missiles go back to you if you set this to TRUE --------
Set Variable Set HM_CHECK = "false"
Set Variable Set HM_SPEED = "10.00"
Trigger - Run Arcane_Arrows_Cast <gen> (ignoring conditions)
-------- You can make the missiles go back to you if you set this to TRUE --------
Arcane Arrows Cast
Events
Conditions
Actions
For each (Integer HM_Count[1] ) from 1 to HM_Count[0] , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Mui[0] Less than or equal to 0
Then - Actions
Trigger - Turn on Arcane_Arrows_Loop <gen>
Else - Actions
Set Variable Set HM_Mui[0] = (HM_Mui[0] + 1)
Set Variable Set HM_Mui[1] = (HM_Mui[1] + 1)
-------- HM_Check_Homing = Set this to true if you want the spirits to come back to your hero. --------
Set Variable Set HM_Check_Homing[HM_Mui[1]] = HM_CHECK
Set Variable Set HM_Unit_Caster[HM_Mui[1]] = HM_CASTER
Set Variable Set HM_Points[0] = (Position of HM_Unit_Caster[HM_Mui[1]])
Set Variable Set HM_Angle[HM_Mui[1]] = (Random angle)
Unit - Create 1 . HM_Unit_Type for (Owner of HM_Unit_Caster[HM_Mui[1]]) at HM_Points[0] facing HM_Angle[HM_Mui[1]] degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Add Crow Form to (Last created unit)
Animation - Change (Last created unit) flying height to 120.00 at 0.00
Animation - Change (Last created unit) flying height to 80.00 at 1.50
Set Variable Set HM_Unit_Dummy[HM_Mui[1]] = (Last created unit)
-------- Variable Settings --------
Set Variable Set HM_Damage[HM_Mui[1]] = HM_DAMAGE
Set Variable Set HM_Distance[HM_Mui[1]] = HM_DISTANCE
Set Variable Set HM_Speed[HM_Mui[1]] = HM_SPEED
Set Variable Set HM_Speed_Add[HM_Mui[1]] = "0.00"
Set Variable Set HM_Sfx[HM_Count[1]] = HM_SFX
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 2) Equal to 1
Then - Actions
Set Variable Set HM_Angle_Add[HM_Mui[1]] = (Random real number between -2.00 and -6.00)
Else - Actions
Set Variable Set HM_Angle_Add[HM_Mui[1]] = (Random real number between 2.00 and 6.00)
Custom script: RemoveLocation (udg_HM_Points[0])
Arcane Arrows Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer HM_Mui[2] ) from 1 to HM_Mui[1] , do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Distance[HM_Mui[2]] Greater than 0.00
Then - Actions
Set Variable Set HM_Speed_Add[HM_Mui[2]] = (HM_Speed_Add[HM_Mui[2]] - 0.10)
Set Variable Set HM_Speed[HM_Mui[2]] = (HM_Speed[HM_Mui[2]] + HM_Speed_Add[HM_Mui[2]])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Speed[HM_Mui[2]] Less than or equal to 5.00
Then - Actions
Set Variable Set HM_Speed[HM_Mui[2]] = "5.00"
Else - Actions
Set Variable Set HM_Distance[HM_Mui[2]] = (HM_Distance[HM_Mui[2]] - HM_Speed[HM_Mui[2]])
Set Variable Set HM_Angle[HM_Mui[2]] = (HM_Angle[HM_Mui[2]] + HM_Angle_Add[HM_Mui[2]])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Angle[HM_Mui[2]] Less than or equal to 0.00
Then - Actions
Set Variable Set HM_Angle[HM_Mui[2]] = "360.00"
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Angle[HM_Mui[2]] Greater than or equal to 360.00
Then - Actions
Set Variable Set HM_Angle[HM_Mui[2]] = "0.00"
Else - Actions
Set Variable Set HM_Points[1] = (Position of HM_Unit_Dummy[HM_Mui[2]])
Set Variable Set HM_Points[2] = (HM_Points[1] offset by HM_Speed[HM_Mui[2]] towards HM_Angle[HM_Mui[2]] degrees.)
Unit - Move HM_Unit_Dummy[HM_Mui[2]] instantly to HM_Points[2] , facing HM_Angle[HM_Mui[2]] degrees
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Distance[HM_Mui[2]] Less than or equal to 0.00
Then - Actions
Set Variable Set HM_Group[HM_Mui[2]] = (Random 1 units from (Units within 1000.00 of HM_Points[2] matching (((((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) is alive) Equal to True))) and (((Matching unit) is Magic Immune) Equal to False)) and (((Matching unit) belongs to an enemy of (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)) and (((Matching unit) is visible to (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)).))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in HM_Group[HM_Mui[2]]) Not equal to 0
Then - Actions
Unit Group - Pick every unit in HM_Group[HM_Mui[2]] and do (Actions)
Loop - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = (Picked unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Check_Homing[HM_Mui[2]] Equal to True
Then - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = HM_Unit_Caster[HM_Mui[2]]
Else - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = No unit
Special Effect - Create a special effect at HM_Point_Dummy[HM_Mui[2]] using HM_Sfx[HM_Count[2]]
Special Effect - Destroy (Last created special effect)
Set Variable Set HM_Points[3] = (Position of HM_Unit_Target[HM_Mui[2]])
Set Variable Set HM_Distance2[HM_Mui[2]] = (Distance between HM_Points[1] and HM_Points[3])
Custom script: RemoveLocation (udg_HM_Points[3])
Custom script: DestroyGroup( udg_HM_Group[udg_HM_Mui[2]])
Set Variable Set HM_Distance[HM_Mui[2]] = "0.00"
Set Variable Set HM_Speed_Add[HM_Mui[2]] = "0.00"
Else - Actions
Custom script: RemoveLocation (udg_HM_Points[1])
Custom script: RemoveLocation (udg_HM_Points[2])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Distance2[HM_Mui[2]] Greater than 0.00
Then - Actions
Set Variable Set HM_Points[1] = (Position of HM_Unit_Dummy[HM_Mui[2]])
Set Variable Set HM_Points[2] = (HM_Points[1] offset by HM_Speed[HM_Mui[2]] towards HM_Angle[HM_Mui[2]] degrees.)
Set Variable Set HM_Points[3] = (Position of HM_Unit_Target[HM_Mui[2]])
Set Variable Set HM_Angle[HM_Mui[2]] = (Angle from HM_Points[1] to HM_Points[3])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(HM_Unit_Target[HM_Mui[2]] is dead) Equal to True
Then - Actions
Set Variable Set HM_Group[HM_Mui[2]] = (Random 1 units from (Units within 1000.00 of HM_Points[2] matching ((((((Matching unit) is alive) Equal to True) and (((Matching unit) is Magic Immune) Equal to False)) and (((Matching unit) belongs to an enemy of (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)) and (((Matching unit) is visible to (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)).))
Set Variable Set HM_Group[HM_Mui[2]] = (Random 1 units from (Units within 1000.00 of HM_Points[2] matching (((((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) is alive) Equal to True))) and (((Matching unit) is Magic Immune) Equal to False)) and (((Matching unit) belongs to an enemy of (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)) and (((Matching unit) is visible to (Owner of HM_Unit_Caster[HM_Mui[2]]).) Equal to True)).))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in HM_Group[HM_Mui[2]]) Not equal to 0
Then - Actions
Unit Group - Pick every unit in HM_Group[HM_Mui[2]] and do (Actions)
Loop - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = (Picked unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Check_Homing[HM_Mui[2]] Equal to True
Then - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = HM_Unit_Caster[HM_Mui[2]]
Else - Actions
Set Variable Set HM_Unit_Target[HM_Mui[2]] = No unit
Custom script: DestroyGroup( udg_HM_Group[udg_HM_Mui[2]])
Else - Actions
Set Variable Set HM_Speed_Add[HM_Mui[2]] = (HM_Speed_Add[HM_Mui[2]] + 0.15)
Set Variable Set HM_Speed[HM_Mui[2]] = (HM_Speed[HM_Mui[2]] + HM_Speed_Add[HM_Mui[2]])
-------- --------
Set Variable Set HM_Distance2[HM_Mui[2]] = (HM_Distance2[HM_Mui[2]] - HM_Speed[HM_Mui[2]])
Set Variable Set HM_Distance2[HM_Mui[2]] = (Distance between HM_Points[1] and HM_Points[3])
Unit - Move HM_Unit_Dummy[HM_Mui[2]] instantly to HM_Points[2] , facing HM_Angle[HM_Mui[2]] degrees
-------- --------
Custom script: RemoveLocation (udg_HM_Points[1])
Custom script: RemoveLocation (udg_HM_Points[2])
Custom script: RemoveLocation (udg_HM_Points[3])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
HM_Distance2[HM_Mui[2]] Less than or equal to 100.00
HM_Unit_Target[HM_Mui[2]] Equal to No unit
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Unit_Target[HM_Mui[2]] Not equal to HM_Unit_Caster[HM_Mui[2]]
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(HM_Unit_Target[HM_Mui[2]] is in BarrageAlreadyDMG.) Equal to True
Then - Actions
Unit - Cause HM_Unit_Caster[HM_Mui[2]] to damage HM_Unit_Target[HM_Mui[2]] , dealing (HM_Damage[HM_Mui[2]] / 2.00) damage of attack type Spells and damage type Normal
Else - Actions
Unit - Cause HM_Unit_Caster[HM_Mui[2]] to damage HM_Unit_Target[HM_Mui[2]] , dealing HM_Damage[HM_Mui[2]] damage of attack type Spells and damage type Normal
Unit Group - Add HM_Unit_Target[HM_Mui[2]] to BarrageAlreadyDMG
Else - Actions
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of HM_Unit_Target[HM_Mui[2]] using HM_Sfx[HM_Count[2]]
Special Effect - Destroy (Last created special effect)
Unit - Remove Item Damage Bonus (+1) from HM_Unit_Dummy[HM_Mui[2]]
Unit - Kill HM_Unit_Dummy[HM_Mui[2]]
Set Variable Set HM_Unit_Caster[HM_Mui[2]] = No unit
Set Variable Set HM_Unit_Dummy[HM_Mui[2]] = No unit
Set Variable Set HM_Unit_Target[HM_Mui[2]] = No unit
Set Variable Set HM_Distance2[HM_Mui[2]] = "0.00"
Set Variable Set HM_Angle[HM_Mui[2]] = "0.00"
Set Variable Set HM_Angle_Add[HM_Mui[2]] = "0.00"
Set Variable Set HM_Speed[HM_Mui[2]] = "0.00"
Set Variable Set HM_Speed_Add[HM_Mui[2]] = "0.00"
Set Variable Set HM_Damage[HM_Mui[2]] = "0.00"
Set Variable Set HM_Mui[0] = (HM_Mui[0] - 1)
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HM_Mui[0] Less than or equal to 0
Then - Actions
Unit Group - Remove all units from BarrageAlreadyDMG .
Trigger - Turn off (This trigger)
Set Variable Set HM_Mui[0] = "0"
Set Variable Set HM_Mui[1] = "0"
Else - Actions
Arcane Projection
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Add Item Armor Bonus (+1) to (Triggering unit)
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Priest for (Owner of (Triggering unit)) at Point facing 270.00 degrees
Unit - Add a 180.00 second Generic expiration timer to (Last created unit)
Selection - Select (Last created unit) for (Owner of (Triggering unit))
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Items\AIil\AIilTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\MassTeleportTo.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Triggering unit).) in Brainwash .
Hashtable - Save Handle Of (Triggering unit) as 0 of (Key (Last created unit).) in Brainwash .
Animation - Play (Last created unit) 's spell animation
Animation - Queue (Last created unit) 's stand animation
Unit - Add Channel to (Last created unit)
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Parasite for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Add Parasite to (Last created unit)
Unit - Set level of Parasite for (Last created unit) to (Level of Parasite for (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Channel for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Add Channel to (Last created unit)
Unit - Set level of Channel for (Last created unit) to (Level of Channel for (Triggering unit))
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Brilliance Aura for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Add Brilliance Aura to (Last created unit)
Unit - Set level of Brilliance Aura for (Last created unit) to (Level of Brilliance Aura for (Triggering unit))
Else - Actions
Custom script: RemoveLocation(udg_Point)
Arcane Projection Copy
Events
Unit - A unit Finishes casting an ability
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Remove Item Armor Bonus (+1) from (Triggering unit)
Set Variable Set Point = (Position of (Load 0 of (Key (Triggering unit).) in Brainwash.))
Trigger - Turn off Arcane_Projection_Death <gen>
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in Brainwash.).) in Brainwash .
Unit - Kill (Load 0 of (Key (Triggering unit).) in Brainwash.)
Unit - Remove (Load 0 of (Key (Triggering unit).) in Brainwash.) from the game
Trigger - Turn on Arcane_Projection_Death <gen>
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Items\AIil\AIilTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\MassTeleportTarget2.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\MassTeleportTo.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in Brainwash .
Arcane Projection Death
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Priest
Actions
Unit - Remove Item Armor Bonus (+1) from (Load 0 of (Key (Triggering unit).) in Brainwash.)
Set Variable Set Point = (Position of (Triggering unit))
Trigger - Turn off Arcane_Projection_Copy <gen>
Unit - Order (Load 0 of (Key (Triggering unit).) in Brainwash.) to Stop .
Trigger - Turn on Arcane_Projection_Copy <gen>
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Items\AIil\AIilTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\MassTeleportTarget2.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\MassTeleportTo.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Clear all child hashtables of child (Key (Load 0 of (Key (Triggering unit).) in Brainwash.).) in Brainwash .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in Brainwash .
Custom script: RemoveLocation(udg_Point)
Unit - Remove (Triggering unit) from the game
Turtle Caravan Range Detect
Events
Time - Every 0.50 seconds of game time
Conditions
(Number of units in (Units of type Giant Sea Turtle)) Not equal to 0
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and ((Unit-type of (Matching unit)) Equal to Giant Sea Turtle)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set UnitGroup_2 = (Units within 600.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((Unit-type of (Matching unit)) Equal to Gold Mine)).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup_2) Not equal to 0
Then - Actions
Unit - Remove Return Gold from Unit
Unit - Remove Return Lumber from Unit
Unit - Remove Trueshot Aura from Unit
Unit - Add Trueshot Aura to Unit
Player - Disable Return Gold for (Owner of Unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Trueshot Aura for Unit) Not equal to 0
Then - Actions
Unit - Remove Trueshot Aura from Unit
Unit - Add Trueshot Aura to Unit
Unit - Add Return Gold to Unit
Player - Enable Return Gold for (Owner of Unit)
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Turtle Caravan Disable
Events
Unit - A unit Is issued an order targeting an object
Conditions
(Level of Trueshot Aura for (Target unit of issued order)) Not equal to 0
(Unit-type of (Ordered unit)) Equal to Mur'gul Slave
(Unit-type of (Target unit of issued order)) Equal to Giant Sea Turtle
(Issued order) Not equal to (Order(load))
(Issued order) Not equal to (Order(board))
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Trueshot Aura for (Target unit of issued order)) Not equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Unit - Order (Ordered unit) to Stop .
Unit - Order (Target unit of issued order) to Load . (Ordered unit)
Unit - Order (Ordered unit) to Load . (Target unit of issued order)
Trigger - Turn on (This trigger)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Abduct
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Target unit of ability being cast) is A peon-type unit) Equal to True
Then - Actions
Unit - Add Spell Book to (Target unit of ability being cast)
Unit - Add Channel to (Target unit of ability being cast)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Items\AIlm\AIlmTarget.mdl
Special Effect - Destroy (Last created special effect)
Hashtable - Save Handle Of (Owner of (Target unit of ability being cast)) as 0 of (Key (Target unit of ability being cast).) in AbductTable .
Hashtable - Save Handle Of (Owner of (Triggering unit)) as 1 of (Key (Target unit of ability being cast).) in AbductTable .
Unit - Change ownership of (Target unit of ability being cast) to (Owner of (Triggering unit)) and Change color
Trigger - Turn on Abduct_End <gen>
Else - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Target must be a worker type unit."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Abduct Error
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Target unit of ability being cast) is A peon-type unit) Equal to True
Then - Actions
Else - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Target must be a worker type unit."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Abduct End
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and ((Level of Spell Book for (Matching unit)) Not equal to 0)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup) Not equal to 0
Then - Actions
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set UnitGroup_2 = (Units within 800.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A peon-type unit) Equal to False)) and ((((Matching unit) is A structure) Equal to False) and ((Owner of (Matching unit)) Equal to (Load 1 of (Key (Picked unit).) in AbductTable.)))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in UnitGroup_2) Equal to 0
Then - Actions
Set Variable Set Point_2 = ((Owner of Unit) start location)
Unit - Change ownership of Unit to (Load 0 of (Key (Picked unit).) in AbductTable.) and Change color
Unit - Remove Spell Book from Unit
Unit - Remove Channel from Unit
Special Effect - Create a special effect attached to the overhead (Unexpected type: 'attachpoint') of Unit using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
Special Effect - Destroy (Last created special effect)
Unit - Order Unit to Move To . Point_2
Custom script: RemoveLocation(udg_Point_2)
Hashtable - Clear all child hashtables of child (Key (Picked item).) in AbductTable .
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Trigger - Turn off (This trigger)
Custom script: DestroyGroup(udg_UnitGroup)
Pillars Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = (Target point of ability being cast)
Special Effect - Create a special effect at Point using Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Orc\MirrorImage\MirrorImageDeathCaster.mdl
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Orc\MirrorImage\MirrorImageDeathCaster.mdl
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Healing Ward for (Owner of (Triggering unit)) at Point facing 270.00 degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Turn collision for (Last created unit) On .
Unit - Add a (4.00 + (4.00 x (Real((Level of Channel for (Triggering unit)))))) second Generic expiration timer to (Last created unit)
Set Variable Set UnitGroup = (Units within 310.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit)).) Equal to True)))))).)
Unit Group - Pick every unit in (Random 4 units from UnitGroup) and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Channel to (Last created unit)
Unit - Set level of Channel for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . (Picked unit)
Unit - Add a (4.00 + (4.00 x (Real((Level of Channel for (Triggering unit)))))) second Generic expiration timer to (Last created unit)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Pillar Die
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Healing Ward
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Orc\MirrorImage\MirrorImageDeathCaster.mdl
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Orc\MirrorImage\MirrorImageDeathCaster.mdl
Special Effect - Set Scale of (Last created special effect) to 3.00
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Morphing Ray spell.
Made by G00dG4m3.

Channels (And really, CHANNELS) a stream of mana to target, turning it into a sheep (bahhaha) and dealing % of its
max life as damage to it.

Give me credits if you use it in your map.
Morphing Ray Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Add Slow Aura (Tornado) to (Target unit of ability being cast)
-------- Stores caster and target into variables --------
-------- NOTE 1: Caster is stored only because it's easier to write the script, not searching for Triggering Unit --------
Set Variable Set CasterMindBlast = (Triggering unit)
Set Variable Set TargetMindBlast = (Target unit of ability being cast)
-------- Finds the Caster's location --------
-------- NOTE 2: Will be used later for start-end points of the lightning we will create --------
Set Variable Set Points[1] = (Position of CasterMindBlast)
-------- Counts the damage dealt to target --------
-------- NOTE 3: Make your countings here --------
Set Variable Set Real[1] = "1.00"
Set Variable Set Real[1] = "0.00"
-------- NOTE 4: All the counted damage MUST be multiplied by 0.03 (or divided into 33.3) --------
-------- It is a MUST, because all ticks of damage will be dealt at interval of 0.03 --------
-------- We don't want to deal 800*.05=40 damage per 0.03 or 40/0.03=1333.(3) per second, do we? --------
Set Variable Set Real[1] = (Real[1] x 0.03)
-------- Counts the duration of the Spell --------
-------- NOTE 5: Count your duration here --------
-------- NOTE 6: This must be equal to follow through time for each level --------
Set Variable Set Real[2] = "20.00"
-------- Stores all information to the Hashtable --------
-------- NOTE 7: It is made to be easier to interupt the channeled effect through effect --------
-------- NOTE 8: Never, EVER, make spells w/ hashtables which is casted by CASTER and all information is attached to TARGET, cause it will get bugged! A LOT! --------
Hashtable - Save Handle Of TargetMindBlast as 0 of (Key (Triggering unit).) in MindBlastTable .
Hashtable - Save Real[1] as 1 of (Key (Triggering unit).) in MindBlastTable .
Hashtable - Save Real[2] as 2 of (Key (Triggering unit).) in MindBlastTable .
-------- NOTE 9: Lightning is created here, as I didn't want to waste an action for storing da lightning to da variable --------
-------- NOTE 10: Change your lighting type here --------
Lightning - Create a Magic Leash lightning effect from source Points[1] to target Points[1]
Hashtable - Save Handle Of (Last created lightning effect) as 3 of (Key (Triggering unit).) in MindBlastTable .
-------- Checks if there is any instance of spell already in on --------
-------- If not, turns the Channeled effect trigger on --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(RayCasters is empty) Equal to True
Then - Actions
Trigger - Turn on Morphing_Ray_Channel <gen>
Else - Actions
-------- Adds the Caster/Target SFX abilities to the Caster/Target. Obvious, isn't it? --------
Unit Group - Add CasterMindBlast to RayCasters
-------- Fixes the Leak --------
Custom script: RemoveLocation(udg_Points[1])
Here is a tick of the Spell

Never ever change the time between the Ticks, as comment in the Cast trigger says that tick is (and it is!) once per 0.03 second,
because of smooth sliding of lightnings and almost insta-interupt of the spell if any condition of interuption is reached.
Morphing Ray Channel
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in RayCasters and do (Actions)
Loop - Actions
-------- Stores Caster/Target into variables --------
Set Variable Set CasterMindBlast = (Picked unit)
Set Variable Set TargetMindBlast = (Load 0 of (Key (Picked unit).) in MindBlastTable.)
-------- Finds locations of Caster/Target --------
-------- These locations will be used to check the distance between the Duo and move lighting if possible --------
Set Variable Set Points[1] = (Position of CasterMindBlast)
Set Variable Set Points[2] = (Position of TargetMindBlast)
-------- Loads the Tick's damage --------
Set Variable Set Real[1] = (Load 1 of (Key (Picked unit).) from MindBlastTable.)
-------- Loads the duration left and reduces it by Tick interval --------
-------- NOTE 1: It MUST be equal to the interval of this Trigger, as stated above --------
Set Variable Set Real[2] = (Load 2 of (Key (Picked unit).) from MindBlastTable.)
Set Variable Set Real[2] = (Real[2] - 0.03)
-------- Loads the Lighting effect --------
Set Variable Set Lightning = (Load 3 of (Key (Picked unit).) in MindBlastTable.)
-------- Finds the Heights into which our lightning's start-end will be rised --------
Custom script: udg_Real[3] = GetLocationZ(udg_Points[1])
Custom script: udg_Real[4] = GetLocationZ(udg_Points[2])
Set Variable Set Real[3] = (Real[3] + ((Current flying height of CasterMindBlast) + 55.00))
Set Variable Set Real[4] = (Real[4] + ((Current flying height of TargetMindBlast) + 20.00))
-------- If everyone in the Duo is alive, timer hasn't expired and range between the Duo isn't too big... --------
-------- NOTE 2: Change your max channel range in the conditions --------
-------- NOTE 3: if you want it be infinite, write a huge number --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Points[1] and Points[2]) Less than or equal to 350.00
Real[2] Greater than 0.00
(CasterMindBlast is alive) Equal to True
(TargetMindBlast is alive) Equal to True
(TargetMindBlast is Magic Immune) Equal to False
Then - Actions
-------- Then... --------
-------- Moves lightning --------
Custom script: MoveLightningEx(udg_Lightning, true, GetLocationX(udg_Points[2]), GetLocationY(udg_Points[2]), udg_Real[4], GetLocationX(udg_Points[1]), GetLocationY(udg_Points[1]), udg_Real[3])
Unit - Make CasterMindBlast face TargetMindBlast over 0.00 seconds
-------- Causes caster to damage target --------
-------- Updates the time left in the timer --------
Hashtable - Save Real[2] as 2 of (Key (Picked unit).) in MindBlastTable .
Else - Actions
-------- Else... --------
-------- Removes SFX abilities from the Duo --------
-------- Removes the Transformation buff from Target. Well, if it is not dead yet --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Points[1] and Points[2]) Greater than 350.00
(TargetMindBlast is Magic Immune) Equal to False
Then - Actions
Set Variable Set Point = (Points[1] offset by 300.00 towards (Angle from Points[1] to Points[2]) degrees.)
Unit - Move TargetMindBlast instantly to Point
Special Effect - Create a special effect at Point using war3mapImported\HolyBlast.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Unit - Remove Slow Aura (Tornado) from TargetMindBlast
Unit - Remove Cloud buff from TargetMindBlast
Unit - Create 1 . Footman for (Owner of CasterMindBlast) at Points[2] facing Default building facing degrees
Unit - Add Storm Bolt to (Last created unit)
Unit - Set level of Storm Bolt for (Last created unit) to (Level of Channel for CasterMindBlast)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt . TargetMindBlast
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Else - Actions
-------- Destroys the lightning --------
Lightning - Destroy Lightning
-------- Clears the Hashtable --------
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in MindBlastTable .
-------- Removes Caster from the Channelers' group --------
Unit Group - Remove CasterMindBlast from RayCasters .
-------- Orders the Caster to hold position. Well, if it is not dead yet --------
Unit - Order CasterMindBlast to Hold Position .
-------- Clears the leaks --------
Custom script: RemoveLocation(udg_Points[1])
Custom script: RemoveLocation(udg_Points[2])
-------- Checks if there is any instance of spell left after loop --------
-------- If not, turns this trigger off --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(RayCasters is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
This trigger is completely formed to interupt the effects of the spell, if in any way the caster stops channeling the spell./
Don't change here anything, but I will put the comments here, if anyone would want to do something better out of it.

I don't check if I need to turn the Channeling trigger, because it will turn of itself without any side effects.
Morphing Ray Interupt
Events
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
-------- Stores our Duo into variables --------
Set Variable Set CasterMindBlast = (Triggering unit)
Set Variable Set TargetMindBlast = (Load 0 of (Key (Triggering unit).) in MindBlastTable.)
Unit - Remove Slow Aura (Tornado) from TargetMindBlast
Unit - Remove Cloud buff from TargetMindBlast
-------- Stores the Lightning into variable --------
Set Variable Set Lightning = (Load 3 of (Key (Triggering unit).) in MindBlastTable.)
-------- Clears the Hashtable, as we won't need anything anymore --------
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in MindBlastTable .
-------- Removes caster from channelers' group --------
Unit Group - Remove (Triggering unit) from RayCasters .
-------- Removes SFX abilities from the Duo --------
-------- Removes the Transformation buff from the Target --------
-------- Destroys the Lightning --------
Lightning - Destroy Lightning
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
War Command
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = ((Position of (Triggering unit)) offset by 110.00 towards ((Facing of (Triggering unit)) - 90.00) degrees.)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Unit - Create 1 . Watery Minion (Level 2) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 . Watery Minion (Level 2) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 . Watery Minion (Level 2) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
Unit - Add a 60 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Unit - Create 1 . Watery Minion (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 . Watery Minion (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 . Watery Minion (Level 1) for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
Unit - Add a 60 second Generic expiration timer to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 1
Then - Actions
Unit - Create 1 . Mur'gul Blood-Gill for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 2
Then - Actions
Unit - Create 1 . Mur'gul Blood-Gill for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of (Ability being cast) for (Triggering unit)) Equal to 3
Then - Actions
Unit - Create 1 . Mur'gul Blood-Gill for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Else - Actions
Unit - Add a 60 second Generic expiration timer to (Last created unit)
Else - Actions
Custom script: RemoveLocation(udg_Point)
Set Variable Set Point = (Position of (Last created unit))
Special Effect - Create a special effect at Point using war3mapImported\RaiseSharkcousin.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Set Variable Set Index[0] = (Level of Spell Book for (Triggering unit))
Unit - Remove Spell Book from (Triggering unit)
Unit - Add Spell Book to (Triggering unit)
Unit - Set level of Spell Book for (Triggering unit) to Index[0]
Unit - Missing string for 'BlzStartUnitAbilityCooldown'
War Command Learb
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Spell Book
Actions
Wait 0.00 seconds
Unit - Set level of Channel for (Triggering unit) to (Level of Spell Book for (Triggering unit))
Unit - Set level of Channel for (Triggering unit) to (Level of Spell Book for (Triggering unit))
Unit - Set level of Channel for (Triggering unit) to (Level of Spell Book for (Triggering unit))
War Command Die
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Mur'gul Blood-Gill
(Unit-type of (Triggering unit)) Equal to Mur'gul Blood-Gill
(Unit-type of (Triggering unit)) Equal to Mur'gul Blood-Gill
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 1)
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 1)
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 1)
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 2)
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 2)
(Unit-type of (Triggering unit)) Equal to Watery Minion (Level 2)
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\RaiseSharkcousin.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Demon\DemonLargeDeathExplode\DemonLargeDeathExplode.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Unit - Remove (Triggering unit) from the game
Victory Blow
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(Unit-type of DamageEventSource) Equal to Tauren Chieftain
(Level of Bash for DamageEventSource) Not equal to 0
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
(DamageEventTarget is A structure) Equal to False
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 100) Less than or equal to (10 + (10 x (Level of Bash for DamageEventSource)))
Then - Actions
Trigger - Turn off (This trigger)
Set Variable Set Point = (Position of DamageEventTarget)
Unit - Cause DamageEventSource to damage DamageEventTarget , dealing 30.00 damage of attack type Hero and damage type Normal
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventSource using war3mapImported\Holy Light2.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of DamageEventTarget using Abilities\Weapons\HydraliskImpact\HydraliskImpact.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 900.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((((Matching unit) is alive) Equal to True) and ((Owner of (Matching unit)) Not equal to Neutral Passive)) and ((((Matching unit) belongs to an ally of (Owner of DamageEventSource).) Equal to True) and ((((Matching unit) is A peon-type unit) Equal to False) and (((Matching unit) has buff Inner Fire) Equal to False)))))))).)
Unit - Create 1 . Footman for (Owner of DamageEventSource) at Point facing Default building facing degrees
Unit - Add Inner Fire to (Last created unit)
Unit - Order (Last created unit) to Human Priest - Inner Fire . (Random unit from UnitGroup)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Trigger - Turn on (This trigger)
Else - Actions
Stop Concuer
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Charm
Or - Any (Conditions) are true
Conditions
((Target unit of ability being cast) is A town-hall-type unit) Equal to True
(Unit-type of (Target unit of ability being cast)) Equal to Entangled Gold Mine
(Unit-type of (Target unit of ability being cast)) Equal to Haunted Gold Mine
Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Cannot target this type of building."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Stop Concuer Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Charm
Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Special Effect - Create a special effect at Point using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Shockwave Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
-------- Stores Caster into a variable --------
Set Variable Set Caster = (Triggering unit)
-------- Finds the locations of Caster, target point and Wave spawn point --------
Set Variable Set Points[1] = (Position of Caster)
Set Variable Set Points[2] = (Target point of ability being cast)
Set Variable Set Points[3] = (Points[1] offset by 50.00 towards (Angle from Points[1] to Points[2]) degrees.)
-------- Distance which the wave will travel --------
-------- NOTE 1: Change your MAX wave distance here --------
Set Variable Set Real[1] = "800.00"
-------- Here put your 'stun' duration --------
-------- NOTE 3: If you put a higher amount, then the 'stun' will last longer --------
Set Variable Set Real[2] = (2.00 + (Real((Level of (Ability being cast) for Caster))))
-------- Counts the damage dealt by wave --------
-------- NOTE 3: Calculate your damage here --------
Set Variable Set Real[3] = (30.00 + (30.00 x (Real((Level of (Ability being cast) for Caster)))))
-------- Creates a wave unit --------
-------- NOTE 4: Change your wave model in the Object editor, unit The Shockwave --------
Unit - Create 1 . Footman for (Owner of Caster) at Points[3] facing (Angle from Points[1] to Points[2]) degrees
Unit - Change color of (Last created unit) to Light Blue
Animation - Play (Last created unit) 's birth animation
-------- Stores the information required into hashtable --------
-------- NOTE 5: All infromation is attached to the wave unit --------
Hashtable - Save Handle Of Caster as 0 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[1] as 1 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[1] as 2 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[2] as 3 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[3] as 4 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Handle Of (Units of type Footman) as 5 of (Key (Last created unit).) in HashtableRiptide .
-------- Checks if there is any instance of spell already running --------
-------- If not, then turns the sliding trigger on --------
Set Variable Set MurlocTideDamage = (Units currently selected by Neutral Extra)
Unit Group - Remove all units from MurlocTideDamage .
Unit Group - Add (Last created unit) to Shockwaves
Trigger - Turn on Shockwave_Slide <gen>
-------- Adds wave unit to the Waves' group --------
-------- Clears the Leaks --------
Custom script: RemoveLocation(udg_Points[1])
Custom script: RemoveLocation(udg_Points[2])
Custom script: RemoveLocation(udg_Points[3])
Shockwave Slide
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in Shockwaves and do (Actions)
Loop - Actions
-------- Loads the Caster --------
Set Variable Set Caster = (Load 0 of (Key (Picked unit).) in HashtableRiptide.)
-------- Loads the Distance-to-Travel and reduces it by 'speed' --------
Set Variable Set Real[1] = (Load 1 of (Key (Picked unit).) from HashtableRiptide.)
-------- NOTE 1: The real number substracted must be equal to the one below (I'll remind it to you) --------
Set Variable Set Real[1] = (Real[1] - 27.00)
-------- Loads the total Distance-to-Travel and counts the % of the way left --------
-------- This will be used to shorten the duration of 'stun' --------
-------- NOTE 3: This doesn't allow you to have the max duration of 'stun', but the difference is not too noticable --------
Set Variable Set Real[2] = (Load 2 of (Key (Picked unit).) from HashtableRiptide.)
Set Variable Set Real[3] = (Real[1] / Real[2])
-------- Loads the total Duration of 'stun' --------
Set Variable Set Real[4] = (Load 3 of (Key (Picked unit).) from HashtableRiptide.)
-------- Counts how long will 'stun' last on enemies enumerated during this loop --------
Set Variable Set Real[4] = (Real[3] x Real[4])
-------- Loads the damage-to-deal --------
Set Variable Set Real[5] = (Load 4 of (Key (Picked unit).) from HashtableRiptide.)
-------- Finds the location of wave unit and calculates the point to which will it will move --------
Set Variable Set Points[1] = (Position of (Picked unit))
Set Variable Set Points[2] = (Points[1] offset by 27.00 towards (Facing of (Picked unit)) degrees.)
-------- Enumerates enemies for damaging and 'stunning' --------
-------- NOTE 4: Enumerates visible enemy ground units which are still alive and are not mechanical nor magic immune --------
Set Variable Set EnemiesRiptide = (Units within 185.00 of Points[2] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is in (Load 5 of (Key (Picked unit).) in HashtableRiptide.).) Not equal to True)) and ((((Matching unit) is Mechanical) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is dead) Not equal to True) and (((Matching unit) belongs to an enemy of (Owner of Caster).) Equal to True)))))).)
-------- Moves the wave unit to the further it's location --------
Unit - Move (Picked unit) instantly to Points[2]
Unit Group - Add all units of EnemiesRiptide to (Load 5 of (Key (Picked unit).) in HashtableRiptide.)
-------- Does the damaging and 'stunning' --------
Unit Group - Pick every unit in EnemiesRiptide and do (Actions)
Loop - Actions
Unit - Cause Caster to damage (Picked unit) , dealing Real[5] damage of attack type Spells and damage type Normal
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
-------- Checks if the distance-to-travel left isn't over --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Real[1] Less than or equal to 0.00
Then - Actions
-------- If it is, then... --------
-------- Rids the hashtable of all information attached to the Wave unit --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of Caster) Not equal to Footman
Then - Actions
Set Variable Set Points[3] = (Position of Caster)
Unit - Create 1 . Footman for (Owner of Caster) at Points[2] facing Default building facing degrees
Unit - Add Channel to (Last created unit)
Unit - Set level of Channel for (Last created unit) to (Level of Channel for Caster)
Unit - Order (Last created unit) to Orc Tauren Chieftain - Shockwave . Points[3]
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Points[3])
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in HashtableRiptide .
Unit Group - Remove all units from MurlocTideDamage .
-------- Removes wave unit from Waves' group --------
Unit Group - Remove (Picked unit) from Shockwaves .
-------- Removes Wave unit from game --------
Unit - Remove Item Damage Bonus (+1) from (Picked unit)
Unit - Remove (Picked unit) from the game
Special Effect - Create a special effect at Points[1] using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Points[1] using war3mapImported\Tide Surge.mdx
Special Effect - Destroy (Last created special effect)
Custom script: DestroyGroup(udg_MurlocTideDamage)
Else - Actions
-------- If it isn't, then... --------
-------- Updates the Distance-to-Travel left --------
Hashtable - Save Real[1] as 1 of (Key (Picked unit).) in HashtableRiptide .
-------- Clears the leaks --------
Custom script: RemoveLocation(udg_Points[1])
Custom script: RemoveLocation(udg_Points[2])
Custom script: DestroyGroup(udg_EnemiesRiptide)
-------- Checks if there is any Instance of spell still runing --------
-------- If there isn't any, then turns this trigger off --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Shockwaves is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Shockwave Cast Second
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
-------- Stores Caster into a variable --------
Set Variable Set Caster = (Triggering unit)
-------- Finds the locations of Caster, target point and Wave spawn point --------
Set Variable Set Points[1] = (Position of Caster)
Set Variable Set Points[2] = (Target point of ability being cast)
Set Variable Set Points[3] = (Points[1] offset by 70.00 towards (Angle from Points[1] to Points[2]) degrees.)
-------- Distance which the wave will travel --------
-------- NOTE 1: Change your MAX wave distance here --------
Set Variable Set Real[1] = (Distance between Points[1] and Points[2])
-------- Here put your 'stun' duration --------
-------- NOTE 3: If you put a higher amount, then the 'stun' will last longer --------
Set Variable Set Real[2] = (2.00 + (Real((Level of (Ability being cast) for Caster))))
-------- Counts the damage dealt by wave --------
-------- NOTE 3: Calculate your damage here --------
Set Variable Set Real[3] = (30.00 + (20.00 x (Real((Level of (Ability being cast) for Caster)))))
-------- Creates a wave unit --------
-------- NOTE 4: Change your wave model in the Object editor, unit The Shockwave --------
Unit - Create 1 . Footman for (Owner of Caster) at Points[3] facing (Angle from Points[1] to Points[2]) degrees
Unit - Change color of (Last created unit) to Light Blue
Animation - Play (Last created unit) 's birth animation
-------- Stores the information required into hashtable --------
-------- NOTE 5: All infromation is attached to the wave unit --------
Hashtable - Save Handle Of Caster as 0 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[1] as 1 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[1] as 2 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[2] as 3 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Real[3] as 4 of (Key (Last created unit).) in HashtableRiptide .
Hashtable - Save Handle Of (Units of type Footman) as 5 of (Key (Last created unit).) in HashtableRiptide .
-------- Checks if there is any instance of spell already running --------
-------- If not, then turns the sliding trigger on --------
Set Variable Set MurlocTideDamage = (Units currently selected by Neutral Extra)
Unit Group - Remove all units from MurlocTideDamage .
Unit Group - Add (Last created unit) to Shockwaves
Trigger - Turn on Shockwave_Slide <gen>
-------- Adds wave unit to the Waves' group --------
-------- Clears the Leaks --------
Custom script: RemoveLocation(udg_Points[1])
Custom script: RemoveLocation(udg_Points[2])
Custom script: RemoveLocation(udg_Points[3])
Ocean Breeze Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Set Variable Set Point = (Target point of ability being cast)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit Group - Add (Last created unit) to BreezeGroup
Unit - Turn collision for (Last created unit) Off .
Unit - Add a 14.00 second Generic expiration timer to (Last created unit)
Unit - Set level of Healing Ward Aura (Healing Ward) for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Turn collision for (Last created unit) Off .
Unit - Add a 6.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Moonsoon Learn
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Berserk
Actions
Unit - Add Item Armor Bonus (+1) to (Triggering unit)
Moonsoon UnLearn
Events
Unit - A unit Uses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Tome of Retraining
Actions
Unit - Remove Item Armor Bonus (+1) from (Triggering unit)
Monsoon Aura
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Spell Book for (Matching unit)) Not equal to 0)) and (((Matching unit) is alive) Equal to True)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Point = (Position of (Picked unit))
Set Variable Set Unit = (Picked unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((Level of Berserk for (Matching unit)) Not equal to 0) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True)))).)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(Number of units in UnitGroup_2) Equal to 0
Or - Any (Conditions) are true
Conditions
(Terrain pathing at Point_2 of type Floatability is off) Equal to True
((Picked unit) has buff Healing Ward Aura) Equal to False
((Picked unit) has buff Endurance Aura) Equal to False
Then - Actions
Unit - Remove Spell Book from Unit
Else - Actions
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: RemoveLocation(udg_Point)
Custom script: DestroyGroup(udg_UnitGroup)
Set Variable Set UnitGroup = (Units in (Playable map area) matching (((((Matching unit) is alive) Equal to True) and ((Level of Berserk for (Matching unit)) Not equal to 0)) and ((Unit-type of (Matching unit)) Equal to Blood Mage)))
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Set Variable Set Unit = (Picked unit)
Set Variable Set Point = (Position of Unit)
Set Variable Set UnitGroup_2 = (Units within 900.00 of Point matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Mechanical) Equal to False)) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of Unit).) Equal to True))).)
Unit Group - Pick every unit in UnitGroup_2 and do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Terrain pathing at Point_2 of type Floatability is off) Equal to False
((Picked unit) has buff Healing Ward Aura) Equal to True
((Picked unit) has buff Endurance Aura) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Endurance Aura for (Picked unit)) Not equal to (Level of Berserk for Unit)
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Shaman
(Unit-type of (Picked unit)) Equal to Necromancer
(Unit-type of (Picked unit)) Equal to Naga Siren
(Unit-type of (Picked unit)) Equal to Naga Siren
Then - Actions
Hashtable - Save (Mana of (Picked unit)) as 0 of (Key (Picked unit).) in ManabugTable .
Else - Actions
Unit - Remove Spell Book from (Picked unit)
Unit - Add Spell Book to (Picked unit)
Unit - Set level of Evasion for (Picked unit) to (Level of Berserk for Unit)
Unit - Set level of Endurance Aura for (Picked unit) to (Level of Berserk for Unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Shaman
(Unit-type of (Picked unit)) Equal to Necromancer
(Unit-type of (Picked unit)) Equal to Naga Siren
(Unit-type of (Picked unit)) Equal to Naga Siren
Then - Actions
Unit - Set mana of (Picked unit) to (Load 0 of (Key (Picked unit).) from ManabugTable.)
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in ManabugTable .
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Spell Book for (Picked unit)) Not equal to 0
Then - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Shaman
(Unit-type of (Picked unit)) Equal to Necromancer
(Unit-type of (Picked unit)) Equal to Naga Siren
(Unit-type of (Picked unit)) Equal to Naga Siren
Then - Actions
Hashtable - Save (Mana of (Picked unit)) as 0 of (Key (Picked unit).) in ManabugTable .
Else - Actions
Unit - Add Spell Book to (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Picked unit)) Equal to Shaman
(Unit-type of (Picked unit)) Equal to Necromancer
(Unit-type of (Picked unit)) Equal to Naga Siren
(Unit-type of (Picked unit)) Equal to Naga Siren
Then - Actions
Unit - Set mana of (Picked unit) to (Load 0 of (Key (Picked unit).) from ManabugTable.)
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in ManabugTable .
Else - Actions
Else - Actions
Unit - Remove Spell Book from (Picked unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: DestroyGroup(udg_UnitGroup_2)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Monsoon Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Berserk
Actions
Trigger - Turn off Moonsoon_Death <gen>
Unit - Kill WeatherUnit
Trigger - Turn on Moonsoon_Death <gen>
Environment - Remove Weather
Environment - Create at (Playable map area) the weather effect Ashenvale Rain (Heavy)
Environment - Turn (Last created weather effect) On
Environment - Reset fog to default values
Environment - Set fog to style Linear , z-start 1000 , z-end 5000.00 , density 0.50 and color ( 0.00 %, 80.00 %, 80.00 %)
Set Variable Set Weather = (Last created weather effect)
Set Variable Set Point = (Position of (Triggering unit))
Cinematic - Fade out and back in over 1.00 seconds using texture White Mask and color ( 0 %, 100.00 %, 100.00 %) with 80.00 % transparency
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Set Variable Set WeatherUnit = (Last created unit)
Unit - Add a 60.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Moonsoon Death
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
Environment - Remove Weather
Environment - Reset fog to default values
Cinematic - Fade out and back in over 1.00 seconds using texture White Mask and color ( 0 %, 100.00 %, 100.00 %) with 80.00 % transparency
Eye of the Storm Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Add Item Armor Bonus (+1) to (Triggering unit)
Unit Group - Add (Triggering unit) to StormEyeGroup
Trigger - Turn on Eye_of_the_Storm_Loop <gen>
Eye of the Storm Stop
Events
Unit - A unit Finishes casting an ability
Unit - A unit Stops casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit - Remove Item Armor Bonus (+1) from (Triggering unit)
Unit Group - Remove (Triggering unit) from StormEyeGroup .
Eye of the Storm Loop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in StormEyeGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Item Armor Bonus (+1) for (Picked unit)) Not equal to 0
((Picked unit) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Picked unit))
For each (Integer A) from 1 to (Random integer number between 2 and 3) , do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Point offset by (Random real number between 250.00 and 1000.00) towards (Random angle) degrees.)
Unit - Create 1 . Footman for (Owner of (Picked unit)) at Point_2 facing Default building facing degrees
Unit - Add War Stomp (Neutral Hostile 1), (Neutral Hostile) to (Last created unit)
Unit - Order (Last created unit) to Orc Tauren Chieftain - War Stomp .
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Unit Group - Remove (Picked unit) from StormEyeGroup .
Unit - Remove Item Armor Bonus (+1) from (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in StormEyeGroup) Not equal to 0
Then - Actions
Else - Actions
Trigger - Turn off (This trigger)
Caustic Gas
Events
Unit - A unit Starts the effect of an ability
Unit - A unit Dies
Conditions
(Current research level of R019 (Unexpected type: 'techcode') for (Owner of (Triggering unit))) Not equal to 0
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Channel
(Unit-type of (Dying unit)) Equal to Hippogryph
(Unit-type of (Dying unit)) Equal to Hippogryph
Actions
Set Variable Set Point = (Position of (Triggering unit))
Animation - Change (Triggering unit) flying height to 0.00 at 0.50
Special Effect - Create a special effect at Point using war3mapImported\WidowPoison.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 1.50
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\NightElf\CorrosiveBreath\ChimaeraAcidTargetArt.mdl
Special Effect - Set Scale of (Last created special effect) to 2.00
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Weapons\ChimaeraAcidMissile\ChimaeraAcidMissile.mdl
Special Effect - Set Scale of (Last created special effect) to 1.00
Special Effect - Destroy (Last created special effect)
Unit - Kill (Triggering unit)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Facing of (Triggering unit)) degrees
Unit - Add Flame Strike to (Last created unit)
Unit - Order (Last created unit) to Human Blood Mage - Flame Strike . Point
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Muddy Waters
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Inner Fire
Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Animation - Change (Last created unit) flying height to 40.00 at 0.10
Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
Hashtable - Save Handle Of (Target unit of ability being cast) as 0 of (Key (Last created unit).) in MuddyWaters .
Unit Group - Add (Last created unit) to MuddyWatersUnits
Trigger - Turn on Muddy_Waters_Loop <gen>
Custom script: RemoveLocation(udg_Point)
-------- -------------------- --------
-------- System Setup --------
-------- -------------------- --------
Set Variable Set BS_Index2 = (BS_Index2 + 1)
Set Variable Set BS_Buffing_Unit[BS_Index2] = (Triggering unit)
Set Variable Set BS_Buffed_Unit[BS_Index2] = (Target unit of ability being cast)
Set Variable Set BS_Buff_Ability[BS_Index2] = "A07U"
Set Variable Set BS_Bonus_Ability[BS_Index2] = "A07S"
Set Variable Set BS_Use_Bonus[BS_Index2] = "true"
Set Variable Set BS_Buff[BS_Index2] = "B02B"
Set Variable Set BS_Buff_Duration[BS_Index2] = "30.00"
Set Variable Set BS_Buff_Category[BS_Index2] = "1"
Set Variable Set BS_Stack[BS_Index2] = "0"
Set Variable Set BS_MaxStack[BS_Index2] = "0"
Set Variable Set BS_Buff_Type[BS_Index2] = "1"
Set Variable Set BS_Permanent[BS_Index2] = "false"
Set Variable Set BS_MagicImmune[BS_Index2] = "true"
Trigger - Run Run_Buffing <gen> (ignoring conditions)
-------- -------------------- --------
-------- Finish Setup --------
-------- -------------------- --------
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Muddy Waters Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in MuddyWatersUnits and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Picked unit).) in MuddyWaters.) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Picked unit).) in MuddyWaters.))
Unit - Move (Picked unit) instantly to Point
Custom script: RemoveLocation(udg_Point)
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in MuddyWaters .
Unit - Remove (Picked unit) from the game
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in MuddyWatersUnits) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Abyssal Curse
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Archer
(Unit-type of (Target unit of ability being cast)) Equal to Footman
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Slave
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Footman
Then - Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Special Effect - Create a special effect at Point using war3mapImported\RaiseSharkcousin.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\CallOfAggression.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using war3mapImported\s_EvilWave_Effect.mdx
Special Effect - Set Color of (Last created special effect) to r: 150 , g: 0 , b: 255
Special Effect - Set Alpha of (Last created special effect) to 125
Special Effect - Destroy (Last created special effect)
Unit - Kill (Target unit of ability being cast)
Set Variable Set UnitGroup = (Units within 500.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) belongs to an enemy of (Owner of (Triggering unit)).) Equal to True) and (((Matching unit) is hidden) Equal to False)) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and ((Owner of (Matching unit)) Not equal to Neutral Passive)))))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add Inner Fire to (Last created unit)
Unit - Order (Last created unit) to Human Priest - Inner Fire . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Weapons\SludgeMissile\SludgeMissile.mdl
Special Effect - Destroy (Last created special effect)
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Unit - Order (Triggering unit) to Stop .
Abyssal Curse Copy
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Dark Conversion (Malganis)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Archer
(Unit-type of (Target unit of ability being cast)) Equal to Footman
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Slave
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Mur'gul Blood-Gill
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 1)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Watery Minion (Level 2)
(Unit-type of (Target unit of ability being cast)) Equal to Footman
Then - Actions
Else - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Target must be a Murloc."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Abyssal Curse Dispell
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic (Neutral Hostile)
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic (Neutral Hostile, second position)
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Cyclone (Cenarius)
(Ability being cast) Equal to Cyclone (Neutral Hostile)
(Ability being cast) Equal to Detonate
(Ability being cast) Equal to Purge (Neutral Hostile)
(Ability being cast) Equal to Devour Magic
(Ability being cast) Equal to Devour Magic (Neutral Hostile)
(Ability being cast) Equal to Devour Magic
(Ability being cast) Equal to Disenchant
(Ability being cast) Equal to Disenchant (Old)
(Ability being cast) Equal to Dispel Magic
(Ability being cast) Equal to Dispel Magic (Neutral Hostile)
(Ability being cast) Equal to Purge
(Ability being cast) Equal to Purge
(Ability being cast) Equal to Purge (Neutral Hostile)
(Ability being cast) Equal to Ray of Disruption
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Spell Steal
(Ability being cast) Equal to Ray of Disruption
(Ability being cast) Equal to Dispel Magic
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Target unit of ability being cast) has buff Slow) Equal to True
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Purge (Neutral Hostile)
(Ability being cast) Equal to Abolish Magic (Neutral Hostile)
(Ability being cast) Equal to Abolish Magic (Neutral Hostile, second position)
(Ability being cast) Equal to Abolish Magic
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Cyclone (Cenarius)
(Ability being cast) Equal to Cyclone (Neutral Hostile)
(Ability being cast) Equal to Purge
(Ability being cast) Equal to Purge
(Ability being cast) Equal to Purge (Neutral Hostile)
(Ability being cast) Equal to Ray of Disruption
(Ability being cast) Equal to Cyclone
(Ability being cast) Equal to Spell Steal
(Ability being cast) Equal to Ray of Disruption
Then - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Target unit of ability being cast) , dealing 75.00 damage of attack type Spells and damage type Normal
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Detonate
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Set Variable Set UnitGroup = (Units within 300.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slow) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Picked unit) , dealing 75.00 damage of attack type Spells and damage type Normal
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Devour Magic
(Ability being cast) Equal to Devour Magic (Neutral Hostile)
(Ability being cast) Equal to Disenchant (Old)
Then - Actions
Set Variable Set Point = (Target point of ability being cast)
Set Variable Set UnitGroup = (Units within 200.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slow) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Picked unit) , dealing 75.00 damage of attack type Spells and damage type Normal
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Abolish Magic
Then - Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Set Variable Set UnitGroup = (Units within 200.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slow) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Picked unit) , dealing 75.00 damage of attack type Spells and damage type Normal
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Dispel Magic
Then - Actions
Set Variable Set Point = (Target point of ability being cast)
Set Variable Set UnitGroup = (Units within (100.00 + (100.00 x (Real((Level of Dispel Magic for (Triggering unit)))))) of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slow) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Picked unit) , dealing 75.00 damage of attack type Spells and damage type Normal
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Disenchant
Then - Actions
Set Variable Set Point = (Target point of ability being cast)
Set Variable Set UnitGroup = (Units within 250.00 of Point matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slow) Equal to True)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Picked unit) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause (Triggering unit) to damage (Picked unit) , dealing 75.00 damage of attack type Spells and damage type Normal
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Else - Actions
new
Start Building Naga
Events
Unit - A unit Begins construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructing structure)) Equal to Great Hall
(Unit-type of (Constructing structure)) Equal to Altar of the Depths
(Unit-type of (Constructing structure)) Equal to Barracks
(Unit-type of (Constructing structure)) Equal to Arcane Sanctum
(Unit-type of (Constructing structure)) Equal to Workshop
(Unit-type of (Constructing structure)) Equal to Shrine of Azshara
(Unit-type of (Constructing structure)) Equal to Tidal Guardian
(Unit-type of (Constructing structure)) Equal to Tidal Guardian
(Unit-type of (Constructing structure)) Equal to Coral Bed
(Unit-type of (Constructing structure)) Equal to War Mill
(Unit-type of (Constructing structure)) Equal to Arcane Vault
Actions
Set Variable Set Point = (Position of (Constructing structure))
Set Variable Set Distance = "500.00"
Unit Group - Pick every unit in Slaves and do (Actions)
Loop - Actions
Set Variable Set Point_2 = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Less than or equal to Distance
Then - Actions
Set Variable Set Distance = (Distance between Point and Point_2)
Set Variable Set Unit = (Picked unit)
Else - Actions
Custom script: RemoveLocation(udg_Point_2)
Hashtable - Save Handle Of Unit as 2 of (Key (Constructing structure).) in BuildHastable .
Custom script: RemoveLocation(udg_Point)
Unit Group - Add (Constructing structure) to buildings_BuildNaga
Trigger - Turn on Naga_Build_Tick <gen>
Unit - Add Item Damage Bonus (+1) to (Constructing structure)
Unit - Add Item Damage Bonus (+1) to (Constructing structure)
Unit - Add Item Damage Bonus (+1) to (Constructing structure)
Set Variable Set Point = (Position of (Constructing structure))
Special Effect - Create a special effect at Point using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Hashtable - Save Handle Of (Last created unit) as 0 of (Key (Constructing structure).) in BuildHastable .
Hashtable - Save Handle Of (Constructing structure) as 0 of (Key (Last created unit).) in BuildHastable .
Custom script: RemoveLocation(udg_Point)
Naga End SFX
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Item Damage Bonus (+1) for (Load 0 of (Key (Triggering unit).) in BuildHastable.)) Not equal to 0
Then - Actions
Set Variable Set Unit = (Load 0 of (Key (Triggering unit).) in BuildHastable.)
Custom script: udg_Handle = GetHandleId(udg_Unit)
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Unit - Remove Item Damage Bonus (+1) from (Load 0 of (Key (Triggering unit).) in BuildHastable.)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Hashtable - Save Handle Of (Last created unit) as 1 of Handle in BuildHastable .
Unit - Move (Last created unit) instantly to Point
Unit - Add Channel to (Last created unit)
Unit - Order (Last created unit) to Orc Blademaster - Wind Walk .
Animation - Play (Last created unit) 's birth animation
Animation - Change (Last created unit) 's animation speed to 60.00 % of its original speed
Animation - Queue (Last created unit) 's stand animation
Custom script: RemoveLocation(udg_Point)
Else - Actions
Naga Death Shop
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Arcane Vault
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Remove (Triggering unit) from the game
Special Effect - Create a special effect at Point using war3mapImported\AquaSpike.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Untitled Trigger 012
Events
Unit - A unit Is issued an order targeting a point
Conditions
(Unit-type of (Triggering unit)) Equal to Mur'gul Slave
((Triggering unit) is Magic Immune) Equal to False
((Triggering unit) is hidden) Equal to False
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Issued order) Equal to (Order(custom_o00N))
(Issued order) Equal to (Order(custom_o00K))
(Issued order) Equal to (Order(custom_n00O))
(Issued order) Equal to (Order(custom_o00P))
(Issued order) Equal to (Order(custom_h00J))
(Issued order) Equal to (Order(custom_h00K))
(Issued order) Equal to (Order(custom_n00T))
(Issued order) Equal to (Order(custom_n00P))
(Issued order) Equal to (Order(custom_h00I))
(Issued order) Equal to (Order(custom_n00Q))
Then - Actions
Unit Group - Add (Triggering unit) to Slaves
Else - Actions
Unit Group - Remove (Triggering unit) from Slaves .
Naga Remove Slave
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Footman
Actions
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Animation - Change (Triggering unit) 's animation speed to 200.00 % of its original speed
Naga Builded
Events
Unit - A unit Finishes construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Constructed structure)) Equal to Barracks
(Unit-type of (Constructed structure)) Equal to Altar of the Depths
(Unit-type of (Constructed structure)) Equal to Workshop
(Unit-type of (Constructed structure)) Equal to Arcane Sanctum
(Unit-type of (Constructed structure)) Equal to Arcane Vault
(Unit-type of (Constructed structure)) Equal to Shrine of Azshara
(Unit-type of (Constructed structure)) Equal to Coral Bed
(Unit-type of (Constructed structure)) Equal to War Mill
(Unit-type of (Constructed structure)) Equal to Tidal Guardian
(Unit-type of (Constructed structure)) Equal to Tidal Guardian
(Unit-type of (Constructed structure)) Equal to Great Hall
Actions
Set Variable Set Point = (Position of (Constructed structure))
Unit - Kill (Load 2 of (Key (Constructed structure).) in BuildHastable.)
Unit - Remove (Load 2 of (Key (Constructed structure).) in BuildHastable.) from the game
Unit - Remove Item Damage Bonus (+1) from (Constructed structure)
Unit - Remove Item Damage Bonus (+1) from (Constructed structure)
Unit - Remove Item Damage Bonus (+1) from (Constructed structure)
Unit - Remove classification of A sapper from (Constructed structure)
Special Effect - Create a special effect at Point using war3mapImported\AquaSpike.mdx
Special Effect - Destroy (Last created special effect)
Hashtable - Clear all child hashtables of child (Key (Constructed structure).) in BuildHastable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Constructed structure)) Equal to Great Hall
Then - Actions
Player - Limit training of Naga Myrmidon to 0 for (Owner of (Triggering unit))
Player - Limit training of Naga Myrmidon to (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and (((Matching unit) is A town-hall-type unit) Equal to True)))) for (Owner of (Triggering unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Number of living Naga Myrmidon units owned by (Owner of (Triggering unit))) - 0) Less than (Number of units in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Triggering unit))) and (((Matching unit) is A town-hall-type unit) Equal to True))))
Then - Actions
Player - Make Naga Myrmidon Unavailable for training/construction by (Owner of (Triggering unit))
Else - Actions
Else - Actions
Custom script: RemoveLocation(udg_Point)
Cancel Copy
Events
Unit - A unit Cancels construction
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Cancelled structure)) Equal to Barracks
(Unit-type of (Cancelled structure)) Equal to Altar of the Depths
(Unit-type of (Cancelled structure)) Equal to Workshop
(Unit-type of (Cancelled structure)) Equal to Arcane Sanctum
(Unit-type of (Cancelled structure)) Equal to War Mill
(Unit-type of (Cancelled structure)) Equal to Arcane Vault
(Unit-type of (Cancelled structure)) Equal to Coral Bed
(Unit-type of (Cancelled structure)) Equal to Shrine of Azshara
(Unit-type of (Cancelled structure)) Equal to Tidal Guardian
(Unit-type of (Cancelled structure)) Equal to Tidal Guardian
(Unit-type of (Cancelled structure)) Equal to Great Hall
Actions
Set Variable Set Point = (Position of (Cancelled structure))
Special Effect - Create a special effect at Point using war3mapImported\AquaSpike.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Unit - Kill (Load 0 of (Key (Cancelled structure).) in BuildHastable.)
Unit - Kill (Load 1 of (Key (Cancelled structure).) in BuildHastable.)
Unit - Remove (Load 1 of (Key (Cancelled structure).) in BuildHastable.) from the game
Hashtable - Clear all child hashtables of child (Key (Cancelled structure).) in BuildHastable .
Cancel Copy Copy
Events
Unit - A unit Dies
Conditions
(Level of Item Damage Bonus (+1) for (Triggering unit)) Not equal to 0
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Barracks
(Unit-type of (Triggering unit)) Equal to Altar of the Depths
(Unit-type of (Triggering unit)) Equal to Workshop
(Unit-type of (Triggering unit)) Equal to Arcane Sanctum
(Unit-type of (Triggering unit)) Equal to War Mill
(Unit-type of (Triggering unit)) Equal to Arcane Vault
(Unit-type of (Triggering unit)) Equal to Coral Bed
(Unit-type of (Triggering unit)) Equal to Shrine of Azshara
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
(Unit-type of (Triggering unit)) Equal to Great Hall
Actions
Set Variable Set Point = (Position of (Triggering unit))
Special Effect - Create a special effect at Point using war3mapImported\AquaSpike.mdx
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Unit - Kill (Load 0 of (Key (Triggering unit).) in BuildHastable.)
Unit - Kill (Load 1 of (Key (Triggering unit).) in BuildHastable.)
Unit - Remove (Load 1 of (Key (Triggering unit).) in BuildHastable.) from the game
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in BuildHastable .
Untitled Trigger 013
Events
Unit - A unit Begins an upgrade
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Great Hall
(Unit-type of (Triggering unit)) Equal to Stronghold
Actions
Unit - Add Item Damage Bonus (+1) to (Triggering unit)
Untitled Trigger 013 Copy
Events
Unit - A unit Cancels an upgrade
Unit - A unit Finishes an upgrade
Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Great Hall
(Unit-type of (Triggering unit)) Equal to Stronghold
Actions
Unit - Remove Item Damage Bonus (+1) from (Triggering unit)
Slave Sacrifice
Events
Unit - A unit Is issued an order targeting an object
Conditions
(Level of Channel for (Triggering unit)) Not equal to 0
(Issued order) Not equal to (Order(cripple))
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of issued order)) Equal to Barracks
(Unit-type of (Target unit of issued order)) Equal to Altar of the Depths
(Unit-type of (Target unit of issued order)) Equal to Workshop
(Unit-type of (Target unit of issued order)) Equal to Arcane Sanctum
(Unit-type of (Target unit of issued order)) Equal to Arcane Vault
(Unit-type of (Target unit of issued order)) Equal to Coral Bed
(Unit-type of (Target unit of issued order)) Equal to War Mill
(Unit-type of (Target unit of issued order)) Equal to Shrine of Azshara
(Unit-type of (Target unit of issued order)) Equal to Tidal Guardian
(Unit-type of (Target unit of issued order)) Equal to Great Hall
(Unit-type of (Target unit of issued order)) Equal to Tidal Guardian
(Unit-type of (Target unit of issued order)) Equal to Tidal Guardian
(Unit-type of (Target unit of issued order)) Equal to Coral Bed
(Level of Item Damage Bonus (+1) for (Target unit of issued order)) Not equal to 0
(Owner of (Triggering unit)) Equal to (Owner of (Target unit of issued order))
Actions
Unit - Order (Ordered unit) to Stop .
Unit - Order (Ordered unit) to Undead Necromancer - Cripple . (Target unit of issued order)
Slave Consume
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to War Mill
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 205.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Workshop
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 145.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Arcane Sanctum
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 150.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Arcane Vault
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 130.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Great Hall
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 385.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Barracks
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 180.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Altar of the Depths
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 180.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Coral Bed
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 150.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Shrine of Azshara
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 145.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Tidal Guardian
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 140.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Tidal Guardian
Then - Actions
Set Variable Set RealSacrifice = (5000.00 / 140.00)
Else - Actions
Set Variable Set Unit = (Target unit of ability being cast)
Set Variable Set Point_2 = (Position of (Target unit of ability being cast))
Set Variable Set Point_3 = (Position of (Triggering unit))
Set Variable Set Point = ((Position of (Triggering unit)) offset by 170.00 towards (Angle from Point_3 to Point_2) degrees.)
Special Effect - Create a special effect at Point_2 using war3mapImported\Tide Surge.mdx
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point_2 using Abilities\Weapons\MeatwagonMissile\MeatwagonMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit - Create 1 . Footman for (Owner of (Triggering unit)) at Point facing (Angle from Point_2 to Point_3) degrees
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Mur'gul Slave
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Peasant
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Peon
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Acolyte
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Wisp
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of (Triggering unit)) Equal to Peon
Then - Actions
Unit - Add Item Damage Bonus (+1) to (Last created unit)
Else - Actions
Unit - Turn collision for (Last created unit) Off .
Unit - Move (Last created unit) instantly to Point
Unit - Remove (Triggering unit) from the game
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Animation - Play (Last created unit) 's birth animation
Animation - Queue (Last created unit) 's stand animation
Custom script: udg_Handle = GetHandleId(udg_Unit)
Set Variable Set RealSacrifice = (RealSacrifice x 0.50)
Set Variable Set RealSacrifice = (RealSacrifice x 0.01)
Unit - Set Unit construction progress to (Integer((((Load (Key buildProgress.) of Handle from hash_BuildNaga.) + RealSacrifice) x 100.00))) %
Hashtable - Save ((Load (Key buildProgress.) of Handle from hash_BuildNaga.) + RealSacrifice) as (Key buildProgress.) of Handle in hash_BuildNaga .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load (Key buildProgress.) of Handle from hash_BuildNaga.) Greater than or equal to 1.00
Then - Actions
Else - Actions
Set Variable Set RealSacrifice = (RealSacrifice x 100.00)
Set Variable Set MathSacrifice = ((RealSacrifice x 5.00) / 15.00)
Unit - Set life of Unit to ((Percentage life of Unit) - MathSacrifice) %
Custom script: RemoveLocation(udg_Point)
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point_3)
Slave Consume Copy
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Channel
Or - Any (Conditions) are true
Conditions
(Unit-type of (Target unit of ability being cast)) Equal to Barracks
(Unit-type of (Target unit of ability being cast)) Equal to Altar of the Depths
(Unit-type of (Target unit of ability being cast)) Equal to Workshop
(Unit-type of (Target unit of ability being cast)) Equal to Arcane Sanctum
(Unit-type of (Target unit of ability being cast)) Equal to Arcane Vault
(Unit-type of (Target unit of ability being cast)) Equal to Coral Bed
(Unit-type of (Target unit of ability being cast)) Equal to Shrine of Azshara
(Unit-type of (Target unit of ability being cast)) Equal to Tidal Guardian
(Unit-type of (Target unit of ability being cast)) Equal to Great Hall
(Unit-type of (Target unit of ability being cast)) Equal to Stronghold
(Unit-type of (Target unit of ability being cast)) Equal to Fortress
(Unit-type of (Target unit of ability being cast)) Equal to Tidal Guardian
(Unit-type of (Target unit of ability being cast)) Equal to Coral Bed
(Unit-type of (Target unit of ability being cast)) Equal to Tidal Guardian
(Unit-type of (Target unit of ability being cast)) Equal to Coral Bed
(Level of Item Damage Bonus (+1) for (Target unit of ability being cast)) Equal to 0
(Owner of (Triggering unit)) Equal to (Owner of (Target unit of ability being cast))
Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorMessage = "Must target a Naga building under construction."
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Tidal Load In
Events
Unit - A unit Is loaded into a transport
Conditions
(Unit-type of (Transporting unit)) Equal to Tidal Guardian
(Unit-type of (Triggering unit)) Equal to Headhunter
((Triggering unit) is An Ancient) Equal to True
Actions
Set Variable Set Point = (Position of (Triggering unit))
Unit - Create 1 . Headhunter for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Set Variable Set Unit = (Last created unit)
Unit - Set life of Unit to (Life of (Triggering unit))
Unit - Remove (Triggering unit) from the game
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Transporting unit) is selected by (Owner of (Transporting unit)).) Equal to True
Then - Actions
Unit - Replace (Transporting unit) with a Tidal Guardian using The old unit's relative life and mana
Selection - Select (Last replaced unit)
Else - Actions
Unit - Replace (Transporting unit) with a Tidal Guardian using The old unit's relative life and mana
Unit - Enable supply usage for (Last replaced unit) .
Unit - Order Unit to Right-Click . (Last replaced unit)
Hashtable - Save Handle Of (Last replaced unit) as 0 of (Key (Last created unit).) in TidalGuard .
Animation - Reset (Last replaced unit) 's animation
Animation - Add the Alternate animation tag to (Last replaced unit)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Last replaced unit) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Wait 0.00 seconds
Unit - Order Unit to Right-Click . (Last replaced unit)
Tidal Load Out
Events
Unit - A unit Is issued an order with no target
Conditions
Or - Any (Conditions) are true
Conditions
(Issued order) Equal to (Order(stop))
(Issued order) Equal to (Order(unload))
(Issued order) Equal to (Order(standdown))
Or - Any (Conditions) are true
Conditions
(Unit-type of (Ordered unit)) Equal to Headhunter
(Unit-type of (Ordered unit)) Equal to Tidal Guardian
(Load 0 of (Key (Ordered unit).) in TidalGuard.) Not equal to No unit
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Ordered unit).) in TidalGuard.) is selected by (Owner of (Load 0 of (Key (Ordered unit).) in TidalGuard.)).) Equal to True
Then - Actions
Unit - Replace (Load 0 of (Key (Ordered unit).) in TidalGuard.) with a Tidal Guardian using The old unit's relative life and mana
Selection - Select (Last replaced unit)
Else - Actions
Unit - Replace (Load 0 of (Key (Ordered unit).) in TidalGuard.) with a Tidal Guardian using The old unit's relative life and mana
Unit - Disable supply usage for (Last replaced unit) .
Unit - Remove Rally from (Last replaced unit)
Animation - Reset (Last replaced unit) 's animation
Animation - Remove the Alternate animation tag to (Last replaced unit)
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Last replaced unit) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Hashtable - Clear all child hashtables of child (Key (Ordered unit).) in TidalGuard .
Unit - Unhide (Ordered unit)
Animation - Change (Ordered unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 0.00 % transparency
Unit - Add a 60 second Generic expiration timer to (Ordered unit)
Unit - Remove classification of Summoned from (Ordered unit)
Unit - Add classification of An Ancient to (Ordered unit)
Unit - Enable supply usage for (Ordered unit) .
Tidal Guard Spawn ob Build
Events
Unit - A unit Finishes construction
Conditions
(Unit-type of (Constructed structure)) Equal to Tidal Guardian
Actions
Set Variable Set Point = (Position of (Constructed structure))
Unit - Create 1 . Headhunter for (Owner of (Triggering unit)) at Point facing Default building facing degrees
Animation - Change (Last created unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 100.00 % transparency
Unit - Hide (Last created unit)
Unit - Add classification of An Ancient to (Last created unit)
Unit - Order (Last created unit) to Right-Click . (Constructed structure)
Unit - Disable supply usage for (Constructed structure) .
Untitled Trigger 003
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Headhunter
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Killing unit) Equal to No unit
Then - Actions
Set Variable Set Point = (Position of (Triggering unit))
Animation - Reset (Triggering unit) 's animation
Animation - Play (Triggering unit) 's morph swim animation
Special Effect - Create a special effect at Point using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Untitled Trigger 011
Events
Unit - A unit Begins training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
Actions
Trigger - Turn off (This trigger)
Trigger - Turn off Untitled_Trigger_011_Copy <gen>
Set Variable Set Unit = (Triggering unit)
Unit - Pause (Triggering unit)
Unit - Set Unit: (Triggering unit) 's Integer Field: Unit Classification ('utyp') to Value: ((Unit: (Triggering unit)'s Integer Field: Unit Classification ('utyp')) Or 512)
Wait 0.00 seconds
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Custom script: IssueImmediateOrderById(udg_Unit, 851976)
Unit - Order Unit to train/upgrade to a Headhunter
Unit - Unpause Unit
Trigger - Turn on (This trigger)
Trigger - Turn on Untitled_Trigger_011_Copy <gen>
Untitled Trigger 011 Copy
Events
Unit - A unit Cancels training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
Actions
Unit - Set Unit: (Triggering unit) 's Integer Field: Unit Classification ('utyp') to Value: ((Unit: (Triggering unit)'s Integer Field: Unit Classification ('utyp')) Xor 512)
Untitled Trigger 011 Copy Copy
Events
Unit - A unit Finishes training a unit
Conditions
(Unit-type of (Triggering unit)) Equal to Tidal Guardian
Actions
Unit - Set Unit: (Triggering unit) 's Integer Field: Unit Classification ('utyp') to Value: ((Unit: (Triggering unit)'s Integer Field: Unit Classification ('utyp')) Xor 512)
Animation - Change (Trained unit) 's vertex coloring to ( 100 %, 100 %, 100 %) with 0.00 % transparency
Unit - Add classification of An Ancient to (Trained unit)
Unit - Order (Trained unit) to Right-Click . (Triggering unit)
Wait 0.00 seconds
Unit - Order (Trained unit) to Right-Click . (Triggering unit)
Orb of Water
Events
Game - DamageModifierEvent becomes Equal to 1.00
Conditions
(DamageEventSource is A Hero) Equal to True
(DamageEventSource has an item of type Orb of Fire) Equal to True
DamageEventAmount Not equal to 0.00
IsDamageSpell Equal to False
DamageEventAttackT Equal to 6
DamageEventDamageT Not equal to 9
(Level of Cleaving Attack for DamageEventSource) Equal to 0
(DamageEventSource has an item of type Orb of Frost) Equal to False
(DamageEventSource has an item of type Orb of Frost) Equal to False
(DamageEventSource has an item of type Orb of Corruption) Equal to False
(DamageEventSource has an item of type Orb of Fire) Equal to False
(DamageEventSource has an item of type Orb of Lightning) Equal to False
(DamageEventSource has an item of type Orb of Lightning) Equal to False
(DamageEventSource has an item of type Orb of Venom) Equal to False
Actions
Set Variable Set Point = (Position of DamageEventTarget)
Special Effect - Create a special effect at Point using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Set Color of (Last created special effect) to r: 50 , g: 200 , b: 255
Special Effect - Destroy (Last created special effect)
Set Variable Set UnitGroup = (Units within 200.00 of Point matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is An Ancient) Equal to False) and ((((Matching unit) is Sleeping) Equal to False) and (((((Matching unit) is alive) Equal to True) and ((Owner of (Matching unit)) Not equal to Neutral Passive)) and ((((Matching unit) belongs to an ally of (Owner of DamageEventSource).) Equal to False) and ((Matching unit) Not equal to DamageEventTarget))))))).)
Unit Group - Pick every unit in UnitGroup and do (Actions)
Loop - Actions
Unit - Cause DamageEventSource to damage (Picked unit) , dealing (DamageEventAmount x 0.15) damage of attack type Hero and damage type Cold
Custom script: DestroyGroup(udg_UnitGroup)
Custom script: RemoveLocation(udg_Point)
Enchanted Vial
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Unit Group - Remove (Triggering unit) from VialGroup .
Lightning - Destroy (Load 2 of (Key (Triggering unit).) in VialNagaTable.)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in VialNagaTable .
Set Variable Set Point = (Position of (Target unit of ability being cast))
Set Variable Set Point_2 = (Position of (Triggering unit))
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\NightElf\MoonWell\MoonWellCasterArt.mdl
Special Effect - Destroy (Last created special effect)
Lightning - Create a Drain Mana lightning effect from source Point_2 to target Point
Lightning - Change color of (Last created lightning effect) to ( 1 1 1 ) with 0.60 alpha
Hashtable - Save Handle Of (Last created lightning effect) as 2 of (Key (Triggering unit).) in VialNagaTable .
Hashtable - Save Handle Of (Target unit of ability being cast) as 0 of (Key (Triggering unit).) in VialNagaTable .
Hashtable - Save (Charges remaining in (Item carried by (Triggering unit) of type Healing Salve)) as 1 of (Key (Triggering unit).) in VialNagaTable .
Unit Group - Add (Triggering unit) to VialGroup
Trigger - Turn on Enchanted_Vial_Loop <gen>
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Enchanted Vial Loop
Events
Time - Every 0.05 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in VialGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 0 of (Key (Picked unit).) in VialNagaTable.) is alive) Equal to True
(Charges remaining in (Item carried by (Picked unit) of type Healing Salve)) Not equal to 0
(Life of (Load 0 of (Key (Picked unit).) in VialNagaTable.)) Less than (Max life of (Load 0 of (Key (Picked unit).) in VialNagaTable.))
((Picked unit) is alive) Equal to True
Then - Actions
Set Variable Set Point = (Position of (Load 0 of (Key (Picked unit).) in VialNagaTable.))
Set Variable Set Point_2 = (Position of (Picked unit))
Item - Set charges remaining in (Item carried by (Picked unit) of type Healing Salve) to ((Charges remaining in (Item carried by (Picked unit) of type Healing Salve)) - 1)
Lightning - Move (Load 2 of (Key (Picked unit).) in VialNagaTable.) to source Point and target Point_2
Set Variable Set NextHealTarget = (Load 0 of (Key (Picked unit).) in VialNagaTable.)
Set Variable Set NextHealSource = (Picked unit)
Set Variable Set NextHealAmount = "1.00"
Trigger - Run Heal_Unit <gen> (ignoring conditions)
Unit - Make (Picked unit) face (Load 0 of (Key (Picked unit).) in VialNagaTable.) over 0.05 seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point and Point_2) Greater than or equal to 570.00
Then - Actions
Unit - Order (Picked unit) to Stop .
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Charges remaining in (Item carried by (Picked unit) of type Healing Salve)) Equal to 0
Then - Actions
Unit - Order (Picked unit) to Stop .
Item - Remove (Item carried by (Picked unit) of type Healing Salve)
Else - Actions
Custom script: RemoveLocation(udg_Point_2)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Lightning - Destroy (Load 2 of (Key (Picked unit).) in VialNagaTable.)
Unit - Order (Picked unit) to Stop .
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in VialNagaTable .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in VialGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Enchanted Vial Copy
Events
Unit - A unit Stops casting an ability
Unit - A unit Finishes casting an ability
Conditions
(Ability being cast) Equal to Channel
Actions
Lightning - Destroy (Load 2 of (Key (Triggering unit).) in VialNagaTable.)
Unit Group - Remove (Triggering unit) from VialGroup .
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in VialNagaTable .
Bugfix with mana
Events
Unit - A unit Begins casting an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Mind Rot
(Ability being cast) Equal to Inner Fire
(Ability being cast) Equal to Inner Fire
(Ability being cast) Equal to Ray of Disruption
(Ability being cast) Equal to Invisibility
Actions
Hashtable - Save (Mana of (Target unit of ability being cast)) as 0 of (Key (Triggering unit).) in ManabugTable .
Bugfix with mana Execute
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Mind Rot
(Ability being cast) Equal to Inner Fire
(Ability being cast) Equal to Inner Fire
(Ability being cast) Equal to Ray of Disruption
(Ability being cast) Equal to Invisibility
Actions
Unit - Set mana of (Target unit of ability being cast) to (Load 0 of (Key (Triggering unit).) from ManabugTable.)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in ManabugTable .
Bugfix with mana Copy
Events
Unit - A unit Begins casting an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Soul Burn
(Ability being cast) Equal to Cloud
(Ability being cast) Equal to Channel
Actions
Hashtable - Save (Mana of (Triggering unit)) as 0 of (Key (Triggering unit).) in ManabugTable .
Bugfix with mana Execute Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Soul Burn
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Cloud
Actions
Unit - Set mana of (Triggering unit) to (Load 0 of (Key (Triggering unit).) from ManabugTable.)
Hashtable - Clear all child hashtables of child (Key (Triggering unit).) in ManabugTable .
Untitled Trigger 001
Events
Unit - A unit Finishes research
Conditions
(Researched tech-type) Equal to R01B (Unexpected type: 'techcode')
Actions
Player - Make Footman Available for training/construction by (Owner of (Triggering unit))
Player - Make Footman Unavailable for training/construction by (Owner of (Triggering unit))
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Seasickness
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Slow
Actions
Special Effect - Create a special effect attached to the origin (Unexpected type: 'attachpoint') of (Target unit of ability being cast) using Abilities\Spells\Undead\DeathandDecay\DeathandDecayTarget.mdl
Special Effect - Destroy (Last created special effect)
Hashtable - Save 60.00 as 0 of (Key (Target unit of ability being cast).) in SeasickTable .
Hashtable - Save (Random real number between 1.00 and 4.00) as 1 of (Key (Target unit of ability being cast).) in SeasickTable .
Unit Group - Add (Target unit of ability being cast) to SeasickGroup
Trigger - Turn on Seasick_Loop <gen>
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Seasick Loop
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in SeasickGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is alive) Equal to True
((Picked unit) has buff Slow) Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of (Key (Picked unit).) from SeasickTable.) Less than 7.00
Then - Actions
Hashtable - Save ((Load 1 of (Key (Picked unit).) from SeasickTable.) + 0.25) as 1 of (Key (Picked unit).) in SeasickTable .
Else - Actions
Hashtable - Save 0.00 as 1 of (Key (Picked unit).) in SeasickTable .
Set Variable Set Point = (Position of (Picked unit))
Unit - Create 1 . Footman for Neutral Hostile at Point facing Default building facing degrees
Unit - Add Cripple to (Last created unit)
Unit - Order (Last created unit) to Undead Necromancer - Cripple . (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Custom script: RemoveLocation(udg_Point)
Else - Actions
Hashtable - Clear all child hashtables of child (Key (Picked unit).) in SeasickTable .
Unit Group - Remove (Picked unit) from SeasickGroup .
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in SeasickGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Made by Noobsmoke

Can be casted on enemies to test Spell Steal
Can be casted on immune units to test Avatar
Seasickness Copy
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Berserk
Actions
Animation - Remove the gold animation tag to (Triggering unit)
Animation - Remove the lumber animation tag to (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Harvest (Neutral), (Gold and Lumber) for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Triggering unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Harvest (Neutral), (Gold and Lumber) for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Triggering unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Harvest (Neutral), (Gold and Lumber) for (Triggering unit)) Not equal to 0
Then - Actions
Unit - Remove Harvest (Neutral), (Gold and Lumber) from (Triggering unit)
Unit - Add Harvest (Neutral), (Gold and Lumber) to (Triggering unit)
Else - Actions
Untitled Trigger 022 Copy
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Chain Lightning
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Owner of (Target unit of ability being cast)) Equal to Neutral Hostile
(Owner of (Target unit of ability being cast)) Equal to Neutral Passive
(Owner of (Target unit of ability being cast)) Equal to Neutral Victim
Then - Actions
Unit - Pause (Triggering unit)
Unit - Order (Triggering unit) to Stop .
Unit - Unpause (Triggering unit)
Set Variable Set ErrorPlayer = (Owner of (Triggering unit))
Set Variable Set ErrorMessage = "Сannot target Neutral Passive or Neutral Hostile units."
Custom script: ErrorMessage(udg_ErrorMessage,udg_ErrorPlayer)
Wait 0.00 seconds
Unit - For Unit (Triggering unit) , end cooldown of ability Chain Lightning
Else - Actions
Set Variable Set Point = (Position of (Target unit of ability being cast))
Unit - Create 1 . Footman for (Owner of (Target unit of ability being cast)) at Point facing Default building facing degrees
Set Variable Set Unit = (Last created unit)
Unit - Add Inventory (Hero) to Unit
Unit - Add a 2.00 second Generic expiration timer to Unit
Hero - Create Staff of Preservation and give it to Unit
Hero - Give (Last created item) to Unit
Hero - Order Unit to use (Last created item) on (Target unit of ability being cast)
Custom script: RemoveLocation(udg_Point)
Untitled Trigger 023
Events
Unit - A unit Loses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Staff of Preservation
Actions
Wait 0.00 seconds
Item - Remove (Item being manipulated)
Untitled Trigger 022
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Chain Lightning
(Owner of (Target unit of ability being cast)) Not equal to Neutral Hostile
(Owner of (Target unit of ability being cast)) Not equal to Neutral Passive
(Owner of (Target unit of ability being cast)) Not equal to Neutral Victim
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Owner of (Target unit of ability being cast)) Not equal to Neutral Hostile
(Owner of (Target unit of ability being cast)) Not equal to Neutral Passive
(Owner of (Target unit of ability being cast)) Not equal to Neutral Victim
Then - Actions
Else - Actions
Untitled Trigger 019
Events
Unit - A unit Acquires an item
Conditions
(Item-type of (Item being manipulated)) Equal to Mantle of Intelligence +3
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Mountain King
(Unit-type of (Triggering unit)) Equal to Tauren Chieftain
(Unit-type of (Triggering unit)) Equal to Death Knight
(Unit-type of (Triggering unit)) Equal to Crypt Lord
(Unit-type of (Triggering unit)) Equal to Alchemist
(Unit-type of (Triggering unit)) Equal to Brewmaster
(Unit-type of (Triggering unit)) Equal to Beastmaster
(Unit-type of (Triggering unit)) Equal to Pit Lord
(Unit-type of (Triggering unit)) Equal to Paladin
(Unit-type of (Triggering unit)) Equal to Crypt Lord
(Unit-type of (Triggering unit)) Equal to Death Knight
(Unit-type of (Triggering unit)) Equal to Tauren Chieftain
(Unit-type of (Triggering unit)) Equal to Beastmaster
(Unit-type of (Triggering unit)) Equal to Crypt Lord
Then - Actions
Item - For Item: (Item being manipulated) , Add Ability: Item Hero Stat Bonus (+3 Strength)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Archmage
(Unit-type of (Triggering unit)) Equal to Blood Mage
(Unit-type of (Triggering unit)) Equal to Far Seer
(Unit-type of (Triggering unit)) Equal to Lich
(Unit-type of (Triggering unit)) Equal to Tinker
(Unit-type of (Triggering unit)) Equal to Sea Witch
(Unit-type of (Triggering unit)) Equal to Keeper of the Grove
(Unit-type of (Triggering unit)) Equal to Blood Mage
(Unit-type of (Triggering unit)) Equal to Blood Mage
(Unit-type of (Triggering unit)) Equal to Blood Mage
(Unit-type of (Triggering unit)) Equal to Tauren Chieftain
(Unit-type of (Triggering unit)) Equal to Firelord
Then - Actions
Item - For Item: (Item being manipulated) , Add Ability: Item Hero Stat Bonus (+3 Intelligence)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Unit-type of (Triggering unit)) Equal to Blademaster
(Unit-type of (Triggering unit)) Equal to Shadow Hunter
(Unit-type of (Triggering unit)) Equal to Dreadlord
(Unit-type of (Triggering unit)) Equal to Priestess of the Moon
(Unit-type of (Triggering unit)) Equal to Demon Hunter
(Unit-type of (Triggering unit)) Equal to Warden
(Unit-type of (Triggering unit)) Equal to Dark Ranger
(Unit-type of (Triggering unit)) Equal to Firelord
(Unit-type of (Triggering unit)) Equal to Firelord
(Unit-type of (Triggering unit)) Equal to Firelord
(Unit-type of (Triggering unit)) Equal to Firelord
(Unit-type of (Triggering unit)) Equal to Firelord
Then - Actions
Item - For Item: (Item being manipulated) , Add Ability: Item Hero Stat Bonus (+3 Agility)
Else - Actions
Untitled Trigger 019 Copy
Events
Unit - A unit Loses an item
Conditions
(Item-type of (Item being manipulated)) Equal to Mantle of Intelligence +3
Actions
Item - For Item: (Item being manipulated) , Remove Ability: Item Hero Stat Bonus (+3 Agility)
Item - For Item: (Item being manipulated) , Remove Ability: Item Hero Stat Bonus (+3 Intelligence)
Item - For Item: (Item being manipulated) , Remove Ability: Item Hero Stat Bonus (+3 Strength)
Untitled Trigger 021
Events
Unit - A unit Starts the effect of an ability
Conditions
Or - Any (Conditions) are true
Conditions
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
(Ability being cast) Equal to Channel
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Ankh of Reincarnation and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Book of the Dead and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Healing Wards and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Health Stone and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Mana Stone and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Channel
Then - Actions
Hero - Create Wand of the Wind and give it to (Triggering unit)
Wait 0.00 seconds
Hero - Give (Last created item) to (Triggering unit)
Else - Actions
Top