isaacscript-common 1.0.485 → 1.0.489

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 (139) hide show
  1. package/README.md +2 -0
  2. package/dist/callbacks/itemPickup.lua +2 -6
  3. package/dist/callbacks/postBombInitLate.lua +6 -8
  4. package/dist/callbacks/postCursedTeleport.lua +8 -10
  5. package/dist/callbacks/postEffectInitLate.lua +6 -8
  6. package/dist/callbacks/postEsauJr.lua +2 -4
  7. package/dist/callbacks/postFamiliarInitLate.lua +6 -8
  8. package/dist/callbacks/postFlip.lua +2 -4
  9. package/dist/callbacks/postGridEntity.lua +8 -18
  10. package/dist/callbacks/postKnifeInitLate.lua +6 -8
  11. package/dist/callbacks/postLaserInitLate.lua +6 -8
  12. package/dist/callbacks/postNPCInitLate.lua +6 -8
  13. package/dist/callbacks/postPickupCollect.lua +1 -5
  14. package/dist/callbacks/postPickupInitLate.lua +6 -8
  15. package/dist/callbacks/postPlayerChangeHealth.lua +9 -13
  16. package/dist/callbacks/postPlayerChangeType.lua +1 -5
  17. package/dist/callbacks/postPlayerFatalDamage.lua +2 -2
  18. package/dist/callbacks/postPlayerInitLate.lua +1 -5
  19. package/dist/callbacks/postPlayerReordered.lua +1 -1
  20. package/dist/callbacks/postProjectileInitLate.lua +6 -8
  21. package/dist/callbacks/postPurchase.lua +10 -14
  22. package/dist/callbacks/postSacrifice.lua +3 -3
  23. package/dist/callbacks/postSlotInitUpdate.lua +3 -11
  24. package/dist/callbacks/postSlotRenderBroken.lua +2 -8
  25. package/dist/callbacks/postTearInitLate.lua +6 -8
  26. package/dist/callbacks/postTransformation.lua +1 -5
  27. package/dist/callbacks/reorderedCallbacks.lua +4 -4
  28. package/dist/callbacks/subscriptions/postBombInitLate.lua +3 -3
  29. package/dist/callbacks/subscriptions/postCursedTeleport.lua +1 -1
  30. package/dist/callbacks/subscriptions/postCustomRevive.lua +3 -3
  31. package/dist/callbacks/subscriptions/postEffectInitLate.lua +3 -3
  32. package/dist/callbacks/subscriptions/postEsauJr.lua +1 -1
  33. package/dist/callbacks/subscriptions/postFamiliarInitLate.lua +3 -3
  34. package/dist/callbacks/subscriptions/postFirstEsauJr.lua +1 -1
  35. package/dist/callbacks/subscriptions/postFirstFlip.lua +1 -1
  36. package/dist/callbacks/subscriptions/postFlip.lua +1 -1
  37. package/dist/callbacks/subscriptions/postGameStartedReordered.lua +1 -1
  38. package/dist/callbacks/subscriptions/postGridEntityInit.lua +3 -3
  39. package/dist/callbacks/subscriptions/postGridEntityRemove.lua +3 -3
  40. package/dist/callbacks/subscriptions/postGridEntityUpdate.lua +3 -3
  41. package/dist/callbacks/subscriptions/postItemPickup.lua +5 -5
  42. package/dist/callbacks/subscriptions/postKnifeInitLate.lua +3 -3
  43. package/dist/callbacks/subscriptions/postLaserInitLate.lua +3 -3
  44. package/dist/callbacks/subscriptions/postNPCInitLate.lua +3 -3
  45. package/dist/callbacks/subscriptions/postNewLevelReordered.lua +1 -1
  46. package/dist/callbacks/subscriptions/postNewRoomReordered.lua +1 -1
  47. package/dist/callbacks/subscriptions/postPickupCollect.lua +3 -3
  48. package/dist/callbacks/subscriptions/postPickupInitLate.lua +3 -3
  49. package/dist/callbacks/subscriptions/postPlayerChangeHealth.lua +3 -3
  50. package/dist/callbacks/subscriptions/postPlayerChangeType.lua +1 -1
  51. package/dist/callbacks/subscriptions/postPlayerFatalDamage.lua +3 -3
  52. package/dist/callbacks/subscriptions/postPlayerInitLate.lua +3 -3
  53. package/dist/callbacks/subscriptions/postPlayerInitReordered.lua +3 -3
  54. package/dist/callbacks/subscriptions/postPlayerRenderReordered.lua +3 -3
  55. package/dist/callbacks/subscriptions/postPlayerUpdateReordered.lua +3 -3
  56. package/dist/callbacks/subscriptions/postProjectileInitLate.lua +3 -3
  57. package/dist/callbacks/subscriptions/postPurchase.lua +8 -2
  58. package/dist/callbacks/subscriptions/postSacrifice.lua +1 -1
  59. package/dist/callbacks/subscriptions/postSlotDestroyed.lua +3 -3
  60. package/dist/callbacks/subscriptions/postSlotInit.lua +3 -3
  61. package/dist/callbacks/subscriptions/postSlotRender.lua +3 -3
  62. package/dist/callbacks/subscriptions/postSlotUpdate.lua +3 -3
  63. package/dist/callbacks/subscriptions/postTearInitLate.lua +3 -3
  64. package/dist/callbacks/subscriptions/postTransformation.lua +3 -3
  65. package/dist/callbacks/subscriptions/preCustomRevive.lua +1 -1
  66. package/dist/callbacks/subscriptions/preItemPickup.lua +5 -5
  67. package/dist/constants.d.ts +0 -6
  68. package/dist/constants.lua +38 -6
  69. package/dist/features/deployJSONRoom.lua +90 -61
  70. package/dist/features/disableInputs.lua +9 -3
  71. package/dist/features/forgottenSwitch.lua +1 -1
  72. package/dist/features/getCollectibleItemPoolType.lua +10 -14
  73. package/dist/features/preventCollectibleRotate.lua +3 -9
  74. package/dist/features/saveDataManager/load.lua +2 -6
  75. package/dist/features/saveDataManager/main.lua +1 -1
  76. package/dist/features/saveDataManager/merge.lua +2 -4
  77. package/dist/features/sirenHelpers.lua +5 -5
  78. package/dist/functions/array.d.ts +19 -7
  79. package/dist/functions/array.lua +32 -19
  80. package/dist/functions/bitwise.lua +1 -1
  81. package/dist/functions/cards.d.ts +15 -9
  82. package/dist/functions/cards.lua +40 -30
  83. package/dist/functions/charge.lua +10 -12
  84. package/dist/functions/collectibles.d.ts +1 -0
  85. package/dist/functions/collectibles.lua +26 -21
  86. package/dist/functions/color.lua +9 -1
  87. package/dist/functions/deepCopy.lua +42 -22
  88. package/dist/functions/deepCopyTests.lua +12 -20
  89. package/dist/functions/doors.lua +7 -19
  90. package/dist/functions/entity.lua +7 -1
  91. package/dist/functions/flag.lua +1 -1
  92. package/dist/functions/gridEntity.lua +15 -10
  93. package/dist/functions/input.lua +14 -18
  94. package/dist/functions/jsonRoom.lua +3 -9
  95. package/dist/functions/language.lua +9 -1
  96. package/dist/functions/log.lua +18 -46
  97. package/dist/functions/math.lua +15 -17
  98. package/dist/functions/npc.lua +15 -17
  99. package/dist/functions/pickups.d.ts +7 -2
  100. package/dist/functions/pickups.lua +19 -3
  101. package/dist/functions/player.d.ts +0 -43
  102. package/dist/functions/player.lua +37 -137
  103. package/dist/functions/playerHealth.lua +19 -9
  104. package/dist/functions/pocketItems.d.ts +16 -14
  105. package/dist/functions/pocketItems.lua +56 -30
  106. package/dist/functions/random.lua +2 -2
  107. package/dist/functions/revive.lua +4 -4
  108. package/dist/functions/rooms.lua +15 -18
  109. package/dist/functions/spawnCollectible.lua +10 -2
  110. package/dist/functions/sprite.lua +2 -2
  111. package/dist/functions/stage.lua +6 -6
  112. package/dist/functions/tears.lua +1 -1
  113. package/dist/functions/transformations.lua +4 -10
  114. package/dist/functions/trinketGive.lua +2 -2
  115. package/dist/functions/trinkets.d.ts +23 -1
  116. package/dist/functions/trinkets.lua +24 -0
  117. package/dist/functions/ui.lua +3 -3
  118. package/dist/functions/util.lua +4 -8
  119. package/dist/functions/vector.lua +8 -8
  120. package/dist/index.d.ts +4 -0
  121. package/dist/index.lua +32 -0
  122. package/dist/lualib_bundle.lua +603 -555
  123. package/dist/maps/cardDescriptionMap.lua +99 -1
  124. package/dist/maps/cardNameMap.lua +99 -1
  125. package/dist/maps/collectibleDescriptionMap.lua +722 -1
  126. package/dist/maps/collectibleNameMap.lua +722 -1
  127. package/dist/maps/gridEntityXMLMap.d.ts +6 -0
  128. package/dist/maps/gridEntityXMLMap.lua +40 -0
  129. package/dist/maps/pillEffectNameMap.lua +52 -1
  130. package/dist/maps/roomTypeToItemPoolMap.d.ts +2 -0
  131. package/dist/maps/roomTypeToItemPoolMap.lua +19 -0
  132. package/dist/maps/transformationMap.lua +19 -12
  133. package/dist/maps/trinketDescriptionMap.lua +190 -1
  134. package/dist/maps/trinketNameMap.lua +190 -1
  135. package/dist/sets/cards.d.ts +25 -0
  136. package/dist/sets/cards.lua +106 -0
  137. package/dist/types/ModUpgraded.lua +82 -166
  138. package/dist/types/PocketItemDescription.d.ts +1 -0
  139. package/package.json +5 -5
