#W# Initial Commit: Avatars Conquest

This commit is contained in:
WarrentyExpired 2026-07-04 10:35:30 -04:00
commit 5df497787a
7510 changed files with 416048 additions and 0 deletions

View file

@ -0,0 +1,115 @@
using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
namespace Server.Items
{
public class Guillotine : Item
{
[Constructable]
public Guillotine()
: base( 4656 )
{
Movable = false;
}
private DateTime m_NextUse;
public override void OnDoubleClick( Mobile from )
{
if ( !from.InRange( this.GetWorldLocation(), 2 ) || !from.InLOS( this ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that
}
else if ( Visible && ( ItemID == 4656 || ItemID == 4702 ) && DateTime.Now >= m_NextUse )
{
Point3D p = this.GetWorldLocation();
if ( 1 > Utility.Random( Math.Max( Math.Abs( from.X - p.X ), Math.Abs( from.Y - p.Y ) ) ) )
{
Effects.PlaySound( from.Location, from.Map, from.GetHurtSound() );
from.PublicOverheadMessage( MessageType.Regular, from.SpeechHue, true, "Ouch!" );
Spells.SpellHelper.Damage( TimeSpan.FromSeconds( 0.5 ), from, Utility.Dice( 2, 10, 5 ) );
}
Effects.PlaySound( this.GetWorldLocation(), this.Map, 0x387 );
Timer.DelayCall( TimeSpan.FromSeconds( 0.25 ), new TimerCallback( Down1 ) );
Timer.DelayCall( TimeSpan.FromSeconds( 0.50 ), new TimerCallback( Down2 ) );
Timer.DelayCall( TimeSpan.FromSeconds( 5.00 ), new TimerCallback( BackUp ) );
m_NextUse = DateTime.Now + TimeSpan.FromSeconds( 10.0 );
}
}
private void Down1()
{
ItemID = ( ItemID == 4656 ? 4678 : 4712 );
}
private void Down2()
{
ItemID = ( ItemID == 4678 ? 4679 : 4713 );
Point3D p = this.GetWorldLocation();
Map f = this.Map;
if ( f == null )
return;
new Blood( 4650 ).MoveToWorld( p, f );
for ( int i = 0; i < 4; ++i )
{
int x = p.X - 2 + Utility.Random( 5 );
int y = p.Y - 2 + Utility.Random( 5 );
int z = p.Z;
if ( !f.CanFit( x, y, z, 1, false, false, true ) )
{
z = f.GetAverageZ( x, y );
if ( !f.CanFit( x, y, z, 1, false, false, true ) )
continue;
}
new Blood().MoveToWorld( new Point3D( x, y, z ), f );
}
}
private void BackUp()
{
if ( ItemID == 4678 || ItemID == 4679 )
ItemID = 4656;
else if ( ItemID == 4712 || ItemID == 4713 )
ItemID = 4702;
}
public Guillotine( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
if ( ItemID == 4678 || ItemID == 4679 )
ItemID = 4656;
else if ( ItemID == 4712 || ItemID == 4713 )
ItemID = 4702;
}
}
}