Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
220
Scripts/SubSystem/Event System/BaseEvent.cs
Normal file
220
Scripts/SubSystem/Event System/BaseEvent.cs
Normal file
@@ -0,0 +1,220 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.EventSystem
|
||||
{
|
||||
public abstract class BaseEvent
|
||||
{
|
||||
#region Private Variables
|
||||
|
||||
private bool m_Enabled;
|
||||
private bool m_Started;
|
||||
|
||||
//private Point3D m_StartingLocation;
|
||||
//private Map m_StartingMap;
|
||||
private EventTimer m_EventTimer;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Variables
|
||||
|
||||
public bool Enabled { get { return m_Enabled; } }
|
||||
public bool Started { get { return m_Started; } }
|
||||
|
||||
|
||||
/*[CommandProperty( AccessLevel.Administrator )]
|
||||
public Point3D StartingLocation { get { return m_StartingLocation; } set { m_StartingLocation = value; } }
|
||||
|
||||
[CommandProperty( AccessLevel.Administrator )]
|
||||
public Map StartingMap { get { return m_StartingMap; } set { m_StartingMap = value; } }*/
|
||||
|
||||
public EventTimer EventTimer { get { return m_EventTimer; } set { m_EventTimer = value; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Abstract Properties/Methods
|
||||
|
||||
public abstract EventType EventType { get; }
|
||||
public abstract string EventName { get; }
|
||||
public abstract TimeSpan TimerFrequency { get; }
|
||||
|
||||
public abstract Map StartingMap { get; }
|
||||
public abstract Point3D StartingLocation { get; }
|
||||
|
||||
protected abstract void OnEnable();
|
||||
protected abstract void OnDisable();
|
||||
public abstract void OnStart();
|
||||
protected abstract void OnStop();
|
||||
public abstract void OnTick( int ticks );
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public BaseEvent()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Virtual Methods
|
||||
|
||||
public virtual void Enable()
|
||||
{
|
||||
if ( !m_Enabled )
|
||||
{
|
||||
m_Enabled = true;
|
||||
|
||||
OnEnable();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Disable()
|
||||
{
|
||||
if ( m_Enabled )
|
||||
{
|
||||
m_Enabled = false;
|
||||
|
||||
OnDisable();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Start()
|
||||
{
|
||||
if ( !m_Started )
|
||||
{
|
||||
m_Started = true;
|
||||
|
||||
if ( m_EventTimer != null )
|
||||
m_EventTimer.Stop();
|
||||
|
||||
if ( TimerFrequency != TimeSpan.Zero )
|
||||
{
|
||||
m_EventTimer = new EventTimer( this );
|
||||
m_EventTimer.Start();
|
||||
}
|
||||
|
||||
OnStart();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Stop()
|
||||
{
|
||||
if ( m_Started )
|
||||
{
|
||||
m_Started = false;
|
||||
|
||||
if ( m_EventTimer != null )
|
||||
{
|
||||
m_EventTimer.Stop();
|
||||
m_EventTimer = null;
|
||||
}
|
||||
|
||||
OnStop();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void RefreshPlayer( Mobile from )
|
||||
{
|
||||
if ( from == null )
|
||||
return;
|
||||
|
||||
if ( !from.Alive )
|
||||
from.Resurrect();
|
||||
|
||||
Container pack = from.Backpack;
|
||||
Item holding = from.Holding;
|
||||
|
||||
if ( holding != null && pack != null )
|
||||
pack.DropItem( holding );
|
||||
|
||||
from.RevealingAction();
|
||||
|
||||
from.Poison = null;
|
||||
from.StatMods.Clear();
|
||||
|
||||
Factions.Faction.ClearSkillLoss( from );
|
||||
|
||||
from.Hits = from.HitsMax;
|
||||
from.Mana = from.ManaMax;
|
||||
from.Stam = from.StamMax;
|
||||
|
||||
Targeting.Target.Cancel( from );
|
||||
from.MagicDamageAbsorb = 0;
|
||||
from.MeleeDamageAbsorb = 0;
|
||||
Spells.Second.ProtectionSpell.Registry.Remove( from );
|
||||
DefensiveSpell.Nullify( from );
|
||||
from.Combatant = null;
|
||||
|
||||
from.Delta( MobileDelta.Noto ); //Update notoriety
|
||||
}
|
||||
|
||||
public virtual void Serialize( GenericWriter writer )
|
||||
{
|
||||
writer.Write( (int)0 ); //version
|
||||
}
|
||||
|
||||
public virtual void Deserialize( GenericReader reader )
|
||||
{
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Announce( int hue, string message, params object[] args )
|
||||
{
|
||||
World.Broadcast( hue, false, String.Format( "[{0}]: {1}", EventName, message ), args );
|
||||
}
|
||||
|
||||
public void LocalAnnounce( Point3D p, Map map, int range, int hue, string message, params object[] args )
|
||||
{
|
||||
IPooledEnumerable eable = map.GetMobilesInRange( p, range );
|
||||
|
||||
foreach (Mobile mobile in eable)
|
||||
{
|
||||
if (mobile != null && mobile is PlayerMobile)
|
||||
{
|
||||
mobile.SendMessage(hue, message, args);
|
||||
}
|
||||
}
|
||||
|
||||
eable.Free(); //get rid of our enumerable.
|
||||
}
|
||||
|
||||
public void SpawnGates()
|
||||
{
|
||||
Action<Point3D> spawnGate = delegate( Point3D loc ) { new EventGate( this ).MoveToWorld( loc, Map.Felucca ); };
|
||||
|
||||
MoongateLocations.Banks.ForEach( spawnGate );
|
||||
MoongateLocations.Shrines.ForEach( spawnGate );
|
||||
}
|
||||
|
||||
public void DespawnGates()
|
||||
{
|
||||
List<Item> gates = new List<Item>();
|
||||
|
||||
foreach ( Item i in World.Items.Values )
|
||||
{
|
||||
if ( i is EventGate )
|
||||
gates.Add( i );
|
||||
}
|
||||
|
||||
foreach ( Item gate in gates )
|
||||
gate.Delete();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user