[Quest API] Convert Spell Events to similar formats and exports. (#1618)

* [Quest API] Convert Spell Events to similar formats and exports.
Export spell ID, caster ID, caster level, tics remaining, and buff slot to Perl/Lua spell events.
- Export e.buff_slot, e.caster_id, e.caster_level, e.spell_id, and e.tics_remaining to `event_spell_buff_tic`, `event_spell_effect`, and `event_spell_fade` in Lua.
- Export $buff_slot, $caster_id, $caster_level, $spell_id, $tics_remaining to `EVENT_SPELL_EFFECT_BUFF_TIC_CLIENT`, `EVENT_SPELL_EFFECT_BUFF_TIC_NPC`, `EVENT_SPELL_EFFECT_CLIENT`, `EVENT_SPELL_EFFECT_NPC`, and `EVENT_SPELL_FADE` in Perl.

* Formatting.

* Remove debug variable.
This commit is contained in:
Kinglykrab
2021-10-20 16:02:12 -04:00
committed by GitHub
parent edf298685e
commit 81e7cf5a32
15 changed files with 164 additions and 184 deletions
+31 -29
View File
@@ -253,19 +253,15 @@ int PerlembParser::EventCommon(
if (isPlayerQuest || isGlobalPlayerQuest) {
return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, nullptr);
}
else if (isItemQuest) {
} else if (isItemQuest) {
return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, item_inst);
}
else if (isSpellQuest) {
} else if (isSpellQuest) {
if (mob) {
return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, nullptr);
}
else {
} else {
return SendCommands(package_name.c_str(), sub_name, 0, npcmob, mob, nullptr);
}
}
else {
} else {
return SendCommands(package_name.c_str(), sub_name, objid, npcmob, mob, nullptr);
}
}
@@ -312,11 +308,11 @@ int PerlembParser::EventItem(
}
int PerlembParser::EventSpell(
QuestEventID evt, NPC *npc, Client *client, uint32 spell_id, uint32 extra_data,
QuestEventID evt, NPC *npc, Client *client, uint32 spell_id, std::string data, uint32 extra_data,
std::vector<EQ::Any> *extra_pointers
)
{
return EventCommon(evt, 0, itoa(spell_id), npc, nullptr, client, extra_data, false, extra_pointers);
return EventCommon(evt, spell_id, data.c_str(), npc, nullptr, client, extra_data, false, extra_pointers);
}
bool PerlembParser::HasQuestSub(uint32 npcid, QuestEventID evt)
@@ -1004,8 +1000,8 @@ void PerlembParser::GetQuestTypes(
{
if (event == EVENT_SPELL_EFFECT_CLIENT ||
event == EVENT_SPELL_EFFECT_NPC ||
event == EVENT_SPELL_BUFF_TIC_CLIENT ||
event == EVENT_SPELL_BUFF_TIC_NPC ||
event == EVENT_SPELL_EFFECT_BUFF_TIC_CLIENT ||
event == EVENT_SPELL_EFFECT_BUFF_TIC_NPC ||
event == EVENT_SPELL_FADE ||
event == EVENT_SPELL_EFFECT_TRANSLOCATE_COMPLETE) {
isSpellQuest = true;
@@ -1042,31 +1038,31 @@ void PerlembParser::GetQuestPackageName(
bool global
)
{
if (!isPlayerQuest && !isGlobalPlayerQuest && !isItemQuest && !isSpellQuest) {
if (
!isPlayerQuest &&
!isGlobalPlayerQuest &&
!isItemQuest &&
!isSpellQuest
) {
if (global) {
isGlobalNPC = true;
package_name = "qst_global_npc";
}
else {
} else {
package_name = "qst_npc_";
package_name += itoa(npcmob->GetNPCTypeID());
package_name += std::to_string(npcmob->GetNPCTypeID());
}
}
else if (isItemQuest) {
} else if (isItemQuest) {
// need a valid EQ::ItemInstance pointer check here..unsure how to cancel this process
const EQ::ItemData *item = item_inst->GetItem();
package_name = "qst_item_";
package_name += itoa(item->ID);
}
else if (isPlayerQuest) {
package_name += std::to_string(item->ID);
} else if (isPlayerQuest) {
package_name = "qst_player";
}
else if (isGlobalPlayerQuest) {
} else if (isGlobalPlayerQuest) {
package_name = "qst_global_player";
}
else {
} else {
package_name = "qst_spell_";
package_name += data;
package_name += std::to_string(objid);
}
}
@@ -1525,11 +1521,17 @@ void PerlembParser::ExportEventVariables(
break;
}
case EVENT_SPELL_EFFECT_BUFF_TIC_CLIENT:
case EVENT_SPELL_EFFECT_BUFF_TIC_NPC:
case EVENT_SPELL_EFFECT_CLIENT:
case EVENT_SPELL_EFFECT_NPC:
case EVENT_SPELL_BUFF_TIC_CLIENT:
case EVENT_SPELL_BUFF_TIC_NPC: {
ExportVar(package_name.c_str(), "caster_id", extradata);
case EVENT_SPELL_FADE: {
Seperator sep(data);
ExportVar(package_name.c_str(), "spell_id", objid);
ExportVar(package_name.c_str(), "caster_id", sep.arg[0]);
ExportVar(package_name.c_str(), "tics_remaining", sep.arg[1]);
ExportVar(package_name.c_str(), "caster_level", sep.arg[2]);
ExportVar(package_name.c_str(), "buff_slot", sep.arg[3]);
break;
}