public override bool Slice() { double normalized = this.m_Sync.Normalized; if (normalized >= 1.0) { return(false); } int xWorld = Renderer.m_xWorld; int yWorld = Renderer.m_yWorld; int zWorld = Renderer.m_zWorld; int x = 0; int y = 0; int z = 0; int xOffset = 0; int yOffset = 0; int fOffset = 0; base.GetSource(out x, out y, out z); x -= xWorld; y -= yWorld; z -= zWorld; int num11 = (Engine.GameWidth >> 1) + ((x - y) * 0x16); int num12 = ((Engine.GameHeight >> 1) + ((x + y) * 0x16)) - (z * 4); if (base.m_Source is Mobile) { num12 -= 30; } num11 += Engine.GameX; num12 += Engine.GameY; num11 -= Renderer.m_xScroll; num12 -= Renderer.m_yScroll; if ((base.m_Source != null) && (base.m_Source.GetType() == typeof(Mobile))) { Mobile source = (Mobile)base.m_Source; if (source.Walking.Count > 0) { WalkAnimation animation = (WalkAnimation)source.Walking.Peek(); if (animation.Snapshot(ref xOffset, ref yOffset, ref fOffset)) { num11 += xOffset; num12 += yOffset; } } } base.GetTarget(out x, out y, out z); x -= xWorld; y -= yWorld; z -= zWorld; int num13 = (Engine.GameWidth >> 1) + ((x - y) * 0x16); int num14 = ((Engine.GameHeight >> 1) + ((x + y) * 0x16)) - (z * 4); if (base.m_Target is Mobile) { num14 -= 50; } num13 += Engine.GameX; num14 += Engine.GameY; num13 -= Renderer.m_xScroll; num14 -= Renderer.m_yScroll; if ((base.m_Target != null) && (base.m_Target.GetType() == typeof(Mobile))) { Mobile target = (Mobile)base.m_Target; if (target.Walking.Count > 0) { WalkAnimation animation2 = (WalkAnimation)target.Walking.Peek(); if (animation2.Snapshot(ref xOffset, ref yOffset, ref fOffset)) { num13 += xOffset; num14 += yOffset; } } } Texture item = null; IHue hue = Renderer.m_Dead ? Hues.Grayscale : this.m_Hue; if (this.m_Animated) { item = hue.GetItem(this.m_ItemID + this.m_Animation[((Renderer.m_Frames - this.m_Start) / this.m_Delay) % this.m_FrameCount]); } else { item = hue.GetItem(this.m_ItemID); } switch (this.m_RenderMode) { case 2: Renderer.SetAlpha(1f); Renderer.SetAlphaEnable(true); Renderer.SetBlendType(DrawBlendType.Additive); break; case 3: Renderer.SetAlpha(1.5f); Renderer.SetAlphaEnable(true); Renderer.SetBlendType(DrawBlendType.Additive); break; case 4: Renderer.SetAlpha(0.5f); Renderer.SetAlphaEnable(true); Renderer.SetBlendType(DrawBlendType.Normal); break; } int num15 = num11 + ((int)((num13 - num11) * normalized)); int num16 = num12 + ((int)((num14 - num12) * normalized)); item.DrawRotated(num15, num16, Math.Atan2((double)(num12 - num14), (double)(num11 - num13))); switch (this.m_RenderMode) { case 2: case 3: case 4: Renderer.SetAlphaEnable(false); Renderer.SetBlendType(DrawBlendType.Normal); break; } return(true); }