mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-06-01 00:17:43 +03:00
Shadow Walker 2: Correctly implemented custom schedules
This commit is contained in:
parent
bcb9e416a1
commit
289a9b4f6e
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user