mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Implemented new ini reading funcs in various codes
This commit is contained in:
+2
-2
@@ -186,9 +186,9 @@ void AIInit() {
|
||||
|
||||
MakeJump(0x45F6AF, BlockCombatHook1); // intface_use_item_
|
||||
HookCall(0x4432A6, BlockCombatHook2); // game_handle_input_
|
||||
GetPrivateProfileString("sfall", "BlockedCombat", "You cannot enter combat at this time.", combatBlockedMessage, 128, translationIni);
|
||||
Translate("sfall", "BlockedCombat", "You cannot enter combat at this time.", combatBlockedMessage);
|
||||
|
||||
RetryCombatMinAP = GetPrivateProfileIntA("Misc", "NPCsTryToSpendExtraAP", 0, ini);
|
||||
RetryCombatMinAP = GetConfigInt("Misc", "NPCsTryToSpendExtraAP", 0);
|
||||
if (RetryCombatMinAP > 0) {
|
||||
dlog("Applying retry combat patch.", DL_INIT);
|
||||
HookCall(0x422B94, RetryCombatHook); // combat_turn_
|
||||
|
||||
@@ -371,7 +371,7 @@ void ApplyAnimationsAtOncePatches(signed char aniMax) {
|
||||
}
|
||||
|
||||
void AnimationsAtOnceInit() {
|
||||
animationLimit = GetPrivateProfileIntA("Misc", "AnimationsAtOnceLimit", 32, ini);
|
||||
animationLimit = GetConfigInt("Misc", "AnimationsAtOnceLimit", 32);
|
||||
if (animationLimit > 32) {
|
||||
if (animationLimit > 127) {
|
||||
animationLimit = 127;
|
||||
|
||||
+14
-15
@@ -59,32 +59,31 @@ fail:
|
||||
}
|
||||
|
||||
void BarBoxesInit() {
|
||||
memcpy(boxes, (void*)0x518FE8, 12 * 5);
|
||||
for (int i = 5; i < 10; i++) {
|
||||
boxes[i].msg = 100 + i;
|
||||
}
|
||||
|
||||
std::string boxBarColors = GetConfigString("Misc", "BoxBarColours", "", 6);
|
||||
if (boxBarColors.size() == 5) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
if (boxBarColors[i] == '1') {
|
||||
boxes[i + 5].colour = 1; // red color
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < sizeof(bboxMemAddr) / 4; i++) {
|
||||
SafeWrite32(bboxMemAddr[i], (DWORD)boxes + 8); //.mem
|
||||
}
|
||||
SafeWrite32(0x4612FE, (DWORD)boxes + 4); //.colour
|
||||
SafeWrite32(0x46133C, (DWORD)boxes + 0); //.msg
|
||||
|
||||
memcpy(boxes, (void*)0x518FE8, 12 * 5);
|
||||
|
||||
for (int i = 5; i < 10; i++) {
|
||||
boxes[i].msg = 0x69 + i - 5;
|
||||
}
|
||||
|
||||
SafeWrite8(0x46127C, 10);
|
||||
SafeWrite8(0x46140B, 10);
|
||||
SafeWrite8(0x461495, 0x78);
|
||||
|
||||
MakeJump(0x4615A3, DisplayBoxesHook);
|
||||
char buf[6];
|
||||
GetPrivateProfileString("Misc", "BoxBarColours", "", buf, 6, ini);
|
||||
if (strlen(buf) == 5) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
if (buf[i] == '1') {
|
||||
boxes[i + 5].colour = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool GetBox(int i) {
|
||||
|
||||
+37
-37
@@ -2167,7 +2167,7 @@ dude:
|
||||
static char pickupMessageBuf[65] = {0};
|
||||
static const char* __fastcall GetPickupMessage(const char* name) {
|
||||
if (pickupMessageBuf[0] == 0) {
|
||||
GetPrivateProfileString("sfall", "NPCPickupFail", "%s cannot pick up the item.", pickupMessageBuf, 64, translationIni);
|
||||
Translate("sfall", "NPCPickupFail", "%s cannot pick up the item.", pickupMessageBuf, 64);
|
||||
}
|
||||
sprintf(textBuf, pickupMessageBuf, name);
|
||||
return textBuf;
|
||||
@@ -2382,13 +2382,13 @@ void BugFixesInit()
|
||||
SafeWrite16(0x46A566, 0x04DB);
|
||||
SafeWrite16(0x46A4E7, 0x04DB);
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "SpecialUnarmedAttacksFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "SpecialUnarmedAttacksFix", 1)) {
|
||||
dlog("Applying Special Unarmed Attacks fix.", DL_INIT);
|
||||
MakeJump(0x42394D, UnarmedAttacksFix);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "SharpshooterFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "SharpshooterFix", 1)) {
|
||||
dlog("Applying Sharpshooter patch.", DL_INIT);
|
||||
// http://www.nma-fallout.com/threads/fo2-engine-tweaks-sfall.178390/page-119#post-4050162
|
||||
// by Slider2k
|
||||
@@ -2411,7 +2411,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Fix for "Too Many Items" bug
|
||||
//if (GetPrivateProfileIntA("Misc", "TooManyItemsBugFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "TooManyItemsBugFix", 1)) {
|
||||
dlog("Applying preventive patch for \"Too Many Items\" bug.", DL_INIT);
|
||||
HookCall(0x4A596A, scr_write_ScriptNode_hook);
|
||||
HookCall(0x4A59C1, scr_write_ScriptNode_hook);
|
||||
@@ -2422,7 +2422,7 @@ void BugFixesInit()
|
||||
MakeCall(0x49BE70, obj_use_power_on_car_hack);
|
||||
|
||||
// Fix for being able to charge the car by using cells on other scenery/critters
|
||||
if (GetPrivateProfileIntA("Misc", "CarChargingFix", 1, ini)) {
|
||||
if (GetConfigInt("Misc", "CarChargingFix", 1)) {
|
||||
dlog("Applying car charging fix.", DL_INIT);
|
||||
MakeJump(0x49C36D, protinst_default_use_item_hack);
|
||||
dlogr(" Done", DL_INIT);
|
||||
@@ -2442,7 +2442,7 @@ void BugFixesInit()
|
||||
// Evil bug! If party member has the same armor type in inventory as currently equipped, then
|
||||
// on level up he loses Armor Class equal to the one received from this armor.
|
||||
// The same happens if you just order NPC to remove the armor through dialogue.
|
||||
//if (GetPrivateProfileIntA("Misc", "ArmorCorruptsNPCStatsFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "ArmorCorruptsNPCStatsFix", 1)) {
|
||||
dlog("Applying fix for armor reducing NPC original stats when removed.", DL_INIT);
|
||||
HookCall(0x495F3B, partyMemberCopyLevelInfo_hook_stat_level);
|
||||
HookCall(0x45419B, correctFidForRemovedItem_hook_adjust_ac);
|
||||
@@ -2461,7 +2461,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Allow 9 options (lines of text) to be displayed correctly in a dialog window
|
||||
//if (GetPrivateProfileIntA("Misc", "DialogOptions9Lines", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "DialogOptions9Lines", 1)) {
|
||||
dlog("Applying 9 dialog options patch.", DL_INIT);
|
||||
MakeCall(0x447021, gdProcessUpdate_hack, 1);
|
||||
dlogr(" Done", DL_INIT);
|
||||
@@ -2486,7 +2486,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Fix for not counting in the weight/size of equipped items on NPC when stealing or bartering
|
||||
//if (GetPrivateProfileIntA("Misc", "NPCWeightFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "NPCWeightFix", 1)) {
|
||||
dlog("Applying fix for not counting in weight of equipped items on NPC.", DL_INIT);
|
||||
MakeCall(0x473B4E, loot_container_hack);
|
||||
HookCall(0x4758AB, barter_inventory_hook);
|
||||
@@ -2502,7 +2502,7 @@ void BugFixesInit()
|
||||
// Corrects the max text width of the player name in inventory to be 140 (was 80), which matches the width for item name
|
||||
SafeWrite32(0x471E48, 140);
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "InventoryDragIssuesFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "InventoryDragIssuesFix", 1)) {
|
||||
dlog("Applying inventory reverse order issues fix.", DL_INIT);
|
||||
// Fix for minor visual glitch when picking up solo item from the top of inventory
|
||||
// and there is multiple item stack at the bottom of inventory
|
||||
@@ -2515,32 +2515,32 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "NPCLevelFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "NPCLevelFix", 1)) {
|
||||
dlog("Applying NPC level fix.", DL_INIT);
|
||||
HookCall(0x495BC9, (void*)0x495E51); // jz 0x495E7F > jz 0x495E51
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "BlackSkilldexFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "BlackSkilldexFix", 1)) {
|
||||
dlog("Applying black Skilldex patch.", DL_INIT);
|
||||
HookCall(0x497D0F, PipStatus_AddHotLines_hook);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "FixWithdrawalPerkDescCrash", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "FixWithdrawalPerkDescCrash", 1)) {
|
||||
dlog("Applying withdrawal perk description crash fix.", DL_INIT);
|
||||
HookCall(0x47A501, perform_withdrawal_start_display_print_hook);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "JetAntidoteFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "JetAntidoteFix", 1)) {
|
||||
dlog("Applying Jet Antidote fix.", DL_INIT);
|
||||
// the original jet antidote fix
|
||||
MakeJump(0x47A013, (void*)0x47A168);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "NPCDrugAddictionFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "NPCDrugAddictionFix", 1)) {
|
||||
dlog("Applying NPC's drug addiction fix.", DL_INIT);
|
||||
// proper checks for NPC's addiction instead of always using global vars
|
||||
MakeJump(0x47A644, item_d_check_addict_hack);
|
||||
@@ -2548,13 +2548,13 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileInt("Misc", "ShivPatch", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "ShivPatch", 1)) {
|
||||
dlog("Applying shiv patch.", DL_INIT);
|
||||
SafeWrite8(0x477B2B, 0xEB);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileInt("Misc", "ImportedProcedureFix", 0, ini)) {
|
||||
//if (GetConfigInt("Misc", "ImportedProcedureFix", 0)) {
|
||||
dlog("Applying imported procedure patch.", DL_INIT);
|
||||
// http://teamx.ru/site_arc/smf/index.php-topic=398.0.htm
|
||||
SafeWrite16(0x46B35B, 0x1C60); // Fix problems with the temporary stack
|
||||
@@ -2568,7 +2568,7 @@ void BugFixesInit()
|
||||
SafeWrite8(0x46C7AC, 0x76); // jb > jbe
|
||||
|
||||
// Update the AC counter
|
||||
//if (GetPrivateProfileIntA("Misc", "WieldObjCritterFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "WieldObjCritterFix", 1)) {
|
||||
dlog("Applying wield_obj_critter fix.", DL_INIT);
|
||||
SafeWrite8(0x456912, 0x1E); // jnz 0x456931
|
||||
HookCall(0x45697F, op_wield_obj_critter_adjust_ac_hook);
|
||||
@@ -2576,7 +2576,7 @@ void BugFixesInit()
|
||||
//}
|
||||
|
||||
// Enable party members with level 6 protos to reach level 6
|
||||
//if (GetPrivateProfileIntA("Misc", "NPCStage6Fix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "NPCStage6Fix", 1)) {
|
||||
dlog("Applying NPC Stage 6 Fix.", DL_INIT);
|
||||
MakeJump(0x493CE9, NPCStage6Fix1); // partyMember_init_
|
||||
MakeJump(0x494224, NPCStage6Fix2); // partyMemberGetAIOptions_
|
||||
@@ -2585,7 +2585,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "MultiHexPathingFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "MultiHexPathingFix", 1)) {
|
||||
dlog("Applying MultiHex Pathing Fix.", DL_INIT);
|
||||
MakeCall(0x42901F, MultiHexFix);
|
||||
MakeCall(0x429170, MultiHexFix);
|
||||
@@ -2595,7 +2595,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "DodgyDoorsFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "DodgyDoorsFix", 1)) {
|
||||
dlog("Applying Dodgy Door Fix.", DL_INIT);
|
||||
MakeJump(0x4113D6, action_melee_hack);
|
||||
MakeJump(0x411BCC, action_ranged_hack);
|
||||
@@ -2603,7 +2603,7 @@ void BugFixesInit()
|
||||
//}
|
||||
|
||||
// Fix for "NPC turns into a container" bug
|
||||
//if (GetPrivateProfileIntA("Misc", "NPCTurnsIntoContainerFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "NPCTurnsIntoContainerFix", 1)) {
|
||||
dlog("Applying fix for \"NPC turns into a container\" bug.", DL_INIT);
|
||||
MakeJump(0x42E46E, critter_wake_clear_hack);
|
||||
MakeCall(0x488EF3, obj_load_func_hack, 1);
|
||||
@@ -2627,7 +2627,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Fix for being unable to sell used geiger counters or stealth boys
|
||||
if (GetPrivateProfileIntA("Misc", "CanSellUsedGeiger", 1, ini)) {
|
||||
if (GetConfigInt("Misc", "CanSellUsedGeiger", 1)) {
|
||||
dlog("Applying fix for being unable to sell used geiger counters or stealth boys.", DL_INIT);
|
||||
SafeWrite8(0x478115, 0xBA);
|
||||
SafeWrite8(0x478138, 0xBA);
|
||||
@@ -2652,26 +2652,26 @@ void BugFixesInit()
|
||||
SafeWrite8(0x4C4743, 0xC6); // cmp esi, eax
|
||||
|
||||
// Partial fix for incorrect positioning after exiting small locations (e.g. Ghost Farm)
|
||||
//if (GetPrivateProfileIntA("Misc", "SmallLocExitFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "SmallLocExitFix", 1)) {
|
||||
dlog("Applying fix for incorrect positioning after exiting small locations.", DL_INIT);
|
||||
MakeJump(0x4C5A41, wmTeleportToArea_hack);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "PrintToFileFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "PrintToFileFix", 1)) {
|
||||
dlog("Applying print to file fix.", DL_INIT);
|
||||
MakeCall(0x4C67D4, db_get_file_list_hack);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
// Fix for display issues when calling gdialog_mod_barter with critters with no "Barter" flag set
|
||||
//if (GetPrivateProfileIntA("Misc", "gdBarterDispFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "gdBarterDispFix", 1)) {
|
||||
dlog("Applying gdialog_mod_barter display fix.", DL_INIT);
|
||||
HookCall(0x448250, gdActivateBarter_hook);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
//if (GetPrivateProfileIntA("Misc", "BagBackpackFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "BagBackpackFix", 1)) {
|
||||
dlog("Applying fix for bag/backpack bugs.", DL_INIT);
|
||||
// Fix for items disappearing from inventory when you try to drag them to bag/backpack in the inventory list
|
||||
// and are overloaded
|
||||
@@ -2697,7 +2697,7 @@ void BugFixesInit()
|
||||
MakeCall(0x4396F5, Save_as_ASCII_hack, 2);
|
||||
|
||||
// Fix for Bonus Move APs being replenished when you save and load the game in combat
|
||||
//if (GetPrivateProfileIntA("Misc", "BonusMoveFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "BonusMoveFix", 1)) {
|
||||
dlog("Applying fix for Bonus Move exploit.", DL_INIT);
|
||||
HookCall(0x420E93, combat_load_hook);
|
||||
MakeCall(0x422A06, combat_turn_hack);
|
||||
@@ -2711,7 +2711,7 @@ void BugFixesInit()
|
||||
MakeCall(0x424CD2, apply_damage_hack);
|
||||
|
||||
// Fix for the double damage effect of Silent Death perk not being applied to critical hits
|
||||
//if (GetPrivateProfileIntA("Misc", "SilentDeathFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "SilentDeathFix", 1)) {
|
||||
dlog("Applying Silent Death patch.", DL_INIT);
|
||||
SafeWrite8(0x4238DF, 0x8C); // jl loc_423A0D
|
||||
HookCall(0x423A99, compute_attack_hook);
|
||||
@@ -2748,7 +2748,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Display full item description for weapon/ammo in the barter screen
|
||||
showItemDescription = (GetPrivateProfileIntA("Misc", "FullItemDescInBarter", 0, ini) != 0);
|
||||
showItemDescription = (GetConfigInt("Misc", "FullItemDescInBarter", 0) != 0);
|
||||
if (showItemDescription) {
|
||||
dlog("Applying full item description in barter patch.", DL_INIT);
|
||||
HookCall(0x49B452, obj_examine_func_hack_weapon); // it's jump
|
||||
@@ -2756,7 +2756,7 @@ void BugFixesInit()
|
||||
}
|
||||
|
||||
// Display experience points with the bonus from Swift Learner perk when gained from non-scripted situations
|
||||
if (GetPrivateProfileIntA("Misc", "DisplaySwiftLearnerExp", 1, ini)) {
|
||||
if (GetConfigInt("Misc", "DisplaySwiftLearnerExp", 1)) {
|
||||
dlog("Applying Swift Learner exp display patch.", DL_INIT);
|
||||
MakeCall(0x4AFAEF, statPCAddExperienceCheckPMs_hack);
|
||||
HookCall(0x4221E2, combat_give_exps_hook);
|
||||
@@ -2772,7 +2772,7 @@ void BugFixesInit()
|
||||
SafeWrite16(0x456B76, 0x23EB); // jmp loc_456B9B (skip unused engine code)
|
||||
|
||||
// Fix broken op_obj_can_hear_obj_ function
|
||||
if (GetPrivateProfileIntA("Misc", "ObjCanHearObjFix", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "ObjCanHearObjFix", 0)) {
|
||||
dlog("Applying obj_can_hear_obj fix.", DL_INIT);
|
||||
SafeWrite8(0x4583D8, 0x3B); // jz loc_458414
|
||||
SafeWrite8(0x4583DE, 0x74); // jz loc_458414
|
||||
@@ -2781,7 +2781,7 @@ void BugFixesInit()
|
||||
}
|
||||
|
||||
// Fix for AI not checking weapon perks properly when searching for the best weapon
|
||||
int bestWeaponPerkFix = GetPrivateProfileIntA("Misc", "AIBestWeaponFix", 0, ini);
|
||||
int bestWeaponPerkFix = GetConfigInt("Misc", "AIBestWeaponFix", 0);
|
||||
if (bestWeaponPerkFix > 0) {
|
||||
dlog("Applying AI best weapon choice fix.", DL_INIT);
|
||||
HookCall(0x42954B, ai_best_weapon_hook);
|
||||
@@ -2806,7 +2806,7 @@ void BugFixesInit()
|
||||
MakeCall(0x472F5F, inven_obj_examine_func_hack, 1);
|
||||
|
||||
// Fix for the exploit that allows you to gain excessive skill points from Tag! perk before leaving the character screen
|
||||
//if (GetPrivateProfileIntA("Misc", "TagPerkFix", 1, ini)) {
|
||||
//if (GetConfigInt("Misc", "TagPerkFix", 1)) {
|
||||
dlog("Applying fix for Tag! exploit.", DL_INIT);
|
||||
HookCall(0x43B463, SliderBtn_hook_down);
|
||||
HookCall(0x43D7DD, Add4thTagSkill_hook);
|
||||
@@ -2821,7 +2821,7 @@ void BugFixesInit()
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
// Fix for the "mood" argument of start_gdialog function being ignored for talking heads
|
||||
if (GetPrivateProfileIntA("Misc", "StartGDialogFix", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "StartGDialogFix", 0)) {
|
||||
dlog("Applying start_gdialog argument fix.", DL_INIT);
|
||||
MakeCall(0x456F08, op_start_gdialog_hack);
|
||||
dlogr(" Done", DL_INIT);
|
||||
@@ -2839,7 +2839,7 @@ void BugFixesInit()
|
||||
HookCall(0x42D733, process_rads_hook);
|
||||
|
||||
// Fix for AI not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory
|
||||
if (GetPrivateProfileIntA("Misc", "AIDrugUsePerfFix", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "AIDrugUsePerfFix", 0)) {
|
||||
dlog("Applying AI drug use preference fix.", DL_INIT);
|
||||
MakeCall(0x42869D, ai_check_drugs_hack_break);
|
||||
MakeCall(0x4286AB, ai_check_drugs_hack_check);
|
||||
@@ -2861,7 +2861,7 @@ void BugFixesInit()
|
||||
// called_shot - additional damage, when the damage received by the target is above the specified minimum
|
||||
// num_attacks - the number of free action points on the first turn only
|
||||
// attacker_results - unused, must be 0 or not equal to the target_results argument when specifying result flags for the target
|
||||
if (GetPrivateProfileIntA("Misc", "AttackComplexFix", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "AttackComplexFix", 0)) {
|
||||
dlog("Applying attack_complex fix.", DL_INIT);
|
||||
HookCall(0x456D4A, op_attack_hook);
|
||||
SafeWrite8(0x456D61, 0x74); // mov [esp+x], esi
|
||||
@@ -2973,7 +2973,7 @@ void BugFixesInit()
|
||||
|
||||
// Fix for the car being lost when entering a location via the Town/World button and then leaving on foot
|
||||
// (sets GVAR_CAR_PLACED_TILE (633) to -1 on exit to the world map)
|
||||
if (GetPrivateProfileIntA("Misc", "CarPlacedTileFix", 1, ini)) {
|
||||
if (GetConfigInt("Misc", "CarPlacedTileFix", 1)) {
|
||||
dlog("Applying car placed tile fix.", DL_INIT);
|
||||
MakeCall(0x4C2367, wmInterfaceInit_hack);
|
||||
dlogr(" Done", DL_INIT);
|
||||
|
||||
+5
-5
@@ -64,18 +64,18 @@ static void __declspec(naked) compute_spray_rounds_distribution() {
|
||||
|
||||
|
||||
void ComputeSprayModInit() {
|
||||
if (GetPrivateProfileIntA("Misc", "ComputeSprayMod", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "ComputeSprayMod", 0)) {
|
||||
dlog("Applying ComputeSpray changes.", DL_INIT);
|
||||
compute_spray_center_mult = GetPrivateProfileIntA("Misc", "ComputeSpray_CenterMult", 1, ini);
|
||||
compute_spray_center_div = GetPrivateProfileIntA("Misc", "ComputeSpray_CenterDiv", 3, ini);
|
||||
compute_spray_center_mult = GetConfigInt("Misc", "ComputeSpray_CenterMult", 1);
|
||||
compute_spray_center_div = GetConfigInt("Misc", "ComputeSpray_CenterDiv", 3);
|
||||
if (compute_spray_center_div < 1) {
|
||||
compute_spray_center_div = 1;
|
||||
}
|
||||
if (compute_spray_center_mult > compute_spray_center_div) {
|
||||
compute_spray_center_mult = compute_spray_center_div;
|
||||
}
|
||||
compute_spray_target_mult = GetPrivateProfileIntA("Misc", "ComputeSpray_TargetMult", 1, ini);
|
||||
compute_spray_target_div = GetPrivateProfileIntA("Misc", "ComputeSpray_TargetDiv", 2, ini);
|
||||
compute_spray_target_mult = GetConfigInt("Misc", "ComputeSpray_TargetMult", 1);
|
||||
compute_spray_target_div = GetConfigInt("Misc", "ComputeSpray_TargetDiv", 2);
|
||||
if (compute_spray_target_div < 1) {
|
||||
compute_spray_target_div = 1;
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,9 +16,9 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "version.h"
|
||||
#include "Logging.h"
|
||||
|
||||
|
||||
+10
-10
@@ -440,15 +440,15 @@ static void BodypartHitChances() {
|
||||
}
|
||||
|
||||
static void BodypartHitReadConfig() {
|
||||
bodypartHit.Head = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Head", -40, ini));
|
||||
bodypartHit.Left_Arm = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Left_Arm", -30, ini));
|
||||
bodypartHit.Right_Arm = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Right_Arm", -30, ini));
|
||||
bodypartHit.Torso = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Torso", 0, ini));
|
||||
bodypartHit.Right_Leg = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Right_Leg", -20, ini));
|
||||
bodypartHit.Left_Leg = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Left_Leg", -20, ini));
|
||||
bodypartHit.Eyes = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Eyes", -60, ini));
|
||||
bodypartHit.Groin = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Groin", -30, ini));
|
||||
bodypartHit.Uncalled = static_cast<long>(GetPrivateProfileIntA("Misc", "BodyHit_Torso_Uncalled", 0, ini));
|
||||
bodypartHit.Head = static_cast<long>(GetConfigInt("Misc", "BodyHit_Head", -40));
|
||||
bodypartHit.Left_Arm = static_cast<long>(GetConfigInt("Misc", "BodyHit_Left_Arm", -30));
|
||||
bodypartHit.Right_Arm = static_cast<long>(GetConfigInt("Misc", "BodyHit_Right_Arm", -30));
|
||||
bodypartHit.Torso = static_cast<long>(GetConfigInt("Misc", "BodyHit_Torso", 0));
|
||||
bodypartHit.Right_Leg = static_cast<long>(GetConfigInt("Misc", "BodyHit_Right_Leg", -20));
|
||||
bodypartHit.Left_Leg = static_cast<long>(GetConfigInt("Misc", "BodyHit_Left_Leg", -20));
|
||||
bodypartHit.Eyes = static_cast<long>(GetConfigInt("Misc", "BodyHit_Eyes", -60));
|
||||
bodypartHit.Groin = static_cast<long>(GetConfigInt("Misc", "BodyHit_Groin", -30));
|
||||
bodypartHit.Uncalled = static_cast<long>(GetConfigInt("Misc", "BodyHit_Torso_Uncalled", 0));
|
||||
}
|
||||
|
||||
static void __declspec(naked) apply_damage_hack() {
|
||||
@@ -497,7 +497,7 @@ void CombatInit() {
|
||||
// Actually disables all secondary attacks for the critter, regardless of whether the weapon has a burst attack
|
||||
MakeCall(0x429E44, ai_pick_hit_mode_hack, 1); // NoBurst
|
||||
|
||||
if(GetPrivateProfileInt("Misc", "CheckWeaponAmmoCost", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "CheckWeaponAmmoCost", 0)) {
|
||||
MakeCall(0x4234B3, compute_spray_hack, 1);
|
||||
HookCall(0x4266E9, combat_check_bad_shot_hook);
|
||||
HookCall(0x429A37, ai_search_inven_weap_hook);
|
||||
|
||||
+2
-3
@@ -47,9 +47,8 @@ static void __declspec(naked) ConsoleHook() {
|
||||
}
|
||||
|
||||
void ConsoleInit() {
|
||||
char path[MAX_PATH];
|
||||
GetPrivateProfileString("Misc", "ConsoleOutputPath", "", path, MAX_PATH, ini);
|
||||
if (strlen(path) > 0) {
|
||||
std::string path = GetConfigString("Misc", "ConsoleOutputPath", "", MAX_PATH);
|
||||
if (!path.empty()) {
|
||||
consolefile.open(path);
|
||||
if (consolefile.is_open()) {
|
||||
MakeJump(0x43186C, ConsoleHook);
|
||||
|
||||
+8
-8
@@ -16,9 +16,9 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "FalloutEngine.h"
|
||||
#include "version.h"
|
||||
|
||||
@@ -91,15 +91,15 @@ static DWORD __fastcall CreditsNextLine(char* buf, DWORD* font, DWORD* colour) {
|
||||
if (strlen(line)) {
|
||||
if (line[0] == '#') {
|
||||
line++;
|
||||
*font = *(DWORD*)_name_font;
|
||||
*font = *ptr_name_font;
|
||||
*colour = *(BYTE*)0x6A7F01;
|
||||
} else if (line[0] == '@') {
|
||||
line++;
|
||||
*font = *(DWORD*)_title_font;
|
||||
*colour = *(DWORD*)_title_color;
|
||||
*font = *ptr_title_font;
|
||||
*colour = *ptr_title_color;
|
||||
} else {
|
||||
*font = *(DWORD*)_name_font;
|
||||
*colour = *(DWORD*)_name_color;
|
||||
*font = *ptr_name_font;
|
||||
*colour = *ptr_name_color;
|
||||
}
|
||||
}
|
||||
strcpy_s(buf, 256, line);
|
||||
@@ -154,7 +154,7 @@ morelines:
|
||||
void CreditsInit() {
|
||||
HookCall(0x480C49, ShowCreditsHook);
|
||||
HookCall(0x43F881, ShowCreditsHook);
|
||||
if (GetPrivateProfileIntA("Misc", "CreditsAtBottom", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "CreditsAtBottom", 0)) {
|
||||
HookCall(0x42CB49, CreditsNextLineHook_Bottom);
|
||||
} else {
|
||||
HookCall(0x42CB49, CreditsNextLineHook_Top);
|
||||
|
||||
+7
-8
@@ -16,13 +16,14 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include "Criticals.h"
|
||||
|
||||
#include "main.h"
|
||||
#include "FalloutEngine.h"
|
||||
#include "Logging.h"
|
||||
|
||||
#include "Criticals.h"
|
||||
|
||||
static std::string critTableFile(".\\");
|
||||
|
||||
static const DWORD CritTableCount = 2 * 19 + 1; // Number of species in new critical table
|
||||
@@ -269,7 +270,7 @@ static void CriticalTableOverride() {
|
||||
#undef SetEntry
|
||||
|
||||
static void RemoveCriticalTimeLimitsPatch() {
|
||||
if (GetPrivateProfileIntA("Misc", "RemoveCriticalTimelimits", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "RemoveCriticalTimelimits", 0)) {
|
||||
dlog("Removing critical time limits.", DL_INIT);
|
||||
SafeWrite8(0x424118, 0xEB); // jump to 0x424131
|
||||
SafeWrite16(0x4A3052, 0x9090);
|
||||
@@ -279,12 +280,10 @@ static void RemoveCriticalTimeLimitsPatch() {
|
||||
}
|
||||
|
||||
void CriticalsInit() {
|
||||
mode = GetPrivateProfileIntA("Misc", "OverrideCriticalTable", 2, ini);
|
||||
mode = GetConfigInt("Misc", "OverrideCriticalTable", 2);
|
||||
if (mode < 0 || mode > 3) mode = 0;
|
||||
if (mode) {
|
||||
char critFile[MAX_PATH];
|
||||
GetPrivateProfileStringA("Misc", "OverrideCriticalFile", "CriticalOverrides.ini", critFile, MAX_PATH, ini);
|
||||
critTableFile += critFile;
|
||||
critTableFile += GetConfigString("Misc", "OverrideCriticalFile", "CriticalOverrides.ini", MAX_PATH);
|
||||
CriticalTableOverride();
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -435,7 +435,7 @@ static void __declspec(naked) DisplayBonusHtHDmg2_hack() {
|
||||
}
|
||||
|
||||
void DamageModInit() {
|
||||
if (formula = GetPrivateProfileIntA("Misc", "DamageFormula", 0, ini)) {
|
||||
if (formula = GetConfigInt("Misc", "DamageFormula", 0)) {
|
||||
switch (formula) {
|
||||
case 1:
|
||||
case 2:
|
||||
@@ -447,8 +447,8 @@ void DamageModInit() {
|
||||
}
|
||||
}
|
||||
|
||||
int BonusHtHDmgFix = GetPrivateProfileIntA("Misc", "BonusHtHDamageFix", 1, ini);
|
||||
int DisplayBonusDmg = GetPrivateProfileIntA("Misc", "DisplayBonusDamage", 0, ini);
|
||||
int BonusHtHDmgFix = GetConfigInt("Misc", "BonusHtHDamageFix", 1);
|
||||
int DisplayBonusDmg = GetConfigInt("Misc", "DisplayBonusDamage", 0);
|
||||
if (BonusHtHDmgFix) {
|
||||
dlog("Applying Bonus HtH Damage Perk fix.", DL_INIT);
|
||||
if (!DisplayBonusDmg) { // Subtract damage from perk bonus (vanilla displaying)
|
||||
|
||||
@@ -227,7 +227,7 @@ void ResetExplosionRadius() {
|
||||
void ExplosionInit() {
|
||||
MakeJump(0x411AB4, explosion_effect_hook); // required for explosions_metarule
|
||||
|
||||
lightingEnabled = GetPrivateProfileIntA("Misc", "ExplosionsEmitLight", 0, ini) != 0;
|
||||
lightingEnabled = GetConfigInt("Misc", "ExplosionsEmitLight", 0) != 0;
|
||||
if (lightingEnabled) {
|
||||
dlog("Applying Explosion changes.", DL_INIT);
|
||||
MakeJump(0x4118E1, ranged_attack_lighting_fix);
|
||||
|
||||
@@ -744,7 +744,7 @@ bool FileSystemIsEmpty() {
|
||||
}
|
||||
|
||||
void FileSystemInit() {
|
||||
if (GetPrivateProfileIntA("Misc", "UseFileSystemOverride", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "UseFileSystemOverride", 0)) {
|
||||
FileSystemOverride();
|
||||
UsingFileSystem = true;
|
||||
}
|
||||
|
||||
+6
-6
@@ -1041,18 +1041,18 @@ HRESULT _stdcall FakeDirectDrawCreate2(void*, IDirectDraw** b, void*) {
|
||||
movieDesc.dwHeight = 480;
|
||||
movieDesc.dwWidth = 640;
|
||||
|
||||
gWidth = GetPrivateProfileIntA("Graphics", "GraphicsWidth", 0, ini);
|
||||
gHeight = GetPrivateProfileIntA("Graphics", "GraphicsHeight", 0, ini);
|
||||
gWidth = GetConfigInt("Graphics", "GraphicsWidth", 0);
|
||||
gHeight = GetConfigInt("Graphics", "GraphicsHeight", 0);
|
||||
if (!gWidth || !gHeight) {
|
||||
gWidth = ResWidth;
|
||||
gHeight = ResHeight;
|
||||
}
|
||||
GPUBlt = GetPrivateProfileIntA("Graphics", "GPUBlt", 0, ini);
|
||||
GPUBlt = GetConfigInt("Graphics", "GPUBlt", 0);
|
||||
if (!GPUBlt || GPUBlt > 2) GPUBlt = 2; // Swap them around to keep compatibility with old ddraw.ini's
|
||||
else if (GPUBlt == 2) GPUBlt = 0; // Use CPU
|
||||
|
||||
if (GraphicsMode == 5) {
|
||||
ScrollWindowKey = GetPrivateProfileInt("Input", "WindowScrollKey", 0, ini);
|
||||
ScrollWindowKey = GetConfigInt("Input", "WindowScrollKey", 0);
|
||||
} else ScrollWindowKey = 0;
|
||||
|
||||
*b = (IDirectDraw*)new FakeDirectDraw2();
|
||||
@@ -1081,7 +1081,7 @@ static __declspec(naked) void palette_fade_to_hook() {
|
||||
}
|
||||
|
||||
void GraphicsInit() {
|
||||
GraphicsMode = GetPrivateProfileIntA("Graphics", "Mode", 0, ini);
|
||||
GraphicsMode = GetConfigInt("Graphics", "Mode", 0);
|
||||
if (GraphicsMode != 4 && GraphicsMode != 5) {
|
||||
GraphicsMode = 0;
|
||||
}
|
||||
@@ -1106,7 +1106,7 @@ void GraphicsInit() {
|
||||
dlogr(" Done", DL_INIT);
|
||||
}
|
||||
|
||||
fadeMulti = GetPrivateProfileIntA("Graphics", "FadeMultiplier", 100, ini);
|
||||
fadeMulti = GetConfigInt("Graphics", "FadeMultiplier", 100);
|
||||
if (fadeMulti != 100) {
|
||||
dlog("Applying fade patch.", DL_INIT);
|
||||
HookCall(0x493B16, palette_fade_to_hook);
|
||||
|
||||
@@ -1385,16 +1385,16 @@ void _stdcall HeroSelectWindow(int raceStyleFlag) {
|
||||
char titleText[16];
|
||||
// Get alternate text from ini if available
|
||||
if (isStyle) {
|
||||
GetPrivateProfileString("AppearanceMod", "StyleText", "Style", titleText, 16, translationIni);
|
||||
Translate("AppearanceMod", "StyleText", "Style", titleText, 16);
|
||||
} else {
|
||||
GetPrivateProfileString("AppearanceMod", "RaceText", "Race", titleText, 16, translationIni);
|
||||
Translate("AppearanceMod", "RaceText", "Race", titleText, 16);
|
||||
}
|
||||
|
||||
BYTE textColour = *(BYTE*)_PeanutButter; // PeanutButter colour - palette offset stored in mem
|
||||
DWORD titleTextWidth = GetTextWidth(titleText);
|
||||
PrintText(titleText, textColour, 92 - titleTextWidth / 2, 10, titleTextWidth, 484, mainSurface);
|
||||
|
||||
GetPrivateProfileString("AppearanceMod", "DoneBtn", "Done", titleText, 16, translationIni);
|
||||
Translate("AppearanceMod", "DoneBtn", "Done", titleText, 16);
|
||||
titleTextWidth = GetTextWidth(titleText);
|
||||
PrintText(titleText, textColour, 80 - titleTextWidth / 2, 185, titleTextWidth, 484, mainSurface);
|
||||
|
||||
@@ -1906,8 +1906,8 @@ static void __declspec(naked) FixCharScrnBack() {
|
||||
|
||||
char RaceText[8], StyleText[8];
|
||||
// Get alternate text from ini if available
|
||||
GetPrivateProfileString("AppearanceMod", "RaceText", "Race", RaceText, 8, translationIni);
|
||||
GetPrivateProfileString("AppearanceMod", "StyleText", "Style", StyleText, 8, translationIni);
|
||||
Translate("AppearanceMod", "RaceText", "Race", RaceText, 8);
|
||||
Translate("AppearanceMod", "StyleText", "Style", StyleText, 8);
|
||||
|
||||
DWORD raceTextWidth = GetTextWidth(RaceText);
|
||||
DWORD styleTextWidth = GetTextWidth(StyleText);
|
||||
@@ -2200,7 +2200,7 @@ void HeroAppearanceModExit() {
|
||||
}
|
||||
|
||||
void HeroAppearanceModInit() {
|
||||
int heroAppearanceMod = GetPrivateProfileIntA("Misc", "EnableHeroAppearanceMod", 0, ini);
|
||||
int heroAppearanceMod = GetConfigInt("Misc", "EnableHeroAppearanceMod", 0);
|
||||
if (heroAppearanceMod > 0) {
|
||||
dlog("Setting up Appearance Char Screen buttons.", DL_INIT);
|
||||
EnableHeroAppearanceMod();
|
||||
|
||||
+13
-12
@@ -38,6 +38,7 @@ struct sMessage {
|
||||
char* audio;
|
||||
char* message;
|
||||
};
|
||||
|
||||
static const char* MsgSearch(long msgno, DWORD file) {
|
||||
if(!file) return 0;
|
||||
sMessage msg = { msgno, 0, 0, 0 };
|
||||
@@ -668,7 +669,7 @@ void InventoryReset() {
|
||||
}
|
||||
|
||||
void InventoryInit() {
|
||||
sizeLimitMode = GetPrivateProfileInt("Misc", "CritterInvSizeLimitMode", 0, ini);
|
||||
sizeLimitMode = GetConfigInt("Misc", "CritterInvSizeLimitMode", 0);
|
||||
if (sizeLimitMode > 0 && sizeLimitMode <= 7) {
|
||||
if (sizeLimitMode >= 4) {
|
||||
sizeLimitMode -= 4;
|
||||
@@ -678,7 +679,7 @@ void InventoryInit() {
|
||||
SafeWrite8(0x477F11, 0);
|
||||
SafeWrite8(0x477F29, 0);
|
||||
}
|
||||
invSizeMaxLimit = GetPrivateProfileInt("Misc", "CritterInvSizeLimit", 100, ini);
|
||||
invSizeMaxLimit = GetConfigInt("Misc", "CritterInvSizeLimit", 100);
|
||||
|
||||
// Check item_add_multi (picking stuff from the floor, etc.)
|
||||
HookCall(0x4771BD, item_add_mult_hack); // jle addr
|
||||
@@ -718,26 +719,26 @@ void InventoryInit() {
|
||||
}
|
||||
}
|
||||
|
||||
if(GetPrivateProfileInt("Misc", "SuperStimExploitFix", 0, ini)) {
|
||||
GetPrivateProfileString("sfall", "SuperStimExploitMsg", "You cannot use a super stim on someone who is not injured!", SuperStimMsg, 128, translationIni);
|
||||
if (GetConfigInt("Misc", "SuperStimExploitFix", 0)) {
|
||||
Translate("sfall", "SuperStimExploitMsg", "You cannot use a super stim on someone who is not injured!", SuperStimMsg);
|
||||
MakeCall(0x49C3D9, protinst_use_item_on_hack);
|
||||
}
|
||||
|
||||
reloadWeaponKey = GetPrivateProfileInt("Input", "ReloadWeaponKey", 0, ini);
|
||||
reloadWeaponKey = GetConfigInt("Input", "ReloadWeaponKey", 0);
|
||||
|
||||
invenApCost = invenApCostDef = GetPrivateProfileInt("Misc", "InventoryApCost", 4, ini);
|
||||
invenApQPReduction = GetPrivateProfileInt("Misc", "QuickPocketsApCostReduction", 2, ini);
|
||||
invenApCost = invenApCostDef = GetConfigInt("Misc", "InventoryApCost", 4);
|
||||
invenApQPReduction = GetConfigInt("Misc", "QuickPocketsApCostReduction", 2);
|
||||
if (invenApCostDef != 4 || invenApQPReduction != 2) {
|
||||
ApplyInvenApCostPatch();
|
||||
}
|
||||
|
||||
if (GetPrivateProfileIntA("Misc", "StackEmptyWeapons", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "StackEmptyWeapons", 0)) {
|
||||
MakeCall(0x4736C6, inven_action_cursor_hack);
|
||||
HookCall(0x4772AA, item_add_mult_hook);
|
||||
}
|
||||
|
||||
// Do not call the 'Move Items' window when using drag and drop to reload weapons in the inventory
|
||||
int ReloadReserve = GetPrivateProfileIntA("Misc", "ReloadReserve", -1, ini);
|
||||
int ReloadReserve = GetConfigInt("Misc", "ReloadReserve", -1);
|
||||
if (ReloadReserve >= 0) {
|
||||
SafeWrite32(0x47655F, ReloadReserve); // mov eax, ReloadReserve
|
||||
SafeWrite32(0x476563, 0x097EC139); // cmp ecx, eax; jle 0x476570
|
||||
@@ -745,14 +746,14 @@ void InventoryInit() {
|
||||
SafeWrite8(0x476569, 0x91); // xchg ecx, eax
|
||||
};
|
||||
|
||||
itemFastMoveKey = GetPrivateProfileIntA("Input", "ItemFastMoveKey", DIK_LCONTROL, ini);
|
||||
itemFastMoveKey = GetConfigInt("Input", "ItemFastMoveKey", DIK_LCONTROL);
|
||||
if (itemFastMoveKey > 0) {
|
||||
HookCall(0x476897, do_move_timer_hook);
|
||||
// Do not call the 'Move Items' window when taking items from containers or corpses
|
||||
skipFromContainer = GetPrivateProfileIntA("Input", "FastMoveFromContainer", 0, ini);
|
||||
skipFromContainer = GetConfigInt("Input", "FastMoveFromContainer", 0);
|
||||
}
|
||||
|
||||
if (GetPrivateProfileIntA("Misc", "ItemCounterDefaultMax", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "ItemCounterDefaultMax", 0)) {
|
||||
MakeCall(0x4768A3, do_move_timer_hack);
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ static void _stdcall SaveGame2() {
|
||||
}
|
||||
return;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////
|
||||
errorSave:
|
||||
dlog_f("ERROR creating: %s\n", DL_MAIN, buf);
|
||||
DisplayConsoleMessage(SaveSfallDataFailMsg);
|
||||
@@ -159,7 +159,7 @@ static DWORD _stdcall CombatSaveTest() {
|
||||
}
|
||||
int ap = StatLevel(*ptr_obj_dude, STAT_max_move_points);
|
||||
int bonusmove = PerkLevel(*ptr_obj_dude, PERK_bonus_move);
|
||||
if (*(DWORD*)(*(DWORD*)_obj_dude + 0x40) != ap || bonusmove * 2 != *(DWORD*)_combat_free_move) {
|
||||
if (*(DWORD*)(*(DWORD*)_obj_dude + 0x40) != ap || bonusmove * 2 != *ptr_combat_free_move) {
|
||||
DisplayConsoleMessage(SaveFailMsg);
|
||||
return 0;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ static void __declspec(naked) SaveGame() {
|
||||
push eax; // save Mode parameter
|
||||
call CombatSaveTest;
|
||||
test eax, eax;
|
||||
pop edx; // recall Mode parameter
|
||||
pop edx; // recall Mode parameter (pop eax)
|
||||
jz end;
|
||||
mov eax, edx;
|
||||
or InLoop, SAVEGAME;
|
||||
@@ -218,7 +218,7 @@ static bool _stdcall LoadGame2_Before() {
|
||||
}
|
||||
return false;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////
|
||||
errorLoad:
|
||||
CloseHandle(h);
|
||||
dlog_f("ERROR reading data: %s\n", DL_MAIN, buf);
|
||||
@@ -566,12 +566,12 @@ static void __declspec(naked) exit_move_timer_win_Hook() {
|
||||
}
|
||||
|
||||
void LoadGameHookInit() {
|
||||
SaveInCombatFix = GetPrivateProfileInt("Misc", "SaveInCombatFix", 1, ini);
|
||||
SaveInCombatFix = GetConfigInt("Misc", "SaveInCombatFix", 1);
|
||||
if (SaveInCombatFix > 2) SaveInCombatFix = 0;
|
||||
GetPrivateProfileString("sfall", "SaveInCombat", "Cannot save at this time.", SaveFailMsg, 128, translationIni);
|
||||
GetPrivateProfileString("sfall", "SaveSfallDataFail", "ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again!", SaveSfallDataFailMsg, 128, translationIni);
|
||||
Translate("sfall", "SaveInCombat", "Cannot save at this time.", SaveFailMsg);
|
||||
Translate("sfall", "SaveSfallDataFail", "ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again!", SaveSfallDataFailMsg);
|
||||
|
||||
switch (GetPrivateProfileInt("Misc", "PipBoyAvailableAtGameStart", 0, ini)) {
|
||||
switch (GetConfigInt("Misc", "PipBoyAvailableAtGameStart", 0)) {
|
||||
case 1:
|
||||
PipBoyAvailableAtGameStart = true;
|
||||
break;
|
||||
@@ -580,7 +580,7 @@ void LoadGameHookInit() {
|
||||
break;
|
||||
}
|
||||
|
||||
if (GetPrivateProfileInt("Misc", "DisableHorrigan", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "DisableHorrigan", 0)) {
|
||||
DisableHorrigan = true;
|
||||
SafeWrite8(0x4C06D8, 0xEB); // skip the Horrigan encounter check
|
||||
}
|
||||
|
||||
+6
-6
@@ -97,17 +97,17 @@ static void __declspec(naked) MainMenuTextHook() {
|
||||
|
||||
void MainMenuInit() {
|
||||
int offset;
|
||||
if (offset = GetPrivateProfileIntA("Misc", "MainMenuCreditsOffsetX", 0, ini)) {
|
||||
if (offset = GetConfigInt("Misc", "MainMenuCreditsOffsetX", 0)) {
|
||||
SafeWrite32(0x481753, 15 + offset);
|
||||
}
|
||||
if (offset = GetPrivateProfileIntA("Misc", "MainMenuCreditsOffsetY", 0, ini)) {
|
||||
if (offset = GetConfigInt("Misc", "MainMenuCreditsOffsetY", 0)) {
|
||||
SafeWrite32(0x48175C, 460 + offset);
|
||||
}
|
||||
if (offset = GetPrivateProfileIntA("Misc", "MainMenuOffsetX", 0, ini)) {
|
||||
if (offset = GetConfigInt("Misc", "MainMenuOffsetX", 0)) {
|
||||
SafeWrite32(0x48187C, 30 + offset);
|
||||
MainMenuTextOffset = offset;
|
||||
}
|
||||
if (offset = GetPrivateProfileIntA("Misc", "MainMenuOffsetY", 0, ini)) {
|
||||
if (offset = GetConfigInt("Misc", "MainMenuOffsetY", 0)) {
|
||||
MainMenuYOffset = offset;
|
||||
MainMenuTextOffset += offset * 640;
|
||||
MakeJump(0x481844, MainMenuButtonYHook);
|
||||
@@ -118,12 +118,12 @@ void MainMenuInit() {
|
||||
|
||||
MakeJump(0x4817AB, MainMenuTextHook);
|
||||
|
||||
OverrideColour = GetPrivateProfileInt("Misc", "MainMenuFontColour", 0, ini);
|
||||
OverrideColour = GetConfigInt("Misc", "MainMenuFontColour", 0);
|
||||
if (OverrideColour & 0xFF) {
|
||||
OverrideColour &= 0x00FF00FF;
|
||||
OverrideColour |= 0x06000000;
|
||||
SafeWrite32(0x481748, (DWORD)&OverrideColour);
|
||||
}
|
||||
OverrideColour2 = GetPrivateProfileInt("Misc", "MainMenuBigFontColour", 0, ini) & 0xFF;
|
||||
OverrideColour2 = GetConfigInt("Misc", "MainMenuBigFontColour", 0) & 0xFF;
|
||||
if (OverrideColour2) SafeWrite32(0x481906, (DWORD)&OverrideColour2);
|
||||
}
|
||||
|
||||
+2
-2
@@ -78,8 +78,8 @@ void ReadExtraGameMsgFiles() {
|
||||
|
||||
names.resize(256);
|
||||
|
||||
while ((read = GetPrivateProfileStringA("Misc", "ExtraGameMsgFileList", "",
|
||||
(LPSTR)names.data(), names.size(), ini)) == names.size() - 1)
|
||||
while ((read = GetConfigString("Misc", "ExtraGameMsgFileList", "",
|
||||
(LPSTR)names.data(), names.size())) == names.size() - 1)
|
||||
names.resize(names.size() + 256);
|
||||
|
||||
if (names.empty()) return;
|
||||
|
||||
@@ -450,7 +450,7 @@ static void __declspec(naked) gdControlUpdateInfo_hook() {
|
||||
}
|
||||
|
||||
static void NpcAutoLevelPatch() {
|
||||
npcAutoLevelEnabled = GetPrivateProfileIntA("Misc", "NPCAutoLevel", 0, ini) != 0;
|
||||
npcAutoLevelEnabled = GetConfigInt("Misc", "NPCAutoLevel", 0) != 0;
|
||||
if (npcAutoLevelEnabled) {
|
||||
dlog("Applying NPC autolevel patch.", DL_INIT);
|
||||
SafeWrite8(0x495CFB, 0xEB); // jmps 0x495D28 (skip random check)
|
||||
@@ -466,13 +466,13 @@ void NpcEngineLevelUpReset() {
|
||||
}
|
||||
|
||||
void PartyControlInit() {
|
||||
Mode = GetPrivateProfileIntA("Misc", "ControlCombat", 0, ini);
|
||||
Mode = GetConfigInt("Misc", "ControlCombat", 0);
|
||||
if (Mode > 2)
|
||||
Mode = 0;
|
||||
if (Mode > 0) {
|
||||
char pidbuf[512];
|
||||
pidbuf[511] = 0;
|
||||
if (GetPrivateProfileStringA("Misc", "ControlCombatPIDList", "", pidbuf, 511, ini)) {
|
||||
if (GetConfigString("Misc", "ControlCombatPIDList", "", pidbuf, 511)) {
|
||||
char* ptr = pidbuf;
|
||||
char* comma;
|
||||
while (true) {
|
||||
@@ -511,15 +511,15 @@ void PartyControlInit() {
|
||||
|
||||
NpcAutoLevelPatch();
|
||||
|
||||
skipCounterAnim = (GetPrivateProfileIntA("Misc", "SpeedInterfaceCounterAnims", 0, ini) == 3);
|
||||
skipCounterAnim = (GetConfigInt("Misc", "SpeedInterfaceCounterAnims", 0) == 3);
|
||||
|
||||
// Display party member's current level & AC & addict flag
|
||||
if (GetPrivateProfileIntA("Misc", "PartyMemberExtraInfo", 0, ini)) {
|
||||
if (GetConfigInt("Misc", "PartyMemberExtraInfo", 0)) {
|
||||
dlog("Applying display NPC extra info patch.", DL_INIT);
|
||||
HookCall(0x44926F, gdControlUpdateInfo_hook);
|
||||
GetPrivateProfileString("sfall", "PartyLvlMsg", "Lvl:", levelMsg, 12, translationIni);
|
||||
GetPrivateProfileString("sfall", "PartyACMsg", "AC:", armorClassMsg, 12, translationIni);
|
||||
GetPrivateProfileString("sfall", "PartyAddictMsg", "Addict", addictMsg, 16, translationIni);
|
||||
Translate("sfall", "PartyLvlMsg", "Lvl:", levelMsg, 12);
|
||||
Translate("sfall", "PartyACMsg", "AC:", armorClassMsg, 12);
|
||||
Translate("sfall", "PartyAddictMsg", "Addict", addictMsg, 16);
|
||||
dlogr(" Done", DL_INIT);
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user