isaacscript-common 6.14.0 → 6.16.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.
Files changed (131) hide show
  1. package/dist/callbacks/postGridEntityCustomCollision.d.ts +2 -0
  2. package/dist/callbacks/postGridEntityCustomCollision.d.ts.map +1 -0
  3. package/dist/callbacks/postGridEntityCustomCollision.lua +71 -0
  4. package/dist/callbacks/postGridEntityCustomRender.lua +0 -7
  5. package/dist/callbacks/postGridEntityCustomUpdate.lua +0 -7
  6. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts +6 -0
  7. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts.map +1 -0
  8. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.lua +24 -0
  9. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts +6 -0
  10. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts.map +1 -0
  11. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.lua +29 -0
  12. package/dist/enums/ModCallbackCustom.d.ts +96 -62
  13. package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
  14. package/dist/enums/ModCallbackCustom.lua +64 -60
  15. package/dist/features/customGridEntity.d.ts +5 -1
  16. package/dist/features/customGridEntity.d.ts.map +1 -1
  17. package/dist/features/customGridEntity.lua +65 -5
  18. package/dist/functions/collectibles.d.ts +6 -2
  19. package/dist/functions/collectibles.d.ts.map +1 -1
  20. package/dist/functions/collectibles.lua +4 -2
  21. package/dist/functions/color.d.ts +11 -15
  22. package/dist/functions/color.d.ts.map +1 -1
  23. package/dist/functions/color.lua +55 -74
  24. package/dist/functions/deepCopy.d.ts.map +1 -1
  25. package/dist/functions/deepCopy.lua +22 -1
  26. package/dist/functions/gridEntities.d.ts +0 -16
  27. package/dist/functions/gridEntities.d.ts.map +1 -1
  28. package/dist/functions/gridEntities.lua +0 -19
  29. package/dist/functions/isaacAPIClass.d.ts +1 -1
  30. package/dist/functions/isaacAPIClass.d.ts.map +1 -1
  31. package/dist/functions/itemPool.d.ts +10 -0
  32. package/dist/functions/itemPool.d.ts.map +1 -0
  33. package/dist/functions/itemPool.lua +116 -0
  34. package/dist/functions/kColor.d.ts +11 -15
  35. package/dist/functions/kColor.d.ts.map +1 -1
  36. package/dist/functions/kColor.lua +42 -61
  37. package/dist/functions/mergeTests.lua +2 -2
  38. package/dist/functions/npcs.d.ts +1 -29
  39. package/dist/functions/npcs.d.ts.map +1 -1
  40. package/dist/functions/npcs.lua +0 -45
  41. package/dist/functions/projectiles.d.ts +32 -0
  42. package/dist/functions/projectiles.d.ts.map +1 -0
  43. package/dist/functions/projectiles.lua +73 -0
  44. package/dist/functions/rng.d.ts +11 -15
  45. package/dist/functions/rng.d.ts.map +1 -1
  46. package/dist/functions/rng.lua +32 -52
  47. package/dist/functions/rockAlt.d.ts +26 -6
  48. package/dist/functions/rockAlt.d.ts.map +1 -1
  49. package/dist/functions/rockAlt.lua +303 -78
  50. package/dist/functions/saveFile.d.ts +8 -7
  51. package/dist/functions/saveFile.d.ts.map +1 -1
  52. package/dist/functions/saveFile.lua +10 -96
  53. package/dist/functions/serialization.d.ts +26 -7
  54. package/dist/functions/serialization.d.ts.map +1 -1
  55. package/dist/functions/serialization.lua +51 -19
  56. package/dist/functions/table.d.ts +2 -2
  57. package/dist/functions/table.lua +2 -2
  58. package/dist/functions/trinketGive.d.ts +13 -0
  59. package/dist/functions/trinketGive.d.ts.map +1 -1
  60. package/dist/functions/trinketGive.lua +16 -0
  61. package/dist/functions/tstlClass.d.ts +1 -1
  62. package/dist/functions/tstlClass.d.ts.map +1 -1
  63. package/dist/functions/vector.d.ts +11 -15
  64. package/dist/functions/vector.d.ts.map +1 -1
  65. package/dist/functions/vector.lua +36 -55
  66. package/dist/index.d.ts +2 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.lua +16 -0
  69. package/dist/initCustomCallbacks.d.ts.map +1 -1
  70. package/dist/initCustomCallbacks.lua +3 -0
  71. package/dist/interfaces/AddCallbackParameterCustom.d.ts +4 -0
  72. package/dist/interfaces/AddCallbackParameterCustom.d.ts.map +1 -1
  73. package/dist/objects/callbackRegisterFunctions.d.ts.map +1 -1
  74. package/dist/objects/callbackRegisterFunctions.lua +6 -0
  75. package/dist/objects/isaacAPIClassTypeToFunctions.d.ts +12 -0
  76. package/dist/objects/isaacAPIClassTypeToFunctions.d.ts.map +1 -0
  77. package/dist/objects/isaacAPIClassTypeToFunctions.lua +25 -0
  78. package/dist/types/{private/IsaacAPIClass.d.ts → IsaacAPIClass.d.ts} +0 -0
  79. package/dist/types/IsaacAPIClass.d.ts.map +1 -0
  80. package/dist/types/{private/IsaacAPIClass.lua → IsaacAPIClass.lua} +0 -0
  81. package/dist/types/{private/SerializedIsaacAPIClass.d.ts → SerializedIsaacAPIClass.d.ts} +0 -0
  82. package/dist/types/SerializedIsaacAPIClass.d.ts.map +1 -0
  83. package/dist/types/{private/SerializedIsaacAPIClass.lua → SerializedIsaacAPIClass.lua} +0 -0
  84. package/dist/types/{private/TSTLClass.d.ts → TSTLClass.d.ts} +0 -0
  85. package/dist/types/TSTLClass.d.ts.map +1 -0
  86. package/dist/types/{private/TSTLClass.lua → TSTLClass.lua} +0 -0
  87. package/package.json +2 -2
  88. package/src/callbacks/postGridEntityCustomCollision.ts +74 -0
  89. package/src/callbacks/postGridEntityCustomRender.ts +1 -17
  90. package/src/callbacks/postGridEntityCustomUpdate.ts +1 -17
  91. package/src/callbacks/subscriptions/postGridEntityCustomBroken.ts +36 -0
  92. package/src/callbacks/subscriptions/postGridEntityCustomCollision.ts +43 -0
  93. package/src/enums/ModCallbackCustom.ts +38 -2
  94. package/src/features/customGridEntity.ts +76 -0
  95. package/src/functions/collectibles.ts +6 -2
  96. package/src/functions/color.ts +67 -87
  97. package/src/functions/deepCopy.ts +15 -2
  98. package/src/functions/gridEntities.ts +0 -23
  99. package/src/functions/isaacAPIClass.ts +1 -1
  100. package/src/functions/itemPool.ts +153 -0
  101. package/src/functions/kColor.ts +65 -84
  102. package/src/functions/mergeTests.ts +2 -2
  103. package/src/functions/npcs.ts +1 -58
  104. package/src/functions/projectiles.ts +78 -0
  105. package/src/functions/rng.ts +45 -65
  106. package/src/functions/rockAlt.ts +339 -60
  107. package/src/functions/saveFile.ts +13 -119
  108. package/src/functions/serialization.ts +81 -25
  109. package/src/functions/table.ts +2 -2
  110. package/src/functions/trinketGive.ts +21 -0
  111. package/src/functions/tstlClass.ts +1 -1
  112. package/src/functions/vector.ts +55 -74
  113. package/src/index.ts +2 -0
  114. package/src/initCustomCallbacks.ts +2 -0
  115. package/src/interfaces/AddCallbackParameterCustom.ts +4 -0
  116. package/src/objects/callbackRegisterFunctions.ts +6 -0
  117. package/src/objects/isaacAPIClassTypeToFunctions.ts +63 -0
  118. package/src/types/{private/IsaacAPIClass.ts → IsaacAPIClass.ts} +0 -0
  119. package/src/types/{private/SerializedIsaacAPIClass.ts → SerializedIsaacAPIClass.ts} +0 -0
  120. package/src/types/{private/TSTLClass.ts → TSTLClass.ts} +0 -0
  121. package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts +0 -6
  122. package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts.map +0 -1
  123. package/dist/objects/isaacAPIClassTypeToCopyFunction.lua +0 -13
  124. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +0 -5
  125. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts.map +0 -1
  126. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +0 -13
  127. package/dist/types/private/IsaacAPIClass.d.ts.map +0 -1
  128. package/dist/types/private/SerializedIsaacAPIClass.d.ts.map +0 -1
  129. package/dist/types/private/TSTLClass.d.ts.map +0 -1
  130. package/src/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  131. package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
