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

Soul Linger v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Releases hungry souls at the target location acting as a temporary ward that watches nearby enemy units. Any enemy units come too close within the vicinity of the soul's range, they will be followed by the souls ready to feast them. If the target dies within the feasting duration, the soul claims the body and multiply with the current soul that is feasting the target with the duration as same as the remaining time of the killing soul.

Duration: 10 seconds, AOE: 200, DPS: 4, Speed: 300
Duration: 15 seconds, AOE: 300, DPS: 6, Speed: 400
Duration: 20 seconds, AOE: 400, DPS: 8, Speed: 500
Duration: 25 seconds, AOE: 500, DPS: 10, Speed: 600


  • SL Setup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ////////// --------
      • -------- DATA CONFIGURATION --------
      • -------- ////////// --------
      • Set SL_Ability = Soul Linger
      • Set SL_DummyType = Soul Linger Dummy
      • -------- Sets the String path for SFX created while the soul is feasting --------
      • Set SL_SFX_Setup = Objects\Spawnmodels\Critters\Albatross\CritterBloodAlbatross.mdl
      • -------- Sets the duration of the soul --------
      • Set SL_DurationSetup[1] = 10.00
      • Set SL_DurationSetup[2] = 15.00
      • Set SL_DurationSetup[3] = 20.00
      • Set SL_DurationSetup[4] = 25.00
      • -------- Sets the AOE detection of the soul --------
      • Set SL_AOE_Setup[1] = 200.00
      • Set SL_AOE_Setup[2] = 300.00
      • Set SL_AOE_Setup[3] = 400.00
      • Set SL_AOE_Setup[4] = 500.00
      • -------- Sets the damage per second dealt by the soul --------
      • Set SL_DamageSetup[1] = 4.00
      • Set SL_DamageSetup[2] = 6.00
      • Set SL_DamageSetup[3] = 8.00
      • Set SL_DamageSetup[4] = 10.00
      • -------- Sets the speed of the soul chasing down targets --------
      • Set SL_DummySpeedSetup[1] = 300.00
      • Set SL_DummySpeedSetup[2] = 400.00
      • Set SL_DummySpeedSetup[3] = 500.00
      • Set SL_DummySpeedSetup[4] = 600.00
      • -------- Sets the threshold range for the soul to be within damage area --------
      • Set SL_DamageRangeSetup = 50.00
      • Set SL_Interval = 0.03
      • Trigger - Add to SL Loop <gen> the event (Time - Every SL_Interval seconds of game time)
  • SL Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to SL_Ability
    • Actions
      • Set SL_MaxIndex = (SL_MaxIndex + 1)
      • Set SL_Caster[SL_MaxIndex] = (Triggering unit)
      • Set TempLoc = (Target point of ability being cast)
      • Set SL_IsFeast[SL_MaxIndex] = False
      • Set TempInt = (Level of SL_Ability for SL_Caster[SL_MaxIndex])
      • Set SL_AOE[SL_MaxIndex] = SL_AOE_Setup[TempInt]
      • Set SL_Damage[SL_MaxIndex] = (SL_DamageSetup[TempInt] x SL_Interval)
      • Set SL_DummySpeed[SL_MaxIndex] = (SL_DummySpeedSetup[TempInt] x SL_Interval)
      • Set SL_Duration[SL_MaxIndex] = SL_DurationSetup[TempInt]
      • Unit - Create 1 SL_DummyType for (Triggering player) at TempLoc facing Default building facing degrees
      • Set SL_Dummy[SL_MaxIndex] = (Last created unit)
      • Custom script: call RemoveLocation(udg_TempLoc)
      • Trigger - Turn on SL Loop <gen>
  • SL Loop
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SL_MaxIndex Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • For each (Integer SL_CurrentIndex) from 1 to SL_MaxIndex, do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SL_Duration[SL_CurrentIndex] Greater than 0.00
                • Then - Actions
                  • Set SL_Duration[SL_CurrentIndex] = (SL_Duration[SL_CurrentIndex] - SL_Interval)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SL_IsFeast[SL_CurrentIndex] Equal to False
                    • Then - Actions
                      • Set TempLoc = (Position of SL_Dummy[SL_CurrentIndex])
                      • Set TempGroup = (Units within SL_AOE[SL_CurrentIndex] of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal t
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Number of units in TempGroup) Greater than 0
                        • Then - Actions
                          • Set SL_IsFeast[SL_CurrentIndex] = True
                          • Custom script: set udg_SL_Target[udg_SL_CurrentIndex] = FirstOfGroup(udg_TempGroup)
                        • Else - Actions
                      • Custom script: call RemoveLocation(udg_TempLoc)
                      • Custom script: call DestroyGroup(udg_TempGroup)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (SL_Target[SL_CurrentIndex] is alive) Equal to True
                        • Then - Actions
                          • Set TempLoc = (Position of SL_Dummy[SL_CurrentIndex])
                          • Set TempLoc2 = (Position of SL_Target[SL_CurrentIndex])
                          • Set TempReal = (Angle from TempLoc to TempLoc2)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Distance between TempLoc and TempLoc2) Less than or equal to SL_DamageRangeSetup
                            • Then - Actions
                              • Unit - Cause SL_Caster[SL_CurrentIndex] to damage SL_Target[SL_CurrentIndex], dealing SL_Damage[SL_CurrentIndex] damage of attack type Spells and damage type Normal
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Random integer number between 1 and 100) Less than or equal to 5
                                • Then - Actions
                                  • Special Effect - Create a special effect attached to the chest of SL_Target[SL_CurrentIndex] using SL_SFX_Setup
                                  • Special Effect - Destroy (Last created special effect)
                                • Else - Actions
                            • Else - Actions
                          • Custom script: call SetUnitX(udg_SL_Dummy[udg_SL_CurrentIndex], GetUnitX(udg_SL_Dummy[udg_SL_CurrentIndex]) + udg_SL_DummySpeed[udg_SL_CurrentIndex] * Cos(udg_TempReal * bj_DEGTORAD))
                          • Custom script: call SetUnitY(udg_SL_Dummy[udg_SL_CurrentIndex], GetUnitY(udg_SL_Dummy[udg_SL_CurrentIndex]) + udg_SL_DummySpeed[udg_SL_CurrentIndex] * Sin(udg_TempReal * bj_DEGTORAD))
                          • Custom script: call RemoveLocation(udg_TempLoc)
                          • Custom script: call RemoveLocation(udg_TempLoc2)
                        • Else - Actions
                          • Set SL_Target[SL_CurrentIndex] = No unit
                          • Set SL_IsFeast[SL_CurrentIndex] = False
                          • Set TempLoc = (Position of SL_Dummy[SL_CurrentIndex])
                          • Unit - Create 1 SL_DummyType for (Owner of SL_Dummy[SL_CurrentIndex]) at TempLoc facing Default building facing degrees
                          • Set SL_MaxIndex = (SL_MaxIndex + 1)
                          • Set SL_Caster[SL_MaxIndex] = SL_Caster[SL_CurrentIndex]
                          • Set SL_IsFeast[SL_MaxIndex] = False
                          • Set SL_AOE[SL_MaxIndex] = SL_AOE[SL_CurrentIndex]
                          • Set SL_Damage[SL_MaxIndex] = SL_Damage[SL_CurrentIndex]
                          • Set SL_DummySpeed[SL_MaxIndex] = SL_DummySpeed[SL_CurrentIndex]
                          • Set SL_Dummy[SL_MaxIndex] = (Last created unit)
                          • Set SL_Duration[SL_MaxIndex] = SL_Duration[SL_CurrentIndex]
                          • Custom script: call RemoveLocation(udg_TempLoc)
                • Else - Actions
                  • Unit - Kill SL_Dummy[SL_CurrentIndex]
                  • Set SL_AOE[SL_CurrentIndex] = SL_AOE[SL_MaxIndex]
                  • Set SL_Caster[SL_CurrentIndex] = SL_Caster[SL_MaxIndex]
                  • Set SL_Damage[SL_CurrentIndex] = SL_Damage[SL_MaxIndex]
                  • Set SL_Dummy[SL_CurrentIndex] = SL_Dummy[SL_MaxIndex]
                  • Set SL_DummySpeed[SL_CurrentIndex] = SL_DummySpeed[SL_MaxIndex]
                  • Set SL_IsFeast[SL_CurrentIndex] = SL_IsFeast[SL_MaxIndex]
                  • Set SL_Target[SL_CurrentIndex] = SL_Target[SL_MaxIndex]
                  • Set SL_Duration[SL_CurrentIndex] = SL_Duration[SL_MaxIndex]
                  • Set SL_CurrentIndex = (SL_CurrentIndex - 1)
                  • Set SL_MaxIndex = (SL_MaxIndex - 1)
