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