Exemplo n.º 1
0
 public static void LoadGemsEditorFiles()
 {
     try
     {
         DbcStores.InitFiles();
         Item.LoadData();
         GemProperties.LoadData();
         SpellItemEnchantment.LoadData();
     }
     catch (System.Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Exemplo n.º 2
0
        void Create()
        {
            int MinQuality = Convert.ToInt32(genMinQuality.Text);
            int MinItemLevel = Convert.ToInt32(genMinItemLevel.Text);
            int ItemLevelIncre = Convert.ToInt32(genItemLevelIncre.Text);
            int ItemVisual = Convert.ToInt32(genItemVisual.Text);
            string SuffixName = genSuffixName.Text;
            bool Unique = genUnique.IsChecked == true;
            bool NoSpellEffect = genNoSpellEffect.IsChecked == true;
            int EnchantTemplate = Convert.ToInt32(genEnchantTemplate.Text);
            if (Unique)
                SuffixName = "(U)" + SuffixName;

            var spell = (from d in LegacyToolBox.Data.Spell where d.ID == SpellList[1].entry select d).SingleOrDefault();
            if (!NoSpellEffect && spell == null)
            {
                LegacyToolBox.Signal("Invalid SpellTemplate Entry.");
                return;
            }

            var enchantTemplate = (from d in LegacyToolBox.Data.SpellItemEnchant where d.ID == EnchantTemplate select d).SingleOrDefault();

            // create spells
            for (int rank = 1; rank <= GENERATE_RANK; ++rank)
            {
                SpellInfoStore store = SpellList[rank];
                if (!NoSpellEffect)
                {
                    if (rank == 1)
                    {
                        spell.EffectBasePoints[0] = (int)store.bp;
                        spell.EffectDieSides[0] = (int)store.ds;
                        spell.EffectBonusMultiplier[0] = store.pb;
                    }
                    else
                    {
                        var sp = DataProcessor.CopySpellToID(LegacyToolBox.Data.Spell, spell, store.entry);
                        sp.EffectBasePoints[0] = (int)store.bp;
                        sp.EffectDieSides[0] = (int)store.ds;
                        sp.EffectBonusMultiplier[0] = store.pb;
                    }
                }

                SpellItemEnchantment enchant;
                var oldEnchant = (from d in LegacyToolBox.Data.SpellItemEnchant where d.ID == store.enchant select d).SingleOrDefault();
                if (enchantTemplate != null && rank == 1)
                    enchant = enchantTemplate;
                else if (oldEnchant != null)
                    enchant = oldEnchant;
                else
                {
                    enchant = new SpellItemEnchantment();
                    enchant.ID = store.enchant;
                    LegacyToolBox.Data.SpellItemEnchant.Add(enchant);
                }
                if (!NoSpellEffect)
                {
                    if (enchantTemplate != null)
                    {
                        enchant.EnchantType[0] = enchantTemplate.EnchantType[0];
                        enchant.Object[0] = enchantTemplate.Object[0];
                    }
                    else
                    {
                        enchant.EnchantType[0] = 3;
                        enchant.Object[0] = (int)store.entry;
                    }

                    enchant.Name = store.enchantString;
                    enchant.ItemVisual = ItemVisual;
                }
                else
                {
                    if (enchantTemplate != null)
                    {
                        enchant.EnchantType[0] = enchantTemplate.EnchantType[0];
                        enchant.Object[0] = enchantTemplate.Object[0];
                    }
                    else
                    {
                        enchant.EnchantType[0] = 3;
                        enchant.Object[0] = (int)store.entry;
                    }

                    enchant.Name = store.enchantString;
                    enchant.ItemVisual = ItemVisual;
                    enchant.Min[0] = (int)(store.bp + store.ds);
                    enchant.Max[0] = (int)(store.bp + store.ds);
                }

                ItemRandomProperty randProp;
                var oldProp = (from d in LegacyToolBox.Data.ItemRandomProperty where d.ID == store.rp select d).SingleOrDefault();
                if (oldProp != null)
                    randProp = oldProp;
                else
                {
                    randProp = new ItemRandomProperty();
                    randProp.ID = store.rp;
                    LegacyToolBox.Data.ItemRandomProperty.Add(randProp);
                }
                randProp.Enchant[0] = store.enchant;
                randProp.Name = SuffixName;
            }

            int firstRP = SpellList[1].rp;
            var oldpool = (from d in DB.LEGACY.suffix_pool where d.R1 == firstRP select d).SingleOrDefault();
            if (oldpool != null)
            {
                DB.LEGACY.suffix_pool.Remove(oldpool);
                DB.LSave();
            }

            suffix_pool spool = new suffix_pool();
            spool.R1 = SpellList[1].rp;
            spool.R2 = SpellList[2].rp;
            spool.R3 = SpellList[3].rp;
            spool.R4 = SpellList[4].rp;
            spool.R5 = SpellList[5].rp;
            spool.R6 = SpellList[6].rp;
            spool.R7 = SpellList[7].rp;
            spool.R8 = SpellList[8].rp;
            spool.R9 = SpellList[9].rp;
            spool.R10 = SpellList[10].rp;
            spool.R11 = SpellList[11].rp;
            spool.R12 = SpellList[12].rp;
            spool.R13 = SpellList[13].rp;
            spool.R14 = SpellList[14].rp;
            spool.R15 = SpellList[15].rp;
            spool.R16 = SpellList[16].rp;
            spool.R17 = SpellList[17].rp;
            spool.R18 = SpellList[18].rp;
            spool.R19 = SpellList[19].rp;
            spool.R20 = SpellList[20].rp;
            spool.R21 = SpellList[21].rp;
            spool.R22 = SpellList[22].rp;
            spool.R23 = SpellList[23].rp;
            spool.R24 = SpellList[24].rp;
            spool.R25 = SpellList[25].rp;
            spool.R26 = SpellList[26].rp;
            spool.R27 = SpellList[27].rp;
            spool.R28 = SpellList[28].rp;
            spool.R29 = SpellList[29].rp;
            spool.R30 = SpellList[30].rp;
            spool.MinQuality = MinQuality;
            spool.MinItemLevel = MinItemLevel;
            spool.ItemLevelIncrePerRank = ItemLevelIncre;
            spool.Unique = Unique;
            DB.LEGACY.suffix_pool.Add(spool);
            DB.LSave();

            DataProcessor.SaveSpell(LegacyToolBox.Data.Spell);
            DataProcessor.SaveSpellItemEnchant(LegacyToolBox.Data.SpellItemEnchant);
            DataProcessor.SaveItemRandomProperty(LegacyToolBox.Data.ItemRandomProperty);

            LegacyToolBox.Signal("Suffix Generated.");
        }
Exemplo n.º 3
0
 public static SpellItemEnchantment CreateNewSpellItemEnchant()
 {
     int maxid = (from d in DataStore.Data.SpellItemEnchant select d.ID).Max() + 1;
     SpellItemEnchantment enchant = new SpellItemEnchantment();
     enchant.ID = maxid;
     enchant.Item = 0;
     enchant.ItemVisual = 0;
     enchant.Charges = 0;
     enchant.Condition = 0;
     enchant.EnchantType = new int[3] { 0, 0, 0 };
     enchant.Max = new int[3] { 0, 0, 0 };
     enchant.Min = new int[3] { 0, 0, 0 };
     enchant.Name = "";
     enchant.NameFlags = 16712190;
     enchant.Object = new int[3] { 0, 0, 0 };
     enchant.RequiredLevel = 0;
     enchant.SkillLevel = 0;
     enchant.SkillLine = 0;
     enchant.Slot = 0;
     DataStore.Data.SpellItemEnchant.Add(enchant);
     return enchant;
 }
Exemplo n.º 4
0
 public static ObservableCollection<SpellItemEnchantment> LoadSpellItemEnchant()
 {
     ObservableCollection<SpellItemEnchantment> list = new ObservableCollection<SpellItemEnchantment>();
     using (FileStream stream = File.OpenRead(DATA_PATH + "DBC/SpellItemEnchantment.dbc"))
     {
         BinaryReader r = new BinaryReader(stream);
         stream.Position = 4;
         int records = r.ReadInt32();
         int columns = r.ReadInt32();
         int rowSize = r.ReadInt32();
         int stringSize = r.ReadInt32();
         int dataSize = 20 + rowSize * records;
         for (int i = 0; i != records; ++i)
         {
             SpellItemEnchantment enchant = new SpellItemEnchantment();
             enchant.ID = r.ReadInt32();
             enchant.Charges = r.ReadInt32();
             enchant.EnchantType[0] = r.ReadInt32();
             enchant.EnchantType[1] = r.ReadInt32();
             enchant.EnchantType[2] = r.ReadInt32();
             enchant.Min[0] = r.ReadInt32();
             enchant.Min[1] = r.ReadInt32();
             enchant.Min[2] = r.ReadInt32();
             enchant.Max[0] = r.ReadInt32();
             enchant.Max[1] = r.ReadInt32();
             enchant.Max[2] = r.ReadInt32();
             enchant.Object[0] = r.ReadInt32();
             enchant.Object[1] = r.ReadInt32();
             enchant.Object[2] = r.ReadInt32();
             enchant.Name = DBC.ReadString(r, dataSize, 4 * 4, 4 * 11);
             enchant.NameFlags = r.ReadInt32();
             enchant.ItemVisual = r.ReadInt32();
             enchant.Slot = r.ReadInt32();
             enchant.Item = r.ReadInt32();
             enchant.Condition = r.ReadInt32();
             enchant.SkillLine = r.ReadInt32();
             enchant.SkillLevel = r.ReadInt32();
             enchant.RequiredLevel = r.ReadInt32();
             list.Add(enchant);
         }
         r.Close();
     }
     return list;
 }
Exemplo n.º 5
0
        private void GenerateBaseEnchantProperty(string name, int enchantQuality, float enchantChance, string enchantTitle, string enchantFormat, int maxRank, int xpFactor, int type1, int value1, int object1, float step1, int type2 = 0, int value2 = 0, int object2 = 0, float step2 = 0, int type3 = 0, int value3 = 0, int object3 = 0, float step3 = 0)
        {
            int firstRank = 0;

            for (int i = 0; i != maxRank; ++i)
            {
                ItemRandomProperty property = WorldWorker.CreateNewItemRandomProperty();
                if (i == 0)
                {
                    firstRank = property.ID;
                }
                SpellItemEnchantment enchant = WorldWorker.CreateNewSpellItemEnchant();

                item_enchant_data data = new item_enchant_data();
                data.FirstRank = firstRank;
                data.ID        = property.ID;
                data.Rank      = i + 1;
                item_enchant_upgrade_data upgrade = new item_enchant_upgrade_data();
                upgrade.Enchant = property.ID;
                upgrade.Level   = i + 1;
                upgrade.Next    = i == maxRank - 1 ? 0 : property.ID + 1; // hack!
                switch (enchantQuality)
                {
                case 1:
                    upgrade.UpgradeItem = 60327;
                    break;

                case 2:
                    upgrade.UpgradeItem = 60328;
                    break;

                case 3:
                    upgrade.UpgradeItem = 60329;
                    break;

                case 4:
                    upgrade.UpgradeItem = 60330;
                    break;

                case 5:
                    upgrade.UpgradeItem = 60331;
                    break;

                case 6:
                    upgrade.UpgradeItem = 60332;
                    break;

                case 7:
                    upgrade.UpgradeItem = 60333;
                    break;

                default:
                    upgrade.UpgradeItem = 60333;
                    break;
                }

                upgrade.UpgradeItemCount = upgrade.Next == 0 ? 0 : 10 + 20 * i;
                DB.LEGACY.item_enchant_data.Add(data);
                DB.LEGACY.item_enchant_upgrade_data.Add(upgrade);
                DB.LEGACY.SaveChanges();
                DB.Refresh();

                property.Enchant[0]    = enchant.ID;
                property.Name          = name;
                enchant.Object[0]      = object1;
                enchant.Object[1]      = object2;
                enchant.Object[2]      = object3;
                enchant.Min[0]         = (int)(value1 + step1 * i);
                enchant.Min[1]         = (int)(value2 + step2 * i);
                enchant.Min[2]         = (int)(value3 + step3 * i);
                enchant.Max[0]         = (int)(value1 + step1 * i);
                enchant.Max[1]         = (int)(value2 + step2 * i);
                enchant.Max[2]         = (int)(value3 + step3 * i);
                enchant.EnchantType[0] = type1;
                enchant.EnchantType[1] = type2;
                enchant.EnchantType[2] = type3;

                string enchantName = "遗产:" + String.Format(enchantTitle, i + 1);
                switch (enchantQuality)
                {
                case 1:
                    enchantName = "|cffffffff" + enchantName + "|r";
                    break;

                case 2:
                    enchantName = "|cff1eff00" + enchantName + "|r";
                    break;

                case 3:
                    enchantName = "|cff0070dd" + enchantName + "|r";
                    break;

                case 4:
                    enchantName = "|cffa335ee" + enchantName + "|r";
                    break;

                case 5:
                    enchantName = "|cffff8000" + enchantName + "|r";
                    break;

                case 6:
                    enchantName = "|cffe6cc80" + enchantName + "|r";
                    break;

                case 7:
                    enchantName = "|cffff0000" + enchantName + "|r";
                    break;

                default:
                    break;
                }
                enchant.Name = enchantName + Environment.NewLine + String.Format("  " + enchantFormat, enchant.Min[0], enchant.Min[1], enchant.Min[2]);
            }

            item_enchant_chance chance = new item_enchant_chance();

            chance.Enchant = firstRank;
            chance.Chance  = enchantChance;
            DB.LEGACY.item_enchant_chance.Add(chance);
            DB.LEGACY.SaveChanges();
            DB.Refresh();
        }
Exemplo n.º 6
-1
        // 1 enchant per rp case
        private void GenerateEnchantProperty(string name, string format, int rank, int nextRank, int xp, int object1, int value1, int type1, int step1, int object2 = 0, int value2 = 0, int type2 = 0, int step2 = 0, int object3 = 0, int value3 = 0, int type3 = 0, int step3 = 0)
        {
            ItemRandomProperty        property = WorldWorker.CreateNewItemRandomProperty();
            SpellItemEnchantment      enchant  = WorldWorker.CreateNewSpellItemEnchant();
            item_enchant_data         data     = new item_enchant_data();
            item_enchant_upgrade_data upgrade  = new item_enchant_upgrade_data();

            property.Enchant[0]    = enchant.ID;
            property.Name          = name;
            enchant.Object[0]      = object1;
            enchant.Object[1]      = object2;
            enchant.Object[2]      = object3;
            enchant.Min[0]         = value1 + step1 * rank;
            enchant.Min[1]         = value2 + step2 * rank;
            enchant.Min[2]         = value3 + step3 * rank;
            enchant.Max[0]         = value1 + step1 * rank;
            enchant.Max[1]         = value2 + step2 * rank;
            enchant.Max[2]         = value3 + step3 * rank;
            enchant.EnchantType[0] = type1;
            enchant.EnchantType[1] = type2;
            enchant.EnchantType[2] = type3;
            enchant.Name           = String.Format(format, enchant.Min[0], enchant.Min[1], enchant.Min[0]);
        }
Exemplo n.º 7
-1
 private static SpellItemEnchantment CreateSpellItemEnchantment(int id, string format, int object1, int value1, int type1, int object2 = 0, int value2 = 0, int type2 = 0, int object3 = 0, int value3 = 0, int type3 = 0)
 {
     SpellItemEnchantment enchant = new SpellItemEnchantment();
     enchant.ID = id;
     enchant.EnchantType[0] = type1;
     enchant.EnchantType[1] = type2;
     enchant.EnchantType[2] = type3;
     enchant.Object[0] = object1;
     enchant.Object[1] = object2;
     enchant.Object[2] = object3;
     enchant.Min[0] = value1;
     enchant.Max[0] = value1;
     enchant.Min[1] = value2;
     enchant.Max[1] = value2;
     enchant.Min[2] = value3;
     enchant.Max[2] = value3;
     enchant.Name = String.Format(format, enchant.Min[0], enchant.Min[1], enchant.Min[2]);
     return enchant;
 }