sin-sdk/magnum.cpp

207 lines
5.1 KiB
C++

//-----------------------------------------------------------------------------
//
// $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();
}