X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_rocketlauncher.qc;h=723389e7121e5d7536f5f7bf07aec65847548092;hb=1c823399ee4cd14ac2b6fb728e842336b9fa2431;hp=4da611e7263dc023953dbce8ff8408e1db7535f2;hpb=e5cec7ef408853cad605faadb3a1ee0a4b5a5a9d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index 4da611e72..723389e71 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -238,16 +238,21 @@ void W_Rocket_Damage (entity inflictor, entity attacker, float damage, float dea { if (self.health <= 0) return; + + if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, -1)) // no exceptions + return; // g_projectiles_damage says to halt + self.health = self.health - damage; self.angles = vectoangles(self.velocity); + if (self.health <= 0) W_PrepareExplosionByDamage(attacker, W_Rocket_Explode); } void W_Rocket_Attack (void) { - local entity missile; - local entity flash; + entity missile; + entity flash; W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo); @@ -270,6 +275,7 @@ void W_Rocket_Attack (void) missile.damageforcescale = autocvar_g_balance_rocketlauncher_damageforcescale; missile.health = autocvar_g_balance_rocketlauncher_health; missile.event_damage = W_Rocket_Damage; + missile.damagedbycontents = TRUE; missile.movetype = MOVETYPE_FLY; PROJECTILE_MAKETRIGGER(missile); @@ -314,9 +320,9 @@ float w_rlauncher(float req) if(skill >= 2) // skill 0 and 1 bots won't detonate rockets! { // decide whether to detonate rockets - local entity missile, targetlist, targ; - local float edgedamage, coredamage, edgeradius, recipricoledgeradius, d; - local float selfdamage, teamdamage, enemydamage; + entity missile, targetlist, targ; + float edgedamage, coredamage, edgeradius, recipricoledgeradius, d; + float selfdamage, teamdamage, enemydamage; edgedamage = autocvar_g_balance_rocketlauncher_edgedamage; coredamage = autocvar_g_balance_rocketlauncher_damage; edgeradius = autocvar_g_balance_rocketlauncher_radius; @@ -349,7 +355,7 @@ float w_rlauncher(float req) } missile = find(missile, classname, "rocket"); } - local float desirabledamage; + float desirabledamage; desirabledamage = enemydamage; if (time > self.invincible_finished && time > self.spawnshieldtime) desirabledamage = desirabledamage - selfdamage * autocvar_g_balance_selfdamagepercent; @@ -378,7 +384,7 @@ float w_rlauncher(float req) targ = targ.chain; } }else{ - local float distance; distance= bound(300,vlen(self.origin-self.enemy.origin),30000); + float distance; distance= bound(300,vlen(self.origin-self.enemy.origin),30000); //As the distance gets larger, a correct detonation gets near imposible //Bots are assumed to use the rocket spawnfunc_light to see if the rocket gets near a player if(v_forward * normalize(missile.origin - self.enemy.origin)< 0.1) @@ -480,7 +486,7 @@ float w_rlauncher(float req) W_Reload(autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav"); } return TRUE; -}; +} #endif #ifdef CSQC float w_rlauncher(float req) @@ -498,7 +504,7 @@ float w_rlauncher(float req) precache_sound("weapons/rocket_impact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = _("%s exploded"); + w_deathtypestring = _("%s blew themself up with their rocketlauncher"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation)