From 5e2503e0b8e7fb1a83249a932ffb631276d6840d Mon Sep 17 00:00:00 2001 From: 2767mr <2767mr@gmx.at> Date: Tue, 20 Oct 2026 23:00:05 +0200 Subject: [PATCH 1/4] Add support for FerroSpot --- webapp/src/assets/entities.json | 99 +++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/webapp/src/assets/entities.json b/webapp/src/assets/entities.json index a862d959..21ab0f32 100644 --- a/webapp/src/assets/entities.json +++ b/webapp/src/assets/entities.json @@ -2231,6 +2231,105 @@ ] } }, + "FerroSpot": { + "spawnable": true, + "attributes": { + "source": { + "type": "Boolean", + "description": "If true: is source of Ferro" + }, + "variable": { + "type": "VarName", + "info": "Variable set to true when spot is reached by ferro element. When source: Only spawn if variable is set to true.", + "optional": true + }, + "activeCondition": { + "type": "VarCondition", + "info": "Condition for FerroSpot to be active. Source spot disabled: will temporary disable all spots but keep reach state. Other spots disabled: will set reached to false ", + "popup": true + } + }, + "size": { + "x": 32, + "y": 32, + "z": 24 + }, + "anims": { + "namedSheets": { + "floor": { + "src": "media/entity/objects/ferro.png", + "width": 32, + "height": 32, + "xCount": 3, + "offX": 0, + "offY": 280 + }, + "glow": { + "src": "media/entity/objects/ferro.png", + "width": 24, + "height": 24, + "xCount": 2, + "offX": 96, + "offY": 328 + } + }, + "repeat": true, + "SUB": [{ + "sheet": "floor", + "frames": [0], + "time": 0.2, + "tileOffset": 0, + "size": { + "x": 32, + "y": 32, + "z": 0 + }, + "wallY": 0, + "SUB": [{ + "name": "off" + }, { + "name": "on", + "tileOffset": 2 + }, { + "name": "respawn", + "tileOffset": 2 + }, { + "name": "standby", + "tileOffset": 1 + }] + }, { + "sheet": "glow", + "frames": [0], + "time": 0.2, + "tileOffset": 0, + "renderMode": "lighter", + "SUB": [{ + "name": "on", + "tileOffset": 0, + "offset": { + "y": -6 + }, + "size": { + "x": 24, + "y": 0, + "z": 24 + } + }, { + "name": "on", + "tileOffset": 1, + "offset": { + "y": -16 + }, + "size": { + "x": 24, + "y": 8, + "z": 16 + }, + "wallY": 1 + }] + }] + } + }, "BounceBlock": { "spawnable": true, "attributes": { From aa672e015bbbbd87d2ec2b2f6a4a7147be25de00 Mon Sep 17 00:00:00 2001 From: 2767mr <2767mr@gmx.at> Date: Tue, 20 Oct 2026 23:11:32 +0200 Subject: [PATCH 2/4] Add support for FerroRespawner --- webapp/src/assets/entities.json | 110 ++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/webapp/src/assets/entities.json b/webapp/src/assets/entities.json index 21ab0f32..087972e1 100644 --- a/webapp/src/assets/entities.json +++ b/webapp/src/assets/entities.json @@ -2330,6 +2330,116 @@ }] } }, + "FerroRespawner": { + "spawnable": true, + "attributes": { + "source": { + "type": "Entity", + "info": "FerroSpot connected to line", + "optional": true + } + }, + "size": { + "x": 16, + "y": 16, + "z": 24 + }, + "anims": { + "namedSheets": { + "floor": { + "src": "media/entity/objects/ferro.png", + "width": 16, + "height": 16, + "xCount": 3, + "offX": 0, + "offY": 312 + }, + "pole": { + "src": "media/entity/objects/ferro.png", + "width": 16, + "height": 24, + "xCount": 6, + "offX": 0, + "offY": 328 + } + }, + "repeat": true, + "SUB": [{ + "sheet": "floor", + "frames": [0], + "time": 0.033, + "tileOffset": 0, + "size": { + "x": 16, + "y": 16, + "z": 0 + }, + "wallY": 0, + "SUB": [{ + "name": "off" + }, { + "name": "on", + "tileOffset": 2 + }, { + "name": "poleUp", + "tileOffset": 2 + }, { + "name": "poleDown", + "tileOffset": 2 + }, { + "name": "pole0", + "tileOffset": 1 + }, { + "name": "pole1", + "tileOffset": 1 + }, { + "name": "pole2", + "tileOffset": 1 + }, { + "name": "pole3", + "tileOffset": 2 + }, { + "name": "respawn", + "tileOffset": 1 + }] + }, { + "sheet": "pole", + "time": 0.033, + "tileOffset": 0, + "size": { + "x": 16, + "y": 0, + "z": 24 + }, + "repeat": false, + "offset": { + "y": -4 + }, + "SUB": [{ + "name": "poleUp", + "frames": [5, 4, 3, 2, 1] + }, { + "name": "poleDown", + "frames": [3, 4, 5] + }, { + "name": "pole0", + "frames": [0] + }, { + "name": "pole1", + "frames": [1] + }, { + "name": "pole2", + "frames": [2] + }, { + "name": "pole3", + "frames": [3] + }, { + "name": "respawn", + "frames": [0, 1, 2] + }] + }] + } + }, "BounceBlock": { "spawnable": true, "attributes": { From 78da3f67c2339e27454a20a745eebedb82bf133d Mon Sep 17 00:00:00 2001 From: 2767mr <2767mr@gmx.at> Date: Thu, 22 Oct 2026 18:09:49 +0200 Subject: [PATCH 3/4] Add support for FerroLine --- webapp/src/assets/entities.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/webapp/src/assets/entities.json b/webapp/src/assets/entities.json index 087972e1..9c848a59 100644 --- a/webapp/src/assets/entities.json +++ b/webapp/src/assets/entities.json @@ -2440,6 +2440,37 @@ }] } }, + "FerroLine": { + "spawnable": true, + "attributes": { + "spot": { + "type": "Entity", + "info": "FerroSpot connected to line", + "optional": true + } + }, + "scalableX": true, + "scalableY": true, + "scalableStep": 8, + "size": { + "x": 8, + "y": 8, + "z": 0 + }, + "anims": { + "repeat": true, + "sheet": { + "src": "media/entity/objects/ferro.png", + "width": 8, + "height": 8, + "xCount": 4, + "offX": 96, + "offY": 280 + }, + "frames": [0], + "size": {"x": 8, "y": 8, "z": 0} + } + }, "BounceBlock": { "spawnable": true, "attributes": { From 4d8cdc9a5ad37e68409f4cd92fbc0384180612d9 Mon Sep 17 00:00:00 2001 From: 2767mr <2767mr@gmx.at> Date: Thu, 22 Oct 2026 18:12:35 +0200 Subject: [PATCH 4/4] Add changelog entry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2c768e5..f3beca62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Added +- Added support for FerroSpot, FerroRespawner and FerroLine + ## [2.4.5] 2026-09-13 ### Fixed - The map editor now preserves the entity order better than before.