isaacscript-common 57.5.0 → 57.8.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.
@@ -5031,6 +5031,16 @@ export declare function getCardName(cardType: CardType): string;
5031
5031
  */
5032
5032
  export declare function getCards(cardType?: CardType | -1): EntityPickupCard[];
5033
5033
 
5034
+ /**
5035
+ * Get the final boss of a challenge. This will only work for vanilla challenges.
5036
+ *
5037
+ * For modded challenges, `BossID.MOM` (6) will be returned.
5038
+ *
5039
+ * Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55),
5040
+ * but this is not actually the final boss. (There is no final boss for this challenge.)
5041
+ */
5042
+ export declare function getChallengeBoss(challenge: Challenge): BossID;
5043
+
5034
5044
  /**
5035
5045
  * Get the starting character of a challenge. This will only work for vanilla challenges.
5036
5046
  *
@@ -9712,6 +9722,13 @@ export declare function isStageWithStoryBoss(stage: LevelStage): boolean;
9712
9722
  */
9713
9723
  export declare function isStoryBoss(entityType: EntityType): boolean;
9714
9724
 
9725
+ /**
9726
+ * Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
9727
+ * Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
9728
+ * to non-story bosses, like Vanishing Twin.
9729
+ */
9730
+ export declare function isStoryBossID(bossID: BossID): boolean;
9731
+
9715
9732
  export declare function isString(variable: unknown): variable is string;
9716
9733
 
9717
9734
  /** Returns true for card types that have `ItemConfigCardType.SUIT`. */
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 57.5.0
3
+ isaacscript-common 57.8.0
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -21493,31 +21493,6 @@ ____exports.ENTITIES_WITH_ARMOR_SET = __TS__New(
21493
21493
  (tostring(EntityType.BEAST) .. ".") .. tostring(BeastVariant.ULTRA_DEATH)
21494
21494
  }
21495
21495
  )
21496
- return ____exports
21497
- end,
21498
- ["src.sets.storyBossEntityTypesSet"] = function(...)
21499
- local ____lualib = require("lualib_bundle")
21500
- local __TS__New = ____lualib.__TS__New
21501
- local ____exports = {}
21502
- local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
21503
- local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
21504
- local ____ReadonlySet = require("src.types.ReadonlySet")
21505
- local ReadonlySet = ____ReadonlySet.ReadonlySet
21506
- ____exports.STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {
21507
- EntityType.MOM,
21508
- EntityType.MOMS_HEART,
21509
- EntityType.SATAN,
21510
- EntityType.ISAAC,
21511
- EntityType.LAMB,
21512
- EntityType.MEGA_SATAN,
21513
- EntityType.MEGA_SATAN_2,
21514
- EntityType.ULTRA_GREED,
21515
- EntityType.HUSH,
21516
- EntityType.DELIRIUM,
21517
- EntityType.MOTHER,
21518
- EntityType.DOGMA,
21519
- EntityType.BEAST
21520
- })
21521
21496
  return ____exports
21522
21497
  end,
21523
21498
  ["src.types.AnyEntity"] = function(...)
@@ -21633,8 +21608,6 @@ local ____constants = require("src.core.constants")
21633
21608
  local VectorZero = ____constants.VectorZero
21634
21609
  local ____entitiesWithArmorSet = require("src.sets.entitiesWithArmorSet")
21635
21610
  local ENTITIES_WITH_ARMOR_SET = ____entitiesWithArmorSet.ENTITIES_WITH_ARMOR_SET
21636
- local ____storyBossEntityTypesSet = require("src.sets.storyBossEntityTypesSet")
21637
- local STORY_BOSS_ENTITY_TYPES_SET = ____storyBossEntityTypesSet.STORY_BOSS_ENTITY_TYPES_SET
21638
21611
  local ____isaacAPIClass = require("src.functions.isaacAPIClass")
21639
21612
  local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
21640
21613
  local ____random = require("src.functions.random")
@@ -21875,9 +21848,6 @@ function ____exports.isEntityMoving(self, entity, threshold)
21875
21848
  end
21876
21849
  return doesVectorHaveLength(nil, entity.Velocity, threshold)
21877
21850
  end
21878
- function ____exports.isStoryBoss(self, entityType)
21879
- return STORY_BOSS_ENTITY_TYPES_SET:has(entityType)
21880
- end
21881
21851
  function ____exports.parseEntityID(self, entityID)
21882
21852
  local entityIDArray = __TS__StringSplit(entityID, ".")
21883
21853
  if #entityIDArray ~= 3 then
@@ -44194,6 +44164,7 @@ local __TS__Spread = ____lualib.__TS__Spread
44194
44164
  local ____exports = {}
44195
44165
  local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
44196
44166
  local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
44167
+ local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
44197
44168
  local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
44198
44169
  local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
44199
44170
  local ____cachedEnumValues = require("src.arrays.cachedEnumValues")
@@ -44510,7 +44481,7 @@ ____exports.ALL_BOSSES_SET = __TS__New(
44510
44481
  function(____, bossID) return bossID ~= BossID.RAGLICH end
44511
44482
  )
44512
44483
  )
44513
- local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
44484
+ ____exports.STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
44514
44485
  BossID.MOM,
44515
44486
  BossID.MOMS_HEART,
44516
44487
  BossID.SATAN,
@@ -44529,11 +44500,26 @@ local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
44529
44500
  BossID.DOGMA,
44530
44501
  BossID.BEAST
44531
44502
  })
44503
+ ____exports.STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {
44504
+ EntityType.MOM,
44505
+ EntityType.MOMS_HEART,
44506
+ EntityType.SATAN,
44507
+ EntityType.ISAAC,
44508
+ EntityType.LAMB,
44509
+ EntityType.MEGA_SATAN,
44510
+ EntityType.MEGA_SATAN_2,
44511
+ EntityType.ULTRA_GREED,
44512
+ EntityType.HUSH,
44513
+ EntityType.DELIRIUM,
44514
+ EntityType.MOTHER,
44515
+ EntityType.DOGMA,
44516
+ EntityType.BEAST
44517
+ })
44532
44518
  ____exports.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = __TS__New(
44533
44519
  ReadonlySet,
44534
44520
  __TS__ArrayFilter(
44535
44521
  {__TS__Spread(____exports.ALL_BOSSES_SET)},
44536
- function(____, bossID) return not STORY_BOSS_IDS_SET:has(bossID) end
44522
+ function(____, bossID) return not ____exports.STORY_BOSS_IDS_SET:has(bossID) end
44537
44523
  )
44538
44524
  )
44539
44525
  return ____exports
