Ejemplo n.º 1
0
        public LeanMyWorldObject(ExtendedMyWorldObject myWorldObject)
        {
            ExtendedMyWorldObject = myWorldObject;

            EquippableSlots = myWorldObject.EquippableSlots;

            Coverage = myWorldObject.Coverage;

            ItemSetId = myWorldObject.IntValues.ContainsKey(265) ? myWorldObject.IntValues[265] : 0;


            ObjectClass = myWorldObject.ObjectClass;

            Material = myWorldObject.Material;

            CalcedStartingArmorLevel = myWorldObject.CalcedStartingArmorLevel;


            damRating = myWorldObject.DamRating;

            damResistRating = myWorldObject.DamResistRating;

            critRating = myWorldObject.CritRating;

            critResistRating = myWorldObject.CritResistRating;

            critDamRating = myWorldObject.CritDamRating;

            critDamResistRating = myWorldObject.CritDamResistRating;

            healBoostRating = myWorldObject.HealBoostRating;

            vitalityRating = myWorldObject.VitalityRating;
        }
Ejemplo n.º 2
0
        public static int GetTotalBitsSet(this CoverageMask value)
        {
            int slotFlags = (int)value;
            int bitsSet   = 0;

            while (slotFlags != 0)
            {
                if ((slotFlags & 1) == 1)
                {
                    bitsSet++;
                }
                slotFlags >>= 1;
            }

            return(bitsSet);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Returns a list of equipped clothing/armor with any coverage overlap
 /// </summary>
 public List <WorldObject> GetEquippedClothingArmor(CoverageMask coverageMask)
 {
     return(EquippedObjects.Values.Where(i => i.ClothingPriority != null && (i.ClothingPriority & coverageMask) != 0).ToList());
 }
Ejemplo n.º 4
0
        public static void HandleDebugEchoFlags(Session session, params string[] parameters)
        {
            try
            {
                if (parameters?.Length == 2)
                {
                    var debugOutput = "";
                    switch (parameters[0].ToLower())
                    {
                    case "descriptionflags":
                        ObjectDescriptionFlag objectDescFlag = new ObjectDescriptionFlag();
                        objectDescFlag = (ObjectDescriptionFlag)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{objectDescFlag.GetType().Name} = {objectDescFlag.ToString()}" + " (" + (uint)objectDescFlag + ")";
                        break;

                    case "weenieflags":
                        WeenieHeaderFlag weenieHdr = new WeenieHeaderFlag();
                        weenieHdr = (WeenieHeaderFlag)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{weenieHdr.GetType().Name} = {weenieHdr.ToString()}" + " (" + (uint)weenieHdr + ")";
                        break;

                    case "weenieflags2":
                        WeenieHeaderFlag2 weenieHdr2 = new WeenieHeaderFlag2();
                        weenieHdr2 = (WeenieHeaderFlag2)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{weenieHdr2.GetType().Name} = {weenieHdr2.ToString()}" + " (" + (uint)weenieHdr2 + ")";
                        break;

                    case "positionflag":
                        UpdatePositionFlag posFlag = new UpdatePositionFlag();
                        posFlag = (UpdatePositionFlag)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{posFlag.GetType().Name} = {posFlag.ToString()}" + " (" + (uint)posFlag + ")";
                        break;

                    case "type":
                        ItemType objectType = new ItemType();
                        objectType = (ItemType)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{objectType.GetType().Name} = {objectType.ToString()}" + " (" + (uint)objectType + ")";
                        break;

                    case "containertype":
                        ContainerType contType = new ContainerType();
                        contType = (ContainerType)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{contType.GetType().Name} = {contType.ToString()}" + " (" + (uint)contType + ")";
                        break;

                    case "usable":
                        Usable usableType = new Usable();
                        usableType = (Usable)Convert.ToInt64(parameters[1]);

                        debugOutput = $"{usableType.GetType().Name} = {usableType.ToString()}" + " (" + (Int64)usableType + ")";
                        break;

                    case "radarbehavior":
                        RadarBehavior radarBeh = new RadarBehavior();
                        radarBeh = (RadarBehavior)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{radarBeh.GetType().Name} = {radarBeh.ToString()}" + " (" + (uint)radarBeh + ")";
                        break;

                    case "physicsdescriptionflags":
                        PhysicsDescriptionFlag physicsDescFlag = new PhysicsDescriptionFlag();
                        physicsDescFlag = (PhysicsDescriptionFlag)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{physicsDescFlag.GetType().Name} = {physicsDescFlag.ToString()}" + " (" + (uint)physicsDescFlag + ")";
                        break;

                    case "physicsstate":
                        PhysicsState physState = new PhysicsState();
                        physState = (PhysicsState)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{physState.GetType().Name} = {physState.ToString()}" + " (" + (uint)physState + ")";
                        break;

                    case "validlocations":
                        EquipMask locFlags = new EquipMask();
                        locFlags = (EquipMask)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{locFlags.GetType().Name} = {locFlags.ToString()}" + " (" + (uint)locFlags + ")";
                        break;

                    case "currentwieldedlocation":
                        EquipMask locFlags2 = new EquipMask();
                        locFlags2 = (EquipMask)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{locFlags2.GetType().Name} = {locFlags2.ToString()}" + " (" + (uint)locFlags2 + ")";
                        break;

                    case "priority":
                        CoverageMask covMask = new CoverageMask();
                        covMask = (CoverageMask)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{covMask.GetType().Name} = {covMask.ToString()}" + " (" + (uint)covMask + ")";
                        break;

                    case "radarcolor":
                        RadarColor radarBlipColor = new RadarColor();
                        radarBlipColor = (RadarColor)Convert.ToUInt32(parameters[1]);

                        debugOutput = $"{radarBlipColor.GetType().Name} = {radarBlipColor.ToString()}" + " (" + (uint)radarBlipColor + ")";
                        break;

                    default:
                        debugOutput = "No valid type to test";
                        break;
                    }

                    if (session == null)
                    {
                        Console.WriteLine(debugOutput.Replace(", ", " | "));
                    }
                    else
                    {
                        session.Network.EnqueueSend(new GameMessageSystemChat(debugOutput, ChatMessageType.System));
                    }
                }
            }
            catch (Exception)
            {
                string debugOutput = "Exception Error, check input and try again";
                if (session == null)
                {
                    Console.WriteLine(debugOutput.Replace(", ", " | "));
                }
                else
                {
                    session.Network.EnqueueSend(new GameMessageSystemChat(debugOutput, ChatMessageType.System));
                }
            }
        }
Ejemplo n.º 5
0
        /*public static List<EquipMask> GetFlags(EquipMask locations)
         * {
         *  return Enum.GetValues(typeof(EquipMask)).Cast<EquipMask>().Where(p => p != EquipMask.None && locations.HasFlag(p)).ToList();
         * }*/

        public static List <CoverageMask> GetFlags(CoverageMask coverage)
        {
            return(Enum.GetValues(typeof(CoverageMask)).Cast <CoverageMask>().Where(p => p != CoverageMask.Unknown && coverage.HasFlag(p)).ToList());
        }
Ejemplo n.º 6
0
        public static List <CoverageMask> ReductionOptions(this CoverageMask value)
        {
            List <CoverageMask> options = new List <CoverageMask>();

            if (value.GetTotalBitsSet() <= 1 || !value.IsBodyArmor() || value.IsRobe())
            {
                options.Add(value);
            }
            else
            {
                if (value == (CoverageMask.OuterwearUpperArms | CoverageMask.OuterwearLowerArms))
                {
                    options.Add(CoverageMask.OuterwearUpperArms);
                    options.Add(CoverageMask.OuterwearLowerArms);
                }
                else if (value == (CoverageMask.OuterwearUpperLegs | CoverageMask.OuterwearLowerLegs))
                {
                    options.Add(CoverageMask.OuterwearUpperLegs);
                    options.Add(CoverageMask.OuterwearLowerLegs);
                }
                else if (value == (CoverageMask.OuterwearLowerLegs | CoverageMask.Feet))
                {
                    options.Add(CoverageMask.Feet);
                }
                else if (value == (CoverageMask.OuterwearChest | CoverageMask.OuterwearAbdomen))
                {
                    options.Add(CoverageMask.OuterwearChest);
                }
                else if (value == (CoverageMask.OuterwearChest | CoverageMask.OuterwearAbdomen | CoverageMask.OuterwearUpperArms))
                {
                    options.Add(CoverageMask.OuterwearChest);
                }
                else if (value == (CoverageMask.OuterwearChest | CoverageMask.OuterwearUpperArms | CoverageMask.OuterwearLowerArms))
                {
                    options.Add(CoverageMask.OuterwearChest);
                }
                else if (value == (CoverageMask.OuterwearChest | CoverageMask.OuterwearUpperArms))
                {
                    options.Add(CoverageMask.OuterwearChest);
                }
                else if (value == (CoverageMask.OuterwearAbdomen | CoverageMask.OuterwearUpperLegs | CoverageMask.OuterwearLowerLegs))
                {
                    options.Add(CoverageMask.OuterwearAbdomen);
                    options.Add(CoverageMask.OuterwearUpperLegs);
                    options.Add(CoverageMask.OuterwearLowerLegs);
                }
                else if (value == (CoverageMask.OuterwearChest | CoverageMask.OuterwearAbdomen | CoverageMask.OuterwearUpperArms | CoverageMask.OuterwearLowerArms))
                {
                    options.Add(CoverageMask.OuterwearChest);
                }
                else if (value == (CoverageMask.OuterwearAbdomen | CoverageMask.OuterwearUpperLegs))
                {
                    // This is a emu piece that follows the pre-2010 retail guidelines
                    // https://asheron.fandom.com/wiki/Announcements_-_2010/04_-_Shedding_Skin
                    // For now, we assume only abdomen reduction
                    options.Add(CoverageMask.OuterwearAbdomen);
                }
                else
                {
                    throw new Exception("Unable to determine reduction paths for CoverageMask of " + value);
                }
            }

            return(options);
        }
Ejemplo n.º 7
0
 public static bool IsPants(this CoverageMask value)
 {
     return(((int)value & 0x00000017) != 0);
 }
Ejemplo n.º 8
0
 public static bool IsShirt(this CoverageMask value)
 {
     return(((int)value & 0x00000078) != 0);
 }
Ejemplo n.º 9
0
 public static bool IsUnderwear(this CoverageMask value)
 {
     return(((int)value & 0x0000007F) != 0);
 }
Ejemplo n.º 10
0
 public static bool IsRobe(this CoverageMask value)
 {
     return((int)value == 0x00013F00);
 }
Ejemplo n.º 11
0
 public static bool IsBodyArmor(this CoverageMask value)
 {
     return(((int)value & 0x0001FF00) != 0);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Calculates the ClothingPriority of an item based on the actual coverage. So while an Over-Robe may just be "Chest", we want to know it covers everything but head & arms.
        /// </summary>
        /// <param name="setupId">Defaults to HUMAN_MALE if not set, which is good enough</param>
        /// <returns></returns>
        public CoverageMask?GetVisualPriority(uint setupId = 0x02000001)
        {
            if (ClothingBaseEffects.ContainsKey(setupId))
            {
                CoverageMask visualPriority = 0;
                foreach (CloObjectEffect t in ClothingBaseEffects[setupId].CloObjectEffects)
                {
                    switch (t.Index)
                    {
                    case 0:     // HUMAN_ABDOMEN;
                        visualPriority |= CoverageMask.OuterwearAbdomen;
                        break;

                    case 1:     // HUMAN_LEFT_UPPER_LEG;
                    case 5:     // HUMAN_RIGHT_UPPER_LEG;
                        visualPriority |= CoverageMask.OuterwearUpperLegs;
                        break;

                    case 2:     // HUMAN_LEFT_LOWER_LEG;
                    case 6:     // HUMAN_RIGHT_LOWER_LEG;
                        visualPriority |= CoverageMask.OuterwearLowerLegs;
                        break;

                    case 3:     // HUMAN_LEFT_FOOT;
                    case 4:     // HUMAN_LEFT_TOE;
                    case 7:     // HUMAN_RIGHT_FOOT;
                    case 8:     // HUMAN_RIGHT_TOE;
                        visualPriority |= CoverageMask.Feet;
                        break;

                    case 9:     // HUMAN_CHEST;
                        visualPriority |= CoverageMask.OuterwearChest;
                        break;

                    case 10:     // HUMAN_LEFT_UPPER_ARM;
                    case 13:     // HUMAN_RIGHT_UPPER_ARM;
                        visualPriority |= CoverageMask.OuterwearUpperArms;
                        break;

                    case 11:     // HUMAN_LEFT_LOWER_ARM;
                    case 14:     // HUMAN_RIGHT_LOWER_ARM;
                        visualPriority |= CoverageMask.OuterwearLowerArms;
                        break;

                    case 12:     // HUMAN_LEFT_HAND;
                    case 15:     // HUMAN_RIGHT_HAND;
                        visualPriority |= CoverageMask.Hands;
                        break;

                    case 16:     // HUMAN_HEAD;
                        visualPriority |= CoverageMask.Head;
                        break;

                    default:     // Lots of things we don't care about
                        break;
                    }
                }
                return(visualPriority);
            }
            else
            {
                return(null);
            }
        }