- Joined
- Feb 22, 2025
- Messages
- 315
Update 4: The current system is here.
Update 3: Added complete system and new video. Now this works as it should, still would appreciate any suggestions or changes rly!
Issue: Threat target sometimes fails to be removed properly.
-
Config AI
-

Events
-


Map initialization
-
-

Conditions
-

Actions
-


Set AI_HordeGroup = (Units owned by Player 13 (Maroon) of type Warsong Grunt)
-


Set AI_ForsakenGroup = (Units owned by Player 4 (Purple) of type Forsaken Deathguard)
-


Set AI_Sylvanas = Sylvanas 0004 <gen>
-


Set AI_Thrall = Thrall (Unmounted) 0013 <gen>
-


Set AI_Voljin = Vol'jin 0037 <gen>
-


Set AI_Mort = Royal Forsaken Captain Mort 0012 <gen>
-


Set AI_ThreatRange = 800.00
-


Set AI_SafeDistance = 600.00
-


Set AI_FormationSpacing = 250.00
-


Set AI_Emergency_Protection_Range = 400.00
-


Set AI_EmegencyTight_Radius = 150.00
-


Set AI_EmergencyWide_Radius = 250.00
-


Set AI_Emegency_I = 40.00
-


Set AI_Mort_GuardRange = 300.00
-


Set AI_Mort_MaxCombatDistance = 500.00
-


Set AI_Mort_FollowDistance = 150.00
-


Set AI_Groups_MaxCombatDistance = 600.00
-


-------- ---------------------------- --------
-


Set AI_Cinematic = False
-


Set AI_Emergency = False
-


Set AI_Emergency_Previous = False
-


Set AI_Enabled = True
-


Set AI_Voljin_Fleeing = False
-


Set AI_EnemiesNearHero_Previous = False
-


Set AI_Voljin_HealRange = 800.00
-


Set AI_Voljin_HealTreshold = 80.00
-


Set AI_Voljin_SafeDistance = 400.00
-


Set AI_Voljin_FleeDistance = 600.00
-
-
-
AI Detection
-

Events
-


Time - Every 0.33 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Cinematic Equal to False
-
-

Actions
-


Set AI_Sylvanas_P = (Position of AI_Sylvanas)
-


