public override void OnAdded(object parent) { base.OnAdded(parent); if (parent is Mobile) { FameKarmaTitles.AwardKarma((Mobile)parent, -20, true); } }
protected override void OnTick() { Container theirPack = m_Target.Backpack; if (theirPack == null) { m_From.SendLocalizedMessage(500404); // They seem unwilling to give you any money. } else if (m_From.CheckTargetSkill(SkillName.Begging, m_Target, 0.0, 120.0, 1.0)) { int toConsume = theirPack.GetAmount(typeof(Gold)) / 10; int max = 10 + (m_From.Fame / 2500); if (max > 14) { max = 14; } else if (max < 10) { max = 10; } if (toConsume > max) { toConsume = max; } if (toConsume > 0) { int consumed = theirPack.ConsumeUpTo(typeof(Gold), toConsume); if (consumed > 0) { m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500405); // I feel sorry for thee... Gold gold = new Gold(consumed); m_From.AddToBackpack(gold); //TEST: REDO /* * if (m_From.Skills.Begging.Value == 100) * { * var randomNumber = Utility.RandomMinMax(1, 100); * * if (randomNumber <= 75) //75% chance * { * switch (Utility.Random(2)) * { * case 0: m_From.AddToBackpack(new Pitcher(BeverageType.Water)); break; * * default: m_From.AddToBackpack(new FrenchBread()); break; * } * } * * else if (randomNumber <= 99) //24% chance * { * switch (Utility.Random(7)) * { * case 0: m_From.AddToBackpack(new Lantern()); break; * case 1: m_From.AddToBackpack(new CheesePizza()); break; * case 2: m_From.AddToBackpack(new WoodenBowlOfStew()); break; * case 3: m_From.AddToBackpack(new CheeseWedge()); break; * case 4: m_From.AddToBackpack(new Dates()); break; * case 5: m_From.AddToBackpack(new Shirt()); break; * * default: m_From.AddToBackpack(new Pitcher(BeverageType.Liquor)); break; * } * } * * else // 1% chance * { * switch (Utility.RandomMinMax(1, 6)) * { * case 1: m_From.AddToBackpack(new Bedroll()); break; * case 2: m_From.AddToBackpack(new Pitcher(BeverageType.Wine)); break; * case 3: m_From.AddToBackpack(new BeverageBottle(BeverageType.Wine)); break; * case 4: m_From.AddToBackpack(new FlowerGarland()); break; * case 5: m_From.AddToBackpack(new FishingPole()); break; * case 6: m_From.AddToBackpack(new Turnip()); break; * } * } * } */ m_From.PlaySound(gold.GetDropSound()); if (m_From.Karma > -3000) { int toLose = m_From.Karma + 3000; if (toLose > 40) { toLose = 40; } FameKarmaTitles.AwardKarma(m_From, -toLose, true); } } else { m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500407); // I have not enough money to give thee any! } } else { m_Target.PublicOverheadMessage(MessageType.Regular, m_Target.SpeechHue, 500407); // I have not enough money to give thee any! } m_From.NextSkillTime = Core.TickCount + (int)(SkillCooldown.BeggingSuccessCooldown * 1000); } else { m_From.SendLocalizedMessage(500404); // They seem unwilling to give you any money. m_From.NextSkillTime = Core.TickCount + (int)(SkillCooldown.BeggingFailureCooldown * 1000); } }
public static void Container_Snoop(Container cont, Mobile from) { if (!from.BeginAction(typeof(Snooping))) { return; } Timer.DelayCall(TimeSpan.FromSeconds(SkillCooldown.SnoopingCooldown), new TimerStateCallback(ReleaseSnoopingLock_Callback), from); if (from.AccessLevel > AccessLevel.Player || from.InRange(cont.GetWorldLocation(), 1)) { Mobile root = cont.RootParent as Mobile; if (root != null && !root.Alive) { return; } if (root != null && root.AccessLevel > AccessLevel.Player && from.AccessLevel == AccessLevel.Player) { from.SendLocalizedMessage(500209); // You can not peek into the container. return; } if (root != null && from.AccessLevel == AccessLevel.Player && !CheckSnoopAllowed(from, root)) { from.SendLocalizedMessage(1001018); // You cannot perform negative acts on your target. return; } double noticeChance = 1.0 - (from.Skills[SkillName.Snooping].Value / 100); if (noticeChance > .5) { noticeChance = .5; } if (noticeChance < .05) { noticeChance = .05; } if (Utility.RandomDouble() <= noticeChance && root != null && from.AccessLevel == AccessLevel.Player) { Map map = from.Map; if (map != null) { string message = String.Format("You notice {0} attempting to peek into {1}'s belongings.", from.Name, root.Name); IPooledEnumerable eable = map.GetClientsInRange(from.Location, 8); foreach (NetState ns in eable) { if (ns.Mobile != from) { ns.Mobile.SendMessage(message); } } eable.Free(); } } if (from.AccessLevel == AccessLevel.Player) { FameKarmaTitles.AwardKarma(from, -4, true); } from.CheckTargetSkill(SkillName.Snooping, cont, 0.0, 100.0, 1.0); double stealingSkill = from.Skills[SkillName.Snooping].Value / 100; double successChance = stealingSkill * .75; if (from.Hidden) { double hidingBonus = .25; if (hidingBonus > stealingSkill) { hidingBonus = stealingSkill; } successChance += hidingBonus; } if (from.LastCombatTime + TimeSpan.FromSeconds(30) > DateTime.UtcNow) { successChance -= .25; } bool successful = (Utility.RandomDouble() <= successChance); if (from.AccessLevel > AccessLevel.Player || successful) { if (cont is TrapableContainer && ((TrapableContainer)cont).ExecuteTrap(from)) { return; } cont.DisplayTo(from); } else { from.SendLocalizedMessage(500210); // You failed to peek into the container. } } else { from.SendLocalizedMessage(500446); // That is too far away. } }