UNPKG

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.

1,011 lines (1,003 loc) 39.3 kB
// CGameObject subclasses, one file each (see ./gameobject/) /// <reference path="gameobject/CActor.d.ts" /> /// <reference path="gameobject/CInventoryOwner.d.ts" /> /// <reference path="gameobject/CInventoryBox.d.ts" /> /// <reference path="gameobject/CCustomOutfit.d.ts" /> /// <reference path="gameobject/CHelmet.d.ts" /> /// <reference path="gameobject/CArtefact.d.ts" /> /// <reference path="gameobject/CWeaponAmmo.d.ts" /> /// <reference path="gameobject/CWeapon.d.ts" /> /// <reference path="gameobject/CWeaponMagazined.d.ts" /> /// <reference path="gameobject/CWeaponMagazinedWGrenade.d.ts" /> /// <reference path="gameobject/CEatableItem.d.ts" /> /// <reference path="gameobject/CBottleItem.d.ts" /> /// <reference path="gameobject/CHelicopter.d.ts" /> /// <reference path="gameobject/CHangingLamp.d.ts" /> /// <reference path="gameobject/CZoneCampfire.d.ts" /> /// <reference path="gameobject/CPhysicObject.d.ts" /> /// <reference path="gameobject/CCustomZone.d.ts" /> /// <reference path="gameobject/CTorridZone.d.ts" /> /// <reference path="gameobject/CMosquitoBald.d.ts" /> /// <reference path="gameobject/CMedkit.d.ts" /> /// <reference path="gameobject/CAntirad.d.ts" /> /// <reference path="gameobject/CFoodItem.d.ts" /> /** * Global holder of the `game_object` luabind class enums, accessed as `game_object.enemy`, * `game_object.level_path` and so on. The instance type is {@link CGameObject}. * * Only the stable (non build-conditional) enums are listed. The `callback_types` enum is * intentionally omitted: its numeric values depend on engine compile flags (`INPUT_CALLBACKS`, * `EXTENDED_WEAPON_CALLBACKS`, …) and scripts address callbacks through the separate `callback` * table rather than through `game_object`. */ import type { Section } from 'anomaly-packer' declare global { const game_object: { // relation (ALife::ERelationType) readonly friend: 0 readonly neutral: 1 readonly enemy: 2 readonly dummy: -1 // path type (MovementManager::EPathType) readonly game_path: 0 readonly level_path: 1 readonly patrol_path: 2 readonly no_path: 3 // action type (ScriptEntity::EActionType) readonly movement: 0 readonly watch: 1 readonly animation: 2 readonly sound: 3 readonly particle: 4 readonly object: 5 readonly action_type_count: 6 // movement selection type (ESelectionType) readonly alifeMovementTypeMask: 0 readonly alifeMovementTypeRandom: 1 // pda message (EPdaMsg) readonly dialog_pda_msg: 0 readonly info_pda_msg: 1 readonly no_pda_msg: 2 // actor relations (RELATION_REGISTRY) readonly relation_kill: 0 readonly relation_attack: 1 readonly relation_fight_help_human: 2 readonly relation_fight_help_monster: 4 } /** * A functor passed to engine callback setters such as {@link CGameObject.set_callback}. * The bound `this` and argument list vary per callback type, so both are left open. */ type EngineCallback = (this: any, ...args: any[]) => any class CGameObject { constructor() health: number psy_health: number power: number satiety: number radiation: number morale: number // cast cast_Actor(): CActor // cast_Car() // cast_Heli() cast_InventoryOwner(): CInventoryOwner cast_InventoryBox(): CInventoryBox // cast_CustomZone() // cast_TorridZone() // cast_MosquitoBald() // cast_ZoneCampfire() cast_CustomOutfit(): CCustomOutfit cast_Helmet(): CHelmet cast_Artefact(): CArtefact cast_Ammo(): CWeaponAmmo cast_Weapon(): CWeapon cast_WeaponMagazined(): CWeaponMagazined cast_WeaponMagazinedWGrenade(): CWeaponMagazinedWGrenade cast_EatableItem(): CEatableItem cast_BottleItem(): CBottleItem // // shared // id(): number clsid(): number level_vertex_id(): number game_vertex_id(): number has_info(portion: string): boolean give_info_portion(portion: string): boolean disable_info_portion(portion: string): void /** Unique story id, @returns -1 (if not unique) */ story_id(): number position(): vector direction(): vector section(): Section.All /** XML name */ profile_name(): string | null name(): string /** Object to which this object belongs. Used for items in inventories and boxes */ parent(): CGameObject | null mass(): number /** Center of physical shell */ center(): vector bind_object(obj: CGameObject): void binded_object(): CGameObject | null // // Item // condition(): number | null set_condition(condition: number): void weight(): number | null set_weight(weight: number): void // // actor // change_health(health: number): void change_psy_health(psy: number): void change_power(power: number): void change_satiety(satiety: number): void change_radiation(rad: number): void change_morale(value: number): void set_actor_position(pos: vector): void set_actor_direction(dir: number): void give_game_news(caption: string, text: string, icon_path: string, delay_ms: number, duration_ms: number): void give_talk_message2(caption: string, text: string, icon_path: string, template?: string): void switch_to_trade(): void switch_to_talk(): void switch_to_upgrade(): void reload_weapon(): void hide_weapon(): void disable_hit_marks(_0: boolean): void get_task_state(task_id: string): number // ETaskState set_task_state(state: number /** ETaskState */, task_id: string): void give_task(task: CGameTask, dt: number, check_existing: boolean, timer: number): void set_active_task(task: CGameTask): void is_active_task(task: CGameTask): boolean get_task(id: string, only_in_process: boolean): CGameTask | null use(user: CGameObject): boolean start_trade(actor: CGameObject): void start_upgrade(actor: CGameObject): void // // npc (stalker or monster) // alive(): boolean play_sound(internal_type: number, max_start_type?: number, min_start_time?: number, max_stop_time?: number, min_stop_time?: number, id?: number): void get_enemy(): CGameObject | null get_corpse(): CGameObject | null get_enemy_strength(): number get_sound_info(): CScriptSoundInfo get_monster_hit_info(): CScriptMonsterHitInfo best_danger(): CDangerObject best_enemy(): CGameObject best_item(): CGameObject motivation_action_manager(): CScriptActionPlanner action_count(): number action_by_index(index: number): CScriptEntityAction memory_time(): number memory_position(obj: CGameObject): vector best_weapon(): CGameObject | null patrol(): string | null command(action: CScriptEntityAction, high_priority?: boolean): void action(): CScriptEntityAction accuracy(): number kill(by: CGameObject): void death_time(): number get_bleeding(): number fov(): number set_fov(fov: number): void range(): number set_range(range: number): void iterate_inventory(iterator: (npc: CGameObject, item: CGameObject) => void, npc: CGameObject): void max_health(): number set_sight(target: CGameObject): void who_hit_name(): string | null who_hit_section_name(): string | null active_slot(): number make_item_active(item: CGameObject): void item_in_slot(slot: number): CGameObject | null activate_slot(slot: number): void active_item(): CGameObject | null object_count(): number object(section: Section.Item): CGameObject | null inventory_for_each(iterator: (item: CGameObject, npc: CGameObject) => void): void team(): number squad(): number group(): number rank(): number character_rank(): number set_character_rank(rank: number): void character_name(): string | null character_icon(): string character_community(): string set_character_community(comm: Community, _0: 0, _1: 0): void money(): number transfer_money(sum: number, to: CGameObject): void give_money(sum: number): void drop_item(item: CGameObject): void drop_item_and_teleport(item: CGameObject, pos: vector): void eat(food: CGameObject): void enable_talk(): void disable_talk(): void is_talking(): boolean is_talk_enabled(): boolean enable_trade(): void disable_trade(): void is_trade_enabled(): boolean get_inv_weight(): number get_inv_max_weight(): number get_current_outfit(): CGameObject // // weapon // get_ammo_total(): void get_ammo_in_magazine(): number set_ammo_elapsed(count: number): void unload_magazine(keep_ammo: boolean): void force_unload_magazine(keep_ammo: boolean): void set_ammo_type(type: number): void get_ammo_type(): number get_ammo_count_for_type(type: number): number get_main_weapon_type(): number get_weapon_type(): number set_main_weapon_type(type: number): void set_weapon_type(type: number): void has_ammo_type(type: number): boolean get_weapon_substate(): number set_weight(weight: number): void // // weapon maganized // set_queue_size(size: number): void // // food // set_remaining_uses(uses: number): void get_remaining_uses(): number get_max_uses(): number // // explosives // explode(level_time: number): void // // internal sight fields (SightManager) // readonly m_object: CGameObject | null readonly m_vector: vector readonly m_sight_type: number // // --- rest of the vanilla game_object API (auto-derived from CScriptGameObject) --- // // // Monster abilities & special // burer_set_force_gravi_attack(force: boolean): void burer_get_force_gravi_attack(): boolean poltergeist_set_actor_ignore(ignore: boolean): void poltergeist_get_actor_ignore(): boolean force_stand_sleep_animation(index: number): void release_stand_sleep_animation(): void set_alien_control(val: boolean): void fake_death_fall_down(): boolean fake_death_stand_up(): void berserk(): void // // Trader & dialog // run_talk_dialog(pToWho: CGameObject, disable_break: boolean): void allow_break_talk_dialog(disable_break: boolean): void set_start_dialog(dialog_id: Dialog): void get_start_dialog(): void restore_default_start_dialog(): void show_condition(ini_file: system_ini, section: Section.Item): void buy_supplies(ini_file: system_ini, section: Section.Item): void is_trader(): boolean set_trader_global_anim(anim: string): void set_trader_head_anim(anim: string): void set_trader_sound(sound: string, anim: string): void external_sound_start(sound: string): void external_sound_stop(): void // // Doors // register_door_for_npc(): void unregister_door_for_npc(): void on_door_is_open(): void on_door_is_closed(): void lock_door_for_npc(): void unlock_door_for_npc(): void is_door_locked_for_npc(): boolean is_door_blocked_by_npc(): boolean // // Loopholes // in_loophole_fov(cover_id: string, loophole_id: string, object_position: vector): boolean in_current_loophole_fov(object_position: vector): boolean in_loophole_range(cover_id: string, loophole_id: string, object_position: vector): boolean in_current_loophole_range(object_position: vector): boolean // // Restrictions & restrictors // add_restrictions(out: string, in_: string): void remove_restrictions(out: string, in_: string): void remove_all_restrictions(): void in_restrictions(): string out_restrictions(): string base_in_restrictions(): string base_out_restrictions(): string set_restrictor_type(typ: number): void get_restrictor_type(): number is_space_restrictor(): boolean // // Devices: detector, torch, night vision // active_detector(): CGameObject | null hide_detector(bFast: boolean): void force_hide_detector(): void show_detector(bFast: boolean): void night_vision_allowed(value: boolean): void enable_night_vision(value: boolean): void night_vision_enabled(): boolean enable_torch(value: boolean): void torch_enabled(): boolean // // Info portions // dont_has_info(info_id: InfoPortion): boolean // // Deadbody & inventory owner // deadbody_closed(status: boolean): void deadbody_closed_status(): boolean deadbody_can_take(status: boolean): void deadbody_can_take_status(): boolean // // Movement, path & AI planner // set_invisible(val: boolean): void set_body_state(body_state: number): void set_movement_type(movement_type: number): void set_mental_state(mental_state: number): void set_path_type(path_type: number): void set_detail_path_type(detail_path_type: number): void body_state(): number target_body_state(): number movement_type(): number target_movement_type(): number mental_state(): number target_mental_state(): number path_type(): number detail_path_type(): number set_patrol_path(path_name: string, patrol_start_type: number, patrol_route_type: number, random: boolean): void inactualize_patrol_path(): void set_dest_level_vertex_id(level_vertex_id: number): void set_dest_game_vertex_id(game_vertex_id: number): void set_movement_selection_type(selection_type: number /** ESelectionType */): void get_movement_speed(): vector vertex_in_direction(level_vertex_id: number, direction: vector, max_distance: number): number debug_planner(planner: CScriptActionPlanner): void get_smart_cover_description(): string find_best_cover(position_to_cover_from: vector): CCoverPoint in_smart_cover(): boolean get_dest_smart_cover_name(): string set_smart_cover_target_idle(): void set_smart_cover_target_lookout(): void set_smart_cover_target_fire(): void set_smart_cover_target_fire_no_lookout(): void set_smart_cover_target_default(value: boolean): void movement_target_reached(): boolean suitable_smart_cover(_object: CGameObject): boolean set_previous_point(point_index: number): void set_start_point(point_index: number): void get_current_point_index(): number path_completed(): boolean patrol_path_make_inactual(): void best_cover(position: vector, enemy_position: vector, radius: number, min_enemy_distance: number, max_enemy_distance: number): CCoverPoint safe_cover(position: vector, radius: number, min_distance: number): CCoverPoint accessible(position: vector): boolean accessible(level_vertex_id: number): boolean accessible_nearest(position: vector, result: vector): number location_on_path(distance: number, location: vector): number sight_params(): CSightParams movement_enabled(enable: boolean): void movement_enabled(): boolean actor_look_at_point(point: vector): void actor_stop_look_at_point(): void // // Vision & memory // set_visual_memory_enabled(enabled: boolean): void see(tpLuaGameObject: CGameObject): boolean see(section_name: string): boolean force_visibility_state(state: number): void get_visibility_state(): number set_manual_invisibility(val: boolean): void get_current_direction(): vector head_orientation(): vector enable_memory_object(_object: CGameObject, enable: boolean): void memory_visible_objects(): number memory_sound_objects(): number memory_hit_objects(): number not_yet_visible_objects(): number visibility_threshold(): number make_object_visible_somewhen(_object: CGameObject): void bone_visible(bone_name: string, bHud?: boolean): boolean set_bone_visible(bone_name: string, bVisibility: boolean, bRecursive?: boolean, bHud?: boolean): void // // Sound // remove_sound(internal_type: number): void set_sound_mask(sound_mask: number): void set_sound_threshold(value: number): void restore_sound_threshold(): void disable_show_hide_sounds(val: boolean): void sound_voice_prefix(): string // // Animation & HUD // clear_override_animation(): void set_capture_anim(e: CGameObject, e_str: string, position: vector, factor: number): void clear_animations(): void animation_count(): number animation_slot(): number play_hud_motion(M: string, bMixIn: boolean, state: number, speed?: number, end?: number): number set_color_animator(name: string, bFlicker: boolean, flickerChance: number, flickerDelay: number, framerate: number): void reset_color_animator(): void is_hud_item(): boolean // // Inventory, belt & slots // enable_inv_upgrade(): void disable_inv_upgrade(): void is_inv_upgrade_enabled(): boolean transfer_item(pItem: CGameObject, pForWho: CGameObject): void take_item(pItem: CGameObject): void iterate_ruck(iterator: (npc: CGameObject, item: CGameObject) => void, npc: CGameObject): void iterate_belt(iterator: (npc: CGameObject, item: CGameObject) => void, npc: CGameObject): void iterate_inventory_box(iterator: (npc: CGameObject, item: CGameObject) => void, npc: CGameObject): void move_to_ruck(pItem: CGameObject): void move_to_slot(pItem: CGameObject, slot_id: number): void move_to_belt(pItem: CGameObject): void is_on_belt(obj: CGameObject): boolean item_on_belt(item_id: number): CGameObject | null belt_count(): number item_allow_trade(pItem: CGameObject): void item_deny_trade(pItem: CGameObject): void is_inv_box_empty(): boolean inv_box_closed(status: boolean, reason: string): boolean inv_box_closed_status(): boolean inv_box_can_take(status: boolean): boolean inv_box_can_take_status(): boolean marked_dropped(item: CGameObject): boolean // // Combat, weapon & enemy // set_force_anti_aim(force: boolean): void get_force_anti_aim(): boolean set_enemy(e: CGameObject): void skip_transfer_enemy(val: boolean): void set_custom_panic_threshold(value: number): void set_default_panic_threshold(): void register_in_combat(): void unregister_in_combat(): void is_weapon_going_to_be_strapped(_object: CGameObject): boolean weapon_strapped(): boolean weapon_unstrapped(): boolean restore_weapon(): void weapon_is_grenadelauncher(): boolean weapon_is_scope(): boolean weapon_is_silencer(): boolean weapon_grenadelauncher_status(): number weapon_scope_status(): number weapon_silencer_status(): number ammo_get_count(): number ammo_set_count(count: number): void ammo_box_size(): number weapon_addon_attach(item: CGameObject): void weapon_addon_detach(item_section: Section.Item, b_spawn_item?: boolean): void weapon_in_grenade_mode(): boolean phantom_set_enemy(a0: CGameObject): void is_weapon(): boolean is_grenade_launcher(): boolean is_weapon_magazined(): boolean is_ammo(): boolean is_weapon_gl(): boolean // // Relations, community & info // relation(who: CGameObject): number ignore_monster_threshold(): number ignore_monster_threshold(threshold: number): void restore_ignore_monster_threshold(): void max_ignore_monster_distance(): number max_ignore_monster_distance(distance: number): void restore_max_ignore_monster_distance(): void goodwill(pToWho: CGameObject): number set_goodwill(goodwill: number, pWhoToSet: CGameObject): void force_set_goodwill(goodwill: number, pWhoToSet: CGameObject): void change_goodwill(delta_goodwill: number, pWhoToSet: CGameObject): void general_goodwill(pToWho: CGameObject): number set_relation(relation: number, pWhoToSet: CGameObject): void community_goodwill(community: Community): number set_community_goodwill(community: Community, goodwill: number): void sympathy(): number set_sympathy(sympathy: number): void change_character_rank(a0: number): void character_reputation(): number set_character_reputation(a0: number): void change_character_reputation(a0: number): void get_actor_relation_flags(): Flags set_actor_relation_flags(flags: Flags): void set_character_icon(iconName: string): void // // Callbacks & scripting control // script(f: boolean, g: string): void get_script(): boolean get_script_name(): string set_vis_state(value: number): void set_collision_off(val: boolean): void can_script_capture(): boolean set_visual_name(visual: string, bForce?: boolean): void set_nonscript_usable(nonscript_usable: boolean): void // // Attachable items // enable_attachable_item(value: boolean): void attachable_item_enabled(): boolean attachable_item_load_attach(section: Section.Item): void // // Anomaly zone // enable_anomaly(): void disable_anomaly(): void get_anomaly_power(): number set_anomaly_power(p: number): void get_anomaly_radius(): number set_anomaly_radius(p: number): void set_anomaly_position(pos: vector): void is_anomaly(): boolean // // Misc // cost(): number power_critical(): number psy_factor(): number set_psy_factor(val: number): void hit(tLuaHit: hit): void reset_action_queue(): void object_id(id: number): CGameObject | null remove_home(): void get_current_outfit_protection(hit_type: number): number set_npc_position(pos: vector): void get_visual_name(): string spawn_ini(): system_ini enable_vision(value: boolean): void vision_enabled(): boolean bone_position(bone_name: string, bHud?: boolean): vector bone_name(id: number, bHud: boolean): string is_body_turning(): boolean stop_talk(): void allow_sprint(b: boolean): void set_idle_particles(name: string, bIdleLight: boolean): void get_artefact_health(): number get_artefact_radiation(): number get_artefact_satiety(): number get_artefact_power(): number get_artefact_bleeding(): number get_artefact_immunity(hit_type: number): number set_artefact_health(value: number): void set_artefact_radiation(value: number): void set_artefact_satiety(value: number): void set_artefact_power(value: number): void set_artefact_bleeding(value: number): void set_artefact_immunity(hit_type: number, value: number): void get_helicopter(): CHelicopter get_car(): CCar get_hanging_lamp(): CHangingLamp get_bone_id(bone_name: string): number get_physics_shell(): physics_shell | null get_holder_class(): CHolderCustom get_current_holder(): CHolderCustom set_tip_text(tip_text: string): void set_tip_text_default(): void active_zone_contact(id: number): boolean set_fastcall<T>(functor: (object: T) => boolean, object: T): void set_const_force(dir: vector, value: number, time_interval: number): void info_add(text: string): void info_clear(): void jump(position: vector, factor: number): void buy_item_condition_factor(factor: number): void buy_item_exponent(factor: number): void sell_item_exponent(factor: number): void is_there_items_to_pickup(): boolean mark_item_dropped(item: CGameObject, flag: boolean): void critically_wounded(): boolean get_campfire(): CZoneCampfire get_artefact(): CArtefact get_physics_object(): CPhysicObject enable_level_changer(b: boolean): void is_level_changer_enabled(): boolean set_level_changer_invitation(str: string): void start_particles(pname: string, bone: string): void stop_particles(pname: string, bone: string): void attach_vehicle(veh: CGameObject, bForce?: boolean): void detach_vehicle(bForce?: boolean): void get_attached_vehicle(): CGameObject | null reset_bone_protections(imm_sect: string, bone_sect: string): void iterate_feel_touch(functor: (id: number) => void): void get_luminocity_hemi(): number get_luminocity(): number set_health_ex(hp: number): void force_set_position(pos: vector, enable?: boolean): void force_set_rotation(rot: vector, enable?: boolean): void set_spatial_type(sptype: number): void get_spatial_type(): number destroy_object(): void install_upgrade(upgrade: string): boolean has_upgrade(upgrade: string): boolean iterate_installed_upgrades(functor: (upgrade_section: string, owner: CGameObject) => boolean): void switch_state(state: number): void get_state(): number cast_Car(): CCar cast_Heli(): CHelicopter cast_CustomZone(): CCustomZone cast_TorridZone(): CTorridZone cast_MosquitoBald(): CMosquitoBald cast_ZoneCampfire(): CZoneCampfire cast_InventoryItem(): CInventoryItem cast_Medkit(): CMedkit cast_Antirad(): CAntirad cast_FoodItem(): CFoodItem is_entity_alive(): boolean is_inventory_item(): boolean is_inventory_owner(): boolean is_actor(): boolean is_custom_monster(): boolean is_outfit(): boolean is_helmet(): boolean is_scope(): boolean is_silencer(): boolean is_stalker(): boolean is_monster(): boolean is_artefact(): boolean is_inventory_box(): boolean get_actor_max_weight(): number set_actor_max_weight(max_weight: number): void get_actor_max_walk_weight(): number set_actor_max_walk_weight(max_walk_weight: number): void get_additional_max_weight(): number set_additional_max_weight(add_max_weight: number): void get_additional_max_walk_weight(): number set_additional_max_walk_weight(add_max_walk_weight: number): void get_total_weight(): number get_actor_jump_speed(): number set_actor_jump_speed(jump_speed: number): void get_actor_sprint_koef(): number set_actor_sprint_koef(sprint_koef: number): void get_actor_run_coef(): number set_actor_run_coef(run_coef: number): void get_actor_runback_coef(): number set_actor_runback_coef(run_back_coef: number): void set_can_be_harmed(state: boolean): void can_be_harmed(): boolean // Engine bindings previously missing verified against script_game_object.h / *.cpp active_sound_count(): number add_animation(animation: string, hand_usage: boolean, use_movement_controller: boolean): void add_animation(animation: string, hand_usage: boolean, position: vector, rotation: vector, local_animation: boolean): void add_sound(prefix: string, max_count: number, type: number, priority: number, mask: number, internal_type: number, bone_name?: string, head_anim?: string): number add_combat_sound(prefix: string, max_count: number, type: number, priority: number, mask: number, internal_type: number, bone_name: string): number aim_bone_id(): string aim_bone_id(value: string): void aim_time(weapon: CGameObject): number aim_time(weapon: CGameObject, time: number): void apply_loophole_direction_distance(): number apply_loophole_direction_distance(value: number): void buy_condition(ini_file: system_ini, section: Section.Item): void buy_condition(friend_factor: number, enemy_factor: number): void can_select_weapon(): boolean can_select_weapon(status: boolean): void can_throw_grenades(): boolean change_team(team: number, squad: number, group: number): void death_sound_enabled(): boolean death_sound_enabled(value: boolean): void extrapolate_length(): number extrapolate_length(extrapolate_length: number): void get_dest_smart_cover(): CCoverPoint give_talk_message(caption: string, icon: string, text: string): void group_throw_time_interval(): number group_throw_time_interval(throw_time_interval: number): void idle_max_time(): number idle_min_time(): number inside(position: vector, epsilon: number): boolean invulnerable(): boolean invulnerable(invulnerable: boolean): void lookout_max_time(): number lookout_min_time(): number play_cycle(anim: string): void play_cycle(anim: string, mix_in: boolean): void sell_condition(ini_file: system_ini, section: Section.Item): void sell_condition(friend_factor: number, enemy_factor: number): void set_callback(type: number): void set_callback(type: number, functor: EngineCallback | null, object?: any): void set_desired_direction(): void set_desired_position(): void set_dest_loophole(): void set_dest_loophole(loophole_id: string): void set_dest_smart_cover(): void set_dest_smart_cover(cover_id: string): void set_enemy_callback(): void set_enemy_callback(functor: (this: void, ...args: any[]) => boolean): void set_enemy_callback(functor: (this: void, ...args: any[]) => boolean, object: any): void set_home(name: string, r_min: number, r_max: number, aggressive: boolean, r_mid: number): void set_home(lv_id: number, r_min: number, r_max: number, aggressive: boolean, r_mid: number): void set_item(object_action: number): void set_item(object_action: number, game_object: CGameObject): void set_item(object_action: number, game_object: CGameObject, queue_size: number): void set_item(object_action: number, game_object: CGameObject, queue_size: number, queue_interval: number): void set_override_animation(anim_name: string): void set_patrol_extrapolate_callback(): void set_patrol_extrapolate_callback(functor: EngineCallback | null, object?: any): void set_smart_cover_target(): void set_smart_cover_target(position: vector): void set_smart_cover_target(object: CGameObject): void set_smart_cover_target_selector(): void set_smart_cover_target_selector(functor: (this: void, ...args: any[]) => void): void set_smart_cover_target_selector(functor: (this: void, ...args: any[]) => void, object: any): void sniper_fire_mode(): boolean sniper_fire_mode(value: boolean): void sniper_update_rate(): boolean sniper_update_rate(value: boolean): void sound_prefix(): string sound_prefix(sound_prefix: string): void special_danger_move(): boolean special_danger_move(value: boolean): void take_items_enabled(): boolean take_items_enabled(value: boolean): void use_smart_covers_only(): boolean use_smart_covers_only(value: boolean): void wounded(): boolean wounded(value: boolean): void } // // casts // // // Engine object types returned by game_object getters/casts. Declared as stubs // (correct luabind/engine name) to keep return types precise; members to be // filled in from the engine as needed. Not registered as script game objects, // so they carry no CGameObject methods. // /** Sight parameters (luabind class `CSightParams`). */ class CSightParams { readonly m_object: CGameObject readonly m_vector: vector /** One of the `CSightParams.eSightType*` constants. */ readonly m_sight_type: number } /** Sight-type constants of the `CSightParams` luabind class (`SightManager::ESightType`). */ const CSightParams: { readonly eSightTypeCurrentDirection: 0 readonly eSightTypePathDirection: 1 readonly eSightTypeDirection: 2 readonly eSightTypePosition: 3 readonly eSightTypeObject: 4 readonly eSightTypeCover: 5 readonly eSightTypeSearch: 6 readonly eSightTypeLookOver: 7 readonly eSightTypeCoverLookOver: 8 readonly eSightTypeFireObject: 9 readonly eSightTypeFirePosition: 10 readonly eSightTypeAnimationDirection: 11 readonly eSightTypeDummy: -1 } /** * Engine base-client object (luabind class `CGameObject`, C++ `CGameObject` from * `base_client_classes`). This is a DIFFERENT class from the `game_object` * (`CScriptGameObject`) modelled by {@link CGameObject}: it is the common engine base of * non-scriptable objects such as {@link CCar}, {@link CHelicopter}, {@link CPhysicObject} * and {@link CZoneCampfire}, which are obtained through the `game_object:get_*()` / * `cast_*()` accessors and expose only these low-level members (not the rich `game_object` * API). Modelled as an interface so it does not shadow the `CGameObject` value. */ interface CGameObjectBase { _construct(): CGameObjectBase Visual(): IRender_Visual net_Export(packet: net_packet): void net_Import(packet: net_packet): void net_Spawn(se_abstract: CseAbstract): boolean use(who_use: CGameObjectBase): boolean getVisible(): boolean getEnabled(): boolean } /** Render visual of an object (luabind class `IRender_Visual`, C++ `IRenderVisual`), returned by {@link CGameObjectBase.Visual}. */ class IRender_Visual { dcast_PKinematicsAnimated(): IKinematicsAnimated | null } /** Animated skeleton visual (luabind class `IKinematicsAnimated`). */ class IKinematicsAnimated { PlayCycle(anim: string): void } /** Animation blend handle (luabind class `CBlend`). */ class CBlend {} /** Last monster hit info (luabind class `MonsterHitInfo`, C++ `CScriptMonsterHitInfo`). */ class CScriptMonsterHitInfo { who: CGameObject | null direction: vector time: number } /** A perceived danger (luabind class `danger_object`, C++ `CDangerObject`). */ class CDangerObject { position(): vector time(): number /** One of the `CDangerObject.danger_type` constants. */ type(): number /** One of the `CDangerObject.danger_perceive_type` constants. */ perceive_type(): number object(): CGameObject | null dependent_object(): CGameObject | null } /** Enum constants of the `danger_object` luabind class (`danger_type`/`danger_perceive_type`). */ const CDangerObject: { readonly bullet_ricochet: 0 readonly attack_sound: 1 readonly entity_attacked: 2 readonly entity_death: 3 readonly entity_corpse: 4 readonly attacked: 5 readonly grenade: 6 readonly enemy_sound: 7 readonly visual: 0 readonly sound: 1 readonly hit: 2 } // --- GOAP planner core (xrGame graph-engine script bindings) --- /** * A single world-state property: a `(condition_id, value)` pair * (luabind class `world_property`, C++ `CScriptWorldProperty`). * @customConstructor world_property */ class CScriptWorldProperty { constructor(condition: number, value: boolean) condition(): number value(): boolean } /** * A set of {@link CScriptWorldProperty} entries (luabind class `world_state`, * C++ `CScriptWorldState`). * @customConstructor world_state */ class CScriptWorldState { constructor() constructor(other: CScriptWorldState) add_property(property: CScriptWorldProperty): void remove_property(condition: number): void clear(): void includes(state: CScriptWorldState): boolean property(condition: number): CScriptWorldProperty } /** * Solver property storage mapping condition ids to boolean values * (luabind class `property_storage`, C++ `CPropertyStorage`). * @customConstructor property_storage */ class CPropertyStorage { constructor() set_property(condition: number, value: boolean): void property(condition: number): boolean } /** * Property evaluator, subclassable from Lua/TS (luabind class `property_evaluator`, * C++ `CScriptPropertyEvaluator`). * @customConstructor property_evaluator */ class CScriptPropertyEvaluator { readonly object: CGameObject readonly storage: CPropertyStorage constructor() constructor(object: CGameObject) constructor(object: CGameObject, name: string) setup(object: CGameObject, storage: CPropertyStorage): void evaluate(): boolean } /** * Constant-value property evaluator (luabind class `property_evaluator_const`). * @customConstructor property_evaluator_const */ class CPropertyEvaluatorConst extends CScriptPropertyEvaluator { constructor(value: boolean) } /** * GOAP action, subclassable from Lua/TS (luabind class `action_base`, * C++ `CScriptActionBase`). * @customConstructor action_base */ class CScriptActionBase { readonly object: CGameObject readonly storage: CPropertyStorage constructor() constructor(object: CGameObject) constructor(object: CGameObject, name: string) add_precondition(condition: CScriptWorldProperty): void add_effect(effect: CScriptWorldProperty): void remove_precondition(condition: number): void remove_effect(condition: number): void setup(object: CGameObject, storage: CPropertyStorage): void initialize(): void execute(): void finalize(): void set_weight(weight: number): void show(caption: string): void } /** * GOAP action planner: holds actions and evaluators and drives the solver * (luabind class `action_planner`, C++ `CScriptActionPlanner`). * @customConstructor action_planner */ class CScriptActionPlanner { readonly object: CGameObject readonly storage: CPropertyStorage constructor() /** Whether the current plan is still actual. */ actual(): boolean setup(object: CGameObject): void update(): void add_action(action_id: number, action: CScriptActionBase): void remove_action(action_id: number): void action(action_id: number): CScriptActionBase add_evaluator(evaluator_id: number, evaluator: CScriptPropertyEvaluator): void remove_evaluator(evaluator_id: number): void evaluator(evaluator_id: number): CScriptPropertyEvaluator current_action_id(): number current_action(): CScriptActionBase initialized(): boolean set_goal_world_state(world_state: CScriptWorldState): void clear(): void show(caption: string): void } /** * An action that is itself a planner (luabind class `planner_action`, * C++ `CScriptActionPlannerAction`; engine bases `action_planner` + `action_base`). * @customConstructor planner_action */ interface CScriptActionPlannerAction extends CScriptActionPlanner, CScriptActionBase {} class CScriptActionPlannerAction { constructor() constructor(object: CGameObject) constructor(object: CGameObject, name: string) weight(): number } /** * Composite monster/entity action (luabind class `entity_action`, C++ `CScriptEntityAction`). * Its `set_action` accepts the monster action objects (`move`/`look`/`anim`/`sound`/`particle`/ * `object`/`cond`/`act`), which are not yet modelled; typed loosely for now. */ class CScriptEntityAction { constructor() constructor(other: CScriptEntityAction) set_action(action: object): void move(): boolean look(): boolean anim(): boolean sound(): boolean particle(): boolean object(): boolean time(): boolean all(): boolean completed(): boolean } /** A cover point (luabind class `cover_point`, C++ `CCoverPoint`). */ class CCoverPoint { position(): vector level_vertex_id(): number is_smart_cover(): boolean } /** Vehicle/holder interface (luabind class `holder`, C++ `CHolderCustom`). */ class CHolderCustom { /** Whether the holder currently has an owner. */ engaged(): boolean Action(id: number, flags: number): void SetParam(id: number, value: vector): void SetEnterLocked(locked: boolean): void SetExitLocked(locked: boolean): void } class CInventoryItem {} }