diff options
Diffstat (limited to 'internal/game/triggers.go')
| -rw-r--r-- | internal/game/triggers.go | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/internal/game/triggers.go b/internal/game/triggers.go index 76ce9cd..3b6f609 100644 --- a/internal/game/triggers.go +++ b/internal/game/triggers.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "thehouseoficarus/internal/color" "thehouseoficarus/internal/engine" "thehouseoficarus/internal/net" "thehouseoficarus/internal/player" @@ -91,8 +92,14 @@ func (g *Game) processPlayerTriggerSequences() { } } + firstMsg := true for _, step := range jobs { - g.executeTriggerStep(sess, p, &step, seq.RoomID, seq.FlagValue) + s := step + if firstMsg && s.Message != "" { + s.Message = "\n" + s.Message + firstMsg = false + } + g.executeTriggerStep(sess, p, &s, seq.RoomID, seq.FlagValue) } if len(seq.Steps) == 0 { @@ -133,21 +140,29 @@ func (g *Game) processWorldTriggerSequences() { } func (g *Game) executeTriggerStep(sess *net.Session, p *player.Player, step *world.TriggerStep, roomID int, flagValue any) { + seqSpec := g.resolveColor(sess, "sequence") + broadcastSpec := g.resolveColor(sess, "broadcast") + playerMode := g.colorMode(sess) if step.Message != "" { msg := expandTemplate(step.Message, p.Name, flagValue) + msg = color.ExpandTagsDefault(playerMode, seqSpec, msg) sess.WriteLine(msg) } if step.Broadcast != "" && g.Hub != nil { msg := expandTemplate(step.Broadcast, p.Name, flagValue) for _, other := range g.Hub.PlayersInRoom(roomID) { - other.WriteLine(g.colorize(other, "broadcast", "\n"+msg)) + otherMode := g.colorMode(other) + rendered := color.ExpandTagsDefault(otherMode, broadcastSpec, msg) + other.WriteLine(g.colorize(other, "broadcast", "\n"+rendered)) } } if step.BroadcastGlobal != "" && g.Hub != nil { msg := expandTemplate(step.BroadcastGlobal, p.Name, flagValue) for _, other := range g.Hub.AllSessions() { if other.Player != nil { - other.WriteLine(g.colorize(other, "broadcast", "\n"+msg)) + otherMode := g.colorMode(other) + rendered := color.ExpandTagsDefault(otherMode, broadcastSpec, msg) + other.WriteLine(g.colorize(other, "broadcast", "\n"+rendered)) } } } @@ -197,15 +212,21 @@ func (g *Game) executeTriggerStep(sess *net.Session, p *player.Player, step *wor func (g *Game) executeWorldTriggerStep(step *world.TriggerStep, roomID int, flagValue any) { if step.Broadcast != "" && g.Hub != nil { msg := expandTemplate(step.Broadcast, "", flagValue) + broadcastSpec := g.resolveColor(nil, "broadcast") for _, other := range g.Hub.PlayersInRoom(roomID) { - other.WriteLine(g.colorize(other, "broadcast", "\n"+msg)) + otherMode := g.colorMode(other) + rendered := color.ExpandTagsDefault(otherMode, broadcastSpec, msg) + other.WriteLine(g.colorize(other, "broadcast", "\n"+rendered)) } } if step.BroadcastGlobal != "" && g.Hub != nil { msg := expandTemplate(step.BroadcastGlobal, "", flagValue) + broadcastSpec := g.resolveColor(nil, "broadcast") for _, other := range g.Hub.AllSessions() { if other.Player != nil { - other.WriteLine(g.colorize(other, "broadcast", "\n"+msg)) + otherMode := g.colorMode(other) + rendered := color.ExpandTagsDefault(otherMode, broadcastSpec, msg) + other.WriteLine(g.colorize(other, "broadcast", "\n"+rendered)) } } } |
