mirror of
https://github.com/runuo/runuo
synced 2026-08-11 22:26:04 -04:00
Convert movement, actions (lift/use), combat, and spells to use Core.TickCount and avoid DateTime caveats (performance, system time dependency, etc) Refactor DateTime.Now to DateTime.UtcNow Add LOS check for Iron Maiden addon
159 lines
No EOL
4.5 KiB
C#
159 lines
No EOL
4.5 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Server.Network;
|
|
using Server.Factions;
|
|
using Server.Mobiles;
|
|
|
|
namespace Server.Factions
|
|
{
|
|
public class Keywords
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
EventSink.Speech += new SpeechEventHandler( EventSink_Speech );
|
|
}
|
|
|
|
private static void ShowScore_Sandbox( object state )
|
|
{
|
|
PlayerState pl = (PlayerState)state;
|
|
|
|
if ( pl != null )
|
|
pl.Mobile.PublicOverheadMessage( MessageType.Regular, pl.Mobile.SpeechHue, true, pl.KillPoints.ToString( "N0" ) ); // NOTE: Added 'N0'
|
|
}
|
|
|
|
private static void EventSink_Speech( SpeechEventArgs e )
|
|
{
|
|
Mobile from = e.Mobile;
|
|
int[] keywords = e.Keywords;
|
|
|
|
for ( int i = 0; i < keywords.Length; ++i )
|
|
{
|
|
switch ( keywords[i] )
|
|
{
|
|
case 0x00E4: // *i wish to access the city treasury*
|
|
{
|
|
Town town = Town.FromRegion( from.Region );
|
|
|
|
if ( town == null || !town.IsFinance( from ) || !from.Alive )
|
|
break;
|
|
|
|
if ( FactionGump.Exists( from ) )
|
|
from.SendLocalizedMessage( 1042160 ); // You already have a faction menu open.
|
|
else if ( town.Owner != null && from is PlayerMobile )
|
|
from.SendGump( new FinanceGump( (PlayerMobile)from, town.Owner, town ) );
|
|
|
|
break;
|
|
}
|
|
case 0x0ED: // *i am sheriff*
|
|
{
|
|
Town town = Town.FromRegion( from.Region );
|
|
|
|
if ( town == null || !town.IsSheriff( from ) || !from.Alive )
|
|
break;
|
|
|
|
if ( FactionGump.Exists( from ) )
|
|
from.SendLocalizedMessage( 1042160 ); // You already have a faction menu open.
|
|
else if ( town.Owner != null )
|
|
from.SendGump( new SheriffGump( (PlayerMobile)from, town.Owner, town ) );
|
|
|
|
break;
|
|
}
|
|
case 0x00EF: // *you are fired*
|
|
{
|
|
Town town = Town.FromRegion( from.Region );
|
|
|
|
if ( town == null )
|
|
break;
|
|
|
|
if ( town.IsFinance( from ) || town.IsSheriff( from ) )
|
|
town.BeginOrderFiring( from );
|
|
|
|
break;
|
|
}
|
|
case 0x00E5: // *i wish to resign as finance minister*
|
|
{
|
|
PlayerState pl = PlayerState.Find( from );
|
|
|
|
if ( pl != null && pl.Finance != null )
|
|
{
|
|
pl.Finance.Finance = null;
|
|
from.SendLocalizedMessage( 1005081 ); // You have been fired as Finance Minister
|
|
}
|
|
|
|
break;
|
|
}
|
|
case 0x00EE: // *i wish to resign as sheriff*
|
|
{
|
|
PlayerState pl = PlayerState.Find( from );
|
|
|
|
if ( pl != null && pl.Sheriff != null )
|
|
{
|
|
pl.Sheriff.Sheriff = null;
|
|
from.SendLocalizedMessage( 1010270 ); // You have been fired as Sheriff
|
|
}
|
|
|
|
break;
|
|
}
|
|
case 0x00E9: // *what is my faction term status*
|
|
{
|
|
PlayerState pl = PlayerState.Find( from );
|
|
|
|
if ( pl != null && pl.IsLeaving )
|
|
{
|
|
if ( Faction.CheckLeaveTimer( from ) )
|
|
break;
|
|
|
|
TimeSpan remaining = ( pl.Leaving + Faction.LeavePeriod ) - DateTime.UtcNow;
|
|
|
|
if( remaining.TotalDays >= 1 )
|
|
from.SendLocalizedMessage( 1042743, remaining.TotalDays.ToString( "N0" ) ) ;// Your term of service will come to an end in ~1_DAYS~ days.
|
|
else if( remaining.TotalHours >= 1 )
|
|
from.SendLocalizedMessage( 1042741, remaining.TotalHours.ToString( "N0" ) ); // Your term of service will come to an end in ~1_HOURS~ hours.
|
|
else
|
|
from.SendLocalizedMessage( 1042742 ); // Your term of service will come to an end in less than one hour.
|
|
}
|
|
else if ( pl != null )
|
|
{
|
|
from.SendLocalizedMessage( 1042233 ); // You are not in the process of quitting the faction.
|
|
}
|
|
|
|
break;
|
|
}
|
|
case 0x00EA: // *message faction*
|
|
{
|
|
Faction faction = Faction.Find( from );
|
|
|
|
if ( faction == null || !faction.IsCommander( from ) )
|
|
break;
|
|
|
|
if ( from.AccessLevel == AccessLevel.Player && !faction.FactionMessageReady )
|
|
from.SendLocalizedMessage( 1010264 ); // The required time has not yet passed since the last message was sent
|
|
else
|
|
faction.BeginBroadcast( from );
|
|
|
|
break;
|
|
}
|
|
case 0x00EC: // *showscore*
|
|
{
|
|
PlayerState pl = PlayerState.Find( from );
|
|
|
|
if ( pl != null )
|
|
Timer.DelayCall( TimeSpan.Zero, new TimerStateCallback( ShowScore_Sandbox ), pl );
|
|
|
|
break;
|
|
}
|
|
case 0x0178: // i honor your leadership
|
|
{
|
|
Faction faction = Faction.Find( from );
|
|
|
|
if ( faction != null )
|
|
faction.BeginHonorLeadership( from );
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |