X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_minstanex.qc;h=4f231a2cb46f5e221db2dfcc89090ed4c5c87c33;hb=e14bb786305e05541496fb5b28c090e0ff1b5783;hp=4031ca8a9d14e53a2bf47569a253237b6dc2f319;hpb=f12e71e50f3c78ac1569cc9f4fedcab33f73fad2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 4031ca8a9..4f231a2cb 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -1,5 +1,15 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_FLAG_SUPERWEAPON | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", _("MinstaNex")) +REGISTER_WEAPON( +/* WEP_##id */ MINSTANEX, +/* function */ w_minstanex, +/* ammotype */ IT_CELLS, +/* impulse */ 7, +/* flags */ WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_FLAG_SUPERWEAPON | WEP_TYPE_HITSCAN, +/* rating */ BOT_PICKUP_RATING_HIGH, +/* model */ "minstanex", +/* shortname */ "minstanex", +/* fullname */ _("MinstaNex") +); #else #ifdef SVQC .float minstanex_lasthit; @@ -16,20 +26,12 @@ void W_MinstaNex_Attack (void) damage_goodhits = 0; FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 10000, 800, 0, 0, 0, 0, WEP_MINSTANEX); - if(g_minstagib) + if(yoda && flying) + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA); + if(damage_goodhits && self.minstanex_lasthit) { - if(yoda) - AnnounceTo(self, "yoda"); - } - else - { - if(yoda && flying) - AnnounceTo(self, "yoda"); - if(damage_goodhits && self.minstanex_lasthit) - { - AnnounceTo(self, "impressive"); - damage_goodhits = 0; // only every second time - } + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_IMPRESSIVE); + damage_goodhits = 0; // only every second time } self.minstanex_lasthit = damage_goodhits; @@ -39,130 +41,41 @@ void W_MinstaNex_Attack (void) // teamcolor / hit beam effect vector v; v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); - if(teamplay) + switch(self.team) { - switch(self.team) - { - case COLOR_TEAM1: // Red - if(damage_goodhits) - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3RED_HIT"), w_shotorg, v); - else - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3RED"), w_shotorg, v); - break; - case COLOR_TEAM2: // Blue - if(damage_goodhits) - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3BLUE_HIT"), w_shotorg, v); - else - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3BLUE"), w_shotorg, v); - break; - case COLOR_TEAM3: // Yellow - if(damage_goodhits) - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3YELLOW_HIT"), w_shotorg, v); - else - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3YELLOW"), w_shotorg, v); - break; - case COLOR_TEAM4: // Pink - if(damage_goodhits) - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3PINK_HIT"), w_shotorg, v); - else - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3PINK"), w_shotorg, v); - break; - } - } - else - WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, v); - - if (g_minstagib) - W_DecreaseAmmo(ammo_cells, 1, autocvar_g_balance_minstanex_reload_ammo); - else - W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_reload_ammo); -} - - -.float minstagib_nextthink; -.float minstagib_needammo; -void minstagib_stop_countdown(entity e) -{ - if (!e.minstagib_needammo) - return; - Send_CSQC_Centerprint_Generic_Expire(e, CPID_MINSTA_FINDAMMO); - e.minstagib_needammo = FALSE; -} -void minstagib_ammocheck(void) -{ - if (time < self.minstagib_nextthink) - return; - - if (self.deadflag || gameover) - minstagib_stop_countdown(self); - else if (self.ammo_cells > 0 || (self.items & IT_UNLIMITED_WEAPON_AMMO)) - { - minstagib_stop_countdown(self); - self.health = 100; - } - else - { - self.minstagib_needammo = TRUE; - if (self.health == 5) - { - Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "terminated"); - } - else if (self.health == 10) - { - Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "1"); - } - else if (self.health == 20) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "2"); - } - else if (self.health == 30) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "3"); - } - else if (self.health == 40) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "4"); - } - else if (self.health == 50) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "5"); - } - else if (self.health == 60) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "6"); - } - else if (self.health == 70) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "7"); - } - else if (self.health == 80) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - AnnounceTo(self, "8"); - } - else if (self.health == 90) - { - 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) - { - 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"); - } + case NUM_TEAM_1: // Red + if(damage_goodhits) + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3RED_HIT"), w_shotorg, v); + else + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3RED"), w_shotorg, v); + break; + case NUM_TEAM_2: // Blue + if(damage_goodhits) + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3BLUE_HIT"), w_shotorg, v); + else + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3BLUE"), w_shotorg, v); + break; + case NUM_TEAM_3: // Yellow + if(damage_goodhits) + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3YELLOW_HIT"), w_shotorg, v); + else + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3YELLOW"), w_shotorg, v); + break; + case NUM_TEAM_4: // Pink + if(damage_goodhits) + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3PINK_HIT"), w_shotorg, v); + else + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3PINK"), w_shotorg, v); + break; + default: + if(damage_goodhits) + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3_HIT"), w_shotorg, v); + else + WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, v); + break; } - self.minstagib_nextthink = time + 1; + + W_DecreaseAmmo(ammo_cells, ((g_minstagib) ? 1 : autocvar_g_balance_minstanex_ammo), autocvar_g_balance_minstanex_reload_ammo); } void spawnfunc_weapon_minstanex (void); // defined in t_items.qc @@ -173,10 +86,7 @@ float w_minstanex(float req) float minstanex_ammo; // now multiple WR_s use this - if(g_minstagib) - minstanex_ammo = 1; - else - minstanex_ammo = autocvar_g_balance_minstanex_ammo; + minstanex_ammo = ((g_minstagib) ? 1 : autocvar_g_balance_minstanex_ammo); if (req == WR_AIM) { @@ -271,6 +181,14 @@ float w_minstanex(float req) W_Reload(used_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav"); } + else if (req == WR_SUICIDEMESSAGE) + { + return WEAPON_THINKING_WITH_PORTALS; + } + else if (req == WR_KILLMESSAGE) + { + return WEAPON_MINSTANEX_MURDER; + } return TRUE; } #endif @@ -289,10 +207,6 @@ float w_minstanex(float req) { precache_sound("weapons/neximpact.wav"); } - else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = _("%s is now thinking with portals"); - else if (req == WR_KILLMESSAGE) - w_deathtypestring = _("%s has been vaporized by %s's minstanex"); return TRUE; } #endif