@@ -23,15 +23,15 @@ function checkReturnFamiliarToPlayer(self, npc)
23
23
  end
24
24
  end
25
25
  function blacklistEntryExists(self, incomingFamiliarVariant, incomingFamiliarSubType)
26
+ local familiarSubType
27
+ local familiarVariant
26
28
  for ____, ____value in ipairs(v.run.familiarBlacklist) do
27
- local familiarVariant
28
29
  familiarVariant = ____value[1]
29
- local familiarSubType
30
30
  familiarSubType = ____value[2]
31
- if (incomingFamiliarVariant == familiarVariant) and (familiarSubType == incomingFamiliarSubType) then
31
+ if incomingFamiliarVariant == familiarVariant and familiarSubType == incomingFamiliarSubType then
32
32
  return true
33
33
  end
34
- if (incomingFamiliarVariant == familiarVariant) and (familiarSubType == nil) then
34
+ if incomingFamiliarVariant == familiarVariant and familiarSubType == nil then
35
35
  return true
36
36
  end
37
37
  end
@@ -59,7 +59,7 @@ local function getSirenHelper(self, familiar)
59
59
  local familiarHash = GetPtrHash(familiar)
60
60
  local sirenHelpers = Isaac.FindByType(EntityType.ENTITY_SIREN_HELPER)
61
61
  for ____, sirenHelper in ipairs(sirenHelpers) do
