Spell Request -> Kunkka's Cleave

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
In DotA, Kunkka's cleave is the greatest cleaving in the game. Can any1 make it for me? It is too complicated and i think it for 1 hour still cant wonder how it works.:banghead::banghead::banghead:
 

8uY_YoU

New Member
Reaction score
4
In DotA, Kunkka's cleave is the greatest cleaving in the game. Can any1 make it for me? It is too complicated and i think it for 1 hour still cant wonder how it works.:banghead::banghead::banghead:

It is using cleaving attack inside spellbook, if you don't know about spellbook, try search..
The trigger maybe like this

Code:
Events
Time - every x seconds
Conditions
Unit has cleaving attack in spellbook equal to false
Actions
Unit - add damage bonus to unit
Unit - add cleaving attack in spellbook to unit
Player - disable cleaving attack in spellbook to owner of unit
 

Cookiemaster

New Member
Reaction score
36
What the F is Kunkka's Cleave?

Seriously, if you want to know how an ability can be made, it would be nice if you posted what the ability itself does.
 

bOb666777

Stand against the ugly world domination face!
Reaction score
117
What the F is Kunkka's Cleave?

Seriously, if you want to know how an ability can be made, it would be nice if you posted what the ability itself does.

I'm not sure, I think it's a passive ability that allows you to cleave major damage for 1 attack every X seconds (X decreases with level).

Shouldn't be too hard. Use a global boolean for cooldown, and whenever a unit is attacked and that boolean == true, then spawn a dummy that casts a modified warstomp and set the boolean to false. Additionally, when the boolean is true, you can add a special effect on the unit's weapon, like Kunkka's sword
 

simonake

New Member
Reaction score
72
Okay here's the topo. (GUI, NOT MUI, NOT LEAKLESS)
all you need is the spells and a custom buff. Need two triggers the first one is this.
Trigger:
  • Periodic
    • Events
      • Time - Every 4 seconds of game time
    • Conditions
      • (Kunkka) has <custom buff> Equal to FALSE
    • Actions
      • Unit - Add <custom buff> to (Kunkka)


Second trigger
Trigger:
  • Hit
    • Events
      • Unit - A unit is attacked
    • Conditions
      • (Attacking unit) has <custom buff> Equal to true
    • Actions
      • Unit - Remove <custom buff>
      • Unit Group - Pick every unit in 600 range of (Attacking unit) and do (actions)
        • Loop -
          • Unit - Cause (Attacking unit) to deal X dmg to (Picked unit) etc..

Hope you get the point, hope that whats you wanted (i want rep!):D
Took me long to realize it what simple as this. :D :thup:
 

bOb666777

Stand against the ugly world domination face!
Reaction score
117
Actually, using a buff is a good idea, I never think about them :p
 

simonake

New Member
Reaction score
72
thx, same for me, just before i realized, i was using a spells book disabled/// and the buff create visual effect for the player!!!///
 

Legacyspy

New Member
Reaction score
19
Okay here's the topo. (GUI, NOT MUI, NOT LEAKLESS)
all you need is the spells and a custom buff. Need two triggers the first one is this.
Trigger:
  • Periodic
    • Events
      • Time - Every 4 seconds of game time
    • Conditions
      • (Kunkka) has <custom buff> Equal to FALSE
    • Actions
      • Unit - Add <custom buff> to (Kunkka)


Second trigger
Trigger:
  • Hit
    • Events
      • Unit - A unit is attacked
    • Conditions
      • (Attacking unit) has <custom buff> Equal to true
    • Actions
      • Unit - Remove <custom buff>
      • Unit Group - Pick every unit in 600 range of (Attacking unit) and do (actions)
        • Loop -
          • Unit - Cause (Attacking unit) to deal X dmg to (Picked unit) etc..

Hope you get the point, hope that whats you wanted (i want rep!):D
Took me long to realize it what simple as this. :D :thup:

That won't work as it's cleave so the damage dealt is the attack damage of the hero +15/30/45/60 per level.

Instead you need to every 4 seconds pick every kunnka, check if it has the buff, if not add the spellbook containg cleave and the +damage, set the damage to the correct level.

Then every time it deals damage through an attack you remove it.
 

Dirac

22710180
Reaction score
147
Wont work using a 4 second periodic event. Since the hero will gain the buff every 4 seconds event if it attacks (in dota you must wait 8 seconds before the last attack in order to activate it)

Unit Takes Damage
If DamageSource is in Combat Group equal to false
Pick every unit within 600 of damage source matching blah blah blah.. and do
Deal DMG
-
Add Damage Source to Combat Group

