Glaives of Wisdom? it is posible in GUI? can i request this?

Troll

New Member
Reaction score
4
Spell from DotA called Glaives of Wisdom,


Nortrom's Glaives are enchanted by his experience in magic. If he kills a hero, he will permanently steal 1 intelligence from it. Damage type is pure.

Level 1 - Deals 15% of your intelligence in bonus damage.
Level 2 - Deals 30% of your intelligence in bonus damage.
Level 3 - Deals 45% of your intelligence in bonus damage.
Level 4 - Deals 60% of your intelligence in bonus damage.

Cooldown: 3/2/1/0 seconds.

Casteable/Autocastable

Bonus damage shoul be shown in the overhead just ike a critical strike on the target unit with teal color.

+1 int on the killer, -1 int on the target killed. (text in red color)

I am not directly requesting this, i would like some guidance on how to make this, but if someone can make this spell for me and post it on the spell section i would be more than gratefull with you guys.
 

Ghostwind

o________o
Reaction score
172
I'm sure it's possible, and in fact I'm guessing the creators of dota made this in GUI. I don't know how to make it though.
 

demotry241

Don't Ever Categorize Yourself.
Reaction score
105
dota's one probably is jass

due to weapon speed.



about this hmmm.



make unit damage unit dealing (Intelligence of unit[include bonuses])*(.15*(level of ability for unit)) with damage type of pure/acid.
 

the_ideal

user title
Reaction score
61
I'm not sure if this'll work, but it very well might:

Make two item abilities with a large number of levels, like 100. Base it off of an item like crown of kings. Use a negative int bonus for the subtraction, and give the ability and set the level to the bonus/penalty you want.
 

Troll

New Member
Reaction score
4
How the trigger should look like? and i rememeber emjre or someone done this in jass, but it had a problem wit hthe autocast detection, i dont know jass either.

i could make this but only pasive, not active =(
 

Fluffball

Well-Known Member
Reaction score
35
Just do Unit - A Unit Dies, check whether they have the ability, then minus 1 int from dieing unit, +1 for killing unit, then when a unit starts the effect of an ability, do the maths that demotry pointed out, do the extra damage, then make a floating text, set velocity, permanence, and fading age.

BTW Base it off heal or something that can be autocasted.
 

Troll

New Member
Reaction score
4
Just do Unit - A Unit Dies, check whether they have the ability, then minus 1 int from dieing unit, +1 for killing unit, then when a unit starts the effect of an ability, do the maths that demotry pointed out, do the extra damage, then make a floating text, set velocity, permanence, and fading age.

BTW Base it off heal or something that can be autocasted.

Maybe should be based on Searing Arrows instead of heal?
 

thewrongvine

The Evolved Panda Commandant
Reaction score
506
Searing Arrows would be better than heal, but it doesn't really matter that much since you can edit the data.

For the damage, it's in UNIT section - damage target unit dealing ((Intelligence * .15) * (Level of (Glaives of Wisdom) for (Triggering Unit))).

That is not exactly how it is, and I don't have WCIII WE here, but it's something along those lines. For the intelligence part, do what Fluff said. :)
 

Troll

New Member
Reaction score
4
Searing Arrows would be better than heal, but it doesn't really matter that much since you can edit the data.

For the damage, it's in UNIT section - damage target unit dealing ((Intelligence * .15) * (Level of (Glaives of Wisdom) for (Triggering Unit))).

That is not exactly how it is, and I don't have WCIII WE here, but it's something along those lines. For the intelligence part, do what Fluff said. :)

Thanks, by the way you got MSN?

i would like to know if a trigger like that would detect autocast?
 

AceLegend90

New Member
Reaction score
6
No, an autocasted is treated as an attack, so the only way you could possibly detect if it's an autocast is by checking to see if he has a buff.

First, base your autocast arrow ability off poison arrows, for the buff, replace ALL of them with one that you desire. This means you have like 3 of the same buff in a single row. The buff should last .01 seconds.

In JASS code, what you basically do is check when a target is attacked. When he is attacked, you create another trigger that detects when that target is damaged. The trigger that detects damage should last around 2 seconds (the time it takes for the arrow to reach the target). Then when the target is damaged trigger goes off, you check if the target has the buff. If the target does, then disable the trigger and damage the target.

I'm sure it's possible in GUI but will most likely not be MUI or extremely dependable.
 

Tom_Kazansky

--- wraith it ! ---
Reaction score
157
Here, Glaive of Wisdom in GUI. Also there is Impetus.

The +/- 1 Int, you can do it by yourself, right ?

How to Import:
- Copy the Glaive of Wisdom ability and buff
- Copy the 3 triggers: UnitTakeDamageInit, UnitTakeDamageDetector, UnitTakeDamage.
- Make sure you have the correct ability and buff.
 

Attachments

  • [Demo]AutoCast.w3x
    19.3 KB · Views: 479

