Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
166
Scripts/Targets/BladedItemTarget.cs
Normal file
166
Scripts/Targets/BladedItemTarget.cs
Normal file
@@ -0,0 +1,166 @@
|
||||
using System;
|
||||
using Server.Engines.Harvest;
|
||||
using Server.Engines.Quests;
|
||||
using Server.Engines.Quests.Hag;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Targets
|
||||
{
|
||||
public class BladedItemTarget : Target
|
||||
{
|
||||
private readonly Item m_Item;
|
||||
public BladedItemTarget(Item item)
|
||||
: base(2, false, TargetFlags.None)
|
||||
{
|
||||
m_Item = item;
|
||||
}
|
||||
|
||||
protected override void OnTargetOutOfRange(Mobile from, object targeted)
|
||||
{
|
||||
if (targeted is UnholyBone && from.InRange(((UnholyBone)targeted), 12))
|
||||
{
|
||||
if (((UnholyBone)targeted).Carve(from, m_Item) && Siege.SiegeShard)
|
||||
{
|
||||
Siege.CheckUsesRemaining(from, m_Item);
|
||||
}
|
||||
}
|
||||
else
|
||||
base.OnTargetOutOfRange(from, targeted);
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Item.Deleted)
|
||||
return;
|
||||
|
||||
if (targeted is ICarvable)
|
||||
{
|
||||
if (targeted is Item)
|
||||
{
|
||||
Item item = targeted as Item;
|
||||
|
||||
if (item.IsLockedDown || (item.RootParent is Container && (!item.Movable || !((Container)item.RootParent).LiftOverride)))
|
||||
{
|
||||
from.SendLocalizedMessage(500494); // You can't use a bladed item on that!
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (((ICarvable)targeted).Carve(from, m_Item) && Siege.SiegeShard)
|
||||
{
|
||||
Siege.CheckUsesRemaining(from, m_Item);
|
||||
}
|
||||
}
|
||||
else if (targeted is SwampDragon && ((SwampDragon)targeted).HasBarding)
|
||||
{
|
||||
SwampDragon pet = (SwampDragon)targeted;
|
||||
|
||||
if (!pet.Controlled || pet.ControlMaster != from)
|
||||
from.SendLocalizedMessage(1053022); // You cannot remove barding from a swamp dragon you do not own.
|
||||
else
|
||||
{
|
||||
pet.HasBarding = false;
|
||||
|
||||
if (Siege.SiegeShard && m_Item is IUsesRemaining)
|
||||
{
|
||||
Siege.CheckUsesRemaining(from, m_Item);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (targeted is Mobile)
|
||||
{
|
||||
((Mobile)targeted).PrivateOverheadMessage(MessageType.Regular, 0x3B2, 500450, from.NetState); // You can only skin dead creatures.
|
||||
return;
|
||||
}
|
||||
else if (targeted is StaticTarget)
|
||||
{
|
||||
int itemID = ((StaticTarget)targeted).ItemID;
|
||||
|
||||
if (itemID == 0xD15 || itemID == 0xD16) // red mushroom
|
||||
{
|
||||
PlayerMobile player = from as PlayerMobile;
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
QuestSystem qs = player.Quest;
|
||||
|
||||
if (qs is WitchApprenticeQuest)
|
||||
{
|
||||
FindIngredientObjective obj = qs.FindObjective(typeof(FindIngredientObjective)) as FindIngredientObjective;
|
||||
|
||||
if (obj != null && !obj.Completed && obj.Ingredient == Ingredient.RedMushrooms)
|
||||
{
|
||||
player.SendLocalizedMessage(1055036); // You slice a red cap mushroom from its stem.
|
||||
obj.Complete();
|
||||
|
||||
if (Siege.SiegeShard && m_Item is IUsesRemaining)
|
||||
{
|
||||
Siege.CheckUsesRemaining(from, m_Item);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HarvestSystem system = Lumberjacking.System;
|
||||
HarvestDefinition def = Lumberjacking.System.Definition;
|
||||
|
||||
int tileID;
|
||||
Map map;
|
||||
Point3D loc;
|
||||
|
||||
if (!system.GetHarvestDetails(from, m_Item, targeted, out tileID, out map, out loc))
|
||||
{
|
||||
from.SendLocalizedMessage(500494); // You can't use a bladed item on that!
|
||||
}
|
||||
else if (!def.Validate(tileID))
|
||||
{
|
||||
from.SendLocalizedMessage(500494); // You can't use a bladed item on that!
|
||||
}
|
||||
else
|
||||
{
|
||||
HarvestBank bank = def.GetBank(map, loc.X, loc.Y);
|
||||
|
||||
if (bank == null)
|
||||
return;
|
||||
|
||||
if (bank.Current < 5)
|
||||
{
|
||||
from.SendLocalizedMessage(500493); // There's not enough wood here to harvest.
|
||||
}
|
||||
else
|
||||
{
|
||||
bank.Consume(5, from);
|
||||
|
||||
Item item = new Kindling();
|
||||
|
||||
if (from.PlaceInBackpack(item))
|
||||
{
|
||||
from.SendLocalizedMessage(500491); // You put some kindling into your backpack.
|
||||
from.SendLocalizedMessage(500492); // An axe would probably get you more wood.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500490); // You can't place any kindling into your backpack!
|
||||
|
||||
item.Delete();
|
||||
}
|
||||
|
||||
if (Siege.SiegeShard && m_Item is IUsesRemaining)
|
||||
{
|
||||
Siege.CheckUsesRemaining(from, m_Item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Targets/MoveTarget.cs
Normal file
65
Scripts/Targets/MoveTarget.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using Server.Commands;
|
||||
using Server.Commands.Generic;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Targets
|
||||
{
|
||||
public class MoveTarget : Target
|
||||
{
|
||||
private readonly object m_Object;
|
||||
public MoveTarget(object o)
|
||||
: base(-1, true, TargetFlags.None)
|
||||
{
|
||||
this.m_Object = o;
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object o)
|
||||
{
|
||||
IPoint3D p = o as IPoint3D;
|
||||
|
||||
if (p != null)
|
||||
{
|
||||
if (!BaseCommand.IsAccessible(from, this.m_Object))
|
||||
{
|
||||
from.SendLocalizedMessage(500447); // That is not accessible.
|
||||
return;
|
||||
}
|
||||
|
||||
if (p is Item)
|
||||
p = ((Item)p).GetWorldTop();
|
||||
|
||||
CommandLogging.WriteLine(from, "{0} {1} moving {2} to {3}", from.AccessLevel, CommandLogging.Format(from), CommandLogging.Format(this.m_Object), new Point3D(p));
|
||||
|
||||
if (this.m_Object is Item)
|
||||
{
|
||||
Item item = (Item)this.m_Object;
|
||||
|
||||
if (!item.Deleted)
|
||||
{
|
||||
from.SendMessage("Item moved.");
|
||||
item.MoveToWorld(new Point3D(p), from.Map);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1154965); // Invalid item.
|
||||
}
|
||||
}
|
||||
else if (this.m_Object is Mobile)
|
||||
{
|
||||
Mobile m = (Mobile)this.m_Object;
|
||||
|
||||
if (!m.Deleted)
|
||||
{
|
||||
from.SendMessage("Mobile moved.");
|
||||
m.MoveToWorld(new Point3D(p), from.Map);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage("Invalid Mobile.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
Scripts/Targets/PickMoveTarget.cs
Normal file
38
Scripts/Targets/PickMoveTarget.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using Server.Commands.Generic;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Targets
|
||||
{
|
||||
public class PickMoveTarget : Target
|
||||
{
|
||||
public PickMoveTarget()
|
||||
: base(-1, false, TargetFlags.None)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object o)
|
||||
{
|
||||
if (!BaseCommand.IsAccessible(from, o))
|
||||
{
|
||||
from.SendLocalizedMessage(500447); // That is not accessible.
|
||||
return;
|
||||
}
|
||||
|
||||
if (o is Item)
|
||||
{
|
||||
from.SendMessage("Where do you wish to move the item?");
|
||||
from.Target = new MoveTarget(o);
|
||||
}
|
||||
else if (o is Mobile)
|
||||
{
|
||||
from.SendMessage("Where do you wish to move the mobile?");
|
||||
from.Target = new MoveTarget(o);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage("Invalid Object.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user