• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Solved] Crash during Loading Screen (when loading a saved game). What causes it?

Status
Not open for further replies.

SpasMaster

Hosted Project: SC
Level 23
Joined
Jan 29, 2010
Messages
1,969
Hello, Hive!

Few months back, upon releasing a new version for my project - Sunken City, I noticed that the game crashes at loading screen when trying to load a saved game. After many tests, I found the source and I was puzzled by it: it was the Resurrection Stone system.

Here is how it worked:
-You start the game and save-loading is fine.
-However, if you reach the first resurrection stone and activate it, save-loading crash appears.

Currently I don't remember the exact changes I did to the resurrection system back then, but I remember that I reversed anything I touched there and the issue was gone. The system is old and was created by a friend of mine looong time ago. It does work perfectly tho.


So jump to present days. Last few days I was working on a new version. However, I totally forgot about the issue that I have described above, so I decided to improve and optimize the resurrection system. So I did. Once the version was out, people have started reporting crashes when attempting to load a saved game. I tested it myself and experienced the problem aswell. At that moment I remembered that the ressurection stones caused this to me before.

Now... I can easily revert the system back to how it was before, but I'd really want to find what exactly causes the crash in that system.

Before I post the triggers, I'll explain a couple of things:
1) There are 19 Resurrection Stones in the map.
2) When a Hero approaches a Resurrection Stone, it gets activated and serves as a checkpoint for the team where they resurrect if they die.
3) Activating a Resurrection Stone disables all other Resurrection Stones.

Now I will post the system in the form where there are no crashes and works fine, BUT is not really optimal, since it uses 19 triggers to work.
I will post the trigger for just 1 Resurrection Stone, the other 18 are pretty much copies of it:
[trigger=""]First Stone
Events
Unit - A unit comes within 256.00 of Resurrection Stone (southeast facing) 0127 <gen>
Conditions
And - All (Conditions) are true
Conditions
((Entering unit) is A Hero) Equal to True
Or - Any (Conditions) are true
Conditions
(Owner of (Triggering unit)) Equal to Player 1 (Red)
(Owner of (Triggering unit)) Equal to Player 2 (Blue)
(Owner of (Triggering unit)) Equal to Player 3 (Teal)
Actions
Set ResurrectionStoneSpot = (Position of Resurrection Stone (southeast facing) 0127 <gen>)
Visibility - Destroy StoneVisibility[1]
Visibility - Destroy StoneVisibility[2]
Visibility - Destroy StoneVisibility[3]
Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResurrectionStoneSpot to a radius of 300.00
Set StoneVisibility[1] = (Last created visibility modifier)
Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResurrectionStoneSpot to a radius of 300.00
Set StoneVisibility[2] = (Last created visibility modifier)
Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResurrectionStoneSpot to a radius of 300.00
Set StoneVisibility[3] = (Last created visibility modifier)
Animation - Add the alternate animation tag to Resurrection Stone (southeast facing) 0127 <gen>
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[1] Equal to False
Then - Actions
Special Effect - Create a special effect at ResurrectionStoneSpot using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
Special Effect - Destroy (Last created special effect)
Else - Actions
Set ResStones[1] = True
Set NoResStone = False
For each (Integer A) from 2 to 19, do (Actions)
Loop - Actions
Set ResStones[(Integer A)] = False
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0911 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0860 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0237 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0240 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0239 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0779 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0128 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0130 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0129 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0011 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0533 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0774 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0775 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0776 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0777 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southeast facing) 0778 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0779 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0005 <gen>
Animation - Remove the alternate animation tag to Resurrection Stone (southwest facing) 0752 <gen>
[/trigger]


(Insert 18 more triggers here: Stone 2, Stone 3, Stone 4, etc..)

