isaacscript-common 13.3.4 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +576 -401
- package/dist/isaacscript-common.lua +14654 -13908
- package/dist/src/callbacks/postAmbush.d.ts.map +1 -1
- package/dist/src/callbacks/postAmbush.lua +7 -12
- package/dist/src/callbacks/postBombExploded.lua +3 -3
- package/dist/src/callbacks/postRoomClearChanged.d.ts.map +1 -1
- package/dist/src/callbacks/postRoomClearChanged.lua +3 -5
- package/dist/src/callbacks/subscriptions/{postBoneExploded.d.ts → postBombExploded.d.ts} +1 -1
- package/dist/src/callbacks/subscriptions/{postBoneExploded.d.ts.map → postBombExploded.d.ts.map} +1 -1
- package/dist/src/callbacks/subscriptions/{postBoneExploded.lua → postBombExploded.lua} +0 -0
- package/dist/src/callbacks/subscriptions/postCollectibleEmpty.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleEmpty.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleInitFirst.d.ts +1 -1
- package/dist/src/callbacks/subscriptions/postCollectibleInitFirst.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCursedTeleport.d.ts +4 -2
- package/dist/src/callbacks/subscriptions/postCursedTeleport.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postCursedTeleport.lua +13 -1
- package/dist/src/callbacks/subscriptions/postHolyMantleRemoved.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postHolyMantleRemoved.lua +2 -2
- package/dist/src/callbacks/subscriptions/postPEffectUpdateReordered.d.ts.map +1 -1
- package/dist/src/callbacks/subscriptions/postPEffectUpdateReordered.lua +2 -2
- package/dist/src/classes/ModUpgraded.d.ts +9 -5
- package/dist/src/classes/ModUpgraded.d.ts.map +1 -1
- package/dist/src/classes/ModUpgraded.lua +101 -14
- package/dist/src/classes/callbacks/PostAmbushFinished.d.ts +12 -0
- package/dist/src/classes/callbacks/PostAmbushFinished.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostAmbushFinished.lua +37 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.d.ts +12 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostAmbushStarted.lua +37 -0
- package/dist/src/classes/callbacks/PostBombExploded.d.ts +7 -0
- package/dist/src/classes/callbacks/PostBombExploded.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBombExploded.lua +24 -0
- package/dist/src/classes/callbacks/PostBombInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostBombInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBombInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostBoneSwing.d.ts +15 -0
- package/dist/src/classes/callbacks/PostBoneSwing.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostBoneSwing.lua +43 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts +17 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCollectibleEmpty.lua +47 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts +13 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCollectibleInitFirst.lua +32 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.d.ts +21 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostCursedTeleport.lua +113 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts +12 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostKnifeInitLate.lua +27 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts +14 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostNewRoomEarly.lua +65 -0
- package/dist/src/classes/callbacks/PostPitRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostPitRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostPitRender.lua +24 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts +13 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostRoomClearChanged.lua +33 -0
- package/dist/src/classes/callbacks/PostSpikesRender.d.ts +7 -0
- package/dist/src/classes/callbacks/PostSpikesRender.d.ts.map +1 -0
- package/dist/src/classes/callbacks/PostSpikesRender.lua +24 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackAmbush.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackBomb.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackCollectible.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackKnife.lua +19 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPit.lua +20 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackPlayer.lua +23 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts +10 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.d.ts.map +1 -0
- package/dist/src/classes/callbacks/validation/CustomCallbackSpikes.lua +20 -0
- package/dist/src/classes/private/CustomCallback.d.ts +32 -0
- package/dist/src/classes/private/CustomCallback.d.ts.map +1 -0
- package/dist/src/classes/private/CustomCallback.lua +53 -0
- package/dist/src/core/upgradeMod.d.ts.map +1 -1
- package/dist/src/core/upgradeMod.lua +16 -0
- package/dist/src/enums/IsaacScriptCommonFeature.d.ts +35 -0
- package/dist/src/enums/IsaacScriptCommonFeature.d.ts.map +1 -0
- package/dist/src/enums/IsaacScriptCommonFeature.lua +35 -0
- package/dist/src/enums/LadderSubTypeCustom.d.ts +17 -0
- package/dist/src/enums/LadderSubTypeCustom.d.ts.map +1 -0
- package/dist/src/enums/LadderSubTypeCustom.lua +19 -0
- package/dist/src/enums/ModCallbackCustom.d.ts +399 -327
- package/dist/src/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/src/enums/ModCallbackCustom.lua +85 -87
- package/dist/src/enums/ModCallbackCustom2.d.ts +17 -0
- package/dist/src/enums/ModCallbackCustom2.d.ts.map +1 -0
- package/dist/src/enums/ModCallbackCustom2.lua +30 -0
- package/dist/src/features/{setHotkey.d.ts → customHotkeys.d.ts} +1 -1
- package/dist/src/features/customHotkeys.d.ts.map +1 -0
- package/dist/src/features/{setHotkey.lua → customHotkeys.lua} +2 -2
- package/dist/src/features/customPickup.d.ts.map +1 -1
- package/dist/src/features/customPickup.lua +6 -2
- package/dist/src/features/customStage/backdrop.d.ts.map +1 -1
- package/dist/src/features/customStage/backdrop.lua +3 -1
- package/dist/src/features/customStage/shadows.d.ts.map +1 -1
- package/dist/src/features/customStage/shadows.lua +3 -1
- package/dist/src/features/customTrapdoor/init.lua +1 -7
- package/dist/src/features/firstLast.d.ts.map +1 -1
- package/dist/src/features/firstLast.lua +3 -3
- package/dist/src/features/saveDataManager/main.d.ts +5 -2
- package/dist/src/features/saveDataManager/main.d.ts.map +1 -1
- package/dist/src/features/saveDataManager/main.lua +3 -5
- package/dist/src/functions/ambush.d.ts +6 -0
- package/dist/src/functions/ambush.d.ts.map +1 -1
- package/dist/src/functions/ambush.lua +31 -0
- package/dist/src/functions/minimap.d.ts +4 -0
- package/dist/src/functions/minimap.d.ts.map +1 -1
- package/dist/src/functions/minimap.lua +4 -0
- package/dist/src/functions/roomTransition.d.ts +3 -4
- package/dist/src/functions/roomTransition.d.ts.map +1 -1
- package/dist/src/functions/roomTransition.lua +4 -32
- package/dist/src/functions/spawnCollectible.d.ts +24 -5
- package/dist/src/functions/spawnCollectible.d.ts.map +1 -1
- package/dist/src/functions/spawnCollectible.lua +44 -4
- package/dist/src/functions/utils.d.ts +7 -2
- package/dist/src/functions/utils.d.ts.map +1 -1
- package/dist/src/functions/utils.lua +7 -2
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.lua +26 -10
- package/dist/src/initCustomCallbacks.d.ts.map +1 -1
- package/dist/src/initCustomCallbacks.lua +0 -3
- package/dist/src/initFeatures.lua +3 -3
- package/dist/src/interfaces/private/{AddCallbackParameterCustom.d.ts → AddCallbackParametersCustom.d.ts} +3 -5
- package/dist/src/interfaces/private/AddCallbackParametersCustom.d.ts.map +1 -0
- package/dist/src/interfaces/private/{AddCallbackParameterCustom.lua → AddCallbackParametersCustom.lua} +0 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts +55 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.d.ts.map +1 -0
- package/dist/src/interfaces/private/AddCallbackParametersCustom2.lua +4 -0
- package/dist/src/objects/callbackRegisterFunctions.d.ts +1 -1
- package/dist/src/objects/callbackRegisterFunctions.d.ts.map +1 -1
- package/dist/src/objects/callbackRegisterFunctions.lua +2 -5
- package/dist/src/types/private/AllButFirst.d.ts +5 -0
- package/dist/src/types/private/AllButFirst.d.ts.map +1 -0
- package/dist/src/types/private/AllButFirst.lua +2 -0
- package/dist/src/types/private/CallbackTuple.d.ts +20 -0
- package/dist/src/types/private/CallbackTuple.d.ts.map +1 -0
- package/dist/src/types/private/CallbackTuple.lua +2 -0
- package/dist/src/types/private/MatchingCallbackCustom.d.ts +14 -0
- package/dist/src/types/private/MatchingCallbackCustom.d.ts.map +1 -0
- package/dist/src/types/private/MatchingCallbackCustom.lua +2 -0
- package/package.json +2 -2
- package/src/callbacks/postAmbush.ts +7 -14
- package/src/callbacks/postBombExploded.ts +1 -1
- package/src/callbacks/postBoneSwing.ts +2 -1
- package/src/callbacks/postCollectibleEmpty.ts +2 -0
- package/src/callbacks/postCollectibleInitFirst.ts +2 -0
- package/src/callbacks/postNewRoomEarly.ts +1 -1
- package/src/callbacks/postRoomClearChanged.ts +3 -7
- package/src/callbacks/subscriptions/{postBoneExploded.ts → postBombExploded.ts} +0 -0
- package/src/callbacks/subscriptions/postCollectibleEmpty.ts +1 -1
- package/src/callbacks/subscriptions/postCollectibleInitFirst.ts +1 -1
- package/src/callbacks/subscriptions/postCursedTeleport.ts +24 -1
- package/src/callbacks/subscriptions/postHolyMantleRemoved.ts +9 -2
- package/src/callbacks/subscriptions/postPEffectUpdateReordered.ts +9 -2
- package/src/classes/ModUpgraded.ts +118 -27
- package/src/classes/callbacks/PostAmbushFinished.ts +39 -0
- package/src/classes/callbacks/PostAmbushStarted.ts +39 -0
- package/src/classes/callbacks/PostBombExploded.ts +21 -0
- package/src/classes/callbacks/PostBombInitLate.ts +28 -0
- package/src/classes/callbacks/PostBoneSwing.ts +58 -0
- package/src/classes/callbacks/PostCollectibleEmpty.ts +72 -0
- package/src/classes/callbacks/PostCollectibleInitFirst.ts +37 -0
- package/src/classes/callbacks/PostCursedTeleport.ts +183 -0
- package/src/classes/callbacks/PostKnifeInitLate.ts +28 -0
- package/src/classes/callbacks/PostNewRoomEarly.ts +93 -0
- package/src/classes/callbacks/PostPitRender.ts +21 -0
- package/src/classes/callbacks/PostRoomClearChanged.ts +40 -0
- package/src/classes/callbacks/PostSpikesRender.ts +21 -0
- package/src/classes/callbacks/validation/CustomCallbackAmbush.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackBomb.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackCollectible.ts +30 -0
- package/src/classes/callbacks/validation/CustomCallbackKnife.ts +27 -0
- package/src/classes/callbacks/validation/CustomCallbackPit.ts +28 -0
- package/src/classes/callbacks/validation/CustomCallbackPlayer.ts +37 -0
- package/src/classes/callbacks/validation/CustomCallbackSpikes.ts +28 -0
- package/src/classes/private/CustomCallback.ts +79 -0
- package/src/core/upgradeMod.ts +16 -2
- package/src/enums/IsaacScriptCommonFeature.ts +34 -0
- package/src/enums/LadderSubTypeCustom.ts +17 -0
- package/src/enums/ModCallbackCustom.ts +314 -243
- package/src/enums/ModCallbackCustom2.ts +17 -0
- package/src/features/{setHotkey.ts → customHotkeys.ts} +2 -2
- package/src/features/customPickup.ts +4 -2
- package/src/features/customStage/backdrop.ts +2 -1
- package/src/features/customStage/shadows.ts +2 -1
- package/src/features/customTrapdoor/init.ts +0 -1
- package/src/features/firstLast.ts +3 -7
- package/src/features/saveDataManager/main.ts +32 -21
- package/src/functions/ambush.ts +26 -1
- package/src/functions/minimap.ts +4 -0
- package/src/functions/roomTransition.ts +3 -27
- package/src/functions/spawnCollectible.ts +44 -4
- package/src/functions/utils.ts +7 -2
- package/src/index.ts +4 -2
- package/src/initCustomCallbacks.ts +1 -2
- package/src/initFeatures.ts +2 -2
- package/src/interfaces/private/{AddCallbackParameterCustom.ts → AddCallbackParametersCustom.ts} +2 -24
- package/src/interfaces/private/AddCallbackParametersCustom2.ts +79 -0
- package/src/objects/callbackRegisterFunctions.ts +2 -4
- package/src/types/private/AllButFirst.ts +6 -0
- package/src/types/private/CallbackTuple.ts +21 -0
- package/src/types/private/MatchingCallbackCustom.ts +26 -0
- package/dist/src/callbacks/postCustomDoorEnter.d.ts +0 -6
- package/dist/src/callbacks/postCustomDoorEnter.d.ts.map +0 -1
- package/dist/src/callbacks/postCustomDoorEnter.lua +0 -199
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.d.ts +0 -9
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.d.ts.map +0 -1
- package/dist/src/callbacks/subscriptions/postCustomDoorEnter.lua +0 -29
- package/dist/src/classes/CustomCallback.d.ts +0 -8
- package/dist/src/classes/CustomCallback.d.ts.map +0 -1
- package/dist/src/classes/CustomCallback.lua +0 -28
- package/dist/src/features/customDoor.d.ts +0 -51
- package/dist/src/features/customDoor.d.ts.map +0 -1
- package/dist/src/features/customDoor.lua +0 -53
- package/dist/src/features/setHotkey.d.ts.map +0 -1
- package/dist/src/interfaces/private/AddCallbackParameterCustom.d.ts.map +0 -1
- package/src/callbacks/postCustomDoorEnter.ts +0 -250
- package/src/callbacks/subscriptions/postCustomDoorEnter.ts +0 -42
- package/src/classes/CustomCallback.ts +0 -23
- package/src/features/customDoor.ts +0 -66
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
2
|
import { ModCallbackCustom } from "../enums/ModCallbackCustom";
|
|
3
|
+
import { ModCallbackCustom2 } from "../enums/ModCallbackCustom2";
|
|
4
|
+
import { saveDataManager } from "../features/saveDataManager/exports";
|
|
3
5
|
import { getTime } from "../functions/debugFunctions";
|
|
4
6
|
import { getParentFunctionDescription } from "../functions/log";
|
|
5
|
-
import {
|
|
7
|
+
import { getTSTLClassName } from "../functions/tstlClass";
|
|
8
|
+
import { AddCallbackParametersCustom } from "../interfaces/private/AddCallbackParametersCustom";
|
|
9
|
+
import { AddCallbackParametersCustom2 } from "../interfaces/private/AddCallbackParametersCustom2";
|
|
6
10
|
import { CALLBACK_REGISTER_FUNCTIONS } from "../objects/callbackRegisterFunctions";
|
|
11
|
+
import { PostAmbushFinished } from "./callbacks/PostAmbushFinished";
|
|
12
|
+
import { PostAmbushStarted } from "./callbacks/PostAmbushStarted";
|
|
13
|
+
import { PostBombExploded } from "./callbacks/PostBombExploded";
|
|
14
|
+
import { PostBombInitLate } from "./callbacks/PostBombInitLate";
|
|
15
|
+
import { PostBoneSwing } from "./callbacks/PostBoneSwing";
|
|
16
|
+
import { PostCollectibleEmpty } from "./callbacks/PostCollectibleEmpty";
|
|
17
|
+
import { PostCollectibleInitFirst } from "./callbacks/PostCollectibleInitFirst";
|
|
18
|
+
import { PostCursedTeleport } from "./callbacks/PostCursedTeleport";
|
|
19
|
+
import { PostKnifeInitLate } from "./callbacks/PostKnifeInitLate";
|
|
20
|
+
import { PostNewRoomEarly } from "./callbacks/PostNewRoomEarly";
|
|
21
|
+
import { PostPitRender } from "./callbacks/PostPitRender";
|
|
22
|
+
import { PostRoomClearChanged } from "./callbacks/PostRoomClearChanged";
|
|
23
|
+
import { PostSpikesRender } from "./callbacks/PostSpikesRender";
|
|
24
|
+
import { CustomCallback } from "./private/CustomCallback";
|
|
7
25
|
|
|
8
26
|
/**
|
|
9
27
|
* `isaacscript-common` has many custom callbacks that you can use in your mods. Instead of
|
|
@@ -19,7 +37,7 @@ export class ModUpgraded implements Mod {
|
|
|
19
37
|
|
|
20
38
|
/**
|
|
21
39
|
* The vanilla mod object stores the name of the mod for some reason. (It is never used or
|
|
22
|
-
* referenced.
|
|
40
|
+
* referenced. (We match the casing of the vanilla variable.)
|
|
23
41
|
*/
|
|
24
42
|
Name: string;
|
|
25
43
|
|
|
@@ -28,16 +46,40 @@ export class ModUpgraded implements Mod {
|
|
|
28
46
|
// ----------------
|
|
29
47
|
|
|
30
48
|
/** We store a copy of the original mod object so that we can re-implement its functions. */
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
49
|
+
private mod: Mod;
|
|
50
|
+
|
|
51
|
+
private debug: boolean;
|
|
52
|
+
private timeThreshold: float | undefined;
|
|
53
|
+
|
|
54
|
+
private callbacks: {
|
|
55
|
+
readonly [key in ModCallbackCustom2]: CustomCallback<key>;
|
|
56
|
+
} = {
|
|
57
|
+
[ModCallbackCustom2.POST_AMBUSH_FINISHED]: new PostAmbushFinished(),
|
|
58
|
+
[ModCallbackCustom2.POST_AMBUSH_STARTED]: new PostAmbushStarted(),
|
|
59
|
+
[ModCallbackCustom2.POST_BOMB_EXPLODED]: new PostBombExploded(),
|
|
60
|
+
[ModCallbackCustom2.POST_BOMB_INIT_LATE]: new PostBombInitLate(),
|
|
61
|
+
[ModCallbackCustom2.POST_BONE_SWING]: new PostBoneSwing(),
|
|
62
|
+
[ModCallbackCustom2.POST_COLLECTIBLE_EMPTY]: new PostCollectibleEmpty(),
|
|
63
|
+
[ModCallbackCustom2.POST_COLLECTIBLE_INIT_FIRST]:
|
|
64
|
+
new PostCollectibleInitFirst(),
|
|
65
|
+
[ModCallbackCustom2.POST_CURSED_TELEPORT]: new PostCursedTeleport(),
|
|
66
|
+
|
|
67
|
+
[ModCallbackCustom2.POST_KNIFE_INIT_LATE]: new PostKnifeInitLate(),
|
|
68
|
+
[ModCallbackCustom2.POST_NEW_ROOM_EARLY]: new PostNewRoomEarly(),
|
|
69
|
+
[ModCallbackCustom2.POST_PIT_RENDER]: new PostPitRender(),
|
|
70
|
+
[ModCallbackCustom2.POST_ROOM_CLEAR_CHANGED]: new PostRoomClearChanged(),
|
|
71
|
+
[ModCallbackCustom2.POST_SPIKES_RENDER]: new PostSpikesRender(),
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// -----------
|
|
75
|
+
// Constructor
|
|
76
|
+
// -----------
|
|
35
77
|
|
|
36
78
|
constructor(mod: Mod, debug: boolean, timeThreshold?: float) {
|
|
37
79
|
this.Name = mod.Name;
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
80
|
+
this.mod = mod;
|
|
81
|
+
this.debug = debug;
|
|
82
|
+
this.timeThreshold = timeThreshold;
|
|
41
83
|
}
|
|
42
84
|
|
|
43
85
|
// ---------------
|
|
@@ -48,7 +90,7 @@ export class ModUpgraded implements Mod {
|
|
|
48
90
|
modCallback: T,
|
|
49
91
|
...args: AddCallbackParameters[T]
|
|
50
92
|
): void {
|
|
51
|
-
if (this.
|
|
93
|
+
if (this.debug) {
|
|
52
94
|
const callback = args[0];
|
|
53
95
|
const optionalArg = args[1];
|
|
54
96
|
|
|
@@ -60,42 +102,49 @@ export class ModUpgraded implements Mod {
|
|
|
60
102
|
: `${parentFunctionDescription} - ${callbackName}`;
|
|
61
103
|
|
|
62
104
|
/**
|
|
63
|
-
* We don't use the "log" helper function since it will always show the same "unknown"
|
|
105
|
+
* We don't use the "log" helper function here since it will always show the same "unknown"
|
|
106
|
+
* prefix.
|
|
64
107
|
*/
|
|
65
|
-
const callbackWithLogger = (
|
|
108
|
+
const callbackWithLogger: typeof callback = (
|
|
109
|
+
...callbackArgs: Parameters<typeof callback>
|
|
110
|
+
) => {
|
|
66
111
|
const startTime = getTime();
|
|
67
112
|
Isaac.DebugString(`${signature} - START`);
|
|
68
113
|
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
callback(...callbackArgs);
|
|
114
|
+
// @ts-expect-error The compiler is not smart enough to know that the callback args should
|
|
115
|
+
// match the callback.
|
|
116
|
+
const returnValue = callback(...callbackArgs);
|
|
72
117
|
|
|
73
118
|
const endTime = getTime();
|
|
74
119
|
const elapsedTime = endTime - startTime;
|
|
75
120
|
if (
|
|
76
|
-
this.
|
|
77
|
-
this.
|
|
121
|
+
this.timeThreshold === undefined ||
|
|
122
|
+
this.timeThreshold <= elapsedTime
|
|
78
123
|
) {
|
|
79
124
|
Isaac.DebugString(`${signature} - END - time: ${elapsedTime}`);
|
|
80
125
|
} else {
|
|
81
126
|
Isaac.DebugString(`${signature} - END`);
|
|
82
127
|
}
|
|
128
|
+
|
|
129
|
+
return returnValue;
|
|
83
130
|
};
|
|
84
131
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
132
|
+
const newArgs = [
|
|
133
|
+
callbackWithLogger,
|
|
134
|
+
optionalArg,
|
|
135
|
+
] as unknown as AddCallbackParameters[T];
|
|
136
|
+
this.mod.AddCallback(modCallback, ...newArgs);
|
|
88
137
|
} else {
|
|
89
|
-
this.
|
|
138
|
+
this.mod.AddCallback(modCallback, ...args);
|
|
90
139
|
}
|
|
91
140
|
}
|
|
92
141
|
|
|
93
142
|
HasData(): boolean {
|
|
94
|
-
return this.
|
|
143
|
+
return this.mod.HasData();
|
|
95
144
|
}
|
|
96
145
|
|
|
97
146
|
LoadData(): string {
|
|
98
|
-
return this.
|
|
147
|
+
return this.mod.LoadData();
|
|
99
148
|
}
|
|
100
149
|
|
|
101
150
|
/**
|
|
@@ -106,15 +155,15 @@ export class ModUpgraded implements Mod {
|
|
|
106
155
|
modCallback: T,
|
|
107
156
|
callback: AddCallbackParameters[T][0],
|
|
108
157
|
): void {
|
|
109
|
-
this.
|
|
158
|
+
this.mod.RemoveCallback(modCallback, callback);
|
|
110
159
|
}
|
|
111
160
|
|
|
112
161
|
RemoveData(): void {
|
|
113
|
-
this.
|
|
162
|
+
this.mod.RemoveData();
|
|
114
163
|
}
|
|
115
164
|
|
|
116
165
|
SaveData(data: string): void {
|
|
117
|
-
this.
|
|
166
|
+
this.mod.SaveData(data);
|
|
118
167
|
}
|
|
119
168
|
|
|
120
169
|
// --------------
|
|
@@ -131,6 +180,47 @@ export class ModUpgraded implements Mod {
|
|
|
131
180
|
callbackRegisterFunction(...args);
|
|
132
181
|
}
|
|
133
182
|
|
|
183
|
+
AddCallbackCustom2<T extends ModCallbackCustom2>(
|
|
184
|
+
modCallbackCustom: T,
|
|
185
|
+
...args: AddCallbackParametersCustom2[T]
|
|
186
|
+
): void {
|
|
187
|
+
const callback = this.callbacks[modCallbackCustom];
|
|
188
|
+
callback.add(...args);
|
|
189
|
+
|
|
190
|
+
if (callback.initialized) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
callback.initialized = true;
|
|
194
|
+
|
|
195
|
+
if (callback.otherCallbacksUsed !== undefined) {
|
|
196
|
+
for (const callbackTuple of callback.otherCallbacksUsed) {
|
|
197
|
+
const [modCallback, callbackArgs] = callbackTuple;
|
|
198
|
+
this.AddCallback(modCallback, ...callbackArgs);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (callback.otherCustomCallbacksUsed !== undefined) {
|
|
203
|
+
for (const callbackTuple of callback.otherCustomCallbacksUsed) {
|
|
204
|
+
const [modCallback, callbackArgs] = callbackTuple;
|
|
205
|
+
this.AddCallbackCustom(modCallback, ...callbackArgs);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (callback.v !== undefined) {
|
|
210
|
+
const callbackName = getTSTLClassName(callback);
|
|
211
|
+
if (callbackName === undefined) {
|
|
212
|
+
error(
|
|
213
|
+
`Failed to get the name of the callback: ModCallbackCustom.${ModCallbackCustom2[modCallbackCustom]} (${modCallbackCustom})`,
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
saveDataManager(callbackName, callback.v);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
if (callback.feature !== undefined) {}
|
|
221
|
+
*/
|
|
222
|
+
}
|
|
223
|
+
|
|
134
224
|
/**
|
|
135
225
|
* This method does not care about the tertiary argument. Regardless of the conditions of how you
|
|
136
226
|
* registered the callback, it will be removed.
|
|
@@ -139,6 +229,7 @@ export class ModUpgraded implements Mod {
|
|
|
139
229
|
modCallback: T,
|
|
140
230
|
callback: AddCallbackParametersCustom[T][0],
|
|
141
231
|
): void {
|
|
142
|
-
|
|
232
|
+
// TODO
|
|
233
|
+
print(this, modCallback, callback);
|
|
143
234
|
}
|
|
144
235
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../../core/cachedClasses";
|
|
3
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
4
|
+
import { getAmbushType } from "../../functions/ambush";
|
|
5
|
+
import { CustomCallbackAmbush } from "./validation/CustomCallbackAmbush";
|
|
6
|
+
|
|
7
|
+
export class PostAmbushFinished extends CustomCallbackAmbush<ModCallbackCustom2.POST_AMBUSH_FINISHED> {
|
|
8
|
+
override v = {
|
|
9
|
+
room: {
|
|
10
|
+
ambushDone: false,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
|
|
17
|
+
this.otherCallbacksUsed = [
|
|
18
|
+
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
postUpdate = (): void => {
|
|
23
|
+
if (this.v.room.ambushDone) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const room = game.GetRoom();
|
|
28
|
+
const ambushDone = room.IsAmbushDone();
|
|
29
|
+
if (!ambushDone) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.v.room.ambushDone = true;
|
|
33
|
+
|
|
34
|
+
const ambushType = getAmbushType();
|
|
35
|
+
if (ambushType !== undefined) {
|
|
36
|
+
this.fire(ambushType);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { game } from "../../core/cachedClasses";
|
|
3
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
4
|
+
import { getAmbushType } from "../../functions/ambush";
|
|
5
|
+
import { CustomCallbackAmbush } from "./validation/CustomCallbackAmbush";
|
|
6
|
+
|
|
7
|
+
export class PostAmbushStarted extends CustomCallbackAmbush<ModCallbackCustom2.POST_AMBUSH_STARTED> {
|
|
8
|
+
override v = {
|
|
9
|
+
room: {
|
|
10
|
+
ambushActive: false,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
|
|
17
|
+
this.otherCallbacksUsed = [
|
|
18
|
+
[ModCallback.POST_UPDATE, [this.postUpdate]], // 1
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
postUpdate = (): void => {
|
|
23
|
+
if (this.v.room.ambushActive) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const room = game.GetRoom();
|
|
28
|
+
const ambushActive = room.IsAmbushActive();
|
|
29
|
+
if (!ambushActive) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.v.room.ambushActive = true;
|
|
33
|
+
|
|
34
|
+
const ambushType = getAmbushType();
|
|
35
|
+
if (ambushType !== undefined) {
|
|
36
|
+
this.fire(ambushType);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { BOMB_EXPLODE_FRAME } from "../../core/constants";
|
|
3
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
4
|
+
import { CustomCallbackBomb } from "./validation/CustomCallbackBomb";
|
|
5
|
+
|
|
6
|
+
export class PostBombExploded extends CustomCallbackBomb<ModCallbackCustom2.POST_BOMB_EXPLODED> {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
|
|
10
|
+
this.otherCallbacksUsed = [
|
|
11
|
+
[ModCallback.POST_BOMB_UPDATE, [this.postBombUpdate]], // 58
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// ModCallback.POST_BOMB_UPDATE (58)
|
|
16
|
+
postBombUpdate = (bomb: EntityBomb): void => {
|
|
17
|
+
if (bomb.FrameCount === BOMB_EXPLODE_FRAME) {
|
|
18
|
+
this.fire(bomb);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
3
|
+
import { CustomCallbackBomb } from "./validation/CustomCallbackBomb";
|
|
4
|
+
|
|
5
|
+
export class PostBombInitLate extends CustomCallbackBomb<ModCallbackCustom2.POST_BOMB_INIT_LATE> {
|
|
6
|
+
override v = {
|
|
7
|
+
room: {
|
|
8
|
+
firedSet: new Set<PtrHash>(),
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
|
|
15
|
+
this.otherCallbacksUsed = [
|
|
16
|
+
[ModCallback.POST_BOMB_UPDATE, [this.postBombUpdate]], // 58
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// ModCallback.POST_BOMB_UPDATE (58)
|
|
21
|
+
postBombUpdate = (bomb: EntityBomb): void => {
|
|
22
|
+
const ptrHash = GetPtrHash(bomb);
|
|
23
|
+
if (!this.v.room.firedSet.has(ptrHash)) {
|
|
24
|
+
this.v.room.firedSet.add(ptrHash);
|
|
25
|
+
this.fire(bomb);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { KnifeVariant, ModCallback } from "isaac-typescript-definitions";
|
|
2
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
3
|
+
import { CustomCallback } from "../private/CustomCallback";
|
|
4
|
+
|
|
5
|
+
const BONE_SWING_ANIMATIONS: ReadonlySet<string> = new Set([
|
|
6
|
+
"Swing",
|
|
7
|
+
"Swing2",
|
|
8
|
+
"Spin",
|
|
9
|
+
]);
|
|
10
|
+
|
|
11
|
+
export class PostBoneSwing extends CustomCallback<ModCallbackCustom2.POST_BONE_SWING> {
|
|
12
|
+
override v = {
|
|
13
|
+
room: {
|
|
14
|
+
boneClubAnimations: new Map<PtrHash, string>(),
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
|
|
21
|
+
this.otherCallbacksUsed = [
|
|
22
|
+
[ModCallback.POST_KNIFE_RENDER, [this.postKnifeRender]], // 52
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// ModCallback.POST_KNIFE_RENDER (52)
|
|
27
|
+
postKnifeRender = (knife: EntityKnife): void => {
|
|
28
|
+
// The tertiary argument of the `POST_KNIFE_RENDER` callback takes sub-types instead of knife
|
|
29
|
+
// variants.
|
|
30
|
+
if (knife.Variant === KnifeVariant.BONE_CLUB) {
|
|
31
|
+
this.postKnifeRenderBoneClub(knife);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// ModCallback.POST_KNIFE_RENDER (52)
|
|
36
|
+
// KnifeVariant.BONE_CLUB (1)
|
|
37
|
+
postKnifeRenderBoneClub(knife: EntityKnife): void {
|
|
38
|
+
const sprite = knife.GetSprite();
|
|
39
|
+
const animation = sprite.GetAnimation();
|
|
40
|
+
const ptrHash = GetPtrHash(knife);
|
|
41
|
+
|
|
42
|
+
const animationOnLastFrame = this.v.room.boneClubAnimations.get(ptrHash);
|
|
43
|
+
this.v.room.boneClubAnimations.set(ptrHash, animation);
|
|
44
|
+
|
|
45
|
+
if (
|
|
46
|
+
animationOnLastFrame !== undefined &&
|
|
47
|
+
animation !== animationOnLastFrame
|
|
48
|
+
) {
|
|
49
|
+
this.boneClubAnimationChanged(knife, animation);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
boneClubAnimationChanged(knife: EntityKnife, animation: string): void {
|
|
54
|
+
if (BONE_SWING_ANIMATIONS.has(animation)) {
|
|
55
|
+
this.fire(knife);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CollectibleType,
|
|
3
|
+
ModCallback,
|
|
4
|
+
PickupVariant,
|
|
5
|
+
} from "isaac-typescript-definitions";
|
|
6
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
7
|
+
import {
|
|
8
|
+
CustomCallback,
|
|
9
|
+
FireArgs,
|
|
10
|
+
OptionalArgs,
|
|
11
|
+
} from "../private/CustomCallback";
|
|
12
|
+
|
|
13
|
+
type T = ModCallbackCustom2.POST_COLLECTIBLE_EMPTY;
|
|
14
|
+
|
|
15
|
+
export class PostCollectibleEmpty extends CustomCallback<T> {
|
|
16
|
+
override v = {
|
|
17
|
+
room: {
|
|
18
|
+
collectibleTypeMap: new Map<PtrHash, CollectibleType>(),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
constructor() {
|
|
23
|
+
super();
|
|
24
|
+
|
|
25
|
+
this.otherCallbacksUsed = [
|
|
26
|
+
[
|
|
27
|
+
ModCallback.POST_PICKUP_UPDATE,
|
|
28
|
+
[this.postPickupUpdateCollectible, PickupVariant.COLLECTIBLE],
|
|
29
|
+
], // 35
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// eslint-disable-next-line class-methods-use-this
|
|
34
|
+
override shouldFire(
|
|
35
|
+
fireArgs: FireArgs<T>,
|
|
36
|
+
optionalArgs: OptionalArgs<T>,
|
|
37
|
+
): boolean {
|
|
38
|
+
const [callbackCollectibleType] = optionalArgs;
|
|
39
|
+
if (callbackCollectibleType === undefined) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const [_collectible, oldCollectibleType] = fireArgs;
|
|
44
|
+
return oldCollectibleType === callbackCollectibleType;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ModCallback.POST_PICKUP_UPDATE (35)
|
|
48
|
+
// PickupVariant.COLLECTIBLE (100)
|
|
49
|
+
postPickupUpdateCollectible = (pickup: EntityPickup): void => {
|
|
50
|
+
const collectible = pickup as EntityPickupCollectible;
|
|
51
|
+
|
|
52
|
+
const ptrHash = GetPtrHash(collectible);
|
|
53
|
+
let oldCollectibleType = this.v.room.collectibleTypeMap.get(ptrHash);
|
|
54
|
+
if (oldCollectibleType === undefined) {
|
|
55
|
+
oldCollectibleType = collectible.SubType;
|
|
56
|
+
}
|
|
57
|
+
this.v.room.collectibleTypeMap.set(ptrHash, collectible.SubType);
|
|
58
|
+
|
|
59
|
+
if (oldCollectibleType !== collectible.SubType) {
|
|
60
|
+
this.collectibleTypeChanged(collectible, oldCollectibleType);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
collectibleTypeChanged(
|
|
65
|
+
collectible: EntityPickupCollectible,
|
|
66
|
+
oldCollectibleType: CollectibleType,
|
|
67
|
+
): void {
|
|
68
|
+
if (collectible.SubType === CollectibleType.NULL) {
|
|
69
|
+
this.fire(collectible, oldCollectibleType);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ModCallback, PickupVariant } from "isaac-typescript-definitions";
|
|
2
|
+
import { ModCallbackCustom2 } from "../../enums/ModCallbackCustom2";
|
|
3
|
+
import { getCollectibleIndex } from "../../functions/collectibles";
|
|
4
|
+
import { CollectibleIndex } from "../../types/CollectibleIndex";
|
|
5
|
+
import { CustomCallbackCollectible } from "./validation/CustomCallbackCollectible";
|
|
6
|
+
|
|
7
|
+
export class PostCollectibleInitFirst extends CustomCallbackCollectible<ModCallbackCustom2.POST_COLLECTIBLE_INIT_FIRST> {
|
|
8
|
+
override v = {
|
|
9
|
+
run: {
|
|
10
|
+
seenCollectibles: new Set<CollectibleIndex>(),
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
|
|
17
|
+
this.otherCallbacksUsed = [
|
|
18
|
+
[
|
|
19
|
+
ModCallback.POST_PICKUP_INIT,
|
|
20
|
+
[this.postPickupInitCollectible, PickupVariant.COLLECTIBLE],
|
|
21
|
+
], // 34
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// ModCallback.POST_PICKUP_INIT (34)
|
|
26
|
+
// PickupVariant.COLLECTIBLE (100)
|
|
27
|
+
postPickupInitCollectible = (pickup: EntityPickup): void => {
|
|
28
|
+
const collectible = pickup as EntityPickupCollectible;
|
|
29
|
+
const collectibleIndex = getCollectibleIndex(collectible);
|
|
30
|
+
if (this.v.run.seenCollectibles.has(collectibleIndex)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
this.v.run.seenCollectibles.add(collectibleIndex);
|
|
35
|
+
this.fire(collectible);
|
|
36
|
+
};
|
|
37
|
+
}
|