isaacscript-common 4.0.1-dev.0 → 4.0.4
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/postCursedTeleport.lua +2 -1
- package/callbacks/postEsauJr.lua +2 -1
- package/callbacks/postFlip.lua +4 -3
- package/callbacks/postItemDischarged.lua +4 -3
- package/callbacks/postNewRoomEarly.lua +2 -1
- package/callbacks/postSacrifice.lua +3 -2
- package/callbacks/postTrinketBreak.lua +3 -2
- package/callbacks/reorderedCallbacks.lua +1 -0
- package/classes/ModUpgraded.d.ts +5 -1
- package/classes/ModUpgraded.lua +2 -2
- package/features/playerInventory.lua +1 -0
- package/functions/player.lua +9 -14
- 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 -183
- 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 -107
- package/callbacks/postFamiliarInitLate.ts +0 -36
- package/callbacks/postFamiliarStateChanged.ts +0 -43
- package/callbacks/postFlip.ts +0 -88
- 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 -149
- 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 -90
- 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 -62
- 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 -110
- package/callbacks/preBerserkDeath.ts +0 -49
- package/callbacks/preNewLevel.ts +0 -55
- package/callbacks/reorderedCallbacks.ts +0 -166
- 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 -77
- 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 -133
- 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 -1060
- 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
|
@@ -30,10 +30,11 @@ function hasSubscriptions(self)
|
|
|
30
30
|
end
|
|
31
31
|
function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _damageSource, _damageCountdownFrames)
|
|
32
32
|
if not hasSubscriptions(nil) then
|
|
33
|
-
return
|
|
33
|
+
return nil
|
|
34
34
|
end
|
|
35
35
|
incrementNumSacrifices(nil, damageFlags)
|
|
36
36
|
setDamageFrame(nil, tookDamage, damageFlags)
|
|
37
|
+
return nil
|
|
37
38
|
end
|
|
38
39
|
function setDamageFrame(self, tookDamage, damageFlags)
|
|
39
40
|
local gameFrameCount = game:GetFrameCount()
|
package/callbacks/postEsauJr.lua
CHANGED
|
@@ -52,11 +52,12 @@ function getPlayerWithControllerIndex(self, controllerIndex)
|
|
|
52
52
|
end
|
|
53
53
|
function useItemEsauJr(self, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
|
|
54
54
|
if not hasSubscriptions(nil) then
|
|
55
|
-
return
|
|
55
|
+
return nil
|
|
56
56
|
end
|
|
57
57
|
local gameFrameCount = game:GetFrameCount()
|
|
58
58
|
v.run.usedEsauJrFrame = gameFrameCount + 1
|
|
59
59
|
v.run.usedEsauJrControllerIndex = player.ControllerIndex
|
|
60
|
+
return nil
|
|
60
61
|
end
|
|
61
62
|
v = {run = {usedEsauJrFrame = nil, usedEsauJrControllerIndex = nil, usedEsauJrAtLeastOnce = false}}
|
|
62
63
|
---
|
package/callbacks/postFlip.lua
CHANGED
|
@@ -22,20 +22,21 @@ function hasSubscriptions(self)
|
|
|
22
22
|
end
|
|
23
23
|
function useItemFlip(self, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
|
|
24
24
|
if not hasSubscriptions(nil) then
|
|
25
|
-
return
|
|
25
|
+
return nil
|
|
26
26
|
end
|
|
27
27
|
if not isTaintedLazarus(nil, player) then
|
|
28
|
-
return
|
|
28
|
+
return nil
|
|
29
29
|
end
|
|
30
30
|
local newLazarus = getNewLazarus(nil, player)
|
|
31
31
|
if newLazarus == nil then
|
|
32
|
-
return
|
|
32
|
+
return nil
|
|
33
33
|
end
|
|
34
34
|
if not v.run.usedFlipAtLeastOnce then
|
|
35
35
|
v.run.usedFlipAtLeastOnce = true
|
|
36
36
|
postFirstFlipFire(nil, newLazarus)
|
|
37
37
|
end
|
|
38
38
|
postFlipFire(nil, newLazarus)
|
|
39
|
+
return nil
|
|
39
40
|
end
|
|
40
41
|
function getNewLazarus(self, oldLazarus)
|
|
41
42
|
local oldCharacter = oldLazarus:GetPlayerType()
|
|
@@ -65,17 +65,18 @@ function playerRecentlyCollidedWithBulb(self, player)
|
|
|
65
65
|
end
|
|
66
66
|
function preNPCCollisionSucker(self, npc, collider)
|
|
67
67
|
if not hasSubscriptions(nil) then
|
|
68
|
-
return
|
|
68
|
+
return nil
|
|
69
69
|
end
|
|
70
70
|
if npc.Variant ~= SuckerVariant.BULB then
|
|
71
|
-
return
|
|
71
|
+
return nil
|
|
72
72
|
end
|
|
73
73
|
local player = collider:ToPlayer()
|
|
74
74
|
if player == nil then
|
|
75
|
-
return
|
|
75
|
+
return nil
|
|
76
76
|
end
|
|
77
77
|
local gameFrameCount = game:GetFrameCount()
|
|
78
78
|
mapSetPlayer(nil, v.room.playersBulbLastCollisionFrame, player, gameFrameCount)
|
|
79
|
+
return nil
|
|
79
80
|
end
|
|
80
81
|
v = {
|
|
81
82
|
run = {
|
|
@@ -19,11 +19,11 @@ function hasSubscriptions(self)
|
|
|
19
19
|
end
|
|
20
20
|
function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _damageSource, _damageCountdownFrames)
|
|
21
21
|
if not hasSubscriptions(nil) then
|
|
22
|
-
return
|
|
22
|
+
return nil
|
|
23
23
|
end
|
|
24
24
|
local player = tookDamage:ToPlayer()
|
|
25
25
|
if player == nil then
|
|
26
|
-
return
|
|
26
|
+
return nil
|
|
27
27
|
end
|
|
28
28
|
local room = game:GetRoom()
|
|
29
29
|
local roomType = room:GetType()
|
|
@@ -33,6 +33,7 @@ function entityTakeDmgPlayer(self, tookDamage, _damageAmount, damageFlags, _dama
|
|
|
33
33
|
____v_level_0[____numSacrifices_1] = ____v_level_0[____numSacrifices_1] + 1
|
|
34
34
|
postSacrificeFire(nil, player, v.level.numSacrifices)
|
|
35
35
|
end
|
|
36
|
+
return nil
|
|
36
37
|
end
|
|
37
38
|
v = {level = {numSacrifices = 0}}
|
|
38
39
|
---
|
|
@@ -23,11 +23,11 @@ function hasSubscriptions(self)
|
|
|
23
23
|
end
|
|
24
24
|
function entityTakeDmgPlayer(self, tookDamage, _damageAmount, _damageFlags, _damageSource, _damageCountdownFrames)
|
|
25
25
|
if not hasSubscriptions(nil) then
|
|
26
|
-
return
|
|
26
|
+
return nil
|
|
27
27
|
end
|
|
28
28
|
local player = tookDamage:ToPlayer()
|
|
29
29
|
if player == nil then
|
|
30
|
-
return
|
|
30
|
+
return nil
|
|
31
31
|
end
|
|
32
32
|
local trinketMap = defaultMapGetPlayer(nil, v.run.playersTrinketMap, player)
|
|
33
33
|
for ____, trinketType in ipairs(TRINKETS_THAT_CAN_BREAK) do
|
|
@@ -46,6 +46,7 @@ function entityTakeDmgPlayer(self, tookDamage, _damageAmount, _damageFlags, _dam
|
|
|
46
46
|
end
|
|
47
47
|
::__continue8::
|
|
48
48
|
end
|
|
49
|
+
return nil
|
|
49
50
|
end
|
|
50
51
|
function postPEffectUpdateReordered(self, player)
|
|
51
52
|
if not hasSubscriptions(nil) then
|
package/classes/ModUpgraded.d.ts
CHANGED
|
@@ -16,7 +16,11 @@ export declare class ModUpgraded implements Mod {
|
|
|
16
16
|
AddCallback<T extends ModCallback>(modCallback: T, ...args: AddCallbackParameter[T]): void;
|
|
17
17
|
HasData(): boolean;
|
|
18
18
|
LoadData(): string;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* This method does not care about the tertiary argument. Regardless of the conditions of how you
|
|
21
|
+
* registered the callback, it will be removed.
|
|
22
|
+
*/
|
|
23
|
+
RemoveCallback<T extends ModCallback>(modCallback: T, callback: AddCallbackParameter[T][0]): void;
|
|
20
24
|
RemoveData(): void;
|
|
21
25
|
SaveData(data: string): void;
|
|
22
26
|
AddCallbackCustom<T extends ModCallbackCustom>(modCallbackCustom: T, ...args: AddCallbackParameterCustom[T]): void;
|
package/classes/ModUpgraded.lua
CHANGED
|
@@ -24,8 +24,8 @@ end
|
|
|
24
24
|
function ModUpgraded.prototype.LoadData(self)
|
|
25
25
|
return self.Mod:LoadData()
|
|
26
26
|
end
|
|
27
|
-
function ModUpgraded.prototype.RemoveCallback(self,
|
|
28
|
-
self.Mod:RemoveCallback(
|
|
27
|
+
function ModUpgraded.prototype.RemoveCallback(self, modCallback, callback)
|
|
28
|
+
self.Mod:RemoveCallback(modCallback, callback)
|
|
29
29
|
end
|
|
30
30
|
function ModUpgraded.prototype.RemoveData(self)
|
|
31
31
|
self.Mod:RemoveData()
|
package/functions/player.lua
CHANGED
|
@@ -203,11 +203,6 @@ function ____exports.addStat(self, player, cacheFlag, amount)
|
|
|
203
203
|
break
|
|
204
204
|
end
|
|
205
205
|
end
|
|
206
|
-
do
|
|
207
|
-
do
|
|
208
|
-
break
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
206
|
until true
|
|
212
207
|
end
|
|
213
208
|
function ____exports.addTrinketCostume(self, player, trinketType)
|
|
@@ -749,9 +744,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
749
744
|
itemPool:RemoveCollectible(collectibleType)
|
|
750
745
|
end
|
|
751
746
|
repeat
|
|
752
|
-
local
|
|
753
|
-
local
|
|
754
|
-
if
|
|
747
|
+
local ____switch123 = activeSlot
|
|
748
|
+
local ____cond123 = ____switch123 == ActiveSlot.PRIMARY
|
|
749
|
+
if ____cond123 then
|
|
755
750
|
do
|
|
756
751
|
if primaryCollectibleType ~= CollectibleType.NULL then
|
|
757
752
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -760,8 +755,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
760
755
|
break
|
|
761
756
|
end
|
|
762
757
|
end
|
|
763
|
-
|
|
764
|
-
if
|
|
758
|
+
____cond123 = ____cond123 or ____switch123 == ActiveSlot.SECONDARY
|
|
759
|
+
if ____cond123 then
|
|
765
760
|
do
|
|
766
761
|
if primaryCollectibleType ~= CollectibleType.NULL then
|
|
767
762
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -776,16 +771,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
776
771
|
break
|
|
777
772
|
end
|
|
778
773
|
end
|
|
779
|
-
|
|
780
|
-
if
|
|
774
|
+
____cond123 = ____cond123 or ____switch123 == ActiveSlot.POCKET
|
|
775
|
+
if ____cond123 then
|
|
781
776
|
do
|
|
782
777
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
783
778
|
player:SetActiveCharge(charge, activeSlot)
|
|
784
779
|
break
|
|
785
780
|
end
|
|
786
781
|
end
|
|
787
|
-
|
|
788
|
-
if
|
|
782
|
+
____cond123 = ____cond123 or ____switch123 == ActiveSlot.POCKET_SINGLE_USE
|
|
783
|
+
if ____cond123 then
|
|
789
784
|
do
|
|
790
785
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
791
786
|
break
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "isaacscript-common",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.4",
|
|
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.6"
|
|
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
|
-
}
|