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

Volatile Light v2.01

Spell Preview

Spell Description

Requirements

VL_GIF.jpg
VL_ICON.jpg
Volatile Light
Infuses a target area with holy light for a set amount of time.
If any friendly unit enters the area, they will be healed over
time. Any enemy unit that remains inside the area will miss
more often on attacks.​

Triggers

How to Install

Credits

Changelog

  • VL Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- !! CONFIG START !! --------
      • -------- Abilities & Dummy Unit --------
      • Set VL_Ability = Volatile Light
      • -------- Dummy Unit --------
      • Set VL_Dummy = Dummy
      • -------- Miss on Attacks Ability --------
      • Set VL_AbilityCurse = Volatile Light (Curse)
      • -------- Buff for VL_AbilityMiss --------
      • -------- NOTE: If you want to change debuff SFX, refer to this buff --------
      • Set VL_Debuff = Blind
      • -------- Healing Ability --------
      • Set VL_AbilityHeal = Volatile Light (HoT)
      • -------- Buff for VL_AbilityHeal --------
      • -------- NOTE: If you want to change the buff SFX, refer to this buff --------
      • Set VL_Buff = Holy Blessing
      • -------- --------
      • -------- Max Level VL_Ability Will Have --------
      • -------- NOTE: THIS IS REALLY IMPORTANT IF YOU WANT AOE TO WORK PROPERLY --------
      • Set VL_MaxLevel = 3
      • -------- --------
      • -------- Special Effect for Lightning --------
      • Set VL_L_SFX = Healing Wave - Primary
      • Set VL_L_Amount = 3
      • Set VL_L_Duration = 1.00
      • Set VL_L_Distance = 800.00
      • Set VL_L_Height = 1500.00
      • -------- --------
      • -------- Duration of Spell Per Level --------
      • Set VL_Duration[1] = 8.00
      • Set VL_Duration[2] = 10.00
      • Set VL_Duration[3] = 12.00
      • -------- --------
      • -------- Radius of Spell Per Level --------
      • -------- NOTE: Make sure to match the AoE values of VL_Ability --------
      • Set VL_AoE[1] = 300.00
      • Set VL_AoE[2] = 350.00
      • Set VL_AoE[3] = 400.00
      • -------- --------
      • -------- Special Effect for AoE Indicator --------
      • Set VL_C_SFX = Abilities\Spells\Other\Transmute\GoldBottleMissile.mdl
      • Set VL_C_Speed = 4.00
      • Set VL_C_Amount = 3
      • Set VL_C_GrowTime = 2.00
      • -------- --------
      • -------- Special Effect from Caster At Start of Ability --------
      • Set VL_SFX = Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
      • -------- --------
      • -------- Special Effect for Lightning Points --------
      • Set VL_L_SFX_EndPoint = Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
      • -------- !! CONFIG END !! --------
      • -------- --------
      • Set VL_PeriodicTimer = 0.03
      • Trigger - Add to VL Loop <gen> the event (Time - Every VL_PeriodicTimer seconds of game time)
      • -------- --------
      • Set VL_TempLoc = (Center of (Playable map area))
      • Unit - Create 1 VL_Dummy for Neutral Passive at VL_TempLoc facing Default building facing degrees
      • Set VL_DummyCaster = (Last created unit)
      • Unit - Add VL_AbilityCurse to VL_DummyCaster
      • Unit - Add VL_AbilityHeal to VL_DummyCaster
      • Custom script: call UnitRemoveAbility(udg_VL_DummyCaster, 'Amov')
      • Custom script: call RemoveLocation(udg_VL_TempLoc)
      • Set VL_TempReal = (Real(VL_C_Amount))
      • Set VL_C_Even = (360.00 / VL_TempReal)
      • For each (Integer VL_TempInt) from 1 to VL_MaxLevel, do (Actions)
        • Loop - Actions
          • Set VL_C_GrowRate[VL_TempInt] = (VL_AoE[VL_TempInt] / (VL_C_GrowTime / VL_PeriodicTimer))

  • VL Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to VL_Ability
    • Actions
      • Custom script: local real x1
      • Custom script: local real y1
      • Custom script: local real z1
      • Custom script: local real x2
      • Custom script: local real y2
      • Custom script: local real z2
      • -------- --------
      • Set VL_SpellCount = (VL_SpellCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VL_SpellCount Equal to 1
        • Then - Actions
          • Trigger - Turn on VL Loop <gen>
        • Else - Actions
          • -------- loop is already on; do nothing --------
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VL_RecycledSize Equal to 0
        • Then - Actions
          • Set VL_MaxIndex = (VL_MaxIndex + 1)
          • Set VL_Spell_ID = VL_MaxIndex
        • Else - Actions
          • Set VL_RecycledSize = (VL_RecycledSize - 1)
          • Set VL_Spell_ID = VL_RecycledStack[VL_RecycledSize]
      • Set VL_NodeNext[VL_Spell_ID] = 0
      • Set VL_NodeNext[VL_NodePrev[0]] = VL_Spell_ID
      • Set VL_NodePrev[VL_Spell_ID] = VL_NodePrev[0]
      • Set VL_NodePrev[0] = VL_Spell_ID
      • -------- --------
      • Set VL_Caster[VL_Spell_ID] = (Triggering unit)
      • Set VL_Owner[VL_Spell_ID] = (Triggering player)
      • Set VL_AbilityLvl[VL_Spell_ID] = (Level of VL_Ability for VL_Caster[VL_Spell_ID])
      • Set VL_TargetLoc[VL_Spell_ID] = (Target point of ability being cast)
      • Set VL_C_MoveRate[VL_Spell_ID] = 0.00
      • Set VL_CounterDuration[VL_Spell_ID] = 0.00
      • Set VL_L_Counter[VL_Spell_ID] = 0.00
      • Set VL_CurrentAoE[VL_Spell_ID] = 0.00
      • Set VL_L_CheckSFX[VL_Spell_ID] = True
      • -------- --------
      • Custom script: if udg_VL_GroupEnemy[udg_VL_Spell_ID] == null then
      • Custom script: set udg_VL_GroupEnemy[udg_VL_Spell_ID] = CreateGroup()
      • Custom script: endif
      • -------- --------
      • Set VL_TempLoc = (Position of VL_Caster[VL_Spell_ID])
      • Set VL_L_Direction = (Angle from VL_TargetLoc[VL_Spell_ID] to VL_TempLoc)
      • Custom script: call RemoveLocation(udg_VL_TempLoc)
      • Set VL_TempLoc = (VL_TargetLoc[VL_Spell_ID] offset by VL_L_Distance towards VL_L_Direction degrees)
      • Special Effect - Create a special effect at VL_TargetLoc[VL_Spell_ID] using VL_SFX
      • Special Effect - Destroy (Last created special effect)
      • Custom script: set x1 = GetLocationX(udg_VL_TempLoc)
      • Custom script: set y1 = GetLocationY(udg_VL_TempLoc)
      • Custom script: set z1 = GetLocationZ(udg_VL_TempLoc) + udg_VL_L_Height
      • Custom script: set x2 = GetLocationX(udg_VL_TargetLoc[udg_VL_Spell_ID])
      • Custom script: set y2 = GetLocationY(udg_VL_TargetLoc[udg_VL_Spell_ID])
      • Custom script: set z2 = GetLocationZ(udg_VL_TargetLoc[udg_VL_Spell_ID])
      • Custom script: call RemoveLocation(udg_VL_TempLoc)
      • For each (Integer VL_TempInt) from 1 to VL_L_Amount, do (Actions)
        • Loop - Actions
          • Set VL_L_ID = ((VL_Spell_ID x VL_L_Amount) + VL_TempInt)
          • Custom script: set udg_VL_L[udg_VL_L_ID] = AddLightningEx(udg_VL_L_SFX, true, x1, y1, z1, x2, y2, z2)
          • Special Effect - Create a special effect at VL_TargetLoc[VL_Spell_ID] using VL_L_SFX_EndPoint
          • Special Effect - Destroy (Last created special effect)
  • VL Loop
    • Events
    • Conditions
    • Actions
      • Set VL_Spell_ID = 0
      • For each (Integer VL_LoopInt) from 1 to VL_SpellCount, do (Actions)
        • Loop - Actions
          • Set VL_Spell_ID = VL_NodeNext[VL_Spell_ID]
          • Set VL_CounterDuration[VL_Spell_ID] = (VL_CounterDuration[VL_Spell_ID] + VL_PeriodicTimer)
          • -------- checking if the instance duration has ended --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VL_CounterDuration[VL_Spell_ID] Greater than or equal to VL_Duration[VL_AbilityLvl[VL_Spell_ID]]
            • Then - Actions
              • Unit Group - Pick every unit in VL_GroupEnemy[VL_Spell_ID] and do (Actions)
                • Loop - Actions
                  • Set VL_TempUnit = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (VL_TempUnit has buff VL_Debuff) Equal to True
                    • Then - Actions
                      • Unit - Remove VL_Debuff buff from VL_TempUnit
                    • Else - Actions
                      • -------- TempUnit does not have debuff; do nothing --------
              • Custom script: call DestroyGroup(udg_VL_GroupEnemy[udg_VL_Spell_ID])
              • Custom script: set udg_VL_GroupEnemy[udg_VL_Spell_ID] = null
              • Custom script: call RemoveLocation(udg_VL_TargetLoc[udg_VL_Spell_ID])
              • -------- --------
              • Set VL_RecycledStack[VL_RecycledSize] = VL_Spell_ID
              • Set VL_RecycledSize = (VL_RecycledSize + 1)
              • Set VL_NodeNext[VL_NodePrev[VL_Spell_ID]] = VL_NodeNext[VL_Spell_ID]
              • Set VL_NodePrev[VL_NodeNext[VL_Spell_ID]] = VL_NodePrev[VL_Spell_ID]
              • -------- --------
              • Set VL_SpellCount = (VL_SpellCount - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VL_SpellCount Equal to 0
                • Then - Actions
                  • Trigger - Turn off VL Loop <gen>
                • Else - Actions
                  • -------- there is still a spell instance running; do not turn loop off --------
            • Else - Actions
              • -------- checking if lightning effects are still active --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VL_L_CheckSFX[VL_Spell_ID] Equal to True
                • Then - Actions
                  • Set VL_L_Counter[VL_Spell_ID] = (VL_L_Counter[VL_Spell_ID] + VL_PeriodicTimer)
                  • -------- checking if the lightning effects have reached their max duration of visibility --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • VL_L_Counter[VL_Spell_ID] Greater than or equal to VL_L_Duration
                    • Then - Actions
                      • For each (Integer VL_TempInt) from 1 to VL_L_Amount, do (Actions)
                        • Loop - Actions
                          • Set VL_L_ID = ((VL_Spell_ID x VL_L_Amount) + VL_TempInt)
                          • Lightning - Destroy VL_L[VL_L_ID]
                      • Set VL_L_CheckSFX[VL_Spell_ID] = False
                    • Else - Actions
                      • -------- lightning effects have not reached their max duration of visibility; do not destroy them --------
                • Else - Actions
                  • -------- lightning effects are no longer active; do nothing --------
              • -------- creating the circle effect --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VL_CurrentAoE[VL_Spell_ID] Less than or equal to VL_AoE[VL_AbilityLvl[VL_Spell_ID]]
                • Then - Actions
                  • Set VL_CurrentAoE[VL_Spell_ID] = (VL_CurrentAoE[VL_Spell_ID] + VL_C_GrowRate[VL_AbilityLvl[VL_Spell_ID]])
                • Else - Actions
                  • -------- effects have already reached max AoE; do not continue to grow --------
              • For each (Integer VL_TempInt) from 1 to VL_C_Amount, do (Actions)
                • Loop - Actions
                  • Set VL_TempReal = (Real(VL_TempInt))
                  • Set VL_Degree = (VL_C_MoveRate[VL_Spell_ID] + (VL_C_Even x VL_TempReal))
                  • Set VL_TempLoc = (VL_TargetLoc[VL_Spell_ID] offset by VL_CurrentAoE[VL_Spell_ID] towards VL_Degree degrees)
                  • Special Effect - Create a special effect at VL_TempLoc using VL_C_SFX
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_VL_TempLoc)
              • Set VL_C_MoveRate[VL_Spell_ID] = (VL_C_MoveRate[VL_Spell_ID] + VL_C_Speed)
              • -------- --------
              • Unit - Change ownership of VL_DummyCaster to VL_Owner[VL_Spell_ID] and Change color
              • Unit - Move VL_DummyCaster instantly to VL_TargetLoc[VL_Spell_ID]
              • Unit - Set level of VL_AbilityCurse for VL_DummyCaster to VL_AbilityLvl[VL_Spell_ID]
              • Unit - Set level of VL_AbilityHeal for VL_DummyCaster to VL_AbilityLvl[VL_Spell_ID]
              • -------- --------
              • -------- finding all units inside effect --------
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within VL_CurrentAoE[VL_Spell_ID] of VL_TargetLoc[VL_Spell_ID]) and do (Actions)
                • Loop - Actions
                  • Set VL_TempUnit = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (VL_TempUnit is A structure) Equal to False
                      • (VL_TempUnit is alive) Equal to True
                      • Or - Any (Conditions) are true
                        • Conditions
                          • And - All (Conditions) are true
                            • Conditions
                              • (VL_TempUnit has buff VL_Buff) Equal to False
                              • (VL_TempUnit belongs to an ally of VL_Owner[VL_Spell_ID]) Equal to True
                          • And - All (Conditions) are true
                            • Conditions
                              • (VL_TempUnit has buff VL_Debuff) Equal to False
                              • (VL_TempUnit is Magic Immune) Equal to False
                              • (VL_TempUnit belongs to an enemy of VL_Owner[VL_Spell_ID]) Equal to True
                    • Then - Actions
                      • -------- healing friendly units that don't have buff --------
                      • -------- cursing enemy units that don't have buff --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (VL_TempUnit belongs to an ally of VL_Owner[VL_Spell_ID]) Equal to True
                        • Then - Actions
                          • Unit - Order VL_DummyCaster to Night Elf Druid Of The Claw - Rejuvenation VL_TempUnit
                        • Else - Actions
                          • Unit - Order VL_DummyCaster to Undead Banshee - Curse VL_TempUnit
                          • Unit Group - Add VL_TempUnit to VL_GroupEnemy[VL_Spell_ID]
                    • Else - Actions
                      • -------- TempUnit did not pass filters; do nothing --------
              • -------- checking if any enemy units left the radius with debuff active --------
              • Unit Group - Pick every unit in VL_GroupEnemy[VL_Spell_ID] and do (Actions)
                • Loop - Actions
                  • Set VL_TempUnit = (Picked unit)
                  • Set VL_TempLoc = (Position of VL_TempUnit)
                  • Set VL_TempReal = (Distance between VL_TempLoc and VL_TargetLoc[VL_Spell_ID])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (VL_TempUnit is dead) Equal to True
                          • VL_TempReal Greater than or equal to VL_CurrentAoE[VL_Spell_ID]
                    • Then - Actions
                      • Unit - Remove VL_Debuff buff from VL_TempUnit
                      • Unit Group - Remove VL_TempUnit from VL_GroupEnemy[VL_Spell_ID]
                    • Else - Actions
                      • -------- TempUnit is still in radius; keep debuff --------
                  • Custom script: call RemoveLocation(udg_VL_TempLoc)
  1. Under Preferences, make sure you have "Automatically create
    unknown variables while pasting trigger data" checked

  2. Import dummy.mdx, then copy and paste the dummy unit and
    two custom abilities into your map
    NOTE: If you already have dummy.mdx imported into your
    map, you DO NOT have to reimport it
    If you already have a global dummy unit in your
    map, you can skip this step

  3. Copy and paste the Volatile Light folder into your map

  4. Go to the VL Config trigger, and change the Ability, AbilityCurse,
    AbilityHeal, Debuff, & Buff variables to the corresponding objects
    you just imported
