package game import ( "fmt" "strconv" "thehouseoficarus/internal/net" "thehouseoficarus/internal/player" ) func (g *Game) executeGod(sess *net.Session, args []string, rawInput string) { if !g.checkAdmin(sess) { sess.WriteLine("Unknown command.") return } p := sess.Player if p == nil { return } if p.GodMode { sess.WriteLine("You are already in god mode.") return } level := 99 if len(args) > 0 { n, err := strconv.Atoi(args[0]) if err != nil || n < 1 || n > 99 { sess.WriteLine("Usage: god [level] (1-99).") return } level = n } p.GodBackup = make(map[player.SkillName]int, len(p.Skills)) for k, v := range p.Skills { p.GodBackup[k] = v } lvlXP := player.XPForLevel(level) for _, s := range player.AllSkills { p.Skills[s] = lvlXP } p.GodMode = true p.HP = p.MaxHP() sess.WriteLine(fmt.Sprintf("God mode activated. All skills set to %d.", level)) } func (g *Game) executeUnGod(sess *net.Session, args []string, rawInput string) { if !g.checkAdmin(sess) { sess.WriteLine("Unknown command.") return } p := sess.Player if p == nil { return } if !p.GodMode { sess.WriteLine("You are not in god mode.") return } g.restoreGodPlayer(p) g.AccountStore.SaveCharacter(p) sess.WriteLine("God mode deactivated. Skills restored.") } func (g *Game) restoreGodPlayer(p *player.Player) { if p == nil || !p.GodMode { return } if p.GodBackup != nil { p.Skills = p.GodBackup } p.GodMode = false p.GodBackup = nil if p.HP > p.MaxHP() { p.HP = p.MaxHP() } }