[trigger=""]Actual Ressurection
Events
Unit - A unit Dies
Conditions
Or - Any (Conditions) are true
Conditions
(Owner of (Triggering unit)) Equal to Player 1 (Red)
(Owner of (Triggering unit)) Equal to Player 2 (Blue)
(Owner of (Triggering unit)) Equal to Player 3 (Teal)
((Triggering unit) is A Hero) Equal to True
Actions
Set Player_Lives[(Player number of (Owner of (Dying unit)))] = (Player_Lives[(Player number of (Owner of (Dying unit)))] - 1)
Multiboard - Set the text for Main_Board item in column 7, row ((Player number of (Owner of (Triggering unit))) + 1) to (String(Player_Lives[(Player number of (Owner of (Dying unit)))]))
Game - Display to (All players) the text: (|c00ff0000 + ((Name of (Owner of (Triggering unit))) + ( has died. He will respawn in + ((String((5 + ((Hero level of (Triggering unit)) x 2)))) + seconds|r))))
Wait (5.00 + ((Real((Hero level of (Dying unit)))) x 2.00)) seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
NoResStone Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Random point in Respawn Fix <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[1] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0127 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[2] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0128 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[3] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0130 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[4] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0011 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[5] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0533 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[6] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0774 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[7] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0775 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[8] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0776 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[9] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0777 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[10] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0778 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[11] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0779 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[12] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0005 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[13] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0129 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[14] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0237 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[15] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southeast facing) 0239 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[16] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0240 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[17] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0860 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[18] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0911 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStones[19] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of Resurrection Stone (southwest facing) 0752 <gen>)
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
[/trigger]


Alright so, this system above works. It causes no crashes. I am very aware that it is clumsy, old and done in a noob-ish way which is why I decided to rework it. Here is how I did it:


