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.
This commit is contained in:
2026-05-01 17:43:39 +02:00
parent ca9edf5f0c
commit 1b6eb9152c
35 changed files with 1747 additions and 4 deletions

View File

@@ -0,0 +1,74 @@
return {
-- The inclusion of the below line tells the language server that the first parameter of the cutscene is `WorldCutscene`.
-- This allows it to fetch us useful documentation that shows all of the available cutscene functions while writing our cutscenes!
---@param cutscene WorldCutscene
wall = function(cutscene, event)
-- Open textbox and wait for completion
cutscene:text("* The wall seems cracked.")
-- If we have Susie, play a cutscene
local susie = cutscene:getCharacter("susie")
if susie then
-- Detach camera and followers (since characters will be moved)
cutscene:detachCamera()
cutscene:detachFollowers()
-- All text from now is spoken by Susie
cutscene:setSpeaker(susie)
cutscene:text("* Hey,[wait:5] think I can break\nthis wall?", "smile")
-- Get the bottom-center of the broken wall
local x = event.x + event.width / 2
local y = event.y + event.height / 2
-- Move Susie up to the wall over 0.75 seconds
cutscene:walkTo(susie, x, y + 40, 0.75, "up")
-- Move other party members behind Susie
cutscene:walkTo(Game.world.player, x, y + 100, 0.75, "up")
if cutscene:getCharacter("ralsei") then
cutscene:walkTo("ralsei", x + 60, y + 100, 0.75, "up")
end
if cutscene:getCharacter("noelle") then
cutscene:walkTo("noelle", x - 60, y + 100, 0.75, "up")
end
-- Wait 1.5 seconds
cutscene:wait(1.5)
-- Walk back,
cutscene:wait(cutscene:walkTo(susie, x, y + 60, 0.5, "up", true))
-- and run forward!
cutscene:wait(cutscene:walkTo(susie, x, y + 20, 0.2))
-- Slam!!
Assets.playSound("impact")
susie:shake(4)
susie:setSprite("shock_up")
-- Slide back a bit
cutscene:slideTo(susie, x, y + 40, 0.1)
cutscene:wait(1.5)
-- owie
susie:setAnimation({ "away_scratch", 0.25, true })
susie:shake(4)
Assets.playSound("wing")
cutscene:wait(1)
cutscene:text("* Guess not.", "nervous")
-- Reset Susie's sprite
susie:resetSprite()
-- Reattach the camera
cutscene:attachCamera()
-- Align the follower positions behind Kris's current position
cutscene:alignFollowers()
-- And reattach them, making them return to their target positions
cutscene:attachFollowers()
Game:setFlag("wall_hit", true)
end
end
}

View File

