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

Satyr Spell Pack

  • Like
Reactions: Aspard
Spell Pack Contains 4 Spells

Step Through

Kerke makes spatial jump in the target point, all enemies through which it will pass will be slowed for 4 seconds. Casting range increases per level.
Level 1 - 20% slow.
Level 2 - 30% slow.
Level 3 - 40% slow.

StepThrough A
События
Боевая единица - A unit Приводит способность в действие
Условия
(Ability being cast) равно Step Through
Действия
-------- If trigger Step Through B is not used now, we will turn it on --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
ST_Switch равно 0
То - Действия
Триггер - Turn on StepThrough B <gen>
Р&#152;наче - Действия
-------- Having increased ST_Switch on 1, we will display, that the trigger is used, it will allow us to switch off it if it is not used --------
Set ST_Switch = (ST_Switch + 1)
-------- Having increased ST_CastNumber on 1, we will display, that trigger Step Through B began to use one more unit, it will allow to avoid bugs, and will make the trigger mui --------
Set ST_CastNumber = (ST_CastNumber + 1)
-------- true/false Variable ST_Off will allow us not to use trigger Step Through B for a unit finished ability application --------
Set ST_Off[ST_CastNumber] = Да
-------- Let's establish a unit used ability, its position and the target point --------
Set ST_Caster[ST_CastNumber] = (Triggering unit)
Set ST_Point[0] = (Position of ST_Caster[ST_CastNumber])
Set ST_Point[1] = (Target point of ability being cast)
-------- Let's establish a distance between the caster and the target point --------
Set ST_Distance[ST_CastNumber] = (Distance between ST_Point[0] and ST_Point[1])
-------- Let's establish a angle between the caster and the target point --------
Set ST_Angle[ST_CastNumber] = (Angle from ST_Point[0] to ST_Point[1])
-------- Let's establish speed with which our unit will move. --------
Set ST_Speed[ST_CastNumber] = 40.00
-------- This variable displays a transparency of effects of ability --------
Set ST_Fading[ST_CastNumber] = 40.00
-------- Let's turn off collision what allow caster to move through obstacles --------
Боевая единица - Turn collision for ST_Caster[ST_CastNumber] Откл.
Анимация - Play ST_Caster[ST_CastNumber]'s attack animation
-------- Let's remove locations that will allow to avoid laggs --------
Custom script: call RemoveLocation (udg_ST_Point[0])
Custom script: call RemoveLocation (udg_ST_Point[1])


