コード例 #1
0
ファイル: Lewtz.cs プロジェクト: smudge202/Lewtz
        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);
        }