mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-01 21:42:26 +00:00
Changes
This commit is contained in:
parent
a65db13ec3
commit
b381a339f6
@ -1151,16 +1151,7 @@ bool Zone::Init(bool is_static) {
|
|||||||
);
|
);
|
||||||
} // if that fails, try the file name, then load defaults
|
} // if that fails, try the file name, then load defaults
|
||||||
|
|
||||||
content_service.SetZoneId(GetZoneID());
|
LoadRules();
|
||||||
content_service.SetInstanceVersion(GetInstanceVersion());
|
|
||||||
RuleManager::Instance()->LoadRules(&database, RuleManager::Instance()->GetActiveRuleset(), true);
|
|
||||||
|
|
||||||
if (RuleManager::Instance()->GetActiveRulesetID() != default_ruleset) {
|
|
||||||
std::string r_name = RuleSetsRepository::GetRuleSetName(database, default_ruleset);
|
|
||||||
if (r_name.size() > 0) {
|
|
||||||
RuleManager::Instance()->LoadRules(&database, r_name, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!map_name) {
|
if (!map_name) {
|
||||||
LogError("No map name found for zone [{}]", GetShortName());
|
LogError("No map name found for zone [{}]", GetShortName());
|
||||||
@ -3393,27 +3384,29 @@ bool Zone::IsPausedTimer(std::string name)
|
|||||||
return e != paused_zone_timers.end();
|
return e != paused_zone_timers.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Zone::PauseTimer(std::string name)
|
void Zone::ResumeTimer(std::string name)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
!IsLoaded() ||
|
!IsLoaded() ||
|
||||||
zone_timers.empty() ||
|
paused_zone_timers.empty() ||
|
||||||
!HasTimer(name) ||
|
!IsPausedTimer(name)
|
||||||
IsPausedTimer(name)
|
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 remaining_time = 0;
|
uint32 remaining_time = 0;
|
||||||
|
|
||||||
const bool has_pause_event = parse->ZoneHasQuestSub(EVENT_TIMER_PAUSE);
|
if (!paused_zone_timers.empty()) {
|
||||||
|
for (auto e = paused_zone_timers.begin(); e != paused_zone_timers.end(); e++) {
|
||||||
if (!zone_timers.empty()) {
|
|
||||||
for (auto e = zone_timers.begin(); e != zone_timers.end(); e++) {
|
|
||||||
if (e->name == name) {
|
if (e->name == name) {
|
||||||
remaining_time = e->timer_.GetRemainingTime();
|
remaining_time = e->remaining_time;
|
||||||
|
|
||||||
zone_timers.erase(e);
|
paused_zone_timers.erase(e);
|
||||||
|
|
||||||
|
if (!remaining_time) {
|
||||||
|
LogQuests("Paused timer [{}] not found or has expired.", name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const std::string& export_string = fmt::format(
|
const std::string& export_string = fmt::format(
|
||||||
"{} {}",
|
"{} {}",
|
||||||
@ -3422,20 +3415,15 @@ void Zone::PauseTimer(std::string name)
|
|||||||
);
|
);
|
||||||
|
|
||||||
LogQuests(
|
LogQuests(
|
||||||
"Pausing timer [{}] with [{}] ms remaining",
|
"Creating a new timer and resuming [{}] with [{}] ms remaining",
|
||||||
name,
|
name,
|
||||||
remaining_time
|
remaining_time
|
||||||
);
|
);
|
||||||
|
|
||||||
paused_zone_timers.emplace_back(
|
zone_timers.emplace_back(ZoneTimer(name, remaining_time));
|
||||||
PausedZoneTimer{
|
|
||||||
.name = name,
|
|
||||||
.remaining_time = remaining_time
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (has_pause_event) {
|
if (parse->ZoneHasQuestSub(EVENT_TIMER_RESUME)) {
|
||||||
parse->EventZone(EVENT_TIMER_PAUSE, this, export_string);
|
parse->EventZone(EVENT_TIMER_RESUME, this, export_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -3562,4 +3550,20 @@ void Zone::SendPayload(int payload_id, std::string payload_value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Zone::LoadRules()
|
||||||
|
{
|
||||||
|
if (GetZoneID() > 0) {
|
||||||
|
content_service.SetZoneId(GetZoneID());
|
||||||
|
content_service.SetInstanceVersion(GetInstanceVersion());
|
||||||
|
}
|
||||||
|
const auto rm = RuleManager::Instance();
|
||||||
|
rm->LoadRules(&database, rm->GetActiveRuleset(), true);
|
||||||
|
if (rm->GetActiveRulesetID() != default_ruleset) {
|
||||||
|
std::string r_name = RuleSetsRepository::GetRuleSetName(database, default_ruleset);
|
||||||
|
if (r_name.size() > 0) {
|
||||||
|
rm->LoadRules(&database, r_name, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "zone_loot.cpp"
|
#include "zone_loot.cpp"
|
||||||
|
|||||||
@ -485,6 +485,7 @@ public:
|
|||||||
void SaveZoneState();
|
void SaveZoneState();
|
||||||
static void ClearZoneState(uint32 zone_id, uint32 instance_id);
|
static void ClearZoneState(uint32 zone_id, uint32 instance_id);
|
||||||
void ReloadMaps();
|
void ReloadMaps();
|
||||||
|
void LoadRules();
|
||||||
|
|
||||||
void Signal(int signal_id);
|
void Signal(int signal_id);
|
||||||
void SendPayload(int payload_id, std::string payload_value);
|
void SendPayload(int payload_id, std::string payload_value);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user