Quick disclaimer: as I think of useful tips, I’m going to start writing up some articles. Each article will focus on a particular topic or game play element. The majority of these tips will likely be things that experienced players already know. I welcome any additional feedback on any of the tips and I’m happy to update any OP if you have something useful to add to the topic. Each thread will be originally posted in the Demigod general forum (at least for a bit) and then moved to the DG strategy forums.
Topic of the day: Healing using monks/clerics/high priests/bishops
My goal for this thread is to try to gather a fairly comprehensive list of strategies and explain how healing works in detail. We’ve had several threads that have touched on the topic, but I’d like to turn this into a one stop shop for all the info you could ever want on the healing mechanic. Understanding how the healing mechanic works through summonable minions (along with the bonuses associated with having a Sedna on the team) can have a substantial impact on staying power in lanes, late game kills – you name it. I’m going to start with the most basic strategies and move onto specifics – but first I need to cover this:
How does healing work?
This is probably the most important thing to understand in this article. If you get this, you are well on your way to using healers strategically. You know how if you cast a teleport scroll, there is a cool down period before you can use it again? Healing actually has a cool down associated with it as well – only you can’t clearly see that a healer is on cool down. Each type of healer (for example, a monk is a type of healer; a cleric is a type of healer and so on) is able to cast a heal every 5 seconds (eg it casts the heal, the heal ability goes on cool down, and they they can cast it again after 5 seconds). Now what you might not know is that any time you are healed by a particular type of healer, there is a special cool down that is placed on your Demigod. This cool down lasts 8 seconds. That means that you cannot receive a second heal from that type of healer until 8 seconds have passed. So, you have a healer that can technically heal every 5 seconds, but because of the cool down effect of 8 seconds, you won’t be healed every 5 seconds. Make sense so far?
So, you noticed I was talking about types of healers. This is critical to understand. Each type of healer (monks/clerics/high priest/bishop) casts a different heal per Demigod with an 8 second cool down. So, let me give you an example: if I have 2 monks with me and there is no other allied Demigod near me, I can receive 1 heal from only 1 of them because the 8 second cool down goes into effect as soon as I get that first heal. So, even though I have 2 monks there that could heal me every 5 seconds, that 8 second cool down makes it impossible for me to get anything faster than a heal every 8 seconds. The good news – each type of healer casts a DIFFERENT type of 8 second cool down. Let me give you an example here as well. If I have 1 monk with me and 1 cleric with me and there is no other allied Demigod near me, I can receive 1 heal from the monk and 1 heal from the cleric every 8 seconds. This is essentially double healing. This is why its more efficient to stack types of healers. I also do want to stress that if I had 3 generals on my team and each of them purchased monks - even if they sent all 6 of those monks to me - I could only receive 1 heal every 8 seconds. But if there were 2 different types of healers, I could receive 2 heals every 8 seconds… and so on.
Who do the healers decide to heal?
The healers do a check every 5 seconds to see if there are any damaged Demigods in range. If so, they will heal the Demigod with the lowest HP (fact check plz?) in range. This places that 8 second cool down on whatever dg has been healed. But if there are 2 Demigods present, the healer can after 5 seconds heal the other Demigod (as there was no 8 second cooldown on him).
The following is borrowed from a post from hedige: [If a healer doesn't find a damaged Demigod in range, it will then check itself to see if it is damaged. If it is and will not be "overhealed" (eg, if they only lost 5 hp, and the Monk heals for 200, there isn't much point for it to be healed since it will "overheal" by 195 hp). If it won't overheal, it will heal itself.]
Borrowing this from an earlier article I posted, but I’m not sure if its accurate – can anyone confirm?
1- they don’t heal a demigod with a larger % of hp than itself. For instance, if a monk has, say 800/1000 hp (80% hp) and your demigod has 1900/2000 hp (95% hp), the monk will try to heal it self first. This plays a very important factor when you consider characters that do AOE damage. If they drop your healers to a lower % of hp than you, YOU won’t get any healing. This is also another reason why the highest level healer (bishop) is more valuable due to its increased HP. Anyway, player that constantly hits you with AOE, but doesn’t completely kill your healers, is more than likely stopping the healers from healing you.
What are the stats?
Monks
Clerics
High Priests
Bishops
Healing (Non-DG)
200
230
260
290
Healing with Healing Wind I/II (Non-DG)
300
345
390
435
Healing (DG) – % of Target DG’s MAX HP
10%
12%
13%
15%
Healing with Healing Wind I/II (DG) – % of Target DG’s MAX HP
17%
19%
22%
What are the strategies?
I’m going to list several different strategies here and I expect you folks will be kind enough to add to them as you think up things I’ve missed.
Share your monk
This one is a no brainer for experienced players, but not so much for new folks. If you are the only general on a team, buy monks at the start of the game and share them. There are some strategies that don’t buy monks immediately, but generally speaking, you will always want monks at the start. So, now that you have monks, you will want to share them with your teammates. If it’s a 2v2, it’s a no brainer – just send a monk over to your teammate. In many cases, you can just click on your monk and then click on the Demigod you want them to follow. However, you are almost always better off if you micromanage the monk and guide where he will go to keep him safe and healing your allies. If it’s a 3v3 game, then you’ll occasionally need to put a little more thought into it. I’ll often move monks as they are needed in different places. For instance, if I sent the monk originally to a Demigod on the mana flag (on cataract) and he’s at full hp and fighting no one, I might send that monk to the experience flag if someone on my team is trying to capture it… and then move the healer back afterwards. The number 1 rule though is that you want to keep your healers safe and healing as much as possible.
Sharing with 2 or more generals
So, as I discussed in the section on how healing works, you can get a heal of multiple types if you share your healers. At the start of any game with 2 generals (where I’m a general anyway), I’ll ask in chat “you monks? me clerics?” If they respond quickly, I just get whatever I need and head out, then buy clerics ASAP. If they don’t respond quickly, I’ll just wait a few moments and see if they get monks or not. If they do, I’ll often ask them to share one of their monks with me and tell them I’ll be getting clerics soon. As soon as I make it back to base to get those clerics, I’ll immediately send one of them to one of my teammates and keep the other to myself. Now, there are quite a few strategies here. Some folks will skip clerics completely and just save up for bishops or high priests. But if there are 2 generals, you will pretty much always want 1 player to get monks at the start of the game and share them. And you will pretty much always want to have the other player pick up some sort of different type of healer and share that as well. Double heals every 8 seconds can do a hell of a lot for team battles or even staying power on a flag solo. The same rule applies if you have 3 or 4 generals. Communicate in game and make sure each of you gets a different type of healer. With 4 generals, that’s potential for 4 heals every 8 seconds… which is HUGE.
So, I have 2 generals – what healers should I get?
This question can have many possible answers. If you don’t have a sedna on your team, I suggest going with monks and clerics initially. You’ll note that the difference between heal levels on clerics and high priests is only 1%. If you just want the best of the best, then getting bishops/high priests is the answer; however, monk cleric is great for early/mid game and ending the game having only clerics and bishops would be adequate in most circumstances. If there is an enemy sedna in the game, its often best to just stick with monks/clerics as she will likely get counter healing – which will shut down a good chunk of your heals.
Sedna and healers
Sedna certainly deserves a section to herself for healing. As you can see from the stat info section, there are some nice bonuses associated with having healing wind along with nearby healers. In short, any type of healer in the healing wind aura will heal at increased levels. You only need 1 level of healing wind to get the healer bonus. Healing wind 2 only gives you additional health per second (and it isn’t bad for that) and allows priests (the type that come from portals) to heal at a higher bonus if they are near her), but it is not required to get the healing bonus. As you can see, bishops and high priests are ideal if you have a sedna. With the healing wind bonus, we’re talking about healing 22% of the healing targets max HP along with a heal of 19% of max HP. So, its possible (based on all of the other factors involved with healing) to be healed 41% of a dg’s max HP every 8 seconds. Think about that for a moment... really. That can be gigantic. A sigil gives you a 20 second window here you have a 50% health increase. A sedna with bishops/clerics can heal you for 41% every 8 seconds.... and then think about adding on a sigil on top of that.... that's huge. Without healing wind, a combo of bishops/highpriests would yield 15% and 13% for a total of 28%. That’s not bad, but you can see is a pretty sizable difference.
Sedna and counter healing
Any sedna up against a team with 2 or more generals on it should get counter healing when possible. Counter healing is an ability that keeps any enemy type of healing minion from casting heals if they are in a certain proximity to her. Keeping those heals from happening is huge. If there is a sedna on a different team than me, I will often NOT pick up bishops or high priests... but that tactic of mine is arguable.
NT
What about the priests from the portal, is that a fifth type of healer and has another 8 second cooldown?
yep
yes - healing wind II will buff the heal level on those priests as well. Healing wind I does not. Generally speaking, healing wind 2 has its greatest value in the extra +12 hps.
If I think of it, I'll dig out the healing values of priests (normal + healing wind II buff).
it's the exact same as monks. 10/15%
just to clarify so I don't have to look - do you know if the non dg heal value stacks up with monks as well?
Also - if you, in particular would, take a look at the post - specifically in the: Who do the healers decide to heal? section. Does anything I said sound off or is it something I should research. Thanks!
(this is from memory since I am on my notebook that does not have demigod on right now). Honestly, I'm not 100% sure myself. It's been my _observation_ of the monk % hp rule.
I do know for sure that monks prioritize demigods in general. There is overheal logic but that might not even work, knowing GPG. Or it only works in situations where their natural health regen is going to put them to full health that "game tick".
It's also likely that even if the monk chooses to heal NOTHING it still goes on a 5 second cooldown. Last time I looked at the monk healing code, I was looking at that to decide if that was the case...
I'll definitely do a code drop when I'm on my desktop for you though.
thx bro!
hedgie delivers.
Note that this is just the very first monk heal I came up with, the ability is copied every time for each monk. I am going to "assume" it is a normal copy-paste with just a few name edits but you can't be too sure...
[code]
################################################################################################################## Non-Demigod Heal - This heal is used on non-demigods#################################################################################################################BuffBlueprint { Name = 'HighPriest02Heal01', Debuff = false, DisplayName = 'Heal', BuffType = 'HIGHPRIESTHEALTH', Stacks = 'ALWAYS', Duration = 0, DamageFriendly = true, DamageSelf = true, Affects = { Health = {Add = 230}, },}################################################################################################################## Healing Improved by Sedna's Healing Wind I#################################################################################################################BuffBlueprint { Name = 'HighPriest02HealHealingWindBuff01', Debuff = false, DisplayName = 'Heal', BuffType = 'HIGHPRIESTHEALTH', Stacks = 'ALWAYS', Duration = 0, DamageFriendly = true, DamageSelf = true, Affects = { Health = {Add = 345}, },}################################################################################################################## Demigod Heal - This heal is used on demigods#################################################################################################################BuffBlueprint { Name = 'HighPriest02HeroHeal01', Debuff = false, DisplayName = 'Heal', BuffType = 'HIGHPRIESTHEALTH', Stacks = 'ALWAYS', Duration = 0, DamageFriendly = true, DamageSelf = true, Affects = { Health = {MaxHealthPercent = 0.12}, },}################################################################################################################## Demigod Heal w/ Sedna Healing Wind I - this heal is used on demigods when the priest is boosted by Sedna's# healing wind ability#################################################################################################################BuffBlueprint { Name = 'HighPriest02HeroHealHealingWindBuffl01', Debuff = false, DisplayName = 'Heal', BuffType = 'HIGHPRIESTHEALTH', Stacks = 'ALWAYS', Duration = 0, DamageFriendly = true, DamageSelf = true, Affects = { Health = {MaxHealthPercent = 0.17}, },}################################################################################################################## Cooldown Buff - This is applied on a healed target to prevent the target from being healed by a priest# for the duration of the buff#################################################################################################################BuffBlueprint { Name = 'HighPriest02HealCooldown01', Debuff = false, DisplayName = 'HealCooldown', BuffType = 'HIGHPRIESTHEALCOOLDOWN', Stacks = 'ALWAYS', Duration = 7.95, Affects = {},}################################################################ Ability - Heal# After healing someone, this spell applies a debuff to them# which prevents them from being healed. Debuff - "HighPriest02HealCooldown01"###############################################################AbilityBlueprint { Name = 'HighPriest02Heal01', DisplayName = 'Heal', AbilityType = 'Aura', TargetAlliance = 'Ally', TargetCategory = 'MOBILE - UNTARGETABLE', AffectRadius = 10, AuraPulseTime = 5, # This is the "cooldown" of the ability to cast the heal spell OnAreaAbility = function(self, unit, params) local heal = false local priestBuff = 'HighPriest02Heal01' # ==== Try to heal a hero first ==== # # Hero units in range local heroes = EntityCategoryFilterDown(categories.HERO, params.Targets) #If we can heal a hero unit and we didn't heal him last, heal him. #If the hero is the only thing we can heal in the area, heal him. if table.getn(heroes) > 0 then for k, hero in heroes do # Unit has the cooldown buff if Buff.HasBuff(hero, 'HighPriest02HealCooldown01') then continue end # Do not heal heroes flagged not to be healed if hero.PriestsDoNotHeal then continue end # Do not heal heroes that are near full health local hpercent = hero:GetHealth() / hero:GetMaxHealth() if hpercent >= 1.0 then continue end heal = hero #Check to see if the priest is affected by Healing Wind II if Buff.HasBuff(unit, 'HSednaHealingWindPriest02') then priestBuff = 'HighPriest02HeroHealHealingWindBuffl01' else priestBuff = 'HighPriest02HeroHeal01' end break end end # ==== Heal other units ==== # # No heroes found; grab nearby units based on priorities and try to heal em if not heal then #Non-hero units that can be healed. for k, target in params.Targets do # Don't heal heroes in this body section if EntityCategoryContains( categories.HERO, target ) then continue end # Don't heal units with 50% or more health local hlthpct = target:GetHealth() / target:GetMaxHealth() if hlthpct >= 1.0 then continue end # Unit has the cooldown buff if Buff.HasBuff(target, 'HighPriest02HealCooldown01') then continue end heal = target # Priest is affected by Healing Wind II, use the more powerful heal. if Buff.HasBuff(unit, 'HSednaHealingWindPriest02') then priestBuff = 'HighPriest02HealHealingWindBuff01' end break end end # ==== Healing here ==== # # Hey we found someone to heal; apply both the heal and cooldown buffs and make pretty effects if heal then if unit.Character.IsMoving then unit.Character:PlayAction("HealMove") else unit.Character:PlayAction("Heal") end #LOG("*DEBUG: Healing: "..heal:GetUnitId().." with: "..priestBuff) Buff.ApplyBuff(heal, priestBuff, unit) Buff.ApplyBuff(heal, 'HighPriest02HealCooldown01', unit) # Create Priest heal casting effects AttachCharacterEffectsAtBone( unit, 'priest', 'CastHeal01', -1 ) # Create Heal effect on actor being healed AttachBuffEffectAtBone( heal, 'Heal01', 0, heal.Trash ); return end end,}
[/code]
someone translate this pls:P
fine. So from this particular block of code (I might actually go through and read all five~ blocks when I get home if you guys ask nicely). This is Clerics, btw.
It's important to note that the comments in the code are Blatant Lies.
AuraPulseTime = 5, # This is the "cooldown" of the ability to cast the heal spell
May need miri to confirm, but I believe that how Aura Pulse works, the heal spell will go on cooldown whether or NOT the priest actually heals anything
Then it starts to go through all the units within 10 yards that are of type hero. The comment says it will not heal heroes that have been healed last. I see nothing to that effect.
For-each hero around the monk (starting from closest to the monk, I think):
1. if the hero has the monk debuff, skip to the next hero
2. if the hero has doNotHeal flag as true, skip to the next hero (I assume this is set by death/Last Stand but that is else. Nothing in monk healing does this).
3. if the hero is very close to max hp, skip to the next hero
4. Otherwise, we will heal this hero. Stop processing other heroes
If we didn't find a hero before, for-each unit around the monk (starting with the monk, I think):
1. don't heal units that are very close to full hp (NOT over 50% hp like the comment indicates).
2. don't heal units with a debuff
3. Otherwise, we will heal this unit. Stop processing other units.
If we found a unit or a hero to heal:
1. Play the appropiate animation
2. Apply the healing buff
3. Apply the debuff that prevents healing
That is just for the clerics, and it's quite possible the other code is different.
Moved to strategy forum
Well, I'm late to the Sedna-related party, I see
Ty
This is close enough to C for me to follow along, and it looks like they probably removed the code that gave effect to that comment. In fact the 8 second healing delay on a DG probably made that part of the code pointless so the code got removed and not the comment. Something I do all the time after staring at large chunks of code for a long time and the comments kind turn into blur that you don't actually look at.
More than likely it's a self setting evil_update since it would use more processor to actively seek for a heal target. However, I see that AuraPulseTime is defined, but never used (compiler warning!), so I'm assuming this is using some kind of inheritance we don't get to see or these are part a struct and get called out like abilityblueprint[heal.AuraPulseTime] but I'm not even sure what language this is. Knowing the answer to what AbilityBlueprint(); is defined as in the header file would be really helpful.
Nothing new - just a bump as its certainly useful info for new folks.
There are many great features available to you once you register, including:
Sign in or Create Account