From 99f10ead55e2e76a0c31216d2aa6b8aa3b9d33c4 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Tue, 26 Oct 2021 02:09:17 -0400
Subject: [PATCH] Fix NoClip flag.

---
 .../HorseIsleServer/Player/User.cs            | 30 ++++++++++++++++---
 .../HorseIsleServer/Server/GameServer.cs      | 15 +++++-----
 2 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/HorseIsleServer/HorseIsleServer/Player/User.cs b/HorseIsleServer/HorseIsleServer/Player/User.cs
index 9e394b9..053fb3f 100644
--- a/HorseIsleServer/HorseIsleServer/Player/User.cs
+++ b/HorseIsleServer/HorseIsleServer/Player/User.cs
@@ -33,16 +33,39 @@ namespace HISP.Player
         private int hunger;
         private int thirst;
         private int tired;
+        private bool noClip = false;
 
+        public bool NoClip
+        {
+            get
+            {
+                if(CurrentlyRidingHorse != null)
+                {
+                    if(CurrentlyRidingHorse.Breed != null)
+                    {
+                        if (CurrentlyRidingHorse.Breed.Type == "pegasus")
+                        {
+                            return true;
+                        }
+                        if (CurrentlyRidingHorse.Breed.Id == 170)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return noClip;
+            }
+            set
+            {
+                noClip = true;
+            }
+        }
         public Trade TradingWith = null;
-
         public int AttemptingToOfferItem;
         public bool TradeMenuPriority = false;
-
         public byte[] SecCodeSeeds = new byte[3];
         public int SecCodeInc = 0;
         public int SecCodeCount = 0;
-
         public int Id;
         public string Username;
         public bool Administrator;
@@ -62,7 +85,6 @@ namespace HISP.Player
         public bool MuteSocials = false;
         public bool MuteAll = false;
         public bool MuteLogins = false;
-        public bool NoClip = false;
         public string Gender;
         public bool MetaPriority = false;
         public bool Idle;
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
index 28ac421..68cc949 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
@@ -1985,6 +1985,10 @@ namespace HISP.Server
                     { 
                         if(sender.LoggedinUser.CurrentlyRidingHorse != null)
                         {
+
+                            byte[] stopRidingHorseMessagePacket = PacketBuilder.CreateChat(Messages.HorseStopRidingMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+                            sender.SendPacket(stopRidingHorseMessagePacket);
+
                             StopRidingHorse(sender);
                         }
                         else
@@ -2007,6 +2011,10 @@ namespace HISP.Server
                     }
                     if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
                     {
+
+                        byte[] stopRidingHorseMessagePacket = PacketBuilder.CreateChat(Messages.HorseStopRidingMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+                        sender.SendPacket(stopRidingHorseMessagePacket);
+
                         StopRidingHorse(sender);
                     }
                     else
@@ -7949,12 +7957,10 @@ namespace HISP.Server
             if (horseMountInst.Breed.Type == "pegasus")
             {
                 incBy = 16;
-                sender.LoggedinUser.NoClip = true;
             }
             if (horseMountInst.Breed.Id == 170) // Unipeg
             {
                 incBy = 17;
-                sender.LoggedinUser.NoClip = true;
             }
 
             incBy *= 5;
@@ -7972,14 +7978,9 @@ namespace HISP.Server
         {
             sender.LoggedinUser.CurrentlyRidingHorse = null;
 
-            byte[] stopRidingHorseMessagePacket = PacketBuilder.CreateChat(Messages.HorseStopRidingMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
-            sender.SendPacket(stopRidingHorseMessagePacket);
-
-
             sender.LoggedinUser.Facing %= 5;
             byte[] rideHorsePacket = PacketBuilder.CreateHorseRidePacket(sender.LoggedinUser.X, sender.LoggedinUser.Y, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Facing, 10, true);
             sender.SendPacket(rideHorsePacket);
-            sender.LoggedinUser.NoClip = false;
 
             UpdateUserFacingAndLocation(sender.LoggedinUser);
         }