[trigger=""]Initialization Units
Events
Time - Elapsed game time is 1.00 seconds
Conditions
Actions
Set ResStone[1] = Resurrection Stone (southwest facing) 0240 <gen>
Set ResStone[2] = Resurrection Stone (southeast facing) 0127 <gen>
Set ResStone[3] = Resurrection Stone (southwest facing) 0128 <gen>
Set ResStone[4] = Resurrection Stone (southwest facing) 0860 <gen>
Set ResStone[5] = Resurrection Stone (southeast facing) 0778 <gen>
Set ResStone[6] = Resurrection Stone (southwest facing) 0752 <gen>
Set ResStone[7] = Resurrection Stone (southwest facing) 0237 <gen>
Set ResStone[8] = Resurrection Stone (southwest facing) 0130 <gen>
Set ResStone[9] = Resurrection Stone (southwest facing) 0911 <gen>
Set ResStone[10] = Resurrection Stone (southwest facing) 0005 <gen>
Set ResStone[11] = Resurrection Stone (southeast facing) 0775 <gen>
Set ResStone[12] = Resurrection Stone (southeast facing) 0011 <gen>
Set ResStone[13] = Resurrection Stone (southeast facing) 0239 <gen>
Set ResStone[14] = Resurrection Stone (southwest facing) 0774 <gen>
Set ResStone[15] = Resurrection Stone (southeast facing) 0533 <gen>
Set ResStone[16] = Resurrection Stone (southeast facing) 0129 <gen>
Set ResStone[17] = Resurrection Stone (southwest facing) 0776 <gen>
Set ResStone[18] = Resurrection Stone (southwest facing) 0777 <gen>
Set ResStone[19] = Resurrection Stone (southwest facing) 0779 <gen>
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[1])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[2])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[3])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[4])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[5])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[6])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[7])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[8])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[9])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[10])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[11])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[12])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[13])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[14])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[15])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[16])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[17])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[18])
Trigger - Add to Ress Stones <gen> the event (Unit - A unit comes within 300.00 of ResStone[19])
[/trigger]


  • Ress Stones
    • Events
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • Or - Any (Conditions) are true
        • Conditions
          • (Owner of (Triggering unit)) Equal to Player 1 (Red)
          • (Owner of (Triggering unit)) Equal to Player 2 (Blue)
          • (Owner of (Triggering unit)) Equal to Player 3 (Teal)
    • Actions
      • Set Generic_Point = (Position of (Triggering unit))
      • Set Generic_Group = (Units within 350.00 of Generic_Point matching (((Unit-type of (Matching unit)) Equal to Resurrection Stone (southeast facing)) or ((Unit-type of (Matching unit)) Equal to Resurrection Stone (southwest facing))))
      • Unit Group - Pick every unit in Generic_Group and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[1]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[1] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[1])
                  • Animation - Add the alternate animation tag to ResStone[1]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set ResStone_Boo[1] = True
                  • Unit - Add Recall (Stone) to ResStone[1]
                  • Unit - Add Restoration (Stone) to ResStone[1]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[1]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[1]
                  • For each (Integer A) from 2 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[2]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[2] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[2])
                  • Animation - Add the alternate animation tag to ResStone[2]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set ResStone_Boo[1] = False
                  • Animation - Remove the alternate animation tag to ResStone[1]
                  • Unit - Remove Recall (Stone) from ResStone[1]
                  • Unit - Remove Restoration (Stone) from ResStone[1]
                  • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[1]
                  • Unit - Remove Mana Regeneration (Neutral) from ResStone[1]
                  • Set ResStone_Boo[2] = True
                  • Unit - Add Recall (Stone) to ResStone[2]
                  • Unit - Add Restoration (Stone) to ResStone[2]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[2]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[2]
                  • For each (Integer A) from 3 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[3]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[3] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[3])
                  • Animation - Add the alternate animation tag to ResStone[3]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 2, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[3] = True
                  • Unit - Add Recall (Stone) to ResStone[3]
                  • Unit - Add Restoration (Stone) to ResStone[3]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[3]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[3]
                  • For each (Integer A) from 4 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[4]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[4] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[4])
                  • Animation - Add the alternate animation tag to ResStone[4]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 3, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[4] = True
                  • Unit - Add Recall (Stone) to ResStone[4]
                  • Unit - Add Restoration (Stone) to ResStone[4]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[4]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[4]
                  • For each (Integer A) from 5 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[5]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[5] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[5])
                  • Animation - Add the alternate animation tag to ResStone[5]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 4, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[5] = True
                  • Unit - Add Recall (Stone) to ResStone[5]
                  • Unit - Add Restoration (Stone) to ResStone[5]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[5]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[5]
                  • For each (Integer A) from 6 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[6]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[6] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[6])
                  • Animation - Add the alternate animation tag to ResStone[6]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 5, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[6] = True
                  • Unit - Add Recall (Stone) to ResStone[6]
                  • Unit - Add Restoration (Stone) to ResStone[6]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[6]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[6]
                  • For each (Integer A) from 7 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[7]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[7] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[7])
                  • Animation - Add the alternate animation tag to ResStone[7]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 6, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[7] = True
                  • Unit - Add Recall (Stone) to ResStone[7]
                  • Unit - Add Restoration (Stone) to ResStone[7]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[7]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[7]
                  • For each (Integer A) from 8 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[8]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[8] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[8])
                  • Animation - Add the alternate animation tag to ResStone[8]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 7, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[8] = True
                  • Unit - Add Recall (Stone) to ResStone[8]
                  • Unit - Add Restoration (Stone) to ResStone[8]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[8]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[8]
                  • For each (Integer A) from 9 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[9]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[9] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[9])
                  • Animation - Add the alternate animation tag to ResStone[9]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 8, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[9] = True
                  • Unit - Add Recall (Stone) to ResStone[9]
                  • Unit - Add Restoration (Stone) to ResStone[9]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[9]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[9]
                  • For each (Integer A) from 10 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[10]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[10] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[10])
                  • Animation - Add the alternate animation tag to ResStone[10]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 9, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[10] = True
                  • Unit - Add Recall (Stone) to ResStone[10]
                  • Unit - Add Restoration (Stone) to ResStone[10]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[10]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[10]
                  • For each (Integer A) from 11 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[11]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[11] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[11])
                  • Animation - Add the alternate animation tag to ResStone[11]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 10, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[11] = True
                  • Unit - Add Recall (Stone) to ResStone[11]
                  • Unit - Add Restoration (Stone) to ResStone[11]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[11]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[11]
                  • For each (Integer A) from 12 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[12]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[12] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[12])
                  • Animation - Add the alternate animation tag to ResStone[12]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 11, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[12] = True
                  • Unit - Add Recall (Stone) to ResStone[12]
                  • Unit - Add Restoration (Stone) to ResStone[12]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[12]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[12]
                  • For each (Integer A) from 13 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[13]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[13] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[13])
                  • Animation - Add the alternate animation tag to ResStone[13]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 12, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[13] = True
                  • Unit - Add Recall (Stone) to ResStone[13]
                  • Unit - Add Restoration (Stone) to ResStone[13]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[13]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[13]
                  • For each (Integer A) from 14 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[14]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[14] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[14])
                  • Animation - Add the alternate animation tag to ResStone[14]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 13, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[14] = True
                  • Unit - Add Recall (Stone) to ResStone[14]
                  • Unit - Add Restoration (Stone) to ResStone[14]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[14]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[14]
                  • For each (Integer A) from 15 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[15]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[15] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[15])
                  • Animation - Add the alternate animation tag to ResStone[15]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 14, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[15] = True
                  • Unit - Add Recall (Stone) to ResStone[15]
                  • Unit - Add Restoration (Stone) to ResStone[15]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[15]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[15]
                  • For each (Integer A) from 16 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[16]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[16] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[16])
                  • Animation - Add the alternate animation tag to ResStone[16]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 15, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[16] = True
                  • Unit - Add Recall (Stone) to ResStone[16]
                  • Unit - Add Restoration (Stone) to ResStone[16]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[16]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[16]
                  • For each (Integer A) from 17 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[17]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[17] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[17])
                  • Animation - Add the alternate animation tag to ResStone[17]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 16, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[17] = True
                  • Unit - Add Recall (Stone) to ResStone[17]
                  • Unit - Add Restoration (Stone) to ResStone[17]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[17]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[17]
                  • For each (Integer A) from 18 to 19, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[18]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[18] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[18])
                  • Animation - Add the alternate animation tag to ResStone[18]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 17, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[18] = True
                  • Unit - Add Recall (Stone) to ResStone[18]
                  • Unit - Add Restoration (Stone) to ResStone[18]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[18]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[18]
                  • Set ResStone_Boo[19] = False
                  • Animation - Remove the alternate animation tag to ResStone[19]
                  • Unit - Remove Recall (Stone) from ResStone[19]
                  • Unit - Remove Restoration (Stone) from ResStone[19]
                  • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[19]
                  • Unit - Remove Mana Regeneration (Neutral) from ResStone[19]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked unit) Equal to ResStone[19]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ResStone_Boo[19] Equal to False
                • Then - Actions
                  • Set ResStone_Point = (Position of ResStone[19])
                  • Animation - Add the alternate animation tag to ResStone[19]
                  • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • For each (Integer A) from 1 to 18, do (Actions)
                    • Loop - Actions
                      • Set ResStone_Boo[(Integer A)] = False
                      • Animation - Remove the alternate animation tag to ResStone[(Integer A)]
                      • Unit - Remove Recall (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Restoration (Stone) from ResStone[(Integer A)]
                      • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer A)]
                      • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer A)]
                  • Set ResStone_Boo[19] = True
                  • Unit - Add Recall (Stone) to ResStone[19]
                  • Unit - Add Restoration (Stone) to ResStone[19]
                  • Unit - Add Life Regeneration Aura (Neutral) to ResStone[19]
                  • Unit - Add Mana Regeneration (Neutral) to ResStone[19]
                  • Visibility - Destroy ResStone_Visibility[1]
                  • Visibility - Destroy ResStone_Visibility[2]
                  • Visibility - Destroy ResStone_Visibility[3]
                  • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[1] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[2] = (Last created visibility modifier)
                  • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                  • Set ResStone_Visibility[3] = (Last created visibility modifier)
                  • Custom script: call RemoveLocation(udg_ResStone_Point)
                • Else - Actions
            • Else - Actions
      • Custom script: call RemoveLocation(udg_Generic_Point)
      • Custom script: call DestroyGroup(udg_Generic_Group)
