]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add mutator hooks for vehicle entrance and exit -- this way CTF code can handle it...
authorSamual <samual@xonotic.org>
Mon, 2 Apr 2012 05:56:28 +0000 (01:56 -0400)
committerSamual <samual@xonotic.org>
Mon, 2 Apr 2012 05:56:28 +0000 (01:56 -0400)
defaultXonotic.cfg
qcsrc/server/autocvars.qh
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/gamemode_ctf.qc
qcsrc/server/mutators/gamemode_ctf.qh
qcsrc/server/vehicles/vehicles.qc
vehicles.cfg

index cd6a47b051b230695ae9394a89552d5c2a43d5c3..3732547b35772db1c697a13c65cb6ccb5f2788fd 100644 (file)
@@ -595,6 +595,7 @@ set g_ctf_flag_return_time 15
 set g_ctf_flag_return_dropped 100
 set g_ctf_flag_return_damage 0
 set g_ctf_flag_return_when_unreachable 1 "automatically return the flag if it falls into lava/slime/trigger hurt"
+set g_ctf_flagcarrier_allow_vehicle_carry 1 
 set g_ctf_flagcarrier_selfdamagefactor 1
 set g_ctf_flagcarrier_selfforcefactor 1
 set g_ctf_flagcarrier_damagefactor 1
index cf5e9a3ebbb67133fb98d32ffd54ca21f7febcb2..2bf09f197d79581d9cfe0a85cfeb2c9affeac424 100644 (file)
@@ -788,6 +788,7 @@ float autocvar_g_ctf_flag_return_time;
 float autocvar_g_ctf_flag_return_when_unreachable;
 float autocvar_g_ctf_flag_return_damage;
 float autocvar_g_ctf_flag_return_dropped;
+float autocvar_g_ctf_flagcarrier_allow_vehicle_carry;
 float autocvar_g_ctf_flagcarrier_selfdamagefactor;
 float autocvar_g_ctf_flagcarrier_selfforcefactor;
 float autocvar_g_ctf_flagcarrier_damagefactor;
index 374945d0c148e2b1863150f38fd03994849d34bf..a8828f8c6fec2f569457c21080389ac2782d0788 100644 (file)
@@ -218,4 +218,18 @@ MUTATOR_HOOKABLE(HelpMePing);
        // but if your mutator uses something different then you can handle it
        // in a special manner using this hook
        // INPUT
-       entity self; // the player who pressed impulse 33
\ No newline at end of file
+       entity self; // the player who pressed impulse 33
+       
+MUTATOR_HOOKABLE(VehicleEnter);
+       // called when a player enters a vehicle
+       // allows mutators to set special settings in this event
+       // INPUT
+       entity other; // the player
+       entity self; // the vehicle
+       
+MUTATOR_HOOKABLE(VehicleExit);
+       // called when a player exits a vehicle
+       // allows mutators to set special settings in this event
+       // INPUT
+       entity other; // the player
+       entity self; // the vehicle
\ No newline at end of file
index f93498377cceb16d8c837842c8e18ebce1f9207c..01902c077cb553fddd659c832454ada2c169fed5 100644 (file)
@@ -1051,6 +1051,37 @@ MUTATOR_HOOKFUNCTION(ctf_HelpMePing)
        return 1;
 }
 
+MUTATOR_HOOKFUNCTION(ctf_VehicleEnter)
+{
+       if(other.flagcarried)
+       {
+               if(!autocvar_g_ctf_flagcarrier_allow_vehicle_carry)
+               {
+                       ctf_Handle_Throw(self, world, DROP_NORMAL);
+               }
+               else
+               {            
+                       setattachment(other.flagcarried, self, ""); 
+                       setorigin(other, VEHICLE_FLAG_OFFSET);
+                       other.flagcarried.scale = VEHICLE_FLAG_SCALE;
+               }
+       }
+               
+       return 0;
+}
+
+MUTATOR_HOOKFUNCTION(ctf_VehicleExit)
+{
+       if(self.owner.flagcarried)
+       {
+               setattachment(self.owner.flagcarried, self.owner, ""); 
+               setorigin(self.owner.flagcarried, FLAG_CARRY_OFFSET);
+               self.owner.flagcarried.scale = FLAG_SCALE;
+       }
+
+       return 0;
+}
+
 
 // ==========
 // Spawnfuncs
