]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/all.qc
Buffs: rename registry globals
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / all.qc
index 9f78f6454852d09e390a7e1b44839e3d48b167df..2c72d380fcc8db9274203062ce8685de3882fad6 100644 (file)
@@ -9,11 +9,10 @@
        #include "../constants.qh"
        #include "../stats.qh"
        #include "../../warpzonelib/anglestransform.qh"
-       #include "../../warpzonelib/mathlib.qh"
        #include "../../warpzonelib/common.qh"
        #include "../../warpzonelib/client.qh"
        #include "../util.qh"
-       #include "../buffs.qh"
+       #include "../buffs/all.qh"
        #include "../../client/autocvars.qh"
        #include "../deathtypes.qh"
        #include "../../csqcmodellib/interpolate.qh"
@@ -25,7 +24,6 @@
        #include "../../dpdefs/progsdefs.qh"
     #include "../../dpdefs/dpextensions.qh"
     #include "../../warpzonelib/anglestransform.qh"
-    #include "../../warpzonelib/mathlib.qh"
     #include "../../warpzonelib/common.qh"
     #include "../../warpzonelib/util_server.qh"
     #include "../../warpzonelib/server.qh"
@@ -33,7 +31,7 @@
     #include "../stats.qh"
     #include "../teams.qh"
     #include "../util.qh"
-    #include "../buffs.qh"
+    #include "../buffs/all.qh"
     #include "../monsters/all.qh"
     #include "config.qh"
     #include "../../server/weapons/csqcprojectile.qh"
 
 // WEAPON PLUGIN SYSTEM
 
