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

Easy Spellpack v1.3c

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: IRoILaurentiu
Easy Spellpack v1.3c
By [highlight]GnE.MaP-Cr3at0r[/code]

GnE.MaP-Cr3at0r is my current Garena Account



-First Released


-Fix minor of Ignite


-Fix Ignite
-Added one spells Storm Bolt
-Changed spell name from Easy Ignite to Easy Spellpack


-Fixed Ignite Spam Effects
-Fixed Ignite Damage Store to Map Initialization
-Fixed Storm Bolt Location Leaks
-Fixed Storm Bolt Index Clearing


Fixed and Suggested by Mythic and Lender
-Now the Ignite can be Configure
-Now the Storm Bolt Dummy have movement speed
-Now the Storm Bolt Dummy cast backswing and cast point is totally 0


Fixed the Stormbolt following to Lender's suggestions
-Storm Bolt's Unit Group now Set in the Loop Trigger



Spells Description

Easy Ignite - Slows enemy movement speed by 25% and dealt 44/55/66 damage per seconds for 4/5/6 seconds.
Cooldown= 7

Storm Bolt - Sends a storm bolt to an enemy to dealt 100/175/250 damage and stuns nearby enemy unit by 2 seconds.
Cooldown= 6

[trigger=Ignite Setup]
Ignite Setup
Events
Map initialization
Conditions
Actions
-------- To Set The Damage of Burn --------
-------- Confirgure damage that you need --------
-------- Maximum Damage (Level 1,2,3) --------
Set Ignite_Damage[1] = 120.00
Set Ignite_Damage[2] = 160.00
Set Ignite_Damage[3] = 220.00
[/trigger]

[trigger=Ignite]
Ignite
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ignite
Actions
-------- To Set The Unit --------
Set Ignite_Index = (Ignite_Index + 1)
Set IgniteCaster[Ignite_Index] = (Triggering unit)
Set IgniteTarget[Ignite_Index] = (Target unit of ability being cast)
-------- Caster Level --------
Set Ignite_Level = (Level of Ignite for IgniteCaster[Ignite_Index])
-------- Ignite DPS Real --------
Set Ignite_DPS[Ignite_Index] = (Ignite_Damage[Ignite_Level] / (60.00 x 0.03))
-------- Special Effect --------
Special Effect - Create a special effect attached to the origin of IgniteTarget[Ignite_Index] using Environment\LargeBuildingFire\LargeBuildingFire1.mdl
Set Ignite_Effects[Ignite_Index] = (Last created special effect)
-------- To Set The Duration of Burn --------
Set IgniteTimer[Ignite_Index] = 0.00
-------- Configure this to set the full duration of the Ignite --------
Set Ignite_FullDuration[Ignite_Index] = (3.00 + (Real((Level of (Ability being cast) for IgniteCaster[Ignite_Index]))))
-------- To Check the Index --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite_Index Equal to 1
Then - Actions
Trigger - Turn on Ignite Damage <gen>
Else - Actions
[/trigger]

