+#ifndef WEAPONS_C
+#define WEAPONS_C
+
+#include "weapons.qh"
+
+#if defined(CSQC)
+ #include "../../dpdefs/csprogsdefs.qh"
+ #include "../../client/defs.qh"
+ #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 "../../client/autocvars.qh"
+ #include "../deathtypes.qh"
+ #include "../../csqcmodellib/interpolate.qh"
+ #include "../movetypes/movetypes.qh"
+ #include "../../client/main.qh"
+ #include "../../csqcmodellib/cl_model.qh"
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #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"
+ #include "../constants.qh"
+ #include "../stats.qh"
+ #include "../teams.qh"
+ #include "../util.qh"
+ #include "../buffs.qh"
+ #include "../monsters/monsters.qh"
+ #include "config.qh"
+ #include "../../server/weapons/csqcprojectile.qh"
+ #include "../../server/weapons/tracing.qh"
+ #include "../../server/t_items.qh"
+ #include "../../server/autocvars.qh"
+ #include "../../server/constants.qh"
+ #include "../../server/defs.qh"
+ #include "../notifications.qh"
+ #include "../deathtypes.qh"
+ #include "../../server/mutators/mutators_include.qh"
+ #include "../mapinfo.qh"
+ #include "../../server/command/common.qh"
+ #include "../../csqcmodellib/sv_model.qh"
+ #include "../../server/portals.qh"
+ #include "../../server/g_hook.qh"
+#endif
#ifndef MENUQC
#include "calculations.qc"
#endif
#elif WEP_MAXCOUNT > 24
WriteInt48_t(dst, w);
#else
- WriteInt24_t(dst, w_x);
+ WriteInt24_t(dst, w.x);
#endif
}
#endif
WepSet WepSet_GetFromStat()
{
WepSet w = '0 0 0';
- w_x = getstati(STAT_WEAPONS);
+ w.x = getstati(STAT_WEAPONS);
#if WEP_MAXCOUNT > 24
- w_y = getstati(STAT_WEAPONS2);
+ w.y = getstati(STAT_WEAPONS2);
#if WEP_MAXCOUNT > 48
- w_z = getstati(STAT_WEAPONS3);
+ w.z = getstati(STAT_WEAPONS3);
#endif
#endif
return w;
#endif
void register_weapon(
- float id,
+ int id,
WepSet bit,
float(float) func,
.float ammotype,
e.netname = refname;
e.message = wepname;
- #ifndef MENUQC
+ #ifdef CSQC
func(WR_INIT);
#endif
}
dummy_weapon_info.w_crosshair_size = 1;
dummy_weapon_info.model2 = "";
- float i;
+ int i;
weaponorder_byid = "";
for(i = WEP_MAXCOUNT; i >= 1; --i)
if(weapon_info[i-1])
weaponorder_byid = strcat(weaponorder_byid, " ", ftos(i));
weaponorder_byid = strzone(substring(weaponorder_byid, 1, strlen(weaponorder_byid) - 1));
}
-entity get_weaponinfo(float id)
+entity get_weaponinfo(int id)
{
entity w;
if(id < WEP_FIRST || id > WEP_LAST)
}
return s;
}
+
+string W_UndeprecateName(string s)
+{
+ switch ( s )
+ {
+ case "nex" : return "vortex";
+ case "rocketlauncher" : return "devastator";
+ case "laser" : return "blaster";
+ case "minstanex" : return "vaporizer";
+ case "grenadelauncher": return "mortar";
+ case "uzi" : return "machinegun";
+ default : return s;
+ }
+}
string W_NameWeaponOrder(string order)
{
return mapPriorityList(order, W_NameWeaponOrder_MapFunc);
float i;
if(s == "0" || stof(s))
return s;
+ s = W_UndeprecateName(s);
for(i = WEP_FIRST; i <= WEP_LAST; ++i)
if(s == get_weaponinfo(i).netname)
return ftos(i);
float W_FixWeaponOrder_BuildImpulseList_buf[WEP_MAXCOUNT];
string W_FixWeaponOrder_BuildImpulseList_order;
-void W_FixWeaponOrder_BuildImpulseList_swap(float i, float j, entity pass)
+void W_FixWeaponOrder_BuildImpulseList_swap(int i, int j, entity pass)
{
float h;
h = W_FixWeaponOrder_BuildImpulseList_buf[i];
W_FixWeaponOrder_BuildImpulseList_buf[i] = W_FixWeaponOrder_BuildImpulseList_buf[j];
W_FixWeaponOrder_BuildImpulseList_buf[j] = h;
}
-float W_FixWeaponOrder_BuildImpulseList_cmp(float i, float j, entity pass)
+float W_FixWeaponOrder_BuildImpulseList_cmp(int i, int j, entity pass)
{
entity e1, e2;
float d;
e1 = get_weaponinfo(W_FixWeaponOrder_BuildImpulseList_buf[i]);
e2 = get_weaponinfo(W_FixWeaponOrder_BuildImpulseList_buf[j]);
- d = mod(e1.impulse + 9, 10) - mod(e2.impulse + 9, 10);
+ d = (e1.impulse + 9) % 10 - (e2.impulse + 9) % 10;
if(d != 0)
return -d; // high impulse first!
return
}
string W_FixWeaponOrder_BuildImpulseList(string o)
{
- float i;
+ int i;
W_FixWeaponOrder_BuildImpulseList_order = o;
for(i = WEP_FIRST; i <= WEP_LAST; ++i)
W_FixWeaponOrder_BuildImpulseList_buf[i - WEP_FIRST] = i;
e.weapons = result;
}
-#ifdef CSQC
-.float GetAmmoFieldFromNum(float i)
-{
- switch(i)
- {
- case 0: return ammo_shells;
- case 1: return ammo_nails;
- case 2: return ammo_rockets;
- case 3: return ammo_cells;
- case 4: return ammo_fuel;
- default: return ammo_none;
- }
-}
-
string GetAmmoPicture(.float ammotype)
{
switch(ammotype)
{
case ammo_shells: return "ammo_shells";
- case ammo_nails: return "ammo_nails";
+ case ammo_nails: return "ammo_bullets";
case ammo_rockets: return "ammo_rockets";
case ammo_cells: return "ammo_cells";
+ case ammo_plasma: return "ammo_cells";
case ammo_fuel: return "ammo_fuel";
default: return ""; // wtf, no ammo type?
}
}
-float GetAmmoStat(.float ammotype)
+#ifdef CSQC
+.float GetAmmoFieldFromNum(int i)
+{
+ switch(i)
+ {
+ case 0: return ammo_shells;
+ case 1: return ammo_nails;
+ case 2: return ammo_rockets;
+ case 3: return ammo_cells;
+ case 4: return ammo_plasma;
+ case 5: return ammo_fuel;
+ default: return ammo_none;
+ }
+}
+
+int GetAmmoStat(.float ammotype)
{
switch(ammotype)
{
case ammo_nails: return STAT_NAILS;
case ammo_rockets: return STAT_ROCKETS;
case ammo_cells: return STAT_CELLS;
+ case ammo_plasma: return STAT_PLASMA;
case ammo_fuel: return STAT_FUEL;
default: return -1;
}
}
#endif
+#endif