]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/items.qc
Merge branch 'master' into divVerent/4team_ctf
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / items.qc
index 5387c05aae1cac4d2d26d1aae4172536be840326..c961895d95c157aac7ad2439541f9babbd82f557 100644 (file)
@@ -8,7 +8,7 @@ void register_weapon(float id, float(float) func, float ammotype, float i, float
        weapon_info[id - 1] = e = spawn();
        e.classname = "weapon_info";
        e.weapon = id;
-       e.weapons = power2of(id - WEP_FIRST);
+       WEPSET_COPY_EW(e, id);
        e.netname = shortname;
        e.message = wname;
        e.items = ammotype;
@@ -19,6 +19,18 @@ void register_weapon(float id, float(float) func, float ammotype, float i, float
        e.model2 = strzone(strcat("wpn-", e.mdl));
        e.impulse = i;
        e.bot_pickupbasevalue = pickupbasevalue;
+       if(ammotype & IT_SHELLS)
+               e.ammo_field = ammo_shells;
+       else if(ammotype & IT_NAILS)
+               e.ammo_field = ammo_nails;
+       else if(ammotype & IT_ROCKETS)
+               e.ammo_field = ammo_rockets;
+       else if(ammotype & IT_CELLS)
+               e.ammo_field = ammo_cells;
+       else if(ammotype & IT_FUEL)
+               e.ammo_field = ammo_fuel;
+       else
+               e.ammo_field = ammo_batteries;
 }
 float w_null(float dummy)
 {
@@ -29,9 +41,9 @@ void register_weapons_done()
        dummy_weapon_info = spawn();
        dummy_weapon_info.classname = "weapon_info";
        dummy_weapon_info.weapon = 0; // you can recognize dummies by this
-       dummy_weapon_info.weapons = 0; // you can recognize dummies by this too
+       WEPSET_CLEAR_E(dummy_weapon_info);
        dummy_weapon_info.netname = "";
-       dummy_weapon_info.message = "@!#%'n Tuba";
+       dummy_weapon_info.message = "AOL CD Thrower";
        dummy_weapon_info.items = 0;
        dummy_weapon_info.weapon_func = w_null;
        dummy_weapon_info.mdl = "";
@@ -142,3 +154,31 @@ string W_FixWeaponOrder_ForceComplete(string order)
        return W_FixWeaponOrder(order, 1);
 }
 
+void W_RandomWeapons(entity e, float n)
+{
+       float i, j;
+       WEPSET_DECLARE_A(remaining);
+       WEPSET_DECLARE_A(result);
+       WEPSET_COPY_AE(remaining, e);
+       WEPSET_CLEAR_A(result);
+       for(i = 0; i < n; ++i)
+       {
+               RandomSelection_Init();
+               for(j = WEP_FIRST; j <= WEP_LAST; ++j)
+                       if(WEPSET_CONTAINS_AW(remaining, j))
+                               RandomSelection_Add(world, j, string_null, 1, 1);
+               WEPSET_OR_AW(result, RandomSelection_chosen_float);
+               WEPSET_ANDNOT_AW(remaining, RandomSelection_chosen_float);
+       }
+       WEPSET_COPY_EA(e, result);
+}
+
+string W_Name(float weaponid)
+{
+       return (get_weaponinfo(weaponid)).message;
+}
+
+float W_AmmoItemCode(float wpn)
+{
+       return (get_weaponinfo(wpn)).items & IT_AMMO;
+}