isaacscript-common 1.2.156 → 1.2.159

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.
@@ -28,6 +28,9 @@ export declare function initCustomDoor(mod: Mod, effectVariant: int): void;
28
28
  * callback when the player enters a room that should have a custom door. (You could also call it
29
29
  * from another callback if you want the door to appear e.g. after clearing all enemies.)
30
30
  *
31
+ * Like other entities, the door is not persistent, so you must spawn it every time when re-entering
32
+ * the room.
33
+ *
31
34
  * Handle when a player enters the door by hooking the custom `MC_POST_CUSTOM_DOOR_ENTER` callback.
32
35
  *
33
36
  * The custom door is an `EntityEffect`. You can manually open or close the door by modifying its
@@ -1,6 +1,6 @@
1
1
  /// <reference types="isaac-typescript-definitions" />
2
2
  /**
3
- * When used on The Forgotten, switches to The Soul. When used on The Soul, switches to The
4
- * Forgotten. This takes 1 game frame to take effect.
3
+ * Helper function to see if the player is under the effects of A Pony or White Pony charge.
4
+ * Detecting this is difficult, as the temporary effect will disappear upon entering a new room.
5
5
  */
6
6
  export declare function isPonyActive(player: EntityPlayer): boolean;
@@ -40,9 +40,14 @@ function checkExecuteQueuedFunctions(self, frameCount, functionTuples)
40
40
  end
41
41
  end
42
42
  local FEATURE_NAME = "run in N frames"
43
- v = {dontSave = true, run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}}}
43
+ v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}}}
44
44
  function ____exports.runInNFramesInit(self, mod)
45
- saveDataManager(nil, "runInNFrames", v)
45
+ saveDataManager(
46
+ nil,
47
+ "runInNFrames",
48
+ v,
49
+ function() return false end
50
+ )
46
51
  mod:AddCallback(ModCallbacks.MC_POST_UPDATE, postUpdate)
47
52
  mod:AddCallback(ModCallbacks.MC_POST_RENDER, postRender)
48
53
  end
@@ -61,17 +61,15 @@ import { SaveData } from "../../types/private/SaveData";
61
61
  * data manager cannot do this on its own because it cannot know when your mod features are finished
62
62
  * initializing.)
63
63
  *
64
- * Finally, some features may have variables that need to be automatically reset per run/level, but
65
- * not saved to disk on game exit. (For example, if they contain functions or other non-serializable
66
- * data.) For these cases, set a special key of "dontSave" alongside "run", "level", and so forth.
67
- *
68
64
  * @param key The name of the file or feature that is submitting data to be managed by the save data
69
65
  * manager. The save data manager will throw an error if the key is already registered.
70
66
  * @param saveData An object that corresponds to the `SaveData` interface. The object is
71
67
  * conventionally called "v" for brevity (which is short for "local variables").
72
- * @param conditionalFunc An optional function to run upon saving this key to disk. If the function
73
- * returns false, the key will not be written to disk. This allows mod features to avoid cluttering
74
- * the "save#.dat" file with unnecessary keys.
68
+ * @param conditionalFunc An optional function to run upon saving this key to disk. For example,
69
+ * this allows features to only save data to disk if the feature is enabled. Specify a value of
70
+ * `() => false` to completely disable saving this feature to disk. This is useful if you are using
71
+ * data that is not serializable, or you want to use the save data manager to automatically reset
72
+ * variables on run/level/room, but not clutter the the "save#.dat" file with unnecessary keys.
75
73
  */
76
74
  export declare function saveDataManager(key: string, saveData: SaveData, conditionalFunc?: () => boolean): void;
