mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 11:28:25 +00:00
[Quest API] Add Spell Blocked Event to Perl/Lua (#4217)
* [Spells] Add Unblockable Spell Table and Spell Blocked Event - Add `EVENT_SPELL_BLOCKED`, exports `$blocking_spell_id`, `$cast_spell_id`, `$blocking_spell`, and `$cast_spell`. - Add `event_spell_blocked`, exports `e.blocking_spell_id`, `e.cast_spell_id`, `e.blocking_spell`, and `e.cast_spell`. - Adds `spells_unblockable` table with a `spell_id` and `is_unblockable` column. - This table will need to be populated based on known spells that should be unblockable. - This event will allow operators to perform events when spells are blocked. * Cleanup * Cleanup * Update spells.cpp * Remove unused repositories. * Finalize * Update lua_parser_events.cpp
This commit is contained in:
+100
-1
@@ -626,6 +626,39 @@ void handle_npc_entity_variable(
|
||||
}
|
||||
}
|
||||
|
||||
void handle_npc_spell_blocked(
|
||||
QuestInterface *parse,
|
||||
lua_State* L,
|
||||
NPC* npc,
|
||||
Mob *init,
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any> *extra_pointers
|
||||
)
|
||||
{
|
||||
Seperator sep(data.c_str());
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[0]));
|
||||
lua_setfield(L, -2, "blocking_spell_id");
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
|
||||
lua_setfield(L, -2, "cast_spell_id");
|
||||
|
||||
const uint32 blocking_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_one(IsValidSpell(blocking_spell_id) ? &spells[blocking_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_one_o = luabind::adl::object(L, l_spell_one);
|
||||
l_spell_one_o.push(L);
|
||||
lua_setfield(L, -2, "blocking_spell");
|
||||
|
||||
const uint32 cast_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_two(IsValidSpell(cast_spell_id) ? &spells[cast_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_two_o = luabind::adl::object(L, l_spell_two);
|
||||
l_spell_two_o.push(L);
|
||||
lua_setfield(L, -2, "cast_spell");
|
||||
}
|
||||
|
||||
// Player
|
||||
void handle_player_say(
|
||||
QuestInterface *parse,
|
||||
@@ -1674,11 +1707,44 @@ void handle_player_aa_loss(
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any> *extra_pointers
|
||||
) {
|
||||
)
|
||||
{
|
||||
lua_pushinteger(L, Strings::ToInt(data));
|
||||
lua_setfield(L, -2, "aa_lost");
|
||||
}
|
||||
|
||||
void handle_player_spell_blocked(
|
||||
QuestInterface *parse,
|
||||
lua_State* L,
|
||||
Client* client,
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any> *extra_pointers
|
||||
)
|
||||
{
|
||||
Seperator sep(data.c_str());
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[0]));
|
||||
lua_setfield(L, -2, "blocking_spell_id");
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
|
||||
lua_setfield(L, -2, "cast_spell_id");
|
||||
|
||||
const uint32 blocking_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_one(IsValidSpell(blocking_spell_id) ? &spells[blocking_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_one_o = luabind::adl::object(L, l_spell_one);
|
||||
l_spell_one_o.push(L);
|
||||
lua_setfield(L, -2, "blocking_spell");
|
||||
|
||||
const uint32 cast_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_two(IsValidSpell(cast_spell_id) ? &spells[cast_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_two_o = luabind::adl::object(L, l_spell_two);
|
||||
l_spell_two_o.push(L);
|
||||
lua_setfield(L, -2, "cast_spell");
|
||||
}
|
||||
|
||||
// Item
|
||||
void handle_item_click(
|
||||
QuestInterface *parse,
|
||||
@@ -2690,4 +2756,37 @@ void handle_bot_entity_variable(
|
||||
}
|
||||
}
|
||||
|
||||
void handle_bot_spell_blocked(
|
||||
QuestInterface *parse,
|
||||
lua_State* L,
|
||||
Bot* bot,
|
||||
Mob *init,
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any> *extra_pointers
|
||||
)
|
||||
{
|
||||
Seperator sep(data.c_str());
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[0]));
|
||||
lua_setfield(L, -2, "blocking_spell_id");
|
||||
|
||||
lua_pushinteger(L, Strings::ToUnsignedInt(sep.arg[1]));
|
||||
lua_setfield(L, -2, "cast_spell_id");
|
||||
|
||||
const uint32 blocking_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_one(IsValidSpell(blocking_spell_id) ? &spells[blocking_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_one_o = luabind::adl::object(L, l_spell_one);
|
||||
l_spell_one_o.push(L);
|
||||
lua_setfield(L, -2, "blocking_spell");
|
||||
|
||||
const uint32 cast_spell_id = Strings::ToUnsignedInt(sep.arg[0]);
|
||||
|
||||
Lua_Spell l_spell_two(IsValidSpell(cast_spell_id) ? &spells[cast_spell_id] : nullptr);
|
||||
luabind::adl::object l_spell_two_o = luabind::adl::object(L, l_spell_two);
|
||||
l_spell_two_o.push(L);
|
||||
lua_setfield(L, -2, "cast_spell");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user