X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_minelayer.qc;h=4d98f0c91cd50927abfecdacd53c1b82c6a35dec;hb=d90a23d81d8d2c66681d1241025142f23881744a;hp=efb9f7dbe503cf316dc4247fd470744e143768dc;hpb=738e2ebdf9d63a4957f1d9883558bd6bc09cbfcd;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index efb9f7dbe..4d98f0c91 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer")) +REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer")) #else #ifdef SVQC void W_Mine_Think (void); @@ -149,7 +149,7 @@ void W_Mine_ProximityExplode () float W_Mine_Count(entity e) { - float minecount; + float minecount = 0; entity mine; for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.realowner == e) minecount += 1; @@ -245,14 +245,12 @@ void W_Mine_Damage (entity inflictor, entity attacker, float damage, float death float is_from_enemy = (inflictor.realowner != self.realowner); - if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, is_from_enemy)) + 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); - print(strcat("mine health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n")); - if (self.health <= 0) W_PrepareExplosionByDamage(attacker, W_Mine_Explode); } @@ -269,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; } @@ -310,6 +308,7 @@ void W_Mine_Attack (void) mine.nextthink = time; mine.cnt = time + (autocvar_g_balance_minelayer_lifetime - autocvar_g_balance_minelayer_lifetime_countdown); mine.flags = FL_PROJECTILE; + mine.missile_flags = MIF_SPLASH | MIF_ARC | MIF_PROXY; CSQCProjectile(mine, TRUE, PROJECTILE_MINE, TRUE); @@ -327,12 +326,10 @@ void W_Mine_Attack (void) self.minelayer_mines = W_Mine_Count(self); } -void spawnfunc_weapon_minelayer (void); // defined in t_items.qc - float W_PlacedMines(float detonate) { entity mine; - float minfound; + float minfound = 0; for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.realowner == self) { @@ -497,7 +494,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; } } @@ -513,7 +510,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) @@ -531,7 +528,10 @@ float w_minelayer(float req) precache_sound("weapons/mine_exp.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = _("%s exploded"); + if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation) + w_deathtypestring = _("%s blew themself up with their minelayer"); + else + w_deathtypestring = _("%s forgot about their mine"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation)