]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'bones_was_here/r_font_compress' into 'master'
authorLegendaryGuard <rootuser999@gmail.com>
Fri, 4 Aug 2023 18:12:54 +0000 (18:12 +0000)
committerLegendaryGuard <rootuser999@gmail.com>
Fri, 4 Aug 2023 18:12:54 +0000 (18:12 +0000)
Compress font textures to save VRAM at low graphics settings

See merge request xonotic/xonotic-data.pk3dir!1226

23 files changed:
.tx/merge-base
balance-mario.cfg
balance-nexuiz25.cfg
balance-overkill.cfg
balance-samual.cfg
balance-xdf.cfg
balance-xonotic.cfg
balance-xpm.cfg
common.bg.po
common.ca.po
common.es.po
common.fr.po
common.ja_JP.po
common.pt_BR.po
qcsrc/common/items/item/armor.qh
qcsrc/common/items/item/health.qh
qcsrc/common/items/item/pickup.qh
qcsrc/common/mapobjects/func/door.qc
qcsrc/common/mapobjects/func/door.qh
qcsrc/common/mapobjects/func/plat.qc
qcsrc/common/mapobjects/platforms.qc
qcsrc/server/main.qc
qcsrc/server/world.qc

index 739a13c8956fec5571d94f3d51a6a0375741007f..8805502a1cc884d4d416577846cd51acebf33f39 100644 (file)
@@ -1 +1 @@
-Fri 28 Jul 2023 07:23:02 AM CEST
+Wed 02 Aug 2023 07:23:01 AM CEST
index 8b9f37ac10d7782c60f1248aef0e82feb4cd2c5f..21a4980ac561d8c264741ef32e2648e10655e41d 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 1
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 1
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 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
 set g_pickup_respawntimejitter_powerup 0
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index 0b39de222f3a3305f0836801995204cdcbfe45db..d2213d6faa4e9b2230ece0a503189c10e1af6d95 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 0
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 999
 set g_pickup_healthmega_anyway 0
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 set g_pickup_respawntime_initial_random 2
-set g_pickup_respawntimejitter_short 0
-set g_pickup_respawntimejitter_medium 0
-set g_pickup_respawntimejitter_long 0
 set g_pickup_respawntimejitter_powerup 10
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index 3944d7d3b18ab87d6cc280e38df1c23360bf912f..3eb522751ce0c5aa143349e8cf9895251cebef6d 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 1
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 0
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 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
 set g_pickup_respawntimejitter_powerup 0
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index 5686c58d6e24fa2eb211af18644d7ecd536986b6..6219367880595dbe3b8651ae29082e44c457a3a7 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 1
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 1
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 set g_pickup_respawntime_initial_random 2
-set g_pickup_respawntimejitter_short 0
-set g_pickup_respawntimejitter_medium 0
-set g_pickup_respawntimejitter_long 0
 set g_pickup_respawntimejitter_powerup 30
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index d8d4df60d53e2a6c916d61a7785bb07df3efd8b8..0818ef574d9fca2fcd9f9f9f2c2483632f28e724 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 0
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 0
-set g_pickup_respawntime_short 0.1
-set g_pickup_respawntime_medium 0.1
-set g_pickup_respawntime_long 0.1
 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_armor_small 0.1
+set g_pickup_respawntime_armor_medium 0.1
+set g_pickup_respawntime_armor_big 0.1
+set g_pickup_respawntime_armor_mega 0.1
+set g_pickup_respawntime_health_small 0.1
+set g_pickup_respawntime_health_medium 0.1
+set g_pickup_respawntime_health_big 0.1
+set g_pickup_respawntime_health_mega 0.1
 set g_pickup_respawntime_initial_random 2
-set g_pickup_respawntimejitter_short 0
-set g_pickup_respawntimejitter_medium 0
-set g_pickup_respawntimejitter_long 0
 set g_pickup_respawntimejitter_powerup 0
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index 2cf8c9eb4269b106877384494b4a6392c3200fc4..1027c6f49102dc728952a32fe206d40bbc10a707 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 1
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 1
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 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
 set g_pickup_respawntimejitter_powerup 0
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index 87b781a555216639bb618652be91097abfe09e62..ebfceb2c4d6d89d736f051176ad2274ea7986e0d 100644 (file)
@@ -127,21 +127,31 @@ set g_pickup_healthbig_anyway 0
 set g_pickup_healthmega 100
 set g_pickup_healthmega_max 200
 set g_pickup_healthmega_anyway 0
-set g_pickup_respawntime_short 15
-set g_pickup_respawntime_medium 20
-set g_pickup_respawntime_long 30
 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_armor_small 15