@@ -44733,6 +44719,8 @@ local ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = ____bossSets.ALL_BOSSES_EXCLUDING_
44733
44719
  local ALL_BOSSES_SET = ____bossSets.ALL_BOSSES_SET
44734
44720
  local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP
44735
44721
  local STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = ____bossSets.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP
44722
+ local STORY_BOSS_ENTITY_TYPES_SET = ____bossSets.STORY_BOSS_ENTITY_TYPES_SET
44723
+ local STORY_BOSS_IDS_SET = ____bossSets.STORY_BOSS_IDS_SET
44736
44724
  local ____repentanceBossIDsSet = require("src.sets.repentanceBossIDsSet")
44737
44725
  local REPENTANCE_ONLY_BOSS_IDS_SET = ____repentanceBossIDsSet.REPENTANCE_ONLY_BOSS_IDS_SET
44738
44726
  local ____sinEntityTypesSet = require("src.sets.sinEntityTypesSet")
@@ -44841,26 +44829,29 @@ end
44841
44829
  function ____exports.isRepentanceBoss(self, bossID)
44842
44830
  return REPENTANCE_ONLY_BOSS_IDS_SET:has(bossID)
44843
44831
  end
44832
+ function ____exports.isSin(self, npc)
44833
+ return SIN_ENTITY_TYPES_SET:has(npc.Type)
44834
+ end
44844
44835
  local function getNumBossSegments(self, entityType, variant, numSegments)
44845
44836
  if numSegments ~= nil then
44846
44837
  return numSegments
44847
44838
  end
44848
44839
  repeat
44849
- local ____switch19 = entityType
44850
- local ____cond19 = ____switch19 == EntityType.CHUB
44851
- if ____cond19 then
44840
+ local ____switch20 = entityType
44841
+ local ____cond20 = ____switch20 == EntityType.CHUB
44842
+ if ____cond20 then
44852
44843
  do
44853
44844
  return 3
44854
44845
  end
44855
44846
  end
44856
- ____cond19 = ____cond19 or ____switch19 == EntityType.LOKI
44857
- if ____cond19 then
44847
+ ____cond20 = ____cond20 or ____switch20 == EntityType.LOKI
44848
+ if ____cond20 then
44858
44849
  do
44859
44850
  return variant == asNumber(nil, LokiVariant.LOKII) and 2 or 1
44860
44851
  end
44861
44852
  end
44862
- ____cond19 = ____cond19 or ____switch19 == EntityType.GURGLING
44863
- if ____cond19 then
44853
+ ____cond20 = ____cond20 or ____switch20 == EntityType.GURGLING
44854
+ if ____cond20 then
44864
44855
  do
44865
44856
  return 2
44866
44857
  end
@@ -44872,8 +44863,11 @@ local function getNumBossSegments(self, entityType, variant, numSegments)
44872
44863
  end
44873
44864
  until true
44874
44865
  end
44875
- function ____exports.isSin(self, npc)
44876
- return SIN_ENTITY_TYPES_SET:has(npc.Type)
44866
+ function ____exports.isStoryBoss(self, entityType)
44867
+ return STORY_BOSS_ENTITY_TYPES_SET:has(entityType)
44868
+ end
44869
+ function ____exports.isStoryBossID(self, bossID)
44870
+ return STORY_BOSS_IDS_SET:has(bossID)
44877
44871
  end
44878
44872
  function ____exports.spawnBoss(self, entityType, variant, subType, positionOrGridIndex, velocity, spawner, seedOrRNG, numSegments)
44879
44873
  if velocity == nil then
@@ -54364,6 +54358,62 @@ function ____exports.getBombRadiusFromDamage(self, damage)
54364
54358
  end
54365
54359
  return 90
54366
54360
  end
54361
+ return ____exports
54362
+ end,
54363
+ ["src.objects.challengeBosses"] = function(...)
54364
+ local ____exports = {}
54365
+ local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
54366
+ local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
54367
+ local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
54368
+ ____exports.DEFAULT_CHALLENGE_BOSS_ID = BossID.MOM
54369
+ ____exports.CHALLENGE_BOSSES = {
54370
+ [Challenge.NULL] = BossID.MOM,
54371
+ [Challenge.PITCH_BLACK] = BossID.MOM,
54372
+ [Challenge.HIGH_BROW] = BossID.MOM,
54373
+ [Challenge.HEAD_TRAUMA] = BossID.MOM,
54374
+ [Challenge.DARKNESS_FALLS] = BossID.SATAN,
54375
+ [Challenge.TANK] = BossID.MOM,
54376
+ [Challenge.SOLAR_SYSTEM] = BossID.MOMS_HEART,
54377
+ [Challenge.SUICIDE_KING] = BossID.ISAAC,
54378
+ [Challenge.CAT_GOT_YOUR_TONGUE] = BossID.MOM,
54379
+ [Challenge.DEMO_MAN] = BossID.MOMS_HEART,
54380
+ [Challenge.CURSED] = BossID.MOM,
54381
+ [Challenge.GLASS_CANNON] = BossID.SATAN,
54382
+ [Challenge.WHEN_LIFE_GIVES_LEMONS] = BossID.MOM,
54383
+ [Challenge.BEANS] = BossID.MOM,
54384
+ [Challenge.ITS_IN_THE_CARDS] = BossID.MOM,
54385
+ [Challenge.SLOW_ROLL] = BossID.MOM,
54386
+ [Challenge.COMPUTER_SAVY] = BossID.MOM,
54387
+ [Challenge.WAKA_WAKA] = BossID.MOM,
54388
+ [Challenge.HOST] = BossID.MOM,
54389
+ [Challenge.FAMILY_MAN] = BossID.ISAAC,
54390
+ [Challenge.PURIST] = BossID.MOMS_HEART,
54391
+ [Challenge.XXXXXXXXL] = BossID.MOMS_HEART,
54392
+ [Challenge.SPEED] = BossID.MOMS_HEART,
54393
+ [Challenge.BLUE_BOMBER] = BossID.SATAN,
54394
+ [Challenge.PAY_TO_PLAY] = BossID.ISAAC,
54395
+ [Challenge.HAVE_A_HEART] = BossID.MOMS_HEART,
54396
+ [Challenge.I_RULE] = BossID.MEGA_SATAN,
54397
+ [Challenge.BRAINS] = BossID.BLUE_BABY,
54398
+ [Challenge.PRIDE_DAY] = BossID.MOMS_HEART,
54399
+ [Challenge.ONANS_STREAK] = BossID.ISAAC,
54400
+ [Challenge.GUARDIAN] = BossID.MOMS_HEART,
54401
+ [Challenge.BACKASSWARDS] = BossID.MEGA_SATAN,
54402
+ [Challenge.APRILS_FOOL] = BossID.MOMS_HEART,
54403
+ [Challenge.POKEY_MANS] = BossID.ISAAC,
54404
+ [Challenge.ULTRA_HARD] = BossID.MEGA_SATAN,
54405
+ [Challenge.PONG] = BossID.BLUE_BABY,
54406
+ [Challenge.SCAT_MAN] = BossID.MOM,
54407
+ [Challenge.BLOODY_MARY] = BossID.SATAN,
54408
+ [Challenge.BAPTISM_BY_FIRE] = BossID.SATAN,
54409
+ [Challenge.ISAACS_AWAKENING] = BossID.MOTHER,
54410
+ [Challenge.SEEING_DOUBLE] = BossID.MOMS_HEART,
54411
+ [Challenge.PICA_RUN] = BossID.ISAAC,
54412
+ [Challenge.HOT_POTATO] = BossID.SATAN,
54413
+ [Challenge.CANTRIPPED] = BossID.MOM,
54414
+ [Challenge.RED_REDEMPTION] = BossID.MOTHER,
54415
+ [Challenge.DELETE_THIS] = BossID.BLUE_BABY
54416
+ }
54367
54417
  return ____exports
