isaac-typescript-definitions
Version:
TypeScript definitions for The Binding of Isaac: Repentance.
351 lines (303 loc) • 12.8 kB
TypeScript
import type { BackdropType } from "../../enums/BackdropType";
import type { BrokenWatchState } from "../../enums/BrokenWatchState";
import type { BossID } from "../../enums/collections/roomSubTypes";
import type { CollectibleType } from "../../enums/collections/subTypes";
import type { DoorSlot } from "../../enums/DoorSlot";
import type { GridCollisionClass } from "../../enums/GridCollisionClass";
import type { GridEntityType } from "../../enums/GridEntityType";
import type { GridPath } from "../../enums/GridPath";
import type { LineCheckMode } from "../../enums/LineCheckMode";
import type { RenderMode } from "../../enums/RenderMode";
import type { RoomShape } from "../../enums/RoomShape";
import type { RoomType } from "../../enums/RoomType";
declare global {
interface Room extends IsaacAPIClass {
/**
* @param position1
* @param position2
* @param lineCheckMode
* @param gridPathThreshold Default is 0.
* @param ignoreWalls Default is false.
* @param ignoreCrushable Default is false.
* @returns 2 values:
* - clear - True if there are no obstructions between `position` and `position2`, false
* otherwise.
* - collidePos - The first hit position from `position1` to `position2`. Returns `position2` if
* the line didn't hit anything.
*/
CheckLine: (
position1: Vector,
position2: Vector,
lineCheckMode: LineCheckMode,
gridPathThreshold?: int | GridPath,
ignoreWalls?: boolean,
ignoreCrushable?: boolean,
) => LuaMultiReturn<[clear: boolean, collidePos: Vector]>;
DamageGrid: (index: int, damage: int) => boolean;
DestroyGrid: (index: int, immediate: boolean) => boolean;
EmitBloodFromWalls: (duration: int, count: int) => void;
/**
* @param position
* @param initialStep Default is 0.
* @param avoidActiveEntities Default is false.
* @param allowPits Default is false.
*/
FindFreePickupSpawnPosition: (
position: Vector,
initialStep?: float,
avoidActiveEntities?: boolean,
allowPits?: boolean,
) => Vector;
FindFreeTilePosition: (
position: Vector,
distanceThreshold: float,
) => Vector;
GetAliveBossesCount: () => int;
GetAliveEnemiesCount: () => int;
GetAwardSeed: () => Seed;
GetBackdropType: () => BackdropType;
/**
* Returns 0 if this is not a boss room.
*
* @deprecated It is recommended to never use `Room.GetBossID` directly and instead use the
* `getBossID` helper function from `isaacscript-common`, since it has a saner
* return type and correctly handles Dogma, The Beast, and Ultra Greedier.
*/
GetBossID: () => BossID | 0;
GetBottomRightPos: () => Vector;
GetBrokenWatchState: () => int;
GetCenterPos: () => Vector;
GetClampedGridIndex: (position: Vector) => int;
GetClampedPosition: (position: Vector, margin: float) => Vector;
GetDecorationSeed: () => Seed;
GetDeliriumDistance: () => int;
GetDevilRoomChance: () => float;
GetDoor: (doorSlot: DoorSlot) => GridEntityDoor | undefined;
GetDoorSlotPosition: (doorSlot: DoorSlot) => Vector;
GetDungeonRockIdx: () => int;
/**
* Returns the total amount of HP lost by all enemies in the room between the last game frame
* and this one.
*
* This is used by items that charge on damage inflicted (e.g. Berserk!).
*/
GetEnemyDamageInflicted: () => int;
/** @deprecated Use the `Isaac.GetRoomEntities` method instead. */
GetEntities: () => EntityList;
GetFrameCount: () => int;
GetGridCollision: (gridIndex: int) => GridCollisionClass;
GetGridCollisionAtPos: (position: Vector) => GridCollisionClass;
GetGridEntity: (gridIndex: int) => GridEntity | undefined;
GetGridEntityFromPos: (position: Vector) => GridEntity | undefined;
GetGridHeight: () => int;
GetGridIndex: (position: Vector) => int;
GetGridPath: (index: int) => int;
GetGridPathFromPos: (position: Vector) => int;
GetGridPosition: (gridIndex: int) => Vector;
GetGridSize: () => int;
/** Note that if you call this in the main menu, the game will sometimes crash. */
GetGridWidth: () => int;
GetLaserTarget: (position: Vector, direction: Vector) => Vector;
/**
* Usually returns 1, unless the lava is in the process of being cooled down by Flush or other
* room flooding effects, in which case this will gradually decrease down to 0.
*/
GetLavaIntensity: () => float;
GetLightingAlpha: () => float;
// GetLRoomAreaDesc is not implemented.
// GetLRoomTileDesc is not implemented.
GetRandomPosition: (margin: float) => Vector;
GetRandomTileIndex: (seed: Seed) => int;
GetRedHeartDamage: () => boolean;
/**
* Returns the current render mode, which can be used to render entities differently depending
* on the context (i.e. custom water reflections).
*/
GetRenderMode: () => RenderMode;
GetRenderScrollOffset: () => Readonly<Vector>;
GetRenderSurfaceTopLeft: () => Readonly<Vector>;
GetRoomConfigStage: () => int;
GetRoomShape: () => RoomShape;
/** Returns 0 if this is not a Double Trouble boss room. */
GetSecondBossID: () => BossID | 0;
/**
* @param seed
* @param noDecrease If true, the collectible will not be removed from the pool that it came
* from. Default is false.
*/
GetSeededCollectible: (seed: Seed, noDecrease?: boolean) => CollectibleType;
GetShopLevel: () => int;
GetSpawnSeed: () => Seed;
GetTintedRockIdx: () => int;
GetTopLeftPos: () => Vector;
GetType: () => RoomType;
/** Returns a vector corresponding to any water current in the room. */
GetWaterCurrent: () => Vector;
/** Returns true if the player is inside the abandoned mineshaft. */
HasCurseMist: () => boolean;
/** Returns true if the room contains lava pits. */
HasLava: () => boolean;
HasSlowDown: () => boolean;
HasTriggerPressurePlates: () => boolean;
HasWater: () => boolean;
HasWaterPits: () => boolean;
/** Causes chest previews from Guppy's Eye to be updated on the next frame. */
InvalidatePickupVision: () => void;
IsAmbushActive: () => boolean;
IsAmbushDone: () => boolean;
IsClear: () => boolean;
IsCurrentRoomLastBoss: () => boolean;
/**
* Returns whether the supplied door slot is valid for the current room. This is contingent on
* the room definition in the STB/XML file. (Basement Renovator displays valid doors as brown
* and invalid doors as white.) The value returned by this method is independent of whether a
* door currently exists at the given slot.
*
* For example, in the starting room of a floor (i.e. a 1x1 room), this method would return true
* for `DoorSlot.LEFT_0`, `DoorSlot.UP_0`, `DoorSlot.RIGHT_0`, and `DoorSlot.DOWN_0`, and false
* for all other values (regardless of what doors happen to exist).
*
* For example, there is a relatively common 1x1 room in the Caves with 4 Boom Flies and a
* narrow bridge from the top door to the bottom door. In this room, the doors on the left side
* and the right side are disabled. In this room, this method would return true for
* `DoorSlot.UP0` and `DoorSlot.DOWN0`, and false for all other values (regardless of what doors
* happen to exist).
*/
IsDoorSlotAllowed: (doorSlot: DoorSlot) => boolean;
IsFirstEnemyDead: () => boolean;
IsFirstVisit: () => boolean;
IsInitialized: () => boolean;
IsLShapedRoom: () => boolean;
/** Returns true if the player is inside the mirror dimension. */
IsMirrorWorld: () => boolean;
IsPositionInRoom: (position: Vector, margin: float) => boolean;
IsSacrificeDone: () => boolean;
KeepDoorsClosed: () => void;
MamaMegaExplosion: (position: Vector) => void;
PlayMusic: () => void;
RemoveDoor: (doorSlot: DoorSlot) => void;
RemoveGridEntity: (
gridIndex: int,
pathTrail: int,
keepDecoration: boolean,
) => void;
Render: () => void;
RespawnEnemies: () => void;
ScreenWrapPosition: (position: Vector, margin: float) => Vector;
SetAmbushDone: (value: boolean) => void;
SetBrokenWatchState: (brokenWatchState: BrokenWatchState) => void;
SetCardAgainstHumanity: () => void;
SetClear: (clear: boolean) => void;
SetFirstEnemyDead: (value: boolean) => void;
SetFloorColor: (floorColor: Color) => void;
SetGridPath: (index: int, value: int) => boolean;
SetRedHeartDamage: () => void;
SetSacrificeDone: (done: boolean) => void;
SetSlowDown: (duration: int) => void;
SetWallColor: (wallColor: Color) => void;
ShopReshuffle: (
keepCollectibleIdx: boolean,
reselectSaleItem: boolean,
) => void;
ShopRestockFull: () => void;
ShopRestockPartial: () => void;
SpawnClearAward: () => void;
SpawnGridEntity: (
gridIndex: int,
gridEntityType: GridEntityType,
variant: int,
seed: Seed,
varData: int,
) => boolean;
/** Stops any rain effects in the room. */
StopRain: () => void;
/**
* Triggers all room clear effects (e.g. Sack of Pennies dropping coins). Does not actually
* clear the room.
*
* @param silent Default is false. Set to true to mute the door opening sounds.
*/
TriggerClear: (silent?: boolean) => void;
/**
* This function was updated to take two arguments in Repentance. The reason for this is that
* bridges can be spike bridges, so the specifying the type of rock is necessary.
*/
TryMakeBridge: (pit: GridEntity, rock: GridEntity) => boolean;
TryPlaceLadder: (
playerPos: Vector,
playerVelocity: Vector,
ladder: Entity,
) => void;
/**
* Attempts to spawn a door to the Blue Womb. This usually does nothing outside of the Mom's
* Heart's boss room unless `force` is set to true.
*
* @param firstTime Default is true.
* @param ignoreTime Default is false.
* @param force Default is false.
*/
TrySpawnBlueWombDoor: (
firstTime?: boolean,
ignoreTime?: boolean,
force?: boolean,
) => boolean;
/**
* Attempts to spawn a door to the Boss Rush. This usually does nothing outside of the Mom Boss
* Room unless `force` is set to true.
*
* @param ignoreTime Default is false.
* @param force Default is false.
*/
TrySpawnBossRushDoor: (ignoreTime?: boolean, force?: boolean) => boolean;
/**
* Attempts to spawn a door to the devil or angel room. This usually does nothing inside of
* non-boss rooms unless `force` is set to true.
*
* @param animate Default is false.
* @param force Default is false.
*/
TrySpawnDevilRoomDoor: (animate?: boolean, force?: boolean) => boolean;
/**
* Attempts to spawn a door to Mega Satan. This usually does nothing outside of the starting
* room of the Chest / Dark Room unless `force` is set to true.
*
* @param force Default is false.
*/
TrySpawnMegaSatanRoomDoor: (force?: boolean) => boolean;
/**
* Attempts to spawn a door to the Downpour, Mines, or Mausoleum "secret exit", depending on the
* current floor. This usually does nothing outside of boss rooms unless `force` is set to true.
*
* Note that if "force" is set to true and all of the available doors in the room are taken,
* then this method may spawn the door on a slot outside the normal bounds of the room. For this
* reason, it is recommended to check for available doors before invoking this method.
*
* @param animate Default is false.
* @param force Default is false.
*/
TrySpawnSecretExit: (animate?: boolean, force?: boolean) => void;
/**
* Attempts to spawn a trapdoor to the Member Card shop within the current room. This usually
* does nothing outside of shops (or if the player does not have a Member Card) unless `force`
* is set to true.
*
* @param force Default is false.
*/
TrySpawnSecretShop: (force?: boolean) => void;
/**
* Attempts to spawn a door to the Mirror Dimension in Downpour or the abandoned mineshaft in
* the Mines.
*/
TrySpawnSpecialQuestDoor: () => void;
/**
* Attempts to spawn a door to a room containing a Void portal. This usually does nothing
* outside of Hush's boss room unless `force` is set to true.
*
* @param force Default is false.
*/
TrySpawnTheVoidDoor: (force?: boolean) => boolean;
TurnGold: () => void;
Update: () => void;
WorldToScreenPosition: (worldPos: Vector) => Vector;
}
}