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

Chidori v.1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
I remember my first time when i join hive, i like Naruto in that time so i try to search Chidori in hive but all i found is labelled "Needs Fix". So I got an idea to create "Chidori" by myself.
i think there is people who want to create Naruto Map, so i think this will be useful to them.
and this is MUI. I use custom models so newbie will be easier to configure the animations, so sorry for the Big Size.

214624-albums6486-picture73000.gif


  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ------------------------------------- --------
      • -------- Store Chidori Ability into a Variable --------
      • Set Chidori_Ability = Chidori
      • -------- Chidori's Damage per level --------
      • Set Chidori_Damage[1] = 100.00
      • Set Chidori_Damage[2] = 200.00
      • Set Chidori_Damage[3] = 300.00
      • -------- Caster's movement speed when use chidori --------
      • Set Chidori_MovementSpeed[1] = 1000.00
      • Set Chidori_MovementSpeed[2] = 1000.00
      • Set Chidori_MovementSpeed[3] = 1000.00
      • -------- Target's movement speed when knockback --------
      • Set Chidori_KnockSpeed[1] = 1000.00
      • Set Chidori_KnockSpeed[2] = 1000.00
      • Set Chidori_KnockSpeed[3] = 1000.00
      • -------- knockback duration --------
      • Set Chidori_KnockDuration[1] = 1.00
      • Set Chidori_KnockDuration[2] = 1.00
      • Set Chidori_KnockDuration[3] = 1.00
      • -------- tree in aoe will be destroyed if "Chidori_DestroyTree = True" --------
      • Set Chidori_Tree_AoE[1] = 150.00
      • Set Chidori_Tree_AoE[2] = 150.00
      • Set Chidori_Tree_AoE[3] = 150.00
      • -------- Caster's animation (moving) --------
      • Set Chidori_Animation[1] = spell three
      • -------- Caster's animation (hit the target) --------
      • Set Chidori_Animation[2] = spell slam
      • -------- Caster's SFX position --------
      • Set Chidori_SFX_Position[1] = hand right
      • -------- Special Effects (hand) --------
      • Set Chidori_SFX[1] = Abilities\Spells\Items\AIlb\AIlbSpecialArt.mdl
      • Set Chidori_SFX[2] = Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • -------- Special Effects (knockback) --------
      • Set Chidori_SFX[3] = Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • -------- Special Effects (when hit) --------
      • Set Chidori_SFX[4] = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • -------- Do you want to destroy tree when moving? then set this to "True" --------
      • Set Chidori_DestroyTree = True
      • -------- Do you want knockback your enemy when the chidori hit them? then set this to "True" --------
      • Set Chidori_Knockback = True
      • -------- ------------------------------------- --------
  • Chidori
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Chidori_Ability
    • Actions
      • Set Chidori_Max_Index = (Chidori_Max_Index + 1)
      • Set Chidori_Caster[Chidori_Max_Index] = (Triggering unit)
      • Set Chidori_Target[Chidori_Max_Index] = (Target unit of ability being cast)
      • Set Chidori_Ability_Level[Chidori_Max_Index] = (Level of Chidori_Ability for Chidori_Caster[Chidori_Max_Index])
      • Custom script: set udg_RealArray[udg_Chidori_Max_Index] = GetUnitPropWindow(udg_Chidori_Caster[udg_Chidori_Max_Index])
      • Custom script: call SetUnitPropWindow(udg_Chidori_Caster[udg_Chidori_Max_Index], 0)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Chidori_Max_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Chidori Loop <gen>
        • Else - Actions
  • Chidori Loop
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • For each (Integer Chidori_Current_Index) from 1 to Chidori_Max_Index, do (Actions)
        • Loop - Actions
          • Set TempPoint = (Position of Chidori_Caster[Chidori_Current_Index])
          • Set TempPoint2 = (Position of Chidori_Target[Chidori_Current_Index])
          • Set Chidori_Angle[Chidori_Current_Index] = (Angle from TempPoint to TempPoint2)
          • Set TempPoint3 = (TempPoint offset by (Chidori_MovementSpeed[Chidori_Ability_Level[Chidori_Current_Index]] x 0.04) towards Chidori_Angle[Chidori_Current_Index] degrees)
          • Custom script: call SetUnitX(udg_Chidori_Caster[udg_Chidori_Current_Index], GetLocationX(udg_TempPoint3))
          • Custom script: call SetUnitY(udg_Chidori_Caster[udg_Chidori_Current_Index], GetLocationY(udg_TempPoint3))
          • Animation - Play Chidori_Caster[Chidori_Current_Index]'s Chidori_Animation[1] animation
          • Special Effect - Create a special effect attached to the Chidori_SFX_Position[1] of Chidori_Caster[Chidori_Current_Index] using Chidori_SFX[1]
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect attached to the Chidori_SFX_Position[1] of Chidori_Caster[Chidori_Current_Index] using Chidori_SFX[2]
          • Special Effect - Destroy (Last created special effect)
          • Set Chidori_Distance[Chidori_Current_Index] = (Distance between TempPoint and TempPoint2)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Chidori_Distance[Chidori_Current_Index] Less than or equal to 150.00
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Chidori_Knockback Equal to True
                • Then - Actions
                  • Animation - Play Chidori_Caster[Chidori_Current_Index]'s Chidori_Animation[2] animation
                  • Custom script: call SetUnitPropWindow(udg_Chidori_Caster[udg_Chidori_Current_Index], udg_RealArray[udg_Chidori_Current_Index])
                  • Unit - Cause Chidori_Caster[Chidori_Current_Index] to damage Chidori_Target[Chidori_Current_Index], dealing Chidori_Damage[Chidori_Ability_Level[Chidori_Current_Index]] damage of attack type Spells and damage type Lightning
                  • Special Effect - Create a special effect at TempPoint2 using Chidori_SFX[4]
                  • Special Effect - Destroy (Last created special effect)
                  • Animation - Play Chidori_Caster[Chidori_Current_Index]'s stand animation
                  • Set KB2D_Source = Chidori_Caster[Chidori_Current_Index]
                  • Set KB2D_Target = Chidori_Target[Chidori_Current_Index]
                  • Custom script: set udg_KB2D_TempKey = GetHandleId(udg_KB2D_Target)
                  • Set KB2D_SFX = Chidori_SFX[3]
                  • Set KB2D_Distance = 500.00
                  • Set KB2D_Duration = 1.50
                  • Set KB2D_Loc = (Position of KB2D_Source)
                  • Set KB2D_Offset = (Position of KB2D_Target)
                  • Set KB2D_Angle = (Angle from KB2D_Loc to KB2D_Offset)
                  • Set KB2D_AllowTreeDestroy = Chidori_DestroyTree
                  • Custom script: call ExecuteFunc("ApplyKnockbackEffect")
                  • Custom script: call RemoveLocation(udg_KB2D_Offset)
                  • Custom script: call RemoveLocation(udg_KB2D_Loc)
                  • Set Chidori_Angle[Chidori_Current_Index] = Chidori_Angle[Chidori_Max_Index]
                  • Set Chidori_Angle[Chidori_Max_Index] = 0.00
                  • Set Chidori_Caster[Chidori_Current_Index] = Chidori_Caster[Chidori_Max_Index]
                  • Set Chidori_Caster[Chidori_Max_Index] = No unit
                  • Set Chidori_Target[Chidori_Current_Index] = Chidori_Target[Chidori_Max_Index]
                  • Set Chidori_Target[Chidori_Max_Index] = No unit
                  • Set Chidori_Current_Index = (Chidori_Current_Index - 1)
                  • Set Chidori_Max_Index = (Chidori_Max_Index - 1)
                • Else - Actions
                  • Animation - Play Chidori_Caster[Chidori_Current_Index]'s Chidori_Animation[2] animation
                  • Custom script: call SetUnitPropWindow(udg_Chidori_Caster[udg_Chidori_Current_Index], udg_RealArray[udg_Chidori_Current_Index])
                  • Unit - Cause Chidori_Caster[Chidori_Current_Index] to damage Chidori_Target[Chidori_Current_Index], dealing Chidori_Damage[Chidori_Ability_Level[Chidori_Current_Index]] damage of attack type Spells and damage type Lightning
                  • Special Effect - Create a special effect at TempPoint2 using Chidori_SFX[4]
                  • Special Effect - Destroy (Last created special effect)
                  • Animation - Play Chidori_Caster[Chidori_Current_Index]'s stand animation
                  • Set Chidori_Angle[Chidori_Current_Index] = Chidori_Angle[Chidori_Max_Index]
                  • Set Chidori_Angle[Chidori_Max_Index] = 0.00
                  • Set Chidori_Caster[Chidori_Current_Index] = Chidori_Caster[Chidori_Max_Index]
                  • Set Chidori_Caster[Chidori_Max_Index] = No unit
                  • Set Chidori_Target[Chidori_Current_Index] = Chidori_Target[Chidori_Max_Index]
                  • Set Chidori_Target[Chidori_Max_Index] = No unit
                  • Set Chidori_Current_Index = (Chidori_Current_Index - 1)
                  • Set Chidori_Max_Index = (Chidori_Max_Index - 1)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_TempPoint)
          • Custom script: call RemoveLocation(udg_TempPoint2)
          • Custom script: call RemoveLocation(udg_TempPoint3)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Chidori_Max_Index Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