54368
54418
  end,
54369
54419
  ["src.objects.challengeCharacters"] = function(...)
@@ -54479,12 +54529,19 @@ return ____exports
54479
54529
  end,
54480
54530
  ["src.functions.challenges"] = function(...)
54481
54531
  local ____exports = {}
54532
+ local ____challengeBosses = require("src.objects.challengeBosses")
54533
+ local CHALLENGE_BOSSES = ____challengeBosses.CHALLENGE_BOSSES
54534
+ local DEFAULT_CHALLENGE_BOSS_ID = ____challengeBosses.DEFAULT_CHALLENGE_BOSS_ID
54482
54535
  local ____challengeCharacters = require("src.objects.challengeCharacters")
54483
54536
  local CHALLENGE_CHARACTERS = ____challengeCharacters.CHALLENGE_CHARACTERS
54484
54537
  local DEFAULT_CHALLENGE_CHARACTER = ____challengeCharacters.DEFAULT_CHALLENGE_CHARACTER
54485
54538
  local ____challengeNames = require("src.objects.challengeNames")
54486
54539
  local CHALLENGE_NAMES = ____challengeNames.CHALLENGE_NAMES
54487
54540
  local DEFAULT_CHALLENGE_NAME = ____challengeNames.DEFAULT_CHALLENGE_NAME
54541
+ function ____exports.getChallengeBoss(self, challenge)
54542
+ local challengeBossID = CHALLENGE_BOSSES[challenge]
54543
+ return challengeBossID or DEFAULT_CHALLENGE_BOSS_ID
54544
+ end
54488
54545
  function ____exports.getChallengeCharacter(self, challenge)
54489
54546
  local challengeCharacter = CHALLENGE_CHARACTERS[challenge]
54490
54547
  return challengeCharacter or DEFAULT_CHALLENGE_CHARACTER
@@ -88,6 +88,18 @@ export declare function getEntityTypeVariantFromBossID(bossID: BossID): readonly
88
88
  export declare function isRepentanceBoss(bossID: BossID): boolean;
89
89
  /** Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust. */
90
90
  export declare function isSin(npc: EntityNPC): boolean;
