]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'martin-t/defaults' into martin-t/okc
authorMartin Taibr <taibr.martin@gmail.com>
Sun, 6 Aug 2017 14:18:51 +0000 (16:18 +0200)
committerMartin Taibr <taibr.martin@gmail.com>
Sun, 6 Aug 2017 14:18:51 +0000 (16:18 +0200)
defaultOverkill.cfg
defaultServer.cfg
qcsrc/common/mutators/mutator/overkill/sv_overkill.qc
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh

index 634943c581dfd85e7c94b2fef04bc0f3b704ad93..d4936b0338792c28b4ff95886db652c17c3d835e 100644 (file)
@@ -8,6 +8,13 @@ exec physicsOverkill.cfg
 
 // general gameplay
 set g_overkill 1
+
+// hack - eventually, we should be able to choose overkill models in menu like for vanilla
+sv_defaultcharacter 1
+sv_defaultplayermodel "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm"
+sv_defaultplayermodel_red "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm"
+sv_defaultplayermodel_blue "models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm"
+
 set g_respawn_ghosts 0
 
 set g_nades 1
index ed24832d142e70aedf1445a76bf9b57a8e38edcf..3f746db7e0bd5743a3b52db3ca5630ba014477c5 100644 (file)
@@ -185,6 +185,9 @@ set g_weapon_throwable 1 "if set to 1, weapons can be dropped"
 set g_powerups -1 "if set to 0 the strength and shield (invincibility) will not spawn on the map, if 1 they will spawn in all game modes, -1 is game mode default"
 set g_use_ammunition 1 "if set to 0 all weapons have unlimited ammunition"
 set g_pickup_items -1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map, if 1 they are forced to spawn"
+set g_pickup_respawntime_scaling_a 0 "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players"
+set g_pickup_respawntime_scaling_b 0 "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players"
+set g_pickup_respawntime_scaling_c 1 "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players"
 set g_weaponarena "0"  "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
 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"
index 82df487c5cc33253e20c69e6b0a4dff91ac5b3dc..6a7e4b266e97b6cd318ab18f8d3ae8b9f9649423 100644 (file)
@@ -304,19 +304,8 @@ MUTATOR_HOOKFUNCTION(ok, SetModname)
        return true;
 }
 
-void ok_SetCvars()
-{
-       // hack to force overkill playermodels
-       cvar_settemp("sv_defaultcharacter", "1");
-       cvar_settemp("sv_defaultplayermodel", "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm");
-       cvar_settemp("sv_defaultplayermodel_red", "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm");
-       cvar_settemp("sv_defaultplayermodel_blue", "models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm");
-}
-
 void ok_Initialize()
 {
-       ok_SetCvars();
-
        precache_all_playermodels("models/ok_player/*.dpm");
 
        WEP_RPC.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
index e674eff42827fcef768132e9fa4c45693d7d354f..f1fe312b33089a6fb910ebde0ab3c3d2106262ce 100644 (file)
@@ -631,12 +631,35 @@ void Item_ScheduleRespawnIn(entity e, float t)
        }
 }
 
+AUTOCVAR(g_pickup_respawntime_scaling_a, float, 0.0, "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players");
+AUTOCVAR(g_pickup_respawntime_scaling_b, float, 0.0, "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players");
+AUTOCVAR(g_pickup_respawntime_scaling_c, float, 1.0, "Scale respawn time according to a*rt / (p+b) + c*rt where rt is normal respawn time and p number of players");
 void Item_ScheduleRespawn(entity e)
 {
        if(e.respawntime > 0)
        {
                Item_Show(e, 0);
-               Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME(e));
+
+               CheckAllowedTeams(NULL);
+               GetTeamCounts(NULL);
+               int players = 0;
+               if (c1 != -1) players += c1;
+               if (c2 != -1) players += c2;
+               if (c3 != -1) players += c3;
+               if (c4 != -1) players += c4;
+               float adjusted_respawntime;
+               if (players >= 2) {
+                       float a = autocvar_g_pickup_respawntime_scaling_a;
+                       float b = autocvar_g_pickup_respawntime_scaling_b;
+                       float c = autocvar_g_pickup_respawntime_scaling_c;
+                       adjusted_respawntime = a * e.respawntime / (players + b) + c * e.respawntime;
+               } else {
+                       adjusted_respawntime = e.respawntime;
+               }
+               //LOG_INFOF("item %s will respawn in %f\n", e.classname, adjusted_respawntime);
+               // range: adjusted_respawntime - respawntimejitter .. adjusted_respawntime + respawntimejitter
+               float actual_time = adjusted_respawntime + crandom() * e.respawntimejitter;
+               Item_ScheduleRespawnIn(e, actual_time);
        }
        else // if respawntime is -1, this item does not respawn
                Item_Show(e, -1);
index e52604d994e97c1bf970394d083e1357550f31e6..b92aceb8d0b342028f8c64f3aca50f3e975c8c78 100644 (file)
@@ -67,8 +67,6 @@ bool have_pickup_item(entity this);
 
 const float ITEM_RESPAWN_TICKS = 10;
 
-#define ITEM_RESPAWNTIME(i)         ((i).respawntime + crandom() * (i).respawntimejitter)
-       // range: respawntime - respawntimejitter .. respawntime + respawntimejitter
 #define ITEM_RESPAWNTIME_INITIAL(i) (ITEM_RESPAWN_TICKS + random() * ((i).respawntime + (i).respawntimejitter - ITEM_RESPAWN_TICKS))
        // range: 10 .. respawntime + respawntimejitter