IsProjectileTarget: make failsafe if projectile is nil and clean up

install-platforms
Maikel de Vries 2017-11-22 09:30:09 +01:00
parent 3e5de9eea9
commit 5bf83b7d3f
8 changed files with 17 additions and 11 deletions

View File

@ -28,9 +28,9 @@ global func FxHorizontalMovingTimer(object target, effect, int time)
return 1;
}
public func IsProjectileTarget(target,shooter)
public func IsProjectileTarget(object projectile, object shooter)
{
return 1;
return true;
}
public func OnProjectileHit(object projectile)

View File

@ -244,7 +244,7 @@ public func OnUnmount(object clonk)
/*-- Explosion --*/
// Don't get hit by projectiles shot from own rider.
public func IsProjectileTarget(target,shooter) { return (!shooter) || (shooter->GetActionTarget() != this); }
public func IsProjectileTarget(object projectile, object shooter) { return (!shooter) || (shooter->GetActionTarget() != this); }
public func OnProjectileHit(object shot) { return DoFireworks(shot->GetController()); }
public func ContactBottom() { return Hit(); }

View File

@ -241,6 +241,9 @@ protected func OnUnmount(object clonk)
public func IsProjectileTarget(object projectile, object shooter)
{
// If there is no projectile assume it is a general request and thus return true.
if (!projectile)
return true;
// Exclude the bottom triangle edges from the hitbox such that projectiles can be shot while hanging on the balloon.
var dx = GetX() - projectile->GetX();
var dy = GetY() - projectile->GetY() + GetBottom();

View File

@ -84,7 +84,7 @@ public func OnUnmount(clonk)
public func IsProjectileTarget(object projectile)
{
return projectile->GetID() != GetID();
return !projectile || projectile->GetID() != GetID();
}
public func OnProjectileHit(object projectile)

View File

@ -147,7 +147,9 @@ public func NoFF_DoShockwaveCheck(int x, int y, int caused_by, ...)
public func NoFF_IsProjectileTarget(object projectile, object shooter, ...)
{
var w_controller = projectile->GetController();
var w_controller = NO_OWNER;
if (projectile)
w_controller = projectile->GetController();
if (shooter && w_controller == NO_OWNER)
w_controller = shooter->GetController();
var t_controller = this->GetController();

View File

@ -215,10 +215,11 @@ func Damage()
Die(false);
}
func IsProjectileTarget(object weapon, object wielder)
public func IsProjectileTarget(object projectile, object shooter)
{
if(Random(20)) return false;
return ObjectDistance(this, weapon) < 15;
if(Random(20))
return false;
return !projectile || ObjectDistance(this, projectile) < 15;
}
func AttachTargetLost()

View File

@ -94,7 +94,7 @@ public func Hit(int xdir, int ydir)
public func IsContainer() { return true; }
public func IsProjectileTarget(target, shooter) { return true; }
public func IsProjectileTarget(object projectile, object shooter) { return true; }
/*-- Interface --*/

View File

@ -8,9 +8,9 @@ protected func Initialize()
PlayAnimation("idle", 1, Anim_Linear(0, 0, GetAnimationLength("idle"), 1000, ANIM_Loop));
}
public func IsProjectileTarget(target,shooter)
public func IsProjectileTarget(object projectile, object shooter)
{
return 1;
return true;
}
public func SetGate(object g)
{