本文整理汇总了C++中GetEnemy函数的典型用法代码示例。如果您正苦于以下问题:C++ GetEnemy函数的具体用法?C++ GetEnemy怎么用?C++ GetEnemy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetEnemy函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: GetEnemy
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
Vector CNPC_Monk::GetActualShootTrajectory( const Vector &shootOrigin )
{
if( GetEnemy() && GetEnemy()->Classify() == CLASS_ZOMBIE )
{
Vector vecShootDir;
if( m_bPerfectAccuracy || random->RandomInt( 1, monk_headshot_freq.GetInt() ) == 1 )
{
vecShootDir = GetEnemy()->HeadTarget( shootOrigin ) - shootOrigin;
}
else
{
vecShootDir = GetEnemy()->BodyTarget( shootOrigin ) - shootOrigin;
}
VectorNormalize( vecShootDir );
return vecShootDir;
}
return BaseClass::GetActualShootTrajectory( shootOrigin );
}
开发者ID:0xFEEDC0DE64,项目名称:UltraGame,代码行数:23,代码来源:npc_monk.cpp
示例2: EmitSound
//-----------------------------------------------------------------------------
// Purpose: Fire!
//-----------------------------------------------------------------------------
void CNPC_CeilingTurret::Shoot( const Vector &vecSrc, const Vector &vecDirToEnemy )
{
if ( m_spawnflags & SF_CEILING_TURRET_OUT_OF_AMMO )
{
EmitSound( "NPC_FloorTurret.DryFire");
EmitSound( "NPC_CeilingTurret.Activate" );
if ( RandomFloat( 0, 1 ) > 0.7 )
{
m_flShotTime = gpGlobals->curtime + random->RandomFloat( 0.5, 1.5 );
}
else
{
m_flShotTime = gpGlobals->curtime;
}
return;
}
FireBulletsInfo_t info;
if ( GetEnemy() != NULL )
{
Vector vecDir = GetActualShootTrajectory( vecSrc );
info.m_vecSrc = vecSrc;
info.m_vecDirShooting = vecDir;
info.m_iTracerFreq = 1;
info.m_iShots = 1;
info.m_pAttacker = this;
info.m_vecSpread = VECTOR_CONE_PRECALCULATED;
info.m_flDistance = MAX_COORD_RANGE;
info.m_iAmmoType = m_iAmmoType;
}
else
{
// Just shoot where you're facing!
Vector vecMuzzle, vecMuzzleDir;
QAngle vecMuzzleAng;
info.m_vecSrc = vecSrc;
info.m_vecDirShooting = vecDirToEnemy;
info.m_iTracerFreq = 1;
info.m_iShots = 1;
info.m_pAttacker = this;
info.m_vecSpread = GetAttackSpread( NULL, NULL );
info.m_flDistance = MAX_COORD_RANGE;
info.m_iAmmoType = m_iAmmoType;
}
FireBullets( info );
EmitSound( "NPC_CeilingTurret.ShotSounds" );
DoMuzzleFlash();
}
开发者ID:AluminumKen,项目名称:hl2sb-src,代码行数:56,代码来源:npc_turret_ceiling.cpp
示例3: Q_snprintf
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
int CNPC_Crow::DrawDebugTextOverlays( void )
{
int nOffset = BaseClass::DrawDebugTextOverlays();
if (m_debugOverlays & OVERLAY_TEXT_BIT)
{
char tempstr[512];
Q_snprintf( tempstr, sizeof( tempstr ), "morale: %d", m_nMorale );
EntityText( nOffset, tempstr, 0 );
nOffset++;
if ( GetEnemy() != NULL )
{
Q_snprintf( tempstr, sizeof( tempstr ), "enemy (dist): %s (%g)", GetEnemy()->GetClassname(), ( double )m_flEnemyDist );
EntityText( nOffset, tempstr, 0 );
nOffset++;
}
}
return nOffset;
}
开发者ID:paralin,项目名称:hl2sdk,代码行数:24,代码来源:npc_crow.cpp
示例4: fabs
// here bot updates important info that is used multiple times along the thinking process
void CSDKBot::InfoGathering()
{
if (!GetEnemy())
{
m_flBotToEnemyDist = 9999;
m_flHeightDifToEnemy = 0;
m_bEnemyOnSights = false;
m_flDistTraveled += fabs(GetLocalVelocity().Length()); // this is used for stuck checking,
return;
}
m_flBotToEnemyDist = (GetLocalOrigin() - GetEnemy()->GetLocalOrigin()).Length();
trace_t tr;
UTIL_TraceHull( EyePosition(), GetEnemy()->EyePosition() - Vector(0,0,20), -BotTestHull, BotTestHull, MASK_SHOT, this, COLLISION_GROUP_NONE, &tr );
if( tr.m_pEnt == GetEnemy() ) // vision line between both
m_bEnemyOnSights = true;
else
m_bEnemyOnSights = false;
m_bInRangeToAttack = (m_flBotToEnemyDist < m_flMinRangeAttack) && FInViewCone( GetEnemy() );
m_flDistTraveled += fabs(GetLocalVelocity().Length()); // this is used for stuck checking,
m_flHeightDifToEnemy = GetLocalOrigin().z - GetEnemy()->GetLocalOrigin().z;
}
开发者ID:rajeshpillai,项目名称:DoubleAction,代码行数:29,代码来源:sdk_bot.cpp
示例5: GetEnemy
void CNPC_Stalker::UpdateAttackBeam( void )
{
CBaseEntity *pEnemy = GetEnemy();
// If not burning at a target
if (pEnemy)
{
if (gpGlobals->curtime > m_fBeamEndTime)
{
TaskComplete();
}
else
{
Vector enemyLKP = GetEnemyLKP();
m_vLaserTargetPos = enemyLKP + pEnemy->GetViewOffset();
// Face my enemy
GetMotor()->SetIdealYawToTargetAndUpdate( enemyLKP );
// ---------------------------------------------
// Get beam end point
// ---------------------------------------------
Vector vecSrc = LaserStartPosition(GetAbsOrigin());
Vector targetDir = m_vLaserTargetPos - vecSrc;
VectorNormalize(targetDir);
// --------------------------------------------------------
// If beam position and laser dir are way off, end attack
// --------------------------------------------------------
if ( DotProduct(targetDir,m_vLaserDir) < 0.5 )
{
TaskComplete();
return;
}
trace_t tr;
AI_TraceLine( vecSrc, vecSrc + m_vLaserDir * MAX_STALKER_FIRE_RANGE, MASK_SHOT, this, COLLISION_GROUP_NONE, &tr);
// ---------------------------------------------
// If beam not long enough, stop attacking
// ---------------------------------------------
if (tr.fraction == 1.0)
{
TaskComplete();
return;
}
CSoundEnt::InsertSound(SOUND_DANGER, tr.endpos, 60, 0.025, this);
}
}
else
{
TaskFail(FAIL_NO_ENEMY);
}
}
开发者ID:Muini,项目名称:Nag-asw,代码行数:52,代码来源:npc_stalker.cpp
示例6: RunAI
//=========================================================
// RunAI
//=========================================================
void CBaseMonster :: RunAI ( void )
{
// to test model's eye height
//UTIL_ParticleEffect ( pev->origin + pev->view_ofs, g_vecZero, 255, 10 );
// IDLE sound permitted in ALERT state is because monsters were silent in ALERT state. Only play IDLE sound in IDLE state
// once we have sounds for that state.
if ( ( m_MonsterState == MONSTERSTATE_IDLE || m_MonsterState == MONSTERSTATE_ALERT ) && RANDOM_LONG(0,99) == 0 && !(pev->flags & SF_MONSTER_GAG) )
{
IdleSound();
}
if ( m_MonsterState != MONSTERSTATE_NONE &&
m_MonsterState != MONSTERSTATE_PRONE &&
m_MonsterState != MONSTERSTATE_DEAD )// don't bother with this crap if monster is prone.
{
// collect some sensory Condition information.
// don't let monsters outside of the player's PVS act up, or most of the interesting
// things will happen before the player gets there!
// UPDATE: We now let COMBAT state monsters think and act fully outside of player PVS. This allows the player to leave
// an area where monsters are fighting, and the fight will continue.
if ( !FNullEnt( FIND_CLIENT_IN_PVS( edict() ) ) || ( m_MonsterState == MONSTERSTATE_COMBAT ) )
{
Look( m_flDistLook );
Listen();// check for audible sounds.
// now filter conditions.
ClearConditions( IgnoreConditions() );
GetEnemy();
}
// do these calculations if monster has an enemy.
if ( m_hEnemy != NULL )
{
CheckEnemy( m_hEnemy );
}
CheckAmmo();
}
FCheckAITrigger();
PrescheduleThink();
MaintainSchedule();
// if the monster didn't use these conditions during the above call to MaintainSchedule() or CheckAITrigger()
// we throw them out cause we don't want them sitting around through the lifespan of a schedule
// that doesn't use them.
m_afConditions &= ~( bits_COND_LIGHT_DAMAGE | bits_COND_HEAVY_DAMAGE );
}
开发者ID:6779660,项目名称:halflife,代码行数:55,代码来源:monsterstate.cpp
示例7: GetTarget
//-----------------------------------------------------------------------------
// Purpose: Handles movement towards the last move target.
// Input : flInterval -
//-----------------------------------------------------------------------------
bool CNPC_Controller::OverridePathMove( float flInterval )
{
CBaseEntity *pMoveTarget = (GetTarget()) ? GetTarget() : GetEnemy();
Vector waypointDir = GetNavigator()->GetCurWaypointPos() - GetLocalOrigin();
float flWaypointDist = waypointDir.Length2D();
VectorNormalize(waypointDir);
// cut corner?
if (flWaypointDist < 128)
{
if (m_flGroundSpeed > 100)
m_flGroundSpeed -= 40;
}
else
{
if (m_flGroundSpeed < 400)
m_flGroundSpeed += 10;
}
m_velocity = m_velocity * 0.8 + m_flGroundSpeed * waypointDir * 0.5;
SetAbsVelocity( m_velocity );
// -----------------------------------------------------------------
// Check route is blocked
// ------------------------------------------------------------------
Vector checkPos = GetLocalOrigin() + (waypointDir * (m_flGroundSpeed * flInterval));
AIMoveTrace_t moveTrace;
GetMoveProbe()->MoveLimit( NAV_FLY, GetLocalOrigin(), checkPos, MASK_NPCSOLID|CONTENTS_WATER,
pMoveTarget, &moveTrace);
if (IsMoveBlocked( moveTrace ))
{
TaskFail(FAIL_NO_ROUTE);
GetNavigator()->ClearGoal();
return true;
}
// ----------------------------------------------
Vector lastPatrolDir = GetNavigator()->GetCurWaypointPos() - GetLocalOrigin();
if ( ProgressFlyPath( flInterval, pMoveTarget, MASK_NPCSOLID, false, 64 ) == AINPP_COMPLETE )
{
{
m_vLastPatrolDir = lastPatrolDir;
VectorNormalize(m_vLastPatrolDir);
}
return true;
}
return false;
}
开发者ID:AgentAgrimar,项目名称:source-sdk-trilogy,代码行数:56,代码来源:hl1_npc_controller.cpp
示例8: AI_GetSinglePlayer
bool CNPC_Zombine::AllowedToSprint( void )
{
if ( IsOnFire() )
return false;
//If you're sprinting then there's no reason to sprint again.
if ( IsSprinting() )
return false;
int iChance = SPRINT_CHANCE_VALUE;
CHL2_Player *pPlayer = dynamic_cast <CHL2_Player*> ( AI_GetSinglePlayer() );
if ( pPlayer )
{
if ( HL2GameRules()->IsAlyxInDarknessMode() && pPlayer->FlashlightIsOn() == false )
{
iChance = SPRINT_CHANCE_VALUE_DARKNESS;
}
//Bigger chance of this happening if the player is not looking at the zombie
if ( pPlayer->FInViewCone( this ) == false )
{
iChance *= 2;
}
}
if ( HasGrenade() )
{
iChance *= 4;
}
//Below 25% health they'll always sprint
if ( ( GetHealth() > GetMaxHealth() * 0.5f ) )
{
if ( IsStrategySlotRangeOccupied( SQUAD_SLOT_ZOMBINE_SPRINT1, SQUAD_SLOT_ZOMBINE_SPRINT2 ) == true )
return false;
if ( random->RandomInt( 0, 100 ) > iChance )
return false;
if ( m_flSprintRestTime > gpGlobals->curtime )
return false;
}
float flLength = ( GetEnemy()->WorldSpaceCenter() - WorldSpaceCenter() ).Length();
if ( flLength > MAX_SPRINT_DISTANCE )
return false;
return true;
}
开发者ID:Baer42,项目名称:source-sdk-2013,代码行数:52,代码来源:npc_zombine.cpp
示例9: ClearCondition
//-----------------------------------------------------------------------------
// Purpose:
// Input : flDot -
// flDist -
// Output : int
//-----------------------------------------------------------------------------
int CNPC_AntlionGrub::MeleeAttack1Conditions( float flDot, float flDist )
{
ClearCondition( COND_ANTLIONGRUB_IN_HEAL_RANGE );
//If we're outside the heal range, then reset our timer
if ( flDist > ANTLIONGRUB_HEAL_RANGE )
{
m_flNearTime = gpGlobals->curtime + 2.0f;
return COND_TOO_FAR_TO_ATTACK;
}
//Otherwise if we've been in range for long enough signal it
if ( m_flNearTime < gpGlobals->curtime )
{
if ( ( m_nHealthReserve > 0 ) && ( GetEnemy()->m_iHealth < GetEnemy()->m_iMaxHealth ) )
{
SetCondition( COND_ANTLIONGRUB_IN_HEAL_RANGE );
}
}
return COND_CAN_MELEE_ATTACK1;
}
开发者ID:Bubbasacs,项目名称:FinalProj,代码行数:28,代码来源:npc_antliongrub.cpp
示例10: GetAbsOrigin
//=========================================================
// TakeDamage - overridden for bullsquid so we can keep track
// of how much time has passed since it was last injured
//=========================================================
int CNPC_Bullsquid::OnTakeDamage_Alive( const CTakeDamageInfo &inputInfo )
{
#if 0 //Fix later.
float flDist;
Vector vecApex, vOffset;
// if the squid is running, has an enemy, was hurt by the enemy, hasn't been hurt in the last 3 seconds, and isn't too close to the enemy,
// it will swerve. (whew).
if ( GetEnemy() != NULL && IsMoving() && pevAttacker == GetEnemy() && gpGlobals->curtime - m_flLastHurtTime > 3 )
{
flDist = ( GetAbsOrigin() - GetEnemy()->GetAbsOrigin() ).Length2D();
if ( flDist > SQUID_SPRINT_DIST )
{
AI_Waypoint_t* pRoute = GetNavigator()->GetPath()->Route();
if ( pRoute )
{
flDist = ( GetAbsOrigin() - pRoute[ pRoute->iNodeID ].vecLocation ).Length2D();// reusing flDist.
if ( GetNavigator()->GetPath()->BuildTriangulationRoute( GetAbsOrigin(), pRoute[ pRoute->iNodeID ].vecLocation, flDist * 0.5, GetEnemy(), &vecApex, &vOffset, NAV_GROUND ) )
{
GetNavigator()->PrependWaypoint( vecApex, bits_WP_TO_DETOUR | bits_WP_DONT_SIMPLIFY );
}
}
}
}
#endif
if ( !FClassnameIs ( inputInfo.GetAttacker(), "monster_headcrab" ) )
{
// don't forget about headcrabs if it was a headcrab that hurt the squid.
m_flLastHurtTime = gpGlobals->curtime;
}
return BaseClass::OnTakeDamage_Alive ( inputInfo );
}
开发者ID:hitmen047,项目名称:TF2HLCoop,代码行数:43,代码来源:hl1_npc_bullsquid.cpp
示例11: IsAllowedToDivert
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CAI_AssaultBehavior::IsAllowedToDivert( void )
{
if ( m_hAssaultPoint && m_hAssaultPoint->m_bAllowDiversion )
{
if ( m_hAssaultPoint->m_flAllowDiversionRadius == 0.0f || (m_bHitAssaultPoint && GetEnemy() != NULL && GetEnemy()->GetAbsOrigin().DistToSqr(m_hAssaultPoint->GetAbsOrigin()) <= Square(m_hAssaultPoint->m_flAllowDiversionRadius)) )
{
if ( m_flLastSawAnEnemyAt && ((gpGlobals->curtime - m_flLastSawAnEnemyAt) < ASSAULT_DIVERSION_TIME) )
return true;
}
}
return false;
}
开发者ID:paralin,项目名称:hl2sdk,代码行数:16,代码来源:ai_behavior_assault.cpp
示例12: RemoveAllGestures
int CASW_Harvester::TranslateSchedule( int scheduleType )
{
if ( scheduleType == SCHED_RANGE_ATTACK1 )
{
RemoveAllGestures();
return SCHED_ASW_HARVESTER_LAY_CRITTER;
}
if ( scheduleType == SCHED_COMBAT_FACE && IsUnreachable( GetEnemy() ) )
return SCHED_TAKE_COVER_FROM_ENEMY;
return BaseClass::TranslateSchedule( scheduleType );
}
开发者ID:Au-heppa,项目名称:swarm-sdk,代码行数:13,代码来源:asw_harvester.cpp
示例13:
//=========================================================
// CheckMeleeAttack1 - alien grunts zap the crap out of
// any enemy that gets too close.
//=========================================================
int CNPC_AlienGrunt::MeleeAttack1Conditions ( float flDot, float flDist )
{
if ( flDist > AGRUNT_MELEE_DIST )
return COND_NONE;
if ( flDot < 0.6 )
return COND_NONE;
if ( HasCondition ( COND_SEE_ENEMY ) && GetEnemy() != NULL )
return COND_CAN_MELEE_ATTACK1;
return COND_NONE;
}
开发者ID:hitmen047,项目名称:TF2HLCoop,代码行数:17,代码来源:hl1_npc_agrunt.cpp
示例14:
//-----------------------------------------------------------------------------
// Purpose:
// Input : flDot -
// flDist -
// Output : int CNPC_Assassin::MeleeAttack1Conditions
//-----------------------------------------------------------------------------
int CNPC_Assassin::MeleeAttack1Conditions ( float flDot, float flDist )
{
if ( flDist > 84 )
return COND_TOO_FAR_TO_ATTACK;
if ( flDot < 0.7f )
return 0;
if ( GetEnemy() == NULL )
return 0;
return COND_CAN_MELEE_ATTACK1;
}
开发者ID:0xFEEDC0DE64,项目名称:UltraGame,代码行数:19,代码来源:npc_assassin.cpp
示例15: switch
//=========================================================
// Start task - selects the correct activity and performs
// any necessary calculations to start the next task on the
// schedule. OVERRIDDEN for bullsquid because it needs to
// know explicitly when the last attempt to chase the enemy
// failed, since that impacts its attack choices.
//=========================================================
void CNPC_Bullsquid::StartTask ( const Task_t *pTask )
{
switch ( pTask->iTask )
{
case TASK_MELEE_ATTACK2:
{
CPASAttenuationFilter filter( this );
EmitSound( filter, entindex(), "Bullsquid.Growl" );
BaseClass::StartTask ( pTask );
break;
}
case TASK_SQUID_HOPTURN:
{
SetActivity ( ACT_HOP );
if ( GetEnemy() )
{
Vector vecFacing = ( GetEnemy()->GetAbsOrigin() - GetAbsOrigin() );
VectorNormalize( vecFacing );
GetMotor()->SetIdealYaw( vecFacing );
}
break;
}
case TASK_SQUID_EAT:
{
m_flHungryTime = gpGlobals->curtime + pTask->flTaskData;
break;
}
default:
{
BaseClass::StartTask ( pTask );
break;
}
}
}
开发者ID:hitmen047,项目名称:TF2HLCoop,代码行数:45,代码来源:hl1_npc_bullsquid.cpp
示例16: Speak
int CNPC_HL1Barney::OnTakeDamage_Alive( const CTakeDamageInfo &inputInfo )
{
// make sure friends talk about it if player hurts talkmonsters...
int ret = BaseClass::OnTakeDamage_Alive( inputInfo );
if ( !IsAlive() || m_lifeState == LIFE_DYING )
return ret;
if ( m_NPCState != NPC_STATE_PRONE && ( inputInfo.GetAttacker()->GetFlags() & FL_CLIENT ) )
{
// This is a heurstic to determine if the player intended to harm me
// If I have an enemy, we can't establish intent (may just be crossfire)
if ( GetEnemy() == NULL )
{
// If the player was facing directly at me, or I'm already suspicious, get mad
if ( HasMemory( bits_MEMORY_SUSPICIOUS ) || IsFacing( inputInfo.GetAttacker(), GetAbsOrigin() ) )
{
// Alright, now I'm pissed!
Speak( BA_MAD );
Remember( bits_MEMORY_PROVOKED );
StopFollowing();
}
else
{
// Hey, be careful with that
Speak( BA_SHOT );
Remember( bits_MEMORY_SUSPICIOUS );
}
}
else if ( !(GetEnemy()->IsPlayer()) && m_lifeState == LIFE_ALIVE )
{
Speak( BA_SHOT );
}
}
return ret;
}
开发者ID:hitmen047,项目名称:TF2HLCoop,代码行数:38,代码来源:hl1_npc_barney.cpp
示例17: GetPhysics
bool rvMonsterStroggHover::MarkerPosValid ( void )
{
//debouncer ftw
if( markerCheckTime > gameLocal.GetTime() ) {
return true;
}
markerCheckTime = gameLocal.GetTime() + 500 + (gameLocal.random.RandomFloat() * 500);
trace_t trace;
gameLocal.TracePoint( this, trace, marker.GetEntity()->GetPhysics()->GetOrigin(), marker.GetEntity()->GetPhysics()->GetOrigin(), GetPhysics()->GetClipMask(), NULL );
if ( !(trace.c.contents&GetPhysics()->GetClipMask()) )
{//not in solid
gameLocal.TracePoint( this, trace, marker.GetEntity()->GetPhysics()->GetOrigin(), GetEnemy()->GetEyePosition(), MASK_SHOT_BOUNDINGBOX, GetEnemy() );
idActor* enemyAct = NULL;
rvVehicle* enemyVeh = NULL;
if ( GetEnemy()->IsType( rvVehicle::GetClassType() ) ) {
enemyVeh = static_cast<rvVehicle*>(GetEnemy());
} else if ( GetEnemy()->IsType( idActor::GetClassType() ) ) {
enemyAct = static_cast<idActor*>(GetEnemy());
}
idEntity* hitEnt = gameLocal.entities[trace.c.entityNum];
idActor* hitAct = NULL;
if ( hitEnt && hitEnt->IsType( idActor::GetClassType() ) ) {
hitAct = static_cast<idActor*>(hitEnt);
}
if ( trace.fraction >= 1.0f
|| (enemyAct && enemyAct->IsInVehicle() && enemyAct->GetVehicleController().GetVehicle() == gameLocal.entities[trace.c.entityNum])
|| (enemyVeh && hitAct && hitAct->IsInVehicle() && hitAct->GetVehicleController().GetVehicle() == enemyVeh) )
{//have a clear LOS to enemy
if ( PointReachableAreaNum( marker.GetEntity()->GetPhysics()->GetOrigin() ) )
{//valid AAS there...
return true;
}
}
}
return false;
}
开发者ID:ET-NiK,项目名称:amxxgroup,代码行数:38,代码来源:Monster_StroggHover.cpp
示例18: VectorNormalize
//-----------------------------------------------------------------------------
// Purpose: Causes the assassin to prefer to run away, rather than towards her target
//-----------------------------------------------------------------------------
bool CNPC_Assassin::MovementCost( int moveType, const Vector &vecStart, const Vector &vecEnd, float *pCost )
{
if ( GetEnemy() == NULL )
return true;
float multiplier = 1.0f;
Vector moveDir = ( vecEnd - vecStart );
VectorNormalize( moveDir );
Vector enemyDir = ( GetEnemy()->GetAbsOrigin() - vecStart );
VectorNormalize( enemyDir );
// If we're moving towards our enemy, then the cost is much higher than normal
if ( DotProduct( enemyDir, moveDir ) > 0.5f )
{
multiplier = 16.0f;
}
*pCost *= multiplier;
return ( multiplier != 1 );
}
开发者ID:0xFEEDC0DE64,项目名称:UltraGame,代码行数:26,代码来源:npc_assassin.cpp
示例19: CanSelectSchedule
//------------------------------------------------------------------------------
// Purpose: determines if we can use this behavior currently
// Output : returns true if this behavior is able to run
//------------------------------------------------------------------------------
bool CAI_ASW_PrepareToEngageBehavior::CanSelectSchedule()
{
if ( !GetOuter()->IsInterruptable() )
return false;
if ( GetEnemy() == NULL )
return false;
if ( GetEnemy()->Classify() != CLASS_ASW_MARINE )
return false;
// don't select this schedule if we're in a target slot and can actually attack
//CASW_Marine *pMarine = assert_cast<CASW_Marine*>( GetEnemy() );
//CASW_Alien *pAlien = assert_cast<CASW_Alien*>( GetOuter() );
//if ( pMarine->IsInTargetSlot( pAlien, pAlien->GetTargetSlotType() ) )
//return false;
// TODO: Do we want to grab a target slot here? This assumes our attack/chase schedules are higher priority than anything else below us...
//if ( pMarine->OccupyTargetSlot( pAlien, pAlien->GetTargetSlotType() ) )
//return false;
return BaseClass::CanSelectSchedule();
}
开发者ID:Cre3per,项目名称:hl2sdk-csgo,代码行数:27,代码来源:asw_ai_behavior_prepare_to_engage.cpp
示例20: TranslateSchedule
//-----------------------------------------------------------------------------
// Purpose: override/translate a schedule by type
// Input : Type - schedule type
// Output : int - translated type
//-----------------------------------------------------------------------------
int CNPC_Bug_Warrior::TranslateSchedule( int scheduleType )
{
if ( scheduleType == SCHED_CHASE_ENEMY )
{
// Tell my squad that I'm attacking this guy
if ( m_pSquad )
{
m_pSquad->BroadcastInteraction( g_interactionBugSquadAttacking, (void *)GetEnemy(), this );
}
return SCHED_WBUG_CHASE_ENEMY;
}
return BaseClass::TranslateSchedule(scheduleType);
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:19,代码来源:npc_bug_warrior.cpp
注:本文中的GetEnemy函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论