Skip to content

Commit 3b24d96

Browse files
committed
Add Mousoleum stager
1 parent 503f8c6 commit 3b24d96

File tree

8 files changed

+43
-17
lines changed

8 files changed

+43
-17
lines changed

src/scripts/main.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1210,7 +1210,6 @@ import * as detailingFuncs from './modules/details/legacy';
12101210
"Labyrinth": stagingFuncs.addLabyrinthStage,
12111211
"Living Garden": stagingFuncs.addGardenStage,
12121212
"Lost City": stagingFuncs.addLostCityStage,
1213-
"Mousoleum": stagingFuncs.addMousoleumStage,
12141213
"Moussu Picchu": stagingFuncs.addMoussuPicchuStage,
12151214
"Muridae Market": stagingFuncs.addMuridaeMarketStage,
12161215
"Queso Geyser": stagingFuncs.addQuesoGeyserStage,
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {type User} from '@scripts/types/hg';
2+
import {type IntakeMessage} from '@scripts/types/mhct';
3+
import {type IStager} from '../stages.types';
4+
5+
export class MousoleumStager implements IStager {
6+
readonly environment: string = 'Mousoleum';
7+
8+
/* Add the "wall state" for Mousoleum hunts */
9+
addStage(message: IntakeMessage, userPre: User, userPost: User, journal: unknown): void {
10+
if (!userPre.quests.QuestMousoleum) {
11+
throw new Error('QuestMousoleum is undefined');
12+
}
13+
14+
message.stage = (userPre.quests.QuestMousoleum.has_wall) ? "Has Wall" : "No Wall";
15+
}
16+
}

src/scripts/modules/stages/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import {BountifulBeanstalkStager} from './environments/bountifulBeanstalk';
33
import {ForbiddenGroveStager} from './environments/forbiddenGrove';
44
import {FungalCavernStager} from './environments/fungalCavern';
55
import {IceFortressStager} from './environments/iceFortress';
6+
import {MousoleumStager} from './environments/mousoleum';
67
import {SuperBrieFactoryStager} from './environments/superBrieFactory';
78

89
const stageModules: IStager[] = [
910
new BountifulBeanstalkStager(),
1011
new ForbiddenGroveStager(),
1112
new FungalCavernStager(),
1213
new IceFortressStager(),
14+
new MousoleumStager(),
1315
new SuperBrieFactoryStager(),
1416
];
1517

src/scripts/modules/stages/legacy.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
/**
2-
* Add the "wall state" for Mousoleum hunts.
3-
* @param {Object <string, any>} message The message to be sent.
4-
* @param {Object <string, any>} user The user state object, when the hunt was invoked (pre-hunt).
5-
* @param {Object <string, any>} user_post The user state object, after the hunt.
6-
* @param {Object <string, any>} hunt The journal entry corresponding to the active hunt.
7-
*/
8-
export function addMousoleumStage(message, user, user_post, hunt) {
9-
message.stage = (user.quests.QuestMousoleum.has_wall) ? "Has Wall" : "No Wall";
10-
}
11-
121
/**
132
* Separate hunts with certain mice available from those without.
143
* @param {Object <string, any>} message The message to be sent.

src/scripts/types/hg.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export interface Quests {
5151
QuestLabyrinth?: unknown
5252
QuestLivingGarden?: unknown
5353
QuestLostCity?: unknown
54-
QuestMousoleum?: unknown
54+
QuestMousoleum?: quests.QuestMousoleum
5555
QuestMoussuPicchu?: unknown
5656
QuestPollutionOutbreak?: unknown
5757
QuestQuesoGeyser?: unknown

src/scripts/types/quests/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export * from '@scripts/types/quests/clawShotCity';
33
export * from '@scripts/types/quests/forbiddenGrove';
44
export * from '@scripts/types/quests/iceberg';
55
export * from '@scripts/types/quests/iceFortress';
6+
export * from '@scripts/types/quests/mousoleum';
67
export * from '@scripts/types/quests/superBrieFactory';
78
export * from '@scripts/types/quests/tableOfContents';
89
export * from '@scripts/types/quests/springHunt';

src/scripts/types/quests/mousoleum.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface QuestMousoleum {
2+
has_wall: boolean;
3+
}
Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,39 @@
1-
import {addMousoleumStage} from '@scripts/modules/stages/legacy';
1+
import {MousoleumStager} from '@scripts/modules/stages/environments/mousoleum';
22
import {User} from '@scripts/types/hg';
33
import {IntakeMessage} from '@scripts/types/mhct';
44

55
describe('MousoleumStager', () => {
66
it('sets stage to "Has Wall" if user has Mousoleum wall', () => {
7+
const stager = new MousoleumStager();
8+
79
const message = {stage: null} as IntakeMessage;
810
const userPre = {quests: {QuestMousoleum: {has_wall: true}}} as User;
9-
const userPost: User = {} as User;
11+
const userPost = {} as User;
1012
const journal = {};
11-
addMousoleumStage(message, userPre, userPost, journal);
13+
stager.addStage(message, userPre, userPost, journal);
1214
expect(message.stage).toBe('Has Wall');
1315
});
1416

1517
it('sets stage to "No Wall" if user does not have Mousoleum wall', () => {
18+
const stager = new MousoleumStager();
19+
1620
const message = {stage: null} as IntakeMessage;
1721
const userPre = {quests: {QuestMousoleum: {has_wall: false}}} as User;
1822
const userPost = {} as User;
1923
const journal = {};
20-
addMousoleumStage(message, userPre, userPost, journal);
24+
stager.addStage(message, userPre, userPost, journal);
2125
expect(message.stage).toBe('No Wall');
2226
});
27+
28+
it('throws an error if QuestMousoleum is undefined', () => {
29+
const stager = new MousoleumStager();
30+
31+
const message = {stage: null} as IntakeMessage;
32+
const userPre = {quests: {}} as User;
33+
const userPost = {} as User;
34+
const journal = {};
35+
expect(() => {
36+
stager.addStage(message, userPre, userPost, journal);
37+
}).toThrowError('QuestMousoleum is undefined');
38+
});
2339
});

0 commit comments

Comments
 (0)