]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into z411/bai-server
authorz411 <z411@omaera.org>
Wed, 27 Mar 2024 22:40:05 +0000 (19:40 -0300)
committerz411 <z411@omaera.org>
Wed, 27 Mar 2024 22:49:25 +0000 (19:49 -0300)
36 files changed:
1  2 
gamemodes-server.cfg
qcsrc/client/hud/panel/weapons.qc
qcsrc/client/main.qc
qcsrc/client/main.qh
qcsrc/client/view.qc
qcsrc/common/_all.inc
qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc
qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc
qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc
qcsrc/common/mapinfo.qh
qcsrc/common/mutators/mutator/attackertext/attackertext.qc
qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
qcsrc/common/mutators/mutator/itemstime/itemstime.qc
qcsrc/common/notifications/all.qc
qcsrc/common/notifications/all.qh
qcsrc/common/scores.qh
qcsrc/common/stats.qh
qcsrc/common/util.qc
qcsrc/common/weapons/weapon/devastator.qc
qcsrc/common/weapons/weapon/electro.qc
qcsrc/common/weapons/weapon/vaporizer.qc
qcsrc/common/weapons/weapon/vortex.qc
qcsrc/server/client.qc
qcsrc/server/client.qh
qcsrc/server/command/sv_cmd.qc
qcsrc/server/damage.qc
qcsrc/server/damage.qh
qcsrc/server/items/items.qc
qcsrc/server/round_handler.qc
qcsrc/server/teamplay.qc
qcsrc/server/weapons/accuracy.qc
qcsrc/server/weapons/tracing.qc
qcsrc/server/weapons/weaponsystem.qc
qcsrc/server/world.qc
qcsrc/server/world.qh
xonotic-server.cfg

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 8f85fcf72a7b308688796c1b60f96ca11ed94626,b775b9686af21c166eaccff8b3da1688cba3d83c..8cf3a631bc0ba7e9bae3035be491358b4446f0b1
@@@ -1,7 -1,6 +1,8 @@@
  noref float autocvar_net_connecttimeout = 30;
  
 +#include "announcer.qc"
 +#include "colors.qc"
+ #include "checkextension.qc"
  
  #ifdef GAMEQC
  #include "anim.qc"