91
+ /**
92
+ * Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
93
+ * Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
94
+ * apply to non-story bosses, like Vanishing Twin.
95
+ */
96
+ export declare function isStoryBoss(entityType: EntityType): boolean;
97
+ /**
98
+ * Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
99
+ * Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
100
+ * to non-story bosses, like Vanishing Twin.
101
+ */
102
+ export declare function isStoryBossID(bossID: BossID): boolean;
91
103
  /**
92
104
  * Helper function to spawn a boss.
93
105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bosses.d.ts","sourceRoot":"","sources":["../../../src/functions/bosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAe,MAAM,8BAA8B,CAAC;AAgC/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,UAAU,GAAE,UAAU,GAAG,CAAC,CAAM,EAChC,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,kBAAkB,UAAO,GACxB,WAAW,CAAC,MAAM,CAAC,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,CAAC,CAWtC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,GACX,MAAM,GAAG,SAAS,CAGpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,GACnB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAOjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAChB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAmCD,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,SAAS,GAAE,IAAI,GAAG,GAAG,GAAG,SAAqB,EAC7C,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAiCX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,SAAS,EAAE,IAAI,GAAG,GAAG,EACrB,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAYX"}
1
+ {"version":3,"file":"bosses.d.ts","sourceRoot":"","sources":["../../../src/functions/bosses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAe,MAAM,8BAA8B,CAAC;AAkC/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,UAAU,GAAE,UAAU,GAAG,CAAC,CAAM,EAChC,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,kBAAkB,UAAO,GACxB,WAAW,CAAC,MAAM,CAAC,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,CAAC,CAWtC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,GACX,MAAM,GAAG,SAAS,CAGpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,GACnB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAOjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAChB,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE7C;AAmCD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,SAAS,GAAE,IAAI,GAAG,GAAG,GAAG,SAAqB,EAC7C,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAiCX;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,MAAM,GAAG,GAAG,EACjC,SAAS,EAAE,IAAI,GAAG,GAAG,EACrB,QAAQ,GAAE,MAAmB,EAC7B,OAAO,GAAE,MAAM,GAAG,SAAqB,EACvC,WAAW,CAAC,EAAE,GAAG,GAChB,SAAS,CAYX"}
@@ -22,6 +22,8 @@ local ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = ____bossSets.ALL_BOSSES_EXCLUDING_
22
22
  local ALL_BOSSES_SET = ____bossSets.ALL_BOSSES_SET
23
23
  local STAGE_TO_COMBINED_BOSS_SET_MAP = ____bossSets.STAGE_TO_COMBINED_BOSS_SET_MAP
24
24
  local STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP = ____bossSets.STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP
25
+ local STORY_BOSS_ENTITY_TYPES_SET = ____bossSets.STORY_BOSS_ENTITY_TYPES_SET
26
+ local STORY_BOSS_IDS_SET = ____bossSets.STORY_BOSS_IDS_SET
25
27
  local ____repentanceBossIDsSet = require("src.sets.repentanceBossIDsSet")
26
28
  local REPENTANCE_ONLY_BOSS_IDS_SET = ____repentanceBossIDsSet.REPENTANCE_ONLY_BOSS_IDS_SET
27
29
  local ____sinEntityTypesSet = require("src.sets.sinEntityTypesSet")
@@ -190,26 +192,30 @@ end
190
192
  function ____exports.isRepentanceBoss(self, bossID)
191
193
  return REPENTANCE_ONLY_BOSS_IDS_SET:has(bossID)
192
194
  end
195
+ --- Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust.
196
+ function ____exports.isSin(self, npc)
197
+ return SIN_ENTITY_TYPES_SET:has(npc.Type)
198
+ end
193
199
  local function getNumBossSegments(self, entityType, variant, numSegments)
194
200
  if numSegments ~= nil then
195
201
  return numSegments
196
202
  end
197
203
  repeat
198
- local ____switch19 = entityType
199
- local ____cond19 = ____switch19 == EntityType.CHUB
200
- if ____cond19 then
204
+ local ____switch20 = entityType
205
+ local ____cond20 = ____switch20 == EntityType.CHUB
206
+ if ____cond20 then
201
207
  do
202
208
  return 3
203
209
  end
204
210
  end
205
- ____cond19 = ____cond19 or ____switch19 == EntityType.LOKI
206
- if ____cond19 then
211
+ ____cond20 = ____cond20 or ____switch20 == EntityType.LOKI
212
+ if ____cond20 then
207
213
  do
208
214
  return variant == asNumber(nil, LokiVariant.LOKII) and 2 or 1
209
215
  end
210
216
  end
211
- ____cond19 = ____cond19 or ____switch19 == EntityType.GURGLING
212
- if ____cond19 then
217
+ ____cond20 = ____cond20 or ____switch20 == EntityType.GURGLING
218
+ if ____cond20 then
213
219
  do
214
220
  return 2
215
221
  end
@@ -221,9 +227,17 @@ local function getNumBossSegments(self, entityType, variant, numSegments)
221
227
  end
222
228
  until true
223
229
  end
224
- --- Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust.
225
- function ____exports.isSin(self, npc)
226
- return SIN_ENTITY_TYPES_SET:has(npc.Type)
230
+ --- Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
231
+ -- Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
232
+ -- apply to non-story bosses, like Vanishing Twin.
233
+ function ____exports.isStoryBoss(self, entityType)
234
+ return STORY_BOSS_ENTITY_TYPES_SET:has(entityType)
235
+ end
236
+ --- Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
237
+ -- Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
238
+ -- to non-story bosses, like Vanishing Twin.
239
+ function ____exports.isStoryBossID(self, bossID)
240
+ return STORY_BOSS_IDS_SET:has(bossID)
227
241
  end
228
242
  --- Helper function to spawn a boss.
229
243
  --
@@ -1,4 +1,13 @@
1
- import type { Challenge, PlayerType } from "isaac-typescript-definitions";
1
+ import type { BossID, Challenge, PlayerType } from "isaac-typescript-definitions";
2
+ /**
3
+ * Get the final boss of a challenge. This will only work for vanilla challenges.
4
+ *
5
+ * For modded challenges, `BossID.MOM` (6) will be returned.
6
+ *
7
+ * Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55),
8
+ * but this is not actually the final boss. (There is no final boss for this challenge.)
9
+ */
10
+ export declare function getChallengeBoss(challenge: Challenge): BossID;
2
11
  /**
3
12
  * Get the starting character of a challenge. This will only work for vanilla challenges.
4
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"challenges.d.ts","sourceRoot":"","sources":["../../../src/functions/challenges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAU1E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAKtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAK7D"}
1
+ {"version":3,"file":"challenges.d.ts","sourceRoot":"","sources":["../../../src/functions/challenges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,UAAU,EACX,MAAM,8BAA8B,CAAC;AActC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAKtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAK7D"}
@@ -1,10 +1,23 @@
1
1
  local ____exports = {}
2
+ local ____challengeBosses = require("src.objects.challengeBosses")
3
+ local CHALLENGE_BOSSES = ____challengeBosses.CHALLENGE_BOSSES
4
+ local DEFAULT_CHALLENGE_BOSS_ID = ____challengeBosses.DEFAULT_CHALLENGE_BOSS_ID
2
5
  local ____challengeCharacters = require("src.objects.challengeCharacters")
3
6
  local CHALLENGE_CHARACTERS = ____challengeCharacters.CHALLENGE_CHARACTERS
4
7
  local DEFAULT_CHALLENGE_CHARACTER = ____challengeCharacters.DEFAULT_CHALLENGE_CHARACTER
5
8
  local ____challengeNames = require("src.objects.challengeNames")
6
9
  local CHALLENGE_NAMES = ____challengeNames.CHALLENGE_NAMES
7
10
  local DEFAULT_CHALLENGE_NAME = ____challengeNames.DEFAULT_CHALLENGE_NAME
11
+ --- Get the final boss of a challenge. This will only work for vanilla challenges.
12
+ --
13
+ -- For modded challenges, `BossID.MOM` (6) will be returned.
14
+ --
15
+ -- Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55),
16
+ -- but this is not actually the final boss. (There is no final boss for this challenge.)
17
+ function ____exports.getChallengeBoss(self, challenge)
18
+ local challengeBossID = CHALLENGE_BOSSES[challenge]
19
+ return challengeBossID or DEFAULT_CHALLENGE_BOSS_ID
20
+ end
8
21
  --- Get the starting character of a challenge. This will only work for vanilla challenges.
9
22
  --
10
23
  -- For modded challenges, `PlayerType.ISAAC` (0) will be returned.
@@ -124,12 +124,6 @@ export declare function hasArmor(entity: Entity): boolean;
124
124
  * @param threshold Optional. The threshold from 0 to consider to be moving. Default is 0.01.
125
125
  */
126
126
  export declare function isEntityMoving(entity: Entity, threshold?: number): boolean;
