예제 #1
0
        public override void OnDeath(Container c)
        {
            base.OnDeath(c);

            if (!Summoned && !NoKillAwards && DemonKnight.CheckArtifactChance(this))
            {
                DemonKnight.DistributeArtifact(this);
            }

            if (0.2 > Utility.RandomDouble())
            {
                int  r    = Utility.Random(100);
                Item drop = null;

                if (r > 70)
                {
                    drop = new BloodPentagramPart(Utility.Random(5));
                }
                else if (r > 60)
                {
                    drop = new MetalChest();
                }
                else if (r > 50)
                {
                    drop = new DecorativeAxeNorthDeed();
                }
                else if (r > 40)
                {
                    drop = new BrownBearRugSouthDeed();
                }
                else if (r > 30)
                {
                    drop = new BrownBearRugEastDeed();
                }
                else if (r > 20)
                {
                    drop = new StackedArrows();
                }
                else if (r > 10)
                {
                    drop = new BronzeIngots();
                }
                else if (r > 5)
                {
                    drop = new StackedShafts();
                }
                else if (r > 1)
                {
                    drop = new RareFeathers();
                }
                else
                {
                    drop = new ClothingBlessDeed();
                }

                c.DropItem(drop);
            }
        }
예제 #2
0
        public void AddMonster(Type type, bool champ, int count)
        {
            for (int i = 0; i < count; ++i)
            {
                object monster = Activator.CreateInstance(type);

                if (monster != null && monster is Mobile)
                {
                    Point3D      location = FindSpawnLocation();
                    BaseCreature from     = (BaseCreature)monster;

                    from.MoveToWorld(location, this.Map);
                    from.Home    = location;
                    from.Tamable = false;

                    if (m_Waypoint != null)
                    {
                        from.CurrentWayPoint = m_Waypoint;
                    }

                    m_Spawned.Add(from);

                    if (m_RewardsEnabled)
                    {
                        if (champ && m_ArtifactChance > Utility.Random(100))
                        {
                            Item item = (Item)Activator.CreateInstance(Artifacts[Utility.Random(Artifacts.Length)]);

                            from.AddItem(item);
                        }

                        if (champ && m_BlessDeedChance > Utility.Random(100))
                        {
                            ClothingBlessDeed cbd = new ClothingBlessDeed();
                            cbd.LootType = LootType.Cursed;
                            cbd.Name     = "a cursed clothing bless deed";
                            cbd.Hue      = 1157;
                            from.AddItem(cbd);
                        }
                    }
                }
            }
        }
예제 #3
0
        public void GiveClothingBlessDeed()
        {
            if (Map != Map.Felucca)
            {
                return;
            }

            ArrayList toGive = new ArrayList();
            ArrayList rights = BaseCreature.GetLootingRights(this.DamageEntries, this.HitsMax);

            for (int i = rights.Count - 1; i >= 0; --i)
            {
                DamageStore ds = (DamageStore)rights[i];

                if (ds.m_HasRight)
                {
                    toGive.Add(ds.m_Mobile);
                }
            }

            if (toGive.Count == 0)
            {
                return;
            }

            // Randomize
            for (int i = 0; i < toGive.Count; ++i)
            {
                int    rand = Utility.Random(toGive.Count);
                object hold = toGive[i];
                toGive[i]    = toGive[rand];
                toGive[rand] = hold;
            }

            for (int i = 0; i < 6; ++i)
            {
                Mobile m = (Mobile)toGive[i % toGive.Count];

                ClothingBlessDeed cbd = new ClothingBlessDeed();

                m.SendMessage("You have received a Clothing Bless Deed!");                   // You have received a Clothing Bless Deed!
                m.AddToBackpack(cbd);

                if (m is PlayerMobile)
                {
                    PlayerMobile pm = (PlayerMobile)m;

                    for (int j = 0; j < pm.JusticeProtectors.Count; ++j)
                    {
                        Mobile prot = (Mobile)pm.JusticeProtectors[j];

                        if (prot.Map != m.Map || prot.Kills >= 5 || prot.Criminal || !JusticeVirtue.CheckMapRegion(m, prot))
                        {
                            continue;
                        }

                        int chance = 0;

                        switch (VirtueHelper.GetLevel(prot, VirtueName.Justice))
                        {
                        case VirtueLevel.Seeker: chance = 60; break;

                        case VirtueLevel.Follower: chance = 80; break;

                        case VirtueLevel.Knight: chance = 100; break;
                        }

                        if (chance > Utility.Random(100))
                        {
                            prot.SendLocalizedMessage(1049368);                               // You have been rewarded for your dedication to Justice!
                            prot.AddToBackpack(new ClothingBlessDeed());
                        }
                    }
                }
            }
        }
