Spell Kamikaze Slash


Reaction score
Kamikaze Slash v1.3
by Magoiche

Leakless?: Yep
Lagless?: Yep
Requirements: NewGen
Import Difficult: Medium

Description: The caster enters in a milesecond of frenzy hiting the enemy with all its power. The hit is so powerfull that even the caster receives damage.

Level 1 - The caster receives 15% of the target current HP in damage and the target receives the same damage plus 5% of the caster current HP.
Level 2 - The caster receives 30% of the target current HP in damage and the target receives the same damage plus 10% of the caster current HP.
Level 3 - The caster receives 45% of the target current HP in damage and the target receives the same damage plus 15% of the caster current HP.
Level 4 - The caster receives 60% of the target current HP in damage and the target receives the same damage plus 20% of the caster current HP.



////            Kamikaze Slash            ////
////          by Magoiche Saika           ////
////NOTE: Everything that you can't change////
////       in this script you can in the  ////
////              Object Editor.          ////

scope KamikazeSlash initializer Initial

    private constant integer KamikazeSlashRawData = 'A000'
    // Raw Data of the Kamikaze Slash spell
    private constant real TargetHPPercentage = 0.15
    // Percentage of HP per Spell Level that damages the Caster
    private constant real CasterHPPercentage = 0.05
    // Percentage of the Caster current HP that is added to the Damage for the Caster
    private constant attacktype KamikazeSlashAttackType = ATTACK_TYPE_HERO
    // Attack Type of the spell
    private constant damagetype KamikazeSlashDamageType = DAMAGE_TYPE_NORMAL
    // Damage Type of the spell
    private constant weapontype KamikazeSlashWeaponType = null
    // Weapon Type of the spell
    private constant string KamikazeSlashEffectsAttachmentPoint = "chest"
    // Attachment Point for the effects
    private constant integer KamikazeSlashNumberOfEffects = 4
    // Number of Active Effects
    private string array KamikazeSlashEffects
    // Dont Change the Line Above please

private function Effects takes nothing returns nothing
    set KamikazeSlashEffects[0] = "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl"
    set KamikazeSlashEffects[1] = "Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl"
    set KamikazeSlashEffects[2] = "Objects\\Spawnmodels\\Other\\BeastmasterBlood\\BeastmasterBlood.mdl"
    set KamikazeSlashEffects[3] = "Objects\\Spawnmodels\\Orc\\Orcblood\\BattrollBlood.mdl"

// To change an effect just change the path. The path is the text
// between the ""
// To implement new effects you have to make a line bellow the line 37,
// the line should be like this: set Effects[4] = "Patch to the Effect"
// then put the number of effects in the Line 27
// REMEMBER: There must be two "\\". If you jsut copy the patch from the
// object editor there will be only one "\" so remember to put two '\\'

// Dont change anything after this line if don't know what you are doing.

private function Conditions takes nothing returns boolean
    return GetSpellAbilityId() == KamikazeSlashRawData

private function Actions takes nothing returns nothing
    local unit Caster = GetTriggerUnit()
    local unit Target = GetSpellTargetUnit()
    local integer LoopAIndex = 0
    local real HPDamage = TargetHPPercentage * GetUnitAbilityLevel( Caster, KamikazeSlashRawData ) * GetWidgetLife( Target )
    call UnitDamageTarget( Caster, Caster, HPDamage, true, false, KamikazeSlashAttackType, KamikazeSlashDamageType, KamikazeSlashWeaponType )
    set HPDamage = HPDamage + ( CasterHPPercentage * GetUnitAbilityLevel( Caster, KamikazeSlashRawData ) ) * GetWidgetLife( Caster )
    call UnitDamageTarget( Caster, Target, HPDamage, true, false, KamikazeSlashAttackType, KamikazeSlashDamageType, KamikazeSlashWeaponType )
        exitwhen LoopAIndex > KamikazeSlashNumberOfEffects
        call DestroyEffect( AddSpecialEffectTarget( KamikazeSlashEffects[LoopAIndex], Caster, KamikazeSlashEffectsAttachmentPoint ) )
        call DestroyEffect( AddSpecialEffectTarget( KamikazeSlashEffects[LoopAIndex], Target, KamikazeSlashEffectsAttachmentPoint ) )
        set LoopAIndex = LoopAIndex + 1
    set Caster = null
    set Target = null

private function Initial takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call Effects()
    call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( trig, Condition( function Conditions ) )
    call TriggerAddAction( trig, function Actions )
    set trig = null


v1.0 - Created and Submited the Spell
v1.1 - Made the spell more configurable
v1.2 - Made the spell even more configurable and removed some leaks
v1.3 - Enhanced the spell. Special thanks to Romek

Instructions of how to import inside the map!​


Reaction score
The fx should be configurable.
Maybe weapontype too?

Else, good job, can't see anything bad.