Credits: draguen, Almia
How to Import: go to World Editor => file => Preferences => Check the "Automatically create unknown Variable while pasting trigger data" => ok

Changelogs:
v.1.1 - Remove the "Pause Unit" action
- Now Use Almia's Knockback system
v.1.0 - Released

Keywords:
Chidori, Naruto, Lightning, Move, Sasuke, Kakashi, DivineLight
Contents

Chidori v.1.1 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 13:09, 31st Aug 2013 Maker: Needs pathing detection

Moderator

M

Moderator

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

13:09, 31st Aug 2013
Maker: Needs pathing detection
 
No. The better solution is using SetUnitPropWindow.
SetUnitPropWindow when used in 0 value acts like a disabler like Ensnare.

Follow the example:

Indexing:
Use the following in a custom script:
JASS:
set udg_<real variable array> = GetUnitPropWindow(<unit>)
call SetUnitPropWindow(<unit>, 0)

Removing:
call SetUnitPropWindow(<unit>, udg_<real variable array>)

This is a much better alternative since Pausing units causes some buffs or effects on units to pause.

Also, use SetUnitX/Y. SetUnitX/Y has 0 pathing collisions and doesn't do path checking.
 
Level 20
Joined
Aug 13, 2013
Messages
1,696
Like this,??

