import { WaterLevel, type Vec3 } from '@quake2ts/shared'; import { DamageMod } from './damageMods.js'; import { type Damageable, type DamageApplicationResult } from './damage.js'; import { MoveType, Solid } from '../entities/entity.js'; export declare enum EnvironmentalFlags { IN_WATER = 1, IMMUNE_LAVA = 2, IMMUNE_SLIME = 4 } export interface EnvironmentalDamageTarget extends Damageable { waterlevel: WaterLevel; watertype: number; airFinished: number; painDebounceTime: number; damageDebounceTime: number; environmentFlags?: EnvironmentalFlags; } export interface EnvironmentalDamageEvent { readonly mod: DamageMod; readonly amount: number; readonly result: DamageApplicationResult | null; } export interface EnvironmentalDamageResult { readonly events: EnvironmentalDamageEvent[]; readonly enteredWater: boolean; readonly leftWater: boolean; } export declare function applyEnvironmentalDamage(target: EnvironmentalDamageTarget, nowMs: number): EnvironmentalDamageResult; export type FallingEvent = 'footstep' | 'fallshort' | 'fall' | 'fallfar' | null; export interface FallingDamageContext { readonly impactDelta: number; readonly waterLevel: WaterLevel; readonly onLadder?: boolean; readonly isDead?: boolean; readonly isPlayerModel?: boolean; readonly isNoClip?: boolean; readonly grappleBlockingFallDamage?: boolean; readonly clampFreeFall?: boolean; readonly skipDamage?: boolean; } export interface FallingDamageResult { readonly damage: number; readonly event: FallingEvent; readonly fallValue: number; readonly adjustedDelta: number; } export declare function calculateFallingDamage(context: FallingDamageContext): FallingDamageResult; export declare function applyFallingDamage(target: Damageable, context: FallingDamageContext): FallingDamageResult; export interface CrushableTarget extends Damageable { readonly isMonster?: boolean; readonly isClient?: boolean; } export interface CrushDamageOptions { readonly baseDamage?: number; readonly nonLivingDamage?: number; readonly gibDamage?: number; } export interface CrushDamageResult { readonly amount: number; readonly result: DamageApplicationResult | null; } export declare function applyCrushDamage(crusher: Damageable, target: CrushableTarget, options?: CrushDamageOptions): CrushDamageResult; export interface TelefragEntity extends Damageable { readonly movetype?: MoveType; readonly solid?: Solid; readonly mins?: Vec3; readonly maxs?: Vec3; } export interface TelefragTarget extends Damageable { readonly inUse?: boolean; readonly movetype?: MoveType; readonly solid?: Solid; readonly mins?: Vec3; readonly maxs?: Vec3; } export interface TelefragEvent { readonly target: TelefragTarget; readonly result: DamageApplicationResult | null; } export interface TelefragResult { readonly events: TelefragEvent[]; readonly cleared: boolean; } export interface TelefragOptions { readonly mod?: DamageMod; } export declare function killBox(teleporter: TelefragEntity, targets: readonly TelefragTarget[], options?: TelefragOptions): TelefragResult; //# sourceMappingURL=specialDamage.d.ts.map