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

Big shuriken First versión [MUI][Nice idea]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
The hero throws a shuriken abnormally giant, which is composed of small shurikens that damage enemy units in its path.

Level: 1 | 2 | 3 | 4

Damage: 67 | 133 | 200 | 267 per second
Max distance: 1800 units

Mana cost: 0
Cooldown: 0 seconds

Spell originally created by Nob [HStyleV]



  • Big shuriken Variables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Duration of shuriken --------
      • Set BigShuriken_ADuration = 3.00
      • -------- Speed shuriken --------
      • Set BigShuriken_AVelocity = 18.00
      • -------- Change the number of seconds by which the effect of blood results --------
      • Set BigShuriken_AIntervalDuration = 0.25
      • -------- Rotational Speed shuriken --------
      • Set BigShuriken_ASpinVelocity = 12.00
      • -------- Distance between small shurikens --------
      • Set BigShuriken_ASmallShurikensDis = 20.00
      • -------- Area of effect damage --------
      • Set BigShuriken_AAreaOfEffect = 100.00
      • -------- Damage per second and level --------
      • Set BigShuriken_ADamagePerSecond[1] = 67.00
      • Set BigShuriken_ADamagePerSecond[2] = 133.00
      • Set BigShuriken_ADamagePerSecond[3] = 200.00
      • Set BigShuriken_ADamagePerSecond[4] = 267.00
      • -------- I know, I can set the next damage on "Big shuriken Cast" trigger... --------
      • Set BigShuriken_ADamagePerSecond[BigShuriken_InstanceA[1]] = (2.00 x (Real((Level of Big shuriken for BigShuriken_ACaster[BigShuriken_InstanceA[1]]))))
      • -------- Small amount of shurikens [Must be a multiple of 3] --------
      • Set BigShuriken_BSmallShurikens = 6


  • Big shuriken Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Big shuriken
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BigShuriken_InstanceA[0] Equal to 0
        • Then - Actions
          • Trigger - Turn on Big shuriken Loop <gen>
        • Else - Actions
      • Set BigShuriken_InstanceA[0] = (BigShuriken_InstanceA[0] + 1)
      • Set BigShuriken_InstanceA[1] = (BigShuriken_InstanceA[1] + 1)
      • Set BigShuriken_ACaster[BigShuriken_InstanceA[1]] = (Triggering unit)
      • Set BigShuriken_ACenterPoint[BigShuriken_InstanceA[1]] = (Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]])
      • Set BigShuriken_ASpellPoint = (Target point of ability being cast)
      • Set BigShuriken_AAngle[BigShuriken_InstanceA[1]] = (Angle from (Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) to BigShuriken_ASpellPoint)
      • Set BigShuriken_ATime[BigShuriken_InstanceA[1]] = 0.00
      • Set BigShuriken_ADamage[BigShuriken_InstanceA[1]] = (0.03 x BigShuriken_ADamagePerSecond[(Level of Big shuriken for BigShuriken_ACaster[BigShuriken_InstanceA[1]])])
      • Set BigShuriken_AInterval[BigShuriken_InstanceA[1]] = 0.00
      • For each (Integer BigShuriken_InstanceB[1]) from 1 to BigShuriken_BSmallShurikens, do (Actions)
        • Loop - Actions
          • Set BigShuriken_BAngle[BigShuriken_InstanceB[1]] = (120.00 x (Real(BigShuriken_InstanceB[1])))
          • Set BigShuriken_BDistance[BigShuriken_InstanceB[1]] = (BigShuriken_ASmallShurikensDis x (Real(BigShuriken_InstanceB[1])))
          • Unit - Create 1 Shuriken for (Owner of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) at ((Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) offset by BigShuriken_BDistance[BigShuriken_InstanceB[1]] towards BigShuriken_BAngle[BigShuriken_InstanceB[1]] degrees) facing Default building facing degrees
          • Set BigShuriken_BShuriken[((BigShuriken_InstanceB[1] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[1])] = (Last created unit)
          • Unit Group - Add BigShuriken_BShuriken[((BigShuriken_InstanceB[1] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[1])] to BigShuriken_AGroupDebug[BigShuriken_InstanceA[1]]
      • Set BigShuriken_ABoolean[BigShuriken_InstanceA[1]] = True
      • Custom script: call RemoveLocation(udg_BigShuriken_ASpellPoint)


  • Big shuriken Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer BigShuriken_InstanceA[2]) from 1 to BigShuriken_InstanceA[1], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BigShuriken_ABoolean[BigShuriken_InstanceA[2]] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BigShuriken_ATime[BigShuriken_InstanceA[2]] Less than BigShuriken_ADuration
                • Then - Actions
                  • Set BigShuriken_ATime[BigShuriken_InstanceA[2]] = (BigShuriken_ATime[BigShuriken_InstanceA[2]] + 0.03)
                  • Set TempPoint = (BigShuriken_ACenterPoint[BigShuriken_InstanceA[2]] offset by BigShuriken_AVelocity towards BigShuriken_AAngle[BigShuriken_InstanceA[2]] degrees)
                  • Set BigShuriken_ACenterPoint[BigShuriken_InstanceA[2]] = TempPoint
                  • For each (Integer BigShuriken_InstanceB[2]) from 1 to BigShuriken_BSmallShurikens, do (Actions)
                    • Loop - Actions
                      • Set BigShuriken_BAngle[BigShuriken_InstanceB[2]] = (BigShuriken_BAngle[BigShuriken_InstanceB[2]] + BigShuriken_ASpinVelocity)
                      • Unit - Move BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])] instantly to (BigShuriken_ACenterPoint[BigShuriken_InstanceA[2]] offset by BigShuriken_BDistance[BigShuriken_InstanceB[2]] towards BigShuriken_BAngle[BigShuriken_InstanceB[2]] degrees)
                      • Destructible - Pick every destructible within BigShuriken_AAreaOfEffect of (Position of BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])]) and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked destructible) is alive) Equal to True
                            • Then - Actions
                              • Destructible - Kill (Picked destructible)
                            • Else - Actions
                      • Unit Group - Pick every unit in (Units within BigShuriken_AAreaOfEffect of (Position of BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])])) and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked unit) is A structure) Equal to False
                              • ((Picked unit) is Magic Immune) Equal to False
                              • ((Picked unit) belongs to an enemy of (Owner of BigShuriken_ACaster[BigShuriken_InstanceA[2]])) Equal to True
                            • Then - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • BigShuriken_AInterval[BigShuriken_InstanceA[2]] Less than BigShuriken_AIntervalDuration
                                • Then - Actions
                                  • Set BigShuriken_AInterval[BigShuriken_InstanceA[2]] = (BigShuriken_AInterval[BigShuriken_InstanceA[2]] + 0.03)
                                • Else - Actions
                                  • Special Effect - Create a special effect attached to the chest,mount of (Picked unit) using Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                  • Set BigShuriken_AInterval[BigShuriken_InstanceA[2]] = 0.00
                              • Unit - Cause BigShuriken_ACaster[BigShuriken_InstanceA[2]] to damage (Picked unit), dealing BigShuriken_ADamage[BigShuriken_InstanceA[2]] damage of attack type Chaos and damage type Force
                            • Else - Actions
                • Else - Actions
                  • Unit Group - Pick every unit in BigShuriken_AGroupDebug[BigShuriken_InstanceA[2]] and do (Actions)
                    • Loop - Actions
                      • Unit - Explode (Picked unit)
                  • For each (Integer BigShuriken_InstanceB[2]) from 1 to BigShuriken_BSmallShurikens, do (Actions)
                    • Loop - Actions
                      • Unit - Explode BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])]
                      • Set BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])] = No unit
                  • Custom script: call DestroyGroup(udg_BigShuriken_AGroupDebug[udg_BigShuriken_InstanceA[2]])
                  • Set BigShuriken_ABoolean[BigShuriken_InstanceA[2]] = False
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BigShuriken_ABoolean[BigShuriken_InstanceA[2]] Equal to False
                    • Then - Actions
                      • Set BigShuriken_InstanceA[0] = (BigShuriken_InstanceA[0] - 1)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • BigShuriken_InstanceA[0] Equal to 0
                        • Then - Actions
                          • Set BigShuriken_InstanceA[1] = 0
                          • Trigger - Turn off (This trigger)
                        • Else - Actions
                    • Else - Actions
            • Else - Actions



