Warcraft 3 documentation
vJASS & Zinc Documentation
For the latest documentation about how it works vJASS and Zinc language layers for Warcraft III, please follow these links:
Jasshelper documentation - Zinc documentation - WC3 Optimizer documentation

Double Spinning Blade v1.1.1 No New Posts Warcraft III Spells and Systems

Started by
NocturnX

0 Members and 1 Guest are viewing this topic.

Rating

Average Score - 5 / 5

« Created: July 03, 2017, 08:14:23 AM by moyack »

Double Spinning Blade v1.1.1
on: September 09, 2013, 01:07:44 AM
Categories: Target Ground, GUI
Rating: 5
Warcraft III Spell resource
« Created: July 03, 2017, 08:09:49 AM by moyack »

Double Spinning Blade
The User throw a spinning blade towards the target point, for set amount of time the blade will destroyed and the user's illusion will appeared at blade's location. Then he throw a spinning blade again to the user's current location.
Level 1 - 75 damage.
Level 2 - 100 damage.
Level 3 - 125 damage.

READ!! IMPORTANT!!
How to Import
Go to World Editor => file => Preferences => Check the "Automatically create unknown Variable while pasting trigger data" => ok
Copy all triggers (except "Do not import this" trigger) to your map
then open Object Editor, copy the "Spinning Blade" and "Rokhan Dummy" to your map. and store them into Configuration Trigger
(Set DSB_Dummy_Type = Spinning Blade and Set DSB_Dummy_Type2 = Rokhan Dummy)
remember, the first dummy type is for the blade, and the second dummy type is for the illusion

Triggers
Configuration
Configuration
    Events
        Map initialization
    Conditions
    Actions
        -------- --------------------------------------------- --------
        -------- Store your ability id here --------
        Set DSB_Ability_ID = Double Spinning Blade
        -------- Store your dummy here --------
        Set DSB_Dummy_Type = Spinning Blade
        Set DSB_Dummy_Type2 = Rokhan Dummy
        -------- Your Caster's animation when cast the spell --------
        Set DSB_Animation = attack
        -------- Your Dummy's animation when cast the spell --------
        Set DSB_Dummy2_Animation = attack
        -------- Your 2nd Dummy's expiration timer --------
        Set DSB_Dummy2_Lifetime = 1.50
        -------- Your 2nd Dummy's color (RGB) --------
        Set DSB_Dummy2_RED = 40.00
        Set DSB_Dummy2_GREEN = 40.00
        Set DSB_Dummy2_BLUE = 40.00
        -------- Your 2nd Dummy's transparency --------
        Set DSB_Dummy2_Transparency = 40.00
        -------- Your ability's damage when it's hit enemies in the line --------
        Set DSB_Damage[1] = 75.00
        Set DSB_Damage[2] = 100.00
        Set DSB_Damage[3] = 125.00
        -------- Area of Effect of the ability --------
        Set DSB_AoE = 150.00
        -------- How far your blade travels --------
        Set DSB_Distance = 1000.00
        -------- How far your blade spawns --------
        Set DSB_Start_Range = 100.00
        -------- Special Effect which spawn when the blade hits your enemies --------
        Set DSB_Special_Effect = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
        -------- which point your special effect will spawned at? head/chest/hand/overhead/origin, etc --------
        Set DSB_Special_Effect_Location = chest
        -------- Yes = Will Destroy Trees / No = Won't Destroy Trees --------
        Set DSB_Destroy_Tree = True
        -------- --------------------------------------------- --------
        -------- Conditions Configuration --------
        -------- --------------------------------------------- --------
        -------- Units Belongs to enemy player --------
        Set DSB_Conditions[1] = True
        -------- Units is Alive --------
        Set DSB_Conditions[2] = True
        -------- Units is Magic Immune --------
        Set DSB_Conditions[3] = False
        -------- Units is a Structure --------
        Set DSB_Conditions[4] = False
        -------- Units is in UnDamage Group (to prevent damage looping) --------
        Set DSB_Conditions[5] = False
        -------- --------------------------------------------- --------
        -------- DO NOT CHANGE THIS --------
        -------- --------------------------------------------- --------
        Set TempPoint = (Center of (Playable map area))
        Unit - Create 1 Peasant for Player 1 (Red) at TempPoint facing Default building facing degrees
        Custom script:  call RemoveLocation(udg_TempPoint)
        Set DSB_Destroyer = (Last created unit)
        Unit - Hide DSB_Destroyer
        -------- --------------------------------------------- --------
 
