isaacscript-common 15.3.1 → 15.3.3

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 CHANGED
@@ -10690,7 +10690,7 @@ declare class ModdedElementSets extends Feature {
10690
10690
  }
10691
10691
 
10692
10692
  /**
10693
- * Helper class for mods that wants to represent their individual features as classes. Extend your
10693
+ * Helper class for mods that want to represent their individual features as classes. Extend your
10694
10694
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
10695
10695
  * that automatically subscribe to callbacks.
10696
10696
  *
@@ -10715,13 +10715,23 @@ declare class ModdedElementSets extends Feature {
10715
10715
  * }
10716
10716
  * ```
10717
10717
  *
10718
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
10719
+ * constructor.
10720
+ *
10718
10721
  * In almost all cases, you will want the callback functions to be immediately subscribed after
10719
10722
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
10720
10723
  * second argument to the constructor.
10721
10724
  */
10722
10725
  export declare class ModFeature {
10723
10726
  private mod;
10724
- private initialized;
10727
+ /**
10728
+ * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
10729
+ * save data manager, if any).
10730
+ *
10731
+ * This will almost always be equal to true unless you explicitly passed `false` to the second
10732
+ * argument of the constructor.
10733
+ */
10734
+ initialized: boolean;
10725
10735
  constructor(mod: ModUpgradedBase, init?: boolean);
10726
10736
  /**
10727
10737
  * Runs the `Mod.AddCallback` and `ModUpgraded.AddCallbackCustom` methods for all of the decorated
@@ -12440,6 +12450,7 @@ export declare function round(num: float, numDecimalPlaces?: number): float;
12440
12450
  export declare function runDeepCopyTests(): void;
12441
12451
 
12442
12452
  declare class RunInNFrames extends Feature {
12453
+ vConditionalFunc: () => boolean;
12443
12454
  private postUpdate;
12444
12455
  private postRender;
12445
12456
  /**
@@ -12677,6 +12688,8 @@ declare class SaveDataManager extends Feature {
12677
12688
  * manage them for you. (See below for an example.)
12678
12689
  *
12679
12690
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
12691
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
12692
+ * will run before any of your code does.)
12680
12693
  *
12681
12694
  * The save data manager is meant to be called once for each feature of your mod. In other words,
12682
12695
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -12733,10 +12746,6 @@ declare class SaveDataManager extends Feature {
12733
12746
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
12734
12747
  * helper function.
12735
12748
  *
12736
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
12737
- * your mod before registering any of your own callbacks so that the save data manager will run
12738
- * before any of your code does.)
12739
- *
12740
12749
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
12741
12750
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
12742
12751
  * data manager cannot do this on its own because it cannot know when your mod features are
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 15.3.1
3
+ isaacscript-common 15.3.3
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -30390,6 +30390,7 @@ __TS__ClassExtends(RunInNFrames, Feature)
30390
30390
  function RunInNFrames.prototype.____constructor(self)
30391
30391
  Feature.prototype.____constructor(self)
30392
30392
  self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
30393
+ self.vConditionalFunc = function() return false end
30393
30394
  self.postUpdate = function()
30394
30395
  local gameFrameCount = game:GetFrameCount()
30395
30396
  checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
@@ -2,7 +2,7 @@ import { ModUpgradedBase } from "./ModUpgradedBase";
2
2
  export declare const ADD_CALLBACK_ARGS_KEY = "__addCallbackArgs";
3
3
  export declare const ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs";
4
4
  /**
5
- * Helper class for mods that wants to represent their individual features as classes. Extend your
5
+ * Helper class for mods that want to represent their individual features as classes. Extend your
6
6
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
7
7
  * that automatically subscribe to callbacks.
8
8
  *
@@ -27,13 +27,23 @@ export declare const ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs";
27
27
  * }
28
28
  * ```
29
29
  *
30
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
31
+ * constructor.
32
+ *
30
33
  * In almost all cases, you will want the callback functions to be immediately subscribed after
31
34
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
32
35
  * second argument to the constructor.
33
36
  */
34
37
  export declare class ModFeature {
35
38
  private mod;
36
- private initialized;
39
+ /**
40
+ * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
41
+ * save data manager, if any).
42
+ *
43
+ * This will almost always be equal to true unless you explicitly passed `false` to the second
44
+ * argument of the constructor.
45
+ */
46
+ initialized: boolean;
37
47
  constructor(mod: ModUpgradedBase, init?: boolean);
38
48
  /**
39
49
  * Runs the `Mod.AddCallback` and `ModUpgraded.AddCallbackCustom` methods for all of the decorated
@@ -1 +1 @@
1
- {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
1
+ {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAE7B;;;;;;OAMG;IACI,WAAW,UAAS;gBAEf,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
@@ -143,7 +143,7 @@ ____exports.ADD_CALLBACK_ARGS_KEY = "__addCallbackArgs"
143
143
  ____exports.ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs"
144
144
  WRAPPED_CALLBACK_METHODS_KEY = "__wrappedCallbackMethods"
145
145
  WRAPPED_CUSTOM_CALLBACK_METHODS_KEY = "__wrappedCustomCallbacksMethods"
146
- --- Helper class for mods that wants to represent their individual features as classes. Extend your
146
+ --- Helper class for mods that want to represent their individual features as classes. Extend your
147
147
  -- mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
148
148
  -- that automatically subscribe to callbacks.
149
149
  --
@@ -168,6 +168,9 @@ WRAPPED_CUSTOM_CALLBACK_METHODS_KEY = "__wrappedCustomCallbacksMethods"
168
168
  -- }
169
169
  -- ```
170
170
  --
171
+ -- When instantiating a feature class, you must pass your upgraded mod as the first argument to the
172
+ -- constructor.
173
+ --
171
174
  -- In almost all cases, you will want the callback functions to be immediately subscribed after
172
175
  -- instantiating the class. However, if this is not the case, you can pass `false` as the optional
173
176
  -- second argument to the constructor.
@@ -1,6 +1,7 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
2
  import { Feature } from "../../private/Feature";
3
3
  export declare class RunInNFrames extends Feature {
4
+ vConditionalFunc: () => boolean;
4
5
  private postUpdate;
5
6
  private postRender;
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAgBhD,qBAAa,YAAa,SAAQ,OAAO;IAuBvC,OAAO,CAAC,UAAU,CAWhB;IAGF,OAAO,CAAC,UAAU,CAWhB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;OAWG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAOhE;;;;;;;;;;;OAWG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI;IAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;;OASG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;OAiBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,GACtB,IAAI;IAWP;;;;;;;;;;;;;;;;;OAiBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,GACtB,IAAI;CAcR"}
1
+ {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAgBhD,qBAAa,YAAa,SAAQ,OAAO;IAavB,gBAAgB,QAAO,OAAO,CAAU;IAaxD,OAAO,CAAC,UAAU,CAWhB;IAGF,OAAO,CAAC,UAAU,CAWhB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;OAWG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAOhE;;;;;;;;;;;OAWG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI;IAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;;OASG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;OAiBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,GACtB,IAAI;IAWP;;;;;;;;;;;;;;;;;OAiBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,GACtB,IAAI;CAcR"}
@@ -59,6 +59,7 @@ __TS__ClassExtends(RunInNFrames, Feature)
59
59
  function RunInNFrames.prototype.____constructor(self)
60
60
  Feature.prototype.____constructor(self)
61
61
  self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
62
+ self.vConditionalFunc = function() return false end
62
63
  self.postUpdate = function()
63
64
  local gameFrameCount = game:GetFrameCount()
64
65
  checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
@@ -54,6 +54,8 @@ export declare class SaveDataManager extends Feature {
54
54
  * manage them for you. (See below for an example.)
55
55
  *
56
56
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
57
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
58
+ * will run before any of your code does.)
57
59
  *
58
60
  * The save data manager is meant to be called once for each feature of your mod. In other words,
59
61
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -110,10 +112,6 @@ export declare class SaveDataManager extends Feature {
110
112
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
111
113
  * helper function.
112
114
  *
113
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
114
- * your mod before registering any of your own callbacks so that the save data manager will run
115
- * before any of your code does.)
116
- *
117
115
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
118
116
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
119
117
  * data manager cannot do this on its own because it cannot know when your mod features are
@@ -1 +1 @@
1
- {"version":3,"file":"SaveDataManager.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/SaveDataManager.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsBhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C;;;OAGG;IACH,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAkC;IAErD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkC;IAE7D;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAuC;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B,CAAkC;IAErE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAG3D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qCAAqC,CAAS;IAyBtD,OAAO,CAAC,2BAA2B,CAUjC;IAGF,OAAO,CAAC,cAAc,CA0BpB;IAGF,OAAO,CAAC,WAAW,CAUjB;IAGF,OAAO,CAAC,YAAY,CAYlB;IAGF,OAAO,CAAC,gBAAgB,CAuBtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmGG;IACI,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAC3C,GAAG,EAAE,MAAM,EAAE,qEAAqE;IAClF,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,EACnC,eAAe,CAAC,EAAE,MAAM,OAAO,GAC9B,IAAI;IACA,eAAe,CACpB,GAAG,EAAE,MAAM,EAAE,kEAAkE;IAC/E,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,KAAK,GACrB,IAAI;IAkDP;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;;;;;;;;OASG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;OAMG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IAEI,wBAAwB,IAAI,IAAI;IAIvC;;;;;;;;;;;OAWG;IAEI,4BAA4B,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI;IAcrE;;;;;OAKG;IAEI,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAoB/C;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEI,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,GAAG,IAAI;CAqB5E"}
1
+ {"version":3,"file":"SaveDataManager.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/SaveDataManager.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsBhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C;;;OAGG;IACH,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAkC;IAErD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkC;IAE7D;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAuC;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B,CAAkC;IAErE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAG3D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qCAAqC,CAAS;IAyBtD,OAAO,CAAC,2BAA2B,CAUjC;IAGF,OAAO,CAAC,cAAc,CA0BpB;IAGF,OAAO,CAAC,WAAW,CAUjB;IAGF,OAAO,CAAC,YAAY,CAYlB;IAGF,OAAO,CAAC,gBAAgB,CAuBtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiGG;IACI,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAC3C,GAAG,EAAE,MAAM,EAAE,qEAAqE;IAClF,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,EACnC,eAAe,CAAC,EAAE,MAAM,OAAO,GAC9B,IAAI;IACA,eAAe,CACpB,GAAG,EAAE,MAAM,EAAE,kEAAkE;IAC/E,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,KAAK,GACrB,IAAI;IAkDP;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;;;;;;;;OASG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;OAMG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IAEI,wBAAwB,IAAI,IAAI;IAIvC;;;;;;;;;;;OAWG;IAEI,4BAA4B,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI;IAcrE;;;;;OAKG;IAEI,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAoB/C;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEI,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,GAAG,IAAI;CAqB5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "15.3.1",
3
+ "version": "15.3.3",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -26,7 +26,7 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
26
26
  };
27
27
 
28
28
  /**
29
- * Helper class for mods that wants to represent their individual features as classes. Extend your
29
+ * Helper class for mods that want to represent their individual features as classes. Extend your
30
30
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
31
31
  * that automatically subscribe to callbacks.
32
32
  *
@@ -51,6 +51,9 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
51
51
  * }
52
52
  * ```
53
53
  *
54
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
55
+ * constructor.
56
+ *
54
57
  * In almost all cases, you will want the callback functions to be immediately subscribed after
55
58
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
56
59
  * second argument to the constructor.
@@ -58,7 +61,15 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
58
61
 
59
62
  export class ModFeature {
60
63
  private mod: ModUpgradedBase;
61
- private initialized = false;
64
+
65
+ /**
66
+ * Whether or not the feature has registered its callbacks yet (and submitted its variables to the
67
+ * save data manager, if any).
68
+ *
69
+ * This will almost always be equal to true unless you explicitly passed `false` to the second
70
+ * argument of the constructor.
71
+ */
72
+ public initialized = false;
62
73
 
63
74
  constructor(mod: ModUpgradedBase, init = true) {
64
75
  this.mod = mod;
@@ -31,6 +31,9 @@ export class RunInNFrames extends Feature {
31
31
  },
32
32
  };
33
33
 
34
+ // eslint-disable-next-line class-methods-use-this
35
+ public override vConditionalFunc = (): boolean => false;
36
+
34
37
  /** @internal */
35
38
  constructor() {
36
39
  super();
@@ -210,6 +210,8 @@ export class SaveDataManager extends Feature {
210
210
  * manage them for you. (See below for an example.)
211
211
  *
212
212
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
213
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
214
+ * will run before any of your code does.)
213
215
  *
214
216
  * The save data manager is meant to be called once for each feature of your mod. In other words,
215
217
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -266,10 +268,6 @@ export class SaveDataManager extends Feature {
266
268
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
267
269
  * helper function.
268
270
  *
269
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
270
- * your mod before registering any of your own callbacks so that the save data manager will run
271
- * before any of your code does.)
272
- *
273
271
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
274
272
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
275
273
  * data manager cannot do this on its own because it cannot know when your mod features are