Set AI_TempGroup = (Units within AI_ThreatRange of AI_Sylvanas_P matching ((((Matching unit) belongs to an enemy of (Owner of AI_Sylvanas).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
-


Custom script: call RemoveLocation( udg_AI_Sylvanas_P)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_ThreatTarget_F Equal to No unit
-




(Number of units in AI_TempGroup) Greater than 0
-
-



Then - Actions
-




Set AI_ThreatTarget_F = (Random unit from AI_TempGroup)
-
-



Else - Actions
-
-


Custom script: call DestroyGroup( udg_AI_TempGroup)
-


Set AI_Thrall_P = (Position of AI_Thrall)
-


Set AI_TempGroup = (Units within AI_ThreatRange of AI_Thrall_P matching ((((Matching unit) belongs to an enemy of (Owner of AI_Thrall).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
-


Custom script: call RemoveLocation( udg_AI_Thrall_P)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_ThreatTarget_H Equal to No unit
-




(Number of units in AI_TempGroup) Greater than 0
-
-



Then - Actions
-




Set AI_ThreatTarget_H = (Random unit from AI_TempGroup)
-
-



Else - Actions
-
-


Custom script: call DestroyGroup( udg_AI_TempGroup)
-
-
-
AI Response
-

Events
-


Time - Every 0.33 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Emergency Equal to False
-


AI_Cinematic Equal to False
-
-

Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_ThreatTarget_F Not equal to No unit
-




(AI_ThreatTarget_F is alive) Equal to True
-
-



Then - Actions
-




Set AI_ThreatTargetB_F = True
-




Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Attack AI_ThreatTarget_F
-
-
-
-



Else - Actions
-




Set AI_ThreatTargetB_F = False
-
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_ThreatTarget_H Not equal to No unit
-




(AI_ThreatTarget_H is alive) Equal to True
-
-



Then - Actions
-




Set AI_ThreatTargetB_H = True
-




Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Attack AI_ThreatTarget_H
-
-
-
-



Else - Actions
-




Set AI_ThreatTargetB_H = False
-
-
-
-
-
AI Threat Timeout
-

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
-




AI_ThreatTarget_F Not equal to No unit
-
-



Then - Actions
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(AI_ThreatTarget_F is alive) Equal to False
-
-





Then - Actions
-






Set AI_ThreatTarget_F = No unit
-






Set AI_ThreatTargetB_F = False
-






Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-







Loop - Actions
-








Unit - Order (Picked unit) to Stop.
-
-
-
-





Else - Actions
-






Set AI_ThreatTarget_P = (Position of AI_ThreatTarget_F)
-






Set AI_Sylvanas_P = (Position of AI_Sylvanas)
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_Sylvanas_P and AI_ThreatTarget_P) Greater than or equal to AI_ThreatRange
-
-







Then - Actions
-








Set AI_ThreatTarget_F = No unit
-








Set AI_ThreatTargetB_F = False
-
-







Else - Actions
-
-






Custom script: call RemoveLocation( udg_AI_ThreatTarget_P)
-






Custom script: call RemoveLocation( udg_AI_Sylvanas_P)
-
-
-
-



Else - Actions
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_ThreatTarget_H Not equal to No unit
-
-



Then - Actions
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(AI_ThreatTarget_H is alive) Equal to False
-
-





Then - Actions
-






Set AI_ThreatTarget_H = No unit
-






Set AI_ThreatTargetB_H = False
-






Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-







Loop - Actions
-








Unit - Order (Picked unit) to Stop.
-
-
-
-





Else - Actions
-






Set AI_ThreatTarget_P = (Position of AI_ThreatTarget_H)
-






Set AI_Thrall_P = (Position of AI_Thrall)
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_Thrall_P and AI_ThreatTarget_P) Greater than or equal to AI_ThreatRange
-
-







Then - Actions
-








Set AI_ThreatTarget_H = No unit
-








Set AI_ThreatTargetB_H = False
-
-







Else - Actions
-
-






Custom script: call RemoveLocation( udg_AI_ThreatTarget_P)
-






Custom script: call RemoveLocation( udg_AI_Thrall_P)
-
-
-
-



Else - Actions
-
-
-
-
AI Threat Target Recycle F
-

Events
-


Unit - A unit Dies
-
-

Conditions
-


(Dying unit) Equal to AI_ThreatTarget_F
-
-

Actions
-


Set AI_ThreatTarget_F = No unit
-


Set AI_ThreatTargetB_F = False
-
-
-
AI Threat Target Recycle H
-

Events
-


Unit - A unit Dies
-
-

Conditions
-


(Dying unit) Equal to AI_ThreatTarget_H
-
-

Actions
-


Set AI_ThreatTarget_H = No unit
-


Set AI_ThreatTargetB_H = False
-
-
-
AI Threat Target Emergency Recycle
-

Events
-


Unit - A unit Dies
-
-

Conditions
-


(Dying unit) Equal to AI_ThreatTarget
-
-

Actions
-


Set AI_ThreatTarget = No unit
-


Set AI_Enemies_nearHero = False
-
-
-
AI E Check
-

Events
-


Time - Every 0.30 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-
-

Actions
-


Set AI_Emergency_Previous = AI_Emergency
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




((Percentage life of AI_Sylvanas) Less than or equal to 30.00) or ((Percentage life of AI_Thrall) Less than or equal to 30.00)
-
-



Then - Actions
-




Set AI_Emergency = True
-
-



Else - Actions
-




Set AI_Emergency = False
-
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_Emergency_Previous Equal to False
-




AI_Emergency Equal to True
-
-



Then - Actions
-




Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Human Footman - Defend.
-
-
-
-



Else - Actions
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_Emergency_Previous Equal to True
-




AI_Emergency Equal to False
-
-



Then - Actions
-




Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Human Footman - Stop Defend.
-
-
-
-



Else - Actions
-
-
-
-
AI E Response
-

Events
-


Time - Every 0.50 seconds of game time
-
-

Conditions
-


AI_Emergency Equal to True
-


AI_Cinematic Equal to False
-
-

Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(Percentage life of AI_Sylvanas) Less than (Percentage life of AI_Thrall)
-
-



Then - Actions
-




Set AI_Emergency_Hero = AI_Sylvanas
-
-



Else - Actions
-




Set AI_Emergency_Hero = AI_Thrall
-
-
-


Set AI_LoopIndex_F = 0
-


Set AI_LoopIndex_H = 0
-


Set AI_TempPoint = (Position of AI_Emergency_Hero)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_Enemies_nearHero Equal to False
-
-



Then - Actions
-




Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-





Loop - Actions
-






Set AI_FormationAngle_F = ((Facing of AI_Emergency_Hero) + (0.00 + (((Real(AI_LoopIndex_F)) mod 8.00) x 45.00)))
-






Set AI_FormationRadius_F = (AI_EmegencyTight_Radius + (((Real(AI_LoopIndex_F)) / 8.00) x AI_Emegency_I))
-






Set AI_FormationP_FG = (AI_TempPoint offset by AI_FormationRadius_F towards AI_FormationAngle_F degrees.)
-






Set AI_PickedUnit_F = (Position of (Picked unit))
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_PickedUnit_F and AI_FormationP_FG) Greater than or equal to 250.00
-
-







Then - Actions
-








Unit - Order (Picked unit) to Move To AI_FormationP_FG
-
-







Else - Actions
-








Unit - Make (Picked unit) face AI_FormationAngle_F over 0.00 seconds
-
-
-






Custom script: call RemoveLocation( udg_AI_PickedUnit_F)
-






Custom script: call RemoveLocation( udg_AI_FormationP_FG)
-






Set AI_LoopIndex_F = (AI_LoopIndex_F + 1)
-
-
-




Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-





Loop - Actions
-






Set AI_Formation_Angle = ((Facing of AI_Emergency_Hero) + (0.00 + (((Real(AI_LoopIndex_H)) mod 8.00) x 45.00)))
-






Set AI_Formation_Radius = (AI_EmergencyWide_Radius + (((Real(AI_LoopIndex_H)) / 8.00) x AI_Emegency_I))
-






Set AI_FormationP_HG = (AI_TempPoint offset by AI_Formation_Radius towards AI_Formation_Angle degrees.)
-






Set AI_PickedUnit_P = (Position of (Picked unit))
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_PickedUnit_P and AI_FormationP_HG) Greater than or equal to 250.00
-
-







Then - Actions
-








Unit - Order (Picked unit) to Move To AI_FormationP_HG
-
-







Else - Actions
-








Unit - Make (Picked unit) face AI_Formation_Angle over 0.00 seconds
-
-
-






Custom script: call RemoveLocation( udg_AI_FormationP_HG)
-






Custom script: call RemoveLocation( udg_AI_PickedUnit_P)
-






Set AI_LoopIndex_H = (AI_LoopIndex_H + 1)
-
-
-




Custom script: call RemoveLocation( udg_AI_TempPoint)
-
-



Else - Actions
-
-
-
-
AI E Protection
-

Events
-


Time - Every 0.50 seconds of game time
-
-

Conditions
-


AI_Emergency Equal to True
-


AI_Cinematic Equal to False
-


AI_Emergency_Hero Not equal to No unit
-
-

Actions
-


Set AI_EnemiesNearHero_Previous = AI_Enemies_nearHero
-


Set AI_TempPoint = (Position of AI_Emergency_Hero)
-


Set AI_TempGroup = (Units within AI_Emergency_Protection_Range of AI_TempPoint matching ((((Matching unit) belongs to an enemy of (Owner of AI_Emergency_Hero).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
-


Custom script: call RemoveLocation( udg_AI_TempPoint)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(Number of units in AI_TempGroup) Greater than 0
-
-



Then - Actions
-




Set AI_Enemies_nearHero = True
-




Set AI_ThreatTarget = No unit
-




Set AI_Closest_Distance = (AI_Emergency_Protection_Range + 1.00)
-




Set AI_TempPoint = (Position of AI_Emergency_Hero)
-




Unit Group - Pick every unit in AI_TempGroup and do (Actions)
-





Loop - Actions
-






Set AI_PickedUnit_P = (Position of (Picked unit))
-






Set AI_Distance = (Distance between AI_TempPoint and AI_PickedUnit_P)
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








AI_Distance Less than AI_Closest_Distance
-
-







Then - Actions
-








Set AI_Closest_Distance = AI_Distance
-








Set AI_ThreatTarget = (Picked unit)
-
-







Else - Actions
-
-
-
-




Custom script: call RemoveLocation( udg_AI_TempPoint)
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






AI_ThreatTarget Not equal to No unit
-
-





Then - Actions
-






Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-







Loop - Actions
-








Unit - Order (Picked unit) to Attack AI_ThreatTarget
-
-
-






Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-







Loop - Actions
-








Unit - Order (Picked unit) to Attack AI_ThreatTarget
-
-
-
-





Else - Actions
-
-
-



Else - Actions
-




Set AI_Enemies_nearHero = False
-
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_EnemiesNearHero_Previous Equal to True
-




AI_Enemies_nearHero Equal to False
-
-



Then - Actions
-




Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Stop.
-
-
-




Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-





Loop - Actions
-






Unit - Order (Picked unit) to Stop.
-
-
-
-



Else - Actions
-
-


Custom script: call DestroyGroup( udg_AI_TempGroup)
-
-
-
AI Formation Forsaken
-

Events
-


Time - Every 0.33 seconds of game time
-
-

Conditions
-


AI_Emergency Equal to False
-


AI_Cinematic Equal to False
-


(Number of units in AI_ForsakenGroup) Greater than 0
-
-

Actions
-


Set AI_LoopIndex_F = 0
-


Set AI_TempPoint_FG = (Position of AI_Sylvanas)
-


Unit Group - Pick every unit in AI_ForsakenGroup and do (Actions)
-



Loop - Actions
-




Set AI_FormationAngle_F = ((Facing of AI_Sylvanas) + (180.00 + (((Real(AI_LoopIndex_F)) mod 8.00) x 45.00)))
-




Set AI_FormationRadius_F = (AI_FormationSpacing + (((Real(AI_LoopIndex_F)) / 8.00) x 80.00))
-




Set AI_FormationFacing_Angle = ((Facing of AI_Sylvanas) + 180.00)
-




Set AI_FormationP_FG = (AI_TempPoint_FG offset by AI_FormationRadius_F towards AI_FormationAngle_F degrees.)
-




Set AI_PickedUnit_F = (Position of (Picked unit))
-




Set AI_DistanceToHero = (Distance between AI_PickedUnit_F and AI_FormationP_FG)
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






Or - Any (Conditions) are true
-







Conditions
-








(AI_ThreatTargetB_F Equal to False) and (AI_ThreatTarget_F Equal to No unit)
-








AI_DistanceToHero Greater than AI_Groups_MaxCombatDistance
-
-
-
-





Then - Actions
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_PickedUnit_F and AI_FormationP_FG) Greater than 100.00
-
-







Then - Actions
-








Unit - Order (Picked unit) to Move To AI_FormationP_FG
-
-







Else - Actions
-
-
-





Else - Actions
-
-




Custom script: call RemoveLocation( udg_AI_FormationP_FG)
-




Custom script: call RemoveLocation( udg_AI_PickedUnit_F)
-




Set AI_LoopIndex_F = (AI_LoopIndex_F + 1)
-
-
-


Custom script: call RemoveLocation( udg_AI_TempPoint_FG)
-
-
-
AI Formation Horde
-

Events
-


Time - Every 0.33 seconds of game time
-
-

Conditions
-


AI_Emergency Equal to False
-


AI_Cinematic Equal to False
-


(Number of units in AI_HordeGroup) Greater than 0
-
-

Actions
-


Set AI_LoopIndex_H = 0
-


Set AI_TempPoint_HG = (Position of AI_Thrall)
-


Unit Group - Pick every unit in AI_HordeGroup and do (Actions)
-



Loop - Actions
-




Set AI_Formation_Angle = ((Facing of AI_Thrall) + (180.00 + (((Real(AI_LoopIndex_H)) mod 8.00) x 45.00)))
-




Set AI_Formation_Radius = (AI_FormationSpacing + (((Real(AI_LoopIndex_H)) / 8.00) x 80.00))
-




Set AI_FormationFacing_Angle = ((Facing of AI_Thrall) + 180.00)
-




Set AI_FormationP_HG = (AI_TempPoint_HG offset by AI_Formation_Radius towards AI_Formation_Angle degrees.)
-




Set AI_PickedUnit_P = (Position of (Picked unit))
-




Set AI_DistanceToHero = (Distance between AI_PickedUnit_P and AI_FormationP_FG)
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






Or - Any (Conditions) are true
-







Conditions
-








(AI_ThreatTargetB_H Equal to False) and (AI_ThreatTarget_H Equal to No unit)
-
-
-
-





Then - Actions
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Distance between AI_PickedUnit_P and AI_FormationP_HG) Greater than 100.00
-
-







Then - Actions
-








Unit - Order (Picked unit) to Move To AI_FormationP_HG
-
-







Else - Actions
-
-
-





Else - Actions
-
-




Custom script: call RemoveLocation( udg_AI_FormationP_HG)
-




Custom script: call RemoveLocation( udg_AI_PickedUnit_P)
-




Set AI_LoopIndex_H = (AI_LoopIndex_H + 1)
-
-
-


Custom script: call RemoveLocation( udg_AI_TempPoint_HG)
-
-
-
Clean Dead Units in groups
-

Events
-


Time - Every 3.00 seconds of game time
-
-

Conditions
-

Actions
-


Unit Group - Pick every unit in AI_ForsakenGroup 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 False
-
-





Then - Actions
-






Unit Group - Remove (Picked unit) from AI_ForsakenGroup.
-
-





Else - Actions
-
-
-
-


Unit Group - Pick every unit in AI_HordeGroup 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 False
-
-





Then - Actions
-






Unit Group - Remove (Picked unit) from AI_HordeGroup.
-
-





Else - Actions
-
-
-
-
-
-
AI Voljin Follow
-

Events
-


Time - Every 0.50 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Cinematic Equal to False
-


AI_Voljin_Fleeing Equal to False
-


AI_Voljin Not equal to No unit
-
-

Actions
-


Set AI_Voljin_TempPoint = (Position of AI_Thrall)
-


Set AI_Voljin_TempPoint2 = (AI_Voljin_TempPoint offset by AI_Voljin_SafeDistance towards ((Facing of AI_Thrall) + 180.00) degrees.)
-


Set AI_Voljin_TempPoint3 = (Position of AI_Voljin)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(Distance between AI_Voljin_TempPoint3 and AI_Voljin_TempPoint2) Greater than 100.00
-
-



Then - Actions
-




Unit - Order AI_Voljin to Move To AI_Voljin_TempPoint2
-
-



Else - Actions
-
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint)
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint2)
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint3)
-
-
-
AI Voljin Healing
-

Events
-


Time - Every 1.00 seconds of game time
-
-

Conditions
-


AI_Cinematic Equal to False
-


AI_Enabled Equal to True
-


AI_Voljin Not equal to No unit
-
-

Actions
-


Set AI_Voljin_TempPoint = (Position of AI_Voljin)
-


Set AI_Voljin_TempGroup = (Units within AI_Voljin_HealRange of AI_Voljin_TempPoint matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an ally of (Owner of AI_Voljin).) Equal to True)).)
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint)
-