예제 #4
0
 public ClothingBlessTarget(ClothingBlessDeed deed) : base(1, false, TargetFlags.None) => m_Deed = deed;
예제 #5
0
        public override void OnDeath(Container c)
        {
            base.OnDeath(c);

            if (!Summoned && !NoKillAwards && DemonKnight.CheckArtifactChance(this))
            {
                DemonKnight.DistributeArtifact(this);
            }

            if (0.75 > Utility.RandomDouble())
            {
                int  r    = Utility.Random(100);
                Item drop = null;

                if (r < 1)
                {
                    drop = new LayerSashDeed();
                }
                else if (r < 4)
                {
                    drop = new SpecialQuestSandals();
                }
                else if (r < 6)
                {
                    drop = new RareCreamCarpet(PieceType.Centre);
                }
                else if (r < 8)
                {
                    drop = new RareBlueCarpet(PieceType.Centre);
                }
                else if (r < 10)
                {
                    drop = new RareBloodCarpet(PieceType.Centre);
                }
                else if (r < 12)
                {
                    drop = new BasicBlueCarpet(PieceType.Centre);
                }
                else if (r < 14)
                {
                    drop = new BasicPinkCarpet(PieceType.Centre);
                }
                else if (r < 29)
                {
                    drop = new BloodPentagramPart(Utility.Random(5));
                }
                else if (r < 30)
                {
                    drop = new ClothingBlessDeed();
                }
                else if (r < 35)
                {
                    drop = new MysteriousCloth();
                }
                else if (r < 40)
                {
                    drop = new SpecialHairDye();
                }
                else if (r < 45)
                {
                    drop = new SpecialBeardDye();
                }
                else if (r < 50)
                {
                    drop = new NameChangeDeed();
                }
                else if (r < 65)
                {
                    drop = new SkillTunic();
                }
                else if (r < 80)
                {
                    drop = new TamersCrook();
                }
                else if (r < 85)
                {
                    drop = new HeroShield();
                }
                else if (r < 88)
                {
                    drop = new EvilShield();
                }
                else if (r < 91)
                {
                    drop = new MondainHat();
                }
                else if (r < 94)
                {
                    drop = new PlatinGloves();
                }
                else if (r < 96)
                {
                    drop = new AncientSamuraiHelm();
                }
                else if (r < 98)
                {
                    drop = Utility.RandomBool() ? (Item)(new MirrorEast()) : (Item)(new MirrorNorth());
                }
                else
                {
                    drop = Utility.RandomBool() ? (Item)(new BoneBenchEastPart()) : (Item)(new BoneBenchWestPart());
                }

                c.DropItem(drop);
            }
        }
        public void DistributeLoot()
        {
            if (Map != Map.Felucca)
            {
                return;
            }

            List <Mobile> PlayersToGiveTo = new List <Mobile>();

            List <AggressorInfo> list = Aggressors;

            for (int i = 0; i < list.Count; ++i)
            {
                AggressorInfo info = list[i];

                if (info.Attacker.Player && info.Attacker.Alive && (DateTime.Now - info.LastCombatTime) < TimeSpan.FromSeconds(60.0) && !PlayersToGiveTo.Contains(info.Attacker))
                {
                    PlayersToGiveTo.Add(info.Attacker);
                }
            }

            list = Aggressed;
            for (int i = 0; i < list.Count; ++i)
            {
                AggressorInfo info = list[i];

                if (info.Defender.Player && info.Defender.Alive && (DateTime.Now - info.LastCombatTime) < TimeSpan.FromSeconds(60.0) && !PlayersToGiveTo.Contains(info.Defender))
                {
                    PlayersToGiveTo.Add(info.Defender);
                }
            }

            if (PlayersToGiveTo.Count <= 0)
            {
                return;
            }

            if (Backpack == null)
            {
                return;
            }

            //ArrayList ItemsToGive = new ArrayList();

            Item item = null;
            int  rand = Utility.Random(200);

            if (rand == 0)
            {
                item = new LayerSashDeed();
            }
            else if (rand <= 8)
            {
                item = new HolyDeedofBlessing();
            }
            else if (rand <= 30)
            {
                item = new CursedClothingBlessDeed();
            }
            else if (rand <= 80)
            {
                item = new ClothingBlessDeed();
            }

            if (item != null)
            {
                if (item.Movable == false || item.LootType == LootType.Blessed || item.LootType == LootType.Newbied)
                {
                    return;
                }
                PlayerMobile player = PlayersToGiveTo[Utility.Random(PlayersToGiveTo.Count)] as PlayerMobile;
                if (player != null && player.Backpack != null)
                {
                    player.SendMessage("You have been given a special item.");
                    player.Backpack.DropItem(item);
                }
            }
        }