void HostageEscapeToCoverState::__MAKE_VHOOK(OnUpdate)(CHostageImprov *improv)
{
	if (!m_canEscape)
	{
		improv->Idle();
		return;
	}

	if (IsSpotOccupied(improv->GetEntity(), &m_spot))
	{
		const float emergencyHidingRange = 300.0f;
		const Vector *spot = FindNearbyHidingSpot(improv->GetEntity(), &improv->GetFeet(), improv->GetLastKnownArea(), emergencyHidingRange);

		if (spot == NULL)
		{
			HostageEscapeState *escape = static_cast<HostageEscapeState *>(GetParent());
			escape->LookAround();
			return;
		}

		m_spot = *spot;
		improv->MoveTo(m_spot);
	}

	if (improv->IsAtMoveGoal())
	{
		HostageEscapeState *escape = static_cast<HostageEscapeState *>(GetParent());
		escape->LookAround();
		return;
	}
}
void HostageEscapeLookAroundState::__MAKE_VHOOK(OnUpdate)(CHostageImprov *improv)
{
	improv->UpdateIdleActivity(ACT_IDLE_SNEAKY, ACT_IDLE_SNEAKY_FIDGET);

	if (m_timer.IsElapsed())
	{
		HostageEscapeState *escape = static_cast<HostageEscapeState *>(GetParent());
		escape->ToCover();
	}
}
/* <41faaf> ../cstrike/dlls/hostage/states/hostage_escape.cpp:100 */
void HostageEscapeToCoverState::__MAKE_VHOOK(OnMoveToFailure)(const Vector &goal, MoveToFailureType reason)
{
#ifndef HOOK_GAMEDLL
	HostageEscapeState *escape = (HostageEscapeState *)GetParent();
#else
	// TODO: why this - 1? Hacks?
	// need investigation
	HostageEscapeState *escape = (HostageEscapeState *)*((int *)this - 1);
#endif // HOOK_GAMEDLL

	escape->LookAround();
}
void HostageEscapeToCoverState::__MAKE_VHOOK(OnMoveToFailure)(const Vector &goal, MoveToFailureType reason)
{
	HostageEscapeState *escape = static_cast<HostageEscapeState *>(GetParent());
	escape->LookAround();
}