77
75
  /**
@@ -29,7 +29,7 @@ function ____exports.saveDataManager(self, key, saveData, conditionalFunc)
29
29
  saveDataMap[key] = saveData
30
30
  local saveDataKeys = __TS__ObjectKeys(saveData)
31
31
  if #saveDataKeys == 1 and saveDataKeys[1] == "room" then
32
- saveData.dontSave = true
32
+ conditionalFunc = function() return false end
33
33
  end
34
34
  local saveDataTable = saveData
35
35
  local saveDataTableCopy = deepCopy(nil, saveDataTable, SerializationType.NONE, key)
@@ -17,9 +17,6 @@ function getAllSaveDataToWriteToDisk(self, saveDataMap, saveDataConditionalFuncM
17
17
  local allSaveData = {}
18
18
  for subscriberName, saveData in pairs(saveDataMap) do
19
19
  do
20
- if saveData.dontSave ~= nil then
21
- goto __continue4
22
- end
23
20
  local conditionalFunc = saveDataConditionalFuncMap:get(subscriberName)
24
21
  if conditionalFunc ~= nil then
25
22
  local shouldSave = conditionalFunc(nil)
@@ -0,0 +1,13 @@
1
+ /// <reference types="isaac-typescript-definitions" />
2
+ /**
3
+ * Helper function to get the other version of Tainted Lazarus.
4
+ *
5
+ * - On Tainted Lazarus, returns the player object for Dead Tainted Lazarus.
6
+ * - On Dead Tainted Lazarus, returns the player object for Tainted Lazarus.
7
+ * - Returns undefined if player object retrieval failed for any reason.
8
+ *
9
+ * If you call the `EntityPlayer.Exists` method on the returned object, it will return false.
10
+ * However, you can still call the other methods like you normally would (e.g.
11
+ * `EntityPlayer.AddCollectible`).
12
+ */
13
+ export declare function getTaintedLazarusSubPlayer(player: EntityPlayer): EntityPlayer | undefined;
@@ -0,0 +1,72 @@
1
+ --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
+ local ____lualib = require("lualib_bundle")
3
+ local Map = ____lualib.Map
4
+ local __TS__New = ____lualib.__TS__New
5
+ local __TS__ArrayPush = ____lualib.__TS__ArrayPush
6
+ local __TS__ArrayShift = ____lualib.__TS__ArrayShift
7
+ local ____exports = {}
8
+ local postPlayerInit, checkDequeue, v
9
+ local ____featuresInitialized = require("featuresInitialized")
10
+ local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
11
+ local ____exports = require("features.saveDataManager.exports")
12
+ local saveDataManager = ____exports.saveDataManager
13
+ function postPlayerInit(self, player)
14
+ local entityPtr = EntityPtr(player)
15
+ local character = player:GetPlayerType()
16
+ if character == PlayerType.PLAYER_LAZARUS_B then
17
+ __TS__ArrayPush(v.run.queuedTaintedLazarus, entityPtr)
18
+ elseif character == PlayerType.PLAYER_LAZARUS2_B then
19
+ __TS__ArrayPush(v.run.queuedDeadTaintedLazarus, entityPtr)
20
+ else
21
+ return
22
+ end
23
+ checkDequeue(nil)
24
+ end
25
+ function checkDequeue(self)
26
+ if #v.run.queuedTaintedLazarus == 0 or #v.run.queuedDeadTaintedLazarus == 0 then
27
+ return
28
+ end
29
+ local taintedLazarusPtr = __TS__ArrayShift(v.run.queuedTaintedLazarus)
30
+ local deadTaintedLazarusPtr = __TS__ArrayShift(v.run.queuedDeadTaintedLazarus)
31
+ if taintedLazarusPtr == nil or deadTaintedLazarusPtr == nil then
32
+ return
33
+ end
34
+ local taintedLazarus = taintedLazarusPtr.Ref
35
+ local deadTaintedLazarus = deadTaintedLazarusPtr.Ref
36
+ if taintedLazarus == nil or deadTaintedLazarus == nil then
37
+ return
38
+ end
39
+ local taintedLazarusPtrHash = GetPtrHash(taintedLazarus)
40
+ local deadTaintedLazarusPtrHash = GetPtrHash(deadTaintedLazarus)
41
+ v.run.subPlayerMap:set(taintedLazarusPtrHash, deadTaintedLazarusPtr)
42
+ v.run.subPlayerMap:set(deadTaintedLazarusPtrHash, taintedLazarusPtr)
43
+ end
44
+ local FEATURE_NAME = "Tainted Lazarus entity finder"
45
+ v = {run = {
46
+ queuedTaintedLazarus = {},
47
+ queuedDeadTaintedLazarus = {},
48
+ subPlayerMap = __TS__New(Map)
49
+ }}
50
+ function ____exports.taintedLazarusPlayersInit(self, mod)
51
+ saveDataManager(
52
+ nil,
53
+ "taintedLazarusPlayers",
54
+ v,
55
+ function() return false end
56
+ )
57
+ mod:AddCallback(ModCallbacks.MC_POST_PLAYER_INIT, postPlayerInit)
58
+ end
59
+ function ____exports.getTaintedLazarusSubPlayer(self, player)
60
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
61
+ local ptrHash = GetPtrHash(player)
62
+ local entityPtr = v.run.subPlayerMap:get(ptrHash)
63
+ if entityPtr == nil then
64
+ return nil
65
+ end
66
+ local entity = entityPtr.Ref
67
+ if entity == nil then
68
+ return nil
69
+ end
70
+ return entity:ToPlayer()
71
+ end
72
+ return ____exports
@@ -15,7 +15,7 @@ export declare function logAllDamageFlags(this: void, flags: int): void;
15
15
  /** Helper function for printing out every entity flag that is turned on. Useful when debugging. */
