@maka/maka-cli 5.1.26 → 5.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +3 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/roomsF.d.ts +2 -4
- package/bundle/typescript/src/commands/game/sideQuest/factories/roomsF.js +2 -51
- package/bundle/typescript/src/commands/game/sideQuest/factories/roomsF.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/sceneSynthesizer.js +18 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/sceneSynthesizer.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +5 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +13 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/_index.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/_index.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +69 -24
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +211 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene3.json +380 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/abstracts.d.ts +7 -7
- package/bundle/typescript/src/commands/game/sideQuest/types/abstracts.js +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/abstracts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/enums.d.ts +4 -43
- package/bundle/typescript/src/commands/game/sideQuest/types/enums.js +2 -45
- package/bundle/typescript/src/commands/game/sideQuest/types/enums.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/interfaces.d.ts +18 -11
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +6 -12
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +6 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/items.d.ts +0 -59
- package/bundle/typescript/src/commands/game/sideQuest/scenes/items.js +0 -271
- package/bundle/typescript/src/commands/game/sideQuest/scenes/items.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/puzzles.js +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/puzzles.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/rooms.d.ts +0 -4
- package/bundle/typescript/src/commands/game/sideQuest/scenes/rooms.js +0 -350
- package/bundle/typescript/src/commands/game/sideQuest/scenes/rooms.js.map +0 -1
- /package/bundle/typescript/src/commands/game/sideQuest/scenes/{puzzles.d.ts → _index.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.26",
|
|
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.",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Door } from '../models/door.js';
|
|
2
|
-
import { RoomType } from '../types/enums.js';
|
|
3
2
|
import { Command } from './command.js';
|
|
4
3
|
export class LookCommand extends Command {
|
|
5
4
|
static verb = 'look';
|
|
@@ -43,7 +42,7 @@ export class LookCommand extends Command {
|
|
|
43
42
|
const actorList = otherActors.map(a => `• ${a.name}`).join('\n');
|
|
44
43
|
description += `\n\nYou see:\n${actorList}`;
|
|
45
44
|
}
|
|
46
|
-
if (room.puzzle) {
|
|
45
|
+
if (room.puzzle && !room.puzzle.isSolved()) {
|
|
47
46
|
description += `\n\nPuzzle here: ${room.puzzle.riddle}`;
|
|
48
47
|
}
|
|
49
48
|
return description;
|
|
@@ -71,20 +70,7 @@ export class LookCommand extends Command {
|
|
|
71
70
|
else {
|
|
72
71
|
return `Unexpected error occurred while looking at the room in the direction "${direction}".`;
|
|
73
72
|
}
|
|
74
|
-
|
|
75
|
-
if (direction === 'up') {
|
|
76
|
-
return `Above you, ${adjacentRoom.description}`;
|
|
77
|
-
}
|
|
78
|
-
else if (direction === 'down') {
|
|
79
|
-
return `Below you, ${adjacentRoom.description}`;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
return `To the ${direction}, you see ${adjacentRoom.description}`;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
return `You cannot see through`;
|
|
87
|
-
}
|
|
73
|
+
return `You cannot see through`;
|
|
88
74
|
}
|
|
89
75
|
inspectItem(itemName, inventory) {
|
|
90
76
|
const item = inventory.getItem(itemName);
|
|
@@ -92,7 +78,7 @@ export class LookCommand extends Command {
|
|
|
92
78
|
return `You don't see any ${itemName} here.`;
|
|
93
79
|
}
|
|
94
80
|
// Assuming that the `Item` class has a `details` property that provides a more detailed description.
|
|
95
|
-
return item.description || `It's just a regular ${itemName}.`;
|
|
81
|
+
return item.details || item.description || `It's just a regular ${itemName}.`;
|
|
96
82
|
}
|
|
97
83
|
}
|
|
98
84
|
//# sourceMappingURL=look.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"look.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/look.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"look.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/look.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export class SayCommand extends Command {
|
|
|
25
25
|
this.logger.log(`${currentPlayer.name} says to ${actor.name}: "${message}"`);
|
|
26
26
|
this.actor.currentLocation.say(actor, message);
|
|
27
27
|
}
|
|
28
|
-
return
|
|
28
|
+
return ``;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=say.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"say.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/say.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAO,UAAW,SAAQ,OAAO;IACrC,6DAA6D;IACnD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,WAAW,GAAG,sDAAsD,CAAC;IAC5E,OAAO,CAAkB;IAEnC,YAAY,OAAwB;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,0BAA0B,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,6CAA6C;QAE/E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,mCAAmC;YACtF,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,KAAK,aAAa,CAAC,eAAe,CAAC,CAAC;QAE5G,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,8EAA8E;YAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;YAC7E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,
|
|
1
|
+
{"version":3,"file":"say.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/say.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAO,UAAW,SAAQ,OAAO;IACrC,6DAA6D;IACnD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,WAAW,GAAG,sDAAsD,CAAC;IAC5E,OAAO,CAAkB;IAEnC,YAAY,OAAwB;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,0BAA0B,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,6CAA6C;QAE/E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC,mCAAmC;YACtF,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,KAAK,aAAa,CAAC,eAAe,CAAC,CAAC;QAE5G,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,8EAA8E;YAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;YAC7E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC"}
|
|
@@ -10,8 +10,10 @@ export class SolveCommand extends Command {
|
|
|
10
10
|
return 'There doesn\'t seem to be a riddle here to solve.';
|
|
11
11
|
}
|
|
12
12
|
const result = room.puzzle.solve(answer, this.actor.inventory);
|
|
13
|
+
this.logger.write(`${this.actor.name} attempted to solve ${room.puzzle.name} with result ${result.success}`);
|
|
13
14
|
if (result.success && room.puzzle.rewardItem) {
|
|
14
15
|
this.actor.inventory.addItem(room.puzzle.rewardItem);
|
|
16
|
+
this.logger.write(`${this.actor.name} has solved ${room.puzzle.name}`);
|
|
15
17
|
}
|
|
16
18
|
this.logger.write(`SolveCommand: ${result.message}`);
|
|
17
19
|
return result.message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solve.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/solve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC7B,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAC;IAE5D,OAAO,CAAC,IAAc;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAExC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;YAC1G,OAAO,mDAAmD,CAAC;QAC7D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"solve.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/solve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC7B,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAC;IAE5D,OAAO,CAAC,IAAc;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAExC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;YAC1G,OAAO,mDAAmD,CAAC;QAC7D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uBAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7G,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { Room
|
|
2
|
-
import { IRoomConfiguration
|
|
1
|
+
import { Room } from '../models/_index.js';
|
|
2
|
+
import { IRoomConfiguration } from '../types/interfaces.js';
|
|
3
3
|
export declare class RoomFactory {
|
|
4
4
|
createRoom(config: IRoomConfiguration): Room;
|
|
5
|
-
createItem(config: IItem): Item;
|
|
6
|
-
createPuzzle(config: any): Puzzle;
|
|
7
5
|
private convertToRoomConfig;
|
|
8
6
|
}
|
|
@@ -1,61 +1,12 @@
|
|
|
1
|
-
import { Room
|
|
2
|
-
import { RoomType } from '../types/enums.js';
|
|
3
|
-
import { Key, Book, BasicItem, Sword, Rifle, Helmet, BodyArmor, LegArmor, Boots, Gloves, Gauntlets, Pistol } from '../scenes/items.js';
|
|
1
|
+
import { Room } from '../models/_index.js';
|
|
4
2
|
export class RoomFactory {
|
|
5
3
|
createRoom(config) {
|
|
6
4
|
const roomConfig = this.convertToRoomConfig(config);
|
|
7
5
|
const room = new Room(roomConfig);
|
|
8
|
-
if (config.items) {
|
|
9
|
-
const inventory = new Inventory();
|
|
10
|
-
config.items.forEach((itemConfig) => {
|
|
11
|
-
inventory.addItem(this.createItem(itemConfig));
|
|
12
|
-
});
|
|
13
|
-
room.inventory = inventory;
|
|
14
|
-
}
|
|
15
|
-
if (config.puzzle) {
|
|
16
|
-
room.setPuzzle(this.createPuzzle(config.puzzle));
|
|
17
|
-
}
|
|
18
6
|
return room;
|
|
19
7
|
}
|
|
20
|
-
createItem(config) {
|
|
21
|
-
switch (config.type) {
|
|
22
|
-
case 'key':
|
|
23
|
-
return new Key(config.name, config.description);
|
|
24
|
-
case 'book':
|
|
25
|
-
return new Book(config.name, config.description, config.content);
|
|
26
|
-
case 'sword':
|
|
27
|
-
return new Sword(config.name, config.description);
|
|
28
|
-
case 'rifle':
|
|
29
|
-
return new Rifle(config.name, config.description);
|
|
30
|
-
case 'pistol':
|
|
31
|
-
return new Pistol(config.name, config.description);
|
|
32
|
-
case 'helmet':
|
|
33
|
-
return new Helmet(config.name, config.description);
|
|
34
|
-
case 'bodyarmor':
|
|
35
|
-
return new BodyArmor(config.name, config.description);
|
|
36
|
-
case 'legarmor':
|
|
37
|
-
return new LegArmor(config.name, config.description);
|
|
38
|
-
case 'boots':
|
|
39
|
-
return new Boots(config.name, config.description);
|
|
40
|
-
case 'gloves':
|
|
41
|
-
return new Gloves(config.name, config.description);
|
|
42
|
-
case 'gauntlets':
|
|
43
|
-
return new Gauntlets(config.name, config.description);
|
|
44
|
-
default:
|
|
45
|
-
return new BasicItem(config.name, config.description);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
createPuzzle(config) {
|
|
49
|
-
const rewardItem = this.createItem(config.rewardItem);
|
|
50
|
-
return new Puzzle({
|
|
51
|
-
...config,
|
|
52
|
-
rewardItem: rewardItem
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
8
|
convertToRoomConfig(roomConfiguration) {
|
|
56
|
-
const roomType = roomConfiguration.roomType
|
|
57
|
-
? RoomType[roomConfiguration.roomType.toUpperCase()]
|
|
58
|
-
: RoomType.INSIDE;
|
|
9
|
+
const roomType = roomConfiguration.roomType;
|
|
59
10
|
return {
|
|
60
11
|
name: roomConfiguration.name,
|
|
61
12
|
description: roomConfiguration.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roomsF.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/roomsF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"roomsF.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/roomsF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,qBAAqB,CAAC;AAGtD,MAAM,OAAO,WAAW;IACtB,UAAU,CAAC,MAA0B;QACnC,MAAM,UAAU,GAAgB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,iBAAqC;QAC/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;QAE5C,OAAO;YACL,IAAI,EAAE,iBAAiB,CAAC,IAAI;YAC5B,WAAW,EAAE,iBAAiB,CAAC,WAAW;YAC1C,WAAW,EAAE,iBAAiB,CAAC,WAAW;YAC1C,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { Scene } from '../models/scene.js';
|
|
|
2
2
|
import { NPC } from '../models/npc.js';
|
|
3
3
|
import { Item } from '../models/item.js';
|
|
4
4
|
import { Puzzle } from '../models/puzzle.js';
|
|
5
|
-
import { Size, Category,
|
|
5
|
+
import { Size, Category, Rating } from '../types/enums.js';
|
|
6
6
|
export class SceneSynthesizer {
|
|
7
7
|
static synthesizeFromJson(json, player) {
|
|
8
8
|
// Step 1: Create the Scene using the JSON’s room configuration
|
|
@@ -27,31 +27,43 @@ export class SceneSynthesizer {
|
|
|
27
27
|
scene.setCharacterLocation(npc, npcJson.startRoom);
|
|
28
28
|
}
|
|
29
29
|
// Step 3: Add Items to Rooms
|
|
30
|
+
const itemMap = new Map();
|
|
30
31
|
for (const itemJson of json.items ?? []) {
|
|
31
32
|
const item = new Item({
|
|
32
33
|
name: itemJson.name,
|
|
33
34
|
description: itemJson.description,
|
|
34
35
|
size: Size[itemJson.size],
|
|
35
36
|
category: Category[itemJson.category],
|
|
36
|
-
shape: Shape[itemJson.shape],
|
|
37
|
-
color: Color[itemJson.color],
|
|
38
|
-
texture: Texture[itemJson.texture],
|
|
39
37
|
rating: Rating[itemJson.rating],
|
|
38
|
+
shape: itemJson.shape,
|
|
39
|
+
color: itemJson.color,
|
|
40
|
+
texture: itemJson.texture,
|
|
40
41
|
weight: itemJson.weight,
|
|
42
|
+
details: itemJson.details,
|
|
41
43
|
satisfiesLifestyle: itemJson.satisfiesLifestyle
|
|
42
44
|
});
|
|
43
45
|
if (itemJson.currencyAmount && item.isCurrencyCarrier()) {
|
|
44
46
|
item.addCurrency(itemJson.currencyAmount);
|
|
45
47
|
}
|
|
48
|
+
itemMap.set(item.name, item); // <-- Store in map
|
|
46
49
|
scene.addItemToRoom(item, itemJson.room);
|
|
47
50
|
}
|
|
48
51
|
// Step 4: Add Puzzles to Rooms
|
|
49
52
|
for (const puzzleJson of json.puzzles ?? []) {
|
|
53
|
+
const requiredItem = puzzleJson.requiredItem ? itemMap.get(puzzleJson.requiredItem) : undefined;
|
|
54
|
+
const rewardItem = puzzleJson.rewardItem ? itemMap.get(puzzleJson.rewardItem) : undefined;
|
|
55
|
+
if (puzzleJson.requiredItem && !requiredItem) {
|
|
56
|
+
throw new Error(`Required item '${puzzleJson.requiredItem}' not found for puzzle.`);
|
|
57
|
+
}
|
|
58
|
+
if (puzzleJson.rewardItem && !rewardItem) {
|
|
59
|
+
throw new Error(`Reward item '${puzzleJson.rewardItem}' not found for puzzle.`);
|
|
60
|
+
}
|
|
50
61
|
const puzzle = new Puzzle({
|
|
51
|
-
|
|
62
|
+
name: puzzleJson.name,
|
|
63
|
+
requiredItem,
|
|
64
|
+
rewardItem,
|
|
52
65
|
requiredPhrase: puzzleJson.requiredPhrase,
|
|
53
66
|
riddle: puzzleJson.riddle,
|
|
54
|
-
rewardItem: undefined, // could be enhanced later
|
|
55
67
|
successMessage: puzzleJson.successMessage,
|
|
56
68
|
failureMessage: puzzleJson.failureMessage,
|
|
57
69
|
hobbyTags: puzzleJson.hobbyTags
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneSynthesizer.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/sceneSynthesizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"sceneSynthesizer.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/sceneSynthesizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare class Door extends AbstractDoor {
|
|
|
12
12
|
isLockable: boolean;
|
|
13
13
|
constructor(config: IDoorConstructorConfig);
|
|
14
14
|
getOtherSide(currentRoom: Room): Room;
|
|
15
|
+
getOtherSideToName(currentRoom: Room): string;
|
|
15
16
|
attemptUnlock(itemOrSolution: string): boolean;
|
|
16
17
|
checkIfLocked(): boolean;
|
|
17
18
|
checkIfLockable(): boolean;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Logger } from '../utilities/logger.js';
|
|
2
|
-
import { capitalCase } from 'change-case';
|
|
3
2
|
import { AbstractDoor } from '../types/abstracts.js';
|
|
4
3
|
export class Door extends AbstractDoor {
|
|
5
4
|
roomA; // One side of the door
|
|
@@ -15,7 +14,6 @@ export class Door extends AbstractDoor {
|
|
|
15
14
|
this.roomB = config.roomB;
|
|
16
15
|
this.isLocked = config.isLocked || false;
|
|
17
16
|
this.unlockItemOrSolution = config.unlockItemOrSolution;
|
|
18
|
-
this.name = (config.name) ? capitalCase(config.name) : `To ${config.roomB.name}`; // Using a general name since it's bi-directional
|
|
19
17
|
this.logger = Logger.getInstance();
|
|
20
18
|
this.isLockable = !!config.unlockItemOrSolution;
|
|
21
19
|
this.logger.write(`Door created between ${this.roomA.name} and ${this.roomB.name}. Is Locked: ${this.isLocked}`);
|
|
@@ -23,6 +21,9 @@ export class Door extends AbstractDoor {
|
|
|
23
21
|
getOtherSide(currentRoom) {
|
|
24
22
|
return (this.roomA === currentRoom) ? this.roomB : this.roomA;
|
|
25
23
|
}
|
|
24
|
+
getOtherSideToName(currentRoom) {
|
|
25
|
+
return (this.roomA === currentRoom) ? `To ${this.roomB.name}` : `To ${this.roomA.name}`;
|
|
26
|
+
}
|
|
26
27
|
attemptUnlock(itemOrSolution) {
|
|
27
28
|
if (this.isLocked && this.unlockItemOrSolution && this.unlockItemOrSolution === itemOrSolution) {
|
|
28
29
|
this.isLocked = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"door.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/door.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"door.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/door.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,OAAO,IAAK,SAAQ,YAAY;IACpC,KAAK,CAAO,CAAE,uBAAuB;IACrC,KAAK,CAAO,CAAE,6BAA6B;IAC3C,QAAQ,CAAU;IAClB,oBAAoB,CAAU;IAC9B,IAAI,CAAS;IACb,MAAM,CAAS;IACf,UAAU,CAAS;IAEnB,YAAY,MAA8B;QACxC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,YAAY,CAAC,WAAiB;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAChE,CAAC;IAED,kBAAkB,CAAC,WAAiB;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1F,CAAC;IAED,aAAa,CAAC,cAAsB;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,KAAK,cAAc,EAAE,CAAC;YAC/F,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,WAAW,cAAc,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,WAAW,cAAc,EAAE,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Size, Category,
|
|
1
|
+
import { Size, Category, Rating } from '../types/enums.js';
|
|
2
2
|
import { IItemConstructorConfig } from '../types/interfaces.js';
|
|
3
3
|
import { AbstractItem } from '../types/abstracts.js';
|
|
4
4
|
export declare class Item extends AbstractItem {
|
|
@@ -7,11 +7,12 @@ export declare class Item extends AbstractItem {
|
|
|
7
7
|
description: string;
|
|
8
8
|
size: Size;
|
|
9
9
|
category: Category;
|
|
10
|
-
shape:
|
|
11
|
-
color:
|
|
12
|
-
texture:
|
|
10
|
+
shape: string;
|
|
11
|
+
color: string;
|
|
12
|
+
texture: string;
|
|
13
13
|
rating: Rating;
|
|
14
14
|
weight: number;
|
|
15
|
+
details?: string;
|
|
15
16
|
satisfiesLifestyle?: {
|
|
16
17
|
addictionTypes?: string[];
|
|
17
18
|
habitTags?: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Size, Category } from '../types/enums.js';
|
|
1
|
+
import { Size, Category, Rating } from '../types/enums.js';
|
|
2
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
3
|
import { AbstractItem } from '../types/abstracts.js';
|
|
4
4
|
export class Item extends AbstractItem {
|
|
@@ -12,12 +12,23 @@ export class Item extends AbstractItem {
|
|
|
12
12
|
texture;
|
|
13
13
|
rating;
|
|
14
14
|
weight;
|
|
15
|
+
details;
|
|
15
16
|
satisfiesLifestyle;
|
|
16
17
|
// New currency-related fields
|
|
17
18
|
_currencyAmount = 0;
|
|
18
19
|
_currencyCapacity;
|
|
19
20
|
constructor(options) {
|
|
20
21
|
super();
|
|
22
|
+
// Validate enum values
|
|
23
|
+
if (!Object.values(Size).includes(options.size)) {
|
|
24
|
+
throw new Error(`Invalid size value for ${options.name}: ${options.size}`);
|
|
25
|
+
}
|
|
26
|
+
if (!Object.values(Category).includes(options.category)) {
|
|
27
|
+
throw new Error(`Invalid category value for ${options.name}: ${options.category}`);
|
|
28
|
+
}
|
|
29
|
+
if (!Object.values(Rating).includes(options.rating)) {
|
|
30
|
+
throw new Error(`Invalid rating value for ${options.name}: ${options.rating}`);
|
|
31
|
+
}
|
|
21
32
|
this.name = options.name;
|
|
22
33
|
this.description = options.description;
|
|
23
34
|
this.size = options.size;
|
|
@@ -27,6 +38,7 @@ export class Item extends AbstractItem {
|
|
|
27
38
|
this.texture = options.texture;
|
|
28
39
|
this.rating = options.rating;
|
|
29
40
|
this.weight = options.weight;
|
|
41
|
+
this.details = options.details;
|
|
30
42
|
this.satisfiesLifestyle = options.satisfiesLifestyle;
|
|
31
43
|
this.uuid = uuidv4();
|
|
32
44
|
// Optional: you can define capacity by size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,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,CAAS;IACd,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,OAAO,CAAU;IACjB,kBAAkB,CAGvB;IAEF,8BAA8B;IACpB,eAAe,GAAW,CAAC,CAAC;IAC5B,iBAAiB,CAAU;IAErC,YAAY,OAA+B;QACzC,KAAK,EAAE,CAAC;QAER,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,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;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;QAErB,4CAA4C;QAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,IAAI,CAAC,KAAK;oBACb,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;oBAC7B,MAAM;gBACR,KAAK,IAAI,CAAC,MAAM;oBACd,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;oBAC7B,MAAM;gBACR,KAAK,IAAI,CAAC,KAAK;oBACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG;QACD,OAAO,eAAe,IAAI,CAAC,IAAI,4BAA4B,CAAC;IAC9D,CAAC;IAED,iBAAiB,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,kBAAkB,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IAC/E,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtE,CAAC;IAED,2BAA2B;IAEpB,iBAAiB;QACtB,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,iBAAiB,CAAC;IACtD,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO,CAAC,CAAC;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAChD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5D,CAAC,CAAC,QAAQ,CAAC;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc,CAAC,MAAc;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ import { IPlayerConstructorConfig, IRooms } from '../types/interfaces.js';
|
|
|
4
4
|
export declare class NPC extends Player {
|
|
5
5
|
readonly _name: string;
|
|
6
6
|
private _dialogue;
|
|
7
|
+
private _image;
|
|
7
8
|
private rooms;
|
|
8
9
|
private scene;
|
|
9
10
|
constructor(name: string, dialogue: string[], rooms: IRooms, config: IPlayerConstructorConfig);
|
|
@@ -11,4 +12,6 @@ export declare class NPC extends Player {
|
|
|
11
12
|
speak(): string;
|
|
12
13
|
autonomousMove(possibleRooms: Room[]): void;
|
|
13
14
|
moveTo(direction: string): void;
|
|
15
|
+
get image(): string;
|
|
16
|
+
set image(asciiArtImage: string);
|
|
14
17
|
}
|
|
@@ -3,6 +3,7 @@ import { GoCommand } from '../commands/go.js';
|
|
|
3
3
|
export class NPC extends Player {
|
|
4
4
|
_name;
|
|
5
5
|
_dialogue;
|
|
6
|
+
_image;
|
|
6
7
|
rooms;
|
|
7
8
|
scene;
|
|
8
9
|
constructor(name, dialogue, rooms, config) {
|
|
@@ -30,5 +31,11 @@ export class NPC extends Player {
|
|
|
30
31
|
const goCommand = new GoCommand(context);
|
|
31
32
|
goCommand.execute([direction]);
|
|
32
33
|
}
|
|
34
|
+
get image() {
|
|
35
|
+
return this._image;
|
|
36
|
+
}
|
|
37
|
+
set image(asciiArtImage) {
|
|
38
|
+
this._image = asciiArtImage;
|
|
39
|
+
}
|
|
33
40
|
}
|
|
34
41
|
//# sourceMappingURL=npc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npc.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/npc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,GAAI,SAAQ,MAAM;IACpB,KAAK,CAAS;IACf,SAAS,CAAW;IACpB,KAAK,CAAS;IACd,KAAK,CAAQ;IAErB,YAAY,IAAY,EAAE,QAAkB,EAAE,KAAa,EAAE,MAAgC;QAC3F,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACjC,CAAC;CAGF"}
|
|
1
|
+
{"version":3,"file":"npc.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/npc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,GAAI,SAAQ,MAAM;IACpB,KAAK,CAAS;IACf,SAAS,CAAW;IACpB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,KAAK,CAAQ;IAErB,YAAY,IAAY,EAAE,QAAkB,EAAE,KAAa,EAAE,MAAgC;QAC3F,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,aAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9B,CAAC;CAGF"}
|
|
@@ -16,7 +16,7 @@ export class Player extends AbstractPlayer {
|
|
|
16
16
|
constructor(config) {
|
|
17
17
|
super();
|
|
18
18
|
this._playerName = config.playerName;
|
|
19
|
-
this._currentLocation = config.startLocation || new Room({ name: 'Nexus', description: 'A featureless room' });
|
|
19
|
+
this._currentLocation = config.startLocation || new Room({ name: 'Nexus', description: 'A featureless room', roomType: 'void' });
|
|
20
20
|
this._inventory = new Inventory();
|
|
21
21
|
this.logger = Logger.getInstance();
|
|
22
22
|
this._lifestyleChoices = config.lifestyleChoices ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/player.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACV,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,OAAO,MAAO,SAAQ,cAAc;IAC/B,WAAW,CAAS;IACnB,gBAAgB,CAAO;IACvB,UAAU,CAAY;IACtB,UAAU,CAAkB;IAC5B,kBAAkB,GAAG,EAAE,CAAC;IACxB,iBAAiB,GAAqB,EAAE,CAAC;IACzC,MAAM,CAAS;IAEjB,SAAS,GAAW,CAAC,CAAC,CAAC,yBAAyB;IAExD,YAAY,MAAgC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/player.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,16 @@ import { AbstractPuzzle } from '../types/abstracts.js';
|
|
|
6
6
|
export declare class Puzzle extends AbstractPuzzle {
|
|
7
7
|
protected logger: Logger;
|
|
8
8
|
protected solved: boolean;
|
|
9
|
-
|
|
9
|
+
name: string;
|
|
10
|
+
requiredItem?: Item;
|
|
10
11
|
requiredPhrase?: string;
|
|
11
12
|
riddle?: string;
|
|
12
|
-
rewardItem
|
|
13
|
+
rewardItem: Item;
|
|
13
14
|
successMessage: string;
|
|
14
15
|
failureMessage: string;
|
|
15
16
|
hobbyTags?: string[];
|
|
16
17
|
constructor(config: IPuzzleConstructorConfig);
|
|
18
|
+
isSolved(): boolean;
|
|
17
19
|
hasRequiredItem(playerInventory: Inventory): boolean;
|
|
18
20
|
matchesRequiredPhrase(inputPhrase: string): boolean;
|
|
19
21
|
solve(providedAnswer: string, playerInventory: Inventory): {
|
|
@@ -3,6 +3,7 @@ import { AbstractPuzzle } from '../types/abstracts.js';
|
|
|
3
3
|
export class Puzzle extends AbstractPuzzle {
|
|
4
4
|
logger = Logger.getInstance();
|
|
5
5
|
solved = false;
|
|
6
|
+
name;
|
|
6
7
|
requiredItem;
|
|
7
8
|
requiredPhrase;
|
|
8
9
|
riddle;
|
|
@@ -12,17 +13,26 @@ export class Puzzle extends AbstractPuzzle {
|
|
|
12
13
|
hobbyTags;
|
|
13
14
|
constructor(config) {
|
|
14
15
|
super();
|
|
16
|
+
this.name = config.name;
|
|
15
17
|
this.requiredItem = config.requiredItem;
|
|
16
18
|
this.requiredPhrase = config.requiredPhrase;
|
|
17
19
|
this.riddle = config.riddle;
|
|
18
|
-
this.rewardItem = config.rewardItem;
|
|
19
20
|
this.successMessage = config.successMessage || 'You solved the puzzle!';
|
|
20
21
|
this.failureMessage = config.failureMessage || `You don't have the necessary item or the correct phrase to solve the puzzle.`;
|
|
21
22
|
this.hobbyTags = config.hobbyTags ?? [];
|
|
23
|
+
if (config.rewardItem) {
|
|
24
|
+
this.rewardItem = config.rewardItem;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new Error(`No reward item defined for puzzle ${this.riddle}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
isSolved() {
|
|
31
|
+
return this.solved;
|
|
22
32
|
}
|
|
23
33
|
hasRequiredItem(playerInventory) {
|
|
24
34
|
if (this.requiredItem) {
|
|
25
|
-
return playerInventory.hasItem(this.requiredItem);
|
|
35
|
+
return playerInventory.hasItem(this.requiredItem.name);
|
|
26
36
|
}
|
|
27
37
|
return false;
|
|
28
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puzzle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/puzzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,MAAO,SAAQ,cAAc;IAC9B,MAAM,GAAW,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,KAAK,CAAC;IAElB,YAAY,
|
|
1
|
+
{"version":3,"file":"puzzle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/models/puzzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,MAAO,SAAQ,cAAc;IAC9B,MAAM,GAAW,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,KAAK,CAAC;IAElB,IAAI,CAAS;IACb,YAAY,CAAQ;IACpB,cAAc,CAAU;IACxB,MAAM,CAAU;IAChB,UAAU,CAAO;IACjB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,SAAS,CAAY;IAE5B,YAAY,MAAgC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,8EAA8E,CAAC;QAC9H,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAGxC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,eAA0B;QACxC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,WAAmB;QACvC,OAAO,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAsB,EAAE,eAA0B;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sCAAsC;aAChD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;YACxF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Direction } from '../types/enums.js';
|
|
2
2
|
import { IRoomConfig } from '../types/interfaces.js';
|
|
3
3
|
import { Item } from './item.js';
|
|
4
4
|
import { Puzzle } from './puzzle.js';
|
|
@@ -11,7 +11,7 @@ export declare class Room extends AbstractRoom {
|
|
|
11
11
|
name: string;
|
|
12
12
|
description: string;
|
|
13
13
|
exits: Map<Direction, Door | string>;
|
|
14
|
-
roomType:
|
|
14
|
+
roomType: string;
|
|
15
15
|
isStartRoom: boolean;
|
|
16
16
|
inventory: Inventory;
|
|
17
17
|
supportedLifestyles?: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../utilities/logger.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Direction } from '../types/enums.js';
|
|
3
3
|
import { Door } from './door.js';
|
|
4
4
|
import { Inventory } from './inventory.js';
|
|
5
5
|
import { AbstractRoom } from '../types/abstracts.js';
|
|
@@ -19,7 +19,7 @@ export class Room extends AbstractRoom {
|
|
|
19
19
|
super();
|
|
20
20
|
this.name = config.name;
|
|
21
21
|
this.description = config.description;
|
|
22
|
-
this.roomType = config.roomType
|
|
22
|
+
this.roomType = config.roomType;
|
|
23
23
|
this.exits = config.exits || new Map();
|
|
24
24
|
this.inventory = config.inventory || new Inventory();
|
|
25
25
|
this.puzzle = config.puzzle;
|