StepThrough B
StepThrough B
События
Время - Every 0.02 seconds of game time
Условия
Действия
-------- Instead of the Integer A we use variable ST --------
For each (Integer ST) from 1 to ST_CastNumber, do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
ST_Off[ST] равно Да
То - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
ST_Distance[ST] меньше или равно 0.00
То - Действия
-------- If caster will reach target point that we will reduce variable ST_Switch on 1 and set ST_Off = false --------
Set ST_Switch = (ST_Switch - 1)
Set ST_Off[ST] = Нет
-------- Let's not forget to turn on collision --------
Боевая единица - Turn collision for ST_Caster[ST] Вкл.
Анимация - Reset ST_Caster[ST]'s animation
-------- If ST_Switch = 0 it means is not used, we can turn off it and reset ST_CastNumber --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
ST_Switch равно 0
То - Действия
Set ST_CastNumber = 0
Триггер - Turn off StepThrough B <gen>
Р&#152;наче - Действия
Р&#152;наче - Действия
-------- We subtract from ST_Distance variable ST_Speed when ST_Distance it becomes equal 0 ability will come to the end --------
Set ST_Distance[ST] = (ST_Distance[ST] - ST_Speed[ST])
-------- We increase ST_Fading that each subsequent effect became more transparent --------
Set ST_Fading[ST] = (ST_Fading[ST] + 1.50)
-------- Let's repeatedly establish position ST_Caster --------
Set ST_Point[2] = (Position of ST_Caster[ST])
Set ST_Point[3] = (ST_Point[2] offset by ST_Speed[ST] towards ST_Angle[ST] degrees)
-------- Let's destroy doodads, and we will move there ST_Caster --------
Декорация - Pick every destructible within 150.00 of ST_Point[2] and do (Декорация - Kill (Picked destructible))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
ST_Effect[ST] равно 2
То - Действия
-------- In order to avoid excessive quantity of effects we will establish variable ST_Effect if it reaches necessary value on its place we will create effect --------
Set ST_Effect[ST] = 0
-------- Our effect - a unit which model is similar to model ST_Caster, it cannot be selected in game --------
Боевая единица - Create 1 Effect: Satyr for (Owner of ST_Caster[ST]) at ST_Point[2] facing ST_Angle[ST] degrees
-------- Let's establish an effect transparency --------
Анимация - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with ST_Fading[ST]% transparency
-------- Let's add the timer on which expiration it will disappear --------
Боевая единица - Add a 0.60 second Общий expiration timer to (Last created unit)
-------- It is necessary that she has not died and has disappeared --------
Боевая единица - Make (Last created unit) Взорвать on death
-------- Let's add to effect ability which will slow down enemies round effect --------
Боевая единица - Add Step Through (Slow) to (Last created unit)
-------- Let's set level of ability we added --------
Боевая единица - Set level of Step Through (Slow) for (Last created unit) to (Level of Step Through for ST_Caster[ST])
Анимация - Play (Last created unit)'s spell animation
-------- Let's put effect on a pause that it anybody has not attacked =) --------
Боевая единица - Пауза (Last created unit)
-------- It that it did not remain here forever --------
Боевая единица - Продолжить the expiration timer for (Last created unit)
-------- Well and visual effect for appearance =) --------
Спецэффект - Create a special effect at ST_Point[3] using Abilities\Spells\Undead\OrbOfDeath\OrbOfDeathMissile.mdl
Спецэффект - Destroy (Last created special effect)
Спецэффект - Create a special effect at ST_Point[3] using Abilities\Spells\Items\AIil\AIilTarget.mdl
Спецэффект - Destroy (Last created special effect)
Р&#152;наче - Действия
-------- If ST_Effect yet has not reached the necessary value we will increase it on 1 --------
Set ST_Effect[ST] = (ST_Effect[ST] + 1)
Боевая единица - Move ST_Caster[ST] instantly to ST_Point[3]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Terrain pathing at ST_Point[3] of type Полет is off) равно Да
То - Действия
-------- If ST_Caster that rests against borders of a map it will stop ability using --------
Set ST_Distance[ST] = 0.00
Р&#152;наче - Действия
-------- Removing location to avoid leaks --------
Custom script: call RemoveLocation (udg_ST_Point[2])
Custom script: call RemoveLocation (udg_ST_Point[3])
Р&#152;наче - Действия



Shadow Ward

Creates Shadow Ward near target enemy unit, if the enemy departs from it on distance more than 400 points it will receive 25% of distance between it and Shadow Ward twice a second. Duration increases with each level.
Level 1 - last 4 seconds.
Level 2 - last 5 seconds.
Level 3 - last 6 seconds.

Shadow Ward A
События
Боевая единица - A unit Приводит способность в действие
Условия
(Ability being cast) равно Shadow Ward
Действия
-------- If trigger Shadow Ward B is not used now, we will turn it on --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SW_Switch равно 0
То - Действия
Триггер - Turn on Shadow Ward B <gen>
Р&#152;наче - Действия
-------- Having increased SW_CastNumber on 1, we will display, that trigger Shadow Call B and C began to use one more unit, it will allow to avoid bugs, and will make the trigger mui --------
Set SW_CastNumber = (SW_CastNumber + 1)
-------- Having increased SW_Switch on 1, we will display, that the trigger is used, it will allow us to switch off it if it is not used --------
Set SW_Switch = (SW_Switch + 1)
-------- true/false Variable SW_Off will allow us not to use trigger Shadow Ward B for a unit finished ability application --------
Set SW_Off[SW_CastNumber] = Да
-------- Let's establish target, caster, positions and other --------
Set SW_Time[SW_CastNumber] = 0.00
Set SW_Effect[SW_CastNumber] = 0
Set SW_Caster[SW_CastNumber] = (Casting unit)
Set SW_Target[SW_CastNumber] = (Target unit of ability being cast)
Set SW_WardPoint[0] = (Position of SW_Target[SW_CastNumber])
-------- Let's create Shadow Ward --------
Боевая единица - Create 1 Shadow Ward for (Owner of SW_Caster[SW_CastNumber]) at SW_WardPoint[0] facing Стандартная ориентация зданий degrees
Set SW_Ward[SW_CastNumber] = (Last created unit)
-------- Adding to Shadow Ward expiration timer --------
Боевая единица - Add a (3.00 + (Real((Level of Shadow Ward for SW_Caster[SW_CastNumber])))) second Общий expiration timer to SW_Ward[SW_CastNumber]
-------- Removing Location --------
Custom script: call RemoveLocation (udg_SW_WardPoint[0])


