////////////////////// //Created by KyleMan// ////////////////////// using System; using System.Collections; using Server.Items; using Server.ContextMenus; using Server.Misc; using Server.Network; namespace Server.Mobiles { public class Goku : BaseCreature { public override bool ClickTitle{ get{ return false; } } private bool m_TrueForm; [Constructable] public Goku() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 ) { SpeechHue = Utility.RandomDyedHue(); Title = "the legendary hero"; Hue = 33770; { Body = 0x190; Name = "Goku"; } SetStr( 250, 255 ); SetDex( 100, 125 ); SetInt( 61, 75 ); SetDamage( 15, 23 ); SetHits( 2500, 3500 ); SetSkill( SkillName.Fencing, 88.8, 97.5 ); SetSkill( SkillName.Macing, 99.9, 110.0 ); SetSkill( SkillName.MagicResist, 25.0, 47.5 ); SetSkill( SkillName.Swords, 65.0, 87.5 ); SetSkill( SkillName.Tactics, 99.9, 110.0 ); SetSkill( SkillName.Wrestling, 15.0, 37.5 ); Fame = 10000; Karma = -10000; PackItem( new GokusDeath() ); AddItem( new GokusPants() ); AddItem( new GokusOutterShirt() ); AddItem( new GokusUnderShirt() ); AddItem( new GokusBoots() ); AddItem( new PowerPole() ); //Change to AddItem( new PowerPoleUnblessed() ); for the axe to be in loot. AddItem( new ShortHair( 1 ) ); } private double[] m_Offsets = new double[] { Math.Cos( 000.0 / 180.0 * Math.PI ), Math.Sin( 000.0 / 180.0 * Math.PI ), Math.Cos( 040.0 / 180.0 * Math.PI ), Math.Sin( 040.0 / 180.0 * Math.PI ), Math.Cos( 080.0 / 180.0 * Math.PI ), Math.Sin( 080.0 / 180.0 * Math.PI ), Math.Cos( 120.0 / 180.0 * Math.PI ), Math.Sin( 120.0 / 180.0 * Math.PI ), Math.Cos( 160.0 / 180.0 * Math.PI ), Math.Sin( 160.0 / 180.0 * Math.PI ), Math.Cos( 200.0 / 180.0 * Math.PI ), Math.Sin( 200.0 / 180.0 * Math.PI ), Math.Cos( 240.0 / 180.0 * Math.PI ), Math.Sin( 240.0 / 180.0 * Math.PI ), Math.Cos( 280.0 / 180.0 * Math.PI ), Math.Sin( 280.0 / 180.0 * Math.PI ), Math.Cos( 320.0 / 180.0 * Math.PI ), Math.Sin( 320.0 / 180.0 * Math.PI ), }; public void Morph() { if ( m_TrueForm ) return; m_TrueForm = true; Name = "Super Saiyan Goku"; BodyValue = 0x190; Hue = 33770; AddItem( new ShortHair( 1174 ) ); Hits = HitsMax; Stam = StamMax; Mana = ManaMax; ProcessDelta(); Say( 1049499 ); // Behold my true form! Map map = this.Map; if ( map != null ) { for ( int i = 0; i < m_Offsets.Length; i += 2 ) { double rx = m_Offsets[i]; double ry = m_Offsets[i + 1]; int dist = 0; bool ok = false; int x = 0, y = 0, z = 0; while ( !ok && dist < 10 ) { int rdist = 10 + dist; x = this.X + (int)(rx * rdist); y = this.Y + (int)(ry * rdist); z = map.GetAverageZ( x, y ); if ( !(ok = map.CanFit( x, y, this.Z, 16, false, false ) ) ) ok = map.CanFit( x, y, z, 16, false, false ); if ( dist >= 0 ) dist = -(dist + 1); else dist = -(dist - 1); if ( !ok ) continue; } } } } public override void GenerateLoot() { AddLoot( LootPack.SuperBoss ); } public override bool AlwaysMurderer{ get{ return true; } } public Goku( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version writer.Write( m_TrueForm ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_TrueForm = reader.ReadBool(); } } }