127
- /**
128
- * Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
129
- * Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
130
- * apply to non-story bosses, like Vanishing Twin.
131
- */
132
- export declare function isStoryBoss(entityType: EntityType): boolean;
133
127
  /**
134
128
  * Helper function to parse a string that contains an entity type, a variant, and a sub-type,
135
129
  * separated by periods.
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/functions/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/functions/entities.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,6 @@ local ____constants = require("src.core.constants")
16
16
  local VectorZero = ____constants.VectorZero
17
17
  local ____entitiesWithArmorSet = require("src.sets.entitiesWithArmorSet")
18
18
  local ENTITIES_WITH_ARMOR_SET = ____entitiesWithArmorSet.ENTITIES_WITH_ARMOR_SET
19
- local ____storyBossEntityTypesSet = require("src.sets.storyBossEntityTypesSet")
20
- local STORY_BOSS_ENTITY_TYPES_SET = ____storyBossEntityTypesSet.STORY_BOSS_ENTITY_TYPES_SET
21
19
  local ____isaacAPIClass = require("src.functions.isaacAPIClass")
22
20
  local getIsaacAPIClassName = ____isaacAPIClass.getIsaacAPIClassName
23
21
  local ____random = require("src.functions.random")
@@ -351,12 +349,6 @@ function ____exports.isEntityMoving(self, entity, threshold)
351
349
  end
352
350
  return doesVectorHaveLength(nil, entity.Velocity, threshold)
353
351
  end
354
- --- Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
355
- -- Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
356
- -- apply to non-story bosses, like Vanishing Twin.
357
- function ____exports.isStoryBoss(self, entityType)
358
- return STORY_BOSS_ENTITY_TYPES_SET:has(entityType)
359
- end
360
352
  --- Helper function to parse a string that contains an entity type, a variant, and a sub-type,
361
353
  -- separated by periods.
362
354
  --
@@ -0,0 +1,56 @@
1
+ import { BossID } from "isaac-typescript-definitions";
2
+ export declare const DEFAULT_CHALLENGE_BOSS_ID = BossID.MOM;
3
+ /**
4
+ * Taken from the "challenges.xml" file.
5
+ *
6
+ * @see https://bindingofisaacrebirth.fandom.com/wiki/Challenges
7
+ */
8
+ export declare const CHALLENGE_BOSSES: {
9
+ readonly 0: BossID.MOM;
10
+ readonly 1: BossID.MOM;
11
+ readonly 2: BossID.MOM;
12
+ readonly 3: BossID.MOM;
13
+ readonly 4: BossID.SATAN;
14
+ readonly 5: BossID.MOM;
15
+ readonly 6: BossID.MOMS_HEART;
16
+ readonly 7: BossID.ISAAC;
17
+ readonly 8: BossID.MOM;
18
+ readonly 9: BossID.MOMS_HEART;
19
+ readonly 10: BossID.MOM;
20
+ readonly 11: BossID.SATAN;
21
+ readonly 12: BossID.MOM;
22
+ readonly 13: BossID.MOM;
23
+ readonly 14: BossID.MOM;
24
+ readonly 15: BossID.MOM;
25
+ readonly 16: BossID.MOM;
26
+ readonly 17: BossID.MOM;
27
+ readonly 18: BossID.MOM;
28
+ readonly 19: BossID.ISAAC;
29
+ readonly 20: BossID.MOMS_HEART;
30
+ readonly 21: BossID.MOMS_HEART;
31
+ readonly 22: BossID.MOMS_HEART;
32
+ readonly 23: BossID.SATAN;
33
+ readonly 24: BossID.ISAAC;
34
+ readonly 25: BossID.MOMS_HEART;
35
+ readonly 26: BossID.MEGA_SATAN;
36
+ readonly 27: BossID.BLUE_BABY;
37
+ readonly 28: BossID.MOMS_HEART;
38
+ readonly 29: BossID.ISAAC;
39
+ readonly 30: BossID.MOMS_HEART;
40
+ readonly 31: BossID.MEGA_SATAN;
41
+ readonly 32: BossID.MOMS_HEART;
42
+ readonly 33: BossID.ISAAC;
43
+ readonly 34: BossID.MEGA_SATAN;
44
+ readonly 35: BossID.BLUE_BABY;
45
+ readonly 36: BossID.MOM;
46
+ readonly 37: BossID.SATAN;
47
+ readonly 38: BossID.SATAN;
48
+ readonly 39: BossID.MOTHER;
49
+ readonly 40: BossID.MOMS_HEART;
50
+ readonly 41: BossID.ISAAC;
51
+ readonly 42: BossID.SATAN;
52
+ readonly 43: BossID.MOM;
53
+ readonly 44: BossID.MOTHER;
54
+ readonly 45: BossID.BLUE_BABY;
55
+ };
56
+ //# sourceMappingURL=challengeBosses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challengeBosses.d.ts","sourceRoot":"","sources":["../../../src/objects/challengeBosses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,8BAA8B,CAAC;AAEjE,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CiB,CAAC"}
@@ -0,0 +1,57 @@
1
+ local ____exports = {}
2
+ local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
3
+ local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
4
+ local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
5
+ ____exports.DEFAULT_CHALLENGE_BOSS_ID = BossID.MOM
6
+ --- Taken from the "challenges.xml" file.
7
+ --
8
+ -- @see https ://bindingofisaacrebirth.fandom.com/wiki/Challenges
9
+ ____exports.CHALLENGE_BOSSES = {
10
+ [Challenge.NULL] = BossID.MOM,
11
+ [Challenge.PITCH_BLACK] = BossID.MOM,
12
+ [Challenge.HIGH_BROW] = BossID.MOM,
13
+ [Challenge.HEAD_TRAUMA] = BossID.MOM,
14
+ [Challenge.DARKNESS_FALLS] = BossID.SATAN,
15
+ [Challenge.TANK] = BossID.MOM,
16
+ [Challenge.SOLAR_SYSTEM] = BossID.MOMS_HEART,
17
+ [Challenge.SUICIDE_KING] = BossID.ISAAC,
18
+ [Challenge.CAT_GOT_YOUR_TONGUE] = BossID.MOM,
19
+ [Challenge.DEMO_MAN] = BossID.MOMS_HEART,
20
+ [Challenge.CURSED] = BossID.MOM,
21
+ [Challenge.GLASS_CANNON] = BossID.SATAN,
22
+ [Challenge.WHEN_LIFE_GIVES_LEMONS] = BossID.MOM,
23
+ [Challenge.BEANS] = BossID.MOM,
24
+ [Challenge.ITS_IN_THE_CARDS] = BossID.MOM,
25
+ [Challenge.SLOW_ROLL] = BossID.MOM,
26
+ [Challenge.COMPUTER_SAVY] = BossID.MOM,
27
+ [Challenge.WAKA_WAKA] = BossID.MOM,
28
+ [Challenge.HOST] = BossID.MOM,
29
+ [Challenge.FAMILY_MAN] = BossID.ISAAC,
30
+ [Challenge.PURIST] = BossID.MOMS_HEART,
31
+ [Challenge.XXXXXXXXL] = BossID.MOMS_HEART,
32
+ [Challenge.SPEED] = BossID.MOMS_HEART,
33
+ [Challenge.BLUE_BOMBER] = BossID.SATAN,
34
+ [Challenge.PAY_TO_PLAY] = BossID.ISAAC,
35
+ [Challenge.HAVE_A_HEART] = BossID.MOMS_HEART,
36
+ [Challenge.I_RULE] = BossID.MEGA_SATAN,
37
+ [Challenge.BRAINS] = BossID.BLUE_BABY,
38
+ [Challenge.PRIDE_DAY] = BossID.MOMS_HEART,
39
+ [Challenge.ONANS_STREAK] = BossID.ISAAC,
40
+ [Challenge.GUARDIAN] = BossID.MOMS_HEART,
41
+ [Challenge.BACKASSWARDS] = BossID.MEGA_SATAN,
42
+ [Challenge.APRILS_FOOL] = BossID.MOMS_HEART,
43
+ [Challenge.POKEY_MANS] = BossID.ISAAC,
44
+ [Challenge.ULTRA_HARD] = BossID.MEGA_SATAN,
45
+ [Challenge.PONG] = BossID.BLUE_BABY,
46
+ [Challenge.SCAT_MAN] = BossID.MOM,
47
+ [Challenge.BLOODY_MARY] = BossID.SATAN,
48
+ [Challenge.BAPTISM_BY_FIRE] = BossID.SATAN,
49
+ [Challenge.ISAACS_AWAKENING] = BossID.MOTHER,
50
+ [Challenge.SEEING_DOUBLE] = BossID.MOMS_HEART,
51
+ [Challenge.PICA_RUN] = BossID.ISAAC,
52
+ [Challenge.HOT_POTATO] = BossID.SATAN,
53
+ [Challenge.CANTRIPPED] = BossID.MOM,
54
+ [Challenge.RED_REDEMPTION] = BossID.MOTHER,
55
+ [Challenge.DELETE_THIS] = BossID.BLUE_BABY
56
+ }
57
+ return ____exports
@@ -1,6 +1,8 @@
1
- import { BossID, LevelStage } from "isaac-typescript-definitions";
1
+ import { BossID, EntityType, LevelStage } from "isaac-typescript-definitions";
2
2
  export declare const STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP: ReadonlyMap<LevelStage, ReadonlyMap<int, ReadonlySet<BossID>>>;