NOTE: Make sure that AbilityCurse & AbilityHeal
have the correct buff data fields!​
User
Vexorian - dummy.mdx
[TD]

v2.01 (March 18, 2016)
  • Added an optional Volatile Light folder that is integrated with GUI Spell System
  • Fixed inaccuracy of GrowRate incrementing inside the circle creation loop
  • Removed unnecesary NodeLast[] variable for linked list; last spell instance now stores into NodePrev[0]
  • Removed If/Then/Else that would set NodeLast = NodePrev[Spell_ID] if NodeLast == Spell_ID
v2.00 (January 25, 2016)
  • Changed data structure to linked listing
  • Fixed bug of debuff not being removed on dead enemy units until the end of the duration
v1.03 (December 04, 2015)
  • Changed Owner[] variable to now use Triggering Player instead of Owner of (Unit)
  • Changed spell to now use one global dummy caster instead of one dummy caster per spell instance
  • Changed loop to check if it is time to deindex before starting
  • Changed name of VL Init trigger to VL Cast
  • Removed unnecessary function call when turning off VL Loop (Turn off (This trigger) -> (Turn off VL Loop))
v1.02 (November 26, 2015)
  • Changed the way lightning effects are created
  • Changed names of some variables
  • Removed the Lightning Effects ability
  • Removed unneccesary variables
