Skip to content

Commit

Permalink
Merge pull request #116 from ServUO/master
Browse files Browse the repository at this point in the history
merge w/ master
  • Loading branch information
kevin-10 committed Aug 18, 2017
2 parents 1e9c153 + 7d69aee commit 65f6bb1
Show file tree
Hide file tree
Showing 54 changed files with 2,710 additions and 990 deletions.
2 changes: 1 addition & 1 deletion Scripts/Gumps/SetSecureLevelGump.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public SetSecureLevelGump(Mobile owner, ISecurable info, BaseHouse house)
this.AddImageTiled(10, 40, 200, 20, 5124); this.AddImageTiled(10, 40, 200, 20, 5124);
this.AddImageTiled(10, 70, 200, 80 + offset, 5124); this.AddImageTiled(10, 70, 200, 80 + offset, 5124);


this.AddAlphaRegion(10, 10, 200, 140); this.AddAlphaRegion(10, 10, 200, 140 + offset);


this.AddHtmlLocalized(10, 10, 200, 20, 1061276, 32767, false, false); // <CENTER>SET ACCESS</CENTER> this.AddHtmlLocalized(10, 10, 200, 20, 1061276, 32767, false, false); // <CENTER>SET ACCESS</CENTER>
this.AddHtmlLocalized(10, 40, 100, 20, 1041474, 32767, false, false); // Owner: this.AddHtmlLocalized(10, 40, 100, 20, 1041474, 32767, false, false); // Owner:
Expand Down
175 changes: 98 additions & 77 deletions Scripts/Items/Consumables/EngravingTools.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Server.Gumps; using Server.Gumps;
using Server.Multis; using Server.Multis;
using Server.Targeting; using Server.Targeting;
using Server.Mobiles;


namespace Server.Items namespace Server.Items
{ {
Expand All @@ -13,6 +14,7 @@ interface IEngravable
public class BaseEngravingTool : Item, IUsesRemaining public class BaseEngravingTool : Item, IUsesRemaining
{ {
private int m_UsesRemaining; private int m_UsesRemaining;

[Constructable] [Constructable]
public BaseEngravingTool(int itemID) public BaseEngravingTool(int itemID)
: this(itemID, 1) : this(itemID, 1)
Expand All @@ -23,37 +25,41 @@ public BaseEngravingTool(int itemID)
public BaseEngravingTool(int itemID, int uses) public BaseEngravingTool(int itemID, int uses)
: base(itemID) : base(itemID)
{ {
this.Weight = 1.0; Weight = 1.0;
this.Hue = 0x48D; Hue = 0x48D;


this.m_UsesRemaining = uses; m_UsesRemaining = uses;
} }


public BaseEngravingTool(Serial serial) public BaseEngravingTool(Serial serial)
: base(serial) : base(serial)
{ {
} }


public virtual Type[] Engraves public virtual Type[] Engraves { get { return null; } }
{ public virtual int GumpTitle { get { return 1072359; } }
get
{ public virtual int SuccessMessage { get { return 1072361; } } // // You engraved the object.
return null; public virtual int TargetMessage { get { return 1072357; } } // Select an object to engrave.
} public virtual int RemoveMessage { get { return 1072362; } } // You remove the engraving from the object.
} public virtual int OutOfChargesMessage { get { return 1042544; } } // This item is out of charges.
public virtual int NotAccessibleMessage { get { return 1072310; } } // The selected item is not accessible to engrave.
public virtual int CannotEngraveMessage { get { return 1072309; } } // The selected item cannot be engraved by this engraving tool.

[CommandProperty(AccessLevel.GameMaster)] [CommandProperty(AccessLevel.GameMaster)]
public int UsesRemaining public int UsesRemaining
{ {
get get
{ {
return this.m_UsesRemaining; return m_UsesRemaining;
} }
set set
{ {
this.m_UsesRemaining = value; m_UsesRemaining = value;
this.InvalidateProperties(); InvalidateProperties();
} }
} }

public virtual bool ShowUsesRemaining public virtual bool ShowUsesRemaining
{ {
get get
Expand All @@ -64,16 +70,17 @@ public virtual bool ShowUsesRemaining
{ {
} }
} }
public bool CheckItem(Item item)
public virtual bool CheckType(IEntity entity)
{ {
if (this.Engraves == null || item == null) if (Engraves == null || entity == null)
return false; return false;

Type type = entity.GetType();


Type type = item.GetType(); for (int i = 0; i < Engraves.Length; i ++)

for (int i = 0; i < this.Engraves.Length; i ++)
{ {
if (type == this.Engraves[i] || type.IsSubclassOf(this.Engraves[i])) if (type == Engraves[i] || type.IsSubclassOf(Engraves[i]))
return true; return true;
} }


Expand All @@ -90,21 +97,21 @@ public override void OnDoubleClick(Mobile from)
return; return;
} }


if (this.m_UsesRemaining > 0) if (m_UsesRemaining > 0)
{ {
from.SendLocalizedMessage(1072357); // Select an object to engrave. from.SendLocalizedMessage(TargetMessage);
from.Target = new InternalTarget(this); from.Target = new InternalTarget(this);
} }
else else
from.SendLocalizedMessage(1042544); // This item is out of charges. from.SendLocalizedMessage(OutOfChargesMessage);
} }


public override void GetProperties(ObjectPropertyList list) public override void GetProperties(ObjectPropertyList list)
{ {
base.GetProperties(list); base.GetProperties(list);


if (this.ShowUsesRemaining) if (ShowUsesRemaining)
list.Add(1060584, this.m_UsesRemaining.ToString()); // uses remaining: ~1_val~ list.Add(1060584, m_UsesRemaining.ToString()); // uses remaining: ~1_val~
} }


public override void Serialize(GenericWriter writer) public override void Serialize(GenericWriter writer)
Expand All @@ -113,7 +120,7 @@ public override void Serialize(GenericWriter writer)


writer.Write((int)0); // version writer.Write((int)0); // version


writer.Write((int)this.m_UsesRemaining); writer.Write((int)m_UsesRemaining);
} }