3
3
  export declare const STAGE_TO_COMBINED_BOSS_SET_MAP: ReadonlyMap<LevelStage, ReadonlySet<BossID>>;
4
4
  export declare const ALL_BOSSES_SET: ReadonlySet<BossID>;
5
+ export declare const STORY_BOSS_IDS_SET: ReadonlySet<BossID>;
6
+ export declare const STORY_BOSS_ENTITY_TYPES_SET: ReadonlySet<EntityType>;
5
7
  export declare const ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET: ReadonlySet<BossID>;
6
8
  //# sourceMappingURL=bossSets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bossSets.d.ts","sourceRoot":"","sources":["../../../src/sets/bossSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAa,MAAM,8BAA8B,CAAC;AA6e7E,eAAO,MAAM,mCAAmC,gEAiB9C,CAAC;AAEH,eAAO,MAAM,8BAA8B,8CAiBzC,CAAC;AAEH,eAAO,MAAM,cAAc,qBAE1B,CAAC;AAsBF,eAAO,MAAM,qCAAqC,qBAEjD,CAAC"}
1
+ {"version":3,"file":"bossSets.d.ts","sourceRoot":"","sources":["../../../src/sets/bossSets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,UAAU,EAEX,MAAM,8BAA8B,CAAC;AA6etC,eAAO,MAAM,mCAAmC,gEAiB9C,CAAC;AAEH,eAAO,MAAM,8BAA8B,8CAiBzC,CAAC;AAEH,eAAO,MAAM,cAAc,qBAE1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,qBAkB7B,CAAC;AAEH,eAAO,MAAM,2BAA2B,yBActC,CAAC;AAEH,eAAO,MAAM,qCAAqC,qBAEjD,CAAC"}
@@ -5,6 +5,7 @@ local __TS__Spread = ____lualib.__TS__Spread
5
5
  local ____exports = {}
6
6
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
7
7
  local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
8
+ local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
8
9
  local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
9
10
  local StageType = ____isaac_2Dtypescript_2Ddefinitions.StageType
10
11
  local ____cachedEnumValues = require("src.arrays.cachedEnumValues")
@@ -368,7 +369,7 @@ ____exports.ALL_BOSSES_SET = __TS__New(
368
369
  function(____, bossID) return bossID ~= BossID.RAGLICH end
369
370
  )
370
371
  )
371
- local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
372
+ ____exports.STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
372
373
  BossID.MOM,
373
374
  BossID.MOMS_HEART,
374
375
  BossID.SATAN,
@@ -387,11 +388,26 @@ local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, {
387
388
  BossID.DOGMA,
388
389
  BossID.BEAST
389
390
  })
391
+ ____exports.STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {
392
+ EntityType.MOM,
393
+ EntityType.MOMS_HEART,
394
+ EntityType.SATAN,
395
+ EntityType.ISAAC,
396
+ EntityType.LAMB,
397
+ EntityType.MEGA_SATAN,
398
+ EntityType.MEGA_SATAN_2,
399
+ EntityType.ULTRA_GREED,
400
+ EntityType.HUSH,
401
+ EntityType.DELIRIUM,
402
+ EntityType.MOTHER,
403
+ EntityType.DOGMA,
404
+ EntityType.BEAST
405
+ })
390
406
  ____exports.ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = __TS__New(
391
407
  ReadonlySet,
392
408
  __TS__ArrayFilter(
393
409
  {__TS__Spread(____exports.ALL_BOSSES_SET)},
394
- function(____, bossID) return not STORY_BOSS_IDS_SET:has(bossID) end
410
+ function(____, bossID) return not ____exports.STORY_BOSS_IDS_SET:has(bossID) end
395
411
  )
396
412
  )
397
413
  return ____exports
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "57.5.0",
3
+ "version": "57.8.0",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -10,6 +10,8 @@ import {
10
10
  ALL_BOSSES_SET,
11
11
  STAGE_TO_COMBINED_BOSS_SET_MAP,
12
12
  STAGE_TO_STAGE_TYPE_TO_BOSS_SET_MAP,
13
+ STORY_BOSS_ENTITY_TYPES_SET,
14
+ STORY_BOSS_IDS_SET,
13
15
  } from "../sets/bossSets";
14
16
  import { REPENTANCE_ONLY_BOSS_IDS_SET } from "../sets/repentanceBossIDsSet";
15
17
  import { SIN_ENTITY_TYPES_SET } from "../sets/sinEntityTypesSet";
@@ -190,6 +192,11 @@ export function isRepentanceBoss(bossID: BossID): boolean {
190
192
  return REPENTANCE_ONLY_BOSS_IDS_SET.has(bossID);
191
193
  }
192
194
 
