diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index 9977f9ca3..2ad425f3a 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -3733,10 +3733,11 @@ XS(XS__GetZoneLongName) { if (items != 1) Perl_croak(aTHX_ "Usage: quest::GetZoneLongName(string zone)"); dXSTARG; - char *zone = (char *) SvPV_nolen(ST(0)); - Const_char *RETVAL = quest_manager.GetZoneLongName(zone); - sv_setpv(TARG, RETVAL); + std::string zone = (std::string) SvPV_nolen(ST(0)); + std::string RETVAL = quest_manager.GetZoneLongName(zone); + + sv_setpv(TARG, RETVAL.c_str()); XSprePUSH; PUSHTARG; XSRETURN(1); @@ -3767,7 +3768,7 @@ XS(XS__crosszoneassigntaskbycharid) { if (items == 3) { enforce_level_requirement = (bool) SvTRUE(ST(2)); - } + } quest_manager.CrossZoneAssignTaskByCharID(character_id, task_id, enforce_level_requirement); } @@ -3801,13 +3802,13 @@ XS(XS__crosszoneassigntaskbyraidid) { int raid_id = (int) SvIV(ST(0)); uint32 task_id = (uint32) SvIV(ST(1)); bool enforce_level_requirement = false; - + if (items == 3) { enforce_level_requirement = (bool) SvTRUE(ST(2)); } quest_manager.CrossZoneAssignTaskByRaidID(raid_id, task_id, enforce_level_requirement); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneassigntaskbyguildid); @@ -3825,7 +3826,7 @@ XS(XS__crosszoneassigntaskbyguildid) { } quest_manager.CrossZoneAssignTaskByGuildID(guild_id, task_id, enforce_level_requirement); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonecastspellbycharid); @@ -3838,7 +3839,7 @@ XS(XS__crosszonecastspellbycharid) { uint32 spell_id = (uint32) SvIV(ST(1)); quest_manager.CrossZoneCastSpellByCharID(character_id, spell_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonecastspellbygroupid); @@ -3851,7 +3852,7 @@ XS(XS__crosszonecastspellbygroupid) { uint32 spell_id = (uint32) SvIV(ST(1)); quest_manager.CrossZoneCastSpellByGroupID(group_id, spell_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonecastspellbyraidid); @@ -3864,7 +3865,7 @@ XS(XS__crosszonecastspellbyraidid) { uint32 spell_id = (uint32) SvIV(ST(1)); quest_manager.CrossZoneCastSpellByRaidID(raid_id, spell_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonecastspellbyguildid); @@ -3877,7 +3878,7 @@ XS(XS__crosszonecastspellbyguildid) { uint32 spell_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneCastSpellByGuildID(guild_id, spell_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonedisabletaskbycharid); @@ -3890,7 +3891,7 @@ XS(XS__crosszonedisabletaskbycharid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneDisableTaskByCharID(char_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonedisabletaskbygroupid); @@ -3903,7 +3904,7 @@ XS(XS__crosszonedisabletaskbygroupid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneDisableTaskByGroupID(group_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonedisabletaskbyraidid); @@ -3916,7 +3917,7 @@ XS(XS__crosszonedisabletaskbyraidid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneDisableTaskByRaidID(raid_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonedisabletaskbyguildid); @@ -3929,7 +3930,7 @@ XS(XS__crosszonedisabletaskbyguildid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneDisableTaskByGuildID(guild_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneenabletaskbycharid); @@ -3942,7 +3943,7 @@ XS(XS__crosszoneenabletaskbycharid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneEnableTaskByCharID(char_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneenabletaskbygroupid); @@ -3955,7 +3956,7 @@ XS(XS__crosszoneenabletaskbygroupid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneEnableTaskByGroupID(group_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneenabletaskbyraidid); @@ -3968,7 +3969,7 @@ XS(XS__crosszoneenabletaskbyraidid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneEnableTaskByRaidID(raid_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneenabletaskbyguildid); @@ -3981,7 +3982,7 @@ XS(XS__crosszoneenabletaskbyguildid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneEnableTaskByGuildID(guild_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonefailtaskbycharid); @@ -3994,7 +3995,7 @@ XS(XS__crosszonefailtaskbycharid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneFailTaskByCharID(char_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonefailtaskbygroupid); @@ -4007,7 +4008,7 @@ XS(XS__crosszonefailtaskbygroupid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneFailTaskByGroupID(group_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonefailtaskbyraidid); @@ -4020,7 +4021,7 @@ XS(XS__crosszonefailtaskbyraidid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneFailTaskByRaidID(raid_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonefailtaskbyguildid); @@ -4033,7 +4034,7 @@ XS(XS__crosszonefailtaskbyguildid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneFailTaskByGuildID(guild_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonemarqueebycharid); @@ -4390,7 +4391,7 @@ XS(XS__crosszoneremovetaskbycharid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneRemoveTaskByCharID(char_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneremovetaskbygroupid); @@ -4403,7 +4404,7 @@ XS(XS__crosszoneremovetaskbygroupid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneRemoveTaskByGroupID(group_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneremovetaskbyraidid); @@ -4416,7 +4417,7 @@ XS(XS__crosszoneremovetaskbyraidid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneRemoveTaskByRaidID(raid_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneremovetaskbyguildid); @@ -4429,7 +4430,7 @@ XS(XS__crosszoneremovetaskbyguildid) { uint32 task_id = (uint32) SvUV(ST(1)); quest_manager.CrossZoneRemoveTaskByGuildID(guild_id, task_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneresetactivitybycharid); @@ -4443,7 +4444,7 @@ XS(XS__crosszoneresetactivitybycharid) { int activity_id = (int) SvIV(ST(2)); quest_manager.CrossZoneResetActivityByCharID(char_id, task_id, activity_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneresetactivitybygroupid); @@ -4457,7 +4458,7 @@ XS(XS__crosszoneresetactivitybygroupid) { int activity_id = (int) SvIV(ST(2)); quest_manager.CrossZoneResetActivityByGroupID(group_id, task_id, activity_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneresetactivitybyraidid); @@ -4471,7 +4472,7 @@ XS(XS__crosszoneresetactivitybyraidid) { int activity_id = (int) SvIV(ST(2)); quest_manager.CrossZoneResetActivityByRaidID(raid_id, task_id, activity_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneresetactivitybyguildid); @@ -4485,7 +4486,7 @@ XS(XS__crosszoneresetactivitybyguildid) { int activity_id = (int) SvIV(ST(2)); quest_manager.CrossZoneResetActivityByGuildID(guild_id, task_id, activity_id); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszonesetentityvariablebynpctypeid); @@ -4684,7 +4685,7 @@ XS(XS__crosszoneupdateactivitybycharid) { } quest_manager.CrossZoneUpdateActivityByCharID(char_id, task_id, activity_id, activity_count); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneupdateactivitybygroupid); @@ -4702,7 +4703,7 @@ XS(XS__crosszoneupdateactivitybygroupid) { } quest_manager.CrossZoneUpdateActivityByGroupID(group_id, task_id, activity_id, activity_count); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneupdateactivitybyraidid); @@ -4720,7 +4721,7 @@ XS(XS__crosszoneupdateactivitybyraidid) { } quest_manager.CrossZoneUpdateActivityByRaidID(raid_id, task_id, activity_id, activity_count); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__crosszoneupdateactivitybyguildid); @@ -4738,7 +4739,7 @@ XS(XS__crosszoneupdateactivitybyguildid) { } quest_manager.CrossZoneUpdateActivityByGuildID(guild_id, task_id, activity_id, activity_count); } - XSRETURN_EMPTY; + XSRETURN_EMPTY; } XS(XS__worldwideassigntask); @@ -4753,7 +4754,7 @@ XS(XS__worldwideassigntask) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4775,7 +4776,7 @@ XS(XS__worldwidecastspell) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4797,7 +4798,7 @@ XS(XS__worldwidedisabletask) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4819,7 +4820,7 @@ XS(XS__worldwideenabletask) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4841,7 +4842,7 @@ XS(XS__worldwidefailtask) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4868,7 +4869,7 @@ XS(XS__worldwidemarquee) { if (items == 7) { min_status = (uint8) SvUV(ST(6)); } - + if (items == 8) { max_status = (uint8) SvUV(ST(7)); } @@ -4891,7 +4892,7 @@ XS(XS__worldwidemessage) { if (items == 3) { min_status = (uint8) SvUV(ST(2)); } - + if (items == 4) { max_status = (uint8) SvUV(ST(3)); } @@ -4914,7 +4915,7 @@ XS(XS__worldwidemove) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4936,7 +4937,7 @@ XS(XS__worldwidemoveinstance) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4958,7 +4959,7 @@ XS(XS__worldwideremovespell) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -4980,7 +4981,7 @@ XS(XS__worldwideremovetask) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(2)); } @@ -5003,7 +5004,7 @@ XS(XS__worldwideresetactivity) { if (items == 3) { min_status = (uint8) SvUV(ST(2)); } - + if (items == 4) { max_status = (uint8) SvUV(ST(3)); } @@ -5026,7 +5027,7 @@ XS(XS__worldwidesetentityvariableclient) { if (items == 3) { min_status = (uint8) SvUV(ST(2)); } - + if (items == 4) { max_status = (uint8) SvUV(ST(3)); } @@ -5075,7 +5076,7 @@ XS(XS__worldwidesignalclient) { if (items == 2) { min_status = (uint8) SvUV(ST(1)); } - + if (items == 3) { max_status = (uint8) SvUV(ST(1)); } @@ -5102,7 +5103,7 @@ XS(XS__worldwideupdateactivity) { if (items == 4) { min_status = (uint8) SvUV(ST(3)); } - + if (items == 5) { max_status = (uint8) SvUV(ST(4)); } @@ -6171,7 +6172,7 @@ EXTERN_C XS(boot_quest) { newXS(strcpy(buf, "crosszonemoveinstancebycharid"), XS__crosszonemoveinstancebycharid, file); newXS(strcpy(buf, "crosszonemoveinstancebygroupid"), XS__crosszonemoveinstancebygroupid, file); newXS(strcpy(buf, "crosszonemoveinstancebyraidid"), XS__crosszonemoveinstancebyraidid, file); - newXS(strcpy(buf, "crosszonemoveinstancebyguildid"), XS__crosszonemoveinstancebyguildid, file); + newXS(strcpy(buf, "crosszonemoveinstancebyguildid"), XS__crosszonemoveinstancebyguildid, file); newXS(strcpy(buf, "crosszoneremovespellbycharid"), XS__crosszoneremovespellbycharid, file); newXS(strcpy(buf, "crosszoneremovespellbygroupid"), XS__crosszoneremovespellbygroupid, file); newXS(strcpy(buf, "crosszoneremovespellbyraidid"), XS__crosszoneremovespellbyraidid, file); diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index 82fae08ee..15651b1be 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -3272,13 +3272,11 @@ int32 QuestManager::GetZoneID(const char *zone) { return static_cast(ZoneID(zone)); } -const char* QuestManager::GetZoneLongName(const char *zone) { - char *long_name; - content_db.GetZoneLongName(zone, &long_name); - std::string ln = long_name; - safe_delete_array(long_name); - - return ln.c_str(); +std::string QuestManager::GetZoneLongName(std::string zone_short_name) +{ + return zone_store.GetZoneLongName( + zone_store.GetZoneID(zone_short_name) + ); } void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement) { @@ -3958,7 +3956,7 @@ void QuestManager::CrossZoneUpdateActivityByGuildID(int guild_id, uint32 task_id } } -void QuestManager::WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) { +void QuestManager::WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) { QuestManagerCurrentQuestVars(); if (initiator && owner) { auto pack = new ServerPacket(ServerOP_WWAssignTask, sizeof(WWAssignTask_Struct)); diff --git a/zone/questmgr.h b/zone/questmgr.h index 9ea34e1e1..18c20907f 100644 --- a/zone/questmgr.h +++ b/zone/questmgr.h @@ -280,7 +280,7 @@ public: void SendMail(const char *to, const char *from, const char *subject, const char *message); uint16 CreateDoor( const char* model, float x, float y, float z, float heading, uint8 opentype, uint16 size); int32 GetZoneID(const char *zone); - const char *GetZoneLongName(const char *zone); + static std::string GetZoneLongName(std::string zone_short_name); void CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement = false); void CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement = false); void CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement = false);