16
16
  export declare function logAllEntityFlags(this: void, flags: int): void;
17
17
  /** Helper function for printing out every flag that is turned on. Useful when debugging. */
18
- export declare function logAllFlags(this: void, flags: int, flagEnum: LuaTable, description?: string): void;
18
+ export declare function logAllFlags(this: void, flags: int, flagEnum?: LuaTable, description?: string): void;
19
19
  /**
20
20
  * Helper function for printing out every game state flag that is turned on. Useful when debugging.
21
21
  */
@@ -62,13 +62,29 @@ function ____exports.logAllFlags(flags, flagEnum, description)
62
62
  if description ~= "" then
63
63
  description = description .. " "
64
64
  end
65
- ____exports.log(("Logging all " .. description) .. "flags:")
65
+ if flagEnum == nil then
66
+ flagEnum = {}
67
+ do
68
+ local i = 0
69
+ while i <= 62 do
70
+ flagEnum["1 << " .. tostring(i)] = 1 << i
71
+ i = i + 1
72
+ end
73
+ end
74
+ end
75
+ ____exports.log(((("Logging all " .. description) .. "flags for value ") .. tostring(flags)) .. ":")
66
76
  local hasNoFlags = true
67
77
  for key, value in pairs(flagEnum) do
68
- if hasFlag(nil, flags, value) then
69
- ____exports.log((((" Has flag: " .. tostring(key)) .. " (") .. tostring(value)) .. ")")
70
- hasNoFlags = false
78
+ do
79
+ if type(value) ~= "number" then
80
+ goto __continue13
81
+ end
82
+ if hasFlag(nil, flags, value) then
83
+ ____exports.log((((" Has flag: " .. tostring(key)) .. " (") .. tostring(value)) .. ")")
84
+ hasNoFlags = false
85
+ end
71
86
  end
87
+ ::__continue13::
72
88
  end
73
89
  if hasNoFlags then
74
90
  ____exports.log(" n/a (no flags)")
@@ -80,17 +80,13 @@ function ____exports.getPlayerIndex(self, player, differentiateForgottenAndSoul)
80
80
  if differentiateForgottenAndSoul == nil then
81
81
  differentiateForgottenAndSoul = false
82
82
  end
83
- local character = player:GetPlayerType()
84
- local isSubPlayer = player:IsSubPlayer() and character ~= PlayerType.PLAYER_LAZARUS2_B
85
- local ____isSubPlayer_0
83
+ local playerToUse = player
84
+ local isSubPlayer = player:IsSubPlayer()
86
85
  if isSubPlayer then
87
- ____isSubPlayer_0 = ____exports.getSubPlayerParent(nil, player)
88
- else
89
- ____isSubPlayer_0 = player
90
- end
91
- local playerToUse = ____isSubPlayer_0
92
- if playerToUse == nil then
93
- error("Failed to get the sub-player parent when determining the index for the player with InitSeed: " .. tostring(player.InitSeed))
86
+ local playerParent = ____exports.getSubPlayerParent(nil, player)
87
+ if playerParent ~= nil then
88
+ playerToUse = playerParent
89
+ end
94
90
  end
