public static void CreateArsenal(uint s_id, Arsenal_ID id)
 {
     MySqlCommand Command = new MySqlCommand(MySqlCommandType.INSERT);
     Command.Insert("pt_arsenal")
         .Insert("syn_id", s_id)
         .Insert("arsenal_id", (byte)id)
         .Insert("arsenal_unlocked", 1)
         .Execute();
 }
 public static void CreateArsenalItem(uint uid, string name, uint i_uid, ushort sid, Arsenal_ID aid)
 {
     MySqlCommand Command = new MySqlCommand(MySqlCommandType.INSERT);
     Command.Insert("pt_arsenal_inscribed")
         .Insert("uid", uid)
         .Insert("name", name)
         .Insert("iten_id", i_uid)
         .Insert("iten_atype", (byte)aid)
         .Insert("syn_id", sid)
         .Execute();
 }
        public static byte[] ArsenalInscribedPage(GameState Client, byte[] Data, Arsenal_ID ID)
        {
            byte[] Buffer = null;
            Arsenal_Client[] Inscribed = null;
            uint Page = (byte)(BitConverter.ToUInt32(Data, 12) / 8);

            Again:
            try
            {
                Inscribed = new Arsenal_Client[Client.Guild.Arsenal.Arsenals[ID].Inscribed.Count];
                Client.Guild.Arsenal.Arsenals[ID].Inscribed.Values.CopyTo(Inscribed, 0);
            }
            catch { goto Again; }
            int Position = 44;
            int count = Inscribed.Length;
            if (count > 8) count = 8;
            Buffer = new byte[84 + (count * 40) + 8];
            for (int i = 0; i < 20; i++)
                Buffer[i] = Data[i];

            Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
            Writer.WriteUInt32((uint)Inscribed.Length, 20, Buffer);
            Writer.WriteUInt32((uint)Client.Guild.Arsenal.Arsenals[ID].Donation, 36, Buffer);
            Writer.WriteUInt32((uint)Inscribed.Length, 40, Buffer);
            for (uint i = BitConverter.ToUInt32(Data, 8); i <= BitConverter.ToUInt32(Data, 12); i++)
            {
                if (i - 1 >= Inscribed.Length) break;
                Arsenal_Client ac = Inscribed[i - 1];
                Interfaces.IConquerItem Item = ac.Item;
                Writer.WriteUInt32(Item.UID, Position, Buffer); Position += 4;

                Writer.WriteUInt32((uint)(i), Position, Buffer); Position += 4;
                Writer.WriteString(ac.Name, Position, Buffer); Position += 16;
                Writer.WriteUInt32(Item.ID, Position, Buffer); Position += 4;
                Writer.WriteByte((byte)(Item.ID % 10), Position, Buffer); Position++;
                Writer.WriteByte(Item.Plus, Position, Buffer); Position++;
                Writer.WriteByte((byte)Item.SocketOne, Position, Buffer); Position++;
                Writer.WriteByte((byte)Item.SocketTwo, Position, Buffer); Position++;
                Writer.WriteByte((byte)Item.BattlePower, Position, Buffer); Position++;
                Writer.WriteByte(0, Position, Buffer); Position++;
                Writer.WriteByte(0, Position, Buffer); Position++;
                Writer.WriteByte(0, Position, Buffer); Position++;
                Writer.WriteUInt32(0, Position, Buffer); Position += 4;
            }
            Writer.WriteString(ServerBase.Constants.ServerKey, (Buffer.Length - 8), Buffer);
            return Buffer;
        }
 public static void UpdateArsenal(ulong Donation, Arsenal_ID id)
 {
     MySqlCommand Command = new MySqlCommand(MySqlCommandType.UPDATE);
     Command.Update("pt_arsenal")
         .Set("arsenal_donation", Donation.ToString())
         .Where("arsenal_id", (byte)id)
         .Execute();
 }
 public static void DeleteArsenalItem(uint uid, uint i_uid, Arsenal_ID aid)
 {
     MySqlCommand Command = new MySqlCommand(MySqlCommandType.DELETE);
     Command.Delete("pt_arsenal_inscribed", "uid", uid).And("iten_id", i_uid).Execute();
 }
 public static void DeleteArsenal(uint s_id, Arsenal_ID id)
 {
     MySqlCommand Command = new MySqlCommand(MySqlCommandType.DELETE);
     Command.Delete("pt_arsenal", "syn_id", s_id).And("arsenal_id", (byte)id).Execute();
 }
 public void UnlockArsenal(GameState Client, Arsenal_ID ID)
 {
     if (Client.AsMember.Rank != Enums.GuildMemberRank.GuildLeader)
         return;
     if (Arsenals.ContainsKey(ID))
         return;
     if (Client.Guild.SilverFund < getUnlockValue())
         return;
     if (ID == Arsenal_ID.None) ID = Arsenal_ID.Headgear;
     Client.Guild.SilverFund -= getUnlockValue();
     Arsenals.Add(ID, new Arsenal_State() { ID = ID, Unlocked = true });
     Client.Send(ArsenalPacket.GuildArsenal(Client));
     Database.ArsenalTable.CreateArsenal(Client.Guild.ID, ID);
     //Database.UpdateGuild(Syn);
 }
        public void RemoveItem(GameState Client, IConquerItem Item, Arsenal_ID ID)
        {
            Arsenal_State _Arsenal = null;
            if (Arsenals.TryGetValue(ID, out _Arsenal))
            {
                if (_Arsenal.Inscribed.ContainsKey(Item.UID))
                {
                    lock (_Arsenal.Inscribed)
                        _Arsenal.Inscribed.Remove(Item.UID);

                    Item.Inscribed = false;
                    Item.Mode = PhoenixProject.Game.Enums.ItemMode.Update;
                    Item.Send(Client);
                    Item.Mode = PhoenixProject.Game.Enums.ItemMode.Default;
                    Arsenals[ID].Donation -= GetDonation(Item);
                    Client.Arsenal_Donation -= GetDonation(Item);
                    Database.ArsenalTable.UpdateArsenal(Arsenals[ID].Donation, ID);
                    Database.ConquerItemTable.UpdateInscre2(Item);
                    Database.ArsenalTable.DeleteArsenalItem(Client.Entity.UID, Item.UID, ID);
                }
            }
        }
        public void InscribeItem(GameState Client, IConquerItem Item, Arsenal_ID ID)
        {
            Arsenal_State _Arsenal = null;
            if (Arsenals.TryGetValue(ID, out _Arsenal))
            {
                if (!_Arsenal.Inscribed.ContainsKey(Item.UID))
                {
                    Item.Inscribed = true;
                    Item.Mode = PhoenixProject.Game.Enums.ItemMode.Update;
                    Item.Send(Client);
                    Item.Mode = PhoenixProject.Game.Enums.ItemMode.Default;

                    lock (_Arsenal.Inscribed)
                        _Arsenal.Inscribed.Add(Item.UID, new Arsenal_Client() { iUID = Item.UID, Item = Item, UID = Client.Entity.UID, Name = Client.Entity.Name });
                    Arsenals[ID].Donation += GetDonation(Item);
                    Client.Arsenal_Donation += GetDonation(Item);
                    Database.ConquerItemTable.UpdateInscre1(Item);
                    Database.ArsenalTable.UpdateArsenal(Arsenals[ID].Donation, ID);
                    Database.ArsenalTable.CreateArsenalItem(Client.Entity.UID, Client.Entity.Name, Item.UID, Client.Entity.GuildID, ID);
                }
            }
        }