Files
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

158 lines
3.6 KiB
C#

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