ServUO Version
Publish 57
Ultima Expansion
Endless Journey
Trying to find a deed or something that allows players to place an NPC of choice at their house with the ability to redeed it.. does something like this exist?
 
Either would work, been playing with scripts over here to try and get something working :)

The barkeeper from what I can tell just vanishes and you have to get a new deed.
 
Last edited:
I use the HouseNPCVendor deeds and add a context to NPCs in houses.
NOTE: Just now thinking this will have a potential exploit for NPCs you can buy normally like barkeeps, etc

In BaseVendor > AddCustomContextEntries ; add this

Code:
BaseHouse house = BaseHouse.GetHouseRegion( this );
                if(house != null && house.IsCoOwner(from))
                    list.Add(new RedeedEntry(from, this));
and then this i added just above the BulkOrderInfoEntry method

Code:
private class RedeedEntry : ContextMenuEntry
        {
            private readonly Mobile _From;
            private readonly Mobile _Vendor;
            public RedeedEntry(Mobile from, Mobile m) : base(1151601, 2)
            {
                _From = from;
                _Vendor = m;
            }
            public override void OnClick()
            {
                _Vendor.Delete();
                _From.AddToBackpack(new HouseNPCVendor());
            }
        }

and of course, don't forget to add
using Server.Multis;
 

Attachments

  • HouseNPCVendor.cs
    4.7 KB · Views: 7
Very nice, works like a charm but I see what you mean by exploit haha.. I will keep playing with the scripts on my side see what I can come up with.
 
Can anyone tell me where this menu is coming from and can it be overridden?
Looking everywhere for it but can't seem to find it, this is from the Player Barkeeper.

1653789158750.png
 
For anyone else who comes across this, I was never able to find a way to "change" the name of the menu item, however in this piece of code:
C#:
    public class ManageAlchemistEntry : ContextMenuEntry
    {
        private readonly Mobile m_From;
        private readonly PlayerAlchemist m_Alchemist;

        public ManageAlchemistEntry(Mobile from, PlayerAlchemist alchemist)
            : base(6151, 12)
        {
            m_From = from;
            m_Alchemist = alchemist;
        }

        public override void OnClick()
        {
            m_Alchemist.BeginManagement(m_From);
        }
    }
The "6151" refers to the Cliloc number plus 300, so 3006151, I found an alternate number 0127 which just says the word "Options" which works for me. Hopefully someone else will find that useful.
 
Back