#define SUB_OwnerCheck() (other && (other == self.owner))
+void RemoveGrapplingHook(entity pl);
float WarpZone_Projectile_Touch_ImpactFilter_Callback()
{
if(SUB_OwnerCheck())
return TRUE;
if(SUB_NoImpactCheck())
{
- remove(self);
+ if(self.classname == "grapplinghook")
+ RemoveGrapplingHook(self.realowner);
+ else
+ remove(self);
return TRUE;
}
if(trace_ent && trace_ent.solid > SOLID_TRIGGER)
}
return 0;
}
+
+float isPushable(entity e)
+{
+ if(e.iscreature)
+ return TRUE;
+ switch(e.classname)
+ {
+ case "body":
+ case "corpse":
+ case "droppedweapon":
+ case "keepawayball":
+ case "nexball_basketball":
+ case "nexball_football":
+ return TRUE;
+ case "bullet":
+ return FALSE;
+ }
+ if (e.projectiledeathtype)
+ return TRUE;
+ return FALSE;
+}