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

Time Walk 1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Creates a hole in space-time continuum so that you can quickly come to a point. But the space-time continuum only allows, that only one unit at the same time can be in it. Slows movespeed by 30/40/50% and attackspeed by 10/20/30%. Deals 60/100/140 damage.

Keywords:
time, walk, timewalk, move, blue, slow
Contents

Noch eine WARCRAFT-III-Karte (Map)

Reviews
12th Dec 2015 IcemanBo: Too long time as NeedsFix. Rejected. 20:00, 18th Dec 2010 The_Reborn_Devil: My review. Status: Rejected until updated Rating: N/A PM me or another mod once you've updated this to get it reviewed again. Have a...

Moderator

M

Moderator

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

20:00, 18th Dec 2010
The_Reborn_Devil:

My review.


Status: Rejected until updated
Rating: N/A

PM me or another mod once you've updated this to get it reviewed again. Have a nice day!
 
Level 5
Joined
Apr 17, 2010
Messages
124
You should recycle your index because it can't go higher than 8190 (or something like that) so after that, your spell will stop working
^ and:
The movement for the unit in cast is unappealing. Marcikat, I know your a newer spellmaker, so your learning.

Altogether, you need a cleaner and more efficient movement system. Also, it doesn't look MUI, but it probably is.

After looking at your triggering, I noticed right away you use the remove location function on your array that goes up by 1 each cast. Why exactly do you +1 it each time if you have it removed after usage, I just don't understand. So under final review, :
Eye candy(Appeal) : 3/5
Efficiency : 2/5
Is MUI : 5/5

So, 3/5 + 2/5 + 5/5 = 10/15 = 2/5

Clean your triggering and try recycling, and I'll change my vote.
 
Level 4
Joined
Sep 10, 2010
Messages
21
OK thank you...
I talked with a Spellmaker and he/she/(it xD) said: You also have to remove your Locations when you have an Indexsystem... you always upload new spells [...]. (I deleted all, because they were shit (he didn´t say that)) I don´t have to remove my locations when the Index says +1 or do I need to remove them, but when I do it I must not use an
Indexsystem?

