//----------------------------------------------------------------------------- // Purpose: Build our custom interrupt cases for the behavior //----------------------------------------------------------------------------- void CAI_PassengerBehaviorZombie::BuildScheduleTestBits( void ) { // Always interrupt when we need to get in or out if ( GetPassengerState() == PASSENGER_STATE_OUTSIDE ) { GetOuter()->SetCustomInterruptCondition( GetClassScheduleIdSpace()->ConditionLocalToGlobal( COND_CAN_RANGE_ATTACK1 ) ); GetOuter()->SetCustomInterruptCondition( GetClassScheduleIdSpace()->ConditionLocalToGlobal( COND_PASSENGER_ENTERING ) ); } BaseClass::BuildScheduleTestBits(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CAI_PolicingBehavior::BuildScheduleTestBits( void ) { if ( IsCurSchedule( SCHED_IDLE_STAND ) || IsCurSchedule( SCHED_ALERT_STAND ) ) { if ( m_flNextHarassTime < gpGlobals->curtime ) { GetOuter()->SetCustomInterruptCondition( GetClassScheduleIdSpace()->ConditionLocalToGlobal( COND_POLICE_TARGET_TOO_CLOSE_HARASS ) ); } GetOuter()->SetCustomInterruptCondition( GetClassScheduleIdSpace()->ConditionLocalToGlobal( COND_POLICE_TARGET_TOO_CLOSE_SUPPRESS ) ); } }
bool CAI_BehaviorBase::IsCurSchedule( int schedule, bool fIdeal ) { if ( AI_IdIsLocal( schedule ) ) schedule = GetClassScheduleIdSpace()->ScheduleLocalToGlobal(schedule); return GetOuter()->IsCurSchedule( schedule, fIdeal ); }
CAI_Schedule *CAI_BehaviorBase::GetSchedule(int schedule) { if (!GetClassScheduleIdSpace()->IsGlobalBaseSet()) { Warning("ERROR: %s missing schedule!\n", GetSchedulingErrorName()); return g_AI_SchedulesManager.GetScheduleFromID(SCHED_IDLE_STAND); } if ( AI_IdIsLocal( schedule ) ) { schedule = GetClassScheduleIdSpace()->ScheduleLocalToGlobal(schedule); } if ( schedule == -1 ) return NULL; return g_AI_SchedulesManager.GetScheduleFromID( schedule ); }
//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void CAI_FearBehavior::BuildScheduleTestBits() { BaseClass::BuildScheduleTestBits(); if( GetOuter()->GetState() != NPC_STATE_SCRIPT ) { // Stop doing ANYTHING if we get scared. //GetOuter()->SetCustomInterruptCondition( COND_HEAR_DANGER ); if( !IsCurSchedule(SCHED_FEAR_MOVE_TO_SAFE_PLACE_RETRY, false) && !IsCurSchedule(SCHED_FEAR_MOVE_TO_SAFE_PLACE, false) ) { GetOuter()->SetCustomInterruptCondition( GetClassScheduleIdSpace()->ConditionLocalToGlobal(COND_FEAR_SEPARATED_FROM_PLAYER) ); } } }