Here is the script changes to broadcast a message when the sigil is taken or lost.
RunUO 2.0 RC1-
In Sigil.cs (
changes in red)
Taken:
Code:
public override void OnAdded( object parent )
{
base.OnAdded( parent );
Mobile mob = FindOwner( parent );
if ( mob != null )
mob.SolidHueOverride = OwnershipHue;
World.Broadcast(0xB, true, "{0} has taken {1}'s faction sigil!", mob, m_Town);
}
Returned:
Code:
public override void OnRemoved( object parent )
{
base.OnRemoved( parent );
Mobile mob = FindOwner( parent );
if ( mob != null )
mob.SolidHueOverride = -1;
World.Broadcast(0xB, true, "{0} has lost {1}'s faction sigil!", mob, m_Town);
}
Lost:
Code:
public bool ReturnHome()
{
BaseMonolith monolith = m_LastMonolith;
if ( monolith == null && m_Town != null )
monolith = m_Town.Monolith;
if ( monolith != null && !monolith.Deleted )
monolith.Sigil = this;
World.Broadcast(0xB, true, "{0}'s faction sigil has been returned.", m_Town);
return ( monolith != null && !monolith.Deleted );
}
I'm taking a look at Knives' Chat to see if he has an easy and efficient way to send messages to specific factions.
You could also add change Stealing.cs if you only wanted the message displayed when the sigil is stolen:
Code:
else
{
if ( sig.IsBeingCorrupted )
sig.GraceStart = DateTime.Now; // begin grace period
m_Thief.SendLocalizedMessage( 1010586 ); // YOU STOLE THE SIGIL!!! (woah, calm down now)
World.Broadcast(0xB, true, "{0} has stolen the faction sigil from {1}!", m_Thief, sig.Town);
if ( sig.LastMonolith != null )
sig.LastMonolith.Sigil = null;
sig.LastStolen = DateTime.Now;
return sig;
}
I like the idea of a gump Ilutzio, if you wanted to keep it 'RP' you could have an NPC that the players talk to or an item that you can purchase from an Event Vendor.