Shadow Walker 2: Correctly implemented custom schedules

This commit is contained in:
1upD 2018-10-22 19:06:05 -04:00
parent bcb9e416a1
commit 289a9b4f6e

View File

@ -34,8 +34,10 @@
//=========================================================
enum
{
SCHED_MELEE_ATTACK_NOINTERRUPT,
SCHED_HIDE
SCHED_MELEE_ATTACK_NOINTERRUPT = LAST_SHARED_SCHEDULE,
SCHED_HIDE,
LAST_SHADOW_WALKER_SCHED
};
//=========================================================
@ -110,7 +112,7 @@ private:
LINK_ENTITY_TO_CLASS( npc_shadow_walker, CNPC_ShadowWalker );
IMPLEMENT_CUSTOM_AI( npc_citizen,CNPC_ShadowWalker );
//IMPLEMENT_CUSTOM_AI( npc_citizen,CNPC_ShadowWalker );
//---------------------------------------------------------
@ -142,10 +144,12 @@ BEGIN_DATADESC(CNPC_ShadowWalker)
DEFINE_INPUTFUNC(FIELD_VOID, "DisablePickupWeapons", InputDisablePickupWeapons)
END_DATADESC()
AI_BEGIN_CUSTOM_NPC(npc_shadow_walker, CNPC_ShadowWalker)
//=========================================================
// > Melee_Attack_NoInterrupt
//=========================================================
AI_DEFINE_SCHEDULE
DEFINE_SCHEDULE
(
SCHED_MELEE_ATTACK_NOINTERRUPT,
@ -163,7 +167,7 @@ AI_DEFINE_SCHEDULE
//=========================================================
// SCHED_HIDE
//=========================================================
AI_DEFINE_SCHEDULE
DEFINE_SCHEDULE
(
SCHED_HIDE,
@ -181,6 +185,9 @@ AI_DEFINE_SCHEDULE
" COND_NEW_ENEMY"
" COND_ENEMY_DEAD"
);
AI_END_CUSTOM_NPC()
//---------------------------------------------------------
// Constants
@ -190,16 +197,6 @@ const float MAX_TIME_NEXT_SOUND = 1.0f;
const float MIN_TIME_NEXT_FOUNDENEMY_SOUND = 2.0f;
const float MAX_TIME_NEXT_FOUNDENEMY_SOUND = 5.0f;
//-----------------------------------------------------------------------------
// Purpose: Initialize the custom schedules
// Input :
// Output :
//-----------------------------------------------------------------------------
void CNPC_ShadowWalker::InitCustomSchedules(void)
{
INIT_CUSTOM_AI(CNPC_ShadowWalker);
}
//-----------------------------------------------------------------------------
// Purpose: Inner class for default weapon
// TODO: Merge this with the Matt weapon in npc_citizen
@ -445,8 +442,9 @@ int CNPC_ShadowWalker::SelectIdleSchedule()
// no valid route! Wander instead
if (GetNavigator()->GetGoalType() == GOALTYPE_NONE) {
nSched = SelectScheduleWander();
if (nSched == SCHED_NONE)
return SCHED_IDLE_STAND;
if (nSched != SCHED_NONE)
return nSched;
return SCHED_IDLE_STAND;
}
// valid route. Get moving
@ -552,7 +550,7 @@ int CNPC_ShadowWalker::SelectCombatSchedule()
}
// Reloading conditions are necessary just in case for some reason somebody gives the Shadow Walker a gun
if (HasCondition(COND_LOW_PRIMARY_AMMO) || HasCondition(COND_NO_PRIMARY_AMMO))
if (HasRangedWeapon() && (HasCondition(COND_LOW_PRIMARY_AMMO) || HasCondition(COND_NO_PRIMARY_AMMO)))
{
return SCHED_HIDE_AND_RELOAD;
}