// weapon reloading code
+..float reload_ammo_player;
+.float reload_ammo_amount, reload_ammo_min, reload_time;
.float reload_complain;
+.string reload_sound;
+
float W_ReloadCheck(float ammo_amount, float ammo_shot)
{
// our weapon is fully loaded, no need to reload
return TRUE;
}
-void W_ReloadedAndReady()
+void W_ReloadEnd()
{
float t;
w_ready();
}
-void W_Reload()
+void W_ReloadStart()
{
// return if reloading is disabled for this weapon
if(!self.reload_ammo_amount)
t = max(time, ATTACK_FINISHED(self)) + self.reload_time + 1;
ATTACK_FINISHED(self) = t;
- weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadedAndReady);
+ weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadEnd);
self.old_clip_load = self.clip_load;
self.clip_load = -1;
+}
+
+void W_Reload(.float sent_ammo_player, float sent_ammo_min, float sent_ammo_amount, float sent_time, string sent_sound)
+{
+ self.reload_ammo_player = sent_ammo_player;
+ self.reload_ammo_min = sent_ammo_min;
+ self.reload_ammo_amount = sent_ammo_amount;
+ self.reload_time = sent_time;
+ self.reload_sound = sent_sound;
+
+ W_ReloadStart();
}
\ No newline at end of file
.float old_clip_load;
.float clip_size;
-..float reload_ammo_player;
-.float reload_ammo_amount, reload_ammo_min, reload_time;
-.string reload_sound;
-
#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
// when doing this, hagar can go through clones
// #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_BBOX
void W_Crylink_Reload()
{
- self.reload_ammo_player = ammo_cells;
- self.reload_ammo_min = min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_crylink_reload_ammo;
- self.reload_time = autocvar_g_balance_crylink_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_cells, min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo), autocvar_g_balance_crylink_reload_ammo, autocvar_g_balance_crylink_reload_time, "weapons/reload.wav");
}
void W_Crylink_CheckLinks(entity e)
void W_Electro_Reload()
{
- self.reload_ammo_player = ammo_cells;
- self.reload_ammo_min = min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_electro_reload_ammo;
- self.reload_time = autocvar_g_balance_electro_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_cells, min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo), autocvar_g_balance_electro_reload_ammo, autocvar_g_balance_electro_reload_time, "weapons/reload.wav");
}
void W_Plasma_Explode_Combo (void);
if(self.ammo_fuel < 1)
self.ammo_fuel = 0;
- self.reload_ammo_player = ammo_fuel;
- self.reload_ammo_min = min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_fireball_reload_ammo;
- self.reload_time = autocvar_g_balance_fireball_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_fuel, min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo), autocvar_g_balance_fireball_reload_ammo, autocvar_g_balance_fireball_reload_time, "weapons/reload.wav");
}
void W_Fireball_Explode (void)
void W_GrenadeLauncher_Reload()
{
- self.reload_ammo_player = ammo_rockets;
- self.reload_ammo_min = min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_grenadelauncher_reload_ammo;
- self.reload_time = autocvar_g_balance_grenadelauncher_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_rockets, min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo), autocvar_g_balance_grenadelauncher_reload_ammo, autocvar_g_balance_grenadelauncher_reload_time, "weapons/reload.wav");
}
void W_Grenade_Explode (void)
void W_Hagar_Reload()
{
- self.reload_ammo_player = ammo_rockets;
- self.reload_ammo_min = min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_hagar_reload_ammo;
- self.reload_time = autocvar_g_balance_hagar_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_rockets, min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo), autocvar_g_balance_hagar_reload_ammo, autocvar_g_balance_hagar_reload_time, "weapons/reload.wav");
}
void W_Hagar_Explode (void)
void W_HLAC_Reload()
{
- self.reload_ammo_player = ammo_cells;
- self.reload_ammo_min = min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_hlac_reload_ammo;
- self.reload_time = autocvar_g_balance_hlac_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_cells, min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo), autocvar_g_balance_hlac_reload_ammo, autocvar_g_balance_hlac_reload_time, "weapons/reload.wav");
}
void W_HLAC_Touch (void)
void W_Laser_Reload()
{
- self.reload_ammo_player = zero_ammo;
- self.reload_ammo_min = 0;
- self.reload_ammo_amount = autocvar_g_balance_laser_reload_ammo;
- self.reload_time = autocvar_g_balance_laser_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(zero_ammo, 0, autocvar_g_balance_laser_reload_ammo, autocvar_g_balance_laser_reload_time, "weapons/reload.wav");
}
void W_Laser_Touch (void)
void W_MineLayer_Reload()
{
- self.reload_ammo_player = ammo_rockets;
- self.reload_ammo_min = autocvar_g_balance_minelayer_ammo;
- self.reload_ammo_amount = autocvar_g_balance_minelayer_reload_ammo;
- self.reload_time = autocvar_g_balance_minelayer_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_rockets, autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo, autocvar_g_balance_minelayer_reload_time, "weapons/reload.wav");
}
void spawnfunc_weapon_minelayer (void)
void W_Minstanex_Reload()
{
- self.reload_ammo_player = ammo_cells;
if(autocvar_g_balance_minstanex_laser_ammo)
- self.reload_ammo_min = min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo);
+ W_Reload(ammo_cells, min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo), autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav");
else
- self.reload_ammo_min = autocvar_g_balance_minstanex_ammo;
- self.reload_ammo_amount = autocvar_g_balance_minstanex_reload_ammo;
- self.reload_time = autocvar_g_balance_minstanex_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_cells, autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav");
}
void W_MinstaNex_Attack (void)
void W_Nex_Reload()
{
- self.reload_ammo_player = ammo_cells;
- self.reload_ammo_min = min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_nex_reload_ammo;
- self.reload_time = autocvar_g_balance_nex_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_cells, min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo), autocvar_g_balance_nex_reload_ammo, autocvar_g_balance_nex_reload_time, "weapons/reload.wav");
}
void SendCSQCNexBeamParticle(float charge) {
void W_RocketLauncher_Reload()
{
- self.reload_ammo_player = ammo_rockets;
- self.reload_ammo_min = autocvar_g_balance_rocketlauncher_ammo;
- self.reload_ammo_amount = autocvar_g_balance_rocketlauncher_reload_ammo;
- self.reload_time = autocvar_g_balance_rocketlauncher_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_rockets, autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav");
}
void W_Rocket_Unregister()
void W_Seeker_Reload()
{
- self.reload_ammo_player = ammo_rockets;
- self.reload_ammo_min = min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo);
- self.reload_ammo_amount = autocvar_g_balance_seeker_reload_ammo;
- self.reload_time = autocvar_g_balance_seeker_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_rockets, min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo), autocvar_g_balance_seeker_reload_ammo, autocvar_g_balance_seeker_reload_time, "weapons/reload.wav");
}
void Seeker_Missile_Explode ()
void W_Shotgun_Reload()
{
- self.reload_ammo_player = ammo_shells;
- self.reload_ammo_min = autocvar_g_balance_shotgun_primary_ammo;
- self.reload_ammo_amount = autocvar_g_balance_shotgun_reload_ammo;
- self.reload_time = autocvar_g_balance_shotgun_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_shells, autocvar_g_balance_shotgun_primary_ammo, autocvar_g_balance_shotgun_reload_ammo, autocvar_g_balance_shotgun_reload_time, "weapons/reload.wav");
}
void W_Shotgun_Attack (void)
void W_SniperRifle_Reload()
{
- self.reload_ammo_player = ammo_nails;
- self.reload_ammo_min = min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo);
- self.reload_ammo_amount = autocvar_g_balance_sniperrifle_reload_ammo;
- self.reload_time = autocvar_g_balance_sniperrifle_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_nails, min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo), autocvar_g_balance_sniperrifle_reload_ammo, autocvar_g_balance_sniperrifle_reload_time, "weapons/reload.wav");
}
void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAddedDamage, float pForce, float pSpeed, float pLifetime, float pAmmo, float deathtype, float pBulletConstant)
void W_UZI_Reload()
{
- self.reload_ammo_player = ammo_nails;
- self.reload_ammo_min = min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo);
- self.reload_ammo_amount = autocvar_g_balance_uzi_reload_ammo;
- self.reload_time = autocvar_g_balance_uzi_reload_time;
- self.reload_sound = "weapons/reload.wav";
-
- W_Reload();
+ W_Reload(ammo_nails, min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo), autocvar_g_balance_uzi_reload_ammo, autocvar_g_balance_uzi_reload_time, "weapons/reload.wav");
}
// leilei's fancy muzzleflash stuff