public static void CreatePropertySeries(Level lvl, Tendency tend, string name, string formatA, int object1a, int value1a, int type1a, int step1a, int object2a = 0, int value2a = 0, int type2a = 0, int step2a = 0, int object3a = 0, int value3a = 0, int type3a = 0, int step3a = 0, string formatB = "", int object1b = 0, int value1b = 0, int type1b = 0, int step1b = 0, int object2b = 0, int value2b = 0, int type2b = 0, int step2b = 0, int object3b = 0, int value3b = 0, int type3b = 0, int step3b = 0, string formatC = "", int object1c = 0, int value1c = 0, int type1c = 0, int step1c = 0, int object2c = 0, int value2c = 0, int type2c = 0, int step2c = 0, int object3c = 0, int value3c = 0, int type3c = 0, int step3c = 0) { int pMax = (from d in LegacyToolBox.Data.ItemRandomProperty select d.ID).Max() + 1; int eMax = (from d in LegacyToolBox.Data.SpellItemEnchant select d.ID).Max() + 1; int level = (int)lvl; int tendency = (int)tend; item_suffix suffix = new item_suffix(); suffix.Suffix = pMax; int p = 0; ItemRandomProperty property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank1 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank2 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank3 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank4 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank5 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank6 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank7 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank8 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank9 = property.ID; ++p; ++pMax; property = new ItemRandomProperty(); property.ID = pMax; property.Name = name; if (formatA != "") { SpellItemEnchantment enchantA = CreateSpellItemEnchantment(eMax, formatA, object1a, value1a + step1a * p, type1a, object2a, value1a + step2a * p, type2a, object3a, value3a + step3a * p, type3a); property.Enchant[0] = enchantA.ID; ++eMax; } if (formatB != "") { SpellItemEnchantment enchantB = CreateSpellItemEnchantment(eMax, formatB, object1b, value1b + step1b * p, type1b, object2b, value1b + step2b * p, type2b, object3b, value3b + step3b * p, type3b); property.Enchant[0] = enchantB.ID; ++eMax; } if (formatC != "") { SpellItemEnchantment enchantC = CreateSpellItemEnchantment(eMax, formatC, object1c, value1b + step1c * p, type1c, object2c, value1b + step2c * p, type2c, object3c, value3b + step3c * p, type3c); property.Enchant[0] = enchantC.ID; ++eMax; } LegacyToolBox.Data.ItemRandomProperty.Add(property); suffix.Rank10 = property.ID; DB.LEGACY.item_suffix.Add(suffix); DB.LSave(); }
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 ItemRandomProperty CreateNewItemRandomProperty() { int maxid = (from d in DataStore.Data.ItemRandomProperty select d.ID).Max() + 1; ItemRandomProperty property = new ItemRandomProperty(); property.ID = maxid; property.Enchant = new int[3] { 0, 0, 0 }; property.InnerName = ""; property.Name = ""; property.NameFlag = 16712190; DataStore.Data.ItemRandomProperty.Add(property); return property; }
public static ObservableCollection<ItemRandomProperty> LoadItemRandomProperty() { ObservableCollection<ItemRandomProperty> list = new ObservableCollection<ItemRandomProperty>(); using (FileStream stream = File.OpenRead(DATA_PATH + "DBC/ItemRandomProperties.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) { ItemRandomProperty prop = new ItemRandomProperty(); prop.ID = r.ReadInt32(); prop.InnerName = DBC.ReadString(r, dataSize); prop.Enchant[0] = r.ReadInt32(); prop.Enchant[1] = r.ReadInt32(); prop.Enchant[2] = r.ReadInt32(); prop.Enchant[3] = r.ReadInt32(); prop.Enchant[4] = r.ReadInt32(); prop.Name = DBC.ReadString(r, dataSize, 4 * 4, 4 * 11); prop.NameFlag = r.ReadInt32(); list.Add(prop); } 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]); }