public static void RemoveSp(this Mate e, bool isBackToMiniland = false) { if (e.Owner?.Session == null || e.Owner.MapInstance == null) { return; } e.IsUsingSp = false; e.Owner.Session.SendPacket(e.GenerateScPacket()); if (!e.IsTeamMember) { return; } e.Owner.MapInstance.Broadcast(e.GenerateCMode(-1)); e.GenerateDpski(); e.Owner.Session.SendPacket(e.GenerateCond()); e.Owner.MapInstance.Broadcast(e.GenerateOut()); if (!isBackToMiniland) { bool isAct4 = ServerManager.Instance.ChannelId == 51; Parallel.ForEach(e.Owner.MapInstance.Sessions.Where(s => s.Character != null), s => { if (!isAct4 || e.Owner.Faction == s.Character.Faction) { s.SendPacket(e.GenerateIn(false, isAct4)); } else { s.SendPacket(e.GenerateIn(true, isAct4, s.Account.Authority)); } }); } e.Owner.Session.SendPacket(e.Owner.GeneratePinit()); }