@@ -31,6 +31,7 @@ local ____serialization = require("functions.serialization")
31
31
  local copyIsaacAPIClass = ____serialization.copyIsaacAPIClass
32
32
  local deserializeIsaacAPIClass = ____serialization.deserializeIsaacAPIClass
33
33
  local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
34
+ local serializeIsaacAPIClass = ____serialization.serializeIsaacAPIClass
34
35
  local ____tstlClass = require("functions.tstlClass")
35
36
  local getTSTLClassName = ____tstlClass.getTSTLClassName
36
37
  local isDefaultMap = ____tstlClass.isDefaultMap
@@ -520,7 +521,27 @@ function deepCopyUserdata(self, value, serializationType, traversalDescription)
520
521
  if not COPYABLE_ISAAC_API_CLASS_TYPES_SET:has(classType) then
521
522
  error((("The deep copy function does not support copying \"" .. traversalDescription) .. "\", since it is an Isaac API class of type: ") .. classType)
522
523
  end
523
- return copyIsaacAPIClass(nil, value, serializationType)
524
+ repeat
525
+ local ____switch99 = serializationType
526
+ local ____cond99 = ____switch99 == SerializationType.NONE
527
+ if ____cond99 then
528
+ do
529
+ return copyIsaacAPIClass(nil, value)
530
+ end
531
+ end
532
+ ____cond99 = ____cond99 or ____switch99 == SerializationType.SERIALIZE
533
+ if ____cond99 then
534
+ do
535
+ return serializeIsaacAPIClass(nil, value)
536
+ end
537
+ end
538
+ ____cond99 = ____cond99 or ____switch99 == SerializationType.DESERIALIZE
539
+ if ____cond99 then
540
+ do
541
+ return deserializeIsaacAPIClass(nil, value)
542
+ end
543
+ end
544
+ until true
524
545
  end
