Here’s a tab that should show no red bars, but that shows the bug. Try placing the cursor at the first occurrence of level=1
, after the “1”, then cursor down repeatedly with magic keyboard. Cursor pops to bottom after being on “mattack10”. Cursor up from the bottom puts cursor back at the end of the “mwalk10” line.
-- Monster
-- RJ 202012??
local MT = nil
Monster = class()
function Monster:initMonsterTable()
local m
MT = {}
m = {name="Pink Slime", level = 1, health={1,2}, speed = {4,10}, strength=1,
attackVerbs={"smears", "squishes", "sloshes at"},
dead={"asset.slime_squashed"}, hit={"asset.slime_hit"},
moving={"asset.slime, asset.slime_walk, asset.slime_squashed"}}
table.insert(MT,m)
m = {name="Mimic", level=1, health={10,10}, speed={10,10}, strength=10, facing=-1, strategy=MimicMonsterStrategy,
attackVerbs={"bites", "chomps", "gnaws"},
dead={"mdead01","mdead02","mdead03","mdead04","mdead05","mdead06","mdead07","mdead08","mdead09","mdead10"},
hit={"mhurt01", "mhurt02", "mhurt03", "mhurt04", "mhurt05", "mhurt06", "mhurt07", "mhurt08", "mhurt09", "mhurt10"},
moving={"mwalk01", "mwalk02", "mwalk03", "mwalk04", "mwalk05", "mwalk06", "mwalk07", "mwalk08", "mwalk09", "mwalk10"},
attack={"mattack01", "mattack02", "mattack03", "mattack04", "mattack05", "mattack06", "mattack07", "mattack08", "mattack09", "mattack10"},
idle={"midle01", "midle02", "midle03", "midle04", "midle05", "midle06", "midle07", "midle08", "midle09", "midle10"},
hide={"mhide01", "mhide02", "mhide03", "mhide04", "mhide05", "mhide06", "mhide07", "mhide08", "mhide09", "mhide10"},
}
table.insert(MT,m)
m = {name="Death Fly", level = 1, health={2,3}, speed = {8,12}, strength=1,
attackVerbs={"bites", "poisons"},
dead={"asset.fly_dead"}, hit={"asset.fly_hit"},
moving={"asset.fly, asset.fly_fly"}}
table.insert(MT,m)
m = {name="Ghost", level=1, health={1,5}, speed={5,9},strength={1,1},
attackVerbs={"licks", "terrifies", "slams"},
dead={"asset.ghost_dead"}, hit={"asset.ghost_hit"},
moving={"asset.ghost, asset.ghost_normal"}}
table.insert(MT,m)
m = {name="Toothhead", level = 2, health={4,6}, speed = {8,15}, strength={1,2},
attackVerbs={"gnaws at", "bites", "sinks teeth into"},
dead={"asset.barnacle_dead"}, hit={"asset.barnacle_hit"},
moving={"asset.barnacle, asset.barnacle_bite"}}
table.insert(MT,m)
m = {name="Vampire Bat", level=2, health={3,8}, speed={5,10}, strength={8,10},
attackVerbs={"drains", "bites", "fangs"},
dead={"asset.bat_dead"}, hit={"asset.bat_hit"},
moving={"asset.bat, asset.bat_fly"}}
table.insert(MT,m)
m = {name="Murder Hornet", level = 2, health={2,3}, speed = {8,12}, strength={2,4},
attackVerbs={"stings", "poisons", "jabs"},
dead={"asset.bee_dead"}, hit={"asset.bee_hit"},
moving={"asset.bee, asset.bee_fly"}}
table.insert(MT,m)
m = {name="Serpent", level=3, health={8,14}, speed={8,15}, strength={8,12},
attackVerbs={"bites", "poisons", "strikes at"},
dead={"asset.snake_dead"}, hit={"asset.snake_hit"},
moving={"asset.snake, asset.snake_walk"}}
table.insert(MT,m)
m = {name="Yellow Widow", level=3, health={1,4}, speed = {2,5}, strength={9,15},
attackVerbs={"bites", "poisons", "tangles"},
dead={"asset.spider_dead"}, hit={"asset.spider_hit"},
moving={"asset.spider, asset.spider_walk1,asset.spider_walk2"}}
table.insert(MT,m)
m = {name="Poison Frog", level=3, health={4,8}, speed = {2,6}, strength={8,11},
attackVerbs={"leaps at", "smears poison on", "poisons", "bites"},
dead={"asset.frog_dead"}, hit={"asset.frog_hit"},
moving={"asset.frog, asset.frog_leap"}}
table.insert(MT,m)
m = {name="Ankle Biter", level=4, health={9,18}, speed={3,7}, strength={10,15},
attackVerbs={"grinds ankles of", "cuts ankle of", "saws at feet of"},
dead={"asset.spinnerHalf_dead"}, hit={"asset.spinnerHalf_hit"},
moving={"asset.spinnerHalf, asset.spinnerHalf_spin"}}
table.insert(MT,m)
m = {name="Cloud", level=99, health={20,20}, speed={20,20}, strength={20,20},
attackVerbs={"wafts"}, dead={"asset.whitePuff00"}, moving={"asset.whitePuff00, asset.whitePuff01, asset.whitePuff02, asset.whitePuff03"}}
table.insert(MT,m)
end
function Monster:__tostring()
return string.format("Monster (%d,%d)", self.tile:pos().x,self.tile:pos().y)
end
function Monster:basicMaintainRangeToPlayer(dungeon)
local tiles = dungeon:availableTilesSameDistanceFromPlayer(self.tile)
self:basicRandomMove(tiles)
end