• 🏆 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!

Stop Time

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Spell is compatible with multiple units casting it at once, there is a test in the game that i added to be sure, tried to fix any leaks please point out any that you might find. I originally wanted to add this into my old Assassins skill set but decided to make it a separate spell plus it didn't fit in very well, i might make an altered version to go along with the assassin. If you use this spell please ask permission and please make any suggestions down below.

Stop Time- Alters time and space making a selected space frozen in time, freezes every body except the caster, even team mates, time for the units being frozen is based of of the level of the ability.

  • F 1
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set F_Hash = (Last created hashtable)
      • Set F_Ability = Time Stop
      • Hashtable - Save 0.00 as 1 of F_Handle in F_Hash
  • F 2
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to F_Ability
    • Actions
      • Set F_Caster = (Triggering unit)
      • Custom script: set udg_F_Handle = GetHandleId(udg_F_Dummy)
      • Set F_Level = (Level of F_Ability for F_Caster)
      • Set F_Time = (1.00 + ((Real(F_Level)) x 1.50))
      • Set F_point[1] = (Target point of ability being cast)
      • Unit - Create 1 Stop Time Dummy for (Owner of F_Caster) at F_point[1] facing Default building facing degrees
      • Set F_Dummy = (Last created unit)
      • Hashtable - Save (Facing of F_Dummy) as 2 of F_Handle in F_Hash
      • Unit - Add a F_Time second Generic expiration timer to F_Dummy
      • Set F_Time = (0.80 + ((Real(F_Level)) x 1.50))
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 500.00 of F_point[1] matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Custom script: call RemoveLocation(udg_F_point[1])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Pause (Picked unit)
              • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
              • Animation - Change (Picked unit)'s vertex coloring to (70.00%, 70.00%, 70.00%) with 40.00% transparency
              • Unit Group - Add F_Dummy to F_Group
              • Trigger - Turn on F 3 <gen>
              • Trigger - Turn on F 4 <gen>
              • Trigger - Turn on F 5 <gen>
            • Else - Actions
  • F 3
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in F_Group and do (Actions)
        • Loop - Actions
          • Set F_Dummy = (Picked unit)
          • Custom script: set udg_F_Handle = GetHandleId(udg_F_Dummy)
          • Set F_number = (Load 2 of F_Handle from F_Hash)
          • Set F_point[2] = (Position of F_Dummy)
          • Set F_point[3] = (F_point[2] offset by 500.00 towards F_number degrees)
          • Custom script: call RemoveLocation(udg_F_point[2])
          • Special Effect - Create a special effect at F_point[3] using Doodads\Cityscape\Props\MagicRunes\MagicRunes0.mdl
          • Special Effect - Destroy (Last created special effect)
          • Custom script: call RemoveLocation(udg_F_point[3])
          • Hashtable - Save (F_number + 20.00) as 2 of F_Handle in F_Hash
  • F 4
    • Events
      • Time - Every 0.09 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in F_Group and do (Actions)
        • Loop - Actions
          • Set F_Dummy = (Picked unit)
          • Custom script: set udg_F_Handle = GetHandleId(udg_F_Dummy)
          • Set F_number = (Load 2 of F_Handle from F_Hash)
          • Set F_point[4] = (Position of F_Dummy)
          • Set F_point[5] = (F_point[4] offset by 300.00 towards F_number degrees)
          • Custom script: call RemoveLocation(udg_F_point[4])
          • Special Effect - Create a special effect at F_point[5] using Doodads\Cinematic\GlowingRunes\GlowingRunes4.mdl
          • Special Effect - Destroy (Last created special effect)
          • Custom script: call RemoveLocation(udg_F_point[5])
          • Hashtable - Save (F_number + 30.00) as 2 of F_Handle in F_Hash
  • F 5
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Stop Time Dummy
    • Actions
      • Set F_Dummy = (Dying unit)
      • Unit - Remove F_Dummy from the game
      • Trigger - Turn off F 3 <gen>
      • Trigger - Turn off F 4 <gen>
      • Set F_point[6] = (Position of F_Dummy)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 500.00 of F_point[6] matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Custom script: call RemoveLocation(udg_F_point[6])
          • Unit - Unpause (Picked unit)
          • Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
          • Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
          • Hashtable - Clear all child hashtables of child F_Handle in F_Hash
Keywords:
Stop, Time, furryfox92, Furryfox92, spell, freeze,
Contents