v1.0
- Initial release


-


Keywords:
soul, linger, defskull, feast, dps, indexing, dynamic, split, multiply.
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Soul Linger v1.0 | Reviewed by Maker | 29th Sep 2013 NEEDS FIX The map can freeze if the spell is casted repeatedly [tr] You should only check the integer...

Moderator

M

Moderator

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


Soul Linger v1.0 | Reviewed by Maker | 29th Sep 2013
NEEDS FIX


126248-albums6177-picture66522.png


  • The map can freeze if the spell is casted repeatedly
126248-albums6177-picture66523.png


  • You should only check the integer to turn off the trigger
    after you subtract the integer by one
  • You could provide an option to limit the spreading to
  • FirstOfGroup is not random. A more random system could be better
[tr]
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
I can't quite understand what you are trying to say ?
I'll try to explain it to you.

  • Set SL_IsFeast[SL_CurrentIndex] = False
This is not meant to be the de-index part.
This is to indicate that the soul has finished feasting the target, and after that, it acts as ward again, that is what SL_IsFeast are meant to do.

True = Feasting
False = Warding

The de-index part is actually at the last branch of Else, this;
  • Else - Actions
    • Unit - Kill SL_Dummy[SL_CurrentIndex]
    • Set SL_AOE[SL_CurrentIndex] = SL_AOE[SL_MaxIndex]
    • Set SL_Caster[SL_CurrentIndex] = SL_Caster[SL_MaxIndex]
    • Set SL_Damage[SL_CurrentIndex] = SL_Damage[SL_MaxIndex]
    • Set SL_Dummy[SL_CurrentIndex] = SL_Dummy[SL_MaxIndex]
    • Set SL_DummySpeed[SL_CurrentIndex] = SL_DummySpeed[SL_MaxIndex]
    • Set SL_IsFeast[SL_CurrentIndex] = SL_IsFeast[SL_MaxIndex]
    • Set SL_Target[SL_CurrentIndex] = SL_Target[SL_MaxIndex]
    • Set SL_Duration[SL_CurrentIndex] = SL_Duration[SL_MaxIndex]
    • Set SL_CurrentIndex = (SL_CurrentIndex - 1)
    • Set SL_MaxIndex = (SL_MaxIndex - 1)
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
When I rapidly cast the spell, It freezes the game and the soul is not removed when the picked target dies..