Set AI_Voljin_TempUnit = No unit
-


Set AI_Voljin_ClosestDistance = 101.00
-


Unit Group - Pick every unit in AI_Voljin_TempGroup 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 AI_Voljin_HealTreshold
-






((Picked unit) is A Hero) Equal to True
-






(Picked unit) Not equal to AI_Voljin
-
-





Then - Actions
-






Set AI_Voljin_Distance = (Percentage life of (Picked unit))
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








AI_Voljin_Distance Less than AI_Voljin_ClosestDistance
-
-







Then - Actions
-








Set AI_Closest_Distance = AI_Voljin_Distance
-








Set AI_Voljin_TempUnit = (Picked unit)
-
-







Else - Actions
-
-
-





Else - Actions
-
-
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_Voljin_TempUnit Equal to No unit
-
-



Then - Actions
-




Set AI_Voljin_ClosestDistance = 101.00
-




Unit Group - Pick every unit in AI_Voljin_TempGroup 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 AI_Voljin_HealTreshold
-








(Picked unit) Not equal to AI_Voljin
-
-







Then - Actions
-








Set AI_Voljin_Distance = (Percentage life of (Picked unit))
-








If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-









If - Conditions
-










AI_Voljin_Distance Less than AI_Voljin_ClosestDistance
-
-









