- Joined
- Dec 16, 2017
- Messages
- 437
Hello guys, i've made penance spell from wow, it works fine in test map, in my map,it laggs very hard when i try to heal ally,when i dmg an enemy it works right,what could be the reason? These are the triggers:
-
Penance
-

Events
-


Unit - A unit Starts the effect of an ability
-
-

Conditions
-


(Ability being cast) Equal to Penance (Priest DISCIPLINE)
-
-

Actions
-


Set PenanceCaster = (Triggering unit)
-


Set PenanceTarget = (Target unit of ability being cast)
-


Set PenanceDamage = ((Real((Level of Penance (Priest DISCIPLINE) for (Triggering unit)))) x 45.00)
-


Set PenanceHeal = ((Real((Level of Penance (Priest DISCIPLINE) for (Triggering unit)))) x 90.00)
-


Set PenanceDuration = 6
-


Set PenanceCasterPosition = (Position of PenanceCaster)
-


Unit - Create 1 Dummy (Unstable Affliction-Warlock Affliction) for (Owner of PenanceCaster) at PenanceCasterPosition facing Default building facing degrees
-


Unit - Add a 6.00 second Generic expiration timer to (Last created unit)
-


Set PenanceDummy = (Last created unit)
-


Unit - Add |r PenanceDummy(Priest DISCIPLINE) to PenanceDummy
-


Trigger - Turn on PenanceLoop <gen>
-


Trigger - Turn on PenanceStopCast <gen>
-
-
-
PenanceLoop
-

Events
-


Time - Every 1.00 seconds of game time
-
-

Conditions
-

Actions
-


Set PenanceTargetPosition = (Position of PenanceTarget)
-


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



If - Conditions
-




(Current order of PenanceCaster) Equal to (Order(channel))
-




PenanceCaster Not equal to No unit
-




PenanceTarget Not equal to No unit
-




(Life of PenanceCaster) Greater than 0.00
-




(Life of PenanceTarget) Greater than 0.00
-




(PenanceTarget is visible to (Owner of PenanceCaster)) Equal to True
-




(PenanceTarget is Magic Immune) Equal to False
-
-



Then - Actions
-




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





If - Conditions
-






(PenanceTarget belongs to an enemy of (Owner of PenanceCaster)) Equal to True
-
-





Then - Actions
-






Set PenanceGroup = (Units within 30.00 of PenanceTargetPosition matching ((((Matching unit) belongs to an enemy of (Owner of PenanceCaster)) Equal to True) and (((Matching unit) is dead) Equal to False)))
-






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







Loop - Actions
-








Unit - Order PenanceDummy to Neutral Alchemist - Acid Bomb PenanceTarget
-








Unit - Cause PenanceCaster to damage (Picked unit), dealing PenanceDamage damage of attack type Magic and damage type Divine
-








Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
-








Special Effect - Destroy (Last created special effect)
-








Set PenanceDuration = (PenanceDuration - 1)
-
-
-
-





Else - Actions
-
-




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





If - Conditions
-






(PenanceTarget belongs to an ally of (Owner of PenanceCaster)) Equal to True
-
-





Then - Actions
-






Set PenanceGroup = (Units within 30.00 of PenanceTargetPosition matching (((PenanceTarget belongs to an ally of (Owner of PenanceCaster)) Equal to True) and (((Matching unit) is dead) Equal to False)))
-






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







Loop - Actions
-








Unit - Order PenanceDummy to Neutral Alchemist - Acid Bomb PenanceTarget
-








Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + PenanceHeal)
-








Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
-








Special Effect - Destroy (Last created special effect)
-








Set PenanceDuration = (PenanceDuration - 1)
-
-
-
-





Else - Actions
-
-
-



Else - Actions
-
-


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



If - Conditions
-




(Distance between PenanceCasterPosition and PenanceTargetPosition) Greater than 900.00
-
-



Then - Actions
-




Set PenanceCaster = No unit
-
-



Else - Actions
-
-


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



If - Conditions
-




PenanceDuration Equal to 0
-
-



Then - Actions
-




Trigger - Turn off (This trigger)
-




Trigger - Turn off PenanceStopCast <gen>
-
-



Else - Actions
-
-


Custom script: call DestroyGroup(udg_PenanceGroup)
-


Custom script: call RemoveLocation(udg_PenanceTargetPosition)
-


Custom script: call RemoveLocation(udg_PenanceCasterPosition)
-
-
-
PenanceStopCast
-

Events
-


Unit - A unit Is issued an order with no target
-


Unit - A unit Is issued an order targeting a point
-


Unit - A unit Is issued an order targeting an object
-
-

Conditions
-

Actions
-


For each (Integer PenanceDuration) from 1 to PenanceDuration, do (Actions)
-



Loop - Actions
-
-


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



If - Conditions
-




PenanceCaster Equal to (Triggering unit)
-
-



Then - Actions
-




Set PenanceCaster = No unit
-
-



Else - Actions
-
-
-
Last edited:

