isaacscript-common 72.6.0 → 72.7.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.
@@ -8716,6 +8716,13 @@ export declare function isActionTriggeredOnAnyInput(...buttonActions: ButtonActi
8716
8716
  /** Returns true if the item type in the item config is equal to `ItemType.ACTIVE`. */
8717
8717
  export declare function isActiveCollectible(collectibleType: CollectibleType): boolean;
8718
8718
 
8719
+ /**
8720
+ * Helper function to detect if a particular entity is an active enemy. Use this over the
8721
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
8722
+ * and Mother.
8723
+ */
8724
+ export declare function isActiveEnemy(entity: Entity): boolean;
8725
+
8719
8726
  /**
8720
8727
  * Helper function to check if a player's active item is "double charged", meaning that it has both
8721
8728
  * a full normal charge and a full charge from The Battery.
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 72.6.0
3
+ isaacscript-common 72.7.1
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -23655,6 +23655,9 @@ local ____exports = {}
23655
23655
  local setPrimitiveEntityFields
23656
23656
  local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.src.index")
23657
23657
  local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
23658
+ local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
23659
+ local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
23660
+ local NPCState = ____isaac_2Dtypescript_2Ddefinitions.NPCState
23658
23661
  local ____cachedClasses = require("src.core.cachedClasses")
23659
23662
  local game = ____cachedClasses.game
23660
23663
  local ____constants = require("src.core.constants")
@@ -23676,6 +23679,7 @@ local setSpriteOpacity = ____sprites.setSpriteOpacity
23676
23679
  local ____tstlClass = require("src.functions.tstlClass")
23677
23680
  local isTSTLSet = ____tstlClass.isTSTLSet
23678
23681
  local ____types = require("src.functions.types")
23682
+ local asNPCState = ____types.asNPCState
23679
23683
  local isPrimitive = ____types.isPrimitive
23680
23684
  local ____utils = require("src.functions.utils")
23681
23685
  local assertDefined = ____utils.assertDefined
@@ -23895,6 +23899,58 @@ function ____exports.hasArmor(self, entity)
23895
23899
  local typeVariantString = (tostring(entity.Type) .. ".") .. tostring(entity.Variant)
23896
23900
  return ENTITIES_WITH_ARMOR_SET:has(typeVariantString)
23897
23901
  end
23902
+ function ____exports.isActiveEnemy(self, entity)
23903
+ if entity:HasEntityFlags(EntityFlag.FRIENDLY) then
23904
+ return false
23905
+ end
23906
+ local room = game:GetRoom()
23907
+ local isClear = room:IsClear()
23908
+ if isClear then
23909
+ repeat
23910
+ local ____switch36 = entity.Type
23911
+ local ____cond36 = ____switch36 == EntityType.GRIMACE
23912
+ if ____cond36 then
23913
+ do
23914
+ return false
23915
+ end
23916
+ end
23917
+ ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_DOOR
23918
+ if ____cond36 then
23919
+ do
23920
+ return false
23921
+ end
23922
+ end
23923
+ ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_GREED
23924
+ if ____cond36 then
23925
+ do
23926
+ local npc = entity:ToNPC()
23927
+ if npc ~= nil and npc.State == asNPCState(nil, 9001) then
23928
+ return false
23929
+ end
23930
+ break
23931
+ end
23932
+ end
23933
+ ____cond36 = ____cond36 or ____switch36 == EntityType.MOTHER
23934
+ if ____cond36 then
23935
+ do
23936
+ if entity.Variant == MotherVariant.MOTHER_1 then
23937
+ local npc = entity:ToNPC()
23938
+ if npc ~= nil and npc.State == NPCState.SPECIAL then
23939
+ return false
23940
+ end
23941
+ end
23942
+ break
23943
+ end
23944
+ end
23945
+ do
23946
+ do
23947
+ break
23948
+ end
23949
+ end
23950
+ until true
23951
+ end
23952
+ return entity:IsActiveEnemy(false)
23953
+ end
23898
23954
  function ____exports.isEntityMoving(self, entity, threshold)
23899
23955
  if threshold == nil then
23900
23956
  threshold = 0.01
@@ -28111,8 +28167,6 @@ local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
28111
28167
  local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
28112
28168
  local DownpourRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.DownpourRoomSubType
28113
28169
  local DungeonSubType = ____isaac_2Dtypescript_2Ddefinitions.DungeonSubType
28114
- local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
28115
- local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
28116
28170
  local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
28117
28171
  local HomeRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.HomeRoomSubType
28118
28172
  local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag
@@ -28142,6 +28196,7 @@ local isHiddenSecretRoomDoor = ____doors.isHiddenSecretRoomDoor
28142
28196
  local openDoorFast = ____doors.openDoorFast
28143
28197
  local ____entities = require("src.functions.entities")
28144
28198
  local getEntities = ____entities.getEntities
28199
+ local isActiveEnemy = ____entities.isActiveEnemy
28145
28200
  local ____flag = require("src.functions.flag")
28146
28201
  local hasFlag = ____flag.hasFlag
28147
28202
  local ____positionVelocity = require("src.functions.positionVelocity")
@@ -28492,7 +28547,7 @@ function ____exports.isRoomDangerous(self)
28492
28547
  local entities = getEntities(nil)
28493
28548
  if __TS__ArraySome(
28494
28549
  entities,
28495
- function(____, entity) return entity:IsActiveEnemy(false) and not entity:HasEntityFlags(EntityFlag.FRIENDLY) and entity.Type ~= EntityType.GRIMACE end
28550
+ function(____, entity) return isActiveEnemy(nil, entity) end
28496
28551
  ) then
28497
28552
  return true
28498
28553
  end
@@ -52949,6 +53004,8 @@ local IGNORE_EFFECT_VARIANTS = __TS__New(ReadonlySet, {
52949
53004
  EffectVariant.WALL_BUG,
52950
53005
  EffectVariant.FALLING_EMBER,
52951
53006
  EffectVariant.LIGHT,
53007
+ EffectVariant.MIST,
53008
+ EffectVariant.BACKDROP_DECORATION,
52952
53009
  EffectVariant.TADPOLE
52953
53010
  })
52954
53011
  function ____exports.logAllEntities(includeBackgroundEffects, entityTypeFilter)
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@typescript-to-lua/language-extensions" />
2
- import type { EntityType } from "isaac-typescript-definitions";
2
+ import { EntityType } from "isaac-typescript-definitions";
3
3
  import type { AnyEntity } from "../types/AnyEntity";
4
4
  import type { EntityID } from "../types/EntityID";
5
5
  /**
@@ -113,6 +113,12 @@ export declare function getFilteredNewEntities<T extends AnyEntity>(oldEntities:
113
113
  * For more on armor, see the wiki: https://bindingofisaacrebirth.fandom.com/wiki/Damage_Scaling
114
114
  */
115
115
  export declare function hasArmor(entity: Entity): boolean;
116
+ /**
117
+ * Helper function to detect if a particular entity is an active enemy. Use this over the
118
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
119
+ * and Mother.
120
+ */
121
+ export declare function isActiveEnemy(entity: Entity): boolean;
116
122
  /**
117
123
  * Helper function to measure an entity's velocity to see if it is moving.
118
124
  *
@@ -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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"}
@@ -10,6 +10,9 @@ local ____exports = {}
10
10
  local setPrimitiveEntityFields
11
11
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
12
12
  local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
13
+ local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
14
+ local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
15
+ local NPCState = ____isaac_2Dtypescript_2Ddefinitions.NPCState
13
16
  local ____cachedClasses = require("src.core.cachedClasses")
14
17
  local game = ____cachedClasses.game
15
18
  local ____constants = require("src.core.constants")
@@ -31,6 +34,7 @@ local setSpriteOpacity = ____sprites.setSpriteOpacity
31
34
  local ____tstlClass = require("src.functions.tstlClass")
32
35
  local isTSTLSet = ____tstlClass.isTSTLSet
33
36
  local ____types = require("src.functions.types")
37
+ local asNPCState = ____types.asNPCState
34
38
  local isPrimitive = ____types.isPrimitive
35
39
  local ____utils = require("src.functions.utils")
36
40
  local assertDefined = ____utils.assertDefined
@@ -335,6 +339,61 @@ function ____exports.hasArmor(self, entity)
335
339
  local typeVariantString = (tostring(entity.Type) .. ".") .. tostring(entity.Variant)
336
340
  return ENTITIES_WITH_ARMOR_SET:has(typeVariantString)
337
341
  end
342
+ --- Helper function to detect if a particular entity is an active enemy. Use this over the
343
+ -- `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
344
+ -- and Mother.
345
+ function ____exports.isActiveEnemy(self, entity)
346
+ if entity:HasEntityFlags(EntityFlag.FRIENDLY) then
347
+ return false
348
+ end
349
+ local room = game:GetRoom()
350
+ local isClear = room:IsClear()
351
+ if isClear then
352
+ repeat
353
+ local ____switch36 = entity.Type
354
+ local ____cond36 = ____switch36 == EntityType.GRIMACE
355
+ if ____cond36 then
356
+ do
357
+ return false
358
+ end
359
+ end
360
+ ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_DOOR
361
+ if ____cond36 then
362
+ do
363
+ return false
364
+ end
365
+ end
366
+ ____cond36 = ____cond36 or ____switch36 == EntityType.ULTRA_GREED
367
+ if ____cond36 then
368
+ do
369
+ local npc = entity:ToNPC()
370
+ if npc ~= nil and npc.State == asNPCState(nil, 9001) then
371
+ return false
372
+ end
373
+ break
374
+ end
375
+ end
376
+ ____cond36 = ____cond36 or ____switch36 == EntityType.MOTHER
377
+ if ____cond36 then
378
+ do
379
+ if entity.Variant == MotherVariant.MOTHER_1 then
380
+ local npc = entity:ToNPC()
381
+ if npc ~= nil and npc.State == NPCState.SPECIAL then
382
+ return false
383
+ end
384
+ end
385
+ break
386
+ end
387
+ end
388
+ do
389
+ do
390
+ break
391
+ end
392
+ end
393
+ until true
394
+ end
395
+ return entity:IsActiveEnemy(false)
396
+ end
338
397
  --- Helper function to measure an entity's velocity to see if it is moving.
339
398
  --
340
399
  -- Use this helper function over checking if the velocity length is equal to 0 because entities can
@@ -1 +1 @@
1
- {"version":3,"file":"logEntities.d.ts","sourceRoot":"","sources":["../../../src/functions/logEntities.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,cAAc,EAOf,MAAM,8BAA8B,CAAC;AAmBtC,8FAA8F;AAC9F,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,wBAAwB,EAAE,OAAO,EACjC,gBAAgB,CAAC,EAAE,UAAU,GAC5B,IAAI,CA2CN;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,UAAQ,EACpB,oBAAoB,CAAC,EAAE,cAAc,GACpC,IAAI,CA+CN;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAIhE;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG1D;AA8ID,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAI5E;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAGtE;AA+DD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAInE"}
1
+ {"version":3,"file":"logEntities.d.ts","sourceRoot":"","sources":["../../../src/functions/logEntities.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,cAAc,EAOf,MAAM,8BAA8B,CAAC;AAqBtC,8FAA8F;AAC9F,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,wBAAwB,EAAE,OAAO,EACjC,gBAAgB,CAAC,EAAE,UAAU,GAC5B,IAAI,CA2CN;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,UAAQ,EACpB,oBAAoB,CAAC,EAAE,cAAc,GACpC,IAAI,CA+CN;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAIhE;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG1D;AA8ID,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAI5E;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAGtE;AA+DD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAInE"}
@@ -194,6 +194,8 @@ local IGNORE_EFFECT_VARIANTS = __TS__New(ReadonlySet, {
194
194
  EffectVariant.WALL_BUG,
195
195
  EffectVariant.FALLING_EMBER,
196
196
  EffectVariant.LIGHT,
197
+ EffectVariant.MIST,
198
+ EffectVariant.BACKDROP_DECORATION,
197
199
  EffectVariant.TADPOLE
198
200
  })
199
201
  --- Helper function for printing out every entity (or filtered entity) in the current room.
@@ -1 +1 @@
1
- {"version":3,"file":"rooms.d.ts","sourceRoot":"","sources":["../../../src/functions/rooms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rooms.d.ts","sourceRoot":"","sources":["../../../src/functions/rooms.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,6 @@ local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
19
19
  local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
20
20
  local DownpourRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.DownpourRoomSubType
21
21
  local DungeonSubType = ____isaac_2Dtypescript_2Ddefinitions.DungeonSubType
22
- local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
23
- local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
24
22
  local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
25
23
  local HomeRoomSubType = ____isaac_2Dtypescript_2Ddefinitions.HomeRoomSubType
26
24
  local ProjectileFlag = ____isaac_2Dtypescript_2Ddefinitions.ProjectileFlag
@@ -50,6 +48,7 @@ local isHiddenSecretRoomDoor = ____doors.isHiddenSecretRoomDoor
50
48
  local openDoorFast = ____doors.openDoorFast
51
49
  local ____entities = require("src.functions.entities")
52
50
  local getEntities = ____entities.getEntities
51
+ local isActiveEnemy = ____entities.isActiveEnemy
53
52
  local ____flag = require("src.functions.flag")
54
53
  local hasFlag = ____flag.hasFlag
55
54
  local ____positionVelocity = require("src.functions.positionVelocity")
@@ -636,7 +635,7 @@ function ____exports.isRoomDangerous(self)
636
635
  local entities = getEntities(nil)
637
636
  if __TS__ArraySome(
638
637
  entities,
639
- function(____, entity) return entity:IsActiveEnemy(false) and not entity:HasEntityFlags(EntityFlag.FRIENDLY) and entity.Type ~= EntityType.GRIMACE end
638
+ function(____, entity) return isActiveEnemy(nil, entity) end
640
639
  ) then
641
640
  return true
642
641
  end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "72.6.0",
3
+ "version": "72.7.1",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -25,6 +25,6 @@
25
25
  "main": "dist/src/index",
26
26
  "types": "dist/index.rollup.d.ts",
27
27
  "dependencies": {
28
- "isaac-typescript-definitions": "^36.0.0"
28
+ "isaac-typescript-definitions": "^36.1.1"
29
29
  }
30
30
  }
@@ -1,5 +1,9 @@
1
- import type { EntityType } from "isaac-typescript-definitions";
2
- import { EntityFlag } from "isaac-typescript-definitions";
1
+ import {
2
+ EntityFlag,
3
+ EntityType,
4
+ MotherVariant,
5
+ NPCState,
6
+ } from "isaac-typescript-definitions";
3
7
  import { game } from "../core/cachedClasses";
4
8
  import { VectorZero } from "../core/constants";
5
9
  import { ENTITIES_WITH_ARMOR_SET } from "../sets/entitiesWithArmorSet";
@@ -11,7 +15,7 @@ import { newReadonlyColor } from "./readOnly";
11
15
  import { getRandomSeed, isRNG, newRNG } from "./rng";
12
16
  import { setSpriteOpacity } from "./sprites";
13
17
  import { isTSTLSet } from "./tstlClass";
14
- import { isPrimitive } from "./types";
18
+ import { asNPCState, isPrimitive } from "./types";
15
19
  import { assertDefined } from "./utils";
16
20
  import { doesVectorHaveLength, isVector, vectorToString } from "./vector";
17
21
 
@@ -349,6 +353,64 @@ export function hasArmor(entity: Entity): boolean {
349
353
  return ENTITIES_WITH_ARMOR_SET.has(typeVariantString);
350
354
  }
351
355
 
356
+ /**
357
+ * Helper function to detect if a particular entity is an active enemy. Use this over the
358
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
359
+ * and Mother.
360
+ */
361
+ export function isActiveEnemy(entity: Entity): boolean {
362
+ if (entity.HasEntityFlags(EntityFlag.FRIENDLY)) {
363
+ return false;
364
+ }
365
+
366
+ const room = game.GetRoom();
367
+ const isClear = room.IsClear();
368
+
369
+ // Some entities count as being "active" enemies, but they deactivate when the room is cleared.
370
+ if (isClear) {
371
+ switch (entity.Type) {
372
+ // 42
373
+ case EntityType.GRIMACE: {
374
+ return false;
375
+ }
376
+
377
+ // 294
378
+ case EntityType.ULTRA_DOOR: {
379
+ return false;
380
+ }
381
+
382
+ // 406
383
+ case EntityType.ULTRA_GREED: {
384
+ const npc = entity.ToNPC();
385
+ if (npc !== undefined && npc.State === asNPCState(9001)) {
386
+ return false;
387
+ }
388
+
389
+ break;
390
+ }
391
+
392
+ // 912
393
+ case EntityType.MOTHER: {
394
+ if (entity.Variant === MotherVariant.MOTHER_1) {
395
+ const npc = entity.ToNPC();
396
+ if (npc !== undefined && npc.State === NPCState.SPECIAL) {
397
+ return false;
398
+ }
399
+ }
400
+
401
+ break;
402
+ }
403
+
404
+ default: {
405
+ break;
406
+ }
407
+ }
408
+ }
409
+
410
+ // eslint-disable-next-line deprecation/deprecation
411
+ return entity.IsActiveEnemy(false);
412
+ }
413
+
352
414
  /**
353
415
  * Helper function to measure an entity's velocity to see if it is moving.
354
416
  *
@@ -26,6 +26,8 @@ const IGNORE_EFFECT_VARIANTS = new ReadonlySet<EffectVariant>([
26
26
  EffectVariant.WALL_BUG, // 68
27
27
  EffectVariant.FALLING_EMBER, // 87
28
28
  EffectVariant.LIGHT, // 121
29
+ EffectVariant.MIST, // 138
30
+ EffectVariant.BACKDROP_DECORATION, // 140
29
31
  EffectVariant.TADPOLE, // 158
30
32
  ]);
31
33
 
@@ -11,8 +11,6 @@ import {
11
11
  DoorSlotFlag,
12
12
  DownpourRoomSubType,
13
13
  DungeonSubType,
14
- EntityFlag,
15
- EntityType,
16
14
  GridRoom,
17
15
  HomeRoomSubType,
18
16
  ProjectileFlag,
@@ -34,7 +32,7 @@ import {
34
32
  isHiddenSecretRoomDoor,
35
33
  openDoorFast,
36
34
  } from "./doors";
37
- import { getEntities } from "./entities";
35
+ import { getEntities, isActiveEnemy } from "./entities";
38
36
  import { hasFlag } from "./flag";
39
37
  import {
40
38
  getEntityPositions,
@@ -820,15 +818,7 @@ export function isRoomDangerous(): boolean {
820
818
 
821
819
  const entities = getEntities();
822
820
 
823
- if (
824
- entities.some(
825
- (entity) =>
826
- entity.IsActiveEnemy(false) &&
827
- !entity.HasEntityFlags(EntityFlag.FRIENDLY) &&
828
- // Grimaces count as being "active" enemies, but they go to sleep when the room is cleared.
829
- entity.Type !== EntityType.GRIMACE,
830
- )
831
- ) {
821
+ if (entities.some((entity) => isActiveEnemy(entity))) {
832
822
  return true;
833
823
  }
834
824