X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_laser.qc;h=3f902ac948b3aa1a9a33cd38ba28d50c82bf5c78;hb=73546668d5d452ce8efb85f4c9c1ae9bf8d8d314;hp=4ce1331931628366bfaf35037c429edfbbe7f3b4;hpb=dc6baa32c44fb1b81f88339d95674948d0d97c26;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_laser.qc b/qcsrc/server/w_laser.qc index 4ce133193..3f902ac94 100644 --- a/qcsrc/server/w_laser.qc +++ b/qcsrc/server/w_laser.qc @@ -1,9 +1,20 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(LASER, w_laser, 0, 1, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser")) +REGISTER_WEAPON(LASER, w_laser, 0, 1, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser")) #else #ifdef SVQC void(float imp) W_SwitchWeapon; +void W_Laser_Reload() +{ + self.(self.reload_ammo_player) = 1; + 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(); +} + void W_Laser_Touch (void) { PROJECTILE_TOUCH; @@ -226,16 +237,40 @@ float w_laser(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire)) + if(autocvar_g_balance_laser_reload_ammo && self.clip_load < 1) // forced reload + W_Laser_Reload(); + else if (self.BUTTON_ATCK) { - W_Laser_Attack(0); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire)) + { + // if this weapon is reloadable, decrease its load + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + { + if(autocvar_g_balance_laser_reload_ammo) + { + self.clip_load -= 1; + self.weapon_load[WEP_LASER] = self.clip_load; + } + } + + W_Laser_Attack(0); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready); + } } - if (self.BUTTON_ATCK2) + else if (self.BUTTON_ATCK2) { if(autocvar_g_balance_laser_secondary) { + // if this weapon is reloadable, decrease its load + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + { + if(autocvar_g_balance_laser_reload_ammo) + { + self.clip_load -= 1; + self.weapon_load[WEP_LASER] = self.clip_load; + } + } + if (weapon_prepareattack(0, 0)) { W_Laser_Attack2(); @@ -256,13 +291,24 @@ float w_laser(float req) precache_model ("models/weapons/h_laser.iqm"); precache_sound ("weapons/lasergun_fire.wav"); precache_sound ("weapons/gauntlet_fire.wav"); + precache_sound ("weapons/reload.wav"); } else if (req == WR_SETUP) + { weapon_setup(WEP_LASER); + } else if (req == WR_CHECKAMMO1) + { return TRUE; + } else if (req == WR_CHECKAMMO2) + { return TRUE; + } + else if (req == WR_RELOAD) + { + W_Laser_Reload(); + } return TRUE; }; #endif