]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Make a common vehicles_spawn to handle bulk stuff / reduce code duplication. Make...
authorJakob MG <jakob_mg@hotmail.com>
Fri, 1 Apr 2011 16:49:00 +0000 (18:49 +0200)
committerJakob MG <jakob_mg@hotmail.com>
Fri, 1 Apr 2011 16:49:00 +0000 (18:49 +0200)
qcsrc/server/vehicles/racer.qc
qcsrc/server/vehicles/raptor.qc
qcsrc/server/vehicles/spiderbot.qc
qcsrc/server/vehicles/vehicles.qc
qcsrc/server/vehicles/vehicles.qh

index 81fbea5f46e055db80e27f038d716b51064289db..d0a4165864baa45268c51356d8ad7f6bcce178a1 100644 (file)
@@ -568,10 +568,12 @@ void racer_spawn()
     self.nextthink      = time;
     self.vehicle_health = autocvar_g_vehicle_racer_health;
     self.vehicle_shield = autocvar_g_vehicle_racer_shield;
+
     self.movetype       = MOVETYPE_TOSS;
     self.solid          = SOLID_SLIDEBOX;
     self.delay          = time;
     self.scale          = 0.5;
+
     setsize(self, RACER_MIN * 0.5, RACER_MAX * 0.5);
 }
 
index cf5028bc45f0ea43a1fc7b2ce7b275e2fc8cfd5a..a0fc30a9998a40c60c449da4bf7899839a5426c0 100644 (file)
@@ -613,8 +613,8 @@ void raptor_die()
     self.colormod = '-0.5 -0.5 -0.5';
 
        self.touch     = raptor_blowup;
-       self.think     = raptor_spawn;
-       self.nextthink = time + autocvar_g_vehicle_raptor_respawntime;
+       //self.think     = raptor_spawn;
+       //self.nextthink = time + autocvar_g_vehicle_raptor_respawntime;
 }
 
 void raptor_spawn()
@@ -622,31 +622,18 @@ void raptor_spawn()
     self.flags     = FL_NOTARGET;
     self.effects   = 0;
 
+    self.frame          = 0;
     self.vehicle_health = autocvar_g_vehicle_raptor_health;
     self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
-    self.event_damage   = vehicles_damage;
-    self.touch          = vehicles_touch;
-    self.iscreature     = TRUE;
-    self.movetype       = MOVETYPE_FLY;
+    self.movetype       = MOVETYPE_TOSS;
     self.solid          = SOLID_BBOX;
-    self.takedamage     = DAMAGE_AIM;
-       self.deadflag       = DEAD_NO;
-    self.bot_attack     = TRUE;
     self.vehicle_energy = 1;
-    self.vehicle_hudmodel.viewmodelforclient = self;
 
     self.bomb1.gun1.avelocity_y = 90;
     self.bomb1.gun2.avelocity_y = -90;
-    self.frame = 0;
-
-    setorigin(self, self.pos1);
-    self.angles = self.pos2;
 
     setsize(self, RAPTOR_MIN, RAPTOR_MAX );
-    pointparticles(particleeffectnum("teleport"), self.origin + '0 0 64', '0 0 0', 1);
     self.delay = time;
-
-    vehicles_reset_colors();
 }
 
 void raptor_dinit()
index c1b78790d48868046929551bbfd1bfdbf61a2053..090b53149fbf1fe72a493dd5d3b869d67f981120 100644 (file)
@@ -3,8 +3,18 @@ const vector SPIDERBOT_MAX  = '75 75 110';
 
 float autocvar_g_vehicle_spiderbot_respawntime;
 
-float autocvar_g_vehicle_spiderbot_crush_dmg;
-float autocvar_g_vehicle_spiderbot_crush_force;
+//float autocvar_g_vehicle_spiderbot_crush_dmg;
+//float autocvar_g_vehicle_spiderbot_crush_force;
+
+float autocvar_g_vehicle_spiderbot_speed_stop;
+float autocvar_g_vehicle_spiderbot_speed_strafe;
+float autocvar_g_vehicle_spiderbot_speed_walk;
+float autocvar_g_vehicle_spiderbot_turnspeed;
+float autocvar_g_vehicle_spiderbot_movement_inertia;
+
+float autocvar_g_vehicle_spiderbot_springlength;
+float autocvar_g_vehicle_spiderbot_springup;
+float autocvar_g_vehicle_spiderbot_springblend;
 
 float autocvar_g_vehicle_spiderbot_head_pitchlimit_down;
 float autocvar_g_vehicle_spiderbot_head_pitchlimit_up;
@@ -24,12 +34,11 @@ float autocvar_g_vehicle_spiderbot_shield;
 float autocvar_g_vehicle_spiderbot_shield_regen;
 float autocvar_g_vehicle_spiderbot_shield_regen_pause;
 
