Wrda
Spell Reviewer
- Joined
- Nov 18, 2012
- Messages
- 2,011
You should separate the configurable parts of a spell from the spell's actions itself. For Example, Decomposing trigger having a new trigger like this:
Now you replace the values of the other trigger with these variables, wherever they're used. In most cases, the user shouldn't have to go to the core of the spell to modify the configurable parts. When importing spells, specially if someone already has a moderate amount, it will take the process longer.
This logic should be applied to all other spells.
Looking at the Decompose trigger, you only need 1 dummy unit for all instant spells. Add the ability to the dummy before issuing to cast and then remove it. Changing abilities fields sometimes won't work for all abilities you'll be using, it's safer to increase the level of the ability and then decrease it (increasing the level of the ability works even if the ability has only 1 level).
Barkskin: Deserves to have a configurable trigger on its own. The base cooldown can very from level 1 to level 2 and so on, better to store the amount in an array. I don't understand the need for Barkskin Trigger. If the unit doesn't have the buff, then Check Barkskin DmgRed trigger won't fire.
Nature's Incarnation: Also needs a configurable trigger, like the rest of the abilities. In NaturesInc Cast:
You only need 1 of "(Unit-type of (Triggering unit)) Equal to Druid" check, move it to the main condition. NaturesInc_CD should be array to reflect the different ability's levels cooldowns.
The line
In NaturesInc LoopDuration trigger, NaturesInc_CounterDuration[NaturesInc_LoopInteger] isn't being de-indexed, nor being set to 0.00 as default on cast, it bugs the spell after the first time use. The cooldown only ability seems to have different icon X Y positions than the actual passive ability.
Woodland Spirits: Spirit Summon: WSpirit_Duration should also be an array, to reflect separate ability levels. "call RemoveLocation(udg_WSpirit_Loc)" should be done at the end of all actions since if all conditions fail it will leak. There are a lot of things that should be configurable easier here, such as the base chance, the chance increment per level, the special effect's model. Even all the formulas could be configurable on a trigger apart, but perhaps it is quite straight forward to change and understand for the common user.
The special effect in Spirits DeathAnimation should also be configurable.
Wildfire: While setting damage in "Wildfire_Damage[(Custom value of (Triggering unit))]", what does division by 5 and ability level multiplied by 7 mean? They look arbitrary numbers. That's another example of a configurable part, along with the next lines. Only required 1 dummy unit as described earlier, with the safe method to ensure ability modified fields work. You don't actually need to destroy Wildfire_UnitGroup[3], since it never leaks. This spell is stuck in an endless loop since the counter keeps reseting each enemy's neighbour to 0.
Lunar Fall: A seperate configurable part. The damage is acting earlier than the effect shows colliding with the unit, which can be weird, different effects will have different times colliding (a lot are instant though).
Lightning Rod: A seperate configurable part. Needs the safe method of ability field modifications. Only needs 1 dummy unit (which can be initialized somewhere on initialization).
Cyclone Cast trigger: A seperate configurable part. Perhaps also is incomplete (?).
Cyclone Loop: No need "Do Nothing". Cyclone_Ramp[Cyclone_Index] is never set to 0 on cast, so after first cast it is always 30. There's lot of things that should be in the configurable part.
Moonkin Shapeshift: A seperate configurable part.
Moonkin Loop trigger:
Moonkin MSteal CDR trigger: A unit is attacked isn't a good event, better use "damaged".
Bear Shapeshift: BearSS Cast trigger: A seperate configurable part, specially with all the abilities being added and removed.
Bear Loop trigger:
Bear Bash trigger: only 1 dummy unit required.
Spider Shapeshift: A seperate configurable part.
SpiderShapeshift Cast trigger:
Spider Web: A unit is attacked isn't a good event.
The following leaks a unit group:
Wolf Shapeshift: A seperate configurable part.
WolfSS Cast trigger:
Wolf Ferocity trigger: Safe method to change unit ability level fields, described earlier.
Morphing from spider to bear and cycling around them and orders seem to remove the spider morph ability somehow.
Jump System by Paladon shouldn't be mixed within the spell pack, but rather a requirement that is clear to the user.
This is an interesting thematic spell pack overall.
-
Decompose Initialization
-
Events
-
Conditions
-
Actions
-
-------- =================================== --------
-
-------- =================================== --------
-
-------- =================================== --------
-
-------- ALL OF THESE VARIABLES CAN BE EDITED TO CHANGE THE STATS OF THE SPELL --------
-
Set Decompose_Ability = Decompose
-
Set Decompose_AbilityRegen = Decompose (Regen)
-
Set Decompose_AoE_Range = 500.00
-
-------- regeneration - abilitylevel*thisfactor --------
-
Set Decompose_HealFactor1 = 30.00
-
Set Decompose_ManaFactor1 = 30.00
-
-------- regeneration - strength*abilitylevel/thisfactor --------
-
Set Decompose_HealFactor2 = 15.00
-
Set Decompose_ManaFactor2 = 15.00
-
-------- fancy effect model --------
-
Set Decompose_SFX = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-
-
This logic should be applied to all other spells.
Looking at the Decompose trigger, you only need 1 dummy unit for all instant spells. Add the ability to the dummy before issuing to cast and then remove it. Changing abilities fields sometimes won't work for all abilities you'll be using, it's safer to increase the level of the ability and then decrease it (increasing the level of the ability works even if the ability has only 1 level).
Barkskin: Deserves to have a configurable trigger on its own. The base cooldown can very from level 1 to level 2 and so on, better to store the amount in an array. I don't understand the need for Barkskin Trigger. If the unit doesn't have the buff, then Check Barkskin DmgRed trigger won't fire.
Nature's Incarnation: Also needs a configurable trigger, like the rest of the abilities. In NaturesInc Cast:
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Bear
-
(Unit-type of (Triggering unit)) Equal to Druid
-
-
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Wolf
-
(Unit-type of (Triggering unit)) Equal to Druid
-
-
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Moonkin
-
(Unit-type of (Triggering unit)) Equal to Druid
-
-
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Spider
-
(Unit-type of (Triggering unit)) Equal to Druid
-
-
-
-
-
-
Then - Actions
-
The line
call UnitMakeAbilityPermanent(GetTriggerUnit(), true, 'A00J')
requires that 'A00J' to be a variable, part of the configurable trigger. "NaturesInc_MaxDuration[NaturesInc_Index] = 16.00" the 16.00 should be on the configurable part and not "NaturesInc_MaxDuration[NaturesInc_Index]" itself.In NaturesInc LoopDuration trigger, NaturesInc_CounterDuration[NaturesInc_LoopInteger] isn't being de-indexed, nor being set to 0.00 as default on cast, it bugs the spell after the first time use. The cooldown only ability seems to have different icon X Y positions than the actual passive ability.
Woodland Spirits: Spirit Summon: WSpirit_Duration should also be an array, to reflect separate ability levels. "call RemoveLocation(udg_WSpirit_Loc)" should be done at the end of all actions since if all conditions fail it will leak. There are a lot of things that should be configurable easier here, such as the base chance, the chance increment per level, the special effect's model. Even all the formulas could be configurable on a trigger apart, but perhaps it is quite straight forward to change and understand for the common user.
The special effect in Spirits DeathAnimation should also be configurable.
Wildfire: While setting damage in "Wildfire_Damage[(Custom value of (Triggering unit))]", what does division by 5 and ability level multiplied by 7 mean? They look arbitrary numbers. That's another example of a configurable part, along with the next lines. Only required 1 dummy unit as described earlier, with the safe method to ensure ability modified fields work. You don't actually need to destroy Wildfire_UnitGroup[3], since it never leaks. This spell is stuck in an endless loop since the counter keeps reseting each enemy's neighbour to 0.
Lunar Fall: A seperate configurable part. The damage is acting earlier than the effect shows colliding with the unit, which can be weird, different effects will have different times colliding (a lot are instant though).
Lightning Rod: A seperate configurable part. Needs the safe method of ability field modifications. Only needs 1 dummy unit (which can be initialized somewhere on initialization).
Cyclone Cast trigger: A seperate configurable part. Perhaps also is incomplete (?).
Cyclone Loop: No need "Do Nothing". Cyclone_Ramp[Cyclone_Index] is never set to 0 on cast, so after first cast it is always 30. There's lot of things that should be in the configurable part.
Moonkin Shapeshift: A seperate configurable part.
Moonkin Loop trigger:
-
Unit - For Unit MoonkinSS_Caster[MoonkinSS_LoopInteger], start cooldown of ability Shapeshift: Moonkin over (10.00 - MoonkinSS_Counter[MoonkinSS_LoopInteger]) seconds.
Moonkin MSteal CDR trigger: A unit is attacked isn't a good event, better use "damaged".
Bear Shapeshift: BearSS Cast trigger: A seperate configurable part, specially with all the abilities being added and removed.
Bear Loop trigger:
-
Unit - For Unit BearSS_Caster[BearSS_LoopInteger], start cooldown of ability Shapeshift: Bear over (10.00 - BearSS_Counter[BearSS_LoopInteger]) seconds.
Bear Bash trigger: only 1 dummy unit required.
Spider Shapeshift: A seperate configurable part.
SpiderShapeshift Cast trigger:
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Spider
-
Or - Any (Conditions) are true
-
Conditions
-
(Unit-type of (Triggering unit)) Equal to DruidMoonkin
-
(Unit-type of (Triggering unit)) Equal to DruidBear
-
(Unit-type of (Triggering unit)) Equal to DruidWolf
-
-
-
-
-
-
Spider Web: A unit is attacked isn't a good event.
The following leaks a unit group:
-
Set Spider_Web_AoE_Targets[(Custom value of (Attacking unit))] = (Random Spider_Web_AoE_TargetCap[(Custom value of (Attacking unit))] units from (Units within Spider_Web_AoE_Range[(Custom value of (Attacking unit))] of SpiderSS_Caster_LocationOffset matching ((((Matching unit) belongs to an enemy of (Owner of (Attacking un
Wolf Shapeshift: A seperate configurable part.
WolfSS Cast trigger:
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
(Ability being cast) Equal to Shapeshift: Wolf
-
Or - Any (Conditions) are true
-
Conditions
-
(Unit-type of (Triggering unit)) Equal to DruidMoonkin
-
(Unit-type of (Triggering unit)) Equal to DruidSpider
-
(Unit-type of (Triggering unit)) Equal to DruidBear
-
-
-
-
-
-
Wolf Ferocity trigger: Safe method to change unit ability level fields, described earlier.
Morphing from spider to bear and cycling around them and orders seem to remove the spider morph ability somehow.
Jump System by Paladon shouldn't be mixed within the spell pack, but rather a requirement that is clear to the user.
This is an interesting thematic spell pack overall.