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

Stringed Shuriken v1.2

  • Like
Reactions: Losam
I made this spell for the Zephyr Contest #9: Assassination.

The Assassin hurls a shuriken that is dipped with poison and is tied to a string that is only visible when it gets too close to the target. It will stick to the target causing initial damage and starts to damage over time. She will drag the unit forcefully. It will stun the unit if the shuriken hits target from its back. If the spell is casted at night, she will become permanently invisible throughout the duration, also, the invisibility will wear off once it hits daytime.

Level 1 - 2s dagger duration, 5s hook duration, 125 initial damage, 20 dps, 1s backstab-stun
Level 2 - 3s dagger duration, 6s hook duration, 150 initial damage, 30 dps, 2s backstab-stun
Level 3 - 4s dagger duration, 7s hook duration, 175 initial damage, 40 dps, 3s backstab-stun
Level 4 - 5s dagger duration, 8s hook duration, 200 initial damage, 50 dps, 4s backstab-stun


  • SS Setup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Custom script: set udg_SS_Hashtable = InitHashtable()
      • -------- This is the formula that I use for all type of data (mostly Reals and Integers) --------
      • -------- Base + (DataPerLevel * Level) --------
      • -------- Base = 100 --------
      • -------- DataPerLevel = 300 --------
      • -------- Level = 4 --------
      • -------- 100 + (300 * 4) = 1300 --------
      • -------- At Level 4, I will have a data of 1300, you can plan this value --------
      • -------- LEVEL CONFIGURATION --------
      • -------- FlyDuration is data which sets your duration of dagger to travel to target --------
      • -------- HookDuration is data which sets the duration of hook after the dagger hits the Target --------
      • -------- ImpactDamage is data which sets the initial damage upon the shuriken strikes the target --------
      • -------- PoisonDamage is data which sets damage per second (actually it's per 0.03 second but the trigger already modify it for you) --------
      • -------- CONSTANTS CONFIGURATION --------
      • -------- DaggerVisibleRange is data which sets what is the minimum range of the dagger from the target to actually see the dagger --------
      • -------- LightningAlphaValueSetup is fade color value for Lightning to make it invisible to enemy unit but will be visible once the dagger is close to the target --------
      • -------- MinimumPullRange is data which sets the minimum range of the target from the caster --------
      • -------- DaggerSpeed is speed of the dagger per second --------
      • -------- HookSpeed is the speed of dragging unit to the caster --------
      • -------- Interval is a data which set the interval looping the trigger (SS Loop) and controls many other thing such as DaggerSpeed and HookSpeed --------
      • -------- DummyShuriken is Unit type variable which sets the model of the Shuriken --------
      • -------- StringedShuriken is a data which sets the actual ability --------
      • -------- StunAbility is a data which sets the Stun Ability --------
      • -------- PoisonAbility is a data which sets the Poison Ability (a buff from Unholy Frenzy) --------
      • -------- LightningName is a data which sets the name of your chosen Lightning, in this ability I used an imported Lightning (WHIT) --------
      • -------- Credits to Erkki for re-texture the Lightning to White color --------
      • -------- ImpactPathSFX is a data which sets the SFX creation for initial damage --------
      • -------- PoisonBuff is a data which sets the buff of the Poison ability --------
      • -------- DummyCaster is a data which sets the dummy unit that is used to cast Stun and Poison --------
      • -------- CONFIGURABLES --------
      • Set SS_FlyDurationPerLevel = 1.00
      • Set SS_BaseFlyDuration = 1.00
      • Set SS_HookDurationPerLevel = 1.00
      • Set SS_BaseHookDuration = 4.00
      • Set SS_ImpactDamagePerLevel = 25.00
      • Set SS_BaseImpactDamage = 100.00
      • Set SS_PoisonDamagePerLevel = 10.00
      • Set SS_BasePoisonDamage = 10.00
      • Set SS_BasePoisonDamage = 10.00
      • Set SS_ShurikenVisibleRange = 700.00
      • Set SS_LightningAlphaValueSetup = 0.25
      • Set SS_MinimumPullRange = 150.00
      • Set SS_ShurikenSpeed = 700.00
      • Set SS_HookSpeed = 400.00
      • Set SS_Interval = 0.03
      • Set SS_DummyShuriken = Dummy Shuriken
      • Set StringedShuriken = Stringed Shuriken
      • Set SS_StunAbility = Stun (Stringed Shuriken)
      • Set SS_PoisonAbility = Poison (Stringed Shuriken)
      • Set SS_LightningName = WHIT
      • Set SS_ImpactPathSFX = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
      • Set SS_PoisonBuff = Poisoned (Stringed Shuriken)
      • Set SS_DummyCaster = Dummy Caster
      • -------- END OF CONFIGURABLES --------
      • Set SS_HookSpeedPerInterval = (SS_HookSpeed x SS_Interval)
      • Set SS_ShurikenSpeedPerInterval = (SS_ShurikenSpeed x SS_Interval)
      • Custom script: set udg_SS_DummyID = udg_SS_DummyCaster
      • Custom script: set udg_SS_Dummy = CreateUnit(Player (15), udg_SS_DummyID, 0.00,0.00,0.00)
      • Trigger - Add to SS Loop <gen> the event (Time - Every SS_Interval seconds of game time)
  • SS Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to StringedShuriken
    • Actions
      • Custom script: local real x1
      • Custom script: local real x2
      • Custom script: local real y1
      • Custom script: local real y2
      • Custom script: local real z1
      • Custom script: local real z2
      • Set SS_Caster = (Triggering unit)
      • Set TempPlayer = (Triggering player)
      • Set TempLoc = (Position of SS_Caster)
      • Set SS_Target = (Target unit of ability being cast)
      • Set TempLoc2 = (Position of SS_Target)
      • Set TempReal = (Angle from TempLoc to TempLoc2)
      • Set SS_AbilityLevel = (Level of StringedShuriken for SS_Caster)
      • Set SS_FlyDuration = (SS_BaseFlyDuration + (SS_FlyDurationPerLevel x (Real(SS_AbilityLevel))))
      • Set SS_HookDuration = (SS_BaseHookDuration + (SS_HookDurationPerLevel x (Real(SS_AbilityLevel))))
      • Set SS_ImpactDamage = (SS_BaseImpactDamage + (SS_ImpactDamagePerLevel x (Real(SS_AbilityLevel))))
      • Set SS_PoisonDamage = (SS_BasePoisonDamage + (SS_PoisonDamagePerLevel x (Real(SS_AbilityLevel))))
      • Set SS_PoisonDamagePerInterval = (SS_PoisonDamage x SS_Interval)
      • Set SS_BooleanHit = False
      • Unit - Create 1 SS_DummyShuriken for TempPlayer at TempLoc facing TempReal degrees
      • Set TempUnit = (Last created unit)
      • Unit Group - Add TempUnit to SS_Group
      • Custom script: set x1 = GetUnitX(udg_SS_Caster)
      • Custom script: set y1 = GetUnitY(udg_SS_Caster)
      • Custom script: set x2 = GetUnitX(udg_TempUnit)
      • Custom script: set y2 = GetUnitY(udg_TempUnit)
      • Custom script: set z2 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_TempUnit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (SS_Caster is A ground unit) Equal to True
        • Then - Actions
          • Custom script: set z1 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_TempUnit)
        • Else - Actions
          • Custom script: set z1 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_SS_Caster)
      • Custom script: set udg_SS_Lightning = AddLightningEx(udg_SS_LightningName, true, x1, y1, z1, x2, y2, z2)
      • Set SS_LightningAlphaValue = 0.00
      • Set TempReal = 100.00
      • Custom script: if IsPlayerAlly(GetLocalPlayer(), udg_TempPlayer) then
      • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
      • Set TempReal = 0.00
      • Custom script: endif
      • Custom script: call SetLightningColor(udg_SS_Lightning, 1.00, 1.00, 1.00, udg_SS_LightningAlphaValue)
      • Animation - Change TempUnit's vertex coloring to (100.00%, 100.00%, 100.00%) with TempReal% transparency
      • Custom script: set udg_SS_Key = GetHandleId(udg_TempUnit)
      • Hashtable - Save Handle OfSS_Lightning as 0 of SS_Key in SS_Hashtable
      • Hashtable - Save Handle OfSS_Caster as 1 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_FlyDuration as 2 of SS_Key in SS_Hashtable
      • Hashtable - Save Handle OfSS_Target as 3 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_BooleanHit as 4 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_HookDuration as 5 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_ImpactDamage as 6 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_AbilityLevel as 7 of SS_Key in SS_Hashtable
      • Hashtable - Save SS_PoisonDamagePerInterval as 8 of SS_Key in SS_Hashtable
      • Trigger - Turn on SS Loop <gen>
      • Custom script: call RemoveLocation(udg_TempLoc)
      • Custom script: call RemoveLocation(udg_TempLoc2)
  • SS Loop
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (SS_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in SS_Group and do (Actions)
            • Loop - Actions
              • Custom script: local real x1
              • Custom script: local real x2
              • Custom script: local real y1
              • Custom script: local real y2
              • Custom script: local real z1
              • Custom script: local real z2
              • Set TempUnit = (Picked unit)
              • Custom script: set udg_SS_Key = GetHandleId(udg_TempUnit)
              • Set SS_Caster = (Load 1 of SS_Key in SS_Hashtable)
              • Set SS_FlyDuration = (Load 2 of SS_Key from SS_Hashtable)
              • Set SS_Target = (Load 3 of SS_Key in SS_Hashtable)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SS_FlyDuration Greater than 0.00
                  • (SS_Caster is alive) Equal to True
                  • (SS_Target is alive) Equal to True
                • Then - Actions
                  • Set SS_Lightning = (Load 0 of SS_Key in SS_Hashtable)
                  • Set TempLoc = (Position of TempUnit)
                  • Set TempLoc2 = (Position of SS_Caster)
                  • Set TempLoc3 = (Position of SS_Target)
                  • Set TempReal = (Distance between TempLoc and TempLoc3)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • TempReal Less than or equal to SS_ShurikenVisibleRange
                    • Then - Actions
                      • Animation - Change TempUnit's vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                      • Custom script: call SetLightningColor(udg_SS_Lightning, 1.00, 1.00, 1.00, 1.00)
                    • Else - Actions
                  • Set SS_BooleanHit = (Load 4 of SS_Key from SS_Hashtable)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_BooleanHit Equal to False
                      • TempReal Less than or equal to 50.00
                    • Then - Actions
                      • Set SS_AbilityLevel = (Load 7 of SS_Key from SS_Hashtable)
                      • Set SS_HookDuration = (Load 5 of SS_Key from SS_Hashtable)
                      • Set SS_ImpactDamage = (Load 6 of SS_Key from SS_Hashtable)
                      • Set TempReal = (Facing of TempUnit)
                      • Set TempReal2 = (Facing of SS_Target)
                      • Set TempReal3 = (TempReal - TempReal2)
                      • Unit - Cause SS_Caster to damage SS_Target, dealing SS_ImpactDamage damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the chest of SS_Target using SS_ImpactPathSFX
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Set level of SS_PoisonAbility for SS_Dummy to SS_AbilityLevel
                      • Unit - Move SS_Dummy instantly to TempLoc3
                      • Unit - Order SS_Dummy to Undead Necromancer - Unholy Frenzy SS_Target
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • TempReal3 Less than or equal to 45.00
                          • TempReal3 Greater than or equal to -45.00
                        • Then - Actions
                          • Unit - Set level of SS_StunAbility for SS_Dummy to SS_AbilityLevel
                          • Unit - Order SS_Dummy to Human Mountain King - Storm Bolt SS_Target
                        • Else - Actions
                      • Set SS_BooleanHit = True
                      • Hashtable - Save SS_BooleanHit as 4 of SS_Key in SS_Hashtable
                      • Hashtable - Save SS_HookDuration as 2 of SS_Key in SS_Hashtable
                      • Custom script: set udg_SS_Key = GetHandleId(udg_SS_Target)
                      • Set SS_StackCount = (Load 8 of SS_Key from SS_Hashtable)
                      • Set SS_StackCount = (SS_StackCount + 1)
                      • Hashtable - Save SS_StackCount as 8 of SS_Key in SS_Hashtable
                    • Else - Actions
                      • Set TempReal = (Angle from TempLoc to TempLoc3)
                      • Custom script: set x1 = GetUnitX(udg_SS_Caster)
                      • Custom script: set y1 = GetUnitY(udg_SS_Caster)
                      • Custom script: set x2 = GetUnitX(udg_TempUnit)
                      • Custom script: set y2 = GetUnitY(udg_TempUnit)
                      • Custom script: set z2 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_TempUnit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (SS_Caster is A ground unit) Equal to True
                        • Then - Actions
                          • Custom script: set z1 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_TempUnit)
                        • Else - Actions
                          • Custom script: set z1 = GetLocationZ(udg_TempLoc) + GetUnitFlyHeight(udg_SS_Caster)
                      • Unit - Make TempUnit face TempReal over 0.00 seconds
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SS_BooleanHit Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (SS_Target has buff SS_PoisonBuff) Equal to True
                            • Then - Actions
                              • Set SS_PoisonDamagePerInterval = (Load 8 of SS_Key from SS_Hashtable)
                              • Set TempReal2 = (Angle from TempLoc3 to TempLoc2)
                              • Set TempReal3 = (Distance between TempLoc2 and TempLoc3)
                              • Unit - Cause SS_Caster to damage SS_Target, dealing SS_PoisonDamagePerInterval damage of attack type Spells and damage type Normal
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • TempReal3 Greater than SS_MinimumPullRange
                                • Then - Actions
                                  • Custom script: call SetUnitX(udg_SS_Target, GetUnitX(udg_SS_Target) + udg_SS_HookSpeedPerInterval * Cos(udg_TempReal2 * bj_DEGTORAD))
                                  • Custom script: call SetUnitY(udg_SS_Target, GetUnitY(udg_SS_Target) + udg_SS_HookSpeedPerInterval * Sin(udg_TempReal2 * bj_DEGTORAD))
                                • Else - Actions
                              • Custom script: call SetUnitX(udg_TempUnit, GetUnitX(udg_SS_Target))
                              • Custom script: call SetUnitY(udg_TempUnit, GetUnitY(udg_SS_Target))
                            • Else - Actions
                        • Else - Actions
                          • Custom script: call SetUnitX(udg_TempUnit, x2 + udg_SS_ShurikenSpeedPerInterval * Cos(udg_TempReal * bj_DEGTORAD))
                          • Custom script: call SetUnitY(udg_TempUnit, y2 + udg_SS_ShurikenSpeedPerInterval * Sin(udg_TempReal * bj_DEGTORAD))
                      • Custom script: call MoveLightningEx(udg_SS_Lightning, true, x1, y1, z1, x2, y2, z2)
                      • Hashtable - Save (SS_FlyDuration - SS_Interval) as 2 of SS_Key in SS_Hashtable
                      • Custom script: call RemoveLocation(udg_TempLoc)
                      • Custom script: call RemoveLocation(udg_TempLoc2)
                      • Custom script: call RemoveLocation(udg_TempLoc3)
                • Else - Actions
                  • Set SS_Lightning = (Load 0 of SS_Key in SS_Hashtable)
                  • Lightning - Destroy SS_Lightning
                  • Unit - Kill TempUnit
                  • Unit Group - Remove TempUnit from SS_Group
                  • Hashtable - Clear all child hashtables of child SS_Key in SS_Hashtable
                  • Custom script: set udg_SS_Key = GetHandleId(udg_SS_Target)
                  • Set SS_StackCount = (Load 8 of SS_Key from SS_Hashtable)
                  • Set SS_StackCount = (SS_StackCount - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SS_StackCount Greater than 0
                    • Then - Actions
                      • Hashtable - Save SS_StackCount as 8 of SS_Key in SS_Hashtable
                    • Else - Actions
                      • Unit - Remove SS_PoisonBuff buff from SS_Target
                      • Hashtable - Clear all child hashtables of child SS_Key in SS_Hashtable
  • SS DayChange
    • Events
      • Game - The in-game time of day becomes Greater than 6.00
    • Conditions
    • Actions
      • Unit Group - Pick every unit in SS_Group and do (Actions)
        • Loop - Actions
          • Set TempUnit = (Picked unit)
          • Custom script: set udg_SS_Key = GetHandleId(udg_TempUnit)
          • Set SS_Caster = (Load 1 of SS_Key in SS_Hashtable)
          • Unit - Remove SS_Invisbility from SS_Caster
v1.0
- Initial release
- Re-uploaded to fix some tooltips and remove some Dagger text

v1.1
- Optimized the GetLocalPlayer function
- Fixed stacking issue (now allow 2 units cast at one enemy at a time each with unique duration)
- Fixed stun tooltips per level

v1.2
- Edited some tooltips
- Added a mechanic to the spell - permanent invisibility


WaterKnight --- Local variable
Erkki2 --- White Lightning re-texture
zv27 --- For changing (Triggering player) with TempPlayer variable
Magtheridon96 --- GetLocalPlayer function


Keywords:
stringed, shuriken, zephyr, defskull, assassin, assassination, drag, hook, poison, hashtable, ninja, permanent, invisibility, daytime.
Contents

Just another Warcraft III map (Map)

Reviews
01:06, 22nd Jul 2012 Magtheridon96: Suggestions given here: http://www.hiveworkshop.com/forums/2186609-post6.html http://www.hiveworkshop.com/forums/2187283-post9.html This a pretty nice spell c: edit Approved. There's absolutely no...

Moderator

M

Moderator

01:06, 22nd Jul 2012
Magtheridon96:

Suggestions given here:
http://www.hiveworkshop.com/forums/2186609-post6.html
http://www.hiveworkshop.com/forums/2187283-post9.html

This a pretty nice spell c:

edit
Approved.
There's absolutely no reason for me to just wait for the end of the contest to approve these.
This spell is adequate, but I would still recommend applying the suggested changes.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Reserved.

Report any bugs (or leaks) you found, thank you.

Also, as you can see from the data or triggers from the test map, perhaps some of them contains dagger word, where it should be shuriken.

At first, I thought I wanna make it as Dagger model that I used The Warden's missile as dummy unit but then I realize it was making so much noises that I decided to change the dummy unit model to something else, a shuriken-like model.

The spell originally named Stringed Dagger and was turned into Stringed Shuriken.

If there are mistakes in texts/variables of "Dagger" word, please inform me as I will change it.
 
Level 10
Joined
Aug 21, 2010
Messages
316
  • Unit - Create 1 SS_DummyShuriken for (Triggering player) at TempLoc facing TempReal degrees
should be

  • Unit - Create 1 SS_DummyShuriken for (TempPlayer) at TempLoc facing TempReal degrees
 
Level 31
Joined
Jun 27, 2008
Messages
2,555
Great spell for melee heroes. It remind me of Deathknight's spell which pull target towards oneself in WoW. It is also good as enemy may avoid it by running away from missle. Spell itself is not full of special effects that swarm the screen like in most of custom spells, I like it.
 
  • Player Group - Pick every player in (All players) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Picked player) is an ally of TempPlayer) Equal to True
        • Then - Actions
          • Set TempPlayer = (Picked player)
          • Custom script: if GetLocalPlayer() == udg_TempPlayer then
          • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
          • Set TempReal = 0.00
          • Custom script: endif
        • Else - Actions
