예제 #1
0
//-----------------------------------------------------
void turret_head_think( gentity_t *self )
//-----------------------------------------------------
{
	gentity_t *top = &g_entities[self->r.ownerNum];
	if ( !top )
	{
		return;
	}
	if ( self->painDebounceTime > level.time )
	{
		vec3_t	v_up;
		VectorSet( v_up, 0, 0, 1 );
		G_PlayEffect( EFFECT_SPARKS, self->r.currentOrigin, v_up );
		if ( Q_irand( 0, 3) )
		{//25% chance of still firing
			return;
		}
	}
	// if it's time to fire and we have an enemy, then gun 'em down!  pushDebounce time controls next fire time
	if ( self->enemy && self->setTime < level.time && self->attackDebounceTime < level.time )
	{
		vec3_t		fwd, org;
		// set up our next fire time
		self->setTime = level.time + self->wait;

		VectorCopy( top->r.currentOrigin, org );
		org[2] += top->r.maxs[2]-8;
		AngleVectors( top->r.currentAngles, fwd, NULL, NULL );

		VectorMA( org, START_DIS, fwd, org );

		turret_fire( top, org, fwd );
		self->fly_sound_debounce_time = level.time;//used as lastShotTime
	}
}
예제 #2
0
파일: g_turret.c 프로젝트: jwginge/ojpa
//-----------------------------------------------------
void turret_head_think( gentity_t *self )
//-----------------------------------------------------
{
	gentity_t *top = &g_entities[self->r.ownerNum];
	if ( !top )
	{
		return;
	}
	if ( self->painDebounceTime > level.time )
	{
		vec3_t	v_up;
		VectorSet( v_up, 0, 0, 1 );
		G_PlayEffect( EFFECT_SPARKS, self->r.currentOrigin, v_up );
		if ( Q_irand( 0, 3) )
		{//25% chance of still firing
			return;
		}
	}
	// if it's time to fire and we have an enemy, then gun 'em down!  pushDebounce time controls next fire time
	if ( self->enemy && self->setTime < level.time && self->attackDebounceTime < level.time )
	{
		vec3_t		fwd, org;
		// set up our next fire time
		self->setTime = level.time + self->wait;

		/*
		mdxaBone_t	boltMatrix;

		// Getting the flash bolt here
		gi.G2API_GetBoltMatrix( self->ghoul2, self->playerModel, 
					self->torsoBolt,
					&boltMatrix, self->r.currentAngles, self->r.currentOrigin, (cg.time?cg.time:level.time),
					NULL, self->s.modelScale );

		gi.G2API_GiveMeVectorFromMatrix( boltMatrix, ORIGIN, org );
		gi.G2API_GiveMeVectorFromMatrix( boltMatrix, POSITIVE_Y, fwd );
		*/
		VectorCopy( top->r.currentOrigin, org );
		org[2] += top->r.maxs[2]-8;
		AngleVectors( top->r.currentAngles, fwd, NULL, NULL );

		VectorMA( org, START_DIS, fwd, org );

		turret_fire( top, org, fwd );
		self->fly_sound_debounce_time = level.time;//used as lastShotTime
	}
}