diff --git a/common/ruletypes.h b/common/ruletypes.h index 7967f4898..594bcd85e 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -686,6 +686,7 @@ RULE_BOOL(AA, ModernAAScalingEnabled, false, "Are we linearly scaling AA experie RULE_REAL(AA, ModernAAScalingStartPercent, 1000, "1000% or 10x AA experience at the start of the scaling range") RULE_INT(AA, ModernAAScalingAAMinimum, 0, "The minimum number of earned AA before AA experience scaling begins") RULE_INT(AA, ModernAAScalingAALimit, 4000, "The number of earned AA when AA experience scaling ends") +RULE_BOOL(AA, SoundForAAEarned, false, "Play sound when AA point earned") RULE_CATEGORY_END() RULE_CATEGORY(Console) diff --git a/zone/entity.cpp b/zone/entity.cpp index b00735e4a..2c8216101 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -2657,7 +2657,6 @@ bool EntityList::RemoveMobFromCloseLists(Mob *mob) auto it = mob_list.begin(); while (it != mob_list.end()) { - LogEntityManagement( "Removing mob [{}] from [{}] close list entity_id ({})", mob->GetCleanName(), @@ -2719,7 +2718,7 @@ void EntityList::ScanCloseMobs( if (distance <= scan_range || mob->GetAggroRange() >= scan_range) { close_mobs.insert(std::pair(mob->GetID(), mob)); - if (add_self_to_other_lists) { + if (add_self_to_other_lists && scanning_mob->GetID() > 0) { bool has_mob = false; for (auto &cm: mob->close_mobs) { diff --git a/zone/exp.cpp b/zone/exp.cpp index ed510bbf9..1a314b479 100644 --- a/zone/exp.cpp +++ b/zone/exp.cpp @@ -657,6 +657,9 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) { //Message(Chat::Yellow, "You have gained %d skill points!!", m_pp.aapoints - last_unspentAA); char val1[20]={0}; MessageString(Chat::Experience, GAIN_ABILITY_POINT, ConvertArray(m_pp.aapoints, val1),m_pp.aapoints == 1 ? "" : "(s)"); //You have gained an ability point! You now have %1 ability point%2. + if (RuleB(AA, SoundForAAEarned)) { + SendSound(); + } /* QS: PlayerLogAARate */ if (RuleB(QueryServ, PlayerLogAARate)){ diff --git a/zone/lua_general.cpp b/zone/lua_general.cpp index ec6e73314..087f60873 100644 --- a/zone/lua_general.cpp +++ b/zone/lua_general.cpp @@ -1311,54 +1311,158 @@ void lua_world_wide_assign_task(uint32 task_id, bool enforce_level_requirement) quest_manager.WorldWideAssignTask(task_id, enforce_level_requirement); } +void lua_world_wide_assign_task(uint32 task_id, bool enforce_level_requirement, uint8 min_status) { + quest_manager.WorldWideAssignTask(task_id, enforce_level_requirement, min_status); +} + +void lua_world_wide_assign_task(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideAssignTask(task_id, enforce_level_requirement, min_status, max_status); +} + void lua_world_wide_cast_spell(uint32 spell_id) { quest_manager.WorldWideCastSpell(spell_id); } +void lua_world_wide_cast_spell(uint32 spell_id, uint8 min_status) { + quest_manager.WorldWideCastSpell(spell_id, min_status); +} + +void lua_world_wide_cast_spell(uint32 spell_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideCastSpell(spell_id, min_status, max_status); +} + void lua_world_wide_disable_task(uint32 task_id) { quest_manager.WorldWideDisableTask(task_id); } +void lua_world_wide_disable_task(uint32 task_id, uint8 min_status) { + quest_manager.WorldWideDisableTask(task_id, min_status); +} + +void lua_world_wide_disable_task(uint32 task_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideDisableTask(task_id, min_status, max_status); +} + void lua_world_wide_enable_task(uint32 task_id) { quest_manager.WorldWideEnableTask(task_id); } +void lua_world_wide_enable_task(uint32 task_id, uint8 min_status) { + quest_manager.WorldWideEnableTask(task_id, min_status); +} + +void lua_world_wide_enable_task(uint32 task_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideEnableTask(task_id, min_status, max_status); +} + void lua_world_wide_fail_task(uint32 task_id) { quest_manager.WorldWideFailTask(task_id); } +void lua_world_wide_fail_task(uint32 task_id, uint8 min_status) { + quest_manager.WorldWideFailTask(task_id, min_status); +} + +void lua_world_wide_fail_task(uint32 task_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideFailTask(task_id, min_status, max_status); +} + void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) { quest_manager.WorldWideMarquee(type, priority, fade_in, fade_out, duration, message); } +void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message, uint8 min_status) { + quest_manager.WorldWideMarquee(type, priority, fade_in, fade_out, duration, message, min_status); +} + +void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideMarquee(type, priority, fade_in, fade_out, duration, message, min_status, max_status); +} + void lua_world_wide_message(uint32 type, const char *message) { quest_manager.WorldWideMessage(type, message); } +void lua_world_wide_message(uint32 type, const char *message, uint8 min_status) { + quest_manager.WorldWideMessage(type, message, min_status); +} + +void lua_world_wide_message(uint32 type, const char *message, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideMessage(type, message, min_status, max_status); +} + void lua_world_wide_move(const char *zone_short_name) { quest_manager.WorldWideMove(zone_short_name); } +void lua_world_wide_move(const char *zone_short_name, uint8 min_status) { + quest_manager.WorldWideMove(zone_short_name, min_status); +} + +void lua_world_wide_move(const char *zone_short_name, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideMove(zone_short_name, min_status, max_status); +} + void lua_world_wide_move_instance(uint16 instance_id) { quest_manager.WorldWideMoveInstance(instance_id); } +void lua_world_wide_move_instance(uint16 instance_id, uint8 min_status) { + quest_manager.WorldWideMoveInstance(instance_id, min_status); +} + +void lua_world_wide_move_instance(uint16 instance_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideMoveInstance(instance_id, min_status, max_status); +} + void lua_world_wide_remove_spell(uint32 spell_id) { quest_manager.WorldWideRemoveSpell(spell_id); } +void lua_world_wide_remove_spell(uint32 spell_id, uint8 min_status) { + quest_manager.WorldWideRemoveSpell(spell_id, min_status); +} + +void lua_world_wide_remove_spell(uint32 spell_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideRemoveSpell(spell_id, min_status, max_status); +} + void lua_world_wide_remove_task(uint32 task_id) { quest_manager.WorldWideRemoveTask(task_id); } +void lua_world_wide_remove_task(uint32 task_id, uint8 min_status) { + quest_manager.WorldWideRemoveTask(task_id, min_status); +} + +void lua_world_wide_remove_task(uint32 task_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideRemoveTask(task_id, min_status, max_status); +} + void lua_world_wide_reset_activity(uint32 task_id, int activity_id) { quest_manager.WorldWideResetActivity(task_id, activity_id); } +void lua_world_wide_reset_activity(uint32 task_id, int activity_id, uint8 min_status) { + quest_manager.WorldWideResetActivity(task_id, activity_id, min_status); +} + +void lua_world_wide_reset_activity(uint32 task_id, int activity_id, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideResetActivity(task_id, activity_id, min_status, max_status); +} + void lua_world_wide_set_entity_variable_client(const char *variable_name, const char *variable_value) { quest_manager.WorldWideSetEntityVariableClient(variable_name, variable_value); } +void lua_world_wide_set_entity_variable_client(const char *variable_name, const char *variable_value, uint8 min_status) { + quest_manager.WorldWideSetEntityVariableClient(variable_name, variable_value, min_status); +} + +void lua_world_wide_set_entity_variable_client(const char *variable_name, const char *variable_value, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideSetEntityVariableClient(variable_name, variable_value, min_status, max_status); +} + void lua_world_wide_set_entity_variable_npc(const char *variable_name, const char *variable_value) { quest_manager.WorldWideSetEntityVariableNPC(variable_name, variable_value); } @@ -1367,6 +1471,14 @@ void lua_world_wide_signal_client(uint32 signal) { quest_manager.WorldWideSignalClient(signal); } +void lua_world_wide_signal_client(uint32 signal, uint8 min_status) { + quest_manager.WorldWideSignalClient(signal, min_status); +} + +void lua_world_wide_signal_client(uint32 signal, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideSignalClient(signal, min_status, max_status); +} + void lua_world_wide_signal_npc(uint32 signal) { quest_manager.WorldWideSignalNPC(signal); } @@ -1379,6 +1491,14 @@ void lua_world_wide_update_activity(uint32 task_id, int activity_id, int activit quest_manager.WorldWideUpdateActivity(task_id, activity_id, activity_count); } +void lua_world_wide_update_activity(uint32 task_id, int activity_id, int activity_count, uint8 min_status) { + quest_manager.WorldWideUpdateActivity(task_id, activity_id, activity_count, min_status); +} + +void lua_world_wide_update_activity(uint32 task_id, int activity_id, int activity_count, uint8 min_status, uint8 max_status) { + quest_manager.WorldWideUpdateActivity(task_id, activity_id, activity_count, min_status, max_status); +} + luabind::adl::object lua_get_qglobals(lua_State *L, Lua_NPC npc, Lua_Client client) { luabind::adl::object ret = luabind::newtable(L); @@ -2487,23 +2607,53 @@ luabind::scope lua_register_general() { luabind::def("cross_zone_update_activity_by_guild_id", (void(*)(int,uint32,int,int))&lua_cross_zone_update_activity_by_guild_id), luabind::def("world_wide_assign_task", (void(*)(uint32))&lua_world_wide_assign_task), luabind::def("world_wide_assign_task", (void(*)(uint32,bool))&lua_world_wide_assign_task), - luabind::def("world_wide_cast_spell", &lua_world_wide_cast_spell), - luabind::def("world_wide_disable_task", &lua_world_wide_disable_task), - luabind::def("world_wide_enable_task", &lua_world_wide_enable_task), - luabind::def("world_wide_fail_task", &lua_world_wide_fail_task), - luabind::def("world_wide_marquee", &lua_world_wide_marquee), - luabind::def("world_wide_message", &lua_world_wide_message), - luabind::def("world_wide_move", &lua_world_wide_move), - luabind::def("world_wide_move_instance", &lua_world_wide_move_instance), - luabind::def("world_wide_remove_spell", &lua_world_wide_remove_spell), - luabind::def("world_wide_remove_task", &lua_world_wide_remove_task), - luabind::def("world_wide_reset_activity", &lua_world_wide_reset_activity), - luabind::def("world_wide_set_entity_variable_client", &lua_world_wide_set_entity_variable_client), + luabind::def("world_wide_assign_task", (void(*)(uint32,bool,uint8))&lua_world_wide_assign_task), + luabind::def("world_wide_assign_task", (void(*)(uint32,bool,uint8,uint8))&lua_world_wide_assign_task), + luabind::def("world_wide_cast_spell", (void(*)(uint32))&lua_world_wide_cast_spell), + luabind::def("world_wide_cast_spell", (void(*)(uint32,uint8))&lua_world_wide_cast_spell), + luabind::def("world_wide_cast_spell", (void(*)(uint32,uint8,uint8))&lua_world_wide_cast_spell), + luabind::def("world_wide_disable_task", (void(*)(uint32))&lua_world_wide_disable_task), + luabind::def("world_wide_disable_task", (void(*)(uint32,uint8))&lua_world_wide_disable_task), + luabind::def("world_wide_disable_task", (void(*)(uint32,uint8,uint8))&lua_world_wide_disable_task), + luabind::def("world_wide_enable_task", (void(*)(uint32))&lua_world_wide_enable_task), + luabind::def("world_wide_enable_task", (void(*)(uint32,uint8))&lua_world_wide_enable_task), + luabind::def("world_wide_enable_task", (void(*)(uint32,uint8,uint8))&lua_world_wide_enable_task), + luabind::def("world_wide_fail_task", (void(*)(uint32))&lua_world_wide_fail_task), + luabind::def("world_wide_fail_task", (void(*)(uint32,uint8))&lua_world_wide_fail_task), + luabind::def("world_wide_fail_task", (void(*)(uint32,uint8,uint8))&lua_world_wide_fail_task), + luabind::def("world_wide_marquee", (void(*)(uint32,uint32,uint32,uint32,uint32,const char*))&lua_world_wide_marquee), + luabind::def("world_wide_marquee", (void(*)(uint32,uint32,uint32,uint32,uint32,const char*,uint8))&lua_world_wide_marquee), + luabind::def("world_wide_marquee", (void(*)(uint32,uint32,uint32,uint32,uint32,const char*,uint8,uint8))&lua_world_wide_marquee), + luabind::def("world_wide_message", (void(*)(uint32,const char*))&lua_world_wide_message), + luabind::def("world_wide_message", (void(*)(uint32,const char*,uint8))&lua_world_wide_message), + luabind::def("world_wide_message", (void(*)(uint32,const char*,uint8,uint8))&lua_world_wide_message), + luabind::def("world_wide_move", (void(*)(const char*))&lua_world_wide_move), + luabind::def("world_wide_move", (void(*)(const char*,uint8))&lua_world_wide_move), + luabind::def("world_wide_move", (void(*)(const char*,uint8,uint8))&lua_world_wide_move), + luabind::def("world_wide_move_instance", (void(*)(uint16))&lua_world_wide_move_instance), + luabind::def("world_wide_move_instance", (void(*)(uint16,uint8))&lua_world_wide_move_instance), + luabind::def("world_wide_move_instance", (void(*)(uint16,uint8,uint8))&lua_world_wide_move_instance), + luabind::def("world_wide_remove_spell", (void(*)(uint32))&lua_world_wide_remove_spell), + luabind::def("world_wide_remove_spell", (void(*)(uint32,uint8))&lua_world_wide_remove_spell), + luabind::def("world_wide_remove_spell", (void(*)(uint32,uint8,uint8))&lua_world_wide_remove_spell), + luabind::def("world_wide_remove_task", (void(*)(uint32))&lua_world_wide_remove_task), + luabind::def("world_wide_remove_task", (void(*)(uint32,uint8))&lua_world_wide_remove_task), + luabind::def("world_wide_remove_task", (void(*)(uint32,uint8,uint8))&lua_world_wide_remove_task), + luabind::def("world_wide_reset_activity", (void(*)(uint32,int))&lua_world_wide_reset_activity), + luabind::def("world_wide_reset_activity", (void(*)(uint32,int,uint8))&lua_world_wide_reset_activity), + luabind::def("world_wide_reset_activity", (void(*)(uint32,int,uint8,uint8))&lua_world_wide_reset_activity), + luabind::def("world_wide_set_entity_variable_client", (void(*)(const char*,const char*))&lua_world_wide_set_entity_variable_client), + luabind::def("world_wide_set_entity_variable_client", (void(*)(const char*,const char*,uint8))&lua_world_wide_set_entity_variable_client), + luabind::def("world_wide_set_entity_variable_client", (void(*)(const char*,const char*,uint8,uint8))&lua_world_wide_set_entity_variable_client), luabind::def("world_wide_set_entity_variable_npc", &lua_world_wide_set_entity_variable_npc), - luabind::def("world_wide_signal_client", &lua_world_wide_signal_client), + luabind::def("world_wide_signal_client", (void(*)(uint32))&lua_world_wide_signal_client), + luabind::def("world_wide_signal_client", (void(*)(uint32,uint8))&lua_world_wide_signal_client), + luabind::def("world_wide_signal_client", (void(*)(uint32,uint8,uint8))&lua_world_wide_signal_client), luabind::def("world_wide_signal_npc", &lua_world_wide_signal_npc), luabind::def("world_wide_update_activity", (void(*)(uint32,int))&lua_world_wide_update_activity), luabind::def("world_wide_update_activity", (void(*)(uint32,int,int))&lua_world_wide_update_activity), + luabind::def("world_wide_update_activity", (void(*)(uint32,int,int,uint8))&lua_world_wide_update_activity), + luabind::def("world_wide_update_activity", (void(*)(uint32,int,int,uint8,uint8))&lua_world_wide_update_activity), luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_NPC,Lua_Client))&lua_get_qglobals), luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_Client))&lua_get_qglobals), luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_NPC))&lua_get_qglobals),