Files
bryanthaboi dee935a4ea CLOSES #2430
2026-09-23 11:58:32 -04:00

43 lines
1.8 KiB
Lua

package.path = "./?.lua;./?/init.lua;" .. package.path
local T = require("tests.modkit")
local player = { cellX = 4, cellY = 4, px = 64, py = 64, facing = "down", stepFrames = 4 }
local session = { map = "a" }
package.loaded["src.core.game3.player"] = player
package.loaded["src.core.game3.field"] = { running = true, getSession = function() return session end }
local F = require("src.world.game3.Follower")
F.update({})
T.eq(F.current(), nil, "vanilla has no follower")
local enabled = true
F.setShouldSpawn(function() return enabled end)
F.update({})
local npc = F.current()
T.eq(npc.cellX, 4, "fresh spawn starts under player")
T.check(npc.passable, "companion never blocks movement")
player.moving, player.targetX, player.targetY = true, 5, 4
F.update({})
T.eq(npc.cellX, 4, "first step leaves follower at vacated cell")
player.cellX, player.px, player.targetX = 5, 80, 6
F.update({})
T.check(npc.moving, "next committed step starts follower")
T.eq(npc.px, 68, "follower interpolates at player speed")
for _ = 1, 3 do F.update({}) end
T.eq(npc.cellX, 5, "follower reaches previous player cell")
T.eq(npc.facing, "right", "follower faces travel direction")
npc.sprite = {}
T.eq(F.actor().renderer, npc.sprite, "draw actor uses mod renderer")
F.setVisible(nil, false)
T.eq(F.actor(), nil, "hidden follower omitted from rendering")
session.map = "b"
player.cellX, player.cellY, player.px, player.py = 1, 2, 16, 32
player.moving = false
F.update({})
T.check(F.current() ~= npc, "map changes discard old trail")
T.eq(F.current().cellX, 1, "warp spawns at new player location")
player.cellX, player.px = 20, 320
F.update({})
T.eq(F.current().cellX, 20, "same-map teleport resets stale trail immediately")
enabled = false
F.update({})
T.eq(F.current(), nil, "removing eligibility removes follower")
T.finish("game3_follower")