- Joined
- Feb 8, 2015
- Messages
- 93
Hello Hive!
I'm trying to make an ability somewhat reminiscent of Sea Witch's Tornado - but slightly changed...
The ability spawns a Firelord which launches projectiles at random like a volcano (I use temporary catapult units for that). As long as the caster channels
The catapult bit works fairly well, although somewhat awkwardly, but my true problems are these:
1. Is there a smart way to detect when a unit is channeling the ability? So that I can stop the trigger in case of stuns/etc. (The ability is based off of "Channel" btw)
2. I want the Firelord to be moveable through simple move/attack orders, so when the caster is "issused order targeting point/unit" that order is ignored, and the Firelord moves instead
I already have the Firelord moving alright, but the caster still follows orders, can I make him ignore all these while channeling?
The trigger is 4-fold, though it could be done in less, I think it looks more manageable like this...
Spell name is World Breaker
Init trigger = initial settings for the cast. The spell does NOT have to be MUI
FireLoop = the loop responsible for firing the projectiles
MoveLoop = the trigger supposed to let the Firelord Slide when the Caster/Channeler is being issued an order
Reposition = the trigger supposed to make the caster ignore orders, while allowing the Firelord to be redirected instead.
The reason why I don't just let the Firelord be controlled through being a clickable-unit is because it's a rather large, scary model, and I want to use Locust on it to prevent it from being the only thing people can click (it's a player vs. player strategy map)
I'm trying to make an ability somewhat reminiscent of Sea Witch's Tornado - but slightly changed...
The ability spawns a Firelord which launches projectiles at random like a volcano (I use temporary catapult units for that). As long as the caster channels
The catapult bit works fairly well, although somewhat awkwardly, but my true problems are these:
1. Is there a smart way to detect when a unit is channeling the ability? So that I can stop the trigger in case of stuns/etc. (The ability is based off of "Channel" btw)
2. I want the Firelord to be moveable through simple move/attack orders, so when the caster is "issused order targeting point/unit" that order is ignored, and the Firelord moves instead
I already have the Firelord moving alright, but the caster still follows orders, can I make him ignore all these while channeling?
The trigger is 4-fold, though it could be done in less, I think it looks more manageable like this...
-
World Breaker Initiate
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Firelord Assault Dummy
-
-
Actions
-
-------- Init setup --------
-
Set WB_Caster = (Triggering unit)
-
Set WB_CasterLoc = (Position of WB_Caster)
-
Unit - Set WB_Caster movement speed to 0.00
-
Set WB_MovP = (Target point of ability being cast)
-
Set WB_Tempi1 = (Level of Firelord Assault Dummy for WB_Caster)
-
-------- Creating the Dummy --------
-
Set WB_Tempp1 = (Target point of ability being cast)
-
Unit - Create 1 Firelord Dummy for (Owner of WB_Caster) at WB_Tempp1 facing Default building facing degrees
-
Set WB_Dummy = (Last created unit)
-
-------- Lightning Effect --------
-
Lightning - Create a Finger of Death lightning effect from source WB_CasterLoc to target WB_Tempp1
-
-------- Turns on the Loop Triggers --------
-
Trigger - Turn on World Breaker FireLoop <gen>
-
Trigger - Turn on World Breaker MoveLoop <gen>
-
-
-
World Breaker FireLoop
-
Events
-
Time - Every 0.33 seconds of game time
-
-
Conditions
-
Actions
-
-------- Init setup --------
-
Set WB_ang1 = (Random angle)
-
Set WB_Tempr1 = (Random real number between 25.00 and (325.00 + (25.00 x (Real(WB_Tempi1)))))
-
Set WB_Aimp = (WB_Tempp1 offset by WB_Tempr1 towards WB_ang1 degrees)
-
-------- Runs the catapults --------
-
Unit - Create 1 Catapult Fire (Dummy) for (Owner of WB_Caster) at WB_Tempp1 facing WB_ang1 degrees
-
Set WB_Tempu = (Last created unit)
-
Unit - Order WB_Tempu to Attack Ground WB_Aimp
-
Unit - Add a 0.34 second Generic expiration timer to WB_Tempu
-
-------- Dummy aesthetics --------
-
Unit - Make WB_Dummy face WB_ang1 over 0.15 seconds
-
Animation - Play WB_Dummy's cast animation
-
-
-
World Breaker MoveLoop
-
Events
-
Time - Every 0.05 seconds of game time
-
-
Conditions
-
Actions
-
Set WB_Tempp1 = (Position of WB_Dummy)
-
Set WB_ang2 = (Angle from WB_Tempp1 to WB_MovP)
-
Set WB_Tempp2 = (WB_Tempp1 offset by 5.00 towards WB_ang2 degrees)
-
-------- Moves dummy --------
-
Custom script: call SetUnitX((udg_WB_Dummy), GetLocationX(udg_WB_Tempp2))
-
Custom script: call SetUnitY((udg_WB_Dummy), GetLocationY(udg_WB_Tempp2))
-
-------- Moves the Lightning effect --------
-
Lightning - Move WB_Lightning to source WB_CasterLoc and target WB_Tempp1
-
-------- Cleanup --------
-
Custom script: call RemoveLocation(udg_WB_Tempp2)
-
-
-
World Breaker Reposition
-
Events
-
Unit - A unit Is issued an order targeting a point
-
Unit - A unit Is issued an order targeting an object
-
-
Conditions
-
(Triggering unit) Equal to WB_Caster
-
-
Actions
-
-------- Prevents the caster from interrupting himself --------
-
Trigger - Turn off (This trigger)
-
Unit - Order WB_Caster to Neutral Fire Lord - Volcano WB_Tempp1
-
Trigger - Turn on (This trigger)
-
-------- See "MoveLoop" for repositioning --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
(Issued order) Equal to (Order(patrol))
-
(Issued order) Equal to (Order(attack))
-
-
-
-
Then - Actions
-
Set WB_MovP = (Position of (Target unit of issued order))
-
Game - Display to (All players) the text: Target unit
-
-
Else - Actions
-
Set WB_MovP = (Target point of issued order)
-
Game - Display to (All players) the text: Target point
-
-
-
-
Spell name is World Breaker
Init trigger = initial settings for the cast. The spell does NOT have to be MUI
FireLoop = the loop responsible for firing the projectiles
MoveLoop = the trigger supposed to let the Firelord Slide when the Caster/Channeler is being issued an order
Reposition = the trigger supposed to make the caster ignore orders, while allowing the Firelord to be redirected instead.
The reason why I don't just let the Firelord be controlled through being a clickable-unit is because it's a rather large, scary model, and I want to use Locust on it to prevent it from being the only thing people can click (it's a player vs. player strategy map)