From a98ebf5d529ede0b09a24fbcee095a4977ae0507 Mon Sep 17 00:00:00 2001 From: wish Date: Sun, 16 Jul 2023 21:57:29 +1000 Subject: [PATCH] rewrite into SeasonOverride --- config.json | 4 ++-- config/config.go | 2 +- server/channelserver/handlers_quest.go | 8 ++------ server/channelserver/sys_channel_server.go | 5 +++++ 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/config.json b/config.json index 647440201..83d1ee480 100644 --- a/config.json +++ b/config.json @@ -29,7 +29,6 @@ "QuestDebugTools": false, "EarthStatusOverride": 0, "EarthIDOverride": 0, - "DynamicSeasons": true, "EarthMonsterOverride": 0, "SaveDumps": { "Enabled": true, @@ -58,7 +57,8 @@ "DisableHunterNavi": false, "EnableHiganjimaEvent": false, "EnableNierEvent": false, - "DisableRoad": false + "DisableRoad": false, + "SeasonOverride": false }, "Discord": { "Enabled": false, diff --git a/config/config.go b/config/config.go index 5c4ee693d..b8b52ee06 100644 --- a/config/config.go +++ b/config/config.go @@ -110,7 +110,6 @@ type DevModeOptions struct { QuestDebugTools bool // Enable various quest debug logs EarthStatusOverride int32 EarthIDOverride int32 - DynamicSeasons bool // Enables dynamic seasons EarthMonsterOverride int32 SaveDumps SaveDumpOptions } @@ -144,6 +143,7 @@ type GameplayOptions struct { EnableHiganjimaEvent bool // Enables the Higanjima event in the Rasta Bar EnableNierEvent bool // Enables the Nier event in the Rasta Bar DisableRoad bool // Disables the Hunting Road + SeasonOverride bool // Overrides the Quest Season with the current Mezeporta Season } // Discord holds the discord integration config. diff --git a/server/channelserver/handlers_quest.go b/server/channelserver/handlers_quest.go index 6d12d1a11..63828da6f 100644 --- a/server/channelserver/handlers_quest.go +++ b/server/channelserver/handlers_quest.go @@ -45,7 +45,7 @@ func handleMsgSysGetFile(s *Session, p mhfpacket.MHFPacket) { ) } - if s.server.erupeConfig.DevModeOptions.DynamicSeasons && s.server.erupeConfig.DevMode { + if s.server.erupeConfig.GameplayOptions.SeasonOverride { pkt.Filename = seasonConversion(s, pkt.Filename) } @@ -69,11 +69,7 @@ func seasonConversion(s *Session, questFile string) string { timeSet = "n" } - // Determine the current season based on a modulus of the current time - sid := int64(((s.server.ID & 0xFF00) - 4096) / 256) - season := ((TimeAdjusted().Unix() / 86400) + sid) % 3 - - filename := fmt.Sprintf("%s%s%d", questFile[:5], timeSet, season) + filename := fmt.Sprintf("%s%s%d", questFile[:5], timeSet, s.server.Season()) // Return original file if file doesn't exist if _, err := os.Stat(filename); err == nil { diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index dccece844..b362c911e 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -405,3 +405,8 @@ func (s *Server) NextSemaphoreID() uint32 { } return s.semaphoreIndex } + +func (s *Server) Season() uint8 { + sid := int64(((s.ID & 0xFF00) - 4096) / 256) + return uint8(((TimeAdjusted().Unix() / 86400) + sid) % 3) +}