@@ -1208,7 +1239,9 @@ MUTATOR_DEFINITION(gamemode_ctf)
        MUTATOR_HOOK(PlayerDamage_Calculate, ctf_PlayerDamage, CBC_ORDER_ANY);
        MUTATOR_HOOK(PlayerUseKey, ctf_PlayerUseKey, CBC_ORDER_ANY);
        MUTATOR_HOOK(HelpMePing, ctf_HelpMePing, CBC_ORDER_ANY);
-
+       MUTATOR_HOOK(VehicleEnter, ctf_VehicleEnter, CBC_ORDER_ANY);
+       MUTATOR_HOOK(VehicleExit, ctf_VehicleExit, CBC_ORDER_ANY);
+       
        MUTATOR_ONADD
        {
                if(time > 1) // game loads at time 1
index 7befba4ca2db504a1a2d88d5cd78a54d6b7605a2..f25a0a4a8ad8e4be821e2d21dbcd79ffdf338934 100644 (file)
@@ -15,6 +15,7 @@ void spawnfunc_ctf_team();
 // flag constants // for most of these, there is just one question to be asked: WHYYYYY?
 #define FLAG_MIN (PL_MIN + '0 0 -13')
 #define FLAG_MAX (PL_MAX + '0 0 -13')
+
 #define FLAG_SCALE 0.6
 
 #define FLAG_THINKRATE 0.2
@@ -25,6 +26,9 @@ void spawnfunc_ctf_team();
 #define FLAG_SPAWN_OFFSET ('0 0 1' * (PL_MAX_z - 13))
 #define FLAG_WAYPOINT_OFFSET ('0 0 64')
 
+#define VEHICLE_FLAG_OFFSET ('0 0 96')
+#define VEHICLE_FLAG_SCALE 1.0
+
 // waypoint colors
 #define WPCOLOR_ENEMYFC(t) (colormapPaletteColor(t - 1, FALSE) * 0.75)
 #define WPCOLOR_FLAGCARRIER(t) (('0 0.75 0' + colormapPaletteColor(t - 1, FALSE)) * 0.5)
index 97784315d1f0ba14e33cfca06913c0b8811e3ceb..f35602a6851d4833126a1d22deee4972e1f3c65d 100644 (file)
@@ -2,7 +2,6 @@ float autocvar_g_vehicles_crush_dmg;
 float autocvar_g_vehicles_crush_force;
 float autocvar_g_vehicles_delayspawn;
 float autocvar_g_vehicles_delayspawn_jitter;
-float autocvar_g_vehicles_allow_flagcarry;
 
 void vehicles_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
 void vehicles_return();
@@ -520,19 +519,7 @@ void vehicles_enter()
 
     CSQCVehicleSetup(self.owner, self.hud);
     
-    /* FIXCTF // THIS IS A BIG NO-NO, NO GAME MODE SPECIFIC CODE IN VEHICLES.
-    if(other.flagcarried)
-    {
-        if(!autocvar_g_vehicles_allow_flagcarry)
-            DropFlag(other.flagcarried, world, world);
-        else
-        {            
-            other.flagcarried.scale = 1;
-            setattachment(other.flagcarried, self, ""); 
-            setorigin(other, '0 0 96');
-        }
-    }
-    */
+    MUTATOR_CALLHOOK(VehicleEnter);
     
     self.vehicle_enter();
     antilag_clear(other);
@@ -648,15 +635,8 @@ void vehicles_exit(float eject)
         self.team = 0;
     else
         self.team = self.tur_head.team;
-    
-    /* FIXCTF // THIS IS A BIG NO-NO, NO GAME MODE SPECIFIC CODE IN VEHICLES.
-    if(self.owner.flagcarried)
-    {
-        self.owner.flagcarried.scale = 0.6;
-        setattachment(self.owner.flagcarried, self.owner, ""); 
-        setorigin(self.owner.flagcarried, FLAG_CARRY_POS);
-    }
-    */
+   
+    MUTATOR_CALLHOOK(VehicleExit);
     
     sound (self, CH_TRIGGER_SINGLE, "misc/null.wav", 1, ATTN_NORM);
     self.vehicle_exit(eject);
index e002321222044400e78d483c77fab3da2a98ea3d..af9a1353e8d117e740cb5b6d3eeded8eb358c818 100644 (file)
@@ -16,4 +16,3 @@ set cl_vehicles_hudscale 0.5way
 
 set g_vehicles_delayspawn 1
 set g_vehicles_delayspawn_jitter 10
-set g_vehicles_allow_flagcarry 1