/*************************************************************************** * EventSink.cs * ------------------- * begin : May 1, 2002 * copyright : (C) The RunUO Software Team * email : info@runuo.com * * $Id$ * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ using System; using System.Net; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using Server; using Server.Items; using Server.Accounting; using Server.Network; using Server.Guilds; using Server.Commands; namespace Server { public delegate void CharacterCreatedEventHandler( CharacterCreatedEventArgs e ); public delegate void OpenDoorMacroEventHandler( OpenDoorMacroEventArgs e ); public delegate void SpeechEventHandler( SpeechEventArgs e ); public delegate void LoginEventHandler( LoginEventArgs e ); public delegate void ServerListEventHandler( ServerListEventArgs e ); public delegate void MovementEventHandler( MovementEventArgs e ); public delegate void HungerChangedEventHandler( HungerChangedEventArgs e ); public delegate void CrashedEventHandler( CrashedEventArgs e ); public delegate void ShutdownEventHandler( ShutdownEventArgs e ); public delegate void HelpRequestEventHandler( HelpRequestEventArgs e ); public delegate void DisarmRequestEventHandler( DisarmRequestEventArgs e ); public delegate void StunRequestEventHandler( StunRequestEventArgs e ); public delegate void OpenSpellbookRequestEventHandler( OpenSpellbookRequestEventArgs e ); public delegate void CastSpellRequestEventHandler( CastSpellRequestEventArgs e ); public delegate void AnimateRequestEventHandler( AnimateRequestEventArgs e ); public delegate void LogoutEventHandler( LogoutEventArgs e ); public delegate void SocketConnectEventHandler( SocketConnectEventArgs e ); public delegate void ConnectedEventHandler( ConnectedEventArgs e ); public delegate void DisconnectedEventHandler( DisconnectedEventArgs e ); public delegate void RenameRequestEventHandler( RenameRequestEventArgs e ); public delegate void PlayerDeathEventHandler( PlayerDeathEventArgs e ); public delegate void ChatRequestEventHandler( ChatRequestEventArgs e ); public delegate void AccountLoginEventHandler( AccountLoginEventArgs e ); public delegate void PaperdollRequestEventHandler( PaperdollRequestEventArgs e ); public delegate void ProfileRequestEventHandler( ProfileRequestEventArgs e ); public delegate void ChangeProfileRequestEventHandler( ChangeProfileRequestEventArgs e ); public delegate void AggressiveActionEventHandler( AggressiveActionEventArgs e ); public delegate void GameLoginEventHandler( GameLoginEventArgs e ); public delegate void DeleteRequestEventHandler( DeleteRequestEventArgs e ); public delegate void WorldLoadEventHandler(); public delegate void WorldSaveEventHandler( WorldSaveEventArgs e ); public delegate void SetAbilityEventHandler( SetAbilityEventArgs e ); public delegate void FastWalkEventHandler( FastWalkEventArgs e ); public delegate void ServerStartedEventHandler(); public delegate BaseGuild CreateGuildHandler( CreateGuildEventArgs e ); public delegate void GuildGumpRequestHandler( GuildGumpRequestArgs e ); public delegate void QuestGumpRequestHandler( QuestGumpRequestArgs e ); public delegate void ClientVersionReceivedHandler( ClientVersionReceivedArgs e ); public class ClientVersionReceivedArgs : EventArgs { private NetState m_State; private ClientVersion m_Version; public NetState State { get { return m_State; } } public ClientVersion Version { get { return m_Version; } } public ClientVersionReceivedArgs( NetState state, ClientVersion cv ) { m_State = state; m_Version = cv; } } public class CreateGuildEventArgs : EventArgs { private int m_Id; public int Id { get { return m_Id; } set { m_Id = value; } } public CreateGuildEventArgs( int id ) { m_Id = id; } } public class GuildGumpRequestArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public GuildGumpRequestArgs( Mobile mobile ) { m_Mobile = mobile; } } public class QuestGumpRequestArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile { get { return m_Mobile; } } public QuestGumpRequestArgs( Mobile mobile ) { m_Mobile = mobile; } } public class SetAbilityEventArgs : EventArgs { private Mobile m_Mobile; private int m_Index; public Mobile Mobile{ get{ return m_Mobile; } } public int Index{ get{ return m_Index; } } public SetAbilityEventArgs( Mobile mobile, int index ) { m_Mobile = mobile; m_Index = index; } } public class DeleteRequestEventArgs : EventArgs { private NetState m_State; private int m_Index; public NetState State{ get{ return m_State; } } public int Index{ get{ return m_Index; } } public DeleteRequestEventArgs( NetState state, int index ) { m_State = state; m_Index = index; } } public class GameLoginEventArgs : EventArgs { private NetState m_State; private string m_Username; private string m_Password; private bool m_Accepted; private CityInfo[] m_CityInfo; public NetState State{ get{ return m_State; } } public string Username{ get{ return m_Username; } } public string Password{ get{ return m_Password; } } public bool Accepted{ get{ return m_Accepted; } set{ m_Accepted = value; } } public CityInfo[] CityInfo{ get{ return m_CityInfo; } set{ m_CityInfo = value; } } public GameLoginEventArgs( NetState state, string un, string pw ) { m_State = state; m_Username = un; m_Password = pw; } } public class AggressiveActionEventArgs : EventArgs { private Mobile m_Aggressed; private Mobile m_Aggressor; private bool m_Criminal; public Mobile Aggressed{ get{ return m_Aggressed; } } public Mobile Aggressor{ get{ return m_Aggressor; } } public bool Criminal{ get{ return m_Criminal; } } private static Queue m_Pool = new Queue(); public static AggressiveActionEventArgs Create( Mobile aggressed, Mobile aggressor, bool criminal ) { AggressiveActionEventArgs args; if ( m_Pool.Count > 0 ) { args = m_Pool.Dequeue(); args.m_Aggressed = aggressed; args.m_Aggressor = aggressor; args.m_Criminal = criminal; } else { args = new AggressiveActionEventArgs( aggressed, aggressor, criminal ); } return args; } private AggressiveActionEventArgs( Mobile aggressed, Mobile aggressor, bool criminal ) { m_Aggressed = aggressed; m_Aggressor = aggressor; m_Criminal = criminal; } public void Free() { m_Pool.Enqueue( this ); } } public class ProfileRequestEventArgs : EventArgs { private Mobile m_Beholder; private Mobile m_Beheld; public Mobile Beholder{ get{ return m_Beholder; } } public Mobile Beheld{ get{ return m_Beheld; } } public ProfileRequestEventArgs( Mobile beholder, Mobile beheld ) { m_Beholder = beholder; m_Beheld = beheld; } } public class ChangeProfileRequestEventArgs : EventArgs { private Mobile m_Beholder; private Mobile m_Beheld; private string m_Text; public Mobile Beholder{ get{ return m_Beholder; } } public Mobile Beheld{ get{ return m_Beheld; } } public string Text{ get{ return m_Text; } } public ChangeProfileRequestEventArgs( Mobile beholder, Mobile beheld, string text ) { m_Beholder = beholder; m_Beheld = beheld; m_Text = text; } } public class PaperdollRequestEventArgs : EventArgs { private Mobile m_Beholder; private Mobile m_Beheld; public Mobile Beholder{ get{ return m_Beholder; } } public Mobile Beheld{ get{ return m_Beheld; } } public PaperdollRequestEventArgs( Mobile beholder, Mobile beheld ) { m_Beholder = beholder; m_Beheld = beheld; } } public class AccountLoginEventArgs : EventArgs { private NetState m_State; private string m_Username; private string m_Password; private bool m_Accepted; private ALRReason m_RejectReason; public NetState State{ get{ return m_State; } } public string Username{ get{ return m_Username; } } public string Password{ get{ return m_Password; } } public bool Accepted{ get{ return m_Accepted; } set{ m_Accepted = value; } } public ALRReason RejectReason{ get{ return m_RejectReason; } set{ m_RejectReason = value; } } public AccountLoginEventArgs( NetState state, string username, string password ) { m_State = state; m_Username = username; m_Password = password; } } public class ChatRequestEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public ChatRequestEventArgs( Mobile mobile ) { m_Mobile = mobile; } } public class PlayerDeathEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public PlayerDeathEventArgs( Mobile mobile ) { m_Mobile = mobile; } } public class RenameRequestEventArgs : EventArgs { private Mobile m_From, m_Target; private string m_Name; public Mobile From{ get{ return m_From; } } public Mobile Target{ get{ return m_Target; } } public string Name{ get{ return m_Name; } } public RenameRequestEventArgs( Mobile from, Mobile target, string name ) { m_From = from; m_Target = target; m_Name = name; } } public class LogoutEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public LogoutEventArgs( Mobile m ) { m_Mobile = m; } } public class SocketConnectEventArgs : EventArgs { private Socket m_Socket; private bool m_AllowConnection; public Socket Socket{ get{ return m_Socket; } } public bool AllowConnection{ get { return m_AllowConnection; } set { m_AllowConnection = value; } } public SocketConnectEventArgs( Socket s ) { m_Socket = s; m_AllowConnection = true; } } public class ConnectedEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public ConnectedEventArgs( Mobile m ) { m_Mobile = m; } } public class DisconnectedEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public DisconnectedEventArgs( Mobile m ) { m_Mobile = m; } } public class AnimateRequestEventArgs : EventArgs { private Mobile m_Mobile; private string m_Action; public Mobile Mobile{ get{ return m_Mobile; } } public string Action{ get{ return m_Action; } } public AnimateRequestEventArgs( Mobile m, string action ) { m_Mobile = m; m_Action = action; } } public class CastSpellRequestEventArgs : EventArgs { private Mobile m_Mobile; private Item m_Spellbook; private int m_SpellID; public Mobile Mobile{ get{ return m_Mobile; } } public Item Spellbook{ get{ return m_Spellbook; } } public int SpellID{ get{ return m_SpellID; } } public CastSpellRequestEventArgs( Mobile m, int spellID, Item book ) { m_Mobile = m; m_Spellbook = book; m_SpellID = spellID; } } public class OpenSpellbookRequestEventArgs : EventArgs { private Mobile m_Mobile; private int m_Type; public Mobile Mobile{ get{ return m_Mobile; } } public int Type{ get{ return m_Type; } } public OpenSpellbookRequestEventArgs( Mobile m, int type ) { m_Mobile = m; m_Type = type; } } public class StunRequestEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public StunRequestEventArgs( Mobile m ) { m_Mobile = m; } } public class DisarmRequestEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public DisarmRequestEventArgs( Mobile m ) { m_Mobile = m; } } public class HelpRequestEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public HelpRequestEventArgs( Mobile m ) { m_Mobile = m; } } public class ShutdownEventArgs : EventArgs { public ShutdownEventArgs() { } } public class CrashedEventArgs : EventArgs { private Exception m_Exception; private bool m_Close; public Exception Exception{ get{ return m_Exception; } } public bool Close{ get{ return m_Close; } set{ m_Close = value; } } public CrashedEventArgs( Exception e ) { m_Exception = e; } } public class HungerChangedEventArgs : EventArgs { private Mobile m_Mobile; private int m_OldValue; public Mobile Mobile{ get{ return m_Mobile; } } public int OldValue{ get{ return m_OldValue; } } public HungerChangedEventArgs( Mobile mobile, int oldValue ) { m_Mobile = mobile; m_OldValue = oldValue; } } public class MovementEventArgs : EventArgs { private Mobile m_Mobile; private Direction m_Direction; private bool m_Blocked; public Mobile Mobile{ get{ return m_Mobile; } } public Direction Direction{ get{ return m_Direction; } } public bool Blocked{ get{ return m_Blocked; } set{ m_Blocked = value; } } private static Queue m_Pool = new Queue(); public static MovementEventArgs Create( Mobile mobile, Direction dir ) { MovementEventArgs args; if ( m_Pool.Count > 0 ) { args = m_Pool.Dequeue(); args.m_Mobile = mobile; args.m_Direction = dir; args.m_Blocked = false; } else { args = new MovementEventArgs( mobile, dir ); } return args; } public MovementEventArgs( Mobile mobile, Direction dir ) { m_Mobile = mobile; m_Direction = dir; } public void Free() { m_Pool.Enqueue( this ); } } public class ServerListEventArgs : EventArgs { private NetState m_State; private IAccount m_Account; private bool m_Rejected; private List m_Servers; public NetState State{ get{ return m_State; } } public IAccount Account{ get{ return m_Account; } } public bool Rejected{ get{ return m_Rejected; } set{ m_Rejected = value; } } public List Servers{ get{ return m_Servers; } } public void AddServer( string name, IPEndPoint address ) { AddServer( name, 0, TimeZone.CurrentTimeZone, address ); } public void AddServer( string name, int fullPercent, TimeZone tz, IPEndPoint address ) { m_Servers.Add( new ServerInfo( name, fullPercent, tz, address ) ); } public ServerListEventArgs( NetState state, IAccount account ) { m_State = state; m_Account = account; m_Servers = new List(); } } public struct SkillNameValue { private SkillName m_Name; private int m_Value; public SkillName Name{ get{ return m_Name; } } public int Value{ get{ return m_Value; } } public SkillNameValue( SkillName name, int value ) { m_Name = name; m_Value = value; } } public class CharacterCreatedEventArgs : EventArgs { private NetState m_State; private IAccount m_Account; private CityInfo m_City; private SkillNameValue[] m_Skills; private int m_ShirtHue, m_PantsHue; private int m_HairID, m_HairHue; private int m_BeardID, m_BeardHue; private string m_Name; private bool m_Female; private int m_Hue; private int m_Str, m_Dex, m_Int; private int m_Profession; private Mobile m_Mobile; private Race m_Race; public NetState State{ get{ return m_State; } } public IAccount Account{ get{ return m_Account; } } public Mobile Mobile{ get{ return m_Mobile; } set{ m_Mobile = value; } } public string Name{ get{ return m_Name; } } public bool Female{ get{ return m_Female; } } public int Hue{ get{ return m_Hue; } } public int Str{ get{ return m_Str; } } public int Dex{ get{ return m_Dex; } } public int Int{ get{ return m_Int; } } public CityInfo City{ get{ return m_City; } } public SkillNameValue[] Skills{ get{ return m_Skills; } } public int ShirtHue{ get{ return m_ShirtHue; } } public int PantsHue{ get{ return m_PantsHue; } } public int HairID{ get{ return m_HairID; } } public int HairHue{ get{ return m_HairHue; } } public int BeardID{ get{ return m_BeardID; } } public int BeardHue{ get{ return m_BeardHue; } } public int Profession{ get{ return m_Profession; } set{ m_Profession = value; }} public Race Race { get { return m_Race; } } public CharacterCreatedEventArgs( NetState state, IAccount a, string name, bool female, int hue, int str, int dex, int intel, CityInfo city, SkillNameValue[] skills, int shirtHue, int pantsHue, int hairID, int hairHue, int beardID, int beardHue, int profession, Race race ) { m_State = state; m_Account = a; m_Name = name; m_Female = female; m_Hue = hue; m_Str = str; m_Dex = dex; m_Int = intel; m_City = city; m_Skills = skills; m_ShirtHue = shirtHue; m_PantsHue = pantsHue; m_HairID = hairID; m_HairHue = hairHue; m_BeardID = beardID; m_BeardHue = beardHue; m_Profession = profession; m_Race = race; } } public class OpenDoorMacroEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public OpenDoorMacroEventArgs( Mobile mobile ) { m_Mobile = mobile; } } public class SpeechEventArgs : EventArgs { private Mobile m_Mobile; private string m_Speech; private MessageType m_Type; private int m_Hue; private int[] m_Keywords; private bool m_Handled; private bool m_Blocked; public Mobile Mobile{ get{ return m_Mobile; } } public string Speech{ get{ return m_Speech; } set{ m_Speech = value; } } public MessageType Type{ get{ return m_Type; } } public int Hue{ get{ return m_Hue; } } public int[] Keywords{ get{ return m_Keywords; } } public bool Handled{ get{ return m_Handled; } set{ m_Handled = value; } } public bool Blocked{ get{ return m_Blocked; } set{ m_Blocked = value; } } public bool HasKeyword( int keyword ) { for ( int i = 0; i < m_Keywords.Length; ++i ) if ( m_Keywords[i] == keyword ) return true; return false; } public SpeechEventArgs( Mobile mobile, string speech, MessageType type, int hue, int[] keywords ) { m_Mobile = mobile; m_Speech = speech; m_Type = type; m_Hue = hue; m_Keywords = keywords; } } public class LoginEventArgs : EventArgs { private Mobile m_Mobile; public Mobile Mobile{ get{ return m_Mobile; } } public LoginEventArgs( Mobile mobile ) { m_Mobile = mobile; } } public class WorldSaveEventArgs : EventArgs { private bool m_Msg; public bool Message{ get{ return m_Msg; } } public WorldSaveEventArgs( bool msg ) { m_Msg = msg; } } public class FastWalkEventArgs { private NetState m_State; private bool m_Blocked; public FastWalkEventArgs( NetState state ) { m_State = state; m_Blocked = false; } public NetState NetState{ get{ return m_State; } } public bool Blocked{ get{ return m_Blocked; } set{ m_Blocked = value; } } } public static class EventSink { public static event CharacterCreatedEventHandler CharacterCreated; public static event OpenDoorMacroEventHandler OpenDoorMacroUsed; public static event SpeechEventHandler Speech; public static event LoginEventHandler Login; public static event ServerListEventHandler ServerList; public static event MovementEventHandler Movement; public static event HungerChangedEventHandler HungerChanged; public static event CrashedEventHandler Crashed; public static event ShutdownEventHandler Shutdown; public static event HelpRequestEventHandler HelpRequest; public static event DisarmRequestEventHandler DisarmRequest; public static event StunRequestEventHandler StunRequest; public static event OpenSpellbookRequestEventHandler OpenSpellbookRequest; public static event CastSpellRequestEventHandler CastSpellRequest; public static event AnimateRequestEventHandler AnimateRequest; public static event LogoutEventHandler Logout; public static event SocketConnectEventHandler SocketConnect; public static event ConnectedEventHandler Connected; public static event DisconnectedEventHandler Disconnected; public static event RenameRequestEventHandler RenameRequest; public static event PlayerDeathEventHandler PlayerDeath; public static event ChatRequestEventHandler ChatRequest; public static event AccountLoginEventHandler AccountLogin; public static event PaperdollRequestEventHandler PaperdollRequest; public static event ProfileRequestEventHandler ProfileRequest; public static event ChangeProfileRequestEventHandler ChangeProfileRequest; public static event AggressiveActionEventHandler AggressiveAction; public static event CommandEventHandler Command; public static event GameLoginEventHandler GameLogin; public static event DeleteRequestEventHandler DeleteRequest; public static event WorldLoadEventHandler WorldLoad; public static event WorldSaveEventHandler WorldSave; public static event SetAbilityEventHandler SetAbility; public static event FastWalkEventHandler FastWalk; public static event CreateGuildHandler CreateGuild; public static event ServerStartedEventHandler ServerStarted; public static event GuildGumpRequestHandler GuildGumpRequest; public static event QuestGumpRequestHandler QuestGumpRequest; public static event ClientVersionReceivedHandler ClientVersionReceived; public static void InvokeClientVersionReceived( ClientVersionReceivedArgs e ) { if( ClientVersionReceived != null ) ClientVersionReceived( e ); } public static void InvokeServerStarted() { if ( ServerStarted != null ) ServerStarted(); } public static BaseGuild InvokeCreateGuild( CreateGuildEventArgs e ) { if ( CreateGuild != null ) return CreateGuild( e ); else return null; } public static void InvokeSetAbility( SetAbilityEventArgs e ) { if ( SetAbility != null ) SetAbility( e ); } public static void InvokeGuildGumpRequest( GuildGumpRequestArgs e ) { if( GuildGumpRequest != null ) GuildGumpRequest( e ); } public static void InvokeQuestGumpRequest( QuestGumpRequestArgs e ) { if( QuestGumpRequest != null ) QuestGumpRequest( e ); } public static void InvokeFastWalk( FastWalkEventArgs e ) { if ( FastWalk != null ) FastWalk( e ); } public static void InvokeDeleteRequest( DeleteRequestEventArgs e ) { if ( DeleteRequest != null ) DeleteRequest( e ); } public static void InvokeGameLogin( GameLoginEventArgs e ) { if ( GameLogin != null ) GameLogin( e ); } public static void InvokeCommand( CommandEventArgs e ) { if ( Command != null ) Command( e ); } public static void InvokeAggressiveAction( AggressiveActionEventArgs e ) { if ( AggressiveAction != null ) AggressiveAction( e ); } public static void InvokeProfileRequest( ProfileRequestEventArgs e ) { if ( ProfileRequest != null ) ProfileRequest( e ); } public static void InvokeChangeProfileRequest( ChangeProfileRequestEventArgs e ) { if ( ChangeProfileRequest != null ) ChangeProfileRequest( e ); } public static void InvokePaperdollRequest( PaperdollRequestEventArgs e ) { if ( PaperdollRequest != null ) PaperdollRequest( e ); } public static void InvokeAccountLogin( AccountLoginEventArgs e ) { if ( AccountLogin != null ) AccountLogin( e ); } public static void InvokeChatRequest( ChatRequestEventArgs e ) { if ( ChatRequest != null ) ChatRequest( e ); } public static void InvokePlayerDeath( PlayerDeathEventArgs e ) { if ( PlayerDeath != null ) PlayerDeath( e ); } public static void InvokeRenameRequest( RenameRequestEventArgs e ) { if ( RenameRequest != null ) RenameRequest( e ); } public static void InvokeLogout( LogoutEventArgs e ) { if ( Logout != null ) Logout( e ); } public static void InvokeSocketConnect( SocketConnectEventArgs e ) { if ( SocketConnect != null ) SocketConnect( e ); } public static void InvokeConnected( ConnectedEventArgs e ) { if ( Connected != null ) Connected( e ); } public static void InvokeDisconnected( DisconnectedEventArgs e ) { if ( Disconnected != null ) Disconnected( e ); } public static void InvokeAnimateRequest( AnimateRequestEventArgs e ) { if ( AnimateRequest != null ) AnimateRequest( e ); } public static void InvokeCastSpellRequest( CastSpellRequestEventArgs e ) { if ( CastSpellRequest != null ) CastSpellRequest( e ); } public static void InvokeOpenSpellbookRequest( OpenSpellbookRequestEventArgs e ) { if ( OpenSpellbookRequest != null ) OpenSpellbookRequest( e ); } public static void InvokeDisarmRequest( DisarmRequestEventArgs e ) { if ( DisarmRequest != null ) DisarmRequest( e ); } public static void InvokeStunRequest( StunRequestEventArgs e ) { if ( StunRequest != null ) StunRequest( e ); } public static void InvokeHelpRequest( HelpRequestEventArgs e ) { if ( HelpRequest != null ) HelpRequest( e ); } public static void InvokeShutdown( ShutdownEventArgs e ) { if ( Shutdown != null ) Shutdown( e ); } public static void InvokeCrashed( CrashedEventArgs e ) { if ( Crashed != null ) Crashed( e ); } public static void InvokeHungerChanged( HungerChangedEventArgs e ) { if ( HungerChanged != null ) HungerChanged( e ); } public static void InvokeMovement( MovementEventArgs e ) { if ( Movement != null ) Movement( e ); } public static void InvokeServerList( ServerListEventArgs e ) { if ( ServerList != null ) ServerList( e ); } public static void InvokeLogin( LoginEventArgs e ) { if ( Login != null ) Login( e ); } public static void InvokeSpeech( SpeechEventArgs e ) { if ( Speech != null ) Speech( e ); } public static void InvokeCharacterCreated( CharacterCreatedEventArgs e ) { if ( CharacterCreated != null ) CharacterCreated( e ); } public static void InvokeOpenDoorMacroUsed( OpenDoorMacroEventArgs e ) { if ( OpenDoorMacroUsed != null ) OpenDoorMacroUsed( e ); } public static void InvokeWorldLoad() { if ( WorldLoad != null ) WorldLoad(); } public static void InvokeWorldSave( WorldSaveEventArgs e ) { if ( WorldSave != null ) WorldSave( e ); } public static void Reset() { CharacterCreated = null; OpenDoorMacroUsed = null; Speech = null; Login = null; ServerList = null; Movement = null; HungerChanged = null; Crashed = null; Shutdown = null; HelpRequest = null; DisarmRequest = null; StunRequest = null; OpenSpellbookRequest = null; CastSpellRequest = null; AnimateRequest = null; Logout = null; SocketConnect = null; Connected = null; Disconnected = null; RenameRequest = null; PlayerDeath = null; ChatRequest = null; AccountLogin = null; PaperdollRequest = null; ProfileRequest = null; ChangeProfileRequest = null; AggressiveAction = null; Command = null; GameLogin = null; DeleteRequest = null; WorldLoad = null; WorldSave = null; SetAbility = null; GuildGumpRequest = null; QuestGumpRequest = null; } } }