isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
51 lines (50 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PostDiceRoomActivated = void 0;
const isaac_typescript_definitions_1 = require("isaac-typescript-definitions");
const effects_1 = require("../../functions/effects");
const players_1 = require("../../functions/players");
const CustomCallback_1 = require("../private/CustomCallback");
const v = {
room: {
diceRoomActivated: false,
},
};
class PostDiceRoomActivated extends CustomCallback_1.CustomCallback {
v = v;
constructor() {
super();
this.callbacksUsed = [
// 55
[
isaac_typescript_definitions_1.ModCallback.POST_EFFECT_UPDATE,
this.postEffectUpdateDiceFloor,
[isaac_typescript_definitions_1.EffectVariant.DICE_FLOOR],
],
];
}
shouldFire = (fireArgs, optionalArgs) => {
const [_player, diceFloorSubType] = fireArgs;
const [callbackDiceFloorSubType] = optionalArgs;
return (callbackDiceFloorSubType === undefined
|| diceFloorSubType === callbackDiceFloorSubType);
};
// ModCallback.POST_EFFECT_UPDATE (55)
// EffectVariant.DICE_FLOOR (76)
postEffectUpdateDiceFloor = (effect) => {
if (v.room.diceRoomActivated) {
return;
}
// When using the debug console to go to a dice room, the player can appear on top of the dice
// floor before they snap to the door.
if (effect.FrameCount === 0) {
return;
}
const closestPlayer = (0, players_1.getClosestPlayer)(effect.Position);
if ((0, effects_1.isCloseEnoughToTriggerDiceFloor)(closestPlayer, effect)) {
v.room.diceRoomActivated = true;
this.fire(closestPlayer, effect.SubType);
}
};
}
exports.PostDiceRoomActivated = PostDiceRoomActivated;