That's why we have the data configuration, you, the one, should balance it.

We'll try take your spell as an example: Lightning Down Hatred

If you don't have cooldown, and the caster is allowed to cast multiple of times without pausing, this too will drop your fps greatly

Because it multiplies for each instance, therefore you should change the configuration into something balance:

1. Lower the duration
2. Lower the damage
3. Add cooldown - instead of having 0 cooldown
...
100. You're the user, YOU should balance it.

And about the "when target dies, soul is not removed", what do you meant by this ?

If the target dies, the soul won't suppose to die with the target, lol.
It's supposed to multiply for each instance the target holds.

Let's say 3 souls has feasted upon a single target, and dies later.
So, 3 * 2 = 6.

3 new souls are created and continue to haunt any nearby enemy unit - with its duration set as the remaining soul time for the feasting soul has.

I am sorry for not creating a simple spell such as: Spawn omgwtfbbq SFX and deals damage in an AOE.

I'm trying to create spell that is not cliché.

I like to emphasize on Spell Functionality rather than Spell Eye-candy.
 
Level 7
Joined
Apr 12, 2011
Messages
124
That's why we have the data configuration, you, the one, should balance it.

We'll try take your spell as an example: Lightning Down Hatred

If you don't have cooldown, and the caster is allowed to cast multiple of times without pausing, this too will drop your fps greatly

