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(); }
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(); }