v1.01 (October 1, 2015)
  • Added a configurable to change the origin and angle of the lightning effects
  • Fixed GrowSpeed to GrowTime (lets you decide how long it will take for effects to reach max radius)
  • Removed KillUnit function and replaced it with RemoveUnit
  • Removed VL Dummy Cleaner trigger
v1.00 (September 29, 2015)
  • Uploaded

Keywords:
volatile, light, holy, heal, curse, circle, aoe, yellow, gold, target, point, linked, listing, gui, mui, killcide
Contents

Volatile Light v2.01 (Map)

Reviews
IcemanBo: re-approved. Spell works flawless. 13:20, 1th Oct 2015 This resource has been Approved by BPower. Criticism: A good example for a well done combination of triggered and object editor based spell. Cool eye-candy and definitly a...

Moderator

M

Moderator

IcemanBo: re-approved. Spell works flawless.

13:20, 1th Oct 2015

This resource has been Approved by BPower.

Criticism:
A good example for a well done combination of triggered and object editor based spell.
Cool eye-candy and definitly a useful concept. I didn't see anything wrong within the code.
You don't have to remove the dummy unit upon death event. "Can't raise, does not decay" does this job already.
As an alternative you could remove the dummy units directly in the loop trigger instead of using KillUnit.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
...borderline instant rejection in my book...