-float autocvar_g_vehicle_spiderbot_minigun_cooldown;
 float autocvar_g_vehicle_spiderbot_minigun_damage;
-float autocvar_g_vehicle_spiderbot_minigun_heat;
 float autocvar_g_vehicle_spiderbot_minigun_refire;
 float autocvar_g_vehicle_spiderbot_minigun_spread;
-float autocvar_g_vehicle_spiderbot_movement_inertia;
+float autocvar_g_vehicle_spiderbot_minigun_cooldown;
+float autocvar_g_vehicle_spiderbot_minigun_heat;
 
 float autocvar_g_vehicle_spiderbot_rocket_damage;
 float autocvar_g_vehicle_spiderbot_rocket_edgedamage;
@@ -43,16 +52,6 @@ float autocvar_g_vehicle_spiderbot_rocket_reload;
 float autocvar_g_vehicle_spiderbot_rocket_speed;
 float autocvar_g_vehicle_spiderbot_rocket_turnrate;
 
-float autocvar_g_vehicle_spiderbot_shield;
-float autocvar_g_vehicle_spiderbot_speed_stop;
-float autocvar_g_vehicle_spiderbot_speed_strafe;
-float autocvar_g_vehicle_spiderbot_speed_walk;
-float autocvar_g_vehicle_spiderbot_turnspeed;
-
-
-float autocvar_g_vehicle_spiderbot_springlength;
-float autocvar_g_vehicle_spiderbot_springup;
-float autocvar_g_vehicle_spiderbot_springblend;
 
 void spiderbot_exit(float eject);
 void spiderbot_enter();
@@ -378,11 +377,19 @@ float spiderbot_frame()
     ad_y = bound(-ftmp, ad_y, ftmp);
     spider.tur_head.angles_y = bound(autocvar_g_vehicle_spiderbot_head_turnlimit * -1, spider.tur_head.angles_y + ad_y, autocvar_g_vehicle_spiderbot_head_turnlimit);
 
+
     // Pitch head
+    ad = vectoangles(normalize(trace_endpos - gettaginfo(spider.tur_head,gettagindex(spider.tur_head,"tag_hud")))) - (spider.tur_head.angles + spider.angles);
+    if(ad_x > 180) ad_x -= 360;
+    if(ad_x < -180) ad_x += 360;
+
+
     ftmp = autocvar_g_vehicle_spiderbot_head_pitchspeed * sys_frametime;
     ad_x = bound(ftmp * -1, ad_x, ftmp);
     spider.tur_head.angles_x = bound(autocvar_g_vehicle_spiderbot_head_pitchlimit_down, spider.tur_head.angles_x + ad_x, autocvar_g_vehicle_spiderbot_head_pitchlimit_up);
 
+
+
     // Turn Body
     ftmp = autocvar_g_vehicle_spiderbot_turnspeed * sys_frametime;
     ftmp = bound(-ftmp, spider.tur_head.angles_y, ftmp);
@@ -608,29 +615,18 @@ float spiderbot_crushable(entity e)
 void spiderbot_spawn()
 {
     self.frame              = 5;
+    self.tur_head.frame     = 1;
     self.think              = spiderbot_think;
     self.nextthink          = time;
-    self.owner              = world;
     self.vehicle_health     = autocvar_g_vehicle_spiderbot_health;
     self.vehicle_shield     = autocvar_g_vehicle_spiderbot_shield;
-    self.event_damage       = vehicles_damage;
-    self.iscreature         = TRUE;
     self.movetype           = MOVETYPE_WALK;
     self.solid              = SOLID_SLIDEBOX;
-    self.takedamage         = DAMAGE_AIM;
-    self.touch              = vehicles_touch;
     self.alpha              = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = 1;
     self.tur_head.angles    = '0 0 0';
-       self.deadflag           = DEAD_NO;
-    self.bot_attack         = TRUE;
-    self.flags              |= FL_NOTARGET;
-    self.tur_head.frame     = 1;
-    self.vehicle_hudmodel.viewmodelforclient = self;
 
     setorigin(self, self.pos1 + '0 0 128');
     self.angles = self.pos2;
-
-    vehicles_reset_colors();
 }
 
 void spiderbot_headfade()
@@ -708,14 +704,15 @@ void spiderbot_blowup()
     RadiusDamage (self, self, 250, 15, 250, world, 250, DEATH_SBBLOWUP, world);
 
     self.alpha = self.tur_head.alpha = self.gun1.alpha = self.gun2.alpha = -1;