AceLegend90

New Member
Reaction score
6
Well, if it helps you any, I coded Glaives of Wisdom in JASS. It's not import friendly, but I hope it'll help.

Here's the main trigger:
Code:
function Glaives_of_Wisdom_Conditions takes nothing returns boolean
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_EFFECT and GetSpellAbilityId() == 'A08E' then
        return true
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_ATTACKED and GetUnitAbilityLevel(GetAttacker(), 'A08E') > 0 then
        return true
    endif
    return false
endfunction

function Glaives_of_Wisdom_Effects takes nothing returns boolean
    local unit attacker = GetEventDamageSource()
    local unit attacked = GetTriggerUnit()
    local real damage = .15 * GetUnitAbilityLevel(attacker, 'A08E') * GetHeroInt(attacker, true)
    local texttag tag = null
    
    if GetUnitAbilityLevel(attacked, 'B024') > 0 and GetUnitAbilityLevel(attacker, 'A08E') > 0 then
        call DisableTrigger(GetTriggeringTrigger())
        set tag = CreateTextTag()
        call SetTextTagText(tag, "+" + I2S(R2I(damage)), .023)
        call SetTextTagColor(tag, 50, 165, 205, 255)
        call SetTextTagPosUnit(tag, attacked, -.15)
        call SetTextTagVelocity(tag, .0355 * Cos(90 * bj_DEGTORAD), .0355 * Sin(90 * bj_DEGTORAD))
        call SetTextTagLifespan(tag, 1.)
        call SetTextTagPermanent(tag, false)
        set tag = null
        call UnitDamageTarget(attacker, attacked, damage, true, true, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_DIVINE, null)
    endif

    set attacker = null
    set attacked = null
    return false
endfunction

function Glaives_of_Wisdom_Actions takes nothing returns nothing
    local unit target
    local trigger effects = CreateTrigger()
    
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_EFFECT then
        set target = GetSpellTargetUnit()
    else        
        set target = GetTriggerUnit()
    endif
    call TriggerRegisterUnitEvent(effects, target, EVENT_UNIT_DAMAGED)
    call TriggerAddCondition(effects, Condition(function Glaives_of_Wisdom_Effects))
    call TriggerSleepAction(2.)
     
    call DestroyTriggerBJ(effects)
    set effects = null
    set target = null
endfunction

function InitTrig_Glaives_of_Wisdom takes nothing returns nothing
    set gg_trg_Glaives_of_Wisdom = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Glaives_of_Wisdom, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Glaives_of_Wisdom, EVENT_PLAYER_UNIT_ATTACKED)
    call TriggerAddCondition(gg_trg_Glaives_of_Wisdom, Condition(function Glaives_of_Wisdom_Conditions))
    call TriggerAddAction(gg_trg_Glaives_of_Wisdom, function Glaives_of_Wisdom_Actions)
endfunction

Here's the trigger for when killer kills a unit and gets INT bonus:
Code:
function Glaives_of_Wisdom_Death_Conditions takes nothing returns boolean
    return GetUnitAbilityLevel(GetKillingUnit(), 'A08E') > 0 and not(IsUnitIllusion(GetKillingUnit())) and IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO)
endfunction

function Glaives_of_Wisdom_Death_Actions takes nothing returns nothing
    local unit killer = GetKillingUnit()
    local unit killed = GetTriggerUnit()
    local texttag tagKiller = CreateTextTag()
    local texttag tagKilled = CreateTextTag()
    
    call SetHeroInt(killer, GetHeroInt(killer, false) + 1, true)
    call SetTextTagText(tagKiller, "+1 Int", .023)
    call SetTextTagColor(tagKiller, 255, 0, 0, 255)
    call SetTextTagPosUnit(tagKiller, killer, 0)
    call SetTextTagVelocity(tagKiller, .0255 * Cos(90 * bj_DEGTORAD), .0255 * Sin(90 * bj_DEGTORAD))
    call SetTextTagLifespan(tagKiller, 2.)
    call SetTextTagPermanent(tagKiller, false)
    call SetHeroInt(killed, GetHeroInt(killed, false) + 1, true)
    call SetTextTagText(tagKilled, "-1 Int", .023)
    call SetTextTagColor(tagKilled, 255, 0, 0, 255)
    call SetTextTagPosUnit(tagKilled, killed, 0)
    call SetTextTagVelocity(tagKilled, .0255 * Cos(90 * bj_DEGTORAD), .0255 * Sin(90 * bj_DEGTORAD))
    call SetTextTagLifespan(tagKilled, 2.)
    call SetTextTagPermanent(tagKilled, false)
    
    set killer = null
    set killed = null
    set tagKiller = null
    set tagKilled = null
endfunction