+set g_pickup_respawntime_armor_medium 20
+set g_pickup_respawntime_armor_big 30
+set g_pickup_respawntime_armor_mega 30
+set g_pickup_respawntime_health_small 15
+set g_pickup_respawntime_health_medium 15
+set g_pickup_respawntime_health_big 20
+set g_pickup_respawntime_health_mega 30
 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
 set g_pickup_respawntimejitter_powerup 0
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_superweapon 10
 set g_pickup_respawntimejitter_ammo 0
+set g_pickup_respawntimejitter_armor_small 0
+set g_pickup_respawntimejitter_armor_medium 0
+set g_pickup_respawntimejitter_armor_big 0
+set g_pickup_respawntimejitter_armor_mega 0
+set g_pickup_respawntimejitter_health_small 0
+set g_pickup_respawntimejitter_health_medium 0
+set g_pickup_respawntimejitter_health_big 0
+set g_pickup_respawntimejitter_health_mega 0
 // }}}
 
 // {{{ regen/rot
index c0ebcd95869761ce4472b790c62505bfbb0d6b0e..cc90a3266483333dc8792e85b81c7e2fe4a7cd84 100644 (file)
@@ -4,6 +4,7 @@
 #
 # Translators:
 # Delian, 2023
+# Delian, 2023
 # 411370735b8ef90fa32c21e58a50941e_d905c03 <7784313cf022f885419b74f26eaf98f3_541595>, 2016-2017
 # Krasimir Mikov, 2022
 # Krasimir Mikov, 2022
@@ -18,7 +19,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: Delian, 2023\n"
+"Last-Translator: ubone <van_ds_ff@mail.bg>, 2016\n"
 "Language-Team: Bulgarian (http://app.transifex.com/team-xonotic/xonotic/"
 "language/bg/)\n"
 "Language: bg\n"
index 0886aa417793a6fdfaea5625ef0f0ef8476c4c7b..ba6f8d67ac5f49d21ab8d6277f4a793f43e2ba1b 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: LegendGuard, 2020-2021,2023\n"
+"Last-Translator: Yotta Mxt, 2022\n"
 "Language-Team: Catalan (http://app.transifex.com/team-xonotic/xonotic/"
 "language/ca/)\n"
 "Language: ca\n"
index f99bfb4705ff0e00e569b08ea780676873e3f422..e78e8392ee161470469dcc6681f636a2a1b11e1e 100644 (file)
@@ -35,7 +35,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: LegendGuard, 2020-2023\n"
+"Last-Translator: Yotta Mxt, 2023\n"
 "Language-Team: Spanish (http://app.transifex.com/team-xonotic/xonotic/"
 "language/es/)\n"
 "Language: es\n"
index 9d6364fe7a18ebec1bfde21c80ae937741c05dd9..9b17ec24d44961bf7237119174484ee9a4866e32 100644 (file)
@@ -23,7 +23,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: Yannick Le Guen <leguen.yannick@gmail.com>, 2013-2023\n"
+"Last-Translator: Hugo Locurcio, 2013-2014\n"
 "Language-Team: French (http://app.transifex.com/team-xonotic/xonotic/"
 "language/fr/)\n"
 "Language: fr\n"
index d45135d852531dc672a89225dac760dbb07df68f..8f1be6b3154969c86c73af48ad0a267fd5c253a8 100644 (file)
@@ -17,7 +17,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: LegendGuard, 2020-2023\n"
+"Last-Translator: RYU N. <ryusho2523@yahoo.co.jp>, 2021\n"
 "Language-Team: Japanese (Japan) (http://app.transifex.com/team-xonotic/"
 "xonotic/language/ja_JP/)\n"
 "Language: ja_JP\n"
index 5a0b0d56ca75cdd2be45f0c41595e9917f67fa4d..7e1c13b601d0b1643a1ff5f9338c353eec72d624 100644 (file)
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2023-07-11 07:22+0200\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: yy0zz, 2021-2023\n"
+"Last-Translator: zerowhy . <anymailz@tutanota.com>, 2021\n"
 "Language-Team: Portuguese (Brazil) (http://app.transifex.com/team-xonotic/"
 "xonotic/language/pt_BR/)\n"
 "Language: pt_BR\n"
index f8cabaa0595f08bacfde5fbf9b14c5ffae0654d4..341dfec7fa01ce6437df2155108b64193badfa7e 100644 (file)
@@ -43,12 +43,12 @@ REGISTER_ITEM(ArmorSmall, Armor) {
     this.m_icon                 =   "armor_small";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
 #endif
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_short);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
+    this.m_respawntime          =   GET(g_pickup_respawntime_armor_small);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_armor_small);
     this.m_pickupanyway         =   GET(g_pickup_armorsmall_anyway);
     this.m_iteminit             =   item_armorsmall_init;
 #endif
