private MagicItem GenerateItem(string rank) { string newName = ""; string abilities = ""; string itemType = ""; int cost = 0; //the total cost (SHOULD take into account non-enhancement bonus abilities) int bonus = 0; //used to track bonuses for dynamic cost formulas MagicItem magicRolledItem = new MagicItem(""); //used to swap between minor/medium/major item tables Item rolledItem = new Item(); int rollsLeft = 1; #region First Loop do { switch (rank) { //first, roll what TYPE of item this is (ring, weapon, armor, staff, etc) case "Minor": switch (magicRolledItem.GetItemType()) { case "Armor Ability": magicRolledItem = (MagicItem)MinorArmorTable.rdsResult.Single(); break; case "Weapon Ability": magicRolledItem = (MagicItem)MinorWeaponsTable.rdsResult.Single(); ///NOOOOOOOOOO INSTEAD DO ITEMTYPE (STRING)? break; case "Shield Ability": magicRolledItem = (MagicItem)MinorShieldsTable.rdsResult.Single(); ///NOOOOOOOOOO INSTEAD DO ITEMTYPE (STRING)? break; default: magicRolledItem = (MagicItem)MinorMagicTable.rdsResult.Single(); textBox2.Text += "\r\nMINOR DEFAULT -> " + magicRolledItem.GetItemType(); break; } break; case "Medium": switch (magicRolledItem.GetItemType()) { case "Armor Ability": magicRolledItem = (MagicItem)MediumArmorTable.rdsResult.Single(); break; case "Weapon Ability": magicRolledItem = (MagicItem)MediumWeaponsTable.rdsResult.Single(); break; default: magicRolledItem = (MagicItem)MediumMagicTable.rdsResult.Single(); break; } break; case "Major": switch (magicRolledItem.GetItemType()) { case "Armor Ability": magicRolledItem = (MagicItem)MajorArmorTable.rdsResult.Single(); break; case "Weapon Ability": magicRolledItem = (MagicItem)MajorWeaponsTable.rdsResult.Single(); break; default: magicRolledItem = (MagicItem)MajorMagicTable.rdsResult.Single(); break; } break; default: break; } cost = magicRolledItem.GetCost(); //for mostly non-ability things (ability is currently zero cost) textBox2.Text += magicRolledItem.GetCost() + " bitch titteh \r\n"; //then, do stuff based on what this TYPE is switch (magicRolledItem.GetItemType()) { case "Magic Armor": if (rolledItem.ToString() == "Nothing") //if this has not been rolled and it gets here, it is a simple magic armor with no abilities { rolledItem = (Item)ArmorTable.rdsResult.Single(); cost = rolledItem.GetCost(); } /* * "+1" + " Armor Name" = "+1 Chain Shirt (of shadow)" */ newName = magicRolledItem.ToString() + " " + rolledItem.ToString() + abilities; if (magicRolledItem.GetBonus() >= 1 && magicRolledItem.GetBonus() < 11) { bonus += magicRolledItem.GetBonus(); } cost += magicRolledItem.GetCost(); break; case "Magic Shield": if (rolledItem.ToString() == "Nothing") //magic shield with no abilities { rolledItem = (Item)Shields.rdsResult.Single(); cost = rolledItem.GetCost(); } newName = magicRolledItem.ToString() + " " + rolledItem.ToString() + abilities; if (magicRolledItem.GetBonus() >= 1 && magicRolledItem.GetBonus() < 11) { //TODO: If >COST< is between 1 and 11, this is a BONUS. bonus += magicRolledItem.GetBonus(); } //else // cost += magicRolledItem.GetCost(); //textBox2.Text += magicRolledItem.GetCost() + " \r\n"; //} break; case "Magic Weapon": if (rolledItem.ToString() == "Nothing") //magic weapon with no abilities { rolledItem = (Item)WeaponsTable.rdsResult.Single(); cost = rolledItem.GetCost(); } newName = magicRolledItem.ToString() + " " + rolledItem.ToString() + abilities; if (magicRolledItem.GetBonus() >= 1) { bonus += magicRolledItem.GetBonus(); } else { cost += magicRolledItem.GetCost(); } break; case "Specific Armor": newName = "Specificized! Name: " + magicRolledItem.ToString(); break; case "Potion": case "Scroll": case "Rod": case "Wand": case "Wondrous Item": newName = magicRolledItem.ToString(); //no abilities, just a name break; case "Armor Ability": itemType = "Armor Ability"; abilities += AddAbilities(rank, itemType); rollsLeft++; break; case "Weapon Ability": if(itemType == "") { rolledItem = (Item)WeaponsTable.rdsResult.Single(); itemType = rolledItem.GetItemType(); cost = rolledItem.GetCost(); textBox2.Text += "blarg! " + cost; } abilities += AddAbilities(rank, itemType); //rollsLeft++; break; default: break; } rollsLeft--; } while (rollsLeft > 0); #endregion //return newName; if (magicRolledItem.GetItemType() == "Magic Weapon") { cost += (int)Math.Pow(bonus, 2) * 200000 + 30000; //bonus^2 * 2000 gold } if (magicRolledItem.GetItemType() == "Magic Armor" || magicRolledItem.GetItemType() == "Magic Shield") { cost += (int)Math.Pow(bonus, 2) * 100000 + 15000; //bonus^2 * 1000 gold } return new MagicItem(magicRolledItem.GetItemType(),newName,cost,bonus); }