a-chance.gif


I am too lazy to read triggers. But I want to point out that 1 dummy, 4 abilities and 2 buffs are borderline instant rejection in my book since it is a pain to import.
Not to mention it's usually a way to skip triggering certain, more complicated things.

*cough* chain lightning *cough*

Lol you call yourself lazy, and then point out the few seconds you lose importing a few abilities and how I skip triggering certain mechanics because I rely on object editor abilities instead? Plis, chaosy.

On a more serious note, the only two abilities I would be able to trigger is the HoT and the effect abilities. I will have to do that once I learn hashtables though :) however, since this isn't a zephyr contest submission, I really don't have to worry about that unless a moderator agrees with you. For now, all praise the one true god, dynamic indexing!

EDIT: I forgot to mention that having object editor abilities also allows the user to put whatever positive/negative buff they want instead of having to stick with the hardcoded version ;D
 
Last edited:

Ardenian

A

Ardenian

Hm, instead of an ability you could use a lightning effect for the thing from the sky, it is easier to configure/allows configuration
 

Kazeon

Hosted Project: EC
Level 33
Joined
Oct 12, 2011
Messages
3,449
A single hashtable allows you to store trillions of datas, can be used for millions of spells. But for one spell you're ended up only using 2 spaces or so. What an epic waste. Tho having more than 255 spells and systems in a single map is barely possible indeed.

