Server.Mobiles.BaseCreature.OnCarve C# (CSharp) Method

OnCarve() public method

public OnCarve ( Mobile from, Corpse corpse, Item with ) : void
from Mobile
corpse Corpse
with Item
return void
        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 );
            }
        }
BaseCreature