From 731adf2e0fbcac9a32179da077299ed6465af41e Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 17 Jun 2026 02:27:20 -0400 Subject: feat: movement overhauled. agility-enhancing items added. --- internal/game/tick.go | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) (limited to 'internal/game/tick.go') 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)) + } + } + } +} -- cgit v1.2.3