I will edit the Unitgroup leaks
... and say me another movementsystem... what´s the bad shit with my movementsystem?
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
You forgot again to post the triggers.


  • Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Time Walk
    • Actions
      • Custom script: call RemoveLocation(udg_Point_Caster_Time_Walk[udg_Array_Variable_Time_Walk])
      • Custom script: call RemoveLocation(udg_Point_Target_Time_Walk[udg_Array_Variable_Time_Walk])
      • Animation - Change Caster_Time_Walk[Array_Variable_Time_Walk]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
      • Unit - Turn collision for Caster_Time_Walk[Array_Variable_Time_Walk] On
      • Unit - Turn collision for Picked_Unit_Time_Walk[Array_Variable_Time_Walk] On
      • Unit - Make Caster_Time_Walk[Array_Variable_Time_Walk] Vulnerable
      • Unit - Unpause Caster_Time_Walk[Array_Variable_Time_Walk]
      • Set Array_Variable_Time_Walk = (Array_Variable_Time_Walk + 1)
      • Set Caster_Time_Walk[Array_Variable_Time_Walk] = (Triggering unit)
      • Set Point_Caster_Time_Walk[Array_Variable_Time_Walk] = (Position of Caster_Time_Walk[Array_Variable_Time_Walk])
      • Set Point_Target_Time_Walk[Array_Variable_Time_Walk] = (Target point of ability being cast)
      • Set Angle_Between_Points_Time_Walk[Array_Variable_Time_Walk] = (Angle from Point_Caster_Time_Walk[Array_Variable_Time_Walk] to Point_Target_Time_Walk[Array_Variable_Time_Walk])
      • Unit - Turn collision for Caster_Time_Walk[Array_Variable_Time_Walk] Off
      • Unit - Make Caster_Time_Walk[Array_Variable_Time_Walk] Invulnerable
      • Animation - Change Caster_Time_Walk[Array_Variable_Time_Walk]'s vertex coloring to (0.00%, 0.00%, 0.00%) with 0.00% transparency
      • Unit - Pause Caster_Time_Walk[Array_Variable_Time_Walk]
      • Trigger - Turn on Loop <gen>
  • Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • Set Point_Caster_Time_Walk[Array_Variable_Time_Walk] = (Position of Caster_Time_Walk[Array_Variable_Time_Walk])
      • -------- Moving the dummy --------
      • Special Effect - Create a special effect at Point_Caster_Time_Walk[Array_Variable_Time_Walk] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
      • Set Temp_Point_Time_Walk[Array_Variable_Time_Walk] = (Point_Caster_Time_Walk[Array_Variable_Time_Walk] offset by 30.00 towards Angle_Between_Points_Time_Walk[Array_Variable_Time_Walk] degrees)
      • Unit - Move Caster_Time_Walk[Array_Variable_Time_Walk] instantly to Temp_Point_Time_Walk[Array_Variable_Time_Walk]
      • Set Region_Moving_Enemy_Time_Walk[Array_Variable_Time_Walk] = (Region centered at Point_Caster_Time_Walk[Array_Variable_Time_Walk] with size (125.00, 125.00))
      • Set Group_Time_Walk[Array_Variable_Time_Walk] = (Units in Region_Moving_Enemy_Time_Walk[Array_Variable_Time_Walk])
      • Unit Group - Pick every unit in Group_Time_Walk[Array_Variable_Time_Walk] and do (Actions)
        • Loop - Actions
          • Set Picked_Unit_Time_Walk[Array_Variable_Time_Walk] = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Picked_Unit_Time_Walk[Array_Variable_Time_Walk] is A structure) Equal to False
            • Then - Actions
              • Unit - Turn collision for Picked_Unit_Time_Walk[Array_Variable_Time_Walk] Off
              • Unit - Move Picked_Unit_Time_Walk[Array_Variable_Time_Walk] instantly to Temp_Point_Time_Walk[Array_Variable_Time_Walk]
              • Custom script: call DestroyGroup(udg_Group_Time_Walk[udg_Array_Variable_Time_Walk])
            • Else - Actions
      • Destructible - Pick every destructible in Region_Moving_Enemy_Time_Walk[Array_Variable_Time_Walk] and do (Actions)
        • Loop - Actions
          • Destructible - Kill (Picked destructible)
      • Custom script: call RemoveLocation(udg_Temp_Point_Time_Walk[udg_Array_Variable_Time_Walk])
      • Set Distance_Points_Time_Walk[Array_Variable_Time_Walk] = (Distance between Point_Caster_Time_Walk[Array_Variable_Time_Walk] and Point_Target_Time_Walk[Array_Variable_Time_Walk])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Distance_Points_Time_Walk[Array_Variable_Time_Walk] Less than 15.00
        • Then - Actions
          • Set Region_Moving_Enemy_Time_Walk[Array_Variable_Time_Walk] = (Region centered at Point_Caster_Time_Walk[Array_Variable_Time_Walk] with size (300.00, 300.00))
          • Destructible - Pick every destructible in Region_Moving_Enemy_Time_Walk[Array_Variable_Time_Walk] and do (Actions)
            • Loop - Actions
              • Destructible - Kill (Picked destructible)
          • Unit - Create 1 Time Walk Dummy for (Owner of Caster_Time_Walk[Array_Variable_Time_Walk]) at Point_Caster_Time_Walk[Array_Variable_Time_Walk] facing (Facing of Caster_Time_Walk[Array_Variable_Time_Walk]) degrees
          • Set Dummy_Time_Walk[Array_Variable_Time_Walk] = (Last created unit)
          • Unit - Set level of Time Walk Effect for Dummy_Time_Walk[Array_Variable_Time_Walk] to (Level of Time Walk for Caster_Time_Walk[Array_Variable_Time_Walk])
          • Unit - Order Dummy_Time_Walk[Array_Variable_Time_Walk] to Human Mountain King - Thunder Clap
          • Custom script: call RemoveLocation(udg_Point_Caster_Time_Walk[udg_Array_Variable_Time_Walk])
          • Custom script: call RemoveLocation(udg_Point_Target_Time_Walk[udg_Array_Variable_Time_Walk])
          • Animation - Change Caster_Time_Walk[Array_Variable_Time_Walk]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
          • Unit - Turn collision for Caster_Time_Walk[Array_Variable_Time_Walk] On
          • Unit - Turn collision for Picked_Unit_Time_Walk[Array_Variable_Time_Walk] On
          • Unit - Make Caster_Time_Walk[Array_Variable_Time_Walk] Vulnerable
          • Unit - Unpause Caster_Time_Walk[Array_Variable_Time_Walk]
          • Unit - Remove Dummy_Time_Walk[Array_Variable_Time_Walk] from the game
          • Trigger - Turn off (This trigger)
        • Else - Actions


