@maka/maka-cli 5.1.24 → 5.1.25

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.
Files changed (49) hide show
  1. package/bundle/typescript/package.json +2 -2
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +1 -0
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +8 -2
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/store.d.ts +8 -0
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/store.js +32 -0
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/store.js.map +1 -0
  9. package/bundle/typescript/src/commands/game/sideQuest/factories/roomsF.js +3 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/factories/roomsF.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/factories/sceneSynthesizer.d.ts +6 -0
  12. package/bundle/typescript/src/commands/game/sideQuest/factories/sceneSynthesizer.js +66 -0
  13. package/bundle/typescript/src/commands/game/sideQuest/factories/sceneSynthesizer.js.map +1 -0
  14. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +3 -3
  15. package/bundle/typescript/src/commands/game/sideQuest/game.js +7 -5
  16. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +3 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +10 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +12 -0
  21. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +51 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +8 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +61 -70
  25. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +1 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +2 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +17 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +76 -21
  31. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +21 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +104 -15
  34. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/scenes/items.d.ts +3 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/scenes/items.js +15 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/scenes/items.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/scenes/rooms.js +1 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +143 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/types/enums.d.ts +6 -3
  41. package/bundle/typescript/src/commands/game/sideQuest/types/enums.js +3 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/types/enums.js.map +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/types/interfaces.d.ts +86 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +2 -2
  45. package/bundle/typescript/src/commands/game/sideQuest/ui.js +2 -2
  46. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +3 -2
  48. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  49. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.1.24",
3
+ "version": "5.1.25",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 2.x applications using React.",
@@ -23,7 +23,7 @@
23
23
  "test": "jest",
24
24
  "develop": "npm run build && concurrently \"tsc -w\" \"wait-on -d 10 ./src/exec.js && chmod +x ./src/exec.js\"",
25
25
  "build": "rm -rf ./bundle && tsc && npm run prep",
26
- "prep": " cp -R ./src/templates ./bundle/typescript/src/ && cp ./README.md ./bundle/typescript/src/ && cp ./package.json ./bundle/typescript/ && chmod +x ./bundle/typescript/src/exec.js",
26
+ "prep": " cp -R ./src/templates ./bundle/typescript/src/ && cp ./README.md ./bundle/typescript/src/ && cp ./package.json ./bundle/typescript/ && cp ./src/commands/game/sideQuest/scenes/*.json ./bundle/typescript/src/commands/game/sideQuest/scenes/ && chmod +x ./bundle/typescript/src/exec.js",
27
27
  "//": "## es-build, and package are still experimental",
28
28
  "es-build": "esbuild ./bundle/typescript/src/maka.js --bundle --platform=node --outfile=bundle/maka.cjs",
29
29
  "package": "pkg ./bundle/maka.cjs -d --bundle --out-path=\"bundle/compiled\" --compress GZip",
@@ -11,6 +11,7 @@ export class Command {
11
11
  this.actor = context.actor;
12
12
  this.rooms = context.rooms;
13
13
  this.logger = Logger.getInstance();
14
+ this.scene = context.scene;
14
15
  }
15
16
  isValidDirection(value) {
16
17
  return Object.values(Direction).includes(value);
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,MAAM,OAAgB,OAAO;IACjB,MAAM,CAAC,IAAI,CAAS;IACpB,MAAM,CAAC,WAAW,CAAS,CAAE,mBAAmB;IAChD,KAAK,CAAS;IACd,KAAK,CAAU;IACf,MAAM,CAAS;IACf,KAAK,CAAQ;IAEvB,YAAY,OAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAIS,gBAAgB,CAAC,KAAa;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAkB,CAAC,CAAC;IAC/D,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,IAAI,2BAA2B,CAAC,CAAE,yDAAyD;IACpH,CAAC;CACF"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,MAAM,OAAgB,OAAO;IACjB,MAAM,CAAC,IAAI,CAAS;IACpB,MAAM,CAAC,WAAW,CAAS,CAAE,mBAAmB;IAChD,KAAK,CAAS;IACd,KAAK,CAAU;IACf,MAAM,CAAS;IACf,KAAK,CAAQ;IAEvB,YAAY,OAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAIS,gBAAgB,CAAC,KAAa;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAkB,CAAC,CAAC;IAC/D,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,IAAI,2BAA2B,CAAC,CAAE,yDAAyD;IACpH,CAAC;CACF"}
@@ -36,9 +36,15 @@ export class LookCommand extends Command {
36
36
  return "You're not in a valid room.";
37
37
  }
38
38
  let description = room.description;
