Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,441 @@
using Server;
using System;
using Server.Items;
using Server.Mobiles;
using Server.Accounting;
namespace Server.Engines.NewMagincia
{
[PropertyObject]
public class MaginciaBazaarPlot
{
private PlotDef m_Definition;
private Mobile m_Owner;
private string m_ShopName;
private BaseBazaarMulti m_PlotMulti;
private BaseBazaarBroker m_Merchant;
private PlotSign m_Sign;
private MaginciaPlotAuction m_Auction;
[CommandProperty(AccessLevel.GameMaster)]
public PlotDef PlotDef { get { return m_Definition; } set { } }
[CommandProperty(AccessLevel.GameMaster)]
public Mobile Owner { get { return m_Owner; } set { m_Owner = value; } }
[CommandProperty(AccessLevel.GameMaster)]
public string ShopName { get { return m_ShopName; } set { m_ShopName = value; } }
[CommandProperty(AccessLevel.GameMaster)]
public BaseBazaarMulti PlotMulti
{
get { return m_PlotMulti; }
set
{
if (m_PlotMulti != null && m_PlotMulti != value && value != null)
{
m_PlotMulti.Delete();
m_PlotMulti = null;
}
m_PlotMulti = value;
if(m_PlotMulti != null)
m_PlotMulti.MoveToWorld(m_Definition.MultiLocation, m_Definition.Map);
}
}
[CommandProperty(AccessLevel.GameMaster)]
public BaseBazaarBroker Merchant
{
get { return m_Merchant; }
set
{
m_Merchant = value;
if(m_Merchant != null)
{
m_Merchant.Plot = this;
Point3D p = m_Definition.Location;
p.X++;
p.Y++;
p.Z = 27;
if (m_PlotMulti != null && m_PlotMulti.Fillers.Count > 0)
{
p = m_PlotMulti.Fillers[0].Location;
p.Z = m_PlotMulti.Fillers[0].Z + TileData.ItemTable[m_PlotMulti.Fillers[0].ItemID & TileData.MaxItemValue].CalcHeight;
}
m_Merchant.MoveToWorld(p, m_Definition.Map);
}
}
}
[CommandProperty(AccessLevel.GameMaster)]
public PlotSign Sign { get { return m_Sign; } set { m_Sign = value; } }
[CommandProperty(AccessLevel.GameMaster)]
public MaginciaPlotAuction Auction
{
get
{
/*if(m_Auction == null)
{
TimeSpan ts;
if(m_Owner == null)
ts = MaginciaBazaar.GetLongAuctionTime;
else
ts = MaginciaBazaar.GetShortAuctionTime;
m_Auction = new MaginciaPlotAuction(this, ts);
}*/
return m_Auction;
}
set { m_Auction = value; }
}
[CommandProperty(AccessLevel.GameMaster)]
public bool Active { get { return MaginciaBazaar.IsActivePlot(this); } }
[CommandProperty(AccessLevel.GameMaster)]
public DateTime AuctionEnds
{
get
{
if (Auction == null)
return DateTime.MinValue;
return Auction.AuctionEnd;
}
}
public MaginciaBazaarPlot(PlotDef definition)
{
m_Definition = definition;
m_Owner = null;
m_PlotMulti = null;
m_Merchant = null;
m_ShopName = null;
}
public bool IsOwner(Mobile from)
{
if(from == null || m_Owner == null)
return false;
if(from == m_Owner)
return true;
Account acct1 = from.Account as Account;
Account acct2 = m_Owner.Account as Account;
return acct1 != null && acct2 != null && acct1 == acct2;
}
public void AddPlotSign()
{
m_Sign = new PlotSign(this);
m_Sign.MoveToWorld(m_Definition.SignLoc, m_Definition.Map);
}
public void Reset()
{
if(m_PlotMulti != null)
Timer.DelayCall(TimeSpan.FromMinutes(2), new TimerCallback(DeleteMulti_Callback));
EndTempMultiTimer();
if(m_Merchant != null)
m_Merchant.Dismiss();
m_Owner = null;
m_ShopName = null;
m_Merchant = null;
m_ShopName = null;
}
public void NewAuction(TimeSpan time)
{
m_Auction = new MaginciaPlotAuction(this, time);
if (m_Sign != null)
m_Sign.InvalidateProperties();
}
private void DeleteMulti_Callback()
{
if (m_PlotMulti != null)
m_PlotMulti.Delete();
m_PlotMulti = null;
}
public void OnTick()
{
if (m_Auction != null)
m_Auction.OnTick();
if(m_Merchant != null)
m_Merchant.OnTick();
if (m_Sign != null)
m_Sign.InvalidateProperties();
}
#region Stall Style Multis
private Timer m_Timer;
public void AddTempMulti(int idx1, int idx2)
{
if (m_PlotMulti != null)
{
m_PlotMulti.Delete();
m_PlotMulti = null;
}
BaseBazaarMulti multi = null;
if (idx1 == 0)
{
switch (idx2)
{
case 0: multi = new CommodityStyle1(); break;
case 1: multi = new CommodityStyle2(); break;
case 2: multi = new CommodityStyle3(); break;
}
}
else
{
switch (idx2)
{
case 0: multi = new PetStyle1(); break;
case 1: multi = new PetStyle2(); break;
case 2: multi = new PetStyle3(); break;
}
}
if (multi != null)
{
PlotMulti = multi;
BeginTempMultiTimer();
}
}
public void ConfirmMulti(bool commodity)
{
EndTempMultiTimer();
if(commodity)
Merchant = new CommodityBroker(this);
else
Merchant = new PetBroker(this);
}
public void RemoveTempPlot()
{
EndTempMultiTimer();
if (m_PlotMulti != null)
{
m_PlotMulti.Delete();
m_PlotMulti = null;
}
}
public void BeginTempMultiTimer()
{
if(m_Timer != null)
{
m_Timer.Stop();
m_Timer = null;
}
m_Timer = new InternalTimer(this);
m_Timer.Start();
}
public void EndTempMultiTimer()
{
if(m_Timer != null)
{
m_Timer.Stop();
m_Timer = null;
}
}
public bool HasTempMulti()
{
return m_Timer != null;
}
private class InternalTimer : Timer
{
private MaginciaBazaarPlot m_Plot;
public InternalTimer(MaginciaBazaarPlot plot) : base(TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1))
{
m_Plot = plot;
}
protected override void OnTick()
{
if(m_Plot != null)
m_Plot.RemoveTempPlot();
}
}
#endregion
public override string ToString()
{
return "...";
}
public bool TrySetShopName(Mobile from, string text)
{
if (text == null || !Server.Guilds.BaseGuildGump.CheckProfanity(text) || text.Length == 0 || text.Length > 40)
return false;
m_ShopName = text;
if(m_Merchant != null)
m_Merchant.InvalidateProperties();
if(m_Sign != null)
m_Sign.InvalidateProperties();
from.SendLocalizedMessage(1150333); // Your shop has been renamed.
return true;
}
public void FireBroker()
{
if(m_Merchant != null)
{
m_Merchant.Delete();
m_Merchant = null;
if (m_PlotMulti != null)
{
m_PlotMulti.Delete();
m_PlotMulti = null;
}
}
}
public void Abandon()
{
Reset();
if (m_Auction != null)
m_Auction.ChangeAuctionTime(MaginciaBazaar.GetShortAuctionTime);
}
public int GetBid(Mobile from)
{
if (m_Auction != null && m_Auction.Auctioners.ContainsKey(from))
return m_Auction.Auctioners[from].Amount;
return 0;
}
public void Serialize(GenericWriter writer)
{
writer.Write((int)0);
m_Definition.Serialize(writer);
writer.Write(m_Owner);
writer.Write(m_ShopName);
writer.Write(m_Merchant);
writer.Write(m_Sign);
writer.Write(m_PlotMulti);
if(m_Auction != null)
{
writer.Write((bool)true);
m_Auction.Serialize(writer);
}
else
writer.Write((bool)false);
}
public MaginciaBazaarPlot(GenericReader reader)
{
int version = reader.ReadInt();
m_Definition = new PlotDef(reader);
m_Owner = reader.ReadMobile();
m_ShopName = reader.ReadString();
m_Merchant = reader.ReadMobile() as BaseBazaarBroker;
m_Sign = reader.ReadItem() as PlotSign;
m_PlotMulti = reader.ReadItem() as BaseBazaarMulti;
if(reader.ReadBool())
m_Auction = new MaginciaPlotAuction(reader, this);
if(m_Merchant != null)
m_Merchant.Plot = this;
if (m_Sign != null)
m_Sign.Plot = this;
}
}
[PropertyObject]
public class PlotDef
{
private string m_ID;
private Point3D m_Location;
private Map m_Map;
[CommandProperty(AccessLevel.GameMaster)]
public string ID { get { return m_ID; } set { m_ID = value; } }
[CommandProperty(AccessLevel.GameMaster)]
public Point3D Location { get { return m_Location; } set { m_Location = value; } }
[CommandProperty(AccessLevel.GameMaster)]
public Map Map { get { return m_Map; } }
[CommandProperty(AccessLevel.GameMaster)]
public Point3D SignLoc { get { return new Point3D(m_Location.X + 1, m_Location.Y - 2, m_Location.Z); } }
[CommandProperty(AccessLevel.GameMaster)]
public Point3D MultiLocation { get { return new Point3D(m_Location.X, m_Location.Y, m_Location.Z + 2); } }
public PlotDef(string id, Point3D pnt, int mapID)
{
m_ID = id;
m_Location = pnt;
m_Map = Server.Map.Maps[mapID];
}
public override string ToString()
{
return "...";
}
public PlotDef(GenericReader reader)
{
int version = reader.ReadInt();
m_ID = reader.ReadString();
m_Location = reader.ReadPoint3D();
m_Map = reader.ReadMap();
}
public void Serialize(GenericWriter writer)
{
writer.Write((int)0);
writer.Write(m_ID);
writer.Write(m_Location);
writer.Write(m_Map);
}
}
}