]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix crash when player controls vehicles going inside ring, plus when controlling...
authorLegendaryGuard <rootuser999@gmail.com>
Thu, 20 Jan 2022 01:55:46 +0000 (02:55 +0100)
committerLegendaryGuard <rootuser999@gmail.com>
Thu, 20 Jan 2022 01:55:46 +0000 (02:55 +0100)
gamemodes-server.cfg
qcsrc/common/gamemodes/gamemode/br/br.qh
qcsrc/common/gamemodes/gamemode/br/sv_br.qc

index b3ef1b73713de582343b38cdcfda6a41bd805d77..e2b282f42571dbdb3213c95b53aecacc5d752374 100644 (file)
@@ -573,6 +573,8 @@ set g_duel_not_dm_maps 0 "when this is set, DM maps will NOT be listed in duel"
 //  battle royale
 // ======
 set g_br 0 "Battle Royale: survive on a shrinking battlefield"
+set g_br_not_assault_maps 0 "when this is set, CTF maps will NOT be listed in BR"
+set g_br_not_ctf_maps 0 "when this is set, CTF maps will NOT be listed in BR"
 set g_br_not_dm_maps 0 "when this is set, DM maps will NOT be listed in BR"
 set g_br_minplayers 2 "minimum players to start the BR match"
 set g_br_squad_size 3 "maximum squad size"
index 1d34096a7a0a4edd6a3ae391f84b46e9fe305cb6..046f9554e87fd9fb69fbb6ca091ce63dfa5d740a 100644 (file)
@@ -1,8 +1,12 @@
 #pragma once
 
+#include <common/gamemodes/gamemode/assault/assault.qh>
+#include <common/gamemodes/gamemode/ctf/ctf.qh>
 #include <common/gamemodes/gamemode/deathmatch/deathmatch.qh>
 #include <common/mapinfo.qh>
 
+bool autocvar_g_br_not_assault_maps = false;
+bool autocvar_g_br_not_ctf_maps = false;
 bool autocvar_g_br_not_dm_maps = false;
 
 #ifdef CSQC
@@ -31,6 +35,20 @@ CLASS(BattleRoyale, Gametype)
     }
     METHOD(BattleRoyale, m_isForcedSupported, bool(Gametype this))
     {
+        if(!autocvar_g_br_not_assault_maps)
+        {
+            // if this is unset, all ASSAULT maps support BR too
+            if(!(MapInfo_Map_supportedGametypes & this.m_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT.m_flags))
+                return true; // TODO: references another gametype (alternatively, we could check which gamemodes are always enabled and append this if any are supported)
+        }
+
+        if(!autocvar_g_br_not_ctf_maps)
+        {
+            // if this is unset, all CTF maps support BR too
+            if(!(MapInfo_Map_supportedGametypes & this.m_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF.m_flags))
+                return true; // TODO: references another gametype (alternatively, we could check which gamemodes are always enabled and append this if any are supported)
+        }
+
         if(!autocvar_g_br_not_dm_maps)
         {
             // if this is unset, all DM maps support BR too
index 3a092a576465c6d6734cff894894fb9e6a11bf10..70270f671299c391f6d7311605e9052802a68d70 100644 (file)
@@ -244,7 +244,11 @@ MUTATOR_HOOKFUNCTION(br, PlayerPreThink, CBC_ORDER_FIRST)
                 player.br_ring_warned = true;
                 Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_BR_RING_WARN);
             }
-            player.event_damage(player, ring, ring, ring.strength * frametime, DEATH_RING.m_id, DMG_NOWEP, player.origin, '0 0 0'); // ring damage
+
+            if (player.vehicle) // if a player is controlling vehicles
+                vehicles_damage(player.vehicle, ring, ring, 10 * ring.strength * frametime, DEATH_RING.m_id, DMG_NOWEP, player.vehicle.origin, '0 0 0');
+     
+            Damage(player, ring, ring, ring.strength * frametime, DEATH_RING.m_id, DMG_NOWEP, player.origin, '0 0 0'); // ring damage
         }
         else
         {