isaac-typescript-definitions
Version:
TypeScript definitions for The Binding of Isaac: Repentance.
299 lines (234 loc) • 6.23 kB
text/typescript
/**
* 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.)
*
* @enum
* @notExported
* @rename EntityFlag
*/
const EntityFlagInternal = {
/**
* Prevents status effects from applying to the entity (e.g. freeze, poison, slow, charm,
* confusion, fear, burn, etc.).
*
* 1 << 0 (1)
*/
NO_STATUS_EFFECTS: 1 << 0,
/**
* Do not interpolate the position.
*
* 1 << 1 (2)
*/
NO_INTERPOLATE: 1 << 1,
/**
* The "Appear" animation will be played after the entity is initialized.
*
* 1 << 2 (4)
*/
APPEAR: 1 << 2,
/**
* Meant for entities that have a sprite loaded that represent a floor texture. Entities with this
* flag will be removed after their first render. (Removing the entity is desirable because we
* would not want it to override other things that render to the floor, like bomb explosions.) You
* can use `EntityFlag.NO_REMOVE_ON_TEX_RENDER` to disable this behavior.
*
* 1 << 3 (8)
*/
RENDER_FLOOR: 1 << 3,
/**
* Will not be a target of NPCs or familiars.
*
* 1 << 4 (16)
*/
NO_TARGET: 1 << 4,
/** 1 << 5 (32) */
FREEZE: 1 << 5,
/** 1 << 6 (64) */
POISON: 1 << 6,
/** 1 << 7 (128) */
SLOW: 1 << 7,
/** 1 << 8 (256) */
CHARM: 1 << 8,
/** 1 << 9 (512) */
CONFUSION: 1 << 9,
/** 1 << 10 (1024) */
MIDAS_FREEZE: 1 << 10,
/**
* Fleeing in fear (from e.g. Mom's Pad).
*
* 1 << 11 (2048)
*/
FEAR: 1 << 11,
/**
* Caused by Fire Mind tears. Works like poison except with a red color effect.
*
* 1 << 12 (4096)
*/
BURN: 1 << 12,
/**
* Meant for entities that have a sprite loaded that represent a wall texture. Entities with this
* flag will be removed after their first render. (Removing the entity is desirable because we
* would not want it to override other things that render to the wall, like bomb explosions.) You
* can use `EntityFlag.NO_REMOVE_ON_TEX_RENDER` to disable this behavior.
*
* 1 << 13 (8192)
*/
RENDER_WALL: 1 << 13,
/**
* The entity is updating at 60 frames per second and this is an odd frame.
*
* 1 << 14 (16384)
*/
INTERPOLATION_UPDATE: 1 << 14,
/**
* Indicates that the entity is in a side-scrolling room and is within a gravity zone.
*
* 1 << 15 (32768)
*/
APPLY_GRAVITY: 1 << 15,
/** 1 << 16 (65536) */
NO_BLOOD_SPLASH: 1 << 16,
/**
* See `EntityFlag.FLAG_RENDER_FLOOR` and `EntityFlag.FLAG_RENDER_WALL`.
*
* 1 << 17 (131072)
*/
NO_REMOVE_ON_TEX_RENDER: 1 << 17,
/** 1 << 18 (262144) */
NO_DEATH_TRIGGER: 1 << 18,
/**
* This shares the same value as `FLAG_LASER_POP` and `FLAG_ITEM_SHOULD_DUPLICATE`, but has a
* different meaning depending on the entity type.
*
* 1 << 19 (524288)
*/
NO_SPIKE_DAMAGE: 1 << 19,
/**
* This shares the same value as `FLAG_NO_SPIKE_DAMAGE` and `FLAG_ITEM_SHOULD_DUPLICATE`, but has
* a different meaning depending on the entity type.
*
* 1 << 19 (524288)
*/
LASER_POP: 1 << 19,
/**
* A collectible affected by Damocles. The flag indicates that it will be duplicated at the end of
* the current frame.
*
* This shares the same value as `FLAG_NO_SPIKE_DAMAGE` and `FLAG_LASER_POP`, but has a different
* meaning depending on the entity type.
*
* 1 << 19 (524288)
*/
ITEM_SHOULD_DUPLICATE: 1 << 19,
/**
* Some bosses (like Lamb or Mother) can die but they will still appear to be active in the room
* (`IsActiveEnemy`). You can check this flag in those cases.
*
* 1 << 20 (1048576)
*/
BOSS_DEATH_TRIGGERED: 1 << 20,
/** 1 << 21 (2097152) */
DONT_OVERWRITE: 1 << 21,
/** 1 << 22 (4194304) */
SPAWN_STICKY_SPIDERS: 1 << 22,
/** 1 << 23 (8388608) */
SPAWN_BLACK_HP: 1 << 23,
/** 1 << 24 (16777216) */
SHRINK: 1 << 24,
/** 1 << 25 (33554432) */
NO_FLASH_ON_DAMAGE: 1 << 25,
/** 1 << 26 (67108864) */
NO_KNOCKBACK: 1 << 26,
/** 1 << 27 (134217728) */
SLIPPERY_PHYSICS: 1 << 27,
/** 1 << 28 (268435456) */
ADD_JAR_FLY: 1 << 28,
/** 1 << 29 (536870912) */
FRIENDLY: 1 << 29,
/** 1 << 30 (1073741824) */
NO_PHYSICS_KNOCKBACK: 1 << 30,
/** 1 << 31 (2147483648) */
DONT_COUNT_BOSS_HP: 1 << 31,
/** 1 << 32 (4294967296) */
NO_SPRITE_UPDATE: 1 << 32,
/** 1 << 33 */
CONTAGIOUS: 1 << 33,
/**
* Used by the Mom's Razor collectible.
*
* 1 << 34
*/
BLEED_OUT: 1 << 34,
/**
* Hides the HP bar generated by the Spider Mod collectible.
*
* 1 << 35
*/
HIDE_HP_BAR: 1 << 35,
/** 1 << 36 */
NO_DAMAGE_BLINK: 1 << 36,
/**
* The entity will persist between rooms.
*
* 1 << 37
*/
PERSISTENT: 1 << 37,
/** 1 << 38 */
BACKDROP_DETAIL: 1 << 38,
/** 1 << 39 */
AMBUSH: 1 << 39,
/** 1 << 40 */
GLITCH: 1 << 40,
/** 1 << 41 */
SPIN: 1 << 41,
/** 1 << 42 */
NO_REWARD: 1 << 42,
/** 1 << 43 */
REDUCE_GIBS: 1 << 43,
/** 1 << 44 */
TRANSITION_UPDATE: 1 << 44,
/** 1 << 45 */
NO_PLAYER_CONTROL: 1 << 45,
/**
* Makes the entity excluded from the results of the `Isaac.FindByType` method. Additionally, the
* entity will not fire the `ENTITY_TAKE_DMG` callback.
*
* 1 << 46
*/
NO_QUERY: 1 << 46,
/** 1 << 47 */
KNOCKED_BACK: 1 << 47,
/** 1 << 48 */
APPLY_IMPACT_DAMAGE: 1 << 48,
/** 1 << 49 */
ICE_FROZEN: 1 << 49,
/** 1 << 50 */
ICE: 1 << 50,
/** 1 << 51 */
MAGNETIZED: 1 << 51,
/** 1 << 52 */
BAITED: 1 << 52,
/** 1 << 53 */
KILL_SWITCH: 1 << 53,
/** 1 << 54 */
WEAKNESS: 1 << 54,
/** 1 << 55 */
EXTRA_GORE: 1 << 55,
/** 1 << 56 */
BRIMSTONE_MARKED: 1 << 56,
/** 1 << 57 */
HELD: 1 << 57,
/** 1 << 58 */
THROWN: 1 << 58,
/** 1 << 59 */
FRIENDLY_BALL: 1 << 59,
} as const;
type EntityFlagValue = BitFlag & {
readonly __entityFlagBrand: symbol;
};
type EntityFlagType = {
readonly [K in keyof typeof EntityFlagInternal]: EntityFlagValue;
};
export const EntityFlag = EntityFlagInternal as EntityFlagType;
export type EntityFlag = EntityFlagType[keyof EntityFlagType];
export const EntityFlagZero = 0 as BitFlags<EntityFlag>;