fix: Codegens BulkOrderBooks (#1531)
This commit is contained in:
parent
1f0acddc46
commit
9b87049658
6 changed files with 372 additions and 347 deletions
|
|
@ -1,62 +1,52 @@
|
|||
namespace Server.Engines.BulkOrders
|
||||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Engines.BulkOrders;
|
||||
|
||||
[SerializationGenerator(2)]
|
||||
public partial class BOBFilter
|
||||
{
|
||||
public class BOBFilter
|
||||
[SerializableField(0)]
|
||||
private int _type;
|
||||
|
||||
[SerializableFieldSaveFlag(0)]
|
||||
private bool ShouldSerializeType() => _type != 0;
|
||||
|
||||
[SerializableField(1)]
|
||||
private int _quality;
|
||||
|
||||
[SerializableFieldSaveFlag(1)]
|
||||
private bool ShouldSerializeQuality() => _quality != 0;
|
||||
|
||||
[SerializableField(2)]
|
||||
private int _material;
|
||||
|
||||
[SerializableFieldSaveFlag(2)]
|
||||
private bool ShouldSerializeMaterial() => _material != 0;
|
||||
|
||||
[SerializableField(3)]
|
||||
private int _quantity;
|
||||
|
||||
[SerializableFieldSaveFlag(3)]
|
||||
private bool ShouldSerializeQuantity() => _quantity != 0;
|
||||
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
public BOBFilter()
|
||||
if (version == 1)
|
||||
{
|
||||
}
|
||||
|
||||
public BOBFilter(IGenericReader reader)
|
||||
{
|
||||
var version = reader.ReadEncodedInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Type = reader.ReadEncodedInt();
|
||||
Quality = reader.ReadEncodedInt();
|
||||
Material = reader.ReadEncodedInt();
|
||||
Quantity = reader.ReadEncodedInt();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDefault => Type == 0 && Quality == 0 && Material == 0 && Quantity == 0;
|
||||
|
||||
public int Type { get; set; }
|
||||
|
||||
public int Quality { get; set; }
|
||||
|
||||
public int Material { get; set; }
|
||||
|
||||
public int Quantity { get; set; }
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
Type = 0;
|
||||
Quality = 0;
|
||||
Material = 0;
|
||||
Quantity = 0;
|
||||
}
|
||||
|
||||
public void Serialize(IGenericWriter writer)
|
||||
{
|
||||
if (IsDefault)
|
||||
{
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteEncodedInt(1); // version
|
||||
|
||||
writer.WriteEncodedInt(Type);
|
||||
writer.WriteEncodedInt(Quality);
|
||||
writer.WriteEncodedInt(Material);
|
||||
writer.WriteEncodedInt(Quantity);
|
||||
}
|
||||
_type = reader.ReadEncodedInt();
|
||||
_quality = reader.ReadEncodedInt();
|
||||
_material = reader.ReadEncodedInt();
|
||||
_quantity = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDefault => _type == 0 && _quality == 0 && _material == 0 && _quantity == 0;
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
Type = 0;
|
||||
Quality = 0;
|
||||
Material = 0;
|
||||
Quantity = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ namespace Server.Engines.BulkOrders
|
|||
{
|
||||
if (pack.ConsumeTotal(typeof(Gold), price) || Banker.Withdraw(m_From, price))
|
||||
{
|
||||
m_Book.Entries.Remove(m_Entry);
|
||||
m_Book.RemoveEntry(m_Entry);
|
||||
m_Book.InvalidateProperties();
|
||||
pv.HoldGold += price;
|
||||
m_From.AddToBackpack(item);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using ModernUO.Serialization;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Items;
|
||||
|
|
@ -6,347 +7,294 @@ using Server.Mobiles;
|
|||
using Server.Multis;
|
||||
using Server.Prompts;
|
||||
|
||||
namespace Server.Engines.BulkOrders
|
||||
namespace Server.Engines.BulkOrders;
|
||||
|
||||
[SerializationGenerator(3, false)]
|
||||
public partial class BulkOrderBook : Item, ISecurable
|
||||
{
|
||||
public class BulkOrderBook : Item, ISecurable
|
||||
[SerializableField(0)]
|
||||
private int _itemCount;
|
||||
|
||||
[InvalidateProperties]
|
||||
[SerializableField(1)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private SecureLevel _level;
|
||||
|
||||
[InvalidateProperties]
|
||||
[SerializableField(2)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private string _bookName;
|
||||
|
||||
[SerializableField(3)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private BOBFilter _filter;
|
||||
|
||||
[SerializableField(4)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private List<IBOBEntry> _entries;
|
||||
|
||||
[Constructible]
|
||||
public BulkOrderBook() : base(0x2259)
|
||||
{
|
||||
private string m_BookName;
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
[Constructible]
|
||||
public BulkOrderBook() : base(0x2259)
|
||||
_entries = new List<IBOBEntry>();
|
||||
_filter = new BOBFilter();
|
||||
|
||||
_level = SecureLevel.CoOwners;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
Entries = new List<IBOBEntry>();
|
||||
Filter = new BOBFilter();
|
||||
|
||||
Level = SecureLevel.CoOwners;
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
|
||||
public BulkOrderBook(Serial serial) : base(serial)
|
||||
else if (Entries.Count == 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1062381); // The book is empty.
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string BookName
|
||||
else if (from is PlayerMobile mobile)
|
||||
{
|
||||
get => m_BookName;
|
||||
set
|
||||
mobile.SendGump(new BOBGump(mobile, this));
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClickSecureTrade(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else if (Entries.Count == 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1062381); // The book is empty.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendGump(new BOBGump((PlayerMobile)from, this));
|
||||
|
||||
var trade = GetSecureTradeCont()?.Trade;
|
||||
|
||||
if (trade?.From.Mobile == from)
|
||||
{
|
||||
m_BookName = value;
|
||||
InvalidateProperties();
|
||||
trade.To.Mobile.SendGump(new BOBGump((PlayerMobile)trade.To.Mobile, this));
|
||||
}
|
||||
else if (trade?.To.Mobile == from)
|
||||
{
|
||||
trade.From.Mobile.SendGump(new BOBGump((PlayerMobile)trade.From.Mobile, this));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<IBOBEntry> Entries { get; private set; }
|
||||
|
||||
public BOBFilter Filter { get; private set; }
|
||||
|
||||
public int ItemCount { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level { get; set; }
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (dropped is BaseBOD)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
else if (Entries.Count == 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1062381); // The book is empty.
|
||||
}
|
||||
else if (from is PlayerMobile mobile)
|
||||
{
|
||||
mobile.SendGump(new BOBGump(mobile, this));
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClickSecureTrade(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else if (Entries.Count == 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1062381); // The book is empty.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendGump(new BOBGump((PlayerMobile)from, this));
|
||||
|
||||
var trade = GetSecureTradeCont()?.Trade;
|
||||
|
||||
if (trade?.From.Mobile == from)
|
||||
{
|
||||
trade.To.Mobile.SendGump(new BOBGump((PlayerMobile)trade.To.Mobile, this));
|
||||
}
|
||||
else if (trade?.To.Mobile == from)
|
||||
{
|
||||
trade.From.Mobile.SendGump(new BOBGump((PlayerMobile)trade.From.Mobile, this));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (dropped is BaseBOD)
|
||||
{
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1062385); // You must have the book in your backpack to add deeds to it.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!from.Backpack.CheckHold(from, dropped, true, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Entries.Count < 500)
|
||||
{
|
||||
if (dropped is LargeBOD bod)
|
||||
{
|
||||
Entries.Add(new BOBLargeEntry(bod));
|
||||
}
|
||||
else
|
||||
{
|
||||
Entries.Add(new BOBSmallEntry((SmallBOD)dropped));
|
||||
}
|
||||
|
||||
InvalidateProperties();
|
||||
|
||||
if (Entries.Count / 5 > ItemCount)
|
||||
{
|
||||
ItemCount++;
|
||||
InvalidateItems();
|
||||
}
|
||||
|
||||
from.SendSound(0x42, GetWorldLocation());
|
||||
from.SendLocalizedMessage(1062386); // Deed added to book.
|
||||
|
||||
if (from is PlayerMobile pm)
|
||||
{
|
||||
pm.SendGump(new BOBGump(pm, this));
|
||||
}
|
||||
|
||||
dropped.Delete();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1062387); // The book is full of deeds.
|
||||
from.SendLocalizedMessage(1062385); // You must have the book in your backpack to add deeds to it.
|
||||
return false;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1062388); // That is not a bulk order deed.
|
||||
if (!from.Backpack.CheckHold(from, dropped, true, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Entries.Count < 500)
|
||||
{
|
||||
IBOBEntry entry = dropped is LargeBOD largeBod ? new BOBLargeEntry(largeBod) : new BOBSmallEntry((SmallBOD)dropped);
|
||||
AddEntry(entry);
|
||||
|
||||
if (Entries.Count / 5 > ItemCount)
|
||||
{
|
||||
ItemCount++;
|
||||
InvalidateItems();
|
||||
}
|
||||
|
||||
from.SendSound(0x42, GetWorldLocation());
|
||||
from.SendLocalizedMessage(1062386); // Deed added to book.
|
||||
|
||||
if (from is PlayerMobile pm)
|
||||
{
|
||||
pm.SendGump(new BOBGump(pm, this));
|
||||
}
|
||||
|
||||
dropped.Delete();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1062387); // The book is full of deeds.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetTotal(TotalType type)
|
||||
from.SendLocalizedMessage(1062388); // That is not a bulk order deed.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetTotal(TotalType type)
|
||||
{
|
||||
var total = base.GetTotal(type);
|
||||
|
||||
if (type == TotalType.Items)
|
||||
{
|
||||
var total = base.GetTotal(type);
|
||||
|
||||
if (type == TotalType.Items)
|
||||
{
|
||||
total = ItemCount;
|
||||
}
|
||||
|
||||
return total;
|
||||
total = ItemCount;
|
||||
}
|
||||
|
||||
public void InvalidateItems()
|
||||
return total;
|
||||
}
|
||||
|
||||
public void AddEntry(IBOBEntry entry)
|
||||
{
|
||||
this.Add(Entries, entry);
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public void RemoveEntry(IBOBEntry entry)
|
||||
{
|
||||
this.Remove(Entries, entry);
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public void InvalidateItems()
|
||||
{
|
||||
if (RootParent is Mobile m)
|
||||
{
|
||||
if (RootParent is Mobile m)
|
||||
{
|
||||
m.UpdateTotals();
|
||||
InvalidateContainers(Parent);
|
||||
}
|
||||
m.UpdateTotals();
|
||||
InvalidateContainers(Parent);
|
||||
}
|
||||
}
|
||||
|
||||
public void InvalidateContainers(IEntity parent)
|
||||
public void InvalidateContainers(IEntity parent)
|
||||
{
|
||||
if (parent is Container c)
|
||||
{
|
||||
if (parent is Container c)
|
||||
{
|
||||
c.InvalidateProperties();
|
||||
InvalidateContainers(c.Parent);
|
||||
}
|
||||
c.InvalidateProperties();
|
||||
InvalidateContainers(c.Parent);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
_itemCount = reader.ReadInt();
|
||||
_level = (SecureLevel)reader.ReadInt();
|
||||
|
||||
_bookName = reader.ReadString();
|
||||
|
||||
_filter = new BOBFilter();
|
||||
_filter.Deserialize(reader);
|
||||
|
||||
var count = reader.ReadEncodedInt();
|
||||
|
||||
Entries = new List<IBOBEntry>(count);
|
||||
|
||||
for (var i = 0; i < count; ++i)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
var v = reader.ReadEncodedInt();
|
||||
|
||||
writer.Write(2); // version
|
||||
|
||||
writer.Write(ItemCount);
|
||||
|
||||
writer.Write((int)Level);
|
||||
|
||||
writer.Write(m_BookName);
|
||||
|
||||
Filter.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(Entries.Count);
|
||||
|
||||
for (var i = 0; i < Entries.Count; ++i)
|
||||
switch (v)
|
||||
{
|
||||
object obj = Entries[i];
|
||||
|
||||
if (obj is BOBLargeEntry entry)
|
||||
{
|
||||
writer.WriteEncodedInt(0);
|
||||
entry.Serialize(writer);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteEncodedInt(1);
|
||||
((BOBSmallEntry)obj).Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
var version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 2:
|
||||
case 0:
|
||||
{
|
||||
ItemCount = reader.ReadInt();
|
||||
goto case 1;
|
||||
var largeEntry = new BOBLargeEntry(BOBEntries.NewBOBEntry);
|
||||
largeEntry.Deserialize(reader);
|
||||
AddEntry(largeEntry);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_BookName = reader.ReadString();
|
||||
|
||||
Filter = new BOBFilter(reader);
|
||||
|
||||
var count = reader.ReadEncodedInt();
|
||||
|
||||
Entries = new List<IBOBEntry>(count);
|
||||
|
||||
for (var i = 0; i < count; ++i)
|
||||
{
|
||||
var v = reader.ReadEncodedInt();
|
||||
|
||||
switch (v)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
var largeEntry = new BOBLargeEntry(BOBEntries.NewBOBEntry);
|
||||
largeEntry.Deserialize(reader);
|
||||
|
||||
Entries.Add(largeEntry);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
var smallEntry = new BOBSmallEntry(BOBEntries.NewBOBEntry);
|
||||
smallEntry.Deserialize(reader);
|
||||
Entries.Add(smallEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var smallEntry = new BOBSmallEntry(BOBEntries.NewBOBEntry);
|
||||
smallEntry.Deserialize(reader);
|
||||
AddEntry(smallEntry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties(IPropertyList list)
|
||||
public override void GetProperties(IPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1062344, Entries.Count); // Deeds in book: ~1_val~
|
||||
|
||||
if (!string.IsNullOrEmpty(_bookName))
|
||||
{
|
||||
base.GetProperties(list);
|
||||
list.Add(1062481, _bookName); // Book Name: ~1_val~
|
||||
}
|
||||
}
|
||||
|
||||
list.Add(1062344, Entries.Count); // Deeds in book: ~1_val~
|
||||
public override void OnSingleClick(Mobile from)
|
||||
{
|
||||
base.OnSingleClick(from);
|
||||
|
||||
if (!string.IsNullOrEmpty(m_BookName))
|
||||
{
|
||||
list.Add(1062481, m_BookName); // Book Name: ~1_val~
|
||||
}
|
||||
LabelTo(from, 1062344, Entries.Count.ToString()); // Deeds in book: ~1_val~
|
||||
|
||||
if (!string.IsNullOrEmpty(_bookName))
|
||||
{
|
||||
LabelTo(from, 1062481, _bookName);
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
if (from.CheckAlive() && IsChildOf(from.Backpack))
|
||||
{
|
||||
list.Add(new NameBookEntry(from, this));
|
||||
}
|
||||
|
||||
public override void OnSingleClick(Mobile from)
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
private class NameBookEntry : ContextMenuEntry
|
||||
{
|
||||
private readonly BulkOrderBook m_Book;
|
||||
private readonly Mobile m_From;
|
||||
|
||||
public NameBookEntry(Mobile from, BulkOrderBook book) : base(6216)
|
||||
{
|
||||
base.OnSingleClick(from);
|
||||
|
||||
LabelTo(from, 1062344, Entries.Count.ToString()); // Deeds in book: ~1_val~
|
||||
|
||||
if (!string.IsNullOrEmpty(m_BookName))
|
||||
{
|
||||
LabelTo(from, 1062481, m_BookName);
|
||||
}
|
||||
m_From = from;
|
||||
m_Book = book;
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
public override void OnClick()
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
if (from.CheckAlive() && IsChildOf(from.Backpack))
|
||||
{
|
||||
list.Add(new NameBookEntry(from, this));
|
||||
}
|
||||
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
private class NameBookEntry : ContextMenuEntry
|
||||
{
|
||||
private readonly BulkOrderBook m_Book;
|
||||
private readonly Mobile m_From;
|
||||
|
||||
public NameBookEntry(Mobile from, BulkOrderBook book) : base(6216)
|
||||
{
|
||||
m_From = from;
|
||||
m_Book = book;
|
||||
}
|
||||
|
||||
public override void OnClick()
|
||||
{
|
||||
if (m_From.CheckAlive() && m_Book.IsChildOf(m_From.Backpack))
|
||||
{
|
||||
m_From.Prompt = new NameBookPrompt(m_Book);
|
||||
m_From.SendLocalizedMessage(1062479); // Type in the new name of the book:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class NameBookPrompt : Prompt
|
||||
{
|
||||
private readonly BulkOrderBook m_Book;
|
||||
|
||||
public NameBookPrompt(BulkOrderBook book) => m_Book = book;
|
||||
|
||||
public override void OnResponse(Mobile from, string text)
|
||||
{
|
||||
if (text.Length > 40)
|
||||
{
|
||||
text = text[..40];
|
||||
}
|
||||
|
||||
if (from.CheckAlive() && m_Book.IsChildOf(from.Backpack))
|
||||
{
|
||||
m_Book.BookName = Utility.FixHtml(text.Trim());
|
||||
|
||||
from.SendLocalizedMessage(1062480); // The bulk order book's name has been changed.
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnCancel(Mobile from)
|
||||
if (m_From.CheckAlive() && m_Book.IsChildOf(m_From.Backpack))
|
||||
{
|
||||
m_From.Prompt = new NameBookPrompt(m_Book);
|
||||
m_From.SendLocalizedMessage(1062479); // Type in the new name of the book:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class NameBookPrompt : Prompt
|
||||
{
|
||||
private readonly BulkOrderBook m_Book;
|
||||
|
||||
public NameBookPrompt(BulkOrderBook book) => m_Book = book;
|
||||
|
||||
public override void OnResponse(Mobile from, string text)
|
||||
{
|
||||
if (text.Length > 40)
|
||||
{
|
||||
text = text[..40];
|
||||
}
|
||||
|
||||
if (from.CheckAlive() && m_Book.IsChildOf(from.Backpack))
|
||||
{
|
||||
m_Book.BookName = Utility.FixHtml(text.Trim());
|
||||
|
||||
from.SendLocalizedMessage(1062480); // The bulk order book's name has been changed.
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnCancel(Mobile from)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
42
Projects/UOContent/Migrations/Server.Engines.BulkOrders.BOBFilter.v2.json
generated
Normal file
42
Projects/UOContent/Migrations/Server.Engines.BulkOrders.BOBFilter.v2.json
generated
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"version": 2,
|
||||
"type": "Server.Engines.BulkOrders.BOBFilter",
|
||||
"properties": [
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Quality",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Material",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Quantity",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
44
Projects/UOContent/Migrations/Server.Engines.BulkOrders.BulkOrderBook.v3.json
generated
Normal file
44
Projects/UOContent/Migrations/Server.Engines.BulkOrders.BulkOrderBook.v3.json
generated
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"version": 3,
|
||||
"type": "Server.Engines.BulkOrders.BulkOrderBook",
|
||||
"properties": [
|
||||
{
|
||||
"name": "ItemCount",
|
||||
"type": "int",
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "Server.Multis.SecureLevel",
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "BookName",
|
||||
"type": "string",
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Filter",
|
||||
"type": "Server.Engines.BulkOrders.BOBFilter",
|
||||
"rule": "RawSerializableMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "System.Collections.Generic.List\u003CServer.Engines.BulkOrders.IBOBEntry\u003E",
|
||||
"rule": "ListMigrationRule",
|
||||
"ruleArguments": [
|
||||
"Server.Engines.BulkOrders.IBOBEntry",
|
||||
"SerializableInterfaceMigrationRule"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -3040,7 +3040,8 @@ namespace Server.Mobiles
|
|||
case 13: // just removed m_PaidInsurance list
|
||||
case 12:
|
||||
{
|
||||
BOBFilter = new BOBFilter(reader);
|
||||
BOBFilter = new BOBFilter();
|
||||
BOBFilter.Deserialize(reader);
|
||||
goto case 11;
|
||||
}
|
||||
case 11:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue