Skip to content

Commit

Permalink
Add Muridae Market stager
Browse files Browse the repository at this point in the history
  • Loading branch information
hymccord committed Nov 30, 2023
1 parent d4e7e95 commit 2b5c952
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 18 deletions.
1 change: 0 additions & 1 deletion src/scripts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -1187,7 +1187,6 @@ import * as detailingFuncs from './modules/details/legacy';
"Iceberg": stagingFuncs.addIcebergStage,
"Living Garden": stagingFuncs.addGardenStage,
"Lost City": stagingFuncs.addLostCityStage,
"Muridae Market": stagingFuncs.addMuridaeMarketStage,
"Queso Geyser": stagingFuncs.addQuesoGeyserStage,
"Sand Dunes": stagingFuncs.addSandDunesStage,
"Seasonal Garden": stagingFuncs.addSeasonalGardenStage,
Expand Down
18 changes: 18 additions & 0 deletions src/scripts/modules/stages/environments/muridaeMarket.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {type User} from '@scripts/types/hg';
import {type IntakeMessage} from '@scripts/types/mhct';
import {type IStager} from '../stages.types';

export class MuridaeMarketStager implements IStager {
readonly environment: string = 'Muridae Market';

/**
* Report the Artisan Charm status.
*/
addStage(message: IntakeMessage, userPre: User, userPost: User, journal: unknown): void {
const charm = userPre.trinket_name;

message.stage = charm === "Artisan Charm"
? "Artisan"
: "Not Artisan";
}
}
2 changes: 2 additions & 0 deletions src/scripts/modules/stages/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {IceFortressStager} from './environments/iceFortress';
import {LabyrinthStager} from './environments/labyrinth';
import {MoussuPicchuStager} from './environments/moussuPicchu';
import {MousoleumStager} from './environments/mousoleum';
import {MuridaeMarketStager} from './environments/muridaeMarket';
import {SlushyShorelineStager} from './environments/slushyShoreline';
import {SuperBrieFactoryStager} from './environments/superBrieFactory';

Expand All @@ -25,6 +26,7 @@ const stageModules: IStager[] = [
new LabyrinthStager(),
new MoussuPicchuStager(),
new MousoleumStager(),
new MuridaeMarketStager(),
new SlushyShorelineStager(),
new SuperBrieFactoryStager(),
];
Expand Down
14 changes: 0 additions & 14 deletions src/scripts/modules/stages/legacy.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,20 +176,6 @@ export function addIcebergStage(message, user, user_post, hunt) {
}
}

/**
* Report the Artisan Charm status.
* @param {Object <string, any>} message The message to be sent.
* @param {Object <string, any>} user The user state object, when the hunt was invoked (pre-hunt).
* @param {Object <string, any>} user_post The user state object, after the hunt.
* @param {Object <string, any>} hunt The journal entry corresponding to the active hunt.
*/
export function addMuridaeMarketStage(message, user, user_post, hunt) {
message.stage = "Not Artisan";
if (user.trinket_name === "Artisan Charm") {
message.stage = "Artisan";
}
}

/**
* Report the zone and depth, if any.
* @param {Object <string, any>} message The message to be sent.
Expand Down
13 changes: 10 additions & 3 deletions tests/scripts/modules/stages/environments/muridaeMarket.spec.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
import {addMuridaeMarketStage} from "@scripts/modules/stages/legacy";
import {MuridaeMarketStager} from "@scripts/modules/stages/environments/muridaeMarket";
import {User} from "@scripts/types/hg";
import {IntakeMessage} from "@scripts/types/mhct";

describe('Muridae Market stages', () => {
it('should be for the "Muridae Market" environment', () => {
const stager = new MuridaeMarketStager();
expect(stager.environment).toBe('Muridae Market');
});

it('should set stage to "Artisan" if user has artisan charm equipped', () => {
const stager = new MuridaeMarketStager();
const message = {} as IntakeMessage;
const preUser = {trinket_name: 'Artisan Charm'} as User;
const postUser = {} as User;
const journal = {};

addMuridaeMarketStage(message, preUser, postUser, journal);
stager.addStage(message, preUser, postUser, journal);

expect(message.stage).toBe('Artisan');
});

it('should set stage to "Not Artisan" if user does not has artisan charm equipped', () => {
const stager = new MuridaeMarketStager();
const message = {} as IntakeMessage;
const preUser = {trinket_name: 'Power Charm'} as User;
const postUser = {} as User;
const journal = {};

addMuridaeMarketStage(message, preUser, postUser, journal);
stager.addStage(message, preUser, postUser, journal);

expect(message.stage).toBe('Not Artisan');
});
Expand Down

0 comments on commit 2b5c952

Please sign in to comment.