62
- if (sirenHelper.Target ~= nil) and (GetPtrHash(sirenHelper.Target) == familiarHash) then
62
+ if sirenHelper.Target ~= nil and GetPtrHash(sirenHelper.Target) == familiarHash then
63
63
  return sirenHelper
64
64
  end
65
65
  end
@@ -28,16 +28,28 @@ export declare function arrayShuffleInPlace<T>(array: T[], seed?: number): void;
28
28
  export declare function arraySum(array: int[]): int;
29
29
  export declare function arrayToString<T>(array: T[]): string;
30
30
  /**
31
- * Shallow copies and removes the specified element from the array. Returns the copied array. If the
32
- * specified element is not found in the array, it will simply return a shallow copy of the array.
31
+ * Shallow copies and removes the specified element(s) from the array. Returns the copied array. If
32
+ * the specified element(s) are not found in the array, it will simply return a shallow copy of the
33
+ * array.
34
+ *
35
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
33
36
  */
34
- export declare function arrayRemove<T>(originalArray: T[], element: T): T[];
37
+ export declare function arrayRemove<T>(originalArray: T[], ...elements: T[]): T[];
35
38
  /**
36
- * Removes the specified element from the array. If the specified element is not found in the array,
37
- * this function will do nothing. Returns whether or not the element was found.
39
+ * Removes the specified element(s) from the array. If the specified element(s) are not found in the
40
+ * array, this function will do nothing. Returns whether or not one or more elements were found.
41
+ *
42
+ * This function is variadic, meaning that you can specify N arguments to remove N elements.
43
+ */
44
+ export declare function arrayRemoveInPlace<T>(array: T[], ...elements: T[]): boolean;
45
+ /**
46
+ * Helper function to get a random element from the provided array.
47
+ *
48
+ * @param array The array to get an element from.
49
+ * @param seed Optional. The seed used to select the random element. `Random()` by default.
50
+ * @param exceptions Optional. An array of elements to skip over if selected.
38
51
  */
39
- export declare function arrayRemoveInPlace<T>(array: T[], element: T): boolean;
40
- export declare function getRandomArrayElement<T>(array: T[], seed?: number): T;
52
+ export declare function getRandomArrayElement<T>(array: T[], seed?: number, exceptions?: T[]): T;
41
53
  export declare function getRandomArrayIndex<T>(array: T[], seed?: number): int;
42
54
  /**
43
55
  * Since Lua uses tables for every non-primitive data structure, it is non-trivial to determine if a
@@ -14,7 +14,9 @@ function ____exports.arrayShuffleInPlace(self, array, seed)
14
14
  currentIndex = currentIndex - 1
15
15
  seed = nextSeed(nil, seed)
16
16
  randomIndex = ____exports.getRandomArrayIndex(nil, array, seed)
17
- array[currentIndex + 1], array[randomIndex + 1] = array[randomIndex + 1], array[currentIndex + 1]
17
+ local ____temp_0 = {array[randomIndex + 1], array[currentIndex + 1]}
18
+ array[currentIndex + 1] = ____temp_0[1]
19
+ array[randomIndex + 1] = ____temp_0[2]
18
20
  end
19
21
  end
20
22
  function ____exports.getRandomArrayIndex(self, array, seed)
@@ -68,9 +70,7 @@ function ____exports.arrayShuffle(self, originalArray, seed)
68
70
  if seed == nil then
69
71
  seed = Random()
70
72
  end
71
- local array = {
72
- table.unpack(originalArray)
73
- }
73
+ local array = {table.unpack(originalArray)}
74
74
  ____exports.arrayShuffleInPlace(nil, array, seed)
75
75
  return array
76
76
  end
@@ -91,28 +91,41 @@ function ____exports.arrayToString(self, array)
91
91
  end
92
92
  return ("[" .. table.concat(strings, ", " or ",")) .. "]"
93
93
  end
94
- function ____exports.arrayRemove(self, originalArray, element)
95
- local array = {
96
- table.unpack(originalArray)
97
- }
98
- local index = __TS__ArrayIndexOf(array, element)
99
- __TS__ArraySplice(array, index, 1)
94
+ function ____exports.arrayRemove(self, originalArray, ...)
95
+ local elements = {...}
96
+ local array = {table.unpack(originalArray)}
97
+ for ____, element in ipairs(elements) do
98
+ local index = __TS__ArrayIndexOf(array, element)
99
+ __TS__ArraySplice(array, index, 1)
100
+ end
100
101
  return array
101
102
  end
102
- function ____exports.arrayRemoveInPlace(self, array, element)
103
- local index = __TS__ArrayIndexOf(array, element)
104
- if index == -1 then
105
- return false
103
+ function ____exports.arrayRemoveInPlace(self, array, ...)
104
+ local elements = {...}
105
+ local removedOneOrMoreElements = false
106
+ for ____, element in ipairs(elements) do
107
+ local index = __TS__ArrayIndexOf(array, element)
108
+ if index > -1 then
109
+ removedOneOrMoreElements = true
110
+ __TS__ArraySplice(array, index, 1)
111
+ end
106
112
  end
107
- __TS__ArraySplice(array, index, 1)
108
- return true
113
+ return removedOneOrMoreElements
109
114
  end
110
- function ____exports.getRandomArrayElement(self, array, seed)
115
+ function ____exports.getRandomArrayElement(self, array, seed, exceptions)
111
116
  if seed == nil then
112
117
  seed = Random()
113
118
  end
114
- local randomIndex = ____exports.getRandomArrayIndex(nil, array, seed)
115
- return array[randomIndex + 1]
119
+ if exceptions == nil then
120
+ exceptions = {}
121
+ end
122
+ local arrayWithoutExceptions = ____exports.arrayRemove(
123
+ nil,
124
+ array,
125
+ table.unpack(exceptions)
126
+ )
127
+ local randomIndex = ____exports.getRandomArrayIndex(nil, arrayWithoutExceptions, seed)
128
+ return arrayWithoutExceptions[randomIndex + 1]
116
129
  end
117
130
  function ____exports.isArray(self, ____table)
118
131
  local metatable = getmetatable(____table)
@@ -1,7 +1,7 @@
1
1
  --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
2
  local ____exports = {}
3
3
  function ____exports.getKBitOfN(self, k, n)
4
- return (n >> k) & 1
4
+ return n >> k & 1
5
5
  end
6
6
  function ____exports.getNumBitsOfN(self, n)
7
7
  local numBits = 0
@@ -21,25 +21,31 @@ export declare function getCardDescription(card: Card | int): string;
21
21
  export declare function getCardName(card: Card | int): string;
22
22
  /**
23
23
  * Has an equal chance of returning any card (e.g. Fool, Reverse Fool, Wild Card, etc.). This will
24
- * not return any runes or objects.
24
+ * not return any runes or objects like Dice Shard.
25
+ *
26
+ * @param seed Optional. The seed with which to select the random card. `Random()` by default.
27
+ * @param exceptions Optional. An array of cards to not select.
25
28
  */
