亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? spidermine.cpp

?? this keik game source
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/spidermine.cpp                      $
// $Revision:: 49                                                             $
//   $Author:: Jimdose                                                        $
//     $Date:: 11/18/98 1:27a                                                 $
//
// 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/spidermine.cpp                           $
// 
// 49    11/18/98 1:27a Jimdose
// Fixed sliding and orientation issues with gravaxis
// 
// 48    11/16/98 9:44p Jimdose
// fixed sticking on alternate gravaxis
// 
// 47    11/16/98 3:12a Jimdose
// mine takes gravity of owner
// 
// 46    11/15/98 10:31p Jimdose
// view of spidermine is now towards direction it's moving
// 
// 45    11/13/98 8:00p Markd
// Fixed spider mine bug with owner being reset to world too soon
// 
// 44    11/13/98 3:30p Markd
// put in more precaching on weapons
// 
// 43    11/13/98 2:35a Aldie
// Lowered the rank of spidermines
// 
// 42    11/11/98 5:12p Aldie
// Spidermine fix when player dies - don't drop it
// 
// 41    11/09/98 2:52a Aldie
// increase health
// 
// 40    11/09/98 12:12a Aldie
// Made it so you can reclaim your mines when you die, and mines are now shootable
// 
// 39    10/26/98 2:50p Aldie
// Fixed a bug with checking of NULL owners
// 
// 38    10/24/98 12:42a Markd
// changed origins to worldorigins where appropriate
// 
// 37    10/22/98 7:57p Markd
// put in proper pre-caching in all the classes
// 
// 36    10/22/98 4:33p Aldie
// Fix for spidermine and detonators
// 
// 35    10/21/98 12:09a Aldie
// Removed friction
// 
// 34    10/20/98 8:26p Markd
// Added Attacker to DamageSurface stuff
// 
// 33    10/19/98 12:07a Jimdose
// made all code use fast checks for inheritance (no text lookups when possible)
// isSubclassOf no longer requires ::_classinfo()
// 
// 32    10/16/98 10:22p Aldie
// Updated single player damage settings
// 
// 31    10/16/98 2:30p Aldie
// Check for NULL detonator
// 
// 30    10/10/98 9:14p Aldie
// Damage tweak and detonator tweak
// 
// 29    10/10/98 7:14p Aldie
// Tweaked damage
// 
// 28    10/08/98 12:03a Jimdose
// Got rid of unused variables speed and direction from Mine
// 
// 27    10/05/98 10:20p Aldie
// Changed damage a bit
// 
// 26    10/02/98 5:47p Aldie
// Add MOD to RadiusDamage
// 
// 25    9/18/98 8:14p Markd
// rewrote surface system so that surfaces are now damaged by surface name instead
// of by surfinfo
// 
// 24    9/13/98 8:37p Aldie
// Don't autoswitch to detonator
// 
// 23    9/11/98 3:19p Aldie
// Make mines bounce of entities that take damage.
// 
// 22    9/05/98 12:13p Aldie
// Made explosion driven by animation of the spidermine.
// 
// 21    9/01/98 7:53p Aldie
// Removed sound error
// 
// 20    9/01/98 7:46p Aldie
// Added area checking for spidermines
// 
// 19    9/01/98 3:05p Markd
// Rewrote explosion code
// 
// 18    8/29/98 9:46p Jimdose
// Added call info to G_Trace
// 
// 17    8/27/98 2:31p Aldie
// Fix for dead owner
// 
// 16    8/26/98 6:19p Aldie
// Update fov to 120 and remove the proximity stuff
// 
// 15    8/25/98 7:39p Aldie
// Made spidermine immediately switch to detonator.
// 
// 14    8/25/98 5:29p Aldie
// New version of the spidermine which uses cameras
// 
// 13    8/22/98 9:36p Jimdose
// Added support for alternate gravity axis
// 
// 12    8/18/98 11:08p Markd
// Added new Alias System
// 
// 11    7/25/98 7:10p Markd
// Put in EV_Removes for demo
// 
// 10    7/22/98 9:57p Markd
// Defined weapon type
// 
// 9     6/27/98 7:58p Aldie
// Minor adjustments to stuff
// 
// 8     6/19/98 9:30p Jimdose
// Moved gun orientation code to Weapon
// 
// 7     6/10/98 2:10p Aldie
// Updated damage function.
// 
// 6     6/08/98 9:04p Aldie
// Updated doneFiring event
// 
// 5     6/08/98 8:43p Aldie
// Added ReadyToUse support
// 
// 4     6/08/98 8:21p Aldie
// Updated spidermines with new anims and logic
// 
// 3     6/08/98 11:34a Aldie
// New version of spidermines.
// 
// 2     5/11/98 11:24a Markd
// First time
// 
// 1     5/11/98 11:10a Markd
// 
// 1     5/11/98 10:24a Markd
// 
// 1     5/11/98 10:20a Markd
// 
// 1     5/11/98 10:18a Markd
// 
// 1     5/11/98 9:55a Markd
// 
// DESCRIPTION:
// Spider Mine
// 

