isaacscript-common 7.1.1 → 7.2.2
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.d.ts.map +1 -1
- package/dist/callbacks/itemPickup.lua +3 -1
- package/dist/callbacks/postCustomDoorEnter.d.ts.map +1 -1
- package/dist/callbacks/postCustomDoorEnter.lua +14 -11
- package/dist/callbacks/postDiceRoomActivated.d.ts.map +1 -1
- package/dist/callbacks/postDiceRoomActivated.lua +5 -4
- package/dist/callbacks/postItemDischarged.lua +2 -1
- package/dist/callbacks/postSlotDestroyed.lua +3 -3
- package/dist/classes/DefaultMap.d.ts +5 -5
- package/dist/classes/DefaultMap.d.ts.map +1 -1
- package/dist/core/constants.d.ts +2 -2
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.lua +3 -1
- package/dist/core/constantsFirstLast.d.ts +2 -0
- package/dist/core/constantsFirstLast.d.ts.map +1 -1
- package/dist/core/constantsFirstLast.lua +36 -9
- package/dist/enums/AmbushType.d.ts +1 -0
- package/dist/enums/AmbushType.d.ts.map +1 -1
- package/dist/enums/AmbushType.lua +1 -0
- package/dist/enums/CornerType.d.ts +1 -0
- package/dist/enums/CornerType.d.ts.map +1 -1
- package/dist/enums/CornerType.lua +1 -0
- package/dist/enums/PocketItemType.d.ts +1 -0
- package/dist/enums/PocketItemType.d.ts.map +1 -1
- package/dist/enums/PocketItemType.lua +1 -0
- package/dist/enums/RockAltType.d.ts +1 -0
- package/dist/enums/RockAltType.d.ts.map +1 -1
- package/dist/enums/RockAltType.lua +1 -0
- package/dist/enums/SaveDataKey.d.ts +11 -0
- package/dist/enums/SaveDataKey.d.ts.map +1 -0
- package/dist/enums/{private/SaveDataKey.lua → SaveDataKey.lua} +2 -0
- package/dist/enums/SerializationType.d.ts +1 -0
- package/dist/enums/SerializationType.d.ts.map +1 -1
- package/dist/enums/SerializationType.lua +1 -0
- package/dist/enums/SlotDestructionType.d.ts +1 -0
- package/dist/enums/SlotDestructionType.d.ts.map +1 -1
- package/dist/enums/SlotDestructionType.lua +1 -0
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.d.ts.map +1 -1
- package/dist/enums/index.lua +8 -0
- package/dist/features/customGridEntity.d.ts.map +1 -1
- package/dist/features/customGridEntity.lua +3 -1
- package/dist/features/customStage/backdrop.d.ts +1 -1
- package/dist/features/customStage/backdrop.d.ts.map +1 -1
- package/dist/features/customStage/backdrop.lua +5 -3
- package/dist/features/customStage/customStageGridEntities.d.ts.map +1 -1
- package/dist/features/customStage/customStageGridEntities.lua +3 -1
- package/dist/features/customStage/exports.d.ts.map +1 -1
- package/dist/features/customStage/exports.lua +3 -1
- package/dist/features/customStage/init.lua +2 -2
- package/dist/features/customStage/shadows.d.ts.map +1 -1
- package/dist/features/customStage/shadows.lua +2 -1
- package/dist/features/deployJSONRoom.lua +13 -10
- package/dist/features/extraConsoleCommands/listCommands.d.ts.map +1 -1
- package/dist/features/extraConsoleCommands/listCommands.lua +8 -2
- package/dist/features/saveDataManager/exports.d.ts +2 -1
- package/dist/features/saveDataManager/exports.d.ts.map +1 -1
- package/dist/features/saveDataManager/main.d.ts +1 -1
- package/dist/features/saveDataManager/main.d.ts.map +1 -1
- package/dist/features/saveDataManager/main.lua +1 -1
- package/dist/functions/bitSet128.d.ts.map +1 -1
- package/dist/functions/bosses.d.ts.map +1 -1
- package/dist/functions/bosses.lua +3 -1
- package/dist/functions/cacheFlag.d.ts +23 -1
- package/dist/functions/cacheFlag.d.ts.map +1 -1
- package/dist/functions/cacheFlag.lua +78 -0
- package/dist/functions/collectibles.d.ts.map +1 -1
- package/dist/functions/deepCopy.lua +2 -1
- package/dist/functions/doors.d.ts.map +1 -1
- package/dist/functions/doors.lua +3 -1
- package/dist/functions/entities.lua +2 -1
- package/dist/functions/flying.lua +2 -2
- package/dist/functions/gridEntities.lua +2 -1
- package/dist/functions/gridEntitiesSpecific.d.ts.map +1 -1
- package/dist/functions/gridEntitiesSpecific.lua +5 -3
- package/dist/functions/index.d.ts +0 -1
- package/dist/functions/index.d.ts.map +1 -1
- package/dist/functions/index.lua +0 -8
- package/dist/functions/input.d.ts +5 -2
- package/dist/functions/input.d.ts.map +1 -1
- package/dist/functions/input.lua +11 -3
- package/dist/functions/kColor.d.ts.map +1 -1
- package/dist/functions/levelGrid.d.ts.map +1 -1
- package/dist/functions/levelGrid.lua +3 -1
- package/dist/functions/nextStage.d.ts.map +1 -1
- package/dist/functions/nextStage.lua +7 -5
- package/dist/functions/npcs.d.ts.map +1 -1
- package/dist/functions/npcs.lua +4 -2
- package/dist/functions/pills.d.ts.map +1 -1
- package/dist/functions/pills.lua +9 -3
- package/dist/functions/playerIndex.d.ts.map +1 -1
- package/dist/functions/playerIndex.lua +2 -1
- package/dist/functions/players.d.ts +1 -1
- package/dist/functions/players.d.ts.map +1 -1
- package/dist/functions/players.lua +13 -15
- package/dist/functions/pocketItems.d.ts.map +1 -1
- package/dist/functions/pocketItems.lua +3 -1
- package/dist/functions/rng.d.ts.map +1 -1
- package/dist/functions/rng.lua +3 -0
- package/dist/functions/rockAlt.d.ts.map +1 -1
- package/dist/functions/rockAlt.lua +11 -20
- package/dist/functions/rooms.d.ts +4 -4
- package/dist/functions/rooms.d.ts.map +1 -1
- package/dist/functions/rooms.lua +18 -16
- package/dist/functions/spawnCollectible.d.ts.map +1 -1
- package/dist/functions/stage.d.ts.map +1 -1
- package/dist/functions/stage.lua +8 -2
- package/dist/functions/trinkets.d.ts.map +1 -1
- package/dist/functions/trinkets.lua +4 -2
- package/dist/functions/types.d.ts +64 -0
- package/dist/functions/types.d.ts.map +1 -1
- package/dist/functions/types.lua +63 -0
- package/dist/functions/vector.d.ts.map +1 -1
- package/dist/interfaces/ChargeBarSprites.d.ts +1 -1
- package/dist/interfaces/Corner.d.ts +5 -0
- package/dist/interfaces/Corner.d.ts.map +1 -1
- package/dist/interfaces/CustomStageLua.d.ts +57 -0
- package/dist/interfaces/CustomStageLua.d.ts.map +1 -1
- package/dist/interfaces/GridEntityCustomData.d.ts +6 -0
- package/dist/interfaces/GridEntityCustomData.d.ts.map +1 -1
- package/dist/interfaces/JSONRoomsFile.d.ts +7 -3
- package/dist/interfaces/JSONRoomsFile.d.ts.map +1 -1
- package/dist/interfaces/PlayerHealth.d.ts +1 -1
- package/dist/interfaces/PlayerHealth.d.ts.map +1 -1
- package/dist/interfaces/PocketItemDescription.d.ts +1 -1
- package/dist/interfaces/PocketItemDescription.d.ts.map +1 -1
- package/dist/interfaces/RoomDescription.d.ts +1 -1
- package/dist/interfaces/RoomDescription.d.ts.map +1 -1
- package/dist/interfaces/StatTypeType.d.ts +4 -0
- package/dist/interfaces/StatTypeType.d.ts.map +1 -1
- package/dist/interfaces/TrinketSituation.d.ts +1 -1
- package/dist/interfaces/TrinketSituation.d.ts.map +1 -1
- package/dist/maps/keyboardToString.d.ts +4 -0
- package/dist/maps/keyboardToString.d.ts.map +1 -0
- package/dist/maps/keyboardToString.lua +73 -0
- package/dist/types/AnyEntity.d.ts +5 -0
- package/dist/types/AnyEntity.d.ts.map +1 -1
- package/dist/types/AnyGridEntity.d.ts +5 -0
- package/dist/types/AnyGridEntity.d.ts.map +1 -1
- package/dist/types/CollectibleIndex.d.ts +4 -3
- package/dist/types/CollectibleIndex.d.ts.map +1 -1
- package/dist/types/Immutable.d.ts +3 -1
- package/dist/types/Immutable.d.ts.map +1 -1
- package/dist/types/PickupIndex.d.ts +4 -2
- package/dist/types/PickupIndex.d.ts.map +1 -1
- package/dist/types/PlayerIndex.d.ts +3 -2
- package/dist/types/PlayerIndex.d.ts.map +1 -1
- package/dist/types/SerializedIsaacAPIClass.d.ts +6 -0
- package/dist/types/SerializedIsaacAPIClass.d.ts.map +1 -1
- package/dist/types/TSTLClass.d.ts +5 -0
- package/dist/types/TSTLClass.d.ts.map +1 -1
- package/dist/types/TrapdoorDestination.d.ts +3 -0
- package/dist/types/TrapdoorDestination.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/callbacks/itemPickup.ts +5 -2
- package/src/callbacks/postCustomDoorEnter.ts +18 -11
- package/src/callbacks/postDiceRoomActivated.ts +7 -12
- package/src/callbacks/postItemDischarged.ts +3 -1
- package/src/callbacks/postSlotDestroyed.ts +3 -2
- package/src/callbacks/reorderedCallbacks.ts +2 -2
- package/src/classes/DefaultMap.ts +8 -8
- package/src/core/constants.ts +3 -3
- package/src/core/constantsFirstLast.ts +29 -14
- package/src/enums/AmbushType.ts +1 -0
- package/src/enums/CornerType.ts +1 -0
- package/src/enums/PocketItemType.ts +1 -0
- package/src/enums/RockAltType.ts +1 -0
- package/src/enums/SaveDataKey.ts +10 -0
- package/src/enums/SerializationType.ts +1 -0
- package/src/enums/SlotDestructionType.ts +1 -0
- package/src/enums/index.ts +1 -0
- package/src/enums/indexTypeDoc.ts +1 -0
- package/src/features/customGridEntity.ts +2 -1
- package/src/features/customStage/backdrop.ts +5 -3
- package/src/features/customStage/customStageGridEntities.ts +2 -1
- package/src/features/customStage/exports.ts +5 -4
- package/src/features/customStage/init.ts +2 -2
- package/src/features/customStage/shadows.ts +2 -1
- package/src/features/deployJSONRoom.ts +14 -19
- package/src/features/extraConsoleCommands/listCommands.ts +3 -2
- package/src/features/fastReset.ts +1 -1
- package/src/features/indexTypeDoc.ts +2 -1
- package/src/features/saveDataManager/exports.ts +4 -4
- package/src/features/saveDataManager/main.ts +1 -1
- package/src/features/saveDataManager/save.ts +1 -1
- package/src/functions/bitSet128.ts +1 -5
- package/src/functions/bosses.ts +2 -1
- package/src/functions/cacheFlag.ts +90 -1
- package/src/functions/cards.ts +3 -3
- package/src/functions/collectibles.ts +2 -8
- package/src/functions/color.ts +1 -1
- package/src/functions/deepCopy.ts +2 -2
- package/src/functions/dimensions.ts +1 -1
- package/src/functions/doors.ts +2 -2
- package/src/functions/entities.ts +2 -2
- package/src/functions/flying.ts +1 -1
- package/src/functions/gridEntities.ts +2 -2
- package/src/functions/gridEntitiesSpecific.ts +4 -3
- package/src/functions/index.ts +0 -1
- package/src/functions/indexTypeDoc.ts +0 -1
- package/src/functions/input.ts +17 -4
- package/src/functions/jsonHelpers.ts +1 -1
- package/src/functions/kColor.ts +1 -5
- package/src/functions/levelGrid.ts +3 -2
- package/src/functions/nextStage.ts +6 -5
- package/src/functions/npcs.ts +3 -2
- package/src/functions/pills.ts +11 -9
- package/src/functions/playerIndex.ts +3 -1
- package/src/functions/players.ts +5 -6
- package/src/functions/pocketItems.ts +4 -4
- package/src/functions/rng.ts +8 -5
- package/src/functions/rockAlt.ts +28 -13
- package/src/functions/rooms.ts +27 -26
- package/src/functions/spawnCollectible.ts +1 -2
- package/src/functions/stage.ts +3 -2
- package/src/functions/trinkets.ts +6 -5
- package/src/functions/types.ts +100 -0
- package/src/functions/vector.ts +1 -5
- package/src/interfaces/ChargeBarSprites.ts +1 -1
- package/src/interfaces/Corner.ts +5 -0
- package/src/interfaces/CustomStageLua.ts +66 -0
- package/src/interfaces/GridEntityCustomData.ts +6 -0
- package/src/interfaces/JSONRoomsFile.ts +7 -3
- package/src/interfaces/PlayerHealth.ts +1 -1
- package/src/interfaces/PocketItemDescription.ts +1 -1
- package/src/interfaces/RoomDescription.ts +1 -1
- package/src/interfaces/StatTypeType.ts +4 -0
- package/src/interfaces/TrinketSituation.ts +1 -1
- package/src/maps/keyboardToString.ts +77 -0
- package/src/types/AnyEntity.ts +5 -0
- package/src/types/AnyGridEntity.ts +5 -0
- package/src/types/CollectibleIndex.ts +4 -3
- package/src/types/Immutable.ts +3 -1
- package/src/types/PickupIndex.ts +4 -2
- package/src/types/PlayerIndex.ts +3 -2
- package/src/types/SerializedIsaacAPIClass.ts +6 -0
- package/src/types/TSTLClass.ts +5 -0
- package/src/types/TrapdoorDestination.ts +3 -0
- package/dist/enums/private/SaveDataKey.d.ts +0 -7
- package/dist/enums/private/SaveDataKey.d.ts.map +0 -1
- package/dist/functions/collectibleCacheFlag.d.ts +0 -24
- package/dist/functions/collectibleCacheFlag.d.ts.map +0 -1
- package/dist/functions/collectibleCacheFlag.lua +0 -80
- package/src/enums/private/SaveDataKey.ts +0 -6
- package/src/functions/collectibleCacheFlag.ts +0 -90
package/src/functions/stage.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { game } from "../core/cachedClasses";
|
|
|
8
8
|
import { ROOM_TYPE_GOTO_PREFIXES } from "../objects/roomTypeGotoPrefixes";
|
|
9
9
|
import { STAGE_TYPE_SUFFIXES } from "../objects/stageTypeSuffixes";
|
|
10
10
|
import { STAGE_TYPE_TO_LETTER } from "../objects/stageTypeToLetter";
|
|
11
|
+
import { asLevelStage, asNumber } from "./types";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Helper function that calculates what the stage type should be for the provided stage. This
|
|
@@ -57,7 +58,7 @@ export function calculateStageTypeRepentance(stage: LevelStage): StageType {
|
|
|
57
58
|
// This algorithm is from Kilburn. We add one because the alt path is offset by 1 relative to the
|
|
58
59
|
// normal path.
|
|
59
60
|
const seeds = game.GetSeeds();
|
|
60
|
-
const adjustedStage = ((stage
|
|
61
|
+
const adjustedStage = asLevelStage(asNumber(stage) + 1);
|
|
61
62
|
const stageSeed = seeds.GetStageSeed(adjustedStage);
|
|
62
63
|
|
|
63
64
|
// Kilburn does not know why he divided the stage seed by 2 first.
|
|
@@ -79,7 +80,7 @@ export function getEffectiveStage(): int {
|
|
|
79
80
|
const stage = level.GetStage();
|
|
80
81
|
|
|
81
82
|
if (onRepentanceStage()) {
|
|
82
|
-
return stage + 1;
|
|
83
|
+
return asNumber(stage) + 1;
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
return stage;
|
|
@@ -21,6 +21,7 @@ import { hasFlag } from "./flag";
|
|
|
21
21
|
import { isTrinket } from "./pickupVariants";
|
|
22
22
|
import { isCharacter } from "./players";
|
|
23
23
|
import { clearSprite } from "./sprites";
|
|
24
|
+
import { asNumber } from "./types";
|
|
24
25
|
import { irange } from "./utils";
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -41,7 +42,7 @@ const TRINKET_SPRITE_LAYER = 0;
|
|
|
41
42
|
* corresponds to the golden trinket sub-type for Swallowed Penny.
|
|
42
43
|
*/
|
|
43
44
|
export function getGoldenTrinketType(trinketType: TrinketType): TrinketType {
|
|
44
|
-
return trinketType + GOLDEN_TRINKET_ADJUSTMENT;
|
|
45
|
+
return asNumber(trinketType) + GOLDEN_TRINKET_ADJUSTMENT;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/**
|
|
@@ -54,7 +55,7 @@ export function getModdedTrinketTypes(): TrinketType[] {
|
|
|
54
55
|
return [];
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
return irange(FIRST_MODDED_TRINKET_TYPE, LAST_TRINKET_TYPE)
|
|
58
|
+
return irange(FIRST_MODDED_TRINKET_TYPE, LAST_TRINKET_TYPE);
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
/**
|
|
@@ -140,12 +141,12 @@ export function getTrinketName(trinketType: TrinketType): string {
|
|
|
140
141
|
|
|
141
142
|
/** Helper function to get an array that contains every trinket type. */
|
|
142
143
|
export function getTrinketTypes(): TrinketType[] {
|
|
143
|
-
return irange(FIRST_TRINKET_TYPE, LAST_TRINKET_TYPE)
|
|
144
|
+
return irange(FIRST_TRINKET_TYPE, LAST_TRINKET_TYPE);
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
/** Helper function to get an array that represents every vanilla trinket type. */
|
|
147
148
|
export function getVanillaTrinketTypes(): TrinketType[] {
|
|
148
|
-
return irange(FIRST_TRINKET_TYPE, LAST_VANILLA_TRINKET_TYPE)
|
|
149
|
+
return irange(FIRST_TRINKET_TYPE, LAST_VANILLA_TRINKET_TYPE);
|
|
149
150
|
}
|
|
150
151
|
|
|
151
152
|
/**
|
|
@@ -165,7 +166,7 @@ export function hasOpenTrinketSlot(player: EntityPlayer): boolean {
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
export function isGoldenTrinket(trinketType: TrinketType): boolean {
|
|
168
|
-
return trinketType >
|
|
169
|
+
return asNumber(trinketType) > GOLDEN_TRINKET_ADJUSTMENT;
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
/**
|
package/src/functions/types.ts
CHANGED
|
@@ -1,3 +1,103 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Card,
|
|
3
|
+
CollectibleType,
|
|
4
|
+
LevelStage,
|
|
5
|
+
PillColor,
|
|
6
|
+
PillEffect,
|
|
7
|
+
PlayerType,
|
|
8
|
+
TrinketType,
|
|
9
|
+
} from "isaac-typescript-definitions";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Helper function to safely cast a `number` to a `Card`. (This is better than using the `as`
|
|
13
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
14
|
+
*
|
|
15
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
16
|
+
*/
|
|
17
|
+
export function asCard(num: number): Card {
|
|
18
|
+
return num;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Helper function to safely cast a `number` to a `CollectibleType`. (This is better than using the
|
|
23
|
+
* `as` TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
24
|
+
*
|
|
25
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
26
|
+
*/
|
|
27
|
+
export function asCollectibleType(num: number): CollectibleType {
|
|
28
|
+
return num;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Helper function to safely cast a `number` to a `LevelStage`. (This is better than using the `as`
|
|
33
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
34
|
+
*
|
|
35
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
36
|
+
*/
|
|
37
|
+
export function asLevelStage(num: number): LevelStage {
|
|
38
|
+
return num;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Helper function to safely cast an enum to a `number`. (This is better than using the `as`
|
|
43
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
44
|
+
*
|
|
45
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
46
|
+
*/
|
|
47
|
+
export function asNumber(num: number): number {
|
|
48
|
+
return num;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Helper function to safely cast a `number` to a `PillColor`. (This is better than using the `as`
|
|
53
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
54
|
+
*
|
|
55
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
56
|
+
*/
|
|
57
|
+
export function asPillColor(num: number): PillColor {
|
|
58
|
+
return num;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Helper function to safely cast a `number` to a `PillEffect`. (This is better than using the `as`
|
|
63
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
64
|
+
*
|
|
65
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
66
|
+
*/
|
|
67
|
+
export function asPillEffect(num: number): PillEffect {
|
|
68
|
+
return num;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Helper function to safely cast a `number` to a `PlayerType`. (This is better than using the `as`
|
|
73
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
74
|
+
*
|
|
75
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
76
|
+
*/
|
|
77
|
+
export function asPlayerType(num: number): PlayerType {
|
|
78
|
+
return num;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Helper function to safely cast an enum to a `string`. (This is better than using the `as`
|
|
83
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
84
|
+
*
|
|
85
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
86
|
+
*/
|
|
87
|
+
export function asString(str: string): string {
|
|
88
|
+
return str;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Helper function to safely cast a `number` to a `TrinketType`. (This is better than using the `as`
|
|
93
|
+
* TypeScript keyword to do a type assertion, since that can obfuscate compiler errors. )
|
|
94
|
+
*
|
|
95
|
+
* This is useful to satisfy the "isaacscript/strict-enums" ESLint rule.
|
|
96
|
+
*/
|
|
97
|
+
export function asTrinketType(num: number): TrinketType {
|
|
98
|
+
return num;
|
|
99
|
+
}
|
|
100
|
+
|
|
1
101
|
export function isBoolean(variable: unknown): variable is boolean {
|
|
2
102
|
return type(variable) === "boolean";
|
|
3
103
|
}
|
package/src/functions/vector.ts
CHANGED
|
@@ -36,11 +36,7 @@ export function deserializeVector(vector: SerializedVector): Vector {
|
|
|
36
36
|
);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
const [x, y] = getNumbersFromTable(
|
|
40
|
-
vector as LuaMap<string, unknown>,
|
|
41
|
-
OBJECT_NAME,
|
|
42
|
-
...KEYS,
|
|
43
|
-
);
|
|
39
|
+
const [x, y] = getNumbersFromTable(vector, OBJECT_NAME, ...KEYS);
|
|
44
40
|
|
|
45
41
|
if (x === undefined) {
|
|
46
42
|
error(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A collection of the four sprites necessary in order to render a charge bar.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* This is used in the `newChargeBarSprites` and related helper functions.
|
|
5
5
|
*/
|
|
6
6
|
export interface ChargeBarSprites {
|
|
7
7
|
back: Sprite;
|
package/src/interfaces/Corner.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { CornerType } from "../enums/CornerType";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* An interface representing a corner in the room.
|
|
5
|
+
*
|
|
6
|
+
* This is used by the `getRoomShapeCorners` helper function.
|
|
7
|
+
*/
|
|
3
8
|
export interface Corner {
|
|
4
9
|
readonly type: CornerType;
|
|
5
10
|
readonly position: Readonly<Vector>;
|
|
@@ -27,6 +27,9 @@ export type CustomStageTSConfig = Readonly<{
|
|
|
27
27
|
* Make sure the chosen prefix does not conflict with any other mods. You can find a list of
|
|
28
28
|
* registered room variant prefixes on the IsaacScript website:
|
|
29
29
|
* https://isaacscript.github.io/main/custom-stages
|
|
30
|
+
*
|
|
31
|
+
* @minimum 101
|
|
32
|
+
* @maximum 109
|
|
30
33
|
*/
|
|
31
34
|
roomVariantPrefix: number;
|
|
32
35
|
|
|
@@ -39,6 +42,9 @@ export type CustomStageTSConfig = Readonly<{
|
|
|
39
42
|
* method.)
|
|
40
43
|
*
|
|
41
44
|
* If not specified, `LevelStage.BASEMENT_2` (2) will be used.
|
|
45
|
+
*
|
|
46
|
+
* @minimum 2
|
|
47
|
+
* @maximum 13
|
|
42
48
|
*/
|
|
43
49
|
baseStage?: number;
|
|
44
50
|
|
|
@@ -48,6 +54,9 @@ export type CustomStageTSConfig = Readonly<{
|
|
|
48
54
|
* generation algorithm.
|
|
49
55
|
*
|
|
50
56
|
* If not specified, `StageType.ORIGINAL` (0) will be used.
|
|
57
|
+
*
|
|
58
|
+
* @minimum 0
|
|
59
|
+
* @maximum 5
|
|
51
60
|
*/
|
|
52
61
|
baseStageType?: number;
|
|
53
62
|
|
|
@@ -331,9 +340,28 @@ export type CustomStageTSConfig = Readonly<{
|
|
|
331
340
|
* `versusScreenBackgroundColors.ts`.
|
|
332
341
|
*/
|
|
333
342
|
backgroundColor?: Readonly<{
|
|
343
|
+
/**
|
|
344
|
+
* @minimum 0
|
|
345
|
+
* @maximum 1
|
|
346
|
+
*/
|
|
334
347
|
r: number;
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* @minimum 0
|
|
351
|
+
* @maximum 1
|
|
352
|
+
*/
|
|
335
353
|
g: number;
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* @minimum 0
|
|
357
|
+
* @maximum 1
|
|
358
|
+
*/
|
|
336
359
|
b: number;
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* @minimum 0
|
|
363
|
+
* @maximum 1
|
|
364
|
+
*/
|
|
337
365
|
a: number;
|
|
338
366
|
}>;
|
|
339
367
|
|
|
@@ -346,9 +374,28 @@ export type CustomStageTSConfig = Readonly<{
|
|
|
346
374
|
* `versusScreenDirtSpotColors.ts`.
|
|
347
375
|
*/
|
|
348
376
|
dirtSpotColor?: Readonly<{
|
|
377
|
+
/**
|
|
378
|
+
* @minimum 0
|
|
379
|
+
* @maximum 1
|
|
380
|
+
*/
|
|
349
381
|
r: number;
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* @minimum 0
|
|
385
|
+
* @maximum 1
|
|
386
|
+
*/
|
|
350
387
|
g: number;
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* @minimum 0
|
|
391
|
+
* @maximum 1
|
|
392
|
+
*/
|
|
351
393
|
b: number;
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* @minimum 0
|
|
397
|
+
* @maximum 1
|
|
398
|
+
*/
|
|
352
399
|
a: number;
|
|
353
400
|
}>;
|
|
354
401
|
}>;
|
|
@@ -376,9 +423,28 @@ export type CustomStageShadow = Readonly<{
|
|
|
376
423
|
* to 75% faded black).
|
|
377
424
|
*/
|
|
378
425
|
color?: Readonly<{
|
|
426
|
+
/**
|
|
427
|
+
* @minimum 0
|
|
428
|
+
* @maximum 1
|
|
429
|
+
*/
|
|
379
430
|
r: number;
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* @minimum 0
|
|
434
|
+
* @maximum 1
|
|
435
|
+
*/
|
|
380
436
|
g: number;
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* @minimum 0
|
|
440
|
+
* @maximum 1
|
|
441
|
+
*/
|
|
381
442
|
b: number;
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* @minimum 0
|
|
446
|
+
* @maximum 1
|
|
447
|
+
*/
|
|
382
448
|
a: number;
|
|
383
449
|
}>;
|
|
384
450
|
}>;
|
|
@@ -3,6 +3,12 @@ import {
|
|
|
3
3
|
GridEntityType,
|
|
4
4
|
} from "isaac-typescript-definitions";
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* This is meta-data that describes a custom grid entity.
|
|
8
|
+
*
|
|
9
|
+
* (One of the extra features that the standard library offers is the ability to spawn custom grid
|
|
10
|
+
* entities with the `spawnCustomGridEntity` helper function.)
|
|
11
|
+
*/
|
|
6
12
|
export interface GridEntityCustomData {
|
|
7
13
|
/**
|
|
8
14
|
* This is not a real `GridEntityType`; rather it is an arbitrary integer selected by end-user
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* The standard library has the feature to deploy a new room on-the-fly with the `deployJSONRoom`
|
|
3
|
+
* helper function. It requires a `JSONRoomsFile` as an argument, which is simply an XML file
|
|
4
|
+
* converted to JSON. (You create XML room files using the Basement Renovator program.)
|
|
5
5
|
*
|
|
6
6
|
* You can convert your XML files using the following command:
|
|
7
7
|
*
|
|
8
8
|
* ```sh
|
|
9
9
|
* npx convert-xml-to-json foo.xml foo.json
|
|
10
10
|
* ```
|
|
11
|
+
*
|
|
12
|
+
* Note that the custom stages feature of the standard library uses real XML/STB files, not JSON
|
|
13
|
+
* rooms, so you would only need to do this if you are using the `deployJSONRoom` command
|
|
14
|
+
* specifically.
|
|
11
15
|
*/
|
|
12
16
|
export interface JSONRoomsFile {
|
|
13
17
|
rooms: JSONRooms;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HeartSubType } from "isaac-typescript-definitions";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** This is used by the `getPlayerHealth` and `setPlayerHealth` helper functions. */
|
|
4
4
|
export interface PlayerHealth {
|
|
5
5
|
maxHearts: int;
|
|
6
6
|
hearts: int;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PocketItemSlot } from "isaac-typescript-definitions";
|
|
2
2
|
import { PocketItemType } from "../enums/PocketItemType";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** This is used by the `getPocketItems` and related helper functions. */
|
|
5
5
|
export interface PocketItemDescription {
|
|
6
6
|
slot: PocketItemSlot;
|
|
7
7
|
type: PocketItemType;
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
StageType,
|
|
6
6
|
} from "isaac-typescript-definitions";
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/** This is used by the room history feature of the standard library. */
|
|
9
9
|
export interface RoomDescription {
|
|
10
10
|
stage: LevelStage;
|
|
11
11
|
stageType: StageType;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { TearFlag } from "isaac-typescript-definitions";
|
|
2
2
|
import { StatType } from "../enums/StatType";
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This is an interface mapping a stat type to the data type. For example, `StatType.DAMAGE` is a
|
|
6
|
+
* `float` type.
|
|
7
|
+
*/
|
|
4
8
|
export interface StatTypeType {
|
|
5
9
|
[StatType.DAMAGE]: float;
|
|
6
10
|
[StatType.FIRE_DELAY]: float;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TrinketType } from "isaac-typescript-definitions";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** This is used by the `temporarilyRemoveTrinkets` and related helper functions. */
|
|
4
4
|
export interface TrinketSituation {
|
|
5
5
|
trinketTypeRemoved: TrinketType;
|
|
6
6
|
trinketType1: TrinketType;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Keyboard } from "isaac-typescript-definitions";
|
|
2
|
+
|
|
3
|
+
/** Maps each keyboard enum member to its corresponding lowercase and uppercase characters. */
|
|
4
|
+
export const KEYBOARD_TO_STRING: ReadonlyMap<
|
|
5
|
+
Keyboard,
|
|
6
|
+
readonly [lowercaseCharacter: string, uppercaseCharacter: string]
|
|
7
|
+
> = new Map([
|
|
8
|
+
[Keyboard.SPACE, [" ", " "]], // 32
|
|
9
|
+
[Keyboard.APOSTROPHE, ["'", '"']], // 39
|
|
10
|
+
[Keyboard.COMMA, [",", "<"]], // 44
|
|
11
|
+
[Keyboard.MINUS, ["-", "_"]], // 45
|
|
12
|
+
[Keyboard.PERIOD, [".", ">"]], // 46
|
|
13
|
+
[Keyboard.SLASH, ["/", "?"]], // 47
|
|
14
|
+
|
|
15
|
+
[Keyboard.ZERO, ["0", ")"]], // 48
|
|
16
|
+
[Keyboard.ONE, ["1", "!"]], // 49
|
|
17
|
+
[Keyboard.TWO, ["2", "@"]], // 50
|
|
18
|
+
[Keyboard.THREE, ["3", "#"]], // 51
|
|
19
|
+
[Keyboard.FOUR, ["4", "$"]], // 52
|
|
20
|
+
[Keyboard.FIVE, ["5", "%"]], // 53
|
|
21
|
+
[Keyboard.SIX, ["6", "^"]], // 54
|
|
22
|
+
[Keyboard.SEVEN, ["7", "&"]], // 55
|
|
23
|
+
[Keyboard.EIGHT, ["8", "*"]], // 56
|
|
24
|
+
[Keyboard.NINE, ["9", "("]], // 57
|
|
25
|
+
|
|
26
|
+
[Keyboard.SEMICOLON, [";", ":"]], // 59
|
|
27
|
+
[Keyboard.EQUAL, ["=", "+"]], // 61
|
|
28
|
+
|
|
29
|
+
[Keyboard.A, ["a", "A"]], // 65
|
|
30
|
+
[Keyboard.B, ["b", "B"]], // 66
|
|
31
|
+
[Keyboard.C, ["c", "C"]], // 67
|
|
32
|
+
[Keyboard.D, ["d", "D"]], // 68
|
|
33
|
+
[Keyboard.E, ["e", "E"]], // 69
|
|
34
|
+
[Keyboard.F, ["f", "F"]], // 70
|
|
35
|
+
[Keyboard.G, ["g", "G"]], // 71
|
|
36
|
+
[Keyboard.H, ["h", "H"]], // 72
|
|
37
|
+
[Keyboard.I, ["i", "I"]], // 73
|
|
38
|
+
[Keyboard.J, ["j", "J"]], // 74
|
|
39
|
+
[Keyboard.K, ["k", "K"]], // 75
|
|
40
|
+
[Keyboard.L, ["l", "L"]], // 76
|
|
41
|
+
[Keyboard.M, ["m", "M"]], // 77
|
|
42
|
+
[Keyboard.N, ["n", "N"]], // 78
|
|
43
|
+
[Keyboard.O, ["o", "O"]], // 79
|
|
44
|
+
[Keyboard.P, ["p", "P"]], // 80
|
|
45
|
+
[Keyboard.Q, ["q", "Q"]], // 81
|
|
46
|
+
[Keyboard.R, ["r", "R"]], // 82
|
|
47
|
+
[Keyboard.S, ["s", "S"]], // 83
|
|
48
|
+
[Keyboard.T, ["t", "T"]], // 84
|
|
49
|
+
[Keyboard.U, ["u", "U"]], // 85
|
|
50
|
+
[Keyboard.V, ["v", "V"]], // 86
|
|
51
|
+
[Keyboard.W, ["w", "W"]], // 87
|
|
52
|
+
[Keyboard.X, ["x", "X"]], // 88
|
|
53
|
+
[Keyboard.Y, ["y", "Y"]], // 89
|
|
54
|
+
[Keyboard.Z, ["z", "Z"]], // 90
|
|
55
|
+
|
|
56
|
+
[Keyboard.KP_0, ["0", "0"]], // 320
|
|
57
|
+
[Keyboard.KP_1, ["1", "1"]], // 321
|
|
58
|
+
[Keyboard.KP_2, ["2", "2"]], // 322
|
|
59
|
+
[Keyboard.KP_3, ["3", "3"]], // 323
|
|
60
|
+
[Keyboard.KP_4, ["4", "4"]], // 324
|
|
61
|
+
[Keyboard.KP_5, ["5", "5"]], // 325
|
|
62
|
+
[Keyboard.KP_6, ["6", "6"]], // 326
|
|
63
|
+
[Keyboard.KP_7, ["7", "7"]], // 327
|
|
64
|
+
[Keyboard.KP_8, ["8", "8"]], // 328
|
|
65
|
+
[Keyboard.KP_9, ["9", "9"]], // 329
|
|
66
|
+
|
|
67
|
+
[Keyboard.KP_DECIMAL, [".", "."]], // 330
|
|
68
|
+
[Keyboard.KP_DIVIDE, ["/", "/"]], // 331
|
|
69
|
+
[Keyboard.KP_MULTIPLY, ["*", "*"]], // 332
|
|
70
|
+
[Keyboard.KP_SUBTRACT, ["-", "-"]], // 333
|
|
71
|
+
[Keyboard.KP_ADD, ["+", "+"]], // 334
|
|
72
|
+
|
|
73
|
+
[Keyboard.LEFT_BRACKET, ["[", "{"]], // 91
|
|
74
|
+
[Keyboard.BACKSLASH, ["\\", "|"]], // 92
|
|
75
|
+
[Keyboard.RIGHT_BRACKET, ["]", "}"]], // 93
|
|
76
|
+
[Keyboard.GRAVE_ACCENT, ["`", "~"]], // 96
|
|
77
|
+
]);
|
package/src/types/AnyEntity.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `CollectibleIndex` is a specific type of string
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* `CollectibleIndex` is a specific type of string that represents a unique identifier for a
|
|
3
|
+
* collectible. Mods can signify that data structures handle collectibles by using this type.
|
|
4
|
+
*
|
|
5
|
+
* For more information, see the documentation for the `getCollectibleIndex` function.
|
|
5
6
|
*
|
|
6
7
|
* For example:
|
|
7
8
|
*
|
package/src/types/Immutable.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Immutable is a type that will make the given array/map/set/object recursively read-only.
|
|
2
|
+
* Immutable is a utility type that will make the given array/map/set/object recursively read-only.
|
|
3
|
+
*
|
|
4
|
+
* You can use this type to easily build safe data structures.
|
|
3
5
|
*
|
|
4
6
|
* From: https://stackoverflow.com/questions/41879327/deepreadonly-object-typescript
|
|
5
7
|
*/
|
package/src/types/PickupIndex.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `PickupIndex` is a specific type of
|
|
3
|
-
*
|
|
2
|
+
* `PickupIndex` is a specific type of number that represents a unique identifier for a pickup. Mods
|
|
3
|
+
* can signify that data structures handle collectibles by using this type.
|
|
4
|
+
*
|
|
5
|
+
* For more information, see the documentation for the `getPickupIndex` function.
|
|
4
6
|
*
|
|
5
7
|
* For example:
|
|
6
8
|
*
|
package/src/types/PlayerIndex.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `PlayerIndex` is a specific type of number that represents a unique identifier for a player. Mods
|
|
3
|
-
* can signify that data structures handle `EntityPlayer` by using this type.
|
|
4
|
-
*
|
|
3
|
+
* can signify that data structures handle `EntityPlayer` by using this type.
|
|
4
|
+
*
|
|
5
|
+
* For more information, see the documentation for the `getPlayerIndex` function.
|
|
5
6
|
*
|
|
6
7
|
* For example:
|
|
7
8
|
*
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is a type representing an Isaac API class like `Color` or `RNG` that has been written to the
|
|
3
|
+
* "save#.dat" file. It is used by the save data manager when reading and writing to that file.
|
|
4
|
+
*
|
|
5
|
+
* For the list of supported classes, see the `CopyableIsaacAPIClassType` enum.
|
|
6
|
+
*/
|
|
1
7
|
export type SerializedIsaacAPIClass = LuaMap<string, unknown> & {
|
|
2
8
|
readonly __serializedIsaacAPIClassBrand: symbol;
|
|
3
9
|
};
|
package/src/types/TSTLClass.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is a type representing a user-created class from TypeScript code.
|
|
3
|
+
*
|
|
4
|
+
* This type is used by the save data manager to when copying, serializing, and deserializing.
|
|
5
|
+
*/
|
|
1
6
|
export type TSTLClass = LuaMap<AnyNotNil, unknown> & {
|
|
2
7
|
readonly __tstlClassBrand: symbol;
|
|
3
8
|
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { LevelStage, StageType } from "isaac-typescript-definitions";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This is the type that you need to specify when using the `spawnCustomTrapdoor` helper function.
|
|
5
|
+
*/
|
|
3
6
|
export type TrapdoorDestination =
|
|
4
7
|
| [stage: LevelStage, stageType: StageType]
|
|
5
8
|
| [customStageName: string, floorNum: int];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SaveDataKey.d.ts","sourceRoot":"","sources":["../../../src/enums/private/SaveDataKey.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;CACd"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { CacheFlag, CollectibleType } from "isaac-typescript-definitions";
|
|
2
|
-
export declare function collectibleHasCacheFlag(collectibleType: CollectibleType, cacheFlag: CacheFlag): boolean;
|
|
3
|
-
/**
|
|
4
|
-
* Returns a set containing every collectible type with the given cache flag, including modded
|
|
5
|
-
* collectibles.
|
|
6
|
-
*/
|
|
7
|
-
export declare function getCollectiblesForCacheFlag(cacheFlag: CacheFlag): Set<CollectibleType>;
|
|
8
|
-
/**
|
|
9
|
-
* Returns an array containing every collectible type that the player has that matches the provided
|
|
10
|
-
* CacheFlag.
|
|
11
|
-
*
|
|
12
|
-
* For example, if the cache flag is `CacheFlag.FLYING`, and the player has one Lord of the Pit and
|
|
13
|
-
* two Dead Doves, then this function would return:
|
|
14
|
-
*
|
|
15
|
-
* ```ts
|
|
16
|
-
* [
|
|
17
|
-
* CollectibleType.LORD_OF_THE_PIT,
|
|
18
|
-
* CollectibleType.DEAD_DOVE,
|
|
19
|
-
* CollectibleType.DEAD_DOVE,
|
|
20
|
-
* ]
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export declare function getPlayerCollectiblesForCacheFlag(player: EntityPlayer, cacheFlag: CacheFlag): CollectibleType[];
|
|
24
|
-
//# sourceMappingURL=collectibleCacheFlag.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collectibleCacheFlag.d.ts","sourceRoot":"","sources":["../../src/functions/collectibleCacheFlag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AA2B1E,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,GACnB,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,GACnB,GAAG,CAAC,eAAe,CAAC,CAYtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,SAAS,GACnB,eAAe,EAAE,CAYnB"}
|