isaacscript-common 2.3.0 → 3.0.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/cachedClasses.d.ts +37 -0
- package/cachedClasses.lua +30 -0
- package/callbacks/customRevive.d.ts +1 -0
- package/callbacks/customRevive.lua +147 -0
- package/callbacks/itemPickup.d.ts +1 -0
- package/callbacks/itemPickup.lua +66 -0
- package/callbacks/postBombInitLate.d.ts +1 -0
- package/callbacks/postBombInitLate.lua +33 -0
- package/callbacks/postBoneSwing.d.ts +1 -0
- package/callbacks/postBoneSwing.lua +50 -0
- package/callbacks/postCollectibleInitFirst.d.ts +1 -0
- package/callbacks/postCollectibleInitFirst.lua +34 -0
- package/callbacks/postCursedTeleport.d.ts +1 -0
- package/callbacks/postCursedTeleport.lua +121 -0
- package/callbacks/postCustomDoorEnter.d.ts +50 -0
- package/callbacks/postCustomDoorEnter.lua +247 -0
- package/callbacks/postDoorRender.d.ts +1 -0
- package/callbacks/postDoorRender.lua +26 -0
- package/callbacks/postDoorUpdate.d.ts +1 -0
- package/callbacks/postDoorUpdate.lua +26 -0
- package/callbacks/postEffectInitLate.d.ts +1 -0
- package/callbacks/postEffectInitLate.lua +33 -0
- package/callbacks/postEffectStateChanged.d.ts +1 -0
- package/callbacks/postEffectStateChanged.lua +39 -0
- package/callbacks/postEsauJr.d.ts +1 -0
- package/callbacks/postEsauJr.lua +69 -0
- package/callbacks/postFamiliarInitLate.d.ts +1 -0
- package/callbacks/postFamiliarInitLate.lua +33 -0
- package/callbacks/postFamiliarStateChanged.d.ts +1 -0
- package/callbacks/postFamiliarStateChanged.lua +39 -0
- package/callbacks/postFlip.d.ts +1 -0
- package/callbacks/postFlip.lua +63 -0
- package/callbacks/postGreedModeWave.d.ts +1 -0
- package/callbacks/postGreedModeWave.lua +34 -0
- package/callbacks/postGridEntity.d.ts +1 -0
- package/callbacks/postGridEntity.lua +107 -0
- package/callbacks/postGridEntityCollision.d.ts +1 -0
- package/callbacks/postGridEntityCollision.lua +67 -0
- package/callbacks/postGridEntityRender.d.ts +1 -0
- package/callbacks/postGridEntityRender.lua +26 -0
- package/callbacks/postHolyMantleRemoved.d.ts +1 -0
- package/callbacks/postHolyMantleRemoved.lua +41 -0
- package/callbacks/postItemDischarged.d.ts +2 -0
- package/callbacks/postItemDischarged.lua +104 -0
- package/callbacks/postKnifeInitLate.d.ts +1 -0
- package/callbacks/postKnifeInitLate.lua +33 -0
- package/callbacks/postLaserInitLate.d.ts +1 -0
- package/callbacks/postLaserInitLate.lua +33 -0
- package/callbacks/postNPCInitLate.d.ts +1 -0
- package/callbacks/postNPCInitLate.lua +33 -0
- package/callbacks/postNPCStateChanged.d.ts +1 -0
- package/callbacks/postNPCStateChanged.lua +39 -0
- package/callbacks/postNewRoomEarly.d.ts +1 -0
- package/callbacks/postNewRoomEarly.lua +67 -0
- package/callbacks/postPickupCollect.d.ts +1 -0
- package/callbacks/postPickupCollect.lua +41 -0
- package/callbacks/postPickupInitLate.d.ts +1 -0
- package/callbacks/postPickupInitLate.lua +33 -0
- package/callbacks/postPickupStateChanged.d.ts +1 -0
- package/callbacks/postPickupStateChanged.lua +39 -0
- package/callbacks/postPitRender.d.ts +1 -0
- package/callbacks/postPitRender.lua +26 -0
- package/callbacks/postPitUpdate.d.ts +1 -0
- package/callbacks/postPitUpdate.lua +26 -0
- package/callbacks/postPlayerChangeHealth.d.ts +1 -0
- package/callbacks/postPlayerChangeHealth.lua +52 -0
- package/callbacks/postPlayerChangeType.d.ts +1 -0
- package/callbacks/postPlayerChangeType.lua +41 -0
- package/callbacks/postPlayerFatalDamage.d.ts +1 -0
- package/callbacks/postPlayerFatalDamage.lua +73 -0
- package/callbacks/postPlayerInitLate.d.ts +1 -0
- package/callbacks/postPlayerInitLate.lua +35 -0
- package/callbacks/postPlayerReordered.d.ts +1 -0
- package/callbacks/postPlayerReordered.lua +114 -0
- package/callbacks/postPoopRender.d.ts +1 -0
- package/callbacks/postPoopRender.lua +26 -0
- package/callbacks/postPoopUpdate.d.ts +1 -0
- package/callbacks/postPoopUpdate.lua +26 -0
- package/callbacks/postPressurePlateRender.d.ts +1 -0
- package/callbacks/postPressurePlateRender.lua +26 -0
- package/callbacks/postPressurePlateUpdate.d.ts +1 -0
- package/callbacks/postPressurePlateUpdate.lua +26 -0
- package/callbacks/postProjectileInitLate.d.ts +1 -0
- package/callbacks/postProjectileInitLate.lua +33 -0
- package/callbacks/postPurchase.d.ts +1 -0
- package/callbacks/postPurchase.lua +51 -0
- package/callbacks/postRockRender.d.ts +1 -0
- package/callbacks/postRockRender.lua +26 -0
- package/callbacks/postRockUpdate.d.ts +1 -0
- package/callbacks/postRockUpdate.lua +26 -0
- package/callbacks/postRoomClearChanged.d.ts +1 -0
- package/callbacks/postRoomClearChanged.lua +42 -0
- package/callbacks/postSacrifice.d.ts +1 -0
- package/callbacks/postSacrifice.lua +44 -0
- package/callbacks/postSlotInitUpdate.d.ts +1 -0
- package/callbacks/postSlotInitUpdate.lua +53 -0
- package/callbacks/postSlotRender.d.ts +1 -0
- package/callbacks/postSlotRender.lua +76 -0
- package/callbacks/postSpikesRender.d.ts +1 -0
- package/callbacks/postSpikesRender.lua +26 -0
- package/callbacks/postSpikesUpdate.d.ts +1 -0
- package/callbacks/postSpikesUpdate.lua +26 -0
- package/callbacks/postTNTRender.d.ts +1 -0
- package/callbacks/postTNTRender.lua +26 -0
- package/callbacks/postTNTUpdate.d.ts +1 -0
- package/callbacks/postTNTUpdate.lua +26 -0
- package/callbacks/postTearInitLate.d.ts +1 -0
- package/callbacks/postTearInitLate.lua +33 -0
- package/callbacks/postTearInitVeryLate.d.ts +1 -0
- package/callbacks/postTearInitVeryLate.lua +36 -0
- package/callbacks/postTransformation.d.ts +1 -0
- package/callbacks/postTransformation.lua +48 -0
- package/callbacks/postTrinketBreak.d.ts +1 -0
- package/callbacks/postTrinketBreak.lua +72 -0
- package/callbacks/preBerserkDeath.d.ts +1 -0
- package/callbacks/preBerserkDeath.lua +38 -0
- package/callbacks/preNewLevel.d.ts +1 -0
- package/callbacks/preNewLevel.lua +45 -0
- package/callbacks/reorderedCallbacks.d.ts +20 -0
- package/callbacks/reorderedCallbacks.lua +108 -0
- package/callbacks/subscriptions/postBombInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postBombInitLate.lua +29 -0
- package/callbacks/subscriptions/postBoneSwing.d.ts +4 -0
- package/callbacks/subscriptions/postBoneSwing.lua +22 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.d.ts +5 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.lua +29 -0
- package/callbacks/subscriptions/postCursedTeleport.d.ts +4 -0
- package/callbacks/subscriptions/postCursedTeleport.lua +22 -0
- package/callbacks/subscriptions/postCustomDoorEnter.d.ts +5 -0
- package/callbacks/subscriptions/postCustomDoorEnter.lua +35 -0
- package/callbacks/subscriptions/postCustomRevive.d.ts +5 -0
- package/callbacks/subscriptions/postCustomRevive.lua +29 -0
- package/callbacks/subscriptions/postDoorRender.d.ts +5 -0
- package/callbacks/subscriptions/postDoorRender.lua +30 -0
- package/callbacks/subscriptions/postDoorUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postDoorUpdate.lua +30 -0
- package/callbacks/subscriptions/postEffectInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postEffectInitLate.lua +29 -0
- package/callbacks/subscriptions/postEffectStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postEffectStateChanged.lua +29 -0
- package/callbacks/subscriptions/postEsauJr.d.ts +4 -0
- package/callbacks/subscriptions/postEsauJr.lua +22 -0
- package/callbacks/subscriptions/postFamiliarInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postFamiliarInitLate.lua +29 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.lua +29 -0
- package/callbacks/subscriptions/postFirstEsauJr.d.ts +4 -0
- package/callbacks/subscriptions/postFirstEsauJr.lua +22 -0
- package/callbacks/subscriptions/postFirstFlip.d.ts +4 -0
- package/callbacks/subscriptions/postFirstFlip.lua +22 -0
- package/callbacks/subscriptions/postFlip.d.ts +4 -0
- package/callbacks/subscriptions/postFlip.lua +22 -0
- package/callbacks/subscriptions/postGameStartedReordered.d.ts +3 -0
- package/callbacks/subscriptions/postGameStartedReordered.lua +22 -0
- package/callbacks/subscriptions/postGreedModeWave.d.ts +4 -0
- package/callbacks/subscriptions/postGreedModeWave.lua +22 -0
- package/callbacks/subscriptions/postGridEntityBroken.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityBroken.lua +35 -0
- package/callbacks/subscriptions/postGridEntityCollision.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityCollision.lua +35 -0
- package/callbacks/subscriptions/postGridEntityInit.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityInit.lua +35 -0
- package/callbacks/subscriptions/postGridEntityRemove.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityRemove.lua +33 -0
- package/callbacks/subscriptions/postGridEntityRender.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityRender.lua +35 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.lua +35 -0
- package/callbacks/subscriptions/postGridEntityUpdate.d.ts +6 -0
- package/callbacks/subscriptions/postGridEntityUpdate.lua +35 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.d.ts +6 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.lua +34 -0
- package/callbacks/subscriptions/postItemDischarged.d.ts +5 -0
- package/callbacks/subscriptions/postItemDischarged.lua +29 -0
- package/callbacks/subscriptions/postItemPickup.d.ts +11 -0
- package/callbacks/subscriptions/postItemPickup.lua +33 -0
- package/callbacks/subscriptions/postKnifeInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postKnifeInitLate.lua +29 -0
- package/callbacks/subscriptions/postLaserInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postLaserInitLate.lua +29 -0
- package/callbacks/subscriptions/postNPCInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postNPCInitLate.lua +29 -0
- package/callbacks/subscriptions/postNPCStateChanged.d.ts +6 -0
- package/callbacks/subscriptions/postNPCStateChanged.lua +33 -0
- package/callbacks/subscriptions/postNewLevelReordered.d.ts +1 -0
- package/callbacks/subscriptions/postNewLevelReordered.lua +22 -0
- package/callbacks/subscriptions/postNewRoomEarly.d.ts +1 -0
- package/callbacks/subscriptions/postNewRoomEarly.lua +22 -0
- package/callbacks/subscriptions/postNewRoomReordered.d.ts +1 -0
- package/callbacks/subscriptions/postNewRoomReordered.lua +22 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.lua +34 -0
- package/callbacks/subscriptions/postPickupCollect.d.ts +4 -0
- package/callbacks/subscriptions/postPickupCollect.lua +29 -0
- package/callbacks/subscriptions/postPickupInitLate.d.ts +3 -0
- package/callbacks/subscriptions/postPickupInitLate.lua +29 -0
- package/callbacks/subscriptions/postPickupStateChanged.d.ts +5 -0
- package/callbacks/subscriptions/postPickupStateChanged.lua +29 -0
- package/callbacks/subscriptions/postPitRender.d.ts +5 -0
- package/callbacks/subscriptions/postPitRender.lua +30 -0
- package/callbacks/subscriptions/postPitUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPitUpdate.lua +30 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.d.ts +7 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.lua +34 -0
- package/callbacks/subscriptions/postPlayerChangeType.d.ts +5 -0
- package/callbacks/subscriptions/postPlayerChangeType.lua +29 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.lua +45 -0
- package/callbacks/subscriptions/postPlayerInitLate.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerInitLate.lua +34 -0
- package/callbacks/subscriptions/postPlayerInitReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerInitReordered.lua +34 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.lua +34 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.d.ts +6 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.lua +34 -0
- package/callbacks/subscriptions/postPoopRender.d.ts +5 -0
- package/callbacks/subscriptions/postPoopRender.lua +30 -0
- package/callbacks/subscriptions/postPoopUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPoopUpdate.lua +30 -0
- package/callbacks/subscriptions/postPressurePlateRender.d.ts +5 -0
- package/callbacks/subscriptions/postPressurePlateRender.lua +30 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.lua +30 -0
- package/callbacks/subscriptions/postProjectileInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postProjectileInitLate.lua +29 -0
- package/callbacks/subscriptions/postPurchase.d.ts +6 -0
- package/callbacks/subscriptions/postPurchase.lua +22 -0
- package/callbacks/subscriptions/postRockRender.d.ts +5 -0
- package/callbacks/subscriptions/postRockRender.lua +30 -0
- package/callbacks/subscriptions/postRockUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postRockUpdate.lua +30 -0
- package/callbacks/subscriptions/postRoomClearChanged.d.ts +3 -0
- package/callbacks/subscriptions/postRoomClearChanged.lua +22 -0
- package/callbacks/subscriptions/postSacrifice.d.ts +6 -0
- package/callbacks/subscriptions/postSacrifice.lua +34 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.d.ts +5 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.lua +29 -0
- package/callbacks/subscriptions/postSlotDestroyed.d.ts +5 -0
- package/callbacks/subscriptions/postSlotDestroyed.lua +29 -0
- package/callbacks/subscriptions/postSlotInit.d.ts +5 -0
- package/callbacks/subscriptions/postSlotInit.lua +29 -0
- package/callbacks/subscriptions/postSlotRender.d.ts +5 -0
- package/callbacks/subscriptions/postSlotRender.lua +29 -0
- package/callbacks/subscriptions/postSlotUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postSlotUpdate.lua +29 -0
- package/callbacks/subscriptions/postSpikesRender.d.ts +5 -0
- package/callbacks/subscriptions/postSpikesRender.lua +30 -0
- package/callbacks/subscriptions/postSpikesUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postSpikesUpdate.lua +30 -0
- package/callbacks/subscriptions/postTNTRender.d.ts +5 -0
- package/callbacks/subscriptions/postTNTRender.lua +30 -0
- package/callbacks/subscriptions/postTNTUpdate.d.ts +5 -0
- package/callbacks/subscriptions/postTNTUpdate.lua +30 -0
- package/callbacks/subscriptions/postTearInitLate.d.ts +5 -0
- package/callbacks/subscriptions/postTearInitLate.lua +29 -0
- package/callbacks/subscriptions/postTearInitVeryLate.d.ts +5 -0
- package/callbacks/subscriptions/postTearInitVeryLate.lua +29 -0
- package/callbacks/subscriptions/postTransformation.d.ts +5 -0
- package/callbacks/subscriptions/postTransformation.lua +29 -0
- package/callbacks/subscriptions/postTrinketBreak.d.ts +5 -0
- package/callbacks/subscriptions/postTrinketBreak.lua +29 -0
- package/callbacks/subscriptions/preBerserkDeath.d.ts +6 -0
- package/callbacks/subscriptions/preBerserkDeath.lua +35 -0
- package/callbacks/subscriptions/preCustomRevive.d.ts +6 -0
- package/callbacks/subscriptions/preCustomRevive.lua +38 -0
- package/callbacks/subscriptions/preItemPickup.d.ts +11 -0
- package/callbacks/subscriptions/preItemPickup.lua +33 -0
- package/callbacks/subscriptions/preNewLevel.d.ts +4 -0
- package/callbacks/subscriptions/preNewLevel.lua +22 -0
- package/classes/DefaultMap.d.ts +110 -0
- package/classes/DefaultMap.lua +135 -0
- package/classes/ModUpgraded.d.ts +23 -0
- package/classes/ModUpgraded.lua +43 -0
- package/constants.d.ts +104 -0
- package/constants.lua +86 -0
- package/constantsFirstLast.d.ts +130 -0
- package/constantsFirstLast.lua +113 -0
- package/enums/HealthType.d.ts +16 -0
- package/enums/HealthType.lua +24 -0
- package/enums/ModCallbackCustom.d.ts +860 -0
- package/enums/ModCallbackCustom.lua +159 -0
- package/enums/PocketItemType.d.ts +8 -0
- package/enums/PocketItemType.lua +15 -0
- package/enums/SerializationType.d.ts +5 -0
- package/enums/SerializationType.lua +9 -0
- package/enums/private/CopyableIsaacAPIClassType.d.ts +7 -0
- package/enums/private/CopyableIsaacAPIClassType.lua +8 -0
- package/enums/private/SaveDataKey.d.ts +7 -0
- package/enums/private/SaveDataKey.lua +11 -0
- package/enums/private/SerializationBrand.d.ts +37 -0
- package/enums/private/SerializationBrand.lua +17 -0
- package/features/characterHealthConversion.d.ts +9 -0
- package/features/characterHealthConversion.lua +91 -0
- package/features/characterStats.d.ts +19 -0
- package/features/characterStats.lua +54 -0
- package/features/debugDisplay/debugDisplay.d.ts +2 -0
- package/features/debugDisplay/debugDisplay.lua +181 -0
- package/features/debugDisplay/exports.d.ts +199 -0
- package/features/debugDisplay/exports.lua +223 -0
- package/features/debugDisplay/v.d.ts +44 -0
- package/features/debugDisplay/v.lua +54 -0
- package/features/deployJSONRoom.d.ts +65 -0
- package/features/deployJSONRoom.lua +519 -0
- package/features/disableInputs.d.ts +62 -0
- package/features/disableInputs.lua +134 -0
- package/features/disableSound.d.ts +18 -0
- package/features/disableSound.lua +62 -0
- package/features/extraConsoleCommands/commandsDisplay.d.ts +162 -0
- package/features/extraConsoleCommands/commandsDisplay.lua +219 -0
- package/features/extraConsoleCommands/commandsSubroutines.d.ts +9 -0
- package/features/extraConsoleCommands/commandsSubroutines.lua +129 -0
- package/features/extraConsoleCommands/init.d.ts +26 -0
- package/features/extraConsoleCommands/init.lua +265 -0
- package/features/extraConsoleCommands/listCommands.d.ts +349 -0
- package/features/extraConsoleCommands/listCommands.lua +1094 -0
- package/features/extraConsoleCommands/v.d.ts +13 -0
- package/features/extraConsoleCommands/v.lua +10 -0
- package/features/fadeInRemover.d.ts +14 -0
- package/features/fadeInRemover.lua +55 -0
- package/features/fastReset.d.ts +14 -0
- package/features/fastReset.lua +59 -0
- package/features/forgottenSwitch.d.ts +5 -0
- package/features/forgottenSwitch.lua +32 -0
- package/features/getCollectibleItemPoolType.d.ts +7 -0
- package/features/getCollectibleItemPoolType.lua +48 -0
- package/features/playerInventory.d.ts +23 -0
- package/features/playerInventory.lua +147 -0
- package/features/ponyDetection.d.ts +6 -0
- package/features/ponyDetection.lua +53 -0
- package/features/preventCollectibleRotation.d.ts +11 -0
- package/features/preventCollectibleRotation.lua +67 -0
- package/features/runInNFrames.d.ts +61 -0
- package/features/runInNFrames.lua +128 -0
- package/features/saveDataManager/constants.d.ts +3 -0
- package/features/saveDataManager/constants.lua +5 -0
- package/features/saveDataManager/exports.d.ts +131 -0
- package/features/saveDataManager/exports.lua +181 -0
- package/features/saveDataManager/load.d.ts +4 -0
- package/features/saveDataManager/load.lua +66 -0
- package/features/saveDataManager/main.d.ts +3 -0
- package/features/saveDataManager/main.lua +125 -0
- package/features/saveDataManager/maps.d.ts +10 -0
- package/features/saveDataManager/maps.lua +11 -0
- package/features/saveDataManager/merge.d.ts +24 -0
- package/features/saveDataManager/merge.lua +144 -0
- package/features/saveDataManager/save.d.ts +4 -0
- package/features/saveDataManager/save.lua +44 -0
- package/features/saveDataManager/serializationBrand.d.ts +1 -0
- package/features/saveDataManager/serializationBrand.lua +17 -0
- package/features/sirenHelpers.d.ts +18 -0
- package/features/sirenHelpers.lua +82 -0
- package/features/taintedLazarusPlayers.d.ts +13 -0
- package/features/taintedLazarusPlayers.lua +85 -0
- package/featuresInitialized.d.ts +1 -0
- package/featuresInitialized.lua +20 -0
- package/functions/array.d.ts +141 -0
- package/functions/array.lua +354 -0
- package/functions/benchmark.d.ts +10 -0
- package/functions/benchmark.lua +38 -0
- package/functions/bitwise.d.ts +4 -0
- package/functions/bitwise.lua +21 -0
- package/functions/boss.d.ts +56 -0
- package/functions/boss.lua +218 -0
- package/functions/cacheFlag.d.ts +8 -0
- package/functions/cacheFlag.lua +11 -0
- package/functions/cards.d.ts +95 -0
- package/functions/cards.lua +234 -0
- package/functions/challenges.d.ts +3 -0
- package/functions/challenges.lua +10 -0
- package/functions/character.d.ts +48 -0
- package/functions/character.lua +96 -0
- package/functions/charge.d.ts +54 -0
- package/functions/charge.lua +162 -0
- package/functions/chargeBar.d.ts +12 -0
- package/functions/chargeBar.lua +47 -0
- package/functions/collectibleCacheFlag.d.ts +23 -0
- package/functions/collectibleCacheFlag.lua +80 -0
- package/functions/collectibleSet.d.ts +9 -0
- package/functions/collectibleSet.lua +54 -0
- package/functions/collectibleTag.d.ts +16 -0
- package/functions/collectibleTag.lua +83 -0
- package/functions/collectibles.d.ts +211 -0
- package/functions/collectibles.lua +412 -0
- package/functions/color.d.ts +45 -0
- package/functions/color.lua +140 -0
- package/functions/debug.d.ts +27 -0
- package/functions/debug.lua +49 -0
- package/functions/deepCopy.d.ts +29 -0
- package/functions/deepCopy.lua +382 -0
- package/functions/deepCopyTests.d.ts +1 -0
- package/functions/deepCopyTests.lua +316 -0
- package/functions/direction.d.ts +4 -0
- package/functions/direction.lua +17 -0
- package/functions/doors.d.ts +117 -0
- package/functions/doors.lua +284 -0
- package/functions/easing.d.ts +30 -0
- package/functions/easing.lua +115 -0
- package/functions/eden.d.ts +3 -0
- package/functions/eden.lua +47 -0
- package/functions/entity.d.ts +131 -0
- package/functions/entity.lua +321 -0
- package/functions/entitySpecific.d.ts +264 -0
- package/functions/entitySpecific.lua +832 -0
- package/functions/entityTypes.d.ts +3 -0
- package/functions/entityTypes.lua +8 -0
- package/functions/enums.d.ts +80 -0
- package/functions/enums.lua +147 -0
- package/functions/familiars.d.ts +60 -0
- package/functions/familiars.lua +85 -0
- package/functions/flag.d.ts +99 -0
- package/functions/flag.lua +124 -0
- package/functions/flying.d.ts +19 -0
- package/functions/flying.lua +77 -0
- package/functions/globals.d.ts +14 -0
- package/functions/globals.lua +236 -0
- package/functions/gridEntity.d.ts +155 -0
- package/functions/gridEntity.lua +368 -0
- package/functions/gridEntitySpecific.d.ts +18 -0
- package/functions/gridEntitySpecific.lua +96 -0
- package/functions/input.d.ts +32 -0
- package/functions/input.lua +117 -0
- package/functions/isaacAPIClass.d.ts +23 -0
- package/functions/isaacAPIClass.lua +47 -0
- package/functions/jsonHelpers.d.ts +18 -0
- package/functions/jsonHelpers.lua +37 -0
- package/functions/jsonRoom.d.ts +12 -0
- package/functions/jsonRoom.lua +91 -0
- package/functions/kColor.d.ts +31 -0
- package/functions/kColor.lua +110 -0
- package/functions/language.d.ts +8 -0
- package/functions/language.lua +13 -0
- package/functions/level.d.ts +1 -0
- package/functions/level.lua +29 -0
- package/functions/log.d.ts +78 -0
- package/functions/log.lua +547 -0
- package/functions/map.d.ts +22 -0
- package/functions/map.lua +61 -0
- package/functions/math.d.ts +50 -0
- package/functions/math.lua +118 -0
- package/functions/mergeTests.d.ts +1 -0
- package/functions/mergeTests.lua +182 -0
- package/functions/npc.d.ts +40 -0
- package/functions/npc.lua +128 -0
- package/functions/pickupVariants.d.ts +23 -0
- package/functions/pickupVariants.lua +48 -0
- package/functions/pickups.d.ts +132 -0
- package/functions/pickups.lua +474 -0
- package/functions/pills.d.ts +69 -0
- package/functions/pills.lua +128 -0
- package/functions/player.d.ts +296 -0
- package/functions/player.lua +777 -0
- package/functions/playerDataStructures.d.ts +92 -0
- package/functions/playerDataStructures.lua +103 -0
- package/functions/playerHealth.d.ts +22 -0
- package/functions/playerHealth.lua +296 -0
- package/functions/playerIndex.d.ts +68 -0
- package/functions/playerIndex.lua +174 -0
- package/functions/pocketItems.d.ts +33 -0
- package/functions/pocketItems.lua +104 -0
- package/functions/positionVelocity.d.ts +64 -0
- package/functions/positionVelocity.lua +154 -0
- package/functions/random.d.ts +42 -0
- package/functions/random.lua +70 -0
- package/functions/revive.d.ts +31 -0
- package/functions/revive.lua +117 -0
- package/functions/rng.d.ts +53 -0
- package/functions/rng.lua +148 -0
- package/functions/roomData.d.ts +108 -0
- package/functions/roomData.lua +160 -0
- package/functions/roomGrid.d.ts +40 -0
- package/functions/roomGrid.lua +80 -0
- package/functions/roomShape.d.ts +43 -0
- package/functions/roomShape.lua +67 -0
- package/functions/rooms.d.ts +194 -0
- package/functions/rooms.lua +482 -0
- package/functions/run.d.ts +12 -0
- package/functions/run.lua +33 -0
- package/functions/seeds.d.ts +9 -0
- package/functions/seeds.lua +19 -0
- package/functions/serialization.d.ts +11 -0
- package/functions/serialization.lua +69 -0
- package/functions/set.d.ts +39 -0
- package/functions/set.lua +83 -0
- package/functions/sound.d.ts +1 -0
- package/functions/sound.lua +13 -0
- package/functions/spawnCollectible.d.ts +31 -0
- package/functions/spawnCollectible.lua +94 -0
- package/functions/sprite.d.ts +36 -0
- package/functions/sprite.lua +89 -0
- package/functions/stage.d.ts +35 -0
- package/functions/stage.lua +86 -0
- package/functions/string.d.ts +13 -0
- package/functions/string.lua +42 -0
- package/functions/table.d.ts +36 -0
- package/functions/table.lua +98 -0
- package/functions/tears.d.ts +22 -0
- package/functions/tears.lua +26 -0
- package/functions/transformations.d.ts +30 -0
- package/functions/transformations.lua +114 -0
- package/functions/trinketCacheFlag.d.ts +10 -0
- package/functions/trinketCacheFlag.lua +53 -0
- package/functions/trinketGive.d.ts +38 -0
- package/functions/trinketGive.lua +114 -0
- package/functions/trinkets.d.ts +73 -0
- package/functions/trinkets.lua +167 -0
- package/functions/tstlClass.d.ts +20 -0
- package/functions/tstlClass.lua +65 -0
- package/functions/ui.d.ts +34 -0
- package/functions/ui.lua +111 -0
- package/functions/utils.d.ts +113 -0
- package/functions/utils.lua +182 -0
- package/functions/vector.d.ts +32 -0
- package/functions/vector.lua +127 -0
- package/index.d.ts +129 -0
- package/index.lua +900 -0
- package/initCustomCallbacks.d.ts +2 -0
- package/initCustomCallbacks.lua +178 -0
- package/initFeatures.d.ts +3 -0
- package/initFeatures.lua +51 -0
- package/interfaces/AddCallbackParameterCustom.d.ts +153 -0
- package/interfaces/AddCallbackParameterCustom.lua +4 -0
- package/interfaces/ChargeBarSprites.d.ts +13 -0
- package/interfaces/ChargeBarSprites.lua +2 -0
- package/interfaces/JSONDoor.d.ts +11 -0
- package/interfaces/JSONDoor.lua +2 -0
- package/interfaces/JSONEntity.d.ts +13 -0
- package/interfaces/JSONEntity.lua +2 -0
- package/interfaces/JSONRoom.d.ts +26 -0
- package/interfaces/JSONRoom.lua +2 -0
- package/interfaces/JSONRooms.d.ts +11 -0
- package/interfaces/JSONRooms.lua +2 -0
- package/interfaces/JSONSpawn.d.ts +11 -0
- package/interfaces/JSONSpawn.lua +2 -0
- package/interfaces/PlayerHealth.d.ts +15 -0
- package/interfaces/PlayerHealth.lua +2 -0
- package/interfaces/PocketItemDescription.d.ts +8 -0
- package/interfaces/PocketItemDescription.lua +2 -0
- package/interfaces/SaveData.d.ts +29 -0
- package/interfaces/SaveData.lua +2 -0
- package/interfaces/TrinketSituation.d.ts +8 -0
- package/interfaces/TrinketSituation.lua +2 -0
- package/interfaces/private/TSTLClassMetatable.d.ts +10 -0
- package/interfaces/private/TSTLClassMetatable.lua +2 -0
- package/lualib_bundle.lua +2475 -0
- package/maps/cardMap.d.ts +3 -0
- package/maps/cardMap.lua +212 -0
- package/maps/characterMap.d.ts +3 -0
- package/maps/characterMap.lua +90 -0
- package/maps/collectibleDescriptionMap.d.ts +3 -0
- package/maps/collectibleDescriptionMap.lua +728 -0
- package/maps/collectibleNameMap.d.ts +3 -0
- package/maps/collectibleNameMap.lua +728 -0
- package/maps/defaultPlayerStatMap.d.ts +3 -0
- package/maps/defaultPlayerStatMap.lua +25 -0
- package/maps/gridEntityTypeToBrokenStateMap.d.ts +2 -0
- package/maps/gridEntityTypeToBrokenStateMap.lua +26 -0
- package/maps/gridEntityXMLMap.d.ts +9 -0
- package/maps/gridEntityXMLMap.lua +53 -0
- package/maps/pillEffectMap.d.ts +3 -0
- package/maps/pillEffectMap.lua +90 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.d.ts +7 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.lua +17 -0
- package/maps/roomTypeMap.d.ts +3 -0
- package/maps/roomTypeMap.lua +45 -0
- package/maps/trinketDescriptionMap.d.ts +3 -0
- package/maps/trinketDescriptionMap.lua +196 -0
- package/maps/trinketNameMap.d.ts +3 -0
- package/maps/trinketNameMap.lua +196 -0
- package/objects/LRoomShapeToRectangles.d.ts +13 -0
- package/objects/LRoomShapeToRectangles.lua +35 -0
- package/objects/callbackRegisterFunctions.d.ts +5 -0
- package/objects/callbackRegisterFunctions.lua +231 -0
- package/objects/cardDescriptions.d.ts +5 -0
- package/objects/cardDescriptions.lua +105 -0
- package/objects/cardNames.d.ts +5 -0
- package/objects/cardNames.lua +105 -0
- package/objects/cardTypes.d.ts +5 -0
- package/objects/cardTypes.lua +106 -0
- package/objects/challengeNames.d.ts +5 -0
- package/objects/challengeNames.lua +53 -0
- package/objects/characterNames.d.ts +5 -0
- package/objects/characterNames.lua +49 -0
- package/objects/coinSubTypeToValue.d.ts +5 -0
- package/objects/coinSubTypeToValue.lua +15 -0
- package/objects/colors.d.ts +17 -0
- package/objects/colors.lua +16 -0
- package/objects/directionNames.d.ts +4 -0
- package/objects/directionNames.lua +11 -0
- package/objects/directionToDegrees.d.ts +4 -0
- package/objects/directionToDegrees.lua +11 -0
- package/objects/directionToVector.d.ts +4 -0
- package/objects/directionToVector.lua +13 -0
- package/objects/doorSlotFlagToDoorSlot.d.ts +5 -0
- package/objects/doorSlotFlagToDoorSlot.lua +16 -0
- package/objects/doorSlotToDirection.d.ts +4 -0
- package/objects/doorSlotToDirection.lua +16 -0
- package/objects/isaacAPIClassTypeToBrand.d.ts +5 -0
- package/objects/isaacAPIClassTypeToBrand.lua +7 -0
- package/objects/isaacAPIClassTypeToCopyFunction.d.ts +5 -0
- package/objects/isaacAPIClassTypeToCopyFunction.lua +13 -0
- package/objects/languageNames.d.ts +4 -0
- package/objects/languageNames.lua +13 -0
- package/objects/pillEffectClasses.d.ts +5 -0
- package/objects/pillEffectClasses.lua +59 -0
- package/objects/pillEffectNames.d.ts +5 -0
- package/objects/pillEffectNames.lua +57 -0
- package/objects/pillEffectTypes.d.ts +5 -0
- package/objects/pillEffectTypes.lua +58 -0
- package/objects/roomShapeBounds.d.ts +8 -0
- package/objects/roomShapeBounds.lua +26 -0
- package/objects/roomShapeLayoutSizes.d.ts +10 -0
- package/objects/roomShapeLayoutSizes.lua +29 -0
- package/objects/roomShapeToBottomRightPosition.d.ts +8 -0
- package/objects/roomShapeToBottomRightPosition.lua +22 -0
- package/objects/roomShapeToDoorSlots.d.ts +4 -0
- package/objects/roomShapeToDoorSlots.lua +46 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.d.ts +8 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.lua +89 -0
- package/objects/roomShapeToGridWidth.d.ts +4 -0
- package/objects/roomShapeToGridWidth.lua +20 -0
- package/objects/roomShapeToTopLeftPosition.d.ts +8 -0
- package/objects/roomShapeToTopLeftPosition.lua +24 -0
- package/objects/roomShapeVolumes.d.ts +13 -0
- package/objects/roomShapeVolumes.lua +30 -0
- package/objects/roomTypeNames.d.ts +5 -0
- package/objects/roomTypeNames.lua +37 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +4 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +13 -0
- package/objects/stageTypeToLetter.d.ts +4 -0
- package/objects/stageTypeToLetter.lua +12 -0
- package/objects/transformationNames.d.ts +5 -0
- package/objects/transformationNames.lua +21 -0
- package/package.json +3 -4
- package/patchErrorFunctions.d.ts +1 -0
- package/patchErrorFunctions.lua +58 -0
- package/sets/LRoomShapesSet.d.ts +2 -0
- package/sets/LRoomShapesSet.lua +8 -0
- package/sets/bossSets.d.ts +4 -0
- package/sets/bossSets.lua +554 -0
- package/sets/charactersThatStartWithAnActiveItemSet.d.ts +2 -0
- package/sets/charactersThatStartWithAnActiveItemSet.lua +20 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.d.ts +2 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.lua +8 -0
- package/sets/charactersWithFreeDevilDealsSet.d.ts +2 -0
- package/sets/charactersWithFreeDevilDealsSet.lua +8 -0
- package/sets/charactersWithNoRedHeartsSet.d.ts +6 -0
- package/sets/charactersWithNoRedHeartsSet.lua +19 -0
- package/sets/charactersWithNoSoulHeartsSet.d.ts +6 -0
- package/sets/charactersWithNoSoulHeartsSet.lua +16 -0
- package/sets/chestPickupVariantsSet.d.ts +2 -0
- package/sets/chestPickupVariantsSet.lua +21 -0
- package/sets/familiarsThatShootPlayerTearsSet.d.ts +2 -0
- package/sets/familiarsThatShootPlayerTearsSet.lua +17 -0
- package/sets/lostStyleCharactersSet.d.ts +6 -0
- package/sets/lostStyleCharactersSet.lua +16 -0
- package/sets/mineShaftRoomSubTypesSet.d.ts +2 -0
- package/sets/mineShaftRoomSubTypesSet.lua +14 -0
- package/sets/redHeartSubTypesSet.d.ts +2 -0
- package/sets/redHeartSubTypesSet.lua +8 -0
- package/sets/sinEntityTypesSet.d.ts +2 -0
- package/sets/sinEntityTypesSet.lua +16 -0
- package/sets/singleUseActiveCollectibleTypesSet.d.ts +2 -0
- package/sets/singleUseActiveCollectibleTypesSet.lua +17 -0
- package/sets/storyBossesSet.d.ts +2 -0
- package/sets/storyBossesSet.lua +22 -0
- package/types/AnyEntity.d.ts +2 -0
- package/types/AnyEntity.lua +2 -0
- package/types/CollectibleIndex.d.ts +16 -0
- package/types/CollectibleIndex.lua +2 -0
- package/types/PickingUpItem.d.ts +34 -0
- package/types/PickingUpItem.lua +34 -0
- package/types/PlayerIndex.d.ts +16 -0
- package/types/PlayerIndex.lua +2 -0
- package/types/private/IsaacAPIClass.d.ts +4 -0
- package/types/private/IsaacAPIClass.lua +2 -0
- package/types/private/SerializedIsaacAPIClass.d.ts +4 -0
- package/types/private/SerializedIsaacAPIClass.lua +2 -0
- package/types/private/TSTLClass.d.ts +4 -0
- package/types/private/TSTLClass.lua +2 -0
- package/upgradeMod.d.ts +23 -0
- package/upgradeMod.lua +51 -0
- package/.eslintrc.js +0 -70
- package/build.sh +0 -27
- package/docs.sh +0 -21
- package/lint.sh +0 -34
- package/project.json +0 -37
- package/release.sh +0 -16
- package/scripts/.eslintrc.js +0 -21
- package/scripts/docsEntryPointLint.ts +0 -135
- package/scripts/tsconfig.json +0 -5
- package/src/cachedClasses.ts +0 -39
- package/src/callbacks/customRevive.ts +0 -206
- package/src/callbacks/itemPickup.ts +0 -101
- package/src/callbacks/postBombInitLate.ts +0 -36
- package/src/callbacks/postBoneSwing.ts +0 -64
- package/src/callbacks/postCollectibleInitFirst.ts +0 -39
- package/src/callbacks/postCursedTeleport.ts +0 -183
- package/src/callbacks/postCustomDoorEnter.ts +0 -297
- package/src/callbacks/postDoorRender.ts +0 -26
- package/src/callbacks/postDoorUpdate.ts +0 -26
- package/src/callbacks/postEffectInitLate.ts +0 -36
- package/src/callbacks/postEffectStateChanged.ts +0 -43
- package/src/callbacks/postEsauJr.ts +0 -107
- package/src/callbacks/postFamiliarInitLate.ts +0 -36
- package/src/callbacks/postFamiliarStateChanged.ts +0 -43
- package/src/callbacks/postFlip.ts +0 -88
- package/src/callbacks/postGreedModeWave.ts +0 -41
- package/src/callbacks/postGridEntity.ts +0 -159
- package/src/callbacks/postGridEntityCollision.ts +0 -69
- package/src/callbacks/postGridEntityRender.ts +0 -26
- package/src/callbacks/postHolyMantleRemoved.ts +0 -55
- package/src/callbacks/postItemDischarged.ts +0 -149
- package/src/callbacks/postKnifeInitLate.ts +0 -36
- package/src/callbacks/postLaserInitLate.ts +0 -36
- package/src/callbacks/postNPCInitLate.ts +0 -36
- package/src/callbacks/postNPCStateChanged.ts +0 -42
- package/src/callbacks/postNewRoomEarly.ts +0 -90
- package/src/callbacks/postPickupCollect.ts +0 -48
- package/src/callbacks/postPickupInitLate.ts +0 -36
- package/src/callbacks/postPickupStateChanged.ts +0 -43
- package/src/callbacks/postPitRender.ts +0 -26
- package/src/callbacks/postPitUpdate.ts +0 -26
- package/src/callbacks/postPlayerChangeHealth.ts +0 -62
- package/src/callbacks/postPlayerChangeType.ts +0 -56
- package/src/callbacks/postPlayerFatalDamage.ts +0 -98
- package/src/callbacks/postPlayerInitLate.ts +0 -37
- package/src/callbacks/postPlayerReordered.ts +0 -142
- package/src/callbacks/postPoopRender.ts +0 -26
- package/src/callbacks/postPoopUpdate.ts +0 -26
- package/src/callbacks/postPressurePlateRender.ts +0 -26
- package/src/callbacks/postPressurePlateUpdate.ts +0 -26
- package/src/callbacks/postProjectileInitLate.ts +0 -36
- package/src/callbacks/postPurchase.ts +0 -64
- package/src/callbacks/postRockRender.ts +0 -26
- package/src/callbacks/postRockUpdate.ts +0 -26
- package/src/callbacks/postRoomClearChanged.ts +0 -52
- package/src/callbacks/postSacrifice.ts +0 -62
- package/src/callbacks/postSlotInitUpdate.ts +0 -63
- package/src/callbacks/postSlotRender.ts +0 -96
- package/src/callbacks/postSpikesRender.ts +0 -26
- package/src/callbacks/postSpikesUpdate.ts +0 -26
- package/src/callbacks/postTNTRender.ts +0 -26
- package/src/callbacks/postTNTUpdate.ts +0 -26
- package/src/callbacks/postTearInitLate.ts +0 -36
- package/src/callbacks/postTearInitVeryLate.ts +0 -41
- package/src/callbacks/postTransformation.ts +0 -59
- package/src/callbacks/postTrinketBreak.ts +0 -110
- package/src/callbacks/preBerserkDeath.ts +0 -49
- package/src/callbacks/preNewLevel.ts +0 -55
- package/src/callbacks/reorderedCallbacks.ts +0 -166
- package/src/callbacks/subscriptions/postBombInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postBoneSwing.ts +0 -24
- package/src/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
- package/src/callbacks/subscriptions/postCursedTeleport.ts +0 -24
- package/src/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
- package/src/callbacks/subscriptions/postCustomRevive.ts +0 -36
- package/src/callbacks/subscriptions/postDoorRender.ts +0 -35
- package/src/callbacks/subscriptions/postDoorUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postEffectInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
- package/src/callbacks/subscriptions/postEsauJr.ts +0 -24
- package/src/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
- package/src/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
- package/src/callbacks/subscriptions/postFirstFlip.ts +0 -24
- package/src/callbacks/subscriptions/postFlip.ts +0 -22
- package/src/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
- package/src/callbacks/subscriptions/postGreedModeWave.ts +0 -24
- package/src/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
- package/src/callbacks/subscriptions/postGridEntityInit.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
- package/src/callbacks/subscriptions/postGridEntityRender.ts +0 -51
- package/src/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
- package/src/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
- package/src/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
- package/src/callbacks/subscriptions/postItemDischarged.ts +0 -43
- package/src/callbacks/subscriptions/postItemPickup.ts +0 -64
- package/src/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postLaserInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postNPCInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
- package/src/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
- package/src/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
- package/src/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
- package/src/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPickupCollect.ts +0 -34
- package/src/callbacks/subscriptions/postPickupInitLate.ts +0 -31
- package/src/callbacks/subscriptions/postPickupStateChanged.ts +0 -35
- package/src/callbacks/subscriptions/postPitRender.ts +0 -35
- package/src/callbacks/subscriptions/postPitUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -45
- package/src/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -67
- package/src/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
- package/src/callbacks/subscriptions/postPoopRender.ts +0 -35
- package/src/callbacks/subscriptions/postPoopUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
- package/src/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
- package/src/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
- package/src/callbacks/subscriptions/postPurchase.ts +0 -31
- package/src/callbacks/subscriptions/postRockRender.ts +0 -35
- package/src/callbacks/subscriptions/postRockUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postRoomClearChanged.ts +0 -24
- package/src/callbacks/subscriptions/postSacrifice.ts +0 -43
- package/src/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
- package/src/callbacks/subscriptions/postSlotDestroyed.ts +0 -32
- package/src/callbacks/subscriptions/postSlotInit.ts +0 -32
- package/src/callbacks/subscriptions/postSlotRender.ts +0 -32
- package/src/callbacks/subscriptions/postSlotUpdate.ts +0 -32
- package/src/callbacks/subscriptions/postSpikesRender.ts +0 -35
- package/src/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postTNTRender.ts +0 -35
- package/src/callbacks/subscriptions/postTNTUpdate.ts +0 -35
- package/src/callbacks/subscriptions/postTearInitLate.ts +0 -32
- package/src/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
- package/src/callbacks/subscriptions/postTransformation.ts +0 -40
- package/src/callbacks/subscriptions/postTrinketBreak.ts +0 -38
- package/src/callbacks/subscriptions/preBerserkDeath.ts +0 -42
- package/src/callbacks/subscriptions/preCustomRevive.ts +0 -45
- package/src/callbacks/subscriptions/preItemPickup.ts +0 -64
- package/src/callbacks/subscriptions/preNewLevel.ts +0 -24
- package/src/classes/DefaultMap.ts +0 -220
- package/src/classes/ModUpgraded.ts +0 -83
- package/src/constants.ts +0 -140
- package/src/constantsFirstLast.ts +0 -212
- package/src/enums/HealthType.ts +0 -16
- package/src/enums/ModCallbackCustom.ts +0 -943
- package/src/enums/PocketItemType.ts +0 -8
- package/src/enums/SerializationType.ts +0 -5
- package/src/enums/private/CopyableIsaacAPIClassType.ts +0 -7
- package/src/enums/private/SaveDataKey.ts +0 -14
- package/src/enums/private/SerializationBrand.ts +0 -42
- package/src/features/characterHealthConversion.ts +0 -116
- package/src/features/characterStats.ts +0 -61
- package/src/features/debugDisplay/debugDisplay.ts +0 -221
- package/src/features/debugDisplay/exports.ts +0 -368
- package/src/features/debugDisplay/v.ts +0 -65
- package/src/features/deployJSONRoom.ts +0 -672
- package/src/features/disableInputs.ts +0 -193
- package/src/features/disableSound.ts +0 -77
- package/src/features/extraConsoleCommands/commandsDisplay.ts +0 -290
- package/src/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
- package/src/features/extraConsoleCommands/init.ts +0 -334
- package/src/features/extraConsoleCommands/listCommands.ts +0 -1298
- package/src/features/extraConsoleCommands/v.ts +0 -14
- package/src/features/fadeInRemover.ts +0 -60
- package/src/features/fastReset.ts +0 -75
- package/src/features/forgottenSwitch.ts +0 -50
- package/src/features/getCollectibleItemPoolType.ts +0 -66
- package/src/features/playerInventory.ts +0 -187
- package/src/features/ponyDetection.ts +0 -74
- package/src/features/preventCollectibleRotation.ts +0 -113
- package/src/features/runInNFrames.ts +0 -148
- package/src/features/saveDataManager/constants.ts +0 -4
- package/src/features/saveDataManager/exports.ts +0 -230
- package/src/features/saveDataManager/load.ts +0 -90
- package/src/features/saveDataManager/main.ts +0 -187
- package/src/features/saveDataManager/maps.ts +0 -13
- package/src/features/saveDataManager/merge.ts +0 -182
- package/src/features/saveDataManager/save.ts +0 -66
- package/src/features/saveDataManager/serializationBrand.ts +0 -15
- package/src/features/sirenHelpers.ts +0 -129
- package/src/features/taintedLazarusPlayers.ts +0 -113
- package/src/featuresInitialized.ts +0 -20
- package/src/functions/array.ts +0 -412
- package/src/functions/benchmark.ts +0 -36
- package/src/functions/bitwise.ts +0 -24
- package/src/functions/boss.ts +0 -227
- package/src/functions/cacheFlag.ts +0 -12
- package/src/functions/cards.ts +0 -267
- package/src/functions/challenges.ts +0 -11
- package/src/functions/character.ts +0 -124
- package/src/functions/charge.ts +0 -237
- package/src/functions/chargeBar.ts +0 -67
- package/src/functions/collectibleCacheFlag.ts +0 -90
- package/src/functions/collectibleSet.ts +0 -57
- package/src/functions/collectibleTag.ts +0 -89
- package/src/functions/collectibles.ts +0 -610
- package/src/functions/color.ts +0 -149
- package/src/functions/debug.ts +0 -65
- package/src/functions/deepCopy.ts +0 -508
- package/src/functions/deepCopyTests.ts +0 -390
- package/src/functions/direction.ts +0 -16
- package/src/functions/doors.ts +0 -343
- package/src/functions/easing.ts +0 -182
- package/src/functions/eden.ts +0 -47
- package/src/functions/entity.ts +0 -352
- package/src/functions/entitySpecific.ts +0 -889
- package/src/functions/entityTypes.ts +0 -6
- package/src/functions/enums.ts +0 -145
- package/src/functions/familiars.ts +0 -106
- package/src/functions/flag.ts +0 -165
- package/src/functions/flying.ts +0 -117
- package/src/functions/globals.ts +0 -249
- package/src/functions/gridEntity.ts +0 -511
- package/src/functions/gridEntitySpecific.ts +0 -112
- package/src/functions/input.ts +0 -139
- package/src/functions/isaacAPIClass.ts +0 -65
- package/src/functions/jsonHelpers.ts +0 -45
- package/src/functions/jsonRoom.ts +0 -100
- package/src/functions/kColor.ts +0 -130
- package/src/functions/language.ts +0 -13
- package/src/functions/level.ts +0 -31
- package/src/functions/log.ts +0 -660
- package/src/functions/map.ts +0 -56
- package/src/functions/math.ts +0 -149
- package/src/functions/mergeTests.ts +0 -288
- package/src/functions/npc.ts +0 -148
- package/src/functions/pickupVariants.ts +0 -60
- package/src/functions/pickups.ts +0 -449
- package/src/functions/pills.ts +0 -182
- package/src/functions/player.ts +0 -975
- package/src/functions/playerDataStructures.ts +0 -150
- package/src/functions/playerHealth.ts +0 -318
- package/src/functions/playerIndex.ts +0 -195
- package/src/functions/pocketItems.ts +0 -149
- package/src/functions/positionVelocity.ts +0 -188
- package/src/functions/random.ts +0 -77
- package/src/functions/revive.ts +0 -201
- package/src/functions/rng.ts +0 -177
- package/src/functions/roomData.ts +0 -199
- package/src/functions/roomGrid.ts +0 -109
- package/src/functions/roomShape.ts +0 -80
- package/src/functions/rooms.ts +0 -667
- package/src/functions/run.ts +0 -36
- package/src/functions/seeds.ts +0 -19
- package/src/functions/serialization.ts +0 -97
- package/src/functions/set.ts +0 -95
- package/src/functions/sound.ts +0 -9
- package/src/functions/spawnCollectible.ts +0 -104
- package/src/functions/sprite.ts +0 -107
- package/src/functions/stage.ts +0 -125
- package/src/functions/string.ts +0 -47
- package/src/functions/table.ts +0 -139
- package/src/functions/tears.ts +0 -32
- package/src/functions/transformations.ts +0 -137
- package/src/functions/trinketCacheFlag.ts +0 -60
- package/src/functions/trinketGive.ts +0 -157
- package/src/functions/trinkets.ts +0 -215
- package/src/functions/tstlClass.ts +0 -91
- package/src/functions/ui.ts +0 -138
- package/src/functions/utils.ts +0 -200
- package/src/functions/vector.ts +0 -145
- package/src/index.ts +0 -162
- package/src/initCustomCallbacks.ts +0 -120
- package/src/initFeatures.ts +0 -37
- package/src/interfaces/AddCallbackParameterCustom.ts +0 -174
- package/src/interfaces/ChargeBarSprites.ts +0 -12
- package/src/interfaces/JSONDoor.ts +0 -13
- package/src/interfaces/JSONEntity.ts +0 -16
- package/src/interfaces/JSONRoom.ts +0 -36
- package/src/interfaces/JSONRooms.ts +0 -12
- package/src/interfaces/JSONSpawn.ts +0 -14
- package/src/interfaces/PlayerHealth.ts +0 -16
- package/src/interfaces/PocketItemDescription.ts +0 -9
- package/src/interfaces/SaveData.ts +0 -29
- package/src/interfaces/TrinketSituation.ts +0 -9
- package/src/interfaces/private/TSTLClassMetatable.ts +0 -8
- package/src/maps/cardMap.ts +0 -209
- package/src/maps/characterMap.ts +0 -87
- package/src/maps/collectibleDescriptionMap.ts +0 -732
- package/src/maps/collectibleNameMap.ts +0 -731
- package/src/maps/defaultPlayerStatMap.ts +0 -17
- package/src/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
- package/src/maps/gridEntityXMLMap.ts +0 -176
- package/src/maps/pillEffectMap.ts +0 -88
- package/src/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
- package/src/maps/roomTypeMap.ts +0 -40
- package/src/maps/trinketDescriptionMap.ts +0 -200
- package/src/maps/trinketNameMap.ts +0 -198
- package/src/objects/LRoomShapeToRectangles.ts +0 -44
- package/src/objects/callbackRegisterFunctions.ts +0 -171
- package/src/objects/cardDescriptions.ts +0 -105
- package/src/objects/cardNames.ts +0 -105
- package/src/objects/cardTypes.ts +0 -104
- package/src/objects/challengeNames.ts +0 -52
- package/src/objects/characterNames.ts +0 -48
- package/src/objects/coinSubTypeToValue.ts +0 -14
- package/src/objects/colors.ts +0 -16
- package/src/objects/directionNames.ts +0 -11
- package/src/objects/directionToDegrees.ts +0 -11
- package/src/objects/directionToVector.ts +0 -12
- package/src/objects/doorSlotFlagToDoorSlot.ts +0 -16
- package/src/objects/doorSlotToDirection.ts +0 -14
- package/src/objects/isaacAPIClassTypeToBrand.ts +0 -11
- package/src/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
- package/src/objects/languageNames.ts +0 -13
- package/src/objects/pillEffectClasses.ts +0 -63
- package/src/objects/pillEffectNames.ts +0 -57
- package/src/objects/pillEffectTypes.ts +0 -62
- package/src/objects/roomShapeBounds.ts +0 -71
- package/src/objects/roomShapeLayoutSizes.ts +0 -45
- package/src/objects/roomShapeToBottomRightPosition.ts +0 -25
- package/src/objects/roomShapeToDoorSlots.ts +0 -83
- package/src/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
- package/src/objects/roomShapeToGridWidth.ts +0 -21
- package/src/objects/roomShapeToTopLeftPosition.ts +0 -26
- package/src/objects/roomShapeVolumes.ts +0 -38
- package/src/objects/roomTypeNames.ts +0 -36
- package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
- package/src/objects/stageTypeToLetter.ts +0 -15
- package/src/objects/transformationNames.ts +0 -20
- package/src/patchErrorFunctions.ts +0 -92
- package/src/sets/LRoomShapesSet.ts +0 -8
- package/src/sets/bossSets.ts +0 -470
- package/src/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
- package/src/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
- package/src/sets/charactersWithFreeDevilDealsSet.ts +0 -4
- package/src/sets/charactersWithNoRedHeartsSet.ts +0 -17
- package/src/sets/charactersWithNoSoulHeartsSet.ts +0 -14
- package/src/sets/chestPickupVariantsSet.ts +0 -16
- package/src/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
- package/src/sets/lostStyleCharactersSet.ts +0 -13
- package/src/sets/mineShaftRoomSubTypesSet.ts +0 -10
- package/src/sets/redHeartSubTypesSet.ts +0 -7
- package/src/sets/sinEntityTypesSet.ts +0 -11
- package/src/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
- package/src/sets/storyBossesSet.ts +0 -17
- package/src/types/AnyEntity.ts +0 -12
- package/src/types/AwaitingTextInput.d.ts +0 -2
- package/src/types/CollectibleIndex.ts +0 -14
- package/src/types/PickingUpItem.ts +0 -89
- package/src/types/PlayerIndex.ts +0 -13
- package/src/types/private/IsaacAPIClass.ts +0 -3
- package/src/types/private/SerializedIsaacAPIClass.ts +0 -3
- package/src/types/private/TSTLClass.ts +0 -3
- package/src/upgradeMod.ts +0 -55
- package/tsconfig.json +0 -42
- package/typedoc.json +0 -158
- package/website-root.md +0 -11
|
@@ -1,672 +0,0 @@
|
|
|
1
|
-
// Basement Renovator can create custom rooms that are saved to XML files. These XML files can be
|
|
2
|
-
// converted to JSON so that they can be imported by TypeScript code. Then, existing rooms can be
|
|
3
|
-
// manually replaced with a custom room by manually removing everything in the room and rebuilding
|
|
4
|
-
// it from scratch based on the JSON data.
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
CollectibleType,
|
|
8
|
-
EffectVariant,
|
|
9
|
-
EntityCollisionClass,
|
|
10
|
-
EntityFlag,
|
|
11
|
-
EntityGridCollisionClass,
|
|
12
|
-
EntityType,
|
|
13
|
-
GridEntityType,
|
|
14
|
-
GridEntityXMLType,
|
|
15
|
-
ModCallback,
|
|
16
|
-
PickupVariant,
|
|
17
|
-
PitfallVariant,
|
|
18
|
-
RoomType,
|
|
19
|
-
} from "isaac-typescript-definitions";
|
|
20
|
-
import { game } from "../cachedClasses";
|
|
21
|
-
import { DefaultMap } from "../classes/DefaultMap";
|
|
22
|
-
import { errorIfFeaturesNotInitialized } from "../featuresInitialized";
|
|
23
|
-
import {
|
|
24
|
-
removeAllMatchingEntities,
|
|
25
|
-
spawn,
|
|
26
|
-
spawnWithSeed,
|
|
27
|
-
} from "../functions/entity";
|
|
28
|
-
import {
|
|
29
|
-
getNPCs,
|
|
30
|
-
removeAllBombs,
|
|
31
|
-
removeAllPickups,
|
|
32
|
-
} from "../functions/entitySpecific";
|
|
33
|
-
import {
|
|
34
|
-
convertXMLGridEntityType,
|
|
35
|
-
getGridEntities,
|
|
36
|
-
removeAllGridExcept,
|
|
37
|
-
setGridEntityInvisible,
|
|
38
|
-
spawnGridWithVariant,
|
|
39
|
-
} from "../functions/gridEntity";
|
|
40
|
-
import { getRandomJSONRoom } from "../functions/jsonRoom";
|
|
41
|
-
import { log } from "../functions/log";
|
|
42
|
-
import { getRandomSeed, isRNG, newRNG } from "../functions/rng";
|
|
43
|
-
import { getRoomListIndex } from "../functions/roomData";
|
|
44
|
-
import { gridCoordinatesToWorldPosition } from "../functions/roomGrid";
|
|
45
|
-
import { setRoomCleared, setRoomUncleared } from "../functions/rooms";
|
|
46
|
-
import { spawnCollectible } from "../functions/spawnCollectible";
|
|
47
|
-
import { erange } from "../functions/utils";
|
|
48
|
-
import { JSONRoom } from "../interfaces/JSONRoom";
|
|
49
|
-
import { saveDataManager } from "./saveDataManager/exports";
|
|
50
|
-
|
|
51
|
-
const FEATURE_NAME = "JSON room deployer";
|
|
52
|
-
|
|
53
|
-
interface PersistentEntityDescription {
|
|
54
|
-
gridIndex: int;
|
|
55
|
-
entityType: EntityType;
|
|
56
|
-
variant: int;
|
|
57
|
-
subType: int;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const NPC_TYPES_TO_NOT_REMOVE: ReadonlySet<EntityType> = new Set([
|
|
61
|
-
EntityType.DARK_ESAU,
|
|
62
|
-
]);
|
|
63
|
-
|
|
64
|
-
const PERSISTENT_ENTITY_TYPES: ReadonlySet<EntityType> = new Set([
|
|
65
|
-
EntityType.WALL_HUGGER,
|
|
66
|
-
]);
|
|
67
|
-
|
|
68
|
-
const v = {
|
|
69
|
-
level: {
|
|
70
|
-
deployedRoomListIndexes: new Set<int>(),
|
|
71
|
-
|
|
72
|
-
/** Indexed by room list index. */
|
|
73
|
-
roomToPersistentEntitiesMap: new DefaultMap<
|
|
74
|
-
int,
|
|
75
|
-
PersistentEntityDescription[]
|
|
76
|
-
>(() => []),
|
|
77
|
-
|
|
78
|
-
/** Indexed by room list index. */
|
|
79
|
-
roomToDecorationGridIndexesMap: new DefaultMap<int, int[]>(() => []),
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
/** @internal */
|
|
84
|
-
export function deployJSONRoomInit(mod: Mod): void {
|
|
85
|
-
saveDataManager("deployJSONRoom", v);
|
|
86
|
-
|
|
87
|
-
mod.AddCallback(ModCallback.POST_NEW_ROOM, postNewRoom); // 19
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// ModCallback.POST_NEW_ROOM (19)
|
|
91
|
-
function postNewRoom() {
|
|
92
|
-
const roomListIndex = getRoomListIndex();
|
|
93
|
-
|
|
94
|
-
if (!v.level.deployedRoomListIndexes.has(roomListIndex)) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
setDecorationsInvisible();
|
|
99
|
-
respawnPersistentEntities();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Every time we re-enter a deployed room, the sprites for all of the decorations will come back, so
|
|
104
|
-
* we have to remove them again.
|
|
105
|
-
*/
|
|
106
|
-
function setDecorationsInvisible() {
|
|
107
|
-
const room = game.GetRoom();
|
|
108
|
-
const roomListIndex = getRoomListIndex();
|
|
109
|
-
|
|
110
|
-
const decorationGridIndexes =
|
|
111
|
-
v.level.roomToDecorationGridIndexesMap.getAndSetDefault(roomListIndex);
|
|
112
|
-
|
|
113
|
-
for (const gridIndex of decorationGridIndexes) {
|
|
114
|
-
const gridEntity = room.GetGridEntity(gridIndex);
|
|
115
|
-
if (gridEntity !== undefined) {
|
|
116
|
-
// Other grid entities may have spawned, like trapdoors or crawlspaces. Thus, only make
|
|
117
|
-
// decorations invisible.
|
|
118
|
-
const gridEntityType = gridEntity.GetType();
|
|
119
|
-
if (gridEntityType === GridEntityType.DECORATION) {
|
|
120
|
-
setGridEntityInvisible(gridEntity);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/** Some entities must be manually respawned every time the player re-enters the room. */
|
|
127
|
-
function respawnPersistentEntities() {
|
|
128
|
-
const room = game.GetRoom();
|
|
129
|
-
const roomListIndex = getRoomListIndex();
|
|
130
|
-
|
|
131
|
-
const persistentEntities =
|
|
132
|
-
v.level.roomToPersistentEntitiesMap.getAndSetDefault(roomListIndex);
|
|
133
|
-
|
|
134
|
-
for (const persistentEntity of persistentEntities) {
|
|
135
|
-
const position = room.GetGridPosition(persistentEntity.gridIndex);
|
|
136
|
-
spawn(
|
|
137
|
-
persistentEntity.entityType,
|
|
138
|
-
persistentEntity.variant,
|
|
139
|
-
persistentEntity.subType,
|
|
140
|
-
position,
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Helper function to deconstruct a vanilla room and set up a custom room in its place.
|
|
147
|
-
* Specifically, this will clear the current room of all entities and grid entities, and then spawn
|
|
148
|
-
* all of the entries and grid entities in the provided JSON room.
|
|
149
|
-
*
|
|
150
|
-
* This function is meant to be used in the PostNewRoom callback.
|
|
151
|
-
*
|
|
152
|
-
* For example:
|
|
153
|
-
*
|
|
154
|
-
* ```ts
|
|
155
|
-
*
|
|
156
|
-
* import customRooms from "./customRooms";
|
|
157
|
-
*
|
|
158
|
-
* const firstJSONRoom = customRooms.rooms.room[0];
|
|
159
|
-
* deployJSONRoom(firstJSONRoom);
|
|
160
|
-
* ```
|
|
161
|
-
*
|
|
162
|
-
* @param jsonRoom The JSON room to deploy. *
|
|
163
|
-
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
164
|
-
* `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
165
|
-
* @param verbose Optional. If specified, will write entries to the "log.txt" file that describe
|
|
166
|
-
* what the function is doing. Default is false.
|
|
167
|
-
*/
|
|
168
|
-
export function deployJSONRoom(
|
|
169
|
-
jsonRoom: JSONRoom,
|
|
170
|
-
seedOrRNG: Seed | RNG = getRandomSeed(),
|
|
171
|
-
verbose = false,
|
|
172
|
-
): void {
|
|
173
|
-
errorIfFeaturesNotInitialized(FEATURE_NAME);
|
|
174
|
-
|
|
175
|
-
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
176
|
-
|
|
177
|
-
if (verbose) {
|
|
178
|
-
log("Starting to empty the room of entities and grid entities.");
|
|
179
|
-
}
|
|
180
|
-
emptyRoom(false);
|
|
181
|
-
if (verbose) {
|
|
182
|
-
log("Finished emptying the room of entities and grid entities.");
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (verbose) {
|
|
186
|
-
log("Starting to spawn all of the new entities and grid entities.");
|
|
187
|
-
}
|
|
188
|
-
spawnAllEntities(jsonRoom, rng, verbose);
|
|
189
|
-
if (verbose) {
|
|
190
|
-
log("Finished spawning all of the new entities and grid entities.");
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
fixPitGraphics();
|
|
194
|
-
fillRoomWithDecorations();
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Helper function to deconstruct a vanilla room and set up a custom room in its place.
|
|
199
|
-
* Specifically, this will clear the current room of all entities and grid entities, and then spawn
|
|
200
|
-
* all of the entries and grid entities in one of the provided JSON rooms.
|
|
201
|
-
*
|
|
202
|
-
* This function is meant to be used in the PostNewRoom callback.
|
|
203
|
-
*
|
|
204
|
-
* Note that this function does not simply choose a random element in the provided array; it will
|
|
205
|
-
* properly account for each room weight using the algorithm from:
|
|
206
|
-
* https://stackoverflow.com/questions/1761626/weighted-random-numbers
|
|
207
|
-
*
|
|
208
|
-
* For example:
|
|
209
|
-
*
|
|
210
|
-
* ```ts
|
|
211
|
-
* import customRooms from "./customRooms";
|
|
212
|
-
*
|
|
213
|
-
* const jsonRooms = customRooms.rooms.room;
|
|
214
|
-
* deployRandomJSONRoom(jsonRooms);
|
|
215
|
-
* ```
|
|
216
|
-
*
|
|
217
|
-
* @param jsonRooms An array of JSON rooms to randomly select from. In practice, this will be
|
|
218
|
-
* something like.
|
|
219
|
-
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
220
|
-
* `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
221
|
-
* @param verbose Optional. If specified, will write entries to the "log.txt" file that describe
|
|
222
|
-
* what the function is doing. Default is false.
|
|
223
|
-
*/
|
|
224
|
-
export function deployRandomJSONRoom(
|
|
225
|
-
jsonRooms: JSONRoom[],
|
|
226
|
-
seedOrRNG: Seed | RNG = getRandomSeed(),
|
|
227
|
-
verbose = false,
|
|
228
|
-
): void {
|
|
229
|
-
errorIfFeaturesNotInitialized(FEATURE_NAME);
|
|
230
|
-
|
|
231
|
-
const rng = isRNG(seedOrRNG) ? seedOrRNG : newRNG(seedOrRNG);
|
|
232
|
-
|
|
233
|
-
const randomJSONRoom = getRandomJSONRoom(jsonRooms, rng, verbose);
|
|
234
|
-
if (verbose) {
|
|
235
|
-
log(
|
|
236
|
-
`Randomly chose JSON room ${randomJSONRoom.$.type}.${randomJSONRoom.$.variant}.${randomJSONRoom.$.subtype} with name: ${randomJSONRoom.$.name}`,
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return deployJSONRoom(randomJSONRoom, rng, verbose);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Helper function to remove all naturally spawning entities and grid entities from a room. Notably,
|
|
245
|
-
* this will not remove players (1), tears (2), familiars (3), lasers (7), knives (8), projectiles
|
|
246
|
-
* (9), blacklisted NPCs such as Dark Esau, charmed NPCs, friendly NPCs, persistent NPCs, most
|
|
247
|
-
* effects (1000), doors, and walls.
|
|
248
|
-
*
|
|
249
|
-
* @param fillWithDecorations Optional. Set to true to fill every grid tile with an invisible
|
|
250
|
-
* decoration, which prevents vanilla entities in the room from
|
|
251
|
-
* respawning the next time that the player enters. Default is false.
|
|
252
|
-
*/
|
|
253
|
-
export function emptyRoom(fillWithDecorations: boolean): void {
|
|
254
|
-
errorIfFeaturesNotInitialized(FEATURE_NAME);
|
|
255
|
-
|
|
256
|
-
const roomListIndex = getRoomListIndex();
|
|
257
|
-
|
|
258
|
-
v.level.deployedRoomListIndexes.add(roomListIndex);
|
|
259
|
-
|
|
260
|
-
removeAllBombs(); // 4
|
|
261
|
-
removeAllPickups(); // 5
|
|
262
|
-
removeAllMatchingEntities(EntityType.SLOT); // 6
|
|
263
|
-
removeSpecificNPCs();
|
|
264
|
-
removeAllMatchingEntities(EntityType.EFFECT, EffectVariant.DEVIL);
|
|
265
|
-
removeAllMatchingEntities(EntityType.EFFECT, EffectVariant.ANGEL);
|
|
266
|
-
|
|
267
|
-
removeAllGridExcept(
|
|
268
|
-
GridEntityType.WALL, // 15
|
|
269
|
-
GridEntityType.DOOR, // 16
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
setRoomCleared();
|
|
273
|
-
|
|
274
|
-
if (fillWithDecorations) {
|
|
275
|
-
fillRoomWithDecorations();
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* We remove entities in the PostNewRoom callback instead of in the PreRoomEntitySpawn callback so
|
|
281
|
-
* that they will not re-appear when we re-enter the room.
|
|
282
|
-
*/
|
|
283
|
-
function removeSpecificNPCs() {
|
|
284
|
-
const room = game.GetRoom();
|
|
285
|
-
|
|
286
|
-
for (const npc of getNPCs()) {
|
|
287
|
-
if (NPC_TYPES_TO_NOT_REMOVE.has(npc.Type)) {
|
|
288
|
-
continue;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
if (
|
|
292
|
-
npc.HasEntityFlags(EntityFlag.CHARM) ||
|
|
293
|
-
npc.HasEntityFlags(EntityFlag.FRIENDLY) ||
|
|
294
|
-
npc.HasEntityFlags(EntityFlag.PERSISTENT)
|
|
295
|
-
) {
|
|
296
|
-
continue;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
npc.ClearEntityFlags(EntityFlag.APPEAR);
|
|
300
|
-
npc.Remove();
|
|
301
|
-
|
|
302
|
-
// When fire places are removed, they will leave behind a "path" that will prevent future grid
|
|
303
|
-
// entities from being spawned on the same tile. Thus, reset the path for this tile if this is a
|
|
304
|
-
// fire place.
|
|
305
|
-
if (npc.Type === EntityType.FIREPLACE) {
|
|
306
|
-
const gridIndex = room.GetGridIndex(npc.Position);
|
|
307
|
-
room.SetGridPath(gridIndex, 0);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* We removed most normal entities, which should prevent them from respawning when the player
|
|
314
|
-
* re-enters the room. However, this is not the case for grid entities; even if they are removed,
|
|
315
|
-
* they will come back when the player re-enters the room.
|
|
316
|
-
*
|
|
317
|
-
* In order to prevent this from happening, we can spawn a grid entity on every tile that does not
|
|
318
|
-
* already have a grid entity. The natural grid entity to choose for this purpose is a decoration,
|
|
319
|
-
* since it is non-interacting.
|
|
320
|
-
*
|
|
321
|
-
* Another option besides decorations would be to use a pressure plates with a state of 1, which is
|
|
322
|
-
* a state that is normally unused by the game and makes it invisible & persistent. However, pickups
|
|
323
|
-
* will not be able to spawn on pressure plates, which lead to various bugs (e.g. pickups spawning
|
|
324
|
-
* on top of pits). Thus, we use a decoration and remove its sprite to make it invisible.
|
|
325
|
-
*/
|
|
326
|
-
function fillRoomWithDecorations() {
|
|
327
|
-
const room = game.GetRoom();
|
|
328
|
-
const gridSize = room.GetGridSize();
|
|
329
|
-
const roomListIndex = getRoomListIndex();
|
|
330
|
-
|
|
331
|
-
const decorationGridIndexes =
|
|
332
|
-
v.level.roomToDecorationGridIndexesMap.getAndSetDefault(roomListIndex);
|
|
333
|
-
|
|
334
|
-
for (const gridIndex of erange(gridSize)) {
|
|
335
|
-
const existingGridEntity = room.GetGridEntity(gridIndex);
|
|
336
|
-
if (existingGridEntity !== undefined) {
|
|
337
|
-
continue;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
const position = room.GetGridPosition(gridIndex);
|
|
341
|
-
const decoration = Isaac.GridSpawn(GridEntityType.DECORATION, 0, position);
|
|
342
|
-
|
|
343
|
-
if (decoration !== undefined) {
|
|
344
|
-
setGridEntityInvisible(decoration);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
decorationGridIndexes.push(gridIndex);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
function spawnAllEntities(jsonRoom: JSONRoom, rng: RNG, verbose = false) {
|
|
352
|
-
let shouldUnclearRoom = false;
|
|
353
|
-
|
|
354
|
-
for (const jsonSpawn of jsonRoom.spawn) {
|
|
355
|
-
const xString = jsonSpawn.$.x;
|
|
356
|
-
const x = tonumber(xString);
|
|
357
|
-
if (x === undefined) {
|
|
358
|
-
error(
|
|
359
|
-
`Failed to convert the following x coordinate to a number (for a spawn): ${xString}`,
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
const yString = jsonSpawn.$.y;
|
|
364
|
-
const y = tonumber(yString);
|
|
365
|
-
if (y === undefined) {
|
|
366
|
-
error(
|
|
367
|
-
`Failed to convert the following y coordinate to a number (for a spawn): ${yString}`,
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
if (jsonSpawn.entity.length > 1) {
|
|
372
|
-
error("Stacked entities are not implemented for JSON rooms.");
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const firstXMLEntity = jsonSpawn.entity[0];
|
|
376
|
-
if (firstXMLEntity === undefined) {
|
|
377
|
-
error('Failed to get the first JSON entity from an "entity" array.');
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
const entityTypeString = firstXMLEntity.$.type;
|
|
381
|
-
const entityType = tonumber(entityTypeString);
|
|
382
|
-
if (entityType === undefined) {
|
|
383
|
-
error(
|
|
384
|
-
`Failed to convert the entity type to a number: ${entityTypeString}`,
|
|
385
|
-
);
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
const variantString = firstXMLEntity.$.variant;
|
|
389
|
-
const variant = tonumber(variantString);
|
|
390
|
-
if (variant === undefined) {
|
|
391
|
-
error(`Failed to convert the entity variant to a number: ${variant}`);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
const subTypeString = firstXMLEntity.$.subtype;
|
|
395
|
-
const subType = tonumber(subTypeString);
|
|
396
|
-
if (subType === undefined) {
|
|
397
|
-
error(`Failed to convert the entity sub-type to a number: ${subType}`);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// Note that XML entity type 1000 is a rock, not an effect.
|
|
401
|
-
if (entityType >= 1000) {
|
|
402
|
-
if (verbose) {
|
|
403
|
-
log(`Spawning grid entity ${entityType}.${variant} at: (${x}, ${y})`);
|
|
404
|
-
}
|
|
405
|
-
spawnGridEntityForJSONRoom(
|
|
406
|
-
entityType as GridEntityXMLType,
|
|
407
|
-
variant,
|
|
408
|
-
x,
|
|
409
|
-
y,
|
|
410
|
-
);
|
|
411
|
-
} else {
|
|
412
|
-
if (verbose) {
|
|
413
|
-
log(
|
|
414
|
-
`Spawning normal entity ${entityType}.${variant}.${subType} at: (${x}, ${y})`,
|
|
415
|
-
);
|
|
416
|
-
}
|
|
417
|
-
const entity = spawnNormalEntityForJSONRoom(
|
|
418
|
-
entityType as EntityType,
|
|
419
|
-
variant,
|
|
420
|
-
subType,
|
|
421
|
-
x,
|
|
422
|
-
y,
|
|
423
|
-
rng,
|
|
424
|
-
);
|
|
425
|
-
const npc = entity.ToNPC();
|
|
426
|
-
if (npc !== undefined && npc.CanShutDoors) {
|
|
427
|
-
shouldUnclearRoom = true;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
// After emptying the room, we manually cleared the room. However, if the room layout contains an
|
|
433
|
-
// battle NPC, then we need to reset the clear state and close the doors again.
|
|
434
|
-
if (shouldUnclearRoom) {
|
|
435
|
-
if (verbose) {
|
|
436
|
-
log(
|
|
437
|
-
"Setting the room to be uncleared since there were one or more battle NPCs spawned.",
|
|
438
|
-
);
|
|
439
|
-
}
|
|
440
|
-
setRoomUncleared();
|
|
441
|
-
} else if (verbose) {
|
|
442
|
-
log("Leaving the room cleared since there were no battle NPCs spawned.");
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
function spawnGridEntityForJSONRoom(
|
|
447
|
-
gridEntityXMLType: GridEntityXMLType,
|
|
448
|
-
gridEntityXMLVariant: int,
|
|
449
|
-
x: int,
|
|
450
|
-
y: int,
|
|
451
|
-
) {
|
|
452
|
-
const room = game.GetRoom();
|
|
453
|
-
|
|
454
|
-
const gridEntityTuple = convertXMLGridEntityType(
|
|
455
|
-
gridEntityXMLType,
|
|
456
|
-
gridEntityXMLVariant,
|
|
457
|
-
);
|
|
458
|
-
if (gridEntityTuple === undefined) {
|
|
459
|
-
return undefined;
|
|
460
|
-
}
|
|
461
|
-
const [gridEntityType, variant] = gridEntityTuple;
|
|
462
|
-
const position = gridCoordinatesToWorldPosition(x, y);
|
|
463
|
-
const gridIndex = room.GetGridIndex(position);
|
|
464
|
-
|
|
465
|
-
const gridEntity = spawnGridWithVariant(gridEntityType, variant, gridIndex);
|
|
466
|
-
if (gridEntity === undefined) {
|
|
467
|
-
return gridEntity;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
// Prevent poops from playing an appear animation, since that is not supposed to normally happen
|
|
471
|
-
// when entering a new room.
|
|
472
|
-
if (gridEntityType === GridEntityType.POOP) {
|
|
473
|
-
const sprite = gridEntity.GetSprite();
|
|
474
|
-
sprite.Play("State1", true);
|
|
475
|
-
sprite.SetLastFrame();
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
return gridEntity;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
function spawnNormalEntityForJSONRoom(
|
|
482
|
-
entityType: EntityType,
|
|
483
|
-
variant: int,
|
|
484
|
-
subType: int,
|
|
485
|
-
x: int,
|
|
486
|
-
y: int,
|
|
487
|
-
rng: RNG,
|
|
488
|
-
) {
|
|
489
|
-
const room = game.GetRoom();
|
|
490
|
-
const roomType = room.GetType();
|
|
491
|
-
const position = gridCoordinatesToWorldPosition(x, y);
|
|
492
|
-
const seed = rng.Next();
|
|
493
|
-
|
|
494
|
-
let entity: Entity;
|
|
495
|
-
if (
|
|
496
|
-
entityType === EntityType.PICKUP &&
|
|
497
|
-
(variant as PickupVariant) === PickupVariant.COLLECTIBLE
|
|
498
|
-
) {
|
|
499
|
-
const options = roomType === RoomType.ANGEL;
|
|
500
|
-
entity = spawnCollectible(
|
|
501
|
-
subType as CollectibleType,
|
|
502
|
-
position,
|
|
503
|
-
seed,
|
|
504
|
-
options,
|
|
505
|
-
);
|
|
506
|
-
} else {
|
|
507
|
-
entity = spawnWithSeed(entityType, variant, subType, position, seed);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
// For some reason, Pitfalls do not spawn with the correct collision classes.
|
|
511
|
-
if (
|
|
512
|
-
entityType === EntityType.PITFALL &&
|
|
513
|
-
(variant as PitfallVariant) === PitfallVariant.PITFALL
|
|
514
|
-
) {
|
|
515
|
-
entity.EntityCollisionClass = EntityCollisionClass.ENEMIES;
|
|
516
|
-
entity.GridCollisionClass = EntityGridCollisionClass.WALLS;
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
storePersistentEntity(entity);
|
|
520
|
-
|
|
521
|
-
return entity;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
/**
|
|
525
|
-
* Some entities must be manually respawned every time the player re-enters the room. If we just
|
|
526
|
-
* spawned one such entity, then record it for later.
|
|
527
|
-
*/
|
|
528
|
-
function storePersistentEntity(entity: Entity) {
|
|
529
|
-
if (!PERSISTENT_ENTITY_TYPES.has(entity.Type)) {
|
|
530
|
-
return;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
const room = game.GetRoom();
|
|
534
|
-
const gridIndex = room.GetGridIndex(entity.Position);
|
|
535
|
-
const roomListIndex = getRoomListIndex();
|
|
536
|
-
|
|
537
|
-
const persistentEntity: PersistentEntityDescription = {
|
|
538
|
-
gridIndex,
|
|
539
|
-
entityType: entity.Type,
|
|
540
|
-
variant: entity.Variant,
|
|
541
|
-
subType: entity.SubType,
|
|
542
|
-
};
|
|
543
|
-
|
|
544
|
-
const persistentEntities =
|
|
545
|
-
v.level.roomToPersistentEntitiesMap.getAndSetDefault(roomListIndex);
|
|
546
|
-
persistentEntities.push(persistentEntity);
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* By default, when spawning multiple pits next to each other, the graphics will not "meld"
|
|
551
|
-
* together. Thus, now that all of the entities in the room are spawned, we must iterate over the
|
|
552
|
-
* pits in the room and manually fix their sprites, if necessary.
|
|
553
|
-
*/
|
|
554
|
-
function fixPitGraphics() {
|
|
555
|
-
const room = game.GetRoom();
|
|
556
|
-
const gridWidth = room.GetGridWidth();
|
|
557
|
-
const pitMap = getPitMap();
|
|
558
|
-
|
|
559
|
-
for (const [gridIndex, gridEntity] of pitMap.entries()) {
|
|
560
|
-
const gridIndexLeft = gridIndex - 1;
|
|
561
|
-
const L = pitMap.has(gridIndexLeft);
|
|
562
|
-
const gridIndexRight = gridIndex + 1;
|
|
563
|
-
const R = pitMap.has(gridIndexRight);
|
|
564
|
-
const gridIndexUp = gridIndex - gridWidth;
|
|
565
|
-
const U = pitMap.has(gridIndexUp);
|
|
566
|
-
const gridIndexDown = gridIndex + gridWidth;
|
|
567
|
-
const D = pitMap.has(gridIndexDown);
|
|
568
|
-
const gridIndexUpLeft = gridIndex - gridWidth - 1;
|
|
569
|
-
const UL = pitMap.has(gridIndexUpLeft);
|
|
570
|
-
const gridIndexUpRight = gridIndex - gridWidth + 1;
|
|
571
|
-
const UR = pitMap.has(gridIndexUpRight);
|
|
572
|
-
const gridIndexDownLeft = gridIndex + gridWidth - 1;
|
|
573
|
-
const DL = pitMap.has(gridIndexDownLeft);
|
|
574
|
-
const gridIndexDownRight = gridIndex + gridWidth + 1;
|
|
575
|
-
const DR = pitMap.has(gridIndexDownRight);
|
|
576
|
-
|
|
577
|
-
const pitFrame = getPitFrame(L, R, U, D, UL, UR, DL, DR);
|
|
578
|
-
const sprite = gridEntity.GetSprite();
|
|
579
|
-
sprite.SetFrame(pitFrame);
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
function getPitMap() {
|
|
584
|
-
const pitMap = new Map<int, GridEntity>();
|
|
585
|
-
for (const gridEntity of getGridEntities(GridEntityType.PIT)) {
|
|
586
|
-
const gridIndex = gridEntity.GetGridIndex();
|
|
587
|
-
pitMap.set(gridIndex, gridEntity);
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
return pitMap;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
/** The logic in this function is copied from Basement Renovator. */
|
|
594
|
-
function getPitFrame(
|
|
595
|
-
L: boolean,
|
|
596
|
-
R: boolean,
|
|
597
|
-
U: boolean,
|
|
598
|
-
D: boolean,
|
|
599
|
-
UL: boolean,
|
|
600
|
-
UR: boolean,
|
|
601
|
-
DL: boolean,
|
|
602
|
-
DR: boolean,
|
|
603
|
-
) {
|
|
604
|
-
let F = 0;
|
|
605
|
-
|
|
606
|
-
// First, check for bitwise frames. (It works for all combinations of just left/up/right/down.)
|
|
607
|
-
if (L) {
|
|
608
|
-
F |= 1;
|
|
609
|
-
}
|
|
610
|
-
if (U) {
|
|
611
|
-
F |= 2;
|
|
612
|
-
}
|
|
613
|
-
if (R) {
|
|
614
|
-
F |= 4;
|
|
615
|
-
}
|
|
616
|
-
if (D) {
|
|
617
|
-
F |= 8;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
// Then, check for other combinations.
|
|
621
|
-
if (U && L && !UL && !R && !D) {
|
|
622
|
-
F = 17;
|
|
623
|
-
}
|
|
624
|
-
if (U && R && !UR && !L && !D) {
|
|
625
|
-
F = 18;
|
|
626
|
-
}
|
|
627
|
-
if (L && D && !DL && !U && !R) {
|
|
628
|
-
F = 19;
|
|
629
|
-
}
|
|
630
|
-
if (R && D && !DR && !L && !U) {
|
|
631
|
-
F = 20;
|
|
632
|
-
}
|
|
633
|
-
if (L && U && R && D && !UL) {
|
|
634
|
-
F = 21;
|
|
635
|
-
}
|
|
636
|
-
if (L && U && R && D && !UR) {
|
|
637
|
-
F = 22;
|
|
638
|
-
}
|
|
639
|
-
if (U && R && D && !L && !UR) {
|
|
640
|
-
F = 25;
|
|
641
|
-
}
|
|
642
|
-
if (L && U && D && !R && !UL) {
|
|
643
|
-
F = 26;
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
if (L && U && R && D && !DL && !DR) {
|
|
647
|
-
F = 24;
|
|
648
|
-
}
|
|
649
|
-
if (L && U && R && D && !UR && !UL) {
|
|
650
|
-
F = 23;
|
|
651
|
-
}
|
|
652
|
-
if (L && U && R && UL && !UR && !D) {
|
|
653
|
-
F = 27;
|
|
654
|
-
}
|
|
655
|
-
if (L && U && R && UR && !UL && !D) {
|
|
656
|
-
F = 28;
|
|
657
|
-
}
|
|
658
|
-
if (L && U && R && !D && !UR && !UL) {
|
|
659
|
-
F = 29;
|
|
660
|
-
}
|
|
661
|
-
if (L && R && D && DL && !U && !DR) {
|
|
662
|
-
F = 30;
|
|
663
|
-
}
|
|
664
|
-
if (L && R && D && DR && !U && !DL) {
|
|
665
|
-
F = 31;
|
|
666
|
-
}
|
|
667
|
-
if (L && R && D && !U && !DL && !DR) {
|
|
668
|
-
F = 32;
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
return F;
|
|
672
|
-
}
|