Time Stop (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Moderator: Pharaoh_ Date: 06:54, 29th Mar 2012 The spell bears many problems, such as: • In the F 1 trigger, you are declaring F_Handle, before you store the F_Dummy itself. •...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

160036-albums4747-picture55861.png

Moderator: Pharaoh_
Date: 06:54, 29th Mar 2012

Review
The spell bears many problems, such as:

• In the F 1 trigger, you are declaring F_Handle, before you store the F_Dummy itself.
• Lacks documentation.
• Uses personal paths only that are not configrable through global variables.
• Remove the array from F_point[], use 6 different point variables.
• You are removing F_point[1] within the unit group enumeration, calling this function as many units are close to F_point[1]; move it in the end of the trigger.
• Additionally, move the Trigger - Turn on (XXX), Unit Group - Add F_Dummy to F_Group (both in the first trigger) and removal of F_point[6] location, hashtable values flush (F 5) in the end of the trigger.
• Use a variable to store (Picked unit) and then reference it though the created variable.
• If you want to filter alive units, make sure you add it in the unit group definition as well, to avoid looping through unnecessary units.
• The spell forces the triggers to turn off by the end of the first instance, while other instances might be running at the same time. Make it useable by many units.
• Many triggers are used, you could only use one looping trigger and create the effects you want in the distances you need.

If it doesn't get a better coding look and doesn't comply with the rules, after your next update, it will be permanently rejected.
Useful Links:

160036-albums4747-picture55861.png

Moderator: Pharaoh_
Date: 10:41, 12th Mar 2012

Review
The use of hashtable is redundant. The spell is still really easy to reproduce and the leaks are removed unsymmetrically.
Unless you perform heavy changes to the spell, it will not get approved.

Rejected once again.
Useful Links:
 
Level 10
Joined
Aug 21, 2010
Messages
316
Your trigger

  • F 2
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Time Stop
    • Actions
      • Set F_Caster = (Triggering unit)
      • Set F_point = (Target point of ability being cast)
      • Unit - Create 1 Stop Time Dummy for (Owner of F_Caster) at F_point facing Default building facing degrees
      • Set F_Dummy = (Last created unit)
      • Unit - Add a 10.00 second Generic expiration timer to F_Dummy
      • Unit Group - Add F_Caster to F_group
      • Unit Group - Pick every unit in F_group and do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in (Units within 500.00 of F_point matching ((Owner of (Matching unit)) Not equal to (Owner of F_Caster))) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is alive) Equal to True
                • Then - Actions
                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Pause (Picked unit)
                  • Animation - Change (Picked unit)'s vertex coloring to (80.00%, 80.00%, 80.00%) with 60.00% transparency
                  • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
                  • Trigger - Turn on F 3 <gen>
                • Else - Actions
              • Custom script: call RemoveLocation(udg_F_point)



  • F 3
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Stop Time Dummy
    • Actions
      • Set F_point = (Position of (Dying unit))
      • Unit Group - Add (Dying unit) to F_deathgroup
      • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Dummy)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Unpause (Picked unit)
          • Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
          • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
          • Custom script: call RemoveLocation(udg_F_point)


Too easy
Spell leaks
10 seconds is a very long time to pause units
AnyVariable Glob or Loc
[var]-[var]-[var]
1.5+(Level*1.5)
2.+(Level*2.) and so on
For example:
It should be Unit - Add a [var]+[var]*[var] second Generic expiration timer to F_Dummy

Or set my_var=[var]+[var]*[var]

Or set my_var=1.5+(Level*1.5)

Unit - Add a [my_var] second Generic expiration timer to F_Dummy

After all how can whatever you want
FACELESS VOID CHRONOSPHERE
 
Last edited:
Level 10
Joined
Aug 21, 2010
Messages
316
i tested it out though, and the time changes based off the level

1: Post Trigger
2: And after updating everything else is almost the same


  • F1
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set F_Hash = (Last created hashtable)
  • F 2
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Time Stop
    • Actions
      • Set F_Caster = (Triggering unit)
      • Custom script: set udg_F_Handle = udg_F_Caster
      • Set F_point = (Target point of ability being cast)
      • Unit - Create 1 Stop Time Dummy for (Owner of F_Caster) at F_point facing Default building facing degrees
      • Set F_Dummy = (Last created unit)
      • Hashtable - Save (Real((Level of Time Stop for F_Caster))) as 1 of (Key F_Handle) in F_Hash
      • Unit - Add a (Load 1 of (Key F_Handle) from F_Hash) second Generic expiration timer to F_Dummy
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
              • Set F_Effect = (Last created special effect)
              • Custom script: call DestroyEffect(udg_F_Effect)
              • Unit - Pause (Picked unit)
              • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
              • Animation - Change (Picked unit)'s vertex coloring to (80.00%, 80.00%, 80.00%) with 40.00% transparency
              • Trigger - Turn on F 3 <gen>
            • Else - Actions
          • Custom script: call RemoveLocation(udg_F_point)
  • F 3
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Stop Time Dummy
    • Actions
      • Set F_point = (Position of (Dying unit))
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Dummy)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Unpause (Picked unit)
          • Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
          • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
          • Custom script: call RemoveLocation(udg_F_point)



