aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/game/cmd_symbol.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/internal/game/cmd_symbol.go b/internal/game/cmd_symbol.go
index ec8d68b..bb97010 100644
--- a/internal/game/cmd_symbol.go
+++ b/internal/game/cmd_symbol.go
@@ -41,20 +41,38 @@ func (g *Game) executeSymbol(sess *net.Session, args []string, rawInput string)
}
cleared := false
- if strings.EqualFold(char, "clear") || strings.EqualFold(char, "remove") {
+ if strings.EqualFold(char, "reset") || strings.EqualFold(char, "remove") {
delete(p.MapSymbols, p.RoomID)
if err := g.AccountStore.SaveCharacter(p); err != nil {
sess.WriteLine("Error saving: " + err.Error())
return
}
- sess.WriteLine("Custom symbol cleared for this room.")
+ sess.WriteLine("Custom symbol reset for this room.")
cleared = true
}
if !cleared {
r, size := utf8.DecodeRuneInString(char)
if size == 0 || size != len(char) || r == utf8.RuneError {
- sess.WriteLine("Usage: symbol <single character> [color...]")
+ // ponytail: color-only mode — args are a color spec, keep existing char
+ colorSpec := strings.Join(args, " ")
+ spec := color.Parse(colorSpec)
+ if spec.Empty() {
+ sess.WriteLine("Invalid color spec. Use a color number like 232 and/or bold/dim/underline.")
+ return
+ }
+ existing, ok := p.MapSymbols[p.RoomID]
+ if !ok {
+ existing = player.MapSymbolData{Char: "■"}
+ }
+ existing.Color = colorSpec
+ p.MapSymbols[p.RoomID] = existing
+ if err := g.AccountStore.SaveCharacter(p); err != nil {
+ sess.WriteLine("Error saving: " + err.Error())
+ return
+ }
+ colored := color.Render(g.colorMode(sess), spec, existing.Char)
+ sess.WriteLine(fmt.Sprintf("Map symbol color set to: %s (%s)", colored, colorSpec))
return
}