public override void GiveSpecialItems(List <Mobile> eligibleMobs, List <double> eligibleMobScores, double totalScores)
        {
            double currentTestValue = 0.0;
            double roll             = Utility.RandomDouble() * totalScores;

            if (0.05 > Utility.RandomDouble())
            {
                for (int i = 0; i < eligibleMobScores.Count; i++)
                {
                    currentTestValue += eligibleMobScores[i];

                    if (roll > currentTestValue)
                    {
                        continue;
                    }

                    var recipescroll = new RecipeScroll(Recipe.GetRandomRecipe());
                    if (eligibleMobs[i] is PlayerMobile && eligibleMobs[i].Backpack != null)
                    {
                        eligibleMobs[i].Backpack.DropItem(recipescroll);
                        eligibleMobs[i].SendMessage(54, "You have received a recipe scroll!");
                        return;
                    }
                }
            }
        }
Beispiel #2
0
        public override void OnConfirmed(CollectionItem citem, int index)
        {
            Item item = null;

            if (citem.Type == typeof(RecipeScroll))
            {
                switch (index)
                {
                default:
                case 3: item = new RecipeScroll((int)CarpRecipes.KotlBlackRod); break;

                case 4: item = new RecipeScroll((int)TinkerRecipes.DrSpectorLenses); break;

                case 5: item = new RecipeScroll((int)TinkerRecipes.KotlAutomatonHead); break;
                }
            }
            else if (citem.Type == typeof(TreasuresOfKotlRewardDeed))
            {
                item = new TreasuresOfKotlRewardDeed(citem.Tooltip);
            }
            else if (citem.Type == typeof(TribalBanner))
            {
                switch (index)
                {
                case 10: item = new TribalBanner(EodonTribe.Urali); break;

                case 11: item = new TribalBanner(EodonTribe.Barrab); break;

                case 12: item = new TribalBanner(EodonTribe.Sakkhra); break;

                case 13: item = new TribalBanner(EodonTribe.Barako); break;

                case 14: item = new TribalBanner(EodonTribe.Kurak); break;

                case 15: item = new TribalBanner(EodonTribe.Jukari); break;
                }
            }

            if (item != null)
            {
                if (User.Backpack == null || !User.Backpack.TryDropItem(User, item, false))
                {
                    User.SendLocalizedMessage(1074361); // The reward could not be given.  Make sure you have room in your pack.
                    item.Delete();
                }
                else
                {
                    User.SendLocalizedMessage(1073621); // Your reward has been placed in your backpack.
                    User.PlaySound(0x5A7);
                }
            }
            else
            {
                base.OnConfirmed(citem, index);
            }

            PointsSystem.TreasuresOfKotlCity.DeductPoints(User, citem.Points);
        }
Beispiel #3
0
        public static Item TinkerRecipe()
        {
            RecipeScroll recipe = null;

            if (0.01 > Utility.RandomDouble())
            {
                recipe = new RecipeScroll(Utility.RandomList(450, 451, 452, 453));
            }

            return(recipe);
        }
Beispiel #4
0
        public static void CheckRecipeDrop(CreatureDeathEventArgs e)
        {
            BaseCreature bc     = e.Creature as BaseCreature;
            var          c      = e.Corpse;
            var          killer = e.Killer;

            if (SpellHelper.IsEodon(c.Map, c.Location))
            {
                double chance = (double)bc.Fame / 1000000;
                int    luck   = 0;

                if (killer != null)
                {
                    luck = Math.Min(1800, killer is PlayerMobile ? ((PlayerMobile)killer).RealLuck : killer.Luck);
                }

                if (luck > 0)
                {
                    chance += (double)luck / 152000;
                }

                if (chance > Utility.RandomDouble())
                {
                    if (0.33 > Utility.RandomDouble())
                    {
                        Item item = Server.Loot.Construct(_ArmorDropTypes[Utility.Random(_ArmorDropTypes.Length)]);

                        if (item != null)
                        {
                            c.DropItem(item);
                        }
                    }
                    else
                    {
                        Item scroll = new RecipeScroll(_RecipeTypes[Utility.Random(_RecipeTypes.Length)]);

                        if (scroll != null)
                        {
                            c.DropItem(scroll);
                        }
                    }
                }
            }
        }
        public override void OnConfirmed(CollectionItem citem, int index)
        {
            if (citem.Type == typeof(RecipeScroll))
            {
                Item item;

                switch (citem.Tooltip.Number)
                {
                default:
                case 1158769: item = new RecipeScroll(605); break;

                case 1158770: item = new RecipeScroll(606); break;

                case 1158771: item = new RecipeScroll(607); break;

                case 1159204: item = new RecipeScroll(608); break;

                case 1159205: item = new RecipeScroll(609); break;

                case 1159206: item = new RecipeScroll(610); break;
                }

                if (item != null)
                {
                    if (User.Backpack == null || !User.Backpack.TryDropItem(User, item, false))
                    {
                        User.SendLocalizedMessage(1074361); // The reward could not be given.  Make sure you have room in your pack.
                        item.Delete();
                    }
                    else
                    {
                        OnItemCreated(item);

                        User.SendLocalizedMessage(1073621); // Your reward has been placed in your backpack.
                        RemovePoints(citem.Points);
                        User.PlaySound(0x5A8);
                    }
                }
            }
            else
            {
                base.OnConfirmed(citem, index);
            }
        }