#include "g_local.h"
#include "spidermine.h"
#include "explosion.h"
#include "player.h"
#include "surface.h"

CLASS_DECLARATION( Projectile, Mine, "Mine" );

Event EV_Mine_Explode( "mine_explode" );
Event EV_Mine_CheckForTargets( "mine_targets" );
Event EV_Mine_Run( "mine_run" );

ResponseDef Mine::Responses[] =
	{
	   { &EV_Touch,				         ( Response )Mine::SlideOrStick },
      { &EV_Killed,				         ( Response )Mine::Explode },
	   { &EV_Mine_Explode,	            ( Response )Mine::Explode },
      { &EV_Trigger_Effect,				( Response )Mine::SlideOrStick },
      { &EV_Mine_CheckForTargets,   	( Response )Mine::CheckForTargets },
      { &EV_Mine_Run,                	( Response )Mine::Run },
		{ NULL, NULL }
	};


void Mine::Run
   (
   Event *ev
   )

   {
   RandomAnimate( "run", NULL );
   }

void Mine::CheckForTargets
   (
   Event *ev
   )
   
   {
   Entity      *ent;
   Event       *event;
   trace_t     trace;

   // Playtest
   return;

   if (detonate)
      return;

   ent = findradius( NULL, worldorigin, 150 );
	while( ent )
		{
		if ( ( ent != this ) && 
           ( !ent->deadflag ) && 
           ( ent->entnum != owner ) &&
           ( ent->takedamage ) && 
           ( !(ent->flags & FL_NOTARGET) ) && 
           ( strcmp(ent->getClassname(),"Mine") ) )
			{
 			detonate = true;
         trace = G_Trace( worldorigin, vec_zero, vec_zero, ent->worldorigin, ent, MASK_PROJECTILE, "Mine::CheckForTargets" );
         if (trace.fraction != 1.0f)
            detonate = false;
         else
            break;
			}
		ent = findradius( ent, worldorigin, 150 );
		}

   if (detonate)
      {
      RandomGlobalSound("spider_arm",1);
      event = new Event(EV_Mine_Explode);
      PostEvent(event,0.5f);
      }
   else
      {
      event = new Event(EV_Mine_CheckForTargets);
      PostEvent(event,0.5f);
      }
   }


void Mine::SlideOrStick
   (
   Event *ev
   )

   {
   Entity   *other;
   Event    *event;
   Vector   norm;
   Vector   addSpeed;

   if (detonate)
      return;

	other = ev->GetEntity( 1 );
	assert( other );

   if ( other->takedamage )
		{
      setMoveType(MOVETYPE_BOUNCE);
      return;
		}
    
   // Check to see if we hit the ground, if so then slide along,
   // otherwise stick to the wall.
   if (( (level.impact_trace.plane.normal[ gravity_axis[ gravaxis ].z ] * gravity_axis[ gravaxis ].sign ) > 0.7 ) && 
     !sticky)
      {
      setMoveType(MOVETYPE_SLIDE);
      event = new Event(EV_Mine_CheckForTargets);
      PostEvent(event,2.5);
      }
   else
      {
      // So that we can shoot our own mines
	   edict->owner = world->edict;

      CancelEventsOfType(EV_Mine_Run);
      setMoveType(MOVETYPE_NONE);
      RandomAnimate( "stick", NULL );
      norm = level.impact_trace.plane.normal;
      angles = norm.toAngles();
      angles.x = -angles.x;
      setAngles(angles);
      velocity = "0 0 0";

      // Check to see if we are on the floor and adjust origin
      if (!sticky)
         {
         CheckGround();
         if (groundentity)
            setOrigin(origin + "0 0 12" );
         }

      setOrigin(origin);
      event = new Event(EV_Mine_CheckForTargets);
      PostEvent(event,0.7f);
      }
   }