A little review as I think you haven't been reviewed very well yet.

Firstly, name your triggers better. Cast and Loop. Bad names, should have some sort of prefix like TW Cast (Time Walk = TW) or Time Walk Cast. Simple.

This is not even MUI, it cancels itself when every instance ends. So basic when a unit casts this and another a second after, the first unit will be stuck forever.

Some links you'll need about MUI

Link 1 Link 2 Link 3 Link 4

Alright let's do this.

Why you remove those locations? Useless why not just remove them when the instance ends? (When you have a proper end)
There are also a bunch of useless actions which turns the unit normal again but it already is normal isn't it, as you've put it in the end already.

Better array index system is needed. Please you have a limit of 8190 instances TOTAL.

Why you even store the caster and target point? You just need the angle?

You leak a special effect. 50 Times each second.

Why you even use a region? You just do Units in range with matching conditions. And there it should be your conditions like structure == false and magic immune == false and dead == false. You also leak a region. Often.

So when a units is hit, it's moved along the caster? You know that you are destroying the group after one unit. And that unit's collision will be off for the rest of the game.

Temporary points doesn't have to be arrayed neither does it need prefixes (if you aren't playing with movelocation which you aren't). Name it TempLoc or something alike.

Destroys all destructables not only trees.

The distance variable. Please don't make it call the function again each and every time its runned. Just set it - your speed which in this case is 30.

I guess it's fine with a dummy variable but it doesn't have to be arrayed as it's used instantly (same with the temporary location).

You really should look at other people's spells before uploading a new one. Maybe even read the links I gave you which will teach you some proper ways of MUI.

Enjoy.
 
Last edited:
Level 5
Joined
Apr 17, 2010
Messages
124
This is not even MUI, it cancels itself when every instance ends. So basic when a unit casts this and another a second after, the second unit will be stuck forever.

I didn't test it myself, but when I read this I saw the code that would do this.


@Marcikat, this is why you need a movement system. Instead of just clashing the movement, slowing, and effects together, try to seperate them.

Also, as baassee said, your trigger names need to be related to the spell. If someone were to use your spell, chances are they'd have other triggers, and the words 'Cast',and 'Loop' don't adequately tell anyone that those triggers are your spells' triggers.

Since this isn't MUI, I've to change my vote.
Eye candy(Appeal) : 3/5
Efficiency : 2/5
Is MUI : 0/5

So, 3/5 + 2/5 + 0/5 = 5/15 = 1.2/5 = 1/5

~~DooM
 
Last edited:
Level 22
Joined
Dec 31, 2006
Messages
2,216
Moderator Review:

This is not MUI and you must also recycle your indexes. Arrays have a max size of 8192. Also, the very first time the spell is used you're removing locations that are null (Double free).
 
Top