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!
Binding Poison binds a target . The target loses life overtime as the poison is taking place. At the break of the spell, the poison spills into some AoE to damage nearby enemy units.
BPConfig
Events
Map initialization
Conditions
Actions
-------- You can set anything here --------
-------- Set the Attachment Point on the Target unit of Ability being cast --------
Set DummyEffect_AttachStr_OnCst = origin
-------- Set the Attachment Point on the sorrounding units at the break of the spell --------
Set DummyEffect_AttachStr_OnBrk = origin
-------- Set the model path used on the target unit --------
Set Dummy_Effect_EffStr_OnCst = Abilities\Spells\NightElf\Immolation\ImmolationTarget.mdl
-------- Set the model path used on the sorrounding units at the break of the spell --------
Set Dummy_Effect_EffStr_OnBrk = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
For each (Integer BP_loop) from 1 to BP_index_size, do (Actions)
Loop - Actions
Set BP_integer = BP_index[BP_loop]
Set BP_TempTargetPosition = (Position of BP_Target[BP_integer])
-------- this damages the enemy unit for a certain period --------
Unit - Cause BP_Caster[BP_integer] to damage BP_Target[BP_integer], dealing BP_DamageInflict[BP_integer] damage of attack type Spells and damage type Normal
-------- if time reaches zero or if target is dead, the loop will end --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
BP_time[BP_integer] Less than or equal to 0.00
(BP_Target[BP_integer] is dead) Equal to True
Then - Actions
Set BP_DamagedGroup = (Units within BP_AoE[BP_integer] of BP_TempTargetPosition matching (((Matching unit) belongs to an enemy of (Owner of BP_Caster[BP_integer])) Equal to True))
Unit Group - Pick every unit in BP_DamagedGroup and do (Actions)
Loop - Actions
Unit - Cause BP_Caster[BP_integer] to damage (Picked unit), dealing BP_DamageInflict[BP_integer] damage of attack type Spells and damage type Normal
Special Effect - Create a special effect attached to the DummyEffect_AttachStr_OnBrk of (Picked unit) using Dummy_Effect_EffStr_OnBrk
Special Effect - Destroy (Last created special effect)
Special Effect - Destroy BP_SpecialEffect[BP_integer]
-------- The following recycles indexes which have already ended --------
-------- to avoid unnecessary loops --------
Set BP_index[BP_loop] = BP_index[BP_index_size]
Set BP_index[BP_index_size] = BP_integer
Set BP_index_size = (BP_index_size - 1)
Set BP_loop = (BP_loop - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BP_index_size Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
Set BP_time[BP_integer] = (BP_time[BP_integer] - 1.00)
Change Logs:
1. This spell doesn't pause or stun the target anymore. I just bind him with poison.
2. Some major fixes done. (Please, see the triggers)
3. No more Dummy unit required.
4. No more special effect for the caster.
Change log
Stored damage as an array
Moderator: Pharaoh_
Date: 18:59, 22nd Apr 2012
Could be further improved, but it's approvable.
Useful
• The way you are damaging the units is not user-friendly. If one user wants to damage for 50 static damage, the loop trigger forces that...
• The way you are damaging the units is not user-friendly. If one user wants to damage for 50 static damage, the loop trigger forces that damage to be multiplied by the level of the caster's ability.
Store the damage with the array, like BP_RealDamage[BP_integer].
• Storing the AoE_Effect, when you instantly destroy it is not needed. Just use Special Effect - Destroy (Last created special effect).
• You still don't configure the special effects' paths, such as AnimateDeadTarget, ImmolationTarget and AnimateDeadTarget in your BPDuration trigger.
• The Pause's duration (Storm bolt ability) should be 0 in the Object Editor, so that a user can manage everything in the spell only by triggers. Do not forget to check if the target has other instances running on it, before removing the buff, otherwise previous endings of duration will dissolve the effect of the newer instances.
• Skip remaining actions is not necessary, especially when they are in the end of an if then else branch and after a trigger turn-off.
• Set Art - Death time of the dummy to 0.
• You don't need to store the caster's special effect, especially when you use the AnimateDeadTarget effect. It does not have a stand animation anyway. Just destroy it right after it has been used in BPCasting (don't forget to additionally remove the action of destruction in the BPDuration trigger).
• Rename the triggers; their names are too generic (speaking of the ones specifically used by this spell).
• Use global variables in the map initialization trigger (or even better, create a map initialization trigger for this spell only, to init values), in order to configure special effect paths (string variables). Mark the "duration" variable with a comment, to let a user noticeably know that this variable pertains to duration of the spell per level.
• Stun the unit, like Maker suggested in his review. Use Storm Bolt-based ability, with a duration of 0 and remove the buff, when the instance has ended. Make sure you check if that particular index'd target has more than one instances running on it, before removing the buff. This will help you a) to avoid removing the buff, in case other instances are used on the same unit, b) avoid spamming the special effects on the target more than once.
• Use Stats - Hide Minimap Display = True for the dummy.
• Avoid posting the triggers over and over again in the description, for every update. Use the triggers of the current version.
• It's more preferable to use the sfx on the target, not on a dummy, this will save performance. Make configurable values for the attachment points as well (e.g. "origin"/"chest"/etc.).
I'd also suggest adding some height onto that lightning effect by using AddLightningEx - this is so that it won't stick to the ground.
If you need to know how to use it I'd suggest looking at other spells with it, there are quite a few.
Also if you have problems with hashtables, just use dynamic indexing.
When I try to save in the TFT version that can use hastables, all triggers are being disabled. It says there are some errors and plenty of them. Even the triggers used for melee maps cannot be saved. IDK.
If anyone leaves good advice on how to make something MUI let me be the first. If you simply cannot use hashtables then use a indexing system without hashtables.
Example: Bribe's Indexer
Or, use JNPG and do custom script hashtables (Or regular editor for that matter, though it might not compile without jasshelper)
Example:
Hello, here is the new trigger for this spell. I guess, there is still something wrong. Could someone tell me why the effect per second is disabled when some other hero cast the same spell here?
Start
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Binding Poison
Actions
-------- Dont change anyhting here --------
Set Index[0] = (Index[0] + 1)
Set TimeIndex = Index[0]
Set EffectIndex = (Custom value of Target[Index[0]])
Set time_multiplier[TimeIndex] = 2.00
Game - Display to (All players) for 3.00 seconds the text: (String(Index[0]))
-------- I am setting some thing her to fire in the next trigger --------
Set Caster[Index[0]] = (Triggering unit)
Set TempCasterPosition[Index[0]] = (Position of (Triggering unit))
Set Target[Index[0]] = (Target unit of ability being cast)
Set TempTargetPosition[Index[0]] = (Position of (Target unit of ability being cast))
-------- Now adding some effects --------
Special Effect - Create a special effect at TempTargetPosition[Index[0]] using Abilities\Spells\NightElf\Immolation\ImmolationTarget.mdl
Set SpecialEffect_chest[EffectIndex] = (Last created special effect)
Special Effect - Create a special effect attached to the origin of Target[Index[0]] using Abilities\Spells\NightElf\CorrosiveBreath\ChimaeraAcidTargetArt.mdl
Set SpecialEffect_origin[EffectIndex] = (Last created special effect)
Lightning - Create a Mana Flare lightning effect from source TempCasterPosition[Index[0]] to target TempTargetPosition[Index[0]]
Set Lightning[EffectIndex] = (Last created lightning effect)
-------- I also set the damage for easy reach --------
-------- you can reset the values below --------
Set DamageGiven[Index[0]] = 20.00
Set DamageMultiplier[Index[0]] = 15.00
-------- don't touch here --------
Set PoisonLevel[Index[0]] = (Level of Binding Poison for Caster[Index[0]])
Set Damage_A[Index[0]] = ((Real(PoisonLevel[Index[0]])) + DamageMultiplier[Index[0]])
Set Damage = (Damage_A[Index[0]] + DamageGiven[Index[0]])
Set time[TimeIndex] = (((Real(PoisonLevel[Index[0]])) x time_multiplier[Index[0]]) + 5.00)
-------- custom script below will remove leaking locations --------
-------- AoE Units are affected just once --------
-------- Units sorrounding the enemy unit as target of ability being cast are also affected but after the effect of the ability. The AoE is set to 512.00 as default. --------
-------- You can disable or delete the actions below that runs the AoEso the ability will not have AoE --------
Well you still only run the last instance and are not looping thru all of them... the one referenced with Index[0]... and oh, Integer A is non-existent on your trigger becoz its not inside a For integer A loop...
TempPosition whatsoever and DamageGroup should not be an array... AbilLevel is the one that needs to be an array...
I suggest removing the checking part which checks if the dummy is dead and move those actions inside of it to the second if-then-else, before anything that is currently on that block... and so remove the life timer too...
and as the mods suggest, use stun rather than pausing coz pausing is bad...
Good spell. Simple but cool. 4/5.
I have found a bug: at the last line of the trigger at the custom script you have missed the "a" letter for the Location. So please fix that.
Thanks Adiktuz. I did that on this update, actually I did so much update today to include: using storm bolt to stun target, some edits that the moderator requires including renaming the triggers and putting up some comments. Also, some stuff on the dummy thingy, and other updates to the spell.
eubz, please fix the damage part, just like your Frozen Shards spell, use an array to damage the units.
I am not sure by the way, why is it that when the target dies, the aoe damage effect triggers. It shouldn't trigger at all, if he died during the spell's effect.
AoE + Level would result 251, 252, 253, etc. aoe, while the main comment for the aoe states 250, 500, 750, etc.. Is this indeed what you're after?
You can guide yourself through this, for future reference, because frankly, the current formula is too overpowered to use. http://world-editor-tutorials.thehelper.net/formula.php
Damn, didn't see this:
Set BP_DamageInflict[BP_integer] = (BP_RealDamage x (Real((Level of Binding Poison for BP_Caster[BP_integer]))))
Use this in the cast trigger, not the looping one. Also, Level of ability is already saved; use that variable for reference.
Update it with the changes I told you, it would be a lot better.
In the enumeration, check if matching unit belongs to an enemy of caster, not an ally of target, so as to include every enemy possible. It's early in the morning here, I didn't really spot these stuff. Make sure you update your rest spells with the same fixes.
Set BP_DamagedGroup = (Units within BP_AoE[BP_integer] of BP_TempTargetPosition matching (((Matching unit) belongs to an enemy of (Owner of BP_Caster[BP_integer])) Equal to True))
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.