Cast Trigger
Double Spinning Blade
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to DSB_Ability_ID
    Actions
        Set DSB_Max_Index = (DSB_Max_Index + 1)
        Set DSB_Owner[DSB_Max_Index] = (Triggering player)
        Set DSB_Caster[DSB_Max_Index] = (Triggering unit)
        Set DSB_Ability_Level[DSB_Max_Index] = (Level of DSB_Ability_ID for DSB_Caster[DSB_Max_Index])
        Animation - Play DSB_Caster[DSB_Max_Index]'s DSB_Animation animation
        Set TempPoint = (Position of DSB_Caster[DSB_Max_Index])
        Set TempPoint2 = (Target point of ability being cast)
        Set DSB_Angle[DSB_Max_Index] = (Angle from TempPoint to TempPoint2)
        Set TempPoint3 = (TempPoint offset by DSB_Start_Range towards DSB_Angle[DSB_Max_Index] degrees)
        Unit - Create 1 DSB_Dummy_Type for DSB_Owner[DSB_Max_Index] at TempPoint3 facing DSB_Angle[DSB_Max_Index] degrees
        Set DSB_Dummy[DSB_Max_Index] = (Last created unit)
        Unit - Add a ((DSB_Distance x 0.03) x 0.03) second Generic expiration timer to DSB_Dummy[DSB_Max_Index]
        Set DSB_Stage[DSB_Max_Index] = 1
        Custom script:  set udg_DSB_UnDamage_Group[udg_DSB_Max_Index] = CreateGroup()
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                DSB_Max_Index Equal to 1
            Then - Actions
                Trigger - Turn on DSB Loop <gen>
            Else - Actions
        Custom script:  call RemoveLocation(udg_TempPoint)
        Custom script:  call RemoveLocation(udg_TempPoint2)
        Custom script:  call RemoveLocation(udg_TempPoint3)
 