[trigger=""]Actual Ressurection
Events
Unit - A unit Dies
Conditions
((Triggering unit) is A Hero) Equal to True
Or - Any (Conditions) are true
Conditions
(Owner of (Triggering unit)) Equal to Player 1 (Red)
(Owner of (Triggering unit)) Equal to Player 2 (Blue)
(Owner of (Triggering unit)) Equal to Player 3 (Teal)
Actions
Set Player_Lives[(Player number of (Owner of (Triggering unit)))] = (Player_Lives[(Player number of (Owner of (Triggering unit)))] - 1)
Multiboard - Set the text for Main_Board item in column 7, row ((Player number of (Owner of (Triggering unit))) + 1) to (String(Player_Lives[(Player number of (Owner of (Dying unit)))]))
Game - Display to (All players) the text: (|c00ff0000 + ((Name of (Owner of (Triggering unit))) + ( has died. He will respawn in + ((String((5 + ((Hero level of (Triggering unit)) x 2)))) + seconds|r))))
Wait (5.00 + ((Real((Hero level of (Dying unit)))) x 2.00)) seconds
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[1] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[1])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[2] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[2])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[3] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[3])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[4] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[4])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[5] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[5])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[6] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[6])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[7] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[7])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[8] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[8])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[9] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[9])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[10] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[10])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[11] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[11])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[12] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[12])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[13] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[13])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[14] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[14])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[15] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[15])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[16] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[16])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[17] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[17])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[18] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[18])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ResStone_Boo[19] Equal to True
Player_Lives[(Player number of (Owner of (Dying unit)))] Greater than or equal to 1
Then - Actions
Set Loc = (Position of ResStone[19])
Hero - Instantly revive (Triggering unit) at Loc, Show revival graphics
Unit - Set mana of (Triggering unit) to 100.00%
Camera - Pan camera for (Owner of (Triggering unit)) to Loc over 0.00 seconds
Selection - Select (Random unit from (Units owned by (Owner of (Triggering unit)) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Backpack)))) for (Owner of (Triggering unit))
Custom script: call RemoveLocation(udg_Loc)
Else - Actions
[/trigger]