39
- // Add information about any puzzles in the room
39
+ const otherActors = this.scene
40
+ .getActorsInRoom(room)
41
+ .filter(a => a !== this.actor);
42
+ if (otherActors.length > 0) {
43
+ const actorList = otherActors.map(a => `• ${a.name}`).join('\n');
44
+ description += `\n\nYou see:\n${actorList}`;
45
+ }
40
46
  if (room.puzzle) {
41
- description += `\n${room.puzzle.riddle}`;
47
+ description += `\n\nPuzzle here: ${room.puzzle.riddle}`;
42
48
  }
43
49
  return description;
44
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"look.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/look.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"look.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/look.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from './command.js';
2
+ import { ICommand } from '../types/interfaces.js';
3
+ export declare class StoreCommand extends Command implements ICommand {
4
+ protected static verb: string;
5
+ protected static description: string;
6
+ execute(args: string[]): string;
7
+ private store;
8
+ }
@@ -0,0 +1,32 @@
1
+ import { Command } from './command.js';
2
+ export class StoreCommand extends Command {
3
+ static verb = 'store';
4
+ static description = 'Store an item from your inventory into your residence or bank.';
5
+ execute(args) {
6
+ this.logger.write(`${this.actor.name} is attempting 'Store' command with item: ${args.join(' ')}`);
7
+ return this.store(args);
8
+ }
9
+ store(args) {
10
+ const itemName = args.join(' ').toLowerCase(); // Handle multi-word item names
11
+ // Check if the item exists in the player's inventory
12
+ if (!this.actor.inventory.hasItem(itemName)) {
13
+ this.logger.write(`Item "${itemName}" not found in ${this.actor.name}'s inventory during 'Store' command.`);
14
+ return `You don't have ${itemName} in your inventory.`;
15
+ }
16
+ const itemToStore = this.actor.inventory.getItem(itemName);
17
+ if (!itemToStore) {
18
+ this.logger.write(`Item "${itemName}" could not be retrieved from ${this.actor.name}'s inventory during 'Store' command.`);
19
+ return `You don't have ${itemName} in your inventory.`;
20
+ }
21
+ // Remove item from player inventory and store it in the current room context
22
+ const itemStored = this.actor.currentLocation.storeItemFromActor(this.actor, itemToStore);
23
+ if (itemStored) {
24
+ this.actor.inventory.removeItem(itemName);
25
+ return `You stored ${itemName}.`;
26
+ }
27
+ else {
28
+ return `There is no safe place to store this ${itemName}.`;
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC7B,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,WAAW,GAAG,gEAAgE,CAAC;IAEhG,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,6CAA6C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,IAAc;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,+BAA+B;QAE9E,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,sCAAsC,CAAC,CAAC;YAC5G,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,iCAAiC,IAAI,CAAC,KAAK,CAAC,IAAI,sCAAsC,CAAC,CAAC;YAC3H,OAAO,kBAAkB,QAAQ,qBAAqB,CAAC;QACzD,CAAC;QAED,6EAA6E;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1F,IAAG,UAAU,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO,cAAc,QAAQ,GAAG,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,wCAAwC,QAAQ,GAAG,CAAC;QAC7D,CAAC;IAEH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Room, Puzzle, Inventory } from '../models/_index.js';
2
2
  import { RoomType } from '../types/enums.js';
3
- import { Key, Book, BasicItem, Sword, Rifle, Helmet, BodyArmor, LegArmor, Boots, Gloves, Gauntlets } from '../scenes/items.js';
3
+ import { Key, Book, BasicItem, Sword, Rifle, Helmet, BodyArmor, LegArmor, Boots, Gloves, Gauntlets, Pistol } from '../scenes/items.js';
4
4
  export class RoomFactory {
5
5
  createRoom(config) {
6
6
  const roomConfig = this.convertToRoomConfig(config);
@@ -27,6 +27,8 @@ export class RoomFactory {
27
27
  return new Sword(config.name, config.description);
28
28
  case 'rifle':
29
29
  return new Rifle(config.name, config.description);
30
+ case 'pistol':
31
+ return new Pistol(config.name, config.description);
30
32
  case 'helmet':
31
33
  return new Helmet(config.name, config.description);
32
34
  case 'bodyarmor':
@@ -1 +1 @@
1
- {"version":3,"file":"roomsF.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/roomsF.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roomsF.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/roomsF.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Scene } from '../models/scene.js';
2
+ import { Player } from '../models/player.js';
3
+ import { ISceneSeedJson } from '../types/interfaces.js';
4
+ export declare class SceneSynthesizer {
5
+ static synthesizeFromJson(json: ISceneSeedJson, player: Player): Scene;
6
+ }
@@ -0,0 +1,66 @@
1
+ import { Scene } from '../models/scene.js';
2
+ import { NPC } from '../models/npc.js';
3
+ import { Item } from '../models/item.js';
4
+ import { Puzzle } from '../models/puzzle.js';
5
+ import { Size, Category, Shape, Color, Texture, Rating } from '../types/enums.js';
6
+ export class SceneSynthesizer {
7
+ static synthesizeFromJson(json, player) {
8
+ // Step 1: Create the Scene using the JSON’s room configuration
9
+ const scene = new Scene({
10
+ player,
11
+ currency: {
12
+ type: json.currency.type,
13
+ carrier: json.currency.carrier,
14
+ carrierItemSizes: json.currency.carrierItemSizes.map(size => Size[size]),
15
+ authorityRoomTags: json.currency.authorityRoomTags
16
+ },
17
+ roomConfiguration: json.rooms,
18
+ residenceTiers: json.residenceTiers
19
+ });
20
+ // Step 2: Add NPCs
21
+ for (const npcJson of json.npcs ?? []) {
22
+ const npc = new NPC(npcJson.name, npcJson.dialogue ?? ["..."], // Default if dialogue not supplied
23
+ scene.getRooms(), {
24
+ playerName: npcJson.name,
25
+ lifestyleChoices: npcJson.lifestyleChoices
26
+ });
27
+ scene.addActor(npc);
28
+ scene.setCharacterLocation(npc, npcJson.startRoom);
29
+ }
30
+ // Step 3: Add Items to Rooms
31
+ for (const itemJson of json.items ?? []) {
32
+ const item = new Item({
33
+ name: itemJson.name,
34
+ description: itemJson.description,
35
+ size: Size[itemJson.size],
36
+ category: Category[itemJson.category],
37
+ shape: Shape[itemJson.shape],
38
+ color: Color[itemJson.color],
39
+ texture: Texture[itemJson.texture],
40
+ rating: Rating[itemJson.rating],
41
+ weight: itemJson.weight,
42
+ satisfiesLifestyle: itemJson.satisfiesLifestyle
43
+ });
44
+ if (itemJson.currencyAmount && item.isCurrencyCarrier()) {
45
+ item.addCurrency(itemJson.currencyAmount);
46
+ }
47
+ scene.addItemToRoom(item, itemJson.room);
48
+ }
49
+ // Step 4: Add Puzzles to Rooms
50
+ for (const puzzleJson of json.puzzles ?? []) {
51
+ const puzzle = new Puzzle({
52
+ requiredItem: puzzleJson.requiredItem,
53
+ requiredPhrase: puzzleJson.requiredPhrase,
54
+ riddle: puzzleJson.riddle,
55
+ rewardItem: undefined, // could be enhanced later
56
+ successMessage: puzzleJson.successMessage,
57
+ failureMessage: puzzleJson.failureMessage,
58
+ hobbyTags: puzzleJson.hobbyTags
59
+ });
60
+ scene.addPuzzleToRoom(puzzle, puzzleJson.room);
61
+ }
62
+ // Done: the scene is now ready
63
+ return scene;
64
+ }
65
+ }
66
+ //# sourceMappingURL=sceneSynthesizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneSynthesizer.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/sceneSynthesizer.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  import { IRooms } from './types/interfaces.js';
2
2
  import { Room } from './models/room.js';
3
3
  import { Player } from './models/player.js';
4
- import { RoomConfiguration } from './types/types.js';
4
+ import { ISceneSeedJson } from './types/interfaces.js';
5
5
  export default class Game {
6
6
  private static instance;
7
7
  private scene;
8
8
  player: Player;
9
9
  currentRoom: Room;
10
10
  rooms: IRooms;
11
- constructor(player: Player, roomConfiguration: RoomConfiguration);
11
+ constructor(player: Player, sceneSeed: ISceneSeedJson);
12
12
  private registerCommands;
13
13
  private determineStartRoom;
14
14
  getWelcomeMessage(): string;
15
- static getInstance(player: Player, roomConfiguration: RoomConfiguration): Game;
15
+ static getInstance(player: Player, sceneSeed: ISceneSeedJson): Game;
16
16
  handleInput(input: string): string | null;
17
17
  private getHelpMessage;
18
18
  }
@@ -1,4 +1,3 @@
1
- import { Scene } from './models/scene.js';
2
1
  import { LookCommand } from './commands/look.js';
3
2
  import { TakeCommand } from './commands/take.js';
4
3
  import { GoCommand } from './commands/go.js';
@@ -11,16 +10,18 @@ import { UnlockCommand } from './commands/unlock.js';
11
10
  import { LockCommand } from './commands/lock.js';
12
11
  import { SearchCommand } from './commands/search.js';
13
12
  import { SayCommand } from './commands/say.js';
13
+ import { StoreCommand } from './commands/store.js';
14
14
  import { CommandFactory } from './factories/commandF.js';
15
+ import { SceneSynthesizer } from './factories/sceneSynthesizer.js';
15
16
  export default class Game {
16
17
  static instance;
17
18
  scene;
18
19
  player;
19
20
  currentRoom;
20
21
  rooms;
21
- constructor(player, roomConfiguration) {
22
+ constructor(player, sceneSeed) {
22
23
  this.player = player;
23
- this.scene = new Scene({ player, roomConfiguration });
24
+ this.scene = SceneSynthesizer.synthesizeFromJson(sceneSeed, player);
24
25
  this.scene.initialize();
25
26
  this.player.currentLocation = this.determineStartRoom();
26
27
  this.registerCommands();
@@ -38,6 +39,7 @@ export default class Game {
38
39
  CommandFactory.registerCommand('lock', LockCommand);
39
40
  CommandFactory.registerCommand('search', SearchCommand);
40
41
  CommandFactory.registerCommand('say', SayCommand);
42
+ CommandFactory.registerCommand('store', StoreCommand);
41
43
  }
42
44
  determineStartRoom() {
43
45
  return this.scene.determineStartRoom();
@@ -46,9 +48,9 @@ export default class Game {
46
48
  return `Welcome, ${this.player.name}`; // Replace with your own welcome message or initial room description
47
49
  }
48
50
  // Public method to get the instance of the Game class
49
- static getInstance(player, roomConfiguration) {
51
+ static getInstance(player, sceneSeed) {
50
52
  if (!Game.instance) {
51
- Game.instance = new Game(player, roomConfiguration);
53
+ Game.instance = new Game(player, sceneSeed);
52
54
  }
53
55
  return Game.instance;
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"game.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/game.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { AbstractInventory } from '../types/abstracts.js';
4
4
  export declare class Inventory extends AbstractInventory {
5
5
  protected items: Map<string, Item>;
6
6
  protected logger: Logger;
7
+ private secureItems;
7
8
  constructor();
8
9
  /**
9
10
  * Adds an item to the inventory.
@@ -40,4 +41,6 @@ export declare class Inventory extends AbstractInventory {
40
41
  listItems(): string[];
41
42
  getWeight(): number;
42
43
  getAllItems(): Item[];
44
+ addSecureItem(ownerId: string, item: Item): void;
45
+ getSecureItemsFor(ownerId: string): Item[];
43
46
  }
@@ -4,6 +4,7 @@ import { AbstractInventory } from '../types/abstracts.js';
4
4
  export class Inventory extends AbstractInventory {
5
5
  items;
6
6
  logger;
7
+ secureItems = new Map(); // keyed by player name
7
8
  constructor() {
8
9
  super();
9
10
  this.items = new Map();
@@ -83,5 +84,14 @@ export class Inventory extends AbstractInventory {
83
84
  getAllItems() {
84
85
  return [...this.items.values()];
85
86
  }
87
+ addSecureItem(ownerId, item) {
88
+ if (!this.secureItems.has(ownerId)) {
89
+ this.secureItems.set(ownerId, []);
90
+ }
91
+ this.secureItems.get(ownerId).push(item);
92
+ }
93
+ getSecureItemsFor(ownerId) {
94
+ return this.secureItems.get(ownerId) ?? [];
95
+ }
86
96
  }
87
97
  //# sourceMappingURL=inventory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/inventory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/inventory.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,18 @@ export declare class Item extends AbstractItem {
12
12
  texture: Texture;
13
13
  rating: Rating;
14
14
  weight: number;
15
+ satisfiesLifestyle?: {
16
+ addictionTypes?: string[];
17
+ habitTags?: string[];
18
+ };
19
+ protected _currencyAmount: number;
20
+ protected _currencyCapacity?: number;
15
21
  constructor(options: IItemConstructorConfig);
16
22
  use(): string;
23
+ supportsAddiction(addiction: string): boolean;
24
+ supportsHabit(habit: string): boolean;
25
+ isCurrencyCarrier(): boolean;
26
+ get currencyAmount(): number;
27
+ addCurrency(amount: number): number;
28
+ deductCurrency(amount: number): number;
17
29
  }
@@ -1,3 +1,4 @@
1
+ import { Size, Category } from '../types/enums.js';
1
2
  import { v4 as uuidv4 } from 'uuid';
2
3
  import { AbstractItem } from '../types/abstracts.js';
3
4
  export class Item extends AbstractItem {
@@ -11,6 +12,10 @@ export class Item extends AbstractItem {
11
12
  texture;
12
13
  rating;
13
14
  weight;
15
+ satisfiesLifestyle;
16
+ // New currency-related fields
17
+ _currencyAmount = 0;
18
+ _currencyCapacity;
14
19
  constructor(options) {
15
20
  super();
16
21
  this.name = options.name;
@@ -22,10 +27,55 @@ export class Item extends AbstractItem {
22
27
  this.texture = options.texture;
23
28
  this.rating = options.rating;
24
29
  this.weight = options.weight;
25
- this.uuid = uuidv4(); // Automatically generate a UUID for this item instance
30
+ this.satisfiesLifestyle = options.satisfiesLifestyle;
31
+ this.uuid = uuidv4();
32
+ // Optional: you can define capacity by size
33
+ if (this.isCurrencyCarrier()) {
34
+ switch (this.size) {
35
+ case Size.Small:
36
+ this._currencyCapacity = 100;
37
+ break;
38
+ case Size.Medium:
39
+ this._currencyCapacity = 500;
40
+ break;
41
+ case Size.Large:
42
+ this._currencyCapacity = 1000;
43
+ break;
44
+ }
45
+ }
26
46
  }
27
47
  use() {
28
48
  return `You use the ${this.name}. Nothing special happens.`;
29
49
  }
50
+ supportsAddiction(addiction) {
51
+ return this.satisfiesLifestyle?.addictionTypes?.includes(addiction) ?? false;
52
+ }
53
+ supportsHabit(habit) {
54
+ return this.satisfiesLifestyle?.habitTags?.includes(habit) ?? false;
55
+ }
56
+ // --- Currency Support ---
57
+ isCurrencyCarrier() {
58
+ return this.category === Category.CurrencyContainer;
59
+ }
60
+ get currencyAmount() {
61
+ return this._currencyAmount;
62
+ }
63
+ addCurrency(amount) {
64
+ if (!this.isCurrencyCarrier())
65
+ return 0;
66
+ const space = this._currencyCapacity !== undefined
67
+ ? Math.max(0, this._currencyCapacity - this._currencyAmount)
68
+ : Infinity;
69
+ const added = Math.min(amount, space);
70
+ this._currencyAmount += added;
71
+ return added;
72
+ }
73
+ deductCurrency(amount) {
74
+ if (!this.isCurrencyCarrier())
75
+ return 0;
76
+ const deducted = Math.min(this._currencyAmount, amount);
77
+ this._currencyAmount -= deducted;
78
+ return deducted;
79
+ }
30
80
  }
31
81
  //# sourceMappingURL=item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,OAAO,IAAK,SAAQ,YAAY;IAC7B,IAAI,CAAS;IACb,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,IAAI,CAAO;IACX,QAAQ,CAAW;IACnB,KAAK,CAAQ;IACb,KAAK,CAAQ;IACb,OAAO,CAAU;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IAEtB,YAAY,OAA+B;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,uDAAuD;IAC/E,CAAC;IAED,GAAG;QACD,OAAO,eAAe,IAAI,CAAC,IAAI,4BAA4B,CAAC;IAC9D,CAAC;CACF"}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/item.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { PlayerEquipment } from '../types/types.js';
2
- import { IPlayer, IPlayerConstructorConfig } from '../types/interfaces.js';
2
+ import { IPlayer, IPlayerConstructorConfig, LifestyleChoices } from '../types/interfaces.js';
3
3
  import { Logger } from '../utilities/logger.js';
4
4
  import { Room } from './room.js';
5
5
  import { Item } from './item.js';
@@ -11,7 +11,9 @@ export declare class Player extends AbstractPlayer implements IPlayer {
11
11
  protected _inventory: Inventory;
12
12
  protected _equipment: PlayerEquipment;
13
13
  protected _maxCarryingWeight: number;
14
+ protected _lifestyleChoices: LifestyleChoices;
14
15
  protected logger: Logger;
16
+ private _currency;
15
17
  constructor(config: IPlayerConstructorConfig);
16
18
  get name(): string;
17
19
  get currentLocation(): Room;
@@ -32,4 +34,9 @@ export declare class Player extends AbstractPlayer implements IPlayer {
32
34
  hear(actor: Player, message: string): void;
33
35
  enterRoom(room: Room): void;
34
36
  leaveRoom(): void;
37
+ get lifestyleChoices(): LifestyleChoices;
38
+ set lifestyleChoices(choices: LifestyleChoices);
39
+ get currency(): number;
40
+ set currency(amount: number);
41
+ adjustCurrency(delta: number): void;
35
42
  }