This is absolutely unnecessary here
  • Hashtable - Save (Real((Level of Time Stop for F_Caster))) as 1 of (Key F_Handle) in F_Hash
  • Unit - Add a (Load 1 of (Key F_Handle) from F_Hash) second Generic expiration timer to F_Dummy
try this
  • Set my_abilityVar = Time Stop
  • Set my_integerVar = (Level of my_abilityVar for F_Caster)
  • Set my_realVar = (1.50 + ((Real(my_integerVar)) x 1.50))
  • Unit - Add a my_realVar second Generic expiration timer to F_Dummy
or like this
  • Set my_abilityVar = Time Stop
  • Set my_integerVar = (Level of my_abilityVar for F_Caster)
  • Set my_realVar1 = 1.50 // or 2.00 or blabla
  • Set my_realVar2 = 1.50 // here also
  • Set my_realVar3 = (my_realVar1 + ((Real(my_integerVar)) x my_realVar2))
  • Unit - Add a my_realVar3 second Generic expiration timer to F_Dummy
can still in many ways...blabla

this also
  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
  • Set F_Effect = (Last created special effect)
  • Custom script: call DestroyEffect(udg_F_Effect)
Example: First to take out unnecessary function
  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
  • Special Effect - Destroy F_Effect
Example 2: It should look like this
  • Special Effect - Create a special effect attached to the origin of my_unitvar using my_stringvar
  • Special Effect - Destroy F_Effect
Now as regards the location
You did it like this

  • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Picked unit) is alive) Equal to True
        • Then - Actions
          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
          • Set F_Effect = (Last created special effect)
          • Custom script: call DestroyEffect(udg_F_Effect)
          • Unit - Pause (Picked unit)
          • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
          • Animation - Change (Picked unit)'s vertex coloring to (80.00%, 80.00%, 80.00%) with 40.00% transparency
          • Trigger - Turn on F 3 <gen>
        • Else - Actions
      • Custom script: call RemoveLocation(udg_F_point)
and it should be something like
  • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Picked unit) is alive) Equal to True
        • Then - Actions
          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Invisibility\InvisibilityTarget.mdl
          • Set F_Effect = (Last created special effect)
          • Custom script: call DestroyEffect(udg_F_Effect)
          • Unit - Pause (Picked unit)
          • Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
          • Animation - Change (Picked unit)'s vertex coloring to (80.00%, 80.00%, 80.00%) with 40.00% transparency
          • Trigger - Turn on F 3 <gen>
        • Else - Actions
  • Custom script: call RemoveLocation(udg_F_point)
Now as regards the group
  • Unit Group - Pick every unit in (Units within 500.00 of F_point matching (((Matching unit) belongs to an enemy of (Owner of F_Caster)) Equal to True)) and do (Actions)
    • Loop - Actions
fuck it can no longer

How I started a little more and the entire spell will be over
 
Last edited:
Level 3
Joined
Feb 19, 2012
Messages
22
how do i post the trigger? o3o sorry .w. i am like really new "I think it's a lot more explaining What will you doing that if I put the whole spell muhahahaha" i cant really understand you.. sorries, but thanks and stuff and when you corrected my location thing it looks exactly the same as mine
 
Level 10
Joined
Aug 21, 2010
Messages
316
Copy the triggers from the World Editor (Right click on the name of the trigger above the events and click "Copy as Text")

Then paste the triggers between [HIDDEN="I am the trigger"][TRIGGER]PASTE HERE[/TRIGGER][/HIDDEN] tags
 
Well to be blunt the time-stopping Idea has been done many times, (typically) in a simple fashion and there is still yet to be one which is quite to my liking (there's always one or two things I'm always picky about) and the reason this is, is simply because we're all human - so when it comes to spell making ideas most of the time we come up with the same things, or atleast that's how I see it.
 
Top