public static void LoadGemsEditorFiles() { try { DbcStores.InitFiles(); Item.LoadData(); GemProperties.LoadData(); SpellItemEnchantment.LoadData(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
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."); }
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; }
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; }
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(); }
// 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]); }
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; }