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); } }
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); } } } } }
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()); } } } } }
public ClothingBlessTarget(ClothingBlessDeed deed) : base(1, false, TargetFlags.None) => m_Deed = deed;
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); } } }