protected override void OnTarget( Mobile from, object targeted ) { IPoint3D p = targeted as IPoint3D; Map map = from.Map; if ( p == null || map == null || m_Maker == null || m_Maker.Deleted ) return; if ( m_Maker.IsChildOf( from.Backpack ) ) { SpellHelper.GetSurfaceTop( ref p ); BaseHouse house = null; Point3D loc = new Point3D( p ); AddonFitResult result = CouldFit( loc, map, from, ref house ); if ( result == AddonFitResult.Valid ) { CharacterStatue statue = new CharacterStatue( from, m_Type ); CharacterStatuePlinth plinth = new CharacterStatuePlinth( statue ); house.Addons.Add( plinth ); statue.Plinth = plinth; plinth.MoveToWorld( loc, map ); statue.InvalidatePose(); from.SendGump( new CharacterStatueGump( m_Maker, statue ) ); } else if ( result == AddonFitResult.Blocked ) from.SendLocalizedMessage( 500269 ); // You cannot build that there. else if ( result == AddonFitResult.NotInHouse ) from.SendLocalizedMessage( 1076192 ); // Statues can only be placed in houses where you are the owner or co-owner. else if ( result == AddonFitResult.DoorsNotClosed ) from.SendMessage( "You must close all house doors before placing this." ); else if ( result == AddonFitResult.DoorTooClose ) from.SendLocalizedMessage( 500271 ); // You cannot build near the door. } else from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it. }
protected override void OnTarget( Mobile from, object targeted ) { IPoint3D p = targeted as IPoint3D; Map map = from.Map; if ( p == null || map == null || m_Maker == null || m_Maker.Deleted ) return; if ( m_Maker.IsChildOf( from.Backpack ) ) { SpellHelper.GetSurfaceTop( ref p ); BaseHouse house = null; Point3D loc = new Point3D( p ); if ( targeted is Item && !((Item) targeted).IsLockedDown && !((Item) targeted).IsSecure && !(targeted is AddonComponent) ) { from.SendLocalizedMessage( 1076191 ); // Statues can only be placed in houses. return; } else if ( from.IsBodyMod ) { from.SendLocalizedMessage( 1073648 ); // You may only proceed while in your original state... return; } AddonFitResult result = CouldFit( loc, map, from, ref house ); if ( result == AddonFitResult.Valid ) { CharacterStatue statue = new CharacterStatue( from, m_Type ); CharacterStatuePlinth plinth = new CharacterStatuePlinth( statue ); house.Addons.Add( plinth ); if ( m_Maker is IRewardItem ) statue.IsRewardItem = ( (IRewardItem) m_Maker).IsRewardItem; statue.Plinth = plinth; plinth.MoveToWorld( loc, map ); statue.InvalidatePose(); from.CloseGump( typeof( CharacterStatueGump ) ); from.SendGump( new CharacterStatueGump( m_Maker, statue, from ) ); } else if ( result == AddonFitResult.Blocked ) from.SendLocalizedMessage( 500269 ); // You cannot build that there. else if ( result == AddonFitResult.NotInHouse ) from.SendLocalizedMessage( 1076192 ); // Statues can only be placed in houses where you are the owner or co-owner. else if ( result == AddonFitResult.DoorTooClose ) from.SendLocalizedMessage( 500271 ); // You cannot build near the door. } else from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it. }
protected override void OnTarget(Mobile from, object targeted) { var p = targeted as IPoint3D; Map map = from.Map; if (p == null || map == null || m_Maker == null || m_Maker.Deleted) { return; } if (m_Maker.IsChildOf(from.Backpack)) { SpellHelper.GetSurfaceTop(ref p); BaseHouse house = null; var loc = new Point3D(p); if (m_Maker is CharacterStatueDeed && !((CharacterStatueDeed) m_Maker).NoHouse || m_Maker is CharacterStatueMaker && !((CharacterStatueMaker) m_Maker).NoHouse) { if (targeted is Item && !((Item) targeted).IsLockedDown && !((Item) targeted).IsSecure && !(targeted is AddonComponent)) { from.SendLocalizedMessage(1076191); // Statues can only be placed in houses. return; } } if (@from.IsBodyMod) { @from.SendLocalizedMessage(1073648); // You may only proceed while in your original state... return; } AddonFitResult result = CouldFit(loc, map, from, ref house); if (result == AddonFitResult.Valid || m_Maker is CharacterStatueDeed && ((CharacterStatueDeed) m_Maker).NoHouse || m_Maker is CharacterStatueMaker && ((CharacterStatueMaker) m_Maker).NoHouse) { var statue = new CharacterStatue(from, m_Type); var plinth = new CharacterStatuePlinth(statue); if (m_Maker is CharacterStatueDeed && !((CharacterStatueDeed) m_Maker).NoHouse || m_Maker is CharacterStatueMaker && !((CharacterStatueMaker) m_Maker).NoHouse) { house.Addons.Add(plinth); } if (m_Maker is IRewardItem) { statue.IsRewardItem = ((IRewardItem) m_Maker).IsRewardItem; } statue.Plinth = plinth; plinth.MoveToWorld(loc, map); statue.InvalidatePose(); /* * TODO: Previously the maker wasn't deleted until after statue * customization, leading to redeeding issues. Exact OSI behavior * needs looking into. */ m_Maker.Delete(); statue.Sculpt(from); from.CloseGump(typeof(CharacterStatueGump)); from.SendGump(new CharacterStatueGump(m_Maker, statue, from)); } else if (result == AddonFitResult.Blocked) { from.SendLocalizedMessage(500269); // You cannot build that there. } else if (result == AddonFitResult.NotInHouse) { from.SendLocalizedMessage(1076192); // Statues can only be placed in houses where you are the owner or co-owner. } else if (result == AddonFitResult.DoorTooClose) { from.SendLocalizedMessage(500271); // You cannot build near the door. } } else { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } }