public static void RecalculateMovement(CLRScriptBase script, uint Creature) { int appType = GetBaseAppearance(script, Creature); if (appType < 0) { return; } if (overlandMap[Creature]) { if (characterMovement[Creature] == MovementType.Riding) { appType += Ride_02; script.SetCreatureAppearanceType(Creature, appType); return; } else { appType += Walk_01; script.SetCreatureAppearanceType(Creature, appType); return; } } else if (characterMovement[Creature] == MovementType.Riding) { appType += Ride_12; script.SetCreatureAppearanceType(Creature, appType); return; } else if (characterMovement[Creature] == MovementType.Swimming) { appType += Swim; script.SetCreatureAppearanceType(Creature, appType); return; } else { int moveRate = 10; if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_BARBARIAN, Creature) >= 1) { // Barbarians get +0.4m/s when not wearing heavy armor and not carrying a heavy load. if (script.GetEncumbranceState(Creature) != CLRScriptBase.ENCUMBRANCE_STATE_OVERLOADED && script.GetArmorRank(script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_CHEST, Creature)) != CLRScriptBase.ARMOR_RANK_HEAVY) { moveRate += 1; } } if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 3) { // Unarmored monks get +0.4m/s of movement for every 3 levels, up to level 18. if (script.GetEncumbranceState(Creature) != CLRScriptBase.ENCUMBRANCE_STATE_HEAVY && script.GetEncumbranceState(Creature) != CLRScriptBase.ENCUMBRANCE_STATE_OVERLOADED && script.GetArmorRank(script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_CHEST, Creature)) == CLRScriptBase.ARMOR_RANK_NONE) { if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 18) { moveRate++; } if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 15) { moveRate++; } if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 12) { moveRate++; } if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 9) { moveRate++; } if (script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_MONK, Creature) >= 6) { moveRate++; } moveRate++; } } if (script.GetHasFeat(CLRScriptBase.FEAT_NW9_FRANTIC_REACTIONS, Creature, CLRScriptBase.TRUE) == CLRScriptBase.TRUE) { // Level 3+ knight protectors have frantic reactions, and thus +0.4m/s moveRate++; } switch (moveRate) { case 10: appType += Walk_10; break; case 11: appType += Walk_11; break; case 12: appType += Walk_12; break; case 13: appType += Walk_13; break; case 14: appType += Walk_14; break; case 15: appType += Walk_15; break; case 16: appType += Walk_16; break; case 17: appType += Walk_17; break; case 18: appType += Walk_18; break; case 19: appType += Walk_19; break; case 20: appType += Walk_20; break; case 21: appType += Walk_21; break; case 22: appType += Walk_22; break; } if (script.GetHasFeat(CLRScriptBase.FEAT_MONK_ENDURANCE, Creature, CLRScriptBase.TRUE) == CLRScriptBase.TRUE) { script.FeatRemove(Creature, CLRScriptBase.FEAT_MONK_ENDURANCE); script.FeatAdd(Creature, 3742, CLRScriptBase.FALSE, CLRScriptBase.FALSE, CLRScriptBase.FALSE); } if (script.GetHasFeat(CLRScriptBase.FEAT_BARBARIAN_ENDURANCE, Creature, CLRScriptBase.TRUE) == CLRScriptBase.TRUE) { script.FeatRemove(Creature, CLRScriptBase.FEAT_BARBARIAN_ENDURANCE); script.FeatAdd(Creature, 3743, CLRScriptBase.FALSE, CLRScriptBase.FALSE, CLRScriptBase.FALSE); } script.SetCreatureAppearanceType(Creature, appType); return; } }