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

Bladestorm Fix or Improve

Status
Not open for further replies.
Level 14
Joined
Oct 16, 2011
Messages
296
Hi guys. I'm trying to make a Bladestorm for those people who are dreaming of making their unit spin similar to a Blademaster's animation. But I'm having a problem with it. Whenever I set the BS_Speed variable to more than 6.00, the spin looks weird that sometimes the caster reverse-rotates for a short time and the speed doesn't really increase its spin speed. Also, help me improve this spell for those who wants to. Thanks :grin:
  • Bladestorm
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Bladestorm
    • Actions
      • Set BS_Max = (BS_Max + 1)
      • Set BS_Caster[BS_Max] = (Triggering unit)
      • Set BS_Ability = (Ability being cast)
      • Set BS_Duration[BS_Max] = 7.00
      • Set BS_Point = (Position of BS_Caster[BS_Max])
      • Set BS_Angle[BS_Max] = (Facing of BS_Caster[BS_Max])
      • Set BS_Speed = 6.00
      • Animation - Change BS_Caster[BS_Max]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
      • Unit - Create 1 Bladestorm for (Owner of BS_Caster[BS_Max]) at BS_Point facing BS_Angle[BS_Max] degrees
      • Set BS_Dummy[BS_Max] = (Last created unit)
      • Animation - Change BS_Dummy[BS_Max]'s animation speed to 200.00% of its original speed
      • Animation - Play BS_Dummy[BS_Max]'s attack animation
      • Unit - Add Bladestorm (Effect) to BS_Dummy[BS_Max]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BS_Max Equal to 1
        • Then - Actions
          • Trigger - Turn on Bladestorm Loop <gen>
        • Else - Actions
      • Custom script: call RemoveLocation(udg_BS_Point)
  • Bladestorm Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer BS_Loop) from 1 to BS_Max, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BS_Angle[BS_Loop] Greater than or equal to 360.00
            • Then - Actions
              • Set BS_Angle[BS_Loop] = (BS_Angle[BS_Loop] - (360.00 - BS_Speed))
            • Else - Actions
              • Set BS_Angle[BS_Loop] = (BS_Angle[BS_Loop] + BS_Speed)
          • Set BS_Point = (Position of BS_Caster[BS_Loop])
          • Unit - Move BS_Dummy[BS_Loop] instantly to BS_Point, facing BS_Angle[BS_Loop] degrees
          • Set BS_Duration[BS_Loop] = (BS_Duration[BS_Loop] - 0.02)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BS_Duration[BS_Loop] Less than or equal to 6.90
            • Then - Actions
              • Animation - Change BS_Dummy[BS_Loop]'s animation speed to 0.00% of its original speed
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BS_Duration[BS_Loop] Less than or equal to 0.00
            • Then - Actions
              • Animation - Change BS_Caster[BS_Loop]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
              • Unit - Kill BS_Dummy[BS_Loop]
              • Set BS_Caster[BS_Loop] = BS_Caster[BS_Max]
              • Set BS_Caster[BS_Max] = No unit
              • Set BS_Dummy[BS_Loop] = BS_Dummy[BS_Max]
              • Set BS_Dummy[BS_Max] = No unit
              • Set BS_Duration[BS_Loop] = BS_Duration[BS_Max]
              • Set BS_Angle[BS_Loop] = BS_Angle[BS_Max]
              • Set BS_Max = (BS_Max - 1)
              • Set BS_Loop = (BS_Loop - 1)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_BS_Point)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BS_Max Equal to 0
            • Then - Actions
              • Trigger - Turn off (This trigger)
            • Else - Actions
This is the map of the spell:
View attachment 148399
 
Last edited:
Level 14
Joined
Oct 16, 2011
Messages
296
The spin looks fine up to 6.00 speed.
There's a hardcoded limit to how fast a unit can change its facing angle. The only way to my knowledge to bypass this limit is remove and recreate the unit. But I understand that's painful.
I think it's not good to create a unit every 0.02/0.03 secs.

You may try to use the action Animation - Change Unit Turn Speed. That should help if you set it to 0.10 for example.
Tried doing it, still the same tho :ogre_rage:
 
Status
Not open for further replies.
Top