Every 0.1 seconds
Pick every unit in Combat Group and do
set custom value of picked unit to x+1.
if custom value equal to (time to wait here)/0.1 then remove unit from combat group
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
But it will decrease cooldown every level....... Lv1 - 16s, Lv2 - 12s, Lv3 - 8 and Lv 4 - 4
 

Cookiemaster

New Member
Reaction score
36
I suggest just making an attack detection system and then trigger the ability from it. Is way more easily configurable and such.


Making a cleave with cooldown can be done by dumping the cleave ability in the orb of slow ability, giving a % chance to cleave with a possible cooldown, but the problem to this is that this does not give an additional amount of bonus damage.
 

Dirac

22710180
Reaction score
147
Unit Takes Damage
If DamageSource is in Combat Group equal to false
Pick every unit within 600 of damage source matching blah blah blah.. and do
Deal DMG
-
Add Damage Source to Combat Group

Every 0.1 seconds
Pick every unit in Combat Group and do
set custom value of picked unit to x+1.
if custom value equal to (time to wait here)/0.1 then remove unit from combat group

Do it this way to set cooldown
Unit Takes Damage
If DamageSource is in Combat Group equal to false
Pick every unit within 600 of damage source matching blah blah blah.. and do
Deal DMG
-
Set the custom value of unit to ((COOLDOWN FORMULA HERE :p) x 10)Notice that the x10 is important
Add Damage Source to Combat Group

Every 0.1 seconds
Pick every unit in Combat Group and do
set custom value of picked unit to x-1.
if custom value equal to 0 then remove unit from combat group
 

NetherHawk

New Member
Reaction score
26
Here it is..u just gotta make the abilities yourself. And be nice. Dont give me this should be graveyarded thing again.

basically when a the hero learns this ability, a trigger with timer event is created. After the time elapsed is reached, it created a trigger to register unit attack and another to register when that unit attacked receives damage.

it is a long code, but u know jass and this should be very easy for you to understand.

what is uses: item ability for cleave and attack bonus . Add this to a spellbook. When the time elapsed is reached, trigger will add the abilities, set the level of the abilities, add the special effect. Once damage is dealt it will remove everything.

@@Dirac: do u want to actually try what u suggested. pick 600 units in aoe? since when cleave affects units behind the hero =x
@@Simonake: totally not how tidebringer is made. not even close.

JASS:
scope Tidebringer initializer Init

// Objects used:
// 'A04D' = Tidebringer (Admiral : Kunkka) 
// 'A04A' = Tidebringer Attack Bonus
// 'A04C' = Tidebringer Cleaving Attack
// 'A04B' = Tidebringer Spellbook

globals
    private unit Tcaster    
    private real Texpiry // the 16/12/8/4 seconds delay between each cleave
    private real Telapsed 
    private trigger Ttriggerx // the event unit damaged trigger is created and destroyed everytime a new target is acquired or when 2.5sec has passed.
    private trigger Ttrigger // the main trigger which counts the Telapsed
    private boolean Tbool // prevent recreation of event unit damaged trigger within the 2.5 sec time window if attacked unit is the same.
    private effect array Teffect // the water hands effect attached to kunkka/s sword
endglobals

private struct tide // just to reference back the unit attacked trigger do destroy it after the cleave is done
    trigger tx
    
    method onDestroy takes nothing returns nothing
        set .tx = null
    endmethod
endstruct

private function Tidebringer_Conditions takes nothing returns boolean
    return GetLearnedSkill() == 'A04D'
endfunction

private function Tidebringer_Filter takes nothing returns boolean
    return GetAttacker() == Tcaster and IsUnitEnemy(GetTriggerUnit(),GetOwningPlayer(Tcaster))
endfunction

private function Tidebringer_Check takes nothing returns boolean
    return GetEventDamageSource() == Tcaster
endfunction

private function Tidebringer_Damage takes nothing returns nothing
    local trigger td = GetTriggeringTrigger()
    local tide t = GetTriggerStructA(td)

    call DisableTrigger(td)
    
    if GetTriggerEventId() != EVENT_UNIT_DAMAGED then
    else
        call UnitMakeAbilityPermanent(Tcaster,false,'A04A')
        call UnitMakeAbilityPermanent(Tcaster,false,'A04B')
        call UnitMakeAbilityPermanent(Tcaster,false,'A04C')
        call UnitRemoveAbility(Tcaster,'A04B')
        
        call DestroyEffect(Teffect[1])
        call DestroyEffect(Teffect[2])
        set Telapsed = 0.
        
        call DisableTrigger(t.tx)
        call DestroyTrigger(t.tx) 
        call EnableTrigger(Ttrigger)
    endif
    
    set Tbool = false
    call t.destroy()
    call ClearTriggerStructA(td)        
    call DestroyTrigger(td)
    set td = null
