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 enum
{ {
SCHED_MELEE_ATTACK_NOINTERRUPT, SCHED_MELEE_ATTACK_NOINTERRUPT = LAST_SHARED_SCHEDULE,
SCHED_HIDE SCHED_HIDE,
LAST_SHADOW_WALKER_SCHED
}; };
//========================================================= //=========================================================
@ -110,7 +112,7 @@ private:
LINK_ENTITY_TO_CLASS( npc_shadow_walker, CNPC_ShadowWalker ); 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) DEFINE_INPUTFUNC(FIELD_VOID, "DisablePickupWeapons", InputDisablePickupWeapons)
END_DATADESC() END_DATADESC()
AI_BEGIN_CUSTOM_NPC(npc_shadow_walker, CNPC_ShadowWalker)
//========================================================= //=========================================================
// > Melee_Attack_NoInterrupt // > Melee_Attack_NoInterrupt
//========================================================= //=========================================================
AI_DEFINE_SCHEDULE DEFINE_SCHEDULE
( (
SCHED_MELEE_ATTACK_NOINTERRUPT, SCHED_MELEE_ATTACK_NOINTERRUPT,
@ -163,7 +167,7 @@ AI_DEFINE_SCHEDULE
//========================================================= //=========================================================
// SCHED_HIDE // SCHED_HIDE
//========================================================= //=========================================================
AI_DEFINE_SCHEDULE DEFINE_SCHEDULE
( (
SCHED_HIDE, SCHED_HIDE,
@ -181,6 +185,9 @@ AI_DEFINE_SCHEDULE
" COND_NEW_ENEMY" " COND_NEW_ENEMY"
" COND_ENEMY_DEAD" " COND_ENEMY_DEAD"
); );
AI_END_CUSTOM_NPC()
//--------------------------------------------------------- //---------------------------------------------------------
// Constants // Constants
@ -190,16 +197,6 @@ const float MAX_TIME_NEXT_SOUND = 1.0f;
const float MIN_TIME_NEXT_FOUNDENEMY_SOUND = 2.0f; const float MIN_TIME_NEXT_FOUNDENEMY_SOUND = 2.0f;
const float MAX_TIME_NEXT_FOUNDENEMY_SOUND = 5.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 // Purpose: Inner class for default weapon
// TODO: Merge this with the Matt weapon in npc_citizen // TODO: Merge this with the Matt weapon in npc_citizen
@ -445,8 +442,9 @@ int CNPC_ShadowWalker::SelectIdleSchedule()
// no valid route! Wander instead // no valid route! Wander instead
if (GetNavigator()->GetGoalType() == GOALTYPE_NONE) { if (GetNavigator()->GetGoalType() == GOALTYPE_NONE) {
nSched = SelectScheduleWander(); nSched = SelectScheduleWander();
if (nSched == SCHED_NONE) if (nSched != SCHED_NONE)
return SCHED_IDLE_STAND; return nSched;
return SCHED_IDLE_STAND;
} }
// valid route. Get moving // 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 // 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; return SCHED_HIDE_AND_RELOAD;
} }