95
91
  local collectibleType = getPlayerIndexCollectibleType(nil, player, differentiateForgottenAndSoul)
96
92
  local collectibleRNG = playerToUse:GetCollectibleRNG(collectibleType)
@@ -100,15 +96,15 @@ end
100
96
  function getPlayerIndexCollectibleType(self, player, differentiateForgottenAndSoul)
101
97
  local character = player:GetPlayerType()
102
98
  repeat
103
- local ____switch71 = character
104
- local ____cond71 = ____switch71 == PlayerType.PLAYER_THESOUL
105
- if ____cond71 then
99
+ local ____switch72 = character
100
+ local ____cond72 = ____switch72 == PlayerType.PLAYER_THESOUL
101
+ if ____cond72 then
106
102
  do
107
103
  return differentiateForgottenAndSoul and CollectibleType.COLLECTIBLE_SPOON_BENDER or DEFAULT_COLLECTIBLE_TYPE
108
104
  end
109
105
  end
110
- ____cond71 = ____cond71 or ____switch71 == PlayerType.PLAYER_LAZARUS2_B
111
- if ____cond71 then
106
+ ____cond72 = ____cond72 or ____switch72 == PlayerType.PLAYER_LAZARUS2_B
107
+ if ____cond72 then
112
108
  do
113
109
  return CollectibleType.COLLECTIBLE_INNER_EYE
114
110
  end
@@ -525,13 +521,13 @@ function ____exports.canTakeFreeDevilDeals(self, player)
525
521
  end
526
522
  function ____exports.isTainted(self, player)
527
523
  local character = player:GetPlayerType()
528
- local ____isVanillaCharacter_result_1
524
+ local ____isVanillaCharacter_result_0
529
525
  if ____exports.isVanillaCharacter(nil, player) then
530
- ____isVanillaCharacter_result_1 = character >= PlayerType.PLAYER_ISAAC_B
526
+ ____isVanillaCharacter_result_0 = character >= PlayerType.PLAYER_ISAAC_B
531
527
  else
532
- ____isVanillaCharacter_result_1 = isTaintedModded(nil, player)
528
+ ____isVanillaCharacter_result_0 = isTaintedModded(nil, player)
533
529
  end
534
- return ____isVanillaCharacter_result_1
530
+ return ____isVanillaCharacter_result_0
535
531
  end
536
532
  function ____exports.isTaintedLazarus(self, player)
537
533
  local character = player:GetPlayerType()
@@ -575,9 +571,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
575
571
  itemPool:RemoveCollectible(collectibleType)
576
572
  end
577
573
  repeat
578
- local ____switch125 = activeSlot
579
- local ____cond125 = ____switch125 == ActiveSlot.SLOT_PRIMARY
580
- if ____cond125 then
574
+ local ____switch126 = activeSlot
575
+ local ____cond126 = ____switch126 == ActiveSlot.SLOT_PRIMARY
576
+ if ____cond126 then
581
577
  do
582
578
  if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
583
579
  player:RemoveCollectible(primaryCollectibleType)
@@ -586,8 +582,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
586
582
  break
587
583
  end
588
584
  end
589
- ____cond125 = ____cond125 or ____switch125 == ActiveSlot.SLOT_SECONDARY
590
- if ____cond125 then
585
+ ____cond126 = ____cond126 or ____switch126 == ActiveSlot.SLOT_SECONDARY
586
+ if ____cond126 then
591
587
  do
592
588
  if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
593
589
  player:RemoveCollectible(primaryCollectibleType)
@@ -602,16 +598,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
602
598
  break
603
599
  end
604
600
  end
605
- ____cond125 = ____cond125 or ____switch125 == ActiveSlot.SLOT_POCKET
606
- if ____cond125 then
601
+ ____cond126 = ____cond126 or ____switch126 == ActiveSlot.SLOT_POCKET
602
+ if ____cond126 then
607
603
  do
608
604
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
609
605
  player:SetActiveCharge(charge, activeSlot)
610
606
  break
611
607
  end