So, guys. Old System causes no crash upon loading. New System does. The first time I made changes to the system it was an extremely minor change and it still caused crash. Feels like no matter how I touch the old system, it always ends up causing a crash. What might be causing it? Any ideas?
 
Last edited by a moderator:
Does it always crash? Have you tried disabling any combination of those triggers and seeing if anything happens as a result?

Also, to help with debugging (and just for easier triggers to deal with), try consolidating your trigger using a loop. For example, one of the triggers can be consolidated into something like this:
  • Ress Stones
    • Events
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
      • Or - Any (Conditions) are true
        • Conditions
          • (Owner of (Triggering unit)) Equal to Player 1 (Red)
          • (Owner of (Triggering unit)) Equal to Player 2 (Blue)
          • (Owner of (Triggering unit)) Equal to Player 3 (Teal)
    • Actions
      • Set Generic_Point = (Position of (Triggering unit))
      • Set Generic_Group = (Units within 350.00 of Generic_Point matching (((Unit-type of (Matching unit)) Equal to Resurrection Stone (southeast facing)) or ((Unit-type of (Matching unit)) Equal to Resurrection Stone (southwest facing))))
      • Unit Group - Pick every unit in Generic_Group and do (Actions)
        • Loop - Actions
          • For each (Integer A) from 1 to 19 do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Picked unit) Equal to ResStone[(Integer A)]
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ResStone_Boo[(Integer A)] Equal to False
                    • Then - Actions
                      • Set ResStone_Point = (Position of ResStone[(Integer A)])
                      • Animation - Add the alternate animation tag to ResStone[(Integer A)]
                      • Special Effect - Create a special effect at ResStone_Point using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Set ResStone_Boo[(Integer A)] = True
                      • Unit - Add Recall (Stone) to ResStone[(Integer A)]
                      • Unit - Add Restoration (Stone) to ResStone[(Integer A)]
                      • Unit - Add Life Regeneration Aura (Neutral) to ResStone[(Integer A)]
                      • Unit - Add Mana Regeneration (Neutral) to ResStone[(Integer A)]
                      • For each (Integer B) from 1 to 19, do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Integer B) Not Equal to (Integer A)
                            • Then - Actions
                              • Set ResStone_Boo[(Integer B)] = False
                              • Animation - Remove the alternate animation tag to ResStone[(Integer B)]
                              • Unit - Remove Recall (Stone) from ResStone[(Integer B)]
                              • Unit - Remove Restoration (Stone) from ResStone[(Integer B)]
                              • Unit - Remove Life Regeneration Aura (Neutral) from ResStone[(Integer B)]
                              • Unit - Remove Mana Regeneration (Neutral) from ResStone[(Integer B)]
                            • Else - Actions
                      • Visibility - Destroy ResStone_Visibility[1]
                      • Visibility - Destroy ResStone_Visibility[2]
                      • Visibility - Destroy ResStone_Visibility[3]
                      • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility from ResStone_Point to a radius of 300.00
                      • Set ResStone_Visibility[1] = (Last created visibility modifier)
                      • Visibility - Create an initially Enabled visibility modifier for Player 2 (Blue) emitting Visibility from ResStone_Point to a radius of 300.00
                      • Set ResStone_Visibility[2] = (Last created visibility modifier)
                      • Visibility - Create an initially Enabled visibility modifier for Player 3 (Teal) emitting Visibility from ResStone_Point to a radius of 300.00
                      • Set ResStone_Visibility[3] = (Last created visibility modifier)
                      • Custom script: call RemoveLocation(udg_ResStone_Point)
                    • Else - Actions
                • Else - Actions

