aboutsummaryrefslogtreecommitdiff
path: root/internal/game/triggers.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/triggers.go')
-rw-r--r--internal/game/triggers.go31
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))
}
}
}