//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: The default shared conditions // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #ifndef CONDITION_H #define CONDITION_H // NOTE: Changing this constant will break save files!!! (changes type of CAI_ScheduleBits) #ifndef MAX_CONDITIONS #define MAX_CONDITIONS 32*8 #endif //========================================================= // These are the default shared conditions //========================================================= enum SCOND_t { COND_NONE, // A way for a function to return no condition to get COND_IN_PVS, COND_IDLE_INTERRUPT, // The schedule in question is a low priority idle, and therefore a candidate for translation into something else COND_LOW_PRIMARY_AMMO, COND_NO_PRIMARY_AMMO, COND_NO_SECONDARY_AMMO, COND_NO_WEAPON, COND_SEE_HATE, COND_SEE_FEAR, COND_SEE_DISLIKE, COND_SEE_ENEMY, COND_LOST_ENEMY, COND_ENEMY_WENT_NULL, // What most people think COND_LOST_ENEMY is: This condition is set in the edge case where you had an enemy last think, but don't have one this think. COND_ENEMY_OCCLUDED, // Can't see m_hEnemy COND_TARGET_OCCLUDED, // Can't see m_hTargetEnt COND_HAVE_ENEMY_LOS, COND_HAVE_TARGET_LOS, COND_LIGHT_DAMAGE, COND_HEAVY_DAMAGE, COND_PHYSICS_DAMAGE, COND_REPEATED_DAMAGE, // Damaged several times in a row COND_CAN_RANGE_ATTACK1, // Hitscan weapon only COND_CAN_RANGE_ATTACK2, // Grenade weapon only COND_CAN_MELEE_ATTACK1, COND_CAN_MELEE_ATTACK2, COND_PROVOKED, COND_NEW_ENEMY, COND_ENEMY_TOO_FAR, // Can we get rid of this one!?!? COND_ENEMY_FACING_ME, COND_BEHIND_ENEMY, COND_ENEMY_DEAD, COND_ENEMY_UNREACHABLE, // Not connected to me via node graph COND_SEE_PLAYER, COND_LOST_PLAYER, COND_SEE_NEMESIS, COND_TASK_FAILED, COND_SCHEDULE_DONE, COND_SMELL, COND_TOO_CLOSE_TO_ATTACK, // FIXME: most of this next group are meaningless since they're shared between all attack checks! COND_TOO_FAR_TO_ATTACK, COND_NOT_FACING_ATTACK, COND_WEAPON_HAS_LOS, COND_WEAPON_BLOCKED_BY_FRIEND, // Friend between weapon and target COND_WEAPON_PLAYER_IN_SPREAD, // Player in shooting direction COND_WEAPON_PLAYER_NEAR_TARGET, // Player near shooting position COND_WEAPON_SIGHT_OCCLUDED, COND_BETTER_WEAPON_AVAILABLE, COND_HEALTH_ITEM_AVAILABLE, // There's a healthkit available. COND_GIVE_WAY, // Another npc requested that I give way COND_WAY_CLEAR, // I no longer have to give way COND_HEAR_DANGER, COND_HEAR_THUMPER, COND_HEAR_BUGBAIT, COND_HEAR_COMBAT, COND_HEAR_WORLD, COND_HEAR_PLAYER, COND_HEAR_BULLET_IMPACT, COND_HEAR_PHYSICS_DANGER, COND_HEAR_MOVE_AWAY, COND_HEAR_SPOOKY, // Zombies make this when Alyx is in darkness mode COND_NO_HEAR_DANGER, // Since we can't use ~CONDITION. Mutually exclusive with COND_HEAR_DANGER COND_FLOATING_OFF_GROUND, COND_MOBBED_BY_ENEMIES, // Surrounded by a large number of enemies melee attacking me. (Zombies or Antlions, usually). // Commander stuff COND_RECEIVED_ORDERS, COND_PLAYER_ADDED_TO_SQUAD, COND_PLAYER_REMOVED_FROM_SQUAD, COND_PLAYER_PUSHING, COND_NPC_FREEZE, // We received an npc_freeze command while we were unfrozen COND_NPC_UNFREEZE, // We received an npc_freeze command while we were frozen // This is a talker condition, but done here because we need to handle it in base AI // due to it's interaction with behaviors. COND_TALKER_RESPOND_TO_QUESTION, COND_NO_CUSTOM_INTERRUPTS, // Don't call BuildScheduleTestBits for this schedule. Used for schedules that must strictly control their interruptibility. COND_BEHAVIOR_PARAMETERS_CHANGED, // ====================================== // IMPORTANT: This must be the last enum // ====================================== LAST_SHARED_CONDITION }; #endif //CONDITION_H