@@ -85,12 +85,12 @@ REGISTER_ITEM(ArmorMedium, Armor) {
     this.m_icon                 =   "armor_medium";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
 #endif
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_medium);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_medium);
+    this.m_respawntime          =   GET(g_pickup_respawntime_armor_medium);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_armor_medium);
     this.m_pickupanyway         =   GET(g_pickup_armormedium_anyway);
     this.m_iteminit             =   item_armormedium_init;
 #endif
@@ -127,14 +127,14 @@ REGISTER_ITEM(ArmorBig, Armor) {
     this.m_icon                 =   "armor_big";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "armor"; // compatible with Xonotic v0.8.2 or lower
 #endif
     this.m_color                =   '0 1 0';
     this.m_waypoint             =   _("Big armor");
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_long);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
+    this.m_respawntime          =   GET(g_pickup_respawntime_armor_big);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_armor_big);
     this.m_pickupanyway         =   GET(g_pickup_armorbig_anyway);
     this.m_iteminit             =   item_armorbig_init;
 #endif
@@ -171,7 +171,7 @@ REGISTER_ITEM(ArmorMega, Armor) {
     this.m_icon                 =   "armor_mega";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "item_large_armor"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "item_large_armor"; // compatible with Xonotic v0.8.2 or lower
 #endif
     this.m_color                =   '0 1 0';
     this.m_waypoint             =   _("Mega armor");
@@ -179,8 +179,8 @@ REGISTER_ITEM(ArmorMega, Armor) {
 #ifdef SVQC
     this.m_maxs                 =   '16 16 70';
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_long);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
+    this.m_respawntime          =   GET(g_pickup_respawntime_armor_mega);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_armor_mega);
     this.m_pickupanyway         =   GET(g_pickup_armormega_anyway);
     this.m_iteminit             =   item_armormega_init;
 #endif
index ca94651aa328a5e7d314e66c2d0b7906332c1129..a2664cc516b5bf0c6d7aeee46ec67e01509e6499 100644 (file)
@@ -34,7 +34,7 @@ void item_healthsmall_init(Pickup this, entity item)
 REGISTER_ITEM(HealthSmall, Health) {
     this.m_canonical_spawnfunc = "item_health_small";
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
+    this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
     this.m_model                =   MDL_HealthSmall_ITEM;
     this.m_sound                =   SND_HealthSmall;
 #endif
@@ -43,14 +43,15 @@ REGISTER_ITEM(HealthSmall, Health) {
     this.m_icon                 =   "health_small";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
 #endif
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_short);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
+    this.m_respawntime          =   GET(g_pickup_respawntime_health_small);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_health_small);
     this.m_pickupanyway         =   GET(g_pickup_healthsmall_anyway);
     this.m_iteminit             =   item_healthsmall_init;
+
 #endif
 }
 
@@ -76,7 +77,7 @@ void item_healthmedium_init(Pickup this, entity item)
 REGISTER_ITEM(HealthMedium, Health) {
     this.m_canonical_spawnfunc = "item_health_medium";
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
+    this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
     this.m_model                =   MDL_HealthMedium_ITEM;
     this.m_sound                =   SND_HealthMedium;
 #endif
@@ -85,12 +86,12 @@ REGISTER_ITEM(HealthMedium, Health) {
     this.m_icon                 =   "health_medium";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
 #endif
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_short);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
+    this.m_respawntime          =   GET(g_pickup_respawntime_health_medium);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_health_medium);
     this.m_pickupanyway         =   GET(g_pickup_healthmedium_anyway);
     this.m_iteminit             =   item_healthmedium_init;
 #endif
@@ -118,7 +119,7 @@ void item_healthbig_init(Pickup this, entity item)
 REGISTER_ITEM(HealthBig, Health) {
     this.m_canonical_spawnfunc = "item_health_big";
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
+    this.spawnflags = ITEM_FLAG_NORMAL | ITEM_FLAG_RESOURCE;
     this.m_model                =   MDL_HealthBig_ITEM;
     this.m_sound                =   SND_HealthBig;
 #endif
@@ -129,12 +130,12 @@ REGISTER_ITEM(HealthBig, Health) {
     this.m_waypoint             =   _("Big health");
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "health"; // compatible with Xonotic v0.8.2 or lower
 #endif
 #ifdef SVQC
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_medium);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_medium);
+    this.m_respawntime          =   GET(g_pickup_respawntime_health_big);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_health_big);
     this.m_pickupanyway         =   GET(g_pickup_healthbig_anyway);
     this.m_iteminit             =   item_healthbig_init;
 #endif