Shadow Ward B
События
Время - Every 0.05 seconds of game time
Условия
Действия
-------- Instead of the Integer A we use variable SW --------
For each (Integer SW) from 1 to SW_CastNumber, do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SW_Off[SW] равно Да
То - Действия
-------- Increasing SW_Timer by 0.05 As the trigger works every 0.05 seconds --------
Set SW_Time[SW] = (SW_Time[SW] + 0.05)
-------- Let's establish positions Shadow Ward and Target --------
Set SW_WardPoint[1] = (Position of SW_Ward[SW])
Set SW_WardPoint[3] = (Position of SW_Target[SW])
-------- If the distance between Shadow Ward and Target more than the value established by us that occurs the following action --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Distance between SW_WardPoint[1] and SW_WardPoint[3]) больше или равно 400.00
То - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SW_Effect[SW] равно 10
То - Действия
-------- Let's establish SW_Effect = 0 for correct work of the trigger --------
Set SW_Effect[SW] = 0
-------- Let's deal damage SW_Target equal to the set percent from distance between Shadow Ward and Target --------
-------- 0.25 it is percent, we can change it, I recommend to use not so high values for balance observance --------
Боевая единица - Cause SW_Ward[SW] to damage SW_Target[SW], dealing ((Distance between SW_WardPoint[1] and SW_WardPoint[3]) x 0.25) damage of attack type Заклинание and damage type Обычный
Спецэффект - Create a special effect attached to the head of SW_Target[SW] using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
Спецэффект - Destroy (Last created special effect)
Р&#152;наче - Действия
Set SW_Effect[SW] = (SW_Effect[SW] + 1)
Р&#152;наче - Действия
-------- In case of death Shadow Ward, Target or on achievement of set time, the trigger will stop the action --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
Or - Any (Conditions) are true
Условия
SW_Time[SW] больше или равно (3.00 + (Real((Level of Shadow Ward for SW_Caster[SW]))))
(SW_Ward[SW] is dead) равно Да
(SW_Target[SW] is dead) равно Да
То - Действия
Set SW_Off[SW] = Нет
Set SW_Switch = (SW_Switch - 1)
-------- If SW_Switch = 0 it means is not used, we can turn off it and reset SW_CastNumber --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SW_Switch равно 0
То - Действия
Set SW_CastNumber = 0
Триггер - Turn off Shadow Ward B <gen>
Р&#152;наче - Действия
-------- Removing Location to avoid leaks --------
Custom script: call RemoveLocation (udg_SW_WardPoint[1])
Custom script: call RemoveLocation (udg_SW_WardPoint[3])
Р&#152;наче - Действия
Р&#152;наче - Действия


Shadow Touch

Attacking enemy behind, Kerke get chance to stun it for 1 second.
Level 1 - 15% chance.
Level 2 - 20% chance.
Level 3 - 30% chance.

