1597932531631.png

UO Fiddler - Classic Client version 7.0.86.2


ServUO SVN - Scripts\Services\Seasonal Events\JollyRoger\Region.cs
Lines 76 -> 113

Upon entering Ilshenar's Well of Souls Virtues, need to meet this condition to get the cloak:
!list.Cloak && list.Shrine.Count == 8 && !list.Shrine.Any(x => x.MasterDeath < 3

I don't see other scripts that give the cloak. I hope this helps. I have never done the quest myself.

C#:
        public WellOfSoulsVirtuesRegion()
            : base("Well Of Souls Virtues", Map.Ilshenar, DefaultPriority, Virtue.Select(x => x.Area).ToArray())
        {
            Register();
        }

        public override void OnEnter(Mobile m)
        {
            var virtue = Virtue.FirstOrDefault(x => x.Area.Contains(m.Location));

            var list = JollyRogerData.GetList(m);
            
            if (list != null && list.Shrine != null)
            {
                var s = list.Shrine.FirstOrDefault(x => x.Shrine == virtue.Shrine);

                if (s != null && s.MasterDeath >= 3)
                {
                    if (!list.Cloak && list.Shrine.Count == 8 && !list.Shrine.Any(x => x.MasterDeath < 3))
                    {
                        var item = new CloakOfTheVirtuous();

                        if (m.Backpack == null || !m.Backpack.TryDropItem(m, item, false))
                        {
                            m.SendLocalizedMessage(1152337,
                                item.ToString()); // A reward of ~1_ITEM~ will be delivered to you once you free up room in your backpack.
                            item.Delete();
                        }
                        else
                        {
                            m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1159339,
                                m.NetState); // Thous hast proven thou walks the path of Virtue!
                            JollyRogerData.SetCloak(m, true);
                            m.SendLocalizedMessage(1152339,
                                item.ToString()); // A reward of ~1_ITEM~ has been placed in your backpack.
                            m.PlaySound(0x419);
                        }
                    }
 
Last edited:
Change line 5 of CloakOfTheVirtuous.cs script from 159340 to 1159340. I think that will fix what you are seeing.

CloakOfTheVirtuous.cs:
namespace Server.Items
{
    public class CloakOfTheVirtuous : BaseCloak
    {
        public override int LabelNumber => 1159340; // Cloak of the Virtuous

        public override bool IsArtifact => true;

        [Constructable]
        public CloakOfTheVirtuous()
            : base(0xA413)
        {
            Weight = 3;
        }

        public CloakOfTheVirtuous(Serial serial)
            : base(serial)
        {
        }

        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write(0); // version
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            reader.ReadInt();
        }
    }
}
 
@jingz2k2 @WiKKiD
Thanks for your replies. I solved the cliloc problem by your method.
However, I tried to debug the cloak trigger, but failed. It seems something more foundamental wrong.

C#:
        public override void OnEnter(Mobile m)
        {
            var virtue = Virtue.FirstOrDefault(x => x.Area.Contains(m.Location));

            var list = JollyRogerData.GetList(m);
            
            //if (list != null && list.Shrine != null)
            //{
                var s = list.Shrine.FirstOrDefault(x => x.Shrine == virtue.Shrine);

                //if (s != null && s.MasterDeath >= 3)
                //{
                    //if (!list.Cloak && list.Shrine.Count == 8 && !list.Shrine.Any(x => x.MasterDeath < 3))
                    //{
                        var item = new CloakOfTheVirtuous();

                        //if (m.Backpack == null || !m.Backpack.TryDropItem(m, item, false))
                        //{
                        //    m.SendLocalizedMessage(1152337,item.ToString()); // A reward of ~1_ITEM~ will be delivered to you once you free up room in your backpack.
                        //    item.Delete();
                        //}
                        //else
                        //{
                            m.PrivateOverheadMessage(MessageType.Regular, 0x47E,1159339, m.NetState); // Thous hast proven thou walks the path of Virtue!
                            JollyRogerData.SetCloak(m, true);
                            m.SendLocalizedMessage(1152339,item.ToString()); // A reward of ~1_ITEM~ has been placed in your backpack.
                            m.PlaySound(0x419);
                        //}
                    //}
                    //else
                    //{
                    //    m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, string.Format("*Thou are truly {0}...*", virtue.Title), m.NetState);
                    //    m.FixedParticles(0x376A, 1, 72, 0x13B5, EffectLayer.Waist);
                    //    m.PlaySound(0x1F2);
                    //}
                //}
                //else
                //{
                //    m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, string.Format("*Thou are not truly {0}...*", virtue.Title), m.NetState);
                //}
            //}
            //else
            //{
            //    m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, string.Format("*Thou are not truly {0}...*", virtue.Title), m.NetState);
            //}
        }
 
Back