And please, stop being sarcastic unless you are the rightest living human on earth.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Hm, instead of an ability you could use a lightning effect for the thing from the sky, it is easier to configure/allows configuration

I would have to create a seperate timer for that since i only need the lightning effects to only last a second. I will do that sometime in the future or if a moderator asks me to do it.

EDIT:

Oh that looks fancy :3

Thanks xD I was practicing on effects. I wasn't really focused on the mechanics ;_;
 
Last edited:
Level 37
Joined
Jul 22, 2015
Messages
3,485
You can destroy the lightning effect within the loop itself. have an integer than increases by 1 every interval, and at 33 (0.99 seconds), you destroy the lightning and then null it.

I know :) thats why I said this.
I would have to create a seperate timer for that since i only need the lightning effects to only last a second.
 

Ardenian

A

Ardenian

Alright, another approach. I think the lightning origin and aim should not be hardcoded, if I am not wrong you cannot change it in the conf, can you ?

I would like it to be in the middle of the circle, origin and aim, for example.
 
I would need a seperate timer. If I use my regular timer where a second has passed, the condition will always be true since the timer is greater than 1.

Could you reset the integer[] to false/0 on spell cast then? Then to count up to it's destruction, in the loop, add an if/then/else block: If integer[] > 33, destroy lightning[], else set integer[] = integer[] + 1. I've never actually indexed spells the way u did, so no idea if that would work.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
5/5 You are best KILLCIDE.:thumbs_up:

