ModernUO/Projects/UOContent/Items/Special/Holiday/SnowGlobes.cs

195 lines
4.5 KiB
C#

using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SnowGlobe : Item
{
public SnowGlobe() : base(0xE2F)
{
LootType = LootType.Blessed;
Light = LightType.Circle150;
}
public override double DefaultWeight => 1.0;
}
public enum SnowGlobeTypeOne
{
Britain,
Moonglow,
Minoc,
Magincia,
BuccaneersDen,
Trinsic,
Yew,
SkaraBrae,
Jhelom,
Nujelm,
Papua,
Delucia,
Cove,
Ocllo,
SerpentsHold,
EmpathAbbey,
TheLycaeum,
Vesper,
Wind
}
[SerializationGenerator(1, false)]
public partial class SnowGlobeOne : SnowGlobe
{
[InvalidateProperties]
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private SnowGlobeTypeOne _place;
[Constructible]
public SnowGlobeOne() : this((SnowGlobeTypeOne)Utility.Random(19))
{
}
[Constructible]
public SnowGlobeOne(SnowGlobeTypeOne type) => _place = type;
public override int LabelNumber => 1041454 + (int)_place;
private void Deserialize(IGenericReader reader, int version)
{
_place = (SnowGlobeTypeOne)reader.ReadEncodedInt();
}
}
public enum SnowGlobeTypeTwo
{
AncientCitadel,
BlackthornesCastle,
CityofMontor,
CityofMistas,
ExodusLair,
LakeofFire,
Lakeshire,
PassofKarnaugh,
TheEtherealFortress,
TwinOaksTavern,
ChaosShrine,
ShrineofHumility,
ShrineofSacrifice,
ShrineofCompassion,
ShrineofHonor,
ShrineofHonesty,
ShrineofSpirituality,
ShrineofJustice,
ShrineofValor
}
[SerializationGenerator(1, false)]
public partial class SnowGlobeTwo : SnowGlobe
{
/* Oddly, these are not localized. */
private static readonly string[] _placeNames =
{
/* AncientCitadel */ "Ancient Citadel",
/* BlackthornesCastle */ "Blackthorne's Castle",
/* CityofMontor */ "City of Montor",
/* CityofMistas */ "City of Mistas",
/* ExodusLair */ "Exodus' Lair",
/* LakeofFire */ "Lake of Fire",
/* Lakeshire */ "Lakeshire",
/* PassofKarnaugh */ "Pass of Karnaugh",
/* TheEtherealFortress */ "The Ethereal Fortress",
/* TwinOaksTavern */ "Twin Oaks Tavern",
/* ChaosShrine */ "Chaos Shrine",
/* ShrineofHumility */ "Shrine of Humility",
/* ShrineofSacrifice */ "Shrine of Sacrifice",
/* ShrineofCompassion */ "Shrine of Compassion",
/* ShrineofHonor */ "Shrine of Honor",
/* ShrineofHonesty */ "Shrine of Honesty",
/* ShrineofSpirituality */ "Shrine of Spirituality",
/* ShrineofJustice */ "Shrine of Justice",
/* ShrineofValor */ "Shrine of Valor"
};
[InvalidateProperties]
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private SnowGlobeTypeTwo _place;
[Constructible]
public SnowGlobeTwo() : this((SnowGlobeTypeTwo)Utility.Random(_placeNames.Length))
{
}
[Constructible]
public SnowGlobeTwo(SnowGlobeTypeTwo type) => _place = type;
public override string DefaultName
{
get
{
var idx = (int)_place;
if (idx < 0 || idx >= _placeNames.Length)
{
return "a snowy scene";
}
return $"a snowy scene of {_placeNames[idx]}";
}
}
private void Deserialize(IGenericReader reader, int version)
{
_place = (SnowGlobeTypeTwo)reader.ReadEncodedInt();
}
}
public enum SnowGlobeTypeThree
{
Luna,
Umbra,
Zento,
Heartwood,
Covetous,
Deceit,
Destard,
Hythloth,
Khaldun,
Shame,
Wrong,
Doom,
TheCitadel,
ThePalaceofParoxysmus,
TheBlightedGrove,
ThePrismofLight
}
[SerializationGenerator(1, false)]
public partial class SnowGlobeThree : SnowGlobe
{
[InvalidateProperties]
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private SnowGlobeTypeThree _place;
[Constructible]
public SnowGlobeThree() : this((SnowGlobeTypeThree)Utility.Random(16))
{
}
[Constructible]
public SnowGlobeThree(SnowGlobeTypeThree type) => _place = type;
public override int LabelNumber =>
_place switch
{
>= SnowGlobeTypeThree.Covetous => 1075440 + ((int)_place - 4),
_ => 1075294 + (int)_place
};
private void Deserialize(IGenericReader reader, int version)
{
_place = (SnowGlobeTypeThree)reader.ReadEncodedInt();
}
}