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 0 0';
- dummy_weapon_info.netname = "";
- dummy_weapon_info.message = "AOL CD Thrower";
- dummy_weapon_info.weapon_func = w_null;
- dummy_weapon_info.wpmodel = "";
- dummy_weapon_info.mdl = "";
- dummy_weapon_info.model = "";
- dummy_weapon_info.spawnflags = 0;
- dummy_weapon_info.impulse = -1;
- dummy_weapon_info.bot_pickupbasevalue = 0;
- dummy_weapon_info.ammo_field = ammo_none;
-
- dummy_weapon_info.w_crosshair = "gfx/crosshair1";
- dummy_weapon_info.w_crosshair_size = 1;
- dummy_weapon_info.model2 = "";
+ dummy_weapon_info = NEW(Weapon);
weaponorder_byid = "";
for (int i = WEP_MAXCOUNT - 1; i >= 0; --i)
// Weapon Registration
// =====================
+bool w_null(int) { return false; }
+
+/** fields which are explicitly/manually set are marked with "M", fields set automatically are marked with "A" */
CLASS(Weapon, Object)
ATTRIB(Weapon, m_id, int, 0)
- // entity properties of weaponinfo:
- // fields which are explicitly/manually set are marked with "M", fields set automatically are marked with "A"
- .int weapon; // M: WEP_id // WEP_...
- .WepSet weapons; // A: WEPSET_id // WEPSET_...
- .float(float) weapon_func; // M: function // w_...
- ..int ammo_field; // M: ammotype // main ammo field
- .int impulse; // M: impulse // weapon impulse
- .int spawnflags; // M: flags // WEPSPAWNFLAG_... combined
- .float bot_pickupbasevalue; // M: rating // bot weapon priority
- .vector wpcolor; // M: color // waypointsprite color
- .string wpmodel; // A: wpn-id // wpn- sprite name
- .string mdl; // M: modelname // name of model (without g_ v_ or h_ prefixes)
- .string model; // A: modelname // full path to g_ model
- .string w_simplemdl; // M: simplemdl // simpleitems weapon model/image
- .string w_crosshair; // M: crosshair // per-weapon crosshair: "CrosshairImage Size"
- .float w_crosshair_size; // A: crosshair // per-weapon crosshair size (argument two of "crosshair" field)
- .string model2; // M: wepimg // "weaponfoobar" side view image file of weapon // WEAPONTODO: Move out of skin files, move to common files
- .string netname; // M: refname // reference name name
- .string message; // M: wepname // human readable name
+ /**
+ * M: WEP_id : WEP_...
+ * you can recognize dummies when this == 0
+ */
+ ATTRIB(Weapon, weapon, int, 0);
+ /** A: WEPSET_id : WEPSET_... */
+ ATTRIB(Weapon, weapons, WepSet, '0 0 0');
+ /** M: function : w_... */
+ ATTRIB(Weapon, weapon_func, bool(int), w_null);
+ /** M: ammotype : main ammo field */
+ ATTRIB(Weapon, ammo_field, .int, ammo_none);
+ /** M: impulse : weapon impulse */
+ ATTRIB(Weapon, impulse, int, -1);
+ /** M: flags : WEPSPAWNFLAG_... combined */
+ ATTRIB(Weapon, spawnflags, int, 0);
+ /** M: rating : bot weapon priority */
+ ATTRIB(Weapon, bot_pickupbasevalue, float, 0);
+ /** M: color : waypointsprite color */
+ ATTRIB(Weapon, wpcolor, vector, '0 0 0');
+ /** A: wpn-id : wpn- sprite name */
+ 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: simplemdl : simpleitems weapon model/image */
+ ATTRIB(Weapon, w_simplemdl, string, "foobar");
+ /** M: crosshair : per-weapon crosshair: "CrosshairImage Size" */
+ ATTRIB(Weapon, w_crosshair, string, "gfx/crosshair1");
+ /** A: crosshair : per-weapon crosshair size (argument two of "crosshair" field) */
+ ATTRIB(Weapon, w_crosshair_size, float, 1);
+ /** M: wepimg : "weaponfoobar" side view image file of weapon. WEAPONTODO: Move out of skin files, move to common files */
+ ATTRIB(Weapon, model2, string, "");
+ /** M: refname : reference name name */
+ ATTRIB(Weapon, netname, string, "");
+ /** M: wepname : human readable name */
+ ATTRIB(Weapon, message, string, "AOL CD Thrower");
+
CONSTRUCTOR(Weapon,
bool(int) function,
.int ammotype,
register_weapon(this, this.m_id, WEPSET_##id); \
}
-bool w_null(int) { return false; }
-
#ifndef MENUQC
#define REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname) \
bool function(int); \