• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Solved] Rune Tap

Status
Not open for further replies.
Level 9
Joined
Dec 16, 2017
Messages
343
Hello guys, i am trying to make rune tap spell from wow of death knight blood, but what seems to be a pretty simple to do thing, make's it work so hard xD after the heal, i want the caster to have for 4-5 seconds an buff of dmg reduction, like spiked carapace, so that's what i am adding to him, but for some reason it gets deleted before 5 seconds, it gets deleted after one second..

  • Rune Tap Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Rune Tap (Death Knight BLOOD)
    • Actions
      • Set RT_Index = (RT_Index + 1)
      • Set RT_Caster[RT_Index] = (Triggering unit)
      • Set RT_Heal[RT_Index] = (150.00 x (Real((Level of (Ability being cast) for RT_Caster[RT_Index]))))
      • Set RT_Spell[RT_Index] = |r Spell Book DK RuneTap(Death Knight Blood)
      • Set RT_Duration[RW_Index] = 5
      • Unit - Set life of RT_Caster[RT_Index] to ((Life of RT_Caster[RT_Index]) + RT_Heal[RT_Index])
      • Unit - Add RT_Spell[RT_Index] to RT_Caster[RT_Index]
      • Player - Disable RT_Spell[RT_Index] for (Owner of RT_Caster[RT_Index])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RT_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Rune Tap Loop <gen>
        • Else - Actions
  • Rune Tap Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer RT_Loop) from 1 to RT_Index, do (Actions)
        • Loop - Actions
          • Set RT_Duration[RT_Loop] = (RT_Duration[RT_Loop] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • RT_Duration[RT_Loop] Greater than or equal to 0
            • Then - Actions
              • Special Effect - Create a special effect attached to the overhead of RT_Caster[RT_Loop] using Pillar of Flame Blue.mdx
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • Unit - Remove RT_Spell[RT_Loop] from RT_Caster[RT_Loop]
              • Set RT_Caster[RT_Loop] = RT_Caster[RT_Index]
              • Set RT_Heal[RT_Loop] = RT_Heal[RT_Index]
              • Set RT_Duration[RT_Loop] = RT_Duration[RT_Index]
              • Set RT_Index = (RT_Index - 1)
              • Set RT_Loop = (RT_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • RT_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
I don't see RT_Spell variable getting de-indexed.
Also why not just make a damage modifer event from bribe's damage engine?
Could easily just base it off of berserk spell (so it doesn't have a cast time or animation) and simply reduce damage if the target has the buff.

Edit: I'd get rid of the heal variable if it's only being used in the cast trigger.
What does the spell do? Because wiki says it's just 20% damage reduction for 4 seconds.
 
Last edited:
Level 9
Joined
Dec 16, 2017
Messages
343
It does an instant heal and than reduces damage taken. Hmmm i've seen the problem now, i've mistaken the array at duration, instead of rt_index i've put rw_index

I don't really know how to use all functions of bribe dds, except the shield part that @Uncle teached me, but i will dig farther into them.
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
Honestly you can learn most of it from the test map.
All of the units present in the map have a unique quirk (ex water elemental's attacks heal the archmage.)
Look at the "Set damage" trigger to see all the examples.

Boom, super easy
  • Set Damage
    • Events
      • Game - DamageModifierEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventTarget has buff Berserk) Equal to True
    • Actions
      • Set VariableSet DamageEventAmount = (DamageEventAmount x 0.80)
 
Level 9
Joined
Dec 16, 2017
Messages
343
I've looked through there, because i also want to add the heal event to my healing spells, but will check it even more, every spell made based of dds like what you pointed above, are MUI?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,537
You're referencing the wrong Index:
  • Set RT_Duration[RW_Index] = 5
That should be RT_Index not RW_Index.

Always give your trigger a thorough top to bottom inspection. Gotta bust out the magnifying glass sometimes :p
 
Level 9
Joined
Dec 16, 2017
Messages
343
I've did that twice, but didn't saw it until today xD, i guess sometimes staying up late, makes you not see the "elephant" in the room xD
One last thing, for the heal i want to give to this, shall i make another trigger, or it's ok if i add it in the same as in the DDS part of the spell?
  • Rune Tap Cast
    • Events
      • Game - DamageModifierEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventTarget has buff Rune Tap (Death Knight BLOOD)) Equal to True
    • Actions
      • Set DamageEventAmount = (DamageEventAmount x 0.80)
      • Set DamageEventType = DamageTypeReduced
      • Set RT_Index = (RT_Index + 1)
      • Set RT_Caster[RT_Index] = (Triggering unit)
      • Set RT_Heal[RT_Index] = (150.00 x (Real((Level of Rune Tap (Death Knight BLOOD) for RT_Caster[RT_Index]))))
      • Unit - Set life of RT_Caster[RT_Index] to ((Life of RT_Caster[RT_Index]) + RT_Heal[RT_Index])
      • Set DamageEventType = DamageTypeHeal
      • Set RT_Index = (RT_Index - 1)
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,537
This is a "custom" Event that is triggered by the Damage Engine, it's not one of Bllzzard's Events:
  • Game - DamageModifierEvent becomes Equal to 1.00
This means that there are no Event Responses that go along with it. There are however the Damage Engine variables which act like Event Responses.

So (Triggering unit) may not exist but DamageEventSource and DamageEventTarget do.

Also, I don't know what you're trying to do with the RT variables but that's all wrong. If you're trying to get the source of the buff then you'll need to use a Unit Indexer to link the Buff source to the Buff target. Then you can reference the Buff source in this trigger by pulling the information from the DamageEventTarget (buff target).
  • Set RT_CV = Custom value of DamageEventTarget
  • Set RT_Heal = (150.00 x (Real((Level of Rune Tap (Death Knight BLOOD) for RT_Source[RT_CV]))))
  • Unit - Set life of RT_Source[RT_CV] to ((Life of RT_Source[RT_CV]) + RT_Heal)
RT_Heal doesn't need to be an Array. It also doesn't need to exist in your RT Loop triggers.
 
Last edited:
Level 9
Joined
Dec 16, 2017
Messages
343
So, for events, when i want to add extra things to the spells, but there aren't any loops or actions that can be used per second, i shall aim for the integer to be the custom value of the unit?

And you refer for the rt_source(rt_cv) = damage event target

?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,537
So, for events, when i want to add extra things to the spells, but there aren't any loops or actions that can be used per second, i shall aim for the integer to be the custom value of the unit?

And you refer for the rt_source(rt_cv) = damage event target

?
RT_Source should be Set when you cast Rune Tap:
  • Set RT_Source[Custom value of (Target unit of ability being cast)] = (Triggering unit)
So by doing this we've linked the (Triggering unit) and the (Target unit of ability being cast) together. Now as long as you have reference to the Target unit you can also get the Source unit.

In the case of your DamageModifierEvent trigger, the target refers to DamageEventTarget.
 
Level 9
Joined
Dec 16, 2017
Messages
343
Right now with the last triggers i've posted, the spell works, but i wanted to check if the MUI for a spell made with dds works with what i've done.

I want this spell to heal the caster for an amount x spell level, and have a 20% damage reduction for (4) seconda, i have the duration of it in the obiect editor spell(based of berserk as devalut suggested)
 
Level 9
Joined
Dec 16, 2017
Messages
343
It heals when you first cast the spell, i don't know if it's supposed to be in the damageEvent trigger, that was my initial question, if it is ok to be in it or in another trigger for the same spell.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,537
It heals when you first cast the spell, i don't know if it's supposed to be in the damageEvent trigger, that was my initial question, if it is ok to be in it or in another trigger for the same spell.
Ah, I see what you mean now. As far as I can tell the DamageEvent trigger isn't needed. Simply heal the unit when it first casts the spell.

Edit: I meant the heal* in the DamageEvent trigger isn't needed
 
Last edited:
Level 9
Joined
Dec 16, 2017
Messages
343
I think i've misswritten, i'm sorry

Rune tap
Gives 20% dmg reduction for (4) seconds
Heals instant the caster for an amount x spelllvl

I wanted to know if i can fuse the dmg reduction with the heal in the same trigger, or make sepparate triggers for each.

And i guess it's sepparate for each, like i did with the arcane shield you taught me in PM.

Edit:
Perfect, thanks for the lessons!
 
Last edited:
Status
Not open for further replies.
Top