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 SelectCombatSchedule();
virtual bool CanPickkUpWeapons() { return true; }
virtual float GetSequenceGroundSpeed(CStudioHdr *pStudioHdr, int iSequence);
Activity NPC_TranslateActivity(Activity eNewActivity);
// Sounds
@ -62,7 +63,7 @@ public:
void FixupWeapon();
// Inputs
virtual void InputSetSpeed(inputdata_t &inputdata);
virtual void InputSetSpeedModifier(inputdata_t &inputdata);
virtual void InputEnableOpenDoors(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_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_flSpeedModifier; // Modifier to apply to move distance
};
@ -114,8 +116,9 @@ BEGIN_DATADESC(CNPC_ShadowWalker)
DEFINE_FIELD(m_bWanderToggle, FIELD_BOOLEAN),
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, "DisableOpenDoors", InputDisableOpenDoors)
END_DATADESC()
@ -204,6 +207,7 @@ void CNPC_ShadowWalker::Spawn( void )
m_flFieldOfView = 0.5;
m_flNextSoundTime = gpGlobals->curtime;
m_NPCState = NPC_STATE_NONE;
m_flSpeedModifier = 1.0f;
CapabilitiesClear();
@ -576,12 +580,29 @@ void CNPC_ShadowWalker::PrecacheNPCSoundScript(string_t * SoundName, string_t de
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
//-----------------------------------------------------------------------------
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)
{
m_bCannotOpenDoors = true;
m_bCannotOpenDoors = false;
if (!HasSpawnFlags(SF_NPC_START_EFFICIENT))
{
CapabilitiesAdd(bits_CAP_DOORS_GROUP);
@ -601,7 +622,7 @@ void CNPC_ShadowWalker::InputEnableOpenDoors(inputdata_t &inputdata)
//-----------------------------------------------------------------------------
void CNPC_ShadowWalker::InputDisableOpenDoors(inputdata_t &inputdata)
{
m_bCannotOpenDoors = false;
m_bCannotOpenDoors = true;
if (!HasSpawnFlags(SF_NPC_START_EFFICIENT))
{
CapabilitiesRemove(bits_CAP_DOORS_GROUP);