add some gameplay options

This commit is contained in:
wish
2023-03-09 18:51:36 +11:00
parent ee4d2ab705
commit 1f349a342e
4 changed files with 22 additions and 11 deletions

View File

@@ -31,6 +31,10 @@
"OutputDir": "savedata" "OutputDir": "savedata"
} }
}, },
"GameplayOptions": {
"DisableLoginBoost": false,
"GuildMealDuration": 60
},
"Discord": { "Discord": {
"Enabled": false, "Enabled": false,
"BotToken": "", "BotToken": "",

View File

@@ -26,6 +26,7 @@ type Config struct {
DevMode bool DevMode bool
DevModeOptions DevModeOptions DevModeOptions DevModeOptions
GameplayOptions GameplayOptions
Discord Discord Discord Discord
Commands []Command Commands []Command
Courses []Course Courses []Course
@@ -60,6 +61,12 @@ type SaveDumpOptions struct {
OutputDir string OutputDir string
} }
// GameplayOptions has various gameplay modifiers
type GameplayOptions struct {
DisableLoginBoost bool // Disables the Login Boost system
GuildMealDuration int // The number of minutes a Guild Meal can be activated for after cooking
}
// Discord holds the discord integration config. // Discord holds the discord integration config.
type Discord struct { type Discord struct {
Enabled bool Enabled bool

View File

@@ -130,7 +130,7 @@ func handleMsgMhfGetKeepLoginBoostStatus(s *Session, p mhfpacket.MHFPacket) {
var loginBoosts []loginBoost var loginBoosts []loginBoost
rows, err := s.server.db.Queryx("SELECT week_req, expiration, reset FROM login_boost WHERE char_id=$1 ORDER BY week_req", s.charID) rows, err := s.server.db.Queryx("SELECT week_req, expiration, reset FROM login_boost WHERE char_id=$1 ORDER BY week_req", s.charID)
if err != nil { if err != nil || s.server.erupeConfig.GameplayOptions.DisableLoginBoost {
doAckBufSucceed(s, pkt.AckHandle, make([]byte, 35)) doAckBufSucceed(s, pkt.AckHandle, make([]byte, 35))
return return
} }

View File

@@ -1772,7 +1772,7 @@ func handleMsgMhfLoadGuildCooking(s *Session, p mhfpacket.MHFPacket) {
func handleMsgMhfRegistGuildCooking(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfRegistGuildCooking(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfRegistGuildCooking) pkt := p.(*mhfpacket.MsgMhfRegistGuildCooking)
guild, _ := GetGuildInfoByCharacterId(s, s.charID) guild, _ := GetGuildInfoByCharacterId(s, s.charID)
currentTime := TimeAdjusted() currentTime := TimeAdjusted().Add(time.Duration(s.server.erupeConfig.GameplayOptions.GuildMealDuration-60) * time.Minute)
if pkt.OverwriteID != 0 { if pkt.OverwriteID != 0 {
s.server.db.Exec("UPDATE guild_meals SET meal_id = $1, level = $2, created_at = $3 WHERE id = $4", pkt.MealID, pkt.Success, currentTime, pkt.OverwriteID) s.server.db.Exec("UPDATE guild_meals SET meal_id = $1, level = $2, created_at = $3 WHERE id = $4", pkt.MealID, pkt.Success, currentTime, pkt.OverwriteID)
} else { } else {