@maka/maka-cli 5.6.0 → 5.8.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 +2 -2
- package/bundle/typescript/src/commands/_index.d.ts +4 -0
- package/bundle/typescript/src/commands/_index.js +4 -0
- package/bundle/typescript/src/commands/_index.js.map +1 -1
- package/bundle/typescript/src/commands/debug.js +1 -7
- package/bundle/typescript/src/commands/debug.js.map +1 -1
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +33 -32
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/env/_index.d.ts +3 -0
- package/bundle/typescript/src/commands/env/_index.js +4 -0
- package/bundle/typescript/src/commands/env/_index.js.map +1 -0
- package/bundle/typescript/src/commands/env/env.command.d.ts +3 -0
- package/bundle/typescript/src/commands/env/env.command.js +22 -0
- package/bundle/typescript/src/commands/env/env.command.js.map +1 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.d.ts +1 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.js +46 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.js.map +1 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.d.ts +10 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.js +27 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.js.map +1 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.d.ts +1 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.js +59 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +81 -2
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +17 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +113 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +197 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +21 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +13 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +97 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +21 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +41 -27
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +6 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +54 -20
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +35 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +306 -55
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +137 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +101 -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 +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +67 -22
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +15 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +58 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +26 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +83 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +76 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +7 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +151 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +121 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +60 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +27 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +15 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +36 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +9 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +27 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js +112 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js +67 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +7 -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 +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +118 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.js +68 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.js.map +1 -0
- 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/scene-chunks.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +132 -5
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +10 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +196 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +828 -31
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +111 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +33 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +232 -10
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +111 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +432 -41
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +38 -14
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +48 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +44 -0
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js +155 -0
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +274 -5
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +82 -8
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +13 -6
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +28 -15
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +15 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +207 -34
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +56 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +144 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +7 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +8 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js +49 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +107 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +51 -15
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +27 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/run/run.command.js +1 -7
- package/bundle/typescript/src/commands/run/run.command.js.map +1 -1
- package/bundle/typescript/src/commands/ssl.js +10 -15
- package/bundle/typescript/src/commands/ssl.js.map +1 -1
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js +1 -6
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/generators/config.js +11 -10
- package/bundle/typescript/src/generators/config.js.map +1 -1
- package/bundle/typescript/src/templates/meteor/config/pm2.config.js +3 -3
- package/bundle/typescript/src/templates/meteor/project/gitignore +2 -1
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +3 -4
- package/bundle/typescript/src/tool.d.ts +2 -0
- package/bundle/typescript/src/tool.js +3 -0
- package/bundle/typescript/src/tool.js.map +1 -1
- package/bundle/typescript/src/tools/aws/aws.class.js +6 -4
- package/bundle/typescript/src/tools/aws/aws.class.js.map +1 -1
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.d.ts +24 -0
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js +66 -0
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js.map +1 -0
- package/bundle/typescript/src/tools/ssh/ssh.class.js +1 -1
- package/bundle/typescript/src/tools/ssh/ssh.class.js.map +1 -1
- package/bundle/typescript/src/tools/ssl/ssl.class.d.ts +8 -0
- package/bundle/typescript/src/tools/ssl/ssl.class.js +53 -0
- package/bundle/typescript/src/tools/ssl/ssl.class.js.map +1 -1
- package/package.json +2 -2
|
@@ -68,6 +68,10 @@ export var Category;
|
|
|
68
68
|
Category["License"] = "license";
|
|
69
69
|
Category["CurrencyContainer"] = "currency container";
|
|
70
70
|
Category["Credstick"] = "credstick";
|
|
71
|
+
// Food and drink (see commands/use.ts: hot food heals stun, a drink
|
|
72
|
+
// pours liquid courage into the next social roll)
|
|
73
|
+
Category["Food"] = "food";
|
|
74
|
+
Category["Drink"] = "drink";
|
|
71
75
|
// Misc and World
|
|
72
76
|
Category["Vice"] = "vice";
|
|
73
77
|
Category["Book"] = "book";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-enum.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/shared/item-enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,IAMX;AAND,WAAY,IAAI;IACd,qBAAa,CAAA;IACX,uBAAe,CAAA;IACf,yBAAiB,CAAA;IACjB,uBAAe,CAAA;IACf,gCAAwB,CAAA;AAC5B,CAAC,EANW,IAAI,KAAJ,IAAI,QAMf;AAED,MAAM,CAAN,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACf,+BAAqB,CAAA;IACrB,uBAAa,CAAA;IACb,iCAAuB,CAAA;IACvB,0CAAgC,CAAA;AACpC,CAAC,EANW,MAAM,KAAN,MAAM,QAMjB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"item-enum.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/shared/item-enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,IAMX;AAND,WAAY,IAAI;IACd,qBAAa,CAAA;IACX,uBAAe,CAAA;IACf,yBAAiB,CAAA;IACjB,uBAAe,CAAA;IACf,gCAAwB,CAAA;AAC5B,CAAC,EANW,IAAI,KAAJ,IAAI,QAMf;AAED,MAAM,CAAN,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACf,+BAAqB,CAAA;IACrB,uBAAa,CAAA;IACb,iCAAuB,CAAA;IACvB,0CAAgC,CAAA;AACpC,CAAC,EANW,MAAM,KAAN,MAAM,QAMjB;AAED,MAAM,CAAN,IAAY,QAyEX;AAzED,WAAY,QAAQ;IAClB,SAAS;IACT,6BAAiB,CAAA;IACjB,wCAA4B,CAAA;IAC5B,0CAA8B,CAAA;IAC9B,qCAAyB,CAAA;IACzB,mCAAuB,CAAA;IACvB,oCAAwB,CAAA;IACxB,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,kCAAsB,CAAA;IACtB,kCAAsB,CAAA;IACtB,2BAAe,CAAA;IACf,6BAAiB,CAAA;IAEjB,sCAAsC;IACtC,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,iCAAqB,CAAA;IAErB,yBAAyB;IACzB,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,iCAAqB,CAAA;IACrB,uCAA2B,CAAA;IAC3B,oCAAwB,CAAA;IAExB,QAAQ;IACR,2BAAe,CAAA;IACf,0CAA8B,CAAA;IAC9B,8CAAkC,CAAA;IAClC,8CAAkC,CAAA;IAClC,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IAErB,mBAAmB;IACnB,iCAAqB,CAAA;IACrB,4CAAgC,CAAA;IAChC,+BAAmB,CAAA;IACnB,oCAAwB,CAAA;IACxB,yBAAa,CAAA;IACb,qCAAyB,CAAA;IACzB,6BAAiB,CAAA;IACjB,oCAAwB,CAAA;IACxB,kDAAsC,CAAA;IACtC,uBAAW,CAAA;IACX,+BAAmB,CAAA;IAEnB,qBAAqB;IACrB,uBAAW,CAAA;IACX,gCAAoB,CAAA;IACpB,+BAAmB,CAAA;IACnB,oDAAwC,CAAA;IACxC,mCAAuB,CAAA;IAEvB,oEAAoE;IACpE,kDAAkD;IAClD,yBAAa,CAAA;IACb,2BAAe,CAAA;IAEf,iBAAiB;IACjB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,+BAAmB,CAAA;AACrB,CAAC,EAzEW,QAAQ,KAAR,QAAQ,QAyEnB"}
|
|
@@ -6,12 +6,48 @@ import { Logger } from './utilities/logger.js';
|
|
|
6
6
|
import { getArchetype, outfitArchetype } from './archetypes.js';
|
|
7
7
|
import { STANCE_CYCLE } from './models/player.js';
|
|
8
8
|
import { AutoFight } from './utilities/auto-fight.js';
|
|
9
|
+
import { TERMINAL_RESET_SEQUENCE } from './utilities/terminal-reset.js';
|
|
9
10
|
export async function main(playerName, sceneSeed, options) {
|
|
10
11
|
// Create a screen object
|
|
11
12
|
const screen = blessed.screen({
|
|
12
13
|
smartCSR: true,
|
|
13
14
|
title: 'Side Quest Adventure Game',
|
|
14
15
|
});
|
|
16
|
+
// TERMINAL HYGIENE: blessed arms xterm modes (mouse tracking, alt
|
|
17
|
+
// screen, hidden cursor) that outlive the process unless explicitly
|
|
18
|
+
// torn down -- a crash without screen.destroy() left a real session's
|
|
19
|
+
// shell flooded with raw mouse-coordinate bytes on every cursor move.
|
|
20
|
+
// One restore routine, hooked to EVERY way out: the 'exit' hook covers
|
|
21
|
+
// all process.exit() paths, and the fatal handlers write the stack to
|
|
22
|
+
// the session log FIRST (pre-hygiene, crashes died without a trace
|
|
23
|
+
// anywhere) before restoring the terminal and re-printing to stderr.
|
|
24
|
+
const restoreTerminal = () => {
|
|
25
|
+
try {
|
|
26
|
+
screen.destroy();
|
|
27
|
+
}
|
|
28
|
+
catch { /* screen already down */ }
|
|
29
|
+
// destroy() can throw PARTWAY through its own teardown (mid-render
|
|
30
|
+
// crash state) and leave modes armed -- follow it with the raw
|
|
31
|
+
// escapes unconditionally; switching off an off mode is a no-op.
|
|
32
|
+
try {
|
|
33
|
+
process.stdout.write(TERMINAL_RESET_SEQUENCE);
|
|
34
|
+
}
|
|
35
|
+
catch { /* stream gone */ }
|
|
36
|
+
};
|
|
37
|
+
process.on('exit', restoreTerminal);
|
|
38
|
+
const fatal = (label) => (err) => {
|
|
39
|
+
const detail = err instanceof Error ? err.stack ?? err.message : String(err);
|
|
40
|
+
try {
|
|
41
|
+
Logger.getInstance().error(`FATAL (${label}): ${detail}`);
|
|
42
|
+
}
|
|
43
|
+
catch { /* logger may be the casualty */ }
|
|
44
|
+
restoreTerminal();
|
|
45
|
+
console.error(`side-quest ${label}:\n${detail}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
};
|
|
48
|
+
process.on('uncaughtException', fatal('uncaughtException'));
|
|
49
|
+
process.on('unhandledRejection', fatal('unhandledRejection'));
|
|
50
|
+
process.on('SIGTERM', () => process.exit(0));
|
|
15
51
|
screen.key(['C-c'], () => {
|
|
16
52
|
process.exit(0);
|
|
17
53
|
});
|
|
@@ -39,6 +75,7 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
39
75
|
? `{yellow-fg}${options.generationNotice}{/yellow-fg}\n\n`
|
|
40
76
|
: '';
|
|
41
77
|
game.logBox.setContent(notice + ready); // getWelcomeMessage should return the initial game introduction or room description
|
|
78
|
+
gameLog.transcript(notice + ready); // the transcript opens the way the session did
|
|
42
79
|
game.updateEquipment(game.player.equipment);
|
|
43
80
|
game.updateInventory(game.player.inventory, capitalCase(game.scene.getCurrencyType()));
|
|
44
81
|
game.updateExits(game.player.currentLocation);
|
|
@@ -65,8 +102,10 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
65
102
|
game.autoFight.cancelPending();
|
|
66
103
|
// white for manual, not gray -- gray is ANSI bright-black, illegible
|
|
67
104
|
// on stock dark palettes (same fix as the HUD stance in game.ts).
|
|
105
|
+
// Mechanics ticker, not the narrative: the HUD already shows the
|
|
106
|
+
// standing stance; this is the change notice (readability pass).
|
|
68
107
|
const color = next === 'aggressive' ? 'red' : next === 'guarded' ? 'yellow' : 'white';
|
|
69
|
-
gameLog.
|
|
108
|
+
gameLog.meta(`⚔ Stance: ${next.toUpperCase()} -- ${AutoFight.describe(next)}.`, color);
|
|
70
109
|
game.updateStatus();
|
|
71
110
|
screen.render();
|
|
72
111
|
});
|
|
@@ -85,6 +124,24 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
85
124
|
// whatever the player had started typing NEXT during the wait.
|
|
86
125
|
game.inputBox.clearValue();
|
|
87
126
|
screen.render();
|
|
127
|
+
// The transcript reads like the session: the typed command
|
|
128
|
+
// first, the game's answer after (see Logger.transcript).
|
|
129
|
+
if (input.trim().length > 0)
|
|
130
|
+
gameLog.transcript(`> ${input}`);
|
|
131
|
+
// TURN BLOCKS (readability pass): echo the command into the
|
|
132
|
+
// visible log too, behind a blank line, so each command's
|
|
133
|
+
// output reads as its own block -- BEFORE handleInput, so a
|
|
134
|
+
// slow command (AI round trip, combat beats) shows what was
|
|
135
|
+
// asked while it works. Cyan: blessed has no dim tag and gray
|
|
136
|
+
// is banned; cyan is already this game's machine voice.
|
|
137
|
+
// pushLine, not Logger -- the transcript line above already
|
|
138
|
+
// recorded it. "clear" is exempt (echo-then-wipe is noise).
|
|
139
|
+
if (input.trim().length > 0 && input.trim().split(' ')[0] !== 'clear') {
|
|
140
|
+
game.logBox.pushLine('');
|
|
141
|
+
game.logBox.pushLine(`{cyan-fg}> ${input.trim()}{/cyan-fg}`);
|
|
142
|
+
game.followLog();
|
|
143
|
+
screen.render();
|
|
144
|
+
}
|
|
88
145
|
const response = await game.handleInput(input); // handleInput is the method that processes commands
|
|
89
146
|
if (['take', 'equip', 'unequip'].includes(input.split(' ')[0])) {
|
|
90
147
|
// Example usage: update the inventory with a new list of items
|
|
@@ -101,15 +158,21 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
101
158
|
game.updateStatus();
|
|
102
159
|
if (input.split(' ')[0] === 'clear') {
|
|
103
160
|
game.logBox.setContent('');
|
|
161
|
+
game.metaBox.setContent('');
|
|
104
162
|
}
|
|
105
|
-
|
|
163
|
+
if (response)
|
|
164
|
+
gameLog.transcript(response);
|
|
106
165
|
if (response === null) {
|
|
107
166
|
screen.render();
|
|
108
167
|
gameLog.write(`<<<<<<<<--------- Terminating game`);
|
|
109
168
|
process.exit(0); // Exit the game
|
|
110
169
|
}
|
|
111
|
-
|
|
112
|
-
|
|
170
|
+
// Empty responses stop printing blank filler -- the turn-block
|
|
171
|
+
// echo above is the separator now.
|
|
172
|
+
if (response) {
|
|
173
|
+
game.logBox.pushLine(response);
|
|
174
|
+
game.followLog();
|
|
175
|
+
}
|
|
113
176
|
}
|
|
114
177
|
catch (error) {
|
|
115
178
|
// A crashed command must FAIL VISIBLY -- the old silent
|
|
@@ -119,7 +182,7 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
119
182
|
// only in the log file).
|
|
120
183
|
gameLog.error(`Error handling input: ${error}`);
|
|
121
184
|
game.logBox.pushLine(`{red-fg}Something glitched handling that command -- it's been logged. The game is still running.{/red-fg}`);
|
|
122
|
-
game.
|
|
185
|
+
game.followLog();
|
|
123
186
|
}
|
|
124
187
|
finally {
|
|
125
188
|
// Focus restoration runs on EVERY path -- the same real session
|
|
@@ -159,8 +222,19 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
159
222
|
process.exit(1);
|
|
160
223
|
}
|
|
161
224
|
}
|
|
162
|
-
// Get arguments from the command line
|
|
225
|
+
// Get arguments from the command line. The launcher passes ONE argument: a
|
|
226
|
+
// path to a launch file holding { playerName, scene, options } -- scenes
|
|
227
|
+
// outgrew Windows' ~32KB command-line limit (spawn ENAMETOOLONG the moment
|
|
228
|
+
// the hub seed gained rumors, gigs, and a bigger cast), so the JSON goes
|
|
229
|
+
// through the filesystem now. The legacy 3-arg inline shape still works as
|
|
230
|
+
// a fallback for anything that spawns the old way.
|
|
163
231
|
const args = process.argv.slice(2);
|
|
164
|
-
|
|
165
|
-
|
|
232
|
+
if (args.length === 1) {
|
|
233
|
+
const { readFileSync } = await import('fs');
|
|
234
|
+
const launch = JSON.parse(readFileSync(args[0], 'utf8'));
|
|
235
|
+
await main(launch.playerName, launch.scene, launch.options);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
await main(args[0], JSON.parse(args[1]), JSON.parse(args[2]));
|
|
239
|
+
}
|
|
166
240
|
//# sourceMappingURL=ui.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/ui.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,MAAM,EACN,IAAI,GACL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,19 @@ import type { NPC } from '../models/npc.js';
|
|
|
8
8
|
* swings never stops THEIRS -- the only real defense is the door, and
|
|
9
9
|
* that's the player's call.
|
|
10
10
|
*
|
|
11
|
-
* manual --
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* manual -- counters only. Struck, you strike back (the exchange
|
|
12
|
+
* engine answers every swing in EVERY stance -- see
|
|
13
|
+
* CombatExchange.resolveStrike's two-way resolution);
|
|
14
|
+
* but pressing the fight, chasing, or finishing is yours
|
|
15
|
+
* to type. (A real session read "manual" as fully
|
|
16
|
+
* passive, saw the built-in counters, and concluded the
|
|
17
|
+
* stances were redundant -- they never were; the old
|
|
18
|
+
* descriptions were wrong.)
|
|
19
|
+
* guarded -- keeps swinging FOR you between exchanges, with a
|
|
20
|
+
* conscience: switches to subdue when the target is
|
|
21
|
+
* nearly down, and stands down the moment they surrender
|
|
22
|
+
* aggressive -- keeps swinging until they're dead; surrender means
|
|
23
|
+
* nothing
|
|
16
24
|
*
|
|
17
25
|
* Wiring: CombatExchange.finishExchange() -> Scene.notifyExchangeSettled()
|
|
18
26
|
* -> onExchangeSettled() here. If the player was a combatant and the
|
|
@@ -32,7 +40,6 @@ import type { NPC } from '../models/npc.js';
|
|
|
32
40
|
export declare class AutoFight {
|
|
33
41
|
private game;
|
|
34
42
|
static REENGAGE_DELAY_MS: number;
|
|
35
|
-
private static MANABOLT_POWER;
|
|
36
43
|
private pending?;
|
|
37
44
|
constructor(game: Game);
|
|
38
45
|
/** The pending auto action, dropped. The player typed, or the stance changed. */
|
|
@@ -6,11 +6,19 @@ import { Logger } from './logger.js';
|
|
|
6
6
|
* swings never stops THEIRS -- the only real defense is the door, and
|
|
7
7
|
* that's the player's call.
|
|
8
8
|
*
|
|
9
|
-
* manual --
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* manual -- counters only. Struck, you strike back (the exchange
|
|
10
|
+
* engine answers every swing in EVERY stance -- see
|
|
11
|
+
* CombatExchange.resolveStrike's two-way resolution);
|
|
12
|
+
* but pressing the fight, chasing, or finishing is yours
|
|
13
|
+
* to type. (A real session read "manual" as fully
|
|
14
|
+
* passive, saw the built-in counters, and concluded the
|
|
15
|
+
* stances were redundant -- they never were; the old
|
|
16
|
+
* descriptions were wrong.)
|
|
17
|
+
* guarded -- keeps swinging FOR you between exchanges, with a
|
|
18
|
+
* conscience: switches to subdue when the target is
|
|
19
|
+
* nearly down, and stands down the moment they surrender
|
|
20
|
+
* aggressive -- keeps swinging until they're dead; surrender means
|
|
21
|
+
* nothing
|
|
14
22
|
*
|
|
15
23
|
* Wiring: CombatExchange.finishExchange() -> Scene.notifyExchangeSettled()
|
|
16
24
|
* -> onExchangeSettled() here. If the player was a combatant and the
|
|
@@ -30,9 +38,6 @@ import { Logger } from './logger.js';
|
|
|
30
38
|
export class AutoFight {
|
|
31
39
|
game;
|
|
32
40
|
static REENGAGE_DELAY_MS = 2000;
|
|
33
|
-
// Manabolt's damage base, mirrored from cast.ts SPELLS (power). Used
|
|
34
|
-
// only for the "what hits hardest" comparison.
|
|
35
|
-
static MANABOLT_POWER = 4;
|
|
36
41
|
pending;
|
|
37
42
|
constructor(game) {
|
|
38
43
|
this.game = game;
|
|
@@ -96,7 +101,9 @@ export class AutoFight {
|
|
|
96
101
|
const cmd = this.chooseAction(player, target);
|
|
97
102
|
// Cyan, not gray: the autopilot announcing it acted must be legible on
|
|
98
103
|
// stock dark palettes (gray = ANSI bright-black, near-invisible there).
|
|
99
|
-
|
|
104
|
+
// Mechanics ticker, not the narrative -- the strike it triggers tells
|
|
105
|
+
// the story in the world log (readability pass).
|
|
106
|
+
logger.meta(`⚔ [${player.autoStance}] ${cmd}`, 'cyan');
|
|
100
107
|
const result = await this.game.handleInput(cmd);
|
|
101
108
|
// Player-initiated exchanges self-announce ('' result); anything else
|
|
102
109
|
// (a dry-gun reload prompt, a refusal) is information the player needs.
|
|
@@ -120,18 +127,24 @@ export class AutoFight {
|
|
|
120
127
|
return `subdue ${target.name}`;
|
|
121
128
|
}
|
|
122
129
|
// Magic doesn't compile in the Matrix (see cast.ts); everywhere else,
|
|
123
|
-
// lead with the harder hit.
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
// lead with the harder hit. The autopilot casts at the mage's FULL
|
|
131
|
+
// safe Force (bolt damage = F - 2, drain billed, never overcast) --
|
|
132
|
+
// a bare "cast manabolt" would use the drain-neutral default (F3,
|
|
133
|
+
// damage 1: the Force pass silently gutted the old comparison).
|
|
134
|
+
// Same safe ceiling as cast.ts: a book-taught mundane works at 4.
|
|
135
|
+
const boltForce = player.magic > 0 ? player.magic : 4;
|
|
136
|
+
const boltDamage = Math.max(1, boltForce - 2);
|
|
137
|
+
if (player.plane !== 'matrix' && player.isCaster() && boltDamage > player.getWeaponProfile().damage) {
|
|
138
|
+
return `cast manabolt ${boltForce} at ${target.name}`;
|
|
126
139
|
}
|
|
127
140
|
return `attack ${target.name}`;
|
|
128
141
|
}
|
|
129
142
|
/** One-line HUD/announce description for a stance. */
|
|
130
143
|
static describe(stance) {
|
|
131
144
|
switch (stance) {
|
|
132
|
-
case 'manual': return '
|
|
133
|
-
case 'guarded': return '
|
|
134
|
-
case 'aggressive': return '
|
|
145
|
+
case 'manual': return 'counters when struck (every stance does) -- but pressing the fight is yours to type';
|
|
146
|
+
case 'guarded': return 'presses the fight for you; subdues instead of killing when they are nearly down, holds fire on surrender';
|
|
147
|
+
case 'aggressive': return 'presses the fight to the death; surrender means nothing';
|
|
135
148
|
}
|
|
136
149
|
}
|
|
137
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-fight.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/auto-fight.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"auto-fight.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/auto-fight.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,7 @@ export declare class CombatExchange {
|
|
|
91
91
|
second: Player | NPC;
|
|
92
92
|
extraStriker: Player | NPC | null;
|
|
93
93
|
lines: string[];
|
|
94
|
+
metaLines: string[];
|
|
94
95
|
};
|
|
95
96
|
/**
|
|
96
97
|
* The player should see a fight's blow-by-blow only when they're actually
|
|
@@ -108,7 +109,7 @@ export declare class CombatExchange {
|
|
|
108
109
|
* fight an NPC started. The status box refreshes with every block so the
|
|
109
110
|
* condition monitor visibly ticks as damage lands.
|
|
110
111
|
*/
|
|
111
|
-
announce(lines: string[]): Promise<void>;
|
|
112
|
+
announce(lines: string[], meta?: string[]): Promise<void>;
|
|
112
113
|
/**
|
|
113
114
|
* The default, weapon-based strike profile. A firearm with a dry
|
|
114
115
|
* magazine automatically falls back to bare fists -- this covers the
|
|
@@ -117,8 +118,19 @@ export declare class CombatExchange {
|
|
|
117
118
|
* blocked with a reload prompt before ever reaching here (attack.ts).
|
|
118
119
|
*/
|
|
119
120
|
weaponProfile(attacker: Player | NPC, defender: Player | NPC): IStrikeProfile;
|
|
120
|
-
/**
|
|
121
|
-
|
|
121
|
+
/**
|
|
122
|
+
* One directed strike: attack vs defense, then soak. Mutates the
|
|
123
|
+
* defender. Readability split: `meta` carries the dice anatomy
|
|
124
|
+
* (Attack/Defense/Soak rolls, net-hit math) for the Mechanics ticker;
|
|
125
|
+
* `world` carries the narrative -- one compact header with the
|
|
126
|
+
* outcome, then the damage/flavor lines the player feels. Callers
|
|
127
|
+
* rebuild AI-history reports as [...world, ...meta] so an NPC's
|
|
128
|
+
* memory of the fight keeps the dice.
|
|
129
|
+
*/
|
|
130
|
+
resolveStrike(attacker: Player | NPC, defender: Player | NPC, profile?: IStrikeProfile): {
|
|
131
|
+
world: string[];
|
|
132
|
+
meta: string[];
|
|
133
|
+
};
|
|
122
134
|
/**
|
|
123
135
|
* Death/knockout narration is announced BEFORE the removal side effects
|
|
124
136
|
* run -- removeActor() fires the "drops what they carried" observer line
|