]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/miscfunctions.qc
Fix %W in chat messages again...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / miscfunctions.qc
index e88ef02abb43ecd506693d2a964a03d26f195b7c..a546a6714d3b9afd441bad4a46d0c59b28316beb 100644 (file)
@@ -217,6 +217,21 @@ string NearestLocation(vector p)
     return ret;
 }
 
+string AmmoNameFromWeaponentity(entity wpn)
+{
+       string ammoitems = "batteries";
+       switch((wpn.m_weapon).ammo_field)
+       {
+               case ammo_shells:  ammoitems = ITEM_Shells.m_name;      break;
+               case ammo_nails:   ammoitems = ITEM_Bullets.m_name;     break;
+               case ammo_rockets: ammoitems = ITEM_Rockets.m_name;     break;
+               case ammo_cells:   ammoitems = ITEM_Cells.m_name;       break;
+               case ammo_plasma:  ammoitems = ITEM_Plasma.m_name;      break;
+               case ammo_fuel:    ammoitems = ITEM_JetpackFuel.m_name; break;
+       }
+       return ammoitems;
+}
+
 string formatmessage(entity this, string msg)
 {
        float p, p1, p2;
@@ -225,16 +240,9 @@ string formatmessage(entity this, string msg)
        entity cursor_ent;
        string escape;
        string replacement;
-       string ammoitems;
        p = 0;
        n = 7;
 
-       ammoitems = "batteries";
-       if(this.items & ITEM_Plasma.m_itemid) ammoitems = ITEM_Plasma.m_name;
-       if(this.items & ITEM_Cells.m_itemid) ammoitems = ITEM_Cells.m_name;
-       if(this.items & ITEM_Rockets.m_itemid) ammoitems = ITEM_Rockets.m_name;
-       if(this.items & ITEM_Shells.m_itemid) ammoitems = ITEM_Shells.m_name;
-
        WarpZone_crosshair_trace(this);
        cursor = trace_endpos;
        cursor_ent = trace_ent;
@@ -277,7 +285,7 @@ string formatmessage(entity this, string msg)
                        case "y": replacement = NearestLocation(cursor); break;
                        case "d": replacement = NearestLocation(this.death_origin); break;
                        case "w": replacement = ((this.(weaponentity).m_weapon == WEP_Null) ? ((this.(weaponentity).m_switchweapon == WEP_Null) ? Weapons_from(this.(weaponentity).cnt) : this.(weaponentity).m_switchweapon) : this.(weaponentity).m_weapon).m_name; break;
-                       case "W": replacement = ammoitems; break;
+                       case "W": replacement = AmmoNameFromWeaponentity(this.(weaponentity)); break;
                        case "x": replacement = ((cursor_ent.netname == "" || !cursor_ent) ? "nothing" : cursor_ent.netname); break;
                        case "s": replacement = ftos(vlen(this.velocity - this.velocity_z * '0 0 1')); break;
                        case "S": replacement = ftos(vlen(this.velocity)); break;
@@ -566,6 +574,15 @@ void readplayerstartcvars()
                                g_weaponarena_weapons |= (it.m_wepset);
                ));
        }
+       else if (s == "devall")
+       {
+               g_weaponarena = 1;
+               g_weaponarena_list = "All Weapons"; // TODO: report as more than just all weapons?
+               FOREACH(Weapons, it != WEP_Null,
+               {
+                       g_weaponarena_weapons |= (it.m_wepset);
+               });
+       }
        else if (s == "most")
        {
                g_weaponarena = 1;