[trigger=Ignite Damage]
Ignite Damage
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
-------- To Burn the Target --------
For each (Integer Ignite_Loop_Integer) from 1 to Ignite_Index, do (Actions)
Loop - Actions
Unit - Cause IgniteCaster[Ignite_Loop_Integer] to damage IgniteTarget[Ignite_Loop_Integer], dealing Ignite_DPS[Ignite_Loop_Integer] damage of attack type Spells and damage type Fire
Set IgniteTimer[Ignite_Loop_Integer] = (IgniteTimer[Ignite_Loop_Integer] + 0.03)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IgniteTimer[Ignite_Loop_Integer] Greater than or equal to Ignite_FullDuration[Ignite_Loop_Integer]
Then - Actions
Set IgniteTimer[Ignite_Loop_Integer] = IgniteTimer[Ignite_Index]
Set Ignite_FullDuration[Ignite_Loop_Integer] = Ignite_FullDuration[Ignite_Index]
Set Ignite_DPS[Ignite_Loop_Integer] = Ignite_DPS[Ignite_Index]
Set IgniteCaster[Ignite_Loop_Integer] = IgniteCaster[Ignite_Index]
Set IgniteCaster[Ignite_Loop_Integer] = No unit
Set IgniteTarget[Ignite_Loop_Integer] = IgniteTarget[Ignite_Index]
Set IgniteTarget[Ignite_Loop_Integer] = No unit
Set Ignite_Effects[Ignite_Loop_Integer] = Ignite_Effects[Ignite_Index]
Special Effect - Destroy Ignite_Effects[Ignite_Index]
Set Ignite_Index = (Ignite_Index - 1)
Set Ignite_Loop_Integer = (Ignite_Loop_Integer - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite_Index Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
[/trigger]



[trigger=Storm Bolt]
Storm Bolt
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Storm Bolt
Actions
-------- Index --------
Set StormBolt_Index = (StormBolt_Index + 1)
-------- Configuration --------
Set StormBolt_Caster[StormBolt_Index] = (Triggering unit)
Set StormBolt_Point1[StormBolt_Index] = (Position of StormBolt_Caster[StormBolt_Index])
Set StormBolt_Target[StormBolt_Index] = (Target unit of ability being cast)
Set StormBolt_Point2[StormBolt_Index] = (Position of StormBolt_Target[StormBolt_Index])
-------- The Dummy Ability --------
Set StormBolt_Ability = Storm Bolt
Unit - Create 1 Storm Bolt Dummy for (Owner of StormBolt_Caster[StormBolt_Index]) at (Position of StormBolt_Caster[StormBolt_Index]) facing (Angle from StormBolt_Point1[StormBolt_Index] to StormBolt_Point2[StormBolt_Index]) degrees
Set StormBolt_Dummy[StormBolt_Index] = (Last created unit)
Set StormBolt_Point3[StormBolt_Index] = (Position of StormBolt_Dummy[StormBolt_Index])
Set StormBolt_DistanceMax[StormBolt_Index] = (Distance between StormBolt_Point1[StormBolt_Index] and StormBolt_Point2[StormBolt_Index])
Set StormBolt_Distance[StormBolt_Index] = 0.00
-------- Set the speed of Storm Bolt Dummy --------
Set StormBolt_DistanceAdd[StormBolt_Index] = 25.00
-------- Check the Index --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Index Equal to 1
Then - Actions
Trigger - Turn on Storm Bolt Loop <gen>
Else - Actions
[/trigger]

[trigger=Storm Bolt Loop]
Storm Bolt Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
-------- Dummy Move --------
For each (Integer StormBolt_Temp) from 1 to StormBolt_Index, do (Actions)
Loop - Actions
-------- The Current Location of Dummy --------
Set StormBolt_DistanceMax[StormBolt_Temp] = (Distance between StormBolt_Point1[StormBolt_Temp] and StormBolt_Point2[StormBolt_Temp])
Set StormBolt_Distance[StormBolt_Temp] = (StormBolt_Distance[StormBolt_Temp] + StormBolt_DistanceAdd[StormBolt_Temp])
Unit - Move StormBolt_Dummy[StormBolt_Temp] instantly to (StormBolt_Point3[StormBolt_Temp] offset by StormBolt_Distance[StormBolt_Temp] towards (Facing of StormBolt_Dummy[StormBolt_Temp]) degrees), facing (Angle from (Position of StormBolt_Dummy[StormBolt_Temp]) to (Position of StormBolt_Target[StormBolt_Temp])) degrees
Set StormBolt_Point4[StormBolt_Temp] = (Position of StormBolt_Dummy[StormBolt_Temp])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Distance[StormBolt_Temp] Greater than or equal to StormBolt_DistanceMax[StormBolt_Temp]
Then - Actions
-------- Dealt damage and stun --------
Set StormBolt_Group[StormBolt_Temp] = (Units within 250.00 of (Position of StormBolt_Target[StormBolt_Temp]) matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of StormBolt_Caster[StormBol
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in StormBolt_Group[StormBolt_Temp] and do (Actions)
Loop - Actions
Unit - Kill StormBolt_Dummy[StormBolt_Temp]
Unit - Remove StormBolt_Dummy[StormBolt_Temp] from the game
Unit - Create 1 Dummy Caster for (Owner of StormBolt_Caster[StormBolt_Temp]) at StormBolt_Point4[StormBolt_Temp] facing Default building facing degrees
Unit - Add Storm Bolt Dummy to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
-------- Remove leaks --------
Set StormBolt_Caster[StormBolt_Temp] = StormBolt_Caster[StormBolt_Index]
Set StormBolt_Caster[StormBolt_Temp] = No unit
Set StormBolt_Dummy[StormBolt_Temp] = StormBolt_Dummy[StormBolt_Index]
Set StormBolt_Dummy[StormBolt_Temp] = No unit
Set StormBolt_Target[StormBolt_Temp] = StormBolt_Target[StormBolt_Index]
Set StormBolt_Target[StormBolt_Temp] = No unit
Set StormBolt_Distance[StormBolt_Temp] = StormBolt_Distance[StormBolt_Index]
Set StormBolt_DistanceAdd[StormBolt_Temp] = StormBolt_DistanceAdd[StormBolt_Index]
Set StormBolt_DistanceMax[StormBolt_Temp] = StormBolt_DistanceMax[StormBolt_Index]
Set StormBolt_Point1[StormBolt_Temp] = StormBolt_Point1[StormBolt_Index]
Custom script: call RemoveLocation(udg_StormBolt_Point1[udg_StormBolt_Index])
Set StormBolt_Point2[StormBolt_Temp] = StormBolt_Point2[StormBolt_Index]
Custom script: call RemoveLocation(udg_StormBolt_Point2[udg_StormBolt_Index])
Set StormBolt_Point3[StormBolt_Temp] = StormBolt_Point3[StormBolt_Index]
Custom script: call RemoveLocation(udg_StormBolt_Point3[udg_StormBolt_Index])
Custom script: call RemoveLocation(udg_StormBolt_Point4[udg_StormBolt_Index])
-------- Clear the Index --------
Set StormBolt_Index = (StormBolt_Index - 1)
Set StormBolt_Temp = (StormBolt_Temp - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Index Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
[/trigger]



Easy Spellpack

at Hiveworkshop by GnE.MaP-Cr3at0r (New Account

Give me credits if you used it!
I'm gonna add another spells on next verison! any ideas?




Keywords:
Ignite, Dota, Ogre Magi, Burn, Slow, Sven, Storm, Bolt, Stun
Contents

Easy Spellpack v1.3c (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. 14:59, 23rd Apr 2014 BPower: Personally I like this tutorial very much. For now you code doesn't match the required standart of spell submissions.

Moderator

M

Moderator

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

14:59, 23rd Apr 2014
BPower:
Personally I like this tutorial very much.
For now you code doesn't match the required standart of spell submissions.
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
Okay, anyway, I'am newbie on triggers :)

EDIT: And this trigger can helps those newbie too! i think -.-'

It really can't help anyone as this is not MUI and is way to simple.

Take a look at my tutorial. Things you should know when using triggers / gui. The chapter on how to index will help you to make MUI spells.
Also the rest of the tutorial will give you valuable information on how to code in GUI.
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
Having 1 x anything is pointless. It should be removed.
[|trigger]Set IgniteTimer[Ignite_Index] = (4 + (1 x (Level of Ignite for IgniteCaster[Ignite_Index])))[/|trigger]

Damage should be stored as this is called many times by the end of the spell. [|trigger] (33.00 + (11.00 x (Real((Level of Ignite for IgniteCaster[Ignite_Index])))))[/|trigger]

Spells should never be 1.00 loop. They should have a 0.03 loop in GUI.

All unit variables should be set to no unit after being de-indexed.
 
Level 9
Joined
Feb 15, 2013
Messages
372
So you mean the timer set to real instead of integer and the event per 0.03?
If the 1 x anything is pointless then changed to
Damage[1]=?
Damage[2]=?
??

EDIT: Can i stored the damage and make like this?
Example:
Damage[1] = 2
Damage[2] = 4
Damage[3] = 8
Damages = Level of ability of Triggering Unit

Then at second trigger
Cause Triggering Unit to damage Target Unit, dealing Damage[Damages] blablabla?
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
So you mean the timer set to real instead of integer and the event per 0.03?
This event is always a real. It is not an integer.
  • Time - Every 1.00 seconds of game time
If you mean your variable used for counting it can stay as an integer but it is preferred to be a real.

If the 1 x anything is pointless then changed to
Damage[1]=?
Damage[2]=?
??

EDIT: Can i stored the damage and make like this?
Example:
Damage[1] = 2
Damage[2] = 4
Damage[3] = 8
Damages = Level of ability of Triggering Unit

Then at second trigger
Cause Triggering Unit to damage Target Unit, dealing Damage[Damages] blablabla?

One times anything equals that number. So you can change this.
  • Set IgniteTimer[Ignite_Index] = (4 + (1 x (Level of Ignite for IgniteCaster[Ignite_Index])))
to this
  • Set IgniteTimer[Ignite_Index] = (4 + (Level of Ignite for IgniteCaster[Ignite_Index]))
And yes you can do the above for the damage of units.
 
Level 9
Joined
Feb 15, 2013
Messages
372
Okay, i update now and i will try

EDIT:
How about now?
[trigger="Ignite]
Ignite
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ignite
Actions
-------- To Set The Unit --------
Set Ignite_Index = (Ignite_Index + 1)
Set IgniteCaster[Ignite_Index] = (Triggering unit)
Set IgniteTarget[Ignite_Index] = (Target unit of ability being cast)
-------- To Set The Damage of Burn --------
Set Ignite_Damage[1] = 4.54
Set Ignite_Damage[2] = 5.45
Set Ignite_Damage[3] = 6.81
Set Ignite_Damages = (Level of Ignite for IgniteCaster[Ignite_Loop_Integer])
-------- To Set The Duration of Burn --------
Set IgniteTimer[Ignite_Index] = 0.00
-------- To Check the Index --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite_Index Equal to 1
Then - Actions
Trigger - Turn on Ignite Damage <gen>
Else - Actions
[/trigger]
[trigger=Ignite Damage]
Ignite Damage
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
-------- To Burn the Target --------
For each (Integer Ignite_Loop_Integer) from 1 to Ignite_Index, do (Actions)
Loop - Actions
Special Effect - Create a special effect attached to the origin of IgniteTarget[Ignite_Loop_Integer] using Environment\LargeBuildingFire\LargeBuildingFire1.mdl
Unit - Cause IgniteCaster[Ignite_Loop_Integer] to damage IgniteTarget[Ignite_Loop_Integer], dealing Ignite_Damage[Ignite_Damages] damage of attack type Spells and damage type Fire
Special Effect - Destroy (Last created special effect)
Set IgniteTimer[Ignite_Loop_Integer] = (IgniteTimer[Ignite_Loop_Integer] + 0.03)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IgniteTimer[Ignite_Loop_Integer] Greater than or equal to (3.00 + (Real((Level of Ignite for IgniteCaster[Ignite_Loop_Integer]))))
Then - Actions
Set IgniteTimer[Ignite_Loop_Integer] = IgniteTimer[Ignite_Index]
Set IgniteCaster[Ignite_Loop_Integer] = IgniteCaster[Ignite_Index]
Set IgniteCaster[Ignite_Loop_Integer] = No unit
Set IgniteTarget[Ignite_Loop_Integer] = IgniteTarget[Ignite_Index]
Set IgniteTarget[Ignite_Loop_Integer] = No unit
Set Ignite_Index = (Ignite_Index - 1)
Set Ignite_Loop_Integer = (Ignite_Loop_Integer - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite_Index Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
[/trigger]
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
Your special effect should be done in the cast trigger not in the loop trigger unless it is needed.
I'm not sure where you have a dummy unit in the triggers above. To move a unit at that speed either set it to move in the first trigger and order it to move or use SetUnitX/Y. (there is a chapter in my tutorial on that) You can set the units animation then use SetUnitX/Y to move a unit over any distance at any speed while showing the unit walking / standing / or whatever else you want.
 
Level 9
Joined
Feb 15, 2013
Messages
372
Can i set it like this?

In first trigger,
Dummy_Distance = 0.00
Dummy_DistanceAdd = 25.00
Dummy_DistanceMax = Distance between Triggering Unit and Target Unit being cast

2nd trigger,
Every 0.03 seconds

Set Dummy_Distance = Dummy_Distance + Dummy_DistanceAdd
Move Dummy to Dummy_Distance
If Dummy_Distance greater than or equal to Dummy_DistanceMax
Add ability to dummy
Call dummy to cast storm bolt to target...

I'm making another spell x)

EDIT: why it still error? i already clear leaks
call RemoveLocation(udg_StormBolt_Point1[udg_StormBolt_Index])

[trigger="Storm Bolt"]
Storm Bolt
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Storm Bolt
Actions
-------- Index --------
Set StormBolt_Index = (StormBolt_Index + 1)
-------- Configuration --------
Set StormBolt_Caster[StormBolt_Index] = (Triggering unit)
Set StormBolt_Point1[StormBolt_Index] = (Position of StormBolt_Caster[StormBolt_Index])
Set StormBolt_Target[StormBolt_Index] = (Target unit of ability being cast)
Set StormBolt_Point2[StormBolt_Index] = (Position of StormBolt_Target[StormBolt_Index])
Set StormBolt_Group[StormBolt_Index] = (Units within 250.00 of (Position of StormBolt_Target[StormBolt_Index]) matching ((((Matching unit) is A structure) Equal to False) or ((((Matching unit) is alive) Equal to True) or (((Matching unit) belongs to an enemy of (Owner of StormBolt_Caster[StormBolt
-------- The Dummy Ability --------
Set StormBolt_Ability = Storm Bolt
Unit - Create 1 Storm Bolt Dummy for (Owner of StormBolt_Caster[StormBolt_Index]) at StormBolt_Point1[StormBolt_Index] facing (Angle from StormBolt_Point1[StormBolt_Index] to StormBolt_Point2[StormBolt_Index]) degrees
Set StormBolt_Dummy[StormBolt_Index] = (Last created unit)
Set StormBolt_Point3[StormBolt_Index] = (Position of StormBolt_Dummy[StormBolt_Index])
Set StormBolt_DistanceMax[StormBolt_Index] = (Distance between StormBolt_Point1[StormBolt_Index] and StormBolt_Point2[StormBolt_Index])
Set StormBolt_Distance[StormBolt_Index] = 0.00
Set StormBolt_DistanceAdd[StormBolt_Index] = 25.00
-------- Check the Index --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Index Equal to 1
Then - Actions
Trigger - Turn on Storm Bolt Loop <gen>
Else - Actions
[/trigger]
[trigger="Storm Bolt Loop"]
Storm Bolt Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
-------- Dummy Move --------
For each (Integer StormBolt_Temp) from 1 to StormBolt_Index, do (Actions)
Loop - Actions
-------- The Current Location of Dummy --------
Set StormBolt_Distance[StormBolt_Temp] = (StormBolt_Distance[StormBolt_Temp] + StormBolt_DistanceAdd[StormBolt_Temp])
Unit - Move StormBolt_Dummy[StormBolt_Temp] instantly to (StormBolt_Point3[StormBolt_Temp] offset by StormBolt_Distance[StormBolt_Temp] towards (Facing of StormBolt_Dummy[StormBolt_Temp]) degrees), facing (Angle from StormBolt_Point1[StormBolt_Temp] to StormBolt_Point2[StormBolt_Temp]) degrees
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Distance[StormBolt_Temp] Greater than or equal to StormBolt_DistanceMax[StormBolt_Temp]
Then - Actions
-------- Dealt damage and stun --------
Unit Group - Pick every unit in StormBolt_Group[StormBolt_Temp] and do (Actions)
Loop - Actions
Unit - Add Storm Bolt Dummy to StormBolt_Dummy[StormBolt_Temp]
Unit - Order StormBolt_Dummy[StormBolt_Temp] to Human Mountain King - Storm Bolt (Picked unit)
Unit - Kill StormBolt_Dummy[StormBolt_Temp]
Unit - Remove StormBolt_Dummy[StormBolt_Temp] from the game
-------- Remove leaks --------
Set StormBolt_Caster[StormBolt_Temp] = StormBolt_Caster[StormBolt_Index]
Set StormBolt_Caster[StormBolt_Temp] = No unit
Set StormBolt_Dummy[StormBolt_Temp] = StormBolt_Dummy[StormBolt_Index]
Set StormBolt_Dummy[StormBolt_Temp] = No unit
Set StormBolt_Target[StormBolt_Temp] = StormBolt_Target[StormBolt_Index]
Set StormBolt_Target[StormBolt_Temp] = No unit
Set StormBolt_Distance[StormBolt_Temp] = StormBolt_Distance[StormBolt_Index]
Set StormBolt_DistanceAdd[StormBolt_Temp] = StormBolt_DistanceAdd[StormBolt_Index]
Set StormBolt_DistanceMax[StormBolt_Temp] = StormBolt_DistanceMax[StormBolt_Index]
Set StormBolt_Point1[StormBolt_Temp] = StormBolt_Point1[StormBolt_Index]
Set StormBolt_Point2[StormBolt_Temp] = StormBolt_Point2[StormBolt_Index]
Set StormBolt_Point3[StormBolt_Temp] = StormBolt_Point3[StormBolt_Index]
Set StormBolt_Group[StormBolt_Temp] = StormBolt_Group[StormBolt_Index]
Custom script: call DestroyGroup(udg_StormBolt_Group[udg_StormBolt_Index])
Custom script: call RemoveLocation(udg_StormBolt_Point1[StormBolt_Temp])
Custom script: call RemoveLocation(udg_StormBolt_Point2[StormBolt_Temp])
Custom script: call RemoveLocation(udg_StormBolt_Point3[StormBolt_Temp])
-------- Clear the Index --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
StormBolt_Index Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions

[/trigger]

It do move, but didn't damage target and the error still appears say that decleared variable
 
  • -------- To Set The Damage of Burn --------
  • Set Ignite_Damage[1] = 3.03
  • Set Ignite_Damage[2] = 3.40
  • Set Ignite_Damage[3] = 3.89
Run this crap on Map initialization. Not every time someone casts the spell.

Also, you have leaks here:

  • Unit - Create 1 Dummy Caster for (Owner of StormBolt_Caster[StormBolt_Temp]) at (Position of StormBolt_Dummy[StormBolt_Temp]) facing Default building facing degrees
And in a bunch of other places.
 
Level 12
Joined
Oct 16, 2010
Messages
680
  • -------- Trust me, this is best damage. Unless you want it lower with long durations --------
  • Set Ignite_Damage[1] = 3.03
  • Set Ignite_Damage[2] = 3.40
  • Set Ignite_Damage[3] = 3.89

every map is different, let the user decide what fits his needs

so change it a bit like:
  • -------- Configure these to fit your needs --------
  • -------- Damage Per Second at level 1,2,3 --------
    • Set Ignite_Damage[1] = 40
    • Set Ignite_Damage[2] = 50
    • Set Ignite_Damage[3] = 60
looks much better to me:/

and in the loop trigger change the damage to
dealing Ignite_Damage[Ignite_Damages]*0,03

also duration should be configurable too, so users don't need to dig in your triggers:)
 
  • Set Ignite_Damage[1] = 3.03
  • Set Ignite_Damage[2] = 3.40
  • Set Ignite_Damage[3] = 3.89
Perhaps the full damage for easier configuration? Then you can divide it yourself (multiply below 1.00).

You can make a lot more stuff configurable.

  • Special Effect - Create a special effect attached to the origin of IgniteTarget[Ignite_Index] using Environment\LargeBuildingFire\LargeBuildingFire1.mdl
  • Unit - Cause [....], dealing Ignite_Damage[Ignite_Level] damage of attack type >>Spells<< and damage type >>Fire<<
  • IgniteTimer[Ignite_Loop_Integer] Greater than or equal to >>(3.00 + (Real((Level of Ignite for IgniteCaster[Ignite_Loop_Integer]))))<<
  • Set StormBolt_Group[StormBolt_Index] = (Units within >>250.00<<
You can make this configurable instead of indexed array variable:
  • Set StormBolt_DistanceAdd[StormBolt_Index] = 25.00
Create only one dummy for this. Set movement speed (so it doesn't have to turn) and cast backswing/point to 0 (instant cast).
  • -------- Dealt damage and stun --------
  • Unit Group - Pick every unit in StormBolt_Group[StormBolt_Temp] and do (Actions)
  • Loop - Actions
  • Unit - Kill StormBolt_Dummy[StormBolt_Temp]
  • Unit - Remove StormBolt_Dummy[StormBolt_Temp] from the game
  • Unit - Create 1 Dummy Caster for (Owner of StormBolt_Caster[StormBolt_Temp]) at StormBolt_Point4[StormBolt_Temp] facing Default building facing degrees
  • Unit - Add Storm Bolt Dummy to (Last created unit)
  • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
No need, units are removed after death.
  • Storm Bolt Dummy
  • Events
  • Unit - A unit Dies
  • Conditions
  • Or - Any (Conditions) are true
  • Conditions
  • (Unit-type of (Dying unit)) Equal to Storm Bolt Dummy
  • (Unit-type of (Dying unit)) Equal to Dummy Caster
  • Actions
  • Unit - Remove (Dying unit) from the game
As a side note also use Triggering Unit over Dying Unit.
 
The way you set the group right now will stun enemies that were around the target when the ability is cast, even though when it arrives they've ran far away. This also means that newly arrived enemies won't be stunned. The group should be set right before picking.

An efficient way to loop would be setting the Picked Unit to a variable then filtering it in an If/Then/Else.
 
Level 12
Joined
Oct 16, 2010
Messages
680
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • StormBolt_Distance[StormBolt_Temp] Greater than or equal to StormBolt_DistanceMax[StormBolt_Temp]
  • Then - Actions
  • -------- Dealt damage and stun --------
  • ------- SET GROUP RIGHT HERE -------
  • Set StormBolt_Group[StormBolt_Temp]= (Units within 250.00 of (Position of StormBolt_Target[StormBolt_Index]) matching ((((Matching unit) is A structure) Equal to False) or ((((Matching unit) is alive) Equal to True) or (((Matching unit) belongs to an enemy of (Owner of StormBolt_Caster[StormBolt
  • Unit Group - Pick every unit in StormBolt_Group[StormBolt_Temp] and do (Actions)
  • Loop - Actions
  • Unit - Kill StormBolt_Dummy[StormBolt_Temp]
  • Unit - Remove StormBolt_Dummy[StormBolt_Temp] from the game
  • Unit - Create 1 Dummy Caster for (Owner of StormBolt_Caster[StormBolt_Temp]) at StormBolt_Point4[StormBolt_Temp] facing Default building facing degrees
  • Unit - Add Storm Bolt Dummy to (Last created unit)
  • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
for the love of god pls resize your signature....
 
Level 9
Joined
Feb 15, 2013
Messages
372
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • StormBolt_Distance[StormBolt_Temp] Greater than or equal to StormBolt_DistanceMax[StormBolt_Temp]
  • Then - Actions
  • -------- Dealt damage and stun --------
  • ------- SET GROUP RIGHT HERE -------
  • Set StormBolt_Group[StormBolt_Temp]= (Units within 250.00 of (Position of StormBolt_Target[StormBolt_Index]) matching ((((Matching unit) is A structure) Equal to False) or ((((Matching unit) is alive) Equal to True) or (((Matching unit) belongs to an enemy of (Owner of StormBolt_Caster[StormBolt
  • Unit Group - Pick every unit in StormBolt_Group[StormBolt_Temp] and do (Actions)
  • Loop - Actions
  • Unit - Kill StormBolt_Dummy[StormBolt_Temp]
  • Unit - Remove StormBolt_Dummy[StormBolt_Temp] from the game
  • Unit - Create 1 Dummy Caster for (Owner of StormBolt_Caster[StormBolt_Temp]) at StormBolt_Point4[StormBolt_Temp] facing Default building facing degrees
  • Unit - Add Storm Bolt Dummy to (Last created unit)
  • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
  • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
for the love of god pls resize your signature....
Okay I Get It ^^
 
Top