mirror of
https://github.com/fallout2-ce/fallout2-ce.git
synced 2026-07-27 16:47:11 -07:00
Implement gdialog_get_barter_mod (#385)
* Implement `gdialog_get_barter_mod` Used by Et tu
This commit is contained in:
@@ -68,7 +68,7 @@ See [`https://sfall-team.github.io/sfall/`](https://sfall-team.github.io/sfall/)
|
||||
| INI settings | get_ini_setting<br>get_ini_string<br>get_ini_section<br>get_ini_sections<br>get_ini_config<br>get_ini_config_db<br>set_ini_setting | ✅ except get_ini_config, get_ini_config_db | `modified_ini` is intentionally omitted as deprecated. |
|
||||
| Objects and scripts | set_self<br>set_dude_obj<br>real_dude_obj<br>remove_script<br>get/set_script<br>obj_is_carrying_obj<br>loot_obj<br>dialog_obj<br>obj_under_cursor<br>get/set_object_data<br>get/set_flags<br>set_unique_id<br>set_scr_name<br>obj_is_openable<br>get/set_proto_data<br>get_object_ai_data | implemented: set_self, get_script, obj_is_carrying_obj, loot_obj, dialog_obj, obj_under_cursor, get_object_data, get_flags, set_flags, obj_is_openable, get_proto_data, set_proto_data | - |
|
||||
| Other / Game management | set_movie_path<br>stop/resume_game<br>mark_movie_played<br>game_loaded<br>get_game_mode<br>get_uptime<br>signal_close_game | implemented: game_loaded, get_game_mode, get_uptime, signal_close_game | - |
|
||||
| Gameplay tweaks | set_pickpocket_max<br>set_hit_chance_max<br>set_xp_mod<br>set_critter_hit_chance_mod<br>set_base_hit_chance_mod<br>set_hp_per_level_mod<br>get_unspent_ap_bonus<br>gdialog_get_barter_mod<br>set_unspent_ap_bonus<br>get/set_unspent_ap_perk_bonus<br>set_inven_ap_cost<br>set_base_pickpocket_mod<br>set_critter_pickpocket_mod<br>get_inven_ap_cost<br>set_drugs_data<br>get_kill_counter<br>mod_kill_counter<br>set_pipboy_available | not implemented | - |
|
||||
| Gameplay tweaks | set_pickpocket_max<br>set_hit_chance_max<br>set_xp_mod<br>set_critter_hit_chance_mod<br>set_base_hit_chance_mod<br>set_hp_per_level_mod<br>get_unspent_ap_bonus<br>gdialog_get_barter_mod<br>set_unspent_ap_bonus<br>get/set_unspent_ap_perk_bonus<br>set_inven_ap_cost<br>set_base_pickpocket_mod<br>set_critter_pickpocket_mod<br>get_inven_ap_cost<br>set_drugs_data<br>get_kill_counter<br>mod_kill_counter<br>set_pipboy_available | implemented: gdialog_get_barter_mod | - |
|
||||
| NPCs | inc_npc_level<br>get_npc_level<br>npc_engine_level_up | not implemented | - |
|
||||
| Other | get_year<br>set_dm/df_model<br>active_hand<br>toggle_active_hand<br>get/set_viewport_x/y<br>hero_select_win<br>get_light_level<br>message_str_game<br>sneak_success<br>create_spatial<br>unwield_slot<br>add_g_timer_event<br>add_extra_msg_file<br>get_metarule_table<br>metarule_exist<br>remove_timer_event<br>spatial_radius | implemented: get_year, active_hand, toggle_active_hand, get_light_level, message_str_game, add_extra_msg_file, metarule_exist | `input_funcs_available`, `nb_create_char` are deprecated in sfall and intentionally absent in CE. `add_extra_msg_file` does not support the explicit `fileNumber` form in CE. |
|
||||
|
||||
|
||||
@@ -3215,6 +3215,11 @@ static int gameDialogDrawText(unsigned char* buffer, Rect* rect, const char* str
|
||||
return rect->top;
|
||||
}
|
||||
|
||||
int gameDialogGetBarterModifier()
|
||||
{
|
||||
return gGameDialogBarterModifier;
|
||||
}
|
||||
|
||||
// 0x448214
|
||||
void gameDialogSetBarterModifier(int modifier)
|
||||
{
|
||||
|
||||
@@ -35,6 +35,7 @@ int gameDialogSetTextReply(Program* program, int messageListId, const char* text
|
||||
int _gdialogGo();
|
||||
void _gdialogUpdatePartyStatus();
|
||||
void _talk_to_critter_reacts(int reaction);
|
||||
int gameDialogGetBarterModifier();
|
||||
void gameDialogSetBarterModifier(int modifier);
|
||||
int gameDialogBarter(int modifier);
|
||||
void gameDialogEndBarter();
|
||||
|
||||
@@ -4029,9 +4029,9 @@ static void opCombatIsInitialized(Program* program)
|
||||
// 0x45AFA0
|
||||
static void _op_gdialog_barter(Program* program)
|
||||
{
|
||||
int data = programStackPopInteger(program);
|
||||
int modifier = programStackPopInteger(program);
|
||||
|
||||
if (gameDialogBarter(data) == -1) {
|
||||
if (gameDialogBarter(modifier) == -1) {
|
||||
debugPrint("\nScript Error: gdialog_barter: failed");
|
||||
}
|
||||
}
|
||||
@@ -4700,9 +4700,9 @@ static void opJamLock(Program* program)
|
||||
// 0x45C7D4
|
||||
static void opGameDialogSetBarterMod(Program* program)
|
||||
{
|
||||
int data = programStackPopInteger(program);
|
||||
int modifier = programStackPopInteger(program);
|
||||
|
||||
gameDialogSetBarterModifier(data);
|
||||
gameDialogSetBarterModifier(modifier);
|
||||
}
|
||||
|
||||
// combat_difficulty
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "dbox.h"
|
||||
#include "debug.h"
|
||||
#include "game.h"
|
||||
#include "game_dialog.h"
|
||||
#include "input.h"
|
||||
#include "interface.h"
|
||||
#include "interpreter.h"
|
||||
@@ -843,6 +844,12 @@ static void op_tile_under_cursor(Program* program)
|
||||
programStackPushInteger(program, tile);
|
||||
}
|
||||
|
||||
// gdialog_get_barter_mod
|
||||
static void op_gdialog_get_barter_mod(Program* program)
|
||||
{
|
||||
programStackPushInteger(program, gameDialogGetBarterModifier());
|
||||
}
|
||||
|
||||
// get_tile_fid
|
||||
static void op_get_tile_fid(Program* program)
|
||||
{
|
||||
@@ -1992,6 +1999,7 @@ void sfallOpcodesInit()
|
||||
// 0x824b - int tile_under_cursor()
|
||||
interpreterRegisterOpcode(0x824B, op_tile_under_cursor);
|
||||
// 0x824c - int gdialog_get_barter_mod()
|
||||
interpreterRegisterOpcode(0x824C, op_gdialog_get_barter_mod);
|
||||
// 0x824d - void set_inven_ap_cost(int cost)
|
||||
|
||||
// 0x825a - void reg_anim_destroy(object object)
|
||||
|
||||
Reference in New Issue
Block a user