diff --git a/artifacts/scripting/headers/sfall.h b/artifacts/scripting/headers/sfall.h index 01fa1a83..a2e56717 100644 --- a/artifacts/scripting/headers/sfall.h +++ b/artifacts/scripting/headers/sfall.h @@ -362,6 +362,7 @@ #define overlay_clear_rectangle(winType, x, y, w, h) sfall_func6("interface_overlay", winType, 2, x, y, w, h) #define overlay_destroy(winType) sfall_func2("interface_overlay", winType, 0) #define real_dude_obj sfall_func0("real_dude_obj") +#define reg_anim_animate_and_move(obj, tile, animID, delay) sfall_func4("reg_anim_animate_and_move", obj, tile, animID, delay) #define remove_all_timer_events sfall_func0("remove_timer_event") #define remove_timer_event(fixedParam) sfall_func1("remove_timer_event", fixedParam) #define set_can_rest_on_map(map, elev, value) sfall_func3("set_can_rest_on_map", map, elev, value) diff --git a/artifacts/scripting/sfall function notes.md b/artifacts/scripting/sfall function notes.md index 5fb4a0e3..c2ce94c1 100644 --- a/artifacts/scripting/sfall function notes.md +++ b/artifacts/scripting/sfall function notes.md @@ -254,7 +254,8 @@ FUNCTION REFERENCE ----- ##### `void reg_anim_animate_and_hide(object obj, int animID, int delay)` -- Exactly like `reg_anim_animate` but the object will automatically disappear after the last animation frame (but not destroyed). +- Works exactly like `reg_anim_animate` but the object will automatically disappear after the last animation frame (but not destroyed). +- `delay`: delay from the previous animation. A value of -1 will execute the specified animation immediately after the previous one in the sequence ends. ----- ##### `void reg_anim_light(object obj, int light, int delay)` @@ -1110,6 +1111,12 @@ sfall_funcX metarule functions **Optional argument:** - `pos`: the position at which to start the search. If negative, it indicates a position starting from the end of the string +---- +#### reg_anim_animate_and_move +`void sfall_func4("reg_anim_animate_and_move", object obj, int tile, int animID, int delay)` +- Plays the specified animation while simultaneously moving the object to the given tile +- `delay`: delay from the previous animation. A value of -1 will execute the specified animation immediately after the previous one in the sequence ends + **** _See other documentation files (arrays.md, hookscripts.md) for related functions reference._ diff --git a/sfall/FalloutEngine/FunctionOffsets_def.h b/sfall/FalloutEngine/FunctionOffsets_def.h index a1f1c351..21946abb 100644 --- a/sfall/FalloutEngine/FunctionOffsets_def.h +++ b/sfall/FalloutEngine/FunctionOffsets_def.h @@ -631,15 +631,38 @@ FUNC(refresh_mapper_, 0x4B1554) FUNC(register_begin_, 0x413AF4) FUNC(register_clear_, 0x413C4C) FUNC(register_end_, 0x413CCC) -FUNC(register_object_animate_, 0x4149D0) // int aObj, int aAnim, int delay -FUNC(register_object_animate_and_hide_, 0x414B7C) // int aObj, int aAnim, int delay +FUNC(register_object_animate_, 0x4149D0) +FUNC(register_object_animate_and_hide_, 0x414B7C) +FUNC(register_object_animate_and_move_straight_, 0x4146C4) +FUNC(register_object_animate_forever_, 0x4154C4) +FUNC(register_object_animate_reverse_, 0x414AA8) +FUNC(register_object_call3_, 0x414F20) FUNC(register_object_call_, 0x414E98) -FUNC(register_object_change_fid_, 0x41518C) // int aObj, int aFid, int aDelay -FUNC(register_object_funset_, 0x4150A8) // int aObj, int ???, int aDelay - not really sure what this does -FUNC(register_object_light_, 0x415334) // (int aObj, int aRadius, int aDelay) -FUNC(register_object_must_erase_, 0x414E20) // int aObj -FUNC(register_object_take_out_, 0x415238) // int aObj, int aHoldFrame - hold frame ID (1 - spear, 2 - club, etc.) -FUNC(register_object_turn_towards_, 0x414C50) // int aObj, int aTile +FUNC(register_object_change_fid_, 0x41518C) +FUNC(register_object_check_falling_, 0x4148F0) +FUNC(register_object_dec_rotation_, 0x414D38) +FUNC(register_object_erase_, 0x414DA8) +FUNC(register_object_flatten_, 0x41511C) +FUNC(register_object_fset_, 0x415034) +FUNC(register_object_funset_, 0x4150A8) +FUNC(register_object_inc_rotation_, 0x414CC8) +FUNC(register_object_light_, 0x415334) +FUNC(register_object_move_on_stairs_, 0x4147B8) +FUNC(register_object_move_straight_to_tile_, 0x4145D0) +FUNC(register_object_move_to_object_, 0x413F5C) +FUNC(register_object_move_to_tile_, 0x414294) +FUNC(register_object_must_call_, 0x414FAC) +FUNC(register_object_must_erase_, 0x414E20) +FUNC(register_object_outline_, 0x4153A8) +FUNC(register_object_play_sfx_, 0x41541C) +FUNC(register_object_run_to_object_, 0x41405C) +FUNC(register_object_run_to_tile_, 0x414394) +FUNC(register_object_take_out_, 0x415238) +FUNC(register_object_turn_towards_, 0x414C50) +FUNC(register_pause_, 0x4C8F34) +FUNC(register_ping_, 0x415598) +FUNC(register_priority_, 0x413C20) +FUNC(register_screendump_, 0x4C9358) FUNC(remove_bk_process_, 0x4C8DC4) FUNC(report_explosion_, 0x413144) FUNC(reset_box_bar_win_, 0x4614A0) diff --git a/sfall/FalloutEngine/Functions_def.h b/sfall/FalloutEngine/Functions_def.h index d33f0a90..41a7ddda 100644 --- a/sfall/FalloutEngine/Functions_def.h +++ b/sfall/FalloutEngine/Functions_def.h @@ -54,6 +54,7 @@ WRAP_WATCOM_FUNC3(long, obj_new_sid_inst, fo::GameObject*, object, long, sType, WRAP_WATCOM_FUNC3(fo::GameObject*, object_under_mouse, long, crSwitch, long, inclDude, long, elevation) WRAP_WATCOM_FUNC4(void, qsort, void*, base, long, number, long, elSize, DWORD, comp) WRAP_WATCOM_FUNC4(long, queue_add, long, time, fo::GameObject*, object, void*, data, long, qType) +WRAP_WATCOM_FUNC5(long, register_object_animate_and_move_straight, fo::GameObject*, object, long, tile, long, elevation, long, anim, long, delay) WRAP_WATCOM_FUNC4(void, register_object_call, long*, target, long*, source, void*, func, long, delay) WRAP_WATCOM_FUNC3(long, scr_get_local_var, long, sid, long, varId, long*, value) WRAP_WATCOM_FUNC3(long, scr_set_local_var, long, sid, long, varId, long, value) diff --git a/sfall/Modules/Scripting/Handlers/Anims.cpp b/sfall/Modules/Scripting/Handlers/Anims.cpp index f06d7389..c6bc26c2 100644 --- a/sfall/Modules/Scripting/Handlers/Anims.cpp +++ b/sfall/Modules/Scripting/Handlers/Anims.cpp @@ -64,7 +64,7 @@ void op_reg_anim_animate_and_hide(OpcodeContext& ctx) { if (!checkCombatMode()) { fo::GameObject* obj = ctx.arg(0).object(); int animId = ctx.arg(1).rawValue(), - delay = ctx.arg(2).rawValue(); + delay = ctx.arg(2).rawValue(); fo::func::register_object_animate_and_hide(obj, animId, delay); } @@ -74,7 +74,7 @@ void op_reg_anim_light(OpcodeContext& ctx) { if (!checkCombatMode()) { fo::GameObject* obj = ctx.arg(0).object(); int radius = ctx.arg(1).rawValue(), - delay = ctx.arg(2).rawValue(); + delay = ctx.arg(2).rawValue(); if (radius < 0) { radius = 0; @@ -89,7 +89,7 @@ void op_reg_anim_change_fid(OpcodeContext& ctx) { if (!checkCombatMode()) { fo::GameObject* obj = ctx.arg(0).object(); int fid = ctx.arg(1).rawValue(), - delay = ctx.arg(2).rawValue(); + delay = ctx.arg(2).rawValue(); fo::func::register_object_change_fid(obj, fid, delay); } @@ -109,7 +109,7 @@ void op_reg_anim_turn_towards(OpcodeContext& ctx) { if (!checkCombatMode()) { fo::GameObject* obj = ctx.arg(0).object(); int tile = ctx.arg(1).rawValue(), - nothing = ctx.arg(2).rawValue(); + nothing = ctx.arg(2).rawValue(); fo::func::register_object_turn_towards(obj, tile, nothing); } @@ -131,6 +131,17 @@ void op_reg_anim_callback(OpcodeContext& ctx) { ); } +void mf_reg_anim_animate_and_move(OpcodeContext& ctx) { + if (!checkCombatMode()) { + fo::GameObject* obj = ctx.arg(0).object(); + int tile = ctx.arg(1).rawValue(), + animId = ctx.arg(2).rawValue(), + delay = ctx.arg(3).rawValue(); + + fo::func::register_object_animate_and_move_straight(obj, tile, obj->elevation, animId, delay); + } +} + void op_explosions_metarule(OpcodeContext& ctx) { int mode = ctx.arg(0).rawValue(), result = ExplosionsMetaruleFunc(mode, ctx.arg(1).rawValue(), ctx.arg(2).rawValue()); diff --git a/sfall/Modules/Scripting/Handlers/Anims.h b/sfall/Modules/Scripting/Handlers/Anims.h index cbe1abd3..4cc23c8c 100644 --- a/sfall/Modules/Scripting/Handlers/Anims.h +++ b/sfall/Modules/Scripting/Handlers/Anims.h @@ -40,6 +40,8 @@ void op_reg_anim_take_out(OpcodeContext&); void op_reg_anim_turn_towards(OpcodeContext&); void op_reg_anim_callback(OpcodeContext&); +void mf_reg_anim_animate_and_move(OpcodeContext&); + void op_explosions_metarule(OpcodeContext&); void op_art_exists(OpcodeContext&); diff --git a/sfall/Modules/Scripting/Handlers/Metarule.cpp b/sfall/Modules/Scripting/Handlers/Metarule.cpp index c587dd74..1735b440 100644 --- a/sfall/Modules/Scripting/Handlers/Metarule.cpp +++ b/sfall/Modules/Scripting/Handlers/Metarule.cpp @@ -70,100 +70,101 @@ static MetaruleTableType metaruleTable; - arg1, arg2, ... - argument types for automatic validation */ static const SfallMetarule metarules[] = { - {"add_extra_msg_file", mf_add_extra_msg_file, 1, 2, -1, {ARG_STRING, ARG_INT}}, - {"add_iface_tag", mf_add_iface_tag, 0, 0}, - {"add_g_timer_event", mf_add_g_timer_event, 2, 2, -1, {ARG_INT, ARG_INT}}, - {"add_trait", mf_add_trait, 1, 1, -1, {ARG_INT}}, - {"art_cache_clear", mf_art_cache_flush, 0, 0}, - {"attack_is_aimed", mf_attack_is_aimed, 0, 0}, - {"car_gas_amount", mf_car_gas_amount, 0, 0}, - {"combat_data", mf_combat_data, 0, 0}, - {"create_win", mf_create_win, 5, 6, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"critter_inven_obj2", mf_critter_inven_obj2, 2, 2, 0, {ARG_OBJECT, ARG_INT}}, - {"dialog_message", mf_dialog_message, 1, 1, -1, {ARG_STRING}}, - {"dialog_obj", mf_get_dialog_object, 0, 0}, - {"display_stats", mf_display_stats, 0, 0}, // refresh - {"draw_image", mf_draw_image, 1, 5, -1, {ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"draw_image_scaled", mf_draw_image_scaled, 1, 6, -1, {ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"exec_map_update_scripts", mf_exec_map_update_scripts, 0, 0}, - {"floor2", mf_floor2, 1, 1, 0, {ARG_NUMBER}}, - {"get_can_rest_on_map", mf_get_rest_on_map, 2, 2, -1, {ARG_INT, ARG_INT}}, - {"get_combat_free_move", mf_get_combat_free_move, 0, 0}, - {"get_current_inven_size", mf_get_current_inven_size, 1, 1, 0, {ARG_OBJECT}}, - {"get_cursor_mode", mf_get_cursor_mode, 0, 0}, - {"get_flags", mf_get_flags, 1, 1, 0, {ARG_OBJECT}}, - {"get_ini_config", mf_get_ini_config, 2, 2, 0, {ARG_STRING, ARG_INT}}, - {"get_ini_section", mf_get_ini_section, 2, 2, -1, {ARG_STRING, ARG_STRING}}, - {"get_ini_sections", mf_get_ini_sections, 1, 1, -1, {ARG_STRING}}, - {"get_inven_ap_cost", mf_get_inven_ap_cost, 0, 0}, - {"get_map_enter_position", mf_get_map_enter_position, 0, 0}, - {"get_metarule_table", mf_get_metarule_table, 0, 0}, - {"get_object_ai_data", mf_get_object_ai_data, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, - {"get_object_data", mf_get_object_data, 2, 2, 0, {ARG_OBJECT, ARG_INT}}, - {"get_outline", mf_get_outline, 1, 1, 0, {ARG_OBJECT}}, - {"get_sfall_arg_at", mf_get_sfall_arg_at, 1, 1, 0, {ARG_INT}}, - {"get_stat_max", mf_get_stat_max, 1, 2, 0, {ARG_INT, ARG_INT}}, - {"get_stat_min", mf_get_stat_min, 1, 2, 0, {ARG_INT, ARG_INT}}, - {"get_string_pointer", mf_get_string_pointer, 1, 1, 0, {ARG_STRING}}, - {"get_terrain_name", mf_get_terrain_name, 0, 2, -1, {ARG_INT, ARG_INT}}, - {"get_text_width", mf_get_text_width, 1, 1, 0, {ARG_STRING}}, - {"get_window_attribute", mf_get_window_attribute, 1, 2, -1, {ARG_INT, ARG_INT}}, - {"hide_window", mf_hide_window, 0, 1, -1, {ARG_STRING}}, - {"interface_art_draw", mf_interface_art_draw, 4, 6, -1, {ARG_INT, ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"interface_overlay", mf_interface_overlay, 2, 6, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"interface_print", mf_interface_print, 5, 6, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"intface_hide", mf_intface_hide, 0, 0}, - {"intface_is_hidden", mf_intface_is_hidden, 0, 0}, - {"intface_redraw", mf_intface_redraw, 0, 1}, - {"intface_show", mf_intface_show, 0, 0}, - {"inventory_redraw", mf_inventory_redraw, 0, 1, -1, {ARG_INT}}, - {"item_make_explosive", mf_item_make_explosive, 3, 4, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"item_weight", mf_item_weight, 1, 1, 0, {ARG_OBJECT}}, - {"lock_is_jammed", mf_lock_is_jammed, 1, 1, 0, {ARG_OBJECT}}, - {"loot_obj", mf_get_loot_object, 0, 0}, - {"message_box", mf_message_box, 1, 4, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT}}, - {"metarule_exist", mf_metarule_exist, 1, 1}, // no arg check - {"npc_engine_level_up", mf_npc_engine_level_up, 1, 1}, - {"obj_is_openable", mf_obj_is_openable, 1, 1, 0, {ARG_OBJECT}}, - {"obj_under_cursor", mf_obj_under_cursor, 2, 2, 0, {ARG_INT, ARG_INT}}, - {"objects_in_radius", mf_objects_in_radius, 3, 4, 0, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"outlined_object", mf_outlined_object, 0, 0}, - {"real_dude_obj", mf_real_dude_obj, 0, 0}, - {"remove_timer_event", mf_remove_timer_event, 0, 1, -1, {ARG_INT}}, - {"set_spray_settings", mf_set_spray_settings, 4, 4, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, - {"set_can_rest_on_map", mf_set_rest_on_map, 3, 3, -1, {ARG_INT, ARG_INT, ARG_INT}}, - {"set_car_intface_art", mf_set_car_intface_art, 1, 1, -1, {ARG_INT}}, - {"set_combat_free_move", mf_set_combat_free_move, 1, 1, -1, {ARG_INT}}, - {"set_cursor_mode", mf_set_cursor_mode, 1, 1, -1, {ARG_INT}}, - {"set_dude_obj", mf_set_dude_obj, 1, 1, -1, {ARG_INT}}, - {"set_flags", mf_set_flags, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, - {"set_iface_tag_text", mf_set_iface_tag_text, 3, 3, -1, {ARG_INT, ARG_STRING, ARG_INT}}, - {"set_ini_setting", mf_set_ini_setting, 2, 2, -1, {ARG_STRING, ARG_INTSTR}}, - {"set_map_enter_position", mf_set_map_enter_position, 3, 3, -1, {ARG_INT, ARG_INT, ARG_INT}}, - {"set_object_data", mf_set_object_data, 3, 3, -1, {ARG_OBJECT, ARG_INT, ARG_INT}}, - {"set_outline", mf_set_outline, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, - {"set_quest_failure_value", mf_set_quest_failure_value, 2, 2, -1, {ARG_INT, ARG_INT}}, - {"set_rest_heal_time", mf_set_rest_heal_time, 1, 1, -1, {ARG_INT}}, - {"set_rest_mode", mf_set_rest_mode, 1, 1, -1, {ARG_INT}}, - {"set_scr_name", mf_set_scr_name, 0, 1, -1, {ARG_STRING}}, - {"set_terrain_name", mf_set_terrain_name, 3, 3, -1, {ARG_INT, ARG_INT, ARG_STRING}}, - {"set_town_title", mf_set_town_title, 2, 2, -1, {ARG_INT, ARG_STRING}}, - {"set_unique_id", mf_set_unique_id, 1, 2, -1, {ARG_OBJECT, ARG_INT}}, - {"set_unjam_locks_time", mf_set_unjam_locks_time, 1, 1, -1, {ARG_INT}}, - {"set_window_flag", mf_set_window_flag, 3, 3, -1, {ARG_INTSTR, ARG_INT, ARG_INT}}, - {"show_window", mf_show_window, 0, 1, -1, {ARG_STRING}}, - {"spatial_radius", mf_spatial_radius, 1, 1, 0, {ARG_OBJECT}}, - {"string_compare", mf_string_compare, 2, 3, 0, {ARG_STRING, ARG_STRING, ARG_INT}}, - {"string_find", mf_string_find, 2, 3, -1, {ARG_STRING, ARG_STRING, ARG_INT}}, - {"string_format", mf_string_format, 2, 8, 0, {ARG_STRING, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY}}, - {"string_to_case", mf_string_to_case, 2, 2, -1, {ARG_STRING, ARG_INT}}, - {"tile_by_position", mf_tile_by_position, 2, 2, -1, {ARG_INT, ARG_INT}}, - {"tile_refresh_display", mf_tile_refresh_display, 0, 0}, - {"unjam_lock", mf_unjam_lock, 1, 1, -1, {ARG_OBJECT}}, - {"unwield_slot", mf_unwield_slot, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, - {"win_fill_color", mf_win_fill_color, 0, 5, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"add_extra_msg_file", mf_add_extra_msg_file, 1, 2, -1, {ARG_STRING, ARG_INT}}, + {"add_iface_tag", mf_add_iface_tag, 0, 0}, + {"add_g_timer_event", mf_add_g_timer_event, 2, 2, -1, {ARG_INT, ARG_INT}}, + {"add_trait", mf_add_trait, 1, 1, -1, {ARG_INT}}, + {"art_cache_clear", mf_art_cache_flush, 0, 0}, + {"attack_is_aimed", mf_attack_is_aimed, 0, 0}, + {"car_gas_amount", mf_car_gas_amount, 0, 0}, + {"combat_data", mf_combat_data, 0, 0}, + {"create_win", mf_create_win, 5, 6, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"critter_inven_obj2", mf_critter_inven_obj2, 2, 2, 0, {ARG_OBJECT, ARG_INT}}, + {"dialog_message", mf_dialog_message, 1, 1, -1, {ARG_STRING}}, + {"dialog_obj", mf_get_dialog_object, 0, 0}, + {"display_stats", mf_display_stats, 0, 0}, // refresh + {"draw_image", mf_draw_image, 1, 5, -1, {ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"draw_image_scaled", mf_draw_image_scaled, 1, 6, -1, {ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"exec_map_update_scripts", mf_exec_map_update_scripts, 0, 0}, + {"floor2", mf_floor2, 1, 1, 0, {ARG_NUMBER}}, + {"get_can_rest_on_map", mf_get_rest_on_map, 2, 2, -1, {ARG_INT, ARG_INT}}, + {"get_combat_free_move", mf_get_combat_free_move, 0, 0}, + {"get_current_inven_size", mf_get_current_inven_size, 1, 1, 0, {ARG_OBJECT}}, + {"get_cursor_mode", mf_get_cursor_mode, 0, 0}, + {"get_flags", mf_get_flags, 1, 1, 0, {ARG_OBJECT}}, + {"get_ini_config", mf_get_ini_config, 2, 2, 0, {ARG_STRING, ARG_INT}}, + {"get_ini_section", mf_get_ini_section, 2, 2, -1, {ARG_STRING, ARG_STRING}}, + {"get_ini_sections", mf_get_ini_sections, 1, 1, -1, {ARG_STRING}}, + {"get_inven_ap_cost", mf_get_inven_ap_cost, 0, 0}, + {"get_map_enter_position", mf_get_map_enter_position, 0, 0}, + {"get_metarule_table", mf_get_metarule_table, 0, 0}, + {"get_object_ai_data", mf_get_object_ai_data, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, + {"get_object_data", mf_get_object_data, 2, 2, 0, {ARG_OBJECT, ARG_INT}}, + {"get_outline", mf_get_outline, 1, 1, 0, {ARG_OBJECT}}, + {"get_sfall_arg_at", mf_get_sfall_arg_at, 1, 1, 0, {ARG_INT}}, + {"get_stat_max", mf_get_stat_max, 1, 2, 0, {ARG_INT, ARG_INT}}, + {"get_stat_min", mf_get_stat_min, 1, 2, 0, {ARG_INT, ARG_INT}}, + {"get_string_pointer", mf_get_string_pointer, 1, 1, 0, {ARG_STRING}}, + {"get_terrain_name", mf_get_terrain_name, 0, 2, -1, {ARG_INT, ARG_INT}}, + {"get_text_width", mf_get_text_width, 1, 1, 0, {ARG_STRING}}, + {"get_window_attribute", mf_get_window_attribute, 1, 2, -1, {ARG_INT, ARG_INT}}, + {"hide_window", mf_hide_window, 0, 1, -1, {ARG_STRING}}, + {"interface_art_draw", mf_interface_art_draw, 4, 6, -1, {ARG_INT, ARG_INTSTR, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"interface_overlay", mf_interface_overlay, 2, 6, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"interface_print", mf_interface_print, 5, 6, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"intface_hide", mf_intface_hide, 0, 0}, + {"intface_is_hidden", mf_intface_is_hidden, 0, 0}, + {"intface_redraw", mf_intface_redraw, 0, 1}, + {"intface_show", mf_intface_show, 0, 0}, + {"inventory_redraw", mf_inventory_redraw, 0, 1, -1, {ARG_INT}}, + {"item_make_explosive", mf_item_make_explosive, 3, 4, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"item_weight", mf_item_weight, 1, 1, 0, {ARG_OBJECT}}, + {"lock_is_jammed", mf_lock_is_jammed, 1, 1, 0, {ARG_OBJECT}}, + {"loot_obj", mf_get_loot_object, 0, 0}, + {"message_box", mf_message_box, 1, 4, -1, {ARG_STRING, ARG_INT, ARG_INT, ARG_INT}}, + {"metarule_exist", mf_metarule_exist, 1, 1}, // no arg check + {"npc_engine_level_up", mf_npc_engine_level_up, 1, 1}, + {"obj_is_openable", mf_obj_is_openable, 1, 1, 0, {ARG_OBJECT}}, + {"obj_under_cursor", mf_obj_under_cursor, 2, 2, 0, {ARG_INT, ARG_INT}}, + {"objects_in_radius", mf_objects_in_radius, 3, 4, 0, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"outlined_object", mf_outlined_object, 0, 0}, + {"real_dude_obj", mf_real_dude_obj, 0, 0}, + {"reg_anim_animate_and_move", mf_reg_anim_animate_and_move, 4, 4, -1, {ARG_OBJECT, ARG_INT, ARG_INT, ARG_INT}}, + {"remove_timer_event", mf_remove_timer_event, 0, 1, -1, {ARG_INT}}, + {"set_spray_settings", mf_set_spray_settings, 4, 4, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, + {"set_can_rest_on_map", mf_set_rest_on_map, 3, 3, -1, {ARG_INT, ARG_INT, ARG_INT}}, + {"set_car_intface_art", mf_set_car_intface_art, 1, 1, -1, {ARG_INT}}, + {"set_combat_free_move", mf_set_combat_free_move, 1, 1, -1, {ARG_INT}}, + {"set_cursor_mode", mf_set_cursor_mode, 1, 1, -1, {ARG_INT}}, + {"set_dude_obj", mf_set_dude_obj, 1, 1, -1, {ARG_INT}}, + {"set_flags", mf_set_flags, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, + {"set_iface_tag_text", mf_set_iface_tag_text, 3, 3, -1, {ARG_INT, ARG_STRING, ARG_INT}}, + {"set_ini_setting", mf_set_ini_setting, 2, 2, -1, {ARG_STRING, ARG_INTSTR}}, + {"set_map_enter_position", mf_set_map_enter_position, 3, 3, -1, {ARG_INT, ARG_INT, ARG_INT}}, + {"set_object_data", mf_set_object_data, 3, 3, -1, {ARG_OBJECT, ARG_INT, ARG_INT}}, + {"set_outline", mf_set_outline, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, + {"set_quest_failure_value", mf_set_quest_failure_value, 2, 2, -1, {ARG_INT, ARG_INT}}, + {"set_rest_heal_time", mf_set_rest_heal_time, 1, 1, -1, {ARG_INT}}, + {"set_rest_mode", mf_set_rest_mode, 1, 1, -1, {ARG_INT}}, + {"set_scr_name", mf_set_scr_name, 0, 1, -1, {ARG_STRING}}, + {"set_terrain_name", mf_set_terrain_name, 3, 3, -1, {ARG_INT, ARG_INT, ARG_STRING}}, + {"set_town_title", mf_set_town_title, 2, 2, -1, {ARG_INT, ARG_STRING}}, + {"set_unique_id", mf_set_unique_id, 1, 2, -1, {ARG_OBJECT, ARG_INT}}, + {"set_unjam_locks_time", mf_set_unjam_locks_time, 1, 1, -1, {ARG_INT}}, + {"set_window_flag", mf_set_window_flag, 3, 3, -1, {ARG_INTSTR, ARG_INT, ARG_INT}}, + {"show_window", mf_show_window, 0, 1, -1, {ARG_STRING}}, + {"spatial_radius", mf_spatial_radius, 1, 1, 0, {ARG_OBJECT}}, + {"string_compare", mf_string_compare, 2, 3, 0, {ARG_STRING, ARG_STRING, ARG_INT}}, + {"string_find", mf_string_find, 2, 3, -1, {ARG_STRING, ARG_STRING, ARG_INT}}, + {"string_format", mf_string_format, 2, 8, 0, {ARG_STRING, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY, ARG_ANY}}, + {"string_to_case", mf_string_to_case, 2, 2, -1, {ARG_STRING, ARG_INT}}, + {"tile_by_position", mf_tile_by_position, 2, 2, -1, {ARG_INT, ARG_INT}}, + {"tile_refresh_display", mf_tile_refresh_display, 0, 0}, + {"unjam_lock", mf_unjam_lock, 1, 1, -1, {ARG_OBJECT}}, + {"unwield_slot", mf_unwield_slot, 2, 2, -1, {ARG_OBJECT, ARG_INT}}, + {"win_fill_color", mf_win_fill_color, 0, 5, -1, {ARG_INT, ARG_INT, ARG_INT, ARG_INT, ARG_INT}}, #ifndef NDEBUG - {"validate_test", mf_test, 2, 5, -1, {ARG_INT, ARG_NUMBER, ARG_STRING, ARG_OBJECT, ARG_ANY}}, + {"validate_test", mf_test, 2, 5, -1, {ARG_INT, ARG_NUMBER, ARG_STRING, ARG_OBJECT, ARG_ANY}}, #endif };