Beispiel #6
0
        public override void OnConfirmed(CollectionItem citem, int index)
        {
            Item item = null;

            if (citem.Type == typeof(RecipeScroll))
            {
                switch (index)
                {
                default:
                case 9: item = new RecipeScroll((int)TailorRecipe.CowlOfTheMaceAndShield); break;

                case 10: item = new RecipeScroll((int)TailorRecipe.MagesHoodOfScholarlyInsight); break;

                case 11: item = new RecipeScroll((int)TailorRecipe.ElegantCollarOfFortune); break;

                case 12: item = new RecipeScroll((int)TailorRecipe.CrimsonDaggerBelt); break;

                case 13: item = new RecipeScroll((int)TailorRecipe.CrimsonSwordBelt); break;

                case 14: item = new RecipeScroll((int)TailorRecipe.CrimsonMaceBelt); break;
                }
            }

            if (item != null)
            {
                if (User.Backpack == null || !User.Backpack.TryDropItem(User, item, false))
                {
                    User.SendLocalizedMessage(1074361); // The reward could not be given.  Make sure you have room in your pack.
                    item.Delete();
                }
                else
                {
                    User.SendLocalizedMessage(1073621); // Your reward has been placed in your backpack.
                    User.PlaySound(0x5A7);
                }
            }
            else
            {
                base.OnConfirmed(citem, index);
            }

            PointsSystem.FellowshipData.DeductPoints(User, citem.Points);
        }
Beispiel #7
0
        public override void OnDeath(Container c)
        {
            if (IsKrampusEncounter)
            {
                List <DamageStore> rights = GetLootingRights();

                foreach (DamageStore ds in rights.Where(s => s.m_Mobile is PlayerMobile && s.m_HasRight))
                {
                    PlayerMobile m = ds.m_Mobile as PlayerMobile;
                    int          ordersComplete = 0;

                    if (KrampusEvent.Instance.CompleteTable.ContainsKey(m))
                    {
                        ordersComplete = KrampusEvent.Instance.CompleteTable[m];
                    }

                    if (ordersComplete >= 3 || Utility.RandomMinMax(0, 8) <= ordersComplete)
                    {
                        Item item = null;

                        switch (Utility.Random(13))
                        {
                        case 0: item = new KrampusCoinPurse(m.Karma); break;

                        case 1: item = new CardOfSemidar(Utility.RandomMinMax(0, 6)); break;

                        case 2: item = new NiceTitleDeed(); break;

                        case 3: item = new NaughtyTitleDeed(); break;

                        case 4: item = new PunisherTitleDeed(); break;

                        case 5: item = new RecipeScroll(586); break;     // minion hat

                        case 6: item = new RecipeScroll(587); break;     // minion boots

                        case 7: item = new KrampusCoinPurse(463); break; // minion talons

                        case 8: item = new KrampusCoinPurse(588); break; // minion earrings

                        case 9: item = new KrampusPunishinList(m.Name); break;

                        case 10: item = new RecipeScroll(466); break;     // barbed whip

                        case 11: item = new RecipeScroll(467); break;     // spiked whip

                        case 12: item = new RecipeScroll(468); break;     // bladed whip
                        }

                        if (item != null)
                        {
                            m.SendLocalizedMessage(1156269); // For your valor in defeating your foe a specialty item has been awarded to you!

                            if (m.Backpack == null || !m.Backpack.TryDropItem(m, item, false))
                            {
                                m.BankBox.DropItem(item);
                            }
                        }
                    }
                }
            }

            base.OnDeath(c);
        }
Beispiel #8
0
        public override void GiveSpecialItems(List <Mobile> eligibleMobs, List <double> eligibleMobScores,
                                              double totalScores)
        {
            double currentTestValue = 0.0;
            double roll             = Utility.RandomDouble() * totalScores;

            if (0.05 > Utility.RandomDouble())
            {
                for (int i = 0; i < eligibleMobScores.Count; i++)
                {
                    currentTestValue += eligibleMobScores[i];

                    if (roll > currentTestValue)
                    {
                        continue;
                    }

                    var recipescroll = new RecipeScroll(Recipe.GetRandomRecipe());
                    if (eligibleMobs[i] is PlayerMobile && eligibleMobs[i].Backpack != null)
                    {
                        eligibleMobs[i].Backpack.DropItem(recipescroll);
                        eligibleMobs[i].SendMessage(54, "You have received a recipe scroll!");
                        break;
                    }
                }
            }

            if (0.1 > Utility.RandomDouble())
            {
                for (int i = 0; i < eligibleMobScores.Count; i++)
                {
                    currentTestValue += eligibleMobScores[i];

                    if (roll > currentTestValue)
                    {
                        continue;
                    }

                    if (eligibleMobs[i] is PlayerMobile && eligibleMobs[i].Backpack != null)
                    {
                        eligibleMobs[i].Backpack.DropItem(new TitleScroll("Locked and Loaded"));
                        eligibleMobs[i].SendMessage(54, "You have received a title scroll.");
                        break;
                    }
                }
            }

            if (0.05 > Utility.RandomDouble())
            {
                for (int i = 0; i < eligibleMobScores.Count; i++)
                {
                    currentTestValue += eligibleMobScores[i];

                    if (roll > currentTestValue)
                    {
                        continue;
                    }

                    if (eligibleMobs[i] is PlayerMobile && eligibleMobs[i].Backpack != null)
                    {
                        eligibleMobs[i].Backpack.DropItem(new LeatherGloves()
                        {
                            Name       = "Locke's Gloves",
                            Hue        = 4,
                            Identified = true,
                            Slayer     = SlayerName.Silver,
                            LootType   = LootType.Blessed
                        });
                        eligibleMobs[i].SendMessage(54, "You have received a pair of Locke Cole's gloves!");
                        return;
                    }
                }
            }
        }