using ModernUO.Serialization;
using Server.Network;

namespace Server.Items;

[SerializationGenerator(0)]
public partial class Basket1Artifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket1Artifact() : base(0x24DD)
    {
    }

    public override int ArtifactRarity => 1;
}

[SerializationGenerator(0)]
public partial class Basket2Artifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket2Artifact() : base(0x24D7)
    {
    }

    public override int ArtifactRarity => 1;
}

[SerializationGenerator(0)]
public partial class Basket3WestArtifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket3WestArtifact() : base(0x24D9)
    {
    }

    public override int ArtifactRarity => 1;
}

[SerializationGenerator(0)]
public partial class Basket3NorthArtifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket3NorthArtifact() : base(0x24DA)
    {
    }

    public override int ArtifactRarity => 1;
}

[SerializationGenerator(0)]
public partial class Basket4Artifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket4Artifact() : base(0x24D8)
    {
    }

    public override int ArtifactRarity => 2;
}

[SerializationGenerator(0)]
public partial class Basket5WestArtifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket5WestArtifact() : base(0x24DC)
    {
    }

    public override int ArtifactRarity => 2;
}

[SerializationGenerator(0)]
public partial class Basket5NorthArtifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket5NorthArtifact() : base(0x24DB)
    {
    }

    public override int ArtifactRarity => 2;
}

[SerializationGenerator(0)]
public partial class Basket6Artifact : BaseDecorationContainerArtifact
{
    [Constructible]
    public Basket6Artifact() : base(0x24D5)
    {
    }

    public override int ArtifactRarity => 2;
}

[SerializationGenerator(0)]
public partial class BowlArtifact : BaseDecorationArtifact
{
    [Constructible]
    public BowlArtifact() : base(0x24DE)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class BowlsVerticalArtifact : BaseDecorationArtifact
{
    [Constructible]
    public BowlsVerticalArtifact() : base(0x24DF)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class BowlsHorizontalArtifact : BaseDecorationArtifact
{
    [Constructible]
    public BowlsHorizontalArtifact() : base(0x24E0)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class CupsArtifact : BaseDecorationArtifact
{
    [Constructible]
    public CupsArtifact() : base(0x24E1)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class FanWestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public FanWestArtifact() : base(0x240A)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class FanNorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public FanNorthArtifact() : base(0x2409)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class TripleFanWestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public TripleFanWestArtifact() : base(0x240C)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class TripleFanNorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public TripleFanNorthArtifact() : base(0x240B)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class FlowersArtifact : BaseDecorationArtifact
{
    [Constructible]
    public FlowersArtifact() : base(0x284A)
    {
    }

    public override int ArtifactRarity => 7;
}

[SerializationGenerator(0)]
public partial class Painting1WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting1WestArtifact() : base(0x240E)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class Painting1NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting1NorthArtifact() : base(0x240D)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class Painting2WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting2WestArtifact() : base(0x2410)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class Painting2NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting2NorthArtifact() : base(0x240F)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class Painting3Artifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting3Artifact() : base(0x2411)
    {
    }

    public override int ArtifactRarity => 5;
}

[SerializationGenerator(0)]
public partial class Painting4WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting4WestArtifact() : base(0x2412)
    {
    }

    public override int ArtifactRarity => 6;
}

[SerializationGenerator(0)]
public partial class Painting4NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting4NorthArtifact() : base(0x2411)
    {
    }

    public override int ArtifactRarity => 6;
}

[SerializationGenerator(0)]
public partial class Painting5WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting5WestArtifact() : base(0x2416)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class Painting5NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting5NorthArtifact() : base(0x2415)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class Painting6WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting6WestArtifact() : base(0x2418)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class Painting6NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public Painting6NorthArtifact() : base(0x2417)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class SakeArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SakeArtifact() : base(0x24E2)
    {
    }

    public override int ArtifactRarity => 4;
}

