isaacscript-common 1.2.18 → 1.2.22
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/postGridEntity.lua +10 -10
- package/dist/callbacks/postGridEntityCollision.d.ts +1 -0
- package/dist/callbacks/postGridEntityCollision.lua +63 -0
- package/dist/callbacks/subscriptions/postGridEntityCollision.d.ts +2 -0
- package/dist/callbacks/subscriptions/postGridEntityCollision.lua +26 -0
- package/dist/functions/gridEntity.d.ts +1 -0
- package/dist/functions/gridEntity.lua +26 -2
- package/dist/functions/math.d.ts +9 -0
- package/dist/functions/math.lua +16 -0
- package/dist/functions/player.d.ts +16 -0
- package/dist/functions/player.lua +47 -30
- package/dist/types/CallbackParametersCustom.d.ts +5 -0
- package/dist/types/ModCallbacksCustom.d.ts +2 -1
- package/dist/types/ModCallbacksCustom.lua +2 -0
- package/dist/types/ModUpgraded.lua +8 -0
- package/dist/upgradeMod.lua +3 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ local Map = ____lualib.Map
|
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
6
6
|
local ____exports = {}
|
|
7
|
-
local hasSubscriptions, postUpdate, checkGridEntityRemoved, postNewRoom,
|
|
7
|
+
local hasSubscriptions, postUpdate, checkNewGridEntity, checkGridEntityRemoved, postNewRoom, v
|
|
8
8
|
local ____exports = require("features.saveDataManager.exports")
|
|
9
9
|
local saveDataManager = ____exports.saveDataManager
|
|
10
10
|
local ____gridEntity = require("functions.gridEntity")
|
|
@@ -31,6 +31,15 @@ function postUpdate(self)
|
|
|
31
31
|
end
|
|
32
32
|
checkGridEntityRemoved(nil)
|
|
33
33
|
end
|
|
34
|
+
function checkNewGridEntity(self, gridEntity)
|
|
35
|
+
local gridIndex = gridEntity:GetGridIndex()
|
|
36
|
+
local gridEntityType = gridEntity:GetType()
|
|
37
|
+
local storedGridEntityType = v.room.initializedGridEntities:get(gridIndex)
|
|
38
|
+
if storedGridEntityType ~= gridEntityType then
|
|
39
|
+
v.room.initializedGridEntities:set(gridIndex, gridEntityType)
|
|
40
|
+
postGridEntityInitFire(nil, gridEntity)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
34
43
|
function checkGridEntityRemoved(self)
|
|
35
44
|
local game = Game()
|
|
36
45
|
local room = game:GetRoom()
|
|
@@ -52,15 +61,6 @@ function postNewRoom(self)
|
|
|
52
61
|
checkNewGridEntity(nil, gridEntity)
|
|
53
62
|
end
|
|
54
63
|
end
|
|
55
|
-
function checkNewGridEntity(self, gridEntity)
|
|
56
|
-
local gridIndex = gridEntity:GetGridIndex()
|
|
57
|
-
local gridEntityType = gridEntity:GetType()
|
|
58
|
-
local storedGridEntityType = v.room.initializedGridEntities:get(gridIndex)
|
|
59
|
-
if storedGridEntityType ~= gridEntityType then
|
|
60
|
-
v.room.initializedGridEntities:set(gridIndex, gridEntityType)
|
|
61
|
-
postGridEntityInitFire(nil, gridEntity)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
64
|
v = {room = {initializedGridEntities = __TS__New(Map)}}
|
|
65
65
|
function ____exports.postGridEntityCallbacksInit(self, mod)
|
|
66
66
|
saveDataManager(nil, "postGridEntity", v, hasSubscriptions)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
2
|
+
local ____lualib = require("lualib_bundle")
|
|
3
|
+
local Map = ____lualib.Map
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
5
|
+
local Set = ____lualib.Set
|
|
6
|
+
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
7
|
+
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
8
|
+
local ____exports = {}
|
|
9
|
+
local hasSubscriptions, postUpdate, v
|
|
10
|
+
local ____exports = require("features.saveDataManager.exports")
|
|
11
|
+
local saveDataManager = ____exports.saveDataManager
|
|
12
|
+
local ____gridEntity = require("functions.gridEntity")
|
|
13
|
+
local getCollidingEntitiesWithGridEntity = ____gridEntity.getCollidingEntitiesWithGridEntity
|
|
14
|
+
local getGridEntities = ____gridEntity.getGridEntities
|
|
15
|
+
local ____postGridEntityCollision = require("callbacks.subscriptions.postGridEntityCollision")
|
|
16
|
+
local postGridEntityCollisionFire = ____postGridEntityCollision.postGridEntityCollisionFire
|
|
17
|
+
local postGridEntityCollisionHasSubscriptions = ____postGridEntityCollision.postGridEntityCollisionHasSubscriptions
|
|
18
|
+
function hasSubscriptions(self)
|
|
19
|
+
return postGridEntityCollisionHasSubscriptions(nil)
|
|
20
|
+
end
|
|
21
|
+
function postUpdate(self)
|
|
22
|
+
if not hasSubscriptions(nil) then
|
|
23
|
+
return
|
|
24
|
+
end
|
|
25
|
+
for ____, gridEntity in ipairs(getGridEntities(nil)) do
|
|
26
|
+
do
|
|
27
|
+
if gridEntity.CollisionClass == GridCollisionClass.COLLISION_NONE then
|
|
28
|
+
goto __continue6
|
|
29
|
+
end
|
|
30
|
+
local gridEntityPtrHash = GetPtrHash(gridEntity)
|
|
31
|
+
local oldCollidingEntities = v.room.collidingEntitiesMap:get(gridEntityPtrHash)
|
|
32
|
+
if oldCollidingEntities == nil then
|
|
33
|
+
oldCollidingEntities = __TS__New(Set)
|
|
34
|
+
v.room.collidingEntitiesMap:set(gridEntityPtrHash, oldCollidingEntities)
|
|
35
|
+
end
|
|
36
|
+
local collidingEntities = getCollidingEntitiesWithGridEntity(nil, gridEntity)
|
|
37
|
+
for ____, entity in ipairs(collidingEntities) do
|
|
38
|
+
local entityPtrHash = GetPtrHash(entity)
|
|
39
|
+
if not oldCollidingEntities:has(entityPtrHash) then
|
|
40
|
+
oldCollidingEntities:add(entityPtrHash)
|
|
41
|
+
postGridEntityCollisionFire(nil, gridEntity, entity)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
local collidingEntitiesPtrHashes = __TS__ArrayMap(
|
|
45
|
+
collidingEntities,
|
|
46
|
+
function(____, entity) return GetPtrHash(entity) end
|
|
47
|
+
)
|
|
48
|
+
local collidingEntitiesPtrHashSet = __TS__New(Set, collidingEntitiesPtrHashes)
|
|
49
|
+
for ____, oldCollidingEntityPtrHash in __TS__Iterator(oldCollidingEntities:values()) do
|
|
50
|
+
if not collidingEntitiesPtrHashSet:has(oldCollidingEntityPtrHash) then
|
|
51
|
+
oldCollidingEntities:delete(oldCollidingEntityPtrHash)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
::__continue6::
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
v = {room = {collidingEntitiesMap = __TS__New(Map)}}
|
|
59
|
+
function ____exports.postGridEntityCollisionInit(self, mod)
|
|
60
|
+
saveDataManager(nil, "postGridEntityCollision", v, hasSubscriptions)
|
|
61
|
+
mod:AddCallback(ModCallbacks.MC_POST_UPDATE, postUpdate)
|
|
62
|
+
end
|
|
63
|
+
return ____exports
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
2
|
+
local ____lualib = require("lualib_bundle")
|
|
3
|
+
local __TS__ArrayPush = ____lualib.__TS__ArrayPush
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local subscriptions = {}
|
|
6
|
+
function ____exports.postGridEntityCollisionHasSubscriptions(self)
|
|
7
|
+
return #subscriptions > 0
|
|
8
|
+
end
|
|
9
|
+
function ____exports.postGridEntityCollisionRegister(self, callback, gridEntityType)
|
|
10
|
+
__TS__ArrayPush(subscriptions, {callback, gridEntityType})
|
|
11
|
+
end
|
|
12
|
+
function ____exports.postGridEntityCollisionFire(self, gridEntity, entity)
|
|
13
|
+
local gridEntityType = gridEntity:GetType()
|
|
14
|
+
for ____, ____value in ipairs(subscriptions) do
|
|
15
|
+
local callback = ____value[1]
|
|
16
|
+
local callbackGridEntityType = ____value[2]
|
|
17
|
+
do
|
|
18
|
+
if callbackGridEntityType ~= nil and callbackGridEntityType ~= gridEntityType then
|
|
19
|
+
goto __continue5
|
|
20
|
+
end
|
|
21
|
+
callback(nil, gridEntity, entity)
|
|
22
|
+
end
|
|
23
|
+
::__continue5::
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
return ____exports
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* 1000.0 in a room XML file, but `GridEntityType.GRID_ROCK` is equal to 2.
|
|
6
6
|
*/
|
|
7
7
|
export declare function convertXMLGridEntityType(gridEntityXMLType: int, gridEntityXMLVariant: int): [int, int] | undefined;
|
|
8
|
+
export declare function getCollidingEntitiesWithGridEntity(gridEntity: GridEntity): Entity[];
|
|
8
9
|
/**
|
|
9
10
|
* Helper function to get every grid entity in the current room. Use it with no arguments to get
|
|
10
11
|
* every grid entity, or specify a variadic amount of arguments to match specific grid entity types.
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
2
2
|
local ____lualib = require("lualib_bundle")
|
|
3
3
|
local Map = ____lualib.Map
|
|
4
|
+
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
4
5
|
local Set = ____lualib.Set
|
|
5
6
|
local __TS__New = ____lualib.__TS__New
|
|
6
7
|
local __TS__ArrayPush = ____lualib.__TS__ArrayPush
|
|
7
8
|
local __TS__ArrayEvery = ____lualib.__TS__ArrayEvery
|
|
8
9
|
local ____exports = {}
|
|
10
|
+
local ____constants = require("constants")
|
|
11
|
+
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
|
|
9
12
|
local ____gridEntityXMLMap = require("maps.gridEntityXMLMap")
|
|
10
13
|
local GRID_ENTITY_XML_MAP = ____gridEntityXMLMap.GRID_ENTITY_XML_MAP
|
|
11
14
|
local ____roomShapeToTopLeftWallGridIndexMap = require("maps.roomShapeToTopLeftWallGridIndexMap")
|
|
12
15
|
local DEFAULT_TOP_LEFT_WALL_GRID_INDEX = ____roomShapeToTopLeftWallGridIndexMap.DEFAULT_TOP_LEFT_WALL_GRID_INDEX
|
|
13
16
|
local ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP = ____roomShapeToTopLeftWallGridIndexMap.ROOM_SHAPE_TO_TOP_LEFT_WALL_GRID_INDEX_MAP
|
|
17
|
+
local ____math = require("functions.math")
|
|
18
|
+
local isCircleIntersectingRectangle = ____math.isCircleIntersectingRectangle
|
|
14
19
|
local ____rooms = require("functions.rooms")
|
|
15
20
|
local roomUpdateSafe = ____rooms.roomUpdateSafe
|
|
16
21
|
local ____sprite = require("functions.sprite")
|
|
@@ -68,6 +73,25 @@ function ____exports.convertXMLGridEntityType(self, gridEntityXMLType, gridEntit
|
|
|
68
73
|
end
|
|
69
74
|
return {gridEntityType, gridEntityVariant}
|
|
70
75
|
end
|
|
76
|
+
function ____exports.getCollidingEntitiesWithGridEntity(self, gridEntity)
|
|
77
|
+
local gridEntityCollisionTopLeft = Vector(gridEntity.Position.X - DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y - DISTANCE_OF_GRID_TILE / 2)
|
|
78
|
+
local gridEntityCollisionBottomRight = Vector(gridEntity.Position.X + DISTANCE_OF_GRID_TILE / 2, gridEntity.Position.Y + DISTANCE_OF_GRID_TILE / 2)
|
|
79
|
+
local closeEntities = Isaac.FindInRadius(gridEntity.Position, DISTANCE_OF_GRID_TILE * 2)
|
|
80
|
+
local closeEntitiesThatCollideWithGrid = __TS__ArrayFilter(
|
|
81
|
+
closeEntities,
|
|
82
|
+
function(____, entity) return entity:CollidesWithGrid() end
|
|
83
|
+
)
|
|
84
|
+
return __TS__ArrayFilter(
|
|
85
|
+
closeEntitiesThatCollideWithGrid,
|
|
86
|
+
function(____, entity) return isCircleIntersectingRectangle(
|
|
87
|
+
nil,
|
|
88
|
+
entity.Position,
|
|
89
|
+
entity.Size + 0.1,
|
|
90
|
+
gridEntityCollisionTopLeft,
|
|
91
|
+
gridEntityCollisionBottomRight
|
|
92
|
+
) end
|
|
93
|
+
)
|
|
94
|
+
end
|
|
71
95
|
function ____exports.getGridEntities(self, ...)
|
|
72
96
|
local gridEntityTypes = {...}
|
|
73
97
|
local game = Game()
|
|
@@ -81,7 +105,7 @@ function ____exports.getGridEntities(self, ...)
|
|
|
81
105
|
do
|
|
82
106
|
local gridEntity = room:GetGridEntity(gridIndex)
|
|
83
107
|
if gridEntity == nil then
|
|
84
|
-
goto
|
|
108
|
+
goto __continue10
|
|
85
109
|
end
|
|
86
110
|
if #gridEntityTypes == 0 then
|
|
87
111
|
__TS__ArrayPush(gridEntities, gridEntity)
|
|
@@ -92,7 +116,7 @@ function ____exports.getGridEntities(self, ...)
|
|
|
92
116
|
end
|
|
93
117
|
end
|
|
94
118
|
end
|
|
95
|
-
::
|
|
119
|
+
::__continue10::
|
|
96
120
|
gridIndex = gridIndex + 1
|
|
97
121
|
end
|
|
98
122
|
end
|
package/dist/functions/math.d.ts
CHANGED
|
@@ -13,6 +13,15 @@ export declare function getAngleDifference(angle1: float, angle2: float): float;
|
|
|
13
13
|
* this can be optionally changed by specifying this argument.
|
|
14
14
|
*/
|
|
15
15
|
export declare function getCircleDiscretizedPoints(centerPos: Vector, radius: float, numPoints: int, xMultiplier?: number, yMultiplier?: number, initialDirection?: Direction): Vector[];
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to check if a given position is within a given rectangle. This is an inclusive
|
|
18
|
+
* check, meaning that it will return true if the position is on the border of the rectangle.
|
|
19
|
+
*/
|
|
20
|
+
export declare function inRectangle(position: Vector, topLeft: Vector, bottomRight: Vector): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* From: https://www.geeksforgeeks.org/check-if-any-point-overlaps-the-given-circle-and-rectangle/
|
|
23
|
+
*/
|
|
24
|
+
export declare function isCircleIntersectingRectangle(circleCenter: Vector, circleRadius: float, rectangleTopLeft: Vector, rectangleBottomRight: Vector): boolean;
|
|
16
25
|
export declare function isEven(num: int): boolean;
|
|
17
26
|
export declare function isOdd(num: int): boolean;
|
|
18
27
|
export declare function lerp(a: number, b: number, pos: float): number;
|
package/dist/functions/math.lua
CHANGED
|
@@ -75,6 +75,22 @@ function ____exports.getCircleDiscretizedPoints(self, centerPos, radius, numPoin
|
|
|
75
75
|
end
|
|
76
76
|
return positions
|
|
77
77
|
end
|
|
78
|
+
function ____exports.inRectangle(self, position, topLeft, bottomRight)
|
|
79
|
+
return position.X >= topLeft.X and position.X <= bottomRight.X and position.Y <= topLeft.Y and position.Y >= bottomRight.Y
|
|
80
|
+
end
|
|
81
|
+
function ____exports.isCircleIntersectingRectangle(self, circleCenter, circleRadius, rectangleTopLeft, rectangleBottomRight)
|
|
82
|
+
local nearestX = math.max(
|
|
83
|
+
rectangleTopLeft.X,
|
|
84
|
+
math.min(circleCenter.X, rectangleBottomRight.X)
|
|
85
|
+
)
|
|
86
|
+
local nearestY = math.max(
|
|
87
|
+
rectangleTopLeft.Y,
|
|
88
|
+
math.min(circleCenter.Y, rectangleBottomRight.Y)
|
|
89
|
+
)
|
|
90
|
+
local nearestPointToCircleOnRectangle = Vector(nearestX, nearestY)
|
|
91
|
+
local distanceToCenterOfCircle = nearestPointToCircleOnRectangle:Distance(circleCenter)
|
|
92
|
+
return distanceToCenterOfCircle <= circleRadius
|
|
93
|
+
end
|
|
78
94
|
function ____exports.isEven(self, num)
|
|
79
95
|
return num & 1 == 0
|
|
80
96
|
end
|
|
@@ -81,6 +81,22 @@ export declare function getNewestPlayer(): EntityPlayer;
|
|
|
81
81
|
* hearts and 3 broken hearts, then this function would return 6 (i.e. 12 - 1 - 2 - 3).
|
|
82
82
|
*/
|
|
83
83
|
export declare function getPlayerAvailableHeartSlots(player: EntityPlayer): int;
|
|
84
|
+
/**
|
|
85
|
+
* Returns an array containing every collectible type that the player has that matches the provided
|
|
86
|
+
* CacheFlag.
|
|
87
|
+
*
|
|
88
|
+
* For example, if a player has one Lord of the Pit and two Transcendences, then this function would
|
|
89
|
+
* return:
|
|
90
|
+
*
|
|
91
|
+
* ```ts
|
|
92
|
+
* [
|
|
93
|
+
* CollectibleType.COLLECTIBLE_LORD_OF_THE_PIT,
|
|
94
|
+
* CollectibleType.COLLECTIBLE_TRANSCENDENCE,
|
|
95
|
+
* CollectibleType.COLLECTIBLE_TRANSCENDENCE,
|
|
96
|
+
* ]
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function getPlayerCollectiblesForCacheFlag(player: EntityPlayer, cacheFlag: CacheFlag): Array<CollectibleType | int>;
|
|
84
100
|
/**
|
|
85
101
|
* Returns the maximum heart containers that the provided character can have. Normally, this is 12,
|
|
86
102
|
* but with Keeper it is 3, with Tainted Keeper it is 2. Does not account for Birthright or Mother's
|
|
@@ -3,10 +3,10 @@ local ____lualib = require("lualib_bundle")
|
|
|
3
3
|
local Set = ____lualib.Set
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__ArraySome = ____lualib.__TS__ArraySome
|
|
6
|
+
local __TS__ArrayPush = ____lualib.__TS__ArrayPush
|
|
7
|
+
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
6
8
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
7
9
|
local Map = ____lualib.Map
|
|
8
|
-
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
9
|
-
local __TS__ArrayPush = ____lualib.__TS__ArrayPush
|
|
10
10
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
11
11
|
local ____exports = {}
|
|
12
12
|
local getAdjustedPlayerName, isTaintedModded, EXCLUDED_CHARACTERS
|
|
@@ -25,6 +25,8 @@ local arraySum = ____array.arraySum
|
|
|
25
25
|
local ____bitwise = require("functions.bitwise")
|
|
26
26
|
local getKBitOfN = ____bitwise.getKBitOfN
|
|
27
27
|
local getNumBitsOfN = ____bitwise.getNumBitsOfN
|
|
28
|
+
local ____collectibleCacheFlag = require("functions.collectibleCacheFlag")
|
|
29
|
+
local getCollectiblesForCacheFlag = ____collectibleCacheFlag.getCollectiblesForCacheFlag
|
|
28
30
|
local ____collectibles = require("functions.collectibles")
|
|
29
31
|
local getCollectibleMaxCharges = ____collectibles.getCollectibleMaxCharges
|
|
30
32
|
local ____collectibleSet = require("functions.collectibleSet")
|
|
@@ -72,39 +74,39 @@ end
|
|
|
72
74
|
function getAdjustedPlayerName(self, player)
|
|
73
75
|
local character = player:GetPlayerType()
|
|
74
76
|
repeat
|
|
75
|
-
local
|
|
76
|
-
local
|
|
77
|
-
if
|
|
77
|
+
local ____switch75 = character
|
|
78
|
+
local ____cond75 = ____switch75 == PlayerType.PLAYER_BLUEBABY or ____switch75 == PlayerType.PLAYER_BLUEBABY_B
|
|
79
|
+
if ____cond75 then
|
|
78
80
|
do
|
|
79
81
|
return "Blue Baby"
|
|
80
82
|
end
|
|
81
83
|
end
|
|
82
|
-
|
|
83
|
-
if
|
|
84
|
+
____cond75 = ____cond75 or ____switch75 == PlayerType.PLAYER_LAZARUS2
|
|
85
|
+
if ____cond75 then
|
|
84
86
|
do
|
|
85
87
|
return "Lazarus II"
|
|
86
88
|
end
|
|
87
89
|
end
|
|
88
|
-
|
|
89
|
-
if
|
|
90
|
+
____cond75 = ____cond75 or ____switch75 == PlayerType.PLAYER_BLACKJUDAS
|
|
91
|
+
if ____cond75 then
|
|
90
92
|
do
|
|
91
93
|
return "Dark Judas"
|
|
92
94
|
end
|
|
93
95
|
end
|
|
94
|
-
|
|
95
|
-
if
|
|
96
|
+
____cond75 = ____cond75 or ____switch75 == PlayerType.PLAYER_JACOB
|
|
97
|
+
if ____cond75 then
|
|
96
98
|
do
|
|
97
99
|
return "Jacob & Esau"
|
|
98
100
|
end
|
|
99
101
|
end
|
|
100
|
-
|
|
101
|
-
if
|
|
102
|
+
____cond75 = ____cond75 or ____switch75 == PlayerType.PLAYER_LAZARUS2_B
|
|
103
|
+
if ____cond75 then
|
|
102
104
|
do
|
|
103
105
|
return "Dead Tainted Lazarus"
|
|
104
106
|
end
|
|
105
107
|
end
|
|
106
|
-
|
|
107
|
-
if
|
|
108
|
+
____cond75 = ____cond75 or ____switch75 == PlayerType.PLAYER_JACOB2_B
|
|
109
|
+
if ____cond75 then
|
|
108
110
|
do
|
|
109
111
|
return "Dead Tainted Jacob"
|
|
110
112
|
end
|
|
@@ -128,18 +130,18 @@ function ____exports.getPlayers(self, performExclusions)
|
|
|
128
130
|
do
|
|
129
131
|
local player = Isaac.GetPlayer(i)
|
|
130
132
|
if player == nil then
|
|
131
|
-
goto
|
|
133
|
+
goto __continue85
|
|
132
134
|
end
|
|
133
135
|
if ____exports.isChildPlayer(nil, player) then
|
|
134
|
-
goto
|
|
136
|
+
goto __continue85
|
|
135
137
|
end
|
|
136
138
|
local character = player:GetPlayerType()
|
|
137
139
|
if performExclusions and EXCLUDED_CHARACTERS:has(character) then
|
|
138
|
-
goto
|
|
140
|
+
goto __continue85
|
|
139
141
|
end
|
|
140
142
|
__TS__ArrayPush(players, player)
|
|
141
143
|
end
|
|
142
|
-
::
|
|
144
|
+
::__continue85::
|
|
143
145
|
i = i + 1
|
|
144
146
|
end
|
|
145
147
|
end
|
|
@@ -330,6 +332,21 @@ function ____exports.getPlayerAvailableHeartSlots(self, player)
|
|
|
330
332
|
local totalOccupiedHeartSlots = totalHeartContainers + brokenHearts
|
|
331
333
|
return maxHeartContainers - totalOccupiedHeartSlots
|
|
332
334
|
end
|
|
335
|
+
function ____exports.getPlayerCollectiblesForCacheFlag(self, player, cacheFlag)
|
|
336
|
+
local collectiblesForCacheFlag = getCollectiblesForCacheFlag(nil, cacheFlag)
|
|
337
|
+
local playerCollectibles = {}
|
|
338
|
+
for ____, collectibleType in __TS__Iterator(collectiblesForCacheFlag:values()) do
|
|
339
|
+
local numCollectibles = player:GetCollectibleNum(collectibleType)
|
|
340
|
+
do
|
|
341
|
+
local i = 0
|
|
342
|
+
while i < numCollectibles do
|
|
343
|
+
__TS__ArrayPush(playerCollectibles, collectibleType)
|
|
344
|
+
i = i + 1
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
return playerCollectibles
|
|
349
|
+
end
|
|
333
350
|
function ____exports.getPlayerCloserThan(self, position, distance)
|
|
334
351
|
for ____, player in ipairs(____exports.getPlayers(nil)) do
|
|
335
352
|
if player.Position:Distance(position) <= distance then
|
|
@@ -367,14 +384,14 @@ function ____exports.getPlayerIndexVanilla(self, playerToFind)
|
|
|
367
384
|
do
|
|
368
385
|
local player = Isaac.GetPlayer(i)
|
|
369
386
|
if player == nil then
|
|
370
|
-
goto
|
|
387
|
+
goto __continue66
|
|
371
388
|
end
|
|
372
389
|
local playerHash = GetPtrHash(player)
|
|
373
390
|
if playerHash == playerToFindHash then
|
|
374
391
|
return i
|
|
375
392
|
end
|
|
376
393
|
end
|
|
377
|
-
::
|
|
394
|
+
::__continue66::
|
|
378
395
|
i = i + 1
|
|
379
396
|
end
|
|
380
397
|
end
|
|
@@ -544,9 +561,9 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
544
561
|
itemPool:RemoveCollectible(collectibleType)
|
|
545
562
|
end
|
|
546
563
|
repeat
|
|
547
|
-
local
|
|
548
|
-
local
|
|
549
|
-
if
|
|
564
|
+
local ____switch128 = activeSlot
|
|
565
|
+
local ____cond128 = ____switch128 == ActiveSlot.SLOT_PRIMARY
|
|
566
|
+
if ____cond128 then
|
|
550
567
|
do
|
|
551
568
|
if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
|
|
552
569
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -555,8 +572,8 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
555
572
|
break
|
|
556
573
|
end
|
|
557
574
|
end
|
|
558
|
-
|
|
559
|
-
if
|
|
575
|
+
____cond128 = ____cond128 or ____switch128 == ActiveSlot.SLOT_SECONDARY
|
|
576
|
+
if ____cond128 then
|
|
560
577
|
do
|
|
561
578
|
if primaryCollectibleType ~= CollectibleType.COLLECTIBLE_NULL then
|
|
562
579
|
player:RemoveCollectible(primaryCollectibleType)
|
|
@@ -571,16 +588,16 @@ function ____exports.setActiveItem(self, player, collectibleType, activeSlot, ch
|
|
|
571
588
|
break
|
|
572
589
|
end
|
|
573
590
|
end
|
|
574
|
-
|
|
575
|
-
if
|
|
591
|
+
____cond128 = ____cond128 or ____switch128 == ActiveSlot.SLOT_POCKET
|
|
592
|
+
if ____cond128 then
|
|
576
593
|
do
|
|
577
594
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
578
595
|
player:SetActiveCharge(charge, activeSlot)
|
|
579
596
|
break
|
|
580
597
|
end
|
|
581
598
|
end
|
|
582
|
-
|
|
583
|
-
if
|
|
599
|
+
____cond128 = ____cond128 or ____switch128 == ActiveSlot.SLOT_POCKET2
|
|
600
|
+
if ____cond128 then
|
|
584
601
|
do
|
|
585
602
|
player:SetPocketActiveItem(collectibleType, activeSlot, keepInPools)
|
|
586
603
|
break
|
|
@@ -9,6 +9,7 @@ import { PostFirstEsauJrCallbackType } from "../callbacks/subscriptions/postFirs
|
|
|
9
9
|
import { PostFirstFlipCallbackType } from "../callbacks/subscriptions/postFirstFlip";
|
|
10
10
|
import { PostFlipCallbackType } from "../callbacks/subscriptions/postFlip";
|
|
11
11
|
import { PostGameStartedReorderedCallbackType } from "../callbacks/subscriptions/postGameStartedReordered";
|
|
12
|
+
import { PostGridEntityCollisionCallbackType } from "../callbacks/subscriptions/postGridEntityCollision";
|
|
12
13
|
import { PostGridEntityInitCallbackType } from "../callbacks/subscriptions/postGridEntityInit";
|
|
13
14
|
import { PostGridEntityRemoveCallbackType } from "../callbacks/subscriptions/postGridEntityRemove";
|
|
14
15
|
import { PostGridEntityUpdateCallbackType } from "../callbacks/subscriptions/postGridEntityUpdate";
|
|
@@ -207,4 +208,8 @@ export interface CallbackParametersCustom {
|
|
|
207
208
|
callback: PostGridEntityRemoveCallbackType,
|
|
208
209
|
gridEntityType?: GridEntityType
|
|
209
210
|
];
|
|
211
|
+
[ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION]: [
|
|
212
|
+
callback: PostGridEntityCollisionCallbackType,
|
|
213
|
+
gridEntityType?: GridEntityType
|
|
214
|
+
];
|
|
210
215
|
}
|
|
@@ -91,4 +91,6 @@ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE = 43
|
|
|
91
91
|
____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE] = "MC_POST_GRID_ENTITY_UPDATE"
|
|
92
92
|
____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE = 44
|
|
93
93
|
____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE] = "MC_POST_GRID_ENTITY_REMOVE"
|
|
94
|
+
____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION = 45
|
|
95
|
+
____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION] = "MC_POST_GRID_ENTITY_COLLISION"
|
|
94
96
|
return ____exports
|
|
@@ -25,6 +25,8 @@ local ____postFlip = require("callbacks.subscriptions.postFlip")
|
|
|
25
25
|
local postFlipRegister = ____postFlip.postFlipRegister
|
|
26
26
|
local ____postGameStartedReordered = require("callbacks.subscriptions.postGameStartedReordered")
|
|
27
27
|
local postGameStartedReorderedRegister = ____postGameStartedReordered.postGameStartedReorderedRegister
|
|
28
|
+
local ____postGridEntityCollision = require("callbacks.subscriptions.postGridEntityCollision")
|
|
29
|
+
local postGridEntityCollisionRegister = ____postGridEntityCollision.postGridEntityCollisionRegister
|
|
28
30
|
local ____postGridEntityInit = require("callbacks.subscriptions.postGridEntityInit")
|
|
29
31
|
local postGridEntityInitRegister = ____postGridEntityInit.postGridEntityInitRegister
|
|
30
32
|
local ____postGridEntityRemove = require("callbacks.subscriptions.postGridEntityRemove")
|
|
@@ -384,6 +386,12 @@ function getCallbackRegisterFunction(self, callbackID)
|
|
|
384
386
|
return postGridEntityRemoveRegister
|
|
385
387
|
end
|
|
386
388
|
end
|
|
389
|
+
____cond19 = ____cond19 or ____switch19 == ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION
|
|
390
|
+
if ____cond19 then
|
|
391
|
+
do
|
|
392
|
+
return postGridEntityCollisionRegister
|
|
393
|
+
end
|
|
394
|
+
end
|
|
387
395
|
do
|
|
388
396
|
do
|
|
389
397
|
ensureAllCases(nil, callbackID)
|
package/dist/upgradeMod.lua
CHANGED
|
@@ -21,6 +21,8 @@ local ____postFlip = require("callbacks.postFlip")
|
|
|
21
21
|
local postFlipCallbacksInit = ____postFlip.postFlipCallbacksInit
|
|
22
22
|
local ____postGridEntity = require("callbacks.postGridEntity")
|
|
23
23
|
local postGridEntityCallbacksInit = ____postGridEntity.postGridEntityCallbacksInit
|
|
24
|
+
local ____postGridEntityCollision = require("callbacks.postGridEntityCollision")
|
|
25
|
+
local postGridEntityCollisionInit = ____postGridEntityCollision.postGridEntityCollisionInit
|
|
24
26
|
local ____postKnifeInitLate = require("callbacks.postKnifeInitLate")
|
|
25
27
|
local postKnifeInitLateCallbackInit = ____postKnifeInitLate.postKnifeInitLateCallbackInit
|
|
26
28
|
local ____postLaserInitLate = require("callbacks.postLaserInitLate")
|
|
@@ -122,6 +124,7 @@ function initCustomCallbacks(self, mod)
|
|
|
122
124
|
postSlotInitUpdateCallbacksInit(nil, mod)
|
|
123
125
|
postSlotRenderBrokenCallbacksInit(nil, mod)
|
|
124
126
|
postGridEntityCallbacksInit(nil, mod)
|
|
127
|
+
postGridEntityCollisionInit(nil, mod)
|
|
125
128
|
end
|
|
126
129
|
function initFeatures(self, mod)
|
|
127
130
|
deployJSONRoomInit(nil, mod)
|