void CAI_PlayerAlly::OnChangeRunningBehavior( CAI_BehaviorBase *pOldBehavior,  CAI_BehaviorBase *pNewBehavior )
{
	BaseClass::OnChangeRunningBehavior( pOldBehavior,  pNewBehavior );
	CAI_FollowBehavior *pFollowBehavior;
	if ( dynamic_cast<CAI_FollowBehavior *>(pNewBehavior) != NULL )
	{
		GetExpresser()->SetSpokeConcept( TLK_HELLO, NULL );	// Don't say hi after you've started following
		if ( IsOkToCombatSpeak() )
			Speak( TLK_USE );
		SetSpeechTarget( GetTarget() );
		ClearCondition( COND_PLAYER_PUSHING );
	}
	else if ( ( pFollowBehavior = dynamic_cast<CAI_FollowBehavior *>(pOldBehavior) ) != NULL  )
	{
		if ( !(m_afMemory & bits_MEMORY_PROVOKED) )
		{
			if ( IsOkToCombatSpeak() )
			{
				if ( pFollowBehavior->GetFollowTarget() == NULL )
					Speak( TLK_UNUSE );
				else
					Speak( TLK_STOP );
			}
			SetSpeechTarget( FindNearestFriend(true) );
		}
	}
}
//---------------------------------------------------------
void CAI_PlayerAlly::OnTargetOrder()
{
	if ( IsOkToCombatSpeak() )
		Speak( TLK_COMMANDED );

	BaseClass::OnTargetOrder();
}
//---------------------------------------------------------
void CAI_PlayerAlly::OnPlayerSelect()
{
	if ( IsOkToCombatSpeak() )
		Speak( TLK_SELECTED );

	BaseClass::OnPlayerSelect();
}
示例#4
0
//-----------------------------------------------------------------------------
void CNPCSimpleTalker::InputIdleRespond( inputdata_t &inputdata )
{
	// We've been told to respond. Check combat speak, not isoktospeak, because
	// we don't want to check the idle speech time.
	if (!IsOkToCombatSpeak())
		return;

	IdleRespond();
}
//------------------------------------------------------------------------------
// Purpose :
// Input   :
// Output  :
//------------------------------------------------------------------------------
bool CAI_PlayerAlly::IsOkToSpeak( void )
{
	if ( !IsOkToCombatSpeak() )
		return false;
		
	// don't talk if you're in combat
	if (GetEnemy() != NULL && FVisible( GetEnemy() ))
		return false;

	return ( !GetExpresser()->IsSpeaking() );
}
示例#6
0
void CNPCSimpleTalker::OnStoppingFollow( CBaseEntity *pTarget )
{
	if ( !(m_afMemory & bits_MEMORY_PROVOKED) )
	{
		if ( IsOkToCombatSpeak() )
		{
			if ( pTarget == NULL )
				Speak( TLK_STOPFOLLOW );
			else
				Speak( TLK_STOP );
		}
		SetSpeechTarget( FindNearestFriend(true) );
	}
}