26
- export declare function getRandomCard(seed?: number): Card;
29
+ export declare function getRandomCard(seed?: number, exceptions?: Card[]): Card;
27
30
  /**
28
31
  * Has an equal chance of returning any rune (e.g. Rune of Hagalaz, Blank Rune, Black Rune, Soul of
29
32
  * Isaac, etc.). This will never return a Rune Shard.
33
+ *
34
+ * @param seed Optional. The seed with which to select the random rune. `Random()` by default.
35
+ * @param exceptions Optional. An array of runes to not select.
30
36
  */
31
- export declare function getRandomRune(seed?: number): Card;
37
+ export declare function getRandomRune(seed?: number, exceptions?: Card[]): Card;
32
38
  /**
33
- * Returns true for entries in the Card enum that are not a rune or an object (e.g. Fool, Reverse
34
- * Fool, Wild Card, etc.).
39
+ * Returns true for entries in the Card enum that are not a rune and not an object (e.g. Fool,
40
+ * Reverse Fool, Wild Card, etc.).
35
41
  */
36
42
  export declare function isCard(card: Card): boolean;
37
43
  /**
38
- * Returns true for entries in the Card enum that are not a card and not a rune (like Dice Shard).
44
+ * Returns true for entries in the Card enum that are an object (like Dice Shard).
39
45
  */
40
- export declare function isNotCardOrRune(card: Card): boolean;
46
+ export declare function isPocketItemObject(card: Card): boolean;
41
47
  /**
42
- * Returns true for entries in the Card enum that are a rune. (e.g. Rune of Hagalaz, Blank Rune,
43
- * Black Rune, Rune Shard, Soul of Isaac, etc.)
48
+ * Returns true for entries in the Card enum that are a rune (e.g. Rune of Hagalaz, Blank Rune,
49
+ * Black Rune, Rune Shard, Soul of Isaac, etc.).
44
50
  */
45
51
  export declare function isRune(card: Card): boolean;
@@ -1,21 +1,19 @@
1
1
  --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
+ require("lualib_bundle");
2
3
  local ____exports = {}
3
4
  local ____cardDescriptionMap = require("maps.cardDescriptionMap")
4
5
  local CARD_DESCRIPTION_MAP = ____cardDescriptionMap.CARD_DESCRIPTION_MAP
5
6
  local ____cardNameMap = require("maps.cardNameMap")
6
7
  local CARD_NAME_MAP = ____cardNameMap.CARD_NAME_MAP
7
- local ____random = require("functions.random")
8
- local getRandomInt = ____random.getRandomInt
9
- local nextSeed = ____random.nextSeed
10
- function ____exports.isCard(self, card)
11
- return ____exports.isNotCardOrRune(nil, card) and (not ____exports.isRune(nil, card))
12
- end
13
- function ____exports.isNotCardOrRune(self, card)
14
- return ((card == Card.CARD_DICE_SHARD) or (card == Card.CARD_EMERGENCY_CONTACT)) or (card == Card.CARD_CRACKED_KEY)
15
- end
16
- function ____exports.isRune(self, card)
17
- return (((card >= Card.RUNE_HAGALAZ) and (card <= Card.RUNE_BLACK)) or (card == Card.RUNE_SHARD)) or ((card >= Card.CARD_SOUL_ISAAC) and (card <= Card.CARD_SOUL_JACOB))
18
- end
8
+ local ____cards = require("sets.cards")
9
+ local CARDS = ____cards.CARDS
10
+ local CARD_SET = ____cards.CARD_SET
11
+ local POCKET_ITEM_OBJECT_SET = ____cards.POCKET_ITEM_OBJECT_SET
12
+ local RUNES = ____cards.RUNES
13
+ local RUNE_SET = ____cards.RUNE_SET
14
+ local ____array = require("functions.array")
15
+ local arrayRemove = ____array.arrayRemove
16
+ local getRandomArrayElement = ____array.getRandomArrayElement
19
17
  function ____exports.getCardDescription(self, card)
20
18
  local itemConfig = Isaac.GetItemConfig()
21
19
  local defaultDescription = "Unknown"
@@ -48,30 +46,42 @@ function ____exports.getCardName(self, card)
48
46
  end
49
47
  return itemConfigCard.Name
50
48
  end
51
- function ____exports.getRandomCard(self, seed)
49
+ function ____exports.getRandomCard(self, seed, exceptions)
52
50
  if seed == nil then
