• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!
  • ✅ The POLL for Hive's Texturing Contest #34 is OPEN! Vote for the TOP 3 SKINS! 🔗Click here to cast your vote!
  • ✅ The POLL for Hive's Techtree Contest #20 is OPEN! Vote for the TOP 3 FACTIONS! 🔗Click here to cast your vote!

[Trigger] DOTA Living Armor

Level 17
Joined
Jul 19, 2007
Messages
971
Hi. I want the "Living Armor" spell from DOTA in my map. I understand it is based on "Inner Fire" because it restores some health per second. But how do I make the damage block? Pls anyone can make a spellpack to me with the complete spell? @Daffa @the.Axolotl @Chaosium
la.webp
 
Last edited:
Weird that I didn't get any alert from the tag... Is it from an edit?

What patch are you on again? Patch is critical when making spells nowadays 😅

I am going to do a double post since tags doesn't function on an edit, but hopefully get attention of the others @the.Axolotl @Chaosium
 
Oh boy don't tag me for complex spells I suck at making them xd I'd do something like this with hashtables because otherwise it's unit indexing and it's pain. Using inner fire as a base to handle the HP regen is a good idea at least that's this part taken care of, now for the rest, create a hashtable at map init and then:

  • Living Armor Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to YourSpell
    • Actions
      • Set VariableSet LivingArmor_DmgBlock = (20.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))
      • Set VariableSet LivingArmor_HitCount = (3 + (1 x (Level of (Ability being cast) for (Triggering unit))))
      • -------- -------------------------------------------------------- --------
      • Hashtable - Save LivingArmor_DmgBlock as 0 of (Key (Target unit of ability being cast).) in MyHashtable.
      • Hashtable - Save LivingArmor_HitCount as 1 of (Key (Target unit of ability being cast).) in MyHashtable.
The 0 and 1 values that you save can be any number you want as long as they're not used by other systems, I use them to store the values (the reduction and the number of instances). Then:

  • Living Armor Tracking
    • Events
      • Unit - A unit About to take damage
    • Conditions
      • ((Triggering unit) has buff YourBuff) Equal to True
    • Actions
      • Event Response - Set Damage of Unit Damaged Event to ((Damage taken) - (Load 0 of (Key (Triggering unit).) from MyHashtable.))
      • Hashtable - Save ((Load 1 of (Key (Triggering unit).) from MyHashtable.) - 1) as 1 of (Key (Target unit of ability being cast).) in MyHashtable.
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Load 1 of (Key (Triggering unit).) from MyHashtable.) Equal to 0
        • Then - Actions
          • Unit - Remove YourBuff buff from (Triggering unit)
        • Else - Actions
It should work like that
 
Last edited:
Hahaha, Chaosium really beat me to it. Yeah, the simple implementation would be via Hashtable and if not for the dumdum 256 limitation, this would be the best go to option

I think it'll just be some extra variables for Unit Indexer and mostly same, though I'd slap entire regeneration into timers instead 😂

However, a minor note would be if autocast should not exist, probably need to base the ability on something else instead, but otherwise this is perfect solution for quick implementation
 
Back
Top