X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_minelayer.qc;h=3ec50da50d633cc59679dd5087595726d1ab6f1b;hp=a2c57004ff9fa813df69df2186fb31667458aa98;hb=616650bb18362024afeed71fed91d33dc1708d09;hpb=d87a53695d97a6586a3356b5eb7acb4ca5c3bdd9 diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index a2c57004f..3ec50da50 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -38,6 +38,7 @@ void W_Mine_Stick (entity to) newmine.health = self.health; newmine.event_damage = self.event_damage; newmine.spawnshieldtime = self.spawnshieldtime; + newmine.damagedbycontents = TRUE; newmine.movetype = MOVETYPE_NONE; // lock the mine in place newmine.projectiledeathtype = self.projectiledeathtype; @@ -241,8 +242,15 @@ void W_Mine_Damage (entity inflictor, entity attacker, float damage, float death { if (self.health <= 0) return; + + float is_from_enemy = (inflictor.realowner != self.realowner); + + if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, (is_from_enemy ? 1 : -1))) + 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_Mine_Explode); } @@ -259,7 +267,7 @@ void W_Mine_Attack (void) if(W_Mine_Count(self) >= autocvar_g_balance_minelayer_limit) { // the refire delay keeps this message from being spammed - sprint(self, strcat("You cannot place more than ^2", ftos(autocvar_g_balance_minelayer_limit), " ^7mines at a time\n") ); + sprint(self, strcat("minelayer: You cannot place more than ^2", ftos(autocvar_g_balance_minelayer_limit), " ^7mines at a time\n") ); play2(self, "weapons/unavailable.wav"); return; } @@ -284,6 +292,7 @@ void W_Mine_Attack (void) mine.damageforcescale = autocvar_g_balance_minelayer_damageforcescale; mine.health = autocvar_g_balance_minelayer_health; mine.event_damage = W_Mine_Damage; + mine.damagedbycontents = TRUE; mine.movetype = MOVETYPE_TOSS; PROJECTILE_MAKETRIGGER(mine); @@ -486,7 +495,7 @@ float w_minelayer(float req) if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) { ammo_amount = self.ammo_rockets >= autocvar_g_balance_minelayer_ammo; - ammo_amount += self.weapon_load[WEP_MINE_LAYER] >= autocvar_g_balance_minelayer_ammo; + ammo_amount += self.(weapon_load[WEP_MINE_LAYER]) >= autocvar_g_balance_minelayer_ammo; return ammo_amount; } } @@ -502,7 +511,7 @@ float w_minelayer(float req) W_Reload(autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo, autocvar_g_balance_minelayer_reload_time, "weapons/reload.wav"); } return TRUE; -}; +} #endif #ifdef CSQC float w_minelayer(float req)