Guest User

Untitled

a guest
Jan 18th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. float Hook_APrimalDinoCharacter_TakeDamage(APrimalDinoCharacter* _this, float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser)
  2.  
  3. {
  4. if (EventInstigator && EventInstigator->CharacterField())
  5. {
  6. ACharacter* character = EventInstigator->CharacterField();
  7. if (character != nullptr && character && character->IsA(APrimalDinoCharacter::GetPrivateStaticClass()))
  8. {
  9. APrimalDinoCharacter* dino = static_cast<APrimalDinoCharacter*>(character);
  10. FString descr;
  11. dino->GetDinoDescriptiveName(&descr);
  12. if (descr.Contains(L"Direwolf")
  13. || descr.Contains(L"Wyvern")
  14. || descr.Contains(L"Broodmother"))
  15. {
  16. UWorld* world = ArkApi::GetApiUtils().GetWorld();
  17. TArray<AActor*> new_actors;
  18. TArray<AActor*> actors_ignore;
  19. TArray<TEnumAsByte<enum EObjectTypeQuery>> types;
  20.  
  21. UKismetSystemLibrary::SphereOverlapActors_NEW(world, EventInstigator->RootComponentField()->RelativeLocationField(),
  22.  
  23. static_cast<float>((AntiFireBreath::MinimumEnemyStructureDistanceInFoundations * 300)), &types,
  24. APrimalStructure::GetPrivateStaticClass(), &actors_ignore,
  25. &new_actors);
  26.  
  27. for (const auto& actor : new_actors)
  28. {
  29. APrimalStructure* structure = static_cast<APrimalStructure*>(actor);
  30. Log::GetLog()->warn(FVector::Distance(_this->RootComponentField()->RelativeLocationField(), actor->RootComponentField()->RelativeLocationField()));
  31. if (structure->TargetingTeamField() != _this->TargetingTeamField())
  32. {
  33. return 0;
  34. }
  35.  
  36. }
  37. }
  38. }
  39. }
  40. else
  41. {
  42. return APrimalDinoCharacter_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  43. }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment