make friendly fire rule work for projectiles

alut-include-path
Maikel de Vries 2017-01-15 15:27:04 +01:00
parent 1f5f34b559
commit 73de90ea8f
1 changed files with 21 additions and 0 deletions

View File

@ -82,6 +82,11 @@ public func DisableFriendlyFire(object for_obj)
for_obj.Backup_DoShockwaveCheck = for_obj.DoShockwaveCheck ?? Global.DoShockwaveCheck;
for_obj.DoShockwaveCheck = Rule_NoFriendlyFire.NoFF_DoShockwaveCheck;
}
if (for_obj.IsProjectileTarget != Rule_NoFriendlyFire.NoFF_IsProjectileTarget)
{
for_obj.Backup_IsProjectileTarget = for_obj.IsProjectileTarget ?? Global.IsProjectileTarget;
for_obj.IsProjectileTarget = Rule_NoFriendlyFire.NoFF_IsProjectileTarget;
}
return;
}
@ -103,6 +108,11 @@ public func EnableFriendlyFire(object for_obj)
for_obj.DoShockwaveCheck = for_obj.Backup_DoShockwaveCheck;
for_obj.Backup_DoShockwaveCheck = nil;
}
if (for_obj.Backup_IsProjectileTarget != nil)
{
for_obj.IsProjectileTarget = for_obj.Backup_IsProjectileTarget;
for_obj.Backup_IsProjectileTarget = nil;
}
return;
}
@ -135,6 +145,17 @@ public func NoFF_DoShockwaveCheck(int x, int y, int caused_by, ...)
return this->Backup_DoShockwaveCheck(x, y, caused_by, ...);
}
public func NoFF_IsProjectileTarget(object projectile, object shooter, ...)
{
var w_controller = projectile->GetController();
if (w_controller == NO_OWNER)
w_controller = shooter->GetController();
var t_controller = this->GetController();
if (w_controller != NO_OWNER && t_controller != NO_OWNER && !Hostile(w_controller, t_controller))
return false;
return this->Backup_IsProjectileTarget(projectile, shooter, ...);
}
/*-- Description --*/