Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0cfe6e5
feat: new Entity definitions
Syntax-Sculptor Nov 1, 2025
b29eaab
feat: EntityEffect definitions
Syntax-Sculptor Nov 1, 2025
95b7c23
feat: updated EntityFamiliar definitions
Syntax-Sculptor Nov 1, 2025
7f9d127
feat: EntityKnife definitions
Syntax-Sculptor Nov 1, 2025
0fa4da4
fix: lint
Syntax-Sculptor Nov 1, 2025
88649c4
feat: EntityLaser definitions
Syntax-Sculptor Nov 1, 2025
60229bb
feat: EntityNPC definitions
Syntax-Sculptor Nov 1, 2025
1511503
feat: EntityPickup definitions
Syntax-Sculptor Nov 1, 2025
402071b
feat: EntityDesc definitions
Syntax-Sculptor Nov 1, 2025
313ddc5
feat: EntityPlayer defs
Syntax-Sculptor Nov 1, 2025
0ac8b1f
feat: EntitySlot def updates
Syntax-Sculptor Nov 1, 2025
c6ad155
feat: EntityTear defs
Syntax-Sculptor Nov 1, 2025
c20b6ba
fix: lint
Syntax-Sculptor Nov 1, 2025
ec339bb
feat: GridEntity definitions
Syntax-Sculptor Nov 1, 2025
c534510
fix: GridEntityRock.SpawnDrops def
Syntax-Sculptor Nov 1, 2025
24419cc
feat: HUDMessage
Syntax-Sculptor Nov 1, 2025
6c8aceb
fix: missing Minimap defs
Syntax-Sculptor Nov 1, 2025
4d0372d
feat: PlayerHUD definitions
Syntax-Sculptor Nov 1, 2025
b6466b9
feat: ProceduralEffect definitions
Syntax-Sculptor Nov 1, 2025
9bea914
feat: room definitions
Syntax-Sculptor Nov 2, 2025
4c2c013
feat: new RoomConfig defs
Syntax-Sculptor Nov 2, 2025
d87ae38
fix: lint
Syntax-Sculptor Nov 2, 2025
a3e57ee
feat: RoomConfigSet defs
Syntax-Sculptor Nov 2, 2025
13f464e
feat: new RoomConfigStage type defs
Syntax-Sculptor Nov 2, 2025
aed2e63
feat: new RoomDescriptor definitions
Syntax-Sculptor Nov 2, 2025
cb69bd9
fix: Ambush GetNextWave definition
Syntax-Sculptor Nov 2, 2025
e5ea9cc
fix: fixed Sprite definitions
Syntax-Sculptor Nov 2, 2025
98d7044
feat: new Animationframe definitions
Syntax-Sculptor Nov 2, 2025
2b8e81e
fix: accidental GetBackkdrop removal
Syntax-Sculptor Nov 10, 2025
b33bce6
chore: fixed beam definitions
Syntax-Sculptor Nov 10, 2025
b3c5e55
fix: lint
Syntax-Sculptor Nov 11, 2025
3ffa7d7
fix: missing BlendFactor REPENTOGON comment
Syntax-Sculptor Nov 11, 2025
c6b055f
feat: fixed BlendMode definitions
Syntax-Sculptor Nov 11, 2025
362bec0
fix: BossPool definitions
Syntax-Sculptor Nov 11, 2025
3fe958f
feat: new Camera definitions
Syntax-Sculptor Nov 11, 2025
885cf26
fix: capsule definitions
Syntax-Sculptor Nov 11, 2025
489fcf3
fix: changed BossDeathSeed type from int to Seed
Syntax-Sculptor Nov 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* This enum is for REPENTOGON, an exe-hack which expands the modding API.
*
* @see https://repentogon.com/
*/
export enum BlendEquation {
ADD = 0,
SUBTRACT = 1,
REVERSE_SUBTRACT = 2,
MIN = 3,
MAX = 4,
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* This enum is for REPENTOGON, an exe-hack which expands the modding API.
*
* @see https://repentogon.com/
*/
export enum BlendFactor {
ZERO = 0,
ONE = 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* This enum is for REPENTOGON, an exe-hack which expands the modding API.
*
* @see https://repentogon.com/
*/
export enum SplitTearType {
GENERIC = 0,
QUAD = 1,
PARASITE = 2,
BONE = 3,
ABSORB = 4,
SPORE = 5,
STICKY = 6,
BURST = 7,
POP = 8,
MULTIDIMENSIONAL = 9,
ANGELIC_PRISM = 10,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* This enum is for REPENTOGON, an exe-hack which expands the modding API.
*
* @see https://repentogon.com/
*/
export enum SuplexState {
INACTIVE = 0,
DASH = 1,
HOLD = 2,
JUMP = 3,
FALL = 4,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This is represented as an object instead of an enum due to limitations with TypeScript enums. (We
* want this type to be a child of the `BitFlag` type.)
*
* This enum is for REPENTOGON, an exe-hack which expands the modding API.
*
* @enum
* @notExported
* @rename WaterClipFlag
* @see https://repentogon.com/
*/
const WaterClipFlagInternal = {
/** When set for an Entity, also enables rendering below water. */
DISABLE_RENDER_ABOVE_WATER: 1 << 1,
/**
* Allows the entity to be rendered below the water along with being rendered above the water.
* Only works for entities.
*/
ENABLE_RENDER_BELOW_WATER: 1 << 2,

/** Prevents the entity from being rendered below the water. Takes priority over other flags. */
DISABLE_RENDER_BELOW_WATER: 1 << 3,

/** Prevents the entity from having its reflection be rendered. Only works for entities. */
DISABLE_RENDER_REFLECTION: 1 << 5,

/** Overrides other flags and only allows the entity to render above water with no reflection. */
IGNORE_WATER_RENDERING: 1 << 6,

/**
* Forces the entity to spawn water ripple effects regardless of if they're on the ground or not.
* Only works for entities.
*/
FORCE_WATER_RIPPLE_WHEN_MOVING: 1 << 7,
} as const;

type WaterClipFlagValue = BitFlag & {
readonly __waterClipFlagBrand: symbol;
};
type WaterClipFlagType = {
readonly [K in keyof typeof WaterClipFlagInternal]: WaterClipFlagValue;
};

export const WaterClipFlag = WaterClipFlagInternal as WaterClipFlagType;
export type WaterClipFlag = WaterClipFlagType[keyof WaterClipFlagType];

export const WaterClipFlagZero = 0 as BitFlags<WaterClipFlag>;
4 changes: 4 additions & 0 deletions packages/isaac-typescript-definitions-repentogon/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export * from "./enums/Achievement";
export * from "./enums/AltRockType";
export * from "./enums/AutocompleteType";
export * from "./enums/BagOfCraftingPickup";
export * from "./enums/BlendEquation";
export * from "./enums/BlendFactor";
export * from "./enums/BlendType";
export * from "./enums/BombCostumeLayer";
Expand All @@ -26,6 +27,7 @@ export * from "./enums/flags/DebugFlag";
export * from "./enums/flags/EntityTag";
export * from "./enums/flags/GetCollectibleFlag";
export * from "./enums/flags/GibFlag";
export * from "./enums/flags/WaterClipFlag";
export * from "./enums/flags/WeaponModifierFlag";
export * from "./enums/FollowerPriority";
export * from "./enums/GameMode";
Expand All @@ -51,7 +53,9 @@ export * from "./enums/ProceduralEffectConditionType";
export * from "./enums/PurityState";
export * from "./enums/SlotState";
export * from "./enums/SpecialQuest";
export * from "./enums/SplitTearType";
export * from "./enums/StbRailVariant";
export * from "./enums/SuplexState";
export * from "./enums/TaintedMarksGroup";
export * from "./enums/WeaponSlot";
export * from "./enums/WindowIcon";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ declare namespace Ambush {
*
* Calling this method will error if the current room's type is not `RoomType.CHALLENGE`.
*/
function GetNextWave(): RoomConfig;
function GetNextWave(): RoomConfig | undefined;

/**
* Returns an array containing the `RoomConfig` of the next Challenge Room waves.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,21 @@
* @see https://repentogon.com/
*/
declare interface Camera extends IsaacAPIClass {
/** Returns whether the camera is clamped to the room's boundaries. */
IsClampEnabled: () => boolean;

/** Returns whether the specified position is visible within the camera's current view. */
IsPosVisible: (position: Vector) => boolean;

/** Sets whether the camera is clamped to the room's boundaries. */
SetClampEnabled: (enabled: boolean) => void;

/**
* Sets the camera's current focus position, causing it to shift towards the specified position.
* If you want the camera to change its position instantly, use `Camera.SnapToPosition` instead.
*
* The camera will only move if the current room size is larger than 1x1. If the room size is 1x1
* or smaller, this method will do nothing.
* By default, he camera will only move if the current room size is larger than 1x1. To allow the
* camera to move regardless of the room's shape, you must call `Camera.SetClampEnabled(false)`.
*
* This method must be called on every game update, otherwise the game will override the camera's
* focus position.
Expand All @@ -23,8 +29,8 @@ declare interface Camera extends IsaacAPIClass {
* Changes the camera's position immediately. If you want the camera to smoothly change its
* position, use `Camera.SetFocusPosition` instead.
*
* The camera will only move if the current room size is larger than 1x1. If the room size is 1x1
* or smaller, this method will do nothing.
* By default, he camera will only move if the current room size is larger than 1x1. To allow the
* camera to move regardless of the room's shape, you must call `Camera.SetClampEnabled(false)`.
*
* This method must be called on every game update, otherwise the game will override the camera's
* focus position.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,31 @@ declare interface Capsule extends IsaacAPIClass {
* Attempts to trigger a collision between two capsules at a specific position. Returns whether
* the capsules have collided or not.
*/
Collide: (capsule: Capsule, point: Vector) => boolean;
Collide: (capsule1: Capsule, capsule2: Capsule, point: Vector) => boolean;

/**
* Returns a unit vector corresponding to the direction the capsule relative to its origin. This
* takes its rotation and size into account.
*/
GetDirection: () => Vector;

/** Returns the end point of the capsule. */
GetEndPoint: () => Vector;

/** Returns the capsule's position. */
GetPosition: () => Vector;

/** Returns the size of the capsule. */
GetSize: () => number;

/** Returns the start point of the capsule. */
GetStartPoint: () => Vector;

/** Returns the size difference of the capsule. */
GetSizeDifference: () => number;

// DEPRECATED METHODS

/**
* Returns the capsule's radius.
*
Expand All @@ -50,6 +67,8 @@ declare interface Capsule extends IsaacAPIClass {
* "GetF1" to prevent errors. REPENTOGON will give these methods proper names in a later update.
*
* @customName GetF1
* @deprecated Use `Capsule.GetSize` instead as REPENTOGON added new methods that accurately
* reflect what the capsule does.
*/
GetRadius: () => number;

Expand All @@ -62,12 +81,11 @@ declare interface Capsule extends IsaacAPIClass {
* names in a later update.
*
* @customName GetF2
* @deprecated Use `Capsule.GetSizeDifference` instead as REPENTOGON added new methods that
* accurately reflect what the capsule does.
*/
GetEndpointsDistance: () => number;

/** Returns the capsule's position. */
GetPosition: () => Vector;

/**
* Returns the position of one of the two capsule's endpoints.
*
Expand All @@ -77,6 +95,8 @@ declare interface Capsule extends IsaacAPIClass {
* proper names in a later update.
*
* @customName GetVec2
* @deprecated Use `Capsule.GetStartPoint` instead as REPENTOGON added new methods that accurately
* reflect what the capsule does.
*/
GetEndpoint1Position: () => Vector;

Expand All @@ -89,6 +109,8 @@ declare interface Capsule extends IsaacAPIClass {
* proper names in a later update.
*
* @customName GetVec3
* @deprecated Use `Capsule.GetEndPoint` instead as REPENTOGON added new methods that accurately
* reflect what the capsule does.
*/
GetEndpoint2Position: () => Vector;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import type { ChampionColor, EntityType } from "isaac-typescript-definitions";

declare global {
/**
* Constructs an EntityDesc object.
*
* @param this
* @param entityType Optional. Default is `EntityType.NULL`.
* @param variant Optional. Default is 0.
* @param subType Optional. Default is 0.
* @param championColor Optional. Default is -1.
* @param health Optional. Default is 0.
* @param maxHealth Optional. Default is 0.
* @param playerControlled Optional. Default is false.
*/
function EntityDesc(
this: void,
entityType?: EntityType,
variant?: int,
subType?: int,
championColor?: ChampionColor,
health?: number,
maxHealth?: number,
playerControlled?: boolean,
): EntityDesc;

interface EntityDesc extends IsaacAPIClass {
GetHealth: () => void;
GetMaxHealth: () => void;
GetSubtype: () => int;
GetType: () => EntityType;
GetVariant: () => int;
IsPlayerControlled: () => boolean;
SetHealth: (health: int) => void;
SetMaxHealth: (maxHealth: int) => void;
SetPlayerControlled: (controlled: boolean) => void;
SetSubtype: (subType: int) => void;
SetType: (entityType: EntityType) => void;
SetVariant: (variant: int) => void;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ declare global {
/** Returns whether an obstacle can be spawned at the provided grid index. */
CanSpawnObstacleAtPosition: (gridIndex: int, force: boolean) => boolean;

/**
* @param excludeNPCs Optional. Default is false.
* @param source Optional. Default is undefined.
*/
ClearBossHazards: (excludeNPCs?: boolean, source?: Entity) => void;

/**
* Creates a lightning strike effect as seen in Downpour.
*
Expand All @@ -26,9 +32,11 @@ declare global {
*/
DoLightningStrike: (seed?: Seed) => void;

/** Returns the room's `Backdrop` object. */
GetBackdrop: () => Backdrop;

/** Returns the room's `BackdropType`. */
GetBackdropType: () => BackdropType;

/** Returns the room's boss victory jingle. */
GetBossVictoryJingle: () => Music;

Expand Down Expand Up @@ -61,7 +69,7 @@ declare global {
* @param seed Optional. Default is a call to `Random()`.
* @param raw Optional. Default is false.
*/
GetItemPool: (seed?: Seed, raw?: boolean) => void;
GetItemPool: (seed?: Seed, raw?: boolean) => ItemPoolType;

/** Returns the intensity of the lightning effect. */
GetLightningIntensity: () => float;
Expand Down Expand Up @@ -99,6 +107,8 @@ declare global {
shopItemID: int,
) => int;

GetWallColor: () => Color;

/**
* Returns the amount of water in the room.
*
Expand Down Expand Up @@ -137,6 +147,8 @@ declare global {
keepDecoration: boolean,
) => void;

SaveState: () => void;

/**
* Sets the room's backdrop.
*
Expand Down Expand Up @@ -228,6 +240,15 @@ declare global {
) => void)
& ((gridIndex: int, descriptor: GridEntityDesc) => void);

/**
* Triggers an event in the room.
*
* @param output Must be between 0 and 9, otherwise the method will error.
*/
TriggerOutput: (output: int) => void;

TriggerRestock: (gridIndex: int, shopIndex: int) => void;

/** Returns a discounted price of a shop item. */
TryGetShopDiscount: (shopItem: int, price: int) => int;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
declare interface BossPool extends IsaacAPIClass {
/** Returns the ID of the Boss Pool's Double Trouble room. */
GetDoubleTroubleRoomID: () => int;
GetDoubleTroubleRoomVariantStart: () => int;

/** Returns an array of the Boss Pool's entries. */
GetEntries: () => BossPoolEntry[];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ declare global {
* @see https://repentogon.com/
*/
namespace BossPoolManager {
/** Returns a map containing bosses that are blacklisted from the current stage's boss pool. */
function GetLevelBlacklist(): LuaMap<BossID, boolean>;

/** Returns the Boss Pool corresponding to the provided `stageID`. */
function GetPool(stageID: StageID): BossPool;

Expand Down
Loading
Loading