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