mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 14:41:28 +00:00
[Quest API] (Performance) Check event EVENT_AGGRO, EVENT_ATTACK, or EVENT_COMBAT exist before export and execute (#2901)
* [Quest API] Optionally parse EVENT_COMBAT # Notes - Optionally parse this event instead of always doing so. * Optional EVENT_ATTACK * Update attack.cpp
This commit is contained in:
parent
bad44f35e2
commit
93f19d3971
@ -2324,8 +2324,11 @@ void NPC::Damage(Mob* other, int64 damage, uint16 spell_id, EQ::skills::SkillTyp
|
|||||||
//handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds
|
//handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds
|
||||||
if (attacked_timer.Check())
|
if (attacked_timer.Check())
|
||||||
{
|
{
|
||||||
LogCombat("Triggering EVENT_ATTACK due to attack by [{}]", other ? other->GetName() : "nullptr");
|
if (parse->HasQuestSub(GetNPCTypeID(), EVENT_ATTACK)) {
|
||||||
parse->EventNPC(EVENT_ATTACK, this, other, "", 0);
|
LogCombat("Triggering EVENT_ATTACK due to attack by [{}]", other ? other->GetName() : "nullptr");
|
||||||
|
|
||||||
|
parse->EventNPC(EVENT_ATTACK, this, other, "", 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
attacked_timer.Start(CombatEventTimer_expire);
|
attacked_timer.Start(CombatEventTimer_expire);
|
||||||
|
|
||||||
@ -3025,8 +3028,12 @@ void Mob::AddToHateList(Mob* other, int64 hate /*= 0*/, int64 damage /*= 0*/, bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!wasengaged) {
|
if (!wasengaged) {
|
||||||
if (IsNPC() && other->IsClient() && other->CastToClient())
|
if (IsNPC() && other->IsClient() && other->CastToClient()) {
|
||||||
parse->EventNPC(EVENT_AGGRO, CastToNPC(), other, "", 0);
|
if (parse->HasQuestSub(GetNPCTypeID(), EVENT_AGGRO)) {
|
||||||
|
parse->EventNPC(EVENT_AGGRO, CastToNPC(), other, "", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AI_Event_Engaged(other, iYellForHelp);
|
AI_Event_Engaged(other, iYellForHelp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5340,9 +5340,12 @@ void Bot::Damage(Mob *from, int64 damage, uint16 spell_id, EQ::skills::SkillType
|
|||||||
spell_id = SPELL_UNKNOWN;
|
spell_id = SPELL_UNKNOWN;
|
||||||
|
|
||||||
//handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds
|
//handle EVENT_ATTACK. Resets after we have not been attacked for 12 seconds
|
||||||
if(attacked_timer.Check()) {
|
if (attacked_timer.Check()) {
|
||||||
LogCombat("Triggering EVENT_ATTACK due to attack by [{}]", from->GetName());
|
if (parse->BotHasQuestSub(EVENT_ATTACK)) {
|
||||||
parse->EventBot(EVENT_ATTACK, this, from, "", 0);
|
LogCombat("Triggering EVENT_ATTACK due to attack by [{}]", from->GetName());
|
||||||
|
|
||||||
|
parse->EventBot(EVENT_ATTACK, this, from, "", 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
attacked_timer.Start(CombatEventTimer_expire);
|
attacked_timer.Start(CombatEventTimer_expire);
|
||||||
|
|||||||
@ -1923,7 +1923,10 @@ void Mob::AI_Event_Engaged(Mob *attacker, bool yell_for_help)
|
|||||||
//if the target dies before it goes off
|
//if the target dies before it goes off
|
||||||
if (attacker->GetHP() > 0) {
|
if (attacker->GetHP() > 0) {
|
||||||
if (!CastToNPC()->GetCombatEvent() && GetHP() > 0) {
|
if (!CastToNPC()->GetCombatEvent() && GetHP() > 0) {
|
||||||
parse->EventNPC(EVENT_COMBAT, CastToNPC(), attacker, "1", 0);
|
if (parse->HasQuestSub(GetNPCTypeID(), EVENT_COMBAT)) {
|
||||||
|
parse->EventNPC(EVENT_COMBAT, CastToNPC(), attacker, "1", 0);
|
||||||
|
}
|
||||||
|
|
||||||
auto emote_id = GetEmoteID();
|
auto emote_id = GetEmoteID();
|
||||||
if (emote_id) {
|
if (emote_id) {
|
||||||
CastToNPC()->DoNPCEmote(EQ::constants::EmoteEventTypes::EnterCombat, emoteid);
|
CastToNPC()->DoNPCEmote(EQ::constants::EmoteEventTypes::EnterCombat, emoteid);
|
||||||
@ -1938,7 +1941,9 @@ void Mob::AI_Event_Engaged(Mob *attacker, bool yell_for_help)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IsBot()) {
|
if (IsBot()) {
|
||||||
parse->EventBot(EVENT_COMBAT, CastToBot(), attacker, "1", 0);
|
if (parse->BotHasQuestSub(EVENT_COMBAT)) {
|
||||||
|
parse->EventBot(EVENT_COMBAT, CastToBot(), attacker, "1", 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1966,7 +1971,11 @@ void Mob::AI_Event_NoLongerEngaged() {
|
|||||||
if (CastToNPC()->GetCombatEvent() && GetHP() > 0) {
|
if (CastToNPC()->GetCombatEvent() && GetHP() > 0) {
|
||||||
if (entity_list.GetNPCByID(GetID())) {
|
if (entity_list.GetNPCByID(GetID())) {
|
||||||
auto emote_id = CastToNPC()->GetEmoteID();
|
auto emote_id = CastToNPC()->GetEmoteID();
|
||||||
parse->EventNPC(EVENT_COMBAT, CastToNPC(), nullptr, "0", 0);
|
|
||||||
|
if (parse->HasQuestSub(GetNPCTypeID(), EVENT_COMBAT)) {
|
||||||
|
parse->EventNPC(EVENT_COMBAT, CastToNPC(), nullptr, "0", 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (emote_id) {
|
if (emote_id) {
|
||||||
CastToNPC()->DoNPCEmote(EQ::constants::EmoteEventTypes::LeaveCombat, emoteid);
|
CastToNPC()->DoNPCEmote(EQ::constants::EmoteEventTypes::LeaveCombat, emoteid);
|
||||||
}
|
}
|
||||||
@ -1976,7 +1985,9 @@ void Mob::AI_Event_NoLongerEngaged() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IsBot()) {
|
} else if (IsBot()) {
|
||||||
parse->EventBot(EVENT_COMBAT, CastToBot(), nullptr, "0", 0);
|
if (parse->BotHasQuestSub(EVENT_COMBAT)) {
|
||||||
|
parse->EventBot(EVENT_COMBAT, CastToBot(), nullptr, "0", 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user