mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Removed TownMapHotkeysFix from ddraw.ini (always enabled)
Also move its code from Worldmap.cpp to BugFixes.cpp.
This commit is contained in:
+1
-4
@@ -332,9 +332,6 @@ DamageFormula=0
|
||||
;Prevents you from using 0 to escape from dialogue at any time.
|
||||
DialogueFix=1
|
||||
|
||||
;Prevents you from using number keys to enter unvisited areas on a town map
|
||||
TownMapHotkeysFix=1
|
||||
|
||||
;Set to 1 to disable the horrigan encounter
|
||||
DisableHorrigan=0
|
||||
|
||||
@@ -405,7 +402,7 @@ CorpseDeleteTime=6
|
||||
|
||||
;Set a number of milliseconds to idle each input loop
|
||||
;Set to -1 to disable
|
||||
;Set to 0 to idle only if other processes of equal priority are waiting for processor time
|
||||
;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
|
||||
;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% CPU use
|
||||
ProcessorIdle=-1
|
||||
|
||||
|
||||
@@ -2340,6 +2340,25 @@ largeLoc:
|
||||
}
|
||||
}
|
||||
|
||||
static void __declspec(naked) wmTownMapFunc_hack() {
|
||||
__asm {
|
||||
cmp dword ptr [edi][eax * 4 + 0], 0; // Visited
|
||||
je end;
|
||||
cmp dword ptr [edi][eax * 4 + 4], -1; // Xpos
|
||||
je end;
|
||||
cmp dword ptr [edi][eax * 4 + 8], -1; // Ypos
|
||||
je end;
|
||||
// engine code
|
||||
mov edx, [edi][eax * 4 + 0xC];
|
||||
mov [esi], edx
|
||||
retn;
|
||||
end:
|
||||
add esp, 4; // destroy the return address
|
||||
mov eax, 0x4C4976;
|
||||
jmp eax;
|
||||
}
|
||||
}
|
||||
|
||||
static const DWORD combat_should_end_break = 0x422D00;
|
||||
static void __declspec(naked) combat_should_end_hack() {
|
||||
__asm { // ecx = dude.team_num
|
||||
@@ -3075,6 +3094,13 @@ void BugFixes::init()
|
||||
// Fix the position of the target marker for small/medium location circles
|
||||
MakeCall(0x4C03AA, wmWorldMap_hack, 2);
|
||||
|
||||
// Fix to prevent using number keys to enter unvisited areas on a town map
|
||||
//if (GetConfigInt("Misc", "TownMapHotkeysFix", 1)) {
|
||||
dlog("Applying town map hotkeys patch.", DL_INIT);
|
||||
MakeCall(0x4C495A, wmTownMapFunc_hack, 1);
|
||||
dlogr(" Done", DL_INIT);
|
||||
//}
|
||||
|
||||
// Fix for combat not ending automatically when there are no hostile critters
|
||||
MakeCall(0x422CF3, combat_should_end_hack);
|
||||
SafeWrite16(0x422CEA, 0x0C74); // jz 0x422CF8 (skip party members)
|
||||
|
||||
@@ -212,25 +212,6 @@ static void __declspec(naked) ViewportHook() {
|
||||
}
|
||||
}
|
||||
|
||||
static void __declspec(naked) wmTownMapFunc_hack() {
|
||||
__asm {
|
||||
cmp dword ptr [edi][eax * 4 + 0], 0; // Visited
|
||||
je end;
|
||||
cmp dword ptr [edi][eax * 4 + 4], -1; // Xpos
|
||||
je end;
|
||||
cmp dword ptr [edi][eax * 4 + 8], -1; // Ypos
|
||||
je end;
|
||||
// engine code
|
||||
mov edx, [edi][eax * 4 + 0xC];
|
||||
mov [esi], edx
|
||||
retn;
|
||||
end:
|
||||
add esp, 4; // destroy the return address
|
||||
mov eax, 0x4C4976;
|
||||
jmp eax;
|
||||
}
|
||||
}
|
||||
|
||||
static DWORD _stdcall PathfinderCalc(DWORD perkLevel, DWORD ticks) {
|
||||
double multi = mapMultiMod * scriptMapMulti;
|
||||
|
||||
@@ -398,14 +379,6 @@ void TimeLimitPatch() {
|
||||
}
|
||||
}
|
||||
|
||||
void TownMapsHotkeyFix() {
|
||||
if (GetConfigInt("Misc", "TownMapHotkeysFix", 1)) {
|
||||
dlog("Applying town map hotkeys patch.", DL_INIT);
|
||||
MakeCall(0x4C495A, wmTownMapFunc_hack, 1);
|
||||
dlogr(" Done", DL_INIT);
|
||||
}
|
||||
}
|
||||
|
||||
void WorldmapFpsPatch() {
|
||||
bool fpsPatchOK = (*(DWORD*)0x4BFE5E == 0x8D16);
|
||||
if (GetConfigInt("Misc", "WorldMapFPSPatch", 0)) {
|
||||
@@ -660,7 +633,6 @@ void Worldmap::init() {
|
||||
PathfinderFixInit();
|
||||
StartingStatePatches();
|
||||
TimeLimitPatch();
|
||||
TownMapsHotkeyFix();
|
||||
WorldLimitsPatches();
|
||||
WorldmapFpsPatch();
|
||||
PipBoyAutomapsPatch();
|
||||
|
||||
Reference in New Issue
Block a user