Thanks!

Alright, another approach. I think the lightning origin and aim should not be hardcoded, if I am not wrong you cannot change it in the conf, can you ?

I would like it to be in the middle of the circle, origin and aim, for example.

Hmm good suggestion. I will work on the ability to easily change origin & aim!

Could you reset the integer[] to false/0 on spell cast then? Then to count up to it's destruction, in the loop, add an if/then/else block: If integer[] > 33, destroy lightning[], else set integer[] = integer[] + 1. I've never actually indexed spells the way u did, so no idea if that would work.

Well, since I'm working with multiple lightnings in a dynamic indexed spell, I will need to find a way to incorporate a 2D array :) the update for the lightning will take a while.
 
  • Same about deindexing as in other spells mentioned.
  • The check for Dummy == null is needed? I mean I think it is always null I guess.
    But anyways, using one global caster dummy would be a bit more efficient than one per instance.
  • You need to debuff in triggers? Wouldn't it be simpler to set duration like to 0.1 / 0.2 seconds?
    Maybe it would not hurt too much.

The spell itself is pretty cool!
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Same about deindexing as in other spells mentioned.
Thank you, will work on this.


The check for Dummy == null is needed? I mean I think it is always null I guess.
But anyways, using one global caster dummy would be a bit more efficient than one per instance.
I will be moving from one dummy per spell instead of per instance :)


You need to debuff in triggers? Wouldn't it be simpler to set duration like to 0.1 / 0.2 seconds?
Maybe it would not hurt too much.
It looked awkward having the buff be removed and added in such a short span.


The spell itself is pretty cool!
Thank you!


EDIT: Changes have been made.
 
Last edited:

Deleted member 247165

D

Deleted member 247165

the skill looks awesome!! mind if I use it on my game,War of Sanctity? :D i will give you credits
 
Level 3
Joined
Feb 14, 2013
Messages
26
Not work for me, it just have a light from sky nothing else and the light effect doesn't stop. I just copy, paste and check for everything correct as default but it not work.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Not work for me, it just have a light from sky nothing else and the light effect doesn't stop. I just copy, paste and check for everything correct as default but it not work.

There are a ton of light effects xD which one are you referring to? I just ran some tests and everything works fine for me. Do you mind sending it to me in a test map?
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
I was only going to have a version of this spell that was integrated with Bribe's GUI Spell System, but then I realized how extremely inaccurate GrowTime was. If you had a value of 4.00, the effect would take 2 seconds to reach max radius instead of 4 :p anyway, I managed to fixed it and is now updated to v2.01:
  • Added an optional Volatile Light folder that is integrated with GUI Spell System
  • Fixed inaccuracy of GrowRate incrementing inside the circle creation loop
  • Removed unnecesary NodeLast[] variable for linked list; last spell instance now stores into NodePrev[0]
  • Removed If/Then/Else that would set NodeLast = NodePrev[Spell_ID] if NodeLast == Spell_ID
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
LOVE IT!
This spell just fits my hero spell :D :D
5/5
Lol it's GUI, son. You SURE you want it? xD

Spell looks really nice, but the end looks a little unpolished to me. You can perhaps create another special effect on each particle when the spell ends; or reverse the start (make the orbits smaller till it is very close to the caster)
Thanks for the suggsetion! I thought about this, but I wasn't sure if I should add more sparkly effects since the game gets pretty laggy with the way it is right now :*(
 
Top