Reaction score
How could i say?...
The spell is based on Storm Bolt and its have the Meat Wagon Missle.
When you cast the spell you will hear something like a "Flesh Explosion"
So it will be weird if there is another sound.
At least i think it will be.
But anyway. I WILL DO IT! ò.ó

EDIT: Added v1.1
Reaction score
> hiting the enemies
That was a bit misleading - I thought it was an Omnislash-type ability (if you know what I mean).


    set Effect[0] = FirstEffect
    set Effect[1] = SecondEffect
    set Effect[2] = ThirdEffect
    set Effect[3] = FourthEffect


   private constant integer NumberOfEffects = 4

What if I would want to add two effects more? Then I have to put myself "FifthEffect" and "Sixth Effect" and edit the array Effect to suit my needs. You could add this to the configuration somehow to make things a lot more easier. And, I think you aren't using NumberOfEffects anywhere (or I'm blind).

Other than that, good spell. :) +rep


Super Moderator
Staff member
Reaction score
You could set those 'Effects' at map init, so you don't do it every time the function runs.
And those aren't fully configurable.

> exitwhen LoopAIndex >= NumberOfEffects - 1
exitwhen LoopAIndex > NumberOfEffects

> GetUnitState( Target, UNIT_STATE_LIFE )

> ...ndex], Caster, "chest" ) )...
Make the "chest" configurable

Also, your variable names don't follow any sort of naming convention.
Constants are usually in ALL CAPS. Locals are usually all small. No caps at all.


Reaction score
Thanks! +rep

Added v1.2 - Its even more configurable now.

And Romek...

I like the way i call the variables.
I don't have to change its names because one is local and other is global
They all are usefull to the trigger so i name them all the same.


Super Moderator
Staff member
Reaction score
I like the way i call the variables.
I don't have to change its names because one is local and other is global
They all are usefull to the trigger so i name them all the same.
You'll get muddled up easily like that.
And it's a simple naming convention which people follow for a reason.
It's not just there to annoy people.
When I see a variable in capitals, I assume it's a constant. Same with some capitals (globals) and all lowercase (locals).
Also, if you have 2 variables, a local and global with a common name, the local will get priority, and you might get some annoying bugs. ^_^

Why are you setting the Effect array in a different scope?
"Effect" is a very common variable name, and it should definitely be private.

Though this wouldn't be a problem if you just put it into one scope.. o_O


Reaction score
Searching an translator for muddled.
And... sorry! I didn't say that to botter you. i.i

About the effects.
If i put it in the same scope i will have to set the whole trigger to run on map init.
Or there is no probme about that?



I just put a call for the stup function on the initializer function.
It worked well. Thanks man!
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    Starting this upcoming Thursday, I will be in Japan for 10 days.
  • tom_mai78101 tom_mai78101:
    Thursday - Friday will be my Japan arrival flight. 9 days later, on a Sunday, will be my return departure flight.
  • The Helper The Helper:
    Hope you have safe travels my friend!
  • vypur85 vypur85:
    Wow spring time in Japan is awesome. Enjoy!
  • The Helper The Helper:
    Hopefully it will be more pleasure than work
  • vypur85 vypur85:
    Recently tried out ChatGPT about WE triggering. Wow it's capable of giving a somewhat legitimate response.
  • The Helper The Helper:
    I am sure it has read all the info on the forums here
  • The Helper The Helper:
    i think triggering is just scripting and chatgpt is real good at code
  • vypur85 vypur85:
    Yeah I suppose so. It's interesting how it can explain in so much detail.
  • vypur85 vypur85:
    But yet it won't work.
  • The Helper The Helper:
    it does a bad ass job doing excel vba code it has leveled me up at my job when I deal with excel that is for sure
  • vypur85 vypur85:
    Nice! I love Excel coding as well. Has always been using Google to help me. Maybe I'll use ChatGPT next time when I need it.
  • The Helper The Helper:
    yeah whatever it puts out even if it is not perfect I can fix it and the latest version of chatgpt can create websites from pictures it will not be long until it can do that with almost all the tools
  • The Helper The Helper:
    These new Chat AI programs are going to change everything everyone better Buckle the Fuck Up!
  • The Helper The Helper:
    oh and Happy Tuesday Evening! :)
  • jonas jonas:
    Im worried they'll change things for worse
  • jonas jonas:
    A lot more low quality content, a lot more half-baked stuff.
  • jonas jonas:
    If you're good enough to spot the mistakes of the answers you don't need it in the first place. If you aren't good enough, you're gonna rely on some half-correct stuff
  • The Helper The Helper:
    the earlier AI is and has been used extensively for publishing news and other content for a while now
  • jonas jonas:
    I used to be active on quora, it's now flooded with extremely similar, superficial answers that often miss the point of the question
  • N NJJ:
  • N NJJ:
    Hello, gathering all my old accounts… :)
  • The Helper The Helper:
    by all means gather it all up!

    The Helper Discord

    Staff online

    Members online


    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.