You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
9.3 KiB
227 lines
9.3 KiB
//========= 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 *)(intp)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 ); |
|
} |
|
|
|
|
|
|