612
608
  end
613
- ____cond125 = ____cond125 or ____switch125 == ActiveSlot.SLOT_POCKET2
614
- if ____cond125 then
609
+ ____cond126 = ____cond126 or ____switch126 == ActiveSlot.SLOT_POCKET2
610
+ if ____cond126 then
615
611
  do
616
612
  player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
617
613
  break
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export { preventCollectibleRotate } from "./features/preventCollectibleRotate";
14
14
  export { runInNGameFrames, runInNRenderFrames, runNextGameFrame, runNextRenderFrame, } from "./features/runInNFrames";
15
15
  export * from "./features/saveDataManager/exports";
16
16
  export { hasSirenStolenFamiliar, setFamiliarNoSirenSteal, } from "./features/sirenHelpers";
17
+ export { getTaintedLazarusSubPlayer } from "./features/taintedLazarusPlayers";
17
18
  export * from "./functions/array";
18
19
  export * from "./functions/bitwise";
19
20
  export * from "./functions/cards";
package/dist/index.lua CHANGED
@@ -126,6 +126,11 @@ do
126
126
  ____exports.hasSirenStolenFamiliar = hasSirenStolenFamiliar
127
127
  ____exports.setFamiliarNoSirenSteal = setFamiliarNoSirenSteal
128
128
  end
129
+ do
130
+ local ____taintedLazarusPlayers = require("features.taintedLazarusPlayers")
131
+ local getTaintedLazarusSubPlayer = ____taintedLazarusPlayers.getTaintedLazarusSubPlayer
132
+ ____exports.getTaintedLazarusSubPlayer = getTaintedLazarusSubPlayer
133
+ end
129
134
  do
130
135
  local ____export = require("functions.array")
131
136
  for ____exportKey, ____exportValue in pairs(____export) do
