-Fri 28 Jul 2023 07:23:02 AM CEST
+Wed 02 Aug 2023 07:23:01 AM CEST
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
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
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
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
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
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
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
#
# Translators:
# Delian, 2023
+# Delian, 2023
# 411370735b8ef90fa32c21e58a50941e_d905c03 <7784313cf022f885419b74f26eaf98f3_541595>, 2016-2017
# Krasimir Mikov, 2022
# Krasimir Mikov, 2022
"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"
"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"
"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"
"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"
"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"
"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"
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
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
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
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");
#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
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
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
}
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
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
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
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
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");
#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
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
{
bool reverse = false;
if((this.spawnflags & DOOR_CRUSH)
+ && !Q3COMPAT_COMMON
#ifdef SVQC
&& (blocker.takedamage != DAMAGE_NO)
#elif defined(CSQC)
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);
}
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)
{
} 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)
#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);
}
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;
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)
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;
"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
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)
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
}
else if (!this.wait)
{
- this.wait = 3;
+ this.wait = q3compat ? 2 : 3;
}
if (!this.lip)
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)
{
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
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!
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
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)
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;
}
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 != "")
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;
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)
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;
{
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
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
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");