Shadow Touch
События
Боевая единица - A unit Атакован
Условия
And - All (Conditions) are true
Условия
(Level of Shadow Touch for (Attacking unit)) больше 0
((Triggering unit) is Здание) равно Нет
((Triggering unit) belongs to an enemy of (Owner of (Attacking unit))) равно Да
((Triggering unit) is Мир духов) равно Нет
Действия
-------- If the enemy is attacked from a back that there will be a following --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Abs(((Facing of (Attacking unit)) - (Facing of (Triggering unit))))) меньше или равно 90.00
То - Действия
-------- We will establish chance of operation of ability by an establishment of random value of variable SW_Chance --------
Set B_Chance = (Random integer number between 1 and (9 - (2 x (Level of Shadow Touch for (Attacking unit)))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
B_Chance равно 1
То - Действия
-------- if SW_Chance it will be equal 1 that all more low listed actions will work --------
-------- Let's define a position attacking for avoid leaks --------
Set B_Point[0] = (Position of (Attacking unit))
-------- Let's create effect of ability --------
Боевая единица - Create 1 Effect: Satyr for (Owner of (Attacking unit)) at B_Point[0] facing (Facing of (Attacking unit)) degrees
-------- Let's add to it ability Bash which it is possible to edit in Object Manager. --------
Боевая единица - Add Shadow Touch (Bsh) to (Last created unit)
-------- Let's add the timer on which expiration it will disappear --------
Боевая единица - Add a 1.00 second Общий expiration timer to (Last created unit)
-------- It is necessary that she has not died and has disappeared --------
Боевая единица - Make (Last created unit) Взорвать on death
-------- Let's make its transparent and we will order to attack --------
Анимация - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
Боевая единица - Order (Last created unit) to Атаковать (Triggering unit)
-------- Let's add visual effect --------
Спецэффект - Create a special effect attached to the head of (Triggering unit) using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
Спецэффект - Destroy (Last created special effect)
-------- Remove location to avoid leaks --------
Custom script: call RemoveLocation (udg_B_Point[0])
Р&#152;наче - Действия
Р&#152;наче - Действия


Shadow Call

Kerke release a shade similar to it, the shade will follow the specified unit, constantly attacking it. The enemy attacked by a shade receives 100 damage for each blow, and Kerke restores 100 units of health. Shadow Touch works on shadow. Last 10 seconds.

Shadow Call A
События
Боевая единица - A unit Приводит способность в действие
Условия
(Ability being cast) равно Shadow Call
Действия
-------- If trigger Shadow Call B and C is not used now, we will turn it on --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SC_Switch равно 0
То - Действия
Триггер - Turn on Shadow Call B <gen>
Триггер - Turn on Shadow Call C <gen>
Р&#152;наче - Действия
-------- Having increased SC_CastNumber on 1, we will display, that trigger Shadow Call B and C began to use one more unit, it will allow to avoid bugs, and will make the trigger mui --------
Set SC_CastNumber = (SC_CastNumber + 1)
-------- Having increased SC_Switch on 1, we will display, that the trigger is used, it will allow us to switch off it if it is not used --------
Set SC_Switch = (SC_Switch + 1)
-------- true/false Variable SC_Off will allow us not to use trigger Shadow Call B and C for a unit finished ability application --------
Set SC_Off[SC_CastNumber] = Да
-------- Let's establish target, caster, positions and other --------
Set SC_Caster[SC_CastNumber] = (Casting unit)
Set SC_Target[SC_CastNumber] = (Target unit of ability being cast)
Set SC_Point = (Position of SC_Target[SC_CastNumber])
-------- Let's create Effect which will pursue the enemy --------
Боевая единица - Create 1 Effect: Satyr for (Owner of (Casting unit)) at SC_Point facing SC_Point
Set SC_Shadow[SC_CastNumber] = (Last created unit)
-------- Let's add the timer on which expiration it will disappear --------
Боевая единица - Add a 10.00 second Общий expiration timer to SC_Shadow[SC_CastNumber]
-------- It is necessary that she has not died and has disappeared --------
Боевая единица - Make SC_Shadow[SC_CastNumber] Взорвать on death
-------- Let's add to it ability allowing it to see invisible units --------
Боевая единица - Add Shadow Call (Detector) (дух-защитник) to SC_Shadow[SC_CastNumber]
-------- adding Shadow Touch ability to Effect, if caster has learned it --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Level of Shadow Touch for SC_Caster[SC_CastNumber]) больше 0
То - Действия
Боевая единица - Add Shadow Touch to SC_Shadow[SC_CastNumber]
Боевая единица - Set level of Shadow Touch for SC_Shadow[SC_CastNumber] to (Level of Shadow Touch for (Casting unit))
Р&#152;наче - Действия
-------- Giving shared vision over target --------
Боевая единица - Разрешить shared vision of SC_Target[SC_CastNumber] to (Owner of SC_Shadow[SC_CastNumber])
-------- We give the order to attack target --------
Боевая единица - Order SC_Shadow[SC_CastNumber] to Атаковать SC_Target[SC_CastNumber]
Анимация - Change SC_Shadow[SC_CastNumber]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
-------- Set SC_Timer to 0 --------
Set SC_Timer[SC_CastNumber] = 0.00
-------- Removing location to avoid leaks --------
Custom script: call RemoveLocation (udg_SC_Point)


Shadow Call B
События
Время - Every 0.50 seconds of game time
Условия
Действия
For each (Integer SC) from 1 to SC_CastNumber, do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SC_Off[SC] равно Да
То - Действия
-------- Increasing SC_Timer by 0.05 As the trigger works every 0.05 seconds --------
Set SC_Timer[SC] = (SC_Timer[SC] + 0.50)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
Or - Any (Conditions) are true
Условия
SC_Timer[SC] больше или равно 10.00
(SC_Target[SC] is dead) равно Да
То - Действия
-------- If SC_Timer will exceed 10.00, that is 10 seconds ability will be stopped --------
-------- We will reduce variable SC_Switch on 1 and set SC_Off = false --------
Set SC_Off[SC] = Нет
Set SC_Switch = (SC_Switch - 1)
Боевая единица - Kill SC_Shadow[SC]
Спецэффект - Create a special effect attached to the origin of SC_Shadow[SC] using Abilities\Spells\Items\AIil\AIilTarget.mdl
Спецэффект - Destroy (Last created special effect)
-------- If SC_Switch = 0 then we turn off triggers and reset indexing --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SC_Switch равно 0
То - Действия
Set SC_CastNumber = 0
Триггер - Turn off Shadow Call B <gen>
Триггер - Turn off Shadow Call C <gen>
Р&#152;наче - Действия
Р&#152;наче - Действия
-------- Otherwise we order to attack target --------
Боевая единица - Order SC_Shadow[SC] to Атаковать SC_Target[SC]
Р&#152;наче - Действия


Shadow Call C
События
Боевая единица - A unit Атакован
Условия
(Level of Shadow Call (Detector) (дух-защитник) for (Attacking unit)) не равно 0
Действия
For each (Integer SC) from 1 to SC_CastNumber, do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
SC_Off[SC] равно Да
То - Действия
-------- If SC_Shadow attack target, it deal damage to it and restore hp for SC_Caster --------
Боевая единица - Cause SC_Shadow[SC] to damage SC_Target[SC], dealing (50.00 + (50.00 x (Real((Level of Shadow Call for SC_Caster[SC]))))) damage of attack type Заклинание and damage type Обычный
Боевая единица - Set life of SC_Caster[SC] to ((Здоровье of SC_Caster[SC]) + (50.00 + (50.00 x (Real((Level of Shadow Call for SC_Caster[SC]))))))
Р&#152;наче - Действия



My World Editor almost completely in Russian, because of it at use "copy as text" the text becomes not read. Such description than its absence is All the same better. I apologise

Keywords:
Satyr Spell Pack
Contents

Satyr Spell Pack (Map)

Reviews
21:41, 16th Jun 2010 Hanky: The indexing system you are using is kinda ineffective. But well, your spellpack is leakless and MUI so it's useful enough. Approved!

Moderator

M

Moderator

21:41, 16th Jun 2010
Hanky:
The indexing system you are using is kinda ineffective. But well, your spellpack is leakless and MUI so it's useful enough. Approved!
 
Level 11
Joined
Jul 2, 2008
Messages
601
What can I say? I like it :p
Good synergy of abilities, though seperetaly from each other they are widely represented on different wc3 modding sites, which means that ideas are not such a creative thing. Triggering is clean and accompanied with custom comments :p Didn't find any leaks, though I didn't read each line :)

Overall, I can give it a rating of 3 and suggest fixing one thing: in your step through - please, make it so, that there is no "illusion" at the target place of ability being cast. That just looks a bit ugly, when there are both hero and moving illusion at one place ;(

Just after that I'll vote for approval

EDIT: That's really cool now, I'm glad you managed to understand, what I've meant ;)
 
Last edited:
Level 1
Joined
Sep 24, 2012
Messages
4
When I import Shadow Touch I get script errors in this lines:

set udg_B_Point[0] = GetUnitLoc(GetAttacker())

call CreateNUnitsAtLoc( 1, 'h00H', GetOwningPlayer(GetAttacker()), udg_B_Point[0], GetUnitFacing(GetAttacker()) )

call RemoveLocation (udg_B_Point[0])

And I got no idea to fix that. =/

/fixed
 
Last edited:
Top