isaacscript-common 1.0.575 → 1.0.576
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.
- package/dist/callbacks/itemPickup.lua +2 -6
- package/dist/callbacks/postBombInitLate.lua +1 -5
- package/dist/callbacks/postCursedTeleport.lua +8 -10
- package/dist/callbacks/postEffectInitLate.lua +1 -5
- package/dist/callbacks/postEsauJr.lua +2 -4
- package/dist/callbacks/postFamiliarInitLate.lua +1 -5
- package/dist/callbacks/postFlip.lua +2 -4
- package/dist/callbacks/postGridEntity.lua +8 -20
- package/dist/callbacks/postKnifeInitLate.lua +1 -5
- package/dist/callbacks/postLaserInitLate.lua +1 -5
- package/dist/callbacks/postNPCInitLate.lua +1 -5
- package/dist/callbacks/postPickupCollect.lua +1 -5
- package/dist/callbacks/postPickupInitLate.lua +1 -5
- package/dist/callbacks/postPlayerChangeHealth.lua +19 -23
- package/dist/callbacks/postPlayerChangeType.lua +1 -5
- package/dist/callbacks/postPlayerFatalDamage.lua +5 -9
- package/dist/callbacks/postPlayerInitLate.lua +1 -5
- package/dist/callbacks/postPlayerReordered.lua +8 -2
- package/dist/callbacks/postProjectileInitLate.lua +1 -5
- package/dist/callbacks/postPurchase.lua +19 -19
- package/dist/callbacks/postSacrifice.lua +3 -3
- package/dist/callbacks/postSlotInitUpdate.lua +3 -11
- package/dist/callbacks/postSlotRenderBroken.lua +2 -8
- package/dist/callbacks/postTearInitLate.lua +1 -5
- package/dist/callbacks/postTearInitVeryLate.lua +1 -5
- package/dist/callbacks/postTransformation.lua +1 -5
- package/dist/callbacks/postTrinketBreak.lua +5 -9
- package/dist/callbacks/preNewLevel.lua +1 -1
- package/dist/callbacks/reorderedCallbacks.lua +4 -4
- package/dist/callbacks/subscriptions/PreNewLevel.lua +1 -2
- package/dist/callbacks/subscriptions/postBombInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postCursedTeleport.lua +1 -2
- package/dist/callbacks/subscriptions/postCustomRevive.lua +3 -5
- package/dist/callbacks/subscriptions/postEffectInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postEsauJr.lua +1 -2
- package/dist/callbacks/subscriptions/postFamiliarInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postFirstEsauJr.lua +1 -2
- package/dist/callbacks/subscriptions/postFirstFlip.lua +1 -2
- package/dist/callbacks/subscriptions/postFlip.lua +1 -2
- package/dist/callbacks/subscriptions/postGameStartedReordered.lua +1 -2
- package/dist/callbacks/subscriptions/postGridEntityInit.lua +3 -5
- package/dist/callbacks/subscriptions/postGridEntityRemove.lua +3 -5
- package/dist/callbacks/subscriptions/postGridEntityUpdate.lua +3 -5
- package/dist/callbacks/subscriptions/postItemPickup.lua +5 -8
- package/dist/callbacks/subscriptions/postKnifeInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postLaserInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postNPCInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postNewLevelReordered.lua +1 -2
- package/dist/callbacks/subscriptions/postNewRoomEarly.lua +1 -2
- package/dist/callbacks/subscriptions/postNewRoomReordered.lua +1 -2
- package/dist/callbacks/subscriptions/postPEffectUpdateReordered.lua +3 -5
- package/dist/callbacks/subscriptions/postPickupCollect.lua +3 -5
- package/dist/callbacks/subscriptions/postPickupInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerChangeHealth.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerChangeType.lua +1 -2
- package/dist/callbacks/subscriptions/postPlayerFatalDamage.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerInitReordered.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerRenderReordered.lua +3 -5
- package/dist/callbacks/subscriptions/postPlayerUpdateReordered.lua +3 -5
- package/dist/callbacks/subscriptions/postProjectileInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postPurchase.lua +8 -3
- package/dist/callbacks/subscriptions/postSacrifice.lua +1 -2
- package/dist/callbacks/subscriptions/postSlotDestroyed.lua +3 -5
- package/dist/callbacks/subscriptions/postSlotInit.lua +3 -5
- package/dist/callbacks/subscriptions/postSlotRender.lua +3 -5
- package/dist/callbacks/subscriptions/postSlotUpdate.lua +3 -5
- package/dist/callbacks/subscriptions/postTearInitLate.lua +3 -5
- package/dist/callbacks/subscriptions/postTearInitVeryLate.lua +3 -5
- package/dist/callbacks/subscriptions/postTransformation.lua +3 -5
- package/dist/callbacks/subscriptions/postTrinketBreak.lua +3 -5
- package/dist/callbacks/subscriptions/preCustomRevive.lua +1 -2
- package/dist/callbacks/subscriptions/preItemPickup.lua +5 -8
- package/dist/constants.lua +57 -6
- package/dist/features/deployJSONRoom.lua +95 -68
- package/dist/features/disableInputs.lua +9 -3
- package/dist/features/forgottenSwitch.lua +1 -1
- package/dist/features/getCollectibleItemPoolType.lua +4 -10
- package/dist/features/preventCollectibleRotate.lua +3 -9
- package/dist/features/saveDataManager/load.lua +2 -6
- package/dist/features/saveDataManager/main.lua +1 -1
- package/dist/features/saveDataManager/merge.lua +2 -4
- package/dist/features/sirenHelpers.lua +5 -7
- package/dist/functions/array.lua +6 -10
- package/dist/functions/bitwise.lua +1 -1
- package/dist/functions/challenges.lua +1 -1
- package/dist/functions/charge.lua +10 -12
- package/dist/functions/collectibles.lua +18 -23
- package/dist/functions/color.lua +9 -1
- package/dist/functions/deepCopy.lua +46 -28
- package/dist/functions/deepCopyTests.lua +12 -20
- package/dist/functions/doors.lua +9 -21
- package/dist/functions/entity.lua +8 -2
- package/dist/functions/flag.lua +1 -1
- package/dist/functions/gridEntity.lua +14 -9
- package/dist/functions/input.lua +17 -27
- package/dist/functions/jsonRoom.lua +3 -9
- package/dist/functions/language.lua +9 -1
- package/dist/functions/log.lua +33 -85
- package/dist/functions/math.lua +15 -17
- package/dist/functions/npc.lua +15 -17
- package/dist/functions/pickups.lua +14 -1
- package/dist/functions/player.lua +38 -60
- package/dist/functions/playerHealth.lua +19 -9
- package/dist/functions/pocketItems.lua +4 -4
- package/dist/functions/random.lua +2 -2
- package/dist/functions/revive.lua +4 -4
- package/dist/functions/rooms.lua +36 -40
- package/dist/functions/spawnCollectible.lua +10 -2
- package/dist/functions/sprite.lua +2 -2
- package/dist/functions/stage.lua +11 -11
- package/dist/functions/tears.lua +1 -1
- package/dist/functions/transformations.lua +4 -10
- package/dist/functions/trinketGive.lua +3 -3
- package/dist/functions/trinkets.lua +10 -6
- package/dist/functions/ui.lua +3 -3
- package/dist/functions/util.lua +6 -14
- package/dist/functions/vector.lua +8 -8
- package/dist/lualib_bundle.lua +795 -735
- package/dist/maps/cardDescriptionMap.lua +99 -1
- package/dist/maps/cardNameMap.lua +99 -1
- package/dist/maps/challengeNameMap.lua +47 -1
- package/dist/maps/collectibleDescriptionMap.lua +722 -1
- package/dist/maps/collectibleNameMap.lua +722 -1
- package/dist/maps/gridEntityXMLMap.lua +36 -1
- package/dist/maps/pillEffectNameMap.lua +52 -1
- package/dist/maps/roomShapeToTopLeftWallGridIndexMap.lua +7 -1
- package/dist/maps/transformationMaps.lua +21 -16
- package/dist/maps/transformationNameMap.lua +17 -1
- package/dist/maps/trinketDescriptionMap.lua +190 -1
- package/dist/maps/trinketNameMap.lua +190 -1
- package/dist/sets/cards.lua +98 -2
- package/dist/types/ModUpgraded.lua +95 -105
- package/package.json +5 -5
|
@@ -30,7 +30,7 @@ function ____exports.getCharacterMaxHeartContainers(self, character)
|
|
|
30
30
|
end
|
|
31
31
|
function ____exports.getPlayerIndex(self, player)
|
|
32
32
|
local character = player:GetPlayerType()
|
|
33
|
-
local collectibleToUse =
|
|
33
|
+
local collectibleToUse = character == PlayerType.PLAYER_LAZARUS2_B and CollectibleType.COLLECTIBLE_INNER_EYE or CollectibleType.COLLECTIBLE_SAD_ONION
|
|
34
34
|
local collectibleRNG = player:GetCollectibleRNG(collectibleToUse)
|
|
35
35
|
local seed = collectibleRNG:GetSeed()
|
|
36
36
|
return seed
|
|
@@ -38,7 +38,7 @@ end
|
|
|
38
38
|
function ____exports.getPlayerMaxHeartContainers(self, player)
|
|
39
39
|
local character = player:GetPlayerType()
|
|
40
40
|
local maxHeartContainers = ____exports.getCharacterMaxHeartContainers(nil, character)
|
|
41
|
-
if
|
|
41
|
+
if character == PlayerType.PLAYER_MAGDALENE and player:HasCollectible(CollectibleType.COLLECTIBLE_BIRTHRIGHT) then
|
|
42
42
|
maxHeartContainers = maxHeartContainers + 6
|
|
43
43
|
end
|
|
44
44
|
local numMothersKisses = player:GetTrinketMultiplier(TrinketType.TRINKET_MOTHERS_KISS)
|
|
@@ -60,18 +60,18 @@ function ____exports.getPlayers(self, performExclusions)
|
|
|
60
60
|
do
|
|
61
61
|
local player = Isaac.GetPlayer(i)
|
|
62
62
|
if player == nil then
|
|
63
|
-
goto
|
|
63
|
+
goto __continue76
|
|
64
64
|
end
|
|
65
65
|
if ____exports.isChildPlayer(nil, player) then
|
|
66
|
-
goto
|
|
66
|
+
goto __continue76
|
|
67
67
|
end
|
|
68
68
|
local character = player:GetPlayerType()
|
|
69
69
|
if performExclusions and EXCLUDED_CHARACTERS:has(character) then
|
|
70
|
-
goto
|
|
70
|
+
goto __continue76
|
|
71
71
|
end
|
|
72
72
|
__TS__ArrayPush(players, player)
|
|
73
73
|
end
|
|
74
|
-
::
|
|
74
|
+
::__continue76::
|
|
75
75
|
i = i + 1
|
|
76
76
|
end
|
|
77
77
|
end
|
|
@@ -98,9 +98,7 @@ function ____exports.addTrinketCostume(self, player, trinketType)
|
|
|
98
98
|
player:AddCostume(itemConfigTrinket, false)
|
|
99
99
|
end
|
|
100
100
|
function ____exports.anyPlayerCloserThan(self, position, distance)
|
|
101
|
-
for ____, player in ipairs(
|
|
102
|
-
____exports.getPlayers(nil)
|
|
103
|
-
) do
|
|
101
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
104
102
|
if player.Position:Distance(position) <= distance then
|
|
105
103
|
return true
|
|
106
104
|
end
|
|
@@ -108,9 +106,7 @@ function ____exports.anyPlayerCloserThan(self, position, distance)
|
|
|
108
106
|
return false
|
|
109
107
|
end
|
|
110
108
|
function ____exports.anyPlayerHasCollectible(self, collectibleType)
|
|
111
|
-
for ____, player in ipairs(
|
|
112
|
-
____exports.getPlayers(nil)
|
|
113
|
-
) do
|
|
109
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
114
110
|
if player:HasCollectible(collectibleType) then
|
|
115
111
|
return true
|
|
116
112
|
end
|
|
@@ -118,9 +114,7 @@ function ____exports.anyPlayerHasCollectible(self, collectibleType)
|
|
|
118
114
|
return false
|
|
119
115
|
end
|
|
120
116
|
function ____exports.anyPlayerHasTrinket(self, trinketType)
|
|
121
|
-
for ____, player in ipairs(
|
|
122
|
-
____exports.getPlayers(nil)
|
|
123
|
-
) do
|
|
117
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
124
118
|
if player:HasTrinket(trinketType) then
|
|
125
119
|
return true
|
|
126
120
|
end
|
|
@@ -130,9 +124,7 @@ end
|
|
|
130
124
|
function ____exports.anyPlayerIs(self, ...)
|
|
131
125
|
local characters = {...}
|
|
132
126
|
local characterSet = __TS__New(Set, characters)
|
|
133
|
-
for ____, player in ipairs(
|
|
134
|
-
____exports.getPlayers(nil)
|
|
135
|
-
) do
|
|
127
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
136
128
|
local character = player:GetPlayerType()
|
|
137
129
|
if characterSet:has(character) then
|
|
138
130
|
return true
|
|
@@ -155,14 +147,12 @@ function ____exports.getAzazelBrimstoneDistance(self, playerOrTearHeight)
|
|
|
155
147
|
local player = playerOrTearHeight
|
|
156
148
|
tearHeight = player.TearHeight
|
|
157
149
|
end
|
|
158
|
-
return 32 -
|
|
150
|
+
return 32 - 2.5 * tearHeight
|
|
159
151
|
end
|
|
160
152
|
function ____exports.getClosestPlayer(self, position)
|
|
161
153
|
local closestPlayer = nil
|
|
162
154
|
local closestDistance = math.huge
|
|
163
|
-
for ____, player in ipairs(
|
|
164
|
-
____exports.getPlayers(nil)
|
|
165
|
-
) do
|
|
155
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
166
156
|
local distance = position:Distance(player.Position)
|
|
167
157
|
if distance < closestDistance then
|
|
168
158
|
closestPlayer = player
|
|
@@ -197,10 +187,10 @@ function ____exports.getLastHeart(self, player)
|
|
|
197
187
|
local boneHearts = player:GetBoneHearts()
|
|
198
188
|
local rottenHearts = player:GetRottenHearts()
|
|
199
189
|
local soulHeartSlots = soulHearts / 2
|
|
200
|
-
local lastHeartIndex =
|
|
190
|
+
local lastHeartIndex = boneHearts + soulHeartSlots - 1
|
|
201
191
|
local isLastHeartBone = player:IsBoneHeart(lastHeartIndex)
|
|
202
192
|
if isLastHeartBone then
|
|
203
|
-
local isLastContainerEmpty = hearts <=
|
|
193
|
+
local isLastContainerEmpty = hearts <= effectiveMaxHearts - 2
|
|
204
194
|
if isLastContainerEmpty then
|
|
205
195
|
return HealthType.BONE
|
|
206
196
|
end
|
|
@@ -232,9 +222,7 @@ end
|
|
|
232
222
|
function ____exports.getNewestPlayer(self)
|
|
233
223
|
local newestPlayer = nil
|
|
234
224
|
local lowestFrame = math.huge
|
|
235
|
-
for ____, player in ipairs(
|
|
236
|
-
____exports.getPlayers(nil)
|
|
237
|
-
) do
|
|
225
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
238
226
|
if player.FrameCount < lowestFrame then
|
|
239
227
|
newestPlayer = player
|
|
240
228
|
lowestFrame = player.FrameCount
|
|
@@ -257,9 +245,7 @@ function ____exports.getPlayerAvailableHeartSlots(self, player)
|
|
|
257
245
|
return maxHeartContainers - totalOccupiedHeartSlots
|
|
258
246
|
end
|
|
259
247
|
function ____exports.getPlayerCloserThan(self, position, distance)
|
|
260
|
-
for ____, player in ipairs(
|
|
261
|
-
____exports.getPlayers(nil)
|
|
262
|
-
) do
|
|
248
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
263
249
|
if player.Position:Distance(position) <= distance then
|
|
264
250
|
return player
|
|
265
251
|
end
|
|
@@ -269,9 +255,7 @@ end
|
|
|
269
255
|
function ____exports.getPlayerCollectibleMap(self, player)
|
|
270
256
|
local collectibleSet = getCollectibleSet(nil)
|
|
271
257
|
local collectibleMap = __TS__New(Map)
|
|
272
|
-
for ____, collectibleType in __TS__Iterator(
|
|
273
|
-
collectibleSet:values()
|
|
274
|
-
) do
|
|
258
|
+
for ____, collectibleType in __TS__Iterator(collectibleSet:values()) do
|
|
275
259
|
local collectibleNum = player:GetCollectibleNum(collectibleType, true)
|
|
276
260
|
if collectibleNum > 0 then
|
|
277
261
|
collectibleMap:set(collectibleType, collectibleNum)
|
|
@@ -280,9 +264,7 @@ function ____exports.getPlayerCollectibleMap(self, player)
|
|
|
280
264
|
return collectibleMap
|
|
281
265
|
end
|
|
282
266
|
function ____exports.getPlayerFromIndex(self, playerIndex)
|
|
283
|
-
for ____, player in ipairs(
|
|
284
|
-
____exports.getPlayers(nil)
|
|
285
|
-
) do
|
|
267
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
286
268
|
local existingPlayerIndex = ____exports.getPlayerIndex(nil, player)
|
|
287
269
|
if existingPlayerIndex == playerIndex then
|
|
288
270
|
return player
|
|
@@ -299,14 +281,14 @@ function ____exports.getPlayerIndexVanilla(self, playerToFind)
|
|
|
299
281
|
do
|
|
300
282
|
local player = Isaac.GetPlayer(i)
|
|
301
283
|
if player == nil then
|
|
302
|
-
goto
|
|
284
|
+
goto __continue68
|
|
303
285
|
end
|
|
304
286
|
local playerHash = GetPtrHash(player)
|
|
305
287
|
if playerHash == playerToFindHash then
|
|
306
288
|
return i
|
|
307
289
|
end
|
|
308
290
|
end
|
|
309
|
-
::
|
|
291
|
+
::__continue68::
|
|
310
292
|
i = i + 1
|
|
311
293
|
end
|
|
312
294
|
end
|
|
@@ -318,13 +300,11 @@ function ____exports.getPlayerNumAllHearts(self, player)
|
|
|
318
300
|
local boneHearts = player:GetBoneHearts()
|
|
319
301
|
local eternalHearts = player:GetEternalHearts()
|
|
320
302
|
local rottenHearts = player:GetRottenHearts()
|
|
321
|
-
return
|
|
303
|
+
return hearts + soulHearts + boneHearts + eternalHearts - rottenHearts
|
|
322
304
|
end
|
|
323
305
|
function ____exports.getPlayersOfType(self, playerType)
|
|
324
306
|
local players = {}
|
|
325
|
-
for ____, player in ipairs(
|
|
326
|
-
____exports.getPlayers(nil)
|
|
327
|
-
) do
|
|
307
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
328
308
|
local character = player:GetPlayerType()
|
|
329
309
|
if character == playerType then
|
|
330
310
|
__TS__ArrayPush(players, player)
|
|
@@ -339,9 +319,7 @@ function ____exports.getTotalCharge(self, player, activeSlot)
|
|
|
339
319
|
end
|
|
340
320
|
function ____exports.getTotalPlayerCollectibles(self, collectibleType)
|
|
341
321
|
local numCollectibles = 0
|
|
342
|
-
for ____, player in ipairs(
|
|
343
|
-
____exports.getPlayers(nil)
|
|
344
|
-
) do
|
|
322
|
+
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
345
323
|
numCollectibles = numCollectibles + player:GetCollectibleNum(collectibleType)
|
|
346
324
|
end
|
|
347
325
|
return numCollectibles
|
|
@@ -359,32 +337,32 @@ function ____exports.hasOpenActiveItemSlot(self, player)
|
|
|
359
337
|
local activeItemSecondary = player:GetActiveItem(ActiveSlot.SLOT_SECONDARY)
|
|
360
338
|
local hasSchoolbag = player:HasCollectible(CollectibleType.COLLECTIBLE_SCHOOLBAG)
|
|
361
339
|
if hasSchoolbag then
|
|
362
|
-
return
|
|
340
|
+
return activeItemPrimary == CollectibleType.COLLECTIBLE_NULL or activeItemSecondary == CollectibleType.COLLECTIBLE_NULL
|
|
363
341
|
end
|
|
364
342
|
return activeItemPrimary == CollectibleType.COLLECTIBLE_NULL
|
|
365
343
|
end
|
|
366
344
|
function ____exports.isBethany(self, player)
|
|
367
345
|
local character = player:GetPlayerType()
|
|
368
|
-
return
|
|
346
|
+
return character == PlayerType.PLAYER_BETHANY or character == PlayerType.PLAYER_BETHANY_B
|
|
369
347
|
end
|
|
370
348
|
function ____exports.isFirstPlayer(self, player)
|
|
371
349
|
return ____exports.getPlayerIndexVanilla(nil, player) == 0
|
|
372
350
|
end
|
|
373
351
|
function ____exports.isJacobOrEsau(self, player)
|
|
374
352
|
local character = player:GetPlayerType()
|
|
375
|
-
return
|
|
353
|
+
return character == PlayerType.PLAYER_JACOB or character == PlayerType.PLAYER_ESAU
|
|
376
354
|
end
|
|
377
355
|
function ____exports.isKeeper(self, player)
|
|
378
356
|
local character = player:GetPlayerType()
|
|
379
|
-
return
|
|
357
|
+
return character == PlayerType.PLAYER_KEEPER or character == PlayerType.PLAYER_KEEPER_B
|
|
380
358
|
end
|
|
381
359
|
function ____exports.isLost(self, player)
|
|
382
360
|
local character = player:GetPlayerType()
|
|
383
|
-
return
|
|
361
|
+
return character == PlayerType.PLAYER_THELOST or character == PlayerType.PLAYER_THELOST_B
|
|
384
362
|
end
|
|
385
363
|
function ____exports.isTaintedLazarus(self, player)
|
|
386
364
|
local character = player:GetPlayerType()
|
|
387
|
-
return
|
|
365
|
+
return character == PlayerType.PLAYER_LAZARUS_B or character == PlayerType.PLAYER_LAZARUS2_B
|
|
388
366
|
end
|
|
389
367
|
function ____exports.removeCollectibleCostume(self, player, collectibleType)
|
|
390
368
|
local itemConfig = Isaac.GetItemConfig()
|
|
@@ -427,9 +405,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
427
405
|
itemPool:RemoveCollectible(collectibleType)
|
|
428
406
|
end
|
|
429
407
|
repeat
|
|
430
|
-
local
|
|
431
|
-
local
|
|
432
|
-
if
|
|
408
|
+
local ____switch108 = activeSlot
|
|
409
|
+
local ____cond108 = ____switch108 == ActiveSlot.SLOT_PRIMARY
|
|
410
|
+
if ____cond108 then
|
|
433
411
|
do
|
|
434
412
|
if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
|
|
435
413
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -438,8 +416,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
438
416
|
break
|
|
439
417
|
end
|
|
440
418
|
end
|
|
441
|
-
|
|
442
|
-
if
|
|
419
|
+
____cond108 = ____cond108 or ____switch108 == ActiveSlot.SLOT_SECONDARY
|
|
420
|
+
if ____cond108 then
|
|
443
421
|
do
|
|
444
422
|
if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
|
|
445
423
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -454,16 +432,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
454
432
|
break
|
|
455
433
|
end
|
|
456
434
|
end
|
|
457
|
-
|
|
458
|
-
if
|
|
435
|
+
____cond108 = ____cond108 or ____switch108 == ActiveSlot.SLOT_POCKET
|
|
436
|
+
if ____cond108 then
|
|
459
437
|
do
|
|
460
438
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
461
439
|
player:SetActiveCharge(charge, activeSlot)
|
|
462
440
|
break
|
|
463
441
|
end
|
|
464
442
|
end
|
|
465
|
-
|
|
466
|
-
if
|
|
443
|
+
____cond108 = ____cond108 or ____switch108 == ActiveSlot.SLOT_POCKET2
|
|
444
|
+
if ____cond108 then
|
|
467
445
|
do
|
|
468
446
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
469
447
|
break
|
|
@@ -27,29 +27,29 @@ function ____exports.getPlayerHealth(self, player)
|
|
|
27
27
|
local rottenHearts = player:GetRottenHearts()
|
|
28
28
|
local brokenHearts = player:GetBrokenHearts()
|
|
29
29
|
local subPlayer = player:GetSubPlayer()
|
|
30
|
-
if
|
|
30
|
+
if character == PlayerType.PLAYER_THEFORGOTTEN and subPlayer ~= nil then
|
|
31
31
|
maxHearts = boneHearts * 2
|
|
32
32
|
boneHearts = 0
|
|
33
33
|
soulHearts = subPlayer:GetSoulHearts()
|
|
34
|
-
elseif
|
|
34
|
+
elseif character == PlayerType.PLAYER_THESOUL and subPlayer ~= nil then
|
|
35
35
|
maxHearts = subPlayer:GetBoneHearts() * 2
|
|
36
36
|
hearts = subPlayer:GetHearts()
|
|
37
37
|
end
|
|
38
|
-
hearts = hearts -
|
|
38
|
+
hearts = hearts - rottenHearts * 2
|
|
39
39
|
local extraHearts = math.ceil(soulHearts / 2) + boneHearts
|
|
40
40
|
local currentSoulHeart = 0
|
|
41
41
|
do
|
|
42
42
|
local i = 0
|
|
43
43
|
while i < extraHearts do
|
|
44
44
|
local isBoneHeart = player:IsBoneHeart(i)
|
|
45
|
-
if
|
|
45
|
+
if character == PlayerType.PLAYER_THEFORGOTTEN and subPlayer ~= nil then
|
|
46
46
|
isBoneHeart = subPlayer:IsBoneHeart(i)
|
|
47
47
|
end
|
|
48
48
|
if isBoneHeart then
|
|
49
49
|
__TS__ArrayPush(soulHeartTypes, HeartSubType.HEART_BONE)
|
|
50
50
|
else
|
|
51
51
|
local isBlackHeart = player:IsBlackHeart(currentSoulHeart + 1)
|
|
52
|
-
if
|
|
52
|
+
if character == PlayerType.PLAYER_THEFORGOTTEN and subPlayer ~= nil then
|
|
53
53
|
isBlackHeart = subPlayer:IsBlackHeart(currentSoulHeart + 1)
|
|
54
54
|
end
|
|
55
55
|
if isBlackHeart then
|
|
@@ -62,13 +62,23 @@ function ____exports.getPlayerHealth(self, player)
|
|
|
62
62
|
i = i + 1
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
|
-
return {
|
|
65
|
+
return {
|
|
66
|
+
soulHeartTypes = soulHeartTypes,
|
|
67
|
+
maxHearts = maxHearts,
|
|
68
|
+
hearts = hearts,
|
|
69
|
+
eternalHearts = eternalHearts,
|
|
70
|
+
soulHearts = soulHearts,
|
|
71
|
+
boneHearts = boneHearts,
|
|
72
|
+
goldenHearts = goldenHearts,
|
|
73
|
+
rottenHearts = rottenHearts,
|
|
74
|
+
brokenHearts = brokenHearts
|
|
75
|
+
}
|
|
66
76
|
end
|
|
67
77
|
function ____exports.setPlayerHealth(self, player, playerHealth)
|
|
68
78
|
local character = player:GetPlayerType()
|
|
69
79
|
local subPlayer = player:GetSubPlayer()
|
|
70
80
|
____exports.removeAllPlayerHealth(nil, player)
|
|
71
|
-
if
|
|
81
|
+
if character == PlayerType.PLAYER_THESOUL and subPlayer ~= nil then
|
|
72
82
|
subPlayer:AddMaxHearts(playerHealth.maxHearts, false)
|
|
73
83
|
else
|
|
74
84
|
player:AddMaxHearts(playerHealth.maxHearts, false)
|
|
@@ -79,9 +89,9 @@ function ____exports.setPlayerHealth(self, player, playerHealth)
|
|
|
79
89
|
local i = 0
|
|
80
90
|
while i < #playerHealth.soulHeartTypes do
|
|
81
91
|
local heartType = playerHealth.soulHeartTypes[i + 1]
|
|
82
|
-
local isHalf =
|
|
92
|
+
local isHalf = playerHealth.soulHearts + playerHealth.boneHearts * 2 < (i + 1) * 2
|
|
83
93
|
local addAmount = 2
|
|
84
|
-
if
|
|
94
|
+
if isHalf or heartType == HeartSubType.HEART_BONE or soulHeartsRemaining < 2 then
|
|
85
95
|
addAmount = 1
|
|
86
96
|
end
|
|
87
97
|
if heartType == HeartSubType.HEART_SOUL then
|
|
@@ -23,10 +23,10 @@ function ____exports.getPocketItems(self, player)
|
|
|
23
23
|
__TS__ArrayPush(pocketItems, {type = PocketItemType.CARD, id = card, slot = slot})
|
|
24
24
|
elseif pill ~= PillColor.PILL_NULL then
|
|
25
25
|
__TS__ArrayPush(pocketItems, {type = PocketItemType.PILL, id = pill, slot = slot})
|
|
26
|
-
elseif
|
|
26
|
+
elseif hasPocketItem and not hasPocketItem2 and not pocketItemIdentified then
|
|
27
27
|
pocketItemIdentified = true
|
|
28
28
|
__TS__ArrayPush(pocketItems, {type = PocketItemType.ACTIVE_ITEM, id = pocketItem, slot = slot})
|
|
29
|
-
elseif
|
|
29
|
+
elseif not hasPocketItem and hasPocketItem2 and not pocketItem2Identified then
|
|
30
30
|
pocketItem2Identified = true
|
|
31
31
|
__TS__ArrayPush(pocketItems, {type = PocketItemType.DICE_BAG_DICE, id = pocketItem2, slot = slot})
|
|
32
32
|
elseif hasPocketItem and hasPocketItem2 then
|
|
@@ -34,7 +34,7 @@ function ____exports.getPocketItems(self, player)
|
|
|
34
34
|
else
|
|
35
35
|
__TS__ArrayPush(pocketItems, {type = PocketItemType.EMPTY, id = 0, slot = slot})
|
|
36
36
|
end
|
|
37
|
-
if
|
|
37
|
+
if slot + 1 == maxPocketItems then
|
|
38
38
|
break
|
|
39
39
|
end
|
|
40
40
|
slot = slot + 1
|
|
@@ -45,7 +45,7 @@ end
|
|
|
45
45
|
function ____exports.getFirstCardOrPill(self, player)
|
|
46
46
|
local pocketItems = ____exports.getPocketItems(nil, player)
|
|
47
47
|
for ____, pocketItem in ipairs(pocketItems) do
|
|
48
|
-
if
|
|
48
|
+
if pocketItem.type == PocketItemType.CARD or pocketItem.type == PocketItemType.PILL then
|
|
49
49
|
return pocketItem
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -24,14 +24,14 @@ function ____exports.getRandomFloat(self, min, max, seed)
|
|
|
24
24
|
if seed == nil then
|
|
25
25
|
seed = Random()
|
|
26
26
|
end
|
|
27
|
-
return min +
|
|
27
|
+
return min + ____exports.getRandom(nil, seed) * (max - min)
|
|
28
28
|
end
|
|
29
29
|
function ____exports.getRandomInt(self, min, max, seed)
|
|
30
30
|
if seed == nil then
|
|
31
31
|
seed = Random()
|
|
32
32
|
end
|
|
33
33
|
local rng = ____exports.initRNG(nil, seed)
|
|
34
|
-
return rng:RandomInt(
|
|
34
|
+
return rng:RandomInt(max - min + 1) + min
|
|
35
35
|
end
|
|
36
36
|
function ____exports.nextSeed(self, seed)
|
|
37
37
|
local rng = ____exports.initRNG(nil, seed)
|
|
@@ -13,12 +13,12 @@ function ____exports.willMysteriousPaperRevive(self, player)
|
|
|
13
13
|
local sprite = player:GetSprite()
|
|
14
14
|
local animation = getDeathAnimationName(nil, player)
|
|
15
15
|
local deathAnimationFrames = getFinalFrameOfAnimation(nil, sprite, animation)
|
|
16
|
-
local frameOfDeath =
|
|
17
|
-
return
|
|
16
|
+
local frameOfDeath = gameFrameCount + deathAnimationFrames + 1
|
|
17
|
+
return frameOfDeath % 4 == 3
|
|
18
18
|
end
|
|
19
19
|
function ____exports.willPlayerRevive(self, player)
|
|
20
20
|
local trinketSituation = temporarilyRemoveTrinket(nil, player, TrinketType.TRINKET_MYSTERIOUS_PAPER)
|
|
21
|
-
local willRevive = player:WillPlayerRevive() or
|
|
21
|
+
local willRevive = player:WillPlayerRevive() or trinketSituation ~= nil and ____exports.willMysteriousPaperRevive(nil, player)
|
|
22
22
|
giveTrinketsBack(nil, player, trinketSituation)
|
|
23
23
|
return willRevive
|
|
24
24
|
end
|
|
@@ -29,6 +29,6 @@ function ____exports.willReviveFromSpiritShackles(self, player)
|
|
|
29
29
|
local effects = player:GetEffects()
|
|
30
30
|
local spiritShacklesEnabled = not effects:HasNullEffect(NullItemID.ID_SPIRIT_SHACKLES_DISABLED)
|
|
31
31
|
local playerInSoulForm = effects:HasNullEffect(NullItemID.ID_SPIRIT_SHACKLES_SOUL)
|
|
32
|
-
return spiritShacklesEnabled and
|
|
32
|
+
return spiritShacklesEnabled and not playerInSoulForm
|
|
33
33
|
end
|
|
34
34
|
return ____exports
|
package/dist/functions/rooms.lua
CHANGED
|
@@ -38,11 +38,11 @@ function ____exports.getRoomDescriptor(self, roomGridIndex)
|
|
|
38
38
|
end
|
|
39
39
|
function ____exports.getRoomStageID(self, roomGridIndex)
|
|
40
40
|
local roomData = ____exports.getRoomData(nil, roomGridIndex)
|
|
41
|
-
return
|
|
41
|
+
return roomData == nil and -1 or roomData.StageID
|
|
42
42
|
end
|
|
43
43
|
function ____exports.getRoomSubType(self, roomGridIndex)
|
|
44
44
|
local roomData = ____exports.getRoomData(nil, roomGridIndex)
|
|
45
|
-
return
|
|
45
|
+
return roomData == nil and -1 or roomData.Subtype
|
|
46
46
|
end
|
|
47
47
|
function ____exports.getRooms(self, includeExtraDimensionalRooms)
|
|
48
48
|
if includeExtraDimensionalRooms == nil then
|
|
@@ -80,7 +80,7 @@ end
|
|
|
80
80
|
function ____exports.inDeathCertificateArea(self)
|
|
81
81
|
local roomStageID = ____exports.getRoomStageID(nil)
|
|
82
82
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
83
|
-
return
|
|
83
|
+
return roomStageID == 35 and (roomSubType == 33 or roomSubType == 33)
|
|
84
84
|
end
|
|
85
85
|
function ____exports.changeRoom(self, roomGridIndex)
|
|
86
86
|
local game = Game()
|
|
@@ -90,9 +90,7 @@ function ____exports.changeRoom(self, roomGridIndex)
|
|
|
90
90
|
end
|
|
91
91
|
function ____exports.getAllRoomGridIndexes(self)
|
|
92
92
|
local allRoomGridIndexes = {}
|
|
93
|
-
for ____, roomDescriptor in ipairs(
|
|
94
|
-
____exports.getRooms(nil)
|
|
95
|
-
) do
|
|
93
|
+
for ____, roomDescriptor in ipairs(____exports.getRooms(nil)) do
|
|
96
94
|
__TS__ArrayPush(allRoomGridIndexes, roomDescriptor.SafeGridIndex)
|
|
97
95
|
end
|
|
98
96
|
return allRoomGridIndexes
|
|
@@ -117,21 +115,17 @@ function ____exports.getCurrentDimension(self)
|
|
|
117
115
|
dimension = dimension + 1
|
|
118
116
|
end
|
|
119
117
|
end
|
|
120
|
-
error(
|
|
121
|
-
"Failed to get the current dimension using the starting room index of: " .. tostring(startingRoomGridIndex)
|
|
122
|
-
)
|
|
118
|
+
error("Failed to get the current dimension using the starting room index of: " .. tostring(startingRoomGridIndex))
|
|
123
119
|
return 0
|
|
124
120
|
end
|
|
125
121
|
function ____exports.getRoomDataType(self, roomGridIndex)
|
|
126
122
|
local roomData = ____exports.getRoomData(nil, roomGridIndex)
|
|
127
|
-
return
|
|
123
|
+
return roomData == nil and -1 or roomData.Type
|
|
128
124
|
end
|
|
129
125
|
function ____exports.getRoomGridIndexesForType(self, roomType)
|
|
130
126
|
local roomGridIndexes = {}
|
|
131
|
-
for ____, roomDescriptor in ipairs(
|
|
132
|
-
|
|
133
|
-
) do
|
|
134
|
-
if (roomDescriptor.Data ~= nil) and (roomDescriptor.Data.Type == roomType) then
|
|
127
|
+
for ____, roomDescriptor in ipairs(____exports.getRooms(nil)) do
|
|
128
|
+
if roomDescriptor.Data ~= nil and roomDescriptor.Data.Type == roomType then
|
|
135
129
|
__TS__ArrayPush(roomGridIndexes, roomDescriptor.SafeGridIndex)
|
|
136
130
|
end
|
|
137
131
|
end
|
|
@@ -151,15 +145,15 @@ function ____exports.getRoomListIndex(self, roomGridIndex)
|
|
|
151
145
|
end
|
|
152
146
|
function ____exports.getRoomName(self, roomGridIndex)
|
|
153
147
|
local roomData = ____exports.getRoomData(nil, roomGridIndex)
|
|
154
|
-
return
|
|
148
|
+
return roomData == nil and "Unknown" or roomData.Name
|
|
155
149
|
end
|
|
156
150
|
function ____exports.getRoomSafeGridIndex(self, roomGridIndex)
|
|
157
|
-
local roomDescriptor =
|
|
151
|
+
local roomDescriptor = roomGridIndex == nil and ____exports.getCurrentRoomDescriptorReadOnly(nil) or ____exports.getRoomDescriptor(nil, roomGridIndex)
|
|
158
152
|
return roomDescriptor.SafeGridIndex
|
|
159
153
|
end
|
|
160
154
|
function ____exports.getRoomVariant(self, roomGridIndex)
|
|
161
155
|
local roomData = ____exports.getRoomData(nil, roomGridIndex)
|
|
162
|
-
return
|
|
156
|
+
return roomData == nil and -1 or roomData.Variant
|
|
163
157
|
end
|
|
164
158
|
function ____exports.getRoomVisitedCount(self, roomGridIndex)
|
|
165
159
|
local roomDescriptor = ____exports.getRoomDescriptor(nil, roomGridIndex)
|
|
@@ -170,26 +164,26 @@ function ____exports.gridToPos(self, x, y)
|
|
|
170
164
|
local room = game:GetRoom()
|
|
171
165
|
x = x + 1
|
|
172
166
|
y = y + 1
|
|
173
|
-
local gridIndex =
|
|
167
|
+
local gridIndex = y * room:GetGridWidth() + x
|
|
174
168
|
return room:GetGridPosition(gridIndex)
|
|
175
169
|
end
|
|
176
170
|
function ____exports.in2x1Room(self)
|
|
177
171
|
local game = Game()
|
|
178
172
|
local room = game:GetRoom()
|
|
179
173
|
local roomShape = room:GetRoomShape()
|
|
180
|
-
return
|
|
174
|
+
return roomShape == RoomShape.ROOMSHAPE_1x2 or roomShape == RoomShape.ROOMSHAPE_2x1
|
|
181
175
|
end
|
|
182
176
|
function ____exports.inAngelShop(self)
|
|
183
177
|
local game = Game()
|
|
184
178
|
local room = game:GetRoom()
|
|
185
179
|
local roomType = room:GetType()
|
|
186
180
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
187
|
-
return
|
|
181
|
+
return roomType == RoomType.ROOM_ANGEL and roomSubType == 1
|
|
188
182
|
end
|
|
189
183
|
function ____exports.inBeastRoom(self)
|
|
190
184
|
local roomSafeGridIndex = ____exports.getRoomSafeGridIndex(nil)
|
|
191
185
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
192
|
-
return
|
|
186
|
+
return roomSafeGridIndex == GridRooms.ROOM_DUNGEON_IDX and roomSubType == 4
|
|
193
187
|
end
|
|
194
188
|
function ____exports.inBossRoomOf(self, bossID)
|
|
195
189
|
local game = Game()
|
|
@@ -197,12 +191,12 @@ function ____exports.inBossRoomOf(self, bossID)
|
|
|
197
191
|
local roomType = room:GetType()
|
|
198
192
|
local roomStageID = ____exports.getRoomStageID(nil)
|
|
199
193
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
200
|
-
return
|
|
194
|
+
return roomType == RoomType.ROOM_BOSS and roomStageID == 0 and roomSubType == bossID
|
|
201
195
|
end
|
|
202
196
|
function ____exports.inCrawlspace(self)
|
|
203
197
|
local roomSafeGridIndex = ____exports.getRoomSafeGridIndex(nil)
|
|
204
198
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
205
|
-
return
|
|
199
|
+
return roomSafeGridIndex == GridRooms.ROOM_DUNGEON_IDX and roomSubType ~= 4
|
|
206
200
|
end
|
|
207
201
|
function ____exports.inDevilsCrownTreasureRoom(self)
|
|
208
202
|
local roomDescriptor = ____exports.getCurrentRoomDescriptorReadOnly(nil)
|
|
@@ -215,7 +209,7 @@ function ____exports.inLRoom(self)
|
|
|
215
209
|
local game = Game()
|
|
216
210
|
local room = game:GetRoom()
|
|
217
211
|
local roomShape = room:GetRoomShape()
|
|
218
|
-
return
|
|
212
|
+
return roomShape == RoomShape.ROOMSHAPE_LTL or roomShape == RoomShape.ROOMSHAPE_LTR or roomShape == RoomShape.ROOMSHAPE_LBL or roomShape == RoomShape.ROOMSHAPE_LBR
|
|
219
213
|
end
|
|
220
214
|
function ____exports.inGenesisRoom(self)
|
|
221
215
|
local game = Game()
|
|
@@ -223,7 +217,7 @@ function ____exports.inGenesisRoom(self)
|
|
|
223
217
|
local roomType = room:GetType()
|
|
224
218
|
local roomVariant = ____exports.getRoomVariant(nil)
|
|
225
219
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
226
|
-
return
|
|
220
|
+
return roomType == RoomType.ROOM_ISAACS and roomVariant == GENESIS_ROOM_VARIANT and roomSubType == GENESIS_ROOM_SUBTYPE
|
|
227
221
|
end
|
|
228
222
|
function ____exports.inMinibossRoomOf(self, minibossID)
|
|
229
223
|
local game = Game()
|
|
@@ -231,34 +225,38 @@ function ____exports.inMinibossRoomOf(self, minibossID)
|
|
|
231
225
|
local roomType = room:GetType()
|
|
232
226
|
local roomStageID = ____exports.getRoomStageID(nil)
|
|
233
227
|
local roomSubType = ____exports.getRoomSubType(nil)
|
|
234
|
-
return
|
|
228
|
+
return roomType == RoomType.ROOM_MINIBOSS and roomStageID == 0 and roomSubType == minibossID
|
|
235
229
|
end
|
|
236
230
|
function ____exports.inStartingRoom(self)
|
|
237
231
|
local game = Game()
|
|
238
232
|
local level = game:GetLevel()
|
|
239
233
|
local startingRoomGridIndex = level:GetStartingRoomIndex()
|
|
240
234
|
local roomSafeGridIndex = ____exports.getRoomSafeGridIndex(nil)
|
|
241
|
-
return
|
|
235
|
+
return roomSafeGridIndex == startingRoomGridIndex and ____exports.inDimension(nil, 0)
|
|
242
236
|
end
|
|
243
237
|
function ____exports.isAllRoomsClear(self, onlyCheckRoomTypes)
|
|
244
|
-
local
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
238
|
+
local ____temp_0
|
|
239
|
+
if onlyCheckRoomTypes == nil then
|
|
240
|
+
____temp_0 = nil
|
|
241
|
+
else
|
|
242
|
+
____temp_0 = __TS__New(Set, onlyCheckRoomTypes)
|
|
243
|
+
end
|
|
244
|
+
local roomTypeWhitelist = ____temp_0
|
|
245
|
+
for ____, roomDescriptor in ipairs(____exports.getRooms(nil)) do
|
|
248
246
|
do
|
|
249
247
|
local roomData = roomDescriptor.Data
|
|
250
248
|
if roomData == nil then
|
|
251
|
-
goto
|
|
249
|
+
goto __continue48
|
|
252
250
|
end
|
|
253
251
|
local roomType = roomData.Type
|
|
254
|
-
if
|
|
255
|
-
goto
|
|
252
|
+
if roomTypeWhitelist ~= nil and not roomTypeWhitelist:has(roomType) then
|
|
253
|
+
goto __continue48
|
|
256
254
|
end
|
|
257
255
|
if not roomDescriptor.Clear then
|
|
258
256
|
return false
|
|
259
257
|
end
|
|
260
258
|
end
|
|
261
|
-
::
|
|
259
|
+
::__continue48::
|
|
262
260
|
end
|
|
263
261
|
return true
|
|
264
262
|
end
|
|
@@ -291,17 +289,15 @@ function ____exports.setRoomCleared(self)
|
|
|
291
289
|
return
|
|
292
290
|
end
|
|
293
291
|
room:SetClear(true)
|
|
294
|
-
for ____, door in ipairs(
|
|
295
|
-
getDoors(nil)
|
|
296
|
-
) do
|
|
292
|
+
for ____, door in ipairs(getDoors(nil)) do
|
|
297
293
|
do
|
|
298
294
|
if isHiddenSecretRoomDoor(nil, door) then
|
|
299
|
-
goto
|
|
295
|
+
goto __continue59
|
|
300
296
|
end
|
|
301
297
|
openDoorFast(nil, door)
|
|
302
298
|
door.ExtraVisible = false
|
|
303
299
|
end
|
|
304
|
-
::
|
|
300
|
+
::__continue59::
|
|
305
301
|
end
|
|
306
302
|
sfx:Stop(SoundEffect.SOUND_DOOR_HEAVY_OPEN)
|
|
307
303
|
game:ShakeScreen(0)
|
|
@@ -22,14 +22,22 @@ function ____exports.spawnCollectible(self, collectibleType, position, seed, opt
|
|
|
22
22
|
error("Failed to spawn a collectible since the provided seed was 0, which is not allowed. (It will cause the game to crash.)")
|
|
23
23
|
end
|
|
24
24
|
local game = Game()
|
|
25
|
-
local collectible = game:Spawn(
|
|
25
|
+
local collectible = game:Spawn(
|
|
26
|
+
EntityType.ENTITY_PICKUP,
|
|
27
|
+
PickupVariant.PICKUP_COLLECTIBLE,
|
|
28
|
+
position,
|
|
29
|
+
Vector.Zero,
|
|
30
|
+
nil,
|
|
31
|
+
collectibleType,
|
|
32
|
+
seed
|
|
33
|
+
):ToPickup()
|
|
26
34
|
if collectible == nil then
|
|
27
35
|
error("Failed to spawn a collectible.")
|
|
28
36
|
end
|
|
29
37
|
if options then
|
|
30
38
|
collectible.OptionsPickupIndex = 1
|
|
31
39
|
end
|
|
32
|
-
if
|
|
40
|
+
if anyPlayerIs(nil, PlayerType.PLAYER_KEEPER_B) and not isQuestCollectible(nil, collectibleType) and not forceFreeItem then
|
|
33
41
|
collectible.ShopItemId = -1
|
|
34
42
|
collectible.Price = 15
|
|
35
43
|
end
|