Then - Actions
-










Set AI_Closest_Distance = AI_Voljin_Distance
-










Set AI_Voljin_TempUnit = (Picked unit)
-
-









Else - Actions
-
-
-







Else - Actions
-
-
-
-
-



Else - Actions
-
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




AI_Voljin_TempUnit Not equal to No unit
-
-



Then - Actions
-




Unit - Order AI_Voljin to Orc Shadow Hunter - Healing Wave AI_Voljin_TempUnit
-
-



Else - Actions
-
-


Custom script: call DestroyGroup( udg_AI_Voljin_TempGroup)
-
-
-
AI Voljin Flee
-

Events
-


Unit - Vol'jin 0037 <gen> Takes damage
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Cinematic Equal to False
-
-

Actions
-


Set AI_Voljin_Fleeing = True
-


Set AI_Voljin_FleeTarget = (Damage source)
-


Set AI_Voljin_TempPoint = (Position of AI_Voljin)
-


Set AI_Voljin_TempPoint2 = (Position of AI_Voljin_FleeTarget)
-


Set AI_Voljin_TempPoint3 = (AI_Voljin_TempPoint offset by AI_Voljin_FleeDistance towards (Angle from AI_Voljin_TempPoint2 to AI_Voljin_TempPoint) degrees.)
-


