Hi
I'm making an AI system which is rather basic but I am trying to make them prioritize weak units, buildings and heroes. Here is my attempt:
However this doesn't seem to work so I was wondering if anyone knew how to make them prioritize attacking heroes first, then weak buildings and finally weak units?
I'm making an AI system which is rather basic but I am trying to make them prioritize weak units, buildings and heroes. Here is my attempt:
-
AI Threat Detection
- Events
- Conditions
-
Actions
- Set AIMoveAllyGroup = (Units within 800.00 of TempPoint matching ((((Matching unit) belongs to an ally of AITempPlayer) Equal to True) and (((Matching unit) is alive) Equal to True)))
-
Unit Group - Pick every unit in AIMoveAllyGroup and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Owner of TempUnit) Not equal to Neutral Passive
-
Then - Actions
- Set TempUnit = (Picked unit)
- Set AIMoveAllyHP = (AIMoveAllyHP + (Life of TempUnit))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A Hero) Equal to True
-
Then - Actions
- Set AIMoveAllyLevel = (AIMoveAllyLevel + (4 + (Hero level of TempUnit)))
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 1)
-
Then - Actions
- Set AIMoveAllyLevel = (AIMoveAllyLevel + 12)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 2)
-
Then - Actions
- Set AIMoveAllyLevel = (AIMoveAllyLevel + 20)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 3)
-
Then - Actions
- Set AIMoveAllyLevel = (AIMoveAllyLevel + 30)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A structure) Equal to False
-
Then - Actions
- Set AIMoveAllyLevel = (AIMoveAllyLevel + (Level of TempUnit))
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Set AIMoveAllyAverage = (AIMoveAllyHP x (Real(AIMoveAllyLevel)))
- Set AIMoveEnemyGroup = (Units within 800.00 of TempPoint matching ((((Matching unit) belongs to an enemy of AITempPlayer) Equal to True) and (((Matching unit) is alive) Equal to True)))
-
Unit Group - Pick every unit in AIMoveEnemyGroup and do (Actions)
-
Loop - Actions
- Set TempUnit = (Picked unit)
- Set AIMoveEnemyHP = (AIMoveEnemyHP + (Life of TempUnit))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Owner of TempUnit) Not equal to Neutral Passive
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A Hero) Equal to True
-
Then - Actions
- Set AIMoveEnemyLevel = (AIMoveEnemyLevel + (4 + (Hero level of TempUnit)))
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 1)
-
Then - Actions
- Set AIMoveEnemyLevel = (AIMoveEnemyLevel + 12)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 2)
-
Then - Actions
- Set AIMoveEnemyLevel = (AIMoveEnemyLevel + 20)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit-type of TempUnit) Equal to Tidal Guardian (Level 3)
-
Then - Actions
- Set AIMoveEnemyLevel = (AIMoveEnemyLevel + 30)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A structure) Equal to False
-
Then - Actions
- Set AIMoveEnemyLevel = (AIMoveEnemyLevel + (Level of TempUnit))
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
-
Loop - Actions
- Set AIMoveEnemyAverage = (AIMoveEnemyHP x (Real(AIMoveEnemyLevel)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- AIMoveAllyAverage Less than (AIMoveEnemyAverage x 0.65)
-
Then - Actions
- Unit - Order AIHeroUnit to Move To AIMovePoint
- Unit Group - Add AIHeroUnit to AIMoveGroup
-
Else - Actions
-
Unit Group - Pick every unit in AIMoveEnemyGroup and do (Actions)
-
Loop - Actions
- Set TempUnit = (Picked unit)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A structure) Equal to False
- (TempUnit is A Hero) Equal to False
- (Percentage life of TempUnit) Less than 15.00
-
Then - Actions
- Unit - Order AIHeroUnit to Move To AIMovePoint
- Unit Group - Add AIHeroUnit to AIMoveGroup
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A Hero) Equal to True
- (Percentage life of TempUnit) Less than 40.00
-
Then - Actions
- Unit - Order AIHeroUnit to Move To AIMovePoint
- Unit Group - Add AIHeroUnit to AIMoveGroup
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit is A structure) Equal to True
- (Percentage life of TempUnit) Less than 20.00
-
Then - Actions
- Unit - Order AIHeroUnit to Move To AIMovePoint
- Unit Group - Add AIHeroUnit to AIMoveGroup
-
Else - Actions
- Unit Group - Remove AIHeroUnit from AIMoveGroup
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Loop - Actions
- Unit Group - Remove AIHeroUnit from AIMoveGroup
-
Unit Group - Pick every unit in AIMoveEnemyGroup and do (Actions)
-
If - Conditions
- Set AIMoveAllyHP = 0.00
- Set AIMoveAllyLevel = 0
- Set AIMoveEnemyHP = 0.00
- Set AIMoveEnemyLevel = 0