isaacscript-common 3.17.0 → 4.0.2
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.ts +39 -0
- package/callbacks/customRevive.lua +2 -1
- package/callbacks/customRevive.ts +215 -0
- package/callbacks/itemPickup.ts +101 -0
- package/callbacks/postAmbush.ts +73 -0
- package/callbacks/postBombExploded.ts +26 -0
- package/callbacks/postBombInitLate.ts +36 -0
- package/callbacks/postBoneSwing.ts +64 -0
- package/callbacks/postCollectibleInitFirst.ts +40 -0
- package/callbacks/postCursedTeleport.lua +2 -1
- package/callbacks/postCursedTeleport.ts +185 -0
- package/callbacks/postCustomDoorEnter.lua +0 -7
- package/callbacks/postCustomDoorEnter.ts +292 -0
- package/callbacks/postDiceRoomActivated.ts +60 -0
- package/callbacks/postDoorRender.ts +26 -0
- package/callbacks/postDoorUpdate.ts +26 -0
- package/callbacks/postEffectInitLate.ts +36 -0
- package/callbacks/postEffectStateChanged.ts +43 -0
- package/callbacks/postEsauJr.lua +2 -1
- package/callbacks/postEsauJr.ts +109 -0
- package/callbacks/postFamiliarInitLate.ts +36 -0
- package/callbacks/postFamiliarStateChanged.ts +43 -0
- package/callbacks/postFlip.lua +4 -3
- package/callbacks/postFlip.ts +90 -0
- package/callbacks/postGreedModeWave.ts +41 -0
- package/callbacks/postGridEntity.ts +164 -0
- package/callbacks/postGridEntityCollision.ts +69 -0
- package/callbacks/postGridEntityRender.ts +26 -0
- package/callbacks/postHolyMantleRemoved.ts +55 -0
- package/callbacks/postItemDischarged.lua +4 -3
- package/callbacks/postItemDischarged.ts +154 -0
- package/callbacks/postKnifeInitLate.ts +36 -0
- package/callbacks/postLaserInitLate.ts +36 -0
- package/callbacks/postNPCInitLate.ts +36 -0
- package/callbacks/postNPCStateChanged.ts +42 -0
- package/callbacks/postNewRoomEarly.lua +2 -1
- package/callbacks/postNewRoomEarly.ts +96 -0
- package/callbacks/postPickupCollect.ts +48 -0
- package/callbacks/postPickupInitFirst.ts +70 -0
- package/callbacks/postPickupInitLate.ts +36 -0
- package/callbacks/postPickupStateChanged.ts +43 -0
- package/callbacks/postPitRender.ts +26 -0
- package/callbacks/postPitUpdate.ts +26 -0
- package/callbacks/postPlayerChangeHealth.ts +62 -0
- package/callbacks/postPlayerChangeType.ts +56 -0
- package/callbacks/postPlayerCollectible.ts +113 -0
- package/callbacks/postPlayerFatalDamage.ts +141 -0
- package/callbacks/postPlayerInitLate.ts +37 -0
- package/callbacks/postPlayerReordered.ts +142 -0
- package/callbacks/postPoopRender.ts +26 -0
- package/callbacks/postPoopUpdate.ts +26 -0
- package/callbacks/postPressurePlateRender.ts +26 -0
- package/callbacks/postPressurePlateUpdate.ts +26 -0
- package/callbacks/postProjectileInitLate.ts +36 -0
- package/callbacks/postPurchase.ts +64 -0
- package/callbacks/postRockRender.ts +26 -0
- package/callbacks/postRockUpdate.ts +26 -0
- package/callbacks/postRoomClearChanged.ts +57 -0
- package/callbacks/postSacrifice.lua +3 -2
- package/callbacks/postSacrifice.ts +64 -0
- package/callbacks/postSlotDestroyed.ts +92 -0
- package/callbacks/postSlotInitUpdate.ts +68 -0
- package/callbacks/postSlotRender.ts +69 -0
- package/callbacks/postSpikesRender.ts +26 -0
- package/callbacks/postSpikesUpdate.ts +26 -0
- package/callbacks/postTNTRender.ts +26 -0
- package/callbacks/postTNTUpdate.ts +26 -0
- package/callbacks/postTearInitLate.ts +36 -0
- package/callbacks/postTearInitVeryLate.ts +41 -0
- package/callbacks/postTransformation.ts +59 -0
- package/callbacks/postTrinketBreak.lua +3 -2
- package/callbacks/postTrinketBreak.ts +112 -0
- package/callbacks/preBerserkDeath.ts +49 -0
- package/callbacks/preNewLevel.ts +55 -0
- package/callbacks/reorderedCallbacks.lua +1 -0
- package/callbacks/reorderedCallbacks.ts +168 -0
- package/callbacks/subscriptions/postAmbushFinished.ts +32 -0
- package/callbacks/subscriptions/postAmbushStarted.ts +32 -0
- package/callbacks/subscriptions/postBombInitLate.ts +32 -0
- package/callbacks/subscriptions/postBoneExploded.ts +32 -0
- package/callbacks/subscriptions/postBoneSwing.ts +24 -0
- package/callbacks/subscriptions/postCollectibleInitFirst.ts +37 -0
- package/callbacks/subscriptions/postCursedTeleport.ts +24 -0
- package/callbacks/subscriptions/postCustomDoorEnter.ts +45 -0
- package/callbacks/subscriptions/postCustomRevive.ts +36 -0
- package/callbacks/subscriptions/postDiceRoomActivated.ts +38 -0
- package/callbacks/subscriptions/postDoorRender.ts +35 -0
- package/callbacks/subscriptions/postDoorUpdate.ts +35 -0
- package/callbacks/subscriptions/postEffectInitLate.ts +32 -0
- package/callbacks/subscriptions/postEffectStateChanged.ts +40 -0
- package/callbacks/subscriptions/postEsauJr.ts +24 -0
- package/callbacks/subscriptions/postFamiliarInitLate.ts +32 -0
- package/callbacks/subscriptions/postFamiliarStateChanged.ts +40 -0
- package/callbacks/subscriptions/postFirstEsauJr.ts +24 -0
- package/callbacks/subscriptions/postFirstFlip.ts +24 -0
- package/callbacks/subscriptions/postFlip.ts +22 -0
- package/callbacks/subscriptions/postGameStartedReordered.ts +24 -0
- package/callbacks/subscriptions/postGreedModeWave.ts +24 -0
- package/callbacks/subscriptions/postGridEntityBroken.ts +51 -0
- package/callbacks/subscriptions/postGridEntityCollision.ts +54 -0
- package/callbacks/subscriptions/postGridEntityInit.ts +51 -0
- package/callbacks/subscriptions/postGridEntityRemove.ts +52 -0
- package/callbacks/subscriptions/postGridEntityRender.ts +51 -0
- package/callbacks/subscriptions/postGridEntityStateChanged.ts +55 -0
- package/callbacks/subscriptions/postGridEntityUpdate.ts +51 -0
- package/callbacks/subscriptions/postHolyMantleRemoved.ts +48 -0
- package/callbacks/subscriptions/postItemDischarged.ts +43 -0
- package/callbacks/subscriptions/postItemPickup.ts +64 -0
- package/callbacks/subscriptions/postKnifeInitLate.ts +32 -0
- package/callbacks/subscriptions/postLaserInitLate.ts +32 -0
- package/callbacks/subscriptions/postNPCInitLate.ts +32 -0
- package/callbacks/subscriptions/postNPCStateChanged.ts +42 -0
- package/callbacks/subscriptions/postNewLevelReordered.ts +22 -0
- package/callbacks/subscriptions/postNewRoomEarly.ts +22 -0
- package/callbacks/subscriptions/postNewRoomReordered.ts +22 -0
- package/callbacks/subscriptions/postPEffectUpdateReordered.ts +40 -0
- package/callbacks/subscriptions/postPickupCollect.ts +35 -0
- package/callbacks/subscriptions/postPickupInitFirst.ts +32 -0
- package/callbacks/subscriptions/postPickupInitLate.ts +32 -0
- package/callbacks/subscriptions/postPickupStateChanged.ts +40 -0
- package/callbacks/subscriptions/postPitRender.ts +35 -0
- package/callbacks/subscriptions/postPitUpdate.ts +35 -0
- package/callbacks/subscriptions/postPlayerChangeHealth.ts +49 -0
- package/callbacks/subscriptions/postPlayerChangeType.ts +40 -0
- package/callbacks/subscriptions/postPlayerCollectibleAdded.d.ts +2 -3
- package/callbacks/subscriptions/postPlayerCollectibleAdded.lua +2 -7
- package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +38 -0
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.d.ts +2 -3
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.lua +2 -7
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +38 -0
- package/callbacks/subscriptions/postPlayerFatalDamage.d.ts +1 -1
- package/callbacks/subscriptions/postPlayerFatalDamage.ts +68 -0
- package/callbacks/subscriptions/postPlayerInitLate.ts +40 -0
- package/callbacks/subscriptions/postPlayerInitReordered.ts +40 -0
- package/callbacks/subscriptions/postPlayerRenderReordered.ts +40 -0
- package/callbacks/subscriptions/postPlayerUpdateReordered.ts +40 -0
- package/callbacks/subscriptions/postPoopRender.ts +35 -0
- package/callbacks/subscriptions/postPoopUpdate.ts +35 -0
- package/callbacks/subscriptions/postPressurePlateRender.ts +37 -0
- package/callbacks/subscriptions/postPressurePlateUpdate.ts +37 -0
- package/callbacks/subscriptions/postProjectileInitLate.ts +35 -0
- package/callbacks/subscriptions/postPurchase.ts +31 -0
- package/callbacks/subscriptions/postRockRender.ts +35 -0
- package/callbacks/subscriptions/postRockUpdate.ts +35 -0
- package/callbacks/subscriptions/postRoomClearChanged.ts +30 -0
- package/callbacks/subscriptions/postSacrifice.ts +43 -0
- package/callbacks/subscriptions/postSlotAnimationChanged.ts +40 -0
- package/callbacks/subscriptions/postSlotDestroyed.ts +55 -0
- package/callbacks/subscriptions/postSlotInit.ts +32 -0
- package/callbacks/subscriptions/postSlotRender.ts +32 -0
- package/callbacks/subscriptions/postSlotUpdate.ts +32 -0
- package/callbacks/subscriptions/postSpikesRender.ts +35 -0
- package/callbacks/subscriptions/postSpikesUpdate.ts +35 -0
- package/callbacks/subscriptions/postTNTRender.ts +35 -0
- package/callbacks/subscriptions/postTNTUpdate.ts +35 -0
- package/callbacks/subscriptions/postTearInitLate.ts +32 -0
- package/callbacks/subscriptions/postTearInitVeryLate.ts +32 -0
- package/callbacks/subscriptions/postTransformation.ts +40 -0
- package/callbacks/subscriptions/postTrinketBreak.ts +38 -0
- package/callbacks/subscriptions/preBerserkDeath.d.ts +1 -1
- package/callbacks/subscriptions/preBerserkDeath.ts +42 -0
- package/callbacks/subscriptions/preCustomRevive.d.ts +1 -1
- package/callbacks/subscriptions/preCustomRevive.ts +46 -0
- package/callbacks/subscriptions/preItemPickup.ts +64 -0
- package/callbacks/subscriptions/preNewLevel.ts +24 -0
- package/classes/DefaultMap.ts +174 -0
- package/classes/ModUpgraded.d.ts +8 -4
- package/classes/ModUpgraded.lua +5 -8
- package/classes/ModUpgraded.ts +84 -0
- package/constants.ts +162 -0
- package/constantsFirstLast.ts +217 -0
- package/enums/AmbushType.ts +4 -0
- package/enums/HealthType.ts +16 -0
- package/enums/ModCallbackCustom.d.ts +20 -18
- package/enums/ModCallbackCustom.ts +1278 -0
- package/enums/PocketItemType.ts +8 -0
- package/enums/SerializationType.ts +5 -0
- package/enums/SlotDestructionType.ts +4 -0
- package/enums/private/CopyableIsaacAPIClassType.ts +7 -0
- package/enums/private/SaveDataKey.ts +14 -0
- package/enums/private/SerializationBrand.ts +42 -0
- package/features/characterHealthConversion.lua +2 -9
- package/features/characterHealthConversion.ts +111 -0
- package/features/characterStats.ts +61 -0
- package/features/debugDisplay/debugDisplay.ts +221 -0
- package/features/debugDisplay/exports.ts +368 -0
- package/features/debugDisplay/v.ts +65 -0
- package/features/deployJSONRoom.ts +743 -0
- package/features/disableInputs.ts +193 -0
- package/features/disableSound.ts +77 -0
- package/features/extraConsoleCommands/commandsDisplay.ts +290 -0
- package/features/extraConsoleCommands/commandsSubroutines.lua +1 -1
- package/features/extraConsoleCommands/commandsSubroutines.ts +139 -0
- package/features/extraConsoleCommands/init.ts +334 -0
- package/features/extraConsoleCommands/listCommands.ts +1299 -0
- package/features/extraConsoleCommands/v.ts +14 -0
- package/features/fadeInRemover.ts +60 -0
- package/features/fastReset.ts +75 -0
- package/features/forgottenSwitch.ts +50 -0
- package/features/getCollectibleItemPoolType.ts +66 -0
- package/features/persistentEntities.ts +183 -0
- package/features/playerInventory.lua +1 -0
- package/features/playerInventory.ts +135 -0
- package/features/ponyDetection.ts +74 -0
- package/features/preventCollectibleRotation.ts +115 -0
- package/features/runInNFrames.ts +148 -0
- package/features/saveDataManager/constants.ts +4 -0
- package/features/saveDataManager/exports.ts +229 -0
- package/features/saveDataManager/load.ts +99 -0
- package/features/saveDataManager/main.ts +195 -0
- package/features/saveDataManager/maps.ts +13 -0
- package/features/saveDataManager/merge.ts +194 -0
- package/features/saveDataManager/save.ts +74 -0
- package/features/saveDataManager/serializationBrand.ts +16 -0
- package/features/sirenHelpers.ts +129 -0
- package/features/taintedLazarusPlayers.ts +113 -0
- package/featuresInitialized.ts +20 -0
- package/functions/ambush.ts +47 -0
- package/functions/array.ts +410 -0
- package/functions/benchmark.ts +36 -0
- package/functions/bitwise.ts +24 -0
- package/functions/bombs.ts +12 -0
- package/functions/boss.ts +227 -0
- package/functions/cacheFlag.ts +12 -0
- package/functions/cards.lua +1 -1
- package/functions/cards.ts +271 -0
- package/functions/challenges.ts +13 -0
- package/functions/character.ts +126 -0
- package/functions/charge.ts +237 -0
- package/functions/chargeBar.ts +67 -0
- package/functions/collectibleCacheFlag.ts +90 -0
- package/functions/collectibleSet.ts +56 -0
- package/functions/collectibleTag.ts +89 -0
- package/functions/collectibles.ts +659 -0
- package/functions/color.d.ts +1 -1
- package/functions/color.lua +0 -7
- package/functions/color.ts +128 -0
- package/functions/debug.lua +2 -2
- package/functions/debug.ts +68 -0
- package/functions/deepCopy.lua +46 -51
- package/functions/deepCopy.ts +535 -0
- package/functions/deepCopyTests.ts +386 -0
- package/functions/direction.ts +49 -0
- package/functions/doors.lua +1 -2
- package/functions/doors.ts +347 -0
- package/functions/easing.ts +182 -0
- package/functions/eden.ts +47 -0
- package/functions/effects.ts +20 -0
- package/functions/entity.ts +439 -0
- package/functions/entitySpecific.ts +889 -0
- package/functions/entityTypes.ts +6 -0
- package/functions/enums.ts +146 -0
- package/functions/familiars.ts +106 -0
- package/functions/flag.ts +165 -0
- package/functions/flying.ts +117 -0
- package/functions/globals.d.ts +3 -3
- package/functions/globals.lua +8 -2
- package/functions/globals.ts +242 -0
- package/functions/gridEntity.ts +511 -0
- package/functions/gridEntitySpecific.ts +112 -0
- package/functions/input.ts +139 -0
- package/functions/isaacAPIClass.ts +67 -0
- package/functions/jsonHelpers.ts +45 -0
- package/functions/jsonRoom.ts +100 -0
- package/functions/kColor.d.ts +1 -1
- package/functions/kColor.lua +0 -7
- package/functions/kColor.ts +129 -0
- package/functions/language.ts +13 -0
- package/functions/level.ts +31 -0
- package/functions/log.ts +720 -0
- package/functions/map.ts +56 -0
- package/functions/math.ts +149 -0
- package/functions/mergeTests.ts +288 -0
- package/functions/npc.ts +148 -0
- package/functions/pickupVariants.ts +60 -0
- package/functions/pickups.ts +499 -0
- package/functions/pills.lua +1 -1
- package/functions/pills.ts +205 -0
- package/functions/player.lua +9 -20
- package/functions/player.ts +1056 -0
- package/functions/playerDataStructures.ts +150 -0
- package/functions/playerHealth.lua +28 -39
- package/functions/playerHealth.ts +382 -0
- package/functions/playerIndex.ts +195 -0
- package/functions/pocketItems.ts +149 -0
- package/functions/positionVelocity.ts +188 -0
- package/functions/random.ts +77 -0
- package/functions/revive.ts +201 -0
- package/functions/rng.d.ts +1 -1
- package/functions/rng.lua +0 -7
- package/functions/rng.ts +172 -0
- package/functions/roomData.ts +199 -0
- package/functions/roomGrid.ts +109 -0
- package/functions/roomShape.ts +80 -0
- package/functions/rooms.lua +1 -3
- package/functions/rooms.ts +648 -0
- package/functions/run.ts +36 -0
- package/functions/saveFile.ts +128 -0
- package/functions/seeds.ts +19 -0
- package/functions/serialization.lua +0 -3
- package/functions/serialization.ts +91 -0
- package/functions/set.ts +95 -0
- package/functions/sound.ts +9 -0
- package/functions/spawnCollectible.ts +104 -0
- package/functions/sprite.ts +107 -0
- package/functions/stage.ts +125 -0
- package/functions/string.ts +47 -0
- package/functions/table.ts +189 -0
- package/functions/tears.ts +32 -0
- package/functions/transformations.lua +1 -3
- package/functions/transformations.ts +131 -0
- package/functions/trinketCacheFlag.ts +60 -0
- package/functions/trinketGive.ts +157 -0
- package/functions/trinkets.ts +215 -0
- package/functions/tstlClass.ts +157 -0
- package/functions/types.ts +36 -0
- package/functions/ui.ts +138 -0
- package/functions/utils.d.ts +0 -37
- package/functions/utils.lua +0 -35
- package/functions/utils.ts +189 -0
- package/functions/vector.d.ts +1 -1
- package/functions/vector.lua +0 -7
- package/functions/vector.ts +126 -0
- package/index.ts +172 -0
- package/initCustomCallbacks.ts +132 -0
- package/initFeatures.ts +39 -0
- package/interfaces/AddCallbackParameterCustom.ts +188 -0
- package/interfaces/ChargeBarSprites.ts +12 -0
- package/interfaces/JSONDoor.d.ts +4 -4
- package/interfaces/JSONDoor.ts +13 -0
- package/interfaces/JSONEntity.d.ts +5 -5
- package/interfaces/JSONEntity.ts +16 -0
- package/interfaces/JSONRoom.d.ts +9 -9
- package/interfaces/JSONRoom.ts +36 -0
- package/interfaces/JSONRooms.ts +12 -0
- package/interfaces/JSONSpawn.d.ts +3 -3
- package/interfaces/JSONSpawn.ts +14 -0
- package/interfaces/PlayerHealth.ts +16 -0
- package/interfaces/PocketItemDescription.ts +9 -0
- package/interfaces/SaveData.ts +29 -0
- package/interfaces/TrinketSituation.ts +9 -0
- package/interfaces/private/TSTLClassMetatable.ts +8 -0
- package/maps/PHDPillConversions.ts +21 -0
- package/maps/cardMap.ts +209 -0
- package/maps/characterMap.ts +87 -0
- package/maps/collectibleDescriptionMap.ts +732 -0
- package/maps/collectibleNameMap.ts +731 -0
- package/maps/defaultPlayerStatMap.ts +17 -0
- package/maps/falsePHDPillConversions.ts +35 -0
- package/maps/gridEntityTypeToBrokenStateMap.ts +50 -0
- package/maps/gridEntityXMLMap.ts +176 -0
- package/maps/pillEffectMap.ts +88 -0
- package/maps/roomShapeToTopLeftWallGridIndexMap.ts +18 -0
- package/maps/roomTypeMap.ts +40 -0
- package/maps/trinketDescriptionMap.ts +200 -0
- package/maps/trinketNameMap.ts +198 -0
- package/objects/LRoomShapeToRectangles.ts +44 -0
- package/objects/callbackRegisterFunctions.ts +187 -0
- package/objects/cardDescriptions.ts +105 -0
- package/objects/cardNames.ts +105 -0
- package/objects/cardTypes.ts +104 -0
- package/objects/challengeNames.ts +52 -0
- package/objects/characterNames.ts +48 -0
- package/objects/coinSubTypeToValue.ts +14 -0
- package/objects/colors.ts +16 -0
- package/objects/directionNames.ts +11 -0
- package/objects/directionToDegrees.ts +11 -0
- package/objects/directionToVector.ts +12 -0
- package/objects/doorSlotFlagToDoorSlot.ts +16 -0
- package/objects/doorSlotToDirection.ts +14 -0
- package/objects/isaacAPIClassTypeToBrand.ts +11 -0
- package/objects/isaacAPIClassTypeToCopyFunction.ts +18 -0
- package/objects/languageNames.ts +13 -0
- package/objects/oppositeDoorSlots.ts +15 -0
- package/objects/pillEffectClasses.ts +63 -0
- package/objects/pillEffectNames.ts +57 -0
- package/objects/pillEffectTypes.ts +62 -0
- package/objects/roomShapeBounds.ts +71 -0
- package/objects/roomShapeLayoutSizes.ts +45 -0
- package/objects/roomShapeToBottomRightPosition.ts +25 -0
- package/objects/roomShapeToDoorSlots.ts +83 -0
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +127 -0
- package/objects/roomShapeToGridWidth.ts +21 -0
- package/objects/roomShapeToTopLeftPosition.ts +26 -0
- package/objects/roomShapeVolumes.ts +38 -0
- package/objects/roomTypeNames.ts +36 -0
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +14 -0
- package/objects/stageTypeToLetter.ts +15 -0
- package/objects/transformationNames.d.ts +0 -1
- package/objects/transformationNames.lua +0 -1
- package/objects/transformationNames.ts +18 -0
- package/package.json +2 -2
- package/patchErrorFunctions.ts +92 -0
- package/sets/LRoomShapesSet.ts +8 -0
- package/sets/bossSets.ts +470 -0
- package/sets/charactersThatStartWithAnActiveItemSet.ts +16 -0
- package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +7 -0
- package/sets/charactersWithFreeDevilDealsSet.ts +4 -0
- package/sets/charactersWithNoRedHeartsSet.ts +17 -0
- package/sets/charactersWithNoSoulHeartsSet.ts +14 -0
- package/sets/chestPickupVariantsSet.ts +16 -0
- package/sets/familiarsThatShootPlayerTearsSet.ts +13 -0
- package/sets/lostStyleCharactersSet.ts +13 -0
- package/sets/mineShaftRoomSubTypesSet.ts +10 -0
- package/sets/redHeartSubTypesSet.ts +7 -0
- package/sets/sinEntityTypesSet.ts +11 -0
- package/sets/singleUseActiveCollectibleTypesSet.ts +13 -0
- package/sets/storyBossesSet.ts +17 -0
- package/types/AnyEntity.ts +12 -0
- package/types/AwaitingTextInput.d.ts +2 -0
- package/types/CollectibleIndex.d.ts +1 -1
- package/types/CollectibleIndex.ts +16 -0
- package/types/PickingUpItem.d.ts +3 -3
- package/types/PickingUpItem.ts +89 -0
- package/types/PlayerIndex.d.ts +1 -1
- package/types/PlayerIndex.ts +13 -0
- package/types/private/IsaacAPIClass.d.ts +1 -1
- package/types/private/IsaacAPIClass.ts +3 -0
- package/types/private/SerializedIsaacAPIClass.d.ts +1 -1
- package/types/private/SerializedIsaacAPIClass.ts +3 -0
- package/types/private/TSTLClass.d.ts +1 -1
- package/types/private/TSTLClass.ts +3 -0
- package/upgradeMod.d.ts +2 -2
- package/upgradeMod.lua +2 -2
- package/upgradeMod.ts +55 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { SerializationBrand } from "../enums/private/SerializationBrand";
|
|
2
|
+
import { SerializationType } from "../enums/SerializationType";
|
|
3
|
+
import { isaacAPIClassEquals, isIsaacAPIClassOfType } from "./isaacAPIClass";
|
|
4
|
+
import { copyValuesToTable, getNumbersFromTable, tableHasKeys } from "./table";
|
|
5
|
+
import { isTable } from "./types";
|
|
6
|
+
|
|
7
|
+
type SerializedColor = LuaTable<string, unknown> & {
|
|
8
|
+
readonly __serializedColorBrand: unique symbol;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
interface CopyColorReturn {
|
|
12
|
+
[SerializationType.NONE]: Color;
|
|
13
|
+
[SerializationType.SERIALIZE]: SerializedColor;
|
|
14
|
+
[SerializationType.DESERIALIZE]: Color;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const KEYS = ["R", "G", "B", "A", "RO", "GO", "BO"];
|
|
18
|
+
const OBJECT_NAME = "Color";
|
|
19
|
+
|
|
20
|
+
export function colorEquals(color1: Color, color2: Color): boolean {
|
|
21
|
+
return isaacAPIClassEquals(color1, color2, KEYS);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Helper function to copy a `Color` object.
|
|
26
|
+
*
|
|
27
|
+
* @param color The Color object to copy. In the case of deserialization, this will actually be a
|
|
28
|
+
* Lua table instead of an instantiated Color class.
|
|
29
|
+
* @param serializationType Default is `SerializationType.NONE`.
|
|
30
|
+
*/
|
|
31
|
+
export function copyColor<
|
|
32
|
+
C extends Color | SerializedColor,
|
|
33
|
+
S extends SerializationType,
|
|
34
|
+
>(color: C, serializationType: S): CopyColorReturn[S];
|
|
35
|
+
export function copyColor<C extends Color | SerializedColor>(
|
|
36
|
+
color: C,
|
|
37
|
+
): CopyColorReturn[SerializationType.NONE];
|
|
38
|
+
export function copyColor(
|
|
39
|
+
color: Color | SerializedColor,
|
|
40
|
+
serializationType = SerializationType.NONE,
|
|
41
|
+
): CopyColorReturn[keyof CopyColorReturn] {
|
|
42
|
+
switch (serializationType) {
|
|
43
|
+
case SerializationType.NONE: {
|
|
44
|
+
if (!isColor(color)) {
|
|
45
|
+
error(
|
|
46
|
+
`Failed to copy a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return Color(
|
|
51
|
+
color.R,
|
|
52
|
+
color.G,
|
|
53
|
+
color.B,
|
|
54
|
+
color.A,
|
|
55
|
+
color.RO,
|
|
56
|
+
color.GO,
|
|
57
|
+
color.BO,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
case SerializationType.SERIALIZE: {
|
|
62
|
+
if (!isColor(color)) {
|
|
63
|
+
error(
|
|
64
|
+
`Failed to serialize a ${OBJECT_NAME} object since the provided object was not a userdata ${OBJECT_NAME} class.`,
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const colorTable = new LuaTable<string, unknown>();
|
|
69
|
+
copyValuesToTable(color, KEYS, colorTable);
|
|
70
|
+
colorTable.set(SerializationBrand.COLOR, "");
|
|
71
|
+
return colorTable as SerializedColor;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
case SerializationType.DESERIALIZE: {
|
|
75
|
+
if (!isTable(color)) {
|
|
76
|
+
error(
|
|
77
|
+
`Failed to deserialize a ${OBJECT_NAME} object since the provided object was not a Lua table.`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const [r, g, b, a, ro, go, bo] = getNumbersFromTable(
|
|
82
|
+
color as LuaTable<string, unknown>,
|
|
83
|
+
OBJECT_NAME,
|
|
84
|
+
...KEYS,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (r === undefined) {
|
|
88
|
+
error(
|
|
89
|
+
`Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: r`,
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
if (g === undefined) {
|
|
93
|
+
error(
|
|
94
|
+
`Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: g`,
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
if (b === undefined) {
|
|
98
|
+
error(
|
|
99
|
+
`Failed to deserialize a ${OBJECT_NAME} object since the provided object did not have a value for: b`,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return Color(r, g, b, a, ro, go, bo);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Returns `Color(1, 1, 1)`. */
|
|
109
|
+
export function getDefaultColor(): Color {
|
|
110
|
+
return Color(1, 1, 1);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Helper function to check if something is an instantiated Color object. */
|
|
114
|
+
export function isColor(object: unknown): object is Color {
|
|
115
|
+
return isIsaacAPIClassOfType(object, OBJECT_NAME);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Used to determine is the given table is a serialized `Color` object created by the save data
|
|
120
|
+
* manager and/or the `deepCopy` function.
|
|
121
|
+
*/
|
|
122
|
+
export function isSerializedColor(object: unknown): object is SerializedColor {
|
|
123
|
+
if (!isTable(object)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return tableHasKeys(object, ...KEYS) && object.has(SerializationBrand.COLOR);
|
|
128
|
+
}
|
package/functions/debug.lua
CHANGED
|
@@ -24,7 +24,7 @@ end
|
|
|
24
24
|
-- This function uses the `package` global variable as a proxy to determine if the "--luadebug" flag
|
|
25
25
|
-- is enabled or not.
|
|
26
26
|
function ____exports.isLuaDebugEnabled(self)
|
|
27
|
-
return package ~= nil
|
|
27
|
+
return _G.package ~= nil
|
|
28
28
|
end
|
|
29
29
|
--- Helper function to print a stack trace to the "log.txt" file, similar to JavaScript's
|
|
30
30
|
-- `console.trace` function.
|
|
@@ -36,7 +36,7 @@ function ____exports.traceback(self)
|
|
|
36
36
|
log(tracebackOutput)
|
|
37
37
|
end
|
|
38
38
|
local function setDebugFunctionsGlobal(self)
|
|
39
|
-
if debug == nil and sandboxGetTraceback == nil then
|
|
39
|
+
if _G.debug == nil and sandboxGetTraceback == nil then
|
|
40
40
|
return
|
|
41
41
|
end
|
|
42
42
|
local globals = _G
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { log } from "./log";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helper function to get a stack trace.
|
|
5
|
+
*
|
|
6
|
+
* This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
|
|
7
|
+
* enabled.
|
|
8
|
+
*/
|
|
9
|
+
export function getTraceback(): string {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
11
|
+
if (debug !== undefined) {
|
|
12
|
+
// The --luadebug launch flag is enabled.
|
|
13
|
+
return debug.traceback();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (sandboxGetTraceback !== undefined) {
|
|
17
|
+
return sandboxGetTraceback();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return 'stack traceback:\n(the "--luadebug" flag is not enabled)';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Players can boot the game with an launch option called "--luadebug", which will enable additional
|
|
25
|
+
* functionality that is considered to be unsafe. For more information about this flag, see the
|
|
26
|
+
* wiki: https://bindingofisaacrebirth.fandom.com/wiki/Launch_Options
|
|
27
|
+
*
|
|
28
|
+
* When this flag is enabled, the global environment will be slightly different. The differences are
|
|
29
|
+
* documented here: https://wofsauge.github.io/IsaacDocs/rep/Globals.html
|
|
30
|
+
*
|
|
31
|
+
* This function uses the `package` global variable as a proxy to determine if the "--luadebug" flag
|
|
32
|
+
* is enabled or not.
|
|
33
|
+
*/
|
|
34
|
+
export function isLuaDebugEnabled(): boolean {
|
|
35
|
+
// "package" is not always defined like the Lua definitions imply.
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
37
|
+
return _G.package !== undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Helper function to print a stack trace to the "log.txt" file, similar to JavaScript's
|
|
42
|
+
* `console.trace` function.
|
|
43
|
+
*
|
|
44
|
+
* This will only work if the `--luadebug` launch option is enabled or the Racing+ sandbox is
|
|
45
|
+
* enabled.
|
|
46
|
+
*/
|
|
47
|
+
export function traceback(): void {
|
|
48
|
+
const tracebackOutput = getTraceback();
|
|
49
|
+
log(tracebackOutput);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function setDebugFunctionsGlobal() {
|
|
53
|
+
// "debug" is not always defined like the Lua definitions imply.
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
55
|
+
if (_G.debug === undefined && sandboxGetTraceback === undefined) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const globals = _G as Record<string, unknown>;
|
|
60
|
+
|
|
61
|
+
globals["getTraceback"] = getTraceback;
|
|
62
|
+
globals["traceback"] = traceback;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// If the debug functions will provide useful output, make them global by default.
|
|
66
|
+
if (isLuaDebugEnabled() || sandboxGetTraceback !== undefined) {
|
|
67
|
+
setDebugFunctionsGlobal();
|
|
68
|
+
}
|
package/functions/deepCopy.lua
CHANGED
|
@@ -6,7 +6,7 @@ local __TS__Iterator = ____lualib.__TS__Iterator
|
|
|
6
6
|
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
7
7
|
local __TS__ArraySome = ____lualib.__TS__ArraySome
|
|
8
8
|
local ____exports = {}
|
|
9
|
-
local deepCopyTable, deepCopyDefaultMap, deepCopyMap, deepCopySet, deepCopyTSTLClass, deepCopyArray, deepCopyNormalLuaTable, getCopiedEntries, checkMetatable, deepCopyUserdata, COPYABLE_ISAAC_API_CLASS_TYPES_SET
|
|
9
|
+
local deepCopyTable, deepCopyDefaultMap, getNewDefaultMap, deepCopyMap, deepCopySet, deepCopyTSTLClass, deepCopyArray, deepCopyNormalLuaTable, getCopiedEntries, checkMetatable, deepCopyUserdata, COPYABLE_ISAAC_API_CLASS_TYPES_SET
|
|
10
10
|
local ____DefaultMap = require("classes.DefaultMap")
|
|
11
11
|
local DefaultMap = ____DefaultMap.DefaultMap
|
|
12
12
|
local ____CopyableIsaacAPIClassType = require("enums.private.CopyableIsaacAPIClassType")
|
|
@@ -43,7 +43,6 @@ local ____types = require("functions.types")
|
|
|
43
43
|
local isNumber = ____types.isNumber
|
|
44
44
|
local isPrimitive = ____types.isPrimitive
|
|
45
45
|
local ____utils = require("functions.utils")
|
|
46
|
-
local ensureAllCases = ____utils.ensureAllCases
|
|
47
46
|
local getTraversalDescription = ____utils.getTraversalDescription
|
|
48
47
|
local twoDimensionalSort = ____utils.twoDimensionalSort
|
|
49
48
|
--- `deepCopy` is a semi-generic deep cloner. It will recursively copy all of the values so that none
|
|
@@ -119,11 +118,6 @@ function ____exports.deepCopy(self, value, serializationType, traversalDescripti
|
|
|
119
118
|
return deepCopyUserdata(nil, value, serializationType, traversalDescription)
|
|
120
119
|
end
|
|
121
120
|
end
|
|
122
|
-
do
|
|
123
|
-
do
|
|
124
|
-
return ensureAllCases(nil, valueType)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
121
|
until true
|
|
128
122
|
end
|
|
129
123
|
function deepCopyTable(self, luaTable, serializationType, traversalDescription)
|
|
@@ -163,48 +157,16 @@ function deepCopyDefaultMap(self, defaultMap, serializationType, traversalDescri
|
|
|
163
157
|
____isDefaultMap_result_0 = nil
|
|
164
158
|
end
|
|
165
159
|
local constructorArg = ____isDefaultMap_result_0
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
____cond23 = ____cond23 or ____switch23 == SerializationType.SERIALIZE
|
|
177
|
-
if ____cond23 then
|
|
178
|
-
do
|
|
179
|
-
if not isPrimitive(nil, constructorArg) then
|
|
180
|
-
return deepCopyMap(nil, defaultMap, serializationType, traversalDescription)
|
|
181
|
-
end
|
|
182
|
-
newDefaultMap = {}
|
|
183
|
-
newDefaultMap[SerializationBrand.DEFAULT_MAP] = ""
|
|
184
|
-
newDefaultMap[SerializationBrand.DEFAULT_MAP_VALUE] = constructorArg
|
|
185
|
-
break
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
____cond23 = ____cond23 or ____switch23 == SerializationType.DESERIALIZE
|
|
189
|
-
if ____cond23 then
|
|
190
|
-
do
|
|
191
|
-
if isDefaultMap(nil, defaultMap) then
|
|
192
|
-
error(("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since it was not a Lua table.")
|
|
193
|
-
end
|
|
194
|
-
local defaultMapValue = defaultMap[SerializationBrand.DEFAULT_MAP_VALUE]
|
|
195
|
-
if defaultMapValue == nil then
|
|
196
|
-
error((("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE)
|
|
197
|
-
end
|
|
198
|
-
newDefaultMap = __TS__New(DefaultMap, defaultMapValue)
|
|
199
|
-
break
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
do
|
|
203
|
-
do
|
|
204
|
-
return ensureAllCases(nil, serializationType)
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
until true
|
|
160
|
+
if serializationType == SerializationType.SERIALIZE and not isPrimitive(nil, constructorArg) then
|
|
161
|
+
return deepCopyMap(nil, defaultMap, serializationType, traversalDescription)
|
|
162
|
+
end
|
|
163
|
+
local newDefaultMap = getNewDefaultMap(
|
|
164
|
+
nil,
|
|
165
|
+
defaultMap,
|
|
166
|
+
serializationType,
|
|
167
|
+
traversalDescription,
|
|
168
|
+
constructorArg
|
|
169
|
+
)
|
|
208
170
|
local ____getCopiedEntries_result_1 = getCopiedEntries(nil, defaultMap, serializationType, traversalDescription)
|
|
209
171
|
local entries = ____getCopiedEntries_result_1.entries
|
|
210
172
|
local convertedNumberKeysToStrings = ____getCopiedEntries_result_1.convertedNumberKeysToStrings
|
|
@@ -226,6 +188,39 @@ function deepCopyDefaultMap(self, defaultMap, serializationType, traversalDescri
|
|
|
226
188
|
end
|
|
227
189
|
return newDefaultMap
|
|
228
190
|
end
|
|
191
|
+
function getNewDefaultMap(self, defaultMap, serializationType, traversalDescription, constructorArg)
|
|
192
|
+
repeat
|
|
193
|
+
local ____switch31 = serializationType
|
|
194
|
+
local ____cond31 = ____switch31 == SerializationType.NONE
|
|
195
|
+
if ____cond31 then
|
|
196
|
+
do
|
|
197
|
+
return __TS__New(DefaultMap, constructorArg)
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
____cond31 = ____cond31 or ____switch31 == SerializationType.SERIALIZE
|
|
201
|
+
if ____cond31 then
|
|
202
|
+
do
|
|
203
|
+
local newDefaultMap = {}
|
|
204
|
+
newDefaultMap[SerializationBrand.DEFAULT_MAP] = ""
|
|
205
|
+
newDefaultMap[SerializationBrand.DEFAULT_MAP_VALUE] = constructorArg
|
|
206
|
+
return newDefaultMap
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
____cond31 = ____cond31 or ____switch31 == SerializationType.DESERIALIZE
|
|
210
|
+
if ____cond31 then
|
|
211
|
+
do
|
|
212
|
+
if isDefaultMap(nil, defaultMap) then
|
|
213
|
+
error(("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since it was not a Lua table.")
|
|
214
|
+
end
|
|
215
|
+
local defaultMapValue = defaultMap[SerializationBrand.DEFAULT_MAP_VALUE]
|
|
216
|
+
if defaultMapValue == nil then
|
|
217
|
+
error((("The deep copy function failed to deserialize a default map of \"" .. traversalDescription) .. "\", since there was no serialization brand of: ") .. SerializationBrand.DEFAULT_MAP_VALUE)
|
|
218
|
+
end
|
|
219
|
+
return __TS__New(DefaultMap, defaultMapValue)
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
until true
|
|
223
|
+
end
|
|
229
224
|
function deepCopyMap(self, map, serializationType, traversalDescription)
|
|
230
225
|
local newMap
|
|
231
226
|
if serializationType == SerializationType.SERIALIZE then
|
|
@@ -358,14 +353,14 @@ function getCopiedEntries(self, object, serializationType, traversalDescription)
|
|
|
358
353
|
local value = ____value[2]
|
|
359
354
|
do
|
|
360
355
|
if isSerializationBrand(nil, key) then
|
|
361
|
-
goto
|
|
356
|
+
goto __continue78
|
|
362
357
|
end
|
|
363
358
|
traversalDescription = getTraversalDescription(nil, key, traversalDescription)
|
|
364
359
|
local newValue = ____exports.deepCopy(nil, value, serializationType, traversalDescription)
|
|
365
360
|
local keyToUse = convertNumberKeysToStrings and tostring(key) or key
|
|
366
361
|
copiedEntries[#copiedEntries + 1] = {keyToUse, newValue}
|
|
367
362
|
end
|
|
368
|
-
::
|
|
363
|
+
::__continue78::
|
|
369
364
|
end
|
|
370
365
|
return {entries = copiedEntries, convertedNumberKeysToStrings = convertNumberKeysToStrings}
|
|
371
366
|
end
|