Shadow Walker: Replaced nonfunctioning SetSpeed input with SetSpeedModifier input

This commit is contained in:
1upD 2018-10-17 19:39:13 -04:00
parent b8fb4ba435
commit a66998cc9c

View File

@ -46,6 +46,7 @@ public:
virtual int SelectAlertSchedule(); virtual int SelectAlertSchedule();
virtual int SelectCombatSchedule(); virtual int SelectCombatSchedule();
virtual bool CanPickkUpWeapons() { return true; } virtual bool CanPickkUpWeapons() { return true; }
virtual float GetSequenceGroundSpeed(CStudioHdr *pStudioHdr, int iSequence);
Activity NPC_TranslateActivity(Activity eNewActivity); Activity NPC_TranslateActivity(Activity eNewActivity);
// Sounds // Sounds
@ -62,7 +63,7 @@ public:
void FixupWeapon(); void FixupWeapon();
// Inputs // Inputs
virtual void InputSetSpeed(inputdata_t &inputdata); virtual void InputSetSpeedModifier(inputdata_t &inputdata);
virtual void InputEnableOpenDoors(inputdata_t &inputdata); virtual void InputEnableOpenDoors(inputdata_t &inputdata);
virtual void InputDisableOpenDoors(inputdata_t &inputdata); virtual void InputDisableOpenDoors(inputdata_t &inputdata);
@ -89,6 +90,7 @@ private:
bool m_bCannotOpenDoors; // If true, this NPC cannot open doors. The condition is reversed because originally it could. bool m_bCannotOpenDoors; // If true, this NPC cannot open doors. The condition is reversed because originally it could.
bool m_bWanderToggle; // Boolean to toggle wandering / standing every think cycle bool m_bWanderToggle; // Boolean to toggle wandering / standing every think cycle
float m_flNextSoundTime; // Next time at which this NPC is allowed to play an NPC sound float m_flNextSoundTime; // Next time at which this NPC is allowed to play an NPC sound
float m_flSpeedModifier; // Modifier to apply to move distance
}; };
@ -114,8 +116,9 @@ BEGIN_DATADESC(CNPC_ShadowWalker)
DEFINE_FIELD(m_bWanderToggle, FIELD_BOOLEAN), DEFINE_FIELD(m_bWanderToggle, FIELD_BOOLEAN),
DEFINE_FIELD(m_flNextSoundTime, FIELD_TIME), DEFINE_FIELD(m_flNextSoundTime, FIELD_TIME),
DEFINE_FIELD(m_flSpeedModifier, FIELD_TIME),
DEFINE_INPUTFUNC(FIELD_FLOAT, "SetSpeed", InputSetSpeed), DEFINE_INPUTFUNC(FIELD_FLOAT, "SetSpeedModifier", InputSetSpeedModifier),
DEFINE_INPUTFUNC(FIELD_VOID, "EnableOpenDoors", InputEnableOpenDoors), DEFINE_INPUTFUNC(FIELD_VOID, "EnableOpenDoors", InputEnableOpenDoors),
DEFINE_INPUTFUNC(FIELD_VOID, "DisableOpenDoors", InputDisableOpenDoors) DEFINE_INPUTFUNC(FIELD_VOID, "DisableOpenDoors", InputDisableOpenDoors)
END_DATADESC() END_DATADESC()
@ -204,6 +207,7 @@ void CNPC_ShadowWalker::Spawn( void )
m_flFieldOfView = 0.5; m_flFieldOfView = 0.5;
m_flNextSoundTime = gpGlobals->curtime; m_flNextSoundTime = gpGlobals->curtime;
m_NPCState = NPC_STATE_NONE; m_NPCState = NPC_STATE_NONE;
m_flSpeedModifier = 1.0f;
CapabilitiesClear(); CapabilitiesClear();
@ -576,12 +580,29 @@ void CNPC_ShadowWalker::PrecacheNPCSoundScript(string_t * SoundName, string_t de
PrecacheScriptSound(STRING(*SoundName)); PrecacheScriptSound(STRING(*SoundName));
} }
//-----------------------------------------------------------------------------
// Purpose: Get movement speed, multipled by modifier
//-----------------------------------------------------------------------------
float CNPC_ShadowWalker::GetSequenceGroundSpeed(CStudioHdr *pStudioHdr, int iSequence)
{
float t = SequenceDuration(pStudioHdr, iSequence);
if (t > 0)
{
return (GetSequenceMoveDist(pStudioHdr, iSequence) * m_flSpeedModifier / t);
}
else
{
return 0;
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Hammer input to change the speed of the NPC // Purpose: Hammer input to change the speed of the NPC
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CNPC_ShadowWalker::InputSetSpeed(inputdata_t &inputdata) void CNPC_ShadowWalker::InputSetSpeedModifier(inputdata_t &inputdata)
{ {
this->m_flSpeed = inputdata.value.Float(); this->m_flSpeedModifier = inputdata.value.Float();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -589,7 +610,7 @@ void CNPC_ShadowWalker::InputSetSpeed(inputdata_t &inputdata)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CNPC_ShadowWalker::InputEnableOpenDoors(inputdata_t &inputdata) void CNPC_ShadowWalker::InputEnableOpenDoors(inputdata_t &inputdata)
{ {
m_bCannotOpenDoors = true; m_bCannotOpenDoors = false;
if (!HasSpawnFlags(SF_NPC_START_EFFICIENT)) if (!HasSpawnFlags(SF_NPC_START_EFFICIENT))
{ {
CapabilitiesAdd(bits_CAP_DOORS_GROUP); CapabilitiesAdd(bits_CAP_DOORS_GROUP);
@ -601,7 +622,7 @@ void CNPC_ShadowWalker::InputEnableOpenDoors(inputdata_t &inputdata)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void CNPC_ShadowWalker::InputDisableOpenDoors(inputdata_t &inputdata) void CNPC_ShadowWalker::InputDisableOpenDoors(inputdata_t &inputdata)
{ {
m_bCannotOpenDoors = false; m_bCannotOpenDoors = true;
if (!HasSpawnFlags(SF_NPC_START_EFFICIENT)) if (!HasSpawnFlags(SF_NPC_START_EFFICIENT))
{ {
CapabilitiesRemove(bits_CAP_DOORS_GROUP); CapabilitiesRemove(bits_CAP_DOORS_GROUP);