isaacscript-common
Version:
Helper functions and features for IsaacScript mods.
1,075 lines (931 loc) • 28.3 kB
text/typescript
import type {
ActiveSlot,
BombVariant,
ButtonAction,
CollectibleType,
DamageFlag,
DiceFloorSubType,
DoorVariant,
EffectVariant,
EntityType,
FamiliarVariant,
GridEntityType,
GridEntityXMLType,
InputHook,
ItemType,
Keyboard,
KnifeVariant,
LaserVariant,
LevelStage,
PickupVariant,
PillColor,
PillEffect,
PitVariant,
PlayerForm,
PlayerType,
PlayerVariant,
PoopGridEntityVariant,
PressurePlateVariant,
ProjectileVariant,
RoomType,
SlotVariant,
StageType,
TearVariant,
TrinketType,
UseFlag,
} from "isaac-typescript-definitions";
import type { AmbushType } from "../../enums/AmbushType";
import type { HealthType } from "../../enums/HealthType";
import type { ModCallbackCustom } from "../../enums/ModCallbackCustom";
import type { PlayerStat } from "../../enums/PlayerStat";
import type { SlotDestructionType } from "../../enums/SlotDestructionType";
import { interfaceSatisfiesEnum } from "../../functions/enums";
import type {
PickingUpItem,
PickingUpItemCollectible,
PickingUpItemTrinket,
} from "../../types/PickingUpItem";
import type { PlayerStats } from "../PlayerStats";
export interface AddCallbackParametersCustom {
[ModCallbackCustom.ENTITY_TAKE_DMG_FILTER]: [
callback: (
entity: Entity,
amount: float,
damageFlags: BitFlags<DamageFlag>,
source: EntityRef,
countdownFrames: int,
) => boolean | undefined,
entityType?: EntityType,
variant?: number,
subType?: number,
];
[ModCallbackCustom.ENTITY_TAKE_DMG_PLAYER]: [
callback: (
player: EntityPlayer,
amount: float,
damageFlags: BitFlags<DamageFlag>,
source: EntityRef,
countdownFrames: int,
) => boolean | undefined,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.INPUT_ACTION_FILTER]: [
callback: (
entity: Entity | undefined,
inputHook: InputHook,
buttonAction: ButtonAction,
) => boolean | float | undefined,
inputHook?: InputHook,
buttonAction?: ButtonAction,
];
[ModCallbackCustom.INPUT_ACTION_PLAYER]: [
callback: (
player: EntityPlayer,
inputHook: InputHook,
buttonAction: ButtonAction,
) => boolean | float | undefined,
playerVariant?: PlayerVariant,
character?: PlayerType,
inputHook?: InputHook,
buttonAction?: ButtonAction,
];
[ModCallbackCustom.POST_AMBUSH_FINISHED]: [
callback: (ambushType: AmbushType) => void,
ambushType?: AmbushType,
];
[ModCallbackCustom.POST_AMBUSH_STARTED]: [
callback: (ambushType: AmbushType) => void,
ambushType?: AmbushType,
];
[ModCallbackCustom.POST_BOMB_EXPLODED]: [
callback: (bomb: EntityBomb) => void,
bombVariant?: BombVariant,
subType?: int,
];
[ModCallbackCustom.POST_BOMB_INIT_FILTER]: [
callback: (bomb: EntityBomb) => void,
bombVariant?: BombVariant,
subType?: int,
];
[ModCallbackCustom.POST_BOMB_INIT_LATE]: [
callback: (bomb: EntityBomb) => void,
bombVariant?: BombVariant,
subType?: int,
];
[ModCallbackCustom.POST_BOMB_RENDER_FILTER]: [
callback: (bomb: EntityBomb, renderOffset: Vector) => void,
bombVariant?: BombVariant,
subType?: int,
];
[ModCallbackCustom.POST_BOMB_UPDATE_FILTER]: [
callback: (bomb: EntityBomb) => void,
bombVariant?: BombVariant,
subType?: int,
];
[ModCallbackCustom.POST_BONE_SWING]: [callback: (knife: EntityKnife) => void];
[ModCallbackCustom.POST_COLLECTIBLE_EMPTY]: [
callback: (
collectible: EntityPickupCollectible,
oldCollectibleType: CollectibleType,
) => void,
collectibleType?: CollectibleType,
];
[ModCallbackCustom.POST_CURSED_TELEPORT]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_CUSTOM_REVIVE]: [
callback: (player: EntityPlayer, revivalType: int) => void,
revivalType?: int,
];
[ModCallbackCustom.POST_DICE_ROOM_ACTIVATED]: [
callback: (
player: EntityPlayer,
diceFloorSubType: DiceFloorSubType,
) => void,
diceFloorSubType?: DiceFloorSubType,
];
[ModCallbackCustom.POST_DOOR_RENDER]: [
callback: (door: GridEntityDoor) => void,
doorVariant?: DoorVariant,
];
[ModCallbackCustom.POST_DOOR_UPDATE]: [
callback: (door: GridEntityDoor) => void,
doorVariant?: DoorVariant,
];
[ModCallbackCustom.POST_EFFECT_INIT_FILTER]: [
callback: (effect: EntityEffect) => void,
effectVariant?: EffectVariant,
subType?: int,
];
[ModCallbackCustom.POST_EFFECT_INIT_LATE]: [
callback: (effect: EntityEffect) => void,
effectVariant?: EffectVariant,
subType?: int,
];
[ModCallbackCustom.POST_EFFECT_RENDER_FILTER]: [
callback: (effect: EntityEffect, renderOffset: Vector) => void,
effectVariant?: EffectVariant,
subType?: int,
];
[ModCallbackCustom.POST_EFFECT_STATE_CHANGED]: [
callback: (
effect: EntityEffect,
previousState: int,
currentState: int,
) => void,
effectVariant?: EffectVariant,
subType?: int,
];
[ModCallbackCustom.POST_EFFECT_UPDATE_FILTER]: [
callback: (effect: EntityEffect) => void,
effectVariant?: EffectVariant,
subType?: int,
];
[ModCallbackCustom.POST_ENTITY_KILL_FILTER]: [
callback: (entity: Entity) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_ENTITY_REMOVE_FILTER]: [
callback: (entity: Entity) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
// - Co-op babies cannot turn into Esau Jr, so it does not make sense to filter by
// `PlayerVariant`.
// - The character of Esau Jr. is equal to `PlayerType.ISAAC`, so it does not make sense to filter
// by character.
[ModCallbackCustom.POST_ESAU_JR]: [callback: (player: EntityPlayer) => void];
[ModCallbackCustom.POST_FAMILIAR_INIT_FILTER]: [
callback: (familiar: EntityFamiliar) => void,
familiarVariant?: FamiliarVariant,
subType?: int,
];
[ModCallbackCustom.POST_FAMILIAR_INIT_LATE]: [
callback: (familiar: EntityFamiliar) => void,
familiarVariant?: FamiliarVariant,
subType?: int,
];
[ModCallbackCustom.POST_FAMILIAR_RENDER_FILTER]: [
callback: (familiar: EntityFamiliar, renderOffset: Vector) => void,
familiarVariant?: FamiliarVariant,
subType?: int,
];
[ModCallbackCustom.POST_FAMILIAR_STATE_CHANGED]: [
callback: (
familiar: EntityFamiliar,
previousState: int,
currentState: int,
) => void,
familiarVariant?: FamiliarVariant,
subType?: int,
];
[ModCallbackCustom.POST_FAMILIAR_UPDATE_FILTER]: [
callback: (familiar: EntityFamiliar) => void,
familiarVariant?: FamiliarVariant,
subType?: int,
];
// - Co-op babies cannot turn into Esau Jr, so it does not make sense to filter by
// `PlayerVariant`.
// - The character of Esau Jr. is equal to `PlayerType.ISAAC`, so it does not make sense to filter
// by character.
[ModCallbackCustom.POST_FIRST_ESAU_JR]: [
callback: (player: EntityPlayer) => void,
];
[ModCallbackCustom.POST_FIRST_FLIP]: [
callback: (newLazarus: EntityPlayer, oldLazarus: EntityPlayer) => void,
];
[ModCallbackCustom.POST_FLIP]: [
callback: (newLazarus: EntityPlayer, oldLazarus: EntityPlayer) => void,
];
[ModCallbackCustom.POST_GAME_END_FILTER]: [
callback: (isGameOver: boolean) => void,
isGameOver?: boolean,
];
[ModCallbackCustom.POST_GAME_STARTED_REORDERED]: [
callback: (isContinued: boolean) => void,
// `isContinued` is mandatory to prevent users from shooting themselves in the foot.
isContinued: boolean | undefined,
];
[ModCallbackCustom.POST_GAME_STARTED_REORDERED_LAST]: [
callback: (isContinued: boolean) => void,
// `isContinued` is mandatory to prevent users from shooting themselves in the foot.
isContinued: boolean | undefined,
];
[ModCallbackCustom.POST_GREED_MODE_WAVE]: [
callback: (oldWave: int, newWave: int) => void,
];
[ModCallbackCustom.POST_GRID_ENTITY_BROKEN]: [
callback: (gridEntity: GridEntity) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_COLLISION]: [
callback: (gridEntity: GridEntity, entity: Entity) => void,
gridEntityType?: GridEntityType,
gridEntityVariant?: int,
entityType?: EntityType,
entityVariant?: int,
entitySubType?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
entity: Entity,
) => void,
gridEntityTypeCustom?: GridEntityType,
entityType?: EntityType,
entityVariant?: int,
entitySubType?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_INIT]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_REMOVE]: [
callback: (gridIndex: int, gridEntityTypeCustom: GridEntityType) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_STATE_CHANGED]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
oldState: int,
newState: int,
) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE]: [
callback: (
gridEntity: GridEntity,
gridEntityTypeCustom: GridEntityType,
) => void,
gridEntityTypeCustom?: GridEntityType,
];
[ModCallbackCustom.POST_GRID_ENTITY_INIT]: [
callback: (gridEntity: GridEntity) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_REMOVE]: [
callback: (
gridIndex: int,
gridEntityType: GridEntityType,
variant: int,
) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_RENDER]: [
callback: (gridEntity: GridEntity) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED]: [
callback: (gridEntity: GridEntity, oldState: int, newState: int) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_GRID_ENTITY_UPDATE]: [
callback: (gridEntity: GridEntity) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_HOLY_MANTLE_REMOVED]: [
callback: (
player: EntityPlayer,
oldNumHolyMantles: int,
newNumHolyMantles: int,
) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_ITEM_DISCHARGE]: [
callback: (
player: EntityPlayer,
collectibleType: CollectibleType,
activeSlot: ActiveSlot,
) => void,
collectibleType?: CollectibleType,
];
[ModCallbackCustom.POST_ITEM_PICKUP]:
| [callback: (player: EntityPlayer, pickingUpItem: PickingUpItem) => void]
| [
callback: (
player: EntityPlayer,
pickingUpItem: PickingUpItemCollectible,
) => void,
itemType: ItemType.PASSIVE | ItemType.ACTIVE | ItemType.FAMILIAR,
collectibleType?: CollectibleType,
]
| [
callback: (
player: EntityPlayer,
pickingUpItem: PickingUpItemTrinket,
) => void,
itemType: ItemType.TRINKET,
trinketType?: TrinketType,
];
[ModCallbackCustom.POST_KEYBOARD_CHANGED]: [
callback: (keyboard: Keyboard, pressed: boolean) => void,
keyboard?: Keyboard,
pressed?: boolean,
];
[ModCallbackCustom.POST_KNIFE_INIT_FILTER]: [
callback: (knife: EntityKnife) => void,
knifeVariant?: KnifeVariant,
subType?: int,
];
[ModCallbackCustom.POST_KNIFE_INIT_LATE]: [
callback: (knife: EntityKnife) => void,
knifeVariant?: KnifeVariant,
subType?: int,
];
[ModCallbackCustom.POST_KNIFE_RENDER_FILTER]: [
callback: (knife: EntityKnife, renderOffset: Vector) => void,
knifeVariant?: KnifeVariant,
subType?: int,
];
[ModCallbackCustom.POST_KNIFE_UPDATE_FILTER]: [
callback: (knife: EntityKnife) => void,
knifeVariant?: KnifeVariant,
subType?: int,
];
[ModCallbackCustom.POST_LASER_INIT_FILTER]: [
callback: (laser: EntityLaser) => void,
laserVariant?: LaserVariant,
subType?: int,
];
[ModCallbackCustom.POST_LASER_INIT_LATE]: [
callback: (laser: EntityLaser) => void,
laserVariant?: LaserVariant,
subType?: int,
];
[ModCallbackCustom.POST_LASER_RENDER_FILTER]: [
callback: (laser: EntityLaser, renderOffset: Vector) => void,
laserVariant?: LaserVariant,
subType?: int,
];
[ModCallbackCustom.POST_LASER_UPDATE_FILTER]: [
callback: (laser: EntityLaser) => void,
laserVariant?: LaserVariant,
subType?: int,
];
[ModCallbackCustom.POST_NEW_LEVEL_REORDERED]: [
callback: (stage: LevelStage, stageType: StageType) => void,
stage?: LevelStage,
stageType?: StageType,
];
[ModCallbackCustom.POST_NEW_ROOM_EARLY]: [
callback: (roomType: RoomType) => void,
roomType?: RoomType,
];
[ModCallbackCustom.POST_NEW_ROOM_REORDERED]: [
callback: (roomType: RoomType) => void,
roomType?: RoomType,
];
[ModCallbackCustom.POST_NPC_DEATH_FILTER]: [
callback: (npc: EntityNPC) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_NPC_INIT_FILTER]: [
callback: (npc: EntityNPC) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_NPC_INIT_LATE]: [
callback: (npc: EntityNPC) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_NPC_RENDER_FILTER]: [
callback: (npc: EntityNPC, renderOffset: Vector) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_NPC_STATE_CHANGED]: [
callback: (npc: EntityNPC, previousState: int, currentState: int) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_NPC_UPDATE_FILTER]: [
callback: (npc: EntityNPC) => void,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PICKUP_CHANGED]: [
callback: (
pickup: EntityPickup,
oldVariant: PickupVariant,
oldSubType: int,
newVariant: PickupVariant,
newSubType: int,
) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_COLLECT]: [
callback: (pickup: EntityPickup, player: EntityPlayer) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_INIT_FILTER]: [
callback: (pickup: EntityPickup) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_INIT_FIRST]: [
callback: (pickup: EntityPickup) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_INIT_LATE]: [
callback: (pickup: EntityPickup) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_RENDER_FILTER]: [
callback: (pickup: EntityPickup, renderOffset: Vector) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_SELECTION_FILTER]: [
callback: (
pickup: EntityPickup,
variant: PickupVariant,
subType: int,
) => [pickupVariant: PickupVariant, subType: int] | undefined,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_STATE_CHANGED]: [
callback: (
pickup: EntityPickup,
previousState: int,
currentState: int,
) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PICKUP_UPDATE_FILTER]: [
callback: (pickup: EntityPickup) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_PIT_RENDER]: [
callback: (pit: GridEntityPit) => void,
pitVariant?: PitVariant,
];
[ModCallbackCustom.POST_PIT_UPDATE]: [
callback: (pit: GridEntityPit) => void,
pitVariant?: PitVariant,
];
[ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH]: [
callback: (
player: EntityPlayer,
healthType: HealthType,
difference: int,
oldValue: int,
newValue: int,
) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_CHANGE_STAT]: [
callback: <T extends PlayerStat>(
player: EntityPlayer,
playerStat: PlayerStat,
difference: int,
oldValue: PlayerStats[T],
newValue: PlayerStats[T],
) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_CHANGE_TYPE]: [
callback: (
player: EntityPlayer,
oldCharacter: PlayerType,
newCharacter: PlayerType,
) => void,
playerVariant?: PlayerVariant,
];
[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED]: [
callback: (player: EntityPlayer, collectibleType: CollectibleType) => void,
collectibleType?: CollectibleType,
];
[ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED]: [
callback: (player: EntityPlayer, collectibleType: CollectibleType) => void,
collectibleType?: CollectibleType,
];
[ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE]: [
callback: (
player: EntityPlayer,
amount: float,
damageFlags: BitFlags<DamageFlag>,
source: EntityRef,
countdownFrames: int,
) => boolean | undefined,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_INIT_FIRST]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_INIT_LATE]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_RENDER_REORDERED]: [
callback: (player: EntityPlayer, renderOffset: Vector) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_POOP_RENDER]: [
callback: (poop: GridEntityPoop) => void,
poopVariant?: PoopGridEntityVariant,
];
[ModCallbackCustom.POST_POOP_UPDATE]: [
callback: (poop: GridEntityPoop) => void,
poopVariant?: PoopGridEntityVariant,
];
[ModCallbackCustom.POST_PRESSURE_PLATE_RENDER]: [
callback: (pressurePlate: GridEntityPressurePlate) => void,
pressurePlateVariant?: PressurePlateVariant,
];
[ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE]: [
callback: (pressurePlate: GridEntityPressurePlate) => void,
pressurePlateVariant?: PressurePlateVariant,
];
[ModCallbackCustom.POST_PROJECTILE_INIT_FILTER]: [
callback: (projectile: EntityProjectile) => void,
projectileVariant?: ProjectileVariant,
subType?: int,
];
[ModCallbackCustom.POST_PROJECTILE_INIT_LATE]: [
callback: (projectile: EntityProjectile) => void,
projectileVariant?: ProjectileVariant,
subType?: int,
];
[ModCallbackCustom.POST_PROJECTILE_KILL]: [
callback: (projectile: EntityProjectile) => void,
projectileVariant?: ProjectileVariant,
subType?: number,
];
[ModCallbackCustom.POST_PROJECTILE_UPDATE_FILTER]: [
callback: (projectile: EntityProjectile) => void,
projectileVariant?: ProjectileVariant,
subType?: int,
];
[ModCallbackCustom.POST_PROJECTILE_RENDER_FILTER]: [
callback: (projectile: EntityProjectile, renderOffset: Vector) => void,
projectileVariant?: ProjectileVariant,
subType?: int,
];
[ModCallbackCustom.POST_PURCHASE]: [
callback: (player: EntityPlayer, pickup: EntityPickup) => void,
pickupVariant?: PickupVariant,
subType?: int,
];
[ModCallbackCustom.POST_ROCK_RENDER]: [
callback: (rock: GridEntityRock) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_ROCK_UPDATE]: [
callback: (rock: GridEntityRock) => void,
gridEntityType?: GridEntityType,
variant?: int,
];
[ModCallbackCustom.POST_ROOM_CLEAR_CHANGED]: [
callback: (roomClear: boolean) => void,
roomClear?: boolean,
];
[ModCallbackCustom.POST_SACRIFICE]: [
callback: (player: EntityPlayer, numSacrifices: int) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED]: [
callback: (
slot: EntitySlot,
previousAnimation: string,
currentAnimation: string,
) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SLOT_COLLISION]: [
callback: (slot: EntitySlot, player: EntityPlayer) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SLOT_DESTROYED]: [
callback: (
slot: EntitySlot,
slotDestructionType: SlotDestructionType,
) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SLOT_INIT]: [
callback: (slot: EntitySlot) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SLOT_RENDER]: [
callback: (slot: EntitySlot) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SLOT_UPDATE]: [
callback: (slot: EntitySlot) => void,
slotVariant?: SlotVariant,
subType?: int,
];
[ModCallbackCustom.POST_SPIKES_RENDER]: [
callback: (spikes: GridEntitySpikes) => void,
variant?: int,
];
[ModCallbackCustom.POST_SPIKES_UPDATE]: [
callback: (spikes: GridEntitySpikes) => void,
variant?: int,
];
[ModCallbackCustom.POST_TEAR_INIT_FILTER]: [
callback: (tear: EntityTear) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TEAR_INIT_LATE]: [
callback: (tear: EntityTear) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TEAR_INIT_VERY_LATE]: [
callback: (tear: EntityTear) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TEAR_KILL]: [
callback: (tear: EntityTear) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TEAR_RENDER_FILTER]: [
callback: (tear: EntityTear, renderOffset: Vector) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TEAR_UPDATE_FILTER]: [
callback: (tear: EntityTear) => void,
tearVariant?: TearVariant,
subType?: int,
];
[ModCallbackCustom.POST_TNT_RENDER]: [
callback: (tnt: GridEntityTNT) => void,
variant?: int,
];
[ModCallbackCustom.POST_TNT_UPDATE]: [
callback: (tnt: GridEntityTNT) => void,
variant?: int,
];
[ModCallbackCustom.POST_TRANSFORMATION]: [
callback: (
player: EntityPlayer,
playerForm: PlayerForm,
hasForm: boolean,
) => void,
playerForm?: PlayerForm,
];
[ModCallbackCustom.POST_TRINKET_BREAK]: [
callback: (player: EntityPlayer, trinketType: TrinketType) => void,
trinketType?: TrinketType,
];
[ModCallbackCustom.POST_USE_PILL_FILTER]: [
callback: (
pillEffect: PillEffect,
pillColor: PillColor,
player: EntityPlayer,
useFlags: BitFlags<UseFlag>,
) => void,
pillEffect?: PillEffect,
pillColor?: PillColor,
];
[ModCallbackCustom.PRE_BERSERK_DEATH]: [
callback: (player: EntityPlayer) => void,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.PRE_BOMB_COLLISION_FILTER]: [
callback: (
bomb: EntityBomb,
collider: Entity,
low: boolean,
) => boolean | undefined,
bombVariant?: BombVariant,
subtype?: int,
];
[ModCallbackCustom.PRE_CUSTOM_REVIVE]: [
callback: (player: EntityPlayer) => int | undefined,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.PRE_ENTITY_SPAWN_FILTER]: [
callback: (
entityType: EntityType,
variant: int,
subType: int,
position: Vector,
velocity: Vector,
spawner: Entity | undefined,
initSeed: Seed,
) =>
| [entityType: EntityType, variant: int, subType: int, initSeed: Seed]
| undefined,
entityType?: EntityType,
variant?: int,
subtype?: int,
];
[ModCallbackCustom.PRE_FAMILIAR_COLLISION_FILTER]: [
callback: (
familiar: EntityFamiliar,
collider: Entity,
low: boolean,
) => boolean | undefined,
familiarVariant?: FamiliarVariant,
subtype?: int,
];
[ModCallbackCustom.PRE_GET_PEDESTAL]: [
callback: (
player: EntityPlayer,
collectible: EntityPickupCollectible,
) => boolean | undefined,
playerVariant?: PlayerVariant,
character?: PlayerType,
];
[ModCallbackCustom.PRE_ITEM_PICKUP]:
| [
callback: (
player: EntityPlayer,
pickingUpItem: PickingUpItem,
) => boolean | undefined,
]
| [
callback: (
player: EntityPlayer,
pickingUpItem: PickingUpItemCollectible,
) => boolean | undefined,
itemType: ItemType.PASSIVE | ItemType.ACTIVE | ItemType.FAMILIAR,
collectibleType?: CollectibleType,
]
| [
callback: (
player: EntityPlayer,
pickingUpItem: PickingUpItemTrinket,
) => boolean | undefined,
itemType: ItemType.TRINKET,
trinketType?: TrinketType,
];
[ModCallbackCustom.PRE_KNIFE_COLLISION_FILTER]: [
callback: (
knife: EntityKnife,
collider: Entity,
low: boolean,
) => boolean | undefined,
knifeVariant?: KnifeVariant,
subtype?: int,
];
[ModCallbackCustom.PRE_NEW_LEVEL]: [callback: (player: EntityPlayer) => void];
[ModCallbackCustom.PRE_NPC_COLLISION_FILTER]: [
callback: (
npc: EntityNPC,
collider: Entity,
low: boolean,
) => undefined | boolean,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.PRE_NPC_UPDATE_FILTER]: [
callback: (npc: EntityNPC) => undefined | boolean,
entityType?: EntityType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.PRE_PROJECTILE_COLLISION_FILTER]: [
callback: (
projectile: EntityProjectile,
collider: Entity,
low: boolean,
) => boolean | undefined,
projectileVariant?: ProjectileVariant,
subtype?: int,
];
[ModCallbackCustom.PRE_ROOM_ENTITY_SPAWN_FILTER]: [
callback: (
entityTypeOrGridEntityXMLType: EntityType | GridEntityXMLType,
variant: int,
subType: int,
gridIndex: int,
initSeed: Seed,
) =>
| [type: EntityType | GridEntityXMLType, variant: int, subType: int]
| undefined,
entityTypeOrGridEntityXMLType?: EntityType | GridEntityXMLType,
variant?: int,
subType?: int,
];
[ModCallbackCustom.PRE_TEAR_COLLISION_FILTER]: [
callback: (
tear: EntityTear,
collider: Entity,
low: boolean,
) => boolean | undefined,
tearVariant?: TearVariant,
subtype?: int,
];
}
interfaceSatisfiesEnum<AddCallbackParametersCustom, ModCallbackCustom>();