Reorganizes Project (#41)
This commit is contained in:
parent
08bf44af9a
commit
3614a66aee
3499 changed files with 79 additions and 55 deletions
112
Projects/Scripts/Items/Special/Holiday/IcyPatch.cs
Normal file
112
Projects/Scripts/Items/Special/Holiday/IcyPatch.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Spells;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class IcyPatch : Item
|
||||
{
|
||||
/* On OSI, the iceypatch with itemid 0x122a is "rarer", so we will give it 1:10 chance of creating it that way */
|
||||
|
||||
[Constructible]
|
||||
public IcyPatch()
|
||||
: this(Utility.Random(10) == 0 ? 0x122A : 0x122F)
|
||||
{
|
||||
}
|
||||
|
||||
public IcyPatch(int itemid)
|
||||
: base(itemid)
|
||||
{
|
||||
Hue = 0x481;
|
||||
}
|
||||
|
||||
public IcyPatch(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1095159; //An Icy Patch
|
||||
public override double DefaultWeight => 5.0;
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (m is PlayerMobile && m.Alive && m.AccessLevel == AccessLevel.Player)
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
RunSequence(m, 1095160, false);
|
||||
break; //You steadily walk over the slippery surface.
|
||||
case 1:
|
||||
RunSequence(m, 1095161, true);
|
||||
break; //You skillfully manage to maintain your balance.
|
||||
default:
|
||||
RunSequence(m, 1095162, true);
|
||||
break; //You lose your footing and ungracefully splatter on the ground.
|
||||
}
|
||||
return base.OnMoveOver(m);
|
||||
}
|
||||
|
||||
public virtual void RunSequence(Mobile m, int message, bool freeze)
|
||||
{
|
||||
if (freeze)
|
||||
{
|
||||
m.Frozen = true;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(message == 1095162 ? 2.0 : 1.25), EndFall_Callback, m);
|
||||
}
|
||||
|
||||
m.SendLocalizedMessage(message);
|
||||
|
||||
int action = 0;
|
||||
int sound = 0;
|
||||
|
||||
if (message == 1095162)
|
||||
{
|
||||
if (m.Mounted)
|
||||
m.Mount.Rider = null;
|
||||
|
||||
Point3D p = new Point3D(Location);
|
||||
|
||||
if (SpellHelper.FindValidSpawnLocation(Map, ref p, true))
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0), () => m.MoveToWorld(p, m.Map));
|
||||
|
||||
action = 21 + Utility.Random(2);
|
||||
sound = m.Female ? 0x317 : 0x426;
|
||||
}
|
||||
else if (message == 1095161)
|
||||
{
|
||||
action = 17;
|
||||
sound = m.Female ? 0x319 : 0x429;
|
||||
}
|
||||
|
||||
if (action > 0)
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.4), from => BeginFall_Callback(from, action, sound), m);
|
||||
}
|
||||
|
||||
private static void BeginFall_Callback(Mobile m, int action, int sound)
|
||||
{
|
||||
if (!m.Mounted)
|
||||
m.Animate(action, 1, 1, false, true, 0);
|
||||
|
||||
m.PlaySound(sound);
|
||||
}
|
||||
|
||||
private static void EndFall_Callback(Mobile m)
|
||||
{
|
||||
m.Frozen = false;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue