@maka/maka-cli 5.3.17 → 5.5.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/archetypes.d.ts +62 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +196 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +65 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +122 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +243 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js +82 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +101 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +219 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +397 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.d.ts +11 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +8 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +72 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +59 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +147 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +25 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +199 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +75 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +43 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js +64 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.d.ts +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js +11 -33
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +47 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +100 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js +54 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.js +6 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js +52 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js +40 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +59 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +31 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +71 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +35 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +32 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +86 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js +43 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +138 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +102 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +3 -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 +175 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +673 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +139 -21
- 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 +174 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +647 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +138 -9
- package/bundle/typescript/src/commands/game/sideQuest/game.js +757 -197
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js +101 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js +95 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +54 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +106 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +312 -50
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +278 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +661 -9
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +75 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +199 -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 +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +53 -18
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +73 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +208 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +319 -70
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +661 -227
- package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/exit-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/npc-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +95 -6
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +60 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +138 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +145 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +354 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +92 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +77 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +265 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +78 -7
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +59 -5
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +42 -0
- package/bundle/typescript/src/tools/ai/ai.class.js +117 -0
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -0
- 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 +3 -2
- package/bundle/typescript/src/tools/https/https.class.js +51 -2
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.interface.d.ts +10 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,mCAAmC,CAAC;IAEnE,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,4CAA4C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAc;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAE,4CAA4C;QAE5F,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,kBAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,qCAAqC,CAAC,CAAC;YAC3G,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1D,oDAAoD;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,qCAAqC,CAAC,CAAC;YACjH,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,qFAAqF;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,QAAQ,sBAAsB,CAAC,CAAC;YAC3F,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEvC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,8BAA8B,QAAQ,uBAAuB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAE3J,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,eAAe,QAAQ,GAAG,CAAC;IACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,mCAAmC,CAAC;IAEnE,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,4CAA4C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAc;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAE,4CAA4C;QAE5F,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,kBAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,qCAAqC,CAAC,CAAC;YAC3G,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1D,oDAAoD;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,qCAAqC,CAAC,CAAC;YACjH,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,qFAAqF;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,QAAQ,sBAAsB,CAAC,CAAC;YAC3F,OAAO,mBAAmB,QAAQ,EAAE,CAAC;QAEvC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,8BAA8B,QAAQ,uBAAuB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAE3J,qEAAqE;QACrE,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,eAAe,QAAQ,GAAG,CAAC;IACpC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Burning Edge -- Shadowrun's luck stat as a spendable resource. Each
|
|
4
|
+
* point spent arms a one-shot boost: your NEXT initiated strike (attack,
|
|
5
|
+
* subdue, or manabolt) rolls +Edge extra dice. The pool refreshes at the
|
|
6
|
+
* start of every job (see Game.continueToNextScene), so hoarding across
|
|
7
|
+
* a run buys nothing -- spend it when the moment matters.
|
|
8
|
+
*/
|
|
9
|
+
export declare class EdgeCommand extends Command implements ICommand {
|
|
10
|
+
protected static verb: string;
|
|
11
|
+
protected static description: string;
|
|
12
|
+
execute(_args?: string[]): Promise<string>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Burning Edge -- Shadowrun's luck stat as a spendable resource. Each
|
|
4
|
+
* point spent arms a one-shot boost: your NEXT initiated strike (attack,
|
|
5
|
+
* subdue, or manabolt) rolls +Edge extra dice. The pool refreshes at the
|
|
6
|
+
* start of every job (see Game.continueToNextScene), so hoarding across
|
|
7
|
+
* a run buys nothing -- spend it when the moment matters.
|
|
8
|
+
*/
|
|
9
|
+
export class EdgeCommand extends Command {
|
|
10
|
+
static verb = 'edge';
|
|
11
|
+
static description = 'Burn a point of Edge: your next attack, subdue, or manabolt rolls +Edge extra dice. Refreshes each job.';
|
|
12
|
+
async execute(_args = []) {
|
|
13
|
+
const actor = this.actor;
|
|
14
|
+
if (actor.isIncapacitated()) {
|
|
15
|
+
return `Luck has left the building, and so have you.`;
|
|
16
|
+
}
|
|
17
|
+
if (actor.edgeBoostArmed) {
|
|
18
|
+
return `Your edge is already burning -- land the strike. (${actor.edgeRemaining}/${actor.edge} left after this.)`;
|
|
19
|
+
}
|
|
20
|
+
if (actor.edgeRemaining <= 0) {
|
|
21
|
+
return `You're out of luck -- literally. Edge refreshes when the next job starts.`;
|
|
22
|
+
}
|
|
23
|
+
actor.edgeRemaining -= 1;
|
|
24
|
+
actor.edgeBoostArmed = true;
|
|
25
|
+
this.logger.write(`${actor.name} burned an edge point (${actor.edgeRemaining}/${actor.edge} left).`);
|
|
26
|
+
this.actor.performAction('pushes the limit', '');
|
|
27
|
+
this.scene.updateStatus();
|
|
28
|
+
return `You reach for the luck that got you this far. The next strike you throw rolls +${actor.edge} dice. (${actor.edgeRemaining}/${actor.edge} edge left this job.)`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=edge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,yGAAyG,CAAC;IAEzI,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO,8CAA8C,CAAC;QACxD,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,qDAAqD,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,oBAAoB,CAAC;QACpH,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,2EAA2E,CAAC;QACrF,CAAC;QAED,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;QACrG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO,kFAAkF,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,uBAAuB,CAAC;IACzK,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
import { NPC } from '../models/npc.js';
|
|
3
|
+
import { CALL_ICON, CALL_COLOR } from '../utilities/comm-style.js';
|
|
4
|
+
export class EndCallCommand extends Command {
|
|
5
|
+
static verb = 'end-call';
|
|
6
|
+
static description = 'Hang up your current commlink call.';
|
|
7
|
+
async execute() {
|
|
8
|
+
const partner = this.actor.activeCallPartner;
|
|
9
|
+
if (!partner) {
|
|
10
|
+
return `You're not on a call.`;
|
|
11
|
+
}
|
|
12
|
+
this.actor.activeCallPartner = undefined;
|
|
13
|
+
partner.activeCallPartner = undefined;
|
|
14
|
+
this.actor.performAction('ends call', partner.name);
|
|
15
|
+
this.logger.write(`${this.actor.name} ends the call with ${partner.name}.`);
|
|
16
|
+
// Only a player-typed command's own return value reaches the screen
|
|
17
|
+
// through ui.ts's normal response pipeline -- an NPC ending the call on
|
|
18
|
+
// its own initiative (via recursiveReflect) would otherwise leave the
|
|
19
|
+
// player watching a call that quietly went nowhere, with no way to
|
|
20
|
+
// tell it was actually over. Announce it directly in that case.
|
|
21
|
+
if (this.actor instanceof NPC && partner === this.scene.getPlayer()) {
|
|
22
|
+
this.logger.logWithColor(`${CALL_ICON} ${this.actor.name} ends the call.`, CALL_COLOR);
|
|
23
|
+
}
|
|
24
|
+
return `{${CALL_COLOR}-fg}${CALL_ICON} You end the call with ${partner.name}.{/${CALL_COLOR}-fg}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=end-call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"end-call.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/end-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,qCAAqC,CAAC;IAErE,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACzC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAE5E,oEAAoE;QACpE,wEAAwE;QACxE,sEAAsE;QACtE,mEAAmE;QACnE,gEAAgE;QAChE,IAAI,IAAI,CAAC,KAAK,YAAY,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,IAAI,UAAU,OAAO,SAAS,0BAA0B,OAAO,CAAC,IAAI,MAAM,UAAU,MAAM,CAAC;IACpG,CAAC"}
|
|
@@ -4,4 +4,8 @@ export declare class EquipCommand extends Command implements ICommand {
|
|
|
4
4
|
protected static description: string;
|
|
5
5
|
execute(args: string[]): Promise<string>;
|
|
6
6
|
private equip;
|
|
7
|
+
/** The no-slot explanation for kit devices, or null for wearable gear. */
|
|
8
|
+
private static kitDeviceNote;
|
|
9
|
+
/** Resolves "equip deck"/"cyberdeck"/"drone" to the carried kit device's note. */
|
|
10
|
+
private resolveKitDevice;
|
|
7
11
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from './command.js';
|
|
2
2
|
import { Category } from '../types/shared/item-enum.js';
|
|
3
|
+
import { Player } from '../models/player.js';
|
|
3
4
|
export class EquipCommand extends Command {
|
|
4
5
|
static verb = 'equip';
|
|
5
6
|
static description = 'Equip an item or everything in your inventory.';
|
|
@@ -20,15 +21,40 @@ export class EquipCommand extends Command {
|
|
|
20
21
|
}
|
|
21
22
|
const results = [];
|
|
22
23
|
for (const item of items) {
|
|
24
|
+
// Kit devices are never worn -- they work straight from the bag.
|
|
25
|
+
// Answer with HOW they work instead of a slot error (a real
|
|
26
|
+
// session's "equip all" told the player their new cyberdeck
|
|
27
|
+
// "could not be equipped", which read as broken).
|
|
28
|
+
const kitNote = EquipCommand.kitDeviceNote(item.category, item.name);
|
|
29
|
+
if (kitNote) {
|
|
30
|
+
results.push(kitNote);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
23
33
|
if (this.actor.canEquip(item)) {
|
|
24
34
|
const slotInfo = this.actor.determineEquipmentSlot(item.category);
|
|
25
35
|
if (slotInfo) {
|
|
26
36
|
const { group, slot } = slotInfo;
|
|
27
37
|
const groupRef = this.actor.equipment[group];
|
|
38
|
+
// An OCCUPIED slot gets named, not "unavailable or unknown" --
|
|
39
|
+
// an Adept's auto-equipped katana made the spare pistol's
|
|
40
|
+
// failure read like a bug instead of a full hand.
|
|
41
|
+
const occupant = groupRef?.[slot];
|
|
42
|
+
if (groupRef !== null && occupant) {
|
|
43
|
+
results.push(`Left ${item.name} in the bag -- ${occupant.name} already has that slot ("unequip ${occupant.name}" to swap).`);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
28
46
|
if (groupRef !== null && !groupRef[slot]) {
|
|
29
47
|
groupRef[slot] = item;
|
|
30
48
|
this.actor.inventory.removeItem(item.name);
|
|
31
|
-
|
|
49
|
+
// Weapons ride holstered until brandished -- same convention
|
|
50
|
+
// as the single-item path (see Player.equip / weaponDrawn).
|
|
51
|
+
if (Player.isWeaponSlot(group, slot)) {
|
|
52
|
+
this.actor.weaponDrawn = false;
|
|
53
|
+
results.push(`Holstered ${item.name} -- "brandish" to draw it`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
results.push(`Equipped ${item.name} in ${group}.${slot}`);
|
|
57
|
+
}
|
|
32
58
|
if (item.category === Category.Weapon) {
|
|
33
59
|
this.actor.performAction('equipped weapon', item.name);
|
|
34
60
|
}
|
|
@@ -45,6 +71,12 @@ export class EquipCommand extends Command {
|
|
|
45
71
|
}
|
|
46
72
|
// EQUIP ONE
|
|
47
73
|
const itemName = input;
|
|
74
|
+
// "equip deck" / "equip cyberdeck" / "equip drone": these are kit
|
|
75
|
+
// devices with no slot -- resolve by category keyword and explain how
|
|
76
|
+
// they actually work rather than failing the name lookup.
|
|
77
|
+
const kitKeyword = this.resolveKitDevice(itemName);
|
|
78
|
+
if (kitKeyword)
|
|
79
|
+
return kitKeyword;
|
|
48
80
|
let itemToEquip = this.actor.inventory.getItem(itemName);
|
|
49
81
|
// If not in inventory, try to grab from the room (single-item only)
|
|
50
82
|
if (!itemToEquip) {
|
|
@@ -60,10 +92,35 @@ export class EquipCommand extends Command {
|
|
|
60
92
|
return `You don't have "${itemName}" and it's not in the room either.`;
|
|
61
93
|
}
|
|
62
94
|
}
|
|
63
|
-
|
|
95
|
+
// Named the kit device outright ("equip Novatech Navigator")? Same
|
|
96
|
+
// helpful answer as the keyword path.
|
|
97
|
+
const kitNote = EquipCommand.kitDeviceNote(itemToEquip.category, itemToEquip.name);
|
|
98
|
+
if (kitNote)
|
|
99
|
+
return kitNote;
|
|
100
|
+
this.actor.performAction('equips', itemToEquip.name);
|
|
64
101
|
const equipResponse = this.actor.equip(itemToEquip);
|
|
65
102
|
this.logger.write(`EquipCommand: ${equipResponse}`);
|
|
66
103
|
return equipResponse;
|
|
67
104
|
}
|
|
105
|
+
/** The no-slot explanation for kit devices, or null for wearable gear. */
|
|
106
|
+
static kitDeviceNote(category, name) {
|
|
107
|
+
if (category === Category.Cyberdeck) {
|
|
108
|
+
return `The ${name} doesn't wear -- it works from your kit. "jack in" when you're ready to ride it, "pan" to see your network.`;
|
|
109
|
+
}
|
|
110
|
+
if (category === Category.Drone) {
|
|
111
|
+
return `The ${name} doesn't wear -- it launches from your kit. "drone" to send it scouting.`;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/** Resolves "equip deck"/"cyberdeck"/"drone" to the carried kit device's note. */
|
|
116
|
+
resolveKitDevice(input) {
|
|
117
|
+
const wants = (cat, keywords) => {
|
|
118
|
+
if (!keywords.includes(input))
|
|
119
|
+
return null;
|
|
120
|
+
const item = this.actor.inventory.getAllItems().find(i => i.category === cat);
|
|
121
|
+
return item ? EquipCommand.kitDeviceNote(item.category, item.name) : null;
|
|
122
|
+
};
|
|
123
|
+
return wants(Category.Cyberdeck, ['deck', 'cyberdeck']) ?? wants(Category.Drone, ['drone']);
|
|
124
|
+
}
|
|
68
125
|
}
|
|
69
126
|
//# sourceMappingURL=equip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equip.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/equip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"equip.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/equip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* On-demand equipment panel, replacing the always-on blessed sidebar box.
|
|
4
|
+
* Beyond the raw slot listing the old box showed, this also surfaces the
|
|
5
|
+
* combat numbers the gear actually derives to (weapon damage/dice, armor
|
|
6
|
+
* soak) -- the panel should answer "how ready for a fight am I", not just
|
|
7
|
+
* "what am I wearing". Registered as both "equipment" and "eq".
|
|
8
|
+
*/
|
|
9
|
+
export declare class EquipmentCommand extends Command implements ICommand {
|
|
10
|
+
protected static verb: string;
|
|
11
|
+
protected static description: string;
|
|
12
|
+
execute(_args?: string[]): Promise<string>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* On-demand equipment panel, replacing the always-on blessed sidebar box.
|
|
4
|
+
* Beyond the raw slot listing the old box showed, this also surfaces the
|
|
5
|
+
* combat numbers the gear actually derives to (weapon damage/dice, armor
|
|
6
|
+
* soak) -- the panel should answer "how ready for a fight am I", not just
|
|
7
|
+
* "what am I wearing". Registered as both "equipment" and "eq".
|
|
8
|
+
*/
|
|
9
|
+
export class EquipmentCommand extends Command {
|
|
10
|
+
static verb = 'equipment';
|
|
11
|
+
static description = "What you're wearing and wielding, with the combat numbers it adds up to.";
|
|
12
|
+
async execute(_args = []) {
|
|
13
|
+
const actor = this.actor;
|
|
14
|
+
const equipment = actor.equipment;
|
|
15
|
+
const lines = ['=== EQUIPMENT ==='];
|
|
16
|
+
// The derived numbers first -- they're what the player is usually
|
|
17
|
+
// actually asking.
|
|
18
|
+
const weapon = actor.getWeaponProfile();
|
|
19
|
+
const weaponItem = actor.getCarriedWeapon();
|
|
20
|
+
const ammoNote = weaponItem?.isFirearm() ? ` -- ${weaponItem.ammo}/${10} rounds${weaponItem.ammo === 0 ? ' (DRY -- "reload")' : ''}` : '';
|
|
21
|
+
// Holstered means the PROFILE says bare fists -- lead with the carried
|
|
22
|
+
// weapon and how to get it out, or the numbers lie about readiness.
|
|
23
|
+
if (actor.plane === 'meat' && weaponItem && !actor.weaponDrawn) {
|
|
24
|
+
lines.push(`Weapon: ${weaponItem.name} (HOLSTERED -- "brandish" to draw)${ammoNote}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
lines.push(`Weapon: ${weapon.name} -- damage ${weapon.damage}${weapon.poolBonus > 0 ? `, +${weapon.poolBonus} attack dice` : ''}${ammoNote}`);
|
|
28
|
+
}
|
|
29
|
+
const armor = actor.getArmorValue();
|
|
30
|
+
lines.push(`Armor: +${armor} soak dice${actor.sustainedArmor > 0 ? ` (+${actor.sustainedArmor} more from the sustained armor spell)` : ''}`);
|
|
31
|
+
lines.push('');
|
|
32
|
+
let anythingEquipped = false;
|
|
33
|
+
for (const [groupName, group] of Object.entries(equipment)) {
|
|
34
|
+
if (!group)
|
|
35
|
+
continue;
|
|
36
|
+
const equipped = Object.entries(group)
|
|
37
|
+
.filter(([, item]) => item !== null)
|
|
38
|
+
.map(([slot, item]) => ` ${groupName}.${slot}: ${item.name}`);
|
|
39
|
+
if (equipped.length > 0) {
|
|
40
|
+
anythingEquipped = true;
|
|
41
|
+
lines.push(...equipped);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (!anythingEquipped) {
|
|
45
|
+
lines.push(`Nothing equipped -- bare fists and street clothes. "equip <item>" to fix that.`);
|
|
46
|
+
}
|
|
47
|
+
return lines.join('\n');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=equipment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equipment.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/equipment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAGjD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IACjC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,WAAW,GAAG,0EAA0E,CAAC;IAE1G,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;QAE9C,kEAAkE;QAClE,mBAAmB;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,IAAI,EAAE,UAAU,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1I,uEAAuE;QACvE,oEAAoE;QACpE,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,qCAAqC,QAAQ,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAChJ,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,uCAAuC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9I,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAoC,CAAC;iBAClE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;iBACnC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,IAAI,IAAI,KAAK,IAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
|
|
@@ -49,9 +49,15 @@ export class GiveCommand extends Command {
|
|
|
49
49
|
this.actor.performAction('did not give', `item cannot be given`);
|
|
50
50
|
return `You cannot give that item away`;
|
|
51
51
|
}
|
|
52
|
-
this.scene.updateInventory(
|
|
52
|
+
this.scene.updateInventory(this.scene.getPlayer().inventory);
|
|
53
53
|
this.actor.performAction('give', `${item.name} to ${recipient.name}`);
|
|
54
54
|
this.logger.write(`${this.actor.name} gave item "${item.name}" to ${recipient.name}`);
|
|
55
|
+
// Possession-based, not actor-based: whether the player handed it over
|
|
56
|
+
// or an NPC grabbed it on their own initiative (via take.ts), the
|
|
57
|
+
// target NPC ending up with it is what completes the job. The
|
|
58
|
+
// completion banner announces itself directly to the screen, since the
|
|
59
|
+
// trigger here might not even be the player's own action.
|
|
60
|
+
this.scene.checkWinCondition(item.name, recipient.name);
|
|
55
61
|
return `You gave ${item.name} to ${recipient.name}.`;
|
|
56
62
|
}
|
|
57
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"give.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/give.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"give.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/give.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,18 @@ export declare class GoCommand extends Command implements ICommand {
|
|
|
3
3
|
protected static verb: string;
|
|
4
4
|
protected static description: string;
|
|
5
5
|
execute(args: string[]): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Walking out on a live, recent combat opponent who's still in the room
|
|
8
|
+
* hands them one unanswered strike at your back. Survive it and the
|
|
9
|
+
* fight is considered broken (both sides' opponent link clears -- no
|
|
10
|
+
* second toll without a fresh exchange); drop, and you never make the
|
|
11
|
+
* door. Applies to fleeing NPCs just the same. Returns the terminal
|
|
12
|
+
* result when movement is cancelled (the fleer went down), else null.
|
|
13
|
+
*/
|
|
14
|
+
private resolvePartingShot;
|
|
6
15
|
private go;
|
|
16
|
+
/** The direction that undoes a move -- feeds the HUD breadcrumb. */
|
|
17
|
+
private static opposite;
|
|
18
|
+
/** Wards block astral forms and nothing else. Returns the refusal, or null. */
|
|
19
|
+
private checkWard;
|
|
7
20
|
}
|
|
@@ -1,19 +1,124 @@
|
|
|
1
1
|
import { Door } from '../models/door.js';
|
|
2
|
+
import { CombatExchange } from '../utilities/combat-exchange.js';
|
|
3
|
+
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
2
4
|
import { Command } from './command.js';
|
|
3
5
|
export class GoCommand extends Command {
|
|
4
6
|
static verb = 'go';
|
|
5
|
-
static description = 'Move in the specified direction.';
|
|
7
|
+
static description = 'Move in the specified direction. Fleeing someone you just fought hands them one free parting shot.';
|
|
6
8
|
async execute(args) {
|
|
7
9
|
if (!args)
|
|
8
10
|
return '';
|
|
9
11
|
this.logger.write(`${this.actor.name} is attempting 'Go' command with direction: ${args?.join(' ')}`);
|
|
10
12
|
return this.go(args);
|
|
11
13
|
}
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Walking out on a live, recent combat opponent who's still in the room
|
|
16
|
+
* hands them one unanswered strike at your back. Survive it and the
|
|
17
|
+
* fight is considered broken (both sides' opponent link clears -- no
|
|
18
|
+
* second toll without a fresh exchange); drop, and you never make the
|
|
19
|
+
* door. Applies to fleeing NPCs just the same. Returns the terminal
|
|
20
|
+
* result when movement is cancelled (the fleer went down), else null.
|
|
21
|
+
*/
|
|
22
|
+
async resolvePartingShot() {
|
|
23
|
+
const fleer = this.actor;
|
|
24
|
+
const opponent = fleer.combatOpponent;
|
|
25
|
+
if (!opponent)
|
|
26
|
+
return null;
|
|
27
|
+
const RECENT_MS = 60_000;
|
|
28
|
+
const engaged = Date.now() - fleer.lastExchangeAt < RECENT_MS &&
|
|
29
|
+
!opponent.isIncapacitated() &&
|
|
30
|
+
opponent.currentLocation === fleer.currentLocation;
|
|
31
|
+
// Either way, walking is what breaks the engagement.
|
|
32
|
+
fleer.combatOpponent = undefined;
|
|
33
|
+
opponent.combatOpponent = undefined;
|
|
34
|
+
if (!engaged)
|
|
35
|
+
return null;
|
|
36
|
+
const exchange = new CombatExchange(this.scene, this.logger, opponent);
|
|
37
|
+
// ATHLETICS buys the clean break: Agility + athletics (unskilled
|
|
38
|
+
// Agility - 1), two hits and you're through the door before the
|
|
39
|
+
// muzzle comes up -- no shot at all. Anything less eats the strike as
|
|
40
|
+
// before. Applies to fleeing NPCs just the same.
|
|
41
|
+
const athletics = fleer.skillRating('athletics');
|
|
42
|
+
const sprint = rollPool(Math.max(1, fleer.agility + (athletics > 0 ? athletics : -1) + fleer.woundModifier - fleer.sustainingPenalty));
|
|
43
|
+
if (sprint.hits >= 2) {
|
|
44
|
+
const clean = [
|
|
45
|
+
`${fleer.name} breaks for the exit -- Athletics: ${formatRoll(sprint)}`,
|
|
46
|
+
` Too fast. ${opponent.name} never gets the shot off.`,
|
|
47
|
+
];
|
|
48
|
+
await exchange.announce(clean);
|
|
49
|
+
this.scene.addWorldEvent(`${fleer.name} broke clean away from ${opponent.name} in ${fleer.currentLocation.name}.`);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const lines = [
|
|
53
|
+
`${fleer.name} breaks for the exit -- Athletics: ${formatRoll(sprint)} -- not fast enough. ${opponent.name} takes a parting shot!`,
|
|
54
|
+
...exchange.resolveStrike(opponent, fleer),
|
|
55
|
+
];
|
|
56
|
+
await exchange.announce(lines);
|
|
57
|
+
this.scene.addWorldEvent(`${opponent.name} fired on ${fleer.name} as they fled ${fleer.currentLocation.name}.`);
|
|
58
|
+
this.scene.updateStatus();
|
|
59
|
+
if (fleer.isDown()) {
|
|
60
|
+
const death = await exchange.resolveDeath(fleer, opponent, {
|
|
61
|
+
fallLine: fleer === this.scene.getPlayer()
|
|
62
|
+
? `The shot catches you square in the back. The door was two steps away.`
|
|
63
|
+
: `${fleer.name} drops mid-stride, two steps from the door. Their gear scatters across ${fleer.currentLocation.name}.`,
|
|
64
|
+
});
|
|
65
|
+
return exchange.finishExchange([...lines, ...death]);
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
async go(args) {
|
|
13
70
|
if (args.length === 0) {
|
|
14
71
|
this.logger.write(`${this.actor.name}'s 'Go' command failed: No direction specified.`);
|
|
15
72
|
return 'Please specify a direction to go.';
|
|
16
73
|
}
|
|
74
|
+
// No walking out from between the narration beats of a combat exchange
|
|
75
|
+
// you're part of (see CombatExchange.beginExchange) -- found via a real
|
|
76
|
+
// session where the player slipped rooms mid-exchange. The pause
|
|
77
|
+
// BETWEEN exchanges is the window to run.
|
|
78
|
+
// Applies to every combatant, NPCs included -- an NPC's AI loop firing
|
|
79
|
+
// "go" while its own exchange still resolves is how a fleeing target
|
|
80
|
+
// once got shot mid-exchange by interleaved resolutions.
|
|
81
|
+
if (this.actor.inExchange || (this.actor === this.scene.getPlayer() && this.scene.isPlayerExchangeActive())) {
|
|
82
|
+
// The player is refused (they can retype in the lull). An NPC's flee
|
|
83
|
+
// attempt instead WAITS for the lull and then goes -- its AI decides
|
|
84
|
+
// to run exactly once, mid-exchange, and discarding that meant a
|
|
85
|
+
// wounded NPC trying to disengage just stood there forever while the
|
|
86
|
+
// player wondered why the fight had stalled (see
|
|
87
|
+
// CombatExchange.waitForLull). The parting-shot toll below still
|
|
88
|
+
// applies when they finally make their break.
|
|
89
|
+
if (this.actor === this.scene.getPlayer()) {
|
|
90
|
+
this.logger.write(`GoCommand: ${this.actor.name} tried to move mid-exchange -- blocked.`);
|
|
91
|
+
return `Lead is flying -- you can't disengage until the exchange resolves. (The lull after it is your chance to run.)`;
|
|
92
|
+
}
|
|
93
|
+
if (this.actor.waitingForLull) {
|
|
94
|
+
return `You're already waiting for an opening -- one move at a time.`;
|
|
95
|
+
}
|
|
96
|
+
this.actor.waitingForLull = true;
|
|
97
|
+
try {
|
|
98
|
+
const settled = await CombatExchange.waitForLull([this.actor]);
|
|
99
|
+
if (!settled) {
|
|
100
|
+
this.logger.write(`GoCommand: ${this.actor.name} tried to move mid-exchange -- blocked (wait timed out).`);
|
|
101
|
+
return `Lead is flying -- you can't disengage until the exchange resolves. (The lull after it is your chance to run.)`;
|
|
102
|
+
}
|
|
103
|
+
if (this.actor.isIncapacitated()) {
|
|
104
|
+
return `You're down. You aren't going anywhere.`;
|
|
105
|
+
}
|
|
106
|
+
this.logger.write(`GoCommand: ${this.actor.name} waited out an exchange and now makes their move.`);
|
|
107
|
+
return await this.go(args);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
this.actor.waitingForLull = false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Disengaging isn't free: walking out on a live, recent opponent who's
|
|
114
|
+
// still in the room hands them one unanswered PARTING SHOT at your
|
|
115
|
+
// back. Survive it and you're gone (the fight is considered broken --
|
|
116
|
+
// no second toll if you come back and flee again without a new
|
|
117
|
+
// exchange); drop, and you never make the door. Applies to fleeing
|
|
118
|
+
// NPCs just the same.
|
|
119
|
+
const partingShot = await this.resolvePartingShot();
|
|
120
|
+
if (partingShot)
|
|
121
|
+
return partingShot;
|
|
17
122
|
const direction = args[0].toLowerCase();
|
|
18
123
|
if (!this.isValidDirection(direction)) {
|
|
19
124
|
this.logger.write(`${this.actor.name} attempted to go ${direction} which is not valid.`);
|
|
@@ -31,7 +136,11 @@ export class GoCommand extends Command {
|
|
|
31
136
|
}
|
|
32
137
|
// If it's a Door, determine the target room
|
|
33
138
|
if (exit instanceof Door) {
|
|
34
|
-
|
|
139
|
+
// Locks are a MEAT problem: an astral form drifts through the
|
|
140
|
+
// physical door, a Matrix persona rides the grid past it. Wards are
|
|
141
|
+
// the astral's locks (checked below); nodes gate nothing for
|
|
142
|
+
// movement -- the grid overlays everything.
|
|
143
|
+
if (exit.checkIfLocked() && this.actor.plane === 'meat') {
|
|
35
144
|
this.actor.performAction('is prevented by locked door', currentRoom.name);
|
|
36
145
|
return `The door in the direction "${direction}" is locked.`;
|
|
37
146
|
}
|
|
@@ -41,7 +150,11 @@ export class GoCommand extends Command {
|
|
|
41
150
|
this.logger.error(`${this.actor.name} 'Go' command failed: Unable to determine the other side of the door.`);
|
|
42
151
|
return 'There seems to be an error with the door you\'re trying to go through.';
|
|
43
152
|
}
|
|
153
|
+
const wardBlock = this.checkWard(targetRoom);
|
|
154
|
+
if (wardBlock)
|
|
155
|
+
return wardBlock;
|
|
44
156
|
this.actor.performAction('exits', `${this.actor.currentLocation.name} to ${targetRoom.name}`);
|
|
157
|
+
this.actor.cameFrom = { room: this.actor.currentLocation.name, back: GoCommand.opposite(direction) };
|
|
45
158
|
this.actor.currentLocation = targetRoom; // Update player's location
|
|
46
159
|
this.actor.performAction('enters', targetRoom.name);
|
|
47
160
|
}
|
|
@@ -52,12 +165,42 @@ export class GoCommand extends Command {
|
|
|
52
165
|
this.logger.error(`${this.actor.name} 'Go' command failed: Room "${exit}" not found.`);
|
|
53
166
|
return 'There seems to be an error with the room you\'re trying to go to.';
|
|
54
167
|
}
|
|
168
|
+
const wardBlock = this.checkWard(nextRoom);
|
|
169
|
+
if (wardBlock)
|
|
170
|
+
return wardBlock;
|
|
171
|
+
this.actor.cameFrom = { room: this.actor.currentLocation.name, back: GoCommand.opposite(direction) };
|
|
55
172
|
this.actor.currentLocation = nextRoom;
|
|
56
173
|
this.actor.performAction('enters', nextRoom.name);
|
|
57
174
|
}
|
|
58
|
-
|
|
175
|
+
// Astral movement accrues the snap-back debt (see planes.ts).
|
|
176
|
+
if (this.actor.plane === 'astral') {
|
|
177
|
+
this.actor.astralTicks += 1;
|
|
178
|
+
}
|
|
179
|
+
// HUB sessions: walking into your hideout with the job WRAPPED is
|
|
180
|
+
// going home -- the door opens back onto the hub (see
|
|
181
|
+
// Game.returnToHub). This replaced the retired "continue" command:
|
|
182
|
+
// finishing a run ends in fiction, not in a system verb.
|
|
183
|
+
if (this.game?.hasHub && !this.scene.isHub && this.scene.isCompleted()
|
|
184
|
+
&& this.actor === this.scene.getPlayer()
|
|
185
|
+
&& this.actor.currentLocation === this.game.homeRoom) {
|
|
186
|
+
return await this.game.continueToNextScene();
|
|
187
|
+
}
|
|
188
|
+
this.logger.write(`${this.actor.name} moved to room: ${this.actor.currentLocation.name || 'Unnamed room'} (${this.actor.plane}).`);
|
|
59
189
|
// Use the LookCommand to get the description of the new room
|
|
60
190
|
return this.actor.currentLocation.description;
|
|
61
191
|
}
|
|
192
|
+
/** The direction that undoes a move -- feeds the HUD breadcrumb. */
|
|
193
|
+
static opposite(direction) {
|
|
194
|
+
const map = { north: 'south', south: 'north', east: 'west', west: 'east', up: 'down', down: 'up' };
|
|
195
|
+
return map[direction] ?? direction;
|
|
196
|
+
}
|
|
197
|
+
/** Wards block astral forms and nothing else. Returns the refusal, or null. */
|
|
198
|
+
checkWard(target) {
|
|
199
|
+
if (this.actor.plane === 'astral' && target.warded) {
|
|
200
|
+
this.actor.performAction('is repelled by a ward', target.name);
|
|
201
|
+
return `A ward seals ${target.name} -- the barrier flares at your touch and holds. No astral form passes without tearing it down.`;
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
62
205
|
}
|
|
63
206
|
//# sourceMappingURL=go.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD,MAAM,OAAO,SAAU,SAAQ,OAAO;IAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/go.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BypassCommand } from './bypass-command.js';
|
|
2
|
+
import { PuzzleBypassType } from '../types/seed/puzzle-seed.js';
|
|
3
|
+
export declare class HackCommand extends BypassCommand {
|
|
4
|
+
protected static verb: string;
|
|
5
|
+
protected static description: string;
|
|
6
|
+
protected bypassType: PuzzleBypassType;
|
|
7
|
+
protected noPuzzleMessage: string;
|
|
8
|
+
execute(args?: string[]): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* The PAN duel: opposed roll, attacker's Logic + deck quality (a
|
|
11
|
+
* technomancer uses half resonance instead of a deck) vs the target's
|
|
12
|
+
* Logic + master-device firewall -- slaving, simplified -- with +2 to
|
|
13
|
+
* the defense while running silent (a hidden PAN must be FOUND).
|
|
14
|
+
*
|
|
15
|
+
* Effects, in priority order on a LOUD target: jam the equipped smart
|
|
16
|
+
* firearm; else cut the AR overlay (initiative bonus gone, calls
|
|
17
|
+
* dropped). Against a SILENT target, a win only forces the PAN loud --
|
|
18
|
+
* the follow-up crack is its own attempt. "reboot" clears everything.
|
|
19
|
+
*
|
|
20
|
+
* Returns null when the args don't name a hackable actor here, so
|
|
21
|
+
* barrier names and directions fall through to the puzzle path.
|
|
22
|
+
*/
|
|
23
|
+
private tryPanHack;
|
|
24
|
+
protected determineOutcome(): Promise<boolean>;
|
|
25
|
+
}
|