endfunction

private function Tidebringer_Attacked takes nothing returns nothing
    local tide t
    local unit ux = GetTriggerUnit()
    local trigger tx = GetTriggeringTrigger()   
    
    if Tbool == true then
        call DestroyTrigger(Ttriggerx)        
    endif
    
    set Ttriggerx = CreateTrigger()
    set Tbool = true
    set t = tide.create()
    set t.tx = tx      
    call SetTriggerStructA(Ttriggerx,t)
    call TriggerRegisterTimerEvent(Ttriggerx,2.5,false)        
    call TriggerRegisterUnitEvent(Ttriggerx,ux,EVENT_UNIT_DAMAGED)
    call TriggerAddCondition(Ttriggerx,Condition(function Tidebringer_Check))
    call TriggerAddAction(Ttriggerx,function Tidebringer_Damage)
        
    set ux = null
    set tx = null    
endfunction

private function Tidebringer_Setup takes nothing returns nothing
    local trigger tr = GetTriggeringTrigger()
    local trigger tx
    
    set Telapsed = Telapsed + .5
    
    if Telapsed >= Texpiry then
        call DisableTrigger(tr)
        
        call UnitAddAbility(Tcaster,'A04B')
        call SetUnitAbilityLevel(Tcaster,'A04A',GetUnitAbilityLevel(Tcaster,'A04D'))
        call SetUnitAbilityLevel(Tcaster,'A04C',GetUnitAbilityLevel(Tcaster,'A04D'))   
        call UnitMakeAbilityPermanent(Tcaster,true,'A04A')
        call UnitMakeAbilityPermanent(Tcaster,true,'A04B')
        call UnitMakeAbilityPermanent(Tcaster,true,'A04C')
        call SetPlayerAbilityAvailable(GetOwningPlayer(Tcaster),'A04B',false)
        
        set Teffect[1] = AddSpecialEffectTarget("WaterHands.mdx",Tcaster,"weapon")
        set Teffect[2] = AddSpecialEffectTarget("WaterHands.mdx",Tcaster,"right + hand")
        
        set tx = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(tx,EVENT_PLAYER_UNIT_ATTACKED)
        call TriggerAddCondition(tx,Condition(function Tidebringer_Filter))
        call TriggerAddAction(tx,function Tidebringer_Attacked)
        
    endif
            
    set tr = null
    set tx = null
endfunction   

private function Tidebringer_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()    
    local trigger tr
        
    set Texpiry = 20.-(I2R(GetUnitAbilityLevel(u,'A04D'))*4.)   
        
    if GetUnitAbilityLevel(u,'A04D') == 1 then
        set Tcaster = u        
        set Telapsed = 0.
        set Ttriggerx = CreateTrigger()
        set Tbool = true
        set tr = CreateTrigger()    
        set Ttrigger = tr
        call TriggerRegisterTimerEvent(tr,.5,true)
        call TriggerAddAction(tr,function Tidebringer_Setup)
    endif
    
    set tr = null
    set u = null
endfunction

private function Init takes nothing returns nothing
    set gg_trg_Tidebringer = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Tidebringer,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(gg_trg_Tidebringer,Condition(function Tidebringer_Conditions))
    call TriggerAddAction(gg_trg_Tidebringer,function Tidebringer_Actions)
endfunction

endscope
 

avalya

New Member
Reaction score
37
Use an attack detection system; whenever a unit is damaged, check if TB_Cooldown is less than or equal to 0, if it is then pick every unit within 425 AOE (I believe that's about the same) that are alive, enemies and not buildings, damage the picked units equal to the damage the first unit took with pure damage (chaos + universal), create special effect at the chest of picked units with Water Elemental missile, destroy last created special effect, set TB_Cooldown, a real array (one for every player, this is the cooldown) to 4 x Level of Tidebringer for your hero.

In another trigger, every 0.25 seconds, from every integer 1 to 12, do actions; if TB_Cooldown greater than 0, then set TB_Cooldown[Integer A] = TB_Cooldown[Integer A] - 0.25.
 

NetherHawk

New Member
Reaction score
26
you cannot use pick every unit in an aoe. That just isnt how cleave works. you have to add an item cleave ability and a damage bonus item ability via a spellbook when the time =0 or whatever.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top