aboutsummaryrefslogtreecommitdiff
path: root/internal/game/core_flags.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/core_flags.go')
-rw-r--r--internal/game/core_flags.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/internal/game/core_flags.go b/internal/game/core_flags.go
index 6595cc4..5e1c812 100644
--- a/internal/game/core_flags.go
+++ b/internal/game/core_flags.go
@@ -33,9 +33,23 @@ func getPlayerFlagString(p *player.Player, key string) string {
return s
}
-func setPlayerFlag(p *player.Player, key string, val any) {
+func (g *Game) setPlayerFlag(p *player.Player, key string, val any) {
p.EnsureFlags()
+ old, existed := p.Flags[key]
p.Flags[key] = val
+ if !existed || !valuesEqual(old, val) {
+ g.firePlayerFlagTrigger(p, key, val)
+ }
+}
+
+func (g *Game) firePlayerFlagTrigger(p *player.Player, flagName string, flagValue any) {
+ g.charsMu.Lock()
+ sess := g.loggedInChars[p.Name]
+ g.charsMu.Unlock()
+ if sess == nil {
+ return
+ }
+ g.TriggerStore.FirePlayerInRoom(p.Name, p.RoomID, flagName, flagValue)
}
func intFromFlag(flags map[string]any, key string) int {