From 4edeaedea3f37c1ee4f625924251c0ab258bfae9 Mon Sep 17 00:00:00 2001 From: Matthe815 Date: Sun, 5 Nov 2023 15:23:34 -0500 Subject: [PATCH] fix: Restore seasons functionality into quests --- server/channelserver/handlers_quest.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/server/channelserver/handlers_quest.go b/server/channelserver/handlers_quest.go index da3c8166a..5c5fb9613 100644 --- a/server/channelserver/handlers_quest.go +++ b/server/channelserver/handlers_quest.go @@ -47,6 +47,10 @@ func handleMsgSysGetFile(s *Session, p mhfpacket.MHFPacket) { ) } + if s.server.erupeConfig.GameplayOptions.SeasonOverride { + pkt.Filename = seasonConversion(s, pkt.Filename) + } + data, err := os.ReadFile(filepath.Join(s.server.erupeConfig.BinPath, fmt.Sprintf("quests/%s.bin", pkt.Filename))) if err != nil { s.logger.Error(fmt.Sprintf("Failed to open file: %s/quests/%s.bin", s.server.erupeConfig.BinPath, pkt.Filename)) @@ -58,6 +62,28 @@ func handleMsgSysGetFile(s *Session, p mhfpacket.MHFPacket) { } } +func questSuffix(s *Session) string { + // Determine the letter to append for day / night + var timeSet string + if TimeGameAbsolute() > 2880 { + timeSet = "d" + } else { + timeSet = "n" + } + return fmt.Sprintf("%s%d", timeSet, s.server.Season()) +} + +func seasonConversion(s *Session, questFile string) string { + filename := fmt.Sprintf("%s%s", questFile[:5], questSuffix(s)) + + // Return original file if file doesn't exist + if _, err := os.Stat(filename); err == nil { + return filename + } else { + return questFile + } +} + func handleMsgMhfLoadFavoriteQuest(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfLoadFavoriteQuest) var data []byte