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

Spirit Spells Pack

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Main Trigger


[trigger="Frist of Spirit"]Frist of Spirit
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to (==) Frist of Spirit
Actions
Set FS_Caster = (Triggering unit)
Set FS_CasterLoc = (Position of FS_Caster)
Set FS_UnitGroup = (Units within 1000.00 of FS_CasterLoc matching ((((Matching unit) is A structure) Not equal to (!=) True) and ((((Matching unit) belongs to an enemy of (Owner of FS_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True))))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in FS_UnitGroup) Greater than (>) 0
Then - Actions
Set FS_Target = (Random unit from FS_UnitGroup)
Set FS_TargetLoc = (Position of FS_Target)
Unit - Create 1 Dummy for (Owner of FS_Caster) at FS_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Animation - Change (Last created unit) flying height to 1000.00 at 0.00
Unit - Add Frist of Spirit (Damage) to (Last created unit)
Unit - Set level of Frist of Spirit (Damage) for (Last created unit) to (Level of (Ability being cast) for FS_Caster)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning FS_Target
Custom script: call RemoveLocation ( udg_FS_TargetLoc )
-------- ======================================================= --------
-------- Don't Copy This --------
Custom script: call Data.ShakeStart(GetOwningPlayer(udg_FS_Target), 1)
-------- ======================================================= --------
Else - Actions
Unit - Set mana of FS_Caster to ((Mana of FS_Caster) + (50.00 x (Real((Level of (Ability being cast) for FS_Caster)))))
Custom script: call RemoveLocation ( udg_FS_CasterLoc )
Custom script: call DestroyGroup ( udg_FS_UnitGroup )[/trigger]

[trigger="Second of Spirit"]Second of Spirit
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to (==) Second of Spirit
Actions
Set SS_Caster = (Triggering unit)
Set SS_Target = (Target unit of ability being cast)
Set SS_TargetLoc = (Position of SS_Target)
Unit - Create 1 Dummy for (Owner of SS_Caster) at SS_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Animation - Change (Last created unit) flying height to 1000.00 at 0.00
Unit - Add Second of Spirit (Damage) to (Last created unit)
Unit - Set level of Second of Spirit (Damage) for (Last created unit) to (Level of (Ability being cast) for SS_Caster)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning SS_Target
Unit - Create 1 Dummy for (Owner of SS_Caster) at SS_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Add Second of Spirit (Disarm) to (Last created unit)
Unit - Order (Last created unit) to Neutral Dark Ranger - Silence SS_TargetLoc
Custom script: call RemoveLocation ( udg_SS_TargetLoc )
-------- ======================================================= --------
-------- Don't Copy This --------
Custom script: call Data.ShakeStart(GetOwningPlayer(udg_SS_Target), 1)
-------- ======================================================= --------[/trigger]

[trigger="Third of Spirit"]Third of Spirit
Events
Unit - A unit Is attacked
Conditions
(Level of Third of Spirit for (Triggering unit)) Greater than (>) 0
(Random integer number between 1 and 100) Less than or equal to (<=) (5 x (Level of Third of Spirit for (Triggering unit)))
Actions
Set TS_Caster = (Triggering unit)
Set TS_CasterLoc = (Position of TS_Caster)
Set TS_UnitGroup = (Units within 500.00 of TS_CasterLoc matching ((((Matching unit) is A structure) Not equal to (!=) True) and ((((Matching unit) belongs to an enemy of (Owner of TS_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True))))
Unit Group - Pick every unit in TS_UnitGroup and do (Actions)
Loop - Actions
Set TS_Target = (Picked unit)
Set TS_TargetLoc = (Position of TS_Target)
Unit - Create 1 Dummy for (Owner of TS_Caster) at TS_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Animation - Change (Last created unit) flying height to 1000.00 at 0.00
Unit - Add Third of Spirit (Damage) to (Last created unit)
Unit - Set level of Third of Spirit (Damage) for (Last created unit) to (Level of Third of Spirit for TS_Caster)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning TS_Target
Custom script: call RemoveLocation ( udg_TS_TargetLoc )
-------- ======================================================= --------
-------- Don't Copy This --------
Custom script: call Data.ShakeStart(GetOwningPlayer(udg_TS_Target), 1)
-------- ======================================================= --------
Custom script: call RemoveLocation ( udg_TS_CasterLoc )
Custom script: call DestroyGroup ( udg_TS_UnitGroup )[/trigger]

[trigger="Ultimate of Spirit"]Ultimate of Spirit
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to (==) Ultimate of Spirit
Actions
Set US_Caster = (Triggering unit)
Set US_CasterLoc = (Position of US_Caster)
Set US_UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is A structure) Not equal to (!=) True) and ((((Matching unit) belongs to an enemy of (Owner of US_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True))))
Unit Group - Pick every unit in US_UnitGroup and do (Actions)
Loop - Actions
Set US_Target = (Picked unit)
Set US_TargetLoc = (Position of US_Target)
Unit - Create 1 Dummy for (Owner of US_Caster) at US_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Animation - Change (Last created unit) flying height to 1000.00 at 0.00
Unit - Add Ultimate of Spirit (Damage) to (Last created unit)
Unit - Set level of Ultimate of Spirit (Damage) for (Last created unit) to (Level of (Ability being cast) for US_Caster)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning US_Target
Custom script: call RemoveLocation ( udg_US_TargetLoc )
-------- ======================================================= --------
-------- Don't Copy This --------
Custom script: call Data.ShakeStart(GetOwningPlayer(udg_US_Target), 1)
-------- ======================================================= --------
Custom script: call DestroyGroup ( udg_US_UnitGroup )
Set US_UnitGroup = (Units within 500.00 of US_CasterLoc matching ((((Matching unit) is A structure) Not equal to (!=) True) and ((((Matching unit) belongs to an enemy of (Owner of US_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True))))
Unit Group - Pick every unit in US_UnitGroup and do (Actions)
Loop - Actions
Set US_Target = (Picked unit)
Set US_TargetLoc = (Position of US_Target)
Unit - Create 1 Dummy for (Owner of US_Caster) at US_TargetLoc facing Default building facing (270.0) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Unit - Add Ultimate of Spirit (Stun) to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt US_Target
Custom script: call RemoveLocation ( udg_US_TargetLoc )
Custom script: call DestroyGroup ( udg_US_UnitGroup )
Custom script: call RemoveLocation ( udg_US_CasterLoc )[/trigger]

Keywords:
yanchespenda, spirit, lightning
Contents

Spirit Spells Pack (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 15:33, 8th Jul 2014 BPower: http://www.hiveworkshop.com/forums/spells-569/spirit-spells-pack-253752/#post2553171

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

15:33, 8th Jul 2014
BPower:
http://www.hiveworkshop.com/forums/spells-569/spirit-spells-pack-253752/#post2553171
 
@yanchaspenda
Rheiko have a good point. This is far from approval.
You need a decent spell for approval, mostly involves timers and such.
Try take a look at Approved Spells.
Rheiko punya poin yang bagus. Ini jauh dari bisa diterima.
Kau perlu sebuah Spell (Sihir) yang bagus untuk bisa diterima di Bagian Spell, biasanya mereka menggunakan waktu, efek periodik dan semacamnya.
Coba lihat Spell yang diterima (Approved).
 
  • Like
Reactions: ILH
The following goes for all of your spells in the pack:

Unit group selection range should be configurable

  • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Kill the dummy but don't remove it, should remove it.

  • Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning FS_Target
Spell damage should not be done through object data, particularly when there is no triggered damage at all

  • Animation - Change (Last created unit) flying height to 1000.00 at 0.00
This flying height should also be configurable

  • Unit - Set mana of FS_Caster to ((Mana of FS_Caster) + (50.00 x (Real((Level of (Ability being cast) for FS_Caster)))))
So should this (keeping in mind that if people change the mana cost of the spell in the object editor)

Overall: When you make simple spells they should be as close to perfection as possible, this is not the case here, even if most of the code is alright, as others have suggested, look up other people's approved spells.
 
Level 19
Joined
Mar 18, 2012
Messages
1,716
Very simple spells.

"-------- Don't Copy This --------", so users should delete????
  • Custom script: call Data.ShakeStart(GetOwningPlayer(udg_TS_Target), 1)
The Tank-Commander makes some good points.

In my eyes the spell pack is too simple for approval.

Anyways:
1. struct Data
The name Data is irritating, keep in mind that there can only be one public struct labeled "Data" within a map. Furthermore I can't see any reason why you should use a static method over a simple function in this case.
Waits are inaccurate and should be avoided if possible.

2. The spells
In general you should add a configuration trigger where ability, effect, aoe, damage, ... can be setup.

I'll set it to Need Fix, however I can't promise if this gets approved even if everything is done well. It's just to easy to code.
 
Top