private static void EventSink_CharacterCreated( CharacterCreatedEventArgs args )
{
if ( !VerifyProfession( args.Profession ) )
args.Profession = 0;
NetState state = args.State;
if ( state == null )
return;
Mobile newChar = CreateMobile( args.Account as Account );
if ( newChar == null )
{
Console.WriteLine( "Login: {0}: Character creation failed, account full", state );
return;
}
args.Mobile = newChar;
m_Mobile = newChar;
newChar.Player = true;
newChar.AccessLevel = args.Account.AccessLevel;
newChar.Female = args.Female;
newChar.Race = Race.DefaultRace;
newChar.Hue = newChar.Race.ClipSkinHue( args.Hue & 0x3FFF ) | 0x8000;
newChar.Hunger = 20;
if ( newChar is PlayerMobile )
{
PlayerMobile pm = (PlayerMobile) newChar;
pm.Profession = args.Profession;
}
SetName( newChar, args.Name );
AddBackpack( newChar );
SetStats( newChar, state, args.Str, args.Dex, args.Int );
SetSkills( newChar, args.Skills, args.Profession );
Race race = newChar.Race;
if( race.ValidateHair( newChar, args.HairID ) )
{
newChar.HairItemID = args.HairID;
newChar.HairHue = race.ClipHairHue( args.HairHue & 0x3FFF );
}
if( race.ValidateFacialHair( newChar, args.BeardID ) )
{
newChar.FacialHairItemID = args.BeardID;
newChar.FacialHairHue = race.ClipHairHue( args.BeardHue & 0x3FFF );
}
if ( args.Profession <= 3 )
{
AddShirt( newChar, args.ShirtHue );
AddPants( newChar, args.PantsHue );
AddShoes( newChar );
}
// NewPlayerTicket ticket = new NewPlayerTicket();
// ticket.Owner = newChar;
// newChar.Backpack.DropItem( ticket );
newChar.MoveToWorld(args.City.Location, args.City.Map);
Console.WriteLine( "Login: {0}: New character being created (account={1})", state, args.Account.Username );
Console.WriteLine( " - Character: {0} (serial={1})", newChar.Name, newChar.Serial );
Console.WriteLine( " - Started: {0} {1} in {2}", args.City.City, args.City.Location, args.City.Map.ToString() );
new WelcomeTimer( newChar ).Start();
}