#include "FortGadgetItemDefinition.h" #include "FortAbilitySet.h" #include "SoftObjectPath.h" #include "FortPlayerStateAthena.h" #include "addresses.h" #include "FortPlayerPawnAthena.h" #include "FortPlayerControllerAthena.h" void UFortGadgetItemDefinition::UnequipGadgetData(AFortPlayerController* PlayerController, UFortItem* Item) { static auto FortInventoryOwnerInterfaceClass = FindObject("/Script/FortniteGame.FortInventoryOwnerInterface"); __int64 (*RemoveGadgetDataOriginal)(UFortGadgetItemDefinition* a1, __int64 a2, UFortItem* a3) = decltype(RemoveGadgetDataOriginal)(Addresses::RemoveGadgetData); RemoveGadgetDataOriginal(this, __int64(PlayerController->GetInterfaceAddress(FortInventoryOwnerInterfaceClass)), Item); if (auto CosmeticLoadoutPC = PlayerController->GetCosmeticLoadout()) { if (auto CharacterToApply = CosmeticLoadoutPC->GetCharacter()) { ApplyCID(Cast(PlayerController->GetMyFortPawn()), CharacterToApply); // idk why no automatic } } } void UFortGadgetItemDefinition::UpdateTrackedAttributesHook(UFortGadgetItemDefinition* GadgetItemDefinition) { // LOG_INFO(LogDev, "UpdateTrackedAttributesHook Return: 0x{:x}", __int64(_ReturnAddress()) - __int64(GetModuleHandleW(0))); if (GadgetItemDefinition->ShouldDestroyGadgetWhenTrackedAttributesIsZero()) { // PlayerState->MulticastTriggerOnGadgetTrackedAttributeDestroyedFX } }