예제 #1
0
            public TradeOrderEntry(Mobile player, TradeMinister minister) : base(1114453, 5) // Get Trade Order
            {
                Player   = player;
                Minister = minister;

                Enabled = !CityTradeSystem.HasTrade(Player);
            }
예제 #2
0
            public TurnInEntry(Mobile player, TradeMinister minister) : base(1151729, 3) // Turn in a trade order
            {
                Player   = player;
                Minister = minister;

                Enabled = CityTradeSystem.HasTrade(Player);
            }
예제 #3
0
 public override void OnClick()
 {
     if (!CityTradeSystem.HasTrade(Player))
     {
         Player.SendGump(new InternalTradeOrderGump(Player as PlayerMobile, Minister));
     }
 }
예제 #4
0
            public TurnInEntry(Mobile player, SlimTheFence slim) : base(1151729, 3) // Turn in a trade order
            {
                Player = player;
                Slim   = slim;

                Enabled = CityTradeSystem.HasTrade(Player);
            }
예제 #5
0
 public override void OnClick()
 {
     if (CityTradeSystem.HasTrade(Player))
     {
         Player.Target = new InternalTarget(Slim);
         Player.SendLocalizedMessage(1151730); // Target the trade order you wish to turn in.
     }
 }
예제 #6
0
 public override void OnResponse(NetState sender, RelayInfo info)
 {
     if (info.ButtonID == 1)
     {
         if (Crate != null && Crate.IsChildOf(Player.Backpack))
         {
             CityTradeSystem.CancelTradeOrder(Player, Crate);
         }
     }
 }
예제 #7
0
 public override void OnClick()
 {
     if (List.ContainsKey(Player))
     {
         Minister.SayTo(Player, 1151724, 1150); // I don't have a trade order available right now.  Try again in a few minutes or try another Trade Minister.
     }
     else if (!CityTradeSystem.HasTrade(Player))
     {
         Player.SendGump(new InternalTradeOrderGump(Player as PlayerMobile, Minister));
         List[Player] = new ExpireTimer(Player);
     }
 }
예제 #8
0
        public static void ConstructSystems()
        {
            Moonglow    = new Moonglow();
            Britain     = new Britain();
            Jhelom      = new Jhelom();
            Yew         = new Yew();
            Minoc       = new Minoc();
            Trinsic     = new Trinsic();
            SkaraBrae   = new SkaraBrae();
            NewMagincia = new NewMagincia();
            Vesper      = new Vesper();

            CityTrading = new CityTradeSystem();
        }
예제 #9
0
            public override void OnClick()
            {
                //Cancel Trade Order
                //Are you sure you wish to cancel this trade order?  All contents of the trade crate will be placed in your backpack.
                Player.SendGump(new WarningGump(1151727, 30720, 1151728, 32512, 300, 200, (m, ok, obj) =>
                {
                    if (ok)
                    {
                        TradeOrderCrate crate = obj as TradeOrderCrate;

                        if (crate != null && crate.IsChildOf(Player.Backpack))
                        {
                            CityTradeSystem.CancelTradeOrder(Player, crate);
                        }
                    }
                }, Crate, true));
            }
예제 #10
0
        public static void OnTick()
        {
            List <PlayerMobile> list = new List <PlayerMobile>(_CitizenWait.Keys.OfType <PlayerMobile>());

            foreach (PlayerMobile pm in list)
            {
                if (_CitizenWait[pm] < DateTime.UtcNow)
                {
                    RemoveWaitTime(pm);
                }
            }

            list.Clear();
            list.TrimExcess();

            Cities.ForEach(sys =>
            {
                if (DateTime.UtcNow > _NextAtrophy)
                {
                    sys.PlayerTable.ForEach(t =>
                    {
                        CityLoyaltyEntry entry = t as CityLoyaltyEntry;

                        if (entry != null)
                        {
                            PlayerMobile owner = entry.Player;

                            entry.Neutrality -= entry.Neutrality / 50;
                            entry.Hate       -= entry.Hate / 50;

                            if (owner != null && owner.LastOnline + TimeSpan.FromHours(40) < DateTime.UtcNow)
                            {
                                entry.Love -= entry.Love / 75;
                            }
                        }
                    });

                    _NextAtrophy = DateTime.UtcNow + TimeSpan.FromDays(1);
                }

                if (sys.NextTradeDealCheck != DateTime.MinValue && sys.NextTradeDealCheck < DateTime.UtcNow)
                {
                    sys.PayTradeDealCost();
                }

                foreach (CityLoyaltyEntry entry in sys.PlayerTable.OfType <CityLoyaltyEntry>())
                {
                    if (entry.TradeDealExpired)
                    {
                        entry.CheckTradeDeal();
                    }
                }

                if (sys.Election != null)
                {
                    sys.Election.OnTick();
                }
                else
                {
                    sys.Election = new CityElection(sys);
                }
            });

            CityTradeSystem.OnTick();
        }
예제 #11
0
        public static void OnTick()
        {
            foreach (var sys in Cities)
            {
                List <Mobile> list = new List <Mobile>(sys.CitizenWait.Keys);

                foreach (var m in list)
                {
                    if (sys.CitizenWait[m] < DateTime.UtcNow)
                    {
                        sys.RemoveWaitTime(m);
                    }
                }

                ColUtility.Free(list);

                if (DateTime.UtcNow > _NextAtrophy)
                {
                    sys.PlayerTable.ForEach(t =>
                    {
                        CityLoyaltyEntry entry = t as CityLoyaltyEntry;

                        if (entry != null && entry.Player != null)
                        {
                            PlayerMobile owner = entry.Player;

                            entry.Neutrality -= entry.Neutrality / 50;
                            entry.Hate       -= entry.Hate / 50;

                            if (owner.LastOnline + LoveAtrophyDuration < DateTime.UtcNow)
                            {
                                entry.Love -= entry.Love / 75;
                            }
                        }
                    });

                    _NextAtrophy = DateTime.UtcNow + TimeSpan.FromDays(1);
                }

                if (sys.NextTradeDealCheck != DateTime.MinValue && sys.NextTradeDealCheck < DateTime.UtcNow)
                {
                    sys.PayTradeDealCost();
                }

                foreach (CityLoyaltyEntry entry in sys.PlayerTable.OfType <CityLoyaltyEntry>())
                {
                    if (entry.TradeDealExpired)
                    {
                        entry.CheckTradeDeal();
                    }
                }

                if (sys.Election != null)
                {
                    sys.Election.OnTick();
                }
                else
                {
                    sys.Election = new CityElection(sys);
                }
            }

            CityTradeSystem.OnTick();
        }