Example #1
0
 public void Read(byte[] bytes)
 {
     using (var io = IoBuffer.FromBytes(bytes, ByteOrder.LITTLE_ENDIAN)){
         SuitData  = io.ReadByte();
         SuitScope = (VMSuitScope)io.ReadByte();
         Flags     = (VMChangeSuitOrAccessoryFlags)io.ReadUInt16();
     }
 }
 public void Read(byte[] bytes)
 {
     using (var io = IoBuffer.FromBytes(bytes, ByteOrder.LITTLE_ENDIAN)){
         SuitData = io.ReadByte();
         SuitScope = (VMSuitScope)io.ReadByte();
         Flags = (VMChangeSuitOrAccessoryFlags)io.ReadUInt16();
     }
 }
Example #3
0
        public static Appearance GetSuit(VMStackFrame context, VMSuitScope scope, ushort id)
        {
            switch (scope)
            {
            case VMSuitScope.Object:
                var suitTable = context.Callee.Object.Resource.Get <STR>(304);
                if (suitTable != null)
                {
                    var suitFile = suitTable.GetString(id) + ".apr";

                    var apr = Content.Get().AvatarAppearances.Get(suitFile);
                    return(apr);
                }
                return(null);

            default:
                throw new Exception("I dont know about this suit scope");
            }
        }
Example #4
0
        public static object GetSuit(VMStackFrame context, VMSuitScope scope, ushort id)
        {
            STR suitTable = null;

            var avatar = (VMAvatar)context.Caller;

            switch (scope)
            {
            case VMSuitScope.Object:
                suitTable = context.CodeOwner.Resource.Get <STR>(304);
                break;

            case VMSuitScope.Global:
                suitTable = context.Global.Resource.Get <STR>(304);
                break;

            case VMSuitScope.Person:
                //get outfit from person
                if (context.VM.TS1)
                {
                    return(GetPersonSuitTS1((VMAvatar)context.Caller, id));
                }

                var  type = (VMPersonSuits)id;
                bool male = (avatar.GetPersonData(VMPersonDataVariable.Gender) == 0);
                switch (type)
                {
                //todo: (tail etc), cockroach head

                case VMPersonSuits.DefaultDaywear:
                    return(avatar.DefaultSuits.Daywear.ID);

                case VMPersonSuits.Naked:
                    return((ulong)(male ? 0x24E0000000D : 0x10000000D));

                case VMPersonSuits.DefaultSwimwear:
                    return(avatar.DefaultSuits.Swimwear.ID);

                case VMPersonSuits.JobOutfit:
                    if (context.VM.TS1)
                    {
                        return(null);
                    }
                    var job = avatar.GetPersonData(VMPersonDataVariable.OnlineJobID);
                    if (job < 1 || job > 5)
                    {
                        return(null);
                    }
                    var level = Math.Max(0, Math.Min(3, (avatar.GetPersonData(VMPersonDataVariable.OnlineJobGrade) - 1) / 4));
                    return((ulong)(JobOutfits[male?0:1][job - 1][level]));

                case VMPersonSuits.DefaultSleepwear:
                    return(avatar.DefaultSuits.Sleepwear.ID);

                case VMPersonSuits.SkeletonPlus:
                    return((ulong)(0x5750000000D));

                case VMPersonSuits.SkeletonMinus:
                    return((ulong)(0x5740000000D));

                case VMPersonSuits.TeleporterMishap:
                    return((ulong)(male ? 0x2900000000D : 0x4A0000000D));


                case VMPersonSuits.DynamicDaywear:
                    return(avatar.DynamicSuits.Daywear);

                case VMPersonSuits.DynamicSleepwear:
                    return(avatar.DynamicSuits.Sleepwear);

                case VMPersonSuits.DynamicSwimwear:
                    return(avatar.DynamicSuits.Swimwear);

                case VMPersonSuits.DynamicCostume:
                    return(avatar.DynamicSuits.Costume);

                case VMPersonSuits.DecorationHead:
                    return(avatar.Decoration.Head);

                case VMPersonSuits.DecorationBack:
                    return(avatar.Decoration.Back);

                case VMPersonSuits.DecorationShoes:
                    return(avatar.Decoration.Shoes);

                case VMPersonSuits.DecorationTail:
                    return(avatar.Decoration.Tail);
                }

                return(null);
            }

            if (suitTable != null)
            {
                var suitFile = suitTable.GetString(id) + ".apr";

                return(suitFile);
                //var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile);
                //return apr;
            }
            return(null);
        }
Example #5
0
        public static object GetSuit(VMStackFrame context, VMSuitScope scope, ushort id)
        {
            STR suitTable = null;

            var avatar = (VMAvatar)context.Caller;

            switch (scope)
            {
                case VMSuitScope.Object:
                    suitTable = context.Callee.Object.Resource.Get<STR>(304);
                    break;
                case VMSuitScope.Global:
                    suitTable = context.Global.Resource.Get<STR>(304);
                    break;
                case VMSuitScope.Person:
                    //get outfit from person
                    var type = (VMPersonSuits)id;
                    bool male = (avatar.GetPersonData(VMPersonDataVariable.Gender) == 0);
                    switch (type)
                    {
                        //todo: Dynamic Daywear

                        case VMPersonSuits.DefaultDaywear:
                            return avatar.DefaultSuits.Daywear;
                        case VMPersonSuits.Naked:
                            return (ulong)(male ? 0x24E0000000D : 0x10000000D);
                        case VMPersonSuits.DefaultSwimwear:
                            return avatar.DefaultSuits.Swimwear;
                        case VMPersonSuits.JobOutfit:
                            var job = avatar.GetPersonData(VMPersonDataVariable.OnlineJobID);
                            if (job < 1 || job > 5) return null;
                            var level = Math.Max(0, Math.Min(3, (avatar.GetPersonData(VMPersonDataVariable.OnlineJobGrade) - 1) / 4));
                            return (ulong)(JobOutfits[male?0:1][job-1][level]);
                        case VMPersonSuits.DefaultSleepwear:
                            return avatar.DefaultSuits.Sleepwear;
                        case VMPersonSuits.SkeletonPlus:
                            return (ulong)(0x5750000000D);
                        case VMPersonSuits.SkeletonMinus:
                            return (ulong)(0x5740000000D);
                        case VMPersonSuits.TeleporterMishap:
                          return (ulong)(male ? 0x2900000000D : 0x4A0000000D);
                    }

                    return null;
            }

            if (suitTable != null)
            {
                var suitFile = suitTable.GetString(id) + ".apr";

                return suitFile;
                //var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile);
                //return apr;
            }
            return null;
        }
Example #6
0
        public static Appearance GetSuit(VMStackFrame context, VMSuitScope scope, ushort id)
        {
            switch (scope)
            {
                case VMSuitScope.Object:
                    var suitTable = context.Callee.Object.Resource.Get<STR>(304);
                    if (suitTable != null){
                        var suitFile = suitTable.GetString(id) + ".apr";

                        var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile);
                        return apr;
                    }
                    return null;
                default:
                    return null;
                    throw new VMSimanticsException("I dont know about this suit scope", context);
            }
        }