Because it multiplies for each instance, therefore you should change the configuration into something balance:

1. Lower the duration
2. Lower the damage
3. Add cooldown - instead of having 0 cooldown
...
100. You're the user, YOU should balance it.

And about the "when target dies, soul is not removed", what do you meant by this ?

If the target dies, the soul won't suppose to die with the target, lol.
It's supposed to multiply for each instance the target holds.

Let's say 3 souls has feasted upon a single target, and dies later.
So, 3 * 2 = 6.

3 new souls are created and continue to haunt any nearby enemy unit - with its duration set as the remaining soul time for the feasting soul has.

I am sorry for not creating a simple spell such as: Spawn omgwtfbbq SFX and deals damage in an AOE.

I'm trying to create spell that is not cliché.

I like to emphasize on Spell Functionality rather than Spell Eye-candy.
Why does it do that then? I mean it's not effect spam, then doesn't that make it leaks?
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
When you mention about 'spamming'...

The soul indeed is not removed, wtf lol @@"

I'll try another workaround, sorry about mentioning 'balancing' when the spell really bug in the first place @@"


Ehhh wait a second, I have tested it and it works fine lol.

As I said, YOU the one who should balance it.

Instead of 25 seconds, make it 8 seconds and spam it.

I assure you it won't freeze.

Why does it do that then? I mean it's not effect spam, then doesn't that make it leaks?
It's not leak, it's just the game could not handle the rapidly increasing unit in a short time.

To prevent this ?
SIMPLE, just balance it by configuring the setup.

You wanna know what else can make the game freeze/error ?

Try using SetUnitX/Y and move it to either direction (East, West, North, South).
Until certain point (out of the map boundary), the game will crash.

This is what I meant by balancing, but this is trigger-wise, you can map boundary check and do something about the dummy.

It's different on my case, you're the one should balance the configuration data such as damage, unit's HP, duration, etc.

The simple logic applies when:
If you're making a spell that has stun properties, but you make it a 100 second stun - now is this feasible ?
This is where balancing comes into action.
 
Level 9
Joined
Dec 3, 2010
Messages
162
There's definitely a bug here. And no, it isn't about the configuration at all. Just try set the cooldown of your spell to 0 and cast it about 4-5 times in quick succession within the same relative area. The game will freeze after a while, manged to reproduce this numerous times.

Now, if you're telling me that your spell is limited to 4 instances at any given time, this definitely isn't MUI. Yes, the spell causes my computer to freeze.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Haven't I told you before about balancing ?
Sheesh.

If you want to prove it wrong, try set the duration to 1.00 second and spam it until the end of the world, your pc won't freeze.

I don't know you guys like to play a map that has 0 cooldown spells - totally balanced.
 
Level 9
Joined
Dec 3, 2010
Messages
162
Haven't I told you before about balancing ?
Sheesh.

If you want to prove it wrong, try set the duration to 1.00 second and spam it until the end of the world, your pc won't freeze.

I don't know you guys like to play a map that has 0 cooldown spells - totally balanced.

4 was all it took to freeze. Balancing is one thing. Your spell not being able to support up to 4 simultaneous instances is another. Cooldown was at 1 second. Casted the spell 4 times. Game froze after around 8 seconds.

I want to point out that spells should not bug out even with 0 seconds cooldown. Obviously the spell will cause FPS drops when spammed, but spells shouldn't cause a game to freeze just because of 4 simultaneous instances.

I'm gonna reiterate, I don't understand how this freezing issue is connected to balancing. The fact of the matter is, your spell causes screen freezing when multiple simultaneous instances are occurring, be it 0 second cooldown or 1 seconds cooldown. And if you're saying the cooldown should be longer, no, that's not balancing; more like a design flaw.

