From 1409c832a6d69ffa8abdb33cd6352217e15fec21 Mon Sep 17 00:00:00 2001 From: Vaino Kauppila Date: Thu, 30 Jul 2026 13:00:27 +0300 Subject: Add Cut Test map; document ClaimsStructures is not a placement gate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New map entry in data/maps.lua: "Cut Test" — a narrow 2-wide X-braced tower with a reactor on top, for testing the mount-radius / collapse victory mechanic. - Comment in build_graph.cpp documenting that ClaimsStructures in Forts game data is a territory-claiming flag, not a placement-legality rule. - Update CLAUDE.md M5 status to done: devices on strut graph, fire damages devices. Co-Authored-By: Claude --- data/maps.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'data/maps.lua') diff --git a/data/maps.lua b/data/maps.lua index d49d9e6..3822efb 100644 --- a/data/maps.lua +++ b/data/maps.lua @@ -189,6 +189,50 @@ table.insert(Maps, { }, }) +-- 4. A narrow 2-wide X-braced tower with a reactor perched on top. Shoot the +-- struts and the reactor falls when its supports are cut — the mount-radius +-- mechanic in its simplest form. Both bays are fully cross-braced; cut both +-- diagonals in one bay to un-triangulate it and watch the tower hinge. +table.insert(Maps, { + name = "Cut Test", + description = "Narrow X-braced tower with a reactor on top. " + .. "Cut both diagonals in one bay to hinge it — " + .. "the reactor falls when its supports give way.", + ground_level = 1.0, + deposits = { {-26, 1}, {26, 1} }, + devices = { + { type = "reactor", x = -22, y = 2.0, team = 0 }, + { type = "reactor", x = -15, y = 5.0, team = 1 }, + }, + weapons = { + { type = "cannon", x = -22, y = 2.6 }, + { type = "laser", x = -19, y = 2.6 }, + }, + structures = { + { + name = "player deck", -- small platform, anchors the player reactor + beams = { + {-24,1,-24,2,"wood"}, {-20,1,-20,2,"wood"}, + {-24,1,-20,1,"wood"}, {-24,2,-20,2,"wood"}, + {-24,1,-20,2,"wood"}, + }, + }, + { + name = "test tower", -- the thing to shoot at + beams = { + -- verticals + {-16,1,-16,3,"wood"}, {-14,1,-14,3,"wood"}, + {-16,3,-16,5,"wood"}, {-14,3,-14,5,"wood"}, + -- floors + {-16,1,-14,1,"wood"}, {-16,3,-14,3,"wood"}, {-16,5,-14,5,"wood"}, + -- diagonals (cut both in one bay to un-triangulate the tower) + {-16,1,-14,3,"wood"}, {-14,1,-16,3,"wood"}, + {-16,3,-14,5,"wood"}, {-14,3,-16,5,"wood"}, + }, + }, + }, +}) + function IndexOfMap(name) for i, m in ipairs(Maps) do if m.name == name then return i end end return nil -- cgit v1.3