Keywords:
shuriken, spell, much, ninja, caster, owner, mui, dummy, haha
Contents

Gran shuriken (Map)

Reviews
12th Dec 2015 IcemanBo: For too long time as NeedsFix. Rejected. 08:35 GMT, 7th Jun 2011 Bribe: -------- I know, I can set the next damage on "Big shuriken Cast" trigger... -------- Set...

Moderator

M

Moderator

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

08:35 GMT, 7th Jun 2011
Bribe:

  • -------- I know, I can set the next damage on "Big shuriken Cast" trigger... --------
    • Set BigShuriken_ADamagePerSecond[BigShuriken_InstanceA[1]] = (2.00 x (Real((Level of A000 for BigShuriken_ACaster[BigShuriken_InstanceA[1]]))))
As far as I can tell these two lines should just be deleted.

"BigShuriken_InstanceA" should not be an array, it should be split into several variables. This will make it more readable and run faster in-game.

This line leaks a location:

"Set BigShuriken_AAngle[BigShuriken_InstanceA[1]] = (Angle from (Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) to BigShuriken_ASpellPoint)"

This line leaks two locations:

"Unit - Create 1 Shuriken for (Owner of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) at ((Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]]) offset by BigShuriken_BDistance[BigShuriken_InstanceB[1]] towards BigShuriken_BAngle[BigShuriken_InstanceB[1]] degrees) facing Default building facing degrees..."

