ACR_Items.Generation.GenerateLoot C# (CSharp) Метод

GenerateLoot() публичный статический Метод

public static GenerateLoot ( CLRScriptBase script, int lootValue, int maxItemValue ) : void
script CLRScriptFramework.CLRScriptBase
lootValue int
maxItemValue int
Результат void
        public static void GenerateLoot(CLRScriptBase script, int lootValue, int maxItemValue)
        {
            if (lootValue < 1)
            {
                return;
            }

            if (maxItemValue < 1)
            {
                maxItemValue = lootValue;
            }

            // For expensive caches, favor magic that is going to be most-commonly crafted.
            while (lootValue > 1000)
            {
                if (maxItemValue > lootValue)
                {
                    maxItemValue = lootValue;
                }
                switch (script.d10(1))
                {
                    case 1:
                        {
                            lootValue -= GenerateArt(script, maxItemValue);
                            break;
                        }
                    default:
                        {
                            int roll = script.d100(1);
                            int decrease = 0;
                            if (roll > 82)
                            {
                                decrease = GenerateScroll.NewScroll(script, maxItemValue); // 81-100
                                lootValue -= decrease;
                            }
                            else if (roll > 65)
                            {
                                decrease = GeneratePotion.NewPotion(script, maxItemValue); // 66-80
                                lootValue -= decrease;
                            }
                            else if (roll > 55)
                            {
                                decrease = GenerateWand.NewWand(script, maxItemValue); // 56-65
                                lootValue -= decrease;
                            }
                            else if (roll > 52)
                            {
                                decrease = GenerateStaff.NewStaff(script, maxItemValue); // 53-55
                                lootValue -= decrease;
                            }
                            else if (roll > 50)
                            {
                                decrease = GenerateRod.NewRod(script, maxItemValue); // 51-52
                                lootValue -= decrease;
                            }
                            else if (roll > 42)
                            {
                                decrease = GenerateArmor.NewArmor(script, maxItemValue); // 43-50
                                lootValue -= decrease;
                            }
                            else if (roll > 35)
                            {
                                decrease = GenerateWeapon.NewWeapon(script, maxItemValue); // 36-42
                                lootValue -= decrease;
                            }
                            else if (roll > 30)
                            {
                                decrease = GenerateAmulet.NewAmulet(script, maxItemValue); // 31-35
                                lootValue -= decrease;
                            }
                            else if (roll > 25)
                            {
                                decrease = GenerateBelt.NewBelt(script, maxItemValue); // 26-30
                                lootValue -= decrease;
                            }
                            else if (roll > 20)
                            {
                                decrease = GenerateBoots.NewBoots(script, maxItemValue); // 21-25
                                lootValue -= decrease; 
                            }
                            else if (roll > 15)
                            {
                                decrease = GenerateCloak.NewCloak(script, maxItemValue); // 16-20
                                lootValue -= decrease;
                            }
                            else if (roll > 10)
                            {
                                decrease = GenerateHelmet.NewHelmet(script, maxItemValue); // 11-15
                                lootValue -= decrease;
                            }
                            else if (roll > 5)
                            {
                                decrease = GenerateRing.NewRing(script, maxItemValue); // 6-10
                                lootValue -= decrease;
                            }
                            else
                            {
                                decrease = GenerateGloves.NewGloves(script, maxItemValue); // 1-5
                                lootValue -= decrease;
                            }
                            break;
                        }
                }
                if (lootValue < 10)
                {
                    script.CreateItemOnObject("nw_it_gold001", script.OBJECT_SELF, lootValue, "", FALSE);
                    return;
                }
                if (script.d100(1) > 95)
                {
                    script.CreateItemOnObject("nw_it_gold001", script.OBJECT_SELF, maxItemValue / 10, "", FALSE);
                    lootValue -= maxItemValue / 10;
                }
            }

            // For cheap loot or to clean up big caches, use more weapons and armor.
            while (lootValue > 0)
            {
                if (maxItemValue > lootValue)
                {
                    maxItemValue = lootValue;
                }
                switch (script.d10(1))
                {
                    case 1:
                        {
                            lootValue -= GenerateArt(script, maxItemValue);
                            break;
                        }
                    default:
                        {
                            int roll = script.d100(1);
                            int decrease = 0;
                            if (roll > 91)
                            {
                                decrease = GenerateScroll.NewScroll(script, maxItemValue); // 83-100
                                lootValue -= decrease;
                            }
                            else if (roll > 82)
                            {
                                decrease = GeneratePotion.NewPotion(script, maxItemValue); // 61-82
                                lootValue -= decrease;
                            }
                            else if (roll > 60)
                            {
                                decrease = GenerateArmor.NewArmor(script, maxItemValue); // 61-82
                                lootValue -= decrease;
                            }
                            else if (roll > 21)
                            {
                                decrease = GenerateWeapon.NewWeapon(script, maxItemValue); // 22-59
                                lootValue -= decrease;
                            }
                            else if (roll > 18)
                            {
                                decrease = GenerateAmulet.NewAmulet(script, maxItemValue); // 19-21
                                lootValue -= decrease;
                            }
                            else if (roll > 15)
                            {
                                decrease = GenerateBelt.NewBelt(script, maxItemValue); // 16-18
                                lootValue -= decrease;
                            }
                            else if (roll > 12)
                            {
                                decrease = GenerateBoots.NewBoots(script, maxItemValue); // 13-15
                                lootValue -= decrease;
                            }
                            else if (roll > 9)
                            {
                                decrease = GenerateCloak.NewCloak(script, maxItemValue); // 10-12
                                lootValue -= decrease;
                            }
                            else if (roll > 6)
                            {
                                decrease = GenerateHelmet.NewHelmet(script, maxItemValue); // 7-9
                                lootValue -= decrease;
                            }
                            else if (roll > 3)
                            {
                                decrease = GenerateRing.NewRing(script, maxItemValue); // 4-6
                                lootValue -= decrease;
                            }
                            else
                            {
                                decrease = GenerateGloves.NewGloves(script, maxItemValue); // 1-3
                                lootValue -= decrease;
                            }
                            break;
                        }
                }
                if (lootValue < 10)
                {
                    script.CreateItemOnObject("nw_it_gold001", script.OBJECT_SELF, lootValue, "", FALSE);
                    return;
                }
                if (script.d100(1) > 95)
                {
                    script.CreateItemOnObject("nw_it_gold001", script.OBJECT_SELF, maxItemValue / 10, "", FALSE);
                    lootValue -= maxItemValue / 10;
                }
            }
        }