#ifndef MENUQC
#include "calculations.qh"
+#include "../models/models.qh"
#endif
#include "../util.qh"
+
#ifdef SVQC
#include "../../server/bot/aim.qh"
#endif
+
const int MAX_SHOT_DISTANCE = 32768;
// weapon pickup ratings for bot logic
void WepSet_AddStat_InMap();
void WriteWepSet(float dest, WepSet w);
#endif
+
#ifdef CSQC
WepSet WepSet_GetFromStat();
WepSet WepSet_GetFromStat_InMap();
ATTRIB(Weapon, wpmodel, string, "");
/** M: modelname : name of model (without g_ v_ or h_ prefixes) */
ATTRIB(Weapon, mdl, string, "");
- /** A: modelname : full path to g_ model */
- ATTRIB(Weapon, model, string, "");
+ /** M: model MDL_id_ITEM */
+ ATTRIB(Weapon, m_model, entity, NULL);
/** M: simplemdl : simpleitems weapon model/image */
ATTRIB(Weapon, w_simplemdl, string, "foobar");
/** M: crosshair : per-weapon crosshair: "CrosshairImage Size" */
float pickupbasevalue,
vector clr,
string modelname,
+ entity m,
string simplemdl,
string crosshair,
string wepimg,
this.bot_pickupbasevalue = pickupbasevalue;
this.wpcolor = clr;
this.mdl = modelname;
- this.model = strzone(W_Model(strcat("g_", modelname, ".md3")));
+ this.m_model = m;
this.w_simplemdl = strzone(simplemdl); // simpleitems weapon model/image
this.w_crosshair = strzone(car(crosshair));
string s = cdr(crosshair);
} \
REGISTER_INIT(WEP, id)
-#define _REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname) \
- REGISTER_WEAPON_2(id, NEW(Weapon, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname))
+#define _REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, mdl, simplemdl, crosshair, wepimg, refname, wepname) \
+ REGISTER_WEAPON_2(id, NEW(Weapon, function, ammotype, impulse, flags, rating, color, modelname, mdl, simplemdl, crosshair, wepimg, refname, wepname))
#ifndef MENUQC
- #define REGISTER_WEAPON_13(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname) \
+ #define REGISTER_WEAPON_14(id, function, ammotype, impulse, flags, rating, color, modelname, mdl, simplemdl, crosshair, wepimg, refname, wepname) \
bool function(entity this, int); \
- _REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname)
+ _REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, mdl, simplemdl, crosshair, wepimg, refname, wepname)
#else
- #define REGISTER_WEAPON_13(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname) \
- _REGISTER_WEAPON(id, w_new, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname)
+ #define REGISTER_WEAPON_14(id, function, ammotype, impulse, flags, rating, color, modelname, mdl, simplemdl, crosshair, wepimg, refname, wepname) \
+ _REGISTER_WEAPON(id, w_new, ammotype, impulse, flags, rating, color, modelname, NULL, simplemdl, crosshair, wepimg, refname, wepname)
#endif
#include "all.inc"
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '1 1 1',
/* modelname */ "arc",
+/* model */ MDL_ARC_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairhlac 0.7",
/* wepimg */ "weaponarc",
/* rating */ 0,
/* color */ '1 0.5 0.5',
/* modelname */ "laser",
+/* model */ MDL_BLASTER_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairlaser 0.5",
/* wepimg */ "weaponlaser",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '1 0.5 1',
/* modelname */ "crylink",
+/* model */ MDL_CRYLINK_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshaircrylink 0.5",
/* wepimg */ "weaponcrylink",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '1 1 0',
/* modelname */ "rl",
+/* model */ MDL_DEVASTATOR_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairrocketlauncher 0.7",
/* wepimg */ "weaponrocketlauncher",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '0 0.5 1',
/* modelname */ "electro",
+/* model */ MDL_ELECTRO_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairelectro 0.6",
/* wepimg */ "weaponelectro",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '1 0.5 0',
/* modelname */ "fireball",
+/* model */ MDL_FIREBALL_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairfireball",
/* wepimg */ "weaponfireball",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '1 1 0.5',
/* modelname */ "hagar",
+/* model */ MDL_HAGAR_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairhagar 0.8",
/* wepimg */ "weaponhagar",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '0 1 0',
/* modelname */ "hlac",
+/* model */ MDL_HLAC_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairhlac 0.6",
/* wepimg */ "weaponhlac",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '0.5 0.5 0',
/* modelname */ "ok_hmg",
+/* model */ MDL_HMG_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairuzi 0.6",
/* wepimg */ "weaponhmg",
/* rating */ 0,
/* color */ '0 0.5 0',
/* modelname */ "hookgun",
+/* model */ MDL_HOOK_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairhook 0.5",
/* wepimg */ "weaponhook",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '1 1 0',
/* modelname */ "uzi",
+/* model */ MDL_MACHINEGUN_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairuzi 0.6",
/* wepimg */ "weaponuzi",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '0.75 1 0',
/* modelname */ "minelayer",
+/* model */ MDL_MINELAYER_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairminelayer 0.9",
/* wepimg */ "weaponminelayer",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '1 0 0',
/* modelname */ "gl",
+/* model */ MDL_MORTAR_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairgrenadelauncher 0.7",
/* wepimg */ "weapongrenadelauncher",
/* rating */ ATTRIB(PortoLaunch, bot_pickupbasevalue, float, 0);
/* color */ ATTRIB(PortoLaunch, wpcolor, vector, '0.5 0.5 0.5');
/* modelname */ ATTRIB(PortoLaunch, mdl, string, "porto");
-/* model */ ATTRIB(PortoLaunch, model, string, strzone(W_Model(strcat("g_", this.mdl, ".md3"))));
+#ifndef MENUQC
+/* model */ ATTRIB(PortoLaunch, m_model, Model, MDL_PORTO_ITEM);
+#endif
/* simplemdl */ ATTRIB(PortoLaunch, w_simplemdl, string, "foobar");
/* crosshair */ ATTRIB(PortoLaunch, w_crosshair, string, "gfx/crosshairporto");
/* crosshair */ ATTRIB(PortoLaunch, w_crosshair_size, float, 0.6);
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '0.5 1 0',
/* modelname */ "campingrifle",
+/* model */ MDL_RIFLE_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairrifle 0.6",
/* wepimg */ "weaponrifle",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '0.5 0.5 0',
/* modelname */ "ok_rl",
+/* model */ MDL_RPC_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairrocketlauncher 0.7",
/* wepimg */ "weaponrpc",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '0.5 1 0',
/* modelname */ "seeker",
+/* model */ MDL_SEEKER_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairseeker 0.8",
/* wepimg */ "weaponseeker",
/* rating */ BOT_PICKUP_RATING_LOW,
/* color */ '0.5 0.25 0',
/* modelname */ "shotgun",
+/* model */ MDL_SHOCKWAVE_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairshotgun 0.7",
/* wepimg */ "weaponshotgun",
/* rating */ BOT_PICKUP_RATING_LOW,
/* color */ '0.5 0.25 0',
/* modelname */ "shotgun",
+/* model */ MDL_SHOTGUN_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairshotgun 0.65",
/* wepimg */ "weaponshotgun",
/* rating */ BOT_PICKUP_RATING_MID,
/* color */ '0 1 0',
/* modelname */ "tuba",
+/* model */ MDL_TUBA_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairtuba",
/* wepimg */ "weapontuba",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '0.5 1 1',
/* modelname */ "minstanex",
+/* model */ MDL_VAPORIZER_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairminstanex 0.6",
/* wepimg */ "weaponminstanex",
/* rating */ BOT_PICKUP_RATING_HIGH,
/* color */ '0.5 1 1',
/* modelname */ "nex",
+/* model */ MDL_VORTEX_ITEM,
/* simplemdl */ "foobar",
/* crosshair */ "gfx/crosshairnex 0.65",
/* wepimg */ "weaponnex",
if(self.team)
f |= FL_NO_WEAPON_STAY;
- StartItem(e.model, string_null, self.respawntime, self.respawntimejitter, e.message, 0, e.weapon, f, weapon_pickupevalfunc, e.bot_pickupbasevalue);
+ StartItem(strzone(e.m_model.model_str()), string_null, self.respawntime, self.respawntimejitter, e.message, 0, e.weapon, f, weapon_pickupevalfunc, e.bot_pickupbasevalue);
self.item_pickupsound_ent = SND_WEAPONPICKUP;
#if 0 // WEAPONTODO
if (self.modelindex) // don't precache if self was removed