v0.0.1-Alpha (#42)
This commit is contained in:
parent
d30f93c454
commit
a36796c2c1
3552 changed files with 2476 additions and 15223 deletions
278
Projects/Scripts/Items/Skill Items/Carpenter Items/Board.cs
Normal file
278
Projects/Scripts/Items/Skill Items/Carpenter Items/Board.cs
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1BD7, 0x1BDA)]
|
||||
public class Board : Item, ICommodity
|
||||
{
|
||||
private CraftResource m_Resource;
|
||||
|
||||
[Constructible]
|
||||
public Board(int amount = 1)
|
||||
: this(CraftResource.RegularWood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public Board(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public Board(CraftResource resource, int amount = 1)
|
||||
: base(0x1BD7)
|
||||
{
|
||||
Stackable = true;
|
||||
Amount = amount;
|
||||
|
||||
m_Resource = resource;
|
||||
Hue = CraftResources.GetHue(resource);
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get => m_Resource;
|
||||
set
|
||||
{
|
||||
m_Resource = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
int ICommodity.DescriptionNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Resource >= CraftResource.OakWood && m_Resource <= CraftResource.YewWood)
|
||||
return 1075052 + ((int)m_Resource - (int)CraftResource.OakWood);
|
||||
|
||||
switch (m_Resource)
|
||||
{
|
||||
case CraftResource.Bloodwood: return 1075055;
|
||||
case CraftResource.Frostwood: return 1075056;
|
||||
case CraftResource.Heartwood: return 1075062; //WHY Osi. Why?
|
||||
}
|
||||
|
||||
return LabelNumber;
|
||||
}
|
||||
}
|
||||
|
||||
bool ICommodity.IsDeedable => true;
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (!CraftResources.IsStandard(m_Resource))
|
||||
{
|
||||
int num = CraftResources.GetLocalizationNumber(m_Resource);
|
||||
|
||||
if (num > 0)
|
||||
list.Add(num);
|
||||
else
|
||||
list.Add(CraftResources.GetName(m_Resource));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(3);
|
||||
|
||||
writer.Write((int)m_Resource);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 3:
|
||||
case 2:
|
||||
{
|
||||
m_Resource = (CraftResource)reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (version == 0 && Weight == 0.1 || version <= 2 && Weight == 2)
|
||||
Weight = -1;
|
||||
|
||||
if (version <= 1)
|
||||
m_Resource = CraftResource.RegularWood;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class HeartwoodBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public HeartwoodBoard(int amount = 1)
|
||||
: base(CraftResource.Heartwood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public HeartwoodBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class BloodwoodBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public BloodwoodBoard(int amount = 1)
|
||||
: base(CraftResource.Bloodwood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public BloodwoodBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class FrostwoodBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public FrostwoodBoard(int amount = 1)
|
||||
: base(CraftResource.Frostwood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public FrostwoodBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class OakBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public OakBoard(int amount = 1)
|
||||
: base(CraftResource.OakWood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public OakBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class AshBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public AshBoard(int amount = 1)
|
||||
: base(CraftResource.AshWood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public AshBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class YewBoard : Board
|
||||
{
|
||||
[Constructible]
|
||||
public YewBoard(int amount = 1)
|
||||
: base(CraftResource.YewWood, amount)
|
||||
{
|
||||
}
|
||||
|
||||
public YewBoard(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,528 @@
|
|||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Multis;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1EBA, 0x1EBB)]
|
||||
public class TaxidermyKit : Item
|
||||
{
|
||||
private static TrophyInfo[] m_Table =
|
||||
{
|
||||
new TrophyInfo(typeof(BrownBear), 0x1E60, 1041093, 1041107),
|
||||
new TrophyInfo(typeof(GreatHart), 0x1E61, 1041095, 1041109),
|
||||
new TrophyInfo(typeof(BigFish), 0x1E62, 1041096, 1041110),
|
||||
new TrophyInfo(typeof(Gorilla), 0x1E63, 1041091, 1041105),
|
||||
new TrophyInfo(typeof(Orc), 0x1E64, 1041090, 1041104),
|
||||
new TrophyInfo(typeof(PolarBear), 0x1E65, 1041094, 1041108),
|
||||
new TrophyInfo(typeof(Troll), 0x1E66, 1041092, 1041106)
|
||||
};
|
||||
|
||||
[Constructible]
|
||||
public TaxidermyKit() : base(0x1EBA)
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public TaxidermyKit(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041279; // a taxidermy kit
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
else if (from.Skills.Carpentry.Base < 90.0)
|
||||
{
|
||||
from.SendLocalizedMessage(1042594); // You do not understand how to use this.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042595); // Target the corpse to make a trophy out of.
|
||||
from.Target = new CorpseTarget(this);
|
||||
}
|
||||
}
|
||||
|
||||
public class TrophyInfo
|
||||
{
|
||||
public TrophyInfo(Type type, int id, int deedNum, int addonNum)
|
||||
{
|
||||
CreatureType = type;
|
||||
NorthID = id;
|
||||
DeedNumber = deedNum;
|
||||
AddonNumber = addonNum;
|
||||
}
|
||||
|
||||
public Type CreatureType{ get; }
|
||||
|
||||
public int NorthID{ get; }
|
||||
|
||||
public int DeedNumber{ get; }
|
||||
|
||||
public int AddonNumber{ get; }
|
||||
}
|
||||
|
||||
|
||||
private class CorpseTarget : Target
|
||||
{
|
||||
private TaxidermyKit m_Kit;
|
||||
|
||||
public CorpseTarget(TaxidermyKit kit) : base(3, false, TargetFlags.None)
|
||||
{
|
||||
m_Kit = kit;
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Kit.Deleted)
|
||||
return;
|
||||
|
||||
Corpse corpse = targeted as Corpse;
|
||||
|
||||
if (!(corpse != null || targeted is BigFish))
|
||||
{
|
||||
from.SendLocalizedMessage(1042600); // That is not a corpse!
|
||||
}
|
||||
else if (corpse?.VisitedByTaxidermist == true)
|
||||
{
|
||||
from.SendLocalizedMessage(1042596); // That corpse seems to have been visited by a taxidermist already.
|
||||
}
|
||||
else if (!m_Kit.IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
else if (from.Skills.Carpentry.Base < 90.0)
|
||||
{
|
||||
from.SendLocalizedMessage(1042603); // You would not understand how to use the kit.
|
||||
}
|
||||
else
|
||||
{
|
||||
object obj = corpse?.Owner ?? targeted;
|
||||
|
||||
foreach (TrophyInfo t in m_Table)
|
||||
{
|
||||
if (t.CreatureType != obj.GetType())
|
||||
continue;
|
||||
|
||||
Container pack = from.Backpack;
|
||||
|
||||
if (pack?.ConsumeTotal(typeof(Board), 10) == true)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1042278); // You review the corpse and find it worthy of a trophy.
|
||||
from.SendLocalizedMessage(1042602); // You use your kit up making the trophy.
|
||||
|
||||
Mobile hunter = null;
|
||||
int weight = 0;
|
||||
|
||||
if (targeted is BigFish fish)
|
||||
{
|
||||
hunter = fish.Fisher;
|
||||
weight = (int)fish.Weight;
|
||||
|
||||
fish.Consume();
|
||||
}
|
||||
|
||||
|
||||
from.AddToBackpack(new TrophyDeed(t, hunter, weight));
|
||||
|
||||
if (corpse != null)
|
||||
corpse.VisitedByTaxidermist = true;
|
||||
|
||||
m_Kit.Delete();
|
||||
return;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1042598); // You do not have enough boards.
|
||||
return;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1042599); // That does not look like something you want hanging on a wall.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class TrophyAddon : Item, IAddon
|
||||
{
|
||||
private int m_AddonNumber;
|
||||
private int m_AnimalWeight;
|
||||
|
||||
private Mobile m_Hunter;
|
||||
|
||||
public TrophyAddon(Mobile from, int itemID, int westID, int northID, int deedNumber,
|
||||
int addonNumber, Mobile hunter = null, int animalWeight = 0) : base(itemID)
|
||||
{
|
||||
WestID = westID;
|
||||
NorthID = northID;
|
||||
DeedNumber = deedNumber;
|
||||
m_AddonNumber = addonNumber;
|
||||
|
||||
m_Hunter = hunter;
|
||||
m_AnimalWeight = animalWeight;
|
||||
|
||||
Movable = false;
|
||||
|
||||
MoveToWorld(from.Location, from.Map);
|
||||
}
|
||||
|
||||
public TrophyAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int WestID{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int NorthID{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int DeedNumber{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int AddonNumber
|
||||
{
|
||||
get => m_AddonNumber;
|
||||
set
|
||||
{
|
||||
m_AddonNumber = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Hunter
|
||||
{
|
||||
get => m_Hunter;
|
||||
set
|
||||
{
|
||||
m_Hunter = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int AnimalWeight
|
||||
{
|
||||
get => m_AnimalWeight;
|
||||
set
|
||||
{
|
||||
m_AnimalWeight = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int LabelNumber => m_AddonNumber;
|
||||
|
||||
public bool CouldFit(IPoint3D p, Map map)
|
||||
{
|
||||
if (!map.CanFit(p.X, p.Y, p.Z, ItemData.Height))
|
||||
return false;
|
||||
|
||||
if (ItemID == NorthID)
|
||||
return BaseAddon.IsWall(p.X, p.Y - 1, p.Z, map); // North wall
|
||||
return BaseAddon.IsWall(p.X - 1, p.Y, p.Z, map); // West wall
|
||||
}
|
||||
|
||||
public Item Deed => new TrophyDeed(WestID, NorthID, DeedNumber, m_AddonNumber, m_Hunter, m_AnimalWeight);
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (m_AnimalWeight >= 20)
|
||||
{
|
||||
if (m_Hunter != null)
|
||||
list.Add(1070857, m_Hunter.Name); // Caught by ~1_fisherman~
|
||||
|
||||
list.Add(1070858, m_AnimalWeight.ToString()); // ~1_weight~ stones
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(m_Hunter);
|
||||
writer.Write(m_AnimalWeight);
|
||||
|
||||
writer.Write(WestID);
|
||||
writer.Write(NorthID);
|
||||
writer.Write(DeedNumber);
|
||||
writer.Write(m_AddonNumber);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_Hunter = reader.ReadMobile();
|
||||
m_AnimalWeight = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
WestID = reader.ReadInt();
|
||||
NorthID = reader.ReadInt();
|
||||
DeedNumber = reader.ReadInt();
|
||||
m_AddonNumber = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.Zero, FixMovingCrate);
|
||||
}
|
||||
|
||||
private void FixMovingCrate()
|
||||
{
|
||||
if (Deleted)
|
||||
return;
|
||||
|
||||
if (Movable || IsLockedDown)
|
||||
{
|
||||
Item deed = Deed;
|
||||
|
||||
if (Parent is Item item)
|
||||
{
|
||||
item.AddItem(deed);
|
||||
deed.Location = Location;
|
||||
}
|
||||
else
|
||||
{
|
||||
deed.MoveToWorld(Location, Map);
|
||||
}
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house?.IsCoOwner(from) == true)
|
||||
{
|
||||
if (from.InRange(GetWorldLocation(), 1))
|
||||
{
|
||||
from.AddToBackpack(Deed);
|
||||
Delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500295); // You are too far away to do that.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x14F0, 0x14EF)]
|
||||
public class TrophyDeed : Item
|
||||
{
|
||||
private int m_AnimalWeight;
|
||||
private int m_DeedNumber;
|
||||
|
||||
private Mobile m_Hunter;
|
||||
|
||||
public TrophyDeed(int westID, int northID, int deedNumber, int addonNumber,
|
||||
Mobile hunter = null, int animalWeight = 0) : base(0x14F0)
|
||||
{
|
||||
WestID = westID;
|
||||
NorthID = northID;
|
||||
m_DeedNumber = deedNumber;
|
||||
AddonNumber = addonNumber;
|
||||
m_Hunter = hunter;
|
||||
m_AnimalWeight = animalWeight;
|
||||
}
|
||||
|
||||
public TrophyDeed(TaxidermyKit.TrophyInfo info, Mobile hunter, int animalWeight)
|
||||
: this(info.NorthID + 7, info.NorthID, info.DeedNumber, info.AddonNumber, hunter, animalWeight)
|
||||
{
|
||||
}
|
||||
|
||||
public TrophyDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int WestID{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int NorthID{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int DeedNumber
|
||||
{
|
||||
get => m_DeedNumber;
|
||||
set
|
||||
{
|
||||
m_DeedNumber = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int AddonNumber{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Hunter
|
||||
{
|
||||
get => m_Hunter;
|
||||
set
|
||||
{
|
||||
m_Hunter = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int AnimalWeight
|
||||
{
|
||||
get => m_AnimalWeight;
|
||||
set
|
||||
{
|
||||
m_AnimalWeight = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int LabelNumber => m_DeedNumber;
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (m_AnimalWeight >= 20)
|
||||
{
|
||||
if (m_Hunter != null)
|
||||
list.Add(1070857, m_Hunter.Name); // Caught by ~1_fisherman~
|
||||
|
||||
list.Add(1070858, m_AnimalWeight.ToString()); // ~1_weight~ stones
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(m_Hunter);
|
||||
writer.Write(m_AnimalWeight);
|
||||
|
||||
writer.Write(WestID);
|
||||
writer.Write(NorthID);
|
||||
writer.Write(m_DeedNumber);
|
||||
writer.Write(AddonNumber);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_Hunter = reader.ReadMobile();
|
||||
m_AnimalWeight = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
WestID = reader.ReadInt();
|
||||
NorthID = reader.ReadInt();
|
||||
m_DeedNumber = reader.ReadInt();
|
||||
AddonNumber = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(from);
|
||||
|
||||
if (house?.IsCoOwner(from) == true)
|
||||
{
|
||||
bool northWall = BaseAddon.IsWall(from.X, from.Y - 1, from.Z, from.Map);
|
||||
bool westWall = BaseAddon.IsWall(from.X - 1, from.Y, from.Z, from.Map);
|
||||
|
||||
if (northWall && westWall)
|
||||
switch (from.Direction & Direction.Mask)
|
||||
{
|
||||
case Direction.North:
|
||||
case Direction.South:
|
||||
westWall = false;
|
||||
break;
|
||||
|
||||
case Direction.East:
|
||||
case Direction.West:
|
||||
northWall = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
from.SendMessage("Turn to face the wall on which to hang this trophy.");
|
||||
return;
|
||||
}
|
||||
|
||||
int itemID = 0;
|
||||
|
||||
if (northWall)
|
||||
itemID = NorthID;
|
||||
else if (westWall)
|
||||
itemID = WestID;
|
||||
else
|
||||
from.SendLocalizedMessage(1042626); // The trophy must be placed next to a wall.
|
||||
|
||||
if (itemID > 0)
|
||||
{
|
||||
house.Addons.Add(new TrophyAddon(from, itemID, WestID, NorthID, m_DeedNumber, AddonNumber, m_Hunter,
|
||||
m_AnimalWeight));
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(502092); // You must be in your house to do this.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue