X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_minstanex.qc;h=6901e2b2d38b822c2972941fb81abff5321c0e09;hp=b826b98543c61639be69a7cb25f2c5c9ddec782a;hb=a8f44b0e98aedacaae872b937ee023e24fc30878;hpb=bc91f7dc48927953480bdc9622973c7de075fb5f diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index b826b9854..6901e2b2d 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -9,7 +9,7 @@ void W_MinstaNex_Attack (void) float flying; flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last - W_SetupShot (self, TRUE, 0, "weapons/minstanexfire.wav", CHAN_WEAPON, 10000); + W_SetupShot (self, TRUE, 0, "weapons/minstanexfire.wav", CH_WEAPON_A, 10000); yoda = 0; damage_goodhits = 0; @@ -43,7 +43,7 @@ void W_MinstaNex_Attack (void) // teamcolor / hit beam effect vector v; v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); - if(teams_matter) + if(teamplay) { switch(self.team) { @@ -88,76 +88,80 @@ void W_MinstaNex_Attack (void) .float minstagib_nextthink; -void minstagib_ammocheck (void) +.float minstagib_needammo; +void minstagib_stop_countdown(void) { - if (time < self.minstagib_nextthink || self.deadflag || gameover) + if (self.minstagib_needammo) + { + self.health = 100; + Send_CSQC_Centerprint_Generic_Expire(self, CPID_MINSTA_FINDAMMO); + } + self.minstagib_needammo = FALSE; +} +void minstagib_ammocheck(void) +{ + if (time < self.minstagib_nextthink) return; - if (self.ammo_cells <= 0) + if (self.deadflag || gameover || self.ammo_cells > 0 || (self.items & IT_UNLIMITED_WEAPON_AMMO)) + minstagib_stop_countdown(); + else { + self.minstagib_needammo = TRUE; if (self.health == 5) { - centerprint(self, "you're dead now...\n"); Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "terminated"); } else if (self.health == 10) { - centerprint(self, "^11^7 second left to find some ammo\n"); Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "1"); } else if (self.health == 20) { - centerprint(self, "^12^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "2"); } else if (self.health == 30) { - centerprint(self, "^13^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "3"); } else if (self.health == 40) { - centerprint(self, "^14^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "4"); } else if (self.health == 50) { - centerprint(self, "^15^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "5"); } else if (self.health == 60) { - centerprint(self, "^36^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "6"); } else if (self.health == 70) { - centerprint(self, "^37^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "7"); } else if (self.health == 80) { - centerprint(self, "^38^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "8"); } else if (self.health == 90) { - centerprint(self, "^39^7 seconds left to find some ammo\n"); + Send_CSQC_Centerprint_Generic(self, CPID_MINSTA_FINDAMMO, "^1%d^7 seconds left to find some ammo", 1, 9); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); AnnounceTo(self, "9"); } else if (self.health == 100) { - centerprint(self, "get some ammo or\nyou'll be dead in ^310^7 seconds..."); + Send_CSQC_Centerprint_Generic(self, CPID_MINSTA_FINDAMMO, "get some ammo or\nyou'll be dead in ^3%d^7 seconds...", 1, 10); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); if not(self.flags & FL_GODMODE) AnnounceTo(self, "10"); @@ -168,10 +172,17 @@ void minstagib_ammocheck (void) void spawnfunc_weapon_minstanex (void); // defined in t_items.qc -float minstanex_ammo; float w_minstanex(float req) { float ammo_amount; + float minstanex_ammo; + + // now multiple WR_s use this + if(g_minstagib) + minstanex_ammo = 1; + else + minstanex_ammo = autocvar_g_balance_minstanex_ammo; + if (req == WR_AIM) { if(self.ammo_cells > 0) @@ -181,11 +192,6 @@ float w_minstanex(float req) } else if (req == WR_THINK) { - if(g_minstagib) - minstanex_ammo = 1; - else - minstanex_ammo = autocvar_g_balance_minstanex_ammo; - // if the laser uses load, we also consider its ammo for reloading if(autocvar_g_balance_minstanex_reload_ammo && autocvar_g_balance_minstanex_laser_ammo && self.clip_load < min(minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo)) // forced reload weapon_action(self.weapon, WR_RELOAD); @@ -228,7 +234,7 @@ float w_minstanex(float req) precache_sound ("weapons/nexwhoosh1.wav"); precache_sound ("weapons/nexwhoosh2.wav"); precache_sound ("weapons/nexwhoosh3.wav"); - precache_sound ("weapons/reload.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else w_laser(WR_PRECACHE); } else if (req == WR_SETUP) @@ -239,8 +245,8 @@ float w_minstanex(float req) } else if (req == WR_CHECKAMMO1) { - ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_ammo; - ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_ammo; + ammo_amount = self.ammo_cells >= minstanex_ammo; + ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= minstanex_ammo; return ammo_amount; } else if (req == WR_CHECKAMMO2) @@ -248,7 +254,7 @@ float w_minstanex(float req) if(!autocvar_g_balance_minstanex_laser_ammo) return TRUE; ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo; - ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_laser_ammo; + ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= autocvar_g_balance_minstanex_laser_ammo; return ammo_amount; } else if (req == WR_RESETPLAYER) @@ -259,14 +265,14 @@ float w_minstanex(float req) { float used_ammo; if(autocvar_g_balance_minstanex_laser_ammo) - used_ammo = min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo); + used_ammo = min(minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo); else - used_ammo = autocvar_g_balance_minstanex_ammo; + used_ammo = minstanex_ammo; W_Reload(used_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav"); } return TRUE; -}; +} #endif #ifdef CSQC float w_minstanex(float req) @@ -277,14 +283,14 @@ float w_minstanex(float req) org2 = w_org + w_backoff * 6; pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1); if(!w_issilent) - sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_SHOTS, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM); } else if(req == WR_PRECACHE) { precache_sound("weapons/neximpact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = _("%s did the impossible"); + w_deathtypestring = _("%s is now thinking with portals"); else if (req == WR_KILLMESSAGE) w_deathtypestring = _("%s has been vaporized by %s"); return TRUE;