From: bones_was_here <bones_was_here@xa.org.au>
Date: Sat, 6 Mar 2021 10:15:39 +0000 (+1000)
Subject: Merge branch 'master' into bones_was_here/q3compat
X-Git-Tag: xonotic-v0.8.5~352^2~13
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3e6e644488b54b638078fb88b88c643e103ac8e1;p=xonotic%2Fxonotic-data.pk3dir.git

Merge branch 'master' into bones_was_here/q3compat
---

3e6e644488b54b638078fb88b88c643e103ac8e1
diff --cc qcsrc/common/stats.qh
index ffc0cfacf,e5621c29e..c709da51a
--- a/qcsrc/common/stats.qh
+++ b/qcsrc/common/stats.qh
@@@ -1,10 -1,16 +1,17 @@@
  #pragma once
  
+ // you're next
+ 
  #ifdef SVQC
- #include <server/autocvars.qh>
  #include <server/client.qh>
 +#include <server/compat/quake3.qh>
+ #include <server/main.qh>
+ #include <common/gamemodes/sv_rules.qh>
+ #include <common/mapobjects/teleporters.qh>
  #include <common/mapobjects/trigger/secret.qh>
+ #include <common/mutators/mutator/doublejump/doublejump.qh>
+ #include <common/mutators/mutator/itemstime/itemstime.qh>
+ #include <common/physics/player.qh>
  #endif
  
  // Full list of all stat constants, included in a single location for easy reference
diff --cc qcsrc/server/compat/quake3.qh
index 029485ab0,a9b90abad..d2c547b6f
--- a/qcsrc/server/compat/quake3.qh
+++ b/qcsrc/server/compat/quake3.qh
@@@ -1,38 -1,8 +1,40 @@@
  #pragma once
  
 -bool autocvar_sv_q3acompat_machineshotgunswap;
 -bool autocvar_sv_q3defragcompat_changehitbox = false;
 +int q3compat = 0;
 +#define Q3COMPAT_ARENA BIT(0)
 +#define Q3COMPAT_DEFI BIT(1)
 +
++bool autocvar_sv_q3compat_changehitbox;
+ 
  bool DoesQ3ARemoveThisEntity(entity this);
 +int GetAmmoConsumptionQ3(string netname);
  
  .int fragsfilter_cnt;
 +
 +/* We tell the ammo spawnfunc which weapon will use the ammo so it can
 + * calculate the amount required for the number of shots in the count field,
 + * and so the type can be looked up rather than specified in quake3.qc
 + */
 +// Ammo only, unconditional
 +#define SPAWNFUNC_Q3AMMO(ammo_classname, xonwep) \
 +	spawnfunc(ammo_classname) \
 +	{ \
 +		if(this.count && xonwep.ammo_type) \
 +			SetResource(this, xonwep.ammo_type, this.count * GetAmmoConsumptionQ3(xonwep.netname)); \
 +	SPAWNFUNC_BODY(GetAmmoItem(xonwep.ammo_type)) \
 +	}
 +
 +// Ammo only, conditional
 +#define SPAWNFUNC_Q3AMMO_COND(ammo_classname, cond, xonwep1, xonwep0) \
 +	SPAWNFUNC_Q3AMMO(ammo_classname, (cond ? xonwep1 : xonwep0))
 +
 +// Weapon & ammo, unconditional
 +#define SPAWNFUNC_Q3(weapon_classname, ammo_classname, xonwep) \
 +	SPAWNFUNC_WEAPON(weapon_classname, xonwep) \
 +	SPAWNFUNC_Q3AMMO(ammo_classname, xonwep)
 +
 +// Weapon & ammo, conditional
 +#define SPAWNFUNC_Q3_COND(weapon_classname, ammo_classname, cond, xonwep1, xonwep0) \
 +	SPAWNFUNC_WEAPON_COND(weapon_classname, cond, xonwep1, xonwep0) \
 +	SPAWNFUNC_Q3AMMO_COND(ammo_classname, cond, xonwep1, xonwep0)
 +
diff --cc qcsrc/server/teamplay.qh
index 9faaaa521,279df06fc..a8c48be15
--- a/qcsrc/server/teamplay.qh
+++ b/qcsrc/server/teamplay.qh
@@@ -8,10 -8,10 +8,12 @@@ bool autocvar_teamplay_lockonrestart
  bool autocvar_g_balance_teams;
  bool autocvar_g_balance_teams_prevent_imbalance;
  
+ string autocvar_g_forced_team_otherwise;
+ 
  bool lockteams;
  
 +.int team_forced; // can be a team number to force a team, or 0 for default action, or -1 for forced spectator
 +
  // ========================== Global teams API ================================
  
  /// \brief Returns the global team entity at the given index.