Updated BaseRaceGate.cs
This updates BaseRaceGates to include Dark skins, and White hair for Drow races.
It also introduces a beardHue.Shaved type for the removal of facial hair on Elves, for those purists that believe that Elves do not have facial hair.
And hairHue.Shaved for removal of Hair for those that think Orcs and such can do without it.
[code:1]
using System;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Scripts
{
public enum raceBeard
{
None,
Random,
LongBeard,
ShortBeard,
Goatee,
Mustache,
MediumShortBeard,
MediumLongBeard,
Vandyke
}
public enum raceMask
{
None,
Random,
OrcMask,
BearMask,
DeerMask,
SavageMask,
HornedTribalMask,
TribalMask
}
public enum raceHue
{
None,
Neutral,
Yellow,
Red,
Snake,
Green,
Orange,
Dark
}
public enum hairHue
{
None,
Shaved,
Neutral,
Yellow,
Red,
Snake,
Green,
Orange,
White
}
public enum beardHue
{
None,
Shaved,
Neutral,
Yellow,
Red,
Snake,
Green,
Orange,
White
}
public abstract class BaseRaceGate : Item
{
private bool m_Active, m_Creatures;
private Point3D m_PointDest;
private Map m_MapDest;
private RaceType m_Race;
private raceHue m_RaceHue; // Character Skin Color
private int m_Str;
private int m_Dex;
private int m_Int;
private raceBeard m_Beard; // Set this to a Beard Value to add a beard on male & female characters.
private raceMask m_Mask; // Set this to a Mask Value to add a Mask to the character.
private hairHue m_HairHue; // Change the Race's Hair
private beardHue m_BeardHue; // & Beard Colour.
[CommandProperty( AccessLevel.GameMaster )]
public bool Active
{
get { return m_Active; }
set { m_Active = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public RaceType Race
{
get { return m_Race; } // get { return PgRace; }
set { m_Race = value; } // set { PgRace = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public raceHue RaceHue
{
get { return m_RaceHue; }
set { m_RaceHue = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int RaceStr
{
get { return m_Str; }
set { m_Str = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int RaceDex
{
get { return m_Dex; }
set { m_Dex = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int RaceInt
{
get { return m_Int; }
set { m_Int = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public raceBeard RaceBeard
{
get { return m_Beard; }
set { m_Beard = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public hairHue HairHue
{
get { return m_HairHue; }
set { m_HairHue = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public beardHue BeardHue
{
get { return m_BeardHue; }
set { m_BeardHue = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public raceMask RaceMask
{
get { return m_Mask; }
set { m_Mask = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D PointDest
{
get { return m_PointDest; }
set { m_PointDest = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Map MapDest
{
get { return m_MapDest; }
set { m_MapDest = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool Creatures
{
get { return m_Creatures; }
set { m_Creatures = value; }
}
public BaseRaceGate( Point3D pointDest, Map mapDest, bool creatures ) : base( 0x0F6C)
{
Visible = true;
Movable = false;
Hue = 0x047f; // Just the color of the RaceGate.
Light = LightType.Circle300;
Name = "Human";
m_Race = RaceType.Human;
m_Active = true;
m_PointDest = new Point3D( 1069, 1025, 5 );
m_MapDest = Map.Felucca;
m_Creatures = creatures;
m_RaceHue = raceHue.None; // Utility.RandomNeutralHue() .RandomOrangeHue() .RandomSnakeHue() .RandomYellowHue() .RandomGreenHue()
m_Str = 30;
m_Dex = 30;
m_Int = 30;
m_Beard = raceBeard.None;
m_Mask = raceMask.None;
m_HairHue = hairHue.None;
m_BeardHue = beardHue.None;
}
public override void OnSingleClick( Mobile from )
{
LabelTo( from, Name ); // RaceGate
if ( m_Active )
{
if ( m_MapDest != null && m_PointDest != Point3D.Zero )
LabelTo( from, "{0} [{1}]", m_PointDest, m_MapDest );
else if ( m_MapDest != null )
LabelTo( from, "[{0}]", m_MapDest );
else if ( m_PointDest != Point3D.Zero )
LabelTo( from, m_PointDest.ToString() );
}
else
{
LabelTo( from, "(inactive)" );
}
}
public override bool OnMoveOver( Mobile m )
{
Mobile somemobile = m;
PlayerMobile someperso = somemobile as PlayerMobile;
if ( someperso != null )
{
if ( someperso.m_Race == RaceType.None )
{
someperso.InitStats( m_Str, m_Dex, m_Int ); // set the character's stats
someperso.m_Race = m_Race;
someperso.Name += " the " + Name;
if ( m_RaceHue != raceHue.None )
{
switch ( m_RaceHue )
{
case raceHue.Neutral: someperso.Hue = Utility.RandomNeutralHue(); break;
case raceHue.Yellow: someperso.Hue = Utility.RandomYellowHue(); break;
case raceHue.Red: someperso.Hue = Utility.RandomRedHue(); break;
case raceHue.Snake: someperso.Hue = Utility.RandomSnakeHue(); break;
case raceHue.Green: someperso.Hue = Utility.RandomGreenHue(); break;
case raceHue.Orange: someperso.Hue = Utility.RandomOrangeHue(); break;
case raceHue.Dark: someperso.Hue = Utility.RandomList( 692, 697, 702, 703, 704, 707, 708, 717 ); break; }
}
if ( m_Beard != raceBeard.None )
{
Item beard = new Item( 0x203E );
switch ( m_Beard )
{
case raceBeard.Random: beard = new Item( Utility.RandomList( 0x203E, 0x203F, 0x2040, 0x2041, 0x204B, 0x204C, 0x204D ) ); break;
case raceBeard.LongBeard: beard = new Item( 0x203E ); break;
case raceBeard.ShortBeard: beard = new Item( 0x203F ); break;
case raceBeard.Goatee: beard = new Item( 0x2040 ); break;
case raceBeard.Mustache: beard = new Item( 0x2041 ); break;
case raceBeard.MediumShortBeard: beard = new Item( 0x204B ); break;
case raceBeard.MediumLongBeard: beard = new Item( 0x204C ); break;
case raceBeard.Vandyke: beard = new Item( 0x204D ); break;
}
if ( someperso.Hair != null )
beard.Hue = someperso.Hair.Hue;
else beard.Hue = Utility.RandomHairHue();
beard.Layer = Layer.FacialHair;
beard.Movable = false;
someperso.AddItem( beard );
}
if ( m_HairHue != hairHue.None && someperso.Hair != null )
{
switch ( m_HairHue )
{
case hairHue.Shaved: someperso.Hair.Delete(); break;
case hairHue.Neutral: someperso.Hair.Hue = Utility.RandomNeutralHue(); break;
case hairHue.Yellow: someperso.Hair.Hue = Utility.RandomYellowHue(); break;
case hairHue.Red: someperso.Hair.Hue = Utility.RandomRedHue(); break;
case hairHue.Snake: someperso.Hair.Hue = Utility.RandomSnakeHue(); break;
case hairHue.Green: someperso.Hair.Hue = Utility.RandomGreenHue(); break;
case hairHue.Orange: someperso.Hair.Hue = Utility.RandomOrangeHue(); break;
case hairHue.White: someperso.Hair.Hue = 1153; break;
}
}
if ( m_BeardHue != beardHue.None && someperso.Beard != null )
{
switch ( m_BeardHue )
{
case beardHue.Shaved: someperso.Beard.Delete(); break;
case beardHue.Neutral: someperso.Beard.Hue = Utility.RandomNeutralHue(); break;
case beardHue.Yellow: someperso.Beard.Hue = Utility.RandomYellowHue(); break;
case beardHue.Red: someperso.Beard.Hue = Utility.RandomRedHue(); break;
case beardHue.Snake: someperso.Beard.Hue = Utility.RandomSnakeHue(); break;
case beardHue.Green: someperso.Beard.Hue = Utility.RandomGreenHue(); break;
case beardHue.Orange: someperso.Beard.Hue = Utility.RandomOrangeHue(); break;
case beardHue.White: someperso.Beard.Hue = 1153; break;
}
}
if ( m_Mask != raceMask.None )
{
Item mask = new Item( 0x1546 );
if ( someperso.Female == true )
{
switch ( m_Mask )
{
case raceMask.Random: mask = new Item( Utility.RandomList( 0x1546, 0x1548, 0x154C, 0x154A, 0x141C, 0x154C ) ); break;
case raceMask.BearMask: mask = new Item( 0x1546 ); break;
case raceMask.DeerMask: mask = new Item( 0x1548 ); break;
case raceMask.TribalMask: mask = new Item( 0x154C ); break;
case raceMask.HornedTribalMask: mask = new Item( 0x154A ); break;
case raceMask.OrcMask: mask = new Item( 0x141C ); break;
case raceMask.SavageMask: mask = new Item( 0x154C ); break;
}
}
else
{
switch ( m_Mask )
{
case raceMask.Random: mask = new Item( Utility.RandomList( 0x1545, 0x1547, 0x154B, 0x1549, 0x141B, 0x154B ) ); break;
case raceMask.BearMask: mask = new Item( 0x1545 ); break;
case raceMask.DeerMask: mask = new Item( 0x1547 ); break;
case raceMask.TribalMask: mask = new Item( 0x154B ); break;
case raceMask.HornedTribalMask: mask = new Item( 0x1549 ); break;
case raceMask.OrcMask: mask = new Item( 0x141B ); break;
case raceMask.SavageMask: mask = new Item( 0x154B ); break;
}
}
mask.Hue = someperso.Hue;
mask.Layer = Layer.Helm;
mask.Movable = false;
someperso.AddItem( mask );
}
someperso.SendMessage("You are now a {0}!", Name);
}
else someperso.SendMessage("Be satisfied with your race!"
;
}
if ( m_Active )
{
if ( !m_Creatures && !m.Player )
return true;
Map map = m_MapDest;
if ( map == null )
map = m.Map;
Point3D p = m_PointDest;
if ( p == Point3D.Zero )
p = m.Location;
Server.Mobiles.BaseCreature.TeleportPets( m, p, map );
if ( m_MapDest != null )
m.Map = m_MapDest;
if ( m_PointDest != Point3D.Zero )
m.Location = m_PointDest;
return false;
}
return true;
}
public BaseRaceGate( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 4 ); // version
writer.Write( (int)m_BeardHue );
writer.Write( (int)m_HairHue );
writer.Write( (int)m_RaceHue );
writer.Write( m_Str );
writer.Write( m_Dex );
writer.Write( m_Int );
writer.Write( (int)m_Beard );
writer.Write( (int)m_Mask );
writer.Write( (int)m_Race );
writer.Write( m_Creatures );
writer.Write( m_Active );
writer.Write( m_PointDest );
writer.Write( m_MapDest );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 4:
{
m_BeardHue = (beardHue)reader.ReadInt();
m_HairHue = (hairHue)reader.ReadInt();
goto case 3;
}
case 3:
{
m_RaceHue = (raceHue)reader.ReadInt();
m_Str = reader.ReadInt();
m_Dex = reader.ReadInt();
m_Int = reader.ReadInt();
m_Beard = (raceBeard)reader.ReadInt();
m_Mask = (raceMask)reader.ReadInt();
goto case 2;
}
case 2:
{
m_Race = (RaceType)reader.ReadInt();
goto case 1;
}
case 1:
{
m_Creatures = reader.ReadBool();
goto case 0;
}
case 0:
{
m_Active = reader.ReadBool();
m_PointDest = reader.ReadPoint3D();
m_MapDest = reader.ReadMap();
break;
}
}
}
}
}
[/code:1]
Please report bugs.
Thema.