Try to do the same for the other trigger (make a copy first though, in case you mess up). It'll make it easier to disable actions and see if something is going wrong within the trigger.

The best thing to do is to disable those triggers -> make sure the map doesn't crash. Enable the init trigger, and make sure the map doesn't crash (that trigger seems fine imo). Try enabling the "Units within range" trigger and see if that works without crashing. Finally, enable the last trigger (unit dies) and see if it still works. Also try disabling the "Units within range" trigger, but keeping the "Unit dies" trigger enabled. Once you've found out which trigger is the culprit, you'll want to start disabling actions to find out what is causing the problem.

Just at a glance, I'm suspecting it is the actual resurrection trigger (unit dies).
 
Level 19
Joined
Jul 2, 2011
Messages
2,162
make sure that both if statements are not firing at the same time

for example

removing an ability from a stone that doesn't have that ability, will cause a crash.

use lots and lots of dialogue messages, so your game can tell you where the program is when ever it enters new code
 
Last edited:

SpasMaster

Hosted Project: SC
Level 23
Joined
Jan 29, 2010
Messages
1,969
@PurgeandFire: Thanks for the suggestion, I am going to try it out and update a bit later.

make sure that both if statements are not firing at the same time

for example

removing an ability from a stone that doesn't have that ability, will cause a crash.
I believe that would cause a crash during the game, not during the loading screen of a saved game, am I right?


EDIT:
Ok, problem is fixed. I used the method Purge suggested and...
...one of the 3 visibility modifier actions was the cause of the problem. Instead of using visibility modifier, I now create an invisible dummy unit to serve the same purposes. It's still weird... I used visibility modifiers in the old triggers aswell, yet they only cause problems when updated. Who knows... anyways, thanks for the help. Also thanks to PurgeandFire for the tip on how to optimize the trigger.

SOLVED
 
Last edited:
Status
Not open for further replies.
Top