Files
Project-Reboot-3.0/Project Reboot 3.0/FortPlayerPawnAthena.cpp
2025-05-31 12:43:48 -05:00

55 lines
1.5 KiB
C++

#include "FortPlayerPawnAthena.h"
#include "FortInventory.h"
#include "FortPlayerControllerAthena.h"
void AFortPlayerPawnAthena::OnCapsuleBeginOverlapHook(UObject* Context, FFrame* Stack, void* Ret)
{
using UPrimitiveComponent = UObject;
auto Pawn = (AFortPlayerPawnAthena*)Context;
UPrimitiveComponent* OverlappedComp;
AActor* OtherActor;
UPrimitiveComponent* OtherComp;
int OtherBodyIndex;
bool bFromSweep;
auto SweepResultPtr = (FHitResult*)std::realloc(0, FHitResult::GetStructSize());
LOG_INFO(LogDev, "OnCapsuleBeginOverlapHook!");
Stack->StepCompiledIn(&OverlappedComp);
Stack->StepCompiledIn(&OtherActor);
Stack->StepCompiledIn(&OtherComp);
Stack->StepCompiledIn(&OtherBodyIndex);
Stack->StepCompiledIn(&bFromSweep);
Stack->StepCompiledIn(SweepResultPtr);
std::free(SweepResultPtr);
// LOG_INFO(LogDev, "OtherActor: {}", __int64(OtherActor));
// LOG_INFO(LogDev, "OtherActorName: {}", OtherActor->IsValidLowLevel() ? OtherActor->GetName() : "BadRead")
if (!Pawn->IsDBNO())
{
if (auto Pickup = Cast<AFortPickup>(OtherActor))
{
static auto PawnWhoDroppedPickupOffset = Pickup->GetOffset("PawnWhoDroppedPickup");
if (Pickup->Get<AFortPawn*>(PawnWhoDroppedPickupOffset) != Pawn)
{
auto ItemDefinition = Pickup->GetPrimaryPickupItemEntry()->GetItemDefinition();
if (!ItemDefinition)
{
return;
}
if (!IsPrimaryQuickbar(ItemDefinition))
{
ServerHandlePickupHook(Pawn, Pickup, 0.4f, FVector(), true);
}
}
}
}
// return OnCapsuleBeginOverlapOriginal(Context, Stack, Ret); // we love explicit
}