53
51
  seed = Random()
54
52
  end
55
- local card
56
- repeat
57
- do
58
- seed = nextSeed(nil, seed)
59
- card = getRandomInt(nil, 1, Card.NUM_CARDS - 1)
60
- end
61
- until ____exports.isCard(nil, card)
62
- return card
53
+ if exceptions == nil then
54
+ exceptions = {}
55
+ end
56
+ local cardsWithoutExceptions = arrayRemove(
57
+ nil,
58
+ CARDS,
59
+ table.unpack(exceptions)
60
+ )
61
+ return getRandomArrayElement(nil, cardsWithoutExceptions, seed)
63
62
  end
64
- function ____exports.getRandomRune(self, seed)
63
+ function ____exports.getRandomRune(self, seed, exceptions)
65
64
  if seed == nil then
66
65
  seed = Random()
67
66
  end
68
- local card
69
- repeat
70
- do
71
- seed = nextSeed(nil, seed)
72
- card = getRandomInt(nil, 1, Card.NUM_CARDS - 1)
73
- end
74
- until not ((not ____exports.isRune(nil, card)) or (card == Card.RUNE_SHARD))
75
- return card
67
+ if exceptions == nil then
68
+ exceptions = {}
69
+ end
70
+ __TS__ArrayPush(exceptions, Card.RUNE_SHARD)
71
+ local runesWithoutExceptions = arrayRemove(
72
+ nil,
73
+ RUNES,
74
+ table.unpack(exceptions)
75
+ )
76
+ return getRandomArrayElement(nil, runesWithoutExceptions, seed)
77
+ end
78
+ function ____exports.isCard(self, card)
79
+ return CARD_SET:has(card)
80
+ end
81
+ function ____exports.isPocketItemObject(self, card)
82
+ return POCKET_ITEM_OBJECT_SET:has(card)
83
+ end
84
+ function ____exports.isRune(self, card)
85
+ return RUNE_SET:has(card)
76
86
  end
77
87
  return ____exports
@@ -43,19 +43,19 @@ function getNumChargesToAdd(self, player, activeSlot, ignoreBigRoomDoubleCharge)
43
43
  local batteryCharge = player:GetBatteryCharge(activeSlot)
44
44
  local hasBattery = player:HasCollectible(CollectibleType.COLLECTIBLE_BATTERY)
45
45
  local maxCharges = getCollectibleMaxCharges(nil, activeItem)
46
- if (not hasBattery) and (activeCharge == maxCharges) then
46
+ if not hasBattery and activeCharge == maxCharges then
47
47
  return 0
48
48
  end
49
- if hasBattery and (batteryCharge == maxCharges) then
49
+ if hasBattery and batteryCharge == maxCharges then
50
50
  return 0
51
51
  end
52
- if (not hasBattery) and ((activeCharge + 1) == maxCharges) then
52
+ if not hasBattery and activeCharge + 1 == maxCharges then
53
53
  return 1
54
54
  end
55
- if hasBattery and ((batteryCharge + 1) == maxCharges) then
55
+ if hasBattery and batteryCharge + 1 == maxCharges then
56
56
  return 1
57
57
  end
58
- if (roomShape >= RoomShape.ROOMSHAPE_2x2) and (not ignoreBigRoomDoubleCharge) then
58
+ if roomShape >= RoomShape.ROOMSHAPE_2x2 and not ignoreBigRoomDoubleCharge then
59
59
  return 2
60
60
  end
61
61
  return 1
@@ -70,10 +70,10 @@ function getNumChargesWithAAAModifier(self, player, activeSlot, chargesToAdd)
70
70
  if not hasAAABattery then
71
71
  return chargesToAdd
72
72
  end
73
- if (not hasBattery) and ((activeCharge + chargesToAdd) == (maxCharges - 1)) then
73
+ if not hasBattery and activeCharge + chargesToAdd == maxCharges - 1 then
74
74
  return maxCharges + 1
75
75
  end
76
- if hasBattery and ((batteryCharge + chargesToAdd) == (maxCharges - 1)) then
76
+ if hasBattery and batteryCharge + chargesToAdd == maxCharges - 1 then
77
77
  return maxCharges + 1
78
78
  end
79
79
  return chargesToAdd
@@ -83,7 +83,7 @@ function ____exports.playChargeSoundEffect(self, player, activeSlot)
83
83
  for ____, soundEffect in ipairs({SoundEffect.SOUND_BATTERYCHARGE, SoundEffect.SOUND_BEEP}) do
84
84
  sfx:Stop(soundEffect)
85
85
  end
86
- local chargeSoundEffect = (shouldPlayFullRechargeSound(nil, player, activeSlot) and SoundEffect.SOUND_BATTERYCHARGE) or SoundEffect.SOUND_BEEP
86
+ local chargeSoundEffect = shouldPlayFullRechargeSound(nil, player, activeSlot) and SoundEffect.SOUND_BATTERYCHARGE or SoundEffect.SOUND_BEEP
87
87
  sfx:Play(chargeSoundEffect)
88
88
  end
89
89
  function shouldPlayFullRechargeSound(self, player, activeSlot)
@@ -95,15 +95,13 @@ function shouldPlayFullRechargeSound(self, player, activeSlot)
95
95
  if not hasBattery then
96
96
  return not player:NeedsCharge(activeSlot)
97
97
  end
98
- return (not player:NeedsCharge(activeSlot)) or ((activeCharge == maxCharges) and (batteryCharge == 0))
98
+ return not player:NeedsCharge(activeSlot) or activeCharge == maxCharges and batteryCharge == 0
99
99
  end
100
100
  function ____exports.addRoomClearCharges(self, ignoreBigRoomDoubleCharge)
101
101
  if ignoreBigRoomDoubleCharge == nil then
