From f4505205de6a73f5ef1666d795a2ba94c590b1de Mon Sep 17 00:00:00 2001
From: terencehill <piuntn@gmail.com>
Date: Fri, 21 Jun 2013 18:02:04 +0200
Subject: [PATCH] Reset vehicles in reset_map (thanks to the new vehicles_reset
 function), not just in assault_new_round

---
 qcsrc/server/mutators/gamemode_assault.qc | 23 ---------------------
 qcsrc/server/vehicles/vehicles.qc         | 25 +++++++++++++++++++++++
 2 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/qcsrc/server/mutators/gamemode_assault.qc b/qcsrc/server/mutators/gamemode_assault.qc
index e857af9c0f..18fb2bb236 100644
--- a/qcsrc/server/mutators/gamemode_assault.qc
+++ b/qcsrc/server/mutators/gamemode_assault.qc
@@ -212,31 +212,8 @@ void assault_wall_think()
 
 // trigger new round
 // reset objectives, toggle spawnpoints, reset triggers, ...
-void vehicles_clearreturn();
-void vehicles_spawn();
 void assault_new_round()
 {
-    entity oldself;
-	//bprint("ASSAULT: new round\n");
-
-	oldself = self;
-	// Eject players from vehicles
-    FOR_EACH_PLAYER(self)
-    {
-        if(self.vehicle)
-            vehicles_exit(VHEF_RELESE);
-    }
-
-    self = findchainflags(vehicle_flags, VHF_ISVEHICLE);
-    while(self)
-    {
-        vehicles_clearreturn();
-        vehicles_spawn();
-        self = self.chain;
-    }
-
-    self = oldself;
-
 	// up round counter
 	self.winning = self.winning + 1;
 
diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc
index 10be37f8f3..5771a468d6 100644
--- a/qcsrc/server/vehicles/vehicles.qc
+++ b/qcsrc/server/vehicles/vehicles.qc
@@ -456,6 +456,30 @@ entity vehicles_projectile(string _mzlfx, string _mzlsound,
 }
 // 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.
@@ -470,6 +494,7 @@ void vehicles_spawn()
     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;
-- 
2.39.5