void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector mi, vector ma, float antilag, float recoil, string snd, float chan, float maxdamage, float range)
{
float nudge = 1; // added to traceline target and subtracted from result
- local float oldsolid;
+ float oldsolid;
vector vecs, dv;
oldsolid = ent.dphitcontentsmask;
if(ent.weapon == WEP_RIFLE)
vecs = ent.weaponentity.movedir;
else
vecs = '0 0 0';
- if(debug_shotorg != '0 0 0')
- vecs = debug_shotorg;
dv = v_right * -vecs_y + v_up * vecs_z;
w_shotorg = ent.origin + ent.view_ofs + dv;
// nudge w_shotend so a trace to w_shotend hits
w_shotend = w_shotend + normalize(w_shotend - w_shotorg) * nudge;
-};
+}
#define W_SetupShot_Dir_ProjectileSize(ent,s_forward,mi,ma,antilag,recoil,snd,chan,maxdamage) W_SetupShot_Dir_ProjectileSize_Range(ent, s_forward, mi, ma, antilag, recoil, snd, chan, maxdamage, MAX_SHOT_DISTANCE)
#define W_SetupShot_ProjectileSize(ent,mi,ma,antilag,recoil,snd,chan,maxdamage) W_SetupShot_Dir_ProjectileSize(ent, v_forward, mi, ma, antilag, recoil, snd, chan, maxdamage)
}
self.angles = '0 0 0';
- local float f;
+ float f;
f = 0;
if (self.state == WS_RAISE && !intermission_running)
{
f = 1;
self.angles_x = -90 * f * f;
}
-};
+}
void CL_ExteriorWeaponentity_Think()
{
self.glowmod = self.owner.weaponentity_glowmod;
self.colormap = self.owner.colormap;
-};
+
+ CSQCMODEL_AUTOUPDATE();
+}
// spawning weaponentity for client
void CL_SpawnWeaponentity()
self.exteriorweaponentity.angles = '0 0 0';
self.exteriorweaponentity.think = CL_ExteriorWeaponentity_Think;
self.exteriorweaponentity.nextthink = time;
-};
+
+ {
+ entity oldself = self;
+ self = self.exteriorweaponentity;
+ CSQCMODEL_AUTOINIT();
+ self = oldself;
+ }
+}
void Send_WeaponComplain (entity e, float wpn, string wpnname, float type)
{
float client_hasweapon(entity cl, float wpn, float andammo, float complain)
{
- local float weaponbit, f;
- local entity oldself;
+ float weaponbit, f;
+ entity oldself;
if(time < self.hasweapon_complain_spam)
complain = 0;
f = f + weapon_action(wpn, WR_CHECKAMMO2);
// always allow selecting the Mine Layer if we placed mines, so that we can detonate them
- local entity mine;
+ entity mine;
if(wpn == WEP_MINE_LAYER)
for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self)
f = 1;
play2(cl, "weapons/unavailable.wav");
}
return FALSE;
-};
+}
// Weapon subs
void w_clear()
self.weaponentity.state = WS_CLEAR;
self.weaponentity.effects = 0;
}
-};
+}
void w_ready()
{
if (self.weaponentity)
self.weaponentity.state = WS_READY;
weapon_thinkf(WFRAME_IDLE, 1000000, w_ready);
-};
+}
// Setup weapon for client (after this raise frame will be launched)
void weapon_setup(float windex)
self.switchingweapon = windex; // to make sure
self.weaponname = e.mdl;
self.bulletcounter = 0;
-};
+}
// perform weapon to attack (weaponstate and attack_finished check is here)
void W_SwitchToOtherWeapon(entity pl)
if (!weapon_action(self.weapon, WR_CHECKAMMO1 + secondary))
{
// always keep the Mine Layer if we placed mines, so that we can detonate them
- local entity mine;
+ entity mine;
if(self.weapon == WEP_MINE_LAYER)
for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self)
return FALSE;
setanim(self, anim, FALSE, TRUE, TRUE);
}
}
-};
+}
void weapon_boblayer1(float spd, vector org)
{
// VorteX: haste can be added here
-};
+}
vector W_CalculateProjectileVelocity(vector pvelocity, vector mvelocity, float forceAbsolute)
{