private void Initialize(Mobile m, int NewX, int NewY, int NewZ, int NewDir) { this.m_Mobile = m; this.m_NewX = NewX; this.m_NewY = NewY; this.m_NewZ = NewZ; this.m_NewDir = NewDir; int x = 0; int y = 0; int z = 0; if (m.Walking.Count == 0) { x = m.X; y = m.Y; z = m.Z; } else { IEnumerator enumerator = m.Walking.GetEnumerator(); WalkAnimation current = null; while (enumerator.MoveNext()) { current = (WalkAnimation)enumerator.Current; } if (current != null) { x = current.m_NewX; y = current.m_NewY; z = current.m_NewZ; } } if (!m.Player) { Engine.EquipSort(m, NewDir & 0x87); m.Direction = (byte)NewDir; } this.m_Advance = false; this.m_Sync = null; if (((x != NewX) || (y != NewY)) || (z != NewZ)) { int num4 = NewX - x; int num5 = NewY - y; int num6 = NewZ - z; int num7 = (num4 - num5) * 0x16; int num8 = ((num4 + num5) * 0x16) - (num6 * 4); this.m_X = num7; this.m_Y = num8; int idx = (NewDir >> 7) & 1; ArrayList equip = m.Equip; bool mounted = (equip.Count > 0) && (((EquipEntry)equip[0]).m_Layer == Layer.Mount); if ((m.Player && Engine.GMPrivs) && ((Engine.m_WalkSpeed != 0.4f) || (Engine.m_RunSpeed != 0.2f))) { this.m_Duration = (idx == 0) ? Engine.m_WalkSpeed : Engine.m_RunSpeed; } else { this.m_Duration = GetDuration(mounted, idx); } if (m.Player && (m.Body == 0x3db)) { this.m_Duration *= 0.25f; } this.m_Frames = GetFrames(mounted, idx); } else { this.m_X = 0; this.m_Y = 0; this.m_Duration = 0.1f; this.m_Frames = 0f; } }