public virtual void OnCarve( Mobile from, Corpse corpse, Item with )
{
int feathers = Feathers;
int wool = Wool;
int meat = Meat;
int hides = Hides;
int scales = Scales;
if ( (feathers == 0 && wool == 0 && meat == 0 && hides == 0 && scales == 0) || Summoned || IsBonded || corpse.Animated )
{
if ( corpse.Animated )
corpse.SendLocalizedMessageTo( from, 500464 ); // Use this on corpses to carve away meat and hide
else
from.SendLocalizedMessage( 500485 ); // You see nothing useful to carve from the corpse.
}
else
{
if( Core.ML && from.Race == Race.Human )
{
hides = (int)Math.Ceiling( hides * 1.1 ); //10% Bonus Only applies to Hides, Ore & Logs
}
if ( corpse.Map == Map.Felucca )
{
feathers *= 2;
wool *= 2;
hides *= 2;
if (Core.ML)
{
meat *= 2;
scales *= 2;
}
}
new Blood( 0x122D ).MoveToWorld( corpse.Location, corpse.Map );
if ( feathers != 0 )
{
corpse.AddCarvedItem( new Feather( feathers ), from );
from.SendLocalizedMessage( 500479 ); // You pluck the bird. The feathers are now on the corpse.
}
if ( wool != 0 )
{
corpse.AddCarvedItem( new TaintedWool( wool ), from );
from.SendLocalizedMessage( 500483 ); // You shear it, and the wool is now on the corpse.
}
if ( meat != 0 )
{
if ( MeatType == MeatType.Ribs )
corpse.AddCarvedItem( new RawRibs( meat ), from );
else if ( MeatType == MeatType.Bird )
corpse.AddCarvedItem( new RawBird( meat ), from );
else if ( MeatType == MeatType.LambLeg )
corpse.AddCarvedItem( new RawLambLeg( meat ), from );
from.SendLocalizedMessage( 500467 ); // You carve some meat, which remains on the corpse.
}
if ( hides != 0 )
{
Item holding = from.Weapon as Item;
if ( Core.AOS && ( holding is SkinningKnife /* TODO: || holding is ButcherWarCleaver || with is ButcherWarCleaver */ ) )
{
Item leather = null;
switch ( HideType )
{
case HideType.Regular: leather = new Leather( hides ); break;
case HideType.Spined: leather = new SpinedLeather( hides ); break;
case HideType.Horned: leather = new HornedLeather( hides ); break;
case HideType.Barbed: leather = new BarbedLeather( hides ); break;
}
if ( leather != null )
{
if ( !from.PlaceInBackpack( leather ) )
{
corpse.DropItem( leather );
from.SendLocalizedMessage( 500471 ); // You skin it, and the hides are now in the corpse.
}
else
from.SendLocalizedMessage( 1073555 ); // You skin it and place the cut-up hides in your backpack.
}
}
else
{
if ( HideType == HideType.Regular )
corpse.DropItem( new Hides( hides ) );
else if ( HideType == HideType.Spined )
corpse.DropItem( new SpinedHides( hides ) );
else if ( HideType == HideType.Horned )
corpse.DropItem( new HornedHides( hides ) );
else if ( HideType == HideType.Barbed )
corpse.DropItem( new BarbedHides( hides ) );
from.SendLocalizedMessage( 500471 ); // You skin it, and the hides are now in the corpse.
}
}
if ( scales != 0 )
{
ScaleType sc = this.ScaleType;
switch ( sc )
{
case ScaleType.Red: corpse.AddCarvedItem( new RedScales( scales ), from ); break;
case ScaleType.Yellow: corpse.AddCarvedItem( new YellowScales( scales ), from ); break;
case ScaleType.Black: corpse.AddCarvedItem( new BlackScales( scales ), from ); break;
case ScaleType.Green: corpse.AddCarvedItem( new GreenScales( scales ), from ); break;
case ScaleType.White: corpse.AddCarvedItem( new WhiteScales( scales ), from ); break;
case ScaleType.Blue: corpse.AddCarvedItem( new BlueScales( scales ), from ); break;
case ScaleType.All:
{
corpse.AddCarvedItem( new RedScales( scales ), from );
corpse.AddCarvedItem( new YellowScales( scales ), from );
corpse.AddCarvedItem( new BlackScales( scales ), from );
corpse.AddCarvedItem( new GreenScales( scales ), from );
corpse.AddCarvedItem( new WhiteScales( scales ), from );
corpse.AddCarvedItem( new BlueScales( scales ), from );
break;
}
}
from.SendMessage( "You cut away some scales, but they remain on the corpse." );
}
corpse.Carved = true;
if ( corpse.IsCriminalAction( from ) )
from.CriminalAction( true );
}
}