//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/magnum.cpp                       $
// $Revision:: 46                                                             $
//   $Author:: Markd                                                          $
//     $Date:: 11/13/98 3:30p                                                 $
//
// Copyright (C) 1998 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/magnum.cpp                            $
// 
// 46    11/13/98 3:30p Markd
// put in more precaching on weapons
// 
// 45    10/19/98 12:06a Jimdose
// made all code use fast checks for inheritance (no text lookups when
// possible)
// isSubclassOf no longer requires ::_classinfo()
// Added Drop
// 
// 44    10/05/98 10:38p Aldie
// Fixed rank
// 
// 43    10/05/98 10:18p Aldie
// Covnverted over to new silencer methods
// 
// 42    8/06/98 10:53p Aldie
// Added weapon tweaks and kickback.  Also modified blast radius damage and
// rocket jumping.
// 
// 41    8/01/98 3:24p Aldie
// Added server effects flag for specific weapons
// 
// 40    8/01/98 3:03p Aldie
// Client side muzzle flash (dynamic light)
// 
// 39    7/22/98 9:57p Markd
// Defined weapon type
// 
// 38    7/21/98 1:10p Aldie
// Added meansofdeath to obituaries
// 
// 37    7/20/98 3:53p Aldie
// Fixed the icon
// 
// 36    7/14/98 5:50p Aldie
// Tweaked the magnum
// 
// 35    6/25/98 7:31p Aldie
// Changed the icon
// 
// 34    6/24/98 1:36p Aldie
// Implementation of inventory system and picking stuff up
// 
// 33    6/19/98 9:30p Jimdose
// Moved gun orientation code to Weapon
// 
// 32    6/17/98 10:54a Aldie
// Updated silenced stuff
// 
// 31    6/15/98 9:09p Aldie
// Added SilencedBullet class for silencers
// 
// 30    6/10/98 7:53p Markd
// reduced time till next attack
// 
// 29    6/10/98 2:10p Aldie
// Updated damage function.
// 
// 28    6/10/98 1:19p Markd
// Made magnum use 10mm bullets instead of 357
// 
// 27    6/08/98 8:18p Markd
// set ammo_clip_size
// 
// 26    5/08/98 2:56p Markd
// took out dbshotgn sound
// 
// 25    4/20/98 1:56p Markd
// SINED decelration is now in def file
// 
// 24    4/18/98 3:07p Markd
// Changed view weapon naming convention
// 
// 23    4/16/98 7:46p Aldie
// Updated magnum to 100 bullets temporarily
// 
// 22    4/09/98 3:28p Jimdose
// Removed sound from shoot since anim plays it
// 
// 21    4/07/98 6:43p Jimdose
// Rewrote weapon code.
// Added order to rank
// 
// 20    4/02/98 4:48p Jimdose
// Balanced for DM
// 
// 19    3/30/98 9:55p Jimdose
// Changed location of .def files
// 
// 18    3/30/98 2:33p Jimdose
// Moved firing to BulletWeapon to make more general
// Added Ammo
// Added world models
// 
// 17    3/29/98 9:41p Jimdose
// Reduced the amount of damage bullets do
// 
// 16    3/27/98 11:03p Jimdose
// Added muzzle flash
// 
// 15    3/26/98 8:17p Jimdose
// Precached sounds
// 
// 14    3/23/98 1:31p Jimdose
// Revamped event and command system
// 
// 13    3/18/98 2:39p Jimdose
// Added the new model and made work with the new animation system
// 
// 12    3/05/98 5:44p Aldie
// Removed gunshot temporarily.
// 
// 11    3/02/98 8:49p Jimdose
// Changed the classid parameter of CLASS_DECLARATION to a quoted string so
// that you could have a NULL classid.
// 
// 10    2/19/98 2:35p Jimdose
// Updated to work with Q2 based progs
// 
// 8     12/11/97 7:41p Markd
// moved note processing into setmodel
// 
// 7     12/09/97 7:47p Markd
// Moved some of the init stuff above the initial init call
// 
// 6     11/18/97 5:31p Markd
// Changed Fire to Shoot
// Got rid of some thinking funciotns
// 
// 5     10/31/97 4:28p Jimdose
// Removed redefinition of owner in base class Weapon, so any reference to
// gunoffset through owner had to use type overriding.
// 
// 4     10/30/97 6:55p Jimdose
// Increased the damage for testing
// 
// 3     10/28/97 8:36p Jimdose
// Moved model
// 
// 2     10/24/97 8:13p Jimdose
// Created file.
//
// DESCRIPTION:
// Magnum.
// 

#include "g_local.h"
#include "magnum.h"

CLASS_DECLARATION( BulletWeapon, Magnum, "weapon_magnum" );

ResponseDef Magnum::Responses[] =
	{
	   { &EV_Weapon_Shoot, ( Response )&Magnum::Shoot },
		{ NULL, NULL }
	};

Magnum::Magnum()
	{
	SetModels( "magnum.def", "view_magnum.def" );
	SetAmmo( "Bullet10mm", 1, 100 );
	SetRank( 20, 20 );	
   SetType( WEAPON_1HANDED );
   modelIndex( "10mm.def" );
   silenced = true;
	}

void Magnum::Shoot
	(
	Event *ev
	)

	{
	NextAttack( 0.20 );
	FireBullets( 1, "10 10 10", 12, 24, DAMAGE_BULLET, MOD_MAGNUM, false );
	}

qboolean Magnum::Drop
   (
   void
   )

   {
   // Don't leave magnums around
   if ( owner && owner->deadflag && deathmatch->value )
      {
      return false;
      }

   return BulletWeapon::Drop();
   }