JASS:
call SetUnitInvulnerable(u,true)
call SetUnitPropWindow(u,0.)
call TriggerSleepAction(DELAY(lvl))
call SetUnitX(u,x)
call SetUnitY(u,y)
call SetUnitPropWindow(u,disable)
call SetUnitInvulnerable(u,false)
call SelectUnit(u,true)
 
Level 13
Joined
Mar 29, 2012
Messages
530
Review

Minimize

Comment

Rating

  • Attack-type and Damage-type should be configurable
  • Store (Picked destructable) to a variable and use it
  • Use SetUnitX/Y to move unit
  • You can use "call DestroyEffect(AddSpecialEffect(effectModelPath, someWhere X, someWhere Y))" to create effect in one line
  • "call DestroyEffect(AddSpecialEffectTarget(effectModelPath, targetUnit, attachmentPoint))" to create attached effect
  • Don't pause unit
Needs Fix
Still need fixing, but the other; Good job! :D
[TD]

Rating

[/TD]

LOL, this is my first review... :)
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
thanks for the review..
+Rep

call DestroyEffect(AddSpecialEffect(effectModelPath, someWhere X, someWhere Y))
call DestroyEffect(AddSpecialEffectTarget(effectModelPath, targetUnit, attachmentPoint))
why i need to use both of them and is it necessary?


Updated!

he didn't say both if you look he explains what they do after the function call.
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
this should be stored into a variable in the cast trigger.
  • Chidori_MovementSpeed[Chidori_Ability_Level[Chidori_Current_Index]] x 0.04
you shouldn't use arrays unless you need them. Also just use a temp variable rather than creating more unnecessary variables.
  • Chidori_SFX_Position[1]
This never gets used ?
  • Custom script: set udg_KB2D_TempKey = GetHandleId(udg_KB2D_Target)
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
  • What if the unit dies while charging?
  • There is no pathing detection
  • If you have the same actions in THEN and ELSE, take them out of the IF/THEN/ELSE
  • You are creating 50 effecs per second. I consider that spamming
  • Chidori_Max_Index can't be 0 if it isn't subtracted. So no need to check it 25 times per second

You should try to be more unique, it is a very basic charge spell.
 
Top