forked from Mirrors/openclonk
IsProjectileTarget: make failsafe if projectile is nil and clean up
parent
3e5de9eea9
commit
5bf83b7d3f
|
@ -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)
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 --*/
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue