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: 478

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 The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      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