- Allow placing map markers on discovered locations (from po3's Tweaks) - Place map markers on undiscovered locations without askingdevelopment
parent
14d17f233e
commit
9d84b0bb74
6 changed files with 96 additions and 18 deletions
Binary file not shown.
@ -1,2 +1,3 @@ |
|||||||
FlatMapMarkers = true |
FlatMapMarkers = true |
||||||
StayAtSystemPage = true |
StayAtSystemPage = true |
||||||
|
MapMarkerPlacementFixes = true |
||||||
|
@ -0,0 +1,67 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
// Based on powerofthree's Tweaks 1.8.1 by powerofthree (MIT)
|
||||||
|
namespace MapMarkerPlacement |
||||||
|
{ |
||||||
|
constexpr std::uint8_t NOP{ 0x90 }; |
||||||
|
|
||||||
|
struct IsFastTravelEnabled |
||||||
|
{ |
||||||
|
static bool thunk(RE::PlayerCharacter* a_this, bool a_hideNotification) |
||||||
|
{ |
||||||
|
const auto enabled = func(a_this, a_hideNotification); |
||||||
|
if (!enabled) { |
||||||
|
if (const auto mapMenu = RE::UI::GetSingleton()->GetMenu<RE::MapMenu>(); mapMenu) { |
||||||
|
mapMenu->PlaceMarker(); |
||||||
|
} |
||||||
|
} |
||||||
|
return enabled; |
||||||
|
} |
||||||
|
static inline REL::Relocation<decltype(thunk)> func; |
||||||
|
}; |
||||||
|
|
||||||
|
void InstallPlacementDiscoveredFix() |
||||||
|
{ |
||||||
|
// Place a marker, if a location has been discovered and fast travel is disabled
|
||||||
|
|
||||||
|
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(52208, 53095), REL::Relocate(0x2C5, 0x328, 0x358) }; |
||||||
|
auto& trampoline = SKSE::GetTrampoline(); |
||||||
|
|
||||||
|
SKSE::AllocTrampoline(14); |
||||||
|
IsFastTravelEnabled::func = trampoline.write_call<5>(target.address(), IsFastTravelEnabled::thunk); |
||||||
|
|
||||||
|
logger::info("Applied discovered map marker placement fix"sv); |
||||||
|
} |
||||||
|
|
||||||
|
void InstallPlacementUndiscoveredFix() |
||||||
|
{ |
||||||
|
// Place a marker without asking, if a location isn't discovered yet
|
||||||
|
|
||||||
|
REL::Relocation<std::uintptr_t> target2{ REL::RelocationID(52208, 53095), REL::Relocate(0x17A, 0x183) }; |
||||||
|
std::uint8_t code[] = { 0xB0, 0x01, NOP, NOP, NOP }; |
||||||
|
REL::safe_write(target2.address(), code, 5); |
||||||
|
|
||||||
|
logger::info("Applied undiscovered map marker placement fix"sv); |
||||||
|
} |
||||||
|
|
||||||
|
void Install() |
||||||
|
{ |
||||||
|
if (GetLoadInterface()->GetPluginInfo("DisableFastTravel")) { |
||||||
|
logger::info("Detected Disable Fast Travel SKSE, skipping discovered map marker placement fix"); |
||||||
|
} else if (!GetLoadInterface()->GetPluginInfo("po3_Tweaks")) { |
||||||
|
InstallPlacementDiscoveredFix(); |
||||||
|
} else if (std::filesystem::exists("Data/SKSE/Plugins/po3_Tweaks.ini")) { |
||||||
|
CSimpleIniA ini; |
||||||
|
ini.SetMultiKey(false); |
||||||
|
ini.LoadFile("Data/SKSE/Plugins/po3_Tweaks.ini"); |
||||||
|
if (!ini.GetBoolValue("Fixes", "Map Marker Placement Fix", false)) { |
||||||
|
logger::info("Detected po3's Tweaks with disabled discovered Map Marker Placement Fix"); |
||||||
|
InstallPlacementDiscoveredFix(); |
||||||
|
} else { |
||||||
|
logger::info("Detected po3's Tweaks with enabled discovered Map Marker Placement Fix"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
InstallPlacementUndiscoveredFix(); |
||||||
|
} |
||||||
|
} |
@ -1,15 +1,20 @@ |
|||||||
{ |
{ |
||||||
"registries": [ |
"default-registry": { |
||||||
{ |
"kind": "git", |
||||||
"kind": "git", |
"repository": "https://github.com/microsoft/vcpkg.git", |
||||||
"repository": "https://gitlab.com/colorglass/vcpkg-colorglass", |
"baseline": "08c4e71048eb54733d9b180a28b9b1d7ce637454" |
||||||
"baseline": "6309841a1ce770409708a67a9ba5c26c537d2937", |
}, |
||||||
"packages": [ |
"registries": [ |
||||||
"commonlibsse-ng", |
{ |
||||||
"gluino", |
"kind": "git", |
||||||
"script-extender-common", |
"repository": "https://gitlab.com/colorglass/vcpkg-colorglass", |
||||||
"skse" |
"baseline": "6309841a1ce770409708a67a9ba5c26c537d2937", |
||||||
] |
"packages": [ |
||||||
} |
"commonlibsse-ng", |
||||||
] |
"gluino", |
||||||
|
"script-extender-common", |
||||||
|
"skse" |
||||||
|
] |
||||||
|
} |
||||||
|
] |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue