]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/bot_AI_improvements 409/head
authorterencehill <piuntn@gmail.com>
Fri, 17 Feb 2017 18:37:59 +0000 (19:37 +0100)
committerterencehill <piuntn@gmail.com>
Fri, 17 Feb 2017 18:37:59 +0000 (19:37 +0100)
27 files changed:
qcsrc/common/items/item.qh
qcsrc/common/items/item/ammo.qh
qcsrc/common/items/item/armor.qh
qcsrc/common/items/item/health.qh
qcsrc/common/items/item/jetpack.qh
qcsrc/common/items/item/pickup.qh
qcsrc/common/items/item/powerup.qh
qcsrc/common/mutators/mutator/instagib/items.qh
qcsrc/common/mutators/mutator/instagib/sv_instagib.qc
qcsrc/common/playerstats.qc
qcsrc/common/t_items.qc
qcsrc/common/triggers/target/_mod.inc
qcsrc/common/triggers/target/_mod.qh
qcsrc/common/triggers/target/include.qc
qcsrc/common/triggers/target/levelwarp.qc [new file with mode: 0644]
qcsrc/common/triggers/target/levelwarp.qh [new file with mode: 0644]
qcsrc/server/autocvars.qh
qcsrc/server/cheats.qc
qcsrc/server/client.qc
qcsrc/server/command/cmd.qc
qcsrc/server/command/sv_cmd.qc
qcsrc/server/defs.qh
qcsrc/server/miscfunctions.qh
qcsrc/server/player.qc
qcsrc/server/scores.qc
qcsrc/server/teamplay.qc
qcsrc/server/weapons/hitplot.qc

index f3aa0cec26b067f47244b96c4af521028b677991..52fa9b85c6657c2858050f48410c2facfb466e9b 100644 (file)
@@ -37,6 +37,11 @@ const int IT_STRENGTH                                = BIT(22);
 const int IT_UNLIMITED_AMMO                    = IT_UNLIMITED_WEAPON_AMMO | IT_UNLIMITED_SUPERWEAPONS;
 const int IT_PICKUPMASK                        = IT_UNLIMITED_AMMO | IT_JETPACK | IT_FUEL_REGEN; // strength and invincible are handled separately
 
+#ifdef SVQC
+.float  strength_finished = _STAT(STRENGTH_FINISHED);
+.float  invincible_finished = _STAT(INVINCIBLE_FINISHED);
+#endif
+
 #define ITEM_HANDLE(signal, ...) __Item_Send_##signal(__VA_ARGS__)
 CLASS(GameItem, Object)
     ATTRIB(GameItem, m_id, int, 0);
