package game import ( "fmt" "strconv" "strings" "thehouseoficarus/internal/net" ) func (g *Game) executeSetPlayerFlag(sess *net.Session, args []string, rawInput string) { if !g.checkAdmin(sess) { sess.WriteLine("Unknown command.") return } if len(args) < 2 { sess.WriteLine("Usage: setplayerflag [value]") return } targetName := args[0] flagName := args[1] g.charsMu.Lock() targetSess, ok := g.loggedInChars[targetName] g.charsMu.Unlock() if !ok { for _, other := range g.Hub.AllSessions() { if other.Player != nil && strings.EqualFold(other.Player.Name, targetName) { targetSess = other break } } } if targetSess == nil || targetSess.Player == nil { sess.WriteLine("Player not found.") return } tp := targetSess.Player var value any = true if len(args) > 2 { valStr := args[2] switch valStr { case "true": value = true case "false": value = false default: if n, err := strconv.Atoi(valStr); err == nil { value = n } else { value = valStr } } } g.setPlayerFlag(tp, flagName, value) g.AccountStore.SaveCharacter(tp) sess.WriteLine(fmt.Sprintf("Player flag '%s' set to %v for %s.", flagName, value, tp.Name)) }