Unit - Order AI_Voljin to Move To AI_Voljin_TempPoint3
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint)
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint2)
-


Custom script: call RemoveLocation( udg_AI_Voljin_TempPoint3)
-


Countdown Timer - Start AI_Voljin_FleeTimer as a One-shot timer that will expire in 3.00 seconds
-
-
-
AI Voljin Timer Reset
-

Events
-


Time - AI_Voljin_FleeTimer expires
-
-

Conditions
-

Actions
-


Set AI_Voljin_Fleeing = False
-
-
-
AI Mort Follow
-

Events
-


Time - Every 0.40 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Cinematic Equal to False
-


AI_Sylvanas Not equal to No unit
-


AI_Mort Not equal to No unit
-
-

Actions
-


Set AI_Mort_TempPoint = (Position of AI_Sylvanas)
-


Set AI_Mort_TempPoint2 = (AI_Mort_TempPoint offset by AI_Mort_FollowDistance towards ((Facing of AI_Sylvanas) + 90.00) degrees.)
-


Set AI_Mort_TempPoint3 = (Position of AI_Mort)
-


Set AI_Mort_Distance = (Distance between AI_Mort_TempPoint3 and AI_Mort_TempPoint)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




Or - Any (Conditions) are true
-





Conditions
-






(Current order of AI_Mort) Not equal to (Order(attack))
-






