- Joined
- Nov 3, 2013
- Messages
- 989
While creating a Parry + Counter attack type ability (haven't seen any besides retaliation types in wc3 btw) I didn't think about that I couldn't use unit handle as index so I made a global unit group and thought I'd just save and then load a boolean in the unit group loop instead. For some reason it doesn't work though.
-
Riposte init
-
Events
- Time - Elapsed game time is 0.00 seconds
- Conditions
-
Actions
- Set u = Riposter 0000 <gen>
- Custom script: call SaveBoolean(udg_hash, GetHandleId(udg_u), 0, true)
-
Events
-
Riposte 1
-
Events
- Unit - A unit Is attacked
- Conditions
-
Actions
- Custom script: local unit udg_u = GetTriggerUnit()
- Custom script: local unit udg_a = GetAttacker()
- Custom script: local player udg_p = GetTriggerPlayer()
- Custom script: local integer udg_id_u = GetHandleId(udg_u)
- Custom script: local integer udg_id_a = GetHandleId(udg_a)
- -------- attacked unit has Riptose ability --------
- Custom script: if LoadBoolean(udg_hash, udg_id_u, 0) then
- -------- have Riptose ability --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (a is in riposte_unitGroup) Not equal to True
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Number of units in riposte_unitGroup) Equal to 0
-
Then - Actions
- Unit - Create 1 Being Attacked (Riposte Dummy Unit) for p at (Center of (Playable map area)) facing Default building facing degrees
- Custom script: call SaveUnitHandle(udg_hash, udg_id_u, 1, GetLastCreatedUnit())
- Else - Actions
-
If - Conditions
- Unit Group - Add a to riposte_unitGroup
- Custom script: call SaveBoolean(udg_hash, udg_id_u, udg_id_a, true)
- Unit - Add Riposte Target (Buff Placer) to a
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
- Custom script: else
- -------- does not have Riptose ability --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (a is in riposte_unitGroup) Equal to True
-
Then - Actions
- Unit Group - Remove a from riposte_unitGroup
- Else - Actions
-
If - Conditions
- Custom script: endif
-
Events
-
Riposte 2
-
Events
- Game - damageEventTrigger becomes Equal to 1.00
- Conditions
-
Actions
- Custom script: local unit udg_u = udg_target
- Custom script: local unit udg_a = udg_source
- Custom script: local integer udg_id_u = GetHandleId(udg_u)
- Custom script: local integer udg_id_a = GetHandleId(udg_a)
- Custom script: local player udg_p = GetOwningPlayer(udg_u)
- Custom script: if LoadBoolean(udg_hash, udg_id_u, 0) then
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- damageType Equal to PHYSICAL
-
Then - Actions
- Unit Group - Remove a from riposte_unitGroup
- Custom script: call SaveBoolean(udg_hash, udg_id_u, udg_id_a, false)
- Unit - Remove Riposte Target (Buff Placer) from a
- Unit - Remove Riposte Target (Slow Aura) buff from a
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Number of units in riposte_unitGroup) Equal to 0
-
Then - Actions
- Custom script: call RemoveUnit(LoadUnitHandle(udg_hash, udg_id_u, 1))
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
- Custom script: else
- Custom script: endif
-
Events
-
Riposte 3
-
Events
- Unit - A unit Begins casting an ability
-
Conditions
- (Ability being cast) Equal to Riposte (retaliate)
-
Actions
- Custom script: local player udg_p = GetTriggerPlayer()
- Custom script: local unit udg_u = GetTriggerUnit()
- Custom script: local unit udg_a
- Custom script: local integer udg_id_u = GetHandleId(udg_u)
- Custom script: local integer udg_id_a
- Game - Display to (All players) the text: start
-
Unit Group - Pick every unit in riposte_unitGroup and do (Actions)
-
Loop - Actions
- Custom script: set udg_a = GetEnumUnit()
- Custom script: set udg_id_a = GetHandleId(udg_a)
- Custom script: call DisplayTextToForce( GetPlayersAll(), ( GetUnitName(udg_a) + GetUnitName(udg_u) ))
- Custom script: if LoadBoolean(udg_hash, udg_id_u, udg_id_a) then
- Game - Display to (All players) the text: true
- Unit - Cause u to damage a, dealing 150.00 damage of attack type Spells and damage type Normal
- Custom script: else
- Custom script: endif
-
Loop - Actions
-
Events