Loop Trigger
DSB Loop
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        For each (Integer DSB_Current_Index) from 1 to DSB_Max_Index, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DSB_Stage[DSB_Current_Index] Equal to 1
                    Then - Actions
                        Set TempPoint = (Position of DSB_Dummy[DSB_Current_Index])
                        Set TempPoint2 = (TempPoint offset by (DSB_Distance x 0.03) towards DSB_Angle[DSB_Current_Index] degrees)
                        Unit - Move DSB_Dummy[DSB_Current_Index] instantly to TempPoint2
                        Set DSB_Damage_Group[DSB_Current_Index] = (Units within DSB_AoE of TempPoint)
                        Unit Group - Pick every unit in DSB_Damage_Group[DSB_Current_Index] and do (Actions)
                            Loop - Actions
                                Set TempUnit = (Picked unit)
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (TempUnit belongs to an enemy of DSB_Owner[DSB_Current_Index]) Equal to DSB_Conditions[1]
                                        (TempUnit is alive) Equal to DSB_Conditions[2]
                                        (TempUnit is Magic Immune) Equal to DSB_Conditions[3]
                                        (TempUnit is A structure) Equal to DSB_Conditions[4]
                                        (TempUnit is in DSB_UnDamage_Group[DSB_Current_Index]) Equal to DSB_Conditions[5]
                                    Then - Actions
                                        Unit - Cause DSB_Caster[DSB_Current_Index] to damage TempUnit, dealing DSB_Damage[DSB_Ability_Level[DSB_Current_Index]] damage of attack type Spells and damage type Normal
                                        Special Effect - Create a special effect attached to the DSB_Special_Effect_Location of TempUnit using DSB_Special_Effect
                                        Special Effect - Destroy (Last created special effect)
                                        Unit Group - Add TempUnit to DSB_UnDamage_Group[DSB_Current_Index]
                                    Else - Actions
                        Custom script:  call DestroyGroup(udg_DSB_Damage_Group[udg_DSB_Current_Index])
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                DSB_Destroy_Tree Equal to True
                            Then - Actions
                                Destructible - Pick every destructible within DSB_AoE of TempPoint and do (Actions)
                                    Loop - Actions
                                        Set TempDest = (Picked destructible)
                                        Unit - Order DSB_Destroyer to Harvest TempDest
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                (Current order of DSB_Destroyer) Equal to (Order(harvest))
                                            Then - Actions
                                                Destructible - Kill TempDest
                                            Else - Actions
                                        Unit - Order DSB_Destroyer to Stop
                            Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (DSB_Dummy[DSB_Current_Index] is dead) Equal to True
                            Then - Actions
                                Custom script:  call DestroyGroup(udg_DSB_UnDamage_Group[udg_DSB_Current_Index])
                                Custom script:  set udg_DSB_UnDamage_Group[udg_DSB_Max_Index] = CreateGroup()
                                Set DSB_Stage[DSB_Current_Index] = 2
                                Custom script:  call RemoveLocation(udg_TempPoint2)
                                Set TempPoint2 = (Position of DSB_Caster[DSB_Current_Index])
                                Unit - Create 1 DSB_Dummy_Type2 for DSB_Owner[DSB_Current_Index] at TempPoint facing TempPoint2
                                Set DSB_Dummy2[DSB_Current_Index] = (Last created unit)
                                Unit - Add a DSB_Dummy2_Lifetime second Generic expiration timer to DSB_Dummy2[DSB_Current_Index]
                                Animation - Change DSB_Dummy2[DSB_Current_Index]'s vertex coloring to (DSB_Dummy2_RED%, DSB_Dummy2_GREEN%, DSB_Dummy2_BLUE%) with DSB_Dummy2_Transparency% transparency
                                Animation - Play DSB_Dummy2[DSB_Current_Index]'s DSB_Dummy2_Animation animation
                                Custom script:  call RemoveLocation(udg_TempPoint)
                                Set TempPoint = (Position of DSB_Dummy2[DSB_Current_Index])
                                Set DSB_Angle[DSB_Current_Index] = (Angle from TempPoint to TempPoint2)
                                Set TempPoint3 = (TempPoint offset by DSB_Start_Range towards DSB_Angle[DSB_Current_Index] degrees)
                                Unit - Remove DSB_Dummy[DSB_Current_Index] from the game
                                Unit - Create 1 DSB_Dummy_Type for DSB_Owner[DSB_Current_Index] at TempPoint3 facing DSB_Angle[DSB_Current_Index] degrees
                                Set DSB_Dummy[DSB_Current_Index] = (Last created unit)
                                Unit - Add a ((DSB_Distance x 0.03) x 0.03) second Generic expiration timer to DSB_Dummy[DSB_Current_Index]
                                Custom script:  call RemoveLocation(udg_TempPoint)
                                Custom script:  call RemoveLocation(udg_TempPoint3)
                            Else - Actions
                                Custom script:  call RemoveLocation(udg_TempPoint)
                        Custom script:  call RemoveLocation(udg_TempPoint2)
                    Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                DSB_Stage[DSB_Current_Index] Equal to 2
                            Then - Actions
                                Set TempPoint = (Position of DSB_Dummy[DSB_Current_Index])
                                Set TempPoint2 = (TempPoint offset by (DSB_Distance x 0.03) towards DSB_Angle[DSB_Current_Index] degrees)
                                Unit - Move DSB_Dummy[DSB_Current_Index] instantly to TempPoint2
                                Set DSB_Damage_Group[DSB_Current_Index] = (Units within DSB_AoE of TempPoint)
                                Unit Group - Pick every unit in DSB_Damage_Group[DSB_Current_Index] and do (Actions)
                                    Loop - Actions
                                        Set TempUnit = (Picked unit)
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                (TempUnit belongs to an enemy of DSB_Owner[DSB_Current_Index]) Equal to DSB_Conditions[1]
                                                (TempUnit is alive) Equal to DSB_Conditions[2]
                                                (TempUnit is Magic Immune) Equal to DSB_Conditions[3]
                                                (TempUnit is A structure) Equal to DSB_Conditions[4]
                                                (TempUnit is in DSB_UnDamage_Group[DSB_Current_Index]) Equal to DSB_Conditions[5]
                                            Then - Actions
                                                Unit - Cause DSB_Caster[DSB_Current_Index] to damage TempUnit, dealing DSB_Damage[DSB_Ability_Level[DSB_Current_Index]] damage of attack type Spells and damage type Normal
                                                Special Effect - Create a special effect attached to the DSB_Special_Effect_Location of TempUnit using DSB_Special_Effect
                                                Special Effect - Destroy (Last created special effect)
                                                Unit Group - Add TempUnit to DSB_UnDamage_Group[DSB_Current_Index]
                                            Else - Actions
                                Custom script:  call DestroyGroup(udg_DSB_Damage_Group[udg_DSB_Current_Index])
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        DSB_Destroy_Tree Equal to True
                                    Then - Actions
                                        Destructible - Pick every destructible within DSB_AoE of TempPoint and do (Actions)
                                            Loop - Actions
                                                Set TempDest = (Picked destructible)
                                                Unit - Order DSB_Destroyer to Harvest TempDest
                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    If - Conditions
                                                        (Current order of DSB_Destroyer) Equal to (Order(harvest))
                                                    Then - Actions
                                                        Destructible - Kill TempDest
                                                    Else - Actions
                                                Unit - Order DSB_Destroyer to Stop
                                    Else - Actions
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (DSB_Dummy[DSB_Current_Index] is dead) Equal to True
                                    Then - Actions
                                        Custom script:  call DestroyGroup(udg_DSB_UnDamage_Group[udg_DSB_Current_Index])
                                        Unit - Remove DSB_Dummy[DSB_Current_Index] from the game
                                        Set DSB_Dummy[DSB_Current_Index] = DSB_Dummy[DSB_Max_Index]
                                        Set DSB_Dummy[DSB_Max_Index] = No unit
                                        Set DSB_Caster[DSB_Current_Index] = DSB_Caster[DSB_Max_Index]
                                        Set DSB_Caster[DSB_Max_Index] = No unit
                                        Set DSB_Angle[DSB_Current_Index] = DSB_Angle[DSB_Max_Index]
                                        Set DSB_Angle[DSB_Max_Index] = 0.00
                                        Set DSB_Ability_Level[DSB_Current_Index] = DSB_Ability_Level[DSB_Max_Index]
                                        Set DSB_Ability_Level[DSB_Max_Index] = 0
                                        Set DSB_Stage[DSB_Current_Index] = DSB_Stage[DSB_Max_Index]
                                        Set DSB_Stage[DSB_Max_Index] = 0
                                        Set DSB_Current_Index = (DSB_Current_Index - 1)
                                        Set DSB_Max_Index = (DSB_Max_Index - 1)
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                DSB_Max_Index Equal to 0
                                            Then - Actions
                                                Trigger - Turn off (This trigger)
                                            Else - Actions
                                    Else - Actions
                                Custom script:  call RemoveLocation(udg_TempPoint)
                                Custom script:  call RemoveLocation(udg_TempPoint2)
                            Else - Actions
 
