public void DoMaster() { Map map = this.Map; if (map == null) { return; } int newSpawned = 25; for (int i = 0; i < newSpawned; ++i) { ShadowMinion spawn = new ShadowMinion(); spawn.Team = this.Team; spawn.Map = map; bool validLocation = false; Point3D loc = this.Location; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(5); int y = Y + Utility.Random(5); int z = map.GetAverageZ(x, y); if (validLocation = map.CanFit(x, y, this.Z, 16, false, false)) { loc = new Point3D(x, y, Z); } else if (validLocation = map.CanFit(x, y, z, 16, false, false)) { loc = new Point3D(x, y, z); } } spawn.MoveToWorld(loc, map); } DarkMaster ethy = new DarkMaster(); ethy.Hits = this.Hits; ethy.Int = this.Int - 5000; ethy.Hidden = true; ethy.Team = this.Team; ethy.Blessed = true; ethy.Freeze(TimeSpan.FromSeconds(30.0)); ethy.MoveToWorld(this.Location, this.Map); m_MasterActive = true; this.Delete(); }
public override void OnThink() { if (DoElementalChamp && DateTime.Now >= m_NextElementalChampAbility) { Mobile combatant = this.Combatant; if (combatant != null && combatant.Map == this.Map && combatant.InRange(this, 15) && this.Blessed == false) { m_NextElementalChampAbility = DateTime.Now + TimeSpan.FromSeconds(90); int ability = Utility.Random(2); switch (ability) { case 0: DoAtomicBomb(combatant, "Flee mortals or the eternal heat of the Core will burn your bodies!"); break; case 1: DoSummon(combatant, "My burning sons! Emerge from our fiery lair and vanquish these mortals!"); break; } } } if (DoEightLeech && DateTime.Now >= m_NextEightLeech) { Mobile combatant = this.Combatant; if (combatant != null && combatant.Map == this.Map && combatant.InRange(this, 15)) { m_NextEightLeech = DateTime.Now + TimeSpan.FromMinutes(Utility.RandomMinMax(4, 6)); int ability = Utility.Random(3); switch (ability) { case 0: EightLeech(combatant, "Time to die, mortals!"); break; case 1: EightLeech(combatant, "Come to me my prey!"); break; case 2: EightLeech(combatant, "Now is the time of demise!"); break; } } } if (DoDarkMasterMorph) { if (this.Int == 10000 && this.Hits < this.Int - 5000) { Map map = this.Map; if (map == null) { return; } int newSpawned = 25; for (int i = 0; i < newSpawned; ++i) { ShadowMinion spawn = new ShadowMinion(); spawn.Team = this.Team; spawn.Map = map; bool validLocation = false; Point3D loc = this.Location; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(5); int y = Y + Utility.Random(5); int z = map.GetAverageZ(x, y); if (validLocation = map.CanFit(x, y, this.Z, 16, false, false)) { loc = new Point3D(x, y, Z); } else if (validLocation = map.CanFit(x, y, z, 16, false, false)) { loc = new Point3D(x, y, z); } } spawn.MoveToWorld(loc, map); } EthyDarkMaster ethy = new EthyDarkMaster(); ethy.Hits = 7500; ethy.Team = this.Team; ethy.Hidden = true; ethy.Blessed = true; ethy.Freeze(TimeSpan.FromSeconds(30.0)); ethy.MoveToWorld(this.Location, this.Map); this.Delete(); } else if (this.Int != 5000 && this.Hits < this.Int - 5000) { this.Hidden = true; this.Freeze(TimeSpan.FromSeconds(30.0)); int ability = Utility.Random(3); if (this.BodyValue == 400) { switch (ability) { case 0: DoEthyThar(); break; case 1: DoEthyBork(); break; case 2: DoEthyLich(); break; } } else if (this.BodyValue == 0x3E) { switch (ability) { case 0: DoEthyThar(); break; case 1: DoMaster(); break; case 2: DoEthyLich(); break; } } else if (this.BodyValue == 0xF) { switch (ability) { case 0: DoMaster(); break; case 1: DoEthyBork(); break; case 2: DoEthyLich(); break; } } else if (this.BodyValue == 0x4F) { switch (ability) { case 0: DoEthyThar(); break; case 1: DoEthyBork(); break; case 2: DoMaster(); break; } } } } base.OnThink(); }