float AGhost::TakeDamage(float Damage, FDamageEvent const & DamageEvent, AController * EventInstigator, AActor * DamageCauser) { if (ShouldTakeDamage(Damage, DamageEvent, EventInstigator, DamageCauser)) { SetActorHiddenInGame(true); Destroy(); } return 0.f; }
float APawn::TakeDamage(float Damage, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) { if (!ShouldTakeDamage(Damage, DamageEvent, EventInstigator, DamageCauser)) { return 0.f; } // do not modify damage parameters after this const float ActualDamage = Super::TakeDamage(Damage, DamageEvent, EventInstigator, DamageCauser); // respond to the damage if (ActualDamage != 0.f) { if ( EventInstigator && EventInstigator != Controller ) { LastHitBy = EventInstigator; } } return ActualDamage; }