anomaly-packer
Version:
Anomaly Packer is a utility package for STALKER Anomaly creators to help them develop addons at speed with TypeScript's type-safety and game-oriented build tools.
305 lines (287 loc) • 10.4 kB
TypeScript
/** @noSelfInFile */
// Engine classes extended or newly added by modded exes.
/**
* Script attachment — a renderable model attached to a game object (or to another
* attachment), with its own transform, bones, UI and lights. Created via
* {@link CGameObject.add_attachment}. Entirely new in modded exes.
*/
declare class ScriptAttachment {
/** Arbitrary user data table stored on the attachment */
userdata: AnyTable
// Hierarchy
set_parent(parent: ScriptAttachment): void
set_parent(parent: CGameObject): void
set_parent_level(): void
get_parent(): ScriptAttachment | CGameObject | null
add_attachment(name: string, model_name: string): ScriptAttachment | null
get_attachment(name: string): ScriptAttachment | null
remove_attachment(name: string): void
remove_attachment(child: ScriptAttachment): void
iterate_attachments(functor: (attachment: ScriptAttachment) => boolean | void): void
// Transform
set_position(pos: vector): void
set_position(x: number, y: number, z: number): void
get_position(): vector
set_rotation(rot: vector): void
set_rotation(x: number, y: number, z: number): void
get_rotation(): vector
set_origin(origin: vector): void
set_origin(x: number, y: number, z: number): void
get_origin(): vector
set_scale(scale: vector): void
set_scale(x: number, y: number, z: number): void
set_scale(uniform: number): void
get_scale(): vector
get_transform(): matrix
get_center(): vector
// Bones
bone_id(bone_name: string): number
bone_name(bone_id: number): string
bone_visible(bone_id: number): boolean
bone_visible(bone_name: string): boolean
set_bone_visible(bone_id: number, visible: boolean, recursive: boolean): void
set_bone_visible(bone_name: string, visible: boolean, recursive: boolean): void
bone_transform(bone_id: number): matrix
bone_transform(bone_name: string): matrix
bone_position(bone_id: number): vector
bone_position(bone_name: string): vector
bone_direction(bone_id: number): vector
bone_direction(bone_name: string): vector
bone_parent(bone_id: number): number
bone_parent(bone_name: string): number
set_parent_bone(bone_id: number): void
set_parent_bone(bone_name: string): void
get_parent_bone(): number
list_bones(): TODO
// Bone callbacks (copy transform between bones, or supply a matrix functor)
bone_callback(bone_id: number, source_bone_id: number, enable: boolean): void
bone_callback(bone_name: string, source_bone_name: string, enable: boolean): void
bone_callback(bone_id: number, source_bone_name: string, enable: boolean): void
bone_callback(bone_name: string, source_bone_id: number, enable: boolean): void
bone_callback(bone_id: number, functor: (this: void) => matrix, enable: boolean): void
bone_callback(bone_name: string, functor: (this: void) => matrix, enable: boolean): void
remove_bone_callback(bone_id: number): void
remove_bone_callback(bone_name: string): void
// Model / type / animation
set_type(type: number): void
get_type(): number
set_model(model_name: string, keep_bone_callbacks?: boolean): void
get_model(): string
set_name(name: string): void
get_name(): string
/** @returns motion length */
play_motion(name: string, mixin?: boolean, speed?: number): number
// Script UI (attached UI window)
set_ui(ui_func: string): void
get_ui(): string
set_ui_bone(bone_id: number): void
set_ui_bone(bone_name: string): void
get_ui_bone(): number
set_ui_position(pos: vector): void
set_ui_position(x: number, y: number, z: number): void
get_ui_position(): vector
set_ui_rotation(rot: vector): void
set_ui_rotation(x: number, y: number, z: number): void
get_ui_rotation(): vector
set_ui_scale(scale: vector): void
set_ui_scale(x: number, y: number, z: number): void
get_ui_scale(): vector
set_ui_origin(origin: vector): void
set_ui_origin(x: number, y: number, z: number): void
get_ui_origin(): vector
// Lights
attach_light(light: TODO): void
detach_light(): void
get_light(): TODO
set_light_bone(bone_id: number): void
set_light_bone(bone_name: string): void
get_light_bone(): number
// Shaders
get_shaders(): TODO
get_default_shaders(): TODO
set_shader(id: number, shader: string, texture: string): void
reset_shader(id: number): void
}
interface holder {
/** Object currently occupying / owning the holder */
Owner(): CGameObject | null
}
interface CExplosive {
/** Id of the object that initiated the explosion */
Initiator(): number
SetInitiator(id: number): void
LoadExplosiveSection(section: Section): void
}
interface CCar {
GetSpeed(): number
SetTargetSpeed(mps: number): void
ClearTargetSpeed(): void
SetThrottle(k: number): void
SetSteer(k: number): void
GetWheelFriction(): number
SetWheelFriction(mu_factor: number): void
TransmissionUp(): void
TransmissionDown(): void
CurrentTransmission(): number
Transmission(num: number): void
RefWheelMaxSpeed(): number
EnginePower(): number
EngineCurTorque(): number
DoorOpen(id: number): boolean
DoorClose(id: number): boolean
DoorUse(id: number): boolean
DoorSwitch(id: number): boolean
IsDoor(id: number): boolean
SetUseAction(text: string): void
GetFlyWeightAdd(): number
SetFlyWeightAdd(value: number): void
/** Bone id of the elevator/aileron control */
GetControlEle(): number
GetControlYaw(): number
GetControlPit(): number
GetControlRol(): number
}
interface physics_shell {
apply_torque(x: number, y: number, z: number): void
set_force_exact_integration(value: boolean): void
set_linear_vel(vel: vector): void
set_angular_vel(vel: vector): void
}
interface physics_element {
apply_torque(x: number, y: number, z: number): void
}
interface render_device {
/** Pause the game with full flags (menu-style pause) */
pause_ex(pause: boolean): void
}
interface particles_object {
set_hud_mode(mode: boolean): void
}
interface CConsole {
/** @returns min/max bounds of a console float/integer variable */
get_variable_bounds(name: string): LuaMultiReturn<[min: number, max: number]>
/** @returns list of allowed token values of a console token variable */
get_token_list(name: string): string[]
}
/** Thrown weapon (grenade). New in modded exes. */
declare class CMissile extends CGameObject {
GetMinForce(): number
GetMaxForce(): number
GetThrowForce(): number
GetConstForce(): number
IsConstPower(): boolean
GetThrowPoint(): vector
GetThrowDir(): vector
}
declare const CMissile: {
readonly eThrowStart: number
readonly eReady: number
readonly eThrow: number
readonly eThrowEnd: number
}
/** Melee (knife) weapon. Hit params exported by modded exes. */
declare class CWeaponKnife extends CGameObject {
GetHit1Power(): number
GetHit2Power(): number
GetHit1PowerCritical(): number
GetHit2PowerCritical(): number
GetHit1Impulse(): number
GetHit2Impulse(): number
SetHit1Power(power: number): void
SetHit2Power(power: number): void
SetHit1PowerCritical(power: number): void
SetHit2PowerCritical(power: number): void
SetHit1Impulse(impulse: number): void
SetHit2Impulse(impulse: number): void
}
/** Stationary mounted machine gun. New in modded exes (`STATIONARYMGUN_NEW`). */
declare class CWeaponStatMgun extends CGameObject {
Action(id: number, flags: number): void
SetParam(id: number, value: vector): void
IsWorking(): boolean
GetState(): number
GetStateDelay(): number
GetReloadDelay(): number
GetOwner(): CGameObject | null
GetFirePos(): vector
GetFireDir(): vector
ExitPosition(): vector
GetTraverseLimitHorz(): vector2
SetTraverseLimitHorz(limit: vector2): void
GetTraverseLimitVert(): vector2
SetTraverseLimitVert(limit: vector2): void
GetActorOffsets(): vector
SetActorOffsets(offsets: vector): void
GetBaseDispersion(cartridge_k: number): number
GetFireDispersion(with_cartridge: boolean, for_crosshair?: boolean): number
GetAnimation(id: number): string
SetAnimation(id: number, anim: string): void
GetAmmoMagSize(): number
GetAmmoElapsed(): number
SetAmmoElapsed(count: number): void
GetAmmoType(): number
SetAmmoType(type: number): void
SetNextAmmoTypeOnReload(ammo_type?: number): void
}
declare const CWeaponStatMgun: {
readonly eWpnActivate: number
readonly eWpnFire: number
readonly eWpnDesiredPos: number
readonly eWpnDesiredDir: number
readonly eWpnDesiredAng: number
readonly eWpnReload: number
readonly eStateIdle: number
readonly eStateFire: number
readonly eStateReload: number
readonly eAnimBody: number
readonly eAnimLegs: number
}
/** Searchlight/projector. New in modded exes (`PROJECTOR_NEW`). */
declare class CProjector extends CGameObject {
Action(id: number, flags: number): void
SetParam(id: number, value: vector): void
}
declare const CProjector: {
readonly eActive: number
readonly eSwitch: number
readonly eDesiredPos: number
readonly eDesiredDir: number
readonly eDesiredAng: number
}
/** Silent solar rifle system weapon (`WeaponSSRS`). New object type, no extra script methods. */
declare class CWeaponSSRS extends CGameObject {}
// --- debug render ---
/** Base scriptable debug-render object. Obtained via the {@link debug_render} namespace. */
declare class DBG_ScriptObject {
/** Object-type constant passed to {@link debug_render.add_object}. */
static readonly line: number
static readonly sphere: number
static readonly box: number
color: fcolor
hud: boolean
visible: boolean
cast_dbg_sphere(): DBG_ScriptSphere | null
cast_dbg_box(): DBG_ScriptBox | null
cast_dbg_line(): DBG_ScriptLine | null
}
declare class DBG_ScriptSphere extends DBG_ScriptObject {
matrix: matrix
}
declare class DBG_ScriptBox extends DBG_ScriptObject {
matrix: matrix
size: vector
}
declare class DBG_ScriptLine extends DBG_ScriptObject {
point_a: vector
point_b: vector
}
declare namespace debug_render {
export function add_object(id: number, type: number): DBG_ScriptObject
export function add_object(name: string, type: number): DBG_ScriptObject
export function remove_object(id: number): void
export function remove_object(name: string): void
export function get_object(id: number): DBG_ScriptObject | null
export function get_object(name: string): DBG_ScriptObject | null
export function get_flags(): number
export function set_flags(flags: number): void
}