isaacscript-common 4.0.3 → 4.0.6
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/callbacks/postPlayerCollectible.lua +4 -2
- package/functions/collectibleSet.d.ts +37 -2
- package/functions/collectibleSet.lua +62 -15
- package/functions/player.lua +3 -4
- package/package.json +2 -2
- package/cachedClasses.ts +0 -39
- package/callbacks/customRevive.ts +0 -215
- package/callbacks/itemPickup.ts +0 -101
- package/callbacks/postAmbush.ts +0 -73
- package/callbacks/postBombExploded.ts +0 -26
- package/callbacks/postBombInitLate.ts +0 -36
- package/callbacks/postBoneSwing.ts +0 -64
- package/callbacks/postCollectibleInitFirst.ts +0 -40
- package/callbacks/postCursedTeleport.ts +0 -185
- package/callbacks/postCustomDoorEnter.ts +0 -292
- package/callbacks/postDiceRoomActivated.ts +0 -60
- package/callbacks/postDoorRender.ts +0 -26
- package/callbacks/postDoorUpdate.ts +0 -26
- package/callbacks/postEffectInitLate.ts +0 -36
- package/callbacks/postEffectStateChanged.ts +0 -43
- package/callbacks/postEsauJr.ts +0 -109
- package/callbacks/postFamiliarInitLate.ts +0 -36
- package/callbacks/postFamiliarStateChanged.ts +0 -43
- package/callbacks/postFlip.ts +0 -90
- package/callbacks/postGreedModeWave.ts +0 -41
- package/callbacks/postGridEntity.ts +0 -164
- package/callbacks/postGridEntityCollision.ts +0 -69
- package/callbacks/postGridEntityRender.ts +0 -26
- package/callbacks/postHolyMantleRemoved.ts +0 -55
- package/callbacks/postItemDischarged.ts +0 -154
- package/callbacks/postKnifeInitLate.ts +0 -36
- package/callbacks/postLaserInitLate.ts +0 -36
- package/callbacks/postNPCInitLate.ts +0 -36
- package/callbacks/postNPCStateChanged.ts +0 -42
- package/callbacks/postNewRoomEarly.ts +0 -96
- package/callbacks/postPickupCollect.ts +0 -48
- package/callbacks/postPickupInitFirst.ts +0 -70
- package/callbacks/postPickupInitLate.ts +0 -36
- package/callbacks/postPickupStateChanged.ts +0 -43
- package/callbacks/postPitRender.ts +0 -26
- package/callbacks/postPitUpdate.ts +0 -26
- package/callbacks/postPlayerChangeHealth.ts +0 -62
- package/callbacks/postPlayerChangeType.ts +0 -56
- package/callbacks/postPlayerCollectible.ts +0 -113
- package/callbacks/postPlayerFatalDamage.ts +0 -141
- package/callbacks/postPlayerInitLate.ts +0 -37
- package/callbacks/postPlayerReordered.ts +0 -142
- package/callbacks/postPoopRender.ts +0 -26
- package/callbacks/postPoopUpdate.ts +0 -26
- package/callbacks/postPressurePlateRender.ts +0 -26
- package/callbacks/postPressurePlateUpdate.ts +0 -26
- package/callbacks/postProjectileInitLate.ts +0 -36
- package/callbacks/postPurchase.ts +0 -64
- package/callbacks/postRockRender.ts +0 -26
- package/callbacks/postRockUpdate.ts +0 -26
- package/callbacks/postRoomClearChanged.ts +0 -57
- package/callbacks/postSacrifice.ts +0 -64
- package/callbacks/postSlotDestroyed.ts +0 -92
- package/callbacks/postSlotInitUpdate.ts +0 -68
- package/callbacks/postSlotRender.ts +0 -69
- package/callbacks/postSpikesRender.ts +0 -26
- package/callbacks/postSpikesUpdate.ts +0 -26
- package/callbacks/postTNTRender.ts +0 -26
- package/callbacks/postTNTUpdate.ts +0 -26
- package/callbacks/postTearInitLate.ts +0 -36
- package/callbacks/postTearInitVeryLate.ts +0 -41
- package/callbacks/postTransformation.ts +0 -59
- package/callbacks/postTrinketBreak.ts +0 -112
- package/callbacks/preBerserkDeath.ts +0 -49
- package/callbacks/preNewLevel.ts +0 -55
- package/callbacks/reorderedCallbacks.ts +0 -168
- package/callbacks/subscriptions/postAmbushFinished.ts +0 -32
- package/callbacks/subscriptions/postAmbushStarted.ts +0 -32
- package/callbacks/subscriptions/postBombInitLate.ts +0 -32
- package/callbacks/subscriptions/postBoneExploded.ts +0 -32
- package/callbacks/subscriptions/postBoneSwing.ts +0 -24
- package/callbacks/subscriptions/postCollectibleInitFirst.ts +0 -37
- package/callbacks/subscriptions/postCursedTeleport.ts +0 -24
- package/callbacks/subscriptions/postCustomDoorEnter.ts +0 -45
- package/callbacks/subscriptions/postCustomRevive.ts +0 -36
- package/callbacks/subscriptions/postDiceRoomActivated.ts +0 -38
- package/callbacks/subscriptions/postDoorRender.ts +0 -35
- package/callbacks/subscriptions/postDoorUpdate.ts +0 -35
- package/callbacks/subscriptions/postEffectInitLate.ts +0 -32
- package/callbacks/subscriptions/postEffectStateChanged.ts +0 -40
- package/callbacks/subscriptions/postEsauJr.ts +0 -24
- package/callbacks/subscriptions/postFamiliarInitLate.ts +0 -32
- package/callbacks/subscriptions/postFamiliarStateChanged.ts +0 -40
- package/callbacks/subscriptions/postFirstEsauJr.ts +0 -24
- package/callbacks/subscriptions/postFirstFlip.ts +0 -24
- package/callbacks/subscriptions/postFlip.ts +0 -22
- package/callbacks/subscriptions/postGameStartedReordered.ts +0 -24
- package/callbacks/subscriptions/postGreedModeWave.ts +0 -24
- package/callbacks/subscriptions/postGridEntityBroken.ts +0 -51
- package/callbacks/subscriptions/postGridEntityCollision.ts +0 -54
- package/callbacks/subscriptions/postGridEntityInit.ts +0 -51
- package/callbacks/subscriptions/postGridEntityRemove.ts +0 -52
- package/callbacks/subscriptions/postGridEntityRender.ts +0 -51
- package/callbacks/subscriptions/postGridEntityStateChanged.ts +0 -55
- package/callbacks/subscriptions/postGridEntityUpdate.ts +0 -51
- package/callbacks/subscriptions/postHolyMantleRemoved.ts +0 -48
- package/callbacks/subscriptions/postItemDischarged.ts +0 -43
- package/callbacks/subscriptions/postItemPickup.ts +0 -64
- package/callbacks/subscriptions/postKnifeInitLate.ts +0 -32
- package/callbacks/subscriptions/postLaserInitLate.ts +0 -32
- package/callbacks/subscriptions/postNPCInitLate.ts +0 -32
- package/callbacks/subscriptions/postNPCStateChanged.ts +0 -42
- package/callbacks/subscriptions/postNewLevelReordered.ts +0 -22
- package/callbacks/subscriptions/postNewRoomEarly.ts +0 -22
- package/callbacks/subscriptions/postNewRoomReordered.ts +0 -22
- package/callbacks/subscriptions/postPEffectUpdateReordered.ts +0 -40
- package/callbacks/subscriptions/postPickupCollect.ts +0 -35
- package/callbacks/subscriptions/postPickupInitFirst.ts +0 -32
- package/callbacks/subscriptions/postPickupInitLate.ts +0 -32
- package/callbacks/subscriptions/postPickupStateChanged.ts +0 -40
- package/callbacks/subscriptions/postPitRender.ts +0 -35
- package/callbacks/subscriptions/postPitUpdate.ts +0 -35
- package/callbacks/subscriptions/postPlayerChangeHealth.ts +0 -49
- package/callbacks/subscriptions/postPlayerChangeType.ts +0 -40
- package/callbacks/subscriptions/postPlayerCollectibleAdded.ts +0 -38
- package/callbacks/subscriptions/postPlayerCollectibleRemoved.ts +0 -38
- package/callbacks/subscriptions/postPlayerFatalDamage.ts +0 -68
- package/callbacks/subscriptions/postPlayerInitLate.ts +0 -40
- package/callbacks/subscriptions/postPlayerInitReordered.ts +0 -40
- package/callbacks/subscriptions/postPlayerRenderReordered.ts +0 -40
- package/callbacks/subscriptions/postPlayerUpdateReordered.ts +0 -40
- package/callbacks/subscriptions/postPoopRender.ts +0 -35
- package/callbacks/subscriptions/postPoopUpdate.ts +0 -35
- package/callbacks/subscriptions/postPressurePlateRender.ts +0 -37
- package/callbacks/subscriptions/postPressurePlateUpdate.ts +0 -37
- package/callbacks/subscriptions/postProjectileInitLate.ts +0 -35
- package/callbacks/subscriptions/postPurchase.ts +0 -31
- package/callbacks/subscriptions/postRockRender.ts +0 -35
- package/callbacks/subscriptions/postRockUpdate.ts +0 -35
- package/callbacks/subscriptions/postRoomClearChanged.ts +0 -30
- package/callbacks/subscriptions/postSacrifice.ts +0 -43
- package/callbacks/subscriptions/postSlotAnimationChanged.ts +0 -40
- package/callbacks/subscriptions/postSlotDestroyed.ts +0 -55
- package/callbacks/subscriptions/postSlotInit.ts +0 -32
- package/callbacks/subscriptions/postSlotRender.ts +0 -32
- package/callbacks/subscriptions/postSlotUpdate.ts +0 -32
- package/callbacks/subscriptions/postSpikesRender.ts +0 -35
- package/callbacks/subscriptions/postSpikesUpdate.ts +0 -35
- package/callbacks/subscriptions/postTNTRender.ts +0 -35
- package/callbacks/subscriptions/postTNTUpdate.ts +0 -35
- package/callbacks/subscriptions/postTearInitLate.ts +0 -32
- package/callbacks/subscriptions/postTearInitVeryLate.ts +0 -32
- package/callbacks/subscriptions/postTransformation.ts +0 -40
- package/callbacks/subscriptions/postTrinketBreak.ts +0 -38
- package/callbacks/subscriptions/preBerserkDeath.ts +0 -42
- package/callbacks/subscriptions/preCustomRevive.ts +0 -46
- package/callbacks/subscriptions/preItemPickup.ts +0 -64
- package/callbacks/subscriptions/preNewLevel.ts +0 -24
- package/classes/DefaultMap.ts +0 -174
- package/classes/ModUpgraded.ts +0 -84
- package/constants.ts +0 -162
- package/constantsFirstLast.ts +0 -217
- package/enums/AmbushType.ts +0 -4
- package/enums/HealthType.ts +0 -16
- package/enums/ModCallbackCustom.ts +0 -1278
- package/enums/PocketItemType.ts +0 -8
- package/enums/SerializationType.ts +0 -5
- package/enums/SlotDestructionType.ts +0 -4
- package/enums/private/CopyableIsaacAPIClassType.ts +0 -7
- package/enums/private/SaveDataKey.ts +0 -14
- package/enums/private/SerializationBrand.ts +0 -42
- package/features/characterHealthConversion.ts +0 -111
- package/features/characterStats.ts +0 -61
- package/features/debugDisplay/debugDisplay.ts +0 -221
- package/features/debugDisplay/exports.ts +0 -368
- package/features/debugDisplay/v.ts +0 -65
- package/features/deployJSONRoom.ts +0 -743
- package/features/disableInputs.ts +0 -193
- package/features/disableSound.ts +0 -77
- package/features/extraConsoleCommands/commandsDisplay.ts +0 -290
- package/features/extraConsoleCommands/commandsSubroutines.ts +0 -139
- package/features/extraConsoleCommands/init.ts +0 -334
- package/features/extraConsoleCommands/listCommands.ts +0 -1299
- package/features/extraConsoleCommands/v.ts +0 -14
- package/features/fadeInRemover.ts +0 -60
- package/features/fastReset.ts +0 -75
- package/features/forgottenSwitch.ts +0 -50
- package/features/getCollectibleItemPoolType.ts +0 -66
- package/features/persistentEntities.ts +0 -183
- package/features/playerInventory.ts +0 -135
- package/features/ponyDetection.ts +0 -74
- package/features/preventCollectibleRotation.ts +0 -115
- package/features/runInNFrames.ts +0 -148
- package/features/saveDataManager/constants.ts +0 -4
- package/features/saveDataManager/exports.ts +0 -229
- package/features/saveDataManager/load.ts +0 -99
- package/features/saveDataManager/main.ts +0 -195
- package/features/saveDataManager/maps.ts +0 -13
- package/features/saveDataManager/merge.ts +0 -194
- package/features/saveDataManager/save.ts +0 -74
- package/features/saveDataManager/serializationBrand.ts +0 -16
- package/features/sirenHelpers.ts +0 -129
- package/features/taintedLazarusPlayers.ts +0 -113
- package/featuresInitialized.ts +0 -20
- package/functions/ambush.ts +0 -47
- package/functions/array.ts +0 -410
- package/functions/benchmark.ts +0 -36
- package/functions/bitwise.ts +0 -24
- package/functions/bombs.ts +0 -12
- package/functions/boss.ts +0 -227
- package/functions/cacheFlag.ts +0 -12
- package/functions/cards.ts +0 -271
- package/functions/challenges.ts +0 -13
- package/functions/character.ts +0 -126
- package/functions/charge.ts +0 -237
- package/functions/chargeBar.ts +0 -67
- package/functions/collectibleCacheFlag.ts +0 -90
- package/functions/collectibleSet.ts +0 -56
- package/functions/collectibleTag.ts +0 -89
- package/functions/collectibles.ts +0 -659
- package/functions/color.ts +0 -128
- package/functions/debug.ts +0 -68
- package/functions/deepCopy.ts +0 -535
- package/functions/deepCopyTests.ts +0 -386
- package/functions/direction.ts +0 -49
- package/functions/doors.ts +0 -347
- package/functions/easing.ts +0 -182
- package/functions/eden.ts +0 -47
- package/functions/effects.ts +0 -20
- package/functions/entity.ts +0 -439
- package/functions/entitySpecific.ts +0 -889
- package/functions/entityTypes.ts +0 -6
- package/functions/enums.ts +0 -146
- package/functions/familiars.ts +0 -106
- package/functions/flag.ts +0 -165
- package/functions/flying.ts +0 -117
- package/functions/globals.ts +0 -242
- package/functions/gridEntity.ts +0 -511
- package/functions/gridEntitySpecific.ts +0 -112
- package/functions/input.ts +0 -139
- package/functions/isaacAPIClass.ts +0 -67
- package/functions/jsonHelpers.ts +0 -45
- package/functions/jsonRoom.ts +0 -100
- package/functions/kColor.ts +0 -129
- package/functions/language.ts +0 -13
- package/functions/level.ts +0 -31
- package/functions/log.ts +0 -720
- package/functions/map.ts +0 -56
- package/functions/math.ts +0 -149
- package/functions/mergeTests.ts +0 -288
- package/functions/npc.ts +0 -148
- package/functions/pickupVariants.ts +0 -60
- package/functions/pickups.ts +0 -499
- package/functions/pills.ts +0 -205
- package/functions/player.ts +0 -1056
- package/functions/playerDataStructures.ts +0 -150
- package/functions/playerHealth.ts +0 -382
- package/functions/playerIndex.ts +0 -195
- package/functions/pocketItems.ts +0 -149
- package/functions/positionVelocity.ts +0 -188
- package/functions/random.ts +0 -77
- package/functions/revive.ts +0 -201
- package/functions/rng.ts +0 -172
- package/functions/roomData.ts +0 -199
- package/functions/roomGrid.ts +0 -109
- package/functions/roomShape.ts +0 -80
- package/functions/rooms.ts +0 -648
- package/functions/run.ts +0 -36
- package/functions/saveFile.ts +0 -128
- package/functions/seeds.ts +0 -19
- package/functions/serialization.ts +0 -91
- package/functions/set.ts +0 -95
- package/functions/sound.ts +0 -9
- package/functions/spawnCollectible.ts +0 -104
- package/functions/sprite.ts +0 -107
- package/functions/stage.ts +0 -125
- package/functions/string.ts +0 -47
- package/functions/table.ts +0 -189
- package/functions/tears.ts +0 -32
- package/functions/transformations.ts +0 -131
- package/functions/trinketCacheFlag.ts +0 -60
- package/functions/trinketGive.ts +0 -157
- package/functions/trinkets.ts +0 -215
- package/functions/tstlClass.ts +0 -157
- package/functions/types.ts +0 -36
- package/functions/ui.ts +0 -138
- package/functions/utils.ts +0 -189
- package/functions/vector.ts +0 -126
- package/index.ts +0 -172
- package/initCustomCallbacks.ts +0 -132
- package/initFeatures.ts +0 -39
- package/interfaces/AddCallbackParameterCustom.ts +0 -188
- package/interfaces/ChargeBarSprites.ts +0 -12
- package/interfaces/JSONDoor.ts +0 -13
- package/interfaces/JSONEntity.ts +0 -16
- package/interfaces/JSONRoom.ts +0 -36
- package/interfaces/JSONRooms.ts +0 -12
- package/interfaces/JSONSpawn.ts +0 -14
- package/interfaces/PlayerHealth.ts +0 -16
- package/interfaces/PocketItemDescription.ts +0 -9
- package/interfaces/SaveData.ts +0 -29
- package/interfaces/TrinketSituation.ts +0 -9
- package/interfaces/private/TSTLClassMetatable.ts +0 -8
- package/maps/PHDPillConversions.ts +0 -21
- package/maps/cardMap.ts +0 -209
- package/maps/characterMap.ts +0 -87
- package/maps/collectibleDescriptionMap.ts +0 -732
- package/maps/collectibleNameMap.ts +0 -731
- package/maps/defaultPlayerStatMap.ts +0 -17
- package/maps/falsePHDPillConversions.ts +0 -35
- package/maps/gridEntityTypeToBrokenStateMap.ts +0 -50
- package/maps/gridEntityXMLMap.ts +0 -176
- package/maps/pillEffectMap.ts +0 -88
- package/maps/roomShapeToTopLeftWallGridIndexMap.ts +0 -18
- package/maps/roomTypeMap.ts +0 -40
- package/maps/trinketDescriptionMap.ts +0 -200
- package/maps/trinketNameMap.ts +0 -198
- package/objects/LRoomShapeToRectangles.ts +0 -44
- package/objects/callbackRegisterFunctions.ts +0 -187
- package/objects/cardDescriptions.ts +0 -105
- package/objects/cardNames.ts +0 -105
- package/objects/cardTypes.ts +0 -104
- package/objects/challengeNames.ts +0 -52
- package/objects/characterNames.ts +0 -48
- package/objects/coinSubTypeToValue.ts +0 -14
- package/objects/colors.ts +0 -16
- package/objects/directionNames.ts +0 -11
- package/objects/directionToDegrees.ts +0 -11
- package/objects/directionToVector.ts +0 -12
- package/objects/doorSlotFlagToDoorSlot.ts +0 -16
- package/objects/doorSlotToDirection.ts +0 -14
- package/objects/isaacAPIClassTypeToBrand.ts +0 -11
- package/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
- package/objects/languageNames.ts +0 -13
- package/objects/oppositeDoorSlots.ts +0 -15
- package/objects/pillEffectClasses.ts +0 -63
- package/objects/pillEffectNames.ts +0 -57
- package/objects/pillEffectTypes.ts +0 -62
- package/objects/roomShapeBounds.ts +0 -71
- package/objects/roomShapeLayoutSizes.ts +0 -45
- package/objects/roomShapeToBottomRightPosition.ts +0 -25
- package/objects/roomShapeToDoorSlots.ts +0 -83
- package/objects/roomShapeToDoorSlotsToGridIndexDelta.ts +0 -127
- package/objects/roomShapeToGridWidth.ts +0 -21
- package/objects/roomShapeToTopLeftPosition.ts +0 -26
- package/objects/roomShapeVolumes.ts +0 -38
- package/objects/roomTypeNames.ts +0 -36
- package/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
- package/objects/stageTypeToLetter.ts +0 -15
- package/objects/transformationNames.ts +0 -18
- package/patchErrorFunctions.ts +0 -92
- package/sets/LRoomShapesSet.ts +0 -8
- package/sets/bossSets.ts +0 -470
- package/sets/charactersThatStartWithAnActiveItemSet.ts +0 -16
- package/sets/charactersWithBlackHeartFromEternalHeartSet.ts +0 -7
- package/sets/charactersWithFreeDevilDealsSet.ts +0 -4
- package/sets/charactersWithNoRedHeartsSet.ts +0 -17
- package/sets/charactersWithNoSoulHeartsSet.ts +0 -14
- package/sets/chestPickupVariantsSet.ts +0 -16
- package/sets/familiarsThatShootPlayerTearsSet.ts +0 -13
- package/sets/lostStyleCharactersSet.ts +0 -13
- package/sets/mineShaftRoomSubTypesSet.ts +0 -10
- package/sets/redHeartSubTypesSet.ts +0 -7
- package/sets/sinEntityTypesSet.ts +0 -11
- package/sets/singleUseActiveCollectibleTypesSet.ts +0 -13
- package/sets/storyBossesSet.ts +0 -17
- package/types/AnyEntity.ts +0 -12
- package/types/AwaitingTextInput.d.ts +0 -2
- package/types/CollectibleIndex.ts +0 -16
- package/types/PickingUpItem.ts +0 -89
- package/types/PlayerIndex.ts +0 -13
- package/types/private/IsaacAPIClass.ts +0 -3
- package/types/private/SerializedIsaacAPIClass.ts +0 -3
- package/types/private/TSTLClass.ts +0 -3
- package/upgradeMod.ts +0 -55
|
@@ -5,6 +5,7 @@ local __TS__Spread = ____lualib.__TS__Spread
|
|
|
5
5
|
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
6
6
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
7
7
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
8
|
+
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
8
9
|
local ____exports = {}
|
|
9
10
|
local hasSubscriptions, postPEffectUpdate, collectibleCountChanged, v
|
|
10
11
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
@@ -48,7 +49,7 @@ function postPEffectUpdate(self, player)
|
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
function collectibleCountChanged(self, player, numCollectiblesChanged, increased)
|
|
51
|
-
local oldCollectibleMap = defaultMapGetPlayer(nil, v.run.playersCollectibleMap, player
|
|
52
|
+
local oldCollectibleMap = defaultMapGetPlayer(nil, v.run.playersCollectibleMap, player)
|
|
52
53
|
local newCollectibleMap = getPlayerCollectibleMap(nil, player)
|
|
53
54
|
mapSetPlayer(nil, v.run.playersCollectibleMap, player, newCollectibleMap)
|
|
54
55
|
local ____array_0 = __TS__SparseArrayNew(__TS__Spread(oldCollectibleMap:keys()))
|
|
@@ -57,6 +58,7 @@ function collectibleCountChanged(self, player, numCollectiblesChanged, increased
|
|
|
57
58
|
__TS__Spread(newCollectibleMap:keys())
|
|
58
59
|
)
|
|
59
60
|
local collectibleTypes = {__TS__SparseArraySpread(____array_0)}
|
|
61
|
+
__TS__ArraySort(collectibleTypes)
|
|
60
62
|
local numFired = 0
|
|
61
63
|
for ____, collectibleType in ipairs(collectibleTypes) do
|
|
62
64
|
local oldNum = oldCollectibleMap:get(collectibleType) or 0
|
|
@@ -83,7 +85,7 @@ v = {run = {
|
|
|
83
85
|
playersCollectibleCount = __TS__New(Map),
|
|
84
86
|
playersCollectibleMap = __TS__New(
|
|
85
87
|
DefaultMap,
|
|
86
|
-
function(
|
|
88
|
+
function() return __TS__New(Map) end
|
|
87
89
|
)
|
|
88
90
|
}}
|
|
89
91
|
---
|
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
import { CollectibleType } from "isaac-typescript-definitions";
|
|
2
|
+
/**
|
|
3
|
+
* Returns an array containing every valid collectible type in the game, including modded
|
|
4
|
+
* collectibles.
|
|
5
|
+
*
|
|
6
|
+
* Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
7
|
+
* then use the `getCollectibleArray` helper function instead.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCollectibleArray(): readonly CollectibleType[];
|
|
2
10
|
/**
|
|
3
11
|
* Returns a set containing every valid collectible type in the game, including modded collectibles.
|
|
12
|
+
*
|
|
13
|
+
* Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
14
|
+
* then use the `getCollectibleArray` helper function instead.
|
|
4
15
|
*/
|
|
5
16
|
export declare function getCollectibleSet(): ReadonlySet<CollectibleType>;
|
|
6
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Returns an array containing every modded collectible type in the game.
|
|
19
|
+
*
|
|
20
|
+
* Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
21
|
+
* then use the `getModdedCollectibleSet` helper function instead.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getModdedCollectibleArray(): readonly CollectibleType[];
|
|
24
|
+
/**
|
|
25
|
+
* Returns a set containing every modded collectible type in the game.
|
|
26
|
+
*
|
|
27
|
+
* Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
28
|
+
* then use the `getModdedCollectibleArray` helper function instead.
|
|
29
|
+
*/
|
|
7
30
|
export declare function getModdedCollectibleSet(): ReadonlySet<CollectibleType>;
|
|
8
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Returns an array containing every valid vanilla collectible type in the game.
|
|
33
|
+
*
|
|
34
|
+
* Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
35
|
+
* then use the `getVanillaCollectibleSet` helper function instead.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getVanillaCollectibleArray(): readonly CollectibleType[];
|
|
38
|
+
/**
|
|
39
|
+
* Returns a set containing every valid vanilla collectible type in the game.
|
|
40
|
+
*
|
|
41
|
+
* Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
42
|
+
* then use the `getVanillaCollectibleArray` helper function instead.
|
|
43
|
+
*/
|
|
9
44
|
export declare function getVanillaCollectibleSet(): ReadonlySet<CollectibleType>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local Set = ____lualib.Set
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
4
5
|
local ____exports = {}
|
|
5
6
|
local ____cachedClasses = require("cachedClasses")
|
|
6
7
|
local itemConfig = ____cachedClasses.itemConfig
|
|
@@ -8,45 +9,91 @@ local ____constantsFirstLast = require("constantsFirstLast")
|
|
|
8
9
|
local LAST_VANILLA_COLLECTIBLE_TYPE = ____constantsFirstLast.LAST_VANILLA_COLLECTIBLE_TYPE
|
|
9
10
|
local ____collectibles = require("functions.collectibles")
|
|
10
11
|
local getCollectibleTypeRange = ____collectibles.getCollectibleTypeRange
|
|
12
|
+
local ALL_COLLECTIBLES_ARRAY = {}
|
|
13
|
+
local VANILLA_COLLECTIBLES_ARRAY = {}
|
|
14
|
+
local MODDED_COLLECTIBLES_ARRAY = {}
|
|
11
15
|
local ALL_COLLECTIBLES_SET = __TS__New(Set)
|
|
12
16
|
local VANILLA_COLLECTIBLES_SET = __TS__New(Set)
|
|
13
17
|
local MODDED_COLLECTIBLES_SET = __TS__New(Set)
|
|
14
|
-
local function
|
|
18
|
+
local function initCollectibleArraysAndSets(self)
|
|
19
|
+
if #ALL_COLLECTIBLES_ARRAY ~= 0 then
|
|
20
|
+
return
|
|
21
|
+
end
|
|
15
22
|
for ____, collectibleType in ipairs(getCollectibleTypeRange(nil)) do
|
|
16
23
|
do
|
|
17
24
|
local itemConfigItem = itemConfig:GetCollectible(collectibleType)
|
|
18
25
|
if itemConfigItem == nil then
|
|
19
|
-
goto
|
|
26
|
+
goto __continue4
|
|
20
27
|
end
|
|
21
|
-
|
|
28
|
+
ALL_COLLECTIBLES_ARRAY[#ALL_COLLECTIBLES_ARRAY + 1] = collectibleType
|
|
22
29
|
if collectibleType <= LAST_VANILLA_COLLECTIBLE_TYPE then
|
|
23
|
-
|
|
30
|
+
VANILLA_COLLECTIBLES_ARRAY[#VANILLA_COLLECTIBLES_ARRAY + 1] = collectibleType
|
|
24
31
|
else
|
|
25
|
-
|
|
32
|
+
MODDED_COLLECTIBLES_ARRAY[#MODDED_COLLECTIBLES_ARRAY + 1] = collectibleType
|
|
26
33
|
end
|
|
27
34
|
end
|
|
28
|
-
::
|
|
35
|
+
::__continue4::
|
|
36
|
+
end
|
|
37
|
+
__TS__ArraySort(ALL_COLLECTIBLES_ARRAY)
|
|
38
|
+
__TS__ArraySort(VANILLA_COLLECTIBLES_ARRAY)
|
|
39
|
+
__TS__ArraySort(MODDED_COLLECTIBLES_ARRAY)
|
|
40
|
+
for ____, collectibleType in ipairs(ALL_COLLECTIBLES_ARRAY) do
|
|
41
|
+
ALL_COLLECTIBLES_SET:add(collectibleType)
|
|
42
|
+
end
|
|
43
|
+
for ____, collectibleType in ipairs(VANILLA_COLLECTIBLES_ARRAY) do
|
|
44
|
+
VANILLA_COLLECTIBLES_SET:add(collectibleType)
|
|
29
45
|
end
|
|
46
|
+
for ____, collectibleType in ipairs(MODDED_COLLECTIBLES_ARRAY) do
|
|
47
|
+
MODDED_COLLECTIBLES_SET:add(collectibleType)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
--- Returns an array containing every valid collectible type in the game, including modded
|
|
51
|
+
-- collectibles.
|
|
52
|
+
--
|
|
53
|
+
-- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
54
|
+
-- then use the `getCollectibleArray` helper function instead.
|
|
55
|
+
function ____exports.getCollectibleArray(self)
|
|
56
|
+
initCollectibleArraysAndSets(nil)
|
|
57
|
+
return ALL_COLLECTIBLES_ARRAY
|
|
30
58
|
end
|
|
31
59
|
--- Returns a set containing every valid collectible type in the game, including modded collectibles.
|
|
60
|
+
--
|
|
61
|
+
-- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
62
|
+
-- then use the `getCollectibleArray` helper function instead.
|
|
32
63
|
function ____exports.getCollectibleSet(self)
|
|
33
|
-
|
|
34
|
-
initCollectibleSets(nil)
|
|
35
|
-
end
|
|
64
|
+
initCollectibleArraysAndSets(nil)
|
|
36
65
|
return ALL_COLLECTIBLES_SET
|
|
37
66
|
end
|
|
67
|
+
--- Returns an array containing every modded collectible type in the game.
|
|
68
|
+
--
|
|
69
|
+
-- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
70
|
+
-- then use the `getModdedCollectibleSet` helper function instead.
|
|
71
|
+
function ____exports.getModdedCollectibleArray(self)
|
|
72
|
+
initCollectibleArraysAndSets(nil)
|
|
73
|
+
return MODDED_COLLECTIBLES_ARRAY
|
|
74
|
+
end
|
|
38
75
|
--- Returns a set containing every modded collectible type in the game.
|
|
76
|
+
--
|
|
77
|
+
-- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
78
|
+
-- then use the `getModdedCollectibleArray` helper function instead.
|
|
39
79
|
function ____exports.getModdedCollectibleSet(self)
|
|
40
|
-
|
|
41
|
-
initCollectibleSets(nil)
|
|
42
|
-
end
|
|
80
|
+
initCollectibleArraysAndSets(nil)
|
|
43
81
|
return MODDED_COLLECTIBLES_SET
|
|
44
82
|
end
|
|
83
|
+
--- Returns an array containing every valid vanilla collectible type in the game.
|
|
84
|
+
--
|
|
85
|
+
-- Use this if you need to iterate over the collectibles in order. If you need to do O(1) lookups,
|
|
86
|
+
-- then use the `getVanillaCollectibleSet` helper function instead.
|
|
87
|
+
function ____exports.getVanillaCollectibleArray(self)
|
|
88
|
+
initCollectibleArraysAndSets(nil)
|
|
89
|
+
return VANILLA_COLLECTIBLES_ARRAY
|
|
90
|
+
end
|
|
45
91
|
--- Returns a set containing every valid vanilla collectible type in the game.
|
|
92
|
+
--
|
|
93
|
+
-- Use this if you need to do O(1) lookups. If you need to iterate over the collectibles in order,
|
|
94
|
+
-- then use the `getVanillaCollectibleArray` helper function instead.
|
|
46
95
|
function ____exports.getVanillaCollectibleSet(self)
|
|
47
|
-
|
|
48
|
-
initCollectibleSets(nil)
|
|
49
|
-
end
|
|
96
|
+
initCollectibleArraysAndSets(nil)
|
|
50
97
|
return VANILLA_COLLECTIBLES_SET
|
|
51
98
|
end
|
|
52
99
|
return ____exports
|
package/functions/player.lua
CHANGED
|
@@ -5,7 +5,6 @@ local __TS__ArraySome = ____lualib.__TS__ArraySome
|
|
|
5
5
|
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
|
|
6
6
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
7
7
|
local Map = ____lualib.Map
|
|
8
|
-
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
9
8
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
10
9
|
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
|
|
11
10
|
local ____exports = {}
|
|
@@ -39,7 +38,7 @@ local isVanillaCharacter = ____character.isVanillaCharacter
|
|
|
39
38
|
local ____collectibles = require("functions.collectibles")
|
|
40
39
|
local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges
|
|
41
40
|
local ____collectibleSet = require("functions.collectibleSet")
|
|
42
|
-
local
|
|
41
|
+
local getCollectibleArray = ____collectibleSet.getCollectibleArray
|
|
43
42
|
local ____enums = require("functions.enums")
|
|
44
43
|
local getEnumValues = ____enums.getEnumValues
|
|
45
44
|
local ____playerIndex = require("functions.playerIndex")
|
|
@@ -404,9 +403,9 @@ end
|
|
|
404
403
|
--- Iterates over every item in the game and returns a map containing the number of each item that
|
|
405
404
|
-- the player has.
|
|
406
405
|
function ____exports.getPlayerCollectibleMap(self, player)
|
|
407
|
-
local
|
|
406
|
+
local collectibleArray = getCollectibleArray(nil)
|
|
408
407
|
local collectibleMap = __TS__New(Map)
|
|
409
|
-
for ____, collectibleType in
|
|
408
|
+
for ____, collectibleType in ipairs(collectibleArray) do
|
|
410
409
|
local collectibleNum = player:GetCollectibleNum(collectibleType, true)
|
|
411
410
|
if collectibleNum > 0 then
|
|
412
411
|
collectibleMap:set(collectibleType, collectibleNum)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "isaacscript-common",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"description": "Helper functions and features for IsaacScript mods.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"isaac",
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"main": "index",
|
|
23
23
|
"types": "index.d.ts",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"isaac-typescript-definitions": "^3.0.
|
|
25
|
+
"isaac-typescript-definitions": "^3.0.7"
|
|
26
26
|
}
|
|
27
27
|
}
|
package/cachedClasses.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A cached version of the class returned from the `Game()` constructor.
|
|
3
|
-
*
|
|
4
|
-
* Use this instead of invoking the constructor again for a miniscule performance increase.
|
|
5
|
-
*
|
|
6
|
-
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
7
|
-
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
8
|
-
*/
|
|
9
|
-
export const game = Game();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* A cached version of the class returned from the `Isaac.GetItemConfig()` constructor.
|
|
13
|
-
*
|
|
14
|
-
* Use this instead of invoking the constructor again for a miniscule performance increase.
|
|
15
|
-
*
|
|
16
|
-
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
17
|
-
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
18
|
-
*/
|
|
19
|
-
export const itemConfig = Isaac.GetItemConfig();
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* A cached version of the class returned from the `MusicManager()` constructor.
|
|
23
|
-
*
|
|
24
|
-
* Use this instead of invoking the constructor again for a miniscule performance increase.
|
|
25
|
-
*
|
|
26
|
-
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
27
|
-
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
28
|
-
*/
|
|
29
|
-
export const musicManager = MusicManager();
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* A cached version of the class returned from the `SFXManager()` constructor.
|
|
33
|
-
*
|
|
34
|
-
* Use this instead of invoking the constructor again for a miniscule performance increase.
|
|
35
|
-
*
|
|
36
|
-
* Caching the results of this constructor is safe, but caching other classes (like `Level` or
|
|
37
|
-
* `Room`) is not safe and can lead to the game crashing in certain situations.
|
|
38
|
-
*/
|
|
39
|
-
export const sfxManager = SFXManager();
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
// This provides the logic for:
|
|
2
|
-
// - PRE_CUSTOM_REVIVE
|
|
3
|
-
// - POST_CUSTOM_REVIVE
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
CollectibleType,
|
|
7
|
-
FamiliarVariant,
|
|
8
|
-
ModCallback,
|
|
9
|
-
PlayerType,
|
|
10
|
-
SoundEffect,
|
|
11
|
-
} from "isaac-typescript-definitions";
|
|
12
|
-
import { sfxManager } from "../cachedClasses";
|
|
13
|
-
import { ModUpgraded } from "../classes/ModUpgraded";
|
|
14
|
-
import { ModCallbackCustom } from "../enums/ModCallbackCustom";
|
|
15
|
-
import { runNextGameFrame } from "../features/runInNFrames";
|
|
16
|
-
import { saveDataManager } from "../features/saveDataManager/exports";
|
|
17
|
-
import { removeCollectibleFromItemTracker } from "../functions/collectibles";
|
|
18
|
-
import { removeAllFamiliars } from "../functions/entitySpecific";
|
|
19
|
-
import { log, logError } from "../functions/log";
|
|
20
|
-
import { isCharacter } from "../functions/player";
|
|
21
|
-
import { getPlayerFromIndex, getPlayerIndex } from "../functions/playerIndex";
|
|
22
|
-
import { PlayerIndex } from "../types/PlayerIndex";
|
|
23
|
-
import {
|
|
24
|
-
postCustomReviveFire,
|
|
25
|
-
postCustomReviveHasSubscriptions,
|
|
26
|
-
} from "./subscriptions/postCustomRevive";
|
|
27
|
-
import {
|
|
28
|
-
preCustomReviveFire,
|
|
29
|
-
preCustomReviveHasSubscriptions,
|
|
30
|
-
} from "./subscriptions/preCustomRevive";
|
|
31
|
-
|
|
32
|
-
const DEBUG = false;
|
|
33
|
-
|
|
34
|
-
enum CustomReviveState {
|
|
35
|
-
DISABLED,
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* We can't immediately jump to waiting for an item animation because it is possible for a player
|
|
39
|
-
* to be holding an item above their head as they are dying (e.g. with Razor Blade).
|
|
40
|
-
*/
|
|
41
|
-
WAITING_FOR_ROOM_TRANSITION,
|
|
42
|
-
|
|
43
|
-
WAITING_FOR_ITEM_ANIMATION,
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const v = {
|
|
47
|
-
run: {
|
|
48
|
-
state: CustomReviveState.DISABLED,
|
|
49
|
-
revivalType: null as int | null,
|
|
50
|
-
dyingPlayerIndex: null as PlayerIndex | null,
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/** @internal */
|
|
55
|
-
export function customReviveCallbacksInit(mod: ModUpgraded): void {
|
|
56
|
-
saveDataManager("customRevive", v, hasSubscriptions);
|
|
57
|
-
|
|
58
|
-
mod.AddCallback(ModCallback.POST_RENDER, postRender); // 2
|
|
59
|
-
mod.AddCallbackCustom(
|
|
60
|
-
ModCallbackCustom.POST_NEW_ROOM_REORDERED,
|
|
61
|
-
postNewRoomReordered,
|
|
62
|
-
);
|
|
63
|
-
mod.AddCallbackCustom(
|
|
64
|
-
ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
|
|
65
|
-
postPEffectUpdateReordered,
|
|
66
|
-
);
|
|
67
|
-
mod.AddCallbackCustom(
|
|
68
|
-
ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE,
|
|
69
|
-
postPlayerFatalDamage,
|
|
70
|
-
);
|
|
71
|
-
mod.AddCallbackCustom(ModCallbackCustom.PRE_BERSERK_DEATH, preBerserkDeath);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function hasSubscriptions() {
|
|
75
|
-
return (
|
|
76
|
-
preCustomReviveHasSubscriptions() || postCustomReviveHasSubscriptions()
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// ModCallback.POST_RENDER (2)
|
|
81
|
-
function postRender() {
|
|
82
|
-
if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// The 1-up sound will fire before the item holding animation begins, so we mute it on every
|
|
87
|
-
// render frame.
|
|
88
|
-
sfxManager.Stop(SoundEffect.ONE_UP);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// ModCallbackCustom.POST_NEW_ROOM_REORDERED
|
|
92
|
-
function postNewRoomReordered() {
|
|
93
|
-
if (v.run.state !== CustomReviveState.WAITING_FOR_ROOM_TRANSITION) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
v.run.state = CustomReviveState.WAITING_FOR_ITEM_ANIMATION;
|
|
98
|
-
logStateChanged();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
|
|
102
|
-
function postPEffectUpdateReordered(player: EntityPlayer) {
|
|
103
|
-
checkWaitingForItemAnimation(player);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function checkWaitingForItemAnimation(player: EntityPlayer) {
|
|
107
|
-
if (v.run.state !== CustomReviveState.WAITING_FOR_ITEM_ANIMATION) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (v.run.dyingPlayerIndex === null) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const playerIndex = getPlayerIndex(player);
|
|
116
|
-
if (playerIndex !== v.run.dyingPlayerIndex) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
let playerToCheckHoldingItem = player;
|
|
121
|
-
if (isCharacter(player, PlayerType.THE_SOUL_B)) {
|
|
122
|
-
const forgottenBody = player.GetOtherTwin();
|
|
123
|
-
if (forgottenBody !== undefined) {
|
|
124
|
-
playerToCheckHoldingItem = forgottenBody;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (!playerToCheckHoldingItem.IsHoldingItem()) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// The player is now playing the animation where they hold the 1-Up item overhead. The
|
|
133
|
-
// `EntityPlayer.StopExtraAnimation` method will not work to stop this animation. End-users are
|
|
134
|
-
// expected to play a new animation in the PostCustomRevive callback, which will overwrite the
|
|
135
|
-
// 1-Up animation.
|
|
136
|
-
|
|
137
|
-
if (v.run.revivalType !== null) {
|
|
138
|
-
postCustomReviveFire(playerToCheckHoldingItem, v.run.revivalType);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
v.run.state = CustomReviveState.DISABLED;
|
|
142
|
-
v.run.revivalType = null;
|
|
143
|
-
v.run.dyingPlayerIndex = null;
|
|
144
|
-
logStateChanged();
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE
|
|
148
|
-
function postPlayerFatalDamage(player: EntityPlayer): boolean | undefined {
|
|
149
|
-
if (!hasSubscriptions()) {
|
|
150
|
-
return undefined;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
playerIsAboutToDie(player);
|
|
154
|
-
return undefined;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// ModCallbackCustom.PRE_BERSERK_DEATH
|
|
158
|
-
function preBerserkDeath(player: EntityPlayer) {
|
|
159
|
-
if (!hasSubscriptions()) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
playerIsAboutToDie(player);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* The player is about to die, which will immediately delete the save data for the run. To prevent
|
|
168
|
-
* this from happening, we grant the 1-Up item.
|
|
169
|
-
*/
|
|
170
|
-
function playerIsAboutToDie(player: EntityPlayer) {
|
|
171
|
-
const revivalType = preCustomReviveFire(player);
|
|
172
|
-
if (revivalType === undefined) {
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
v.run.state = CustomReviveState.WAITING_FOR_ROOM_TRANSITION;
|
|
177
|
-
v.run.revivalType = revivalType;
|
|
178
|
-
v.run.dyingPlayerIndex = getPlayerIndex(player);
|
|
179
|
-
logStateChanged();
|
|
180
|
-
|
|
181
|
-
player.AddCollectible(CollectibleType.ONE_UP, 0, false);
|
|
182
|
-
removeAllFamiliars(FamiliarVariant.ONE_UP);
|
|
183
|
-
removeCollectibleFromItemTracker(CollectibleType.ONE_UP);
|
|
184
|
-
|
|
185
|
-
// The player should always be dead one frame from now. If they are not, then something has gone
|
|
186
|
-
// wrong, probably with the `isDamageToPlayerFatal` function. Since end-user code is already
|
|
187
|
-
// assuming that a custom revive is occurring, explicitly kill the player.
|
|
188
|
-
const playerIndex = getPlayerIndex(player);
|
|
189
|
-
runNextGameFrame(() => {
|
|
190
|
-
const futurePlayer = getPlayerFromIndex(playerIndex);
|
|
191
|
-
if (futurePlayer === undefined) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (futurePlayer.IsDead()) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
logError(
|
|
200
|
-
"The player is still alive after initializing a custom revive. Explicitly killing the player.",
|
|
201
|
-
);
|
|
202
|
-
futurePlayer.Kill();
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
function logStateChanged() {
|
|
207
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
208
|
-
if (DEBUG) {
|
|
209
|
-
log(
|
|
210
|
-
`Custom revive state changed: ${CustomReviveState[v.run.state]} (${
|
|
211
|
-
v.run.state
|
|
212
|
-
})`,
|
|
213
|
-
);
|
|
214
|
-
}
|
|
215
|
-
}
|
package/callbacks/itemPickup.ts
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
// This provides the logic for:
|
|
2
|
-
// - PRE_ITEM_PICKUP
|
|
3
|
-
// - POST_ITEM_PICKUP
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
CollectibleType,
|
|
7
|
-
ItemType,
|
|
8
|
-
TrinketType,
|
|
9
|
-
} from "isaac-typescript-definitions";
|
|
10
|
-
import { DefaultMap } from "../classes/DefaultMap";
|
|
11
|
-
import { ModUpgraded } from "../classes/ModUpgraded";
|
|
12
|
-
import { ModCallbackCustom } from "../enums/ModCallbackCustom";
|
|
13
|
-
import { saveDataManager } from "../features/saveDataManager/exports";
|
|
14
|
-
import { defaultMapGetPlayer } from "../functions/playerDataStructures";
|
|
15
|
-
import {
|
|
16
|
-
newPickingUpItem,
|
|
17
|
-
PickingUpItem,
|
|
18
|
-
resetPickingUpItem,
|
|
19
|
-
} from "../types/PickingUpItem";
|
|
20
|
-
import { PlayerIndex } from "../types/PlayerIndex";
|
|
21
|
-
import {
|
|
22
|
-
postItemPickupFire,
|
|
23
|
-
postItemPickupHasSubscriptions,
|
|
24
|
-
} from "./subscriptions/postItemPickup";
|
|
25
|
-
import {
|
|
26
|
-
preItemPickupFire,
|
|
27
|
-
preItemPickupHasSubscriptions,
|
|
28
|
-
} from "./subscriptions/preItemPickup";
|
|
29
|
-
|
|
30
|
-
const v = {
|
|
31
|
-
run: {
|
|
32
|
-
playersPickingUpItemMap: new DefaultMap<PlayerIndex, PickingUpItem>(() =>
|
|
33
|
-
newPickingUpItem(),
|
|
34
|
-
),
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/** @internal */
|
|
39
|
-
export function itemPickupCallbacksInit(mod: ModUpgraded): void {
|
|
40
|
-
saveDataManager("itemPickup", v, hasSubscriptions);
|
|
41
|
-
|
|
42
|
-
mod.AddCallbackCustom(
|
|
43
|
-
ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED,
|
|
44
|
-
postPEffectUpdateReordered,
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function hasSubscriptions() {
|
|
49
|
-
return preItemPickupHasSubscriptions() || postItemPickupHasSubscriptions();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED
|
|
53
|
-
function postPEffectUpdateReordered(player: EntityPlayer) {
|
|
54
|
-
if (!hasSubscriptions()) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const pickingUpItem = defaultMapGetPlayer(
|
|
59
|
-
v.run.playersPickingUpItemMap,
|
|
60
|
-
player,
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
if (player.IsItemQueueEmpty()) {
|
|
64
|
-
queueEmpty(player, pickingUpItem);
|
|
65
|
-
// If a player enters a room with a trinket next to the entrance, the player will pick up the
|
|
66
|
-
// trinket, but it will not become queued (it will be deposited into their inventory
|
|
67
|
-
// immediately). Since we don't know what type of item the player is holding, don't account for
|
|
68
|
-
// this bug.
|
|
69
|
-
} else {
|
|
70
|
-
queueNotEmpty(player, pickingUpItem);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function queueEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
|
|
75
|
-
// eslint-disable-next-line isaacscript/strict-enums
|
|
76
|
-
if (pickingUpItem.itemType === ItemType.NULL || pickingUpItem.subType === 0) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
postItemPickupFire(player, pickingUpItem);
|
|
81
|
-
resetPickingUpItem(pickingUpItem);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function queueNotEmpty(player: EntityPlayer, pickingUpItem: PickingUpItem) {
|
|
85
|
-
const queuedItem = player.QueuedItem.Item;
|
|
86
|
-
if (queuedItem === undefined || queuedItem.Type === ItemType.NULL) {
|
|
87
|
-
// This should never happen, since the `EntityPlayer.IsItemQueueEmpty` method returned true.
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
queuedItem.Type !== pickingUpItem.itemType ||
|
|
93
|
-
queuedItem.ID !== pickingUpItem.subType
|
|
94
|
-
) {
|
|
95
|
-
// Record which item we are picking up.
|
|
96
|
-
pickingUpItem.itemType = queuedItem.Type;
|
|
97
|
-
pickingUpItem.subType = queuedItem.ID as CollectibleType | TrinketType;
|
|
98
|
-
|
|
99
|
-
preItemPickupFire(player, pickingUpItem);
|
|
100
|
-
}
|
|
101
|
-
}
|
package/callbacks/postAmbush.ts
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// This provides the logic for:
|
|
2
|
-
// - POST_AMBUSH_STARTED
|
|
3
|
-
// - POST_AMBUSH_FINISHED
|
|
4
|
-
|
|
5
|
-
import { ModCallback, RoomType } from "isaac-typescript-definitions";
|
|
6
|
-
import { game } from "../cachedClasses";
|
|
7
|
-
import { AmbushType } from "../enums/AmbushType";
|
|
8
|
-
import { saveDataManager } from "../features/saveDataManager/exports";
|
|
9
|
-
import { getRoomType } from "../functions/roomData";
|
|
10
|
-
import {
|
|
11
|
-
postAmbushFinishedFire,
|
|
12
|
-
postAmbushFinishedHasSubscriptions,
|
|
13
|
-
} from "./subscriptions/postAmbushFinished";
|
|
14
|
-
import {
|
|
15
|
-
postAmbushStartedFire,
|
|
16
|
-
postAmbushStartedHasSubscriptions,
|
|
17
|
-
} from "./subscriptions/postAmbushStarted";
|
|
18
|
-
|
|
19
|
-
const v = {
|
|
20
|
-
room: {
|
|
21
|
-
ambushActive: false,
|
|
22
|
-
ambushDone: false,
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/** @internal */
|
|
27
|
-
export function postAmbushCallbacksInit(mod: Mod): void {
|
|
28
|
-
saveDataManager("postAmbushCallbacks", v, hasSubscriptions);
|
|
29
|
-
|
|
30
|
-
mod.AddCallback(ModCallback.POST_UPDATE, postUpdate); // 1
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function hasSubscriptions() {
|
|
34
|
-
return (
|
|
35
|
-
postAmbushStartedHasSubscriptions() || postAmbushFinishedHasSubscriptions()
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// ModCallback.POST_UPDATE (1)
|
|
40
|
-
function postUpdate() {
|
|
41
|
-
if (!hasSubscriptions()) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const room = game.GetRoom();
|
|
46
|
-
|
|
47
|
-
if (!v.room.ambushActive) {
|
|
48
|
-
const ambushActive = room.IsAmbushActive();
|
|
49
|
-
if (ambushActive) {
|
|
50
|
-
v.room.ambushActive = true;
|
|
51
|
-
|
|
52
|
-
const ambushType = getAmbushType();
|
|
53
|
-
postAmbushStartedFire(ambushType);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (!v.room.ambushDone) {
|
|
58
|
-
const ambushDone = room.IsAmbushDone();
|
|
59
|
-
if (ambushDone) {
|
|
60
|
-
v.room.ambushDone = true;
|
|
61
|
-
|
|
62
|
-
const ambushType = getAmbushType();
|
|
63
|
-
postAmbushFinishedFire(ambushType);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function getAmbushType(): AmbushType {
|
|
69
|
-
const roomType = getRoomType();
|
|
70
|
-
return roomType === RoomType.BOSS_RUSH
|
|
71
|
-
? AmbushType.BOSS_RUSH
|
|
72
|
-
: AmbushType.CHALLENGE_ROOM;
|
|
73
|
-
}
|