3 CLASS(PortoLaunch, Weapon)
4 /* spawnfunc */ ATTRIB(PortoLaunch, m_canonical_spawnfunc, string, "weapon_porto");
5 /* ammotype */ ATTRIB(PortoLaunch, ammo_type, int, RESOURCE_NONE);
6 /* impulse */ ATTRIB(PortoLaunch, impulse, int, 0);
7 /* flags */ ATTRIB(PortoLaunch, spawnflags, int, WEP_TYPE_OTHER | WEP_FLAG_SUPERWEAPON | WEP_FLAG_NODUAL);
8 /* rating */ ATTRIB(PortoLaunch, bot_pickupbasevalue, float, 0);
9 /* color */ ATTRIB(PortoLaunch, wpcolor, vector, '0.5 0.5 0.5');
10 /* modelname */ ATTRIB(PortoLaunch, mdl, string, "porto");
12 /* model */ ATTRIB(PortoLaunch, m_model, Model, MDL_PORTO_ITEM);
14 /* crosshair */ ATTRIB(PortoLaunch, w_crosshair, string, "gfx/crosshairporto");
15 /* crosshair */ ATTRIB(PortoLaunch, w_crosshair_size, float, 0.6);
16 /* wepimg */ ATTRIB(PortoLaunch, model2, string, "weaponporto");
17 /* refname */ ATTRIB(PortoLaunch, netname, string, "porto");
18 /* wepname */ ATTRIB(PortoLaunch, m_name, string, _("Port-O-Launch"));
20 #define X(BEGIN, P, END, class, prefix) \
22 P(class, prefix, animtime, float, BOTH) \
23 P(class, prefix, lifetime, float, BOTH) \
24 P(class, prefix, refire, float, BOTH) \
25 P(class, prefix, secondary, float, NONE) \
26 P(class, prefix, speed, float, BOTH) \
27 P(class, prefix, switchdelay_drop, float, NONE) \
28 P(class, prefix, switchdelay_raise, float, NONE) \
29 P(class, prefix, weaponreplace, string,NONE) \
30 P(class, prefix, weaponstartoverride, float, NONE) \
31 P(class, prefix, weaponstart, float, NONE) \
32 P(class, prefix, weaponthrowable, float, NONE) \
34 W_PROPS(X, PortoLaunch, porto)
37 REGISTER_WEAPON(PORTO, porto, NEW(PortoLaunch));
39 SPAWNFUNC_WEAPON(weapon_porto, WEP_PORTO)
42 .entity porto_current;
43 .vector porto_v_angle; // holds "held" view angles
44 .float porto_v_angle_held;
46 .float porto_forbidden;
48 void W_Porto_Fail(entity this, float failhard);