• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a faction for Warcraft 3 and enter Hive's 19th Techtree Contest: Co-Op Commanders! Click here to enter!
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 21st Texturing Contest: Upgrade is now concluded, time to vote for your favourite set of icons! Click here to vote!

Bladestorm Fix or Improve

Status
Not open for further replies.
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:
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