public void Invasion_Tick() { if (m_InvasionStarted) { if (InvasionConfig.Enabled) { if (m_SpawnList == null || m_RegisteredInvasionRegion == null || m_Players == null) { StartInvasion(); } if (m_SpawnList.Count < m_SpawnDensity) { SpawnInvasion(); } if (m_Kills >= m_RequiredKillCount) { EndInvasion(InvasionEventSink.InvasionEndedEventArgs.InvasionEndedReason.KillCountReached); } } } InvasionEventSink.OnInvasionTicked(new InvasionEventSink.InvasionTickedEventArgs(this)); Timer.DelayCall(InvasionConfig.InvasionTickRate, new TimerCallback(Invasion_Tick)); }
public override void OnKilledBy(Mobile mob) { if (m_Controller != null && mob != null) { InvasionEventSink.OnInvasionSpawnKilled(new InvasionEventSink.InvasionSpawnKilledEventArgs(Controller, mob)); } base.OnKilledBy(mob); }
public InvasionController() : base(0xEDD) { Name = String.Format("DefaultInvasion{0}", ControllerCount.ToString()); Visible = false; Movable = false; ControllerCount += 1; InvasionEventSink.OnInvasionControllerCreated(new InvasionEventSink.InvasionControllerCreatedEventArgs(this)); }
public override void OnDelete() { if (m_Controller == null) { base.OnDelete(); return; } InvasionEventSink.OnInvasionSpawnDeleted(new InvasionEventSink.InvasionSpawnDeletedEventArgs(m_Controller, this)); base.OnDelete(); }
public override void OnDeath(Container c) { if (m_Controller == null) { Delete(); base.OnDeath(c); return; } InvasionEventSink.OnInvasionSpawnDied(new InvasionEventSink.InvasionSpawnDiedEventArgs(m_Controller, this, c)); base.OnDeath(c); }
protected override bool OnMove(Direction d) { if (m_Controller == null) { Delete(); } if (m_Controller != null) { InvasionEventSink.OnInvasionSpawnMoved(new InvasionEventSink.InvasionSpawnMovedEventArgs(m_Controller, this)); } return(base.OnMove(d)); }
public void StartInvasion() { if (m_SpawnList == null) { m_SpawnList = new List <InvasionSpawn>(); } if (m_RegisteredInvasionRegion == null) { m_RegisteredInvasionRegion = new InvasionRegion(this); } if (m_Players == null) { m_Players = new Dictionary <PlayerMobile, int>(); } m_InvasionStarted = true; InvasionEventSink.OnInvasionStarted(new InvasionEventSink.InvasionStartedEventArgs(this)); }
public void OnInvasionStarted(InvasionEventSink.InvasionStartedEventArgs args) { if (args.Controller == Controller) Register(); }
public void OnInvasionEnded(InvasionEventSink.InvasionEndedEventArgs args) { if (args.Controller == Controller) Unregister(); }
public static void OnInvasionControllerDeleted(InvasionEventSink.InvasionControllerDeletedEventArgs args) { InvasionControllerRegistry.Remove(args.Controller); }
public static void OnInvasionControllerCreated(InvasionEventSink.InvasionControllerCreatedEventArgs args) { InvasionControllerRegistry.Add(args.Controller); }
public override void OnDelete() { InvasionEventSink.OnInvasionControllerDeleted(new InvasionEventSink.InvasionControllerDeletedEventArgs(this)); base.OnDelete(); }
public void EndInvasion(InvasionEventSink.InvasionEndedEventArgs.InvasionEndedReason Reason) { m_InvasionStarted = false; List <InvasionSpawn> ToDelete = new List <InvasionSpawn>(); for (int i = 0; i < m_SpawnList.Count; ++i) { ToDelete.Add((InvasionSpawn)m_SpawnList[i]); } foreach (Mobile m in World.Mobiles.Values) { if (m is InvasionSpawn) { if (((InvasionSpawn)m).Controller == this) { ToDelete.Add((InvasionSpawn)m); } } } for (int i = 0; i < ToDelete.Count; ++i) { InvasionSpawn deleting = (InvasionSpawn)ToDelete[i]; deleting.Delete(); } if (Reason == InvasionEventSink.InvasionEndedEventArgs.InvasionEndedReason.KillCountReached) { Console.WriteLine("Player Count:" + m_Players.Count.ToString()); IEnumerator key = m_Players.Keys.GetEnumerator(); for (int i = 0; i < m_Players.Count; ++i) { key.MoveNext(); int kills = (int)m_Players[(PlayerMobile)key.Current]; int percent = (kills / m_RequiredKillCount) * 100; if (percent > 100) { percent = 100; } int reward = (percent * m_Reward) / 100; if (reward < 1) { reward = 1; } if (reward > 60000) { reward = 60000; } Console.WriteLine("Kills:" + kills.ToString()); Console.WriteLine("Percent:" + percent.ToString()); Item givenreward; if (reward >= 5000) { givenreward = new BankCheck(reward); } else { givenreward = new Gold(reward); } BankBox bank = (BankBox)((PlayerMobile)key.Current).BankBox; bank.AddItem(givenreward); ((PlayerMobile)key.Current).SendMessage(String.Format("The invasion has ended! You have been rewarded {0}gp!", reward.ToString())); } } m_SpawnList.Clear(); m_SpawnList = null; m_Players.Clear(); m_Players = null; m_Kills = 0; InvasionEventSink.OnInvasionEnded(new InvasionEventSink.InvasionEndedEventArgs(this, Reason)); }
public static void OnInvasionSpawnDied(InvasionEventSink.InvasionSpawnDiedEventArgs args) { if (!args.Controller.InvasionStarted) return; args.Controller.Kills += 1; args.Controller.SpawnList.Remove(args.Spawn); }
public static void OnInvasionSpawnKilled(InvasionEventSink.InvasionSpawnKilledEventArgs args) { if (args.Controller == null || args.Killer == null) return; if (!args.Controller.InvasionStarted) return; if (args.Killer is PlayerMobile) { if (args.Controller.Players.ContainsKey((PlayerMobile)args.Killer)) args.Controller.Players[(PlayerMobile)args.Killer] += 1; else args.Controller.Players.Add((PlayerMobile)args.Killer, 1); } }
public void EndInvasion(InvasionEventSink.InvasionEndedEventArgs.InvasionEndedReason Reason) { m_InvasionStarted = false; List<InvasionSpawn> ToDelete = new List<InvasionSpawn>(); for (int i = 0; i < m_SpawnList.Count; ++i) ToDelete.Add((InvasionSpawn)m_SpawnList[i]); foreach(Mobile m in World.Mobiles.Values) if (m is InvasionSpawn) if(((InvasionSpawn)m).Controller == this) ToDelete.Add((InvasionSpawn)m); for(int i = 0; i < ToDelete.Count; ++i) { InvasionSpawn deleting = (InvasionSpawn)ToDelete[i]; deleting.Delete(); } if (Reason == InvasionEventSink.InvasionEndedEventArgs.InvasionEndedReason.KillCountReached) { Console.WriteLine("Player Count:" + m_Players.Count.ToString()); IEnumerator key = m_Players.Keys.GetEnumerator(); for (int i = 0; i < m_Players.Count; ++i) { key.MoveNext(); int kills = (int)m_Players[(PlayerMobile)key.Current]; int percent = (kills / m_RequiredKillCount) * 100; if (percent > 100) percent = 100; int reward = (percent * m_Reward) / 100; if (reward < 1) reward = 1; if(reward > 60000) reward = 60000; Console.WriteLine("Kills:" + kills.ToString()); Console.WriteLine("Percent:" + percent.ToString()); Item givenreward; if (reward >= 5000) givenreward = new BankCheck(reward); else givenreward = new Gold(reward); BankBox bank = (BankBox)((PlayerMobile)key.Current).BankBox; bank.AddItem(givenreward); ((PlayerMobile)key.Current).SendMessage(String.Format("The invasion has ended! You have been rewarded {0}gp!", reward.ToString())); } } m_SpawnList.Clear(); m_SpawnList = null; m_Players.Clear(); m_Players = null; m_Kills = 0; InvasionEventSink.OnInvasionEnded(new InvasionEventSink.InvasionEndedEventArgs(this, Reason)); }
public static void OnInvasionSpawnMoved(InvasionEventSink.InvasionSpawnMovedEventArgs args) { if (!args.Controller.InvasionStarted) return; if(!args.Controller.RegisteredInvasionRegion.InRegion((Mobile)args.Spawn)) args.Spawn.Delete(); if (args.Spawn.CheckReachedTarget()) args.Spawn.RangeHome = InvasionConfig.InvasionSpawnWanderFromTargetRange; }