//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Ichthyosaur::InitCustomSchedules( void ) { INIT_CUSTOM_AI( CNPC_Ichthyosaur ); //Interaction REGISTER_INTERACTION( g_interactionAntlionAttacked ); //Schedules ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_CHASE_ENEMY ); ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_PATROL_RUN ); ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_PATROL_WALK ); ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_DROWN_VICTIM ); ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_MELEE_ATTACK1 ); ADD_CUSTOM_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_THRASH ); //Tasks ADD_CUSTOM_TASK( CNPC_Ichthyosaur, TASK_ICH_GET_PATH_TO_RANDOM_NODE ); ADD_CUSTOM_TASK( CNPC_Ichthyosaur, TASK_ICH_GET_PATH_TO_DROWN_NODE ); ADD_CUSTOM_TASK( CNPC_Ichthyosaur, TASK_ICH_THRASH_PATH ); //Conditions ADD_CUSTOM_CONDITION( CNPC_CombineGuard, COND_ANTLIONGRUB_HEARD_SQUEAL ); //Activities ADD_CUSTOM_ACTIVITY( CNPC_Ichthyosaur, ACT_ICH_THRASH ); ADD_CUSTOM_ACTIVITY( CNPC_Ichthyosaur, ACT_ICH_BITE_HIT ); ADD_CUSTOM_ACTIVITY( CNPC_Ichthyosaur, ACT_ICH_BITE_MISS ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_CHASE_ENEMY ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_PATROL_RUN ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_PATROL_WALK ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_DROWN_VICTIM ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_MELEE_ATTACK1 ); AI_LOAD_SCHEDULE( CNPC_Ichthyosaur, SCHED_ICH_THRASH ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_AntlionGrub::InitCustomSchedules( void ) { INIT_CUSTOM_AI( CNPC_AntlionGrub ); //Schedules ADD_CUSTOM_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_SQUEAL ); ADD_CUSTOM_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_SQUIRM ); ADD_CUSTOM_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_STAND ); ADD_CUSTOM_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_GIVE_HEALTH ); ADD_CUSTOM_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGUARD_RETREAT ); //Tasks ADD_CUSTOM_TASK( CNPC_AntlionGrub, TASK_ANTLIONGRUB_SQUIRM ); ADD_CUSTOM_TASK( CNPC_AntlionGrub, TASK_ANTLIONGRUB_GIVE_HEALTH ); ADD_CUSTOM_TASK( CNPC_AntlionGrub, TASK_ANTLIONGRUB_MOVE_TO_TARGET ); ADD_CUSTOM_TASK( CNPC_AntlionGrub, TASK_ANTLIONGRUB_FIND_RETREAT_GOAL ); //Conditions ADD_CUSTOM_CONDITION( CNPC_AntlionGrub, COND_ANTLIONGRUB_HEARD_SQUEAL ); ADD_CUSTOM_CONDITION( CNPC_AntlionGrub, COND_ANTLIONGRUB_BEING_SQUASHED ); ADD_CUSTOM_CONDITION( CNPC_AntlionGrub, COND_ANTLIONGRUB_IN_HEAL_RANGE ); //Activities ADD_CUSTOM_ACTIVITY( CNPC_AntlionGrub, ACT_ANTLIONGRUB_SQUIRM ); ADD_CUSTOM_ACTIVITY( CNPC_AntlionGrub, ACT_ANTLIONGRUB_HEAL ); AI_LOAD_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_SQUEAL ); AI_LOAD_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_SQUIRM ); AI_LOAD_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_STAND ); AI_LOAD_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGRUB_GIVE_HEALTH ); AI_LOAD_SCHEDULE( CNPC_AntlionGrub, SCHED_ANTLIONGUARD_RETREAT ); }
//----------------------------------------------------------------------------- // Purpose: Initialize the custom schedules // Input : // Output : //----------------------------------------------------------------------------- void CNPC_Roller::InitCustomSchedules(void) { INIT_CUSTOM_AI( CNPC_Roller ); ADD_CUSTOM_SCHEDULE( CNPC_Roller, SCHED_ROLLER_PATROL ); ADD_CUSTOM_SCHEDULE( CNPC_Roller, SCHED_ROLLER_WAIT_FOR_PHYSICS ); ADD_CUSTOM_SCHEDULE( CNPC_Roller, SCHED_ROLLER_UNSTICK ); ADD_CUSTOM_CONDITION( CNPC_Roller, COND_ROLLER_PHYSICS ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_WAIT_FOR_PHYSICS ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_FIND_PATROL_NODE ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_UNSTICK ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_ON ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_OFF ); ADD_CUSTOM_TASK( CNPC_Roller, TASK_ROLLER_ISSUE_CODE ); AI_LOAD_SCHEDULE( CNPC_Roller, SCHED_ROLLER_PATROL ); AI_LOAD_SCHEDULE( CNPC_Roller, SCHED_ROLLER_WAIT_FOR_PHYSICS ); AI_LOAD_SCHEDULE( CNPC_Roller, SCHED_ROLLER_UNSTICK ); #if 0 ADD_CUSTOM_ACTIVITY(CNPC_Roller, ACT_MYCUSTOMACTIVITY); #endif }
void CNPC_Portal_FloorTurret::Precache( void ) { SetModelName( MAKE_STRING( FLOOR_TURRET_PORTAL_MODEL ) ); BaseClass::Precache(); ADD_CUSTOM_ACTIVITY( CNPC_FloorTurret, ACT_FLOOR_TURRET_FIRE2 ); m_sLaserHaloSprite = PrecacheModel( "sprites/redlaserglow.vmt" ); PrecacheModel("effects/redlaser1.vmt"); for ( int iTalkScript = 0; iTalkScript < PORTAL_TURRET_STATE_TOTAL; ++iTalkScript ) { if ( iTalkScript < TURRET_STATE_TOTAL ) { if ( g_TalkNames[ iTalkScript ] ) PrecacheScriptSound( g_TalkNames[ iTalkScript ] ); else iTalkScript = TURRET_STATE_TOTAL - 1; // We hit the last script item, so jump to the portal only states } else { PrecacheScriptSound( g_PortalTalkNames[ iTalkScript - TURRET_STATE_TOTAL ] ); } } }
//----------------------------------------------------------------------------- // Purpose: Initialize the custom schedules // Input : // Output : //----------------------------------------------------------------------------- void CNewNPC::InitCustomSchedules(void) { INIT_CUSTOM_AI(CNewNPC); ADD_CUSTOM_TASK(CNewNPC, TASK_MYCUSTOMTASK); ADD_CUSTOM_SCHEDULE(CNewNPC, SCHED_MYCUSTOMSCHEDULE); ADD_CUSTOM_ACTIVITY(CNewNPC, ACT_MYCUSTOMACTIVITY); ADD_CUSTOM_CONDITION(CNewNPC, COND_MYCUSTOMCONDITION); }
void CBaseTurret::Spawn() { Precache( ); SetNextThink( gpGlobals->curtime + 1 ); SetMoveType( MOVETYPE_FLY ); m_nSequence = 0; m_flCycle = 0; SetSolid( SOLID_SLIDEBOX ); m_takedamage = DAMAGE_YES; AddFlag( FL_AIMTARGET ); m_iAmmoType = g_pGameRules->GetAmmoDef()->Index("SMG1"); AddFlag( FL_NPC ); if (( m_spawnflags & SF_NPC_TURRET_AUTOACTIVATE ) && !( m_spawnflags & SF_NPC_TURRET_STARTINACTIVE )) { m_iAutoStart = true; } ResetSequenceInfo( ); SetPoseParameter( TURRET_BC_YAW, 0 ); SetPoseParameter( TURRET_BC_PITCH, 0 ); // Activities ADD_CUSTOM_ACTIVITY( CBaseTurret, ACT_TURRET_OPEN ); ADD_CUSTOM_ACTIVITY( CBaseTurret, ACT_TURRET_CLOSE ); ADD_CUSTOM_ACTIVITY( CBaseTurret, ACT_TURRET_CLOSED_IDLE ); ADD_CUSTOM_ACTIVITY( CBase`matTurret, ACT_TURRET_OPEN_IDLE ); ADD_CUSTOM_ACTIVITY( CBaseTurret, ACT_TURRET_FIRE ); ADD_CUSTOM_ACTIVITY( CBaseTurret, ACT_TURRET_RELOAD ); }
//----------------------------------------------------------------------------- // Purpose: Precache //----------------------------------------------------------------------------- void CNPC_CeilingTurret::Precache( void ) { PrecacheModel( CEILING_TURRET_MODEL ); PrecacheModel( CEILING_TURRET_GLOW_SPRITE ); // Activities ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_OPEN ); ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_CLOSE ); ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_CLOSED_IDLE ); ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_OPEN_IDLE ); ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_FIRE ); ADD_CUSTOM_ACTIVITY( CNPC_CeilingTurret, ACT_CEILING_TURRET_DRYFIRE ); PrecacheScriptSound( "NPC_CeilingTurret.Retire" ); PrecacheScriptSound( "NPC_CeilingTurret.Deploy" ); PrecacheScriptSound( "NPC_CeilingTurret.Move" ); PrecacheScriptSound( "NPC_CeilingTurret.Active" ); PrecacheScriptSound( "NPC_CeilingTurret.Alert" ); PrecacheScriptSound( "NPC_CeilingTurret.ShotSounds" ); PrecacheScriptSound( "NPC_CeilingTurret.Ping" ); PrecacheScriptSound( "NPC_CeilingTurret.Die" ); PrecacheScriptSound( "NPC_FloorTurret.DryFire" ); BaseClass::Precache(); }
//----------------------------------------------------------------------------- // Purpose: Precache //----------------------------------------------------------------------------- void CNPC_CombineCamera::Precache() { PrecacheModel(COMBINE_CAMERA_MODEL); PrecacheModel(COMBINE_CAMERA_GLOW_SPRITE); PrecacheModel(COMBINE_CAMERA_FLASH_SPRITE); // Activities ADD_CUSTOM_ACTIVITY(CNPC_CombineCamera, ACT_COMBINE_CAMERA_OPEN); ADD_CUSTOM_ACTIVITY(CNPC_CombineCamera, ACT_COMBINE_CAMERA_CLOSE); ADD_CUSTOM_ACTIVITY(CNPC_CombineCamera, ACT_COMBINE_CAMERA_CLOSED_IDLE); ADD_CUSTOM_ACTIVITY(CNPC_CombineCamera, ACT_COMBINE_CAMERA_OPEN_IDLE); ADD_CUSTOM_ACTIVITY(CNPC_CombineCamera, ACT_COMBINE_CAMERA_FIRE); PrecacheScriptSound( "NPC_CombineCamera.Move" ); PrecacheScriptSound( "NPC_CombineCamera.BecomeIdle" ); PrecacheScriptSound( "NPC_CombineCamera.Active" ); PrecacheScriptSound( "NPC_CombineCamera.Click" ); PrecacheScriptSound( "NPC_CombineCamera.Ping" ); PrecacheScriptSound( "NPC_CombineCamera.Angry" ); PrecacheScriptSound( "NPC_CombineCamera.Die" ); BaseClass::Precache(); }
//----------------------------------------------------------------------------- // Purpose: Initialize the custom schedules // Input : // Output : //----------------------------------------------------------------------------- void CNPC_Houndeye::InitCustomSchedules(void) { INIT_CUSTOM_AI(CNPC_Houndeye); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_CLOSE_EYE); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_OPEN_EYE); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_THREAT_DISPLAY); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_FALL_ASLEEP); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_WAKE_UP); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_HOP_BACK); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_GET_PATH_TO_CIRCLE); ADD_CUSTOM_TASK(CNPC_Houndeye, TASK_HOUND_REVERSE_STRAFE_DIR); ADD_CUSTOM_CONDITION(CNPC_Houndeye, COND_HOUND_GROUP_ATTACK); ADD_CUSTOM_CONDITION(CNPC_Houndeye, COND_HOUND_GROUP_RETREAT); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_HOP_RETREAT); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_RANGE_ATTACK1); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_ATTACK_STRAFE); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_ATTACK_STRAFE_REVERSE); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_ATTACK); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_RETREAT); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_CHASE_ENEMY); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_COVER_WAIT); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_RALLEY); ADD_CUSTOM_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_PATROL_WALK_LOOP); ADD_CUSTOM_ACTIVITY(CNPC_Houndeye, ACT_HOUND_GUARD); g_interactionHoundeyeGroupAttack = CBaseCombatCharacter::GetInteractionID(); g_interactionHoundeyeGroupRetreat = CBaseCombatCharacter::GetInteractionID(); g_interactionHoundeyeGroupRalley = CBaseCombatCharacter::GetInteractionID(); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_HOP_RETREAT); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_RANGE_ATTACK1); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_ATTACK_STRAFE); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_ATTACK_STRAFE_REVERSE); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_ATTACK); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_RETREAT); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_CHASE_ENEMY); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_COVER_WAIT); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_GROUP_RALLEY); AI_LOAD_SCHEDULE(CNPC_Houndeye, SCHED_HOUND_PATROL_WALK_LOOP); }
//----------------------------------------------------------------------------- // Purpose: Initialize the custom schedules // Input : // Output : //----------------------------------------------------------------------------- void CNPC_RollerDozer::InitCustomSchedules(void) { INIT_CUSTOM_AI( CNPC_RollerDozer ); ADD_CUSTOM_SCHEDULE( CNPC_RollerDozer, SCHED_ROLLERDOZER_CLEAR_DEBRIS ); ADD_CUSTOM_SCHEDULE( CNPC_RollerDozer, SCHED_ROLLERDOZER_IDLE_STAND ); ADD_CUSTOM_CONDITION( CNPC_RollerDozer, COND_ROLLERDOZER_FOUND_DEBRIS ); ADD_CUSTOM_TASK( CNPC_RollerDozer, TASK_ROLLERDOZER_FIND_CLEANUP_NODE ); ADD_CUSTOM_TASK( CNPC_RollerDozer, TASK_ROLLERDOZER_GET_PATH_TO_CLEANUP_POINT ); ADD_CUSTOM_TASK( CNPC_RollerDozer, TASK_ROLLERDOZER_CLEAR_DEBRIS ); AI_LOAD_SCHEDULE( CNPC_RollerDozer, SCHED_ROLLERDOZER_CLEAR_DEBRIS ); AI_LOAD_SCHEDULE( CNPC_RollerDozer, SCHED_ROLLERDOZER_IDLE_STAND ); #if 0 ADD_CUSTOM_ACTIVITY(CNPC_Roller, ACT_MYCUSTOMACTIVITY); #endif }