isaacscript-common 7.7.1 → 7.8.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/functions/doors.d.ts +4 -4
- package/dist/functions/doors.d.ts.map +1 -1
- package/dist/functions/doors.lua +7 -7
- package/dist/functions/players.d.ts +8 -0
- package/dist/functions/players.d.ts.map +1 -1
- package/dist/functions/players.lua +21 -0
- package/package.json +1 -1
- package/src/functions/doors.ts +6 -12
- package/src/functions/players.ts +37 -0
|
@@ -25,16 +25,16 @@ export declare function getDevilRoomOrAngelRoomDoor(): GridEntityDoor | undefine
|
|
|
25
25
|
* Helper function to get the position that a player will enter a room at.
|
|
26
26
|
*
|
|
27
27
|
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
28
|
-
* they would immediately collide with the loading zone. Instead, they
|
|
29
|
-
*
|
|
28
|
+
* they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
29
|
+
* to the door.
|
|
30
30
|
*/
|
|
31
31
|
export declare function getDoorEnterPosition(door: GridEntityDoor): Readonly<Vector>;
|
|
32
32
|
/**
|
|
33
33
|
* Helper function to get the offset from a door position that a player will enter a room at.
|
|
34
34
|
*
|
|
35
35
|
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
36
|
-
* they would immediately collide with the loading zone. Instead, they
|
|
37
|
-
*
|
|
36
|
+
* they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
37
|
+
* to the door.
|
|
38
38
|
*/
|
|
39
39
|
export declare function getDoorSlotEnterPositionOffset(doorSlot: DoorSlot): Readonly<Vector>;
|
|
40
40
|
/** Helper function to get the possible door slots that can exist for a given room shape. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doors.d.ts","sourceRoot":"","sources":["../../src/functions/doors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,YAAY,EAIZ,SAAS,EACT,QAAQ,EACT,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"doors.d.ts","sourceRoot":"","sources":["../../src/functions/doors.ts"],"names":[],"mappings":"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"}
|
package/dist/functions/doors.lua
CHANGED
|
@@ -7,7 +7,6 @@ local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
|
7
7
|
local __TS__ArrayFind = ____lualib.__TS__ArrayFind
|
|
8
8
|
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
9
9
|
local ____exports = {}
|
|
10
|
-
local ROOM_ENTRY_OFFSET_FROM_DOOR
|
|
11
10
|
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
|
|
12
11
|
local DoorSlot = ____isaac_2Dtypescript_2Ddefinitions.DoorSlot
|
|
13
12
|
local DoorSlotFlag = ____isaac_2Dtypescript_2Ddefinitions.DoorSlotFlag
|
|
@@ -17,6 +16,8 @@ local GridRoom = ____isaac_2Dtypescript_2Ddefinitions.GridRoom
|
|
|
17
16
|
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
|
|
18
17
|
local ____cachedClasses = require("core.cachedClasses")
|
|
19
18
|
local game = ____cachedClasses.game
|
|
19
|
+
local ____constants = require("core.constants")
|
|
20
|
+
local DISTANCE_OF_GRID_TILE = ____constants.DISTANCE_OF_GRID_TILE
|
|
20
21
|
local ____doorSlotFlagToDoorSlot = require("objects.doorSlotFlagToDoorSlot")
|
|
21
22
|
local DEFAULT_DOOR_SLOT = ____doorSlotFlagToDoorSlot.DEFAULT_DOOR_SLOT
|
|
22
23
|
local DOOR_SLOT_FLAG_TO_DOOR_SLOT = ____doorSlotFlagToDoorSlot.DOOR_SLOT_FLAG_TO_DOOR_SLOT
|
|
@@ -48,13 +49,13 @@ end
|
|
|
48
49
|
--- Helper function to get the offset from a door position that a player will enter a room at.
|
|
49
50
|
--
|
|
50
51
|
-- When players enter a room, they do not appear exactly on the location of the door, because then
|
|
51
|
-
-- they would immediately collide with the loading zone. Instead, they
|
|
52
|
-
--
|
|
52
|
+
-- they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
53
|
+
-- to the door.
|
|
53
54
|
function ____exports.getDoorSlotEnterPositionOffset(self, doorSlot)
|
|
54
55
|
local direction = ____exports.doorSlotToDirection(nil, doorSlot)
|
|
55
56
|
local vector = directionToVector(nil, direction)
|
|
56
57
|
local oppositeVector = vector * -1
|
|
57
|
-
return oppositeVector *
|
|
58
|
+
return oppositeVector * DISTANCE_OF_GRID_TILE
|
|
58
59
|
end
|
|
59
60
|
--- Helper function to get all of the doors in the room. By default, it will return every door. You
|
|
60
61
|
-- can optionally specify one or more room types to return only the doors that match the specified
|
|
@@ -106,7 +107,6 @@ function ____exports.removeDoors(self, ...)
|
|
|
106
107
|
____exports.removeDoor(nil, door)
|
|
107
108
|
end
|
|
108
109
|
end
|
|
109
|
-
ROOM_ENTRY_OFFSET_FROM_DOOR = 40
|
|
110
110
|
function ____exports.closeAllDoors(self)
|
|
111
111
|
for ____, door in ipairs(____exports.getDoors(nil)) do
|
|
112
112
|
door:Close(true)
|
|
@@ -181,8 +181,8 @@ end
|
|
|
181
181
|
--- Helper function to get the position that a player will enter a room at.
|
|
182
182
|
--
|
|
183
183
|
-- When players enter a room, they do not appear exactly on the location of the door, because then
|
|
184
|
-
-- they would immediately collide with the loading zone. Instead, they
|
|
185
|
-
--
|
|
184
|
+
-- they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
185
|
+
-- to the door.
|
|
186
186
|
function ____exports.getDoorEnterPosition(self, door)
|
|
187
187
|
local offset = ____exports.getDoorSlotEnterPositionOffset(nil, door.Slot)
|
|
188
188
|
return door.Position + offset
|
|
@@ -328,4 +328,12 @@ export declare function setBlindfold(player: EntityPlayer, enabled: boolean, mod
|
|
|
328
328
|
* any costumes.
|
|
329
329
|
*/
|
|
330
330
|
export declare function useActiveItemTemp(player: EntityPlayer, collectibleType: CollectibleType): void;
|
|
331
|
+
/**
|
|
332
|
+
* Helper function to see if a certain damage amount would deal "permanent" damage to Tainted
|
|
333
|
+
* Magdalene.
|
|
334
|
+
*
|
|
335
|
+
* Tainted Magdalene has "permanent" health and "temporary" health. When standing still and doing
|
|
336
|
+
* nothing, all of Tainted Magdalene's temporary health will eventually go away.
|
|
337
|
+
*/
|
|
338
|
+
export declare function wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(player: EntityPlayer, damageAmount: float): boolean;
|
|
331
339
|
//# sourceMappingURL=players.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"players.d.ts","sourceRoot":"","sources":["../../src/functions/players.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"players.d.ts","sourceRoot":"","sources":["../../src/functions/players.ts"],"names":[],"mappings":"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"}
|
|
@@ -827,4 +827,25 @@ function ____exports.useActiveItemTemp(self, player, collectibleType)
|
|
|
827
827
|
-1
|
|
828
828
|
)
|
|
829
829
|
end
|
|
830
|
+
--- Helper function to see if a certain damage amount would deal "permanent" damage to Tainted
|
|
831
|
+
-- Magdalene.
|
|
832
|
+
--
|
|
833
|
+
-- Tainted Magdalene has "permanent" health and "temporary" health. When standing still and doing
|
|
834
|
+
-- nothing, all of Tainted Magdalene's temporary health will eventually go away.
|
|
835
|
+
function ____exports.wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(self, player, damageAmount)
|
|
836
|
+
local soulHearts = player:GetSoulHearts()
|
|
837
|
+
if soulHearts > 0 then
|
|
838
|
+
return false
|
|
839
|
+
end
|
|
840
|
+
local boneHearts = player:GetBoneHearts()
|
|
841
|
+
if boneHearts > 0 then
|
|
842
|
+
return false
|
|
843
|
+
end
|
|
844
|
+
local hearts = player:GetHearts()
|
|
845
|
+
local rottenHearts = player:GetRottenHearts()
|
|
846
|
+
local effectiveDamageAmount = damageAmount + math.min(rottenHearts, damageAmount)
|
|
847
|
+
local heartsAfterDamage = hearts - effectiveDamageAmount
|
|
848
|
+
local nonTemporaryMaxHearts = ____exports.getTaintedMagdaleneNonTemporaryMaxHearts(nil, player)
|
|
849
|
+
return heartsAfterDamage < nonTemporaryMaxHearts
|
|
850
|
+
end
|
|
830
851
|
return ____exports
|
package/package.json
CHANGED
package/src/functions/doors.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
RoomType,
|
|
10
10
|
} from "isaac-typescript-definitions";
|
|
11
11
|
import { game } from "../core/cachedClasses";
|
|
12
|
+
import { DISTANCE_OF_GRID_TILE } from "../core/constants";
|
|
12
13
|
import {
|
|
13
14
|
DEFAULT_DOOR_SLOT,
|
|
14
15
|
DOOR_SLOT_FLAG_TO_DOOR_SLOT,
|
|
@@ -25,13 +26,6 @@ import { hasFlag } from "./flag";
|
|
|
25
26
|
import { isTSTLSet } from "./tstlClass";
|
|
26
27
|
import { asNumber } from "./types";
|
|
27
28
|
|
|
28
|
-
/**
|
|
29
|
-
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
30
|
-
* they would immediately collide with the loading zone. Instead, they are offset by this amount of
|
|
31
|
-
* units.
|
|
32
|
-
*/
|
|
33
|
-
const ROOM_ENTRY_OFFSET_FROM_DOOR = 40;
|
|
34
|
-
|
|
35
29
|
export function closeAllDoors(): void {
|
|
36
30
|
for (const door of getDoors()) {
|
|
37
31
|
door.Close(true);
|
|
@@ -123,8 +117,8 @@ export function getDevilRoomOrAngelRoomDoor(): GridEntityDoor | undefined {
|
|
|
123
117
|
* Helper function to get the position that a player will enter a room at.
|
|
124
118
|
*
|
|
125
119
|
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
126
|
-
* they would immediately collide with the loading zone. Instead, they
|
|
127
|
-
*
|
|
120
|
+
* they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
121
|
+
* to the door.
|
|
128
122
|
*/
|
|
129
123
|
export function getDoorEnterPosition(door: GridEntityDoor): Readonly<Vector> {
|
|
130
124
|
const offset = getDoorSlotEnterPositionOffset(door.Slot);
|
|
@@ -135,8 +129,8 @@ export function getDoorEnterPosition(door: GridEntityDoor): Readonly<Vector> {
|
|
|
135
129
|
* Helper function to get the offset from a door position that a player will enter a room at.
|
|
136
130
|
*
|
|
137
131
|
* When players enter a room, they do not appear exactly on the location of the door, because then
|
|
138
|
-
* they would immediately collide with the loading zone. Instead, they
|
|
139
|
-
*
|
|
132
|
+
* they would immediately collide with the loading zone. Instead, they appear on the grid tile next
|
|
133
|
+
* to the door.
|
|
140
134
|
*/
|
|
141
135
|
export function getDoorSlotEnterPositionOffset(
|
|
142
136
|
doorSlot: DoorSlot,
|
|
@@ -147,7 +141,7 @@ export function getDoorSlotEnterPositionOffset(
|
|
|
147
141
|
// The player appears in the opposite direction of the way that the door is oriented in the room.
|
|
148
142
|
const oppositeVector = vector.mul(-1);
|
|
149
143
|
|
|
150
|
-
return oppositeVector.mul(
|
|
144
|
+
return oppositeVector.mul(DISTANCE_OF_GRID_TILE);
|
|
151
145
|
}
|
|
152
146
|
|
|
153
147
|
/** Helper function to get the possible door slots that can exist for a given room shape. */
|
package/src/functions/players.ts
CHANGED
|
@@ -1058,3 +1058,40 @@ export function useActiveItemTemp(
|
|
|
1058
1058
|
): void {
|
|
1059
1059
|
player.UseActiveItem(collectibleType, false, false, true, false, -1);
|
|
1060
1060
|
}
|
|
1061
|
+
|
|
1062
|
+
/**
|
|
1063
|
+
* Helper function to see if a certain damage amount would deal "permanent" damage to Tainted
|
|
1064
|
+
* Magdalene.
|
|
1065
|
+
*
|
|
1066
|
+
* Tainted Magdalene has "permanent" health and "temporary" health. When standing still and doing
|
|
1067
|
+
* nothing, all of Tainted Magdalene's temporary health will eventually go away.
|
|
1068
|
+
*/
|
|
1069
|
+
export function wouldDamageTaintedMagdaleneNonTemporaryHeartContainers(
|
|
1070
|
+
player: EntityPlayer,
|
|
1071
|
+
damageAmount: float,
|
|
1072
|
+
): boolean {
|
|
1073
|
+
// Regardless of the damage amount, damage to a player cannot remove a soul heart and a red heart
|
|
1074
|
+
// at the same time.
|
|
1075
|
+
const soulHearts = player.GetSoulHearts();
|
|
1076
|
+
if (soulHearts > 0) {
|
|
1077
|
+
return false;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
// Regardless of the damage amount, damage to a player cannot remove a bone heart and a red heart
|
|
1081
|
+
// at the same time.
|
|
1082
|
+
const boneHearts = player.GetBoneHearts();
|
|
1083
|
+
if (boneHearts > 0) {
|
|
1084
|
+
return false;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
// Account for rotten hearts eating away at more red hearts than usual.
|
|
1088
|
+
const hearts = player.GetHearts();
|
|
1089
|
+
const rottenHearts = player.GetRottenHearts();
|
|
1090
|
+
const effectiveDamageAmount =
|
|
1091
|
+
damageAmount + Math.min(rottenHearts, damageAmount);
|
|
1092
|
+
|
|
1093
|
+
const heartsAfterDamage = hearts - effectiveDamageAmount;
|
|
1094
|
+
const nonTemporaryMaxHearts =
|
|
1095
|
+
getTaintedMagdaleneNonTemporaryMaxHearts(player);
|
|
1096
|
+
return heartsAfterDamage < nonTemporaryMaxHearts;
|
|
1097
|
+
}
|