X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_grenadelauncher.qc;h=21bc9afbd461c27944756ee4cd9a46c61ac910d5;hp=077318055c03cbf3f9fc24918a788073df24b1f0;hb=6018d119b3c9f4e54d6d21f6339948708c83d83f;hpb=6d93d99dfa4fc8495c1e3ed6e219d0909b9e437e diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 077318055c..21bc9afbd4 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -20,7 +20,7 @@ void W_Grenade_Explode (void) if(self.movetype == MOVETYPE_NONE) self.velocity = self.oldvelocity; - RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_primary_damage, autocvar_g_balance_grenadelauncher_primary_edgedamage, autocvar_g_balance_grenadelauncher_primary_radius, world, autocvar_g_balance_grenadelauncher_primary_force, self.projectiledeathtype, other); + RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_primary_damage, autocvar_g_balance_grenadelauncher_primary_edgedamage, autocvar_g_balance_grenadelauncher_primary_radius, world, world, autocvar_g_balance_grenadelauncher_primary_force, self.projectiledeathtype, other); remove (self); } @@ -40,7 +40,7 @@ void W_Grenade_Explode2 (void) if(self.movetype == MOVETYPE_NONE) self.velocity = self.oldvelocity; - RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_secondary_damage, autocvar_g_balance_grenadelauncher_secondary_edgedamage, autocvar_g_balance_grenadelauncher_secondary_radius, world, autocvar_g_balance_grenadelauncher_secondary_force, self.projectiledeathtype, other); + RadiusDamage (self, self.realowner, autocvar_g_balance_grenadelauncher_secondary_damage, autocvar_g_balance_grenadelauncher_secondary_edgedamage, autocvar_g_balance_grenadelauncher_secondary_radius, world, world, autocvar_g_balance_grenadelauncher_secondary_force, self.projectiledeathtype, other); remove (self); } @@ -49,11 +49,14 @@ void W_Grenade_Damage (entity inflictor, entity attacker, float damage, float de { 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; + if (self.health <= 0) - { - W_PrepareExplosionByDamage(attacker, self.think); - } + W_PrepareExplosionByDamage(attacker, self.use); } void W_Grenade_Think1 (void) @@ -70,18 +73,6 @@ void W_Grenade_Think1 (void) W_Grenade_Explode(); } -void W_Grenade_Think2 (void) -{ - self.nextthink = time; - if (time > self.cnt) - { - other = world; - self.projectiledeathtype |= HITTYPE_BOUNCE; - W_Grenade_Explode2 (); - return; - } -} - void W_Grenade_Touch1 (void) { PROJECTILE_TOUCH; @@ -153,7 +144,7 @@ void W_Grenade_Touch2 (void) self.gl_bouncecnt += 1; if (autocvar_g_balance_grenadelauncher_secondary_lifetime_bounce && self.gl_bouncecnt == 1) - self.cnt = time + autocvar_g_balance_grenadelauncher_secondary_lifetime_bounce; + self.nextthink = time + autocvar_g_balance_grenadelauncher_secondary_lifetime_bounce; } else if(autocvar_g_balance_grenadelauncher_secondary_type == 2 && (!other || (other.takedamage != DAMAGE_AIM && other.movetype == MOVETYPE_NONE))) // stick @@ -176,7 +167,7 @@ void W_Grenade_Touch2 (void) void W_Grenade_Attack (void) { - local entity gren; + entity gren; W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo); @@ -208,6 +199,8 @@ void W_Grenade_Attack (void) gren.health = autocvar_g_balance_grenadelauncher_primary_health; gren.damageforcescale = autocvar_g_balance_grenadelauncher_primary_damageforcescale; gren.event_damage = W_Grenade_Damage; + gren.damagedbycontents = TRUE; + gren.missile_flags = MIF_SPLASH | MIF_ARC; W_SETUPPROJECTILEVELOCITY_UP(gren, g_balance_grenadelauncher_primary); gren.angles = vectoangles (gren.velocity); @@ -223,7 +216,7 @@ void W_Grenade_Attack (void) void W_Grenade_Attack2 (void) { - local entity gren; + entity gren; W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_secondary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo); @@ -245,9 +238,8 @@ void W_Grenade_Attack2 (void) setorigin(gren, w_shotorg); setsize(gren, '-3 -3 -3', '3 3 3'); - gren.cnt = time + autocvar_g_balance_grenadelauncher_secondary_lifetime; - gren.nextthink = time; - gren.think = W_Grenade_Think2; + gren.nextthink = time + autocvar_g_balance_grenadelauncher_secondary_lifetime; + gren.think = adaptor_think2use_hittype_splash; gren.use = W_Grenade_Explode2; gren.touch = W_Grenade_Touch2; @@ -255,6 +247,8 @@ void W_Grenade_Attack2 (void) gren.health = autocvar_g_balance_grenadelauncher_secondary_health; gren.damageforcescale = autocvar_g_balance_grenadelauncher_secondary_damageforcescale; gren.event_damage = W_Grenade_Damage; + gren.damagedbycontents = TRUE; + gren.missile_flags = MIF_SPLASH | MIF_ARC; W_SETUPPROJECTILEVELOCITY_UP(gren, g_balance_grenadelauncher_secondary); gren.angles = vectoangles (gren.velocity); @@ -359,13 +353,13 @@ float w_glauncher(float req) else if (req == WR_CHECKAMMO1) { ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo; - ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_primary_ammo; + ammo_amount += self.(weapon_load[WEP_GRENADE_LAUNCHER]) >= autocvar_g_balance_grenadelauncher_primary_ammo; return ammo_amount; } else if (req == WR_CHECKAMMO2) { ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo; - ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_secondary_ammo; + ammo_amount += self.(weapon_load[WEP_GRENADE_LAUNCHER]) >= autocvar_g_balance_grenadelauncher_secondary_ammo; return ammo_amount; } else if (req == WR_RELOAD) @@ -373,7 +367,7 @@ float w_glauncher(float req) W_Reload(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"); } return TRUE; -}; +} #endif #ifdef CSQC float w_glauncher(float req) @@ -393,9 +387,9 @@ float w_glauncher(float req) else if (req == WR_SUICIDEMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = _("%s tried out his own grenade"); + w_deathtypestring = _("%s didn't see their own grenade"); else - w_deathtypestring = _("%s detonated"); + w_deathtypestring = _("%s blew themself up with their grenadelauncher"); } else if (req == WR_KILLMESSAGE) {