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; // Proxy corpses are created for any mobs that have items equipped when they die if (corpse.ProxyCorpse != null) { corpse.Carved = true; corpse = corpse.ProxyCorpse; } 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; } } */ if ( corpse.BloodHue != -1 ) new Blood( 0x122D, corpse.BloodHue ).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 (EraAOS && (holding is SkinningKnife /* TODO: || holding is ButcherWarCleaver || with is ButcherWarCleaver */ )) { Item leather = null; switch ( HideType ) { case HideType.Regular: leather = new Hides( hides ); break; case HideType.Spined: leather = new SpinedHides( hides ); break; case HideType.Horned: leather = new HornedHides( hides ); break; case HideType.Barbed: leather = new BarbedHides( 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 { switch ( HideType ) { case HideType.Regular: corpse.DropItem( new Hides( hides ) ); break; case HideType.Spined: corpse.DropItem( new SpinedHides( hides ) ); break; case HideType.Horned: corpse.DropItem( new HornedHides( hides ) ); break; case HideType.Barbed: corpse.DropItem( new BarbedHides( hides ) ); break; } 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.Blood: corpse.AddCarvedItem( new BloodScales( 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; } case ScaleType.Any: { switch ( Utility.Random( 5 ) ) { case 0: corpse.AddCarvedItem( new RedScales( scales ), from ); break; case 1: corpse.AddCarvedItem( new YellowScales( scales ), from ); break; case 2: corpse.AddCarvedItem( new BlackScales( scales ), from ); break; case 3: corpse.AddCarvedItem( new GreenScales( scales ), from ); break; case 4: corpse.AddCarvedItem( new WhiteScales( scales ), from ); break; case 5: corpse.AddCarvedItem( new BlueScales( scales ), from ); break; } break; } } from.SendMessage( "You cut away some scales, but they remain on the corpse." ); } corpse.Carved = true; if ( corpse.IsCriminalAction( from ) ) from.CriminalAction( true ); } }