From 3781e0271625c8f93d05657867b39ca2994d57fb Mon Sep 17 00:00:00 2001 From: Belonit <54427022+Belonit@users.noreply.github.com> Date: Sun, 29 Jun 2025 10:04:34 +0300 Subject: [PATCH] Allow cloaked units under player control to have SELECT cursor on it when about to select Co-Authored-By: Trsdy <9932846+chaserli@users.noreply.github.com> --- src/CnCNetYR/Ra2Mode.cpp | 17 ----------------- src/Misc/Observers.Visibility.cpp | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/CnCNetYR/Ra2Mode.cpp b/src/CnCNetYR/Ra2Mode.cpp index 299fd667..59ada4ed 100644 --- a/src/CnCNetYR/Ra2Mode.cpp +++ b/src/CnCNetYR/Ra2Mode.cpp @@ -179,23 +179,6 @@ bool Ra2Mode::CheckSaveGameID(const char* saveGameName) return false; } -// Allow allies to repair on service depot -DEFINE_HOOK(0x700594, TechnoClass_WhatAction__AllowAlliesRepair, 0x5) -{ - if (!Ra2Mode::IsEnabled()) - return 0; - - GET(TechnoClass*, pThis, ESI); - GET(ObjectClass*, pObject, EDI); - - auto const pBuilding = abstract_cast(pObject); - auto const pBuildingOwner = pBuilding ? pBuilding->Owner : nullptr; - - return (pBuildingOwner && pBuildingOwner->IsAlliedWith(pThis)) - ? 0x70059D - : 0x7005E6; -} - // Allow to repair the BlackHawk Transport on service depot #pragma region AllowRepairFlyMZone diff --git a/src/Misc/Observers.Visibility.cpp b/src/Misc/Observers.Visibility.cpp index 2cc43a2b..871a838b 100644 --- a/src/Misc/Observers.Visibility.cpp +++ b/src/Misc/Observers.Visibility.cpp @@ -125,6 +125,20 @@ DEFINE_HOOK(0x4ABE3C, DisplayClass_MouseLeftRelease_Cloak, 0xA) return Unselect; } +DEFINE_HOOK(0x692686, DisplayClass_DecideAction_Cloak, 0x6) +{ + GET(TechnoClass*, pTechno, EDI); + enum { ProceedCloakCheck = 0x692690, ShouldNotCheck = 0x6926DB }; + + if (pTechno->IsOwnedByCurrentPlayer || HouseClass::IsCurrentPlayerObserver()) + return ShouldNotCheck; + + if (pTechno->Owner->IsMutualAlly(HouseClass::CurrentPlayer)) + return ShouldNotCheck; + + return ProceedCloakCheck; +} + // Show cloaked Technos on radar for observers and mutual allies DEFINE_HOOK(0x70D386, TechnoClass_Radar_Cloak, 0xA) { @@ -165,6 +179,15 @@ DEFINE_HOOK(0x4AE62B, DisplayClass_HelpText_Cloak, 0x5) return CheckSensedByHouses; } +// Allow showing the select cursor on the object +DEFINE_HOOK(0x700594, TechnoClass_WhatAction__AllowAllies, 0x5) +{ + GET(TechnoClass*, pThis, ESI); + GET(ObjectClass*, pObject, EDI); + + return pThis->Owner->IsAlliedWith(pObject) ? 0x70059D : 0x7005E6; +} + // Show disguised units (Spy and Mirage) for observer #pragma region // Show spy for observer