AI_Mort_Distance Greater than AI_Mort_MaxCombatDistance
-
-
-
-



Then - Actions
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(Distance between AI_Mort_TempPoint2 and AI_Mort_TempPoint3) Greater than 100.00
-
-





Then - Actions
-






Unit - Order AI_Mort to Move To AI_Mort_TempPoint2
-
-





Else - Actions
-
-
-



Else - Actions
-
-


Custom script: call RemoveLocation( udg_AI_Mort_TempPoint)
-


Custom script: call RemoveLocation( udg_AI_Mort_TempPoint2)
-


Custom script: call RemoveLocation( udg_AI_Mort_TempPoint3)
-
-
-
AI Mort Protection
-

Events
-


Unit - Sylvanas 0004 <gen> Takes damage
-
-

Conditions
-


AI_Cinematic Equal to False
-


AI_Enabled Equal to True
-


AI_Mort Not equal to No unit
-


(Damage source) Not equal to No unit
-
-

Actions
-


Set AI_Mort_LastAttacker = (Damage source)
-


Unit - Order AI_Mort to Attack AI_Mort_LastAttacker
-
-
-
AI Mort Scan
-

Events
-


Time - Every 0.50 seconds of game time
-
-

Conditions
-


AI_Enabled Equal to True
-


AI_Mort Not equal to No unit
-