@@ -171,7 +172,7 @@ REGISTER_ITEM(HealthMega, Health) {
     this.m_icon                 =   "health_mega";
 #ifdef CSQC
     if(precache_pic(strcat("gfx/hud/luma/", this.m_icon)) == "")
-       this.m_icon             =   "item_mega_health"; // compatible with Xonotic v0.8.2 or lower
+        this.m_icon             =   "item_mega_health"; // compatible with Xonotic v0.8.2 or lower
 #endif
     this.m_color                =   '1 0 0';
     this.m_waypoint             =   _("Mega health");
@@ -179,8 +180,8 @@ REGISTER_ITEM(HealthMega, Health) {
 #ifdef SVQC
     this.m_maxs                 =   '16 16 70';
     this.m_itemid               =   IT_RESOURCE;
-    this.m_respawntime          =   GET(g_pickup_respawntime_long);
-    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
+    this.m_respawntime          =   GET(g_pickup_respawntime_health_mega);
+    this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_health_mega);
     this.m_pickupanyway         =   GET(g_pickup_healthmega_anyway);
     this.m_iteminit             =   item_healthmega_init;
 #endif
index d21923e258dc196ef15e80209e3fbfb230b9de63..6df6baf83a90682dd37c3eecd92e9c9c8ca673ee 100644 (file)
@@ -4,16 +4,26 @@
 PROPERTY(float, g_pickup_respawntime_weapon)
 PROPERTY(float, g_pickup_respawntime_superweapon)
 PROPERTY(float, g_pickup_respawntime_ammo)
-PROPERTY(float, g_pickup_respawntime_short)
-PROPERTY(float, g_pickup_respawntime_medium)
-PROPERTY(float, g_pickup_respawntime_long)
+PROPERTY(float, g_pickup_respawntime_armor_small)
+PROPERTY(float, g_pickup_respawntime_armor_medium)
+PROPERTY(float, g_pickup_respawntime_armor_big)
+PROPERTY(float, g_pickup_respawntime_armor_mega)
+PROPERTY(float, g_pickup_respawntime_health_small)
+PROPERTY(float, g_pickup_respawntime_health_medium)
+PROPERTY(float, g_pickup_respawntime_health_big)
+PROPERTY(float, g_pickup_respawntime_health_mega)
 PROPERTY(float, g_pickup_respawntime_powerup)
 PROPERTY(float, g_pickup_respawntimejitter_weapon)
 PROPERTY(float, g_pickup_respawntimejitter_superweapon)
 PROPERTY(float, g_pickup_respawntimejitter_ammo)
-PROPERTY(float, g_pickup_respawntimejitter_short)
-PROPERTY(float, g_pickup_respawntimejitter_medium)
-PROPERTY(float, g_pickup_respawntimejitter_long)
+PROPERTY(float, g_pickup_respawntimejitter_health_small)
+PROPERTY(float, g_pickup_respawntimejitter_health_medium)
+PROPERTY(float, g_pickup_respawntimejitter_health_big)
+PROPERTY(float, g_pickup_respawntimejitter_health_mega)
+PROPERTY(float, g_pickup_respawntimejitter_armor_small)
+PROPERTY(float, g_pickup_respawntimejitter_armor_medium)
+PROPERTY(float, g_pickup_respawntimejitter_armor_big)
+PROPERTY(float, g_pickup_respawntimejitter_armor_mega)
 PROPERTY(float, g_pickup_respawntimejitter_powerup)
 #endif
 
index 1316c3283003e6ce5b5a573e47960eebdb9c2020..9751719cea2cd2fadbc22d4eeecb2b456ce980f8 100644 (file)
@@ -29,6 +29,7 @@ void door_blocked(entity this, entity blocker)
 {
        bool reverse = false;
        if((this.spawnflags & DOOR_CRUSH)
+               && !Q3COMPAT_COMMON
 #ifdef SVQC
                && (blocker.takedamage != DAMAGE_NO)
 #elif defined(CSQC)
@@ -43,46 +44,46 @@ void door_blocked(entity this, entity blocker)
        else
        {
 #ifdef SVQC
-               if((this.dmg) && (blocker.takedamage == DAMAGE_YES))    // Shall we bite?
+               if(this.dmg && blocker.takedamage != DAMAGE_NO)    // Shall we bite?
                        Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0');
 #endif
 
-                // don't change direction for dead or dying stuff
-               if(IS_DEAD(blocker)
+               // don't change direction for dead or dying stuff
+               if(!IS_DEAD(blocker)
 #ifdef SVQC
-                       && (blocker.takedamage == DAMAGE_NO)
+                       && blocker.takedamage != DAMAGE_NO
 #endif
+                       && this.wait >= 0
+                       && !(Q3COMPAT_COMMON && (this.spawnflags & Q3_DOOR_CRUSHER))
                )
                {
-                       if (this.wait >= 0)
+                       if (this.state == STATE_DOWN)
                        {
-                               if (this.state == STATE_DOWN)
-                               {
-                                       if (this.classname == "door")
-                                               door_go_up(this, NULL, NULL);
-                                       else
-                                               door_rotating_go_up(this, blocker);
-                               }
+                               if (this.classname == "door")
+                                       door_go_up(this, NULL, NULL);
                                else
-                               {
-                                       if (this.classname == "door")
-                                               door_go_down(this);
-                                       else
-                                               door_rotating_go_down(this);
-                               }
-                               reverse = true;
+                                       door_rotating_go_up(this, blocker);
                        }
+                       else
+                       {
+                               if (this.classname == "door")
+                                       door_go_down(this);
+                               else
+                                       door_rotating_go_down(this);
+                       }
+                       reverse = true;
                }
 #ifdef SVQC
                else
                {
                        //gib dying stuff just to make sure
-                       if((this.dmg) && (blocker.takedamage != DAMAGE_NO))    // Shall we bite?
+                       if(this.dmg && blocker.takedamage != DAMAGE_NO && IS_DEAD(blocker))    // Shall we bite?
                                Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0');
                }
 #endif
        }
-       if (!reverse && this.classname == "door")
+       // if we didn't change direction and are using a non-linear movement controller, we must pause it
+       if (!reverse && this.classname == "door" && this.move_controller)
                SUB_CalcMovePause(this);
 }
 
@@ -212,10 +213,13 @@ bool door_check_keys(entity door, entity player)
        return false;
 }
 
-void door_fire(entity this, entity actor, entity trigger)
+void door_use(entity this, entity actor, entity trigger)
 {
-       if (this.owner != this)
-               objerror (this, "door_fire: this.owner != this");
+       //dprint("door_use (model: ");dprint(this.model);dprint(")\n");
+
+       if (!this.owner)
+               return;
+       this = this.owner;
 
        if (this.spawnflags & DOOR_TOGGLE)
        {
@@ -256,14 +260,6 @@ void door_fire(entity this, entity actor, entity trigger)
        } while ((e != this) && (e != NULL));
 }
 
-void door_use(entity this, entity actor, entity trigger)
-{
-       //dprint("door_use (model: ");dprint(this.model);dprint(")\n");
-
-       if (this.owner)
-               door_fire(this.owner, actor, trigger);
-}
-
 void door_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force)
 {
        if(this.spawnflags & NOSPLASH)
@@ -369,14 +365,25 @@ void door_trigger_touch(entity this, entity toucher)
 #endif
                        return;
 
-       if (time < this.door_finished)
+       if (this.owner.state == STATE_UP)
                return;
 
        // check if door is locked
        if (!door_check_keys(this, toucher))
                return;
 
-       this.door_finished = time + 1;
+       if (this.owner.state == STATE_TOP)
+       {
+               if (this.owner.nextthink < this.owner.ltime + this.owner.wait)
+               {
+                       entity e = this.owner;
+                       do {
+                               e.nextthink = e.ltime + e.wait;
+                               e = e.enemy;
+                       } while (e != this.owner);
+               }
+               return;
+       }
 
        door_use(this.owner, toucher, NULL);
 }
@@ -408,7 +415,9 @@ LinkDoors
 
 entity LinkDoors_nextent(entity cur, entity near, entity pass)
 {
-       while((cur = find(cur, classname, pass.classname)) && ((cur.spawnflags & DOOR_DONT_LINK) || cur.enemy))
+       while((cur = find(cur, classname, pass.classname)) 
+       && (((cur.spawnflags & DOOR_DONT_LINK) && !Q3COMPAT_COMMON) 
+       || cur.enemy))
        {
        }
        return cur;
@@ -416,6 +425,9 @@ entity LinkDoors_nextent(entity cur, entity near, entity pass)
 
 bool LinkDoors_isconnected(entity e1, entity e2, entity pass)
 {
+       if(Q3COMPAT_COMMON)
+               return e1.team == e2.team;
+
        float DELTA = 4;
        if((e1.absmin_x > e2.absmax_x + DELTA)
        || (e1.absmin_y > e2.absmax_y + DELTA)
@@ -441,7 +453,10 @@ void LinkDoors(entity this)
 
        if (this.enemy)
                return;         // already linked by another door
-       if (this.spawnflags & DOOR_DONT_LINK)
+
+       // Q3 door linking is done for teamed doors only and is not affected by spawnflags or bmodel proximity
+       if (((this.spawnflags & DOOR_DONT_LINK) && !Q3COMPAT_COMMON) 
+       || (Q3COMPAT_COMMON && !this.team))
        {
                this.owner = this.enemy = this;
 
@@ -544,7 +559,7 @@ SILVER_KEY causes the door to open only if the activator holds a silver key.
 "speed"                movement speed (100 default)
 "wait"         wait before returning (3 default, -1 = never return)
 "lip"          lip remaining at end of move (8 default)
-"dmg"          damage to inflict when blocked (2 default)
+"dmg"          damage to inflict when blocked (0 default)
 "sounds"
 0)     no sound
 1)     stone
@@ -609,9 +624,12 @@ void door_init_startopen(entity this)
        this.pos2 = this.pos1;
        this.pos1 = this.origin;
 
+// no longer needed: not using delayed initialisation for door_init_startopen()
+#if 0
 #ifdef SVQC
        this.SendFlags |= SF_TRIGGER_UPDATE;
 #endif
+#endif
 }
 
 void door_reset(entity this)
@@ -666,14 +684,28 @@ void door_init_shared(entity this)
 
        if (q3compat)
        {
-               // CPMA adds these fields for overriding the engine sounds
+               // CPMA adds these fields for overriding the Q3 default sounds
                string s = GetField_fullspawndata(this, "sound_start", true);
                string e = GetField_fullspawndata(this, "sound_end", true);
 
                if (s)
                        this.noise2 = strzone(s);
+               else
+               {
+                       // PK3s supporting Q3A sometimes include custom sounds at Q3 default paths
+                       s = "sound/movers/doors/dr1_strt.wav";
+                       if (FindFileInMapPack(s))
+                               this.noise2 = s;
+               }
+
                if (e)
                        this.noise1 = strzone(e);
+               else
+               {
+                       e = "sound/movers/doors/dr1_end.wav";
+                       if (FindFileInMapPack(e))
+                               this.noise1 = e;
+               }
        }
 
        // sound when door stops moving
@@ -693,7 +725,7 @@ void door_init_shared(entity this)
        }
        else if (!this.wait)
        {
-               this.wait = 3;
+               this.wait = q3compat ? 2 : 3;
        }
 
        if (!this.lip)
@@ -738,15 +770,19 @@ spawnfunc(func_door)
        if(this.spawnflags & DOOR_NONSOLID)
                this.solid = SOLID_NOT;
 
-// DOOR_START_OPEN is to allow an entity to be lighted in the closed position
-// but spawn in the open position
-       if (this.spawnflags & DOOR_START_OPEN)
-               InitializeEntity(this, door_init_startopen, INITPRIO_SETLOCATION);
-
        door_init_shared(this);
 
        this.pos1 = this.origin;
-       this.pos2 = this.pos1 + this.movedir*(fabs(this.movedir*this.size) - this.lip);
+       vector absmovedir;
+       absmovedir.x = fabs(this.movedir.x);
+       absmovedir.y = fabs(this.movedir.y);
+       absmovedir.z = fabs(this.movedir.z);
+       this.pos2 = this.pos1 + this.movedir * (absmovedir * this.size - this.lip);
+
+// DOOR_START_OPEN is to allow an entity to be lighted in the closed position
+// but spawn in the open position
+       if (this.spawnflags & DOOR_START_OPEN)
+               door_init_startopen(this);
 
        if(autocvar_sv_doors_always_open)
        {
@@ -760,6 +796,19 @@ spawnfunc(func_door)
                        this.speed = 100;
        }
 
+       if (q3compat)
+       {
+               if (!this.dmg)
+                       this.dmg = 2;
+
+               if (!this.team)
+               {
+                       string t = GetField_fullspawndata(this, "team");
+                       // bones_was_here: same hack as used to support teamed items on Q3 maps
+                       if(t) this.team = crc16(false, t);
+               }
+       }
+
        settouch(this, door_touch);
 
 // LinkDoors can't be done until all of the doors have been spawned, so
index f185f4be8fc96e307ae05ee89078b3174396fb44..ce7025dd5488854e741bb166c9c3e2db8b1a8f2a 100644 (file)
@@ -4,7 +4,7 @@
 bool autocvar_sv_doors_always_open;
 #endif
 
-const int DOOR_START_OPEN = BIT(0);
+const int DOOR_START_OPEN = BIT(0); // has same meaning in Q3: reverse position 1 and 2
 const int DOOR_DONT_LINK = BIT(2);
 const int SPAWNFLAGS_GOLD_KEY = BIT(3); // Quake 1 compat, can only be used with func_door!
 const int SPAWNFLAGS_SILVER_KEY = BIT(4); // Quake 1 compat, can only be used with func_door!
@@ -13,6 +13,7 @@ const int DOOR_TOGGLE = BIT(5);
 const int DOOR_NONSOLID = BIT(10);
 const int DOOR_CRUSH = BIT(11); // can't use CRUSH cause that is the same as DOOR_DONT_LINK
 
+#define Q3_DOOR_CRUSHER BIT(2) // in Q3 this disables the auto reverse so the blocking player takes damage every frame
 
 #ifdef CSQC
 // stuff for preload
index 2376c5956de1adbdc227654e30b819c8d5137b0f..08faae9ebef1a1ca05f9c5b380ac41254d54c7b6 100644 (file)
@@ -7,7 +7,9 @@ void plat_link(entity this);
 void plat_delayedinit(entity this)
 {
        plat_link(this);
-       plat_spawn_inside_trigger(this); // the "start moving" trigger
+       // Q3 uses only a truth check of .targetname to decide whether to spawn a trigger
+       if(!Q3COMPAT_COMMON || this.targetname == "")
+               plat_spawn_inside_trigger(this); // the "start moving" trigger
 }
 
 float plat_send(entity this, entity to, float sf)
@@ -56,7 +58,12 @@ void plat_link(entity this)
 
 spawnfunc(func_plat)
 {
-       if (this.spawnflags & CRUSH)
+       if (q3compat)
+       {
+               this.spawnflags = 0; // Q3 plats have no spawnflags
+               if (!this.dmg) this.dmg = 2;
+       }
+       else if (this.spawnflags & CRUSH)
        {
                this.dmg = 10000;
        }
@@ -91,14 +98,28 @@ spawnfunc(func_plat)
 
        if (q3compat)
        {
-               // CPMA adds these fields for overriding the engine sounds
+               // CPMA adds these fields for overriding the Q3 default sounds
                string s = GetField_fullspawndata(this, "sound_start", true);
                string e = GetField_fullspawndata(this, "sound_end", true);
 
                if (s)
                        this.noise = strzone(s);
+               else
+               {
+                       // PK3s supporting Q3A sometimes include custom sounds at Q3 default paths
+                       s = "sound/movers/plats/pt1_strt.wav";
+                       if (FindFileInMapPack(s))
+                               this.noise = s;
+               }
+
                if (e)
                        this.noise1 = strzone(e);
+               else
+               {
+                       e = "sound/movers/plats/pt1_end.wav";
+                       if (FindFileInMapPack(e))
+                               this.noise1 = e;
+               }
        }
 
        if(this.noise && this.noise != "")
@@ -122,8 +143,8 @@ spawnfunc(func_plat)
 
        setblocked(this, plat_crush);
 
-       if (!this.speed) this.speed = 150;
-       if (!this.lip) this.lip = 16;
+       if (!this.speed) this.speed = q3compat ? 200 : 150;
+       if (!this.lip) this.lip = q3compat ? 8 : 16;
        if (!this.height) this.height = this.size.z - this.lip;
 
        this.pos1 = this.origin;
@@ -186,7 +207,8 @@ NET_HANDLE(ENT_CLIENT_PLAT, bool isnew)
                set_movetype(this, MOVETYPE_PUSH);
                this.move_time = time;
 
-               plat_spawn_inside_trigger(this);
+               if(!Q3COMPAT_COMMON || this.targetname == "")
+                       plat_spawn_inside_trigger(this);
        }
 
        if(sf & SF_TRIGGER_RESET)
index 28b420b20ab4f2ed6c49bde68e5383d365de1b6b..9e1f635b32c9982ab594d10c3036bad243f6e00e 100644 (file)
@@ -173,13 +173,21 @@ void plat_use(entity this, entity actor, entity trigger)
        plat_go_down(this);
 }
 
