Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
First of all:
-Sorry for the unoriginal name of the spell, but because it fit the spell effect I used it.
-Sorry for my bad english.
So, what is that ?
It's a spell which I made when I had nothing to do, I made it because circulars spells are my favourite.
How does it works ?
The caster creates three bolts of fire, which will rotate and create a circle which will expand, damaging all units the bolts encounter when they rotate, and destroying trees (I love spells which destroy trees). When the bolts reach the max distance, they disappears.
Anything else ?
The spell is fully MUI and uses hashtable
Credits:
Vladadamm: Helped me to fix my code
Tirlititi: Helped me a lot with the damage and MUI.
-------- We set if the spell uses specials effetcs, if set to false, the spell will use it but the fps may drop (warning do not leave a blank for SFX models, because there is always few effects that won't affect the game/map performances) --------
Set FC_BetterFPS = FALSE
-------- Setting the dummies ID --------
Set FC_DummyType = Dummy (Fire Circle)
-------- We set the max distance the orbs can reach before they disappear --------
Set FC_MaxDistanceBase = 600.00
Set FC_MaxDistanceLevel = 200.00
-------- Setting how fast the circle expends and how fast the orbs rotate. --------
Set FC_Speed_Base = 2.50
Set FC_Speed_Level = 2.50
-------- Setting how often the effects will be created in the loop --------
Set FC_Effect_Timer = 0.09
-------- Setting the units that can be damaged by the spell --------
Set FC_Damage_Air = TRUE
Set FC_Damage_Ground = TRUE
Set FC_Damage_Heroes = TRUE
Set FC_Damage_Immune = FALSE
Set FC_Damage_Mechanical = TRUE
Set FC_Damage_Building = FALSE
-------- Setting the damages of the spell --------
Set FC_Base_Damage = 50.00
Set FC_Level_Damage = 50.00
-------- Setting the "attack" type of the spell --------
Set FC_Attack_Type = Magie
-------- Setting the damage type of the spell --------
Set FC_Damage_Type = Feu
-------- Setting if the spell can do critical damage --------
Set FC_Critical = TRUE
-------- Setting the critical multiplier --------
Set FC_CriticalMultiplier = 2.00
-------- Setting the chances of critical --------
Set FC_CriticalChanceBase = 1.00
Set FC_CriticalChanceLvl = 2.00
-------- Setting the SFX model (disabled if FC_BetterFPS is set to TRUE) --------
Set FC_SFX = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
-------- Setting how close of the dummies the units must be to be damaged(you have to change the dummies ability range of effect too) --------
Set FC_RangeofDamageBase = 150.00
Set FC_RangeofDamageLevel = 0.00
-------- Setting the SFX on damaged units (disabled if FC_BetterFPS is set to TRUE) --------
Set FC_SFX_Damage_Unit = Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
-------- Setting if trees can be destroyed by the spell --------
Set FC_DestroyTrees = TRUE
-------- Setting the "TreeRemover" ID (disabled if FC_Destroy_Trees is set to FALSE) --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
FC_DestroyTrees Egal à TRUE
Alors - Actions
Set FC_TreeRemoverType = TreeRemover (Fire Circle)
-------- Setting the center of the circle so to the caster's position --------
Set FC_TmpPoint = (Position of (Load (Key Caster) of (Key (Picked unit)) in FC_Hashtable))
-------- Increasing the distance so the circle is growing --------
Set FC_Distance = ((Load (Key Distance) of (Key (Picked unit)) from FC_Hashtable) + (FC_Speed_Base + (FC_Speed_Level x (Real((Load (Key Abilitylevel) of (Key (Picked unit)) from FC_Hashtable))))))
Table de hachage - Save FC_Distance as (Key Distance) of (Key (Picked unit)) in FC_Hashtable
-------- Increasing the angle and moving the dummies --------
For each (Integer FC_i) from 1 to 3, do (Actions)
Boucle - Actions
Set FC_Angle_Real = ((Load FC_i of (Key (Picked unit)) from FC_Hashtable) + (FC_Speed_Base + (FC_Speed_Level x (Real((Load (Key Abilitylevel) of (Key (Picked unit)) from FC_Hashtable))))))
Table de hachage - Save FC_Angle_Real as FC_i of (Key (Picked unit)) in FC_Hashtable
Set FC_TmpPoint2 = (FC_TmpPoint offset by (Load (Key Distance) of (Key (Picked unit)) from FC_Hashtable) towards (Load FC_i of (Key (Picked unit)) from FC_Hashtable) degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
((Load (Key Caster) of (Key (Picked unit)) in FC_Hashtable) is alive) Egal à TRUE
Alors - Actions
Set FC_TmpHandle = (Picked unit)
For each (Integer FC_i3) from 1 to 3, do (Actions)
Boucle - Actions
Set FC_TmpPoint2 = (Position of (Load (FC_i3 + 3) of (Key (Picked unit)) in FC_Hashtable))
-------- Checking if the spell can deal critical damage and rolling if the damages will be critical or not --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
FC_Critical Egal à TRUE
Alors - Actions
Set FC_TmpInt = ((Integer(FC_CriticalChanceBase)) + ((Load (Key Abilitylevel) of (Key (Picked unit)) from FC_Hashtable) x (Integer(FC_CriticalChanceLvl))))
Set FC_TmpInt2 = (Random integer number between 1 and 100)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Set FC_Damage = (FC_Damage x FC_CriticalMultiplier)
Sinon - Actions
Set FC_Damage = (FC_Base_Damage + (FC_Level_Damage x (Real((Level of FC_Ability for (Load (Key Caster) of (Key (Picked unit)) in FC_Hashtable))))))
Sinon - Actions
Set FC_Damage = (FC_Base_Damage + (FC_Level_Damage x (Real((Level of FC_Ability for (Load (Key Caster) of (Key (Picked unit)) in FC_Hashtable))))))
Table de hachage - Save FC_Damage as (Key Damage) of FC_TmpInt in FC_Hashtable
-------- Checking if the spell can destroy trees and if it can then destroy the trees --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
FC_DestroyTrees Egal à TRUE
Alors - Actions
Destructible - Pick every destructible within (FC_RangeofDamageTreesBase + (FC_RangeofDamageTreesLevel x (Real((Load (Key Abilitylevel) of (Key (Picked unit)) from FC_Hashtable))))) of FC_TmpPoint2 and do (Actions)
-v1.01: uploaded the spell.
-v1.02: recoded the spell as Almia suggested.
-v1.03: reworked the spell because it got somes problems with indexing.
-v1.04: simplified the code with loops.
-v1.05: added somes comments and added the damage type as parameters, removed the BJs in SetUnitX and SetUnitY, changed the damage trigger period to 0.33 instead of 1.00, so it's more accurate.
-v1.06: the spell now create the sfx each time a customizable timer reach 0 so fps drop is reduced (I recommend using a 0.09/0.12 timer because it's what that make the spell "cute" (for somes reasons somes values like 0.06 or 0.15 create a bug with the effects)
-v1.06b: just changed a little thing with the removing of the dummies
Keywords:
Lord, Demon , X , Lord_Demon_X , Circle , Fire ,GUI , MUI , Unicorn
Fire Circle v1.06b | Reviewed by Maker | 3rd Aug 2013
APPROVED
You did a good job fixing the performance issue, now there
is no fps drop
The effects are good
Add some follow through time so the caster does
the...
Fire Circle v1.06b | Reviewed by Maker | 3rd Aug 2013
APPROVED
You did a good job fixing the performance issue, now there
is no fps drop
The effects are good
Add some follow through time so the caster does
the cast animation properly
You could store the handle id of picked unit into a variable
and use the variable
[tr]
Fire Circle v1.03 | Reviewed by Maker | 21st Jul 2013
NEEDS FIX
Fire Circle Damage should be initially off and turned off when the
trigger is not needed
Store the ability level when you cast the spell, and load it in
the looping trigger
Your comments should be in English
Remove upgrades used from the dummies
You could use looping in Fire Circle Start to shorten the code
You could reduce the FPS drop and effect spam by choosing
and effect that leaves a trail and creating the effects less often
You could reduce the fps drop by using SetUnitX and SetUnitY
instead of Move unit instantly
[tr]
Fire Circle v1.02 | Reviewed by Maker | 18th Feb 2013
Needs Fix
Required changes
There is a location leak when you create the tree cutter dummy
You are spamming too many effects causing FPS drop
Suggested changes
You could reduce the amount of lines in Fire Circle Start if you looped the angle.
First the angle is facing - x and then increase by x during every loop
You can simplify your damage condition with this method:
((Picked unit) is A structure) Equal to FC_Damage_Building
Review:
1)Casting Unit -> Triggering Unit
2)Set FC_Caster = Triggering Unit
3)Set FC_Face = Facing Angle of FC_Caster
4)Set FC_Level = Level of FC_Ability for (Casting unit)
5)120.00 add to the configuration
6)Fix your way of indexing
7)Inside the For Loop Integer,please put this:
-------- We create the 1st dummy and save his handle and the value of the angle --------
Set TmpPoint2 = (TmpPoint offset by 90.00 towards FC_Angle1 degrees)
8)TempPoint2 should be PC_TempPoint2
9)You dont need a hashtable for this.Hashtable + indexing for a spell is ugly.
You can get the right unit like this:
set Index = 0
For Each (Integer A) from 1 to MaxIndex , do (Actions)
Loop - Actions
If Unit[Integer A] is Equal To Unit[CurrentIndex] then
Set Index = Integer A
endif
This is all of the things i can give now because you have a different language
I know, indexing + hashtable is ugly but this is the only way I found, because creating dummies used for the handle use more space for each time the spell is casted.
I suppose, you're saying that I must remove the use of hashtable and use indexing method ? I can do this but it will takes a while for rewrite the spell.
Cache variables adds speed in interpretation.
Computer interprets every functions that are used.That's why you need to cache it.
No.5 must be inside a real variable,put it in the configuration.
Then use it like
set angle = angle - theangle
8)this prevents variable name collision
9)yes
7)You are repeating the actions all over again,which are unacceptable way of coding
The Damage trigger is very bad, it uses 1 s loop which is very high for a dynamic spell
and like other users said, it spams particles
It needs fix, contact Maker or magtheridon to at least moderate the current version (1.4)
You like circle spells which destroys trees ha,, check this
oh and btw:
Oh, un français MDR, j'en suis pas un moi
2/5, NEEDS FIX
anything u use twice or more store into a variable and use the variable. ex store this in an integer variable (Key FC_TmpHandle)
This is for speed and efficiency
Eveything is in english (in fact, everything except comments is between french and english but that's because I'm french so I don't often install games in english.)
I can't do it because that's not "allowed" by the editor to store a handle in the unit group (I can load the handle of an unit from an hashtable but not add the handle into a group)
anything u use twice or more store into a variable and use the variable. ex store this in an integer variable (Key FC_TmpHandle)
This is for speed and efficiency
I'm not really sure that storing the handle variable in another variable will really increase the speed.
You want me to store a group that is instantly destroyed with the bj_wantDestroyGroup into a group variable that I'll have to nullify just 5-6 lines after ? I don't really see the point.
So, it would be great to explain me why the changes mentionned above are necessary and how could/should I do with those which aren't "allowed" by the editor.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.