-#if WEP_MAXCOUNT > 72
-# error Kein Weltraum links auf dem Gerät
-#endif
-
 WepSet WepSet_FromWeapon(int a) {
        a -= WEP_FIRST;
-#if WEP_MAXCOUNT > 24
-       if(a >= 24) {
+       if (Weapons_MAX > 24)
+       if (a >= 24) {
                a -= 24;
-#if WEP_MAXCOUNT > 48
-               if(a >= 24) {
+               if (Weapons_MAX > 48)
+               if (a >= 24) {
                        a -= 24;
                        return '0 0 1' * power2of(a);
                }
-#endif
                return '0 1 0' * power2of(a);
        }
-#endif
        return '1 0 0' * power2of(a);
 }
 #ifdef SVQC
 void WepSet_AddStat()
 {
        addstat(STAT_WEAPONS, AS_INT, weapons_x);
-#if WEP_MAXCOUNT > 24
+       if (Weapons_MAX > 24)
        addstat(STAT_WEAPONS2, AS_INT, weapons_y);
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        addstat(STAT_WEAPONS3, AS_INT, weapons_z);
-#endif
-#endif
 }
 void WepSet_AddStat_InMap()
 {
        addstat(STAT_WEAPONSINMAP, AS_INT, weaponsinmap_x);
-#if WEP_MAXCOUNT > 24
+       if (Weapons_MAX > 24)
        addstat(STAT_WEAPONSINMAP2, AS_INT, weaponsinmap_y);
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        addstat(STAT_WEAPONSINMAP3, AS_INT, weaponsinmap_z);
-#endif
-#endif
 }
 void WriteWepSet(float dst, WepSet w)
 {
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        WriteInt72_t(dst, w);
-#elif WEP_MAXCOUNT > 24
+       else if (Weapons_MAX > 24)
        WriteInt48_t(dst, w);
-#else
+       else
        WriteInt24_t(dst, w.x);
-#endif
 }
 #endif
 #ifdef CSQC
@@ -117,61 +104,35 @@ WepSet WepSet_GetFromStat()
 {
        WepSet w = '0 0 0';
        w.x = getstati(STAT_WEAPONS);
-#if WEP_MAXCOUNT > 24
+       if (Weapons_MAX > 24)
        w.y = getstati(STAT_WEAPONS2);
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        w.z = getstati(STAT_WEAPONS3);
-#endif
-#endif
        return w;
 }
 WepSet WepSet_GetFromStat_InMap()
 {
        WepSet w = '0 0 0';
        w_x = getstati(STAT_WEAPONSINMAP);
-#if WEP_MAXCOUNT > 24
+       if (Weapons_MAX > 24)
        w_y = getstati(STAT_WEAPONSINMAP2);
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        w_z = getstati(STAT_WEAPONSINMAP3);
-#endif
-#endif
        return w;
 }
 WepSet ReadWepSet()
 {
-#if WEP_MAXCOUNT > 48
+       if (Weapons_MAX > 48)
        return ReadInt72_t();
-#elif WEP_MAXCOUNT > 24
+       if (Weapons_MAX > 24)
        return ReadInt48_t();
-#else
        return ReadInt24_t() * '1 0 0';
-#endif
 }
 #endif
 
-void register_weapons_done()
-{
-       dummy_weapon_info = NEW(Weapon);
-
-       weaponorder_byid = "";
-       for (int i = WEP_MAXCOUNT - 1; i >= 0; --i)
-               if (weapon_info[i])
-                       weaponorder_byid = strcat(weaponorder_byid, " ", ftos(i));
-       weaponorder_byid = strzone(substring(weaponorder_byid, 1, strlen(weaponorder_byid) - 1));
-}
-entity get_weaponinfo(int id)
-{
-       entity w;
-       if(id < WEP_FIRST || id > WEP_LAST)
-               return dummy_weapon_info;
-       w = weapon_info[id - 1];
-       if(w)
-               return w;
-       return dummy_weapon_info;
-}
 string W_FixWeaponOrder(string order, float complete)
 {
-       return fixPriorityList(order, WEP_FIRST, WEP_LAST, 230 - WEP_FIRST, complete);
+       return fixPriorityList(order, WEP_FIRST, WEP_LAST, WEP_IMPULSE_BEGIN - WEP_FIRST, complete);
 }
 string W_NameWeaponOrder_MapFunc(string s)
 {
@@ -179,7 +140,7 @@ string W_NameWeaponOrder_MapFunc(string s)
        if(s == "0" || stof(s))
        {
                wi = get_weaponinfo(stof(s));
-               if(wi != dummy_weapon_info)
+               if(wi != WEP_Null)
                        return wi.netname;
        }
        return s;
@@ -218,7 +179,7 @@ string W_NumberWeaponOrder(string order)
        return mapPriorityList(order, W_NumberWeaponOrder_MapFunc);
 }
 
-float W_FixWeaponOrder_BuildImpulseList_buf[WEP_MAXCOUNT];
+float W_FixWeaponOrder_BuildImpulseList_buf[Weapons_MAX];
 string W_FixWeaponOrder_BuildImpulseList_order;
 void W_FixWeaponOrder_BuildImpulseList_swap(int i, int j, entity pass)
 {
@@ -291,12 +252,12 @@ string GetAmmoPicture(.int ammotype)
 {
        switch (ammotype)
        {
-               case ammo_shells:  return ITEM_Shells.m_ammoPic;
-               case ammo_nails:   return ITEM_Bullets.m_ammoPic;
-               case ammo_rockets: return ITEM_Rockets.m_ammoPic;
-               case ammo_cells:   return ITEM_Cells.m_ammoPic;
-               case ammo_plasma:  return ITEM_Plasma.m_ammoPic;
-               case ammo_fuel:    return ITEM_JetpackFuel.m_ammoPic;
+               case ammo_shells:  return ITEM_Shells.m_icon;
+               case ammo_nails:   return ITEM_Bullets.m_icon;
+               case ammo_rockets: return ITEM_Rockets.m_icon;
+               case ammo_cells:   return ITEM_Cells.m_icon;
+               case ammo_plasma:  return ITEM_Plasma.m_icon;
+               case ammo_fuel:    return ITEM_JetpackFuel.m_icon;
                default: return ""; // wtf, no ammo type?
        }
 }
@@ -330,4 +291,36 @@ int GetAmmoStat(.int ammotype)
        }
 }
 #endif
+
+string W_Sound(string w_snd)
+{
+       #define extensions(X) X(wav) X(ogg)
+       #define tryext(ext) { if (fexists(strcat("sound/", output = strcat("weapons/", w_snd, "."#ext)))) break; }
+       string output;
+       do {
+               extensions(tryext);
+               #undef tryext
+               #undef extensions
+               output = strcat("weapons/", w_snd);
+       } while (0);
+
+#ifdef SVQC
+       MUTATOR_CALLHOOK(WeaponSound, w_snd, output);
+       return weapon_sound_output;
+#else
+       return output;
+#endif
+}
+
+string W_Model(string w_mdl)
+{
+       string output = strcat("models/weapons/", w_mdl);
+#ifdef SVQC
+       MUTATOR_CALLHOOK(WeaponModel, w_mdl, output);
+       return weapon_model_output;
+#else
+       return output;
+#endif
+}
+
 #endif