Too much complexity and buggy in games with complex alliance. (The friend of my enemy can be friend)

Can be simplified:

  • Custom script: if IsPlayerAlly(GetLocalPlayer(), udg_TempPlayer) then
  • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
  • Set TempReal = 0.00
  • Custom script: endif
edit
@Radamantus: (All Players) doesn't leak.
 
Last edited:
Level 33
Joined
Mar 27, 2008
Messages
8,035
  • Unit - Create 1 SS_DummyShuriken for (Triggering player) at TempLoc facing TempReal degrees
should be

  • Unit - Create 1 SS_DummyShuriken for (TempPlayer) at TempLoc facing TempReal degrees
I'll edit it later, thanks for that :)

Great spell for melee heroes. It remind me of Deathknight's spell which pull target towards oneself in WoW. It is also good as enemy may avoid it by running away from missle. Spell itself is not full of special effects that swarm the screen like in most of custom spells, I like it.
Thanks :)

You also posted the spell ahaha

also you leak a player group..
1st make a variable for it then use this script call DestroyForce(udg_Players)

Also,why didnt you make it in JASS???due to a lot of scripts
I just wanted to say about (All players) but mag has said it.

  • Player Group - Pick every player in (All players) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Picked player) is an ally of TempPlayer) Equal to True
        • Then - Actions
          • Set TempPlayer = (Picked player)
          • Custom script: if GetLocalPlayer() == udg_TempPlayer then
          • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
          • Set TempReal = 0.00
          • Custom script: endif
        • Else - Actions