You never remove this location after you set it:

"Set BigShuriken_ACenterPoint[BigShuriken_InstanceA[1]] = (Position of BigShuriken_ACaster[BigShuriken_InstanceA[1]])"

This line leaks a location:

"Unit - Move BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])] instantly to (BigShuriken_ACenterPoint[BigShuriken_InstanceA[2]] offset by BigShuriken_BDistance[BigShuriken_InstanceB[2]] towards BigShuriken_BAngle[BigShuriken_InstanceB[2]] degrees)"

This line leaks a location:

"Destructable - Pick every destructible within BigShuriken_AAreaOfEffect of (Position of BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])]) and do (Actions)"

This line leaks a location and a group:

"Unit Group - Pick every unit in (Units within BigShuriken_AAreaOfEffect of (Position of BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])])) and do (Actions)"
 
Level 10
Joined
Apr 25, 2009
Messages
296


===========================================

Damage should use a formula that increases with the level... it removes the need for arrays and makes configuration easier...

Example: (40+(50*L) with L being the level of the ability...

  • Unit Group - Pick every unit in (Units within BigShuriken_AAreaOfEffect of (Position of BigShuriken_BShuriken[((BigShuriken_InstanceB[2] x BigShuriken_BSmallShurikens) - BigShuriken_InstanceA[2])])) and do (Actions)
Missing bj_wantDestroyGroup = true. Currently leaks.

Also, set (Picked Unit) to a variable as it'll be more efficient. (Your using it multiple times)

  • (Position of BigShuriken_BShuriken
Leaks a location, set it to a variable and then destroy it.

  • Destructible - Pick every destructible within BigShuriken_AAreaOfEffect of
I'm pretty sure that'll destroy bridges...


  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • ((Picked unit) is A structure) Equal to False
        • ........
          • .......
    • Then
That can be simplified to 'Picked Every unit in Range matching Condition' and use matching unit...

Also, I have no idea what a shuriken is... nor what a shuriken abnormally giant is... is it one of those shrunken heads or another Naruto spell?
 
Top