Possibly Solution: add Other.TakeDamage() in function ProcessTouch() if the distance between Instigator and projectile exceeds the damage radius.
Example for WarShell (untested):
Code: Select all
function ProcessTouch (Actor Other, Vector HitLocation)
{
if (Other != instigator)
{
Explode(HitLocation, Normal(HitLocation - Other.Location));
// my extension:
if (Role == ROLE_Authority && VSize(Other.location - location) > DamageRadius)
Other.TakeDamage(Damage, instigator, HitLocation, MomentumTransfer * Vector(Rotation), MyDamageType);
}
}
Replaced instigator by Other
</edit>