Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
111
Scripts/Services/Monster Stealing/Items/GemOfSalvation.cs
Normal file
111
Scripts/Services/Monster Stealing/Items/GemOfSalvation.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using Server.Gumps;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[TypeAlias("drNO.ThieveItems.GemOfSalvation")]
|
||||
public class GemOfSalvation : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1094939; } } // Gem of Salvation
|
||||
|
||||
[Constructable]
|
||||
public GemOfSalvation()
|
||||
: base(0x1F13)
|
||||
{
|
||||
Hue = 286;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
EventSink.PlayerDeath += new PlayerDeathEventHandler(PlayerDeath);
|
||||
}
|
||||
|
||||
public static void PlayerDeath(PlayerDeathEventArgs args)
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)args.Mobile;
|
||||
|
||||
if (pm != null && pm.Backpack != null)
|
||||
{
|
||||
GemOfSalvation gem = pm.Backpack.FindItemByType<GemOfSalvation>();
|
||||
|
||||
if (gem != null)
|
||||
{
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(2), () =>
|
||||
{
|
||||
if (DateTime.UtcNow < pm.NextGemOfSalvationUse)
|
||||
{
|
||||
TimeSpan left = pm.NextGemOfSalvationUse - DateTime.UtcNow;
|
||||
|
||||
if (left >= TimeSpan.FromMinutes(1.0))
|
||||
pm.SendLocalizedMessage(1095131, ((left.Hours * 60) + left.Minutes).ToString()); // Your spirit lacks cohesion. You must wait ~1_minutes~ minutes before invoking the power of a Gem of Salvation.
|
||||
else
|
||||
pm.SendLocalizedMessage(1095130, left.Seconds.ToString()); // Your spirit lacks cohesion. You must wait ~1_seconds~ seconds before invoking the power of a Gem of Salvation.
|
||||
}
|
||||
else
|
||||
{
|
||||
pm.CloseGump(typeof(ResurrectGump));
|
||||
pm.SendGump(new GemResurrectGump(pm, gem));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GemOfSalvation(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();
|
||||
}
|
||||
}
|
||||
|
||||
public class GemResurrectGump : ResurrectGump
|
||||
{
|
||||
private GemOfSalvation m_Gem;
|
||||
private PlayerMobile m_Mobile;
|
||||
|
||||
public GemResurrectGump(PlayerMobile pm, GemOfSalvation gem)
|
||||
: base(pm, ResurrectMessage.GemOfSalvation)
|
||||
{
|
||||
m_Gem = gem;
|
||||
m_Mobile = pm;
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState state, RelayInfo info)
|
||||
{
|
||||
m_Mobile.CloseGump(typeof(ResurrectGump));
|
||||
|
||||
if (info.ButtonID == 1 && !m_Gem.Deleted && m_Gem.IsChildOf(m_Mobile.Backpack))
|
||||
{
|
||||
if (m_Mobile.Map == null || !m_Mobile.Map.CanFit(m_Mobile.Location, 16, false, false))
|
||||
{
|
||||
m_Mobile.SendLocalizedMessage(502391); // Thou can not be resurrected there!
|
||||
return;
|
||||
}
|
||||
|
||||
m_Mobile.PlaySound(0x214);
|
||||
m_Mobile.Resurrect();
|
||||
|
||||
m_Mobile.SendLocalizedMessage(1095132); // The gem infuses you with its power and is destroyed in the process.
|
||||
|
||||
m_Gem.Delete();
|
||||
|
||||
m_Mobile.NextGemOfSalvationUse = DateTime.UtcNow + TimeSpan.FromHours(6);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user