AI_Sylvanas Not equal to No unit
-


AI_Cinematic Equal to False
-
-

Actions
-


Set AI_Mort_TempPoint = (Position of AI_Sylvanas)
-


Set AI_Mort_TempGroup = (Units within AI_Mort_GuardRange of AI_Mort_TempPoint matching ((((Matching unit) belongs to an enemy of (Owner of AI_Sylvanas).) Equal to True) and (((Matching unit) is alive) Equal to True)).)
-


Custom script: call RemoveLocation( udg_AI_Mort_TempPoint)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(Number of units in AI_Mort_TempGroup) Greater than 0
-
-



Then - Actions
-




Set AI_Mort_ClosestDistance = (AI_Mort_GuardRange + 1.00)
-




Set AI_Mort_TempUnit = No unit
-




Set AI_Mort_TempPoint = (Position of AI_Sylvanas)
-




Unit Group - Pick every unit in AI_Mort_TempGroup and do (Actions)
-





Loop - Actions
-






Set AI_Mort_TempPoint2 = (Position of (Picked unit))
-






Set AI_Mort_Distance = (Distance between AI_Mort_TempPoint and AI_Mort_TempPoint2)
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








AI_Mort_Distance Less than AI_Mort_ClosestDistance
-
-







Then - Actions
-








Set AI_Mort_ClosestDistance = AI_Mort_Distance
-








Set AI_Mort_TempUnit = (Picked unit)
-
-







Else - Actions
-
-






Custom script: call RemoveLocation( udg_AI_Mort_TempPoint2)
-
-
-




Custom script: call RemoveLocation( udg_AI_Mort_TempPoint)
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






AI_Mort_TempUnit Not equal to No unit
-
-





Then - Actions
-






Unit - Order AI_Mort to Attack AI_Mort_TempUnit
-
-





Else - Actions
-
-
-



Else - Actions
-
-


Custom script: call DestroyGroup( udg_AI_Mort_TempGroup)
-
-
Last edited:
