isaac-lua-definitions/isaac-typescript-definitions/typings/Room.d.ts

159 lines
5.5 KiB
TypeScript

declare interface Room {
/**
* @param position1
* @param position2
* @param lineCheckMode
* @param gridPathThreshold Default is 0.
* @param ignoreWalls Default is false.
* @param ignoreCrushable Default is false.
* @returns 2 values:
* 1) boolean: true if there are no obstructions between Pos1 and Pos2, false otherwise
* 2) Vector: first hit position from pos1 to pos2 (returns pos2 if the line didn't hit anything)
*/
CheckLine(
position1: Vector,
position2: Vector,
lineCheckMode: LineCheckMode,
gridPathThreshold?: int,
ignoreWalls?: boolean,
ignoreCrushable?: boolean,
): LuaMultiReturn<[boolean, 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(): int;
GetBackdropType(): BackdropType;
GetBossID(): BossIDs | int;
GetBottomRightPos(): Vector;
GetBrokenWatchState(): int;
GetCenterPos(): Vector;
GetClampedGridIndex(position: Vector): int;
GetClampedPosition(position: Vector, margin: float): Vector;
GetDecorationSeed(): int;
GetDeliriumDistance(): int;
GetDevilRoomChance(): float;
GetDoor(doorSlot: DoorSlot): GridEntityDoor | undefined;
GetDoorSlotPosition(doorSlot: DoorSlot): Vector;
GetDungeonRockIdx(): int;
/**
* Using this method can cause the game to crash, so it is forbidden.
* Use "Isaac.GetRoomEntities()" instead.
*/
GetEntities(fakeArg: never): 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;
GetLightingAlpha(): float;
// GetLRoomAreaDesc(): LRoomAreaDesc; // LRoomAreaDesc is not implemented
// GetLRoomTileDesc(): LRoomTileDesc; // LRoomTileDesc is not implemented
GetNextShockwaveId(): int;
GetRandomPosition(margin: float): Vector;
GetRandomTileIndex(seed: int): int;
GetRedHeartDamage(): boolean;
GetRenderScrollOffset(): Readonly<Vector>;
GetRenderSurfaceTopLeft(): Readonly<Vector>;
GetRoomConfigStage(): int;
GetRoomShape(): RoomShape;
GetSecondBossID(): BossIDs | int;
GetSeededCollectible(seed: int): CollectibleType | int;
GetShopLevel(): int;
GetSpawnSeed(): int;
GetTintedRockIdx(): int;
GetTopLeftPos(): Vector;
GetType(): RoomType;
HasSlowDown(): boolean;
HasTriggerPressurePlates(): boolean;
HasWater(): boolean;
HasWaterPits(): boolean;
IsAmbushActive(): boolean;
IsAmbushDone(): boolean;
IsClear(): boolean;
IsCurrentRoomLastBoss(): boolean;
IsDoorSlotAllowed(doorSlot: DoorSlot): boolean;
IsFirstEnemyDead(): boolean;
IsFirstVisit(): boolean;
IsInitialized(): boolean;
IsLShapedRoom(): boolean;
IsPositionInRoom(position: Vector, margin: float): boolean;
IsSacrificeDone(): boolean;
KeepDoorsClosed(): void;
MamaMegaExplossion(): 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(state: int): 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;
SetShockwaveParam(shockwaveID: int, shockwaveParams: ShockwaveParams): 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 | int,
variant: int,
seed: int,
varData: int,
): boolean;
/**
* 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;
TrySpawnBlueWombDoor(firstTime: boolean, ignoreTime: boolean): boolean;
TrySpawnBossRushDoor(ignoreTime: boolean): boolean;
TrySpawnDevilRoomDoor(animate: boolean): boolean;
TrySpawnMegaSatanRoomDoor(): boolean;
TrySpawnTheVoidDoor(): boolean;
TurnGold(): void;
Update(): void;
WorldToScreenPosition(worldPos: Vector): Vector;
}