public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode) { int Command = (int)ScriptParameters[0]; // ScriptParameterTypes[0] is typeof(int) uint Target = (uint)ScriptParameters[1]; if (!AppearanceTypes.characterMovement.ContainsKey(Target)) { AppearanceTypes.characterMovement.Add(Target, AppearanceTypes.MovementType.Walking); } if (!AppearanceTypes.overlandMap.ContainsKey(Target)) { AppearanceTypes.overlandMap.Add(Target, false); } if (!AppearanceTypes.currentSwimTrigger.ContainsKey(Target)) { AppearanceTypes.currentSwimTrigger.Add(Target, OBJECT_INVALID); } switch ((MovementCommand)Command) { case MovementCommand.EnterWater: AppearanceTypes.characterMovement[Target] = AppearanceTypes.MovementType.Swimming; AppearanceTypes.RecalculateMovement(this, Target); if (GetIsObjectValid(AppearanceTypes.currentSwimTrigger[Target]) == CLRScriptBase.TRUE) { AppearanceTypes.currentSwimTrigger[Target] = OBJECT_SELF; } else { AppearanceTypes.currentSwimTrigger[Target] = OBJECT_SELF; Swimming.SwimTriggerEnter(this, Target); } break; case MovementCommand.ExitWater: break; case MovementCommand.MountHorse: AppearanceTypes.characterMovement[Target] = AppearanceTypes.MovementType.Riding; Riding.MountHorse(this, Target, OBJECT_SELF); AppearanceTypes.RecalculateMovement(this, Target); break; case MovementCommand.CloakRemoved: if (Riding.isWarhorse.ContainsKey(Target)) { AppearanceTypes.characterMovement[Target] = AppearanceTypes.MovementType.Walking; Riding.Dismount(this, Target, GetPCItemLastUnequipped(), GetLocation(Target)); AppearanceTypes.RecalculateMovement(this, Target); } break; case MovementCommand.ToOverlandMap: AppearanceTypes.overlandMap[Target] = true; AppearanceTypes.RecalculateMovement(this, Target); break; case MovementCommand.FromOverlandMap: AppearanceTypes.overlandMap[Target] = false; AppearanceTypes.RecalculateMovement(this, Target); break; case MovementCommand.Dismount: if (Riding.isWarhorse.ContainsKey(Target)) { AppearanceTypes.characterMovement[Target] = AppearanceTypes.MovementType.Walking; AppearanceTypes.RecalculateMovement(this, Target); Riding.Dismount(this, Target, GetItemInSlot(INVENTORY_SLOT_CLOAK, Target), GetLocation(OBJECT_SELF)); } break; case MovementCommand.ForceRecalculate: AppearanceTypes.RecalculateMovement(this, Target); break; case MovementCommand.RestoreHorse: AppearanceTypes.characterMovement[Target] = AppearanceTypes.MovementType.Riding; AppearanceTypes.RecalculateMovement(this, Target); if (!Riding.isWarhorse.ContainsKey(Target)) { Riding.isWarhorse.Add(Target, true); } break; } return(0); }