isaacscript-common 17.1.0 → 17.2.1

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
@@ -4556,6 +4556,19 @@ export declare function getEffects(effectVariant?: EffectVariant, subType?: numb
4556
4556
  */
4557
4557
  export declare function getEffectsList(player: EntityPlayer): TemporaryEffect[];
4558
4558
 
4559
+ /**
4560
+ * Helper function to get the English name of the level. For example, "Caves 1".
4561
+ *
4562
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
4563
+ * which will not display correctly on some fonts.
4564
+ *
4565
+ * Note that this returns "Blue Womb" instead of "???" for stage 9.
4566
+ *
4567
+ * @param stage Optional. If not specified, the current stage will be used.
4568
+ * @param stageType Optional. If not specified, the current stage type will be used.
4569
+ */
4570
+ export declare function getEnglishLevelName(stage?: LevelStage, stageType?: StageType): string;
4571
+
4559
4572
  /**
4560
4573
  * Helper function to get all of the entities in the room or all of the entities that match a
4561
4574
  * specific entity type / variant / sub-type.
@@ -6630,8 +6643,8 @@ export declare function gridPositionToWorldPosition(gridPosition: Vector): Vecto
6630
6643
  * const value = MyEnumToString[MyEnum.Value2];
6631
6644
  * ```
6632
6645
  */
6633
- export declare type HasAllEnumKeys<T extends string | number> = {
6634
- readonly [key in T]: unknown;
6646
+ export declare type HasAllEnumKeys<Enum extends string | number, T> = {
6647
+ readonly [key in Enum]: T;
6635
6648
  };
6636
6649
 
6637
6650
  /**
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 17.1.0
3
+ isaacscript-common 17.2.1
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -25067,6 +25067,119 @@ function ____exports.reloadRoom(self)
25067
25067
  local roomGridIndex = getRoomGridIndex(nil)
25068
25068
  ____exports.teleport(nil, roomGridIndex, Direction.NO_DIRECTION, RoomTransitionAnim.FADE)
25069
25069
  end
25070
+ return ____exports
25071
+ end,
25072
+ ["src.objects.englishLevelNames"] = function(...)
25073
+ local ____exports = {}
25074
+ local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
25075
+ local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
25076
+ local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
25077
+ ____exports.ENGLISH_LEVEL_NAMES = {
25078
+ [LevelStage.BASEMENT_1] = {
25079
+ [StageType.ORIGINAL] = "Basement 1",
25080
+ [StageType.WRATH_OF_THE_LAMB] = "Cellar 1",
25081
+ [StageType.AFTERBIRTH] = "Burning Basement 1",
25082
+ [StageType.GREED_MODE] = "Basement",
25083
+ [StageType.REPENTANCE] = "Downpour 1",
25084
+ [StageType.REPENTANCE_B] = "Dross 1"
25085
+ },
25086
+ [LevelStage.BASEMENT_2] = {
25087
+ [StageType.ORIGINAL] = "Basement 2",
25088
+ [StageType.WRATH_OF_THE_LAMB] = "Cellar 2",
25089
+ [StageType.AFTERBIRTH] = "Burning Basement 2",
25090
+ [StageType.GREED_MODE] = "Basement",
25091
+ [StageType.REPENTANCE] = "Downpour 2",
25092
+ [StageType.REPENTANCE_B] = "Dross 2"
25093
+ },
25094
+ [LevelStage.CAVES_1] = {
25095
+ [StageType.ORIGINAL] = "Caves 1",
25096
+ [StageType.WRATH_OF_THE_LAMB] = "Catacombs 1",
25097
+ [StageType.AFTERBIRTH] = "Flooded Caves 1",
25098
+ [StageType.GREED_MODE] = "Caves",
25099
+ [StageType.REPENTANCE] = "Mines 1",
25100
+ [StageType.REPENTANCE_B] = "Ashpit 1"
25101
+ },
25102
+ [LevelStage.CAVES_2] = {
25103
+ [StageType.ORIGINAL] = "Caves 2",
25104
+ [StageType.WRATH_OF_THE_LAMB] = "Catacombs 2",
25105
+ [StageType.AFTERBIRTH] = "Flooded Caves 2",
25106
+ [StageType.GREED_MODE] = "Caves",
25107
+ [StageType.REPENTANCE] = "Mines 2",
25108
+ [StageType.REPENTANCE_B] = "Ashpit 2"
25109
+ },
25110
+ [LevelStage.DEPTHS_1] = {
25111
+ [StageType.ORIGINAL] = "Depths 1",
25112
+ [StageType.WRATH_OF_THE_LAMB] = "Necropolis 1",
25113
+ [StageType.AFTERBIRTH] = "Dank Depths 1",
25114
+ [StageType.GREED_MODE] = "Depths",
25115
+ [StageType.REPENTANCE] = "Mausoleum 1",
25116
+ [StageType.REPENTANCE_B] = "Gehenna 1"
25117
+ },
25118
+ [LevelStage.DEPTHS_2] = {
25119
+ [StageType.ORIGINAL] = "Depths 2",
25120
+ [StageType.WRATH_OF_THE_LAMB] = "Necropolis 2",
25121
+ [StageType.AFTERBIRTH] = "Dank Depths 2",
25122
+ [StageType.GREED_MODE] = "Depths",
25123
+ [StageType.REPENTANCE] = "Mausoleum 2",
25124
+ [StageType.REPENTANCE_B] = "Gehenna 2"
25125
+ },
25126
+ [LevelStage.WOMB_1] = {
25127
+ [StageType.ORIGINAL] = "Womb 1",
25128
+ [StageType.WRATH_OF_THE_LAMB] = "Utero 1",
25129
+ [StageType.AFTERBIRTH] = "Scarred Womb 1",
25130
+ [StageType.GREED_MODE] = "Womb",
25131
+ [StageType.REPENTANCE] = "Corpse 1",
25132
+ [StageType.REPENTANCE_B] = "Mortis 1"
25133
+ },
25134
+ [LevelStage.WOMB_2] = {
25135
+ [StageType.ORIGINAL] = "Womb 2",
25136
+ [StageType.WRATH_OF_THE_LAMB] = "Utero 2",
25137
+ [StageType.AFTERBIRTH] = "Scarred Womb 2",
25138
+ [StageType.GREED_MODE] = "Womb",
25139
+ [StageType.REPENTANCE] = "Corpse 2",
25140
+ [StageType.REPENTANCE_B] = "Mortis 2"
25141
+ },
25142
+ [LevelStage.BLUE_WOMB] = {
25143
+ [StageType.ORIGINAL] = "Blue Womb",
25144
+ [StageType.WRATH_OF_THE_LAMB] = "Blue Womb",
25145
+ [StageType.AFTERBIRTH] = "Blue Womb",
25146
+ [StageType.GREED_MODE] = "Blue Womb",
25147
+ [StageType.REPENTANCE] = "Blue Womb",
25148
+ [StageType.REPENTANCE_B] = "Blue Womb"
25149
+ },
25150
+ [LevelStage.SHEOL_CATHEDRAL] = {
25151
+ [StageType.ORIGINAL] = "Sheol",
25152
+ [StageType.WRATH_OF_THE_LAMB] = "Cathedral",
25153
+ [StageType.AFTERBIRTH] = "Undefined",
25154
+ [StageType.GREED_MODE] = "Sheol",
25155
+ [StageType.REPENTANCE] = "Undefined",
25156
+ [StageType.REPENTANCE_B] = "Undefined"
25157
+ },
25158
+ [LevelStage.DARK_ROOM_CHEST] = {
25159
+ [StageType.ORIGINAL] = "Dark Room",
25160
+ [StageType.WRATH_OF_THE_LAMB] = "The Chest",
25161
+ [StageType.AFTERBIRTH] = "Undefined",
25162
+ [StageType.GREED_MODE] = "The Shop",
25163
+ [StageType.REPENTANCE] = "Undefined",
25164
+ [StageType.REPENTANCE_B] = "Undefined"
25165
+ },
25166
+ [LevelStage.THE_VOID] = {
25167
+ [StageType.ORIGINAL] = "The Void",
25168
+ [StageType.WRATH_OF_THE_LAMB] = "The Void",
25169
+ [StageType.AFTERBIRTH] = "The Void",
25170
+ [StageType.GREED_MODE] = "The Void",
25171
+ [StageType.REPENTANCE] = "The Void",
25172
+ [StageType.REPENTANCE_B] = "The Void"
25173
+ },
25174
+ [LevelStage.HOME] = {
25175
+ [StageType.ORIGINAL] = "Home",
25176
+ [StageType.WRATH_OF_THE_LAMB] = "Home",
25177
+ [StageType.AFTERBIRTH] = "Home",
25178
+ [StageType.GREED_MODE] = "Home",
25179
+ [StageType.REPENTANCE] = "Home",
25180
+ [StageType.REPENTANCE_B] = "Home"
25181
+ }
25182
+ }
25070
25183
  return ____exports
25071
25184
  end,
25072
25185
  ["src.objects.roomTypeGotoPrefixes"] = function(...)
@@ -25142,6 +25255,8 @@ local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
25142
25255
  local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
25143
25256
  local ____cachedClasses = require("src.core.cachedClasses")
25144
25257
  local game = ____cachedClasses.game
25258
+ local ____englishLevelNames = require("src.objects.englishLevelNames")
25259
+ local ENGLISH_LEVEL_NAMES = ____englishLevelNames.ENGLISH_LEVEL_NAMES
25145
25260
  local ____roomTypeGotoPrefixes = require("src.objects.roomTypeGotoPrefixes")
25146
25261
  local ROOM_TYPE_GOTO_PREFIXES = ____roomTypeGotoPrefixes.ROOM_TYPE_GOTO_PREFIXES
25147
25262
  local ____stageTypeSuffixes = require("src.objects.stageTypeSuffixes")
@@ -25197,6 +25312,17 @@ function ____exports.getEffectiveStage(self)
25197
25312
  end
25198
25313
  return stage
25199
25314
  end
25315
+ function ____exports.getEnglishLevelName(self, stage, stageType)
25316
+ local level = game:GetLevel()
25317
+ if stage == nil then
25318
+ stage = level:GetStage()
25319
+ end
25320
+ if stageType == nil then
25321
+ stageType = level:GetStageType()
25322
+ end
25323
+ local stageNames = ENGLISH_LEVEL_NAMES[stage]
25324
+ return stageNames[stageType]
25325
+ end
25200
25326
  function ____exports.getGotoCommand(self, roomType, roomVariant)
25201
25327
  local prefix = ROOM_TYPE_GOTO_PREFIXES[roomType]
25202
25328
  return (("goto " .. prefix) .. ".") .. tostring(roomVariant)
@@ -15,6 +15,18 @@ export declare function calculateStageTypeRepentance(stage: LevelStage): StageTy
15
15
  * consider Downpour 2 to have a stage of 3.
16
16
  */
17
17
  export declare function getEffectiveStage(): int;
18
+ /**
19
+ * Helper function to get the English name of the level. For example, "Caves 1".
20
+ *
21
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
22
+ * which will not display correctly on some fonts.
23
+ *
24
+ * Note that this returns "Blue Womb" instead of "???" for stage 9.
25
+ *
26
+ * @param stage Optional. If not specified, the current stage will be used.
27
+ * @param stageType Optional. If not specified, the current stage type will be used.
28
+ */
29
+ export declare function getEnglishLevelName(stage?: LevelStage, stageType?: StageType): string;
18
30
  /**
19
31
  * Helper function to get the corresponding "goto" console command that would correspond to the
20
32
  * provided room type and room variant.
@@ -1 +1 @@
1
- {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../../src/functions/stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,8BAA8B,CAAC;AAOtC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CA6B/D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAmBzE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CASvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,CAG3E;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,IAAI,UAAU,CAIrC;AAED,iDAAiD;AACjD,wBAAgB,YAAY,IAAI,SAAS,CAIxC;AAED,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAIvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAI/D;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED,wBAAgB,OAAO,IAAI,OAAO,CASjC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAUtC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAKtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED,wBAAgB,OAAO,IAAI,OAAO,CAQjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,UAAQ,GACb,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE9D"}
1
+ {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../../src/functions/stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,QAAQ,EACR,SAAS,EACV,MAAM,8BAA8B,CAAC;AAQtC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CA6B/D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAmBzE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CASvC;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,CAAC,EAAE,UAAU,EAClB,SAAS,CAAC,EAAE,SAAS,GACpB,MAAM,CAaR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,CAG3E;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,IAAI,UAAU,CAIrC;AAED,iDAAiD;AACjD,wBAAgB,YAAY,IAAI,SAAS,CAIxC;AAED,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAIvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAI/D;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,wBAAgB,WAAW,IAAI,OAAO,CASrC;AAED,wBAAgB,OAAO,IAAI,OAAO,CASjC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAUtC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAKtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED,wBAAgB,OAAO,IAAI,OAAO,CAQjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,UAAQ,GACb,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE9D"}
@@ -5,6 +5,8 @@ local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
5
5
  local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
6
6
  local ____cachedClasses = require("src.core.cachedClasses")
7
7
  local game = ____cachedClasses.game
8
+ local ____englishLevelNames = require("src.objects.englishLevelNames")
9
+ local ENGLISH_LEVEL_NAMES = ____englishLevelNames.ENGLISH_LEVEL_NAMES
8
10
  local ____roomTypeGotoPrefixes = require("src.objects.roomTypeGotoPrefixes")
9
11
  local ROOM_TYPE_GOTO_PREFIXES = ____roomTypeGotoPrefixes.ROOM_TYPE_GOTO_PREFIXES
10
12
  local ____stageTypeSuffixes = require("src.objects.stageTypeSuffixes")
@@ -75,6 +77,26 @@ function ____exports.getEffectiveStage(self)
75
77
  end
76
78
  return stage
77
79
  end
80
+ --- Helper function to get the English name of the level. For example, "Caves 1".
81
+ --
82
+ -- This is useful because the `Level.GetName` method returns a localized version of the level name,
83
+ -- which will not display correctly on some fonts.
84
+ --
85
+ -- Note that this returns "Blue Womb" instead of "???" for stage 9.
86
+ --
87
+ -- @param stage Optional. If not specified, the current stage will be used.
88
+ -- @param stageType Optional. If not specified, the current stage type will be used.
89
+ function ____exports.getEnglishLevelName(self, stage, stageType)
90
+ local level = game:GetLevel()
91
+ if stage == nil then
92
+ stage = level:GetStage()
93
+ end
94
+ if stageType == nil then
95
+ stageType = level:GetStageType()
96
+ end
97
+ local stageNames = ENGLISH_LEVEL_NAMES[stage]
98
+ return stageNames[stageType]
99
+ end
78
100
  --- Helper function to get the corresponding "goto" console command that would correspond to the
79
101
  -- provided room type and room variant.
80
102
  function ____exports.getGotoCommand(self, roomType, roomVariant)
@@ -1,5 +1,6 @@
1
1
  import { CardType } from "isaac-typescript-definitions";
2
2
  export declare const DEFAULT_CARD_DESCRIPTION = "Unknown";
3
+ /** This is a temporary map due to missing features in the vanilla API. */
3
4
  export declare const CARD_DESCRIPTIONS: {
4
5
  readonly [key in CardType]: string;
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cardDescriptions.d.ts","sourceRoot":"","sources":["../../../src/objects/cardDescriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAGlD,eAAO,MAAM,iBAAiB,EAAE;IAAE,QAAQ,EAAE,GAAG,IAAI,QAAQ,GAAG,MAAM;CAmG1D,CAAC"}
1
+ {"version":3,"file":"cardDescriptions.d.ts","sourceRoot":"","sources":["../../../src/objects/cardDescriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAElD,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE;IAAE,QAAQ,EAAE,GAAG,IAAI,QAAQ,GAAG,MAAM;CAmG1D,CAAC"}
@@ -2,6 +2,7 @@ local ____exports = {}
2
2
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
3
3
  local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
4
4
  ____exports.DEFAULT_CARD_DESCRIPTION = "Unknown"
5
+ --- This is a temporary map due to missing features in the vanilla API.
5
6
  ____exports.CARD_DESCRIPTIONS = {
6
7
  [CardType.NULL] = ____exports.DEFAULT_CARD_DESCRIPTION,
7
8
  [CardType.FOOL] = "Where journey begins",
@@ -1,5 +1,6 @@
1
1
  import { CardType } from "isaac-typescript-definitions";
2
2
  export declare const DEFAULT_CARD_NAME = "Unknown";
3
+ /** This is a temporary map due to missing features in the vanilla API. */
3
4
  export declare const CARD_NAMES: {
4
5
  readonly [key in CardType]: string;
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cardNames.d.ts","sourceRoot":"","sources":["../../../src/objects/cardNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAG3C,eAAO,MAAM,UAAU,EAAE;IAAE,QAAQ,EAAE,GAAG,IAAI,QAAQ,GAAG,MAAM;CAmGnD,CAAC"}
1
+ {"version":3,"file":"cardNames.d.ts","sourceRoot":"","sources":["../../../src/objects/cardNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,0EAA0E;AAC1E,eAAO,MAAM,UAAU,EAAE;IAAE,QAAQ,EAAE,GAAG,IAAI,QAAQ,GAAG,MAAM;CAmGnD,CAAC"}
@@ -2,6 +2,7 @@ local ____exports = {}
2
2
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
3
3
  local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
4
4
  ____exports.DEFAULT_CARD_NAME = "Unknown"
5
+ --- This is a temporary map due to missing features in the vanilla API.
5
6
  ____exports.CARD_NAMES = {
6
7
  [CardType.NULL] = ____exports.DEFAULT_CARD_NAME,
7
8
  [CardType.FOOL] = "0 - The Fool",
@@ -0,0 +1,15 @@
1
+ import { LevelStage, StageType } from "isaac-typescript-definitions";
2
+ /**
3
+ * A mapping of stage and stage types to the corresponding English level name.
4
+ *
5
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
6
+ * which will not display correctly on some fonts.
7
+ *
8
+ * Note that this contains "Blue Womb" instead of "???" for stage 9.
9
+ */
10
+ export declare const ENGLISH_LEVEL_NAMES: {
11
+ readonly [levelStage in LevelStage]: {
12
+ readonly [stageType in StageType]: string;
13
+ };
14
+ };
15
+ //# sourceMappingURL=englishLevelNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"englishLevelNames.d.ts","sourceRoot":"","sources":["../../../src/objects/englishLevelNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGrE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC,QAAQ,EAAE,UAAU,IAAI,UAAU,GAAG;QACnC,QAAQ,EAAE,SAAS,IAAI,SAAS,GAAG,MAAM;KAC1C;CA0GO,CAAC"}
@@ -0,0 +1,117 @@
1
+ local ____exports = {}
2
+ local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
3
+ local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
4
+ local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
5
+ --- A mapping of stage and stage types to the corresponding English level name.
6
+ --
7
+ -- This is useful because the `Level.GetName` method returns a localized version of the level name,
8
+ -- which will not display correctly on some fonts.
9
+ --
10
+ -- Note that this contains "Blue Womb" instead of "???" for stage 9.
11
+ ____exports.ENGLISH_LEVEL_NAMES = {
12
+ [LevelStage.BASEMENT_1] = {
13
+ [StageType.ORIGINAL] = "Basement 1",
14
+ [StageType.WRATH_OF_THE_LAMB] = "Cellar 1",
15
+ [StageType.AFTERBIRTH] = "Burning Basement 1",
16
+ [StageType.GREED_MODE] = "Basement",
17
+ [StageType.REPENTANCE] = "Downpour 1",
18
+ [StageType.REPENTANCE_B] = "Dross 1"
19
+ },
20
+ [LevelStage.BASEMENT_2] = {
21
+ [StageType.ORIGINAL] = "Basement 2",
22
+ [StageType.WRATH_OF_THE_LAMB] = "Cellar 2",
23
+ [StageType.AFTERBIRTH] = "Burning Basement 2",
24
+ [StageType.GREED_MODE] = "Basement",
25
+ [StageType.REPENTANCE] = "Downpour 2",
26
+ [StageType.REPENTANCE_B] = "Dross 2"
27
+ },
28
+ [LevelStage.CAVES_1] = {
29
+ [StageType.ORIGINAL] = "Caves 1",
30
+ [StageType.WRATH_OF_THE_LAMB] = "Catacombs 1",
31
+ [StageType.AFTERBIRTH] = "Flooded Caves 1",
32
+ [StageType.GREED_MODE] = "Caves",
33
+ [StageType.REPENTANCE] = "Mines 1",
34
+ [StageType.REPENTANCE_B] = "Ashpit 1"
35
+ },
36
+ [LevelStage.CAVES_2] = {
37
+ [StageType.ORIGINAL] = "Caves 2",
38
+ [StageType.WRATH_OF_THE_LAMB] = "Catacombs 2",
39
+ [StageType.AFTERBIRTH] = "Flooded Caves 2",
40
+ [StageType.GREED_MODE] = "Caves",
41
+ [StageType.REPENTANCE] = "Mines 2",
42
+ [StageType.REPENTANCE_B] = "Ashpit 2"
43
+ },
44
+ [LevelStage.DEPTHS_1] = {
45
+ [StageType.ORIGINAL] = "Depths 1",
46
+ [StageType.WRATH_OF_THE_LAMB] = "Necropolis 1",
47
+ [StageType.AFTERBIRTH] = "Dank Depths 1",
48
+ [StageType.GREED_MODE] = "Depths",
49
+ [StageType.REPENTANCE] = "Mausoleum 1",
50
+ [StageType.REPENTANCE_B] = "Gehenna 1"
51
+ },
52
+ [LevelStage.DEPTHS_2] = {
53
+ [StageType.ORIGINAL] = "Depths 2",
54
+ [StageType.WRATH_OF_THE_LAMB] = "Necropolis 2",
55
+ [StageType.AFTERBIRTH] = "Dank Depths 2",
56
+ [StageType.GREED_MODE] = "Depths",
57
+ [StageType.REPENTANCE] = "Mausoleum 2",
58
+ [StageType.REPENTANCE_B] = "Gehenna 2"
59
+ },
60
+ [LevelStage.WOMB_1] = {
61
+ [StageType.ORIGINAL] = "Womb 1",
62
+ [StageType.WRATH_OF_THE_LAMB] = "Utero 1",
63
+ [StageType.AFTERBIRTH] = "Scarred Womb 1",
64
+ [StageType.GREED_MODE] = "Womb",
65
+ [StageType.REPENTANCE] = "Corpse 1",
66
+ [StageType.REPENTANCE_B] = "Mortis 1"
67
+ },
68
+ [LevelStage.WOMB_2] = {
69
+ [StageType.ORIGINAL] = "Womb 2",
70
+ [StageType.WRATH_OF_THE_LAMB] = "Utero 2",
71
+ [StageType.AFTERBIRTH] = "Scarred Womb 2",
72
+ [StageType.GREED_MODE] = "Womb",
73
+ [StageType.REPENTANCE] = "Corpse 2",
74
+ [StageType.REPENTANCE_B] = "Mortis 2"
75
+ },
76
+ [LevelStage.BLUE_WOMB] = {
77
+ [StageType.ORIGINAL] = "Blue Womb",
78
+ [StageType.WRATH_OF_THE_LAMB] = "Blue Womb",
79
+ [StageType.AFTERBIRTH] = "Blue Womb",
80
+ [StageType.GREED_MODE] = "Blue Womb",
81
+ [StageType.REPENTANCE] = "Blue Womb",
82
+ [StageType.REPENTANCE_B] = "Blue Womb"
83
+ },
84
+ [LevelStage.SHEOL_CATHEDRAL] = {
85
+ [StageType.ORIGINAL] = "Sheol",
86
+ [StageType.WRATH_OF_THE_LAMB] = "Cathedral",
87
+ [StageType.AFTERBIRTH] = "Undefined",
88
+ [StageType.GREED_MODE] = "Sheol",
89
+ [StageType.REPENTANCE] = "Undefined",
90
+ [StageType.REPENTANCE_B] = "Undefined"
91
+ },
92
+ [LevelStage.DARK_ROOM_CHEST] = {
93
+ [StageType.ORIGINAL] = "Dark Room",
94
+ [StageType.WRATH_OF_THE_LAMB] = "The Chest",
95
+ [StageType.AFTERBIRTH] = "Undefined",
96
+ [StageType.GREED_MODE] = "The Shop",
97
+ [StageType.REPENTANCE] = "Undefined",
98
+ [StageType.REPENTANCE_B] = "Undefined"
99
+ },
100
+ [LevelStage.THE_VOID] = {
101
+ [StageType.ORIGINAL] = "The Void",
102
+ [StageType.WRATH_OF_THE_LAMB] = "The Void",
103
+ [StageType.AFTERBIRTH] = "The Void",
104
+ [StageType.GREED_MODE] = "The Void",
105
+ [StageType.REPENTANCE] = "The Void",
106
+ [StageType.REPENTANCE_B] = "The Void"
107
+ },
108
+ [LevelStage.HOME] = {
109
+ [StageType.ORIGINAL] = "Home",
110
+ [StageType.WRATH_OF_THE_LAMB] = "Home",
111
+ [StageType.AFTERBIRTH] = "Home",
112
+ [StageType.GREED_MODE] = "Home",
113
+ [StageType.REPENTANCE] = "Home",
114
+ [StageType.REPENTANCE_B] = "Home"
115
+ }
116
+ }
117
+ return ____exports
@@ -20,7 +20,7 @@
20
20
  * const value = MyEnumToString[MyEnum.Value2];
21
21
  * ```
22
22
  */
23
- export type HasAllEnumKeys<T extends string | number> = {
24
- readonly [key in T]: unknown;
23
+ export type HasAllEnumKeys<Enum extends string | number, T> = {
24
+ readonly [key in Enum]: T;
25
25
  };
26
26
  //# sourceMappingURL=HasAllEnumKeys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasAllEnumKeys.d.ts","sourceRoot":"","sources":["../../../src/types/HasAllEnumKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO;CAC7B,CAAC"}
1
+ {"version":3,"file":"HasAllEnumKeys.d.ts","sourceRoot":"","sources":["../../../src/types/HasAllEnumKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI;IAC5D,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC;CAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "17.1.0",
3
+ "version": "17.2.1",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -5,6 +5,7 @@ import {
5
5
  StageType,
6
6
  } from "isaac-typescript-definitions";
7
7
  import { game } from "../core/cachedClasses";
8
+ import { ENGLISH_LEVEL_NAMES } from "../objects/englishLevelNames";
8
9
  import { ROOM_TYPE_GOTO_PREFIXES } from "../objects/roomTypeGotoPrefixes";
9
10
  import { STAGE_TYPE_SUFFIXES } from "../objects/stageTypeSuffixes";
10
11
  import { STAGE_TYPE_TO_LETTER } from "../objects/stageTypeToLetter";
@@ -86,6 +87,36 @@ export function getEffectiveStage(): int {
86
87
  return stage;
87
88
  }
88
89
 
90
+ // eslint-disable-next-line isaacscript/complete-sentences-jsdoc
91
+ /**
92
+ * Helper function to get the English name of the level. For example, "Caves 1".
93
+ *
94
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
95
+ * which will not display correctly on some fonts.
96
+ *
97
+ * Note that this returns "Blue Womb" instead of "???" for stage 9.
98
+ *
99
+ * @param stage Optional. If not specified, the current stage will be used.
100
+ * @param stageType Optional. If not specified, the current stage type will be used.
101
+ */
102
+ export function getEnglishLevelName(
103
+ stage?: LevelStage,
104
+ stageType?: StageType,
105
+ ): string {
106
+ const level = game.GetLevel();
107
+
108
+ if (stage === undefined) {
109
+ stage = level.GetStage();
110
+ }
111
+
112
+ if (stageType === undefined) {
113
+ stageType = level.GetStageType();
114
+ }
115
+
116
+ const stageNames = ENGLISH_LEVEL_NAMES[stage];
117
+ return stageNames[stageType];
118
+ }
119
+
89
120
  /**
90
121
  * Helper function to get the corresponding "goto" console command that would correspond to the
91
122
  * provided room type and room variant.
@@ -2,7 +2,7 @@ import { CardType } from "isaac-typescript-definitions";
2
2
 
3
3
  export const DEFAULT_CARD_DESCRIPTION = "Unknown";
4
4
 
5
- // This is a temporary map due to missing features in the vanilla API.
5
+ /** This is a temporary map due to missing features in the vanilla API. */
6
6
  export const CARD_DESCRIPTIONS: { readonly [key in CardType]: string } = {
7
7
  [CardType.NULL]: DEFAULT_CARD_DESCRIPTION, // 0
8
8
  [CardType.FOOL]: "Where journey begins", // 1
@@ -2,7 +2,7 @@ import { CardType } from "isaac-typescript-definitions";
2
2
 
3
3
  export const DEFAULT_CARD_NAME = "Unknown";
4
4
 
5
- // This is a temporary map due to missing features in the vanilla API.
5
+ /** This is a temporary map due to missing features in the vanilla API. */
6
6
  export const CARD_NAMES: { readonly [key in CardType]: string } = {
7
7
  [CardType.NULL]: DEFAULT_CARD_NAME,
8
8
  [CardType.FOOL]: "0 - The Fool",
@@ -0,0 +1,121 @@
1
+ import { LevelStage, StageType } from "isaac-typescript-definitions";
2
+
3
+ // eslint-disable-next-line isaacscript/complete-sentences-jsdoc
4
+ /**
5
+ * A mapping of stage and stage types to the corresponding English level name.
6
+ *
7
+ * This is useful because the `Level.GetName` method returns a localized version of the level name,
8
+ * which will not display correctly on some fonts.
9
+ *
10
+ * Note that this contains "Blue Womb" instead of "???" for stage 9.
11
+ */
12
+ export const ENGLISH_LEVEL_NAMES: {
13
+ readonly [levelStage in LevelStage]: {
14
+ readonly [stageType in StageType]: string;
15
+ };
16
+ } = {
17
+ [LevelStage.BASEMENT_1]: {
18
+ [StageType.ORIGINAL]: "Basement 1",
19
+ [StageType.WRATH_OF_THE_LAMB]: "Cellar 1",
20
+ [StageType.AFTERBIRTH]: "Burning Basement 1",
21
+ [StageType.GREED_MODE]: "Basement",
22
+ [StageType.REPENTANCE]: "Downpour 1",
23
+ [StageType.REPENTANCE_B]: "Dross 1",
24
+ },
25
+ [LevelStage.BASEMENT_2]: {
26
+ [StageType.ORIGINAL]: "Basement 2",
27
+ [StageType.WRATH_OF_THE_LAMB]: "Cellar 2",
28
+ [StageType.AFTERBIRTH]: "Burning Basement 2",
29
+ [StageType.GREED_MODE]: "Basement",
30
+ [StageType.REPENTANCE]: "Downpour 2",
31
+ [StageType.REPENTANCE_B]: "Dross 2",
32
+ },
33
+ [LevelStage.CAVES_1]: {
34
+ [StageType.ORIGINAL]: "Caves 1",
35
+ [StageType.WRATH_OF_THE_LAMB]: "Catacombs 1",
36
+ [StageType.AFTERBIRTH]: "Flooded Caves 1",
37
+ [StageType.GREED_MODE]: "Caves",
38
+ [StageType.REPENTANCE]: "Mines 1",
39
+ [StageType.REPENTANCE_B]: "Ashpit 1",
40
+ },
41
+ [LevelStage.CAVES_2]: {
42
+ [StageType.ORIGINAL]: "Caves 2",
43
+ [StageType.WRATH_OF_THE_LAMB]: "Catacombs 2",
44
+ [StageType.AFTERBIRTH]: "Flooded Caves 2",
45
+ [StageType.GREED_MODE]: "Caves",
46
+ [StageType.REPENTANCE]: "Mines 2",
47
+ [StageType.REPENTANCE_B]: "Ashpit 2",
48
+ },
49
+ [LevelStage.DEPTHS_1]: {
50
+ [StageType.ORIGINAL]: "Depths 1",
51
+ [StageType.WRATH_OF_THE_LAMB]: "Necropolis 1",
52
+ [StageType.AFTERBIRTH]: "Dank Depths 1",
53
+ [StageType.GREED_MODE]: "Depths",
54
+ [StageType.REPENTANCE]: "Mausoleum 1",
55
+ [StageType.REPENTANCE_B]: "Gehenna 1",
56
+ },
57
+ [LevelStage.DEPTHS_2]: {
58
+ [StageType.ORIGINAL]: "Depths 2",
59
+ [StageType.WRATH_OF_THE_LAMB]: "Necropolis 2",
60
+ [StageType.AFTERBIRTH]: "Dank Depths 2",
61
+ [StageType.GREED_MODE]: "Depths",
62
+ [StageType.REPENTANCE]: "Mausoleum 2",
63
+ [StageType.REPENTANCE_B]: "Gehenna 2",
64
+ },
65
+ [LevelStage.WOMB_1]: {
66
+ [StageType.ORIGINAL]: "Womb 1",
67
+ [StageType.WRATH_OF_THE_LAMB]: "Utero 1",
68
+ [StageType.AFTERBIRTH]: "Scarred Womb 1",
69
+ [StageType.GREED_MODE]: "Womb",
70
+ [StageType.REPENTANCE]: "Corpse 1",
71
+ [StageType.REPENTANCE_B]: "Mortis 1",
72
+ },
73
+ [LevelStage.WOMB_2]: {
74
+ [StageType.ORIGINAL]: "Womb 2",
75
+ [StageType.WRATH_OF_THE_LAMB]: "Utero 2",
76
+ [StageType.AFTERBIRTH]: "Scarred Womb 2",
77
+ [StageType.GREED_MODE]: "Womb",
78
+ [StageType.REPENTANCE]: "Corpse 2",
79
+ [StageType.REPENTANCE_B]: "Mortis 2",
80
+ },
81
+ [LevelStage.BLUE_WOMB]: {
82
+ [StageType.ORIGINAL]: "Blue Womb",
83
+ [StageType.WRATH_OF_THE_LAMB]: "Blue Womb",
84
+ [StageType.AFTERBIRTH]: "Blue Womb",
85
+ [StageType.GREED_MODE]: "Blue Womb",
86
+ [StageType.REPENTANCE]: "Blue Womb",
87
+ [StageType.REPENTANCE_B]: "Blue Womb",
88
+ },
89
+ [LevelStage.SHEOL_CATHEDRAL]: {
90
+ [StageType.ORIGINAL]: "Sheol",
91
+ [StageType.WRATH_OF_THE_LAMB]: "Cathedral",
92
+ [StageType.AFTERBIRTH]: "Undefined",
93
+ [StageType.GREED_MODE]: "Sheol",
94
+ [StageType.REPENTANCE]: "Undefined",
95
+ [StageType.REPENTANCE_B]: "Undefined",
96
+ },
97
+ [LevelStage.DARK_ROOM_CHEST]: {
98
+ [StageType.ORIGINAL]: "Dark Room",
99
+ [StageType.WRATH_OF_THE_LAMB]: "The Chest",
100
+ [StageType.AFTERBIRTH]: "Undefined",
101
+ [StageType.GREED_MODE]: "The Shop",
102
+ [StageType.REPENTANCE]: "Undefined",
103
+ [StageType.REPENTANCE_B]: "Undefined",
104
+ },
105
+ [LevelStage.THE_VOID]: {
106
+ [StageType.ORIGINAL]: "The Void",
107
+ [StageType.WRATH_OF_THE_LAMB]: "The Void",
108
+ [StageType.AFTERBIRTH]: "The Void",
109
+ [StageType.GREED_MODE]: "The Void",
110
+ [StageType.REPENTANCE]: "The Void",
111
+ [StageType.REPENTANCE_B]: "The Void",
112
+ },
113
+ [LevelStage.HOME]: {
114
+ [StageType.ORIGINAL]: "Home",
115
+ [StageType.WRATH_OF_THE_LAMB]: "Home",
116
+ [StageType.AFTERBIRTH]: "Home",
117
+ [StageType.GREED_MODE]: "Home",
118
+ [StageType.REPENTANCE]: "Home",
119
+ [StageType.REPENTANCE_B]: "Home",
120
+ },
121
+ } as const;
@@ -20,6 +20,6 @@
20
20
  * const value = MyEnumToString[MyEnum.Value2];
21
21
  * ```
22
22
  */
23
- export type HasAllEnumKeys<T extends string | number> = {
24
- readonly [key in T]: unknown;
23
+ export type HasAllEnumKeys<Enum extends string | number, T> = {
24
+ readonly [key in Enum]: T;
25
25
  };