I don't know you guys like to play a map that has 0 cooldown spells - totally balanced.

Do not force your own opinions into others. If you submit a spell here, it's for the public. Some people would want spells that can be cast in quick succession whereas others would maybe prefer a "balanced" spell. The word "balanced" is based on each's perspective and based on game's mechanics itself. I'm simply using 0 seconds value to test the multi-instance-ability of the spell.
 
Last edited:
Level 33
Joined
Mar 27, 2008
Messages
8,035
I don't want to flame here, but you are saying this:
Do not force your own opinions into others.

You are forcing your opinion on me, does it count ?

If you say that my spell only can support up to 4 instances and game freeze, right ?

Now, don't damage the target AT ALL - or simply put, DON'T damage the target that is affected by the spell, AT ALL (set the damage to 0.00).

You will see it handles smoothly.

It's not because of the trigger, it's because of the multiplication of the soul - and it is meant to be that way.

And the multiplication becomes too fast, why ?

Because you guys spammed it and never balance it - causing the target to quickly die after succession of soul killing - this will cause it to multiply thousands and thousands of souls in a short time, and to handle their movement is lot of work , say, 4096 units per 0.03 second.

@iAyanami
Why do you put your Spectrum Shower cooldown to 16 seconds ?
What happens if you change it to 0 second cooldown and spam the hell out of it ?
Change the maximum balls to 1000 and change the duration of spell to 100 seconds ?

What do you think happen in the next 50 seconds if I continue to spam cast it ?
 
Level 9
Joined
Dec 3, 2010
Messages
162
If you say that my spell only can support up to 4 instances and game freeze, right ?

Now, don't damage the target AT ALL - or simply put, DON'T damage the target that is affected by the spell, AT ALL (set the damage to 0.00).

You will see it handles smoothly.

It's not because of the trigger, it's because of the multiplication of the soul - and it is meant to be that way.

And the multiplication becomes too fast, why ?

Because you guys spammed it and never balance it - causing the target to quickly die after succession of soul killing - this will cause it to multiply thousands and thousands of souls in a short time, and to handle their movement is lot of work , say, 4096 units per 0.03 second.

So basically, you're going to blame the user when their map crashes. I'll give you a simple scenario. Let's say this spell deals very minimal damage. However, in a map, you have units that happened to kill an enemy afflicted by this spell. So this spell happens to multiply and the player happens to kill more enemy units that were afflicted by the multiplied soul. The game will crash in matter of seconds.

You talk about balance, but the fact is that the spell will be no where near practical in terms of actual usage. So your argument is reduce the damage dealt, or the duration? Yeah, you need to consider any other damage sources that could possibly make the multiplication go out of hand.

Like I've mentioned, this looks more like a design oversight to me. You can easily prevent this by providing a configurable value to cap the multiplication of souls at a certain value, so that you won't reach a ridiculous value such as 4k in a span of 2 seconds.

@iAyanami
Why do you put your Spectrum Shower cooldown to 16 seconds ?
What happens if you change it to 0 second cooldown and spam the hell out of it ?
Change the maximum balls to 1000 and change the duration of spell to 100 seconds ?

What do you think happen in the next 50 seconds if I continue to spam cast it ?

I have no idea why you're bringing other people's resource into this. Comparing your spell and my spell doesn't even make sense. Your spell fails under so many circumstances such as external damage source that could potentially freeze the game due to extreme amount of souls multiplying.

For Spectrum Shower, yes, if you were to set the configurable to those ridiculous values, it will obviously cause a huge drop in FPS. But that would be the user's fault. Your spell doesn't even provide the user the option to prevent the freezing madness from occurring. Spectrum Shower doesn't fail under any circumstance if you put the values to a reasonable number. Your spell will fail even with any values (maybe except if the duration is like extremely short; which defeats the whole purpose of the spell itself). External damage sources can easily cause your multiplication to go out of hand.