void Mine::Explode
   (
   Event *ev
   )
   {
	int			damg;
	Vector		v;
   Vector		norm;
   Player      *client;
   Camera      *cam;
   Entity      *owner;


   detonate = true;
   takedamage = DAMAGE_NO;

   stopsound( CHAN_VOICE );
	setSolidType( SOLID_NOT );

   if ( HitSky() )
		{
		PostEvent( EV_Remove, 0 );
		return;
		}

   owner = G_GetEntity( this->owner );

   if ( !owner )
      owner = world;

   damg = 100;

   if ( !deathmatch->value && owner->isClient() )
      damg *= 1.5;

   surfaceManager.DamageSurface (&level.impact_trace, damg, owner );

   v = velocity;
	v.normalize();
   v = worldorigin - v * 24;

   RadiusDamage( this, owner, damg, this, MOD_SPIDERSPLASH );

   if ( owner->isSubclassOf( Player ) )
      {
      client = ( Player * )owner;
      cam = client->CurrentCamera();
   
      // If we are in the camera, get out of it
      if ( cam == ( Camera * )this )
         client->SetCamera( NULL );
      }

   // Remove the mine from the detonator
   if ( detonator )
      detonator->RemoveMine( this );

   RandomAnimate( "explode", NULL );
   PostEvent( EV_Remove, 0.2 );
   }

void Mine::SetDetonator
   (
   Detonator *det
   )

   {
   detonator = det;
   }

qboolean Mine::IsOwner
   (
   Sentient *sent
   )

   {
   return ( sent == G_GetEntity( this->owner ) );
   }

