chroma_solstice/rooms/world.sav
Your Name c348b81a93 Add named Marks and cross-room NPC pathfinding
- Mark: a debug non-collidable named destination (pixel-art target icon),
  editor tool + name modal, globally-unique names, programmatic Room:addMark
- NPCs walk to Marks: each RGB copy is a per-room resident (like the player),
  running its own A* on its own colour layer, transferring rooms as it crosses
  seams; rendered and collided by the room it currently stands in
- Player copies are obstacles in NPC pathfinding
- A* is footprint-aware for multi-cell NPCs
- Editor: click an NPC to open a filterable destination picker
- Ink: Dialogue.open binds walk_to; Jorge can be sent to "end"/"begin"
- Fix: a blocked NPC now replans each tick and resumes instead of freezing
- [npc] move diagnostics under DEBUG (start/goal/route or block reason)
- Docs (adding-npcs) + CLAUDE.md LÖVE 11.x/float-colour corrections
- Fix test harness loadSprite stub; movement tests green (28)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 15:56:53 -04:00

297 lines
No EOL
2.5 KiB
Text

{
width=18,
height=18,
lastRoom="room_16_17",
rooms={
{
name="3",
x=10,
y=10
},
{
name="5",
x=12,
y=10
},
{
name="village_1",
x=12,
y=9
},
{
name="village_4",
x=11,
y=8
},
{
name="yellow_1",
x=11,
y=7
},
{
name="yellow_3",
x=11,
y=6
},
{
name="yellow_2",
x=12,
y=7
},
{
name="yellow_4",
x=11,
y=5
},
{
name="yellow_5",
x=11,
y=4
},
{
name="yellow_6",
x=10,
y=5
},
{
name="default",
x=1,
y=1
},
{
name="old_yellow_3",
x=3,
y=1
},
{
name="test_patt",
x=5,
y=1
},
{
name="test_patt_update",
x=7,
y=1
},
{
name="white_asymmetrical",
x=9,
y=1
},
{
name="white_primary",
x=13,
y=1
},
{
name="yellow_arches",
x=15,
y=1
},
{
name="yellow_asymmetrical",
x=17,
y=1
},
{
name="yellow_cc_moustache",
x=1,
y=3
},
{
name="yellow_color_changing_levvel_1",
x=3,
y=3
},
{
name="yellow_smile",
x=7,
y=3
},
{
name="2",
x=9,
y=10
},
{
name="room_11_09",
x=11,
y=9
},
{
name="yellow_skull",
x=9,
y=3
},
{
name="jorge_room",
x=5,
y=5
},
{
name="4",
x=11,
y=10
},
{
name="room_01_05",
x=1,
y=5
},
{
name="ok",
x=2,
y=8
},
{
name="room_05_18",
x=5,
y=18
},
{
name="village_start",
x=9,
y=11
},
{
name="spiky_test",
x=4,
y=8
},
{
name="corner_trimino_test",
x=5,
y=7
},
{
name="tetromino_loop_t",
x=6,
y=7
},
{
name="corner_trimino_test_copy",
x=5,
y=6
},
{
name="spiky_test_2",
x=5,
y=8
},
{
name="spiky_test_3",
x=5,
y=9
},
{
name="jorge2",
x=3,
y=14
},
{
name="room_08_07",
x=8,
y=7
},
{
name="village_3",
x=13,
y=8
},
{
name="village_2",
x=12,
y=8
},
{
name="room_14_07",
x=14,
y=7
},
{
name="room_09_13",
x=9,
y=13
},
{
name="room_08_13",
x=8,
y=13
},
{
name="room_10_15",
x=9,
y=15
},
{
name="room_14_14",
x=14,
y=14
},
{
name="room_13_13",
x=13,
y=13
},
{
name="room_12_14",
x=12,
y=14
},
{
name="room_13_14",
x=13,
y=14
},
{
name="testing_sticky",
x=5,
y=13
},
{
name="testing_sticky_two",
x=6,
y=13
},
{
name="room_05_14",
x=5,
y=14
},
{
name="testing_sticky_3",
x=5,
y=16
},
{
name="testing_sticky_4",
x=6,
y=16
},
{
name="sticky_test_5",
x=7,
y=16
},
{
name="room_05_15",
x=5,
y=15
},
{
name="white_ok",
x=11,
y=1
},
{
name="room_16_17",
x=16,
y=17
},
{
name="testing_movement",
x=15,
y=17
}
}
}