@@ -0,0 +1,550 @@
return {
version = "1.5",
luaversion = "5.1",
tiledversion = "1.8.4",
orientation = "orthogonal",
renderorder = "right-down",
width = 20,
height = 24,
tilewidth = 40,
tileheight = 40,
nextlayerid = 6,
nextobjectid = 37,
properties = {
["name"] = "Test Map - Room 1"
},
tilesets = {
{
name = "castle",
firstgid = 1,
filename = "../tilesets/castle.tsx"
}
},
layers = {
{
type = "tilelayer",
x = 0,
y = 0,
width = 20,
height = 24,
id = 1,
name = "tiles",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
encoding = "lua",
data = {
0, 22, 13, 23, 23, 13, 23, 23, 23, 13, 23, 23, 13, 24, 0, 0, 0, 0, 0, 0,
0, 22, 23, 23, 23, 23, 23, 21, 23, 23, 23, 23, 23, 24, 0, 0, 0, 0, 0, 0,
0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 0, 0, 0, 0, 0, 0,
0, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 0, 0, 0, 0, 0, 0,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0, 0, 0, 0, 0, 0,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 7,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 15, 15, 15, 15, 15, 15,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0, 0, 0, 0, 0, 0,
0, 14, 15, 15, 11, 11, 11, 11, 11, 11, 11, 15, 15, 16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 14, 15, 11, 11, 11, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 22, 9, 24, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 0,
0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 0,
0, 6, 7, 7, 7, 7, 11, 11, 11, 7, 7, 7, 7, 7, 7, 7, 11, 11, 12, 0,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 15, 15, 15, 15, 16, 0,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0, 0, 0, 0, 0, 0,
0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0, 0, 0, 0, 0, 0,
0, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
},
{
type = "tilelayer",
x = 0,
y = 0,
width = 20,
height = 24,
id = 2,
name = "decal",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
encoding = "lua",
data = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 3,
name = "collision",
visible = true,
opacity = 0.5,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 1,
name = "",
type = "",
shape = "rectangle",
x = 40,
y = 80,
width = 520,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 2,
name = "",
type = "",
shape = "rectangle",
x = 560,
y = 120,
width = 40,
height = 80,
rotation = 0,
visible = true,
properties = {}
},
{
id = 3,
name = "",
type = "",
shape = "rectangle",
x = 600,
y = 160,
width = 200,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 4,
name = "",
type = "",
shape = "rectangle",
x = 560,
y = 280,
width = 40,
height = 80,
rotation = 0,
visible = true,
properties = {}
},
{
id = 5,
name = "",
type = "",
shape = "rectangle",
x = 600,
y = 280,
width = 200,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 6,
name = "",
type = "",
shape = "rectangle",
x = 440,
y = 360,
width = 120,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 7,
name = "",
type = "",
shape = "rectangle",
x = 360,
y = 400,
width = 80,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 8,
name = "",
type = "",
shape = "rectangle",
x = 360,
y = 680,
width = 280,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 9,
name = "",
type = "",
shape = "rectangle",
x = 560,
y = 800,
width = 40,
height = 120,
rotation = 0,
visible = true,
properties = {}
},
{
id = 10,
name = "",
type = "",
shape = "rectangle",
x = 40,
y = 920,
width = 520,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 11,
name = "",
type = "",
shape = "rectangle",
x = 0,
y = 720,
width = 40,
height = 200,
rotation = 0,
visible = true,
properties = {}
},
{
id = 12,
name = "",
type = "",
shape = "rectangle",
x = 40,
y = 680,
width = 200,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 14,
name = "",
type = "",
shape = "rectangle",
x = 160,
y = 400,
width = 80,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 15,
name = "",
type = "",
shape = "rectangle",
x = 40,
y = 360,
width = 120,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 16,
name = "",
type = "",
shape = "rectangle",
x = 0,
y = 120,
width = 40,
height = 240,
rotation = 0,
visible = true,
properties = {}
},
{
id = 17,
name = "",
type = "",
shape = "rectangle",
x = 200,
y = 440,
width = 40,
height = 240,
rotation = 0,
visible = true,
properties = {}
},
{
id = 18,
name = "",
type = "",
shape = "rectangle",
x = 360,
y = 440,
width = 40,
height = 240,
rotation = 0,
visible = true,
properties = {}
},
{
id = 23,
name = "",
type = "",
shape = "rectangle",
x = 600,
y = 640,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 24,
name = "",
type = "",
shape = "rectangle",
x = 640,
y = 600,
width = 120,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 25,
name = "",
type = "",
shape = "rectangle",
x = 760,
y = 640,
width = 40,
height = 160,
rotation = 0,
visible = true,
properties = {}
},
{
id = 26,
name = "",
type = "",
shape = "rectangle",
x = 600,
y = 800,
width = 160,
height = 40,
rotation = 0,
visible = true,
properties = {}
}
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 4,
name = "objects",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 19,
name = "npc",
type = "",
shape = "rectangle",
x = 480,
y = 840,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {
["actor"] = "starwalker",
["text1"] = "* These [color:yellow]stairs[color:reset] are [color:yellow]Pissing[color:reset] me\noff...",
["text2"] = "* I'm the original [color:yellow]Starwalker[color:reset]"
}
},
{
id = 27,
name = "savepoint",
type = "",
shape = "rectangle",
x = 80,
y = 210,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {
["text1"] = "* Silence echoes in the darkness\nof this familiar-yet-different\nscenery.",
["text2"] = "* The power of avoiding copying\nofficial music shines within\nyou."
}
},
{
id = 28,
name = "squeak",
type = "",
shape = "rectangle",
x = 680,
y = 600,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 29,
name = "transition",
type = "",
shape = "rectangle",
x = 800,
y = 200,
width = 40,
height = 80,
rotation = 0,
visible = true,
properties = {
["map"] = "room2",
["marker"] = "entry"
}
},
{
id = 33,
name = "interactable",
type = "",
shape = "rectangle",
x = 280,
y = 80,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {
["cutscene"] = "room1.wall",
["once"] = true
}
},
{
id = 35,
name = "npc",
type = "",
shape = "point",
x = 300,
y = 160,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {
["actor"] = "wall",
["flagcheck"] = "wall_hit",
["text1"] = "* I Am the Wall Guardian.[wait:5]\n* This Wall is Off Limits for you\nno-good wall slammers."
}
}
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 5,
name = "markers",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 20,
name = "spawn",
type = "",
shape = "point",
x = 300,
y = 250,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {}
},
{
id = 30,
name = "entry",
type = "",
shape = "point",
x = 760,
y = 240,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {}
}
}
}
}
}

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.10" tiledversion="1.10.2" orientation="orthogonal" renderorder="right-down" width="20" height="24" tilewidth="40" tileheight="40" infinite="0" nextlayerid="6" nextobjectid="37">
<editorsettings>
<export target="room1.lua" format="lua"/>
</editorsettings>
<properties>
<property name="name" value="Test Map - Room 1"/>
</properties>
<tileset firstgid="1" source="../tilesets/castle.tsx"/>
<layer id="1" name="tiles" width="20" height="24">
<data encoding="csv">
0,22,13,23,23,13,23,23,23,13,23,23,13,24,0,0,0,0,0,0,
0,22,23,23,23,23,23,21,23,23,23,23,23,24,0,0,0,0,0,0,
0,26,27,27,27,27,27,27,27,27,27,27,27,28,0,0,0,0,0,0,
0,6,7,7,7,7,7,7,7,7,7,7,7,8,0,0,0,0,0,0,
0,10,11,11,11,11,11,11,11,11,11,11,11,12,0,0,0,0,0,0,
0,10,11,11,11,11,11,11,11,11,11,11,11,11,7,7,7,7,7,7,
0,10,11,11,11,11,11,11,11,11,11,11,11,11,15,15,15,15,15,15,
0,10,11,11,11,11,11,11,11,11,11,11,11,12,0,0,0,0,0,0,
0,14,15,15,11,11,11,11,11,11,11,15,15,16,0,0,0,0,0,0,
0,0,0,0,14,15,11,11,11,15,16,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,18,19,20,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,22,23,24,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,22,9,24,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,10,11,12,0,
0,0,0,0,0,0,2,3,4,0,0,0,0,0,0,0,10,11,12,0,
0,6,7,7,7,7,11,11,11,7,7,7,7,7,7,7,11,11,12,0,
0,10,11,11,11,11,11,11,11,11,11,11,11,11,15,15,15,15,16,0,
0,10,11,11,11,11,11,11,11,11,11,11,11,12,0,0,0,0,0,0,
0,10,11,11,11,11,11,11,11,11,11,11,11,12,0,0,0,0,0,0,
0,14,15,15,15,15,15,15,15,15,15,15,15,16,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="2" name="decal" width="20" height="24">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,30,31,32,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,34,35,36,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,38,39,40,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<objectgroup color="#0000ff" id="3" name="collision" opacity="0.5">
<object id="1" x="40" y="80" width="520" height="40"/>
<object id="2" x="560" y="120" width="40" height="80"/>
<object id="3" x="600" y="160" width="200" height="40"/>
<object id="4" x="560" y="280" width="40" height="80"/>
<object id="5" x="600" y="280" width="200" height="40"/>
<object id="6" x="440" y="360" width="120" height="40"/>
<object id="7" x="360" y="400" width="80" height="40"/>
<object id="8" x="360" y="680" width="280" height="40"/>
<object id="9" x="560" y="800" width="40" height="120"/>
<object id="10" x="40" y="920" width="520" height="40"/>
<object id="11" x="0" y="720" width="40" height="200"/>
<object id="12" x="40" y="680" width="200" height="40"/>
<object id="14" x="160" y="400" width="80" height="40"/>
<object id="15" x="40" y="360" width="120" height="40"/>
<object id="16" x="0" y="120" width="40" height="240"/>
<object id="17" x="200" y="440" width="40" height="240"/>
<object id="18" x="360" y="440" width="40" height="240"/>
<object id="23" x="600" y="640" width="40" height="40"/>
<object id="24" x="640" y="600" width="120" height="40"/>
<object id="25" x="760" y="640" width="40" height="160"/>
<object id="26" x="600" y="800" width="160" height="40"/>
</objectgroup>
<objectgroup color="#ff00ff" id="4" name="objects">
<object id="19" name="npc" x="480" y="840" width="40" height="40">
<properties>
<property name="actor" value="starwalker"/>
<property name="text1">* These [color:yellow]stairs[color:reset] are [color:yellow]Pissing[color:reset] me
off...</property>
<property name="text2" value="* I'm the original [color:yellow]Starwalker[color:reset]"/>
</properties>
</object>
<object id="27" name="savepoint" x="80" y="210" width="40" height="40">
<properties>
<property name="text1">* Silence echoes in the darkness
of this familiar-yet-different
scenery.</property>
<property name="text2">* The power of avoiding copying
official music shines within
you.</property>
</properties>
</object>
<object id="28" name="squeak" x="680" y="600" width="40" height="40"/>
<object id="29" name="transition" x="800" y="200" width="40" height="80">
<properties>
<property name="map" value="room2"/>
<property name="marker" value="entry"/>
</properties>
</object>
<object id="33" name="interactable" x="280" y="80" width="40" height="40">
<properties>
<property name="cutscene" value="room1.wall"/>
<property name="once" type="bool" value="true"/>
</properties>
</object>
<object id="35" name="npc" x="300" y="160">
<properties>
<property name="actor" value="wall"/>
<property name="flagcheck" value="wall_hit"/>
<property name="text1">* I Am the Wall Guardian.[wait:5]
* This Wall is Off Limits for you
no-good wall slammers.</property>
</properties>
<point/>
</object>
</objectgroup>
<objectgroup color="#7f00ff" id="5" name="markers">
<object id="20" name="spawn" x="300" y="250">
<point/>
</object>
<object id="30" name="entry" x="760" y="240">
<point/>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,255 @@
return {
version = "1.5",
luaversion = "5.1",
tiledversion = "1.8.4",
orientation = "orthogonal",
renderorder = "right-down",
width = 20,
height = 12,
tilewidth = 40,
tileheight = 40,
nextlayerid = 6,
nextobjectid = 12,
properties = {
["name"] = "Test Map - Room 2"
},
tilesets = {
{
name = "castle",
firstgid = 1,
filename = "../tilesets/castle.tsx"
}
},
layers = {
{
type = "tilelayer",
x = 0,
y = 0,
width = 20,
height = 12,
id = 1,
name = "tiles",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
encoding = "lua",
data = {
0, 0, 0, 0, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 0,
0, 0, 0, 0, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 0,
0, 0, 0, 0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 0,
0, 0, 0, 0, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 0,
0, 0, 0, 0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0,
0, 0, 0, 0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0,
0, 0, 0, 0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0,
0, 0, 0, 0, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0,
7, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 0,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
},
{
type = "tilelayer",
x = 0,
y = 0,
width = 20,
height = 12,
id = 2,
name = "decal",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
encoding = "lua",
data = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 3,
name = "collision",
visible = true,
opacity = 0.5,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 1,
name = "",
type = "",
shape = "rectangle",
x = 120,
y = 120,
width = 40,
height = 200,
rotation = 0,
visible = true,
properties = {}
},
{
id = 2,
name = "",
type = "",
shape = "rectangle",
x = 0,
y = 400,
width = 760,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 3,
name = "",
type = "",
shape = "rectangle",
x = 760,
y = 120,
width = 40,
height = 280,
rotation = 0,
visible = true,
properties = {}
},
{
id = 4,
name = "",
type = "",
shape = "rectangle",
x = 160,
y = 80,
width = 600,
height = 40,
rotation = 0,
visible = true,
properties = {}
},
{
id = 7,
name = "",
type = "",
shape = "rectangle",
x = 0,
y = 280,
width = 120,
height = 40,
rotation = 0,
visible = true,
properties = {}
}
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 4,
name = "markers",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 5,
name = "spawn",
type = "",
shape = "point",
x = 360,
y = 240,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {}
},
{
id = 8,
name = "entry",
type = "",
shape = "point",
x = 40,
y = 360,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {}
}
}
},
{
type = "objectgroup",
draworder = "topdown",
id = 5,
name = "objects",
visible = true,
opacity = 1,
offsetx = 0,
offsety = 0,
parallaxx = 1,
parallaxy = 1,
properties = {},
objects = {
{
id = 6,
name = "enemy",
type = "",
shape = "rectangle",
x = 530,
y = 220,
width = 40,
height = 40,
rotation = 0,
visible = true,
properties = {
["actor"] = "dummy",
["encounter"] = "dummy"
}
},
{
id = 9,
name = "transition",
type = "",
shape = "rectangle",
x = -40,
y = 320,
width = 40,
height = 80,
rotation = 0,
visible = true,
properties = {
["map"] = "room1",
["marker"] = "entry"
}
}
}
}
}
}

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.10" tiledversion="1.10.2" orientation="orthogonal" renderorder="right-down" width="20" height="12" tilewidth="40" tileheight="40" infinite="0" nextlayerid="6" nextobjectid="12">
<editorsettings>
<export target="room2.lua" format="lua"/>
</editorsettings>
<properties>
<property name="name" value="Test Map - Room 2"/>
</properties>
<tileset firstgid="1" source="../tilesets/castle.tsx"/>
<layer id="1" name="tiles" width="20" height="12">
<data encoding="csv">
0,0,0,0,22,23,23,23,23,23,23,23,23,23,23,23,23,23,24,0,
0,0,0,0,22,23,23,23,23,23,23,23,23,23,23,23,23,23,24,0,
0,0,0,0,26,27,27,27,27,27,27,27,27,27,27,27,27,27,28,0,
0,0,0,0,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,0,
0,0,0,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,
0,0,0,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,
0,0,0,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,
0,0,0,0,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,
7,7,7,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,0,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="2" name="decal" width="20" height="12">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,30,31,32,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,34,35,36,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,38,39,40,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<objectgroup color="#0000ff" id="3" name="collision" opacity="0.5">
<object id="1" x="120" y="120" width="40" height="200"/>
<object id="2" x="0" y="400" width="760" height="40"/>
<object id="3" x="760" y="120" width="40" height="280"/>
<object id="4" x="160" y="80" width="600" height="40"/>
<object id="7" x="0" y="280" width="120" height="40"/>
</objectgroup>
<objectgroup color="#7f00ff" id="4" name="markers">
<object id="5" name="spawn" x="360" y="240">
<point/>
</object>
<object id="8" name="entry" x="40" y="360">
<point/>
</object>
</objectgroup>
<objectgroup color="#ff00ff" id="5" name="objects">
<object id="6" name="enemy" x="530" y="220" width="40" height="40">
<properties>
<property name="actor" value="dummy"/>
<property name="encounter" value="dummy"/>
</properties>
</object>
<object id="9" name="transition" x="-40" y="320" width="40" height="80">
<properties>
<property name="map" value="room1"/>
<property name="marker" value="entry"/>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -0,0 +1,20 @@
{
"maps": [
{
"fileName": "maps/room1.tmx",
"height": 960,
"width": 800,
"x": 0,
"y": 0
},
{
"fileName": "maps/room2.tmx",
"height": 480,
"width": 800,
"x": 880,
"y": -120
}
],
"onlyShowAdjacentMaps": false,
"type": "world"
}

View File

@@ -0,0 +1,31 @@
return {
version = "1.10",
luaversion = "5.1",
tiledversion = "1.10.2",
name = "castle",
class = "",
tilewidth = 40,
tileheight = 40,
spacing = 0,
margin = 0,
columns = 4,
image = "../../../assets/sprites/tilesets/castle.png",
imagewidth = 160,
imageheight = 400,
objectalignment = "unspecified",
tilerendersize = "tile",
fillmode = "stretch",
tileoffset = {
x = 0,
y = 0
},
grid = {
orientation = "orthogonal",
width = 40,
height = 40
},
properties = {},
wangsets = {},
tilecount = 40,
tiles = {}
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.10" tiledversion="1.10.2" name="castle" tilewidth="40" tileheight="40" tilecount="40" columns="4">
<editorsettings>
<export target="castle.lua" format="lua"/>
</editorsettings>
<image source="../../../assets/sprites/tilesets/castle.png" width="160" height="400"/>
</tileset>