isaacscript-common 14.1.3 → 14.2.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/index.d.ts +919 -141
- package/dist/isaacscript-common.lua +4752 -1790
- package/dist/src/callbacks.d.ts +102 -20
- package/dist/src/callbacks.d.ts.map +1 -1
- package/dist/src/callbacks.lua +124 -1
- package/dist/src/classes/ModFeature.d.ts.map +1 -1
- package/dist/src/classes/ModFeature.lua +22 -1
- package/dist/src/classes/ModUpgraded.d.ts +10 -5
- package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
- package/dist/src/classes/ModUpgraded.lua +30 -11
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts +5 -2
- package/dist/src/classes/callbacks/PostCustomRevive.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostCustomRevive.lua +12 -4
- package/dist/src/classes/callbacks/PostGridEntityBroken.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCollision.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomBroken.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomCollision.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomInit.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomRemove.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomRender.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityCustomStateChanged.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityCustomUpdate.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityInit.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityRemove.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostGridEntityRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostGridEntityRender.lua +17 -0
- package/dist/src/classes/callbacks/PostGridEntityStateChanged.lua +1 -1
- package/dist/src/classes/callbacks/PostGridEntityUpdate.lua +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PostHolyMantleRemoved.lua +3 -4
- package/dist/src/classes/callbacks/PostItemDischarge.d.ts +43 -0
- package/dist/src/classes/callbacks/PostItemDischarge.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostItemDischarge.lua +113 -0
- package/dist/src/classes/callbacks/PostItemPickup.d.ts +6 -0
- package/dist/src/classes/callbacks/PostItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostItemPickup.lua +17 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostLaserInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNPCInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.d.ts +14 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNPCStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostPickupCollect.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupCollect.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupCollect.lua +35 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupInitFirst.lua +32 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPickupStateChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostPitUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPitUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPitUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.d.ts +15 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeHealth.lua +52 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.d.ts +16 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeStat.lua +94 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.d.ts +15 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerChangeType.lua +37 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleAdded.lua +17 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.d.ts +6 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerCollectibleRemoved.lua +17 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.d.ts +8 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerInitFirst.lua +39 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.d.ts +13 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPlayerInitLate.lua +29 -0
- package/dist/src/classes/callbacks/PostPoopRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPoopRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPoopRender.lua +24 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPoopUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPressurePlateRender.lua +24 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPressurePlateUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostProjectileInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostPurchase.d.ts +18 -0
- package/dist/src/classes/callbacks/PostPurchase.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPurchase.lua +56 -0
- package/dist/src/classes/callbacks/PostRockRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostRockRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRockRender.lua +24 -0
- package/dist/src/classes/callbacks/PostRockUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostRockUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRockUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostSacrifice.d.ts +15 -0
- package/dist/src/classes/callbacks/PostSacrifice.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSacrifice.lua +52 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotAnimationChanged.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotCollision.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSlotCollision.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotCollision.lua +25 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts +14 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotDestroyed.lua +65 -0
- package/dist/src/classes/callbacks/PostSlotInit.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotInit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotInit.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotRender.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotRender.lua +17 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.d.ts +6 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSlotUpdate.lua +17 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSpikesUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostTNTRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostTNTRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTNTRender.lua +24 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.d.ts +7 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTNTUpdate.lua +24 -0
- package/dist/src/classes/callbacks/PostTearInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostTearInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTearInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTearInitVeryLate.lua +30 -0
- package/dist/src/classes/callbacks/PostTransformation.d.ts +18 -0
- package/dist/src/classes/callbacks/PostTransformation.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostTransformation.lua +53 -0
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts +1 -1
- package/dist/src/classes/callbacks/PreBerserkDeath.d.ts.map +1 -1
- package/dist/src/classes/callbacks/PreBerserkDeath.lua +3 -4
- package/dist/src/classes/callbacks/PreItemPickup.d.ts +6 -0
- package/dist/src/classes/callbacks/PreItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PreItemPickup.lua +17 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectibleType.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.d.ts +11 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackItemPickup.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackLaser.lua +19 -0
- package/dist/src/classes/callbacks/validation/{CustomCallbackRevive.d.ts → CustomCallbackNPC.d.ts} +4 -4
- package/dist/src/classes/callbacks/validation/CustomCallbackNPC.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackNPC.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.d.ts +12 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPickup.lua +22 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts +5 -2
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts.map +1 -1
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPoop.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPressurePlate.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackProjectile.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRock.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.d.ts +12 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSlot.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.lua +4 -4
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTNT.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackTear.lua +19 -0
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts +1 -1
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/CustomGridEntities.lua +27 -30
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts +2 -2
- package/dist/src/classes/features/callbackLogic/CustomRevive.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/CustomRevive.lua +6 -6
- package/dist/src/classes/features/callbackLogic/EsauJrDetection.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GameReorderedCallbacks.lua +3 -18
- package/dist/src/classes/features/callbackLogic/GridEntityCollisionDetection.d.ts.map +1 -1
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts +12 -0
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/GridEntityRenderDetection.lua +33 -0
- package/dist/src/classes/features/callbackLogic/{GridEntityDetection.d.ts → GridEntityUpdateDetection.d.ts} +3 -3
- package/dist/src/classes/features/callbackLogic/GridEntityUpdateDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/{GridEntityDetection.lua → GridEntityUpdateDetection.lua} +11 -14
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts +20 -0
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/ItemPickupDetection.lua +60 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts +47 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/PlayerCollectibleDetection.lua +154 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts +18 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/SlotRenderDetection.lua +51 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts +17 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.d.ts.map +1 -0
- package/dist/src/classes/features/callbackLogic/SlotUpdateDetection.lua +45 -0
- package/dist/src/classes/features/other/RunInNFrames.d.ts.map +1 -1
- package/dist/src/classes/features/other/RunInNFrames.lua +9 -0
- package/dist/src/classes/features/other/SaveDataManager.d.ts +215 -0
- package/dist/src/classes/features/other/SaveDataManager.d.ts.map +1 -0
- package/dist/src/classes/features/other/SaveDataManager.lua +190 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.d.ts +6 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/glowingHourGlass.lua +98 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.d.ts +6 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/loadFromDisk.lua +81 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.d.ts +7 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/restoreDefaults.lua +69 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.d.ts +5 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.d.ts.map +1 -0
- package/dist/src/classes/features/other/saveDataManager/saveToDisk.lua +46 -0
- package/dist/src/classes/private/CustomCallback.d.ts +2 -3
- package/dist/src/classes/private/CustomCallback.d.ts.map +1 -1
- package/dist/src/classes/private/CustomCallback.lua +2 -5
- package/dist/src/classes/private/Feature.d.ts +1 -0
- package/dist/src/classes/private/Feature.d.ts.map +1 -1
- package/dist/src/classes/private/Feature.lua +1 -0
- package/dist/src/core/upgradeMod.d.ts.map +1 -1
- package/dist/src/decorators.d.ts +1 -1
- package/dist/src/decorators.d.ts.map +1 -1
- package/dist/src/decorators.lua +6 -8
- package/dist/src/enums/ISCFeature.d.ts +15 -9
- package/dist/src/enums/ISCFeature.d.ts.map +1 -1
- package/dist/src/enums/ISCFeature.lua +30 -9
- package/dist/src/enums/ModCallbackCustom.d.ts +34 -20
- package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom2.d.ts +61 -20
- package/dist/src/enums/ModCallbackCustom2.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom2.lua +102 -20
- package/dist/src/enums/{private/SerializationBrand.d.ts → SerializationBrand.d.ts} +6 -1
- package/dist/src/enums/SerializationBrand.d.ts.map +1 -0
- package/dist/src/enums/{private/SerializationBrand.lua → SerializationBrand.lua} +1 -0
- package/dist/src/features/customItemPool.d.ts +52 -0
- package/dist/src/features/customItemPool.d.ts.map +1 -0
- package/dist/src/features/customItemPool.lua +111 -0
- package/dist/src/features/deployJSONRoom.d.ts +6 -4
- package/dist/src/features/deployJSONRoom.d.ts.map +1 -1
- package/dist/src/features/deployJSONRoom.lua +6 -4
- package/dist/src/features/fadeInRemover.d.ts.map +1 -1
- package/dist/src/features/fadeInRemover.lua +4 -16
- package/dist/src/features/saveDataManager/exports.d.ts +14 -4
- package/dist/src/features/saveDataManager/exports.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/exports.lua +38 -0
- package/dist/src/features/saveDataManager/load.d.ts +2 -1
- package/dist/src/features/saveDataManager/load.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/load.lua +10 -4
- package/dist/src/features/saveDataManager/main.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/main.lua +12 -5
- package/dist/src/features/saveDataManager/maps.d.ts +14 -0
- package/dist/src/features/saveDataManager/maps.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/maps.lua +7 -0
- package/dist/src/features.d.ts +31 -12
- package/dist/src/features.d.ts.map +1 -1
- package/dist/src/features.lua +24 -6
- package/dist/src/functions/array.d.ts.map +1 -1
- package/dist/src/functions/array.lua +4 -5
- package/dist/src/functions/bitSet128.d.ts +2 -2
- package/dist/src/functions/bitSet128.lua +3 -3
- package/dist/src/functions/color.d.ts +2 -2
- package/dist/src/functions/color.lua +3 -3
- package/dist/src/functions/decorators.d.ts +21 -0
- package/dist/src/functions/decorators.d.ts.map +1 -1
- package/dist/src/functions/deepCopy.d.ts +11 -4
- package/dist/src/functions/deepCopy.d.ts.map +1 -1
- package/dist/src/functions/deepCopy.lua +84 -32
- package/dist/src/functions/deepCopyTests.lua +1 -1
- package/dist/src/functions/initArray.d.ts +4 -4
- package/dist/src/functions/initArray.d.ts.map +1 -1
- package/dist/src/functions/initArray.lua +6 -12
- package/dist/src/functions/jsonRoom.d.ts +11 -0
- package/dist/src/functions/jsonRoom.d.ts.map +1 -1
- package/dist/src/functions/jsonRoom.lua +11 -0
- package/dist/src/functions/kColor.d.ts +2 -2
- package/dist/src/functions/kColor.lua +3 -3
- package/dist/src/functions/merge.d.ts +40 -0
- package/dist/src/functions/merge.d.ts.map +1 -0
- package/dist/src/{features/saveDataManager → functions}/merge.lua +84 -37
- package/dist/src/functions/mergeTests.d.ts +1 -2
- package/dist/src/functions/mergeTests.d.ts.map +1 -1
- package/dist/src/functions/mergeTests.lua +3 -4
- package/dist/src/functions/rng.d.ts +2 -2
- package/dist/src/functions/rng.lua +3 -3
- package/dist/src/functions/serialization.d.ts.map +1 -1
- package/dist/src/functions/serialization.lua +22 -0
- package/dist/src/functions/tstlClass.d.ts +0 -10
- package/dist/src/functions/tstlClass.d.ts.map +1 -1
- package/dist/src/functions/tstlClass.lua +2 -42
- package/dist/src/functions/vector.d.ts +2 -2
- package/dist/src/functions/vector.lua +3 -3
- package/dist/src/functions/weighted.d.ts +12 -1
- package/dist/src/functions/weighted.d.ts.map +1 -1
- package/dist/src/functions/weighted.lua +27 -10
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.lua +24 -0
- package/dist/src/interfaces/SaveData.d.ts +3 -7
- package/dist/src/interfaces/SaveData.d.ts.map +1 -1
- package/dist/src/interfaces/SaveData.lua +0 -11
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts +195 -2
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts.map +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.d.ts +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.d.ts.map +1 -1
- package/dist/src/objects/isaacAPIClassTypeToBrand.lua +1 -1
- package/dist/src/types/AnyClass.d.ts +2 -0
- package/dist/src/types/AnyClass.d.ts.map +1 -0
- package/dist/src/types/AnyClass.lua +2 -0
- package/dist/src/types/AnyFunction.d.ts +6 -0
- package/dist/src/types/AnyFunction.d.ts.map +1 -0
- package/dist/src/types/AnyFunction.lua +2 -0
- package/dist/src/types/FunctionTuple.d.ts +2 -4
- package/dist/src/types/FunctionTuple.d.ts.map +1 -1
- package/dist/src/types/HasFunction.d.ts +5 -0
- package/dist/src/types/HasFunction.d.ts.map +1 -0
- package/dist/src/types/HasFunction.lua +2 -0
- package/package.json +1 -1
- package/src/callbacks.ts +88 -5
- package/src/classes/ModFeature.ts +31 -1
- package/src/classes/ModUpgraded.ts +49 -21
- package/src/classes/callbacks/PostCustomRevive.ts +22 -2
- package/src/classes/callbacks/PostGridEntityBroken.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCollision.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomBroken.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomCollision.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomInit.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomRemove.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomRender.ts +11 -0
- package/src/classes/callbacks/PostGridEntityCustomStateChanged.ts +1 -1
- package/src/classes/callbacks/PostGridEntityCustomUpdate.ts +1 -1
- package/src/classes/callbacks/PostGridEntityInit.ts +1 -1
- package/src/classes/callbacks/PostGridEntityRemove.ts +1 -1
- package/src/classes/callbacks/PostGridEntityRender.ts +11 -0
- package/src/classes/callbacks/PostGridEntityStateChanged.ts +1 -1
- package/src/classes/callbacks/PostGridEntityUpdate.ts +1 -1
- package/src/classes/callbacks/PostHolyMantleRemoved.ts +5 -8
- package/src/classes/callbacks/PostItemDischarge.ts +181 -0
- package/src/classes/callbacks/PostItemPickup.ts +11 -0
- package/src/classes/callbacks/PostLaserInitLate.ts +28 -0
- package/src/classes/callbacks/PostNPCInitLate.ts +28 -0
- package/src/classes/callbacks/PostNPCStateChanged.ts +37 -0
- package/src/classes/callbacks/PostPickupCollect.ts +37 -0
- package/src/classes/callbacks/PostPickupInitFirst.ts +34 -0
- package/src/classes/callbacks/PostPickupInitLate.ts +28 -0
- package/src/classes/callbacks/PostPickupStateChanged.ts +35 -0
- package/src/classes/callbacks/PostPitUpdate.ts +21 -0
- package/src/classes/callbacks/PostPlayerChangeHealth.ts +57 -0
- package/src/classes/callbacks/PostPlayerChangeStat.ts +102 -0
- package/src/classes/callbacks/PostPlayerChangeType.ts +44 -0
- package/src/classes/callbacks/PostPlayerCollectibleAdded.ts +11 -0
- package/src/classes/callbacks/PostPlayerCollectibleRemoved.ts +11 -0
- package/src/classes/callbacks/PostPlayerInitFirst.ts +44 -0
- package/src/classes/callbacks/PostPlayerInitLate.ts +32 -0
- package/src/classes/callbacks/PostPoopRender.ts +21 -0
- package/src/classes/callbacks/PostPoopUpdate.ts +21 -0
- package/src/classes/callbacks/PostPressurePlateRender.ts +21 -0
- package/src/classes/callbacks/PostPressurePlateUpdate.ts +21 -0
- package/src/classes/callbacks/PostProjectileInitLate.ts +28 -0
- package/src/classes/callbacks/PostPurchase.ts +87 -0
- package/src/classes/callbacks/PostRockRender.ts +21 -0
- package/src/classes/callbacks/PostRockUpdate.ts +21 -0
- package/src/classes/callbacks/PostSacrifice.ts +89 -0
- package/src/classes/callbacks/PostSlotAnimationChanged.ts +11 -0
- package/src/classes/callbacks/PostSlotCollision.ts +26 -0
- package/src/classes/callbacks/PostSlotDestroyed.ts +79 -0
- package/src/classes/callbacks/PostSlotInit.ts +11 -0
- package/src/classes/callbacks/PostSlotRender.ts +11 -0
- package/src/classes/callbacks/PostSlotUpdate.ts +11 -0
- package/src/classes/callbacks/PostSpikesUpdate.ts +21 -0
- package/src/classes/callbacks/PostTNTRender.ts +21 -0
- package/src/classes/callbacks/PostTNTUpdate.ts +21 -0
- package/src/classes/callbacks/PostTearInitLate.ts +28 -0
- package/src/classes/callbacks/PostTearInitVeryLate.ts +33 -0
- package/src/classes/callbacks/PostTransformation.ts +71 -0
- package/src/classes/callbacks/PreBerserkDeath.ts +5 -8
- package/src/classes/callbacks/PreItemPickup.ts +11 -0
- package/src/classes/callbacks/validation/CustomCallbackCollectibleType.ts +32 -0
- package/src/classes/callbacks/validation/CustomCallbackItemPickup.ts +48 -0
- package/src/classes/callbacks/validation/CustomCallbackLaser.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackNPC.ts +34 -0
- package/src/classes/callbacks/validation/CustomCallbackPickup.ts +41 -0
- package/src/classes/callbacks/validation/CustomCallbackPlayer.ts +25 -2
- package/src/classes/callbacks/validation/CustomCallbackPoop.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackPressurePlate.ts +31 -0
- package/src/classes/callbacks/validation/CustomCallbackProjectile.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackRock.ts +30 -0
- package/src/classes/callbacks/validation/CustomCallbackSlot.ts +37 -0
- package/src/classes/callbacks/validation/CustomCallbackSpikes.ts +4 -4
- package/src/classes/callbacks/validation/CustomCallbackTNT.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackTear.ts +27 -0
- package/src/classes/features/callbackLogic/CustomGridEntities.ts +32 -36
- package/src/classes/features/callbackLogic/CustomRevive.ts +14 -21
- package/src/classes/features/callbackLogic/EsauJrDetection.ts +0 -4
- package/src/classes/features/callbackLogic/GameReorderedCallbacks.ts +7 -9
- package/src/classes/features/callbackLogic/GridEntityCollisionDetection.ts +0 -4
- package/src/classes/features/callbackLogic/GridEntityRenderDetection.ts +42 -0
- package/src/classes/features/callbackLogic/{GridEntityDetection.ts → GridEntityUpdateDetection.ts} +4 -20
- package/src/classes/features/callbackLogic/ItemPickupDetection.ts +91 -0
- package/src/classes/features/callbackLogic/PlayerCollectibleDetection.ts +245 -0
- package/src/classes/features/callbackLogic/SlotRenderDetection.ts +64 -0
- package/src/classes/features/callbackLogic/SlotUpdateDetection.ts +57 -0
- package/src/classes/features/other/RunInNFrames.ts +7 -0
- package/src/classes/features/other/SaveDataManager.ts +492 -0
- package/src/classes/features/other/saveDataManager/glowingHourGlass.ts +138 -0
- package/src/classes/features/other/saveDataManager/loadFromDisk.ts +99 -0
- package/src/classes/features/other/saveDataManager/restoreDefaults.ts +116 -0
- package/src/classes/features/other/saveDataManager/saveToDisk.ts +70 -0
- package/src/classes/private/CustomCallback.ts +2 -6
- package/src/classes/private/Feature.ts +1 -0
- package/src/core/upgradeMod.ts +2 -4
- package/src/decorators.ts +17 -19
- package/src/enums/ISCFeature.ts +44 -39
- package/src/enums/ModCallbackCustom.ts +34 -20
- package/src/enums/ModCallbackCustom2.ts +53 -5
- package/src/enums/{private/SerializationBrand.ts → SerializationBrand.ts} +8 -2
- package/src/features/customItemPool.ts +133 -0
- package/src/features/deployJSONRoom.ts +6 -4
- package/src/features/fadeInRemover.ts +4 -22
- package/src/features/saveDataManager/exports.ts +62 -3
- package/src/features/saveDataManager/load.ts +4 -1
- package/src/features/saveDataManager/main.ts +5 -3
- package/src/features/saveDataManager/maps.ts +16 -0
- package/src/features.ts +39 -4
- package/src/functions/array.ts +8 -9
- package/src/functions/bitSet128.ts +3 -3
- package/src/functions/color.ts +3 -3
- package/src/functions/decorators.ts +22 -0
- package/src/functions/deepCopy.ts +83 -17
- package/src/functions/deepCopyTests.ts +1 -1
- package/src/functions/initArray.ts +6 -11
- package/src/functions/jsonRoom.ts +11 -0
- package/src/functions/kColor.ts +3 -3
- package/src/{features/saveDataManager → functions}/merge.ts +79 -45
- package/src/functions/mergeTests.ts +2 -3
- package/src/functions/rng.ts +3 -3
- package/src/functions/serialization.ts +25 -1
- package/src/functions/table.ts +1 -1
- package/src/functions/tstlClass.ts +3 -57
- package/src/functions/vector.ts +3 -3
- package/src/functions/weighted.ts +28 -11
- package/src/index.ts +5 -0
- package/src/interfaces/SaveData.ts +3 -34
- package/src/interfaces/private/AddCallbackParametersCustom2.ts +298 -7
- package/src/objects/isaacAPIClassTypeToBrand.ts +1 -1
- package/src/types/AnyClass.ts +1 -0
- package/src/types/AnyFunction.ts +5 -0
- package/src/types/FunctionTuple.ts +3 -4
- package/src/types/HasFunction.ts +7 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.d.ts.map +0 -1
- package/dist/src/classes/callbacks/validation/CustomCallbackRevive.lua +0 -19
- package/dist/src/classes/features/callbackLogic/GridEntityDetection.d.ts.map +0 -1
- package/dist/src/enums/private/SerializationBrand.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/merge.d.ts +0 -26
- package/dist/src/features/saveDataManager/merge.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/serializationBrands.d.ts +0 -2
- package/dist/src/features/saveDataManager/serializationBrands.d.ts.map +0 -1
- package/dist/src/features/saveDataManager/serializationBrands.lua +0 -19
- package/dist/src/indexLua.d.ts +0 -199
- package/dist/src/indexLua.d.ts.map +0 -1
- package/dist/src/indexLua.lua +0 -1354
- package/src/classes/callbacks/validation/CustomCallbackRevive.ts +0 -27
- package/src/features/saveDataManager/serializationBrands.ts +0 -16
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
} from "isaac-typescript-definitions";
|
|
9
9
|
import { game } from "../../../core/cachedClasses";
|
|
10
10
|
import { ISCFeature } from "../../../enums/ISCFeature";
|
|
11
|
-
import { ModCallbackCustom2 } from "../../../enums/ModCallbackCustom2";
|
|
12
11
|
import {
|
|
13
12
|
removeGridEntity,
|
|
14
13
|
spawnGridEntityWithVariant,
|
|
@@ -45,19 +44,47 @@ export class CustomGridEntities extends Feature {
|
|
|
45
44
|
this.featuresUsed = [ISCFeature.RUN_IN_N_FRAMES];
|
|
46
45
|
|
|
47
46
|
this.callbacksUsed = [
|
|
47
|
+
[ModCallback.POST_NEW_ROOM, [this.postNewRoom]], // 19
|
|
48
48
|
[
|
|
49
49
|
ModCallback.PRE_USE_ITEM,
|
|
50
50
|
[this.preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER],
|
|
51
51
|
], // 23
|
|
52
52
|
];
|
|
53
53
|
|
|
54
|
-
this.customCallbacksUsed = [
|
|
55
|
-
[ModCallbackCustom2.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
|
|
56
|
-
];
|
|
57
|
-
|
|
58
54
|
this.runInNFrames = runInNFrames;
|
|
59
55
|
}
|
|
60
56
|
|
|
57
|
+
// ModCallback.POST_NEW_ROOM (19)
|
|
58
|
+
private postNewRoom = (): void => {
|
|
59
|
+
// When we re-enter a room, the graphics for any custom entities will be reverted back to that
|
|
60
|
+
// of a normal decoration. Thus, we must re-apply the anm2.
|
|
61
|
+
const roomListIndex = getRoomListIndex();
|
|
62
|
+
const roomCustomGridEntities =
|
|
63
|
+
this.v.level.customGridEntities.get(roomListIndex);
|
|
64
|
+
if (roomCustomGridEntities === undefined) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const room = game.GetRoom();
|
|
69
|
+
for (const [gridIndex, data] of roomCustomGridEntities.entries()) {
|
|
70
|
+
const decoration = room.GetGridEntity(gridIndex);
|
|
71
|
+
if (decoration === undefined) {
|
|
72
|
+
roomCustomGridEntities.delete(gridIndex);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (data.anm2Path !== undefined) {
|
|
77
|
+
const sprite = decoration.GetSprite();
|
|
78
|
+
sprite.Load(data.anm2Path, true);
|
|
79
|
+
const animationToPlay =
|
|
80
|
+
data.defaultAnimation === undefined
|
|
81
|
+
? sprite.GetDefaultAnimation()
|
|
82
|
+
: data.defaultAnimation;
|
|
83
|
+
sprite.Play(animationToPlay, true);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
61
88
|
// ModCallback.PRE_USE_ITEM (23)
|
|
62
89
|
// CollectibleType.WE_NEED_TO_GO_DEEPER (84)
|
|
63
90
|
private preUseItemWeNeedToGoDeeper = (
|
|
@@ -109,37 +136,6 @@ export class CustomGridEntities extends Feature {
|
|
|
109
136
|
return true;
|
|
110
137
|
};
|
|
111
138
|
|
|
112
|
-
// ModCallbackCustom.POST_NEW_ROOM_REORDERED
|
|
113
|
-
private postNewRoomReordered = (): void => {
|
|
114
|
-
// When we re-enter a room, the graphics for any custom entities will be reverted back to that
|
|
115
|
-
// of a normal decoration. Thus, we must re-apply the anm2.
|
|
116
|
-
const roomListIndex = getRoomListIndex();
|
|
117
|
-
const roomCustomGridEntities =
|
|
118
|
-
this.v.level.customGridEntities.get(roomListIndex);
|
|
119
|
-
if (roomCustomGridEntities === undefined) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const room = game.GetRoom();
|
|
124
|
-
for (const [gridIndex, data] of roomCustomGridEntities.entries()) {
|
|
125
|
-
const decoration = room.GetGridEntity(gridIndex);
|
|
126
|
-
if (decoration === undefined) {
|
|
127
|
-
roomCustomGridEntities.delete(gridIndex);
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (data.anm2Path !== undefined) {
|
|
132
|
-
const sprite = decoration.GetSprite();
|
|
133
|
-
sprite.Load(data.anm2Path, true);
|
|
134
|
-
const animationToPlay =
|
|
135
|
-
data.defaultAnimation === undefined
|
|
136
|
-
? sprite.GetDefaultAnimation()
|
|
137
|
-
: data.defaultAnimation;
|
|
138
|
-
sprite.Play(animationToPlay, true);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
|
|
143
139
|
/**
|
|
144
140
|
* Helper function to spawn a custom grid entity. Custom grid entities are persistent in that they
|
|
145
141
|
* will reappear if the player leaves and re-enters the room. (It will be manually respawned in
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// This provides the logic for the following callbacks:
|
|
2
|
-
// - `PRE_CUSTOM_REVIVE`
|
|
3
|
-
// - `POST_CUSTOM_REVIVE`
|
|
4
|
-
|
|
5
1
|
import {
|
|
6
2
|
CollectibleType,
|
|
7
3
|
FamiliarVariant,
|
|
@@ -60,14 +56,11 @@ export class CustomRevive extends Feature {
|
|
|
60
56
|
|
|
61
57
|
this.callbacksUsed = [
|
|
62
58
|
[ModCallback.POST_RENDER, [this.postRender]], // 2
|
|
59
|
+
[ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
|
|
60
|
+
[ModCallback.POST_NEW_ROOM, [this.postNewRoom]], // 19
|
|
63
61
|
];
|
|
64
62
|
|
|
65
63
|
this.customCallbacksUsed = [
|
|
66
|
-
[ModCallbackCustom2.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
|
|
67
|
-
[
|
|
68
|
-
ModCallbackCustom2.POST_PEFFECT_UPDATE_REORDERED,
|
|
69
|
-
[this.postPEffectUpdateReordered],
|
|
70
|
-
],
|
|
71
64
|
[
|
|
72
65
|
ModCallbackCustom2.POST_PLAYER_FATAL_DAMAGE,
|
|
73
66
|
[this.postPlayerFatalDamage],
|
|
@@ -90,18 +83,8 @@ export class CustomRevive extends Feature {
|
|
|
90
83
|
sfxManager.Stop(SoundEffect.ONE_UP);
|
|
91
84
|
};
|
|
92
85
|
|
|
93
|
-
//
|
|
94
|
-
private
|
|
95
|
-
if (this.v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
this.v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
|
|
100
|
-
this.logStateChanged();
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
// ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
|
|
104
|
-
private postPEffectUpdateReordered = (player: EntityPlayer): void => {
|
|
86
|
+
// ModCallback.POST_PEFFECT_UPDATE (4)
|
|
87
|
+
private postPEffectUpdate = (player: EntityPlayer): void => {
|
|
105
88
|
this.checkWaitingForItemAnimation(player);
|
|
106
89
|
};
|
|
107
90
|
|
|
@@ -149,6 +132,16 @@ export class CustomRevive extends Feature {
|
|
|
149
132
|
this.logStateChanged();
|
|
150
133
|
}
|
|
151
134
|
|
|
135
|
+
// ModCallback.POST_NEW_ROOM (19)
|
|
136
|
+
private postNewRoom = (): void => {
|
|
137
|
+
if (this.v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
this.v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
|
|
142
|
+
this.logStateChanged();
|
|
143
|
+
};
|
|
144
|
+
|
|
152
145
|
// ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE
|
|
153
146
|
private postPlayerFatalDamage = (
|
|
154
147
|
player: EntityPlayer,
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
// This provides the logic for the following callbacks:
|
|
2
|
-
// - `POST_GAME_STARTED_REORDERED`
|
|
3
|
-
// - `POST_GAME_STARTED_REORDERED_LAST`
|
|
4
|
-
// - `POST_NEW_LEVEL_REORDERED`
|
|
5
|
-
// - `POST_NEW_ROOM_REORDERED`
|
|
6
|
-
|
|
7
1
|
// By default, callbacks fire in the following order:
|
|
8
2
|
// - `POST_NEW_ROOM` --> `POST_NEW_LEVEL` --> `POST_GAME_STARTED`
|
|
9
3
|
|
|
@@ -139,17 +133,21 @@ export class GameReorderedCallbacks extends Feature {
|
|
|
139
133
|
this.currentStageType = stageType;
|
|
140
134
|
}
|
|
141
135
|
|
|
142
|
-
|
|
136
|
+
// --------------
|
|
137
|
+
// Public methods
|
|
138
|
+
// --------------
|
|
139
|
+
|
|
140
|
+
@Exported
|
|
143
141
|
public forceNewLevelCallback(): void {
|
|
144
142
|
this.forceNewLevel = true;
|
|
145
143
|
}
|
|
146
144
|
|
|
147
|
-
@Exported
|
|
145
|
+
@Exported
|
|
148
146
|
public forceNewRoomCallback(): void {
|
|
149
147
|
this.forceNewRoom = true;
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
@Exported
|
|
150
|
+
@Exported
|
|
153
151
|
public reorderedCallbacksSetStage(
|
|
154
152
|
stage: LevelStage,
|
|
155
153
|
stageType: StageType,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { getGridEntities } from "../../../functions/gridEntities";
|
|
3
|
+
import { PostGridEntityCustomRender } from "../../callbacks/PostGridEntityCustomRender";
|
|
4
|
+
import { PostGridEntityRender } from "../../callbacks/PostGridEntityRender";
|
|
5
|
+
import { Feature } from "../../private/Feature";
|
|
6
|
+
import { CustomGridEntities } from "./CustomGridEntities";
|
|
7
|
+
|
|
8
|
+
export class GridEntityRenderDetection extends Feature {
|
|
9
|
+
private postGridEntityRender: PostGridEntityRender;
|
|
10
|
+
private postGridEntityCustomRender: PostGridEntityCustomRender;
|
|
11
|
+
private customGridEntities: CustomGridEntities;
|
|
12
|
+
|
|
13
|
+
constructor(
|
|
14
|
+
postGridEntityRender: PostGridEntityRender,
|
|
15
|
+
postGridEntityCustomRender: PostGridEntityCustomRender,
|
|
16
|
+
customGridEntities: CustomGridEntities,
|
|
17
|
+
) {
|
|
18
|
+
super();
|
|
19
|
+
|
|
20
|
+
this.callbacksUsed = [
|
|
21
|
+
[ModCallback.POST_RENDER, [this.postRender]], // 2
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
this.postGridEntityRender = postGridEntityRender;
|
|
25
|
+
this.postGridEntityCustomRender = postGridEntityCustomRender;
|
|
26
|
+
this.customGridEntities = customGridEntities;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// ModCallback.POST_RENDER (2)
|
|
30
|
+
private postRender = () => {
|
|
31
|
+
for (const gridEntity of getGridEntities()) {
|
|
32
|
+
const gridIndex = gridEntity.GetGridIndex();
|
|
33
|
+
const gridEntityTypeCustom =
|
|
34
|
+
this.customGridEntities.getCustomGridEntityType(gridIndex);
|
|
35
|
+
if (gridEntityTypeCustom === undefined) {
|
|
36
|
+
this.postGridEntityRender.fire(gridEntity);
|
|
37
|
+
} else {
|
|
38
|
+
this.postGridEntityCustomRender.fire(gridEntity, gridEntityTypeCustom);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
package/src/classes/features/callbackLogic/{GridEntityDetection.ts → GridEntityUpdateDetection.ts}
RENAMED
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
// This provides the logic for the following callbacks:
|
|
2
|
-
// - `POST_GRID_ENTITY_INIT`
|
|
3
|
-
// - `POST_GRID_ENTITY_CUSTOM_INIT`
|
|
4
|
-
// - `POST_GRID_ENTITY_UPDATE`
|
|
5
|
-
// - `POST_GRID_ENTITY_CUSTOM_UPDATE`
|
|
6
|
-
// - `POST_GRID_ENTITY_REMOVE`
|
|
7
|
-
// - `POST_GRID_ENTITY_CUSTOM_REMOVE`
|
|
8
|
-
// - `POST_GRID_ENTITY_STATE_CHANGED`
|
|
9
|
-
// - `POST_GRID_ENTITY_CUSTOM_STATE_CHANGED`
|
|
10
|
-
// - `POST_GRID_ENTITY_BROKEN`
|
|
11
|
-
// - `POST_GRID_ENTITY_CUSTOM_BROKEN`
|
|
12
|
-
|
|
13
1
|
import { GridEntityType, ModCallback } from "isaac-typescript-definitions";
|
|
14
2
|
import { ISCFeature } from "../../../enums/ISCFeature";
|
|
15
|
-
import { ModCallbackCustom2 } from "../../../enums/ModCallbackCustom2";
|
|
16
3
|
import {
|
|
17
4
|
getGridEntitiesMap,
|
|
18
5
|
isGridEntityBroken,
|
|
@@ -36,7 +23,7 @@ type GridEntityTuple = [
|
|
|
36
23
|
state: int,
|
|
37
24
|
];
|
|
38
25
|
|
|
39
|
-
export class
|
|
26
|
+
export class GridEntityUpdateDetection extends Feature {
|
|
40
27
|
public override v = {
|
|
41
28
|
room: {
|
|
42
29
|
/** Indexed by grid index. */
|
|
@@ -75,10 +62,7 @@ export class GridEntityDetection extends Feature {
|
|
|
75
62
|
|
|
76
63
|
this.callbacksUsed = [
|
|
77
64
|
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.customCallbacksUsed = [
|
|
81
|
-
[ModCallbackCustom2.POST_NEW_ROOM_REORDERED, [this.postNewRoomReordered]],
|
|
65
|
+
[ModCallback.POST_NEW_ROOM, [this.postNewRoom]], // 19
|
|
82
66
|
];
|
|
83
67
|
|
|
84
68
|
this.postGridEntityInit = postGridEntityInit;
|
|
@@ -220,8 +204,8 @@ export class GridEntityDetection extends Feature {
|
|
|
220
204
|
this.v.room.initializedGridEntities.set(gridIndex, newTuple);
|
|
221
205
|
}
|
|
222
206
|
|
|
223
|
-
//
|
|
224
|
-
private
|
|
207
|
+
// ModCallback.POST_NEW_ROOM (19)
|
|
208
|
+
private postNewRoom = (): void => {
|
|
225
209
|
const gridEntitiesMap = getGridEntitiesMap();
|
|
226
210
|
|
|
227
211
|
for (const [gridIndex, gridEntity] of gridEntitiesMap.entries()) {
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CollectibleType,
|
|
3
|
+
ItemType,
|
|
4
|
+
ModCallback,
|
|
5
|
+
TrinketType,
|
|
6
|
+
} from "isaac-typescript-definitions";
|
|
7
|
+
import { defaultMapGetPlayer } from "../../../functions/playerDataStructures";
|
|
8
|
+
import { asNumber } from "../../../functions/types";
|
|
9
|
+
import {
|
|
10
|
+
newPickingUpItem,
|
|
11
|
+
PickingUpItem,
|
|
12
|
+
resetPickingUpItem,
|
|
13
|
+
} from "../../../types/PickingUpItem";
|
|
14
|
+
import { PlayerIndex } from "../../../types/PlayerIndex";
|
|
15
|
+
import { PostItemPickup } from "../../callbacks/PostItemPickup";
|
|
16
|
+
import { PreItemPickup } from "../../callbacks/PreItemPickup";
|
|
17
|
+
import { DefaultMap } from "../../DefaultMap";
|
|
18
|
+
import { Feature } from "../../private/Feature";
|
|
19
|
+
|
|
20
|
+
export class ItemPickupDetection extends Feature {
|
|
21
|
+
public override v = {
|
|
22
|
+
run: {
|
|
23
|
+
playersPickingUpItemMap: new DefaultMap<PlayerIndex, PickingUpItem>(() =>
|
|
24
|
+
newPickingUpItem(),
|
|
25
|
+
),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
private postItemPickup: PostItemPickup;
|
|
30
|
+
private preItemPickup: PreItemPickup;
|
|
31
|
+
|
|
32
|
+
constructor(postItemPickup: PostItemPickup, preItemPickup: PreItemPickup) {
|
|
33
|
+
super();
|
|
34
|
+
|
|
35
|
+
this.callbacksUsed = [
|
|
36
|
+
[ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
this.postItemPickup = postItemPickup;
|
|
40
|
+
this.preItemPickup = preItemPickup;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// ModCallback.POST_PEFFECT_UPDATE (4)
|
|
44
|
+
private postPEffectUpdate = (player: EntityPlayer) => {
|
|
45
|
+
const pickingUpItem = defaultMapGetPlayer(
|
|
46
|
+
this.v.run.playersPickingUpItemMap,
|
|
47
|
+
player,
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
if (player.IsItemQueueEmpty()) {
|
|
51
|
+
this.queueEmpty(player, pickingUpItem);
|
|
52
|
+
// If a player enters a room with a trinket next to the entrance, the player will pick up the
|
|
53
|
+
// trinket, but it will not become queued (it will be deposited into their inventory
|
|
54
|
+
// immediately). Since we don't know what type of item the player is holding, don't account
|
|
55
|
+
// for this bug.
|
|
56
|
+
} else {
|
|
57
|
+
this.queueNotEmpty(player, pickingUpItem);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
private queueEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
|
|
62
|
+
if (
|
|
63
|
+
pickingUpItem.itemType === ItemType.NULL ||
|
|
64
|
+
asNumber(pickingUpItem.subType) === 0
|
|
65
|
+
) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
this.postItemPickup.fire(player, pickingUpItem);
|
|
70
|
+
resetPickingUpItem(pickingUpItem);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private queueNotEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
|
|
74
|
+
const queuedItem = player.QueuedItem.Item;
|
|
75
|
+
if (queuedItem === undefined || queuedItem.Type === ItemType.NULL) {
|
|
76
|
+
// This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned true.
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (
|
|
81
|
+
queuedItem.Type !== pickingUpItem.itemType ||
|
|
82
|
+
queuedItem.ID !== pickingUpItem.subType
|
|
83
|
+
) {
|
|
84
|
+
// Record which item we are picking up.
|
|
85
|
+
pickingUpItem.itemType = queuedItem.Type;
|
|
86
|
+
pickingUpItem.subType = queuedItem.ID as CollectibleType | TrinketType;
|
|
87
|
+
|
|
88
|
+
this.preItemPickup.fire(player, pickingUpItem);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ActiveSlot,
|
|
3
|
+
CollectibleType,
|
|
4
|
+
DamageFlag,
|
|
5
|
+
EntityType,
|
|
6
|
+
ModCallback,
|
|
7
|
+
PlayerType,
|
|
8
|
+
} from "isaac-typescript-definitions";
|
|
9
|
+
import { arrayEquals } from "../../../functions/array";
|
|
10
|
+
import { getEnumValues } from "../../../functions/enums";
|
|
11
|
+
import { hasFlag } from "../../../functions/flag";
|
|
12
|
+
import {
|
|
13
|
+
defaultMapGetPlayer,
|
|
14
|
+
mapSetPlayer,
|
|
15
|
+
} from "../../../functions/playerDataStructures";
|
|
16
|
+
import {
|
|
17
|
+
getPlayerCollectibleMap,
|
|
18
|
+
getPlayerFromPtr,
|
|
19
|
+
} from "../../../functions/players";
|
|
20
|
+
import { repeat } from "../../../functions/utils";
|
|
21
|
+
import { PlayerIndex } from "../../../types/PlayerIndex";
|
|
22
|
+
import { PostPlayerCollectibleAdded } from "../../callbacks/PostPlayerCollectibleAdded";
|
|
23
|
+
import { PostPlayerCollectibleRemoved } from "../../callbacks/PostPlayerCollectibleRemoved";
|
|
24
|
+
import { DefaultMap } from "../../DefaultMap";
|
|
25
|
+
import { Feature } from "../../private/Feature";
|
|
26
|
+
import { RunInNFrames } from "../other/RunInNFrames";
|
|
27
|
+
|
|
28
|
+
export class PlayerCollectibleDetection extends Feature {
|
|
29
|
+
public override v = {
|
|
30
|
+
run: {
|
|
31
|
+
playersCollectibleCount: new DefaultMap<PlayerIndex, int>(0),
|
|
32
|
+
playersCollectibleMap: new DefaultMap<
|
|
33
|
+
PlayerIndex,
|
|
34
|
+
Map<CollectibleType, int>
|
|
35
|
+
>(() => new Map()),
|
|
36
|
+
playersActiveItemMap: new DefaultMap<
|
|
37
|
+
PlayerIndex,
|
|
38
|
+
Map<ActiveSlot, CollectibleType>
|
|
39
|
+
>(() => new Map()),
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
private postPlayerCollectibleAdded: PostPlayerCollectibleAdded;
|
|
44
|
+
private postPlayerCollectibleRemoved: PostPlayerCollectibleRemoved;
|
|
45
|
+
private runInNFrames: RunInNFrames;
|
|
46
|
+
|
|
47
|
+
constructor(
|
|
48
|
+
postPlayerCollectibleAdded: PostPlayerCollectibleAdded,
|
|
49
|
+
postPlayerCollectibleRemoved: PostPlayerCollectibleRemoved,
|
|
50
|
+
runInNFrames: RunInNFrames,
|
|
51
|
+
) {
|
|
52
|
+
super();
|
|
53
|
+
|
|
54
|
+
this.callbacksUsed = [
|
|
55
|
+
[ModCallback.POST_USE_ITEM, [this.useItemD4, CollectibleType.D4]], // 3
|
|
56
|
+
[ModCallback.POST_PEFFECT_UPDATE, [this.postPEffectUpdate]], // 4
|
|
57
|
+
[
|
|
58
|
+
ModCallback.ENTITY_TAKE_DMG,
|
|
59
|
+
[this.entityTakeDmgPlayer, EntityType.PLAYER],
|
|
60
|
+
], // 11
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
this.postPlayerCollectibleAdded = postPlayerCollectibleAdded;
|
|
64
|
+
this.postPlayerCollectibleRemoved = postPlayerCollectibleRemoved;
|
|
65
|
+
this.runInNFrames = runInNFrames;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* This is called when the collectible count changes and in situations where the entire build is
|
|
70
|
+
* rerolled.
|
|
71
|
+
*
|
|
72
|
+
* Since getting a new player collectible map is expensive, we want to only run this function when
|
|
73
|
+
* necessary, and not on e.g. every frame. Unfortunately, this has the side effect of missing out
|
|
74
|
+
* on collectible changes from mods that add and remove a collectible on the same frame.
|
|
75
|
+
*
|
|
76
|
+
* @param player The player to update.
|
|
77
|
+
* @param numCollectiblesChanged Pass undefined for situations where the entire build was
|
|
78
|
+
* rerolled.
|
|
79
|
+
*/
|
|
80
|
+
private updateCollectibleMapAndFire(
|
|
81
|
+
player: EntityPlayer,
|
|
82
|
+
numCollectiblesChanged: int | undefined,
|
|
83
|
+
) {
|
|
84
|
+
const oldCollectibleMap = defaultMapGetPlayer(
|
|
85
|
+
this.v.run.playersCollectibleMap,
|
|
86
|
+
player,
|
|
87
|
+
);
|
|
88
|
+
const newCollectibleMap = getPlayerCollectibleMap(player);
|
|
89
|
+
mapSetPlayer(this.v.run.playersCollectibleMap, player, newCollectibleMap);
|
|
90
|
+
|
|
91
|
+
const collectibleTypesSet = new Set<CollectibleType>([
|
|
92
|
+
...oldCollectibleMap.keys(),
|
|
93
|
+
...newCollectibleMap.keys(),
|
|
94
|
+
]);
|
|
95
|
+
|
|
96
|
+
let numFired = 0;
|
|
97
|
+
for (const collectibleType of collectibleTypesSet.values()) {
|
|
98
|
+
const oldNum = oldCollectibleMap.get(collectibleType) ?? 0;
|
|
99
|
+
const newNum = newCollectibleMap.get(collectibleType) ?? 0;
|
|
100
|
+
const difference = newNum - oldNum;
|
|
101
|
+
const increased = difference > 0;
|
|
102
|
+
const absoluteDifference = Math.abs(difference);
|
|
103
|
+
|
|
104
|
+
repeat(absoluteDifference, () => {
|
|
105
|
+
if (increased) {
|
|
106
|
+
this.postPlayerCollectibleAdded.fire(player, collectibleType);
|
|
107
|
+
} else {
|
|
108
|
+
this.postPlayerCollectibleRemoved.fire(player, collectibleType);
|
|
109
|
+
}
|
|
110
|
+
numFired++;
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (numFired === numCollectiblesChanged) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ModCallback.POST_USE_ITEM (3)
|
|
120
|
+
// CollectibleType.D4 (284)
|
|
121
|
+
private useItemD4 = (
|
|
122
|
+
_collectibleType: CollectibleType,
|
|
123
|
+
_rng: RNG,
|
|
124
|
+
player: EntityPlayer,
|
|
125
|
+
): boolean | undefined => {
|
|
126
|
+
// This function is also triggered for:
|
|
127
|
+
// - D100
|
|
128
|
+
// - D Infinity copying D4 or D100
|
|
129
|
+
// - 1-pip dice room
|
|
130
|
+
// - 6-pip dice room
|
|
131
|
+
// - Reverse Wheel of Fortune copying 1-pip or 6-pip dice room
|
|
132
|
+
// - First getting Missing No.
|
|
133
|
+
// - Arriving on a new floor with Missing No.
|
|
134
|
+
|
|
135
|
+
// This function is not triggered for:
|
|
136
|
+
// - Tainted Eden getting hit (this is explicitly handled elsewhere)
|
|
137
|
+
// - Genesis (which is automatically handled by the collectibles being removed in the normal
|
|
138
|
+
// `POST_PLAYER_COLLECTIBLE_REMOVED` callback)
|
|
139
|
+
this.updateCollectibleMapAndFire(player, undefined);
|
|
140
|
+
|
|
141
|
+
return undefined;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// ModCallback.POST_PEFFECT_UPDATE (4)
|
|
145
|
+
private postPEffectUpdate = (player: EntityPlayer) => {
|
|
146
|
+
const oldCollectibleCount = defaultMapGetPlayer(
|
|
147
|
+
this.v.run.playersCollectibleCount,
|
|
148
|
+
player,
|
|
149
|
+
);
|
|
150
|
+
const newCollectibleCount = player.GetCollectibleCount();
|
|
151
|
+
mapSetPlayer(
|
|
152
|
+
this.v.run.playersCollectibleCount,
|
|
153
|
+
player,
|
|
154
|
+
newCollectibleCount,
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
const difference = newCollectibleCount - oldCollectibleCount;
|
|
158
|
+
|
|
159
|
+
if (difference > 0) {
|
|
160
|
+
this.updateCollectibleMapAndFire(player, difference);
|
|
161
|
+
} else if (difference < 0) {
|
|
162
|
+
this.updateCollectibleMapAndFire(player, difference * -1);
|
|
163
|
+
} else if (difference === 0) {
|
|
164
|
+
this.checkActiveItemsChanged(player);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Checking for collectible count will work to detect when a player swaps their active item for
|
|
170
|
+
* another active item. This is because the collectible count will decrement by 1 when the item is
|
|
171
|
+
* swapped onto the pedestal and the hold animation begins, and increment by 1 when the item is
|
|
172
|
+
* dequeued and the hold animation ends.
|
|
173
|
+
*
|
|
174
|
+
* However, we also want to explicitly check for the case where a mod swaps in a custom active
|
|
175
|
+
* collectible on the same frame, since doing so is cheap.
|
|
176
|
+
*/
|
|
177
|
+
private checkActiveItemsChanged(player: EntityPlayer) {
|
|
178
|
+
const activeItemMap = defaultMapGetPlayer(
|
|
179
|
+
this.v.run.playersActiveItemMap,
|
|
180
|
+
player,
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
const oldCollectibleTypes: CollectibleType[] = [];
|
|
184
|
+
const newCollectibleTypes: CollectibleType[] = [];
|
|
185
|
+
|
|
186
|
+
for (const activeSlot of getEnumValues(ActiveSlot)) {
|
|
187
|
+
const oldCollectibleType =
|
|
188
|
+
activeItemMap.get(activeSlot) ?? CollectibleType.NULL;
|
|
189
|
+
const newCollectibleType = player.GetActiveItem(activeSlot);
|
|
190
|
+
activeItemMap.set(activeSlot, newCollectibleType);
|
|
191
|
+
|
|
192
|
+
oldCollectibleTypes.push(oldCollectibleType);
|
|
193
|
+
newCollectibleTypes.push(newCollectibleType);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// For example, it is possible for the player to switch Schoolbag items, which will cause the
|
|
197
|
+
// collectibles in the array to be the same, but in a different order. Thus, we sort both arrays
|
|
198
|
+
// before comparing them.
|
|
199
|
+
oldCollectibleTypes.sort();
|
|
200
|
+
newCollectibleTypes.sort();
|
|
201
|
+
|
|
202
|
+
if (!arrayEquals(oldCollectibleTypes, newCollectibleTypes)) {
|
|
203
|
+
// One or more active items have changed (with the player's total collectible count remaining
|
|
204
|
+
// the same).
|
|
205
|
+
this.updateCollectibleMapAndFire(player, undefined);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// ModCallback.ENTITY_TAKE_DMG (11)
|
|
210
|
+
// EntityType.PLAYER (1)
|
|
211
|
+
// We need to handle the case of Tainted Eden taking damage.
|
|
212
|
+
private entityTakeDmgPlayer = (
|
|
213
|
+
entity: Entity,
|
|
214
|
+
_amount: float,
|
|
215
|
+
damageFlags: BitFlags<DamageFlag>,
|
|
216
|
+
_source: EntityRef,
|
|
217
|
+
_countdownFrames: int,
|
|
218
|
+
): boolean | undefined => {
|
|
219
|
+
// Tainted Eden's mechanic does not apply if she e.g. uses Dull Razor.
|
|
220
|
+
if (hasFlag(damageFlags, DamageFlag.FAKE)) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const player = entity.ToPlayer();
|
|
225
|
+
if (player === undefined) {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const character = player.GetPlayerType();
|
|
230
|
+
if (character !== PlayerType.EDEN_B) {
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// The items will only be rerolled after the damage is successfully applied.
|
|
235
|
+
const entityPtr = EntityPtr(player);
|
|
236
|
+
this.runInNFrames.runNextGameFrame(() => {
|
|
237
|
+
const futurePlayer = getPlayerFromPtr(entityPtr);
|
|
238
|
+
if (futurePlayer !== undefined) {
|
|
239
|
+
this.updateCollectibleMapAndFire(player, undefined);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
return undefined;
|
|
244
|
+
};
|
|
245
|
+
}
|