Guest User

Insta-Brink, headless corpses, muzzle flashes akimbo

a guest
Jul 25th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff -r 424c0d946ec9 qblood/progs/client.qc
  2. --- a/qblood/progs/client.qc    Thu May 09 17:12:34 2013 +0200
  3. +++ b/qblood/progs/client.qc    Thu Jul 25 23:03:32 2013 -0500
  4. @@ -712,7 +712,7 @@
  5.         return;
  6.  
  7.     bprint3("Kevorkian approves ", self.netname, "!\n");
  8. -   sound(self, CHAN_AUTO, "thevoice/vo5.wav", 1, ATTN_NORM);
  9. +   self.noise1 = "thevoice/vo5.wav";
  10.     CTF_PlayerDropFlag();
  11.     self.modelindex = modelindex_player;
  12.     self.health = 0;
  13. @@ -1168,7 +1168,7 @@
  14.         // Play the obituary sound
  15.         if (self.noise1)
  16.         {
  17. -           sound(self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
  18. +           sound(self, CHAN_VOICE, self.noise1, 1, ATTN_NONE);
  19.             self.noise1 = string_null;
  20.         }
  21.  
  22. @@ -1685,12 +1685,11 @@
  23.         // These ones are considered cheats and are only allowed when the "sv_cheats" cvar is set
  24.         else if (cvar("sv_cheats"))
  25.         {
  26. -#if !defined(NO_FRIKBOT)
  27. +#ifndef NO_FRIKBOT
  28.             if (self.impulse == IMP_BOT_CAM)
  29.                 botcam_u();
  30.             else if (self.impulse == IMP_BOT_WAYPT_EDIT)
  31.                 bot_way_edit();
  32. -           else
  33.  #endif
  34.         }
  35.     }
  36. @@ -1814,7 +1813,17 @@
  37.     if (self.player_state >= PS_BOD_FALL && self.player_state <= PS_BOD_SWAY)
  38.     {
  39.         if (self.t_length < time)
  40. -           Player_LiveAgain();
  41. +       {
  42. +           self.health = 0;
  43. +           self.player_state = PS_BOD_DEATH;
  44. +           ClientObituary(self.oldenemy);
  45. +           self.takedamage = DAMAGE_NO;
  46. +           PlayerDie();
  47. +       }
  48. +       else if (self.t_length-1 <= time)
  49. +           if (self.button4 && !self.oldbutton4)
  50. +               if (random() < 0.024)
  51. +                   Player_LiveAgain();
  52.         ResetIdle(self);
  53.         return;
  54.     }
  55. @@ -1851,7 +1860,7 @@
  56.  
  57.     bprint2(self.netname, " entered the game\n");
  58.  
  59. -   sound(self, CHAN_AUTO, "thevoice/vo1.wav", 1, ATTN_NORM); // Let the Bloodbath Begin!
  60. +   sound(self, CHAN_AUTO, "thevoice/vo1.wav", 1, ATTN_NONE); // Let the Bloodbath Begin!
  61.     self.do_observer = 1;
  62.  
  63.     // Reset the votes
  64. @@ -2019,6 +2028,7 @@
  65.             // killed self in a dumb fashion
  66.             Cl_UpdatePlayerFrags(attacker, -1);
  67.  
  68. +           if (self.noise1 != "thevoice/vo5.wav") { // Kevorkian
  69.             if (rnum < 0.33)
  70.             {
  71.                 deathstring = " receives the Darwin Award\n";
  72. @@ -2036,6 +2046,7 @@
  73.             }
  74.  
  75.             bprint2(self.netname, deathstring);
  76. +           }
  77.             return;
  78.         }
  79.         else if (friendlyfire && self.team > 0 && self.team == attacker.team)
  80. @@ -2060,14 +2071,14 @@
  81.             Cl_UpdatePlayerFrags(attacker, 1);
  82.             rnum = random()*54;
  83.             if (rnum <= 1) BuildDeathString2(attacker, "thevoice/vo39.wav", " beat ", " like a cur"); // Beaten like a Cur
  84. -           else if (rnum <= 2) BuildDeathString(attacker, "thevoice/vo31.wav", " bobbettized "); // Bobbettized!
  85. +           else if (rnum <= 2) BuildDeathString(attacker, "thevoice/vo31.wav", " bobbittized "); // Bobbettized!
  86.             else if (rnum <= 3) BuildDeathString(attacker, "thevoice/vo24.wav", " destroyed "); // Destroyed!
  87.             else if (rnum <= 4) BuildDeathString2(attacker, "thevoice/vo36.wav", " butchered ", " into dog meat"); // Dog meat
  88.             else if (rnum <= 5) BuildDeathString(attacker, "thevoice/vo44.wav", " showed his excellence to "); // Excellent!
  89.             else if (rnum <= 6) BuildDeathString(attacker, "thevoice/vo22.wav", " made fine work of "); // Fine work
  90.             else if (rnum <= 7) BuildDeathString2(attacker, "thevoice/vo20.wav", " showed ", " how good he is"); // Good one
  91.             else if (rnum <= 8) BuildDeathString(attacker, "thevoice/vo33.wav", " scored on "); // He shoots! He scores!
  92. -           else if (rnum <= 8) BuildDeathString(attacker, "thevoice/vo25.wav", " hosed "); // Hosed!
  93. +           else if (rnum <= 9) BuildDeathString(attacker, "thevoice/vo25.wav", " hosed "); // Hosed!
  94.             else if (rnum <= 10) BuildDeathString(attacker, "thevoice/vo26.wav", " humiliated "); // Humiliated!
  95.             else if (rnum <= 11) BuildDeathString(attacker, "thevoice/vo21.wav", " made lunch meat with "); // Lunch meat!
  96.             else if (rnum <= 12) BuildDeathString(attacker, "thevoice/vo29.wav", " passed the chili to "); // Pass the chili!
  97. @@ -2075,7 +2086,7 @@
  98.             else if (rnum <= 14) BuildDeathString(attacker, "thevoice/vo38.wav", " ripped "); // Ripped 'em loose
  99.             else if (rnum <= 15) BuildDeathString2(attacker, "thevoice/vo28.wav", " sent ", " to hell!"); // Sent to HELL!
  100.             else if (rnum <= 16) BuildDeathString(attacker, "thevoice/vo41.wav", " snuffed "); // Snuffed!
  101. -           else if (rnum <= 17) BuildDeathString2(attacker, "thevoice/vo34.wav", " split ", "'s blood"); // Spillage!
  102. +           else if (rnum <= 17) BuildDeathString2(attacker, "thevoice/vo34.wav", " spilt ", "'s blood"); // Spillage!
  103.             else if (rnum <= 18) BuildDeathString(attacker, "thevoice/vo35.wav", " sprayed "); // Sprayed!
  104.             else if (rnum <= 19) BuildDeathString(attacker, "thevoice/vo32.wav", " stiffed "); // Stiffed!
  105.             else if (rnum <= 20) BuildDeathString2(attacker, "thevoice/vo19.wav", " dazzled ", " with his talent"); // Talented!
  106. @@ -2083,21 +2094,21 @@
  107.             else if (rnum <= 22) BuildDeathString(attacker, "thevoice/vo43.wav", " vaporized "); // Vaporized!
  108.             else if (rnum <= 23) BuildDeathString(attacker, "thevoice/vo23.wav", " did well with "); // Well done!
  109.             else if (rnum <= 24) BuildDeathString(attacker, "thevoice/vo40.wav", " whipped and creamed "); // Whipped and creamed!
  110. -           else if (rnum <= 25) BuildDeathString2(attacker, "thevoice/vo9.wav", " made ", " suffer scrotum seperation"); // Scrotum separation
  111. +           else if (rnum <= 25) BuildDeathString2(attacker, "thevoice/vo9.wav", " made ", " suffer scrotum separation"); // Scrotum separation
  112.             else if (rnum <= 26) BuildDeathString2(attacker, "thevoice/vo7.wav", " turned ", " into excrement"); // Excrement
  113.             else if (rnum <= 27) BuildDeathString2(attacker, "thevoice/vo8.wav", " turned ", " into hamburger"); // Hamburger
  114.             else if (rnum <= 28) BuildDeathString2(attacker, "thevoice/vo42.wav", " vented ", "'s spleen"); //Vented spleen
  115.             else if (rnum <= 29) BuildDeathString(attacker, "thevoice/vo10.wav", " body bagged "); //Boddy bagged
  116.             else if (rnum <= 30) BuildDeathString2(attacker, "thevoice/boned.wav", " boned ", " like a fish!"); //Boned
  117.             else if (rnum <= 31) BuildDeathString2(attacker, "thevoice/justice.wav", " gave ", " Anal Justice!"); //Anal Justice
  118. -           else if (rnum <= 32) BuildDeathString2(attacker, string_null, " hurt ", " real bad!"); //Hurt them real bad
  119. +           else if (rnum <= 32) BuildDeathString2(attacker, "thevoice/vo6.wav", " hurt ", " real bad!"); //Hurt them real bad
  120.             else if (rnum <= 33) BuildDeathString2(attacker, "thevoice/ripped.wav", " ripped ", " a new orifice!"); //Ripped
  121.             else if (rnum <= 34) BuildDeathString(attacker, "thevoice/castra.wav", " castrated "); //Castrated
  122.             else if (rnum <= 35) BuildDeathString(attacker, "thevoice/creamed.wav", " creamed "); //Creamed
  123.             else if (rnum <= 36) BuildDeathString(attacker, "thevoice/decimat.wav", " decimated "); //Decimated
  124.             else if (rnum <= 37) BuildDeathString(attacker, "thevoice/destro.wav", " destroyed "); //Destroyed
  125.             else if (rnum <= 38) BuildDeathString(attacker, "thevoice/diced.wav", " diced "); //Diced
  126. -           else if (rnum <= 39) BuildDeathString(attacker, "thevoice/disembo.wav", " disembowled "); //Disembowled
  127. +           else if (rnum <= 39) BuildDeathString(attacker, "thevoice/disembo.wav", " disemboweled "); //Disembowled
  128.             else if (rnum <= 40) BuildDeathString(attacker, "thevoice/flatte.wav", " flattened "); //Flattened
  129.             else if (rnum <= 41) BuildDeathString(attacker, "thevoice/killed.wav", " killed "); //Killed
  130.             else if (rnum <= 42) BuildDeathString(attacker, "thevoice/madness.wav", " gave AnAl MaDnEsS to "); //Anal madness
  131. @@ -2107,7 +2118,7 @@
  132.             else if (rnum <= 46) BuildDeathString(attacker, "thevoice/reamed.wav", " reamed "); //Reamed
  133.             else if (rnum <= 47) BuildDeathString(attacker, "thevoice/vo14.wav", " shat upon "); //Shat upon
  134.             else if (rnum <= 48) BuildDeathString(attacker, "thevoice/slaught.wav", " slaughtered "); //Slaughtered
  135. -           else if (rnum <= 49) BuildDeathString(attacker, "thevoice/cliced.wav", " sliced "); //Sliced
  136. +           else if (rnum <= 49) BuildDeathString(attacker, "thevoice/sliced.wav", " sliced "); //Sliced
  137.             else if (rnum <= 50) BuildDeathString(attacker, "thevoice/smashed.wav", " smashed "); //Smashed
  138.             else if (rnum <= 51) BuildDeathString(attacker, "thevoice/sodomiz.wav", " sodomized "); //Sodomized
  139.             else if (rnum <= 52) BuildDeathString(attacker, "thevoice/splatt.wav", " splattered "); //Splattered
  140. diff -r 424c0d946ec9 qblood/progs/combat.qc
  141. --- a/qblood/progs/combat.qc    Thu May 09 17:12:34 2013 +0200
  142. +++ b/qblood/progs/combat.qc    Thu Jul 25 23:03:32 2013 -0500
  143. @@ -78,8 +78,10 @@
  144.     oself = self;
  145.     self = targ;
  146.  
  147. +#if 0
  148.     if (self.health < 0)
  149.         self.health = 0;      // Blood had no negative sign, so nothing below 0
  150. +#endif
  151.  
  152.  #ifndef NO_FRIKBOT
  153.  
  154. @@ -185,6 +187,7 @@
  155.     local   float   save;
  156.     local   float   take;
  157.     local   float   protected;  // PM:  Boolean for invulnerability.
  158. +   local   float   bodhealth;
  159.  
  160.     if (!targ.takedamage)
  161.         return;
  162. @@ -471,8 +474,12 @@
  163.     // Do the damage.
  164.     targ.health = targ.health - take;
  165.  
  166. +   if (cvar("g_instabrink"))
  167. +       bodhealth = 99;
  168. +   else
  169. +       bodhealth = 1;
  170.     if (targ.health >= -1                   && // If a player reaches between -1 and 1 HP (Brink Of Death)
  171. -       targ.health <= 1                    &&
  172. +       targ.health <= bodhealth            &&
  173.         targ.classname == "player"          && // BOD can only be done player to player
  174.         attacker.classname == "player"      &&
  175.         targ.player_state != PS_BOD_FALL    && // If he wasn't already on the Brink Of Death
  176. diff -r 424c0d946ec9 qblood/progs/defs.qc
  177. --- a/qblood/progs/defs.qc  Thu May 09 17:12:34 2013 +0200
  178. +++ b/qblood/progs/defs.qc  Thu Jul 25 23:03:32 2013 -0500
  179. @@ -352,6 +352,7 @@
  180.  .float      charge;
  181.  .float      tnt_time;
  182.  .float      tnt_type;
  183. +.float      remote_type;
  184.  
  185.  .float      idle_time;
  186.  .float      idle_done;
  187. diff -r 424c0d946ec9 qblood/progs/items.qc
  188. --- a/qblood/progs/items.qc Thu May 09 17:12:34 2013 +0200
  189. +++ b/qblood/progs/items.qc Thu Jul 25 23:03:32 2013 -0500
  190. @@ -1439,6 +1439,7 @@
  191.  
  192.  void() precache_flaregun =
  193.  {
  194. +   precache_model("models/weapons/objects/muzzle_flare.spr32");
  195.     precache_model("models/weapons/v_flare.psk");
  196.     precache_model("models/weapons/g_flare.md3");
  197.     precache_model("models/weapons/ga_flare.psk");  // akimbo model
  198. @@ -1659,6 +1660,7 @@
  199.  
  200.  void() precache_napalmlauncher =
  201.  {
  202. +   precache_model("models/weapons/objects/muzzle_napalm_2.spr32");
  203.     precache_model("models/weapons/v_napalm.psk");
  204.     precache_model("models/weapons/ga_napalm.psk");
  205.     precache_model("models/weapons/g_napalm.md3");
  206. diff -r 424c0d946ec9 qblood/progs/player.qc
  207. --- a/qblood/progs/player.qc    Thu May 09 17:12:34 2013 +0200
  208. +++ b/qblood/progs/player.qc    Thu Jul 25 23:03:32 2013 -0500
  209. @@ -25,6 +25,8 @@
  210.  void(float cloneCorpse) respawn;
  211.  void(entity ent) CloneCorpse;
  212.  void() Player_Idle;
  213. +void() GibPlayerCorpse;
  214. +void() FadeAway;
  215.  
  216.  /*
  217.  ==============================================================================
  218. @@ -60,9 +62,10 @@
  219.     // so that attackers will have the time to stop firing
  220.     player.takedamage = DAMAGE_NO;
  221.  
  222. -   player.t_length = time + 15;  // the effect will last 15 sec
  223. +   player.t_length = time + 5;  // the effect will last 5 sec
  224.     sound(player, CHAN_VOICE, "thevoice/vo15.wav", 1, ATTN_NONE);
  225.     centerprint(player, "YOU ARE ON THE BRINK OF DEATH!!");
  226. +   player.oldenemy = attacker;
  227.     // If there's a real attacker (not a BOD triggered by cheat code)
  228.     if (attacker != world)
  229.         centerprint(attacker, "FINISH HIM!!");
  230. @@ -70,6 +73,7 @@
  231.  
  232.  void() Player_LiveAgain =
  233.  {
  234. +   self.takedamage = DAMAGE_AIM;
  235.     sound(self, CHAN_VOICE, "player/taunts/t1010.wav", 1, ATTN_NORM);  // I live ... again!
  236.     Player_Idle();
  237.     W_DrawWeapon(self.weapon);
  238. @@ -477,6 +481,7 @@
  239.     {
  240.         self.nextthink = -1;
  241.         GibPlayer();
  242. +       self.health = 0;
  243.         return;
  244.     }
  245.  
  246. @@ -488,33 +493,47 @@
  247.     // If the player was on the Brink Of Death
  248.     if (self.player_state >= PS_BOD_FALL && self.player_state <= PS_BOD_SWAY)
  249.     {
  250. +#if 0
  251.         // If the head is removed in the process
  252.         if (self.health < -10)
  253.         {
  254. +#endif
  255.             // The player entity will be the head, so we must
  256.             // create a new entity for the corpse
  257.             player_head = self;
  258.             self = spawn();
  259.             setmodel(self, player_head.model);
  260.             setorigin(self, player_head.origin);
  261. -           setsize(self, player_head.mins, player_head.maxs);
  262. +           setsize(self, '-16 -16 -20', '16 16 -15');
  263.             self.angles = player_head.angles;
  264.             self.frame = player_head.frame;
  265.             self.skin = player_head.skin;
  266.             self.colormap = player_head.colormap;
  267. -           self.movetype = player_head.movetype;
  268. +           self.movetype = MOVETYPE_TOSS;
  269.             self.velocity = player_head.velocity;
  270.             self.player_state = PS_HEADLESS_DEATH;
  271. +           self.classname = "corpse";
  272. +           self.health = 100;
  273. +           self.th_die = GibPlayerCorpse;
  274. +           self.solid = SOLID_BBOX;
  275. +           self.takedamage = DAMAGE_AIM;
  276. +           self.reset = SUB_Remove;
  277. +           self.think = player_head.think;
  278. +           self.nextthink = player_head.nextthink;
  279.  
  280.             self = player_head;
  281.             self.deadflag = DEAD_DEAD;
  282.             ThrowHead("progs/h_player.mdl", self.health);
  283. +#if 0
  284.         }
  285.         else
  286.             self.player_state = PS_BOD_DEATH;
  287. +#endif
  288.     }
  289.     else
  290.         self.player_state = PS_DEATH;
  291. +   if (self.health < 0)
  292. +       self.health = 0;
  293.  };
  294.  
  295.  // used by kill command and disconnect command
  296. @@ -714,7 +733,9 @@
  297.     {
  298.         if (self.frame == PLAYER_DEATH_HEADLESS_END)
  299.         {
  300. -           self.think = SUB_Remove;
  301. +           self.nextthink = time + 30;
  302. +           self.think = FadeAway;
  303. +           self.oldorigin = self.origin;
  304.             return;
  305.         }
  306.  
  307. diff -r 424c0d946ec9 qblood/progs/w_bomb.qc
  308. --- a/qblood/progs/w_bomb.qc    Thu May 09 17:12:34 2013 +0200
  309. +++ b/qblood/progs/w_bomb.qc    Thu Jul 25 23:03:32 2013 -0500
  310. @@ -113,6 +113,8 @@
  311.     // Don't let grenade explode twice.
  312.     self.takedamage = DAMAGE_NO;
  313.  
  314. +   self.owner = self.enemy;
  315. +
  316.     if (self.netname == "Napalm Ball")
  317.     {
  318.         local   float   radius, damage, burn;
  319. diff -r 424c0d946ec9 qblood/progs/w_napalm.qc
  320. --- a/qblood/progs/w_napalm.qc  Thu May 09 17:12:34 2013 +0200
  321. +++ b/qblood/progs/w_napalm.qc  Thu Jul 25 23:03:32 2013 -0500
  322. @@ -242,6 +242,8 @@
  323.         newmis.reset = SUB_Remove;
  324.     }
  325.     muzzleflash(RIGHT);
  326. +   if (self.owner.items & IT_GUNS_AKIMBO)
  327. +       muzzleflash(LEFT);
  328.     if (!(self.owner.flags & FL_INFINATE_AMMO))
  329.         self.owner.currentammo = self.owner.ammo_rockets;
  330.     setorigin(newmis, W_Origin() + v_forward * 18 + v_right * 3 + v_up * -8);
  331. diff -r 424c0d946ec9 qblood/progs/w_remote_tnt.qc
  332. --- a/qblood/progs/w_remote_tnt.qc  Thu May 09 17:12:34 2013 +0200
  333. +++ b/qblood/progs/w_remote_tnt.qc  Thu Jul 25 23:03:32 2013 -0500
  334. @@ -60,7 +60,7 @@
  335.  {
  336.     if (self.button0)
  337.     {
  338. -       if (self.weaponentity.tnt_type) // We only have the remote
  339. +       if (self.weaponentity.remote_type) // We only have the remote
  340.         {
  341.             self.button0 = 0;
  342.             sound(self, CHAN_WEAPON, "weapons/tnt/remfire.wav", 1, ATTN_NORM);
  343. @@ -85,9 +85,9 @@
  344.             ShowThrowMeter();
  345.         }
  346.     }
  347. -   else if (self.button3)// Altfire
  348. +   else if (self.button3 && self.currentammo > 0)// Altfire
  349.     {
  350. -       if (self.weaponentity.tnt_type) // If we only have a remote, draw another bomb
  351. +       if (self.weaponentity.remote_type) // If we only have a remote, draw another bomb
  352.         {
  353.             self.weaponentity.anim_type = HALF_DRAW;
  354.             self.weaponentity.attack_finished = time + REMOTE_DRAW_TIME;
  355. @@ -98,7 +98,7 @@
  356.             self.weaponentity.charge = 0;
  357.             self.weaponentity.attack_finished = time + REMOTE_DROP_TIME;
  358.             self.weaponentity.anim_type = IDLE_WITH_REMOTE;
  359. -           self.weaponentity.tnt_type = REMOTE_ONLY;
  360. +           self.weaponentity.remote_type = REMOTE_ONLY;
  361.             self.player_state = PS_FIRE;
  362.             Bomb_Fire();
  363.             Bomb_Uncharge();
  364. @@ -122,9 +122,16 @@
  365.     Remote_UpdateView();
  366.     self.weaponentity.attack_finished = time + REMOTE_DRAW_TIME;
  367.     self.player_state = PS_DRAW;
  368. -   self.weaponentity.tnt_type = REMOTE_AND_BOMB;
  369. -   self.weaponentity.anim_type = DRAW;
  370. -   self.weaponentity.frame = REMOTE_DRAW_START;
  371. +   if (self.weaponentity.remote_type)
  372. +   {
  373. +       self.weaponentity.anim_type = IDLE_WITH_REMOTE;
  374. +       self.weaponentity.frame = REMOTE_THROW_END;
  375. +   }
  376. +   else
  377. +   {
  378. +       self.weaponentity.anim_type = DRAW;
  379. +       self.weaponentity.frame = REMOTE_DRAW_START;
  380. +   }
  381.     self.weaponentity.skin = 1;
  382.     self.weaponentity.nextthink = time;
  383.     self.weaponentity.think = remote_animate;
  384. @@ -140,7 +147,7 @@
  385.  void() Remote_Holster =
  386.  {
  387.     self.weaponentity.attack_finished = time + REMOTE_HOLSTER_TIME;
  388. -   if (self.weaponentity.tnt_type) //Only holding a remote
  389. +   if (self.weaponentity.remote_type) //Only holding a remote
  390.         self.weaponentity.anim_type = HALF_HOLSTER;
  391.     else
  392.         self.weaponentity.anim_type = HOLSTER;
  393. @@ -173,7 +180,7 @@
  394.  
  395.     //self.weaponentity.attack_finished = time + 0.5; // don't throw instantly after detonating.
  396.     self.owner.button0 = 0;
  397. -   self.weaponentity.tnt_type = REMOTE_AND_BOMB;
  398. +   self.weaponentity.remote_type = REMOTE_AND_BOMB;
  399.     self.weaponentity.charge = 0;
  400.  
  401.     self.weaponentity.nextthink = time;
  402. @@ -306,13 +313,13 @@
  403.     else // ammo_in_chamber == 1
  404.         self.weaponentity.skin = self.weaponentity.skin - 1;
  405.  
  406. -   if (self.owner.button0 && !self.weaponentity.tnt_type) // we have a bomb in hand and holding fire
  407. +   if (self.owner.button0 && !self.weaponentity.remote_type) // we have a bomb in hand and holding fire
  408.     {
  409.         if (self.weaponentity.charge < 20)
  410.             self.weaponentity.charge = self.weaponentity.charge + 1;
  411.         ShowThrowMeter();
  412.     }
  413. -   else if (self.weaponentity.charge && !self.weaponentity.tnt_type)
  414. +   else if (self.weaponentity.charge && !self.weaponentity.remote_type)
  415.     {
  416.         self.weaponentity.anim_type = THROW;
  417.         self.weaponentity.attack_finished = time + REMOTE_THROW_TIME - 0.4; //- 0.4 so we can det it nearly quickly.
  418. @@ -326,7 +333,7 @@
  419.         {
  420.             Bomb_Fire();
  421.             Bomb_Uncharge();
  422. -           self.weaponentity.tnt_type = REMOTE_ONLY;
  423. +           self.weaponentity.remote_type = REMOTE_ONLY;
  424.         }
  425.         else if (self.weaponentity.frame == REMOTE_THROW_END)
  426.             self.weaponentity.anim_type = IDLE_WITH_REMOTE;
  427. diff -r 424c0d946ec9 qblood/progs/w_shotgun.qc
  428. --- a/qblood/progs/w_shotgun.qc Thu May 09 17:12:34 2013 +0200
  429. +++ b/qblood/progs/w_shotgun.qc Thu Jul 25 23:03:32 2013 -0500
  430. @@ -436,12 +436,12 @@
  431.     {
  432.         if (self.weaponentity.frame == SHOTGUN_AKIMBO_FIRE_START)
  433.         {
  434. -           muzzleflash(LEFT);
  435. +           muzzleflash(RIGHT);
  436.             Shotgun_Fire();
  437.         }
  438.         else if (self.weaponentity.frame == SHOTGUN_AKIMBO_FIRE_START + 2)
  439.         {
  440. -           muzzleflash(RIGHT);
  441. +           muzzleflash(LEFT);
  442.             Shotgun_Fire();
  443.         }
  444.         else if (self.weaponentity.frame == SHOTGUN_AKIMBO_FIRE_END)
  445. @@ -472,7 +472,9 @@
  446.     {
  447.         if (self.weaponentity.frame == SHOTGUN_AKIMBO_ALTFIRE_START)
  448.         {
  449. +           muzzleflash(RIGHT);
  450.             Shotgun_Fire();
  451. +           muzzleflash(LEFT);
  452.             Shotgun_Fire();
  453.         }
  454.         else if (self.weaponentity.frame == SHOTGUN_AKIMBO_ALTFIRE_END)
  455. diff -r 424c0d946ec9 qblood/progs/weapons.qc
  456. --- a/qblood/progs/weapons.qc   Thu May 09 17:12:34 2013 +0200
  457. +++ b/qblood/progs/weapons.qc   Thu Jul 25 23:03:32 2013 -0500
  458. @@ -103,14 +103,40 @@
  459.  
  460.     local string sprite;
  461.  
  462. +   makevectors(self.v_angle);
  463.     if (self.owner.weapon == IT_FLAREGUN)
  464.     {
  465.  
  466. +       sprite = "models/weapons/objects/muzzle_flare.spr32";
  467. +       setmodel(muzzle, sprite);
  468. +       muzzle.alpha = 0.7;
  469. +       if (has_akimbo)
  470. +       {
  471. +           muzzle.scale = 0.4;
  472. +           if (hand == RIGHT)
  473. +               setorigin(muzzle, self.weaponentity.origin + v_up * -15);
  474. +       }
  475. +       else
  476. +       {
  477. +           muzzle.scale = 0.6;
  478. +           setorigin(muzzle, self.weaponentity.origin + v_up * -15);
  479. +       }
  480. +       muzzle.frame = 0;
  481. +       muzzle.nextthink = time + 0.1;
  482. +       muzzle.think = muzzle_animate;
  483. +       muzzle.th_die = muzzle_remove;
  484.     }
  485.     else if (self.owner.weapon == IT_SAWED_OFF)
  486.     {
  487.         if (has_akimbo)
  488.         {
  489. +           if (hand == LEFT)
  490. +               setattachment(muzzle, self.weaponentity, "Muzzle_L");
  491. +           else
  492. +               setattachment(muzzle, self.weaponentity, "Muzzle_R");
  493. +           setorigin(muzzle, self.weaponentity.origin + v_right * -13 + v_up * -4);
  494. +           muzzle.scale = 0.65;
  495. +#if 0
  496.             sprite = "models/weapons/objects/muzzle_shotgun.spr32";
  497.             setmodel(muzzle, sprite);
  498.             muzzle.scale = 0.45;
  499. @@ -119,6 +145,7 @@
  500.             muzzle.nextthink = time + 0.1;
  501.             muzzle.think = muzzle_animate;
  502.             muzzle.th_die = muzzle_remove;
  503. +#endif
  504.         }
  505.         else
  506.         {
  507. @@ -133,18 +160,19 @@
  508.                 if (self.weaponentity.ammo_in_chamber == 2)
  509.                 {
  510.                     setattachment(muzzle, self.weaponentity, "Muzzle_L");
  511. -                   setorigin(muzzle, '0 0 0' + v_right * -10.6);
  512. +                   setorigin(muzzle, self.weaponentity.origin + v_right * -10.6);
  513.                 }
  514.                 else
  515.                 {
  516.                     setattachment(muzzle, self.weaponentity, "Muzzle_R");
  517. -                   setorigin(muzzle, '0 0 0' + v_right * -10.4);
  518. +                   setorigin(muzzle, self.weaponentity.origin + v_right * -10.4);
  519.                 }
  520.                 muzzle.scale = 0.45;
  521.             }
  522.         }
  523.         sprite = "models/weapons/objects/muzzle_shotgun.spr32";
  524.         setmodel(muzzle, sprite);
  525. +       muzzle.alpha = 0.6;
  526.         muzzle.frame = 0;
  527.         muzzle.anim_end = 1;
  528.         muzzle.nextthink = time + 0.1;
  529. @@ -845,6 +873,7 @@
  530.  
  531.     /* if you only have a pitchfork drawn, you can draw the Napalm Launcher
  532.         otherwise it won't draw if you run out of ammo of any other weapon */
  533. +   if (self.ammo_rockets >= 1)
  534.     if (self.weapon == IT_PITCHFORK && it & IT_NAPALM_LAUNCHER)
  535.         return IT_NAPALM_LAUNCHER;
  536.  
  537. @@ -1065,6 +1094,13 @@
  538.  {
  539.     local float am, newWeapon;
  540.  
  541. +   if (!self.weapon)
  542. +   {
  543. +       self.impulse = IMP_PITCHFORK;
  544. +       W_ChangeWeapon();
  545. +       return;
  546. +   }
  547. +
  548.     newWeapon = self.weapon;
  549.  
  550.     // Don't let player change weapons while holding lit dynamite.
  551. @@ -1201,7 +1237,7 @@
  552.  
  553.     if (!W_AmmoAvailable() && self.weapon) //self.weapon is a check for dropping your weapons such as TNT self-explosion.
  554.     {
  555. -       if ((self.player_state != PS_HOLD_FIRE) && (self.weaponentity.tnt_type != REMOTE_ONLY))
  556. +       if ((self.player_state != PS_HOLD_FIRE) && (self.weapon != IT_REMOTE_DETONATOR))
  557.         {
  558.             W_SwitchToWeapon(W_BestWeapon());
  559.             return;
  560. diff -r 424c0d946ec9 qblood/progs/world.qc
  561. --- a/qblood/progs/world.qc Thu May 09 17:12:34 2013 +0200
  562. +++ b/qblood/progs/world.qc Thu Jul 25 23:03:32 2013 -0500
  563. @@ -54,6 +54,12 @@
  564.     precache_model("models/objects/m_leg.md3");
  565.     precache_model("models/objects/m_eyeball.md3");
  566.     precache_model("models/objects/m_hand.md3");
  567. +   precache_model("models/objects/glass1.md3");
  568. +   precache_model("models/objects/glass2.md3");
  569. +   precache_model("models/objects/glass3.md3");
  570. +   precache_model("models/objects/rubble1.md3");
  571. +   precache_model("models/objects/rubble2.md3");
  572. +   precache_model("models/objects/rubble3.md3");
  573.  
  574.     precache_model("progs/s_explod.spr");  // napalm sprite explosion
  575.  };
  576. @@ -167,6 +173,7 @@
  577.     precache_sound("thevoice/vo42.wav");
  578.     precache_sound("thevoice/vo43.wav");
  579.     precache_sound("thevoice/vo44.wav");
  580. +   precache_sound("thevoice/vo6.wav");
  581.     precache_sound("thevoice/vo7.wav");
  582.     precache_sound("thevoice/vo8.wav");  // Hamburger
  583.     precache_sound("thevoice/vo9.wav");
  584. @@ -295,6 +302,7 @@
  585.  
  586.     // Create our own cvars as soon as possible
  587.     registercvar("g_flashyEffects", "0");
  588. +   registercvar("g_instabrink", "0");
  589.     registercvar("g_lockTeams", "0");
  590.     registercvar("g_warmup", "0");
  591.     registercvar("g_weaponStay", "0");
Advertisement
Add Comment
Please, Sign In to add comment