void Mine::Setup
   (
   Entity *owner,
   Vector pos,
	Vector dir
   )

   {
   Event *ev;
	Vector t[ 3 ];
	Vector forward;
	Vector right;
	Vector up;

   this->owner  = owner->entnum;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区在线观看| 国产欧美一区二区在线| 欧美精品一区二区蜜臀亚洲| 久久久电影一区二区三区| 综合激情成人伊人| 日韩国产精品久久久久久亚洲| 精品亚洲国产成人av制服丝袜 | 91黄色免费观看| 欧美日本精品一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品久久久久影院色老大| 怡红院av一区二区三区| 久久成人精品无人区| 99精品国产99久久久久久白柏| 51久久夜色精品国产麻豆| 欧美国产欧美亚州国产日韩mv天天看完整| 一区二区三区在线视频观看58| 精品影院一区二区久久久| 97aⅴ精品视频一二三区| 日韩欧美亚洲国产精品字幕久久久| 国产欧美日韩卡一| 日本午夜一区二区| av不卡在线观看| 精品少妇一区二区三区视频免付费 | 亚洲精品成a人| 狠狠色狠狠色综合系列| 欧美色图一区二区三区| 久久免费美女视频| 视频一区二区国产| 91在线高清观看| 国产午夜一区二区三区| 日韩和的一区二区| 色综合久久88色综合天天6| 久久免费午夜影院| 奇米影视在线99精品| 欧美在线你懂得| 国产精品每日更新| 激情深爱一区二区| 欧美一区二区播放| 亚洲国产三级在线| 色天天综合色天天久久| 国产精品卡一卡二卡三| 久久精品国产久精国产爱| 欧美日本一区二区三区| 亚洲欧美国产高清| av一二三不卡影片| 久久久噜噜噜久久人人看| 热久久久久久久| 欧美日韩视频在线第一区| 亚洲图片激情小说| 成av人片一区二区| 国产亚洲一二三区| 六月丁香婷婷色狠狠久久| 欧美精品在线观看播放| 亚洲一区在线视频观看| 色婷婷综合久色| 一区精品在线播放| 成人国产精品免费观看视频| 久久精品亚洲精品国产欧美kt∨| 久久精品国产亚洲aⅴ| 欧美高清性hdvideosex| 亚欧色一区w666天堂| 欧美日韩亚洲不卡| 亚洲福利电影网| 欧美日韩在线亚洲一区蜜芽| 亚洲一线二线三线视频| 欧亚洲嫩模精品一区三区| 亚洲另类中文字| 日本道色综合久久| 亚洲一区二区欧美| 欧美美女一区二区在线观看| 亚洲成人动漫在线观看| 欧美剧情片在线观看| 亚洲成年人网站在线观看| 欧美美女视频在线观看| 人人狠狠综合久久亚洲| 欧美一区二区三区视频在线 | 欧美一区二区三区小说| 五月天亚洲婷婷| 欧美狂野另类xxxxoooo| 奇米精品一区二区三区在线观看一| 欧美一区二区三区小说| 精品无人码麻豆乱码1区2区| 国产亚洲成av人在线观看导航| 福利91精品一区二区三区| 成人免费在线视频| 在线国产电影不卡| 丝袜美腿亚洲色图| 日韩美女视频一区二区在线观看| 久久超级碰视频| 国产校园另类小说区| 99精品视频在线播放观看| 亚洲乱码日产精品bd| 欧美午夜一区二区| 美女在线视频一区| 久久久激情视频| 91最新地址在线播放| 亚洲电影一区二区| 精品久久久久99| 不卡一二三区首页| 午夜精品久久久久久久99樱桃| 欧美一二三四区在线| 国产成人日日夜夜| 亚洲一区二区偷拍精品| 日韩美女视频在线| 成人丝袜视频网| 婷婷夜色潮精品综合在线| 欧美精品一区二区三区在线| 99久久免费视频.com| 日韩中文字幕1| 国产亚洲欧美中文| 欧美性videosxxxxx| 国产一区在线观看视频| 最新日韩在线视频| 欧美一区二区播放| 成人福利视频网站| 日韩国产在线一| 国产精品女同一区二区三区| 欧美猛男gaygay网站| 国产在线不卡一卡二卡三卡四卡| 亚洲欧美日韩中文播放| 欧美不卡视频一区| 91免费国产视频网站| 看国产成人h片视频| 亚洲免费观看高清完整版在线| 日韩女优制服丝袜电影| 一本色道久久综合精品竹菊| 精品一区二区在线免费观看| 亚洲免费观看在线观看| 久久蜜桃av一区二区天堂| 欧美日韩一卡二卡三卡| 成人福利在线看| 九色|91porny| 亚洲va国产天堂va久久en| 国产精品久久网站| 日韩欧美一二三区| 在线观看欧美日本| 成人精品gif动图一区| 免费视频一区二区| 亚洲另类一区二区| 国产欧美精品一区二区三区四区 | 日本视频一区二区三区| 亚洲色图色小说| 久久奇米777| 69精品人人人人| 91免费在线播放| 岛国精品在线播放| 久久精品国产秦先生| 亚洲综合999| 国产精品久久久久四虎| 精品日韩成人av| 欧美一区二区福利视频| 欧美婷婷六月丁香综合色| 激情国产一区二区| 久久久久久毛片| 精品国产一区二区三区av性色| 紧缚捆绑精品一区二区| 国产欧美日韩另类一区| 成人免费不卡视频| 成人欧美一区二区三区在线播放| 日韩av电影免费观看高清完整版 | 91国偷自产一区二区三区成为亚洲经典| 三级欧美在线一区| 亚洲天天做日日做天天谢日日欢| 91精品国产综合久久香蕉麻豆| www.欧美色图| 看电视剧不卡顿的网站| 亚洲一区二区精品3399| 国产欧美一区二区精品婷婷| 欧美美女bb生活片| 99久久er热在这里只有精品66| 精品中文字幕一区二区| 午夜精品福利一区二区蜜股av| 国产精品色婷婷久久58| 欧美精品一区二区三区在线播放| 欧美吻胸吃奶大尺度电影| 国产91精品免费| 精品亚洲成a人在线观看| 午夜免费欧美电影| 亚洲日本护士毛茸茸| 国产欧美精品区一区二区三区| 欧美日韩国产影片| 色婷婷久久99综合精品jk白丝| 成人在线视频一区二区| 韩国精品免费视频| 久久精品国产精品青草| 日韩精品久久理论片| 亚洲超碰97人人做人人爱| 亚洲视频1区2区| 1024成人网色www| 国产精品青草综合久久久久99| 亚洲精品一区二区三区四区高清| 欧美肥妇bbw| 欧美老人xxxx18| 在线观看av不卡| 91福利在线看| 91高清视频在线| 欧美色手机在线观看| 欧美丝袜丝交足nylons| 欧美在线免费播放|