525
546
  COPYABLE_ISAAC_API_CLASS_TYPES_SET = __TS__New(
526
547
  Set,
@@ -1,5 +1,4 @@
1
1
  import { CrawlSpaceVariant, GridEntityType, GridEntityXMLType, TrapdoorVariant } from "isaac-typescript-definitions";
2
- import { RockAltType } from "../enums/RockAltType";
3
2
  import { AnyGridEntity } from "../types/AnyGridEntity";
4
3
  /**
5
4
  * Helper function to convert the grid entity type found in a room XML file to the corresponding
@@ -82,21 +81,6 @@ export declare function getGridEntityIDFromConstituents(gridEntityType: GridEnti
82
81
  * If you want to match every variant, use the `getGridEntities` function instead.
83
82
  */
84
83
  export declare function getMatchingGridEntities(gridEntityType: GridEntityType, variant: int): GridEntity[];
85
- /**
86
- * Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
87
- * will have.
88
- *
89
- * The rock type is based on the backdrop of the room.
90
- *
91
- * For example, if you change the backdrop of the starting room of the run to `BackdropType.CAVES`,
92
- * and then spawn `GridEntityType.ROCK_ALT`, it will be a mushroom instead of an urn. Additionally,
93
- * if it is destroyed, it will generate mushroom-appropriate rewards.
94
- *
95
- * On the other hand, if an urn is spawned first before the backdrop is changed to
96
- * `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
97
- * destroyed, the urn will still generate mushroom-appropriate rewards.
98
- */
99
- export declare function getRockAltType(): RockAltType;
100
84
  export declare function getSurroundingGridEntities(gridEntity: GridEntity): GridEntity[];
101
85
  export declare function getTopLeftWall(): GridEntity | undefined;
102
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gridEntities.d.ts","sourceRoot":"","sources":["../../src/functions/gridEntities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridEntities.d.ts","sourceRoot":"","sources":["../../src/functions/gridEntities.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,6 @@ local GRID_ENTITY_XML_MAP = ____gridEntityXMLMap.GRID_ENTITY_XML_MAP
22
22
  local ____roomShapeToTopLeftWallGridIndexMap = require("maps.roomShapeToTopLeftWallGridIndexMap")
23
23
  local DEFAULT_TOP_LEFT_WALL_GRID_INDEX = ____roomShapeToTopLeftWallGridIndexMap.DEFAULT_TOP_LEFT_WALL_GRID_INDEX
24
24
  local ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP = ____roomShapeToTopLeftWallGridIndexMap.ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP
25
- local ____backdropTypeToRockAltType = require("objects.backdropTypeToRockAltType")
26
- local BACKDROP_TYPE_TO_ROCK_ALT_TYPE = ____backdropTypeToRockAltType.BACKDROP_TYPE_TO_ROCK_ALT_TYPE
27
25
  local ____math = require("functions.math")
28
26
  local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle
29
27
  local ____rooms = require("functions.rooms")
@@ -270,23 +268,6 @@ end
270
268
  function ____exports.getGridEntityIDFromConstituents(self, gridEntityType, variant)
271
269
  return (tostring(gridEntityType) .. ".") .. tostring(variant)
272
270
  end
273
- --- Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
274
- -- will have.
275
- --
276
- -- The rock type is based on the backdrop of the room.
277
- --
278
- -- For example, if you change the backdrop of the starting room of the run to `BackdropType.CAVES`,
279
- -- and then spawn `GridEntityType.ROCK_ALT`, it will be a mushroom instead of an urn. Additionally,
280
- -- if it is destroyed, it will generate mushroom-appropriate rewards.
281
- --
282
- -- On the other hand, if an urn is spawned first before the backdrop is changed to
283
- -- `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
284
- -- destroyed, the urn will still generate mushroom-appropriate rewards.
285
- function ____exports.getRockAltType(self)
286
- local room = game:GetRoom()
287
- local backdropType = room:GetBackdropType()
288
- return BACKDROP_TYPE_TO_ROCK_ALT_TYPE[backdropType]
289
- end
290
271
  function ____exports.getSurroundingGridEntities(self, gridEntity)
291
272
  local room = game:GetRoom()
292
273
  local gridWidth = room:GetGridWidth()
@@ -17,7 +17,7 @@
17
17
  /// <reference types="isaac-typescript-definitions" />
18
18
  /// <reference types="isaac-typescript-definitions" />
19
19
  /// <reference types="isaac-typescript-definitions" />
20
- import { IsaacAPIClass } from "../types/private/IsaacAPIClass";
20
+ import { IsaacAPIClass } from "../types/IsaacAPIClass";
21
21
  /**
22
22
  * Helper function to get the name of a class from the Isaac API. This is contained within the
23
23
  * "__type" metatable key.
@@ -1 +1 @@
1
- {"version":3,"file":"isaacAPIClass.d.ts","sourceRoot":"","sources":["../../src/functions/isaacAPIClass.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBxE;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEhE;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAE9D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAExE;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa,CAGxE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW,CAElE;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW,CAElE;AAED,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAE9D;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,aAAa,CAElE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,uBAAuB,CAErC;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,gBAAgB,CAE5E;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,gBAAgB,CAExE;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,aAAa,CAElE;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAKT"}
1
+ {"version":3,"file":"isaacAPIClass.d.ts","sourceRoot":"","sources":["../../src/functions/isaacAPIClass.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBxE;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEhE;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAE9D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAExE;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa,CAGxE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW,CAElE;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW,CAElE;AAED,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAE9D;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,aAAa,CAElE;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAEpE;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,uBAAuB,CAErC;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,gBAAgB,CAE5E;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAEpE;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,gBAAgB,CAExE;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,aAAa,CAElE;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,UAAU,CAEhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAKT"}
@@ -0,0 +1,10 @@
1
+ import { CollectibleType, ItemPoolType } from "isaac-typescript-definitions";
2
+ /**
3
+ * Helper function to see if the given collectible is still present in the given item pool.
4
+ *
5
+ * If the collectible is non-offensive, any Tainted Losts will be temporarily changed to Isaac and
6
+ * then changed back. (This is because Tainted Lost is not able to retrieve non-offensive
7
+ * collectibles from item pools).
8
+ */
9
+ export declare function isCollectibleInItemPool(collectibleType: CollectibleType, itemPoolType: ItemPoolType): boolean;
10
+ //# sourceMappingURL=itemPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemPool.d.ts","sourceRoot":"","sources":["../../src/functions/itemPool.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,YAAY,EAGb,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,GACzB,OAAO,CAsDT"}
@@ -0,0 +1,116 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local Map = ____lualib.Map
3
+ local __TS__Iterator = ____lualib.__TS__Iterator
4
+ local __TS__New = ____lualib.__TS__New
5
+ local ____exports = {}
6
+ local removeItemsAndTrinketsThatAffectItemPools, restoreItemsAndTrinketsThatAffectItemPools, COLLECTIBLES_THAT_AFFECT_ITEM_POOLS, TRINKETS_THAT_AFFECT_ITEM_POOLS
7
+ local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
8
+ local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
9
+ local ItemConfigTag = ____isaac_2Dtypescript_2Ddefinitions.ItemConfigTag
10
+ local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
11
+ local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
12
+ local ____cachedClasses = require("cachedClasses")
13
+ local game = ____cachedClasses.game
14
+ local ____collectibleSet = require("functions.collectibleSet")
15
+ local getCollectibleSet = ____collectibleSet.getCollectibleSet
16
+ local ____collectibleTag = require("functions.collectibleTag")
17
+ local collectibleHasTag = ____collectibleTag.collectibleHasTag
18
+ local ____playerDataStructures = require("functions.playerDataStructures")
19
+ local mapGetPlayer = ____playerDataStructures.mapGetPlayer
20
+ local mapSetPlayer = ____playerDataStructures.mapSetPlayer
21
+ local ____playerIndex = require("functions.playerIndex")
22
+ local getPlayers = ____playerIndex.getPlayers
23
+ local ____players = require("functions.players")
24
+ local getPlayersOfType = ____players.getPlayersOfType
25
+ local ____utils = require("functions.utils")
26
+ local ____repeat = ____utils["repeat"]
27
+ function removeItemsAndTrinketsThatAffectItemPools(self)
28
+ local removedItemsMap = __TS__New(Map)
29
+ local removedTrinketsMap = __TS__New(Map)
30
+ for ____, player in ipairs(getPlayers(nil)) do
31
+ local removedItems = {}
32
+ for ____, itemToRemove in ipairs(COLLECTIBLES_THAT_AFFECT_ITEM_POOLS) do
33
+ if player:HasCollectible(itemToRemove) then
34
+ local numCollectibles = player:GetCollectibleNum(itemToRemove)
35
+ ____repeat(
36
+ nil,
37
+ numCollectibles,
38
+ function()
39
+ player:RemoveCollectible(itemToRemove)
40
+ removedItems[#removedItems + 1] = itemToRemove
41
+ end
42
+ )
43
+ end
44
+ end
45
+ mapSetPlayer(nil, removedItemsMap, player, removedItems)
46
+ local removedTrinkets = {}
47
+ for ____, trinketToRemove in ipairs(TRINKETS_THAT_AFFECT_ITEM_POOLS) do
48
+ if player:HasTrinket(trinketToRemove) then
49
+ local numTrinkets = player:GetTrinketMultiplier(trinketToRemove)
50
+ ____repeat(
51
+ nil,
52
+ numTrinkets,
53
+ function()
54
+ player:TryRemoveTrinket(trinketToRemove)
55
+ removedTrinkets[#removedTrinkets + 1] = trinketToRemove
56
+ end
57
+ )
58
+ end
59
+ end
60
+ mapSetPlayer(nil, removedTrinketsMap, player, removedTrinkets)
61
+ end
62
+ return {removedItemsMap, removedTrinketsMap}
63
+ end
64
+ function restoreItemsAndTrinketsThatAffectItemPools(self, removedItemsMap, removedTrinketsMap)
65
+ for ____, player in ipairs(getPlayers(nil)) do
66
+ local removedItems = mapGetPlayer(nil, removedItemsMap, player)
67
+ if removedItems ~= nil then
68
+ for ____, collectibleType in ipairs(removedItems) do
69
+ player:AddCollectible(collectibleType, 0, false)
70
+ end
71
+ end
72
+ local removedTrinkets = mapGetPlayer(nil, removedTrinketsMap, player)
73
+ if removedTrinkets ~= nil then
74
+ for ____, trinketType in ipairs(removedTrinkets) do
75
+ player:AddTrinket(trinketType, false)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ COLLECTIBLES_THAT_AFFECT_ITEM_POOLS = {CollectibleType.CHAOS, CollectibleType.SACRED_ORB, CollectibleType.TMTRAINER}
81
+ TRINKETS_THAT_AFFECT_ITEM_POOLS = {TrinketType.NO}
82
+ --- Helper function to see if the given collectible is still present in the given item pool.
83
+ --
84
+ -- If the collectible is non-offensive, any Tainted Losts will be temporarily changed to Isaac and
85
+ -- then changed back. (This is because Tainted Lost is not able to retrieve non-offensive
86
+ -- collectibles from item pools).
87
+ function ____exports.isCollectibleInItemPool(self, collectibleType, itemPoolType)
88
+ local taintedLosts = getPlayersOfType(nil, PlayerType.THE_LOST_B)
89
+ local isOffensive = collectibleHasTag(nil, collectibleType, ItemConfigTag.OFFENSIVE)
90
+ local changedPlayerTypes = false
91
+ if not isOffensive then
92
+ changedPlayerTypes = true
93
+ for ____, player in ipairs(taintedLosts) do
94
+ player:ChangePlayerType(PlayerType.ISAAC)
95
+ end
96
+ end
97
+ local removedItemsMap, removedTrinketsMap = table.unpack(removeItemsAndTrinketsThatAffectItemPools(nil))
98
+ local itemPool = game:GetItemPool()
99
+ local collectibleSet = getCollectibleSet(nil)
100
+ for ____, collectibleTypeInSet in __TS__Iterator(collectibleSet:values()) do
101
+ if collectibleTypeInSet ~= collectibleType then
102
+ itemPool:AddRoomBlacklist(collectibleTypeInSet)
103
+ end
104
+ end
105
+ local retrievedCollectibleType = itemPool:GetCollectible(itemPoolType, false, 1)
106
+ local collectibleUnlocked = retrievedCollectibleType == collectibleType
107
+ itemPool:ResetRoomBlacklist()
108
+ restoreItemsAndTrinketsThatAffectItemPools(nil, removedItemsMap, removedTrinketsMap)
109
+ if changedPlayerTypes then
110
+ for ____, player in ipairs(taintedLosts) do
111
+ player:ChangePlayerType(PlayerType.THE_LOST_B)
112
+ end
113
+ end
114
+ return collectibleUnlocked
115
+ end
116
+ return ____exports
@@ -2,24 +2,16 @@
2
2
  /// <reference types="isaac-typescript-definitions" />
3
3
  /// <reference types="isaac-typescript-definitions" />
4
4
  /// <reference types="isaac-typescript-definitions" />
5
- import { SerializationType } from "../enums/SerializationType";
6
- declare type SerializedKColor = LuaMap<string, unknown> & {
5
+ export declare type SerializedKColor = LuaMap<string, unknown> & {
7
6
  readonly __serializedKColorBrand: symbol;
8
7
  };
9
- interface CopyKColorReturn {
10
- [SerializationType.NONE]: KColor;
11
- [SerializationType.SERIALIZE]: SerializedKColor;
12
- [SerializationType.DESERIALIZE]: KColor;
13
- }
8
+ /** Helper function to copy a `KColor` Isaac API class. */
9
+ export declare function copyKColor(kColor: KColor): KColor;
14
10
  /**
15
- * Helper function to copy a `KColor` object.
16
- *
17
- * @param kColor The KColor object to copy. In the case of deserialization, this will actually be a
18
- * Lua table instead of an instantiated KColor class.
19
- * @param serializationType Default is `SerializationType.NONE`.
11
+ * Helper function to convert a `SerializedKColor` object to a normal `KColor` object. (This is used
12
+ * by the save data manager when reading data from the "save#.dat" file.)
20
13
  */
21
- export declare function copyKColor<K extends KColor | SerializedKColor, S extends SerializationType>(kColor: K, serializationType: S): CopyKColorReturn[S];
22
- export declare function copyKColor<K extends KColor | SerializedKColor>(kColor: K): CopyKColorReturn[SerializationType.NONE];
14
+ export declare function deserializeKColor(kColor: SerializedKColor): KColor;
23
15
  /**
24
16
  * Helper function to get a random color.
25
17
  *
@@ -36,5 +28,9 @@ export declare function isKColor(object: unknown): object is KColor;
36
28
  */
37
29
  export declare function isSerializedKColor(object: unknown): object is SerializedKColor;
38
30
  export declare function kColorEquals(kColor1: KColor, kColor2: KColor): boolean;
39
- export {};
31
+ /**
32
+ * Helper function to convert a `KColor` object to a `SerializedKColor` object. (This is used by the
33
+ * save data manager when writing data from the "save#.dat" file.)
34
+ */
35
+ export declare function serializeKColor(kColor: KColor): SerializedKColor;
40
36
  //# sourceMappingURL=kColor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kColor.d.ts","sourceRoot":"","sources":["../../src/functions/kColor.ts"],"names":[],"mappings":";;;;AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAO/D,aAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAChD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF,UAAU,gBAAgB;IACxB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAChD,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CACzC;AAKD;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,CAAC,SAAS,MAAM,GAAG,gBAAgB,EACnC,CAAC,SAAS,iBAAiB,EAC3B,MAAM,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,gBAAgB,EAC5D,MAAM,EAAE,CAAC,GACR,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAoE5C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,GAAE,IAAI,GAAG,GAAqB,EACvC,KAAK,SAAI,GACR,MAAM,CAQR;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,gBAAgB,CAQ5B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE"}
1
+ {"version":3,"file":"kColor.d.ts","sourceRoot":"","sources":["../../src/functions/kColor.ts"],"names":[],"mappings":";;;;AAOA,oBAAY,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACvD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C,CAAC;AAKF,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAmClE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,GAAE,IAAI,GAAG,GAAqB,EACvC,KAAK,SAAI,GACR,MAAM,CAQR;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,gBAAgB,CAQ5B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAWhE"}
@@ -2,8 +2,6 @@ local ____exports = {}
2
2
  local OBJECT_NAME
3
3
  local ____SerializationBrand = require("enums.private.SerializationBrand")
4
4
  local SerializationBrand = ____SerializationBrand.SerializationBrand
5
- local ____SerializationType = require("enums.SerializationType")
6
- local SerializationType = ____SerializationType.SerializationType
7
5
  local ____isaacAPIClass = require("functions.isaacAPIClass")
8
6
  local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
9
7
  local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
@@ -25,66 +23,38 @@ function ____exports.isKColor(self, object)
25
23
  end
26
24
  local KEYS = {"Red", "Green", "Blue", "Alpha"}
27
25
  OBJECT_NAME = "KColor"
28
- --- Helper function to copy a `KColor` object.
29
- --
30
- -- @param kColor The KColor object to copy. In the case of deserialization, this will actually be a
31
- -- Lua table instead of an instantiated KColor class.
32
- -- @param serializationType Default is `SerializationType.NONE`.
33
- function ____exports.copyKColor(self, kColor, serializationType)
34
- if serializationType == nil then
35
- serializationType = SerializationType.NONE
26
+ --- Helper function to copy a `KColor` Isaac API class.
27
+ function ____exports.copyKColor(self, kColor)
28
+ if not ____exports.isKColor(nil, kColor) then
29
+ error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
36
30
  end
37
- repeat
38
- local ____switch3 = serializationType
39
- local ____cond3 = ____switch3 == SerializationType.NONE
40
- if ____cond3 then
41
- do
42
- if not ____exports.isKColor(nil, kColor) then
43
- error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
44
- end
45
- return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
46
- end
47
- end
48
- ____cond3 = ____cond3 or ____switch3 == SerializationType.SERIALIZE
49
- if ____cond3 then
50
- do
51
- if not ____exports.isKColor(nil, kColor) then
52
- error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
53
- end
54
- local kColorTable = {}
55
- copyValuesToTable(nil, kColor, KEYS, kColorTable)
56
- kColorTable[SerializationBrand.K_COLOR] = ""
57
- return kColorTable
58
- end
59
- end
60
- ____cond3 = ____cond3 or ____switch3 == SerializationType.DESERIALIZE
61
- if ____cond3 then
62
- do
63
- if not isTable(nil, kColor) then
64
- error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
65
- end
66
- local r, g, b, a = table.unpack(getNumbersFromTable(
67
- nil,
68
- kColor,
69
- OBJECT_NAME,
70
- table.unpack(KEYS)
71
- ))
72
- if r == nil then
73
- error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: r")
74
- end
75
- if g == nil then
76
- error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: g")
77
- end
78
- if b == nil then
79
- error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: b")
80
- end
81
- if a == nil then
82
- error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: a")
83
- end
84
- return KColor(r, g, b, a)
85
- end
86
- end
87
- until true
31
+ return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
32
+ end
33
+ --- Helper function to convert a `SerializedKColor` object to a normal `KColor` object. (This is used
34
+ -- by the save data manager when reading data from the "save#.dat" file.)
35
+ function ____exports.deserializeKColor(self, kColor)
36
+ if not isTable(nil, kColor) then
37
+ error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
38
+ end
39
+ local r, g, b, a = table.unpack(getNumbersFromTable(
40
+ nil,
41
+ kColor,
42
+ OBJECT_NAME,
43
+ table.unpack(KEYS)
44
+ ))
45
+ if r == nil then
46
+ error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Red")
47
+ end
48
+ if g == nil then
49
+ error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Green")
50
+ end
51
+ if b == nil then
52
+ error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Blue")
53
+ end
54
+ if a == nil then
55
+ error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Alpha")
56
+ end
57
+ return KColor(r, g, b, a)
88
58
  end
89
59
  --- Helper function to get a random color.
90
60
  --
@@ -119,4 +89,15 @@ end
119
89
  function ____exports.kColorEquals(self, kColor1, kColor2)
120
90
  return isaacAPIClassEquals(nil, kColor1, kColor2, KEYS)
121
91
  end
92
+ --- Helper function to convert a `KColor` object to a `SerializedKColor` object. (This is used by the
93
+ -- save data manager when writing data from the "save#.dat" file.)
94
+ function ____exports.serializeKColor(self, kColor)
95
+ if not ____exports.isKColor(nil, kColor) then
96
+ error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
97
+ end
98
+ local kColorTable = {}
99
+ copyValuesToTable(nil, kColor, KEYS, kColorTable)
100
+ kColorTable[SerializationBrand.K_COLOR] = ""
101
+ return kColorTable
102
+ end
122
103
  return ____exports
@@ -19,8 +19,8 @@ local newRNG = ____rng.newRNG
19
19
  local ____serialization = require("functions.serialization")
20
20
  local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
21
21
  local ____vector = require("functions.vector")
22
- local copyVector = ____vector.copyVector
23
22
  local isVector = ____vector.isVector
23
+ local serializeVector = ____vector.serializeVector
24
24
  function oldTableHasUpdatedValue(self)
25
25
  local key = "foo"
26
26
  local oldValue = "bar"
@@ -60,7 +60,7 @@ function oldTableHasSerializedIsaacAPIClass(self)
60
60
  local x = 50
61
61
  local y = 60
62
62
  local vector = Vector(x, y)
63
- local vectorSerialized = copyVector(nil, vector, SerializationType.SERIALIZE)
63
+ local vectorSerialized = serializeVector(nil, vector)
64
64
  if not isSerializedIsaacAPIClass(nil, vectorSerialized) then
65
65
  error("The \"isSerializedIsaacAPIClass\" function says that a serialized vector is not serialized.")
66
66
  end
@@ -1,18 +1,4 @@
1
- import { EntityType, ProjectilesMode } from "isaac-typescript-definitions";
2
- /**
3
- * Helper function to make an NPC fire a projectile. Returns the fired projectile. Use this function
4
- * instead of the `EntityNPC.FireProjectiles` method, since that returns void.
5
- *
6
- * @param npc The NPC to fire the projectile from.
7
- * @param position The staring position of the projectile.
8
- * @param velocity The starting velocity of the projectile.
9
- * @param projectilesMode The mode of the projectile. Optional. Default is
10
- * `ProjectilesMode.ONE_PROJECTILE`.
11
- * @param projectileParams The parameters of the projectile. Optional. Default is
12
- * `ProjectileParams()`.
13
- * @returns The fired projectile.
14
- */
15
- export declare function fireProjectiles(npc: EntityNPC, position: Vector, velocity: Vector, projectilesMode?: ProjectilesMode, projectileParams?: ProjectileParams): EntityProjectile[];
1
+ import { EntityType } from "isaac-typescript-definitions";
16
2
  /**
17
3
  * Helper function to get all of the non-dead NPCs in the room.
18
4
  *
@@ -46,18 +32,4 @@ export declare function isDyingEggyWithNoSpidersLeft(npc: EntityNPC): boolean;
46
32
  * enemies.
47
33
  */
48
34
  export declare function isRaglingDeathPatch(npc: EntityNPC): boolean;
49
- /**
50
- * The base game `EntityNPC.FireProjectiles` method does not return anything, which is a problem in
51
- * situations where you need to work with the fired projectiles. This function runs that method, and
52
- * then returns the projectiles that were spawned.
53
- *
54
- * @param npc The EntityNPC firing projectiles.
55
- * @param position The starting position of the projectiles.
56
- * @param velocity The starting velocity of the projectiles.
57
- * @param projectilesMode A ProjectilesMode enum value defining how to fire the projectiles.
58
- * @param projectileParams A ProjectileParams object containing various parameters for the
59
- * projectiles.
60
- * @returns An array of EntityProjectiles containing all fired projectiles.
61
- */
62
- export declare function npcFireProjectiles(npc: EntityNPC, position: Vector, velocity: Vector, projectilesMode: ProjectilesMode, projectileParams: ProjectileParams): EntityProjectile[];
63
35
  //# sourceMappingURL=npcs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/functions/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EAMV,eAAe,EAGhB,MAAM,8BAA8B,CAAC;AAgCtC;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,eAAgD,EACjE,gBAAgB,GAAE,gBAAqC,GACtD,gBAAgB,EAAE,CAMpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,UAAU,GAAE,UAAe,EAC3B,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAoB3D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAO3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,GACjC,gBAAgB,EAAE,CAOpB"}
1
+ {"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/functions/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EAQX,MAAM,8BAA8B,CAAC;AA+BtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,UAAU,GAAE,UAAe,EAC3B,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAoB3D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAO3D"}
@@ -17,16 +17,12 @@ local MotherSubType = ____isaac_2Dtypescript_2Ddefinitions.MotherSubType
17
17
  local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
18
18
  local NpcState = ____isaac_2Dtypescript_2Ddefinitions.NpcState
19
19
  local PeepVariant = ____isaac_2Dtypescript_2Ddefinitions.PeepVariant
20
- local ProjectilesMode = ____isaac_2Dtypescript_2Ddefinitions.ProjectilesMode
21
20
  local RaglingVariant = ____isaac_2Dtypescript_2Ddefinitions.RaglingVariant
22
21
  local VisVariant = ____isaac_2Dtypescript_2Ddefinitions.VisVariant
23
22
  local ____constants = require("constants")
24
23
  local EGGY_STATE_FRAME_OF_FINAL_SPIDER = ____constants.EGGY_STATE_FRAME_OF_FINAL_SPIDER
25
- local ____entities = require("functions.entities")
26
- local getFilteredNewEntities = ____entities.getFilteredNewEntities
27
24
  local ____entitiesSpecific = require("functions.entitiesSpecific")
28
25
  local getNPCs = ____entitiesSpecific.getNPCs
29
- local getProjectiles = ____entitiesSpecific.getProjectiles
30
26
  --- Checks for specific NPCs that have "CanShutDoors" set to true naturally by the game, but should
31
27
  -- not actually keep the doors closed (like Death's scythes).
32
28
  function ____exports.isAliveExceptionNPC(self, npc)
@@ -82,29 +78,6 @@ NON_ALIVE_NPCS_TYPE_VARIANT_SUBTYPE = __TS__New(
82
78
  (((tostring(EntityType.MOTHER) .. ".") .. tostring(MotherVariant.MOTHER_1)) .. ".") .. tostring(MotherSubType.PHASE_2)
83
79
  }
84
80
  )
85
- --- Helper function to make an NPC fire a projectile. Returns the fired projectile. Use this function
86
- -- instead of the `EntityNPC.FireProjectiles` method, since that returns void.
87
- --
88
- -- @param npc The NPC to fire the projectile from.
89
- -- @param position The staring position of the projectile.
90
- -- @param velocity The starting velocity of the projectile.
91
- -- @param projectilesMode The mode of the projectile. Optional. Default is
92
- -- `ProjectilesMode.ONE_PROJECTILE`.
93
- -- @param projectileParams The parameters of the projectile. Optional. Default is
94
- -- `ProjectileParams()`.
95
- -- @returns The fired projectile.
96
- function ____exports.fireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
97
- if projectilesMode == nil then
98
- projectilesMode = ProjectilesMode.ONE_PROJECTILE
99
- end
100
- if projectileParams == nil then
101
- projectileParams = ProjectileParams()
102
- end
103
- local oldProjectiles = getProjectiles(nil, projectileParams.Variant)
104
- npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
105
- local newProjectiles = getProjectiles(nil, projectileParams.Variant)
106
- return getFilteredNewEntities(nil, oldProjectiles, newProjectiles)
107
- end
108
81
  --- Helper function to get all of the non-dead NPCs in the room.
109
82
  --
110
83
  -- This function will not include NPCs on an internal blacklist, such as Death's scythes or Big Horn
@@ -142,22 +115,4 @@ function ____exports.getAliveNPCs(self, entityType, variant, subType, ignoreFrie
142
115
  function(____, npc) return not npc:IsDead() and not ____exports.isAliveExceptionNPC(nil, npc) end
143
116
  )
144
117
  end
145
- --- The base game `EntityNPC.FireProjectiles` method does not return anything, which is a problem in
146
- -- situations where you need to work with the fired projectiles. This function runs that method, and
147
- -- then returns the projectiles that were spawned.
148
- --
149
- -- @param npc The EntityNPC firing projectiles.
150
- -- @param position The starting position of the projectiles.
151
- -- @param velocity The starting velocity of the projectiles.
152
- -- @param projectilesMode A ProjectilesMode enum value defining how to fire the projectiles.
153
- -- @param projectileParams A ProjectileParams object containing various parameters for the
154
- -- projectiles.
155
- -- @returns An array of EntityProjectiles containing all fired projectiles.
156
- function ____exports.npcFireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
157
- local oldEntities = getProjectiles(nil)
158
- npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
159
- local newEntities = getProjectiles(nil)
160
- local filteredNewEntities = getFilteredNewEntities(nil, oldEntities, newEntities)
161
- return filteredNewEntities
162
- end
163
118
  return ____exports
@@ -0,0 +1,32 @@
1
+ import { ProjectilesMode } from "isaac-typescript-definitions";
2
+ /**
3
+ * Helper function to make an NPC fire one or more projectiles. Returns the fired projectile(s).
4
+ *
5
+ * Use this function instead of the `EntityNPC.FireProjectiles` method if you need to modify or
6
+ * access the `EntityProjectile` objects after they are fired, since this function returns the
7
+ * objects in an array.
8
+ *
9
+ * @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
10
+ * the projectile(s) to come from anything in particular.
11
+ * @param position The staring position of the projectile(s).
12
+ * @param velocity The starting velocity of the projectile(s).
13
+ * @param projectilesMode Optional. The mode of the projectile(s). Default is
14
+ * `ProjectilesMode.ONE_PROJECTILE`.
15
+ * @param projectileParams Optional. The parameters of the projectile(s). Default is
16
+ * `ProjectileParams()`.
17
+ * @returns The fired projectile(s).
18
+ */
19
+ export declare function fireProjectiles(npc: EntityNPC | undefined, position: Vector, velocity: Vector, projectilesMode?: ProjectilesMode, projectileParams?: ProjectileParams): EntityProjectile[];
20
+ /**
21
+ * Helper function to spawn projectiles in a circle around a position. Under the hood, this
22
+ * leverages `ProjectileMode.N_PROJECTILES_IN_CIRCLE`.
23
+ *
24
+ * @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
25
+ * the projectile(s) to come from anything in particular.
26
+ * @param position The staring position of the projectile(s).
27
+ * @param speed The speed of the projectile(s).
28
+ * @param numProjectiles The amount of projectiles to spawn.
29
+ * @returns The fired projectile(s).
30
+ */
31
+ export declare function fireProjectilesInCircle(npc: EntityNPC | undefined, position: Vector, speed: float, numProjectiles: int): EntityProjectile[];
32
+ //# sourceMappingURL=projectiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectiles.d.ts","sourceRoot":"","sources":["../../src/functions/projectiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAItC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,eAAgD,EACjE,gBAAgB,GAAE,gBAAqC,GACtD,gBAAgB,EAAE,CAoBpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,GAAG,GAClB,gBAAgB,EAAE,CAQpB"}