index b62fcfbd1a13a87146140e48179593c551a780bf,8ee0a676569b8364f931e52b7a976c87d2f858ef..2c4a097d6f5fe4dde48b81bcc46ca9ba8d93d331
@@@ -51,39 -44,44 +51,60 @@@ void CA_count_alive_players(
  
  void nades_Clear(entity player);
  
 +entity ca_LastPlayer(float tm)
 +{
 +      entity last_pl = NULL;
 +      FOREACH_CLIENT(IS_PLAYER(it) && it.team == tm, {
 +              if (!IS_DEAD(it))
 +              {
 +                      if (!last_pl)
 +                              last_pl = it;
 +                      else
 +                              return NULL;
 +              }
 +      });
 +      return last_pl;
 +}
 +
 +
  int CA_PreventStalemate()
  {
-       //LOG_INFO("PreventStalemate running");
-       int winnerTeam = 0;
-       int secondTeam = 0;
+       //bprint("PreventStalemate running\n");
  
-       for(int i = 1; i <= AVAILABLE_TEAMS; i++)
+       // g_ca_prevent_stalemate:
+       // Run survivor count check with 1 aka bit 0b0001
+       // Run total health check with 2 aka bit 0b0010
+       // With a value like 3 which has both bits both are ran
+       bool prevent_stalemate_by_survivors = (autocvar_g_ca_prevent_stalemate & BIT(0));
+       bool prevent_stalemate_by_health    = (autocvar_g_ca_prevent_stalemate & BIT(1));
+       // Check which team has more alive players
+       if (prevent_stalemate_by_survivors)
        {
-               if(!winnerTeam || Team_GetNumberOfAlivePlayers(Team_GetTeamFromIndex(i)) > Team_GetNumberOfAlivePlayers(Team_GetTeam(winnerTeam)))
+               int winnerTeam = 0;
+               int secondTeam = 0;
+               for(int i = 1; i <= AVAILABLE_TEAMS; ++i)
                {
-                       secondTeam = winnerTeam;
-                       winnerTeam = Team_IndexToTeam(i);
+                       if(!winnerTeam || Team_GetNumberOfAlivePlayers(Team_GetTeamFromIndex(i)) > Team_GetNumberOfAlivePlayers(Team_GetTeam(winnerTeam)))
+                       {
+                               secondTeam = winnerTeam;
+                               winnerTeam = Team_IndexToTeam(i);
+                       }
+                       else
+                       {
+                               if(!secondTeam || Team_GetNumberOfAlivePlayers(Team_GetTeamFromIndex(i)) > Team_GetNumberOfAlivePlayers(Team_GetTeam(secondTeam)))
+                                       secondTeam = Team_IndexToTeam(i);
+                       }
                }
-               else
+               if(Team_GetNumberOfAlivePlayers(Team_GetTeam(winnerTeam)) != Team_GetNumberOfAlivePlayers(Team_GetTeam(secondTeam)))
                {
-                       if(!secondTeam || Team_GetNumberOfAlivePlayers(Team_GetTeamFromIndex(i)) > Team_GetNumberOfAlivePlayers(Team_GetTeam(secondTeam)))
-                               secondTeam = Team_IndexToTeam(i);
+                       bprint(sprintf("Stalemate broken by alive players. Best team: %s%s (%d)^7 - Trailing team: %s%s (%d)\n",
+                               Team_ColorCode(winnerTeam), Team_ColorName(winnerTeam), Team_GetNumberOfAlivePlayers(Team_GetTeam(winnerTeam)),
+                               Team_ColorCode(secondTeam), Team_ColorName(secondTeam), Team_GetNumberOfAlivePlayers(Team_GetTeam(secondTeam))));
+                       return winnerTeam;
                }
        }
  
Simple merge
index dafd533c75b434d3a5894472605c9adaef6991fd,0000000000000000000000000000000000000000..c026c3a9c84aa0e329ec7baf10bb968252deb2b6
mode 100644,000000..100644
--- /dev/null
@@@ -1,3 -1,0 +1,5 @@@
 +#include "attackertext.qh"
 +
++#ifdef GAMEQC
 +REGISTER_NET_TEMP(attackertext)
++#endif
index ba6b88e4b2e75ea2a176d2277eaa6b423a3a5c2c,dd200973bc007804c28258c12343b02130d6ec55..82c14207284c844d9a327e9de5411eb47a3a8350
@@@ -1261,8 -1209,7 +1261,8 @@@ void Local_Notification_Queue_Add(MSG n
                notif_queue_type[notif_queue_length] = net_type;
                notif_queue_entity[notif_queue_length] = notif;
                notif_queue_time[notif_queue_length] = notif_queue_next_time;
-               
 +              notif_queue_f1[notif_queue_length] = f1;
                notif_queue_next_time += queue_time;
                ++notif_queue_length;
        }
Simple merge
index 0eca5554414f952c8d4d3fec27d69c185b96de63,8f22b5c7525bcea5c80f01d594c9fc38a11660a7..9920170e7570fc23b2dc6a6d37f64bfd3f65adf1
@@@ -1,13 -1,13 +1,13 @@@
  #pragma once
  
 -#define MAX_SCORE 64
 +#define MAX_SCORE 128
  
  #define REGISTER_SP(id) REGISTER(Scores, SP, id, m_id, new_pure(PlayerScoreField))
- REGISTRY(Scores, MAX_SCORE);
+ REGISTRY(Scores, MAX_SCORE)
  REGISTER_REGISTRY(Scores)
  // do not sort alphabetically, player sort priority is based on score registration order
- //REGISTRY_SORT(Scores);
- REGISTRY_CHECK(Scores);
+ //REGISTRY_SORT(Scores)
+ REGISTRY_CHECK(Scores)
  
  REGISTRY_DEFINE_GET(Scores, NULL)
  STATIC_INIT(Scores_renumber) { FOREACH(Scores, true, it.m_id = i); }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index a6ae6fc5bab4d632e5123161cb575dcb19e20e7c,d47aad441ec4add47fcbd7cba5eb8c39b5b0dc75..176efb25d0f1f12c0d95441e9c8063c0d45186aa
@@@ -5,7 -5,7 +5,8 @@@
  #include <common/util.qh>
  #include <server/campaign.qh>
  #include <server/command/vote.qh>
 +#include <server/weapons/accuracy.qh>
+ #include <server/scores.qh>
  #include <server/world.qh>
  
  void round_handler_Think(entity this)
@@@ -113,22 -109,11 +114,25 @@@ void round_handler_Spawn(bool() canRoun
        this.roundStart = roundStart_func;
        this.wait = false;
        round_handler_Init(5, 5, 180);
+       this.nextthink = time;
+       ScoreInfo_SetLabel_PlayerScore(SP_ROUNDS_PL, "rounds_pl", 0);
  }
  
 +void round_handler_Activate(bool active) {
 +      if (round_handler) {
 +              entity this = round_handler;
 +      
 +              this.isactive = active;
 +              if(active) {
 +                      setthink(this, round_handler_FirstThink);
 +                      this.nextthink = time;
 +              } else {
 +                      round_starttime = -1;
 +              }
 +      }
 +}
 +
  void round_handler_Reset(float next_think)
  {
        entity this = round_handler;
Simple merge
Simple merge
Simple merge
Simple merge
index c6fbfb8622dfdfd564537619ec8027c9b28289e7,ad40a389543bcb5698d2abc2a0ddd1068e1f0557..3848659d18f196df683a45f7a5000103cfe31f2e
@@@ -1105,16 -1065,8 +1112,16 @@@ spawnfunc(worldspawn
  
        WinningConditionHelper(this); // set worldstatus
  
 +      round_handler_Activate(!warmup_stage);
 +      
 +      // for RJZ
 +      if (autocvar_rjz_count_shards && warmup_stage) {
 +              total_shards = -2;
 +              send_TotalShardsAll();
 +      }
 +      
        if (autocvar_sv_autopause && server_is_dedicated && !wantrestart)
-               // INITPRIO_LAST is to soon: bots either didn't join yet or didn't leave yet, see: bot_fixcount()
+               // INITPRIO_LAST is too soon: bots either didn't join yet or didn't leave yet, see: bot_fixcount()
                defer(this, 5, Pause_TryPause_Dedicated);
  
        world_initialized = 1;
index 0951848e7c529422e5d0293431b03f1668af67d3,a7301dc799b1fa96bc5a3102d95bc71faa3bd167..dd0b18134c96bd09602273a6dc819432467f4c40
@@@ -28,16 -28,7 +28,14 @@@ float autocvar_timelimit_max
  float autocvar_timelimit_overtime;
  int autocvar_timelimit_overtimes;
  float autocvar_timelimit_suddendeath;
- bool autocvar_sv_gameplayfix_droptofloorstartsolid;
- bool autocvar_sv_gameplayfix_droptofloorstartsolid_nudgetocorrect;
  
 +// z411
 +bool autocvar_sv_jingle_end;
 +string autocvar_sv_jingle_end_list;
 +float autocvar_sv_jingle_end_volume;
 +
 +float fragsleft;
 +int fragsleft_last;
  bool autocvar_sv_mapformat_is_quake3;
  bool autocvar_sv_mapformat_is_quake2;
  
Simple merge