Too much complexity and buggy in games with complex alliance. (The friend of my enemy can be friend)

Can be simplified:

  • Custom script: if IsPlayerAlly(GetLocalPlayer(), udg_TempPlayer) then
  • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
  • Set TempReal = 0.00
  • Custom script: endif
edit
@Radamantus: (All Players) doesn't leak.

I'll fix it later.
How about the triggers itself ?
What can you say about them ?

So that is why you wanted a white lightning. Looks like a spider web more than a stringed shuriken.
It's better than nothing.
 
Nothing really major:

  • Unit - Create 1 SS_DummyShuriken for (Triggering player) at TempLoc facing TempReal degrees
You could've used the variable instead of (Triggering player).

Also, when you're setting that boolean and using it in an if block, well, you could've just loaded the variable directly in the if statement rather than setting it in a boolean and using that.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
You mean I should load directly in the Condition block using Hashtable load ?

Well if you say so, I should do that method for all types of loading data from hashtable and use it, right ?

Like if in the damage part, I should load directly the damage in the function Unit - Damage Target in damage parameter.

Really ?
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
  • Custom script: if IsPlayerAlly(GetLocalPlayer(), udg_TempPlayer) then
  • Set SS_LightningAlphaValue = SS_LightningAlphaValueSetup
  • Set TempReal = 0.00
  • Custom script: endif
Fixed

  • Unit - Create 1 SS_DummyShuriken for (Triggering player) at TempLoc facing TempReal degrees
Fixed

Also, when you're setting that boolean and using it in an if block, well, you could've just loaded the variable directly in the if statement rather than setting it in a boolean and using that.
If you notice, I'm using the Boolean condition 2 times.
Also, I think loading a data and set it as a variable is not a bad idea, it could improves readability too from certain function,

  • SS_BooleanHit Equal to False
Compared to,

  • (Load 4 of SS_Key from SS_Hashtable) Equal to False
I don't know, that's just my perspective ;p

Stringed Shuriken v1.1 is up.
 
Top