This spells created by me, they're similar to DotA hero {Tiny}.
The spells are GUI and MUI.
Please give me credits if you used it.
BY Storm_hih
Triggers :
1.Toss Start
Trigger
Toss
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Toss
Actions
Set TossCount = (TossCount + 1) Set TossU[TossCount] = (Triggering unit) Set TossUT[TossCount] = (Target unit of ability being cast) Set TossPoint = (Position of TossU[TossCount]) Set TossCounter[TossCount] = 0 Set TossGroup = (Units within 250.00 of TossPoint matching ((((Matching unit) is A structure) Not equal to True) and (((Matching unit) Not equal to TossU[TossCount]) and ((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) is alive) Equal to True))))) Set TossUP[TossCount] = (Random unit from TossGroup) Set TossAC[TossCount] = 0 Unit - Turn collision for TossUP[TossCount] Off Unit - Add Storm Crow Form to TossUP[TossCount] Unit - Remove Storm Crow Form from TossUP[TossCount] Unit - Pause TossUP[TossCount] If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TossUP[TossCount] Equal to No unit
Then - Actions
Unit - Order TossU[TossCount] to Stop Set TossStop[TossCount] = 1 Set TossPlayer = (Player group((Owner of TossU[TossCount]))) Cinematic - Clear the screen of text messages for TossPlayer Game - Display to TossPlayer for 8.00 seconds the text: ... Player Group - Pick every player in TossPlayer and do (Actions)
Loop - Actions
Custom script: if GetLocalPlayer() == GetEnumPlayer() then Sound - Play Error <gen> Custom script: endif
Custom script: call DestroyForce (udg_TossPlayer) Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + 120.00)
Else - Actions
Special Effect - Create a special effect attached to the chest of TossUP[TossCount] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl Special Effect - Destroy (Last created special effect)
For each (Integer TossLoop) from 1 to TossCount, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TossStop[TossLoop] Equal to 0
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TossCounter[TossLoop] Less than or equal to 53
Then - Actions
Set TossCounter[TossLoop] = (TossCounter[TossLoop] + 1) Animation - Change TossUP[TossLoop] flying height to (775.00 - ((((Real(TossCounter[TossLoop])) - 25.00) x ((Real(TossCounter[TossLoop])) - 25.00)) - 25.00)) at 0.00 Set TossP2[TossLoop] = (Position of TossUT[TossLoop]) Set TossP3[TossLoop] = (Position of TossUP[TossLoop]) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TossUP[TossLoop] has buff Cluster Rockets) Equal to True (TossUP[TossLoop] belongs to an enemy of (Owner of TossU[TossLoop])) Equal to True TossAC[TossLoop] Less than 4
Then - Actions
Unit - Cause TossU[TossLoop] to damage TossUP[TossLoop], dealing (0.35 x (75.00 x (Real((Level of Avalanche for TossU[TossLoop]))))) damage of attack type Magic and damage type Universal Set TossAC[TossLoop] = (TossAC[TossLoop] + 1)
Else - Actions
Set TossCheckGroup = (Units within 80.00 of TossP2[TossLoop] matching ((Matching unit) Equal to TossUP[TossLoop])) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TossCheckGroup is empty) Equal to True
Then - Actions
Set TossP4[TossLoop] = (TossP3[TossLoop] offset by ((Distance between TossP3[TossLoop] and TossP2[TossLoop]) / (50.00 - (Real(TossCounter[TossLoop])))) towards (Angle from TossP3[TossLoop] to TossP2[TossLoop]) degrees) Unit - Move TossUP[TossLoop] instantly to TossP4[TossLoop] Custom script: call RemoveLocation (udg_TossP4[udg_TossLoop])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TossCounter[TossLoop] Greater than 53
Then - Actions
Animation - Change TossUP[TossLoop] flying height to (Default flying height of TossUP[TossLoop]) at 0.00 Unit - Turn collision for TossUP[TossLoop] On Unit - Unpause TossUP[TossLoop] Special Effect - Create a special effect attached to the origin of TossUP[TossLoop] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl Special Effect - Destroy (Last created special effect) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TossUP[TossLoop] belongs to an enemy of (Owner of TossU[TossLoop])) Equal to True
Then - Actions
Unit - Cause TossU[TossLoop] to damage TossUP[TossLoop], dealing ((0.20 + (0.20 x (Real((Level of Grow for TossU[TossLoop]))))) x (75.00 x (Real((Level of Toss for TossU[TossLoop]))))) damage of attack type Magic and damage type Universal
Else - Actions
Set TossP[TossLoop] = (Position of TossUP[TossLoop]) Set TossP2[TossLoop] = (Position of TossUT[TossLoop]) Set TossCheckGroup = (Units within 200.00 of TossP2[TossLoop] matching (((Matching unit) Not equal to TossU[TossLoop]) and (((Matching unit) Not equal to TossUP[TossLoop]) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit) belongs to an enemy of (Owne Unit Group - Pick every unit in TossCheckGroup and do (Actions)
Loop - Actions
Set TossPickedUnit[TossLoop] = (Picked unit) Unit - Cause TossU[TossLoop] to damage TossPickedUnit[TossLoop], dealing (0.00 + (75.00 x (Real((Level of Toss for TossU[TossLoop]))))) damage of attack type Magic and damage type Universal Set TossPickedUnit[TossLoop] = No unit
Custom script: call DestroyGroup (udg_TossCheckGroup) Destructible - Pick every destructible in (Region centered at TossP[TossLoop] with size (275.00, 275.00)) and do (Actions)
Loop - Actions
Set TossPickedDest[TossLoop] = (Picked destructible) Destructible - Kill TossPickedDest[TossLoop] Set TossPickedDest[TossLoop] = No destructible
Set TossU[TossLoop] = No unit Custom script: call RemoveLocation (udg_TossP[udg_TossLoop]) Custom script: call RemoveLocation (udg_TossP2[udg_TossLoop]) Custom script: call RemoveLocation (udg_TossP3[udg_TossLoop]) Custom script: call RemoveLocation (udg_TossP4[udg_TossLoop]) Set TossP[TossLoop] = (Position of TossUT[TossLoop]) Unit - Move TossUP[TossLoop] instantly to TossP[TossLoop] Custom script: call RemoveLocation (udg_TossP[udg_TossLoop]) Set TossUT[TossLoop] = No unit Set TossUP[TossLoop] = No unit Set TossStop[TossLoop] = 1
Else - Actions
Else - Actions
3.Hard Skin
Trigger
Events
Unit - A unit Is attacked
Conditions
((Attacked unit) has buff Hard Skin ) Equal to True ((Attacking unit) belongs to an enemy of (Owner of (Attacked unit))) Equal to True
Actions
Set SkinPoint = (Position of (Attacked unit)) Set SkinGroup = (Units within 300.00 of SkinPoint matching ((Matching unit) Equal to (Attacking unit))) Unit Group - Pick every unit in SkinGroup and do (Actions)
Loop - Actions
Set SkinChance = (Random integer number between 1 and 100) If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SkinChance Less than or equal to (6 x (Level of Hard Skin for (Attacked unit)))
Then - Actions
Unit - Create 1 Peasant for (Owner of (Attacked unit)) at (Position of (Attacked unit)) facing Default building facing degrees Unit - Set level of Skin Stun for (Last created unit) to (Level of Skin Stun for (Last created unit)) Unit - Order (Last created unit) to Neutral - Hurl Boulder (Attacking unit) Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Set AvaP[1] = (Position of (Triggering unit)) Set AvaP[2] = (Target point of ability being cast) Unit - Create 1 Peasant for (Owner of (Triggering unit)) at AvaP[1] facing 0.00 degrees Unit - Add Avalanche D to (Last created unit) Unit - Set level of Avalanche D for (Last created unit) to (Level of Avalanche for (Triggering unit)) Unit - Order (Last created unit) to Neutral Tinker - Cluster Rockets AvaP[2] Unit - Add a 2.50 second Generic expiration timer to (Last created unit) Custom script: call RemoveLocation (udg_AvaP[1]) Custom script: call RemoveLocation (udg_AvaP[2])
6.Grow
Trigger
Grow
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Grow
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) is in GrowGroup) Not equal to True
Then - Actions
Unit - Add War Club to (Triggering unit) Unit Group - Add (Triggering unit) to GrowGroup Unit - Add Grow Damage to (Triggering unit)
Else - Actions
Unit - Set level of Grow Damage for (Triggering unit) to (Level of Grow for (Triggering unit)) Unit - Set (Triggering unit) movement speed to ((Default movement speed of (Triggering unit)) + (20.00 x (Real((Level of Grow for (Triggering unit))))))
7.Grow Scaling Loop
Trigger
Grow R
Events
Time - Every 2.00 seconds of game time
Conditions Actions
Unit Group - Pick every unit in GrowGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) has buff Bloodlust) Not equal to True ((Picked unit) has buff Hex) Not equal to True
Then - Actions
Set GrowPicked = (Picked unit) Animation - Change GrowPicked's size to ((40.00 + (35.00 x (Real((Level of Grow for GrowPicked)))))%, (40.00 + (35.00 x (Real((Level of Grow for GrowPicked)))))%, (40.00 + (35.00 x (Real((Level of Grow for GrowPicked)))))%) of its original size Set GrowPicked = No unit
Else - Actions
Rating - 0.00 (0 votes)
(Hover and click)
Moderator Comments
Unacceptable
22nd July 2012
Magtheridon96:
In addition to Pharaoh_'s comments:
Comments
Trigger
Set TossPlayer = (Player group((Owner of TossU[TossCount])))
Cinematic - Clear the screen of text messages for TossPlayer Game - Display to TossPlayer for 8.00 seconds the text: ... Player Group - Pick every player in TossPlayer and do (Actions) Loop - Actions Custom script: if GetLocalPlayer() == GetEnumPlayer() then Sound - Play Error <gen> Custom script: endif Custom script: call DestroyForce (udg_TossPlayer)
There's a better way to do this, but you can only do it with custom scripts, so.. here you go:
Custom script: set udg_ErrorText = "INSERT_YOUR_TEXT_HERE" Custom script: set udg_TossPlayer = GetOwningPlayer(udg_TossU[udg_TossCount]) Custom script: if GetLocalPlayer() == udg_TossPlayer then Custom script: call ClearTextMessages() Custom script: call DisplayTimedTextToPlayer(udg_TossPlayer, 0, 0, 8, udg_ErrorText) Sound - Play Error <gen> Custom script: endif
ErrorText is a string and TossPlayer is a Player, not a Player group.
Since you're already setting the triggering unit in a variable, why not use that variable rather than repeating the call.
The above point applies to all the other trigger actions. (It's better to cache
things like (Last created unit), (Triggering unit), (Triggering player), etc... into variables rather than repeating the calls.)
There should be some form of configuration here. Right now, all the spells are hard-coded.
When you're picking destructables, you're leaking a region.
You don't need to null global variables. Like at all.
Currently, your spell can destroy bridges. You need to make a dummy peasant unit that is ordered to harvest the
destructables. After ordering him to do so, if his current order is "harvest", then the destructable is in fact a tree.
Your "Clear" trigger could totally bug up a game. You shouldn't be using Peasants as dynamic dummy casters in the first place.
Check out this. Your Hard Skin ability should use this
damage detection system's Damage event rather than using the attack event.
When you set the size of a unit, the last two values could be 0 and it wouldn't matter, because you can't stretch a unit.
The Grow trigger modifies the units movement speed which can conflict with a lot of systems the user might be using :/
Leak
Unit - Create 1 Peasant for (Owner of (Attacked unit)) at (Position of (Attacked unit)) facing Default building facing degrees
^Location leak. Use SkinPoint instead of the (Position ...) call.
You shouldn't add and remove the crow form ability, use this method instead.
This indeed needs heavy modifications.
Pharaoh_'s Review
05:14, 22nd May 2012
Pharaoh_: The triggers could be shorter, by using calculations and not a bunch of if/then/else. Use custom integers and not Integer A. Do not use waits. There is no configurability whatsoever. Unit is attacked is an abuseable event. Triggering unit > Dying unit. Certain location variables don't need an array, use separate ones instead. Store values in a variable, before calling them repeatedly, such as (Picked unit).
Do not reupload the spellpack, update it instead. I will delete your previous one. If you still want my review from that one, make sure to leave me a visitor message.
Told you its not Hard Skin,it is Craggy Exterior
And Avalanche has no triggers needed,you have to use cluster rockets and change the missile model
GEEZ
i have a question where did you get that model?
Told you its not Hard Skin,it is Craggy Exterior
And Avalanche has no triggers needed,you have to use cluster rockets and change the missile model
GEEZ
i have a question where did you get that model?
Avalanche need the dummy because of the channeling.
Iconer, you'll get your self banned like that. Rules are rules.
Second, at least learn English before flaming around.
For some reason I think Storm_hih made this for you, because you defend him like he is your little brother.
@Storm_hih Nothing much to add, just do what pharaoh_ told you.
Iconer, you'll get your self banned like that. Rules are rules.
Second, at least learn English before flaming around.
For some reason I think Storm_hih made this for you, because you defend him like he is your little brother.
@Storm_hih Nothing much to add, just do what pharaoh_ told you.