]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
option to spawn quad and shield at the same time
authorMartin Taibr <taibr.martin@gmail.com>
Mon, 5 Feb 2018 14:02:48 +0000 (15:02 +0100)
committerMartin Taibr <taibr.martin@gmail.com>
Mon, 5 Feb 2018 14:02:48 +0000 (15:02 +0100)
balance-mario.cfg
balance-nexuiz25.cfg
balance-overkill.cfg
balance-samual.cfg
balance-xdf.cfg
balance-xonotic.cfg
balance-xpm.cfg
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh

index 28100182ea5fe41b0b1d028b020a93503228c9f5..0bd65a308bfda7253a9b5e9368424fe05a3845a7 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 10
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 10
+set g_pickup_respawntime_initial_random 1
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 37099c1226dfa6ff992a97b74ef1217b91111b31..cf13c20896b8cc0a022d388ac56f0292984d5269 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 15
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 15
+set g_pickup_respawntime_initial_random 1
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 3a321ce53d461b2eca19452f5ad420975f9f2c12..eb1fd6b6e352b7e6e73c688e5ddec80902f83e2c 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 10
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 10
+set g_pickup_respawntime_initial_random 0
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 48c68d81be66e77c96cf8f55c417fd4b8565fe0f..bc71c896ac446bb6677a5c7e996385337ca3ceb3 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 10
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 10
+set g_pickup_respawntime_initial_random 1
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 562506283c44ad965d5d7d0f641a96a910aa11d3..227dcec3f17206b42dcb3b3c31f7ee503770a3fb 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 0.1
 set g_pickup_respawntime_weapon 0.1
 set g_pickup_respawntime_superweapon 0.1
 set g_pickup_respawntime_ammo 0.1
+set g_pickup_respawntime_initial_random 1
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 32924a72d2cee7cca9d636330661abe49047f404..8a053573dbf720606a6686f8a7b1a7fe4ec2e2ba 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 10
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 10
+set g_pickup_respawntime_initial_random 0
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index 6901eda28a8c130622dc43db632f7475965050d3..3f698423c76c59a7f5909b16fd4a16296486207e 100644 (file)
@@ -101,6 +101,7 @@ set g_pickup_respawntime_powerup 120
 set g_pickup_respawntime_weapon 10
 set g_pickup_respawntime_superweapon 120
 set g_pickup_respawntime_ammo 10
+set g_pickup_respawntime_initial_random 0
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
index e13df065a477b5f0f95a7370c484c5968a444ba4..6b10b332a9b18879f5fd7b33702274b4fcd58587 100644 (file)
@@ -626,6 +626,7 @@ AUTOCVAR(g_pickup_respawntime_scaling_reciprocal, float, 0.0, "Multiply respawn
 AUTOCVAR(g_pickup_respawntime_scaling_offset, float, 0.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");
 AUTOCVAR(g_pickup_respawntime_scaling_linear, float, 1.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, `linear` can be used to simply scale the respawn time linearly");
 
+/// Adjust respawn time according to the number of players.
 float adjust_respawntime(float normal_respawntime) {
        float r = autocvar_g_pickup_respawntime_scaling_reciprocal;
        float o = autocvar_g_pickup_respawntime_scaling_offset;
@@ -660,17 +661,34 @@ void Item_ScheduleRespawn(entity e)
                //LOG_INFOF("item %s will respawn in %f", e.classname, adjusted_respawntime);
 
                // range: adjusted_respawntime - respawntimejitter .. adjusted_respawntime + respawntimejitter
-               float actual_time = adjusted_respawntime + crandom() * e.respawntimejitter;
-               Item_ScheduleRespawnIn(e, actual_time);
+               float respawn_in = adjusted_respawntime + crandom() * e.respawntimejitter;
+               Item_ScheduleRespawnIn(e, respawn_in);
        }
        else // if respawntime is -1, this item does not respawn
                Item_Show(e, -1);
 }
 
+AUTOCVAR(g_pickup_respawntime_initial_random, bool, 0, "Make the initial respawn time of items between 10 and their normal respawn time");
+
 void Item_ScheduleInitialRespawn(entity e)
 {
        Item_Show(e, 0);
-       Item_ScheduleRespawnIn(e, max(0, game_starttime - time) + ((e.respawntimestart) ? e.respawntimestart : ITEM_RESPAWNTIME_INITIAL(e)));
+
+       float spawn_in;
+       if (autocvar_g_pickup_respawntime_initial_random)
+       {
+               // range:
+               // if respawntime >= ITEM_RESPAWN_TICKS: ITEM_RESPAWN_TICKS .. respawntime + respawntimejitter
+               // else: 0 .. ITEM_RESPAWN_TICKS
+               spawn_in = ITEM_RESPAWN_TICKS + random() * (e.respawntime + e.respawntimejitter - ITEM_RESPAWN_TICKS);
+       }
+       else
+       {
+               // range: respawntime .. respawntime + respawntimejitter
+               spawn_in = e.respawntime + random() * e.respawntimejitter;
+       }
+
+       Item_ScheduleRespawnIn(e, max(0, game_starttime - time) + ((e.respawntimestart) ? e.respawntimestart : spawn_in));
 }
 
 void GiveRandomWeapons(entity receiver, int num_weapons, string weapon_names,
index d2f44c61daa8e6544f44f47f4f92a61c54907218..315a100375bd4fc7cfd45911919d0ac9ce42d60d 100644 (file)
@@ -57,9 +57,6 @@ bool have_pickup_item(entity this);
 
 const float ITEM_RESPAWN_TICKS = 10;
 
-#define ITEM_RESPAWNTIME_INITIAL(i) (ITEM_RESPAWN_TICKS + random() * ((i).respawntime + (i).respawntimejitter - ITEM_RESPAWN_TICKS))
-       // range: 10 .. respawntime + respawntimejitter
-
 .float max_armorvalue;
 .float pickup_anyway;