+void plat_target_use(entity this, entity actor, entity trigger)
+{
+       if (this.state == STATE_TOP)
+               this.nextthink = this.ltime + 1;
+       else if (this.state != STATE_UP)
+               plat_go_up(this);
+}
+
 // WARNING: backwards compatibility because people don't use already existing fields :(
 // TODO: Check if any maps use these fields and remove these fields if it doesn't break maps
 .string sound1, sound2;
 
 void plat_reset(entity this)
 {
-       if(this.targetname && this.targetname != "")
+       if(this.targetname && this.targetname != "" && !Q3COMPAT_COMMON)
        {
                setorigin(this, this.pos1);
                this.state = STATE_UP;
@@ -189,7 +197,7 @@ void plat_reset(entity this)
        {
                setorigin(this, this.pos2);
                this.state = STATE_BOTTOM;
-               this.use = plat_trigger_use;
+               this.use = (this.targetname != "" && Q3COMPAT_COMMON) ? plat_target_use : plat_trigger_use;
        }
 
 #ifdef SVQC
index 0d36ea47ede68762063b9780ac487f3053c13582..40f4d6c2f58e176a71f806dbbb0c4a99663c733b 100644 (file)
@@ -468,6 +468,32 @@ string GetField_fullspawndata(entity e, string f, ...)
        return v;
 }
 
+/*
+=============
+FindFileInMapPack
+
+Returns the first matching VFS file path that exists in the current map's pack.
+Returns string_null if no files match or the map isn't packaged.
+=============
+*/
+string FindFileInMapPack(string pattern)
+{
+       if(!checkextension("DP_QC_FS_SEARCH_PACKFILE"))
+               return string_null;
+
+       string base_pack = whichpack(strcat("maps/", mapname, ".bsp"));
+       if(base_pack == "" || !base_pack) // this map isn't packaged or there was an error
+               return string_null;
+
+       int glob = search_packfile_begin(pattern, true, true, base_pack);
+       if(glob < 0)
+               return string_null;
+
+       string file = search_getfilename(glob, 0);
+       search_end(glob);
+       return file;
+}
+
 void WarpZone_PostInitialize_Callback()
 {
        // create waypoint links for warpzones
index 977f235715a90a90064d4a8f332f3dbd36595af1..3487b68073ac571998f6879d957f5093e2a0ff30 100644 (file)
@@ -2149,16 +2149,26 @@ void readlevelcvars()
        g_pickup_respawntime_weapon = cvar("g_pickup_respawntime_weapon");
        g_pickup_respawntime_superweapon = cvar("g_pickup_respawntime_superweapon");
        g_pickup_respawntime_ammo = cvar("g_pickup_respawntime_ammo");
-       g_pickup_respawntime_short = cvar("g_pickup_respawntime_short");
-       g_pickup_respawntime_medium = cvar("g_pickup_respawntime_medium");
-       g_pickup_respawntime_long = cvar("g_pickup_respawntime_long");
+       g_pickup_respawntime_armor_small = cvar("g_pickup_respawntime_armor_small");
+       g_pickup_respawntime_armor_medium = cvar("g_pickup_respawntime_armor_medium");
+       g_pickup_respawntime_armor_big = cvar("g_pickup_respawntime_armor_big");
+       g_pickup_respawntime_armor_mega = cvar("g_pickup_respawntime_armor_mega");
+       g_pickup_respawntime_health_small = cvar("g_pickup_respawntime_health_small");
+       g_pickup_respawntime_health_medium = cvar("g_pickup_respawntime_health_medium");
+       g_pickup_respawntime_health_big = cvar("g_pickup_respawntime_health_big");
+       g_pickup_respawntime_health_mega = cvar("g_pickup_respawntime_health_mega");
        g_pickup_respawntime_powerup = cvar("g_pickup_respawntime_powerup");
        g_pickup_respawntimejitter_weapon = cvar("g_pickup_respawntimejitter_weapon");
        g_pickup_respawntimejitter_superweapon = cvar("g_pickup_respawntimejitter_superweapon");
        g_pickup_respawntimejitter_ammo = cvar("g_pickup_respawntimejitter_ammo");
-       g_pickup_respawntimejitter_short = cvar("g_pickup_respawntimejitter_short");
-       g_pickup_respawntimejitter_medium = cvar("g_pickup_respawntimejitter_medium");
-       g_pickup_respawntimejitter_long = cvar("g_pickup_respawntimejitter_long");
+       g_pickup_respawntimejitter_armor_small = cvar("g_pickup_respawntimejitter_armor_small");
+       g_pickup_respawntimejitter_armor_medium = cvar("g_pickup_respawntimejitter_armor_medium");
+       g_pickup_respawntimejitter_armor_big = cvar("g_pickup_respawntimejitter_armor_big");
+       g_pickup_respawntimejitter_armor_mega = cvar("g_pickup_respawntimejitter_armor_mega");
+       g_pickup_respawntimejitter_health_small = cvar("g_pickup_respawntimejitter_health_small");
+       g_pickup_respawntimejitter_health_medium = cvar("g_pickup_respawntimejitter_health_medium");
+       g_pickup_respawntimejitter_health_big = cvar("g_pickup_respawntimejitter_health_big");
+       g_pickup_respawntimejitter_health_mega = cvar("g_pickup_respawntimejitter_health_mega");
        g_pickup_respawntimejitter_powerup = cvar("g_pickup_respawntimejitter_powerup");
 
        g_pickup_shells = cvar("g_pickup_shells");