function InitTrig_Glaives_of_Wisdom_Death takes nothing returns nothing
    set gg_trg_Glaives_of_Wisdom_Death = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Glaives_of_Wisdom_Death, EVENT_PLAYER_UNIT_DEATH)
    call TriggerAddCondition(gg_trg_Glaives_of_Wisdom_Death, Condition(function Glaives_of_Wisdom_Death_Conditions))
    call TriggerAddAction(gg_trg_Glaives_of_Wisdom_Death, function Glaives_of_Wisdom_Death_Actions)
endfunction
 

Troll

New Member
Reaction score
4
Wow i got dereped for double posting? haha, forum freaks w/e.


Ontopic, thanks for the attached map, it was the answer to my qustions! it helped me a lot and now i know how to make an attack detection system :D!
 

Sonic

New Member
Reaction score
10
Tom plz can you put your trigger or send me plz,because I don't have WE now, but I need to have a look at triggers +rep
 

Ayanami

칼리
Reaction score
288
Tom plz can you put your trigger or send me plz,because I don't have WE now, but I need to have a look at triggers +rep

Here's the trigger of Impetus. With this, you can basically get the idea of creating Glaive of Wisdom, Impetus, etc.

Implement Weep's GDD Snippet. Base your spell on Frost Arrows with any duration. Set the slow values to 0.00. Create 2 new buffs based on "Cold Arrows (Stacking)" and "Cold Arrows (Non-stacking)". I'll name these 2 buffs A and B. Set these 2 buffs under the buff field for your Impetus skill. Then, implement this trigger.

Trigger:
  • Impetus
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (GDD_DamagedUnit has buff A) Equal to True
          • (GDD_DamagedUnit has buff B) Equal to True
    • Actions
      • Trigger - Turn off (This trigger)
      • Set TempPoint[1] = (Position of GDD_DamageSource)
      • Set TempPoint[2] = (Position of GDD_DamagedUnit)
      • Set TempReal = ((Distance between TempPoint[1] and TempPoint[2]) x 0.25)
      • Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing TempReal damage of attack type Chaos and damage type Universal
      • Floating Text - Create floating text that reads (|cff3399ff+ + (String((Integer(TempReal))))) above GDD_DamagedUnit with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
      • Floating Text - Change (Last created floating text): Disable permanence
      • Floating Text - Change the lifespan of (Last created floating text) to 2.50 seconds
      • Floating Text - Change the fading age of (Last created floating text) to 2.50 seconds
      • Custom script: call RemoveLocation(udg_TempPoint[1])
      • Custom script: call RemoveLocation(udg_TempPoint[2])
      • Unit - Remove A buff from GDD_DamagedUnit
      • Unit - Remove B buff from GDD_DamagedUnit
      • Trigger - Turn on (This trigger)


TempReal is a real variable representing the damage dealt. TempPoint is a point array variable.
 

Tom_Kazansky

--- wraith it ! ---
Reaction score
157
my bad, I forgot to remove the point leak in the third trigger, it should be:

Trigger:
  • UnitTakeDamage
    • Events
    • Conditions
    • Actions
      • Trigger - Turn off (This trigger)
      • -------- ---------------------- --------
      • Set TempUnit = (Triggering unit)
      • Set TempUnit2 = (Damage source)
      • Set TempReal = (Damage taken)
      • -------- Impetus --------
      • Set TempInt = (Level of Impetus for TempUnit2)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TempInt Greater than 0
          • (TempUnit has buff Impetus ) Equal to True
        • Then - Actions
          • Unit - Remove Impetus buff from TempUnit
          • Set TempLoc = (Position of TempUnit2)
          • Set TempLoc2 = (Position of TempUnit)
          • Set TempReal = ((Distance between TempLoc and TempLoc2) x (0.04 x (Real(TempInt))))
          • Custom script: call RemoveLocation(udg_TempLoc)
          • Custom script: call RemoveLocation(udg_TempLoc2)
          • Floating Text - Create floating text that reads (|c0000FFFF+ + ((String((Integer(TempReal)))) + |r)) above TempUnit with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
          • Unit - Cause TempUnit2 to damage TempUnit, dealing TempReal damage of attack type Chaos and damage type Universal
        • Else - Actions
      • -------- Glaive of Wisdom --------
      • Set TempInt = (Level of Glaive of Wisdom for TempUnit2)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TempInt Greater than 0
          • (TempUnit has buff Glaive of Wisdom ) Equal to True
        • Then - Actions
          • Unit - Remove Glaive of Wisdom buff from TempUnit
          • Set TempReal = ((Real((Intelligence of TempUnit2 (Include bonuses)))) x ((Real(TempInt)) x 0.15))
          • Floating Text - Create floating text that reads (|c0000FFFF+ + ((String((Integer(TempReal)))) + |r)) above TempUnit with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
          • Unit - Cause TempUnit2 to damage TempUnit, dealing TempReal damage of attack type Chaos and damage type Universal
        • Else - Actions
      • -------- ---------------------- --------
      • Trigger - Turn on (This trigger)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top