Dummy Removal
DSB Dummy Removal
    Events
        Unit - A unit Dies
    Conditions
    Actions
        Set TempUnit = (Triggering unit)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Unit-type of TempUnit) Equal to DSB_Dummy_Type2
            Then - Actions
                Unit - Remove TempUnit from the game
            Else - Actions
 

Screenshot
#1
#2
#3
#4

Feedbacks and Suggestions is appreciated

Changelogs
v1.1.1
Minor Changes

v1.1
Set unit variable after hide unit action - Fixed
Remove Location (TempPoint and TempPoint2) at Cast Trigger
Store Picked Unit to TempUnit
Store Picked Dest to TempDest
Remove Current Stage Checker
Remove Location before changing stage
The Turn Off ITE is now moved to de-indexing portion of the spell
De-Index ability level

v1.0
Released
« Last Edit: July 03, 2017, 08:12:26 AM by moyack »



Double Spinning Blade v1.1.1
Reply #1 on: September 09, 2013, 08:07:33 AM

No fair! I should upload my spell too :P

Anyway, good job!



Double Spinning Blade v1.1.1
Reply #2 on: September 09, 2013, 08:49:53 AM

@Rheiko: In order to make your post showing the thumbnail, please upload first the image, then the wc3 map. just to make your submission more awesome :)