102
102
  ignoreBigRoomDoubleCharge = false
103
103
  end
104
- for ____, player in ipairs(
105
- getPlayers(nil)
106
- ) do
104
+ for ____, player in ipairs(getPlayers(nil)) do
107
105
  ____exports.addRoomClearCharge(nil, player, ignoreBigRoomDoubleCharge)
108
106
  end
109
107
  end
@@ -7,6 +7,7 @@ export declare function getCollectibleDescription(collectibleType: CollectibleTy
7
7
  * in a Devil Room deal. Returns 0 if passed CollectibleType.COLLECTIBLE_NULL.
8
8
  */
9
9
  export declare function getCollectibleDevilHeartPrice(collectibleType: CollectibleType | int, player: EntityPlayer): PickupPrice;
10
+ export declare function getCollectibleGfxFilename(collectibleType: CollectibleType | int): string;
10
11
  export declare function getCollectibleInitCharges(collectibleType: CollectibleType | int): int;
11
12
  export declare function getCollectibleItemType(collectibleType: CollectibleType | int): ItemType;
12
13
  export declare function getCollectibleMaxCharges(collectibleType: CollectibleType | int): int;
@@ -10,9 +10,7 @@ local ____entity = require("functions.entity")
10
10
  local removeAllMatchingEntities = ____entity.removeAllMatchingEntities
11
11
  function ____exports.setCollectibleSprite(self, collectible, pngPath)
12
12
  if collectible.Variant ~= PickupVariant.PICKUP_COLLECTIBLE then
13
- error(
14
- "You cannot set a collectible sprite for pickups of variant: " .. tostring(collectible.Variant)
15
- )
13
+ error("You cannot set a collectible sprite for pickups of variant: " .. tostring(collectible.Variant))
16
14
  end
17
15
  local sprite = collectible:GetSprite()
18
16
  sprite:ReplaceSpritesheet(COLLECTIBLE_SPRITE_LAYER, pngPath)
@@ -59,8 +57,16 @@ function ____exports.getCollectibleDevilHeartPrice(self, collectibleType, player
59
57
  if itemConfigItem == nil then
60
58
  return defaultPickupPrice
61
59
  end
62
- local twoHeartPrice = ((maxHearts == 2) and PickupPrice.PRICE_ONE_HEART_AND_TWO_SOULHEARTS) or PickupPrice.PRICE_TWO_HEARTS
63
- return ((itemConfigItem.DevilPrice == 2) and twoHeartPrice) or PickupPrice.PRICE_ONE_HEART
60
+ local twoHeartPrice = maxHearts == 2 and PickupPrice.PRICE_ONE_HEART_AND_TWO_SOULHEARTS or PickupPrice.PRICE_TWO_HEARTS
61
+ return itemConfigItem.DevilPrice == 2 and twoHeartPrice or PickupPrice.PRICE_ONE_HEART
62
+ end
63
+ function ____exports.getCollectibleGfxFilename(self, collectibleType)
64
+ local itemConfig = Isaac.GetItemConfig()
65
+ local itemConfigItem = itemConfig:GetCollectible(collectibleType)
66
+ if itemConfigItem == nil then
67
+ return "unknown.png"
68
+ end
69
+ return itemConfigItem.GfxFileName
64
70
  end
65
71
  function ____exports.getCollectibleInitCharges(self, collectibleType)
66
72
  local itemConfig = Isaac.GetItemConfig()
@@ -121,11 +127,11 @@ function ____exports.getMaxCollectibleID(self)
121
127
  return itemConfig:GetCollectibles().Size - 1
122
128
  end
123
129
  function ____exports.isGlitchedCollectible(self, entity)
124
- return ((entity.Type == EntityType.ENTITY_PICKUP) and (entity.Variant == PickupVariant.PICKUP_COLLECTIBLE)) and (entity.SubType > GLITCHED_ITEM_THRESHOLD)
130
+ return entity.Type == EntityType.ENTITY_PICKUP and entity.Variant == PickupVariant.PICKUP_COLLECTIBLE and entity.SubType > GLITCHED_ITEM_THRESHOLD
125
131
  end
126
132
  function ____exports.isPassiveCollectible(self, collectibleType)
127
133
  local itemType = ____exports.getCollectibleItemType(nil, collectibleType)
128
- return (itemType == ItemType.ITEM_PASSIVE) or (itemType == ItemType.ITEM_FAMILIAR)
134
+ return itemType == ItemType.ITEM_PASSIVE or itemType == ItemType.ITEM_FAMILIAR
129
135
  end
130
136
  function ____exports.isQuestCollectible(self, collectibleType)
131
137
  return ____exports.collectibleHasTag(nil, collectibleType, 32768)
@@ -135,32 +141,31 @@ function ____exports.removeAllCollectibles(self)
135
141
  end
136
142
  function ____exports.removeCollectiblePickupDelay(self, collectible)
137
143
  if collectible.Variant ~= PickupVariant.PICKUP_COLLECTIBLE then
138
- error(
139
- "You cannot remove pickup delay for pickups of variant: " .. tostring(collectible.Variant)
140
- )
144
+ error("You cannot remove pickup delay for pickups of variant: " .. tostring(collectible.Variant))
141
145
  end
142
146
  collectible.Wait = 0
143
147
  end
144
148
  function ____exports.removeCollectibleFromItemTracker(self, collectibleType)
145
149
  local collectibleName = ____exports.getCollectibleName(nil, collectibleType)
146
- Isaac.DebugString(
147
- ((("Removing collectible " .. tostring(collectibleType)) .. " (") .. collectibleName) .. ") on player 0 (Player)"
148
- )
150
+ Isaac.DebugString(((("Removing collectible " .. tostring(collectibleType)) .. " (") .. collectibleName) .. ") on player 0 (Player)")
149
151
  end
150
152
  function ____exports.setCollectibleBlind(self, collectible)
151
153
  if collectible.Variant ~= PickupVariant.PICKUP_COLLECTIBLE then
152
- error(
153
- "You cannot set a collectible to be blind for pickups of variant: " .. tostring(collectible.Variant)
154
- )
154
+ error("You cannot set a collectible to be blind for pickups of variant: " .. tostring(collectible.Variant))
155
155
  end
156
156
  ____exports.setCollectibleSprite(nil, collectible, BLIND_ITEM_PNG_PATH)
157
157
  end
158
158
  function ____exports.setCollectibleSubType(self, collectible, newCollectibleType)
159
159
  if collectible.Variant ~= PickupVariant.PICKUP_COLLECTIBLE then
160
- error(
161
- "You cannot set a collectible sub type for pickups of variant: " .. tostring(collectible.Variant)
162
- )
163
- end
164
- collectible:Morph(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, newCollectibleType, true, true, true)
160
+ error("You cannot set a collectible sub type for pickups of variant: " .. tostring(collectible.Variant))
161
+ end
162
+ collectible:Morph(
163
+ EntityType.ENTITY_PICKUP,
164
+ PickupVariant.PICKUP_COLLECTIBLE,
165
+ newCollectibleType,
166
+ true,
167
+ true,
168
+ true
169
+ )
165
170
  end
166
171
  return ____exports
@@ -7,7 +7,15 @@ function ____exports.getDefaultKColor(self)
7
7
  return KColor(1, 1, 1, 1)
8
8
  end
9
9
  function ____exports.copyColor(self, color)
10
- return Color(color.R, color.G, color.B, color.A, color.RO, color.GO, color.BO)
10
+ return Color(
11
+ color.R,
12
+ color.G,
13
+ color.B,
14
+ color.A,
15
+ color.RO,
16
+ color.GO,
17
+ color.BO
18
+ )
11
19
  end
12
20
  function ____exports.copyKColor(self, kColor)
13
21
  return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
@@ -39,18 +39,18 @@ function ____exports.deepCopy(self, oldObject, serializationType, traversalDescr
39
39
  local hasTSTLMapBrand = false
40
40
  local hasTSTLSetBrand = false
41
41
  local hasTSTLClassBrand = false
42
- if ((not __TS__InstanceOf(oldObject, Map)) and (not __TS__InstanceOf(oldObject, Set))) and (not isClass) then
42
+ if not __TS__InstanceOf(oldObject, Map) and not __TS__InstanceOf(oldObject, Set) and not isClass then
43
43
  checkMetatable(nil, oldTable, traversalDescription)
44
44
  hasTSTLMapBrand = oldTable[TSTL_MAP_BRAND] ~= nil
45
45
  hasTSTLSetBrand = oldTable[TSTL_SET_BRAND] ~= nil
46
46
  hasTSTLClassBrand = oldTable[TSTL_CLASS_BRAND] ~= nil
47
47
  end
48
48
  local newObject
49
- if ((serializationType == ____exports.SerializationType.NONE) and __TS__InstanceOf(oldObject, Map)) or ((serializationType == ____exports.SerializationType.DESERIALIZE) and hasTSTLMapBrand) then
49
+ if serializationType == ____exports.SerializationType.NONE and __TS__InstanceOf(oldObject, Map) or serializationType == ____exports.SerializationType.DESERIALIZE and hasTSTLMapBrand then
50
50
  newObject = __TS__New(Map)
51
- elseif ((serializationType == ____exports.SerializationType.NONE) and __TS__InstanceOf(oldObject, Set)) or ((serializationType == ____exports.SerializationType.DESERIALIZE) and hasTSTLSetBrand) then
51
+ elseif serializationType == ____exports.SerializationType.NONE and __TS__InstanceOf(oldObject, Set) or serializationType == ____exports.SerializationType.DESERIALIZE and hasTSTLSetBrand then
52
52
  newObject = __TS__New(Set)
53
- elseif ((serializationType == ____exports.SerializationType.NONE) and isClass) or ((serializationType == ____exports.SerializationType.DESERIALIZE) and hasTSTLClassBrand) then
53
+ elseif serializationType == ____exports.SerializationType.NONE and isClass or serializationType == ____exports.SerializationType.DESERIALIZE and hasTSTLClassBrand then
54
54
  newObject = cloneClass(nil, oldObject)
55
55
  else
56
56
  newObject = {}
@@ -66,31 +66,43 @@ function ____exports.deepCopy(self, oldObject, serializationType, traversalDescr
66
66
  end
67
67
  end
68
68
  if __TS__InstanceOf(oldObject, Map) then
69
- for ____, ____value in __TS__Iterator(
70
- oldObject:entries()
71
- ) do
72
- local key
69
+ local value
70
+ local key
71
+ for ____, ____value in __TS__Iterator(oldObject:entries()) do
73
72
  key = ____value[1]
74
- local value
75
73
  value = ____value[2]
76
74
  do
77
75
  if ____exports.isBrand(nil, key) then
78
76
  goto __continue17
79
77
  end
80
- deepCopyValue(nil, oldObject, newObject, key, value, traversalDescription, serializationType)
78
+ deepCopyValue(
79
+ nil,
80
+ oldObject,
81
+ newObject,
82
+ key,
83
+ value,
84
+ traversalDescription,
85
+ serializationType
86
+ )
81
87
  end
82
88
  ::__continue17::
83
89
  end
84
90
  elseif __TS__InstanceOf(oldObject, Set) then
85
- for ____, key in __TS__Iterator(
86
- oldObject:values()
87
- ) do
91
+ for ____, key in __TS__Iterator(oldObject:values()) do
88
92
  do
89
93
  if ____exports.isBrand(nil, key) then
90
94
  goto __continue20
91
95
  end
92
96
  local value = ""
93
- deepCopyValue(nil, oldObject, newObject, key, value, traversalDescription, serializationType)
97
+ deepCopyValue(
98
+ nil,
99
+ oldObject,
100
+ newObject,
101
+ key,
102
+ value,
103
+ traversalDescription,
104
+ serializationType
105
+ )
94
106
  end
95
107
  ::__continue20::
96
108
  end
@@ -100,7 +112,15 @@ function ____exports.deepCopy(self, oldObject, serializationType, traversalDescr
100
112
  if ____exports.isBrand(nil, key) then
101
113
  goto __continue23
102
114
  end
103
- deepCopyValue(nil, oldObject, newObject, key, value, traversalDescription, serializationType)
115
+ deepCopyValue(
116
+ nil,
117
+ oldObject,
118
+ newObject,
119
+ key,
120
+ value,
121
+ traversalDescription,
122
+ serializationType
123
+ )
104
124
  end
105
125
  ::__continue23::
106
126
  end
@@ -139,7 +159,7 @@ function getNewClassFromMetatable(self, metatable)
139
159
  return newClass
140
160
  end
141
161
  function ____exports.isBrand(self, key)
142
- return ((((key == TSTL_MAP_BRAND) or (key == TSTL_SET_BRAND)) or (key == TSTL_CLASS_BRAND)) or (key == TSTL_OBJECT_WITH_NUMBER_KEYS_BRAND)) or (key == VECTOR_BRAND)
162
+ return key == TSTL_MAP_BRAND or key == TSTL_SET_BRAND or key == TSTL_CLASS_BRAND or key == TSTL_OBJECT_WITH_NUMBER_KEYS_BRAND or key == VECTOR_BRAND
143
163
  end
144
164
  function deepCopyValue(self, oldObject, newObject, key, value, traversalDescription, serializationType)
145
165
  local valueType = type(value)
@@ -147,7 +167,7 @@ function deepCopyValue(self, oldObject, newObject, key, value, traversalDescript
147
167
  local convertNumberKeysToString = false
148
168
  local isTSTLObject = __TS__InstanceOf(oldObject, Map) or __TS__InstanceOf(oldObject, Set)
149
169
  local keyType = type(key)
150
- if ((serializationType == ____exports.SerializationType.SERIALIZE) and isTSTLObject) and (keyType == "number") then
170
+ if serializationType == ____exports.SerializationType.SERIALIZE and isTSTLObject and keyType == "number" then
151
171
  convertNumberKeysToString = true
152
172
  local newTable = newObject
153
173
  newTable[TSTL_OBJECT_WITH_NUMBER_KEYS_BRAND] = ""
@@ -159,7 +179,7 @@ function deepCopyValue(self, oldObject, newObject, key, value, traversalDescript
159
179
  if isVector(nil, value) then
160
180
  local vector = value
161
181
  newValue = copyVector(nil, vector, serializationType)
162
- elseif ____exports.isSerializedVector(nil, value) and (serializationType == ____exports.SerializationType.DESERIALIZE) then
182
+ elseif ____exports.isSerializedVector(nil, value) and serializationType == ____exports.SerializationType.DESERIALIZE then
163
183
  local serializedVector = value
164
184
  newValue = ____exports.deserializeVector(nil, serializedVector)
165
185
  elseif valueType == "table" then
@@ -174,7 +194,7 @@ function deepCopyValue(self, oldObject, newObject, key, value, traversalDescript
174
194
  elseif __TS__InstanceOf(newObject, Set) then
175
195
  newObject:add(key)
176
196
  else
177
- local keyToUse = (convertNumberKeysToString and tostring(key)) or key
197
+ local keyToUse = convertNumberKeysToString and tostring(key) or key
178
198
  newObject[keyToUse] = newValue
179
199
  end
180
200
  end
@@ -207,14 +227,14 @@ function checkMetatable(self, ____table, traversalDescription)
207
227
  if metatable == nil then
208
228
  return
209
229
  end
210
- local tableDescription = ((traversalDescription == "") and "the table to copy") or (("\"" .. traversalDescription) .. "\"")
230
+ local tableDescription = traversalDescription == "" and "the table to copy" or ("\"" .. traversalDescription) .. "\""
211
231
  error(("The deepCopy function detected that " .. tableDescription) .. " has a metatable. Copying tables with metatables is not supported (unless they are TypeScriptToLua Maps, Sets, or Classes).")
212
232
  end
213
233
  function validateValue(self, value, valueType, traversalDescription)
214
234
  if isVector(nil, value) then
215
235
  return
216
236
  end
217
- if (((valueType == "function") or (valueType == "nil")) or (valueType == "thread")) or (valueType == "userdata") then
237
+ if valueType == "function" or valueType == "nil" or valueType == "thread" or valueType == "userdata" then
218
238
  error(((("The deepCopy function detected that \"" .. traversalDescription) .. "\" is type ") .. valueType) .. ", which is not supported.")
219
239
  end
220
240
  end
@@ -231,7 +251,7 @@ function ____exports.isSerializedVector(self, object)
231
251
  return false
232
252
  end
233
253
  local ____table = object
234
- return ((____table[VECTOR_BRAND] ~= nil) and (____table.X ~= nil)) and (____table.Y ~= nil)
254
+ return ____table[VECTOR_BRAND] ~= nil and ____table.X ~= nil and ____table.Y ~= nil
235
255
  end
236
256
  ____exports.SerializationType = SerializationType or ({})
237
257
  ____exports.SerializationType.NONE = 0