Prevent Gate if near bind location (Rule) and Heal on Gate (Rule)

RULE_INT(NPC, NPCGatePercent, 5) // % at which the NPC Will attempt to gate at.
RULE_BOOL(NPC, NPCGateNearBind, false) // Will NPC attempt to gate when near bind location?
RULE_INT(NPC, NPCGateDistanceBind, 75) // Distance from bind before NPC will attempt to gate
RULE_BOOL(NPC, NPCHealOnGate, true) // Will the NPC Heal on Gate.
RULE_REAL(NPC, NPCHealOnGateAmount, 25) // How much the npc will heal on gate if enabled.
This commit is contained in:
Trust
2018-08-24 23:04:29 -04:00
parent 86f1cedf91
commit 4c8018e4ca
3 changed files with 17 additions and 4 deletions
+8 -4
View File
@@ -201,10 +201,14 @@ bool NPC::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes, bool bInnates
// If min_hp !=0 then the spell list has specified
// custom range and we're inside that range if we
// made it here. The hard coded <=5 is for unspecified.
if (AIspells[i].min_hp != 0 || GetHPRatio() <= 5)
{
AIDoSpellCast(i, tar, mana_cost);
return true;
if (GetHPRatio() <= (RuleI(NPC, NPCGatePercent))) {
auto npcSpawnPoint = CastToNPC()->GetSpawnPoint();
if (!RuleB(NPC, NPCGateNearBind) && DistanceNoZ(m_Position, npcSpawnPoint) < RuleI(NPC, NPCGateDistanceBind)) {
break;
} else {
AIDoSpellCast(i, tar, mana_cost);
return true;
}
}
break;
}