#endif
#ifdef IMPLEMENTATION
#ifdef SVQC
-void spawnfunc_weapon_electro(void) { weapon_defaultspawnfunc(WEP_ELECTRO.m_id); }
+spawnfunc(weapon_electro) { weapon_defaultspawnfunc(WEP_ELECTRO.m_id); }
void W_Electro_TriggerCombo(vector org, float rad, entity own)
{
{SELFPARAM();
entity proj;
- W_DecreaseAmmo(thiswep, WEP_CVAR_PRI(electro, ammo));
+ W_DecreaseAmmo(thiswep, self, WEP_CVAR_PRI(electro, ammo));
W_SetupShot_ProjectileSize(
self,
void W_Electro_Attack_Orb(Weapon thiswep)
{SELFPARAM();
- W_DecreaseAmmo(thiswep, WEP_CVAR_SEC(electro, ammo));
+ W_DecreaseAmmo(thiswep, self, WEP_CVAR_SEC(electro, ammo));
W_SetupShot_ProjectileSize(
self,
MUTATOR_CALLHOOK(EditProjectile, self, proj);
}
-void W_Electro_CheckAttack(Weapon thiswep, bool fire1, bool fire2)
+void W_Electro_CheckAttack(Weapon thiswep, entity actor, bool fire1, bool fire2)
{SELFPARAM();
if(self.electro_count > 1)
if(self.BUTTON_ATCK2)
- if(weapon_prepareattack(true, -1))
+ if(weapon_prepareattack(actor, true, -1))
{
W_Electro_Attack_Orb(WEP_ELECTRO);
self.electro_count -= 1;
- weapon_thinkf(WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack);
+ weapon_thinkf(actor, WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack);
return;
}
// WEAPONTODO: when the player releases the button, cut down the length of refire2?
- w_ready(thiswep, fire1, fire2);
+ w_ready(thiswep, actor, fire1, fire2);
}
.float bot_secondary_electromooth;
- METHOD(Electro, wr_aim, bool(entity thiswep))
+ METHOD(Electro, wr_aim, void(entity thiswep))
{
self.BUTTON_ATCK = self.BUTTON_ATCK2 = false;
if(vlen(self.origin-self.enemy.origin) > 1000) { self.bot_secondary_electromooth = 0; }
if(random() < 0.03) self.bot_secondary_electromooth = 0;
}
}
-
- return true;
}
- METHOD(Electro, wr_think, bool(entity thiswep, bool fire1, bool fire2))
+ METHOD(Electro, wr_think, void(entity thiswep, entity actor, bool fire1, bool fire2))
{
if(autocvar_g_balance_electro_reload_ammo) // forced reload // WEAPONTODO
{
float ammo_amount = 0;
- if(self.clip_load >= WEP_CVAR_PRI(electro, ammo))
+ if(actor.clip_load >= WEP_CVAR_PRI(electro, ammo))
ammo_amount = 1;
- if(self.clip_load >= WEP_CVAR_SEC(electro, ammo))
+ if(actor.clip_load >= WEP_CVAR_SEC(electro, ammo))
ammo_amount += 1;
if(!ammo_amount)
{
- Weapon w = get_weaponinfo(self.weapon);
+ Weapon w = get_weaponinfo(actor.weapon);
w.wr_reload(w);
- return false;
+ return;
}
-
- return true;
}
if(fire1)
{
- if(weapon_prepareattack(false, WEP_CVAR_PRI(electro, refire)))
+ if(weapon_prepareattack(actor, false, WEP_CVAR_PRI(electro, refire)))
{
W_Electro_Attack_Bolt(thiswep);
- weapon_thinkf(WFRAME_FIRE1, WEP_CVAR_PRI(electro, animtime), w_ready);
+ weapon_thinkf(actor, WFRAME_FIRE1, WEP_CVAR_PRI(electro, animtime), w_ready);
}
}
else if(fire2)
{
- if(time >= self.electro_secondarytime)
- if(weapon_prepareattack(true, WEP_CVAR_SEC(electro, refire)))
+ if(time >= actor.electro_secondarytime)
+ if(weapon_prepareattack(actor, true, WEP_CVAR_SEC(electro, refire)))
{
W_Electro_Attack_Orb(thiswep);
- self.electro_count = WEP_CVAR_SEC(electro, count);
- weapon_thinkf(WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack);
- self.electro_secondarytime = time + WEP_CVAR_SEC(electro, refire2) * W_WeaponRateFactor();
+ actor.electro_count = WEP_CVAR_SEC(electro, count);
+ weapon_thinkf(actor, WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack);
+ actor.electro_secondarytime = time + WEP_CVAR_SEC(electro, refire2) * W_WeaponRateFactor();
}
}
-
- return true;
}
- METHOD(Electro, wr_init, bool(entity thiswep))
+ METHOD(Electro, wr_init, void(entity thiswep))
{
ELECTRO_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP);
- return true;
}
METHOD(Electro, wr_checkammo1, bool(entity thiswep))
{
}
return ammo_amount;
}
- METHOD(Electro, wr_config, bool(entity thiswep))
+ METHOD(Electro, wr_config, void(entity thiswep))
{
ELECTRO_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS);
- return true;
}
- METHOD(Electro, wr_resetplayer, bool(entity thiswep))
+ METHOD(Electro, wr_resetplayer, void(entity thiswep))
{
self.electro_secondarytime = time;
- return true;
}
- METHOD(Electro, wr_reload, bool(entity thiswep))
+ METHOD(Electro, wr_reload, void(entity thiswep))
{
- W_Reload(min(WEP_CVAR_PRI(electro, ammo), WEP_CVAR_SEC(electro, ammo)), SND(RELOAD));
- return true;
+ W_Reload(self, min(WEP_CVAR_PRI(electro, ammo), WEP_CVAR_SEC(electro, ammo)), SND(RELOAD));
}
- METHOD(Electro, wr_suicidemessage, bool(entity thiswep))
+ METHOD(Electro, wr_suicidemessage, int(entity thiswep))
{
if(w_deathtype & HITTYPE_SECONDARY)
return WEAPON_ELECTRO_SUICIDE_ORBS;
else
return WEAPON_ELECTRO_SUICIDE_BOLT;
}
- METHOD(Electro, wr_killmessage, bool(entity thiswep))
+ METHOD(Electro, wr_killmessage, int(entity thiswep))
{
if(w_deathtype & HITTYPE_SECONDARY)
{
#endif
#ifdef CSQC
- METHOD(Electro, wr_impacteffect, bool(entity thiswep))
+ METHOD(Electro, wr_impacteffect, void(entity thiswep))
{
vector org2;
org2 = w_org + w_backoff * 6;
sound(self, CH_SHOTS, SND_ELECTRO_IMPACT, VOL_BASE, ATTEN_NORM);
}
}
-
- return true;
- }
- METHOD(Electro, wr_init, bool(entity thiswep))
- {
- return true;
- }
- METHOD(Electro, wr_zoomreticle, bool(entity thiswep))
- {
- // no weapon specific image for this weapon
- return false;
}
#endif