diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/ai_task.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/ai_task.cpp')
| -rw-r--r-- | mp/src/game/server/ai_task.cpp | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/mp/src/game/server/ai_task.cpp b/mp/src/game/server/ai_task.cpp new file mode 100644 index 00000000..116fa82e --- /dev/null +++ b/mp/src/game/server/ai_task.cpp @@ -0,0 +1,227 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Sets up the tasks for default AI.
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+#include "stringregistry.h"
+#include "ai_basenpc.h"
+#include "ai_task.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+const char * g_ppszTaskFailureText[] =
+{
+ "No failure", // NO_TASK_FAILURE
+ "No Target", // FAIL_NO_TARGET
+ "Weapon owned by someone else", // FAIL_WEAPON_OWNED
+ "Weapon/Item doesn't exist", // FAIL_ITEM_NO_FIND
+ "No hint node", // FAIL_NO_HINT_NODE
+ "Schedule not found", // FAIL_SCHEDULE_NOT_FOUND
+ "Don't have an enemy", // FAIL_NO_ENEMY
+ "Found no backaway node", // FAIL_NO_BACKAWAY_NODE
+ "Couldn't find cover", // FAIL_NO_COVER
+ "Couldn't find flank", // FAIL_NO_FLANK
+ "Couldn't find shoot position", // FAIL_NO_SHOOT
+ "Don't have a route", // FAIL_NO_ROUTE
+ "Don't have a route: no goal", // FAIL_NO_ROUTE_GOAL
+ "Don't have a route: blocked", // FAIL_NO_ROUTE_BLOCKED
+ "Don't have a route: illegal move", // FAIL_NO_ROUTE_ILLEGAL
+ "Couldn't walk to target", // FAIL_NO_WALK
+ "Node already locked", // FAIL_ALREADY_LOCKED
+ "No sound present", // FAIL_NO_SOUND
+ "No scent present", // FAIL_NO_SCENT
+ "Bad activity", // FAIL_BAD_ACTIVITY
+ "No goal entity", // FAIL_NO_GOAL
+ "No player", // FAIL_NO_PLAYER
+ "Can't reach any nodes", // FAIL_NO_REACHABLE_NODE
+ "No AI Network to Use", // FAIL_NO_AI_NETWORK
+ "Bad position to Target", // FAIL_BAD_POSITION
+ "Route Destination No Longer Valid", // FAIL_BAD_PATH_GOAL
+ "Stuck on top of something", // FAIL_STUCK_ONTOP
+ "Item has been taken", // FAIL_ITEM_TAKEN
+};
+
+const char *TaskFailureToString( AI_TaskFailureCode_t code )
+{
+ const char *pszResult;
+ if ( code < 0 || code >= NUM_FAIL_CODES )
+ pszResult = (const char *)code;
+ else
+ pszResult = g_ppszTaskFailureText[code];
+ return pszResult;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Given and task name, return the task ID
+//-----------------------------------------------------------------------------
+int CAI_BaseNPC::GetTaskID(const char* taskName)
+{
+ return GetSchedulingSymbols()->TaskSymbolToId( taskName );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Initialize the task name string registry
+// Input :
+// Output :
+//-----------------------------------------------------------------------------
+void CAI_BaseNPC::InitDefaultTaskSR(void)
+{
+ #define ADD_DEF_TASK( name ) idSpace.AddTask(#name, name, "CAI_BaseNPC" )
+
+ CAI_ClassScheduleIdSpace &idSpace = CAI_BaseNPC::AccessClassScheduleIdSpaceDirect();
+
+ ADD_DEF_TASK( TASK_INVALID );
+ ADD_DEF_TASK( TASK_ANNOUNCE_ATTACK );
+ ADD_DEF_TASK( TASK_RESET_ACTIVITY );
+ ADD_DEF_TASK( TASK_WAIT );
+ ADD_DEF_TASK( TASK_WAIT_FACE_ENEMY );
+ ADD_DEF_TASK( TASK_WAIT_FACE_ENEMY_RANDOM );
+ ADD_DEF_TASK( TASK_WAIT_PVS );
+ ADD_DEF_TASK( TASK_SUGGEST_STATE );
+ ADD_DEF_TASK( TASK_TARGET_PLAYER );
+ ADD_DEF_TASK( TASK_SCRIPT_WALK_TO_TARGET );
+ ADD_DEF_TASK( TASK_SCRIPT_RUN_TO_TARGET );
+ ADD_DEF_TASK( TASK_SCRIPT_CUSTOM_MOVE_TO_TARGET );
+ ADD_DEF_TASK( TASK_MOVE_TO_TARGET_RANGE );
+ ADD_DEF_TASK( TASK_MOVE_TO_GOAL_RANGE );
+ ADD_DEF_TASK( TASK_MOVE_AWAY_PATH );
+ ADD_DEF_TASK( TASK_GET_PATH_AWAY_FROM_BEST_SOUND );
+ ADD_DEF_TASK( TASK_SET_GOAL );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_GOAL );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_ENEMY );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_ENEMY_LKP );
+ ADD_DEF_TASK( TASK_GET_CHASE_PATH_TO_ENEMY );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_ENEMY_LKP_LOS );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_RANGE_ENEMY_LKP_LOS );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_ENEMY_CORPSE );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_PLAYER );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_ENEMY_LOS );
+ ADD_DEF_TASK( TASK_GET_FLANK_ARC_PATH_TO_ENEMY_LOS );
+ ADD_DEF_TASK( TASK_GET_FLANK_RADIUS_PATH_TO_ENEMY_LOS );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_TARGET );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_TARGET_WEAPON );
+ ADD_DEF_TASK( TASK_CREATE_PENDING_WEAPON );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_HINTNODE );
+ ADD_DEF_TASK( TASK_STORE_LASTPOSITION );
+ ADD_DEF_TASK( TASK_CLEAR_LASTPOSITION );
+ ADD_DEF_TASK( TASK_STORE_POSITION_IN_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_STORE_BESTSOUND_IN_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_STORE_BESTSOUND_REACTORIGIN_IN_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_REACT_TO_COMBAT_SOUND );
+ ADD_DEF_TASK( TASK_STORE_ENEMY_POSITION_IN_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_COMMAND_GOAL );
+ ADD_DEF_TASK( TASK_MARK_COMMAND_GOAL_POS );
+ ADD_DEF_TASK( TASK_CLEAR_COMMAND_GOAL );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_LASTPOSITION );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_SAVEPOSITION_LOS );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_BESTSOUND );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_BESTSCENT );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_RANDOM_NODE );
+ ADD_DEF_TASK( TASK_RUN_PATH );
+ ADD_DEF_TASK( TASK_WALK_PATH );
+ ADD_DEF_TASK( TASK_WALK_PATH_TIMED );
+ ADD_DEF_TASK( TASK_WALK_PATH_WITHIN_DIST );
+ ADD_DEF_TASK( TASK_RUN_PATH_WITHIN_DIST );
+ ADD_DEF_TASK( TASK_WALK_PATH_FOR_UNITS );
+ ADD_DEF_TASK( TASK_RUN_PATH_FOR_UNITS );
+ ADD_DEF_TASK( TASK_RUN_PATH_FLEE );
+ ADD_DEF_TASK( TASK_RUN_PATH_TIMED );
+ ADD_DEF_TASK( TASK_STRAFE_PATH );
+ ADD_DEF_TASK( TASK_CLEAR_MOVE_WAIT );
+ ADD_DEF_TASK( TASK_SMALL_FLINCH );
+ ADD_DEF_TASK( TASK_BIG_FLINCH );
+ ADD_DEF_TASK( TASK_DEFER_DODGE );
+ ADD_DEF_TASK( TASK_FACE_IDEAL );
+ ADD_DEF_TASK( TASK_FACE_REASONABLE );
+ ADD_DEF_TASK( TASK_FACE_PATH );
+ ADD_DEF_TASK( TASK_FACE_PLAYER );
+ ADD_DEF_TASK( TASK_FACE_ENEMY );
+ ADD_DEF_TASK( TASK_FACE_HINTNODE );
+ ADD_DEF_TASK( TASK_PLAY_HINT_ACTIVITY );
+ ADD_DEF_TASK( TASK_FACE_TARGET );
+ ADD_DEF_TASK( TASK_FACE_LASTPOSITION );
+ ADD_DEF_TASK( TASK_FACE_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_FACE_AWAY_FROM_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_SET_IDEAL_YAW_TO_CURRENT );
+ ADD_DEF_TASK( TASK_RANGE_ATTACK1 );
+ ADD_DEF_TASK( TASK_RANGE_ATTACK2 );
+ ADD_DEF_TASK( TASK_MELEE_ATTACK1 );
+ ADD_DEF_TASK( TASK_MELEE_ATTACK2 );
+ ADD_DEF_TASK( TASK_RELOAD );
+ ADD_DEF_TASK( TASK_SPECIAL_ATTACK1 );
+ ADD_DEF_TASK( TASK_SPECIAL_ATTACK2 );
+ ADD_DEF_TASK( TASK_FIND_HINTNODE );
+ ADD_DEF_TASK( TASK_CLEAR_HINTNODE );
+ ADD_DEF_TASK( TASK_FIND_LOCK_HINTNODE );
+ ADD_DEF_TASK( TASK_LOCK_HINTNODE );
+ ADD_DEF_TASK( TASK_SOUND_ANGRY );
+ ADD_DEF_TASK( TASK_SOUND_DEATH );
+ ADD_DEF_TASK( TASK_SOUND_IDLE );
+ ADD_DEF_TASK( TASK_SOUND_WAKE );
+ ADD_DEF_TASK( TASK_SOUND_PAIN );
+ ADD_DEF_TASK( TASK_SOUND_DIE );
+ ADD_DEF_TASK( TASK_SPEAK_SENTENCE );
+ ADD_DEF_TASK( TASK_WAIT_FOR_SPEAK_FINISH );
+ ADD_DEF_TASK( TASK_SET_ACTIVITY );
+ ADD_DEF_TASK( TASK_RANDOMIZE_FRAMERATE );
+ ADD_DEF_TASK( TASK_SET_SCHEDULE );
+ ADD_DEF_TASK( TASK_SET_FAIL_SCHEDULE );
+ ADD_DEF_TASK( TASK_SET_TOLERANCE_DISTANCE );
+ ADD_DEF_TASK( TASK_SET_ROUTE_SEARCH_TIME );
+ ADD_DEF_TASK( TASK_CLEAR_FAIL_SCHEDULE );
+ ADD_DEF_TASK( TASK_PLAY_SEQUENCE );
+ ADD_DEF_TASK( TASK_PLAY_PRIVATE_SEQUENCE );
+ ADD_DEF_TASK( TASK_PLAY_PRIVATE_SEQUENCE_FACE_ENEMY );
+ ADD_DEF_TASK( TASK_PLAY_SEQUENCE_FACE_ENEMY );
+ ADD_DEF_TASK( TASK_PLAY_SEQUENCE_FACE_TARGET );
+ ADD_DEF_TASK( TASK_FIND_COVER_FROM_BEST_SOUND );
+ ADD_DEF_TASK( TASK_FIND_COVER_FROM_ENEMY );
+ ADD_DEF_TASK( TASK_FIND_LATERAL_COVER_FROM_ENEMY );
+ ADD_DEF_TASK( TASK_FIND_BACKAWAY_FROM_SAVEPOSITION );
+ ADD_DEF_TASK( TASK_FIND_NODE_COVER_FROM_ENEMY );
+ ADD_DEF_TASK( TASK_FIND_NEAR_NODE_COVER_FROM_ENEMY );
+ ADD_DEF_TASK( TASK_FIND_FAR_NODE_COVER_FROM_ENEMY );
+ ADD_DEF_TASK( TASK_FIND_COVER_FROM_ORIGIN );
+ ADD_DEF_TASK( TASK_DIE );
+ ADD_DEF_TASK( TASK_WAIT_FOR_SCRIPT );
+ ADD_DEF_TASK( TASK_PUSH_SCRIPT_ARRIVAL_ACTIVITY );
+ ADD_DEF_TASK( TASK_PLAY_SCRIPT );
+ ADD_DEF_TASK( TASK_PLAY_SCRIPT_POST_IDLE );
+ ADD_DEF_TASK( TASK_ENABLE_SCRIPT );
+ ADD_DEF_TASK( TASK_PLANT_ON_SCRIPT );
+ ADD_DEF_TASK( TASK_FACE_SCRIPT );
+ ADD_DEF_TASK( TASK_PLAY_SCENE );
+ ADD_DEF_TASK( TASK_WAIT_RANDOM );
+ ADD_DEF_TASK( TASK_WAIT_INDEFINITE );
+ ADD_DEF_TASK( TASK_STOP_MOVING );
+ ADD_DEF_TASK( TASK_TURN_LEFT );
+ ADD_DEF_TASK( TASK_TURN_RIGHT );
+ ADD_DEF_TASK( TASK_REMEMBER );
+ ADD_DEF_TASK( TASK_FORGET );
+ ADD_DEF_TASK( TASK_WAIT_FOR_MOVEMENT );
+ ADD_DEF_TASK( TASK_WAIT_FOR_MOVEMENT_STEP );
+ ADD_DEF_TASK( TASK_WAIT_UNTIL_NO_DANGER_SOUND );
+ ADD_DEF_TASK( TASK_WEAPON_FIND );
+ ADD_DEF_TASK( TASK_WEAPON_PICKUP );
+ ADD_DEF_TASK( TASK_WEAPON_RUN_PATH );
+ ADD_DEF_TASK( TASK_WEAPON_CREATE );
+ ADD_DEF_TASK( TASK_ITEM_RUN_PATH );
+ ADD_DEF_TASK( TASK_ITEM_PICKUP );
+ ADD_DEF_TASK( TASK_USE_SMALL_HULL );
+ ADD_DEF_TASK( TASK_FALL_TO_GROUND );
+ ADD_DEF_TASK( TASK_WANDER );
+ ADD_DEF_TASK( TASK_FREEZE );
+ ADD_DEF_TASK( TASK_GATHER_CONDITIONS );
+ ADD_DEF_TASK( TASK_IGNORE_OLD_ENEMIES );
+ ADD_DEF_TASK( TASK_DEBUG_BREAK );
+ ADD_DEF_TASK( TASK_ADD_HEALTH );
+ ADD_DEF_TASK( TASK_GET_PATH_TO_INTERACTION_PARTNER );
+ ADD_DEF_TASK( TASK_PRE_SCRIPT );
+}
+
+
|