[Bug Fix] Fix NPC Cast Events not parsing properly. (#3518)

* [Bug Fix] Fix NPC Cast Events not parsing properly.

# Notes
- We were not using separated values.

* Update lua_parser_events.cpp
This commit is contained in:
Alex King 2023-07-31 20:59:56 -04:00 committed by GitHub
parent 55161e18c8
commit 2da7ddad57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -231,7 +231,7 @@ void handle_npc_hate(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushboolean(L, Strings::ToInt(data) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(data));
lua_setfield(L, -2, "joined"); lua_setfield(L, -2, "joined");
} }
@ -301,8 +301,8 @@ void handle_npc_death(
lua_pushinteger(L, Strings::ToInt(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "damage"); lua_setfield(L, -2, "damage");
int spell_id = Strings::ToInt(sep.arg[2]); const uint32 spell_id = Strings::ToUnsignedInt(sep.arg[2]);
if(IsValidSpell(spell_id)) { if (IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
l_spell_o.push(L); l_spell_o.push(L);
@ -317,16 +317,14 @@ void handle_npc_death(
lua_pushinteger(L, Strings::ToInt(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
if (extra_pointers && extra_pointers->size() >= 1) if (extra_pointers && extra_pointers->size() >= 1) {
{
Lua_Corpse l_corpse(std::any_cast<Corpse*>(extra_pointers->at(0))); Lua_Corpse l_corpse(std::any_cast<Corpse*>(extra_pointers->at(0)));
luabind::adl::object l_corpse_o = luabind::adl::object(L, l_corpse); luabind::adl::object l_corpse_o = luabind::adl::object(L, l_corpse);
l_corpse_o.push(L); l_corpse_o.push(L);
lua_setfield(L, -2, "corpse"); lua_setfield(L, -2, "corpse");
} }
if (extra_pointers && extra_pointers->size() >= 2) if (extra_pointers && extra_pointers->size() >= 2) {
{
Lua_NPC l_npc(std::any_cast<NPC*>(extra_pointers->at(1))); Lua_NPC l_npc(std::any_cast<NPC*>(extra_pointers->at(1)));
luabind::adl::object l_npc_o = luabind::adl::object(L, l_npc); luabind::adl::object l_npc_o = luabind::adl::object(L, l_npc);
l_npc_o.push(L); l_npc_o.push(L);
@ -343,18 +341,19 @@ void handle_npc_cast(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
int spell_id = Strings::ToInt(data); Seperator sep(data.c_str());
if(IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); const uint32 spell_id = Strings::ToUnsignedInt(sep.arg[0]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); Lua_Spell l_spell(IsValidSpell(spell_id) ? &spells[spell_id] : nullptr);
l_spell_o.push(L); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
lua_setfield(L, -2, "spell"); l_spell_o.push(L);
} else { lua_setfield(L, -2, "spell");
Lua_Spell l_spell(nullptr);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
l_spell_o.push(L); lua_setfield(L, -2, "caster_id");
lua_setfield(L, -2, "spell");
} lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level");
} }
void handle_npc_area( void handle_npc_area(
@ -462,16 +461,16 @@ void handle_npc_damage(
lua_pushnumber(L, Strings::ToInt(sep.arg[3])); lua_pushnumber(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushboolean(L, Strings::ToInt(sep.arg[4]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[4]));
lua_setfield(L, -2, "is_damage_shield"); lua_setfield(L, -2, "is_damage_shield");
lua_pushboolean(L, Strings::ToInt(sep.arg[5]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[5]));
lua_setfield(L, -2, "is_avoidable"); lua_setfield(L, -2, "is_avoidable");
lua_pushnumber(L, Strings::ToInt(sep.arg[6])); lua_pushnumber(L, Strings::ToInt(sep.arg[6]));
lua_setfield(L, -2, "buff_slot"); lua_setfield(L, -2, "buff_slot");
lua_pushboolean(L, Strings::ToInt(sep.arg[7]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[7]));
lua_setfield(L, -2, "is_buff_tic"); lua_setfield(L, -2, "is_buff_tic");
lua_pushnumber(L, Strings::ToInt(sep.arg[8])); lua_pushnumber(L, Strings::ToInt(sep.arg[8]));
@ -711,10 +710,10 @@ void handle_player_cast(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
lua_pushinteger(L, Strings::ToInt(sep.arg[1])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, Strings::ToInt(sep.arg[2])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
} }
@ -933,7 +932,7 @@ void handle_player_respawn(
lua_pushinteger(L, Strings::ToInt(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "option"); lua_setfield(L, -2, "option");
lua_pushboolean(L, extra_data == 1 ? true : false); lua_pushboolean(L, Strings::ToBool(std::to_string(extra_data)));
lua_setfield(L, -2, "resurrect"); lua_setfield(L, -2, "resurrect");
} }
@ -950,7 +949,7 @@ void handle_player_packet(
l_packet_o.push(L); l_packet_o.push(L);
lua_setfield(L, -2, "packet"); lua_setfield(L, -2, "packet");
lua_pushboolean(L, extra_data == 1 ? true : false); lua_pushboolean(L, Strings::ToBool(std::to_string(extra_data)));
lua_setfield(L, -2, "connecting"); lua_setfield(L, -2, "connecting");
} }
@ -1270,16 +1269,16 @@ void handle_player_damage(
lua_pushnumber(L, Strings::ToInt(sep.arg[3])); lua_pushnumber(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushboolean(L, Strings::ToInt(sep.arg[4]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[4]));
lua_setfield(L, -2, "is_damage_shield"); lua_setfield(L, -2, "is_damage_shield");
lua_pushboolean(L, Strings::ToInt(sep.arg[5]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[5]));
lua_setfield(L, -2, "is_avoidable"); lua_setfield(L, -2, "is_avoidable");
lua_pushnumber(L, Strings::ToInt(sep.arg[6])); lua_pushnumber(L, Strings::ToInt(sep.arg[6]));
lua_setfield(L, -2, "buff_slot"); lua_setfield(L, -2, "buff_slot");
lua_pushboolean(L, Strings::ToInt(sep.arg[7]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[7]));
lua_setfield(L, -2, "is_buff_tic"); lua_setfield(L, -2, "is_buff_tic");
lua_pushnumber(L, Strings::ToInt(sep.arg[8])); lua_pushnumber(L, Strings::ToInt(sep.arg[8]));
@ -1606,7 +1605,7 @@ void handle_spell_event(
Lua_Mob l_mob(mob); Lua_Mob l_mob(mob);
luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob); luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob);
l_mob_o.push(L); l_mob_o.push(L);
} else if(client) { } else if (client) {
Lua_Mob l_client(client); Lua_Mob l_client(client);
luabind::adl::object l_client_o = luabind::adl::object(L, l_client); luabind::adl::object l_client_o = luabind::adl::object(L, l_client);
l_client_o.push(L); l_client_o.push(L);
@ -1623,13 +1622,13 @@ void handle_spell_event(
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, Strings::ToInt(sep.arg[0])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[0]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, Strings::ToInt(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "tics_remaining"); lua_setfield(L, -2, "tics_remaining");
lua_pushinteger(L, Strings::ToInt(sep.arg[2])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
lua_pushinteger(L, Strings::ToInt(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
@ -1655,7 +1654,7 @@ void handle_translocate_finish(
Lua_Mob l_mob(mob); Lua_Mob l_mob(mob);
luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob); luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob);
l_mob_o.push(L); l_mob_o.push(L);
} else if(client) { } else if (client) {
Lua_Mob l_client(client); Lua_Mob l_client(client);
luabind::adl::object l_client_o = luabind::adl::object(L, l_client); luabind::adl::object l_client_o = luabind::adl::object(L, l_client);
l_client_o.push(L); l_client_o.push(L);
@ -1945,23 +1944,16 @@ void handle_bot_cast(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
int spell_id = Strings::ToInt(sep.arg[0]); const uint32 spell_id = Strings::ToUnsignedInt(sep.arg[0]);
if (IsValidSpell(spell_id)) { Lua_Spell l_spell(IsValidSpell(spell_id) ? &spells[spell_id] : nullptr);
Lua_Spell l_spell(&spells[spell_id]); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); l_spell_o.push(L);
l_spell_o.push(L);
} else {
Lua_Spell l_spell(nullptr);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
l_spell_o.push(L);
}
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
lua_pushinteger(L, Strings::ToInt(sep.arg[1])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, Strings::ToInt(sep.arg[2])); lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
} }
@ -1979,7 +1971,7 @@ void handle_bot_combat(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushboolean(L, Strings::ToInt(data) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(data));
lua_setfield(L, -2, "joined"); lua_setfield(L, -2, "joined");
} }
@ -2003,7 +1995,7 @@ void handle_bot_death(
lua_pushinteger(L, Strings::ToInt(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "damage"); lua_setfield(L, -2, "damage");
int spell_id = Strings::ToInt(sep.arg[2]); const uint32 spell_id = Strings::ToUnsignedInt(sep.arg[2]);
if (IsValidSpell(spell_id)) { if (IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -2257,16 +2249,16 @@ void handle_bot_damage(
lua_pushnumber(L, Strings::ToInt(sep.arg[3])); lua_pushnumber(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushboolean(L, Strings::ToInt(sep.arg[4]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[4]));
lua_setfield(L, -2, "is_damage_shield"); lua_setfield(L, -2, "is_damage_shield");
lua_pushboolean(L, Strings::ToInt(sep.arg[5]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[5]));
lua_setfield(L, -2, "is_avoidable"); lua_setfield(L, -2, "is_avoidable");
lua_pushnumber(L, Strings::ToInt(sep.arg[6])); lua_pushnumber(L, Strings::ToInt(sep.arg[6]));
lua_setfield(L, -2, "buff_slot"); lua_setfield(L, -2, "buff_slot");
lua_pushboolean(L, Strings::ToInt(sep.arg[7]) == 0 ? false : true); lua_pushboolean(L, Strings::ToBool(sep.arg[7]));
lua_setfield(L, -2, "is_buff_tic"); lua_setfield(L, -2, "is_buff_tic");
lua_pushnumber(L, Strings::ToInt(sep.arg[8])); lua_pushnumber(L, Strings::ToInt(sep.arg[8]));