275 lines
7.6 KiB
C#
275 lines
7.6 KiB
C#
using System;
|
|
using Server;
|
|
using System.Collections.Generic;
|
|
using Server.Engines.Quests;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class ShippingCrate : SmallCrate
|
|
{
|
|
public ProfessionalFisherQuest Quest { get; set; }
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public bool QuestComplete
|
|
{
|
|
get
|
|
{
|
|
if (Quest == null)
|
|
return false;
|
|
|
|
return Quest.Completed;
|
|
}
|
|
}
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public Mobile TurnInMonger
|
|
{
|
|
get
|
|
{
|
|
if (Quest == null)
|
|
return null;
|
|
|
|
return Quest.TurnIn;
|
|
}
|
|
}
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public Mobile Quester
|
|
{
|
|
get
|
|
{
|
|
if (Quest == null || !(Quest.Quester is Mobile))
|
|
return null;
|
|
|
|
return Quest.Quester as Mobile;
|
|
}
|
|
}
|
|
|
|
public override int DefaultMaxWeight { get { return 1200; } }
|
|
public override bool DisplaysContent { get { return false; } }
|
|
|
|
public ShippingCrate(ProfessionalFisherQuest quest)
|
|
{
|
|
Weight = 1.0;
|
|
Quest = quest;
|
|
}
|
|
|
|
public override void GetProperties(ObjectPropertyList list)
|
|
{
|
|
base.GetProperties(list);
|
|
|
|
if (Quest == null)
|
|
return;
|
|
|
|
int loc = 1116453; //~1_val~: ~2_val~/~3_val~
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj == null)
|
|
Delete();
|
|
|
|
foreach (KeyValuePair<Type, int[]> kvp in obj.Line)
|
|
{
|
|
int idx = FishQuestHelper.GetIndexForType(kvp.Key);
|
|
list.Add(loc, "#{0}\t{1}\t{2}", FishQuestHelper.Labels[idx], kvp.Value[0].ToString(), kvp.Value[1].ToString());
|
|
loc++;
|
|
}
|
|
|
|
object delivery = GetDeliveryInfo();
|
|
|
|
if (delivery is string)
|
|
list.Add((string)delivery);
|
|
else
|
|
list.Add((int)delivery);
|
|
|
|
list.Add(1076255); //NO-TRADE
|
|
|
|
list.Add(1072241, "{0}\t{1}\t{2}\t{3}", TotalItems, MaxItems, TotalWeight, MaxWeight);
|
|
}
|
|
|
|
public override bool OnDragLift(Mobile from)
|
|
{
|
|
if (Quest == null)
|
|
return base.OnDragLift(from);
|
|
|
|
if (Quest.Owner != from)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return base.OnDragLift(from);
|
|
}
|
|
|
|
public override bool AllowSecureTrade(Mobile from, Mobile to, Mobile newOwner, bool accepted)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override bool OnDroppedToMobile(Mobile from, Mobile target)
|
|
{
|
|
from.SendLocalizedMessage(1076256); // That item cannot be traded.
|
|
|
|
return false;
|
|
}
|
|
|
|
public override bool DropToItem(Mobile from, Item target, Point3D p)
|
|
{
|
|
from.SendLocalizedMessage(1076254); // That item cannot be dropped.
|
|
|
|
return false;
|
|
}
|
|
|
|
public override bool OnDroppedToWorld(Mobile from, Point3D p)
|
|
{
|
|
from.SendLocalizedMessage(1076254); // That item cannot be dropped.
|
|
|
|
return false;
|
|
}
|
|
|
|
public override bool OnStackAttempt(Mobile from, Item stack, Item dropped)
|
|
{
|
|
if (dropped is BaseHighseasFish && Quest != null)
|
|
{
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj != null)
|
|
{
|
|
if (obj.CheckLift(dropped) && base.OnStackAttempt(from, stack, dropped))
|
|
{
|
|
obj.Update(dropped);
|
|
InvalidateProperties();
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
from.SendLocalizedMessage(1116461); // This is not needed to fill the order.
|
|
return false;
|
|
}
|
|
|
|
public override bool OnDragDrop(Mobile from, Item dropped)
|
|
{
|
|
if (dropped is BaseHighseasFish && Quest != null)
|
|
{
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj != null && obj.CheckLift(dropped) && base.OnDragDrop(from, dropped))
|
|
{
|
|
obj.Update(dropped);
|
|
InvalidateProperties();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
from.SendLocalizedMessage(1116461); // This is not needed to fill the order.
|
|
return false;
|
|
}
|
|
|
|
public override bool OnDragDropInto(Mobile from, Item dropped, Point3D p)
|
|
{
|
|
if (dropped is BaseHighseasFish && Quest != null)
|
|
{
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj != null && obj.CheckLift(dropped) && base.OnDragDropInto(from, dropped, p))
|
|
{
|
|
obj.Update(dropped);
|
|
InvalidateProperties();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
from.SendLocalizedMessage(1116461); // This is not needed to fill the order.
|
|
return false;
|
|
}
|
|
|
|
public override bool CheckLift(Mobile from, Item item, ref LRReason reject)
|
|
{
|
|
if (Quest == null)
|
|
return base.CheckLift(from, item, ref reject);
|
|
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj != null && obj.CheckLift(item))
|
|
{
|
|
reject = LRReason.CannotLift;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool CheckCarve(Item item)
|
|
{
|
|
if (Quest == null)
|
|
return true;
|
|
|
|
FishQuestObjective obj = Quest.GetObjective();
|
|
|
|
if (obj.CheckLift(item))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
public object GetDeliveryInfo()
|
|
{
|
|
if (Quest != null && Quest is ProfessionalFisherQuest && Quest.TurnIn != null)
|
|
{
|
|
Region reg = Quest.TurnIn.Region;
|
|
|
|
if (reg == null || reg.Name == null)
|
|
return "Unknown Delivery";
|
|
|
|
if (reg.Name == "Sea Market")
|
|
return 1116496;
|
|
if (reg.Name == "Britain")
|
|
return 1116497;
|
|
if (reg.Name == "Trinsic")
|
|
return 1116498;
|
|
if (reg.Name == "Moonglow")
|
|
return 1116499;
|
|
if (reg.Name == "Skara Brae")
|
|
return 1116500;
|
|
if (reg.Name == "Vesper")
|
|
return 1116501;
|
|
if (reg.Name == "Jhelom")
|
|
return 1116502;
|
|
if (reg.Name == "Papua")
|
|
return 1116503;
|
|
}
|
|
return "Unknown Delivery";
|
|
}
|
|
|
|
public void AddQuest(ProfessionalFisherQuest quest)
|
|
{
|
|
Quest = quest;
|
|
}
|
|
|
|
public override void Delete()
|
|
{
|
|
if (Quest != null && !Quest.Completed)
|
|
Quest.OnResign(false);
|
|
|
|
base.Delete();
|
|
}
|
|
|
|
public ShippingCrate(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
}
|