@maka/maka-cli 5.49.0 → 5.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +20 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +9 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +27 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +43 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +6 -24
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/loot.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js +93 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +23 -31
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +32 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +313 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.d.ts +25 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +57 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +20 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +9 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +13 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +66 -9
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +37 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +66 -19
- package/bundle/typescript/src/commands/game/sideQuest/game.js +264 -91
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless.js +17 -2
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +84 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +24 -6
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +85 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +182 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +17 -7
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +17 -13
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +87 -8
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.d.ts +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js +69 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +186 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +742 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +536 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +273 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +890 -24
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +18 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.js +39 -7
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.d.ts +1 -0
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.class.d.ts +19 -0
- package/bundle/typescript/src/tools/https/https.class.js +36 -0
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-view.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/room-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAEL,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,GACnD,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B;;;;;4BAK4B;AAC5B,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,qEAAqE;AACrE,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;wCAGwC;AACxC,MAAM,iBAAiB,GAA2B;IAChD,CAAC,YAAY,CAAC,EAAE,GAAG;IACnB,CAAC,UAAU,CAAC,EAAE,GAAG;CAClB,CAAC;AAEF;;;;;kDAKkD;AAClD,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,SAAS,GAAuC;IACpD,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG;CAC7F,CAAC;AAEF,SAAS,SAAS,CAAC,GAAc;IAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,IAAkB;IACvC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACjE,CAAC;AAiBD,SAAS,eAAe,CAAC,IAAe,EAAE,IAAU,EAAE,MAAc;IAClE,mEAAmE;IACnE,0DAA0D;IAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IACnD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,OAAO;YAAE,SAAS;QAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,+DAA+D;IAC/D,0DAA0D;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACjF,CAAC;AASD,SAAS,KAAK,CAAC,CAAS;IACtB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED;;;;8DAI8D;AAC9D,SAAS,IAAI,CAAC,CAAqB,EAAE,SAAgB,CAAC;IACpD,IAAI,CAAC,CAAC;QAAE,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,MAAc,EAAE,aAAsC;IACnF,oEAAoE;IACpE,iEAAiE;IACjE,IAAI,CAAC,CAAC,eAAe,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChE,mEAAmE;IACnE,mEAAmE;IACnE,IAAK,CAAyB,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACjG,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,WAAW;QAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC/E,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CACd,CAAY,EAAE,IAAiB,EAC/B,MAAc,EAAE,aAAsC;IAEtD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACvE,oEAAoE;QACpE,iEAAiE;QACjE,yBAAyB;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC;eAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC;eACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC;eACxC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,2DAA2D;IAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,oEAAoE;IACpE,mEAAmE;IACnE,8DAA8D;IAC9D,8DAA8D;IAC9D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAED;;;oDAGoD;AACpD,SAAS,YAAY,CAAC,IAAU,EAAE,IAAe;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,MAAM,KAAK,GAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,MAAc,EAAE,aAAsC;IACjG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACrC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;QAClE,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,oEAAoE;IACpE,0DAA0D;IAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,gEAAgE;QAChE,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QACpC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,KAAK,WAAW,OAAO,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,SAAS;QACzC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC;IACnJ,CAAC;IAED,oEAAoE;IACpE,+DAA+D;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAChF,CAAC;IACF,MAAM,GAAG,GAAG;QACV,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,UAAU,mBAAmB,CAAC,CAAC,CAAC,EAAE;QACzE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,aAAa,mBAAmB,CAAC,CAAC,CAAC,EAAE;QAC/E,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,aAAa,oBAAoB,CAAC,CAAC,CAAC,EAAE;QAC9E,qEAAqE;QACrE,8DAA8D;QAC9D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,YAAY,uBAAuB,CAAC,CAAC,CAAC,EAAE;QAClF,+DAA+D;QAC/D,6CAA6C;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,OAAO,CAAC,CAAC,CAAC,EAAE;KACnD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACtB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAChH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,UAAU,CAAC,KAA+B,EAAE,MAAc,EAAE,KAAa;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,oDAAoD;IACpD,MAAM,MAAM,GAAU,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO;QACL,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QACvB,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;;2CAI2C;AAC3C,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED;;yCAEyC;AACzC,MAAM,eAAe,GAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEtE;qDACqD;AACrD,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,eAAe,CAAC,IAA2B,EAAE,OAA2B,EAAE,KAAa;IAC9F,MAAM,KAAK,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,iEAAiE;IACjE,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAgB,CAAC;QAC/D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,CAAC;YAAE,MAAM,CAAC,sCAAsC;QAC3D,qEAAqE;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;YAChE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;qCAMqC;AACrC,SAAS,aAAa,CAAC,QAAkB,EAAE,SAAmB,EAAE,QAAiB;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS;YAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACvD,CAAC,CAAC,CAAC,CAAC;QACN,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,IAAU,EAAE,MAAc,EAAE,MAAc,EAAE,KAAa,EAAE,QAAiB;IACtG,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,OAAO,GAAiD;QAC5D,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;KACnC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,gEAAgE;QAChE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,iEAAiE;IACjE,8DAA8D;IAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,aAAa,CAClB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAChC,eAAe,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,EACpC,QAAQ,CACT,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAU,EAAE,MAAc,EAC1B,OAAsF,EAAE;IAExF,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACpD,qEAAqE;IACrE,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,aAAa,CAClB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAChC,6DAA6D;IAC7D,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EACxD,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Room, IRoomSpot } from '../models/room.js';
|
|
2
2
|
import type { Player } from '../models/player.js';
|
|
3
3
|
import { Direction } from '../types/shared/direction-enum.js';
|
|
4
|
+
import { GridCoord, ITerrainRegion } from './room-grid.js';
|
|
4
5
|
/**
|
|
5
6
|
* Intra-room locations ("at" spots -- player request: every room felt
|
|
6
7
|
* like everything stood at your elbow; walking into the bar had both
|
|
@@ -25,8 +26,6 @@ import { Direction } from '../types/shared/direction-enum.js';
|
|
|
25
26
|
* Every spot comparison in the game goes through these helpers -- no
|
|
26
27
|
* call site rolls its own.
|
|
27
28
|
*/
|
|
28
|
-
/** Movement distance between spots, scaled by the room's size. */
|
|
29
|
-
export declare const SIZE_COST: Record<'small' | 'medium' | 'large', number>;
|
|
30
29
|
export declare function spotsActive(room: Room | undefined): boolean;
|
|
31
30
|
/**
|
|
32
31
|
* The IMPLICIT spot every spotted room has: the open floor. "move away"
|
|
@@ -52,7 +51,166 @@ export declare function spotOf(actor: Player): string | undefined;
|
|
|
52
51
|
export declare function sameSpot(a: Player, b: Player): boolean;
|
|
53
52
|
/** Whether an actor can reach a positioned thing (item/puzzle/exit). */
|
|
54
53
|
export declare function canReach(actor: Player, targetSpot: string | undefined): boolean;
|
|
55
|
-
|
|
54
|
+
/**
|
|
55
|
+
* ROOM GRIDS (spatial wave 2026-08-25): the spot-name-level wrappers
|
|
56
|
+
* around utilities/room-grid.ts's coordinate primitives -- everything
|
|
57
|
+
* ABOVE this line still only ever touches spot NAMES; nothing but
|
|
58
|
+
* these three functions (and Room.ensureGrid itself) ever sees a
|
|
59
|
+
* GridCoord. All three return undefined/0 when the room has no grid
|
|
60
|
+
* (THE COMPAT RULE: a spotless room never synthesizes one) or the
|
|
61
|
+
* named spot doesn't exist in it.
|
|
62
|
+
*/
|
|
63
|
+
export declare function spotCell(room: Room, spotName: string): GridCoord | undefined;
|
|
64
|
+
/** Every cell physically filled by furniture -- the full footprint of
|
|
65
|
+
* each named place (a bar runs several cells), minus the open floor
|
|
66
|
+
* (bare ground) and minus any OPEN doorway (a threshold you stand in,
|
|
67
|
+
* see openThresholds). Nobody stands here and movement goes around. */
|
|
68
|
+
export declare function furnitureCells(room: Room): Set<string>;
|
|
69
|
+
/** The ONE cell a doorway is reached from: directly opposite the door,
|
|
70
|
+
* one step in from its wall (player ruling 2026-08-25 -- "a south door
|
|
71
|
+
* requires you can move through the cell one unit north of it"). This
|
|
72
|
+
* is what makes a doorway a chokepoint worth holding. Undefined for
|
|
73
|
+
* up/down exits, which have no wall to stand off, and for an approach
|
|
74
|
+
* that would fall outside the room. */
|
|
75
|
+
export declare function approachCellFor(room: Room, direction: Direction): GridCoord | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Who is standing in the way of this doorway -- in the threshold itself
|
|
78
|
+
* or in its single approach cell. A body in either one holds the door
|
|
79
|
+
* (the 2026-08-25 ruling): squeezing past is not on offer here the way
|
|
80
|
+
* it is in open floor, because there is no second route to a doorway.
|
|
81
|
+
*
|
|
82
|
+
* `mover` never blocks themselves, and neither do their OWN companions:
|
|
83
|
+
* a spirit that follows you at your heel gets seated beside you, which
|
|
84
|
+
* would routinely park it on your approach cell and wall you into the
|
|
85
|
+
* room you just walked into.
|
|
86
|
+
*/
|
|
87
|
+
/**
|
|
88
|
+
* A FIXTURE sitting in a doorway or on its single approach cell -- the
|
|
89
|
+
* non-living half of doorwayBlocker (playtest 2026-08-25: "I shouldn't
|
|
90
|
+
* be able to 'go' a direction if something is in the way of it").
|
|
91
|
+
* Synthesis reserves those cells so this should never fire on a
|
|
92
|
+
* generated room; it stays as the guard for hand-authored seeds, which
|
|
93
|
+
* can declare a spot anywhere they like.
|
|
94
|
+
*/
|
|
95
|
+
export declare function doorwayFurniture(room: Room, direction: Direction): string | undefined;
|
|
96
|
+
export declare function doorwayBlocker(room: Room, direction: Direction, mover: Player): Player | undefined;
|
|
97
|
+
export declare function seatingIn(room: Room): Map<string, GridCoord>;
|
|
98
|
+
/**
|
|
99
|
+
* One tactical step (player request 2026-08-25: "move south 2"). Walks
|
|
100
|
+
* up to `count` cells in a cardinal direction from wherever the actor's
|
|
101
|
+
* body actually is, stopping at the first square it cannot enter -- a
|
|
102
|
+
* wall, furniture, uncleared terrain, or somebody standing there. No
|
|
103
|
+
* squeezing: this is a deliberate step, so it stops rather than
|
|
104
|
+
* shouldering through.
|
|
105
|
+
*
|
|
106
|
+
* Returns the cell reached and how many steps were actually taken, plus
|
|
107
|
+
* what stopped it short. Nothing is mutated -- commands/move.ts commits
|
|
108
|
+
* the result.
|
|
109
|
+
*/
|
|
110
|
+
export declare function stepFrom(room: Room, mover: Player, direction: Direction, count: number): {
|
|
111
|
+
cell?: GridCoord;
|
|
112
|
+
taken: number;
|
|
113
|
+
blockedBy?: 'wall' | 'furniture' | 'terrain' | 'someone';
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* The named place a stepped-to cell counts as being "at" -- whichever
|
|
117
|
+
* fixture the cell touches (its own footprint or any neighbour of it),
|
|
118
|
+
* else the open floor. This is what keeps `atSpot` authoritative for
|
|
119
|
+
* every interaction while the body stands on an arbitrary square:
|
|
120
|
+
* step up beside the bar and you are AT the bar, step away and you are
|
|
121
|
+
* on open ground.
|
|
122
|
+
*/
|
|
123
|
+
export declare function spotForCell(room: Room, cell: GridCoord): string;
|
|
124
|
+
/**
|
|
125
|
+
* A cell `mover` could stand in at or beside `target` -- the general
|
|
126
|
+
* form of seating, for walking to something that is not a named place.
|
|
127
|
+
* Used by "move to <body>": the fallen keep a cell but no spot, and you
|
|
128
|
+
* still need to be able to walk over and go through their pockets.
|
|
129
|
+
*/
|
|
130
|
+
export declare function standingRoomNear(room: Room, target: GridCoord, mover: Player): GridCoord | undefined;
|
|
131
|
+
/** Where this actor's BODY sits (see seatingIn) -- undefined when they
|
|
132
|
+
* are circulating, off-meat, or the room has no grid. Pass a seating
|
|
133
|
+
* map when resolving several actors, so it's computed once. */
|
|
134
|
+
export declare function actorCell(room: Room, actor: Player, seats?: Map<string, GridCoord>): GridCoord | undefined;
|
|
135
|
+
/** Everything you have to walk AROUND rather than through: other
|
|
136
|
+
* people's bodies and the furniture itself. findPath treats these as a
|
|
137
|
+
* soft block (see its pass order) so they steer a route without ever
|
|
138
|
+
* making a destination unreachable. `mover` is always excluded -- you
|
|
139
|
+
* never block yourself. */
|
|
140
|
+
export declare function occupiedCells(room: Room, mover?: Player): Set<string>;
|
|
141
|
+
/** The cell `mover` would end up in on arriving at `spotName` -- their
|
|
142
|
+
* seat around that fixture, with everyone else's seats already taken.
|
|
143
|
+
* This, not the fixture's anchor, is where movement actually paths to:
|
|
144
|
+
* the anchor is furniture now, and nobody stands inside the bar. */
|
|
145
|
+
export declare function seatFor(room: Room, spotName: string, mover: Player): GridCoord | undefined;
|
|
146
|
+
/** Straight-line meters between two actors' BODIES -- the distance
|
|
147
|
+
* combat should use, now that people stand beside their furniture
|
|
148
|
+
* rather than inside it. Falls back to their spots' own separation
|
|
149
|
+
* when either has no seat (circulating, or a gridless room). */
|
|
150
|
+
export declare function actorDistanceMeters(room: Room, a: Player, b: Player): number;
|
|
151
|
+
/** The walkable route between two spots, or undefined when terrain
|
|
152
|
+
* blocks every route (see move.ts / ensureAtSpot for the refusal).
|
|
153
|
+
* Purely geometric -- bodies and furniture are NOT considered, because
|
|
154
|
+
* the only thing that may hard-refuse a crossing is terrain; see
|
|
155
|
+
* routeForMove for the version movement actually walks. */
|
|
156
|
+
export declare function pathBetweenSpots(room: Room, from: string, to: string): GridCoord[] | undefined;
|
|
157
|
+
/**
|
|
158
|
+
* The route a body actually walks: seat to seat, steering around other
|
|
159
|
+
* people and around the furniture (player ruling 2026-08-25 -- "cannot
|
|
160
|
+
* move through, only around"). Reports whether it had to SQUEEZE past
|
|
161
|
+
* somebody, which move.ts narrates.
|
|
162
|
+
*
|
|
163
|
+
* Bodies and furniture are soft blocks by design (see findPath's pass
|
|
164
|
+
* order): a crowded room slows you down and makes you go the long way,
|
|
165
|
+
* but it can never strand you. Only terrain hard-refuses, and that
|
|
166
|
+
* check stays in pathBetweenSpots where it always was.
|
|
167
|
+
*/
|
|
168
|
+
export declare function routeForMove(room: Room, mover: Player, toSpot: string): {
|
|
169
|
+
path?: GridCoord[];
|
|
170
|
+
squeezed: boolean;
|
|
171
|
+
};
|
|
172
|
+
export declare function spotDistanceMeters(room: Room, from: string, to: string): number;
|
|
173
|
+
/** Cover between two spots (see room-grid.ts coverBetween) -- honors a
|
|
174
|
+
* cover-tagged DEFENDER spot first (the same check combat-exchange.ts
|
|
175
|
+
* makes), falling back to a terrain occluder on the line between. */
|
|
176
|
+
export declare function spotCoverBetween(room: Room, from: string, to: string): 'partial' | 'good' | undefined;
|
|
177
|
+
/** How many z-levels the route between two spots climbs via a risky
|
|
178
|
+
* 'climb' link (stairs/ladder never roll anything) -- undefined when
|
|
179
|
+
* the crossing never touches one. See move.ts's Athletics check. */
|
|
180
|
+
export declare function spotClimbSteps(room: Room, from: string, to: string): number | undefined;
|
|
181
|
+
/**
|
|
182
|
+
* Re-seats the OPEN FLOOR on the emptiest ground in the room, and
|
|
183
|
+
* returns whether it moved (playtest 2026-08-25: "'move away' is an
|
|
184
|
+
* actual location" -- it was pinned to one synthesized cell near the
|
|
185
|
+
* centroid, so peeling off always put you in the same square no matter
|
|
186
|
+
* who was standing where). "Away" should mean AWAY: the cell that
|
|
187
|
+
* maximises distance from the people you're stepping back from, then
|
|
188
|
+
* from the room's fixtures.
|
|
189
|
+
*
|
|
190
|
+
* Scored lexicographically -- people first, furniture as the
|
|
191
|
+
* tie-break -- over cells that exist, aren't sealed behind terrain,
|
|
192
|
+
* and that `mover` can actually reach. Anyone ALREADY on the open
|
|
193
|
+
* floor is excluded from the avoid-set: they're the ones this cell
|
|
194
|
+
* belongs to, and counting them would have it flee itself.
|
|
195
|
+
*
|
|
196
|
+
* Callers must invoke this BEFORE setting `atSpot = OPEN_FLOOR`; the
|
|
197
|
+
* grid is transient display/geometry state (never serialized), so a
|
|
198
|
+
* reload simply re-derives the synthesized default -- see the
|
|
199
|
+
* determinism contract in room-grid.ts.
|
|
200
|
+
*/
|
|
201
|
+
export declare function reseatOpenFloor(room: Room, mover: Player): boolean;
|
|
202
|
+
/** Which terrain region is sealing the route from `from` to `to`, and
|
|
203
|
+
* the Puzzle that clears it (for the bypass verb) -- undefined when
|
|
204
|
+
* the room has no grid, or (a synthesis edge case) a region blocks
|
|
205
|
+
* the path but its puzzle can no longer be found. */
|
|
206
|
+
export declare function blockingRegion(room: Room, from: string, to: string): {
|
|
207
|
+
region: ITerrainRegion;
|
|
208
|
+
puzzle: import('../models/puzzle.js').Puzzle;
|
|
209
|
+
} | undefined;
|
|
210
|
+
/** One refusal voice for a terrain-blocked crossing -- always names
|
|
211
|
+
* the obstacle AND the mechanism (the safe "solve" route, plus the
|
|
212
|
+
* puzzle's own bypass verb when it has one). */
|
|
213
|
+
export declare function terrainRefusal(region: ITerrainRegion, targetLabel: string, puzzle?: import('../models/puzzle.js').Puzzle): string;
|
|
56
214
|
/**
|
|
57
215
|
* The spot an exit is reachable from. Seed-declared (room.exitSpots)
|
|
58
216
|
* first; else a spot named like a doorway; else undefined = the exit is
|
|
@@ -63,6 +221,25 @@ export declare function exitSpot(room: Room, direction: Direction): string | und
|
|
|
63
221
|
* far side) stands: at this room's matching exit spot; else the room's
|
|
64
222
|
* doorway-named spot; else its first spot (a positioned room always
|
|
65
223
|
* positions the arriving player -- that's what makes gating bite). */
|
|
224
|
+
/**
|
|
225
|
+
* Where you physically land walking in through `arrivedFrom`: IN the
|
|
226
|
+
* doorway you just came through (player ruling 2026-08-25 -- "when I
|
|
227
|
+
* enter the night market from the east, I should arrive on the western
|
|
228
|
+
* entrance"). The threshold is a standable cell now, so arrival no
|
|
229
|
+
* longer has to be rounded to whichever named place happens to own that
|
|
230
|
+
* exit -- Night Market's seed puts three of its exits "at the stalls",
|
|
231
|
+
* which is right for LEAVING (that's the spot you must stand at to go)
|
|
232
|
+
* but wrong for arriving, and used to materialise you ten metres inside
|
|
233
|
+
* the room.
|
|
234
|
+
*
|
|
235
|
+
* Returns the exact cell plus the spot it counts as, or undefined when
|
|
236
|
+
* the room has no grid, the direction has no doorway, or someone is
|
|
237
|
+
* already standing in it -- all of which fall back to entrySpotFor.
|
|
238
|
+
*/
|
|
239
|
+
export declare function arrivalAt(room: Room, arrivedFrom: Direction | undefined): {
|
|
240
|
+
cell: GridCoord;
|
|
241
|
+
spot: string;
|
|
242
|
+
} | undefined;
|
|
66
243
|
export declare function entrySpotFor(room: Room, arrivedFrom: Direction | undefined): string | undefined;
|
|
67
244
|
/** One refusal voice for every spot gate -- always names the cure. */
|
|
68
245
|
export declare function spotRefusal(targetLabel: string, spotName: string): string;
|
|
@@ -72,6 +249,14 @@ export declare function spotRefusal(targetLabel: string, spotName: string): stri
|
|
|
72
249
|
* that you CAN'T do it from across the room, not that you must type two
|
|
73
250
|
* commands). Mid-exchange nobody strolls: refuse like go.ts does, and
|
|
74
251
|
* the Phase-2 crossing machinery will make it cost instead.
|
|
252
|
+
*
|
|
253
|
+
* ROOM GRIDS (spatial wave 2026-08-25): checks the route FIRST -- an
|
|
254
|
+
* uncleared barrier refuses the crossing even out of combat, always
|
|
255
|
+
* naming the obstacle and the mechanism (utilities/room-grid.ts /
|
|
256
|
+
* terrainRefusal). Rooms with no synthesized grid (still the common
|
|
257
|
+
* case -- most spotted rooms carry no terrain hints) never pay for the
|
|
258
|
+
* pathfind: spotDistanceMeters/pathBetweenSpots short-circuit to
|
|
259
|
+
* "reachable" the same instant canReach already would have.
|
|
75
260
|
*/
|
|
76
261
|
export declare function ensureAtSpot(actor: Player, targetSpot: string | undefined): {
|
|
77
262
|
line?: string;
|
|
@@ -90,6 +275,91 @@ export declare const SPOT_COLOR = "yellow";
|
|
|
90
275
|
*/
|
|
91
276
|
export declare function highlightSpots(room: Room, text: string): string;
|
|
92
277
|
export declare const ACTOR_COLOR = "green";
|
|
278
|
+
/** The RAW cover threshold guarding a spot (p.135-136: Normal 2 for
|
|
279
|
+
* partial cover, Hidden 4 for good) -- 0 when nothing tucks there. */
|
|
280
|
+
export declare function coverThreshold(room: Room, spotName: string | undefined): number;
|
|
281
|
+
/**
|
|
282
|
+
* PERCEPTION AT RANGE (SR5 p.135-136 Perception Test Modifiers,
|
|
283
|
+
* RAG-verified): "object/sound not in immediate vicinity" -2, "object/
|
|
284
|
+
* sound far away" -3. Canon names the bands but never puts meters on
|
|
285
|
+
* them, so the metre cuts are OURS -- pinned to the scale the game
|
|
286
|
+
* already speaks in, SR5 p.185's pistol brackets: short range 5 m is
|
|
287
|
+
* "immediate vicinity", medium 20 m is where "far away" begins.
|
|
288
|
+
*
|
|
289
|
+
* This became load-bearing with the 2026-08-25 room resize: a `huge`
|
|
290
|
+
* room is 32x22 m, so a stallholder clocking a runner the instant they
|
|
291
|
+
* step through the far door was the room being too small, not the NPC
|
|
292
|
+
* being sharp (playtest: "would Skitter even notice me?").
|
|
293
|
+
*/
|
|
294
|
+
export declare const IMMEDIATE_VICINITY_M = 5;
|
|
295
|
+
export declare const FAR_AWAY_M = 20;
|
|
296
|
+
export declare function perceptionRangeModifier(meters: number): number;
|
|
297
|
+
/**
|
|
298
|
+
* The Perception threshold to pick someone out: p.136's "Normal" 2 for
|
|
299
|
+
* a pedestrian, 4 for anyone in good cover -- and ZERO for a person
|
|
300
|
+
* standing in the open inside `FAR_AWAY_M`, where seeing them is not a
|
|
301
|
+
* test at all.
|
|
302
|
+
*
|
|
303
|
+
* That last clause is deliberate calibration, not laziness. Requiring a
|
|
304
|
+
* test past `IMMEDIATE_VICINITY_M` was tried first and was far too
|
|
305
|
+
* blind: it had the regulars in a 24x16 m bar failing to register
|
|
306
|
+
* someone walking in twelve metres away. Canon's -2/-3 are about
|
|
307
|
+
* resolving DETAIL at range, not about whether a human body registers
|
|
308
|
+
* at all, so the test starts where "far away" does. A 32x22 m market
|
|
309
|
+
* still hides you from the far stall; a bar does not.
|
|
310
|
+
*/
|
|
311
|
+
export declare function noticeThreshold(room: Room, target: Player, meters: number): number;
|
|
312
|
+
/**
|
|
313
|
+
* Whether `observer` would register `target` at all right now, WITHOUT
|
|
314
|
+
* rolling -- the passive read used by NPC reactions and by the room
|
|
315
|
+
* map. Their Perception pool stands in for an average roll (pool/4,
|
|
316
|
+
* SR5's own rule of thumb of one hit per four dice) so a sharp-eyed
|
|
317
|
+
* fixer notices what a distracted teenager misses, and the range
|
|
318
|
+
* modifier from p.135-136 applies.
|
|
319
|
+
*
|
|
320
|
+
* Deliberately NOT a dice roll: this fires on every movement event in
|
|
321
|
+
* the room, and a random result would have NPCs blinking in and out of
|
|
322
|
+
* awareness between one step and the next.
|
|
323
|
+
*/
|
|
324
|
+
export declare function wouldNotice(observer: Player, target: Player): boolean;
|
|
325
|
+
/**
|
|
326
|
+
* HOW FAR A VOICE CARRIES. Canon has no rule for this (RAG-checked:
|
|
327
|
+
* p.135-136 covers Perception modifiers, p.441 white-noise generators,
|
|
328
|
+
* nothing on speech range), so these bands are a documented RULING
|
|
329
|
+
* pinned to the same 5 m / 20 m scale as perception above.
|
|
330
|
+
*
|
|
331
|
+
* The point is that a big room should SOUND big: before the 2026-08-25
|
|
332
|
+
* resize every cross-spot remark got one flat "(calling across the
|
|
333
|
+
* room)" tag, which in a 32x22 m market read as a stallholder holding a
|
|
334
|
+
* casual conversation at a dead bellow (playtest: "he's basically
|
|
335
|
+
* screaming").
|
|
336
|
+
*/
|
|
337
|
+
export type VoiceBand = 'conversation' | 'raised' | 'shout' | 'yell';
|
|
338
|
+
export declare function voiceBandFor(meters: number): VoiceBand;
|
|
339
|
+
/** The tag appended to speech that has to travel -- empty at
|
|
340
|
+
* conversational range, where it would just be noise. */
|
|
341
|
+
export declare function voiceTag(band: VoiceBand): string;
|
|
342
|
+
/** Records that `viewer` has picked `target` out of their cover here --
|
|
343
|
+
* a spot they keep (Room.revealedBy) so every later read, the room
|
|
344
|
+
* map included, knows they've been seen. */
|
|
345
|
+
export declare function revealActor(room: Room, viewer: Player, target: Player): void;
|
|
346
|
+
/** Everyone `viewer` has already picked out of cover in this room. */
|
|
347
|
+
export declare function revealedTo(room: Room, viewer: Player): ReadonlySet<string>;
|
|
348
|
+
/** Runs a Perception result against every covered occupant, banking
|
|
349
|
+
* whoever it beats. Called by the verbs that constitute LOOKING (look,
|
|
350
|
+
* search) so the room map reflects what the player has actually made
|
|
351
|
+
* out. Returns the newly-revealed actors, for callers that narrate. */
|
|
352
|
+
export declare function revealWithPerception(room: Room, viewer: Player, hits: number): Player[];
|
|
353
|
+
/**
|
|
354
|
+
* Actors in `room` visible to `viewer` without a fresh roll: the viewer
|
|
355
|
+
* first, then anyone perceivable who is either standing in the open or
|
|
356
|
+
* has ALREADY been picked out of their cover (Room.revealedBy -- see
|
|
357
|
+
* revealWithPerception). Shared by highlightActors (prose) and
|
|
358
|
+
* utilities/room-view.ts (the room minimap). Coloring or drawing
|
|
359
|
+
* someone still unspotted would hand over a presence the Perception
|
|
360
|
+
* test is there to guard.
|
|
361
|
+
*/
|
|
362
|
+
export declare function visibleActorsIn(room: Room, viewer: Player): Player[];
|
|
93
363
|
/**
|
|
94
364
|
* Colors the names of PRESENT, OBVIOUS people in a room's prose (player
|
|
95
365
|
* request: places got the keyword treatment; actual NPCs deserve one
|