]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Complete implementation of mutator hooks for vehicles
authorSamual Lenks <samual@xonotic.org>
Mon, 3 Sep 2012 03:38:06 +0000 (23:38 -0400)
committerSamual Lenks <samual@xonotic.org>
Mon, 3 Sep 2012 03:38:06 +0000 (23:38 -0400)
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/gamemode_ctf.qc
qcsrc/server/vehicles/bumblebee.qc
qcsrc/server/vehicles/vehicles.qc

index 52e7a8811484f4b42a0c57dc055d04507d3ab680..f9a23e5f8d2214f26ce75453b039e172822cc5d4 100644 (file)
@@ -231,15 +231,15 @@ MUTATOR_HOOKABLE(VehicleEnter);
        // called when a player enters a vehicle
        // allows mutators to set special settings in this event
        // INPUT
-       entity other; // player
-       entity self; // vehicle
+       entity vh_player; // player
+       entity vh_vehicle; // vehicle
        
 MUTATOR_HOOKABLE(VehicleExit);
        // called when a player exits a vehicle
        // allows mutators to set special settings in this event
        // INPUT
-       entity other; // player
-       entity self; // vehicle
+       entity vh_player; // player
+       entity vh_vehicle; // vehicle
        
 MUTATOR_HOOKABLE(AbortSpeedrun);
        // called when a speedrun is aborted and the player is teleported back to start position
index 342f529836e09fb3a0a6d680359b643a384267b0..c7749293c651e4794be46cda348e3a606c2c2fea 100644 (file)
@@ -1185,18 +1185,18 @@ MUTATOR_HOOKFUNCTION(ctf_HelpMePing)
 
 MUTATOR_HOOKFUNCTION(ctf_VehicleEnter)
 {
-       if(other.flagcarried)
+       if(vh_player.flagcarried)
        {
                if(!autocvar_g_ctf_flagcarrier_allow_vehicle_carry)
                {
-                       ctf_Handle_Throw(self, world, DROP_NORMAL);
+                       ctf_Handle_Throw(vh_player, world, DROP_NORMAL);
                }
                else
                {            
-                       setattachment(other.flagcarried, self, ""); 
-                       setorigin(other, VEHICLE_FLAG_OFFSET);
-                       other.flagcarried.scale = VEHICLE_FLAG_SCALE;
-                       //other.flagcarried.angles = '0 0 0';   
+                       setattachment(vh_player.flagcarried, vh_vehicle, ""); 
+                       setorigin(vh_player.flagcarried, VEHICLE_FLAG_OFFSET);
+                       vh_player.flagcarried.scale = VEHICLE_FLAG_SCALE;
+                       //vh_player.flagcarried.angles = '0 0 0';       
                }
        }
                
@@ -1205,12 +1205,12 @@ MUTATOR_HOOKFUNCTION(ctf_VehicleEnter)
 
 MUTATOR_HOOKFUNCTION(ctf_VehicleExit)
 {
-       if(self.owner.flagcarried)
+       if(vh_player.flagcarried)
        {
-               setattachment(self.owner.flagcarried, self.owner, ""); 
-               setorigin(self.owner.flagcarried, FLAG_CARRY_OFFSET);
-               self.owner.flagcarried.scale = FLAG_SCALE;
-               self.owner.flagcarried.angles = '0 0 0';        
+               setattachment(vh_player.flagcarried, vh_player, ""); 
+               setorigin(vh_player.flagcarried, FLAG_CARRY_OFFSET);
+               vh_player.flagcarried.scale = FLAG_SCALE;
+               vh_player.flagcarried.angles = '0 0 0'; 
        }
 
        return 0;
index a445f12ce6426210bccfcef4218052fd1569884a..4b0f1d13a4b5b8976eda70b150523fccebd86724 100644 (file)
@@ -242,7 +242,11 @@ void bumb_gunner_exit(float _exitflag)
        self.hud            = HUD_NORMAL;
        self.switchweapon   = self.vehicle.switchweapon;
 
-       // FIXCTF TODO 
+    vh_player = self;
+    vh_vehicle = self.vehicle;
+    MUTATOR_CALLHOOK(VehicleExit);
+    self = vh_player;
+    self.vehicle = vh_vehicle;
 
        self.vehicle.vehicle_hudmodel.viewmodelforclient = self.vehicle;
 
@@ -326,7 +330,11 @@ float bumb_gunner_enter()
 
        CSQCVehicleSetup(other, other.hud);
        
-    // FIXCTF TODO
+    vh_player = other;
+    vh_vehicle = _gun;
+    MUTATOR_CALLHOOK(VehicleEnter);
+    other = vh_player;
+    _gun = vh_vehicle;
 
        return TRUE;
 }
index 4364b54facdb66d1046f911a07c4bd20dec5c71f..16a339e09f40380dec3e1f84cfb5512d63252d5f 100644 (file)
@@ -659,7 +659,11 @@ void vehicles_enter()
 
     CSQCVehicleSetup(self.owner, self.hud);
     
+    vh_player = other;
+    vh_vehicle = self;
     MUTATOR_CALLHOOK(VehicleEnter);
+    other = vh_player;
+    self = vh_vehicle;
 
     self.vehicle_enter();
     antilag_clear(other);
@@ -795,10 +799,12 @@ void vehicles_exit(float eject)
     if(!teamplay)
         _vehicle.team = 0;
     else
-    
-    self.team = self.tur_head.team;
-   
+
+    vh_player = _player;
+    vh_vehicle = _vehicle;
     MUTATOR_CALLHOOK(VehicleExit);
+    _player = vh_player;
+    _vehicle = vh_vehicle;
 
     _vehicle.team = _vehicle.tur_head.team;