isaacscript-common 72.7.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.
@@ -8718,7 +8718,7 @@ export declare function isActiveCollectible(collectibleType: CollectibleType): b
8718
8718
 
8719
8719
  /**
8720
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 Doors,
8721
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
8722
8722
  * and Mother.
8723
8723
  */
8724
8724
  export declare function isActiveEnemy(entity: Entity): boolean;
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 72.7.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
 
@@ -23679,6 +23679,7 @@ local setSpriteOpacity = ____sprites.setSpriteOpacity
23679
23679
  local ____tstlClass = require("src.functions.tstlClass")
23680
23680
  local isTSTLSet = ____tstlClass.isTSTLSet
23681
23681
  local ____types = require("src.functions.types")
23682
+ local asNPCState = ____types.asNPCState
23682
23683
  local isPrimitive = ____types.isPrimitive
23683
23684
  local ____utils = require("src.functions.utils")
23684
23685
  local assertDefined = ____utils.assertDefined
@@ -23904,14 +23905,49 @@ function ____exports.isActiveEnemy(self, entity)
23904
23905
  end
23905
23906
  local room = game:GetRoom()
23906
23907
  local isClear = room:IsClear()
23907
- if isClear and (entity.Type == EntityType.GRIMACE or entity.Type == EntityType.ULTRA_DOOR) then
23908
- return false
23909
- end
23910
- if entity.Type == EntityType.MOTHER and entity.Variant == MotherVariant.MOTHER_1 then
23911
- local npc = entity:ToNPC()
23912
- if npc ~= nil and npc.State == NPCState.SPECIAL then
23913
- return false
23914
- end
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
23915
23951
  end
23916
23952
  return entity:IsActiveEnemy(false)
23917
23953
  end
@@ -115,7 +115,7 @@ export declare function getFilteredNewEntities<T extends AnyEntity>(oldEntities:
115
115
  export declare function hasArmor(entity: Entity): boolean;
116
116
  /**
117
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 Doors,
118
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
119
119
  * and Mother.
120
120
  */
121
121
  export declare function isActiveEnemy(entity: Entity): boolean;
@@ -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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"}
@@ -34,6 +34,7 @@ local setSpriteOpacity = ____sprites.setSpriteOpacity
34
34
  local ____tstlClass = require("src.functions.tstlClass")
35
35
  local isTSTLSet = ____tstlClass.isTSTLSet
36
36
  local ____types = require("src.functions.types")
37
+ local asNPCState = ____types.asNPCState
37
38
  local isPrimitive = ____types.isPrimitive
38
39
  local ____utils = require("src.functions.utils")
39
40
  local assertDefined = ____utils.assertDefined
@@ -339,7 +340,7 @@ function ____exports.hasArmor(self, entity)
339
340
  return ENTITIES_WITH_ARMOR_SET:has(typeVariantString)
340
341
  end
341
342
  --- Helper function to detect if a particular entity is an active enemy. Use this over the
342
- -- `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Doors,
343
+ -- `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
343
344
  -- and Mother.
344
345
  function ____exports.isActiveEnemy(self, entity)
345
346
  if entity:HasEntityFlags(EntityFlag.FRIENDLY) then
@@ -347,14 +348,49 @@ function ____exports.isActiveEnemy(self, entity)
347
348
  end
348
349
  local room = game:GetRoom()
349
350
  local isClear = room:IsClear()
350
- if isClear and (entity.Type == EntityType.GRIMACE or entity.Type == EntityType.ULTRA_DOOR) then
351
- return false
352
- end
353
- if entity.Type == EntityType.MOTHER and entity.Variant == MotherVariant.MOTHER_1 then
354
- local npc = entity:ToNPC()
355
- if npc ~= nil and npc.State == NPCState.SPECIAL then
356
- return false
357
- end
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
358
394
  end
359
395
  return entity:IsActiveEnemy(false)
360
396
  end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "72.7.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.1.0"
28
+ "isaac-typescript-definitions": "^36.1.1"
29
29
  }
30
30
  }
@@ -15,7 +15,7 @@ import { newReadonlyColor } from "./readOnly";
15
15
  import { getRandomSeed, isRNG, newRNG } from "./rng";
16
16
  import { setSpriteOpacity } from "./sprites";
17
17
  import { isTSTLSet } from "./tstlClass";
18
- import { isPrimitive } from "./types";
18
+ import { asNPCState, isPrimitive } from "./types";
19
19
  import { assertDefined } from "./utils";
20
20
  import { doesVectorHaveLength, isVector, vectorToString } from "./vector";
21
21
 
@@ -355,7 +355,7 @@ export function hasArmor(entity: Entity): boolean {
355
355
 
356
356
  /**
357
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 Doors,
358
+ * `Entity.IsActiveEnemy` method since it is bugged with friendly enemies, Grimaces, Ultra Greed,
359
359
  * and Mother.
360
360
  */
361
361
  export function isActiveEnemy(entity: Entity): boolean {
@@ -367,22 +367,43 @@ export function isActiveEnemy(entity: Entity): boolean {
367
367
  const isClear = room.IsClear();
368
368
 
369
369
  // Some entities count as being "active" enemies, but they deactivate when the room is cleared.
370
- if (
371
- isClear &&
372
- (entity.Type === EntityType.GRIMACE || // 42
373
- entity.Type === EntityType.ULTRA_DOOR) // 294
374
- ) {
375
- return false;
376
- }
377
-
378
- // The `Entity.IsActiveEnemy` function does not work properly with Mother.
379
- if (
380
- entity.Type === EntityType.MOTHER &&
381
- entity.Variant === MotherVariant.MOTHER_1
382
- ) {
383
- const npc = entity.ToNPC();
384
- if (npc !== undefined && npc.State === NPCState.SPECIAL) {
385
- return false;
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
+ }
386
407
  }
387
408
  }
388
409