195
+ /** Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust. */
196
+ export function isSin(npc: EntityNPC): boolean {
197
+ return SIN_ENTITY_TYPES_SET.has(npc.Type);
198
+ }
199
+
193
200
  function getNumBossSegments(
194
201
  entityType: EntityType,
195
202
  variant: int,
@@ -223,9 +230,22 @@ function getNumBossSegments(
223
230
  }
224
231
  }
225
232
 
226
- /** Helper function to check if the provided NPC is a Sin miniboss, such as Sloth or Lust. */
227
- export function isSin(npc: EntityNPC): boolean {
228
- return SIN_ENTITY_TYPES_SET.has(npc.Type);
233
+ /**
234
+ * Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
235
+ * Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
236
+ * apply to non-story bosses, like Vanishing Twin.
237
+ */
238
+ export function isStoryBoss(entityType: EntityType): boolean {
239
+ return STORY_BOSS_ENTITY_TYPES_SET.has(entityType);
240
+ }
241
+
242
+ /**
243
+ * Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
244
+ * Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
245
+ * to non-story bosses, like Vanishing Twin.
246
+ */
247
+ export function isStoryBossID(bossID: BossID): boolean {
248
+ return STORY_BOSS_IDS_SET.has(bossID);
229
249
  }
230
250
 
231
251
  /**
@@ -1,4 +1,12 @@
1
- import type { Challenge, PlayerType } from "isaac-typescript-definitions";
1
+ import type {
2
+ BossID,
3
+ Challenge,
4
+ PlayerType,
5
+ } from "isaac-typescript-definitions";
6
+ import {
7
+ CHALLENGE_BOSSES,
8
+ DEFAULT_CHALLENGE_BOSS_ID,
9
+ } from "../objects/challengeBosses";
2
10
  import {
3
11
  CHALLENGE_CHARACTERS,
4
12
  DEFAULT_CHALLENGE_CHARACTER,
@@ -8,6 +16,21 @@ import {
8
16
  DEFAULT_CHALLENGE_NAME,
9
17
  } from "../objects/challengeNames";
10
18
 
19
+ /**
20
+ * Get the final boss of a challenge. This will only work for vanilla challenges.
21
+ *
22
+ * For modded challenges, `BossID.MOM` (6) will be returned.
23
+ *
24
+ * Note that for `Challenge.BACKASSWARDS` (31), this function will return `BossID.MEGA_SATAN` (55),
25
+ * but this is not actually the final boss. (There is no final boss for this challenge.)
26
+ */
27
+ export function getChallengeBoss(challenge: Challenge): BossID {
28
+ const challengeBossID = CHALLENGE_BOSSES[challenge];
29
+ // Handle modded challenges.
30
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
31
+ return challengeBossID ?? DEFAULT_CHALLENGE_BOSS_ID;
32
+ }
33
+
11
34
  /**
12
35
  * Get the starting character of a challenge. This will only work for vanilla challenges.
13
36
  *
@@ -3,7 +3,6 @@ import { EntityFlag } from "isaac-typescript-definitions";
3
3
  import { game } from "../core/cachedClasses";
4
4
  import { VectorZero } from "../core/constants";
5
5
  import { ENTITIES_WITH_ARMOR_SET } from "../sets/entitiesWithArmorSet";
6
- import { STORY_BOSS_ENTITY_TYPES_SET } from "../sets/storyBossEntityTypesSet";
7
6
  import type { AnyEntity } from "../types/AnyEntity";
8
7
  import type { EntityID } from "../types/EntityID";
9
8
  import { getIsaacAPIClassName } from "./isaacAPIClass";
@@ -364,15 +363,6 @@ export function isEntityMoving(entity: Entity, threshold = 0.01): boolean {
364
363
  return doesVectorHaveLength(entity.Velocity, threshold);
365
364
  }
366
365
 
367
- /**
368
- * Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
369
- * Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
370
- * apply to non-story bosses, like Vanishing Twin.
371
- */
372
- export function isStoryBoss(entityType: EntityType): boolean {
373
- return STORY_BOSS_ENTITY_TYPES_SET.has(entityType);
374
- }
375
-
376
366
  /**
377
367
  * Helper function to parse a string that contains an entity type, a variant, and a sub-type,
378
368
  * separated by periods.
@@ -0,0 +1,57 @@
1
+ import { BossID, Challenge } from "isaac-typescript-definitions";
2
+
3
+ export const DEFAULT_CHALLENGE_BOSS_ID = BossID.MOM;
4
+
5
+ /**
6
+ * Taken from the "challenges.xml" file.
7
+ *
8
+ * @see https://bindingofisaacrebirth.fandom.com/wiki/Challenges
9
+ */
10
+ export const CHALLENGE_BOSSES = {
11
+ [Challenge.NULL]: BossID.MOM, // 0
12
+ [Challenge.PITCH_BLACK]: BossID.MOM, // 1
13
+ [Challenge.HIGH_BROW]: BossID.MOM, // 2
14
+ [Challenge.HEAD_TRAUMA]: BossID.MOM, // 3
15
+ [Challenge.DARKNESS_FALLS]: BossID.SATAN, // 4
16
+ [Challenge.TANK]: BossID.MOM, // 5
17
+ [Challenge.SOLAR_SYSTEM]: BossID.MOMS_HEART, // 6
18
+ [Challenge.SUICIDE_KING]: BossID.ISAAC, // 7
19
+ [Challenge.CAT_GOT_YOUR_TONGUE]: BossID.MOM, // 8
20
+ [Challenge.DEMO_MAN]: BossID.MOMS_HEART, // 9
21
+ [Challenge.CURSED]: BossID.MOM, // 10
22
+ [Challenge.GLASS_CANNON]: BossID.SATAN, // 11
23
+ [Challenge.WHEN_LIFE_GIVES_LEMONS]: BossID.MOM, // 12
24
+ [Challenge.BEANS]: BossID.MOM, // 13
25
+ [Challenge.ITS_IN_THE_CARDS]: BossID.MOM, // 14
26
+ [Challenge.SLOW_ROLL]: BossID.MOM, // 15
27
+ [Challenge.COMPUTER_SAVY]: BossID.MOM, // 16
28
+ [Challenge.WAKA_WAKA]: BossID.MOM, // 17
29
+ [Challenge.HOST]: BossID.MOM, // 18
30
+ [Challenge.FAMILY_MAN]: BossID.ISAAC, // 19
31
+ [Challenge.PURIST]: BossID.MOMS_HEART, // 20
32
+ [Challenge.XXXXXXXXL]: BossID.MOMS_HEART, // 21
33
+ [Challenge.SPEED]: BossID.MOMS_HEART, // 22
34
+ [Challenge.BLUE_BOMBER]: BossID.SATAN, // 23
35
+ [Challenge.PAY_TO_PLAY]: BossID.ISAAC, // 24
36
+ [Challenge.HAVE_A_HEART]: BossID.MOMS_HEART, // 25
37
+ [Challenge.I_RULE]: BossID.MEGA_SATAN, // 26
38
+ [Challenge.BRAINS]: BossID.BLUE_BABY, // 27
39
+ [Challenge.PRIDE_DAY]: BossID.MOMS_HEART, // 28
40
+ [Challenge.ONANS_STREAK]: BossID.ISAAC, // 29
41
+ [Challenge.GUARDIAN]: BossID.MOMS_HEART, // 30
42
+ [Challenge.BACKASSWARDS]: BossID.MEGA_SATAN, // 31
43
+ [Challenge.APRILS_FOOL]: BossID.MOMS_HEART, // 32
44
+ [Challenge.POKEY_MANS]: BossID.ISAAC, // 33
45
+ [Challenge.ULTRA_HARD]: BossID.MEGA_SATAN, // 34
46
+ [Challenge.PONG]: BossID.BLUE_BABY, // 35
47
+ [Challenge.SCAT_MAN]: BossID.MOM, // 36
48
+ [Challenge.BLOODY_MARY]: BossID.SATAN, // 37
49
+ [Challenge.BAPTISM_BY_FIRE]: BossID.SATAN, // 38
50
+ [Challenge.ISAACS_AWAKENING]: BossID.MOTHER, // 39
51
+ [Challenge.SEEING_DOUBLE]: BossID.MOMS_HEART, // 40
52
+ [Challenge.PICA_RUN]: BossID.ISAAC, // 41
53
+ [Challenge.HOT_POTATO]: BossID.SATAN, // 42
54
+ [Challenge.CANTRIPPED]: BossID.MOM, // 43
55
+ [Challenge.RED_REDEMPTION]: BossID.MOTHER, // 44
56
+ [Challenge.DELETE_THIS]: BossID.BLUE_BABY, // 45
57
+ } as const satisfies Record<Challenge, BossID>;
@@ -1,4 +1,9 @@
1
- import { BossID, LevelStage, StageType } from "isaac-typescript-definitions";
1
+ import {
2
+ BossID,
3
+ EntityType,
4
+ LevelStage,
5
+ StageType,
6
+ } from "isaac-typescript-definitions";
2
7
  import { BOSS_IDS } from "../arrays/cachedEnumValues";
3
8
  import { combineSets } from "../functions/set";
4
9
  import { ReadonlyMap } from "../types/ReadonlyMap";
@@ -533,7 +538,7 @@ export const ALL_BOSSES_SET = new ReadonlySet<BossID>(
533
538
  BOSS_IDS.filter((bossID) => bossID !== BossID.RAGLICH),
534
539
  );
535
540
 
536
- const STORY_BOSS_IDS_SET = new ReadonlySet([
541
+ export const STORY_BOSS_IDS_SET = new ReadonlySet([
537
542
  BossID.MOM, // 6
538
543
  BossID.MOMS_HEART, // 8
539
544
  BossID.SATAN, // 24
@@ -553,6 +558,22 @@ const STORY_BOSS_IDS_SET = new ReadonlySet([
553
558
  BossID.BEAST, // 100
554
559
  ]);
555
560
 
561
+ export const STORY_BOSS_ENTITY_TYPES_SET = new ReadonlySet<EntityType>([
562
+ EntityType.MOM, // 45
563
+ EntityType.MOMS_HEART, // 78
564
+ EntityType.SATAN, // 84
565
+ EntityType.ISAAC, // 102
566
+ EntityType.LAMB, // 273
567
+ EntityType.MEGA_SATAN, // 274
568
+ EntityType.MEGA_SATAN_2, // 275
569
+ EntityType.ULTRA_GREED, // 406 (includes Ultra Greedier)
570
+ EntityType.HUSH, // 407
571
+ EntityType.DELIRIUM, // 412
572
+ EntityType.MOTHER, // 912
573
+ EntityType.DOGMA, // 950
574
+ EntityType.BEAST, // 951
575
+ ]);
576
+
556
577
  export const ALL_BOSSES_EXCLUDING_STORY_BOSSES_SET = new ReadonlySet(
557
578
  [...ALL_BOSSES_SET].filter((bossID) => !STORY_BOSS_IDS_SET.has(bossID)),
558
579
  );
@@ -1,3 +0,0 @@
1
- import { EntityType } from "isaac-typescript-definitions";
2
- export declare const STORY_BOSS_ENTITY_TYPES_SET: ReadonlySet<EntityType>;
3
- //# sourceMappingURL=storyBossEntityTypesSet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storyBossEntityTypesSet.d.ts","sourceRoot":"","sources":["../../../src/sets/storyBossEntityTypesSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,eAAO,MAAM,2BAA2B,yBActC,CAAC"}
@@ -1,23 +0,0 @@
1
- local ____lualib = require("lualib_bundle")
2
- local __TS__New = ____lualib.__TS__New
3
- local ____exports = {}
4
- local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
5
- local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
6
- local ____ReadonlySet = require("src.types.ReadonlySet")
7
- local ReadonlySet = ____ReadonlySet.ReadonlySet
8
- ____exports.STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {
9
- EntityType.MOM,
10
- EntityType.MOMS_HEART,
11
- EntityType.SATAN,
12
- EntityType.ISAAC,
13
- EntityType.LAMB,
14
- EntityType.MEGA_SATAN,
15
- EntityType.MEGA_SATAN_2,
16
- EntityType.ULTRA_GREED,
17
- EntityType.HUSH,
18
- EntityType.DELIRIUM,
19
- EntityType.MOTHER,
20
- EntityType.DOGMA,
21
- EntityType.BEAST
22
- })
23
- return ____exports
@@ -1,18 +0,0 @@
1
- import { EntityType } from "isaac-typescript-definitions";
2
- import { ReadonlySet } from "../types/ReadonlySet";
3
-
4
- export const STORY_BOSS_ENTITY_TYPES_SET = new ReadonlySet<EntityType>([
5
- EntityType.MOM, // 45
6
- EntityType.MOMS_HEART, // 78
7
- EntityType.SATAN, // 84
8
- EntityType.ISAAC, // 102
9
- EntityType.LAMB, // 273
10
- EntityType.MEGA_SATAN, // 274
11
- EntityType.MEGA_SATAN_2, // 275
12
- EntityType.ULTRA_GREED, // 406
13
- EntityType.HUSH, // 407
14
- EntityType.DELIRIUM, // 412
15
- EntityType.MOTHER, // 912
16
- EntityType.DOGMA, // 950
17
- EntityType.BEAST, // 951
18
- ]);