Files
abysmal-isle/Scripts/Services/PVP Arena System/ArenaExitBanner.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

87 lines
2.7 KiB
C#

using Server;
using System;
using Server.Items;
using Server.Gumps;
using Server.Mobiles;
namespace Server.Engines.ArenaSystem
{
public class ArenaExitBanner : Item
{
public override bool ForceShowProperties { get { return true; } }
public override int LabelNumber { get { return 1116111; } } // Arena Exit Banner
public override bool HandlesOnMovement { get { return true; } }
[CommandProperty(AccessLevel.GameMaster)]
public PVPArena Arena { get; set; }
[Constructable]
public ArenaExitBanner(int itemid, PVPArena arena)
: base(itemid)
{
Arena = arena;
Movable = false;
Weight = 0;
}
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (m is PlayerMobile && Arena != null && !m.Alive && m.InRange(Location, 2) && !m.HasGump(typeof(ResurrectGump)))
{
m.SendGump(new ResurrectGump(m, null, ResurrectMessage.Generic, false, 0.0, mob =>
{
Arena.RemovePlayer((PlayerMobile)mob);
if (mob.Corpse != null)
mob.Corpse.MoveToWorld(mob.Location, mob.Map);
}));
}
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(Location, 3) || !from.InLOS(this) || !from.CanSee(this))
{
from.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
else if (Arena != null)
{
var duel = Arena.CurrentDuel;
if (duel != null && duel.InPreFight)
{
from.SendLocalizedMessage(1115968); // You cannot exit until this duel has started.
return;
}
from.SendGump(new ConfirmCallbackGump((PlayerMobile)from, 1115969, 1115970, null, null, (m, state) =>
{
Arena.RemovePlayer((PlayerMobile)m);
if (duel != null && !duel.Complete)
{
duel.OnPlayerLeave((PlayerMobile)m);
}
}));
}
}
public ArenaExitBanner(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}