}
void ka_TouchEvent();
-void ka_RespawnBall() // runs whenever the ball needs to be relocated
-{SELFPARAM();
+void ka_RespawnBall(entity this) // runs whenever the ball needs to be relocated
+{
if(gameover) { return; }
vector oldballorigin = self.origin;
self.angles = '0 0 0';
self.effects = autocvar_g_keepawayball_effects;
self.touch = ka_TouchEvent;
- self.think = ka_RespawnBall;
+ setthink(self, ka_RespawnBall);
self.nextthink = time + autocvar_g_keepawayball_respawntime;
Send_Effect(EFFECT_ELECTRO_COMBO, oldballorigin, '0 0 0', 1);
if(!self) { return; }
if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
{ // The ball fell off the map, respawn it since players can't get to it
- ka_RespawnBall();
+ ka_RespawnBall(self);
return;
}
if(IS_DEAD(other)) { return; }
ball.movetype = MOVETYPE_BOUNCE;
ball.wait = time + 1;
ball.touch = ka_TouchEvent;
- ball.think = ka_RespawnBall;
+ setthink(ball, ka_RespawnBall);
ball.nextthink = time + autocvar_g_keepawayball_respawntime;
ball.takedamage = DAMAGE_YES;
ball.effects &= ~EF_NODRAW;
if(time < game_starttime)
{
- this.think = ka_RespawnBall;
+ setthink(this, ka_RespawnBall);
this.touch = func_null;
this.nextthink = game_starttime;
}
else
- ka_RespawnBall();
+ ka_RespawnBall(this);
}
e.glow_color = autocvar_g_keepawayball_trail_color;
e.glow_trail = true;
e.flags = FL_ITEM;
+ e.pushable = true;
e.reset = ka_Reset;
e.touch = ka_TouchEvent;
e.owner = world;