[SerializationGenerator(0)]
public partial class Sculpture1Artifact : BaseDecorationArtifact
{
    [Constructible]
    public Sculpture1Artifact() : base(0x2419)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class Sculpture2Artifact : BaseDecorationArtifact
{
    [Constructible]
    public Sculpture2Artifact() : base(0x241B)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class DolphinLeftArtifact : BaseDecorationArtifact
{
    [Constructible]
    public DolphinLeftArtifact() : base(0x2846)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class DolphinRightArtifact : BaseDecorationArtifact
{
    [Constructible]
    public DolphinRightArtifact() : base(0x2847)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class ManStatuetteSouthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public ManStatuetteSouthArtifact() : base(0x2848)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class ManStatuetteEastArtifact : BaseDecorationArtifact
{
    [Constructible]
    public ManStatuetteEastArtifact() : base(0x2849)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class SwordDisplay1WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay1WestArtifact() : base(0x2842)
    {
    }

    public override int ArtifactRarity => 5;
}

[SerializationGenerator(0)]
public partial class SwordDisplay1NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay1NorthArtifact() : base(0x2843)
    {
    }

    public override int ArtifactRarity => 5;
}

[SerializationGenerator(0)]
public partial class SwordDisplay2WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay2WestArtifact() : base(0x2844)
    {
    }

    public override int ArtifactRarity => 6;
}

[SerializationGenerator(0)]
public partial class SwordDisplay2NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay2NorthArtifact() : base(0x2845)
    {
    }

    public override int ArtifactRarity => 6;
}

[SerializationGenerator(0)]
public partial class SwordDisplay3SouthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay3SouthArtifact() : base(0x2855)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class SwordDisplay3EastArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay3EastArtifact() : base(0x2856)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class SwordDisplay4WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay4WestArtifact() : base(0x2853)
    {
    }

    public override int ArtifactRarity => 8;
}

[SerializationGenerator(0)]
public partial class SwordDisplay4NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay4NorthArtifact() : base(0x2854)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class SwordDisplay5WestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay5WestArtifact() : base(0x2851)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class SwordDisplay5NorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public SwordDisplay5NorthArtifact() : base(0x2852)
    {
    }

    public override int ArtifactRarity => 9;
}

[SerializationGenerator(0)]
public partial class TeapotWestArtifact : BaseDecorationArtifact
{
    [Constructible]
    public TeapotWestArtifact() : base(0x24E7)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class TeapotNorthArtifact : BaseDecorationArtifact
{
    [Constructible]
    public TeapotNorthArtifact() : base(0x24E6)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class TowerLanternArtifact : BaseDecorationArtifact
{
    [Constructible]
    public TowerLanternArtifact() : base(0x24C0) => Light = LightType.Circle225;

    public override int ArtifactRarity => 3;

    [CommandProperty(AccessLevel.GameMaster)]
    public bool IsOn
    {
        get => ItemID == 0x24BF;
        set => ItemID = value ? 0x24BF : 0x24C0;
    }

    public override void OnDoubleClick(Mobile from)
    {
        if (from.InRange(GetWorldLocation(), 2))
        {
            if (IsOn)
            {
                IsOn = false;
                from.PlaySound(0x3BE);
            }
            else
            {
                IsOn = true;
                from.PlaySound(0x47);
            }
        }
        else
        {
            from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
        }
    }
}

[SerializationGenerator(0)]
public partial class Urn1Artifact : BaseDecorationArtifact
{
    [Constructible]
    public Urn1Artifact() : base(0x241D)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class Urn2Artifact : BaseDecorationArtifact
{
    [Constructible]
    public Urn2Artifact() : base(0x241E)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class ZenRock1Artifact : BaseDecorationArtifact
{
    [Constructible]
    public ZenRock1Artifact() : base(0x24E4)
    {
    }

    public override int ArtifactRarity => 2;
}

[SerializationGenerator(0)]
public partial class ZenRock2Artifact : BaseDecorationArtifact
{
    [Constructible]
    public ZenRock2Artifact() : base(0x24E3)
    {
    }

    public override int ArtifactRarity => 3;
}

[SerializationGenerator(0)]
public partial class ZenRock3Artifact : BaseDecorationArtifact
{
    [Constructible]
    public ZenRock3Artifact() : base(0x24E5)
    {
    }

    public override int ArtifactRarity => 3;
}
