isaacscript-common 6.13.0 → 6.16.0
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/postGridEntityCustomCollision.d.ts +2 -0
- package/dist/callbacks/postGridEntityCustomCollision.d.ts.map +1 -0
- package/dist/callbacks/postGridEntityCustomCollision.lua +71 -0
- package/dist/callbacks/postGridEntityCustomRender.lua +0 -7
- package/dist/callbacks/postGridEntityCustomUpdate.lua +0 -7
- package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts +6 -0
- package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts.map +1 -0
- package/dist/callbacks/subscriptions/postGridEntityCustomBroken.lua +29 -0
- package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts +6 -0
- package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts.map +1 -0
- package/dist/callbacks/subscriptions/postGridEntityCustomCollision.lua +29 -0
- package/dist/enums/ModCallbackCustom.d.ts +96 -62
- package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
- package/dist/enums/ModCallbackCustom.lua +64 -60
- package/dist/enums/private/SerializationBrand.d.ts +1 -1
- package/dist/enums/private/SerializationBrand.lua +1 -1
- package/dist/features/customGridEntity.d.ts +7 -3
- package/dist/features/customGridEntity.d.ts.map +1 -1
- package/dist/features/customGridEntity.lua +67 -7
- package/dist/features/extraConsoleCommands/exports.d.ts +4 -3
- package/dist/features/extraConsoleCommands/exports.d.ts.map +1 -1
- package/dist/features/extraConsoleCommands/exports.lua +4 -3
- package/dist/features/extraConsoleCommands/init.lua +1 -0
- package/dist/functions/collectibles.d.ts +6 -2
- package/dist/functions/collectibles.d.ts.map +1 -1
- package/dist/functions/collectibles.lua +4 -2
- package/dist/functions/color.d.ts +20 -14
- package/dist/functions/color.d.ts.map +1 -1
- package/dist/functions/color.lua +78 -73
- package/dist/functions/deepCopy.d.ts.map +1 -1
- package/dist/functions/deepCopy.lua +22 -1
- package/dist/functions/gridEntities.d.ts +2 -36
- package/dist/functions/gridEntities.d.ts.map +1 -1
- package/dist/functions/gridEntities.lua +2 -78
- package/dist/functions/isaacAPIClass.d.ts +1 -1
- package/dist/functions/isaacAPIClass.d.ts.map +1 -1
- package/dist/functions/itemPool.d.ts +10 -0
- package/dist/functions/itemPool.d.ts.map +1 -0
- package/dist/functions/itemPool.lua +116 -0
- package/dist/functions/kColor.d.ts +20 -14
- package/dist/functions/kColor.d.ts.map +1 -1
- package/dist/functions/kColor.lua +65 -60
- package/dist/functions/mergeTests.lua +2 -2
- package/dist/functions/npcs.d.ts +1 -29
- package/dist/functions/npcs.d.ts.map +1 -1
- package/dist/functions/npcs.lua +0 -45
- package/dist/functions/projectiles.d.ts +32 -0
- package/dist/functions/projectiles.d.ts.map +1 -0
- package/dist/functions/projectiles.lua +73 -0
- package/dist/functions/random.d.ts +1 -1
- package/dist/functions/random.lua +1 -1
- package/dist/functions/rng.d.ts +11 -15
- package/dist/functions/rng.d.ts.map +1 -1
- package/dist/functions/rng.lua +32 -52
- package/dist/functions/rockAlt.d.ts +48 -0
- package/dist/functions/rockAlt.d.ts.map +1 -0
- package/dist/functions/rockAlt.lua +365 -0
- package/dist/functions/saveFile.d.ts +8 -7
- package/dist/functions/saveFile.d.ts.map +1 -1
- package/dist/functions/saveFile.lua +10 -96
- package/dist/functions/serialization.d.ts +26 -7
- package/dist/functions/serialization.d.ts.map +1 -1
- package/dist/functions/serialization.lua +51 -19
- package/dist/functions/table.d.ts +2 -2
- package/dist/functions/table.lua +2 -2
- package/dist/functions/trinketGive.d.ts +13 -0
- package/dist/functions/trinketGive.d.ts.map +1 -1
- package/dist/functions/trinketGive.lua +16 -0
- package/dist/functions/tstlClass.d.ts +1 -1
- package/dist/functions/tstlClass.d.ts.map +1 -1
- package/dist/functions/vector.d.ts +21 -14
- package/dist/functions/vector.d.ts.map +1 -1
- package/dist/functions/vector.lua +58 -54
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.lua +16 -0
- package/dist/initCustomCallbacks.d.ts.map +1 -1
- package/dist/initCustomCallbacks.lua +3 -0
- package/dist/interfaces/AddCallbackParameterCustom.d.ts +4 -0
- package/dist/interfaces/AddCallbackParameterCustom.d.ts.map +1 -1
- package/dist/objects/callbackRegisterFunctions.d.ts.map +1 -1
- package/dist/objects/callbackRegisterFunctions.lua +6 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.d.ts +12 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.d.ts.map +1 -0
- package/dist/objects/isaacAPIClassTypeToFunctions.lua +25 -0
- package/dist/types/{private/IsaacAPIClass.d.ts → IsaacAPIClass.d.ts} +0 -0
- package/dist/types/IsaacAPIClass.d.ts.map +1 -0
- package/dist/types/{private/IsaacAPIClass.lua → IsaacAPIClass.lua} +0 -0
- package/dist/types/{private/SerializedIsaacAPIClass.d.ts → SerializedIsaacAPIClass.d.ts} +0 -0
- package/dist/types/SerializedIsaacAPIClass.d.ts.map +1 -0
- package/dist/types/{private/SerializedIsaacAPIClass.lua → SerializedIsaacAPIClass.lua} +0 -0
- package/dist/types/{private/TSTLClass.d.ts → TSTLClass.d.ts} +0 -0
- package/dist/types/TSTLClass.d.ts.map +1 -0
- package/dist/types/{private/TSTLClass.lua → TSTLClass.lua} +0 -0
- package/package.json +2 -2
- package/src/callbacks/postGridEntityCustomCollision.ts +74 -0
- package/src/callbacks/postGridEntityCustomRender.ts +1 -17
- package/src/callbacks/postGridEntityCustomUpdate.ts +1 -17
- package/src/callbacks/subscriptions/postGridEntityCustomBroken.ts +41 -0
- package/src/callbacks/subscriptions/postGridEntityCustomCollision.ts +43 -0
- package/src/enums/ModCallbackCustom.ts +38 -2
- package/src/enums/private/SerializationBrand.ts +1 -1
- package/src/features/customGridEntity.ts +78 -2
- package/src/features/extraConsoleCommands/exports.ts +4 -3
- package/src/features/extraConsoleCommands/init.ts +1 -0
- package/src/features/extraConsoleCommands/listCommands.ts +2 -2
- package/src/functions/collectibles.ts +6 -2
- package/src/functions/color.ts +89 -87
- package/src/functions/deepCopy.ts +15 -2
- package/src/functions/gridEntities.ts +2 -77
- package/src/functions/isaacAPIClass.ts +1 -1
- package/src/functions/itemPool.ts +153 -0
- package/src/functions/kColor.ts +87 -84
- package/src/functions/mergeTests.ts +2 -2
- package/src/functions/npcs.ts +1 -58
- package/src/functions/projectiles.ts +78 -0
- package/src/functions/random.ts +1 -1
- package/src/functions/rng.ts +45 -65
- package/src/functions/rockAlt.ts +396 -0
- package/src/functions/saveFile.ts +13 -119
- package/src/functions/serialization.ts +81 -25
- package/src/functions/table.ts +2 -2
- package/src/functions/trinketGive.ts +21 -0
- package/src/functions/tstlClass.ts +1 -1
- package/src/functions/vector.ts +78 -74
- package/src/index.ts +2 -0
- package/src/initCustomCallbacks.ts +2 -0
- package/src/interfaces/AddCallbackParameterCustom.ts +4 -0
- package/src/objects/callbackRegisterFunctions.ts +6 -0
- package/src/objects/isaacAPIClassTypeToFunctions.ts +63 -0
- package/src/types/{private/IsaacAPIClass.ts → IsaacAPIClass.ts} +0 -0
- package/src/types/{private/SerializedIsaacAPIClass.ts → SerializedIsaacAPIClass.ts} +0 -0
- package/src/types/{private/TSTLClass.ts → TSTLClass.ts} +0 -0
- package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts +0 -6
- package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts.map +0 -1
- package/dist/objects/isaacAPIClassTypeToCopyFunction.lua +0 -13
- package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +0 -5
- package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts.map +0 -1
- package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +0 -13
- package/dist/types/private/IsaacAPIClass.d.ts.map +0 -1
- package/dist/types/private/SerializedIsaacAPIClass.d.ts.map +0 -1
- package/dist/types/private/TSTLClass.d.ts.map +0 -1
- package/src/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
- package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
|
@@ -2,11 +2,15 @@ local ____exports = {}
|
|
|
2
2
|
local OBJECT_NAME
|
|
3
3
|
local ____SerializationBrand = require("enums.private.SerializationBrand")
|
|
4
4
|
local SerializationBrand = ____SerializationBrand.SerializationBrand
|
|
5
|
-
local ____SerializationType = require("enums.SerializationType")
|
|
6
|
-
local SerializationType = ____SerializationType.SerializationType
|
|
7
5
|
local ____isaacAPIClass = require("functions.isaacAPIClass")
|
|
8
6
|
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
|
|
9
7
|
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
|
|
8
|
+
local ____random = require("functions.random")
|
|
9
|
+
local getRandom = ____random.getRandom
|
|
10
|
+
local ____rng = require("functions.rng")
|
|
11
|
+
local getRandomSeed = ____rng.getRandomSeed
|
|
12
|
+
local isRNG = ____rng.isRNG
|
|
13
|
+
local newRNG = ____rng.newRNG
|
|
10
14
|
local ____table = require("functions.table")
|
|
11
15
|
local copyValuesToTable = ____table.copyValuesToTable
|
|
12
16
|
local getNumbersFromTable = ____table.getNumbersFromTable
|
|
@@ -19,66 +23,56 @@ function ____exports.isKColor(self, object)
|
|
|
19
23
|
end
|
|
20
24
|
local KEYS = {"Red", "Green", "Blue", "Alpha"}
|
|
21
25
|
OBJECT_NAME = "KColor"
|
|
22
|
-
--- Helper function to copy a `KColor`
|
|
26
|
+
--- Helper function to copy a `KColor` Isaac API class.
|
|
27
|
+
function ____exports.copyKColor(self, kColor)
|
|
28
|
+
if not ____exports.isKColor(nil, kColor) then
|
|
29
|
+
error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
30
|
+
end
|
|
31
|
+
return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
|
|
32
|
+
end
|
|
33
|
+
--- Helper function to convert a `SerializedKColor` object to a normal `KColor` object. (This is used
|
|
34
|
+
-- by the save data manager when reading data from the "save#.dat" file.)
|
|
35
|
+
function ____exports.deserializeKColor(self, kColor)
|
|
36
|
+
if not isTable(nil, kColor) then
|
|
37
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
|
|
38
|
+
end
|
|
39
|
+
local r, g, b, a = table.unpack(getNumbersFromTable(
|
|
40
|
+
nil,
|
|
41
|
+
kColor,
|
|
42
|
+
OBJECT_NAME,
|
|
43
|
+
table.unpack(KEYS)
|
|
44
|
+
))
|
|
45
|
+
if r == nil then
|
|
46
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Red")
|
|
47
|
+
end
|
|
48
|
+
if g == nil then
|
|
49
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Green")
|
|
50
|
+
end
|
|
51
|
+
if b == nil then
|
|
52
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Blue")
|
|
53
|
+
end
|
|
54
|
+
if a == nil then
|
|
55
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: Alpha")
|
|
56
|
+
end
|
|
57
|
+
return KColor(r, g, b, a)
|
|
58
|
+
end
|
|
59
|
+
--- Helper function to get a random color.
|
|
23
60
|
--
|
|
24
|
-
-- @param
|
|
25
|
-
--
|
|
26
|
-
-- @param
|
|
27
|
-
function ____exports.
|
|
28
|
-
if
|
|
29
|
-
|
|
61
|
+
-- @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
62
|
+
-- `RNG.Next` method will be called. Default is `getRandomSeed()`.
|
|
63
|
+
-- @param alpha Optional. The alpha value to use. Default is 1.
|
|
64
|
+
function ____exports.getRandomKColor(self, seedOrRNG, alpha)
|
|
65
|
+
if seedOrRNG == nil then
|
|
66
|
+
seedOrRNG = getRandomSeed(nil)
|
|
30
67
|
end
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return KColor(kColor.Red, kColor.Green, kColor.Blue, kColor.Alpha)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
____cond3 = ____cond3 or ____switch3 == SerializationType.SERIALIZE
|
|
43
|
-
if ____cond3 then
|
|
44
|
-
do
|
|
45
|
-
if not ____exports.isKColor(nil, kColor) then
|
|
46
|
-
error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
47
|
-
end
|
|
48
|
-
local kColorTable = {}
|
|
49
|
-
copyValuesToTable(nil, kColor, KEYS, kColorTable)
|
|
50
|
-
kColorTable[SerializationBrand.K_COLOR] = ""
|
|
51
|
-
return kColorTable
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
____cond3 = ____cond3 or ____switch3 == SerializationType.DESERIALIZE
|
|
55
|
-
if ____cond3 then
|
|
56
|
-
do
|
|
57
|
-
if not isTable(nil, kColor) then
|
|
58
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
|
|
59
|
-
end
|
|
60
|
-
local r, g, b, a = table.unpack(getNumbersFromTable(
|
|
61
|
-
nil,
|
|
62
|
-
kColor,
|
|
63
|
-
OBJECT_NAME,
|
|
64
|
-
table.unpack(KEYS)
|
|
65
|
-
))
|
|
66
|
-
if r == nil then
|
|
67
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: r")
|
|
68
|
-
end
|
|
69
|
-
if g == nil then
|
|
70
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: g")
|
|
71
|
-
end
|
|
72
|
-
if b == nil then
|
|
73
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: b")
|
|
74
|
-
end
|
|
75
|
-
if a == nil then
|
|
76
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object did not have a value for: a")
|
|
77
|
-
end
|
|
78
|
-
return KColor(r, g, b, a)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
until true
|
|
68
|
+
if alpha == nil then
|
|
69
|
+
alpha = 1
|
|
70
|
+
end
|
|
71
|
+
local rng = isRNG(nil, seedOrRNG) and seedOrRNG or newRNG(nil, seedOrRNG)
|
|
72
|
+
local r = getRandom(nil, rng)
|
|
73
|
+
local g = getRandom(nil, rng)
|
|
74
|
+
local b = getRandom(nil, rng)
|
|
75
|
+
return KColor(r, g, b, alpha)
|
|
82
76
|
end
|
|
83
77
|
--- Used to determine is the given table is a serialized `KColor` object created by the save data
|
|
84
78
|
-- manager and/or the `deepCopy` function.
|
|
@@ -95,4 +89,15 @@ end
|
|
|
95
89
|
function ____exports.kColorEquals(self, kColor1, kColor2)
|
|
96
90
|
return isaacAPIClassEquals(nil, kColor1, kColor2, KEYS)
|
|
97
91
|
end
|
|
92
|
+
--- Helper function to convert a `KColor` object to a `SerializedKColor` object. (This is used by the
|
|
93
|
+
-- save data manager when writing data from the "save#.dat" file.)
|
|
94
|
+
function ____exports.serializeKColor(self, kColor)
|
|
95
|
+
if not ____exports.isKColor(nil, kColor) then
|
|
96
|
+
error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
97
|
+
end
|
|
98
|
+
local kColorTable = {}
|
|
99
|
+
copyValuesToTable(nil, kColor, KEYS, kColorTable)
|
|
100
|
+
kColorTable[SerializationBrand.K_COLOR] = ""
|
|
101
|
+
return kColorTable
|
|
102
|
+
end
|
|
98
103
|
return ____exports
|
|
@@ -19,8 +19,8 @@ local newRNG = ____rng.newRNG
|
|
|
19
19
|
local ____serialization = require("functions.serialization")
|
|
20
20
|
local isSerializedIsaacAPIClass = ____serialization.isSerializedIsaacAPIClass
|
|
21
21
|
local ____vector = require("functions.vector")
|
|
22
|
-
local copyVector = ____vector.copyVector
|
|
23
22
|
local isVector = ____vector.isVector
|
|
23
|
+
local serializeVector = ____vector.serializeVector
|
|
24
24
|
function oldTableHasUpdatedValue(self)
|
|
25
25
|
local key = "foo"
|
|
26
26
|
local oldValue = "bar"
|
|
@@ -60,7 +60,7 @@ function oldTableHasSerializedIsaacAPIClass(self)
|
|
|
60
60
|
local x = 50
|
|
61
61
|
local y = 60
|
|
62
62
|
local vector = Vector(x, y)
|
|
63
|
-
local vectorSerialized =
|
|
63
|
+
local vectorSerialized = serializeVector(nil, vector)
|
|
64
64
|
if not isSerializedIsaacAPIClass(nil, vectorSerialized) then
|
|
65
65
|
error("The \"isSerializedIsaacAPIClass\" function says that a serialized vector is not serialized.")
|
|
66
66
|
end
|
package/dist/functions/npcs.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
import { EntityType
|
|
2
|
-
/**
|
|
3
|
-
* Helper function to make an NPC fire a projectile. Returns the fired projectile. Use this function
|
|
4
|
-
* instead of the `EntityNPC.FireProjectiles` method, since that returns void.
|
|
5
|
-
*
|
|
6
|
-
* @param npc The NPC to fire the projectile from.
|
|
7
|
-
* @param position The staring position of the projectile.
|
|
8
|
-
* @param velocity The starting velocity of the projectile.
|
|
9
|
-
* @param projectilesMode The mode of the projectile. Optional. Default is
|
|
10
|
-
* `ProjectilesMode.ONE_PROJECTILE`.
|
|
11
|
-
* @param projectileParams The parameters of the projectile. Optional. Default is
|
|
12
|
-
* `ProjectileParams()`.
|
|
13
|
-
* @returns The fired projectile.
|
|
14
|
-
*/
|
|
15
|
-
export declare function fireProjectiles(npc: EntityNPC, position: Vector, velocity: Vector, projectilesMode?: ProjectilesMode, projectileParams?: ProjectileParams): EntityProjectile[];
|
|
1
|
+
import { EntityType } from "isaac-typescript-definitions";
|
|
16
2
|
/**
|
|
17
3
|
* Helper function to get all of the non-dead NPCs in the room.
|
|
18
4
|
*
|
|
@@ -46,18 +32,4 @@ export declare function isDyingEggyWithNoSpidersLeft(npc: EntityNPC): boolean;
|
|
|
46
32
|
* enemies.
|
|
47
33
|
*/
|
|
48
34
|
export declare function isRaglingDeathPatch(npc: EntityNPC): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* The base game `EntityNPC.FireProjectiles` method does not return anything, which is a problem in
|
|
51
|
-
* situations where you need to work with the fired projectiles. This function invokes that method,
|
|
52
|
-
* and then returns the projectiles that were spawned.
|
|
53
|
-
*
|
|
54
|
-
* @param npc The EntityNPC firing projectiles.
|
|
55
|
-
* @param position The starting position of the projectiles.
|
|
56
|
-
* @param velocity The starting velocity of the projectiles.
|
|
57
|
-
* @param projectilesMode A ProjectilesMode enum value defining how to fire the projectiles.
|
|
58
|
-
* @param projectileParams A ProjectileParams object containing various parameters for the
|
|
59
|
-
* projectiles.
|
|
60
|
-
* @returns An array of EntityProjectiles containing all fired projectiles.
|
|
61
|
-
*/
|
|
62
|
-
export declare function npcFireProjectiles(npc: EntityNPC, position: Vector, velocity: Vector, projectilesMode: ProjectilesMode, projectileParams: ProjectileParams): EntityProjectile[];
|
|
63
35
|
//# sourceMappingURL=npcs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/functions/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,
|
|
1
|
+
{"version":3,"file":"npcs.d.ts","sourceRoot":"","sources":["../../src/functions/npcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,UAAU,EAQX,MAAM,8BAA8B,CAAC;AA+BtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,UAAU,GAAE,UAAe,EAC3B,OAAO,SAAK,EACZ,OAAO,SAAK,EACZ,cAAc,UAAQ,GACrB,SAAS,EAAE,CAGb;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAoB3D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAO3D"}
|
package/dist/functions/npcs.lua
CHANGED
|
@@ -17,16 +17,12 @@ local MotherSubType = ____isaac_2Dtypescript_2Ddefinitions.MotherSubType
|
|
|
17
17
|
local MotherVariant = ____isaac_2Dtypescript_2Ddefinitions.MotherVariant
|
|
18
18
|
local NpcState = ____isaac_2Dtypescript_2Ddefinitions.NpcState
|
|
19
19
|
local PeepVariant = ____isaac_2Dtypescript_2Ddefinitions.PeepVariant
|
|
20
|
-
local ProjectilesMode = ____isaac_2Dtypescript_2Ddefinitions.ProjectilesMode
|
|
21
20
|
local RaglingVariant = ____isaac_2Dtypescript_2Ddefinitions.RaglingVariant
|
|
22
21
|
local VisVariant = ____isaac_2Dtypescript_2Ddefinitions.VisVariant
|
|
23
22
|
local ____constants = require("constants")
|
|
24
23
|
local EGGY_STATE_FRAME_OF_FINAL_SPIDER = ____constants.EGGY_STATE_FRAME_OF_FINAL_SPIDER
|
|
25
|
-
local ____entities = require("functions.entities")
|
|
26
|
-
local getFilteredNewEntities = ____entities.getFilteredNewEntities
|
|
27
24
|
local ____entitiesSpecific = require("functions.entitiesSpecific")
|
|
28
25
|
local getNPCs = ____entitiesSpecific.getNPCs
|
|
29
|
-
local getProjectiles = ____entitiesSpecific.getProjectiles
|
|
30
26
|
--- Checks for specific NPCs that have "CanShutDoors" set to true naturally by the game, but should
|
|
31
27
|
-- not actually keep the doors closed (like Death's scythes).
|
|
32
28
|
function ____exports.isAliveExceptionNPC(self, npc)
|
|
@@ -82,29 +78,6 @@ NON_ALIVE_NPCS_TYPE_VARIANT_SUBTYPE = __TS__New(
|
|
|
82
78
|
(((tostring(EntityType.MOTHER) .. ".") .. tostring(MotherVariant.MOTHER_1)) .. ".") .. tostring(MotherSubType.PHASE_2)
|
|
83
79
|
}
|
|
84
80
|
)
|
|
85
|
-
--- Helper function to make an NPC fire a projectile. Returns the fired projectile. Use this function
|
|
86
|
-
-- instead of the `EntityNPC.FireProjectiles` method, since that returns void.
|
|
87
|
-
--
|
|
88
|
-
-- @param npc The NPC to fire the projectile from.
|
|
89
|
-
-- @param position The staring position of the projectile.
|
|
90
|
-
-- @param velocity The starting velocity of the projectile.
|
|
91
|
-
-- @param projectilesMode The mode of the projectile. Optional. Default is
|
|
92
|
-
-- `ProjectilesMode.ONE_PROJECTILE`.
|
|
93
|
-
-- @param projectileParams The parameters of the projectile. Optional. Default is
|
|
94
|
-
-- `ProjectileParams()`.
|
|
95
|
-
-- @returns The fired projectile.
|
|
96
|
-
function ____exports.fireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
|
|
97
|
-
if projectilesMode == nil then
|
|
98
|
-
projectilesMode = ProjectilesMode.ONE_PROJECTILE
|
|
99
|
-
end
|
|
100
|
-
if projectileParams == nil then
|
|
101
|
-
projectileParams = ProjectileParams()
|
|
102
|
-
end
|
|
103
|
-
local oldProjectiles = getProjectiles(nil, projectileParams.Variant)
|
|
104
|
-
npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
|
|
105
|
-
local newProjectiles = getProjectiles(nil, projectileParams.Variant)
|
|
106
|
-
return getFilteredNewEntities(nil, oldProjectiles, newProjectiles)
|
|
107
|
-
end
|
|
108
81
|
--- Helper function to get all of the non-dead NPCs in the room.
|
|
109
82
|
--
|
|
110
83
|
-- This function will not include NPCs on an internal blacklist, such as Death's scythes or Big Horn
|
|
@@ -142,22 +115,4 @@ function ____exports.getAliveNPCs(self, entityType, variant, subType, ignoreFrie
|
|
|
142
115
|
function(____, npc) return not npc:IsDead() and not ____exports.isAliveExceptionNPC(nil, npc) end
|
|
143
116
|
)
|
|
144
117
|
end
|
|
145
|
-
--- The base game `EntityNPC.FireProjectiles` method does not return anything, which is a problem in
|
|
146
|
-
-- situations where you need to work with the fired projectiles. This function invokes that method,
|
|
147
|
-
-- and then returns the projectiles that were spawned.
|
|
148
|
-
--
|
|
149
|
-
-- @param npc The EntityNPC firing projectiles.
|
|
150
|
-
-- @param position The starting position of the projectiles.
|
|
151
|
-
-- @param velocity The starting velocity of the projectiles.
|
|
152
|
-
-- @param projectilesMode A ProjectilesMode enum value defining how to fire the projectiles.
|
|
153
|
-
-- @param projectileParams A ProjectileParams object containing various parameters for the
|
|
154
|
-
-- projectiles.
|
|
155
|
-
-- @returns An array of EntityProjectiles containing all fired projectiles.
|
|
156
|
-
function ____exports.npcFireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
|
|
157
|
-
local oldEntities = getProjectiles(nil)
|
|
158
|
-
npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
|
|
159
|
-
local newEntities = getProjectiles(nil)
|
|
160
|
-
local filteredNewEntities = getFilteredNewEntities(nil, oldEntities, newEntities)
|
|
161
|
-
return filteredNewEntities
|
|
162
|
-
end
|
|
163
118
|
return ____exports
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ProjectilesMode } from "isaac-typescript-definitions";
|
|
2
|
+
/**
|
|
3
|
+
* Helper function to make an NPC fire one or more projectiles. Returns the fired projectile(s).
|
|
4
|
+
*
|
|
5
|
+
* Use this function instead of the `EntityNPC.FireProjectiles` method if you need to modify or
|
|
6
|
+
* access the `EntityProjectile` objects after they are fired, since this function returns the
|
|
7
|
+
* objects in an array.
|
|
8
|
+
*
|
|
9
|
+
* @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
|
|
10
|
+
* the projectile(s) to come from anything in particular.
|
|
11
|
+
* @param position The staring position of the projectile(s).
|
|
12
|
+
* @param velocity The starting velocity of the projectile(s).
|
|
13
|
+
* @param projectilesMode Optional. The mode of the projectile(s). Default is
|
|
14
|
+
* `ProjectilesMode.ONE_PROJECTILE`.
|
|
15
|
+
* @param projectileParams Optional. The parameters of the projectile(s). Default is
|
|
16
|
+
* `ProjectileParams()`.
|
|
17
|
+
* @returns The fired projectile(s).
|
|
18
|
+
*/
|
|
19
|
+
export declare function fireProjectiles(npc: EntityNPC | undefined, position: Vector, velocity: Vector, projectilesMode?: ProjectilesMode, projectileParams?: ProjectileParams): EntityProjectile[];
|
|
20
|
+
/**
|
|
21
|
+
* Helper function to spawn projectiles in a circle around a position. Under the hood, this
|
|
22
|
+
* leverages `ProjectileMode.N_PROJECTILES_IN_CIRCLE`.
|
|
23
|
+
*
|
|
24
|
+
* @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
|
|
25
|
+
* the projectile(s) to come from anything in particular.
|
|
26
|
+
* @param position The staring position of the projectile(s).
|
|
27
|
+
* @param speed The speed of the projectile(s).
|
|
28
|
+
* @param numProjectiles The amount of projectiles to spawn.
|
|
29
|
+
* @returns The fired projectile(s).
|
|
30
|
+
*/
|
|
31
|
+
export declare function fireProjectilesInCircle(npc: EntityNPC | undefined, position: Vector, speed: float, numProjectiles: int): EntityProjectile[];
|
|
32
|
+
//# sourceMappingURL=projectiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectiles.d.ts","sourceRoot":"","sources":["../../src/functions/projectiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAItC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,eAAgD,EACjE,gBAAgB,GAAE,gBAAqC,GACtD,gBAAgB,EAAE,CAoBpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,GAAG,GAClB,gBAAgB,EAAE,CAQpB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
3
|
+
local EntityFlag = ____isaac_2Dtypescript_2Ddefinitions.EntityFlag
|
|
4
|
+
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
|
|
5
|
+
local ProjectilesMode = ____isaac_2Dtypescript_2Ddefinitions.ProjectilesMode
|
|
6
|
+
local ____entities = require("functions.entities")
|
|
7
|
+
local getFilteredNewEntities = ____entities.getFilteredNewEntities
|
|
8
|
+
local ____entitiesSpecific = require("functions.entitiesSpecific")
|
|
9
|
+
local getProjectiles = ____entitiesSpecific.getProjectiles
|
|
10
|
+
local spawnNPC = ____entitiesSpecific.spawnNPC
|
|
11
|
+
--- Helper function to make an NPC fire one or more projectiles. Returns the fired projectile(s).
|
|
12
|
+
--
|
|
13
|
+
-- Use this function instead of the `EntityNPC.FireProjectiles` method if you need to modify or
|
|
14
|
+
-- access the `EntityProjectile` objects after they are fired, since this function returns the
|
|
15
|
+
-- objects in an array.
|
|
16
|
+
--
|
|
17
|
+
-- @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
|
|
18
|
+
-- the projectile(s) to come from anything in particular.
|
|
19
|
+
-- @param position The staring position of the projectile(s).
|
|
20
|
+
-- @param velocity The starting velocity of the projectile(s).
|
|
21
|
+
-- @param projectilesMode Optional. The mode of the projectile(s). Default is
|
|
22
|
+
-- `ProjectilesMode.ONE_PROJECTILE`.
|
|
23
|
+
-- @param projectileParams Optional. The parameters of the projectile(s). Default is
|
|
24
|
+
-- `ProjectileParams()`.
|
|
25
|
+
-- @returns The fired projectile(s).
|
|
26
|
+
function ____exports.fireProjectiles(self, npc, position, velocity, projectilesMode, projectileParams)
|
|
27
|
+
if projectilesMode == nil then
|
|
28
|
+
projectilesMode = ProjectilesMode.ONE_PROJECTILE
|
|
29
|
+
end
|
|
30
|
+
if projectileParams == nil then
|
|
31
|
+
projectileParams = ProjectileParams()
|
|
32
|
+
end
|
|
33
|
+
local oldProjectiles = getProjectiles(nil, projectileParams.Variant)
|
|
34
|
+
local spawnedFly = false
|
|
35
|
+
if npc == nil then
|
|
36
|
+
spawnedFly = true
|
|
37
|
+
npc = spawnNPC(
|
|
38
|
+
nil,
|
|
39
|
+
EntityType.FLY,
|
|
40
|
+
0,
|
|
41
|
+
0,
|
|
42
|
+
position
|
|
43
|
+
)
|
|
44
|
+
npc.Visible = false
|
|
45
|
+
npc:ClearEntityFlags(EntityFlag.APPEAR)
|
|
46
|
+
end
|
|
47
|
+
npc:FireProjectiles(position, velocity, projectilesMode, projectileParams)
|
|
48
|
+
local newProjectiles = getProjectiles(nil, projectileParams.Variant)
|
|
49
|
+
if spawnedFly then
|
|
50
|
+
npc:Remove()
|
|
51
|
+
end
|
|
52
|
+
return getFilteredNewEntities(nil, oldProjectiles, newProjectiles)
|
|
53
|
+
end
|
|
54
|
+
--- Helper function to spawn projectiles in a circle around a position. Under the hood, this
|
|
55
|
+
-- leverages `ProjectileMode.N_PROJECTILES_IN_CIRCLE`.
|
|
56
|
+
--
|
|
57
|
+
-- @param npc The NPC to fire the projectile(s) from. You can also pass undefined if you do not want
|
|
58
|
+
-- the projectile(s) to come from anything in particular.
|
|
59
|
+
-- @param position The staring position of the projectile(s).
|
|
60
|
+
-- @param speed The speed of the projectile(s).
|
|
61
|
+
-- @param numProjectiles The amount of projectiles to spawn.
|
|
62
|
+
-- @returns The fired projectile(s).
|
|
63
|
+
function ____exports.fireProjectilesInCircle(self, npc, position, speed, numProjectiles)
|
|
64
|
+
local velocity = Vector(speed, numProjectiles)
|
|
65
|
+
return ____exports.fireProjectiles(
|
|
66
|
+
nil,
|
|
67
|
+
npc,
|
|
68
|
+
position,
|
|
69
|
+
velocity,
|
|
70
|
+
ProjectilesMode.N_PROJECTILES_IN_CIRCLE
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
return ____exports
|
|
@@ -27,7 +27,7 @@ export declare function getRandomFloat(min: int, max: int, seedOrRNG?: Seed | RN
|
|
|
27
27
|
/**
|
|
28
28
|
* This returns a random integer between min and max. It is inclusive on both ends.
|
|
29
29
|
*
|
|
30
|
-
* Note that this function will
|
|
30
|
+
* Note that this function will run the `Next` method on the `RNG` object before returning the
|
|
31
31
|
* random number.
|
|
32
32
|
*
|
|
33
33
|
* For example:
|
|
@@ -44,7 +44,7 @@ function ____exports.getRandomFloat(self, min, max, seedOrRNG)
|
|
|
44
44
|
end
|
|
45
45
|
--- This returns a random integer between min and max. It is inclusive on both ends.
|
|
46
46
|
--
|
|
47
|
-
-- Note that this function will
|
|
47
|
+
-- Note that this function will run the `Next` method on the `RNG` object before returning the
|
|
48
48
|
-- random number.
|
|
49
49
|
--
|
|
50
50
|
-- For example:
|
package/dist/functions/rng.d.ts
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
/// <reference types="typescript-to-lua/language-extensions" />
|
|
2
2
|
/// <reference types="isaac-typescript-definitions" />
|
|
3
3
|
/// <reference types="isaac-typescript-definitions" />
|
|
4
|
-
|
|
5
|
-
declare type SerializedRNG = LuaMap<string, unknown> & {
|
|
4
|
+
export declare type SerializedRNG = LuaMap<string, unknown> & {
|
|
6
5
|
readonly __serializedRNGBrand: symbol;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[SerializationType.SERIALIZE]: SerializedRNG;
|
|
11
|
-
[SerializationType.DESERIALIZE]: RNG;
|
|
12
|
-
}
|
|
7
|
+
/** Helper function to copy an `RNG` Isaac API class. */
|
|
8
|
+
export declare function copyRNG(rng: RNG): RNG;
|
|
13
9
|
/**
|
|
14
|
-
* Helper function to
|
|
15
|
-
*
|
|
16
|
-
* @param rng The RNG object to copy. In the case of deserialization, this will actually be a Lua
|
|
17
|
-
* table instead of an instantiated RNG class.
|
|
18
|
-
* @param serializationType Default is `SerializationType.NONE`.
|
|
10
|
+
* Helper function to convert a `SerializedRNG` object to a normal `RNG` object. (This is used by
|
|
11
|
+
* the save data manager when reading data from the "save#.dat" file.)
|
|
19
12
|
*/
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function copyRNG<R extends RNG | SerializedRNG>(rng: R): CopyRNGReturn[SerializationType.NONE];
|
|
13
|
+
export declare function deserializeRNG(rng: SerializedRNG): RNG;
|
|
22
14
|
/**
|
|
23
15
|
* Helper function to get a random `Seed` value to be used in spawning entities and so on. Use this
|
|
24
16
|
* instead of calling the `Random` function directly since that can return a value of 0 and crash
|
|
@@ -39,6 +31,11 @@ export declare function isSerializedRNG(object: unknown): object is SerializedRN
|
|
|
39
31
|
*/
|
|
40
32
|
export declare function newRNG(seed?: Seed): RNG;
|
|
41
33
|
export declare function rngEquals(rng1: RNG, rng2: RNG): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Helper function to convert a `RNG` object to a `SerializedRNG` object. (This is used by the save
|
|
36
|
+
* data manager when writing data from the "save#.dat" file.)
|
|
37
|
+
*/
|
|
38
|
+
export declare function serializeRNG(rng: RNG): SerializedRNG;
|
|
42
39
|
/**
|
|
43
40
|
* Helper function to iterate over the provided object and set the seed for all of the values that
|
|
44
41
|
* are RNG objects equal to a particular seed.
|
|
@@ -51,5 +48,4 @@ export declare function setAllRNGToSeed(object: unknown, seed: Seed): void;
|
|
|
51
48
|
export declare function setAllRNGToStartSeed(object: unknown): void;
|
|
52
49
|
/** Helper function to set a seed to an RNG object using Blade's recommended shift index. */
|
|
53
50
|
export declare function setSeed(rng: RNG, seed: Seed): void;
|
|
54
|
-
export {};
|
|
55
51
|
//# sourceMappingURL=rng.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rng.d.ts","sourceRoot":"","sources":["../../src/functions/rng.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rng.d.ts","sourceRoot":"","sources":["../../src/functions/rng.ts"],"names":[],"mappings":";;;AAMA,oBAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACpD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AAYF,wDAAwD;AACxD,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CASrC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,CAatD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,2EAA2E;AAC3E,wBAAgB,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,GAAG,CAEpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,OAAkB,GAAG,GAAG,CAIlD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAYpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAoBjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAK1D;AAED,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CASlD"}
|
package/dist/functions/rng.lua
CHANGED
|
@@ -6,8 +6,6 @@ local ____cachedClasses = require("cachedClasses")
|
|
|
6
6
|
local game = ____cachedClasses.game
|
|
7
7
|
local ____SerializationBrand = require("enums.private.SerializationBrand")
|
|
8
8
|
local SerializationBrand = ____SerializationBrand.SerializationBrand
|
|
9
|
-
local ____SerializationType = require("enums.SerializationType")
|
|
10
|
-
local SerializationType = ____SerializationType.SerializationType
|
|
11
9
|
local ____isaacAPIClass = require("functions.isaacAPIClass")
|
|
12
10
|
local isaacAPIClassEquals = ____isaacAPIClass.isaacAPIClassEquals
|
|
13
11
|
local isIsaacAPIClassOfType = ____isaacAPIClass.isIsaacAPIClassOfType
|
|
@@ -49,57 +47,27 @@ end
|
|
|
49
47
|
RECOMMENDED_SHIFT_IDX = 35
|
|
50
48
|
local KEYS = {"seed"}
|
|
51
49
|
OBJECT_NAME = "RNG"
|
|
52
|
-
--- Helper function to copy an `RNG`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-- @param serializationType Default is `SerializationType.NONE`.
|
|
57
|
-
function ____exports.copyRNG(self, rng, serializationType)
|
|
58
|
-
if serializationType == nil then
|
|
59
|
-
serializationType = SerializationType.NONE
|
|
50
|
+
--- Helper function to copy an `RNG` Isaac API class.
|
|
51
|
+
function ____exports.copyRNG(self, rng)
|
|
52
|
+
if not ____exports.isRNG(nil, rng) then
|
|
53
|
+
error(((("Failed to copy a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
60
54
|
end
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
78
|
-
end
|
|
79
|
-
local seed = rng:GetSeed()
|
|
80
|
-
local rngTable = {}
|
|
81
|
-
rngTable.seed = seed
|
|
82
|
-
rngTable[SerializationBrand.RNG] = ""
|
|
83
|
-
return rngTable
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
____cond3 = ____cond3 or ____switch3 == SerializationType.DESERIALIZE
|
|
87
|
-
if ____cond3 then
|
|
88
|
-
do
|
|
89
|
-
if not isTable(nil, rng) then
|
|
90
|
-
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
|
|
91
|
-
end
|
|
92
|
-
local seedNumber = table.unpack(getNumbersFromTable(
|
|
93
|
-
nil,
|
|
94
|
-
rng,
|
|
95
|
-
OBJECT_NAME,
|
|
96
|
-
table.unpack(KEYS)
|
|
97
|
-
))
|
|
98
|
-
local seed = seedNumber
|
|
99
|
-
return ____exports.newRNG(nil, seed)
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
until true
|
|
55
|
+
local seed = rng:GetSeed()
|
|
56
|
+
return ____exports.newRNG(nil, seed)
|
|
57
|
+
end
|
|
58
|
+
--- Helper function to convert a `SerializedRNG` object to a normal `RNG` object. (This is used by
|
|
59
|
+
-- the save data manager when reading data from the "save#.dat" file.)
|
|
60
|
+
function ____exports.deserializeRNG(self, rng)
|
|
61
|
+
if not isTable(nil, rng) then
|
|
62
|
+
error(("Failed to deserialize a " .. OBJECT_NAME) .. " object since the provided object was not a Lua table.")
|
|
63
|
+
end
|
|
64
|
+
local seed = table.unpack(getNumbersFromTable(
|
|
65
|
+
nil,
|
|
66
|
+
rng,
|
|
67
|
+
OBJECT_NAME,
|
|
68
|
+
table.unpack(KEYS)
|
|
69
|
+
))
|
|
70
|
+
return ____exports.newRNG(nil, seed)
|
|
103
71
|
end
|
|
104
72
|
--- Used to determine is the given table is a serialized `RNG` object created by the save data
|
|
105
73
|
-- manager and/or the `deepCopy` function.
|
|
@@ -116,6 +84,18 @@ end
|
|
|
116
84
|
function ____exports.rngEquals(self, rng1, rng2)
|
|
117
85
|
return isaacAPIClassEquals(nil, rng1, rng2, KEYS)
|
|
118
86
|
end
|
|
87
|
+
--- Helper function to convert a `RNG` object to a `SerializedRNG` object. (This is used by the save
|
|
88
|
+
-- data manager when writing data from the "save#.dat" file.)
|
|
89
|
+
function ____exports.serializeRNG(self, rng)
|
|
90
|
+
if not ____exports.isRNG(nil, rng) then
|
|
91
|
+
error(((("Failed to serialize a " .. OBJECT_NAME) .. " object since the provided object was not a userdata ") .. OBJECT_NAME) .. " class.")
|
|
92
|
+
end
|
|
93
|
+
local seed = rng:GetSeed()
|
|
94
|
+
local rngTable = {}
|
|
95
|
+
rngTable.seed = seed
|
|
96
|
+
rngTable[SerializationBrand.RNG] = ""
|
|
97
|
+
return rngTable
|
|
98
|
+
end
|
|
119
99
|
--- Helper function to iterate over the provided object and set the seed for all of the values that
|
|
120
100
|
-- are RNG objects equal to a particular seed.
|
|
121
101
|
function ____exports.setAllRNGToSeed(self, object, seed)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
2
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
3
|
+
/// <reference types="isaac-typescript-definitions" />
|
|
4
|
+
import { RockAltType } from "../enums/RockAltType";
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to get the alternate rock type (i.e. urn, mushroom, etc.) that the current room
|
|
7
|
+
* will have.
|
|
8
|
+
*
|
|
9
|
+
* The rock type is based on the backdrop of the room.
|
|
10
|
+
*
|
|
11
|
+
* For example, if you change the backdrop of the starting room of the run to `BackdropType.CAVES`,
|
|
12
|
+
* and then spawn `GridEntityType.ROCK_ALT`, it will be a mushroom instead of an urn. Additionally,
|
|
13
|
+
* if it is destroyed, it will generate mushroom-appropriate rewards.
|
|
14
|
+
*
|
|
15
|
+
* On the other hand, if an urn is spawned first before the backdrop is changed to
|
|
16
|
+
* `BackdropType.CAVES`, the graphic of the urn will not switch to a mushroom. However, when
|
|
17
|
+
* destroyed, the urn will still generate mushroom-appropriate rewards.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getRockAltType(): RockAltType;
|
|
20
|
+
/**
|
|
21
|
+
* Helper function for emulating what happens when a vanilla `GridEntityType.ROCK_ALT` grid entity
|
|
22
|
+
* breaks.
|
|
23
|
+
*
|
|
24
|
+
* Most of the time, this function will do nothing, similar to how most of the time, when an
|
|
25
|
+
* individual urn is destroyed, nothing will spawn.
|
|
26
|
+
*
|
|
27
|
+
* Note that in vanilla, trinkets will not spawn if they have already been removed from the trinket
|
|
28
|
+
* pool. This function cannot replicate that behavior because there is no way to check to see if a
|
|
29
|
+
* trinket is still in the pool. Thus, it will always have a chance to spawn the respective trinket
|
|
30
|
+
* (e.g. Swallowed Penny from urns).
|
|
31
|
+
*
|
|
32
|
+
* The logic in this function is based on the rewards listed on the wiki:
|
|
33
|
+
* https://bindingofisaacrebirth.fandom.com/wiki/Rocks
|
|
34
|
+
*
|
|
35
|
+
* @param position The place to spawn the reward.
|
|
36
|
+
* @param rockAltType The type of reward to spawn. For example, `RockAltType.URN` will have a chance
|
|
37
|
+
* at spawning coins and spiders.
|
|
38
|
+
* @param variant Optional. The variant of the grid entity to emulate. Default is 0, which
|
|
39
|
+
* corresponds to a "normal" grid entity or an empty bucket. This only matters when
|
|
40
|
+
* spawning the reward for buckets. (Empty buckets have different rewards than full
|
|
41
|
+
* buckets.)
|
|
42
|
+
* @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
|
|
43
|
+
* `RNG.Next` method will be called. Default is `getRandomSeed()`. Normally, you
|
|
44
|
+
* should pass the `InitSeed` of the grid entity that was broken.
|
|
45
|
+
* @returns Whether or not this function spawned something.
|
|
46
|
+
*/
|
|
47
|
+
export declare function spawnRockAltReward(position: Vector, rockAltType: RockAltType, variant?: number, seedOrRNG?: Seed | RNG): boolean;
|
|
48
|
+
//# sourceMappingURL=rockAlt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rockAlt.d.ts","sourceRoot":"","sources":["../../src/functions/rockAlt.ts"],"names":[],"mappings":";;;AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA+BnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,OAAO,SAAI,EACX,SAAS,GAAE,IAAI,GAAG,GAAqB,GACtC,OAAO,CAwBT"}
|