@@ -18,10 +18,6 @@ local ____postFamiliarInitLate = require("callbacks.subscriptions.postFamiliarIn
18
18
  local postFamiliarInitLateRegister = ____postFamiliarInitLate.postFamiliarInitLateRegister
19
19
  local ____postFirstEsauJr = require("callbacks.subscriptions.postFirstEsauJr")
20
20
  local postFirstEsauJrRegister = ____postFirstEsauJr.postFirstEsauJrRegister
21
- local ____postFirstFlip = require("callbacks.subscriptions.postFirstFlip")
22
- local postFirstFlipRegister = ____postFirstFlip.postFirstFlipRegister
23
- local ____postFlip = require("callbacks.subscriptions.postFlip")
24
- local postFlipRegister = ____postFlip.postFlipRegister
25
21
  local ____postGameStartedReordered = require("callbacks.subscriptions.postGameStartedReordered")
26
22
  local postGameStartedReorderedRegister = ____postGameStartedReordered.postGameStartedReorderedRegister
27
23
  local ____postGridEntityBroken = require("callbacks.subscriptions.postGridEntityBroken")
@@ -134,8 +130,6 @@ ____exports.CALLBACK_REGISTER_FUNCTIONS = {
134
130
  [ModCallbacksCustom.MC_PRE_BERSERK_DEATH] = preBerserkDeathRegister,
135
131
  [ModCallbacksCustom.MC_PRE_CUSTOM_REVIVE] = preCustomReviveRegister,
136
132
  [ModCallbacksCustom.MC_POST_CUSTOM_REVIVE] = postCustomReviveRegister,
137
- [ModCallbacksCustom.MC_POST_FLIP] = postFlipRegister,
138
- [ModCallbacksCustom.MC_POST_FIRST_FLIP] = postFirstFlipRegister,
139
133
  [ModCallbacksCustom.MC_POST_ESAU_JR] = postEsauJrRegister,
140
134
  [ModCallbacksCustom.MC_POST_FIRST_ESAU_JR] = postFirstEsauJrRegister,
141
135
  [ModCallbacksCustom.MC_POST_TRANSFORMATION] = postTransformationRegister,
@@ -8,8 +8,6 @@ import { PostEffectInitLateCallbackType } from "../callbacks/subscriptions/postE
8
8
  import { PostEsauJrCallbackType } from "../callbacks/subscriptions/postEsauJr";
9
9
  import { PostFamiliarInitLateCallbackType } from "../callbacks/subscriptions/postFamiliarInitLate";
10
10
  import { PostFirstEsauJrCallbackType } from "../callbacks/subscriptions/postFirstEsauJr";
11
- import { PostFirstFlipCallbackType } from "../callbacks/subscriptions/postFirstFlip";
12
- import { PostFlipCallbackType } from "../callbacks/subscriptions/postFlip";
13
11
  import { PostGameStartedReorderedCallbackType } from "../callbacks/subscriptions/postGameStartedReordered";
14
12
  import { PostGridEntityBrokenCallbackType } from "../callbacks/subscriptions/postGridEntityBroken";
15
13
  import { PostGridEntityCollisionCallbackType } from "../callbacks/subscriptions/postGridEntityCollision";
@@ -161,10 +159,6 @@ export interface AddCallbackParametersCustom {
161
159
  callback: PostCustomReviveCallbackType,
162
160
  revivalType?: int
163
161
  ];
164
- [ModCallbacksCustom.MC_POST_FLIP]: [callback: PostFlipCallbackType];
165
- [ModCallbacksCustom.MC_POST_FIRST_FLIP]: [
166
- callback: PostFirstFlipCallbackType
167
- ];
168
162
  [ModCallbacksCustom.MC_POST_ESAU_JR]: [callback: PostEsauJrCallbackType];
169
163
  [ModCallbacksCustom.MC_POST_FIRST_ESAU_JR]: [
170
164
  callback: PostFirstEsauJrCallbackType
@@ -35,26 +35,24 @@ export declare enum ModCallbacksCustom {
35
35
  MC_PRE_BERSERK_DEATH = 26,
36
36
  MC_PRE_CUSTOM_REVIVE = 27,
37
37
  MC_POST_CUSTOM_REVIVE = 28,
38
- MC_POST_FLIP = 29,
39
- MC_POST_FIRST_FLIP = 30,
40
- MC_POST_ESAU_JR = 31,
41
- MC_POST_FIRST_ESAU_JR = 32,
42
- MC_POST_TRANSFORMATION = 33,
43
- MC_POST_PURCHASE = 34,
44
- MC_POST_SACRIFICE = 35,
45
- MC_POST_CURSED_TELEPORT = 36,
46
- MC_POST_TRINKET_BREAK = 37,
47
- MC_POST_SLOT_INIT = 38,
48
- MC_POST_SLOT_UPDATE = 39,
49
- MC_POST_SLOT_RENDER = 40,
50
- MC_POST_SLOT_ANIMATION_CHANGED = 41,
51
- MC_POST_SLOT_DESTROYED = 42,
52
- MC_POST_GRID_ENTITY_INIT = 43,
53
- MC_POST_GRID_ENTITY_UPDATE = 44,
54
- MC_POST_GRID_ENTITY_REMOVE = 45,
55
- MC_POST_GRID_ENTITY_STATE_CHANGE = 46,
56
- MC_POST_GRID_ENTITY_BROKEN = 47,
57
- MC_POST_GRID_ENTITY_COLLISION = 48,
58
- MC_POST_BONE_SWING = 49,
59
- MC_POST_CUSTOM_DOOR_ENTER = 50
38
+ MC_POST_ESAU_JR = 29,
39
+ MC_POST_FIRST_ESAU_JR = 30,
40
+ MC_POST_TRANSFORMATION = 31,
41
+ MC_POST_PURCHASE = 32,
42
+ MC_POST_SACRIFICE = 33,
43
+ MC_POST_CURSED_TELEPORT = 34,
44
+ MC_POST_TRINKET_BREAK = 35,
45
+ MC_POST_SLOT_INIT = 36,
46
+ MC_POST_SLOT_UPDATE = 37,
47
+ MC_POST_SLOT_RENDER = 38,
48
+ MC_POST_SLOT_ANIMATION_CHANGED = 39,
49
+ MC_POST_SLOT_DESTROYED = 40,
50
+ MC_POST_GRID_ENTITY_INIT = 41,
51
+ MC_POST_GRID_ENTITY_UPDATE = 42,
52
+ MC_POST_GRID_ENTITY_REMOVE = 43,
53
+ MC_POST_GRID_ENTITY_STATE_CHANGE = 44,
54
+ MC_POST_GRID_ENTITY_BROKEN = 45,
55
+ MC_POST_GRID_ENTITY_COLLISION = 46,
56
+ MC_POST_BONE_SWING = 47,
57
+ MC_POST_CUSTOM_DOOR_ENTER = 48
60
58
  }
@@ -59,48 +59,44 @@ ____exports.ModCallbacksCustom.MC_PRE_CUSTOM_REVIVE = 27
59
59
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_PRE_CUSTOM_REVIVE] = "MC_PRE_CUSTOM_REVIVE"
60
60
  ____exports.ModCallbacksCustom.MC_POST_CUSTOM_REVIVE = 28
61
61
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_CUSTOM_REVIVE] = "MC_POST_CUSTOM_REVIVE"
62
- ____exports.ModCallbacksCustom.MC_POST_FLIP = 29
63
- ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_FLIP] = "MC_POST_FLIP"
64
- ____exports.ModCallbacksCustom.MC_POST_FIRST_FLIP = 30
65
- ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_FIRST_FLIP] = "MC_POST_FIRST_FLIP"
66
- ____exports.ModCallbacksCustom.MC_POST_ESAU_JR = 31
62
+ ____exports.ModCallbacksCustom.MC_POST_ESAU_JR = 29
67
63
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_ESAU_JR] = "MC_POST_ESAU_JR"
68
- ____exports.ModCallbacksCustom.MC_POST_FIRST_ESAU_JR = 32
64
+ ____exports.ModCallbacksCustom.MC_POST_FIRST_ESAU_JR = 30
69
65
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_FIRST_ESAU_JR] = "MC_POST_FIRST_ESAU_JR"
70
- ____exports.ModCallbacksCustom.MC_POST_TRANSFORMATION = 33
66
+ ____exports.ModCallbacksCustom.MC_POST_TRANSFORMATION = 31
71
67
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_TRANSFORMATION] = "MC_POST_TRANSFORMATION"
72
- ____exports.ModCallbacksCustom.MC_POST_PURCHASE = 34
68
+ ____exports.ModCallbacksCustom.MC_POST_PURCHASE = 32
73
69
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_PURCHASE] = "MC_POST_PURCHASE"
74
- ____exports.ModCallbacksCustom.MC_POST_SACRIFICE = 35
70
+ ____exports.ModCallbacksCustom.MC_POST_SACRIFICE = 33
75
71
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SACRIFICE] = "MC_POST_SACRIFICE"
76
- ____exports.ModCallbacksCustom.MC_POST_CURSED_TELEPORT = 36
72
+ ____exports.ModCallbacksCustom.MC_POST_CURSED_TELEPORT = 34
77
73
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_CURSED_TELEPORT] = "MC_POST_CURSED_TELEPORT"
78
- ____exports.ModCallbacksCustom.MC_POST_TRINKET_BREAK = 37
74
+ ____exports.ModCallbacksCustom.MC_POST_TRINKET_BREAK = 35
79
75
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_TRINKET_BREAK] = "MC_POST_TRINKET_BREAK"
80
- ____exports.ModCallbacksCustom.MC_POST_SLOT_INIT = 38
76
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_INIT = 36
81
77
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_INIT] = "MC_POST_SLOT_INIT"
82
- ____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE = 39
78
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE = 37
83
79
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE] = "MC_POST_SLOT_UPDATE"
84
- ____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER = 40
80
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER = 38
85
81
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER] = "MC_POST_SLOT_RENDER"
86
- ____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED = 41
82
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED = 39
87
83
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED] = "MC_POST_SLOT_ANIMATION_CHANGED"
88
- ____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED = 42
84
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED = 40
89
85
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED] = "MC_POST_SLOT_DESTROYED"
90
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT = 43
86
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT = 41
91
87
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT] = "MC_POST_GRID_ENTITY_INIT"
92
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE = 44
88
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE = 42
93
89
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE] = "MC_POST_GRID_ENTITY_UPDATE"
94
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE = 45
90
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE = 43
95
91
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE] = "MC_POST_GRID_ENTITY_REMOVE"
96
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE = 46
92
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE = 44
97
93
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE] = "MC_POST_GRID_ENTITY_STATE_CHANGE"
98
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN = 47
94
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN = 45
99
95
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN] = "MC_POST_GRID_ENTITY_BROKEN"
100
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION = 48
96
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION = 46
101
97
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION] = "MC_POST_GRID_ENTITY_COLLISION"
102
- ____exports.ModCallbacksCustom.MC_POST_BONE_SWING = 49
98
+ ____exports.ModCallbacksCustom.MC_POST_BONE_SWING = 47
103
99
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_BONE_SWING] = "MC_POST_BONE_SWING"
104
- ____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER = 50
100
+ ____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER = 48
105
101
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER] = "MC_POST_CUSTOM_DOOR_ENTER"
106
102
  return ____exports
