Files
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

205 lines
5.6 KiB
C#

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Engines.CityLoyalty;
using Server.Engines.RisingTide;
namespace Server.Items
{
public enum CargoQuality
{
Grandmaster,
Exalted,
Legendary,
Mythical
}
public enum CargoType
{
Cloth = 1257,
Jewelry = 353,
Wood = 1155,
Metal = 1175,
Munitions = 1157,
Granite = 2498,
Reagents = 1156,
Glassware = 1158,
}
// 1158907 You recover maritime trade cargo!
[Flipable(0xA2C4, 0xA2C5)]
public class MaritimeCargo : Item
{
private CargoQuality _CargoQuality;
private CargoType _CargoType;
private City _City;
[CommandProperty(AccessLevel.GameMaster)]
public CargoQuality CargoQuality
{
get { return _CargoQuality; }
set
{
_CargoQuality = value;
if (_CargoQuality == CargoQuality.Mythical)
{
Hue = 1177;
}
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public CargoType CargoType
{
get { return _CargoType; }
set
{
_CargoType = value;
if (_CargoQuality != CargoQuality.Mythical && Hue != (int)_CargoType)
{
Hue = (int)_CargoType;
}
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public City City { get { return _City; } set { _City = value; InvalidateProperties(); } }
[Constructable]
public MaritimeCargo()
: this(RandomQuality(), RandomCity(), RandomType())
{
}
[Constructable]
public MaritimeCargo(CargoQuality quality)
: this(quality, RandomCity(), RandomType())
{
}
[Constructable]
public MaritimeCargo(CargoQuality quality, City city, CargoType type)
: base(0xA2C4)
{
CargoQuality = quality;
City = city;
CargoType = type;
}
private static CargoQuality RandomQuality()
{
var random = Utility.RandomDouble();
if (random < 0.05)
{
return CargoQuality.Legendary;
}
if (random < 0.33)
{
return CargoQuality.Exalted;
}
return CargoQuality.Grandmaster;
}
private static City RandomCity()
{
return (City)Utility.Random(9);
}
private static CargoType RandomType()
{
switch (Utility.Random(8))
{
default:
case 0: return CargoType.Cloth;
case 1: return CargoType.Jewelry;
case 2: return CargoType.Wood;
case 3: return CargoType.Metal;
case 4: return CargoType.Munitions;
case 5: return CargoType.Granite;
case 6: return CargoType.Reagents;
case 7: return CargoType.Glassware;
}
}
public int GetAwardAmount()
{
int amount;
switch (_CargoQuality)
{
default:
case CargoQuality.Grandmaster: amount = Utility.RandomMinMax(100, 200); break;
case CargoQuality.Exalted: amount = Utility.RandomMinMax(500, 600); break;
case CargoQuality.Legendary: amount = Utility.RandomMinMax(1000, 1100); break;
case CargoQuality.Mythical: amount = Utility.RandomMinMax(10000, 15000); break;
}
return amount;
}
public override void AddNameProperty(ObjectPropertyList list)
{
list.Add(1158906, String.Format("#{0}", CityLoyaltySystem.GetCityLocalization(_City).ToString())); // Maritime Trade Cargo Destined for ~1_CITY~
}
public override void AddWeightProperty(ObjectPropertyList list)
{
base.AddWeightProperty(list);
list.Add(_CargoQuality < CargoQuality.Mythical ? 1158903 + (int)_CargoQuality : 1158969, String.Format("#{0}", TypeLabel(_CargoType)));
}
public static int TypeLabel(CargoType type)
{
switch (type)
{
default:
case CargoType.Cloth: return 1044286;
case CargoType.Jewelry: return 1011172;
case CargoType.Wood: return 1079435;
case CargoType.Metal: return 1049567;
case CargoType.Munitions: return 1158902;
case CargoType.Granite: return 1158900;
case CargoType.Reagents: return 1002127;
case CargoType.Glassware: return 1158901;
}
}
public MaritimeCargo(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write((int)_CargoQuality);
writer.Write((int)_CargoType);
writer.Write((int)_City);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
_CargoQuality = (CargoQuality)reader.ReadInt();
_CargoType = (CargoType)reader.ReadInt();
_City = (City)reader.ReadInt();
}
}
}