mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-04 02:06:50 +00:00
[Spells] Implemented SPA 281 SE_PetFeignMinion (#1900)
* start * update * debugs in * test * clean up * debugs removed * Update mob_ai.cpp * Update spdat.h * [Spells] Implemented SPA 281 SE_PetFeignMinion debug remoevd * [Spells] Implemented SPA 281 SE_PetFeignMinion npc forget timer * [Spells] Implemented SPA 281 SE_PetFeignMinion
This commit is contained in:
+33
-16
@@ -1402,45 +1402,62 @@ int32 Mob::CheckHealAggroAmount(uint16 spell_id, Mob *target, uint32 heal_possib
|
||||
return std::max(0, AggroAmount);
|
||||
}
|
||||
|
||||
void Mob::AddFeignMemory(Client* attacker) {
|
||||
if(feign_memory_list.empty() && AI_feign_remember_timer != nullptr)
|
||||
void Mob::AddFeignMemory(Mob* attacker) {
|
||||
if (feign_memory_list.empty() && AI_feign_remember_timer != nullptr) {
|
||||
AI_feign_remember_timer->Start(AIfeignremember_delay);
|
||||
feign_memory_list.insert(attacker->CharacterID());
|
||||
}
|
||||
|
||||
if (attacker) {
|
||||
feign_memory_list.insert(attacker->GetID());
|
||||
}
|
||||
}
|
||||
|
||||
void Mob::RemoveFromFeignMemory(Client* attacker) {
|
||||
feign_memory_list.erase(attacker->CharacterID());
|
||||
if(feign_memory_list.empty() && AI_feign_remember_timer != nullptr)
|
||||
void Mob::RemoveFromFeignMemory(Mob* attacker) {
|
||||
|
||||
if (!attacker) {
|
||||
return;
|
||||
}
|
||||
|
||||
feign_memory_list.erase(attacker->GetID());
|
||||
if (feign_memory_list.empty() && AI_feign_remember_timer != nullptr) {
|
||||
AI_feign_remember_timer->Disable();
|
||||
}
|
||||
if(feign_memory_list.empty())
|
||||
{
|
||||
minLastFightingDelayMoving = RuleI(NPC, LastFightingDelayMovingMin);
|
||||
maxLastFightingDelayMoving = RuleI(NPC, LastFightingDelayMovingMax);
|
||||
if(AI_feign_remember_timer != nullptr)
|
||||
if (AI_feign_remember_timer != nullptr) {
|
||||
AI_feign_remember_timer->Disable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Mob::ClearFeignMemory() {
|
||||
auto RememberedCharID = feign_memory_list.begin();
|
||||
while (RememberedCharID != feign_memory_list.end())
|
||||
auto remembered_feigned_mobid = feign_memory_list.begin();
|
||||
while (remembered_feigned_mobid != feign_memory_list.end())
|
||||
{
|
||||
Client* remember_client = entity_list.GetClientByCharID(*RememberedCharID);
|
||||
if(remember_client != nullptr) //Still in zone
|
||||
remember_client->RemoveXTarget(this, false);
|
||||
++RememberedCharID;
|
||||
Mob* remembered_mob = entity_list.GetMob(*remembered_feigned_mobid);
|
||||
if (remembered_mob->IsClient() && remembered_mob != nullptr) { //Still in zone
|
||||
remembered_mob->CastToClient()->RemoveXTarget(this, false);
|
||||
}
|
||||
++remembered_feigned_mobid;
|
||||
}
|
||||
|
||||
feign_memory_list.clear();
|
||||
minLastFightingDelayMoving = RuleI(NPC, LastFightingDelayMovingMin);
|
||||
maxLastFightingDelayMoving = RuleI(NPC, LastFightingDelayMovingMax);
|
||||
if(AI_feign_remember_timer != nullptr)
|
||||
if (AI_feign_remember_timer != nullptr) {
|
||||
AI_feign_remember_timer->Disable();
|
||||
}
|
||||
}
|
||||
|
||||
bool Mob::IsOnFeignMemory(Client *attacker) const
|
||||
bool Mob::IsOnFeignMemory(Mob *attacker) const
|
||||
{
|
||||
return feign_memory_list.find(attacker->CharacterID()) != feign_memory_list.end();
|
||||
if (!attacker) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return feign_memory_list.find(attacker->GetID()) != feign_memory_list.end();
|
||||
}
|
||||
|
||||
bool Mob::PassCharismaCheck(Mob* caster, uint16 spell_id) {
|
||||
|
||||
Reference in New Issue
Block a user