aboutsummaryrefslogtreecommitdiff
path: root/internal/game/tick.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-17 02:27:20 -0400
committerhistoria <[not public]>2026-06-17 02:27:20 -0400
commit731adf2e0fbcac9a32179da077299ed6465af41e (patch)
tree29d368917f258350d426f2680bec59feeb464eaf /internal/game/tick.go
parent389e307f205f9b7edf604fb9f86e1038ead736ef (diff)
downloadthehouseoficarus-731adf2e0fbcac9a32179da077299ed6465af41e.tar.gz
feat: movement overhauled. agility-enhancing items added.
Diffstat (limited to 'internal/game/tick.go')
-rw-r--r--internal/game/tick.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/internal/game/tick.go b/internal/game/tick.go
index ab82254..8c40c96 100644
--- a/internal/game/tick.go
+++ b/internal/game/tick.go
@@ -129,16 +129,18 @@ func (g *Game) WanderTick() {
}
if p.RoomID == m.fromRoom && p.OptionBool("mob_leave") {
if m.level > 0 {
- sess.WriteLine(g.colorize(sess, "broadcast", fmt.Sprintf("\n%s (level %d) leaves.", m.name, m.level)))
+ levelStr := g.levelColorize(sess, p.CombatLevel(), m.level, fmt.Sprintf("(level %d)", m.level))
+ sess.WriteLine(fmt.Sprintf("\n%s %s leaves.", g.colorize(sess, "mob_name", m.name), levelStr))
} else {
- sess.WriteLine(g.colorize(sess, "broadcast", fmt.Sprintf("\n%s moves away.", m.name)))
+ sess.WriteLine(fmt.Sprintf("\n%s moves away.", g.colorize(sess, "mob_name", m.name)))
}
}
if p.RoomID == m.toRoom && p.OptionBool("mob_enter") {
if m.level > 0 {
- sess.WriteLine(g.colorize(sess, "broadcast", fmt.Sprintf("\n%s (level %d) enters.", m.name, m.level)))
+ levelStr := g.levelColorize(sess, p.CombatLevel(), m.level, fmt.Sprintf("(level %d)", m.level))
+ sess.WriteLine(fmt.Sprintf("\n%s %s enters.", g.colorize(sess, "mob_name", m.name), levelStr))
} else {
- sess.WriteLine(g.colorize(sess, "broadcast", fmt.Sprintf("\n%s drifts in.", m.name)))
+ sess.WriteLine(fmt.Sprintf("\n%s drifts in.", g.colorize(sess, "mob_name", m.name)))
}
}
}
@@ -213,3 +215,31 @@ func (g *Game) ConsumeTick() {
}
}
}
+
+func (g *Game) VisualTick() {
+ if g.Hub == nil {
+ return
+ }
+ for _, sess := range g.Hub.AllSessions() {
+ p, ok := sess.Player.(*player.Player)
+ if !ok || p == nil || !p.OptionBool("visual_ticks") {
+ continue
+ }
+ text := p.OptionString("visual_tick_text")
+ count := p.OptionInt("visual_tick_count")
+ if count <= 0 {
+ sess.WriteLine(g.colorize(sess, "visual_tick", text))
+ } else {
+ p.VisualTickCurrent++
+ if p.VisualTickCurrent > count {
+ p.VisualTickCurrent = 1
+ }
+ msg := fmt.Sprintf("%s %d", text, p.VisualTickCurrent)
+ if p.VisualTickCurrent == 1 {
+ sess.WriteLine(g.colorize(sess, "visual_first_tick", msg))
+ } else {
+ sess.WriteLine(g.colorize(sess, "visual_tick", msg))
+ }
+ }
+ }
+}