using System;
using System.Collections.Generic;
using Server;
using Server.Multis;
using Server.Targeting;
using Server.Mobiles;
using Server.Items;
namespace Server.Items
{
[Flipable( 0x14F0, 0x14EF )]
public abstract class ExodusAlterAddonDeed : Item
{
public abstract BaseAddon Addon{ get; }
[Constructable]
public ExodusAlterAddonDeed()
: base(0x14F0)
{
Weight = 1.0;
Name = "Exodus Summoning Altar";
LootType = LootType.Blessed;
//Hue = 0;
if ( !Core.AOS )
LootType = LootType.Newbied;
}
public ExodusAlterAddonDeed( 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();
if ( Weight == 0.0 )
Weight = 1.0;
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
from.Target = new InternalTarget( this );
else
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
private class InternalTarget : Target
{
private ExodusAlterAddonDeed m_Deed;
public InternalTarget( ExodusAlterAddonDeed deed ) : base( -1, true, TargetFlags.None )
{
m_Deed = deed;
CheckLOS = false;
}
protected override void OnTarget( Mobile from, object targeted )
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if ( p == null || map == null/* || m_Deed.Deleted */|| m_Deed == null )
{
from.SendLocalizedMessage( 500269 );
return;
}
//return; //debug return;
if ( m_Deed.IsChildOf( from.Backpack ) )
{
BaseAddon addon = m_Deed.Addon;
Server.Spells.SpellHelper.GetSurfaceTop( ref p );
BaseHouse house = null;
AddonFitResult res = addon.CouldFit( p, map, from, ref house );
if ( res == AddonFitResult.Valid )
//addon.MoveToWorld( new Point3D( p ), map );
from.SendLocalizedMessage( 500269 ); // You cannot build that there.
else if ( res == AddonFitResult.Blocked )
from.SendLocalizedMessage( 500269 ); // You cannot build that there.
else if( res == AddonFitResult.NotInHouse )
{
PlayerMobile mobile = (PlayerMobile) from;
if (mobile == null)
return;
//START RITUAL PLACEMENT SCRIPT
if (mobile.Map == Map.Trammel || mobile.Map == Map.Felucca)
{
if (mobile.Location.X >= 1853 && mobile.Location.X <= 1862 && mobile.Location.Y >= 870 && mobile.Location.Y <= 878)
{
//location compassion
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 4209 && mobile.Location.X <= 4215 && mobile.Location.Y >= 561 && mobile.Location.Y <= 566)
{
//location honesty
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 1729 && mobile.Location.X <= 1732 && mobile.Location.Y >= 3526 && mobile.Location.Y <= 3529)
{
//location honor
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 4273 && mobile.Location.X <= 4276 && mobile.Location.Y >= 3693 && mobile.Location.Y <= 3700)
{
//location humility
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 1297 && mobile.Location.X <= 1304 && mobile.Location.Y >= 629 && mobile.Location.Y <= 636)
{
//location justice
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 3352 && mobile.Location.X <= 3357 && mobile.Location.Y >= 287 && mobile.Location.Y <= 295)
{
//location sacrifice
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 3352 && mobile.Location.X <= 3357 && mobile.Location.Y >= 287 && mobile.Location.Y <= 295)
{
//location sacrifice
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 1593 && mobile.Location.X <= 1607 && mobile.Location.Y >= 2488 && mobile.Location.Y <= 2493)
{
//location spirituality
addon.MoveToWorld( new Point3D( p ), map );
return;
}
else if (mobile.Location.X >= 2486 && mobile.Location.X <= 2495 && mobile.Location.Y >= 3926 && mobile.Location.Y <= 3936)
{
//location valor
addon.MoveToWorld( new Point3D( p ), map );
return;
}
}
mobile.SendMessage("That is not the right place to permorm thy ritual.");
//return;
}
/*from.SendLocalizedMessage( 500274 ); // You can only place this in a house that you own!
else if ( res == AddonFitResult.DoorsNotClosed )
from.SendMessage( "You must close all house doors before placing this." );
else if ( res == AddonFitResult.DoorTooClose )
from.SendLocalizedMessage( 500271 ); // You cannot build near the door.
else if ( res == AddonFitResult.NoWall )
from.SendLocalizedMessage( 500268 ); // This object needs to be mounted on something.*/
if ( res == AddonFitResult.Valid )
{
m_Deed.Delete();
house.Addons.Add( addon );
}
if ( res == AddonFitResult.NotInHouse )
{
m_Deed.Delete();
}
else
{
addon.Delete();
}
}
else
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
}
}
}
}