@@ -3,7 +3,6 @@ export interface SaveData {
3
3
  run?: Record<string, unknown>;
4
4
  level?: Record<string, unknown>;
5
5
  room?: Record<string, unknown>;
6
- dontSave?: boolean;
7
6
  }
8
7
  export interface SaveDataWithoutRoom {
9
8
  persistent?: Record<string, unknown>;
@@ -21,8 +21,6 @@ local ____postEsauJr = require("callbacks.postEsauJr")
21
21
  local postEsauJrCallbacksInit = ____postEsauJr.postEsauJrCallbacksInit
22
22
  local ____postFamiliarInitLate = require("callbacks.postFamiliarInitLate")
23
23
  local postFamiliarInitLateCallbackInit = ____postFamiliarInitLate.postFamiliarInitLateCallbackInit
24
- local ____postFlip = require("callbacks.postFlip")
25
- local postFlipCallbacksInit = ____postFlip.postFlipCallbacksInit
26
24
  local ____postGridEntity = require("callbacks.postGridEntity")
27
25
  local postGridEntityCallbacksInit = ____postGridEntity.postGridEntityCallbacksInit
28
26
  local ____postGridEntityCollision = require("callbacks.postGridEntityCollision")
@@ -95,6 +93,8 @@ local ____main = require("features.saveDataManager.main")
95
93
  local saveDataManagerInit = ____main.saveDataManagerInit
96
94
  local ____sirenHelpers = require("features.sirenHelpers")
97
95
  local sirenHelpersInit = ____sirenHelpers.sirenHelpersInit
96
+ local ____taintedLazarusPlayers = require("features.taintedLazarusPlayers")
97
+ local taintedLazarusPlayersInit = ____taintedLazarusPlayers.taintedLazarusPlayersInit
98
98
  local ____featuresInitialized = require("featuresInitialized")
99
99
  local areFeaturesInitialized = ____featuresInitialized.areFeaturesInitialized
100
100
  local setFeaturesInitialized = ____featuresInitialized.setFeaturesInitialized
@@ -124,7 +124,6 @@ function initCustomCallbacks(self, mod)
124
124
  postPlayerFatalDamageCallbackInit(nil, mod)
125
125
  preBerserkDeathCallbackInit(nil, mod)
126
126
  customReviveCallbacksInit(nil, mod)
127
- postFlipCallbacksInit(nil, mod)
128
127
  postEsauJrCallbacksInit(nil, mod)
129
128
  postTransformationCallbackInit(nil, mod)
130
129
  postPurchaseCallbackInit(nil, mod)
@@ -149,6 +148,7 @@ function initFeatures(self, mod)
149
148
  sirenHelpersInit(nil, mod)
150
149
  isPonyActiveInit(nil, mod)
151
150
  playerInventoryInit(nil, mod)
151
+ taintedLazarusPlayersInit(nil, mod)
152
152
  end
153
153
  function ____exports.upgradeMod(self, modVanilla, verbose)
154
154
  if verbose == nil then
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "1.2.156",
3
+ "version": "1.2.159",
4
4
  "description": "Helper functions for IsaacScript mods",
5
5
  "keywords": [
6
6
  "isaac",