isaacscript-common 87.5.1 → 87.6.0
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/dist/callbackClasses.d.ts +1 -0
- package/dist/callbackClasses.d.ts.map +1 -1
- package/dist/callbackClasses.js +5 -3
- package/dist/callbackClasses.lua +4 -0
- package/dist/callbacks.d.ts +118 -117
- package/dist/callbacks.d.ts.map +1 -1
- package/dist/callbacks.js +1 -0
- package/dist/callbacks.lua +1 -0
- package/dist/classes/ModUpgraded.js +2 -2
- package/dist/classes/callbacks/InputActionFilter.js +3 -3
- package/dist/classes/callbacks/InputActionPlayer.js +6 -6
- package/dist/classes/callbacks/PostBoneSwing.js +2 -2
- package/dist/classes/callbacks/PostCollectibleEmpty.js +2 -2
- package/dist/classes/callbacks/PostCursedTeleport.js +5 -5
- package/dist/classes/callbacks/PostDiceRoomActivated.js +2 -2
- package/dist/classes/callbacks/PostEntityRemoveFilter.d.ts +9 -0
- package/dist/classes/callbacks/PostEntityRemoveFilter.d.ts.map +1 -0
- package/dist/classes/callbacks/PostEntityRemoveFilter.js +21 -0
- package/dist/classes/callbacks/PostEntityRemoveFilter.lua +23 -0
- package/dist/classes/callbacks/PostGridEntityCollision.js +10 -10
- package/dist/classes/callbacks/PostGridEntityCustomCollision.js +8 -8
- package/dist/classes/callbacks/PostGridEntityCustomRemove.js +2 -2
- package/dist/classes/callbacks/PostGridEntityRemove.js +3 -3
- package/dist/classes/callbacks/PostItemDischarge.js +2 -2
- package/dist/classes/callbacks/PostKeyboardChanged.js +2 -2
- package/dist/classes/callbacks/PostNewRoomEarly.js +2 -2
- package/dist/classes/callbacks/PostPickupSelectionFilter.d.ts.map +1 -1
- package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -3
- package/dist/classes/callbacks/PostPlayerChangeHealth.js +2 -2
- package/dist/classes/callbacks/PostPurchase.js +9 -9
- package/dist/classes/callbacks/PostUsePillFilter.js +2 -2
- package/dist/classes/callbacks/PreBerserkDeath.js +4 -4
- package/dist/classes/callbacks/PreEntitySpawnFilter.js +3 -3
- package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +5 -5
- package/dist/classes/features/callbackLogic/EsauJrDetection.js +2 -2
- package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +5 -5
- package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +4 -4
- package/dist/classes/features/callbackLogic/ItemPickupDetection.js +4 -4
- package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +2 -2
- package/dist/classes/features/other/CustomTrapdoors.d.ts.map +1 -1
- package/dist/classes/features/other/CustomTrapdoors.js +21 -21
- package/dist/classes/features/other/DeployJSONRoom.js +4 -4
- package/dist/classes/features/other/DisableInputs.js +3 -3
- package/dist/classes/features/other/ModdedElementSets.js +2 -2
- package/dist/classes/features/other/NoSirenSteal.js +4 -4
- package/dist/classes/features/other/PickupIndexCreation.js +5 -5
- package/dist/classes/features/other/PonyDetection.js +2 -2
- package/dist/classes/features/other/PressInput.js +2 -2
- package/dist/classes/features/other/PreventChildEntities.js +4 -4
- package/dist/classes/features/other/RoomHistory.js +5 -5
- package/dist/classes/features/other/SaveDataManager.js +2 -2
- package/dist/classes/features/other/StageHistory.js +2 -2
- package/dist/classes/features/other/StartAmbush.js +2 -2
- package/dist/classes/features/other/TaintedLazarusPlayers.js +2 -2
- package/dist/classes/features/other/customStages/gridEntities.js +4 -4
- package/dist/classes/features/other/customStages/streakText.js +4 -4
- package/dist/classes/features/other/extraConsoleCommands/commands.js +8 -8
- package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +2 -2
- package/dist/enums/ModCallbackCustom.d.ts +134 -117
- package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/enums/ModCallbackCustom.js +134 -117
- package/dist/enums/ModCallbackCustom.lua +119 -117
- package/dist/functions/bosses.js +2 -2
- package/dist/functions/charge.js +2 -2
- package/dist/functions/collectibles.js +2 -2
- package/dist/functions/deepCopy.js +6 -6
- package/dist/functions/doors.js +3 -3
- package/dist/functions/easing.js +2 -2
- package/dist/functions/emptyRoom.js +5 -5
- package/dist/functions/entities.js +8 -8
- package/dist/functions/familiars.js +2 -2
- package/dist/functions/flag.js +2 -2
- package/dist/functions/gridEntities.js +23 -23
- package/dist/functions/gridEntitiesSpecific.js +2 -2
- package/dist/functions/isaacAPIClass.js +2 -2
- package/dist/functions/level.js +3 -3
- package/dist/functions/levelGrid.js +6 -6
- package/dist/functions/logEntities.js +8 -8
- package/dist/functions/math.js +4 -4
- package/dist/functions/nextStage.js +10 -10
- package/dist/functions/npcs.js +10 -10
- package/dist/functions/pickupVariants.js +6 -6
- package/dist/functions/playerCollectibles.js +2 -2
- package/dist/functions/playerHealth.js +8 -8
- package/dist/functions/playerIndex.js +3 -3
- package/dist/functions/players.js +4 -4
- package/dist/functions/pocketItems.js +2 -2
- package/dist/functions/revive.js +15 -15
- package/dist/functions/roomGrid.js +2 -2
- package/dist/functions/rooms.d.ts +1 -2
- package/dist/functions/rooms.d.ts.map +1 -1
- package/dist/functions/rooms.js +39 -41
- package/dist/functions/rooms.lua +1 -2
- package/dist/functions/sort.js +2 -2
- package/dist/functions/spawnCollectible.js +3 -3
- package/dist/functions/stage.js +16 -16
- package/dist/functions/string.js +6 -6
- package/dist/functions/tears.js +2 -2
- package/dist/functions/trinketGive.js +4 -4
- package/dist/functions/types.js +3 -3
- package/dist/index.rollup.d.ts +151 -122
- package/dist/interfaces/private/AddCallbackParametersCustom.d.ts +6 -0
- package/dist/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -1
- package/dist/isaacscript-common.lua +159 -123
- package/dist/lib/jsonLua.js +32 -32
- package/dist/shouldFire.d.ts.map +1 -1
- package/dist/shouldFire.js +54 -57
- package/dist/types/Increment.d.ts.map +1 -1
- package/dist/types/PickingUpItem.d.ts +10 -3
- package/dist/types/PickingUpItem.d.ts.map +1 -1
- package/dist/types/PickingUpItem.js +10 -3
- package/dist/types/PickingUpItem.lua +8 -3
- package/package.json +1 -1
- package/src/callbackClasses.ts +1 -0
- package/src/callbacks.ts +1 -0
- package/src/classes/ModUpgraded.ts +2 -2
- package/src/classes/callbacks/InputActionFilter.ts +3 -3
- package/src/classes/callbacks/InputActionPlayer.ts +6 -6
- package/src/classes/callbacks/PostBoneSwing.ts +2 -2
- package/src/classes/callbacks/PostCollectibleEmpty.ts +2 -2
- package/src/classes/callbacks/PostCursedTeleport.ts +5 -5
- package/src/classes/callbacks/PostDiceRoomActivated.ts +2 -2
- package/src/classes/callbacks/PostEntityRemoveFilter.ts +22 -0
- package/src/classes/callbacks/PostGridEntityCollision.ts +10 -10
- package/src/classes/callbacks/PostGridEntityCustomCollision.ts +8 -8
- package/src/classes/callbacks/PostGridEntityCustomRemove.ts +2 -2
- package/src/classes/callbacks/PostGridEntityRemove.ts +3 -3
- package/src/classes/callbacks/PostItemDischarge.ts +2 -2
- package/src/classes/callbacks/PostKeyboardChanged.ts +2 -2
- package/src/classes/callbacks/PostNewRoomEarly.ts +2 -2
- package/src/classes/callbacks/PostPickupSelectionFilter.ts +4 -3
- package/src/classes/callbacks/PostPlayerChangeHealth.ts +2 -2
- package/src/classes/callbacks/PostPurchase.ts +9 -9
- package/src/classes/callbacks/PostUsePillFilter.ts +2 -2
- package/src/classes/callbacks/PreBerserkDeath.ts +4 -4
- package/src/classes/callbacks/PreEntitySpawnFilter.ts +3 -3
- package/src/classes/callbacks/PreRoomEntitySpawnFilter.ts +5 -5
- package/src/classes/features/callbackLogic/EsauJrDetection.ts +2 -2
- package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +5 -5
- package/src/classes/features/callbackLogic/GridEntityUpdateDetection.ts +4 -4
- package/src/classes/features/callbackLogic/ItemPickupDetection.ts +4 -4
- package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +2 -2
- package/src/classes/features/other/CustomTrapdoors.ts +23 -21
- package/src/classes/features/other/DeployJSONRoom.ts +4 -4
- package/src/classes/features/other/DisableInputs.ts +3 -3
- package/src/classes/features/other/ModdedElementSets.ts +2 -2
- package/src/classes/features/other/NoSirenSteal.ts +4 -4
- package/src/classes/features/other/PickupIndexCreation.ts +5 -5
- package/src/classes/features/other/PonyDetection.ts +2 -2
- package/src/classes/features/other/PressInput.ts +2 -2
- package/src/classes/features/other/PreventChildEntities.ts +4 -4
- package/src/classes/features/other/RoomHistory.ts +5 -5
- package/src/classes/features/other/SaveDataManager.ts +2 -2
- package/src/classes/features/other/StageHistory.ts +2 -2
- package/src/classes/features/other/StartAmbush.ts +2 -2
- package/src/classes/features/other/TaintedLazarusPlayers.ts +2 -2
- package/src/classes/features/other/customStages/gridEntities.ts +4 -4
- package/src/classes/features/other/customStages/streakText.ts +4 -4
- package/src/classes/features/other/extraConsoleCommands/commands.ts +8 -8
- package/src/classes/features/other/saveDataManager/glowingHourGlass.ts +4 -2
- package/src/enums/ModCallbackCustom.ts +18 -0
- package/src/functions/bosses.ts +2 -2
- package/src/functions/charge.ts +2 -2
- package/src/functions/collectibles.ts +2 -2
- package/src/functions/deepCopy.ts +6 -6
- package/src/functions/doors.ts +3 -3
- package/src/functions/easing.ts +2 -2
- package/src/functions/emptyRoom.ts +5 -5
- package/src/functions/entities.ts +8 -8
- package/src/functions/familiars.ts +2 -2
- package/src/functions/flag.ts +2 -2
- package/src/functions/gridEntities.ts +23 -23
- package/src/functions/gridEntitiesSpecific.ts +2 -2
- package/src/functions/isaacAPIClass.ts +2 -2
- package/src/functions/level.ts +3 -3
- package/src/functions/levelGrid.ts +6 -6
- package/src/functions/logEntities.ts +8 -8
- package/src/functions/math.ts +4 -4
- package/src/functions/nextStage.ts +10 -10
- package/src/functions/npcs.ts +10 -10
- package/src/functions/pickupVariants.ts +6 -6
- package/src/functions/playerCollectibles.ts +2 -2
- package/src/functions/playerHealth.ts +8 -8
- package/src/functions/playerIndex.ts +3 -3
- package/src/functions/players.ts +4 -4
- package/src/functions/pocketItems.ts +2 -2
- package/src/functions/revive.ts +15 -15
- package/src/functions/roomGrid.ts +2 -2
- package/src/functions/rooms.ts +39 -41
- package/src/functions/sort.ts +2 -2
- package/src/functions/spawnCollectible.ts +3 -3
- package/src/functions/stage.ts +16 -16
- package/src/functions/string.ts +6 -6
- package/src/functions/tears.ts +2 -2
- package/src/functions/trinketGive.ts +4 -4
- package/src/functions/types.ts +3 -3
- package/src/interfaces/private/AddCallbackParametersCustom.ts +7 -0
- package/src/lib/jsonLua.js +32 -32
- package/src/shouldFire.ts +54 -57
- package/src/types/Increment.ts +2 -2
- package/src/types/PickingUpItem.ts +10 -3
|
@@ -40,8 +40,8 @@ class PostItemDischarge extends CustomCallback_1.CustomCallback {
|
|
|
40
40
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
41
41
|
const [_player, collectibleType] = fireArgs;
|
|
42
42
|
const [callbackCollectibleType] = optionalArgs;
|
|
43
|
-
return (callbackCollectibleType === undefined
|
|
44
|
-
callbackCollectibleType === collectibleType);
|
|
43
|
+
return (callbackCollectibleType === undefined
|
|
44
|
+
|| callbackCollectibleType === collectibleType);
|
|
45
45
|
};
|
|
46
46
|
// ModCallback.PRE_NPC_COLLISION (30)
|
|
47
47
|
// EntityType.SUCKER (61)
|
|
@@ -22,8 +22,8 @@ class PostKeyboardChanged extends CustomCallback_1.CustomCallback {
|
|
|
22
22
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
23
23
|
const [keyboard, pressed] = fireArgs;
|
|
24
24
|
const [callbackKeyboard, callbackPressed] = optionalArgs;
|
|
25
|
-
return ((callbackKeyboard === undefined || callbackKeyboard === keyboard)
|
|
26
|
-
(callbackPressed === undefined || callbackPressed === pressed));
|
|
25
|
+
return ((callbackKeyboard === undefined || callbackKeyboard === keyboard)
|
|
26
|
+
&& (callbackPressed === undefined || callbackPressed === pressed));
|
|
27
27
|
};
|
|
28
28
|
postRender = () => {
|
|
29
29
|
for (const keyboard of v.run.pressedKeys) {
|
|
@@ -67,8 +67,8 @@ class PostNewRoomEarly extends CustomCallback_1.CustomCallback {
|
|
|
67
67
|
const oldTopLeftWallPtrHash2 = this.currentRoomTopLeftWallPtrHash2;
|
|
68
68
|
this.currentRoomTopLeftWallPtrHash = GetPtrHash(topLeftWall);
|
|
69
69
|
this.currentRoomTopLeftWallPtrHash2 = GetPtrHash(topLeftWall2);
|
|
70
|
-
return (oldTopLeftWallPtrHash !== this.currentRoomTopLeftWallPtrHash
|
|
71
|
-
oldTopLeftWallPtrHash2 !== this.currentRoomTopLeftWallPtrHash2);
|
|
70
|
+
return (oldTopLeftWallPtrHash !== this.currentRoomTopLeftWallPtrHash
|
|
71
|
+
|| oldTopLeftWallPtrHash2 !== this.currentRoomTopLeftWallPtrHash2);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
exports.PostNewRoomEarly = PostNewRoomEarly;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostPickupSelectionFilter.d.ts","sourceRoot":"","sources":["../../../src/classes/callbacks/PostPickupSelectionFilter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,KAAK,CAAC,GAAG,iBAAiB,CAAC,4BAA4B,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,cAAc,CAAC,CAAC,CAAC;;IAU9D;;;;OAIG;IACH,UAAmB,UAAU,GAC3B,UAAU,QAAQ,CAAC,CAAC,CAAC,EACrB,cAAc,YAAY,CAAC,CAAC,CAAC,KAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"PostPickupSelectionFilter.d.ts","sourceRoot":"","sources":["../../../src/classes/callbacks/PostPickupSelectionFilter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,KAAK,CAAC,GAAG,iBAAiB,CAAC,4BAA4B,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,cAAc,CAAC,CAAC,CAAC;;IAU9D;;;;OAIG;IACH,UAAmB,UAAU,GAC3B,UAAU,QAAQ,CAAC,CAAC,CAAC,EACrB,cAAc,YAAY,CAAC,CAAC,CAAC,KAC5B,OAAO,CAUR;IAGF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAIuC;CAC5E"}
|
|
@@ -19,9 +19,10 @@ class PostPickupSelectionFilter extends CustomCallback_1.CustomCallback {
|
|
|
19
19
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
20
20
|
const [_pickup, pickupVariant, subType] = fireArgs;
|
|
21
21
|
const [callbackPickupVariant, callbackPickupSubType] = optionalArgs;
|
|
22
|
-
return ((callbackPickupVariant === undefined
|
|
23
|
-
callbackPickupVariant === pickupVariant)
|
|
24
|
-
(callbackPickupSubType === undefined
|
|
22
|
+
return ((callbackPickupVariant === undefined
|
|
23
|
+
|| callbackPickupVariant === pickupVariant)
|
|
24
|
+
&& (callbackPickupSubType === undefined
|
|
25
|
+
|| callbackPickupSubType === subType));
|
|
25
26
|
};
|
|
26
27
|
// ModCallback.POST_PICKUP_SELECTION (37)
|
|
27
28
|
postPickupSelection = (pickup, variant, subType) => this.fire(pickup, variant, subType);
|
|
@@ -36,8 +36,8 @@ class PostPlayerChangeHealth extends CustomCallback_1.CustomCallback {
|
|
|
36
36
|
const storedHealthValue = playerHealthMap.get(healthType);
|
|
37
37
|
const currentHealthValue = (0, playerHealth_1.getPlayerHealthType)(player, healthType);
|
|
38
38
|
playerHealthMap.set(healthType, currentHealthValue);
|
|
39
|
-
if (storedHealthValue !== undefined
|
|
40
|
-
storedHealthValue !== currentHealthValue) {
|
|
39
|
+
if (storedHealthValue !== undefined
|
|
40
|
+
&& storedHealthValue !== currentHealthValue) {
|
|
41
41
|
const difference = currentHealthValue - storedHealthValue;
|
|
42
42
|
this.fire(player, healthType, difference, storedHealthValue, currentHealthValue);
|
|
43
43
|
}
|
|
@@ -36,10 +36,10 @@ class PostPurchase extends CustomCallback_1.CustomCallback {
|
|
|
36
36
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
37
37
|
const [_player, pickup] = fireArgs;
|
|
38
38
|
const [callbackPickupVariant, callbackPickupSubType] = optionalArgs;
|
|
39
|
-
return ((callbackPickupVariant === undefined
|
|
40
|
-
callbackPickupVariant === pickup.Variant)
|
|
41
|
-
(callbackPickupSubType === undefined
|
|
42
|
-
callbackPickupSubType === pickup.SubType));
|
|
39
|
+
return ((callbackPickupVariant === undefined
|
|
40
|
+
|| callbackPickupVariant === pickup.Variant)
|
|
41
|
+
&& (callbackPickupSubType === undefined
|
|
42
|
+
|| callbackPickupSubType === pickup.SubType));
|
|
43
43
|
};
|
|
44
44
|
// ModCallback.POST_USE_ITEM (3)
|
|
45
45
|
postUseItem = (_collectibleType, _rng, player) => {
|
|
@@ -63,17 +63,17 @@ class PostPurchase extends CustomCallback_1.CustomCallback {
|
|
|
63
63
|
(0, playerDataStructures_1.mapSetPlayer)(v.room.playersHoldingItemOnLastFrameMap, player, isHoldingItem);
|
|
64
64
|
// Assume that if the player did not use an active item, card, or pill recently, then they
|
|
65
65
|
// purchased an item.
|
|
66
|
-
if (!wasHoldingItemOnLastFrame
|
|
67
|
-
isHoldingItem
|
|
68
|
-
!this.playerUsedItemRecently(player)) {
|
|
66
|
+
if (!wasHoldingItemOnLastFrame
|
|
67
|
+
&& isHoldingItem
|
|
68
|
+
&& !this.playerUsedItemRecently(player)) {
|
|
69
69
|
this.playerPickedUpNewItem(player);
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
playerUsedItemRecently(player) {
|
|
73
73
|
const gameFrameCount = cachedClasses_1.game.GetFrameCount();
|
|
74
74
|
const usedCollectibleOnFrame = (0, playerDataStructures_1.defaultMapGetPlayer)(v.room.playersUsedItemOnFrame, player);
|
|
75
|
-
return (gameFrameCount === usedCollectibleOnFrame
|
|
76
|
-
gameFrameCount === usedCollectibleOnFrame + 1);
|
|
75
|
+
return (gameFrameCount === usedCollectibleOnFrame
|
|
76
|
+
|| gameFrameCount === usedCollectibleOnFrame + 1);
|
|
77
77
|
}
|
|
78
78
|
playerPickedUpNewItem(player) {
|
|
79
79
|
const pickups = (0, entitiesSpecific_1.getPickups)();
|
|
@@ -52,8 +52,8 @@ class PostUsePillFilter extends CustomCallback_1.CustomCallback {
|
|
|
52
52
|
const pocketItems = (0, pocketItems_1.getPocketItems)(player);
|
|
53
53
|
if (!(0, pocketItems_1.pocketItemsEquals)(oldPocketItems, pocketItems)) {
|
|
54
54
|
const oldPocketItemSlot1 = oldPocketItems.find((pocketItem) => pocketItem.slot === isaac_typescript_definitions_1.PocketItemSlot.SLOT_1);
|
|
55
|
-
if (oldPocketItemSlot1 !== undefined
|
|
56
|
-
oldPocketItemSlot1.type === PocketItemType_1.PocketItemType.PILL) {
|
|
55
|
+
if (oldPocketItemSlot1 !== undefined
|
|
56
|
+
&& oldPocketItemSlot1.type === PocketItemType_1.PocketItemType.PILL) {
|
|
57
57
|
return oldPocketItemSlot1.subType;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -30,10 +30,10 @@ class PreBerserkDeath extends CustomCallback_1.CustomCallback {
|
|
|
30
30
|
const berserkEffect = effects.GetCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.BERSERK);
|
|
31
31
|
const numHitsRemaining = (0, players_1.getPlayerNumHitsRemaining)(player);
|
|
32
32
|
// If the Berserk effect will end on the next frame and we have no hearts left.
|
|
33
|
-
if (berserkEffect !== undefined
|
|
34
|
-
berserkEffect.Cooldown === 1
|
|
35
|
-
numHitsRemaining === 0
|
|
36
|
-
!(0, revive_1.willPlayerRevive)(player)) {
|
|
33
|
+
if (berserkEffect !== undefined
|
|
34
|
+
&& berserkEffect.Cooldown === 1
|
|
35
|
+
&& numHitsRemaining === 0
|
|
36
|
+
&& !(0, revive_1.willPlayerRevive)(player)) {
|
|
37
37
|
this.fire(player);
|
|
38
38
|
}
|
|
39
39
|
};
|
|
@@ -14,9 +14,9 @@ class PreEntitySpawnFilter extends CustomCallback_1.CustomCallback {
|
|
|
14
14
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
15
15
|
const [entityType, variant, subType] = fireArgs;
|
|
16
16
|
const [callbackEntityType, callbackVariant, callbackSubType] = optionalArgs;
|
|
17
|
-
return ((callbackEntityType === undefined || callbackEntityType === entityType)
|
|
18
|
-
(callbackVariant === undefined || callbackVariant === variant)
|
|
19
|
-
(callbackSubType === undefined || callbackSubType === subType));
|
|
17
|
+
return ((callbackEntityType === undefined || callbackEntityType === entityType)
|
|
18
|
+
&& (callbackVariant === undefined || callbackVariant === variant)
|
|
19
|
+
&& (callbackSubType === undefined || callbackSubType === subType));
|
|
20
20
|
};
|
|
21
21
|
// ModCallback.PRE_ENTITY_SPAWN (24)
|
|
22
22
|
preEntitySpawn = (entityType, variant, subType, position, velocity, spawner, initSeed) => this.fire(entityType, variant, subType, position, velocity, spawner, initSeed);
|
|
@@ -14,11 +14,11 @@ class PreRoomEntitySpawnFilter extends CustomCallback_1.CustomCallback {
|
|
|
14
14
|
shouldFire = (fireArgs, optionalArgs) => {
|
|
15
15
|
const [entityTypeOrGridEntityXMLType, variant, subType] = fireArgs;
|
|
16
16
|
const [callbackEntityTypeOrGridEntityXMLType, callbackVariant, callbackSubType,] = optionalArgs;
|
|
17
|
-
return ((callbackEntityTypeOrGridEntityXMLType === undefined
|
|
18
|
-
callbackEntityTypeOrGridEntityXMLType
|
|
19
|
-
entityTypeOrGridEntityXMLType)
|
|
20
|
-
(callbackVariant === undefined || callbackVariant === variant)
|
|
21
|
-
(callbackSubType === undefined || callbackSubType === subType));
|
|
17
|
+
return ((callbackEntityTypeOrGridEntityXMLType === undefined
|
|
18
|
+
|| callbackEntityTypeOrGridEntityXMLType
|
|
19
|
+
=== entityTypeOrGridEntityXMLType)
|
|
20
|
+
&& (callbackVariant === undefined || callbackVariant === variant)
|
|
21
|
+
&& (callbackSubType === undefined || callbackSubType === subType));
|
|
22
22
|
};
|
|
23
23
|
// ModCallback.PRE_ROOM_ENTITY_SPAWN (71)
|
|
24
24
|
preRoomEntitySpawn = (entityTypeOrGridEntityXMLType, variant, subType, gridIndex, initSeed) => this.fire(entityTypeOrGridEntityXMLType, variant, subType, gridIndex, initSeed);
|
|
@@ -35,8 +35,8 @@ class EsauJrDetection extends Feature_1.Feature {
|
|
|
35
35
|
postUpdate = () => {
|
|
36
36
|
const gameFrameCount = cachedClasses_1.game.GetFrameCount();
|
|
37
37
|
// Check to see if it is the frame after the player has used Esau Jr.
|
|
38
|
-
if (v.run.usedEsauJrFrame === null
|
|
39
|
-
gameFrameCount < v.run.usedEsauJrFrame + 1) {
|
|
38
|
+
if (v.run.usedEsauJrFrame === null
|
|
39
|
+
|| gameFrameCount < v.run.usedEsauJrFrame + 1) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
v.run.usedEsauJrFrame = null;
|
|
@@ -136,11 +136,11 @@ class GameReorderedCallbacks extends Feature_1.Feature {
|
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
if (((0, frames_1.onGameFrame)(0)
|
|
140
|
-
(0, frames_1.onRenderFrame)(this.renderFrameRunStarted)
|
|
141
|
-
this.currentStage !== stage
|
|
142
|
-
this.currentStageType !== stageType)
|
|
143
|
-
!this.forceNewRoom) {
|
|
139
|
+
if (((0, frames_1.onGameFrame)(0)
|
|
140
|
+
|| (0, frames_1.onRenderFrame)(this.renderFrameRunStarted)
|
|
141
|
+
|| this.currentStage !== stage
|
|
142
|
+
|| this.currentStageType !== stageType)
|
|
143
|
+
&& !this.forceNewRoom) {
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
146
|
this.forceNewRoom = false;
|
|
@@ -69,8 +69,8 @@ class GridEntityUpdateDetection extends Feature_1.Feature {
|
|
|
69
69
|
for (const [gridIndex, gridEntityTuple] of v.room.initializedGridEntities) {
|
|
70
70
|
const [storedGridEntityType, storedGridEntityVariant] = gridEntityTuple;
|
|
71
71
|
const gridEntity = gridEntitiesMap.get(gridIndex);
|
|
72
|
-
if (gridEntity === undefined
|
|
73
|
-
gridEntity.GetType() !== storedGridEntityType) {
|
|
72
|
+
if (gridEntity === undefined
|
|
73
|
+
|| gridEntity.GetType() !== storedGridEntityType) {
|
|
74
74
|
v.room.initializedGridEntities.delete(gridIndex);
|
|
75
75
|
const gridEntityTypeCustom = this.customGridEntities.getCustomGridEntityType(gridIndex);
|
|
76
76
|
if (gridEntityTypeCustom === undefined) {
|
|
@@ -113,8 +113,8 @@ class GridEntityUpdateDetection extends Feature_1.Feature {
|
|
|
113
113
|
checkNewGridEntity(gridIndex, gridEntity) {
|
|
114
114
|
const gridEntityType = gridEntity.GetType();
|
|
115
115
|
const gridEntityTuple = v.room.initializedGridEntities.get(gridIndex);
|
|
116
|
-
if (gridEntityTuple === undefined
|
|
117
|
-
gridEntityTuple[0] !== gridEntityType) {
|
|
116
|
+
if (gridEntityTuple === undefined
|
|
117
|
+
|| gridEntityTuple[0] !== gridEntityType) {
|
|
118
118
|
this.updateTupleInMap(gridEntity);
|
|
119
119
|
const gridEntityTypeCustom = this.customGridEntities.getCustomGridEntityType(gridEntity);
|
|
120
120
|
if (gridEntityTypeCustom === undefined) {
|
|
@@ -44,8 +44,8 @@ class ItemPickupDetection extends Feature_1.Feature {
|
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
queueEmpty(player, pickingUpItem) {
|
|
47
|
-
if (pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.NULL
|
|
48
|
-
(0, types_1.asNumber)(pickingUpItem.subType) === 0) {
|
|
47
|
+
if (pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.NULL
|
|
48
|
+
|| (0, types_1.asNumber)(pickingUpItem.subType) === 0) {
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
this.postItemPickup.fire(player, pickingUpItem);
|
|
@@ -57,8 +57,8 @@ class ItemPickupDetection extends Feature_1.Feature {
|
|
|
57
57
|
// This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned false.
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
|
-
if (queuedItem.Type !== pickingUpItem.itemType
|
|
61
|
-
queuedItem.ID !== pickingUpItem.subType) {
|
|
60
|
+
if (queuedItem.Type !== pickingUpItem.itemType
|
|
61
|
+
|| queuedItem.ID !== pickingUpItem.subType) {
|
|
62
62
|
// Record which item we are picking up.
|
|
63
63
|
pickingUpItem.itemType = queuedItem.Type;
|
|
64
64
|
pickingUpItem.subType = queuedItem.ID;
|
|
@@ -135,8 +135,8 @@ class PlayerCollectibleDetection extends Feature_1.Feature {
|
|
|
135
135
|
*/
|
|
136
136
|
// ModCallbackCustom.POST_ITEM_PICKUP
|
|
137
137
|
postItemPickup = (player, pickingUpItem) => {
|
|
138
|
-
if (pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.TRINKET
|
|
139
|
-
pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.NULL) {
|
|
138
|
+
if (pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.TRINKET
|
|
139
|
+
|| pickingUpItem.itemType === isaac_typescript_definitions_1.ItemType.NULL) {
|
|
140
140
|
return;
|
|
141
141
|
}
|
|
142
142
|
const newCollectibleCount = player.GetCollectibleCount();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTrapdoors.d.ts","sourceRoot":"","sources":["../../../../src/classes/features/other/CustomTrapdoors.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EAKV,SAAS,EACV,MAAM,8BAA8B,CAAC;AAoCtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAqDhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAO/B;IAKJ;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IAExC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAmD5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAMzB;IAEF,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,8BAA8B;IAiDtC,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,4BAA4B;IA+CpC,OAAO,CAAC,iCAAiC;IAqBzC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAcjD;IAEF,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;
|
|
1
|
+
{"version":3,"file":"CustomTrapdoors.d.ts","sourceRoot":"","sources":["../../../../src/classes/features/other/CustomTrapdoors.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EAKV,SAAS,EACV,MAAM,8BAA8B,CAAC;AAoCtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAqDhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAO/B;IAKJ;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IAExC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAmD5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAMzB;IAEF,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,8BAA8B;IAiDtC,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,4BAA4B;IA+CpC,OAAO,CAAC,iCAAiC;IAqBzC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAcjD;IAEF,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,gCAAgC;IAuCxC,OAAO,CAAC,2BAA2B;IAoCnC,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,8BAA8B;IAmDtC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAEzC;IAEF,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,eAAe;IAUvB;;;;;;;;;;;;;;;;;;OAkBG;IAEI,iCAAiC,CACtC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,CACf,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,gBAAgB,EAAE,UAAU,EAC5B,oBAAoB,EAAE,SAAS,KAC5B,IAAI,GACR,IAAI;IAUP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IAEI,mBAAmB,CACxB,mBAAmB,EAAE,GAAG,GAAG,MAAM,EACjC,eAAe,CAAC,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,UAAU,EAC7B,oBAAoB,CAAC,EAAE,SAAS,EAChC,QAAQ,SAAmC,EAC3C,SAAS,CAAC,EAAE,OAAO,GAClB,UAAU;CAiDd"}
|
|
@@ -147,8 +147,8 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
147
147
|
// black.
|
|
148
148
|
}
|
|
149
149
|
checkPixelationToBlackComplete() {
|
|
150
|
-
if (v.run.state !== StageTravelState_1.StageTravelState.PIXELATION_TO_BLACK
|
|
151
|
-
v.run.stateRenderFrame === null) {
|
|
150
|
+
if (v.run.state !== StageTravelState_1.StageTravelState.PIXELATION_TO_BLACK
|
|
151
|
+
|| v.run.stateRenderFrame === null) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
154
154
|
const renderFrameScreenBlack = v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES;
|
|
@@ -202,9 +202,9 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
202
202
|
return destinationFunc;
|
|
203
203
|
}
|
|
204
204
|
checkSecondPixelationHalfWay() {
|
|
205
|
-
if (v.run.state
|
|
206
|
-
StageTravelState_1.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY
|
|
207
|
-
v.run.stateRenderFrame === null) {
|
|
205
|
+
if (v.run.state
|
|
206
|
+
!== StageTravelState_1.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY
|
|
207
|
+
|| v.run.stateRenderFrame === null) {
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
210
|
const renderFrameScreenBlack = v.run.stateRenderFrame + PIXELATION_TO_BLACK_FRAMES;
|
|
@@ -250,9 +250,9 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
250
250
|
this.disableInputs.enableAllInputs(tstlClassName);
|
|
251
251
|
}
|
|
252
252
|
drawBlackSprite() {
|
|
253
|
-
if (v.run.state !== StageTravelState_1.StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END
|
|
254
|
-
v.run.state
|
|
255
|
-
StageTravelState_1.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY) {
|
|
253
|
+
if (v.run.state !== StageTravelState_1.StageTravelState.WAITING_FOR_FIRST_PIXELATION_TO_END
|
|
254
|
+
&& v.run.state
|
|
255
|
+
!== StageTravelState_1.StageTravelState.WAITING_FOR_SECOND_PIXELATION_TO_GET_HALF_WAY) {
|
|
256
256
|
return;
|
|
257
257
|
}
|
|
258
258
|
if (!this.blackSprite.IsLoaded()) {
|
|
@@ -296,9 +296,9 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
296
296
|
shouldTrapdoorOpen(gridEntity, firstSpawn) {
|
|
297
297
|
const room = cachedClasses_1.game.GetRoom();
|
|
298
298
|
const roomClear = room.IsClear();
|
|
299
|
-
return (!(0, positionVelocity_1.anyPlayerCloserThan)(gridEntity.Position, TRAPDOOR_OPEN_DISTANCE)
|
|
300
|
-
!this.isPlayerCloseAfterBoss(gridEntity.Position)
|
|
301
|
-
!shouldBeClosedFromStartingInRoomWithEnemies(firstSpawn, roomClear));
|
|
299
|
+
return (!(0, positionVelocity_1.anyPlayerCloserThan)(gridEntity.Position, TRAPDOOR_OPEN_DISTANCE)
|
|
300
|
+
&& !this.isPlayerCloseAfterBoss(gridEntity.Position)
|
|
301
|
+
&& !shouldBeClosedFromStartingInRoomWithEnemies(firstSpawn, roomClear));
|
|
302
302
|
}
|
|
303
303
|
isPlayerCloseAfterBoss(position) {
|
|
304
304
|
const room = cachedClasses_1.game.GetRoom();
|
|
@@ -306,9 +306,9 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
306
306
|
const roomClearGameFrame = this.roomClearFrame.getRoomClearGameFrame();
|
|
307
307
|
// In order to prevent a player from accidentally entering a freshly-spawned trapdoor after
|
|
308
308
|
// killing the boss of the floor, we use a wider open distance for a short amount of frames.
|
|
309
|
-
if (roomType !== isaac_typescript_definitions_1.RoomType.BOSS
|
|
310
|
-
roomClearGameFrame === undefined
|
|
311
|
-
(0, frames_1.onOrAfterRenderFrame)(roomClearGameFrame + TRAPDOOR_BOSS_REACTION_FRAMES)) {
|
|
309
|
+
if (roomType !== isaac_typescript_definitions_1.RoomType.BOSS
|
|
310
|
+
|| roomClearGameFrame === undefined
|
|
311
|
+
|| (0, frames_1.onOrAfterRenderFrame)(roomClearGameFrame + TRAPDOOR_BOSS_REACTION_FRAMES)) {
|
|
312
312
|
return false;
|
|
313
313
|
}
|
|
314
314
|
return (0, positionVelocity_1.anyPlayerCloserThan)(position, TRAPDOOR_OPEN_DISTANCE_AFTER_BOSS);
|
|
@@ -328,9 +328,9 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
328
328
|
}
|
|
329
329
|
if (
|
|
330
330
|
// We don't want a Pony dash to transition to a new floor or a crawl space.
|
|
331
|
-
!this.ponyDetection.isPlayerUsingPony(player)
|
|
332
|
-
!(0, playerIndex_1.isChildPlayer)(player)
|
|
333
|
-
canPlayerInteractWithTrapdoor(player)) {
|
|
331
|
+
!this.ponyDetection.isPlayerUsingPony(player)
|
|
332
|
+
&& !(0, playerIndex_1.isChildPlayer)(player)
|
|
333
|
+
&& canPlayerInteractWithTrapdoor(player)) {
|
|
334
334
|
this.playerTouchedCustomTrapdoor(gridEntity, trapdoorDescription, player);
|
|
335
335
|
return; // Prevent two players from touching the same entity.
|
|
336
336
|
}
|
|
@@ -515,8 +515,8 @@ class CustomTrapdoors extends Feature_1.Feature {
|
|
|
515
515
|
* will be used that emulates a vanilla trapdoor.
|
|
516
516
|
*/
|
|
517
517
|
spawnCustomTrapdoor(gridIndexOrPosition, destinationName, destinationStage, destinationStageType, anm2Path = "gfx/grid/door_11_trapdoor.anm2", spawnOpen) {
|
|
518
|
-
if (destinationName !== undefined
|
|
519
|
-
!this.destinationFuncMap.has(destinationName)) {
|
|
518
|
+
if (destinationName !== undefined
|
|
519
|
+
&& !this.destinationFuncMap.has(destinationName)) {
|
|
520
520
|
error(`Failed to spawn a custom trapdoor with a destination of "${destinationName}" since a destination with that name has not been registered with the "registerCustomTrapdoorDestination" function. (If you are trying to go to a custom stage, the custom stage library should automatically do this for you when your mod first boots.)`);
|
|
521
521
|
}
|
|
522
522
|
destinationStage ??= this.stageHistory.getNextStageWithHistory();
|
|
@@ -570,8 +570,8 @@ function canPlayerInteractWithTrapdoor(player) {
|
|
|
570
570
|
// certain animations.
|
|
571
571
|
const sprite = player.GetSprite();
|
|
572
572
|
const animation = sprite.GetAnimation();
|
|
573
|
-
return (!player.IsHoldingItem()
|
|
574
|
-
!ANIMATIONS_THAT_PREVENT_STAGE_TRAVEL.has(animation));
|
|
573
|
+
return (!player.IsHoldingItem()
|
|
574
|
+
&& !ANIMATIONS_THAT_PREVENT_STAGE_TRAVEL.has(animation));
|
|
575
575
|
}
|
|
576
576
|
function setPlayerAttributes(trapdoorPlayer, position) {
|
|
577
577
|
// Snap the player to the exact position of the trapdoor so that they cleanly jump down the hole.
|
|
@@ -92,9 +92,9 @@ class DeployJSONRoom extends Feature_1.Feature {
|
|
|
92
92
|
const position = (0, roomGrid_1.gridCoordinatesToWorldPosition)(x, y);
|
|
93
93
|
const seed = rng.Next();
|
|
94
94
|
let entity;
|
|
95
|
-
if (entityType === isaac_typescript_definitions_1.EntityType.PICKUP
|
|
95
|
+
if (entityType === isaac_typescript_definitions_1.EntityType.PICKUP
|
|
96
96
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
97
|
-
variant === isaac_typescript_definitions_1.PickupVariant.COLLECTIBLE) {
|
|
97
|
+
&& variant === isaac_typescript_definitions_1.PickupVariant.COLLECTIBLE) {
|
|
98
98
|
const collectibleType = (0, types_1.asCollectibleType)(subType);
|
|
99
99
|
const options = roomType === isaac_typescript_definitions_1.RoomType.ANGEL;
|
|
100
100
|
entity = (0, spawnCollectible_1.spawnCollectible)(collectibleType, position, seed, options);
|
|
@@ -103,9 +103,9 @@ class DeployJSONRoom extends Feature_1.Feature {
|
|
|
103
103
|
entity = (0, entities_1.spawnWithSeed)(entityType, variant, subType, position, seed);
|
|
104
104
|
}
|
|
105
105
|
// For some reason, Pitfalls do not spawn with the correct collision classes.
|
|
106
|
-
if (entityType === isaac_typescript_definitions_1.EntityType.PITFALL
|
|
106
|
+
if (entityType === isaac_typescript_definitions_1.EntityType.PITFALL
|
|
107
107
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
108
|
-
variant === isaac_typescript_definitions_1.PitfallVariant.PITFALL) {
|
|
108
|
+
&& variant === isaac_typescript_definitions_1.PitfallVariant.PITFALL) {
|
|
109
109
|
entity.EntityCollisionClass = isaac_typescript_definitions_1.EntityCollisionClass.ENEMIES;
|
|
110
110
|
entity.GridCollisionClass = isaac_typescript_definitions_1.EntityGridCollisionClass.WALLS;
|
|
111
111
|
}
|
|
@@ -89,9 +89,9 @@ class DisableInputs extends Feature_1.Feature {
|
|
|
89
89
|
* @public
|
|
90
90
|
*/
|
|
91
91
|
areInputsEnabled() {
|
|
92
|
-
return (v.run.disableInputs.size === 0
|
|
93
|
-
v.run.enableAllInputsWithBlacklistMap.size === 0
|
|
94
|
-
v.run.disableAllInputsWithWhitelistMap.size === 0);
|
|
92
|
+
return (v.run.disableInputs.size === 0
|
|
93
|
+
&& v.run.enableAllInputsWithBlacklistMap.size === 0
|
|
94
|
+
&& v.run.disableAllInputsWithWhitelistMap.size === 0);
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
97
|
* Helper function to enable all inputs. Use this function to set things back to normal after
|
|
@@ -280,8 +280,8 @@ class ModdedElementSets extends Feature_1.Feature {
|
|
|
280
280
|
}
|
|
281
281
|
lazyInitEdenCollectibleTypesSet() {
|
|
282
282
|
for (const collectibleType of this.getCollectibleTypes()) {
|
|
283
|
-
if ((0, collectibles_1.isHiddenCollectible)(collectibleType)
|
|
284
|
-
(0, collectibleTag_1.collectibleHasTag)(collectibleType, isaac_typescript_definitions_1.ItemConfigTag.NO_EDEN)) {
|
|
283
|
+
if ((0, collectibles_1.isHiddenCollectible)(collectibleType)
|
|
284
|
+
|| (0, collectibleTag_1.collectibleHasTag)(collectibleType, isaac_typescript_definitions_1.ItemConfigTag.NO_EDEN)) {
|
|
285
285
|
continue;
|
|
286
286
|
}
|
|
287
287
|
if ((0, collectibles_1.isActiveCollectible)(collectibleType)) {
|
|
@@ -51,13 +51,13 @@ class NoSirenSteal extends Feature_1.Feature {
|
|
|
51
51
|
blacklistEntryExists(incomingFamiliarVariant, incomingFamiliarSubType) {
|
|
52
52
|
for (const familiarTuple of v.run.familiarBlacklist) {
|
|
53
53
|
const [familiarVariant, familiarSubType] = familiarTuple;
|
|
54
|
-
if (familiarVariant === incomingFamiliarVariant
|
|
55
|
-
familiarSubType === incomingFamiliarSubType) {
|
|
54
|
+
if (familiarVariant === incomingFamiliarVariant
|
|
55
|
+
&& familiarSubType === incomingFamiliarSubType) {
|
|
56
56
|
// There is an entry that matches the variant and sub-type exactly.
|
|
57
57
|
return true;
|
|
58
58
|
}
|
|
59
|
-
if (familiarVariant === incomingFamiliarVariant
|
|
60
|
-
familiarSubType === undefined) {
|
|
59
|
+
if (familiarVariant === incomingFamiliarVariant
|
|
60
|
+
&& familiarSubType === undefined) {
|
|
61
61
|
// There is an entry that matches all sub-types for this variant.
|
|
62
62
|
return true;
|
|
63
63
|
}
|
|
@@ -73,9 +73,9 @@ class PickupIndexCreation extends Feature_1.Feature {
|
|
|
73
73
|
const pickupIndexFromLevelData = this.getPickupIndexFromPreviousData(pickup);
|
|
74
74
|
const room = cachedClasses_1.game.GetRoom();
|
|
75
75
|
const isFirstVisit = room.IsFirstVisit();
|
|
76
|
-
if (pickupIndexFromLevelData !== undefined
|
|
77
|
-
!isFirstVisit
|
|
78
|
-
(0, frames_1.onOrBeforeRoomFrame)(0)) {
|
|
76
|
+
if (pickupIndexFromLevelData !== undefined
|
|
77
|
+
&& !isFirstVisit
|
|
78
|
+
&& (0, frames_1.onOrBeforeRoomFrame)(0)) {
|
|
79
79
|
v.room.pickupIndexes.set(ptrHash, pickupIndexFromLevelData);
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
@@ -219,8 +219,8 @@ __decorate([
|
|
|
219
219
|
], PickupIndexCreation.prototype, "getPickupIndex", null);
|
|
220
220
|
function getStoredPickupIndex(pickup, pickupDescriptions) {
|
|
221
221
|
for (const [pickupIndex, pickupDescription] of pickupDescriptions) {
|
|
222
|
-
if ((0, vector_1.vectorEquals)(pickupDescription.position, pickup.Position)
|
|
223
|
-
pickupDescription.initSeed === pickup.InitSeed) {
|
|
222
|
+
if ((0, vector_1.vectorEquals)(pickupDescription.position, pickup.Position)
|
|
223
|
+
&& pickupDescription.initSeed === pickup.InitSeed) {
|
|
224
224
|
return pickupIndex;
|
|
225
225
|
}
|
|
226
226
|
}
|
|
@@ -41,8 +41,8 @@ class PonyDetection extends Feature_1.Feature {
|
|
|
41
41
|
postPEffectUpdateReordered = (player) => {
|
|
42
42
|
const effects = player.GetEffects();
|
|
43
43
|
const entityFlags = player.GetEntityFlags();
|
|
44
|
-
const hasPonyCollectibleEffect = effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.PONY)
|
|
45
|
-
effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.WHITE_PONY);
|
|
44
|
+
const hasPonyCollectibleEffect = effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.PONY)
|
|
45
|
+
|| effects.HasCollectibleEffect(isaac_typescript_definitions_1.CollectibleType.WHITE_PONY);
|
|
46
46
|
const isPonyActiveOnPreviousFrame = (0, playerDataStructures_1.setHasPlayer)(v.run.playersIsPonyActive, player);
|
|
47
47
|
const hasPonyFlags = (0, flag_1.hasFlag)(entityFlags, ...FLAGS_WHEN_PONY_IS_ACTIVE);
|
|
48
48
|
const isPonyActiveNow = hasPonyCollectibleEffect || (isPonyActiveOnPreviousFrame && hasPonyFlags);
|
|
@@ -45,8 +45,8 @@ class PressInput extends Feature_1.Feature {
|
|
|
45
45
|
for (let i = v.run.buttonActionPairs.length - 1; i >= 0; i--) {
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
47
47
|
const pair = v.run.buttonActionPairs[i];
|
|
48
|
-
if (pair.playerIndex === playerIndex
|
|
49
|
-
pair.buttonAction === buttonAction) {
|
|
48
|
+
if (pair.playerIndex === playerIndex
|
|
49
|
+
&& pair.buttonAction === buttonAction) {
|
|
50
50
|
v.run.buttonActionPairs.splice(i);
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
@@ -28,10 +28,10 @@ class PreventChildEntities extends Feature_1.Feature {
|
|
|
28
28
|
}
|
|
29
29
|
// ModCallback.POST_NPC_INIT (27)
|
|
30
30
|
postNPCInit = (npc) => {
|
|
31
|
-
const spawnerEntityMatch = npc.SpawnerEntity !== undefined
|
|
32
|
-
v.room.preventingEntities.has(GetPtrHash(npc.SpawnerEntity));
|
|
33
|
-
const parentMatch = npc.Parent !== undefined
|
|
34
|
-
v.room.preventingEntities.has(GetPtrHash(npc.Parent));
|
|
31
|
+
const spawnerEntityMatch = npc.SpawnerEntity !== undefined
|
|
32
|
+
&& v.room.preventingEntities.has(GetPtrHash(npc.SpawnerEntity));
|
|
33
|
+
const parentMatch = npc.Parent !== undefined
|
|
34
|
+
&& v.room.preventingEntities.has(GetPtrHash(npc.Parent));
|
|
35
35
|
if (spawnerEntityMatch || parentMatch) {
|
|
36
36
|
npc.Remove();
|
|
37
37
|
}
|
|
@@ -165,11 +165,11 @@ class RoomHistory extends Feature_1.Feature {
|
|
|
165
165
|
if (latestRoomDescription === undefined) {
|
|
166
166
|
return false;
|
|
167
167
|
}
|
|
168
|
-
return (startSeedString !== latestRoomDescription.startSeedString
|
|
169
|
-
stage !== latestRoomDescription.stage
|
|
170
|
-
stageType !== latestRoomDescription.stageType
|
|
171
|
-
roomListIndex !== latestRoomDescription.roomListIndex
|
|
172
|
-
roomVisitedCount !== latestRoomDescription.roomVisitedCount);
|
|
168
|
+
return (startSeedString !== latestRoomDescription.startSeedString
|
|
169
|
+
|| stage !== latestRoomDescription.stage
|
|
170
|
+
|| stageType !== latestRoomDescription.stageType
|
|
171
|
+
|| roomListIndex !== latestRoomDescription.roomListIndex
|
|
172
|
+
|| roomVisitedCount !== latestRoomDescription.roomVisitedCount);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
exports.RoomHistory = RoomHistory;
|
|
@@ -194,8 +194,8 @@ class SaveDataManager extends Feature_1.Feature {
|
|
|
194
194
|
*/
|
|
195
195
|
storeClassConstructorsFromObject(luaMap) {
|
|
196
196
|
const tstlClassName = (0, tstlClass_1.getTSTLClassName)(luaMap);
|
|
197
|
-
if (tstlClassName !== undefined
|
|
198
|
-
!NON_USER_DEFINED_CLASS_NAMES.has(tstlClassName)) {
|
|
197
|
+
if (tstlClassName !== undefined
|
|
198
|
+
&& !NON_USER_DEFINED_CLASS_NAMES.has(tstlClassName)) {
|
|
199
199
|
this.classConstructors.set(tstlClassName, luaMap);
|
|
200
200
|
}
|
|
201
201
|
for (const [_key, value] of luaMap) {
|
|
@@ -225,8 +225,8 @@ class StageHistory extends Feature_1.Feature {
|
|
|
225
225
|
if (stageType === undefined) {
|
|
226
226
|
return v.run.stageHistory.some((stageHistoryEntry) => stageHistoryEntry.stage === stage);
|
|
227
227
|
}
|
|
228
|
-
return v.run.stageHistory.some((stageHistoryEntry) => stageHistoryEntry.stage === stage
|
|
229
|
-
stageHistoryEntry.stageType === stageType);
|
|
228
|
+
return v.run.stageHistory.some((stageHistoryEntry) => stageHistoryEntry.stage === stage
|
|
229
|
+
&& stageHistoryEntry.stageType === stageType);
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
exports.StageHistory = StageHistory;
|
|
@@ -50,8 +50,8 @@ class StartAmbush extends Feature_1.Feature {
|
|
|
50
50
|
futureSack.Remove();
|
|
51
51
|
const sackPtrHash = GetPtrHash(futureSack);
|
|
52
52
|
const coins = (0, pickupsSpecific_1.getCoins)();
|
|
53
|
-
const coinsFromSack = coins.filter((pickup) => pickup.SpawnerEntity !== undefined
|
|
54
|
-
GetPtrHash(pickup.SpawnerEntity) === sackPtrHash);
|
|
53
|
+
const coinsFromSack = coins.filter((pickup) => pickup.SpawnerEntity !== undefined
|
|
54
|
+
&& GetPtrHash(pickup.SpawnerEntity) === sackPtrHash);
|
|
55
55
|
(0, entities_1.removeEntities)(coinsFromSack);
|
|
56
56
|
});
|
|
57
57
|
}
|
|
@@ -70,8 +70,8 @@ class TaintedLazarusPlayers extends Feature_1.Feature {
|
|
|
70
70
|
* we have one Tainted Lazarus and one Dead Tainted Lazarus.
|
|
71
71
|
*/
|
|
72
72
|
checkDequeue() {
|
|
73
|
-
if (v.run.queuedTaintedLazarus.length === 0
|
|
74
|
-
v.run.queuedDeadTaintedLazarus.length === 0) {
|
|
73
|
+
if (v.run.queuedTaintedLazarus.length === 0
|
|
74
|
+
|| v.run.queuedDeadTaintedLazarus.length === 0) {
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
const taintedLazarus = v.run.queuedTaintedLazarus.shift();
|
|
@@ -14,8 +14,8 @@ const constants_1 = require("./constants");
|
|
|
14
14
|
function setCustomDecorationGraphics(customStage, gridEntity) {
|
|
15
15
|
// If the end-user did not specify custom decoration graphics, default to Basement graphics. (We
|
|
16
16
|
// don't have to adjust anything for this case.)
|
|
17
|
-
if (customStage.decorationsPNGPath === undefined
|
|
18
|
-
customStage.decorationsANM2Path === undefined) {
|
|
17
|
+
if (customStage.decorationsPNGPath === undefined
|
|
18
|
+
&& customStage.decorationsANM2Path === undefined) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
const gridEntityType = gridEntity.GetType();
|
|
@@ -42,8 +42,8 @@ function setCustomDecorationGraphics(customStage, gridEntity) {
|
|
|
42
42
|
function setCustomRockGraphics(customStage, gridEntity) {
|
|
43
43
|
// If the end-user did not specify custom rock graphics, default to Basement graphics. (We don't
|
|
44
44
|
// have to adjust anything for this case.)
|
|
45
|
-
if (customStage.rocksPNGPath === undefined
|
|
46
|
-
customStage.rocksANM2Path === undefined) {
|
|
45
|
+
if (customStage.rocksPNGPath === undefined
|
|
46
|
+
&& customStage.rocksANM2Path === undefined) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const gridEntityRock = gridEntity.ToRock();
|
|
@@ -82,8 +82,8 @@ function streakTextPostRender() {
|
|
|
82
82
|
checkEndBottomStreakText();
|
|
83
83
|
}
|
|
84
84
|
function checkEndTopStreakText() {
|
|
85
|
-
if (v_1.v.run.topStreakTextStartedRenderFrame === null
|
|
86
|
-
v_1.v.run.topStreakText.animation !== UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY) {
|
|
85
|
+
if (v_1.v.run.topStreakTextStartedRenderFrame === null
|
|
86
|
+
|| v_1.v.run.topStreakText.animation !== UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY) {
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
const elapsedFrames = (0, frames_1.getElapsedRenderFramesSince)(v_1.v.run.topStreakTextStartedRenderFrame);
|
|
@@ -177,8 +177,8 @@ function renderStreakText(customStage, streakText, position) {
|
|
|
177
177
|
streakText.frame = 0;
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
|
-
if (streakText.animation === UIStreakAnimation_1.UIStreakAnimation.TEXT
|
|
181
|
-
streakText.frame === TEXT_STAY_FRAME) {
|
|
180
|
+
if (streakText.animation === UIStreakAnimation_1.UIStreakAnimation.TEXT
|
|
181
|
+
&& streakText.frame === TEXT_STAY_FRAME) {
|
|
182
182
|
streakText.animation = UIStreakAnimation_1.UIStreakAnimation.TEXT_STAY;
|
|
183
183
|
streakText.frame = 0;
|
|
184
184
|
}
|