void vehicles_enter();
void vehicles_touch();
void vehicles_reset_colors();
-void vehicles_clearrturn();
+void vehicles_clearreturn();
void vehicles_setreturn();
}
// End generic vehile projectile system
+void vehicles_reset()
+{
+ if(self.owner)
+ {
+ entity oldself = self;
+ self = self.owner;
+ vehicles_exit(VHEF_RELESE);
+ self = oldself;
+ }
+ self.alpha = -1;
+ self.movetype = MOVETYPE_NONE;
+ self.effects = EF_NODRAW;
+ self.colormod = '0 0 0';
+ self.avelocity = '0 0 0';
+ self.velocity = '0 0 0';
+ self.event_damage = func_null;
+ self.solid = SOLID_NOT;
+ self.deadflag = DEAD_NO;
+
+ self.touch = func_null;
+ self.nextthink = 0;
+ vehicles_setreturn();
+}
+
/** vehicles_spawn
Exetuted for all vehicles on (re)spawn.
Sets defaults for newly spawned units.
self.owner = world;
self.touch = vehicles_touch;
self.event_damage = vehicles_damage;
+ self.reset = vehicles_reset;
self.iscreature = TRUE;
self.teleportable = FALSE; // no teleporting for vehicles, too buggy
self.damagedbycontents = TRUE;
return FALSE;
}
-void vehilces_impact(float _minspeed, float _speedfac, float _maxpain)
+void vehicles_impact(float _minspeed, float _speedfac, float _maxpain)
{
if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
return;
}
}
- vehicles_clearrturn();
+ vehicles_clearreturn();
CSQCVehicleSetup(self.owner, self.hud);
}
}
-void vehicles_clearrturn()
+void vehicles_clearreturn()
{
entity ret;
// Remove "return helper", if any.
{
entity ret;
- vehicles_clearrturn();
+ vehicles_clearreturn();
ret = spawn();
ret.classname = "vehicle_return";
ret.team = self.team;
ret.think = vehicles_showwp;
- if(self.deadflag != DEAD_NO)
- {
- ret.cnt = time + self.vehicle_respawntime;
- ret.nextthink = min(time + self.vehicle_respawntime, time + self.vehicle_respawntime - 5);
- }
- else
- {
- ret.nextthink = min(time + self.vehicle_respawntime, time + self.vehicle_respawntime - 1);
- }
+ if(self.deadflag != DEAD_NO)
+ {
+ ret.cnt = max(game_starttime, time) + self.vehicle_respawntime;
+ ret.nextthink = max(game_starttime, time) + max(0, self.vehicle_respawntime - 5);
+ }
+ else
+ ret.nextthink = max(game_starttime, time) + max(0, self.vehicle_respawntime - 1);
setmodel(ret, "null");
setorigin(ret, self.pos1 + '0 0 96');
-
}
void vehicles_reset_colors()
self.event_damage = func_null;
self.touch = vehicles_touch;
self.think = vehicles_spawn;
- self.nextthink = time;
- self.vehicle_respawntime = _respawntime;
self.vehicle_spawn = spawnproc;
+ self.vehicle_respawntime = max(0, _respawntime);
self.effects = EF_NODRAW;
self.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_SOLID;
- if(!autocvar_g_vehicles_delayspawn)
- self.nextthink = time + game_starttime;
- else
- self.nextthink = time + _respawntime + (random() * autocvar_g_vehicles_delayspawn_jitter);
+ if(!autocvar_g_vehicles_delayspawn || !self.vehicle_respawntime)
+ self.nextthink = time;
+ else
+ self.nextthink = max(time, game_starttime) + max(0, self.vehicle_respawntime + ((random() * 2 - 1) * autocvar_g_vehicles_delayspawn_jitter));
if(autocvar_g_playerclip_collisions)
self.dphitcontentsmask |= DPCONTENTS_PLAYERCLIP;