public override void Deserialize(GenericReader reader) public override void Deserialize(GenericReader reader)
Expand All @@ -122,55 +129,68 @@ public override void Deserialize(GenericReader reader)


int version = reader.ReadInt(); int version = reader.ReadInt();


this.m_UsesRemaining = reader.ReadInt(); m_UsesRemaining = reader.ReadInt();
} }


private class InternalTarget : Target private class InternalTarget : Target
{ {
private readonly BaseEngravingTool m_Tool; private readonly BaseEngravingTool m_Tool;

public InternalTarget(BaseEngravingTool tool) public InternalTarget(BaseEngravingTool tool)
: base(2, true, TargetFlags.None) : base(2, true, TargetFlags.None)
{ {
this.m_Tool = tool; m_Tool = tool;
} }


protected override void OnTarget(Mobile from, object targeted) protected override void OnTarget(Mobile from, object targeted)
{ {
if (this.m_Tool == null || this.m_Tool.Deleted) if (m_Tool == null || m_Tool.Deleted)
return; return;

if (targeted is Item) if (targeted is IEntity)
{ {
Item item = (Item)targeted; IEntity entity = (IEntity)targeted;

if (this.IsValid(item, from)) if (IsValid(entity, from))
{ {
if (item is IEngravable && this.m_Tool.CheckItem(item)) if (entity is IEngravable && m_Tool.CheckType(entity))
{ {
from.CloseGump(typeof(InternalGump)); from.CloseGump(typeof(InternalGump));
from.SendGump(new InternalGump(this.m_Tool, item)); from.SendGump(new InternalGump(m_Tool, entity));
} }
else else
from.SendLocalizedMessage(1072309); // The selected item cannot be engraved by this engraving tool. from.SendLocalizedMessage(m_Tool.CannotEngraveMessage);
} }
else else
from.SendLocalizedMessage(1072310); // The selected item is not accessible to engrave. from.SendLocalizedMessage(m_Tool.CannotEngraveMessage);
} }
else else
from.SendLocalizedMessage(1072309); // The selected item cannot be engraved by this engraving tool. from.SendLocalizedMessage(m_Tool.CannotEngraveMessage);
} }


protected override void OnTargetOutOfRange(Mobile from, object targeted) protected override void OnTargetOutOfRange(Mobile from, object targeted)
{ {
from.SendLocalizedMessage(1072310); // The selected item is not accessible to engrave. from.SendLocalizedMessage(m_Tool.NotAccessibleMessage);
} }


private bool IsValid(Item item, Mobile m) private bool IsValid(IEntity entity, Mobile m)
{ {
if (BaseHouse.CheckAccessible(m, item)) if (entity is Item)
return true; {
else if (item.Movable && !item.IsLockedDown && !item.IsSecure) Item item = entity as Item;
return true;
if (BaseHouse.CheckAccessible(m, (Item)item))
return true;
else if (item.Movable && !item.IsLockedDown && !item.IsSecure)
return true;
}
else if (entity is BaseCreature)
{
BaseCreature bc = entity as BaseCreature;

if (bc.Controlled && bc.ControlMaster == m)
return true;
}


return false; return false;
} }
Expand All @@ -179,34 +199,35 @@ private bool IsValid(Item item, Mobile m)
private class InternalGump : Gump private class InternalGump : Gump
{ {
private readonly BaseEngravingTool m_Tool; private readonly BaseEngravingTool m_Tool;
private readonly Item m_Target; private readonly IEntity m_Target;
public InternalGump(BaseEngravingTool tool, Item target)
public InternalGump(BaseEngravingTool tool, IEntity target)
: base(0, 0) : base(0, 0)
{ {
this.m_Tool = tool; m_Tool = tool;
this.m_Target = target; m_Target = target;


this.Closable = true; Closable = true;
this.Disposable = true; Disposable = true;
this.Dragable = true; Dragable = true;
this.Resizable = false; Resizable = false;


this.AddPage(0); AddPage(0);


this.AddBackground(50, 50, 400, 300, 0xA28); AddBackground(50, 50, 400, 300, 0xA28);
this.AddHtmlLocalized(50, 70, 400, 20, 1072359, 0x0, false, false); AddHtmlLocalized(50, 70, 400, 20, m_Tool.GumpTitle, 0x0, false, false);
this.AddHtmlLocalized(75, 95, 350, 145, 1072360, 0x0, true, true); AddHtmlLocalized(75, 95, 350, 145, 1072360, 0x0, true, true);


this.AddButton(125, 300, 0x81A, 0x81B, (int)Buttons.Okay, GumpButtonType.Reply, 0); AddButton(125, 300, 0x81A, 0x81B, (int)Buttons.Okay, GumpButtonType.Reply, 0);
this.AddButton(320, 300, 0x819, 0x818, (int)Buttons.Cancel, GumpButtonType.Reply, 0); AddButton(320, 300, 0x819, 0x818, (int)Buttons.Cancel, GumpButtonType.Reply, 0);


this.AddImageTiled(75, 245, 350, 40, 0xDB0); AddImageTiled(75, 245, 350, 40, 0xDB0);
this.AddImageTiled(76, 245, 350, 2, 0x23C5); AddImageTiled(76, 245, 350, 2, 0x23C5);
this.AddImageTiled(75, 245, 2, 40, 0x23C3); AddImageTiled(75, 245, 2, 40, 0x23C3);
this.AddImageTiled(75, 285, 350, 2, 0x23C5); AddImageTiled(75, 285, 350, 2, 0x23C5);
this.AddImageTiled(425, 245, 2, 42, 0x23C3); AddImageTiled(425, 245, 2, 42, 0x23C3);


this.AddTextEntry(78, 245, 345, 40, 0x0, (int)Buttons.Text, ""); AddTextEntry(78, 245, 345, 40, 0x0, (int)Buttons.Text, "");
} }


private enum Buttons private enum Buttons
Expand All @@ -215,9 +236,10 @@ private enum Buttons
Okay, Okay,
Text Text
} }

public override void OnResponse(Server.Network.NetState state, RelayInfo info) public override void OnResponse(Server.Network.NetState state, RelayInfo info)
{ {
if (this.m_Tool == null || this.m_Tool.Deleted || this.m_Target == null || this.m_Target.Deleted) if (m_Tool == null || m_Tool.Deleted || m_Target == null || m_Target.Deleted)
return; return;


if (info.ButtonID == (int)Buttons.Okay) if (info.ButtonID == (int)Buttons.Okay)
Expand All @@ -228,24 +250,23 @@ public override void OnResponse(Server.Network.NetState state, RelayInfo info)
{ {
if (relay.Text == null || relay.Text.Equals("")) if (relay.Text == null || relay.Text.Equals(""))
{ {
((IEngravable)this.m_Target).EngravedText = null; ((IEngravable)m_Target).EngravedText = null;
state.Mobile.SendLocalizedMessage(1072362); // You remove the engraving from the object. state.Mobile.SendLocalizedMessage(m_Tool.RemoveMessage);
} }
else else
{ {
if (relay.Text.Length > 40) if (relay.Text.Length > 40)
((IEngravable)this.m_Target).EngravedText = relay.Text.Substring(0, 40); ((IEngravable)m_Target).EngravedText = relay.Text.Substring(0, 40);
else else
((IEngravable)this.m_Target).EngravedText = relay.Text; ((IEngravable)m_Target).EngravedText = relay.Text;


state.Mobile.SendLocalizedMessage(1072361); // You engraved the object. state.Mobile.SendLocalizedMessage(m_Tool.SuccessMessage);
this.m_Target.InvalidateProperties();
this.m_Tool.UsesRemaining -= 1; m_Tool.UsesRemaining -= 1;
this.m_Tool.InvalidateProperties();

if (m_Tool.UsesRemaining < 1)
if (this.m_Tool.UsesRemaining < 1)
{ {
this.m_Tool.Delete(); m_Tool.Delete();
state.Mobile.SendLocalizedMessage(1044038); // You have worn out your tool! state.Mobile.SendLocalizedMessage(1044038); // You have worn out your tool!
} }
} }
Expand Down
Loading

0 comments on commit 65f6bb1

Please sign in to comment.