Files
Haapy 1b6eb9152c Add new maps and tileset for the game world
- Created room1.tmx and room1.lua for the first room in the game, including tiles, collision objects, and NPCs.
- Added room2.tmx and room2.lua for the second room, featuring tiles, collision objects, and an enemy.
- Introduced a world template to manage map transitions and layout.
- Implemented a new tileset (castle.tsx and castle.lua) for the castle theme, including tile properties and image references.
2026-05-01 17:43:39 +02:00

96 lines
3.2 KiB
Lua

local Dummy, super = Class(EnemyBattler)
function Dummy:init()
super.init(self)
-- Enemy name
self.name = "Dummy"
-- Sets the actor, which handles the enemy's sprites (see scripts/data/actors/dummy.lua)
self:setActor("dummy")
-- Enemy health
self.max_health = 450
self.health = 450
-- Enemy attack (determines bullet damage)
self.attack = 4
-- Enemy defense (usually 0)
self.defense = 0
-- Enemy reward
self.money = 100
-- Mercy given when sparing this enemy before its spareable (20% for basic enemies)
self.spare_points = 20
-- List of possible wave ids, randomly picked each turn
self.waves = {
"basic",
"aiming",
"movingarena"
}
-- Dialogue randomly displayed in the enemy's speech bubble
self.dialogue = {
"..."
}
-- Check text (automatically has "ENEMY NAME - " at the start)
self.check = "AT 4 DF 0\n* Cotton heart and button eye\n* Looks just like a fluffy guy."
-- Text randomly displayed at the bottom of the screen each turn
self.text = {
"* The dummy gives you a soft\nsmile.",
"* The power of fluffy boys is\nin the air.",
"* Smells like cardboard.",
}
-- Text displayed at the bottom of the screen when the enemy has low health
self.low_health_text = "* The dummy looks like it's\nabout to fall over."
-- Register act called "Smile"
self:registerAct("Smile")
-- Register party act with Ralsei called "Tell Story"
-- (second argument is description, usually empty)
self:registerAct("Tell Story", "", {"ralsei"})
end
function Dummy:onAct(battler, name)
if name == "Smile" then
-- Give the enemy 100% mercy
self:addMercy(100)
-- Change this enemy's dialogue for 1 turn
self.dialogue_override = "... ^^"
-- Act text (since it's a list, multiple textboxes)
return {
"* You smile.[wait:5]\n* The dummy smiles back.",
"* It seems the dummy just wanted\nto see you happy."
}
elseif name == "Tell Story" then
-- Loop through all enemies
for _, enemy in ipairs(Game.battle.enemies) do
-- Make the enemy tired
enemy:setTired(true)
end
return "* You and Ralsei told the dummy\na bedtime story.\n* The enemies became [color:blue]TIRED[color:reset]..."
elseif name == "Standard" then --X-Action
-- Give the enemy 50% mercy
self:addMercy(50)
if battler.chara.id == "ralsei" then
-- R-Action text
return "* Ralsei bowed politely.\n* The dummy spiritually bowed\nin return."
elseif battler.chara.id == "susie" then
-- S-Action: start a cutscene (see scripts/battle/cutscenes/dummy.lua)
Game.battle:startActCutscene("dummy", "susie_punch")
return
else
-- Text for any other character (like Noelle)
return "* "..battler.chara:getName().." straightened the\ndummy's hat."
end
end
-- If the act is none of the above, run the base onAct function
-- (this handles the Check act)
return super.onAct(self, battler, name)
end
return Dummy