index d7c3e9408c3e6786874eec9656d5f5ecde99f572..20963928526a12ddfe94313004fffe946ca89b8c 100644 (file)
@@ -22,15 +22,25 @@ ENDCLASS(Ammo)
 MODEL(Bullets_ITEM, Item_Model("a_bullets.mdl"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_nails);
+void ammo_bullets_init(entity item)
+{
+    if(!item.ammo_nails)
+        item.ammo_nails = g_pickup_nails;
+}
+#endif
 REGISTER_ITEM(Bullets, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_Bullets_ITEM;
 #endif
+    this.netname    =   "bullets";
     this.m_name     =   "bullets";
     this.m_icon     =   "ammo_bullets";
 #ifdef SVQC
     this.m_botvalue =   1500;
     this.m_itemid   =   IT_NAILS;
+    this.m_iteminit =   ammo_bullets_init;
 #endif
 }
 
@@ -38,15 +48,25 @@ REGISTER_ITEM(Bullets, Ammo) {
 MODEL(Cells_ITEM, Item_Model("a_cells.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_cells);
+void ammo_cells_init(entity item)
+{
+    if(!item.ammo_cells)
+        item.ammo_cells = g_pickup_cells;
+}
+#endif
 REGISTER_ITEM(Cells, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_Cells_ITEM;
 #endif
+    this.netname    =   "cells";
     this.m_name     =   "cells";
     this.m_icon     =   "ammo_cells";
 #ifdef SVQC
     this.m_botvalue =   1500;
     this.m_itemid   =   IT_CELLS;
+    this.m_iteminit =   ammo_cells_init;
 #endif
 }
 
@@ -54,15 +74,25 @@ REGISTER_ITEM(Cells, Ammo) {
 MODEL(Plasma_ITEM, Item_Model("a_cells.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_plasma);
+void ammo_plasma_init(entity item)
+{
+    if(!item.ammo_plasma)
+        item.ammo_plasma = g_pickup_plasma;
+}
+#endif
 REGISTER_ITEM(Plasma, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_Plasma_ITEM;
 #endif
+    this.netname    =   "plasma";
     this.m_name     =   "plasma";
     this.m_icon     =   "ammo_plasma";
 #ifdef SVQC
     this.m_botvalue =   1500;
     this.m_itemid   =   IT_PLASMA;
+    this.m_iteminit =   ammo_plasma_init;
 #endif
 }
 
@@ -70,15 +100,25 @@ REGISTER_ITEM(Plasma, Ammo) {
 MODEL(Rockets_ITEM, Item_Model("a_rockets.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_rockets);
+void ammo_rockets_init(entity item)
+{
+    if(!item.ammo_rockets)
+        item.ammo_rockets = g_pickup_rockets;
+}
+#endif
 REGISTER_ITEM(Rockets, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_Rockets_ITEM;
 #endif
+    this.netname    =   "rockets";
     this.m_name     =   "rockets";
     this.m_icon     =   "ammo_rockets";
 #ifdef SVQC
     this.m_botvalue =   1500;
     this.m_itemid   =   IT_ROCKETS;
+    this.m_iteminit =   ammo_rockets_init;
 #endif
 }
 
@@ -86,14 +126,24 @@ REGISTER_ITEM(Rockets, Ammo) {
 MODEL(Shells_ITEM, Item_Model("a_shells.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_shells);
+void ammo_shells_init(entity item)
+{
+    if(!item.ammo_shells)
+        item.ammo_shells = g_pickup_shells;
+}
+#endif
 REGISTER_ITEM(Shells, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_Shells_ITEM;
 #endif
+    this.netname    =   "shells";
     this.m_name     =   "shells";
     this.m_icon     =   "ammo_shells";
 #ifdef SVQC
     this.m_botvalue =   1000;
     this.m_itemid   =   IT_SHELLS;
+    this.m_iteminit =   ammo_shells_init;
 #endif
 }
index bc2aa654451d9129b20602a82c6211dce7a05c23..0258cf8811c7682e0922f3f6960ed6af2f9c7065 100644 (file)
@@ -20,6 +20,15 @@ SOUND(ArmorSmall, Item_Sound("armor1"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_armorsmall_anyway);
+PROPERTY(int, g_pickup_armorsmall);
+PROPERTY(int, g_pickup_armorsmall_max);
+void item_armorsmall_init(entity item)
+{
+    if(!item.max_armorvalue)
+        item.max_armorvalue = g_pickup_armorsmall_max;
+    if(!item.armorvalue)
+        item.armorvalue = g_pickup_armorsmall;
+}
 #endif
 
 REGISTER_ITEM(ArmorSmall, Armor) {
@@ -27,6 +36,7 @@ REGISTER_ITEM(ArmorSmall, Armor) {
     this.m_model                =   MDL_ArmorSmall_ITEM;
     this.m_sound                =   SND_ArmorSmall;
 #endif
+    this.netname                =   "armor_small";
     this.m_name                 =   "5 Armor";
     this.m_icon                 =   "armor";
 #ifdef SVQC
@@ -34,6 +44,7 @@ REGISTER_ITEM(ArmorSmall, Armor) {
     this.m_respawntime          =   GET(g_pickup_respawntime_short);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
     this.m_pickupanyway         =   GET(g_pickup_armorsmall_anyway);
+    this.m_iteminit             =   item_armorsmall_init;
 #endif
 }
 
@@ -43,6 +54,15 @@ SOUND(ArmorMedium, Item_Sound("armor10"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_armormedium_anyway);
+PROPERTY(int, g_pickup_armormedium);
+PROPERTY(int, g_pickup_armormedium_max);
+void item_armormedium_init(entity item)
+{
+    if(!item.max_armorvalue)
+        item.max_armorvalue = g_pickup_armormedium_max;
+    if(!item.armorvalue)
+        item.armorvalue = g_pickup_armormedium;
+}
 #endif
 
 REGISTER_ITEM(ArmorMedium, Armor) {
@@ -50,6 +70,7 @@ REGISTER_ITEM(ArmorMedium, Armor) {
     this.m_model                =   MDL_ArmorMedium_ITEM;
     this.m_sound                =   SND_ArmorMedium;
 #endif
+    this.netname                =   "armor_medium";
     this.m_name                 =   "25 Armor";
     this.m_icon                 =   "armor";
 #ifdef SVQC
@@ -57,6 +78,7 @@ REGISTER_ITEM(ArmorMedium, Armor) {
     this.m_respawntime          =   GET(g_pickup_respawntime_medium);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_medium);
     this.m_pickupanyway         =   GET(g_pickup_armormedium_anyway);
+    this.m_iteminit             =   item_armormedium_init;
 #endif
 }
 
@@ -66,6 +88,15 @@ SOUND(ArmorBig, Item_Sound("armor17_5"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_armorbig_anyway);
+PROPERTY(int, g_pickup_armorbig);
+PROPERTY(int, g_pickup_armorbig_max);
+void item_armorbig_init(entity item)
+{
+    if(!item.max_armorvalue)
+        item.max_armorvalue = g_pickup_armorbig_max;
+    if(!item.armorvalue)
+        item.armorvalue = g_pickup_armorbig;
+}
 #endif
 
 REGISTER_ITEM(ArmorBig, Armor) {
@@ -73,6 +104,7 @@ REGISTER_ITEM(ArmorBig, Armor) {
     this.m_model                =   MDL_ArmorBig_ITEM;
     this.m_sound                =   SND_ArmorBig;
 #endif
+    this.netname                =   "armor_big";
     this.m_name                 =   "50 Armor";
     this.m_icon                 =   "armor";
     this.m_color                =   '0 1 0';
@@ -82,6 +114,7 @@ REGISTER_ITEM(ArmorBig, Armor) {
     this.m_respawntime          =   GET(g_pickup_respawntime_long);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
     this.m_pickupanyway         =   GET(g_pickup_armorbig_anyway);
+    this.m_iteminit             =   item_armorbig_init;
 #endif
 }
 
@@ -91,6 +124,15 @@ SOUND(ArmorMega, Item_Sound("armor25"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_armormega_anyway);
+PROPERTY(int, g_pickup_armormega);
+PROPERTY(int, g_pickup_armormega_max);
+void item_armormega_init(entity item)
+{
+    if(!item.max_armorvalue)
+        item.max_armorvalue = g_pickup_armormega_max;
+    if(!item.armorvalue)
+        item.armorvalue = g_pickup_armormega;
+}
 #endif
 
 REGISTER_ITEM(ArmorMega, Armor) {
@@ -98,6 +140,7 @@ REGISTER_ITEM(ArmorMega, Armor) {
     this.m_model                =   MDL_ArmorMega_ITEM;
     this.m_sound                =   SND_ArmorMega;
 #endif
+    this.netname                =   "armor_mega";
     this.m_name                 =   "100 Armor";
     this.m_icon                 =   "item_large_armor";
     this.m_color                =   '0 1 0';
@@ -109,5 +152,6 @@ REGISTER_ITEM(ArmorMega, Armor) {
     this.m_respawntime          =   GET(g_pickup_respawntime_long);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
     this.m_pickupanyway         =   GET(g_pickup_armormega_anyway);
+    this.m_iteminit             =   item_armormega_init;
 #endif
 }
index 9366bc4617622bfd0e6ad67e4bd826bcbea5a8e3..cad5a376e753d3cd18cfb997261ed37141072881 100644 (file)
@@ -20,6 +20,15 @@ SOUND(HealthSmall, Item_Sound("minihealth"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_healthsmall_anyway);
+PROPERTY(int, g_pickup_healthsmall);
+PROPERTY(int, g_pickup_healthsmall_max);
+void item_healthsmall_init(entity item)
+{
+    if(!item.max_health)
+        item.max_health = g_pickup_healthsmall_max;
+    if(!item.health)
+        item.health = g_pickup_healthsmall;
+}
 #endif
 
 REGISTER_ITEM(HealthSmall, Health) {
@@ -27,6 +36,7 @@ REGISTER_ITEM(HealthSmall, Health) {
     this.m_model                =   MDL_HealthSmall_ITEM;
     this.m_sound                =   SND_HealthSmall;
 #endif
+    this.netname                =   "health_small";
     this.m_name                 =   "5 Health";
     this.m_icon                 =   "health";
 #ifdef SVQC
@@ -34,6 +44,7 @@ REGISTER_ITEM(HealthSmall, Health) {
     this.m_respawntime          =   GET(g_pickup_respawntime_short);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
     this.m_pickupanyway         =   GET(g_pickup_healthsmall_anyway);
+    this.m_iteminit             =   item_healthsmall_init;
 #endif
 }
 
@@ -43,6 +54,15 @@ SOUND(HealthMedium, Item_Sound("mediumhealth"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_healthmedium_anyway);
+PROPERTY(int, g_pickup_healthmedium);
+PROPERTY(int, g_pickup_healthmedium_max);
+void item_healthmedium_init(entity item)
+{
+    if(!item.max_health)
+        item.max_health = g_pickup_healthmedium_max;
+    if(!item.health)
+        item.health = g_pickup_healthmedium;
+}
 #endif
 
 REGISTER_ITEM(HealthMedium, Health) {
@@ -50,6 +70,7 @@ REGISTER_ITEM(HealthMedium, Health) {
     this.m_model                =   MDL_HealthMedium_ITEM;
     this.m_sound                =   SND_HealthMedium;
 #endif
+    this.netname                =   "health_medium";
     this.m_name                 =   "25 Health";
     this.m_icon                 =   "health";
 #ifdef SVQC
@@ -57,6 +78,7 @@ REGISTER_ITEM(HealthMedium, Health) {
     this.m_respawntime          =   GET(g_pickup_respawntime_short);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_short);
     this.m_pickupanyway         =   GET(g_pickup_healthmedium_anyway);
+    this.m_iteminit             =   item_healthmedium_init;
 #endif
 }
 
@@ -66,6 +88,15 @@ SOUND(HealthBig, Item_Sound("mediumhealth"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_healthbig_anyway);
+PROPERTY(int, g_pickup_healthbig);
+PROPERTY(int, g_pickup_healthbig_max);
+void item_healthbig_init(entity item)
+{
+    if(!item.max_health)
+        item.max_health = g_pickup_healthbig_max;
+    if(!item.health)
+        item.health = g_pickup_healthbig;
+}
 #endif
 
 REGISTER_ITEM(HealthBig, Health) {
@@ -73,6 +104,7 @@ REGISTER_ITEM(HealthBig, Health) {
     this.m_model                =   MDL_HealthBig_ITEM;
     this.m_sound                =   SND_HealthBig;
 #endif
+    this.netname                =   "health_big";
     this.m_name                 =   "50 Health";
     this.m_icon                 =   "health";
     this.m_color                =   '1 0 0';
@@ -82,6 +114,7 @@ REGISTER_ITEM(HealthBig, Health) {
     this.m_respawntime          =   GET(g_pickup_respawntime_medium);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_medium);
     this.m_pickupanyway         =   GET(g_pickup_healthbig_anyway);
+    this.m_iteminit             =   item_healthbig_init;
 #endif
 }
 
@@ -91,6 +124,15 @@ SOUND(HealthMega, Item_Sound("megahealth"));
 #endif
 #ifdef SVQC
 PROPERTY(float, g_pickup_healthmega_anyway);
+PROPERTY(int, g_pickup_healthmega);
+PROPERTY(int, g_pickup_healthmega_max);
+void item_healthmega_init(entity item)
+{
+    if(!item.max_health)
+        item.max_health = g_pickup_healthmega_max;
+    if(!item.health)
+        item.health = g_pickup_healthmega;
+}
 #endif
 
 REGISTER_ITEM(HealthMega, Health) {
@@ -98,6 +140,7 @@ REGISTER_ITEM(HealthMega, Health) {
     this.m_model                =   MDL_HealthMega_ITEM;
     this.m_sound                =   SND_HealthMega;
 #endif
+    this.netname                =   "health_mega";
     this.m_name                 =   "100 Health";
     this.m_icon                 =   "item_mega_health";
     this.m_color                =   '1 0 0';
@@ -109,5 +152,6 @@ REGISTER_ITEM(HealthMega, Health) {
     this.m_respawntime          =   GET(g_pickup_respawntime_long);
     this.m_respawntimejitter    =   GET(g_pickup_respawntimejitter_long);
     this.m_pickupanyway         =   GET(g_pickup_healthmega_anyway);
+    this.m_iteminit             =   item_healthmega_init;
 #endif
 }
index 5093234fbe9ec3de67402133c5b90fdffd965342..a6d1c8dae89751694d03d16bc6f35238eceec0c5 100644 (file)
 MODEL(Jetpack_ITEM, Item_Model("g_jetpack.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_fuel_jetpack);
+void powerup_jetpack_init(entity item)
+{
+    if(!item.ammo_fuel)
+        item.ammo_fuel = g_pickup_fuel_jetpack;
+}
+#endif
 REGISTER_ITEM(Jetpack, Powerup) {
 #ifdef GAMEQC
     this.m_model                =   MDL_Jetpack_ITEM;
     this.m_itemid               =   IT_JETPACK;
 #endif
+    this.netname                =   "jetpack";
     this.m_name                 =   "Jet pack";
     this.m_icon                 =   "jetpack";
     this.m_color                =   '0.5 0.5 0.5';
@@ -28,6 +37,7 @@ REGISTER_ITEM(Jetpack, Powerup) {
 #ifdef SVQC
     this.m_botvalue             =   3000;
     this.m_pickupevalfunc       =   ammo_pickupevalfunc;
+    this.m_iteminit             =   powerup_jetpack_init;
 #endif
 }
 
@@ -35,15 +45,25 @@ REGISTER_ITEM(Jetpack, Powerup) {
 MODEL(JetpackFuel_ITEM, Item_Model("g_fuel.md3"));
 #endif
 
+#ifdef SVQC
+PROPERTY(int, g_pickup_fuel);
+void ammo_fuel_init(entity item)
+{
+    if(!item.ammo_fuel)
+        item.ammo_fuel = g_pickup_fuel;
+}
+#endif
 REGISTER_ITEM(JetpackFuel, Ammo) {
 #ifdef GAMEQC
     this.m_model    =   MDL_JetpackFuel_ITEM;
 #endif
+    this.netname    =   "fuel";
     this.m_name     =   "Fuel";
     this.m_icon     =   "ammo_fuel";
 #ifdef SVQC
     this.m_botvalue =   2000;
     this.m_itemid   =   IT_FUEL;
+    this.m_iteminit =   ammo_fuel_init;
 #endif
 }
 
@@ -55,6 +75,7 @@ REGISTER_ITEM(JetpackRegen, Powerup) {
 #ifdef GAMEQC
     this.m_model                =   MDL_JetpackRegen_ITEM;
 #endif
+    this.netname                =   "fuel_regen";
     this.m_name                 =   "Fuel regenerator";
     this.m_icon                 =   "fuelregen";
     this.m_color                =   '1 0.5 0';
index 26771e68d09e2ef325bdf23cc8ec272ce275e51c..dccd3688644e7b4fac80d5cec18f7ecac1818ff3 100644 (file)
@@ -26,6 +26,7 @@ CLASS(Pickup, GameItem)
     ATTRIB(Pickup, m_model, Model);
     ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP);
 #endif
+    ATTRIB(Pickup, netname, string);
     ATTRIB(Pickup, m_name, string);
     METHOD(Pickup, show, void(Pickup this))
     {
@@ -43,6 +44,7 @@ CLASS(Pickup, GameItem)
     ATTRIB(Pickup, m_respawntime, float());
     ATTRIB(Pickup, m_respawntimejitter, float());
     ATTRIB(Pickup, m_pickupanyway, float());
+    ATTRIB(Pickup, m_iteminit, void(entity item));
     float Item_GiveTo(entity item, entity player);
     METHOD(Pickup, giveTo, bool(Pickup this, entity item, entity player))
     {
index aaec88eeee770536e8bcabd19201d618be410f4f..41b658c2fc5a25afe03eefcaeea7867e07f1a6de 100644 (file)
@@ -22,6 +22,14 @@ MODEL(Strength_ITEM, Item_Model("g_strength.md3"));
 SOUND(Strength, Item_Sound("powerup"));
 #endif
 
+#ifdef SVQC
+float autocvar_g_balance_powerup_strength_time;
+void powerup_strength_init(entity item)
+{
+    if(!item.strength_finished)
+        item.strength_finished = autocvar_g_balance_powerup_strength_time;
+}
+#endif
 REGISTER_ITEM(Strength, Powerup) {
 #ifdef GAMEQC
     this.m_model            =   MDL_Strength_ITEM;
@@ -29,12 +37,16 @@ REGISTER_ITEM(Strength, Powerup) {
     this.m_glow             =   true;
     this.m_respawnsound     =   SND_STRENGTH_RESPAWN;
 #endif
+    this.netname            =   "strength";
     this.m_name             =   "Strength Powerup";
     this.m_icon             =   "strength";
     this.m_color            =   '0 0 1';
     this.m_waypoint         =   _("Strength");
     this.m_waypointblink    =   2;
     this.m_itemid           =   IT_STRENGTH;
+#ifdef SVQC
+    this.m_iteminit         =   powerup_strength_init;
+#endif
 }
 
 #ifdef GAMEQC
@@ -42,6 +54,14 @@ MODEL(Shield_ITEM, Item_Model("g_invincible.md3"));
 SOUND(Shield, Item_Sound("powerup_shield"));
 #endif
 
+#ifdef SVQC
+float autocvar_g_balance_powerup_invincible_time;
+void powerup_shield_init(entity item)
+{
+    if(!item.invincible_finished)
+        item.invincible_finished = autocvar_g_balance_powerup_invincible_time;
+}
+#endif
 REGISTER_ITEM(Shield, Powerup) {
 #ifdef GAMEQC
     this.m_model            =   MDL_Shield_ITEM;
@@ -49,10 +69,14 @@ REGISTER_ITEM(Shield, Powerup) {
     this.m_glow             =   true;
     this.m_respawnsound     =   SND_SHIELD_RESPAWN;
 #endif
+    this.netname            =   "invincible";
     this.m_name             =   "Shield";
     this.m_icon             =   "shield";
     this.m_color            =   '1 0 1';
     this.m_waypoint         =   _("Shield");
     this.m_waypointblink    =   2;
     this.m_itemid           =   IT_INVINCIBLE;
+#ifdef SVQC
+    this.m_iteminit         =   powerup_shield_init;
+#endif
 }
index d9f641d8200316387529a5093f90664a4c95f189..e80f36e1a087542eb7d3ee0c06f5c493c7902d0c 100644 (file)
@@ -14,11 +14,20 @@ MODEL(VaporizerCells_ITEM, Item_Model("a_cells.md3"));
 SOUND(VaporizerCells, Item_Sound("itempickup"));
 #endif
 
+#ifdef SVQC
+int autocvar_g_instagib_ammo_drop;
+void ammo_vaporizercells_init(entity item)
+{
+    if(!item.ammo_cells)
+        item.ammo_cells = autocvar_g_instagib_ammo_drop;
+}
+#endif
 REGISTER_ITEM(VaporizerCells, Ammo) {
 #ifdef GAMEQC
     this.m_model                =   MDL_VaporizerCells_ITEM;
     this.m_sound                =   SND_VaporizerCells;
 #endif
+    this.netname                =   "minst_cells";
     this.m_name                 =   "Vaporizer Ammo";
     this.m_icon                 =   "ammo_supercells";
 #ifdef SVQC
@@ -26,6 +35,7 @@ REGISTER_ITEM(VaporizerCells, Ammo) {
     this.m_itemid               =   IT_CELLS;
     this.m_respawntime          =   GET(instagib_respawntime_ammo);
     this.m_respawntimejitter    =   GET(instagib_respawntimejitter_ammo);
+    this.m_iteminit             =   ammo_vaporizercells_init;
 #endif
 }
 
@@ -39,6 +49,7 @@ REGISTER_ITEM(ExtraLife, Powerup) {
     this.m_model                =   MDL_ExtraLife_ITEM;
     this.m_sound                =   SND_ExtraLife;
 #endif
+    this.netname                =   "health_mega";
     this.m_name                 =   "Extra life";
     this.m_icon                 =   "item_mega_health";
     this.m_color                =   '1 0 0';
@@ -57,6 +68,7 @@ REGISTER_ITEM(Invisibility, Powerup) {
     this.m_model            =   MDL_Invisibility_ITEM;
     this.m_sound            =   SND_Invisibility;
 #endif
+    this.netname            =   "strength";
     this.m_name             =   "Invisibility";
     this.m_icon             =   "strength";
     this.m_color            =   '0 0 1';
@@ -75,6 +87,7 @@ REGISTER_ITEM(Speed, Powerup) {
     this.m_model            =   MDL_Speed_ITEM;
     this.m_sound            =   SND_Speed;
 #endif
+    this.netname            =   "invincible";
     this.m_name             =   "Speed";
     this.m_icon             =   "shield";
     this.m_color            =   '1 0 1';
index af87885713e072943dfefdc2e7dd2eef66975c78..65b7b5256e2bf7193c978b3690a482347fbff2c5 100644 (file)
@@ -1,6 +1,6 @@
 #include "sv_instagib.qh"
 
-int autocvar_g_instagib_ammo_drop;
+//int autocvar_g_instagib_ammo_drop;
 bool autocvar_g_instagib_ammo_convert_cells;
 bool autocvar_g_instagib_ammo_convert_rockets;
 bool autocvar_g_instagib_ammo_convert_shells;
@@ -17,7 +17,6 @@ REGISTER_MUTATOR(mutator_instagib, cvar("g_instagib") && !g_nexball);
 spawnfunc(item_minst_cells)
 {
        if (!g_instagib) { delete(this); return; }
-       if (!this.ammo_cells) this.ammo_cells = autocvar_g_instagib_ammo_drop;
        StartItem(this, ITEM_VaporizerCells);
 }
 
index 2a15b36d187a768ee7b4e97764446a85bf9f9af2..7f31e20d311746958f80082fababa2a9e01ab253 100644 (file)
@@ -133,7 +133,7 @@ void PlayerStats_GameReport_FinalizePlayer(entity p)
        db_put(PS_GR_OUT_DB, sprintf("%s:_playerid", p.playerstats_id), ftos(p.playerid));
 
        if(p.cvar_cl_allow_uid2name == 1 || IS_BOT_CLIENT(p))
-               db_put(PS_GR_OUT_DB, sprintf("%s:_netname", p.playerstats_id), p.netname);
+               db_put(PS_GR_OUT_DB, sprintf("%s:_netname", p.playerstats_id), playername(p, false));
 
        if(teamplay)
                db_put(PS_GR_OUT_DB, sprintf("%s:_team", p.playerstats_id), ftos(p.team));
index f295c1da3eaa092bf1cf4dba4d756b4338369b48..b6f405fec019b5cb8ef6249b3c07a77f02c7fc32 100644 (file)
@@ -1096,6 +1096,9 @@ void _StartItem(entity this, entity def, float defaultrespawntime, float default
        this.item_model_ent = itemmodel;
     this.item_pickupsound_ent = pickupsound;
 
+    if(def.m_iteminit)
+       def.m_iteminit(this);
+
        if(!this.respawntime) // both need to be set
        {
                this.respawntime = defaultrespawntime;
@@ -1352,8 +1355,6 @@ void setItemGroupCount()
 
 spawnfunc(item_rockets)
 {
-       if(!this.ammo_rockets)
-               this.ammo_rockets = g_pickup_rockets;
     StartItem(this, ITEM_Rockets);
 }
 
@@ -1369,22 +1370,16 @@ spawnfunc(item_bullets)
                return;
        }
 
-       if(!this.ammo_nails)
-               this.ammo_nails = g_pickup_nails;
     StartItem(this, ITEM_Bullets);
 }
 
 spawnfunc(item_cells)
 {
-       if(!this.ammo_cells)
-               this.ammo_cells = g_pickup_cells;
        StartItem(this, ITEM_Cells);
 }
 
 spawnfunc(item_plasma)
 {
-       if(!this.ammo_plasma)
-               this.ammo_plasma = g_pickup_plasma;
        StartItem(this, ITEM_Plasma);
 }
 
@@ -1400,80 +1395,46 @@ spawnfunc(item_shells)
                return;
        }
 
-       if(!this.ammo_shells)
-               this.ammo_shells = g_pickup_shells;
        StartItem(this, ITEM_Shells);
 }
 
 spawnfunc(item_armor_small)
 {
-       if(!this.armorvalue)
-               this.armorvalue = g_pickup_armorsmall;
-       if(!this.max_armorvalue)
-               this.max_armorvalue = g_pickup_armorsmall_max;
        StartItem(this, ITEM_ArmorSmall);
 }
 
 spawnfunc(item_armor_medium)
 {
-       if(!this.armorvalue)
-               this.armorvalue = g_pickup_armormedium;
-       if(!this.max_armorvalue)
-               this.max_armorvalue = g_pickup_armormedium_max;
        StartItem(this, ITEM_ArmorMedium);
 }
 
 spawnfunc(item_armor_big)
 {
-       if(!this.armorvalue)
-               this.armorvalue = g_pickup_armorbig;
-       if(!this.max_armorvalue)
-               this.max_armorvalue = g_pickup_armorbig_max;
        StartItem(this, ITEM_ArmorBig);
 }
 
 spawnfunc(item_armor_mega)
 {
-       if(!this.armorvalue)
-               this.armorvalue = g_pickup_armormega;
-       if(!this.max_armorvalue)
-               this.max_armorvalue = g_pickup_armormega_max;
        StartItem(this, ITEM_ArmorMega);
 }
 
 spawnfunc(item_health_small)
 {
-       if(!this.max_health)
-               this.max_health = g_pickup_healthsmall_max;
-       if(!this.health)
-               this.health = g_pickup_healthsmall;
        StartItem(this, ITEM_HealthSmall);
 }
 
 spawnfunc(item_health_medium)
 {
-       if(!this.max_health)
-               this.max_health = g_pickup_healthmedium_max;
-       if(!this.health)
-               this.health = g_pickup_healthmedium;
     StartItem(this, ITEM_HealthMedium);
 }
 
 spawnfunc(item_health_big)
 {
-       if(!this.max_health)
-               this.max_health = g_pickup_healthbig_max;
-       if(!this.health)
-               this.health = g_pickup_healthbig;
        StartItem(this, ITEM_HealthBig);
 }
 
 spawnfunc(item_health_mega)
 {
-    if(!this.max_health)
-        this.max_health = g_pickup_healthmega_max;
-    if(!this.health)
-        this.health = g_pickup_healthmega;
     StartItem(this, ITEM_HealthMega);
 }
 
@@ -1488,16 +1449,12 @@ spawnfunc(item_health100) { spawnfunc_item_health_mega(this); }
 
 spawnfunc(item_strength)
 {
-               if(!this.strength_finished)
-                       this.strength_finished = autocvar_g_balance_powerup_strength_time;
-               StartItem(this, ITEM_Strength);
+       StartItem(this, ITEM_Strength);
 }
 
 spawnfunc(item_invincible)
 {
-               if(!this.invincible_finished)
-                       this.invincible_finished = autocvar_g_balance_powerup_invincible_time;
-               StartItem(this, ITEM_Shield);
+       StartItem(this, ITEM_Shield);
 }
 
 // compatibility:
@@ -1645,8 +1602,6 @@ spawnfunc(target_items)
 
 spawnfunc(item_fuel)
 {
-       if(!this.ammo_fuel)
-               this.ammo_fuel = g_pickup_fuel;
        StartItem(this, ITEM_JetpackFuel);
 }
 
@@ -1662,8 +1617,6 @@ spawnfunc(item_fuel_regen)
 
 spawnfunc(item_jetpack)
 {
-       if(!this.ammo_fuel)
-               this.ammo_fuel = g_pickup_fuel_jetpack;
        if(start_items & ITEM_Jetpack.m_itemid)
        {
                spawnfunc_item_fuel(this);
index 195d5e53481348a3041d8ef783088f6f35c0296e..71bd8c11e9c4865fb3f27b6142a697dca5b0c8aa 100644 (file)
@@ -1,6 +1,7 @@
 // generated file; do not modify
 #include <common/triggers/target/changelevel.qc>
 #include <common/triggers/target/include.qc>
+#include <common/triggers/target/levelwarp.qc>
 #include <common/triggers/target/location.qc>
 #include <common/triggers/target/music.qc>
 #include <common/triggers/target/spawn.qc>
index a5462d497e087000875ca9837d654066ce037075..6b06b75f10ef9c672238ffbd985824be6403a5c9 100644 (file)
@@ -1,6 +1,7 @@
 // generated file; do not modify
 #include <common/triggers/target/changelevel.qh>
 #include <common/triggers/target/include.qh>
+#include <common/triggers/target/levelwarp.qh>
 #include <common/triggers/target/location.qh>
 #include <common/triggers/target/music.qh>
 #include <common/triggers/target/spawn.qh>
index c53ea6d173121365535b4ff3bf1cf63bad848b31..c643e47857374ea95411805f301221e4383ab229 100644 (file)
@@ -1,6 +1,7 @@
 #include "include.qh"
 
 #include "changelevel.qc"
+#include "levelwarp.qc"
 #include "location.qc"
 #include "music.qc"
 #include "spawn.qc"
diff --git a/qcsrc/common/triggers/target/levelwarp.qc b/qcsrc/common/triggers/target/levelwarp.qc
new file mode 100644 (file)
index 0000000..6cef53d
--- /dev/null
@@ -0,0 +1,19 @@
+#include "levelwarp.qh"
+
+#ifdef SVQC
+void target_levelwarp_use(entity this, entity actor, entity trigger)
+{
+       if(!autocvar_g_campaign)
+               return; // only in campaign
+
+       if(this.cnt)
+               CampaignLevelWarp(this.cnt - 1); // specific level
+       else
+               CampaignLevelWarp(-1); // next level
+}
+
+spawnfunc(target_levelwarp)
+{
+       this.use = target_levelwarp_use;
+}
+#endif
diff --git a/qcsrc/common/triggers/target/levelwarp.qh b/qcsrc/common/triggers/target/levelwarp.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
index bc1ac534b0b72c021239913a9c398d1c4d40a4d5..c5c844e918cc4f23986b4eef5eb1d724fb2b61d8 100644 (file)
@@ -78,12 +78,12 @@ float autocvar_g_balance_pause_health_rot_spawn;
 float autocvar_g_balance_portal_health;
 float autocvar_g_balance_portal_lifetime;
 float autocvar_g_balance_powerup_invincible_takedamage;
-float autocvar_g_balance_powerup_invincible_time;
+//float autocvar_g_balance_powerup_invincible_time;
 float autocvar_g_balance_powerup_strength_damage;
 float autocvar_g_balance_powerup_strength_force;
 float autocvar_g_balance_powerup_strength_selfdamage;
 float autocvar_g_balance_powerup_strength_selfforce;
-float autocvar_g_balance_powerup_strength_time;
+//float autocvar_g_balance_powerup_strength_time;
 float autocvar_g_balance_superweapons_time;
 float autocvar_g_balance_selfdamagepercent;
 bool autocvar_g_balance_teams;
index dd1e395c722156026e00d9047a1617eee54b283b..d54feeac84111662ae3d320880b488c38775c902 100644 (file)
@@ -77,13 +77,13 @@ float CheatsAllowed(entity this, float i, float argc, float fr) // the cheat get
 
        // if we get here, player is not allowed to cheat. Log it.
        if(i)
-               bprintf("Player %s^7 tried to use cheat 'impulse %d'\n", this.netname, i);
+               bprintf("Player %s^7 tried to use cheat 'impulse %d'\n", playername(this, false), i);
        else if(argc)
-               bprintf("Player %s^7 tried to use cheat '%s'\n", this.netname, argv(0));
+               bprintf("Player %s^7 tried to use cheat '%s'\n", playername(this, false), argv(0));
        else if(fr)
-               bprintf("Player %s^7 tried to use cheat frame %d\n", this.netname, fr);
+               bprintf("Player %s^7 tried to use cheat frame %d\n", playername(this, false), fr);
        else
-               bprintf("Player %s^7 tried to use an unknown cheat\n", this.netname);
+               bprintf("Player %s^7 tried to use an unknown cheat\n", playername(this, false));
 
        return 0;
 }
index 8c76503bf4802906a18d0b426a8fd041ce25b4ac..3ecac48855e7b0c8a274809c79298758b981dc35 100644 (file)
@@ -653,7 +653,10 @@ void PutClientInServer(entity this)
                for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
                {
                        .entity weaponentity = weaponentities[slot];
+                       entity oldwep = this.(weaponentity);
                        CL_SpawnWeaponentity(this, weaponentity);
+                       if(oldwep && oldwep.owner == this)
+                               this.(weaponentity).m_gunalign = oldwep.m_gunalign;
                }
                this.alpha = default_player_alpha;
                this.colormod = '1 1 1' * autocvar_g_player_brightness;
@@ -1253,7 +1256,8 @@ void ClientDisconnect(entity this)
 
        Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_QUIT_DISCONNECT, this.netname);
 
-       SetSpectatee(this, NULL);
+       if(IS_SPEC(this))
+               SetSpectatee(this, NULL);
 
     MUTATOR_CALLHOOK(ClientDisconnect, this);
 
index a4145abef0b10cfd658667fbadb3b6bf36600563..da9fd8621f171b34aed6ab9ca144b3e0a563fa37 100644 (file)
@@ -242,12 +242,12 @@ void ClientCommand_ready(entity caller, float request)  // todo: anti-spam for t
                                                if (caller.ready)            // toggle
                                                {
                                                        caller.ready = false;
-                                                       bprint(caller.netname, "^2 is ^1NOT^2 ready\n");
+                                                       bprint(playername(caller, false), "^2 is ^1NOT^2 ready\n");
                                                }
                                                else
                                                {
                                                        caller.ready = true;
-                                                       bprint(caller.netname, "^2 is ready\n");
+                                                       bprint(playername(caller, false), "^2 is ready\n");
                                                }
 
                                                // cannot reset the game while a timeout is active!
@@ -537,6 +537,12 @@ void ClientCommand_tell(entity caller, float request, float argc, string command
                {
                        if (argc >= 3)
                        {
+                               if(!IS_CLIENT(caller) && IS_REAL_CLIENT(caller)) // connecting
+                               {
+                                       print_to(caller, "You can't ^2tell^7 a message while connecting.");
+                                       return;
+                               }
+
                                entity tell_to = GetIndexedEntity(argc, 1);
                                float tell_accepted = VerifyClientEntity(tell_to, true, false);
 
index 8c9d915a213a80e31c35fd2c1fcbfb065921c7c1..81dc7772595ab6efa0cd65d687ba6d79c233061a 100644 (file)
@@ -138,8 +138,8 @@ void GameCommand_adminmsg(float request, float argc)
                                                sprint(client, strcat("\{1}\{13}^3", admin_name(), "^7: ", admin_message, "\n"));
                                        }
 
-                                       successful = strcat(successful, (successful ? ", " : ""), client.netname);
-                                       LOG_TRACE("Message sent to ", client.netname);
+                                       successful = strcat(successful, (successful ? ", " : ""), playername(client, false));
+                                       LOG_TRACE("Message sent to ", playername(client, false));
                                        continue;
                                }
 
@@ -542,7 +542,7 @@ void GameCommand_defer_clear(float request, float argc)
                                if (accepted > 0)
                                {
                                        stuffcmd(client, "defer clear\n");
-                                       LOG_INFO("defer clear stuffed to ", client.netname, "\n");
+                                       LOG_INFO("defer clear stuffed to ", playername(client, false), "\n");
                                }
                                else { LOG_INFO("defer_clear: ", GetClientErrorString(accepted, argv(1)), ".\n"); }
 
@@ -1047,11 +1047,11 @@ void GameCommand_moveplayer(float request, float argc)
                                                        if (client.caplayer) client.caplayer = 0;
                                                        PutObserverInServer(client);
 
-                                                       successful = strcat(successful, (successful ? ", " : ""), client.netname);
+                                                       successful = strcat(successful, (successful ? ", " : ""), playername(client, false));
                                                }
                                                else
                                                {
-                                                       LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", client.netname, ") is already spectating.\n");
+                                                       LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") is already spectating.\n");
                                                }
                                                continue;
                                        }
@@ -1071,7 +1071,7 @@ void GameCommand_moveplayer(float request, float argc)
                                                                if (team_id == client.team)  // already on the destination team
                                                                {
                                                                        // keep the forcing undone
-                                                                       LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", client.netname, ") is already on the ", Team_ColoredFullName(client.team), (targets ? "^7, skipping to next player.\n" : "^7.\n"));
+                                                                       LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") is already on the ", Team_ColoredFullName(client.team), (targets ? "^7, skipping to next player.\n" : "^7.\n"));
                                                                        continue;
                                                                }
                                                                else if (team_id == 0)  // auto team
@@ -1100,8 +1100,8 @@ void GameCommand_moveplayer(float request, float argc)
                                                                // If so, lets continue and finally move the player
                                                                client.team_forced = 0;
                                                                MoveToTeam(client, team_id, 6);
-                                                               successful = strcat(successful, (successful ? ", " : ""), client.netname);
-                                                               LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", client.netname, ") has been moved to the ", Team_ColoredFullName(team_id), "^7.\n");
+                                                               successful = strcat(successful, (successful ? ", " : ""), playername(client, false));
+                                                               LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") has been moved to the ", Team_ColoredFullName(team_id), "^7.\n");
                                                                continue;
                                                        }
                                                        else
index adfb0dbee743cd765278697df28ca3877f24e1b7..3f1867758d0adf86bcdb2cf9dc7af04c3207df01 100644 (file)
@@ -47,8 +47,6 @@ float server_is_dedicated;
 .float pain_frame;                     //"
 .float  crouch;        // Crouching or not?
 
-.float strength_finished = _STAT(STRENGTH_FINISHED);
-.float invincible_finished = _STAT(INVINCIBLE_FINISHED);
 .float superweapons_finished = _STAT(SUPERWEAPONS_FINISHED);
 
 .float cnt; // used in too many places
index 9016a22c7c6ebf1aaea01c54aa8e67f4dfbce37c..730a528b9021e3c730d0e8ce599f6be19c3233b1 100644 (file)
@@ -160,35 +160,12 @@ float nearest_length[NUM_NEAREST_ENTITIES];
 
 //#NO AUTOCVARS START
 
-float g_pickup_shells;
 float g_pickup_shells_max;
-float g_pickup_nails;
 float g_pickup_nails_max;
-float g_pickup_rockets;
 float g_pickup_rockets_max;
-float g_pickup_cells;
 float g_pickup_cells_max;
-float g_pickup_plasma;
 float g_pickup_plasma_max;
-float g_pickup_fuel;
-float g_pickup_fuel_jetpack;
 float g_pickup_fuel_max;
-float g_pickup_armorsmall;
-float g_pickup_armorsmall_max;
-float g_pickup_armormedium;
-float g_pickup_armormedium_max;
-float g_pickup_armorbig;
-float g_pickup_armorbig_max;
-float g_pickup_armormega;
-float g_pickup_armormega_max;
-float g_pickup_healthsmall;
-float g_pickup_healthsmall_max;
-float g_pickup_healthmedium;
-float g_pickup_healthmedium_max;
-float g_pickup_healthbig;
-float g_pickup_healthbig_max;
-float g_pickup_healthmega;
-float g_pickup_healthmega_max;
 float g_pickup_weapons_anyway;
 float g_weaponarena;
 WepSet g_weaponarena_weapons;
index 5e581c2bd45a06fca4acf31553599390e491b4ae..067ed02e938064cdd78d354372d4d3873515680f 100644 (file)
@@ -743,10 +743,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc
                        privatemsgprefixlen = strlen(msgstr);
                        msgstr = strcat(msgstr, msgin);
                        cmsgstr = strcat(colorstr, colorprefix, namestr, "^3 tells you:\n^7", msgin);
-                       if(autocvar_g_chat_teamcolors)
-                               privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", playername(privatesay, true), ": ^7");
-                       else
-                               privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", privatesay.netname, ": ^7");
+                       privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", playername(privatesay, autocvar_g_chat_teamcolors), ": ^7");
                }
                else if(teamsay)
                {
@@ -913,6 +910,13 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc
                ret = 1;
        }
 
+       if (privatesay && source && !IS_PLAYER(source))
+       {
+               if (!game_stopped)
+               if ((privatesay && !IS_PLAYER(privatesay)) || (autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !warmup_stage))
+                       ret = -1; // just hide the message completely
+       }
+
        MUTATOR_CALLHOOK(ChatMessage, source, ret);
        ret = M_ARGV(1, int);
 
index b46663043343d7a9e781c75477ecae6b94d4f7cd..eace0ee5995b0b20d42417c20a6dd860105c18d0 100644 (file)
@@ -824,7 +824,7 @@ void Score_NicePrint_Player(entity to, entity p, float w)
 
        sk = p.scorekeeper;
 
-       s = strcat(s, p.netname);
+       s = strcat(s, playername(p, false));
        for (;;)
        {
                i = strlennocol(s) - NAMEWIDTH;
@@ -856,7 +856,7 @@ void Score_NicePrint_Spectators(entity to)
 
 void Score_NicePrint_Spectator(entity to, entity p)
 {
-       print_to(to, strcat("  ", p.netname));
+       print_to(to, strcat("  ", playername(p, false)));
 }
 
 .float score_dummyfield;
index d16bb781b821998383b8be8460745309cb7b4783..7023768219e15fe6fc108ec8e702084e51e8a62d 100644 (file)
@@ -209,7 +209,7 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint)
                LogTeamchange(pl.playerid, pl.team, 3);  // log manual team join
 
                if(!noprint)
-               bprint(pl.netname, "^7 has changed from ", Team_NumberToColoredFullName(s), "^7 to ", Team_NumberToColoredFullName(t), "\n");
+                       bprint(playername(pl, false), "^7 has changed from ", Team_NumberToColoredFullName(s), "^7 to ", Team_NumberToColoredFullName(t), "\n");
        }
 
 }
index 2a4ca8dc3799503498d84f46e5ff13d91adf379c..2a0fad7dee0c832e086d8feb2ff85ea347d7f3d3 100644 (file)
@@ -85,7 +85,7 @@ void W_HitPlotOpen(entity player)
        if(autocvar_g_hitplots || strhasword(autocvar_g_hitplots_individuals, player.netaddress))
        {
                player.hitplotfh = fopen(strcat("hits-", matchid, "-", player.netaddress, "-", ftos(player.playerid), ".plot"), FILE_WRITE);
-               fputs(player.hitplotfh, strcat("#name ", player.netname, "\n"));
+               fputs(player.hitplotfh, strcat("#name ", playername(player, false), "\n"));
        }
        else { player.hitplotfh = -1; }
 }