public void SetAlwaysWalk(NwCreature creature, bool forceWalk) { CNWSCreature nativeCreature = creature.Creature; InternalVariableBool alwaysWalk = InternalVariables.AlwaysWalk(creature); if (forceWalk) { nativeCreature.m_bForcedWalk = true.ToInt(); alwaysWalk.Value = true; } else { alwaysWalk.Delete(); if (creature.ActiveEffects.Any(activeEffect => activeEffect.EffectType == EffectType.MovementSpeedDecrease)) { return; } if (!nativeCreature.m_bForcedWalk.ToBool()) { nativeCreature.UpdateEncumbranceState(false.ToInt()); nativeCreature.m_bForcedWalk = (nativeCreature.m_nEncumbranceState != 0).ToInt(); } nativeCreature.m_bForcedWalk = false.ToInt(); } }
private int OnRemoveLimitMovementSpeed(void *pEffectListHandler, void *pObject, void *pEffect) { NwObject?nwObject = CNWSObject.FromPointer(pObject).ToNwObject(); if (nwObject != null && InternalVariables.AlwaysWalk(nwObject)) { return(1); } return(removeLimitMovementSpeedHook.CallOriginal(pEffectListHandler, pObject, pEffect)); }
public bool GetAlwaysWalk(NwCreature creature) { return(InternalVariables.AlwaysWalk(creature)); }