Quote:
Originally Posted by ChaosSlayerZ
there use to be a rule in DB that was called - "npc buff/heal friends" - check if that one is on. On other hand they should always at least heal themselves.
I may need to check my own npcs
|
Thanks but already checked that.
After a lot of debugging, I was able to get heals to work but no telling what all I broke in the process. Here's the changes I made.
In AICastSpell, under the switch for the AISpells[i].type, I commented out the line that prevents buffing PC pets:
Code:
switch (AIspells[i].type) {
case SpellType_Heal: {
LogAI( "AI NPC [{}]: Tar [{}] DontHealMeBefore [{}] [{}]", this->GetName( ), tar->GetName( ), tar->DontHealMeBefore(), Timer::GetCurrentTime() );
if (
(spells[AIspells[i].spellid].targettype == ST_Target || tar == this)
&& tar->DontHealMeBefore() < Timer::GetCurrentTime()
// && !(tar->IsPet() && tar->GetOwner()->IsClient()) //no buffing PC's pets
) {
In npc.cpp, under AICheckCloseBeneficialSpells, there is a check for indifferent faction which stops healing.
Code:
/**
* Indifferent
*/
// if (caster->GetPrimaryFaction() == 0) {
// return false;
// }
In the same function, there is a check to prevent you being healed, which seems unneccessary:
Code:
if (mob->IsClient()) {
// continue;
}
And then there is a faction check which makes no sense to me - never heal an NPC that has faction with you?!
Code:
if (mob->GetReverseFactionCon(caster) >= FACTION_KINDLY) {
// continue;
}
After all those changes, I can now summon my cleric pet and it will heal me or even another pet, which is what I was after.
Hopefully that helps you or any others out as well.