No fair! I should upload my spell too :P

Anyway, good job!
YEAH!!!! what are you waiting for!!! :D After finishing the JNGP 2.0.6, I'll work in this section and clean it up.


Double Spinning Blade v1.1.1
Reply #3 on: September 09, 2013, 12:34:43 PM

guys, i need a help to review it  ???



Double Spinning Blade v1.1.1
Reply #4 on: September 12, 2013, 07:07:52 PM

guys, i need a help to review it  ???
Checking it now. Sorry for my delay, RL and a family issue has made me AFK.

Suggestions:
  • Add the possibility to set an effect to appear, disappear the dummy unit
  • Don't use locations, instead, use reals. I know locations are colmfortable for "writing" in GUI, but using reals will make your spell faster and reliable.


That's what I see by the moment.
« Last Edit: September 12, 2013, 07:18:14 PM by moyack »



Double Spinning Blade v1.1.1
Reply #5 on: September 21, 2013, 09:29:55 PM

Quote from: Moyack
Add the possibility to set an effect to appear, disappear the dummy unit
I don't understand this  :-\

Quote from: Moyack
Don't use locations, instead, use reals. I know locations are colmfortable for "writing" in GUI, but using reals will make your spell faster and reliable.
do you mean, coordinates?



Double Spinning Blade v1.1.1
Reply #6 on: September 22, 2013, 02:08:10 AM

yes, use coordinates.



Double Spinning Blade v1.1.1
Reply #7 on: September 22, 2013, 06:29:23 AM

Using coordinates will make you spell faster and safer, most of the time, it saves up to 50% chances of having a leak in your spell.


Double Spinning Blade v1.1.1
Reply #8 on: October 19, 2013, 05:07:13 AM

Using coordinates will make you spell faster and safer, most of the time, it saves up to 50% chances of having a leak in your spell.
Yeah, GUI is truly flawed to be honest.

EDIT :
If this submission version is equal to Hive's version, then I can approve this (as it's approved at Hive).
« Last Edit: October 19, 2013, 08:25:19 PM by Naoto Shirogane »



 

* Random Spells & Systems

Started by s[ub]lime

Replies: 3
Views: 10474
Workers Corner

Started by Wojannnn

Replies: 0
Views: 1468
Warcraft III Models

Started by Wojannnn

Replies: 0
Views: 992
Warcraft III Models
Vivir aprendiendo.co - A place for learning stuff, in Spanish   Chaos Realm - The world of Game modders and wc3 addicts   Diplo, a gaming community   Power of Corruption, an altered melee featuring Naga and Demon. Play it now!!!   WC3JASS.com - The JASS Vault + vJASS and Zinc   Jetcraft - A Starcraft II mod   WormTastic Clan (wTc)   Warcraft RESOURCES Reforged: Modelos, mapas, proyectos y mas...