Merge branch 'master' into Mario/weaponarena_available
authorMario <mario@smbclan.net>
Mon, 29 Jul 2019 11:02:46 +0000 (21:02 +1000)
committerMario <mario@smbclan.net>
Mon, 29 Jul 2019 11:02:46 +0000 (21:02 +1000)
1  2 
qcsrc/server/miscfunctions.qc
xonotic-server.cfg

index ebeb961270129f3ea53969bbc1830e5a2102113c,bc0b49ca027ece50fb41bbccc35723b3252886d7..aa5146419a0be981ff96246e70112d3dc47f83fc
@@@ -522,22 -522,6 +522,22 @@@ float want_weapon(entity weaponinfo, fl
        return t;
  }
  
 +void weaponarena_available_update(entity this)
 +{
 +      if(!weaponsInMap)
 +      {
 +              // if no weapons are available, just fall back to most weapons arena
 +              FOREACH(Weapons, it != WEP_Null, {
 +                      if(!(it.spawnflags & WEP_FLAG_MUTATORBLOCKED) && (it.spawnflags & WEP_FLAG_NORMAL) && !(it.spawnflags & WEP_FLAG_HIDDEN))
 +                              g_weaponarena_weapons |= (it.m_wepset);
 +              });
 +              start_weapons = g_weaponarena_weapons;
 +              return;
 +      }
 +      g_weaponarena_weapons |= weaponsInMap;
 +      start_weapons = g_weaponarena_weapons;
 +}
 +
  void readplayerstartcvars()
  {
        float i, t;
                                g_weaponarena_weapons |= (it.m_wepset);
                });
        }
 +      else if (s == "available")
 +      {
 +              g_weaponarena = 2;
 +              g_weaponarena_list = "Most Weapons";
 +              // include weapons the player would start with
 +              FOREACH(Weapons, it != WEP_Null, {
 +                      int w = want_weapon(it, false);
 +                      if(w & 1)
 +                              g_weaponarena_weapons |= (it.m_wepset);
 +              });
 +              InitializeEntity(NULL, weaponarena_available_update, INITPRIO_FINDTARGET);
 +      }
        else if (s == "none")
        {
                g_weaponarena = 1;
                warmup_start_ammo_fuel = max(warmup_start_ammo_fuel, cvar("g_balance_fuel_rotstable"));
        }
  
-       WepSet precache_weapons = start_weapons;
-       if (g_warmup_allguns != 1)
-               precache_weapons |= warmup_start_weapons;
-       FOREACH(Weapons, it != WEP_Null, {
-               if(precache_weapons & (it.m_wepset))
-                       it.wr_init(it);
-       });
        start_ammo_shells = max(0, start_ammo_shells);
        start_ammo_nails = max(0, start_ammo_nails);
        start_ammo_rockets = max(0, start_ammo_rockets);
diff --combined xonotic-server.cfg
index 695d2ec0b10cecf70407a44b1d195aaee4b4c0d1,dadc207b573a7ddce547617d6fadd90f95a254df..1908caab67bc3050d816f78fac8460bb29126e84
@@@ -195,7 -195,7 +195,7 @@@ set g_pickup_items -1 "if set to 0 all 
  set g_pickup_respawntime_scaling_reciprocal 0 "Multiply respawn time by `reciprocal / (p + offset) + linear` where `p` is the current number of players, takes effect with 2 or more players present, `reciprocal` (with `offset` and `linear` set to 0) can be used to achieve a constant number of items spawned *per player*"
  set g_pickup_respawntime_scaling_offset 0 "Multiply respawn time by `reciprocal / (p + offset) + linear` where `p` is the current number of players, takes effect with 2 or more players present, `offset` offsets the curve left or right - the results are not intuitive and I recommend plotting the respawn time and the number of items per player to see what's happening"
  set g_pickup_respawntime_scaling_linear 1 "Multiply respawn time by `reciprocal / (p + offset) + linear` where `p` is the current number of players, takes effect with 2 or more players present, `linear` can be used to simply scale the respawn time linearly"
 -set g_weaponarena "0" "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
 +set g_weaponarena "0" "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\" or \"available\""
  set g_weaponarena_random "0"  "if set to a number, only that weapon count is given on every spawn (randomly)"
  set g_weaponarena_random_with_blaster "1"     "additionally, always provide the blaster in random weapon arena games"
  set g_spawnpoints_auto_move_out_of_solid 0 "if set to 1 you will see a warning if a spawn point was placed inside a solid"
@@@ -212,6 -212,7 +212,7 @@@ set g_maplist_index 0      "this is used int
  set g_maplist_selectrandom 0  "if 1, a random map will be chosen as next map - DEPRECATED in favor of g_maplist_shuffle"
  set g_maplist_shuffle 1       "new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list"
  set g_maplist_check_waypoints 0       "when 1, maps are skipped if there currently are bots, but the map has no waypoints"
+ set g_maplist_ignore_sizes 0 "when 1, all maps are shown in the map list regardless of player count"
  
  set g_items_mindist 4000 "starting distance for the fading of items"
  set g_items_maxdist 4500 "maximum distance at which an item can be viewed, after which it will be invisible"