-    self.nextthink  = time + autocvar_g_vehicle_spiderbot_respawntime;
-    self.think      = spiderbot_spawn;
     self.movetype   = MOVETYPE_NONE;
     self.deadflag   = DEAD_DEAD;
     self.solid      = SOLID_NOT;
     self.tur_head.effects  &~=  EF_FLAME;
        self.vehicle_hudmodel.viewmodelforclient = self;
 
+    //self.nextthink  = time + autocvar_g_vehicle_spiderbot_respawntime;
+    //self.think      = spiderbot_spawn;
+
     //setorigin(self, self.tur_aimpos);
 }
 
index d27c210431e55e1f99f0816989aa7e2f7e0ae4f1..14957cf9397bbed6c52900690d4766edb6091119 100644 (file)
@@ -7,7 +7,7 @@ void vehicles_enter();
 void vehicles_touch();
 void vehicles_reset_colors();
 void vehicles_clearrturn();
-void vehicles_setreturn(float retime, void() respawn_proc);
+void vehicles_setreturn();
 
 
 #define MAX_AXH 4
@@ -180,14 +180,15 @@ vector vehicles_force_fromtag_maglev(string tag_name, float spring_length, float
 void vehicles_spawn()
 {
     dprint("Spawning vehicle: ", self.netname, "\n");
+
     self.vehicle_hudmodel.viewmodelforclient = self;
     self.owner              = world;
+    self.touch              = vehicles_touch;
     self.event_damage       = vehicles_damage;
     self.iscreature         = TRUE;
     self.movetype           = MOVETYPE_WALK;
     self.solid              = SOLID_SLIDEBOX;
     self.takedamage         = DAMAGE_AIM;
-    self.touch              = vehicles_touch;
        self.deadflag           = DEAD_NO;
     self.bot_attack         = TRUE;
     self.flags              = FL_NOTARGET;
@@ -268,6 +269,12 @@ void vehicles_enter()
     if(self.team != other.team)
         return;
 
+    self.vehicle_ammo1   = 0;
+    self.vehicle_ammo2   = 0;
+    self.vehicle_reload1 = 0;
+    self.vehicle_reload2 = 0;
+    self.vehicle_energy  = 0;
+
     self.owner          = other;
     self.switchweapon   = other.switchweapon;
 
@@ -358,7 +365,7 @@ void vehicles_exit(float eject)
 
     self.vehicle_hudmodel.viewmodelforclient = self;
        self.tur_head.nodrawtoclient             = self;
-    vehicles_setreturn(self.vehicle_respawntime, self.vehicle_spawn);
+    vehicles_setreturn();
 
     self.phase = time + 1;
 
@@ -366,7 +373,6 @@ void vehicles_exit(float eject)
         self.team = 0;
 
     self.vehicle_exit(eject);
-
     self.owner = world;
 }
 
@@ -445,14 +451,17 @@ void vehicles_damage(entity inflictor, entity attacker, float damage, float deat
                 vehicles_exit(VHEF_RELESE);
 
         self.vehicle_die();
+        vehicles_setreturn();
     }
 }
 
 void vehicles_return()
 {
     pointparticles(particleeffectnum("teleport"), self.enemy.origin + '0 0 64', '0 0 0', 1);
-    self.enemy.think     = self.use;    // This is the vehicles respwn procedure
+
+    self.enemy.think     = vehicles_spawn;
     self.enemy.nextthink = time;
+
     remove(self);
 }
 
@@ -465,29 +474,27 @@ void vehicles_clearrturn()
     {
         if(ret.enemy == self)
         {
-            ret.think = SUB_Remove;
-            ret.nextthink = time + 0.1;
+            ret.classname   = "";
+            ret.think       = SUB_Remove;
+            ret.nextthink   = time + 0.1;
             return;
         }
+
         ret = ret.chain;
     }
 }
 
-void vehicles_setreturn(float retime, void() respawn_proc)
+void vehicles_setreturn()
 {
+    entity ret;
+
     vehicles_clearrturn();
 
-    if (self.deadflag == DEAD_NO)
-    {
-        entity ret;
-
-        ret = spawn();
-        ret.classname = "vehicle_return";
-        ret.enemy = self;
-        ret.think = vehicles_return;
-        ret.nextthink = time + retime;
-        ret.use = respawn_proc;
-    }
+    ret = spawn();
+    ret.classname   = "vehicle_return";
+    ret.enemy       = self;
+    ret.think       = vehicles_return;
+    ret.nextthink   = time + self.vehicle_respawntime;
 }
 
 float vehicles_customizeentityforclient()
index c9a5575dab91b24c934da405d746a5fb32f98bb6..6d64a3d29e37a50f14b7fadfbf5a3ee452cfe594 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef VEHICLES_ENABLED
-#include "collision.qc"
+//#include "collision.qc"
 #include "vehicles.qc"
 #include "racer.qc"
 #include "spiderbot.qc"