#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.

This commit is contained in:
WarrentyExpired 2026-08-06 11:06:05 -04:00
parent b51c58f514
commit 3045c83799
3512 changed files with 627673 additions and 0 deletions

View file

@ -0,0 +1,124 @@
using System;
using Server;
using Server.Targeting;
using Server.Items;
using Server.Engines.Harvest;
using Server.Mobiles;
using Server.Engines.Quests;
using Server.Engines.Quests.Hag;
namespace Server.Targets
{
public class BladedItemTarget : Target
{
private 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 ) )
((UnholyBone)targeted).Carve( 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 )
{
((ICarvable)targeted).Carve( 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;
}
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();
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();
}
}
}
}
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using Server;
using Server.Targeting;
using Server.Commands;
using Server.Commands.Generic;
namespace Server.Targets
{
public class MoveTarget : Target
{
private object m_Object;
public MoveTarget( object o ) : base( -1, true, TargetFlags.None )
{
m_Object = o;
}
protected override void OnTarget( Mobile from, object o )
{
IPoint3D p = o as IPoint3D;
if ( p != null )
{
if ( !BaseCommand.IsAccessible( from, m_Object ) )
{
from.SendMessage( "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( m_Object ), new Point3D( p ) );
if ( m_Object is Item )
{
Item item = (Item)m_Object;
if ( !item.Deleted )
item.MoveToWorld( new Point3D( p ), from.Map );
}
else if ( m_Object is Mobile )
{
Mobile m = (Mobile)m_Object;
if ( !m.Deleted )
m.MoveToWorld( new Point3D( p ), from.Map );
}
}
}
}
}

View file

@ -0,0 +1,27 @@
using System;
using Server;
using Server.Targeting;
using Server.Commands;
using Server.Commands.Generic;
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.SendMessage( "That is not accessible." );
return;
}
if ( o is Item || o is Mobile )
from.Target = new MoveTarget( o );
}
}
}