I'm just going to reiterate one last time; it seems more like a design flaw rather than a balancing issue. I've mentioned above that you could add a maximum multiplication value per cast to prevent the freezing from happening.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
I won't follow your advice because simply you won't put balancing in the main topic.

For Spectrum Shower, yes, if you were to set the configurable to those ridiculous values, it will obviously cause a huge drop in FPS. But that would be the user's fault.
You just answered your own opinion.

Let's say you have Footrman in your map and the HP of the unit is 500, would you be so dumb to actually set the damage of the spell to 1000 per second ?
It's all about balancing - you yourselves balance the value in your spells because you know if the value is out of range (not balanced), it will cause problems too.

I have no idea why you're bringing other people's resource into this.
I wanted to give you an example that is closely related to you and your opinion - this way it affects your thinking greatly.

If I take another example that is not from you - you would think it otherwise.

PS:
I am planning to make it as 1 soul generated per body but that's not the real purpose of this spell - it is meant to spread like wildfire - exponentially, where you the user should balance it yourself.

Again I'd like to repeat, would you rather create a spell that stuns a unit for 100 second in a critical-time gameplay environment ?
 
Level 7
Joined
Apr 12, 2011
Messages
124
I won't follow your advice because simply you won't put balancing in the main topic.


You just answered your own opinion.

Let's say you have Footrman in your map and the HP of the unit is 500, would you be so dumb to actually set the damage of the spell to 1000 per second ?
It's all about balancing - you yourselves balance the value in your spells because you know if the value is out of range (not balanced), it will cause problems too.


I wanted to give you an example that is closely related to you and your opinion - this way it affects your thinking greatly.

If I take another example that is not from you - you would think it otherwise.

PS:
I am planning to make it as 1 soul generated per body but that's not the real purpose of this spell - it is meant to spread like wildfire - exponentially, where you the user should balance it yourself.

Again I'd like to repeat, would you rather create a spell that stuns a unit for 100 second in a critical-time gameplay environment ?
But if it's an exponential increase in soul spread the user can't balance it unless you apply changes to the spell not considered configuration but a complete rework.
 
Level 9
Joined
Dec 3, 2010
Messages
162
I won't follow your advice because simply you won't put balancing in the main topic.

Let's say you have Footrman in your map and the HP of the unit is 500, would you be so dumb to actually set the damage of the spell to 1000 per second ?
It's all about balancing - you yourselves balance the value in your spells because you know if the value is out of range (not balanced), it will cause problems too.

Didn't you just read what I posted? It's not about the spell damage. I'm talking about external damage that can factor in. Even if this spell deals 0 damage, as long as you have another source of damage that can kill the afflicted unit, the spell will still multiply at an extreme rate. Can you just take a second and read what I actually posted? You're completely skipping out that point.

Seriously, this isn't a matter of balancing. If you were to just add a configuration to simply limit the number of multiplications or such, then it would be the user's fault for putting that value to a high value. Currently, you don't even provide the option; so no, it's not the user's fault at all.


I am planning to make it as 1 soul generated per body but that's not the real purpose of this spell - it is meant to spread like wildfire - exponentially, where you the user should balance it yourself.

Again I'd like to repeat, would you rather create a spell that stuns a unit for 100 second in a critical-time gameplay environment ?

Sure, let the souls spread like wildfire, the idea is good. Simply provide the users an option to limit the amount, so that the game does not freeze. Keyword is option.

Again, you're comparing apples and oranges. A spell that stuns for 100 seconds is CONFIGURABLE in terms of stun duration. Your multiplication value is certainly not. Hence, balance isn't the issue here. And again, please read through what I've posted. I'm not talking about 1000 damage per second here, I'm talking about scenarios where the spell actually deals 0 damage but it still multiplies like crazy nonetheless due to other sources of damage.

But if it's an exponential increase in soul spread the user can't balance it unless you apply changes to the spell not considered configuration but a complete rework.

Exactly. Hence, I've been suggesting the limit in terms of the multiplicity. Just let the users decide how much they want the spell to "spread". From there, it would be the user's fault for setting it to a high value in an event the game freezes. That's why I've been saying that it's not a matter of balance.
 
Top