Beispiel #1
0
//--------------------------------------------------------------
// Name:		setupStateDucked()
// Class:		CorridorCombatWithRangedWeapon
//
// Description:	Sets up our Ducked State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CorridorCombatWithRangedWeapon::setupStateDucked()
{	
	_nextPauseTime = level.time + G_Random( _pauseTimeMax ) + _pauseTimeMin;
	setTorsoAnim();
	_self->SetAnim( "duck" , NULL , legs );
	_fireWeapon.End(*_self);
}
Beispiel #2
0
//--------------------------------------------------------------
// Name:		setupStateStand()
// Class:		GeneralCombatWithRangedWeapon
//
// Description:	Sets up Stand State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void GeneralCombatWithRangedWeapon::setupStateStand()
{
	_nextPauseTime = level.time + G_Random( _pauseTimeMax ) + _pauseTimeMin;
	setTorsoAnim();
	_self->SetAnim( _torsoAnim , NULL , legs );
	_fireWeapon.End(*_self);
}
Beispiel #3
0
//--------------------------------------------------------------
// Name:		setupStateMoveToNode()
// Class:		CorridorCombatWithRangedWeapon
//
// Description:	Sets up the Move To Cover State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CorridorCombatWithRangedWeapon::setupStateMoveToNode()
{
	_gotoPoint.SetAnim( _movementAnim );
	_gotoPoint.SetDistance( NODE_RADIUS );
	_gotoPoint.SetPoint( _node->origin );
	_gotoPoint.Begin( *_self );

	setTorsoAnim();
}
Beispiel #4
0
//--------------------------------------------------------------
// Name:		setupStateSetupApproach()
// Class:		CloseInOnEnemyWhileFiringWeapon
//
// Description:	Sets up State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CloseInOnEnemyWhileFiringWeapon::setupStateSetupApproach()
{
   _chaseEnemy.SetAnim( _approachAnim );
   _chaseEnemy.SetDistance( _dist );   
   _chaseEnemy.SetEntity( *_self, _currentEnemy );

   setTorsoAnim();
   _chaseEnemy.Begin( *_self );
}
Beispiel #5
0
//--------------------------------------------------------------
// Name:        Evaluate()
// Class:       GeneralCombatWithMeleeWeapon
//
// Description: Returns True Or False, and is run every frame
//              that the behavior
//
// Parameters:  Actor &self
//
// Returns:     True or False
//--------------------------------------------------------------
BehaviorReturnCode_t GeneralCombatWithMeleeWeapon::Evaluate ( Actor &self )
{      
	Entity *currentEnemy;

	// Make sure our rotate and headwatch targets are up to date
	if ( _state != GENERAL_COMBAT_MELEE_ATTACK && _state != GENERAL_COMBAT_MELEE_CHANGE_POSTURE )
		setUpRotate( self );        
		
	faceEnemy( self );
	setHeadWatchTarget( self );


	currentEnemy = self.enemyManager->GetCurrentEnemy();

	if (currentEnemy && _maxDistanceToEngage && !self.WithinDistance( currentEnemy, _maxDistanceToEngage))
		{
		self.enemyManager->ClearCurrentEnemy();
		SetFailureReason( "My Current Enemy is farther away than my _maxDistanceToEngage\n" );
		return BEHAVIOR_FAILED; // I may have an enemy, but he's too far away.  Ignore him.
		}
 
	if ( _state == GENERAL_COMBAT_MELEE_FAILED )
		return BEHAVIOR_FAILED;

	if ( currentEnemy && !self.WithinDistance( currentEnemy , _meleeDistance ) && level.time > _nextRushAttemptTime )
		{
		setupRushEnemy( self );
		_state = GENERAL_COMBAT_MELEE_RUSH_ENEMY;      
		}

	switch ( _state )
		{
		case GENERAL_COMBAT_MELEE_SELECT_STATE:
			//setTorsoAnim( self ); // Breaks the initial attack anim
			selectState( self );
		break;

		case GENERAL_COMBAT_MELEE_RUSH_ENEMY:
			rushEnemy( self );
		break;

		case GENERAL_COMBAT_MELEE_STRAFE:
			setTorsoAnim( self );
			strafe(self);
			setTorsoAnim( self );
		break;

		case GENERAL_COMBAT_MELEE_ATTACK:      
			attack( self );
		break;

		case GENERAL_COMBAT_MELEE_BLOCK:
			block( self );
		break;

		case GENERAL_COMBAT_MELEE_CHANGE_POSTURE:
			changePosture(self);
		break;

		case GENERAL_COMBAT_MELEE_HOLD:
			setTorsoAnim( self );
			hold( self );
		break;

		case GENERAL_COMBAT_MELEE_FAILED:
			return BEHAVIOR_FAILED;
		}

	return BEHAVIOR_EVALUATING; 
}
Beispiel #6
0
//--------------------------------------------------------------
// Name:		setupStateHoldPosition()
// Class:		CorridorCombatWithRangedWeapon
//
// Description:	Sets up State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CorridorCombatWithRangedWeapon::setupStateHoldPosition()
{
	_self->SetAnim( "idle" );
	setTorsoAnim();
	_holdPositionTime = level.time + G_Random() + 1.0f;
}
Beispiel #7
0
//--------------------------------------------------------------
// Name:		setupStateStanding()
// Class:		CorridorCombatWithRangedWeapon
//
// Description:	Setup for the Standing State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CorridorCombatWithRangedWeapon::setupStateStanding()
{	
	_self->SetAnim( "idle" , NULL , legs);
	_nextPauseTime = level.time + G_Random( _pauseTimeMax ) + _pauseTimeMin;
	setTorsoAnim();
}
Beispiel #8
0
//--------------------------------------------------------------
// Name:		setupStateApproachFirePause()
// Class:		CloseInOnEnemyWhileFiringWeapon
//
// Description:	Sets up Stand Firing State
//
// Parameters:	None
//
// Returns:		None
//--------------------------------------------------------------
void CloseInOnEnemyWhileFiringWeapon::setupStateApproachFirePause()
{
	_nextPauseTime = level.time + G_Random( _pauseTimeMax ) + _pauseTimeMin;
	_fireWeapon.End( *_self );
	setTorsoAnim();
}