Пример #1
0
        private void decodeHeader()
        {
            DataInputStream stream   = new DataInputStream(_archive.Data);
            int             protocol = stream.readUnsignedByte();

            if (protocol < 5 || protocol > 7)
            {
                throw new ArgumentOutOfRangeException("INVALID PROTOCOL");
            }

            if (protocol >= 6)
            {
                _revision = stream.readInt();
            }

            int hash = stream.readUnsignedByte();

            _named         = (0x1 & hash) != 0;
            _usingWhirpool = (0x2 & hash) != 0;

            int validArchivesCount = protocol >= 7 ? stream.readBigSmart() : stream.readUnsignedShort();

            _validArchiveIds = new int[validArchivesCount];

            int lastArchiveId    = 0;
            int biggestArchiveId = 0;

            for (int i = 0; i < validArchivesCount; i++)
            {
                int archiveId = (lastArchiveId = lastArchiveId + (protocol >= 7 ? stream.readBigSmart() : stream.readUnsignedShort()));
                if (archiveId > biggestArchiveId)
                {
                    biggestArchiveId = archiveId;
                }

                _validArchiveIds[i] = archiveId;
            }

            _archiveList = new ArchiveReference[biggestArchiveId + 1];

            for (int i = 0; i < validArchivesCount; i++)
            {
                _archiveList[_validArchiveIds[i]] = new ArchiveReference();
            }

            if (_named)
            {
                for (int i = 0; i < validArchivesCount; i++)
                {
                    _archiveList[_validArchiveIds[i]].NameHash = stream.readInt();
                }
            }

            if (_usingWhirpool)
            {
                for (int i = 0; i < validArchivesCount; i++)
                {
                    byte[] whirpool = new byte[64];
                    stream.Read(whirpool, 0, 64);
                    _archiveList[_validArchiveIds[i]].Whirpool = (whirpool);
                }
            }

            for (int i = 0; i < validArchivesCount; i++)
            {
                _archiveList[_validArchiveIds[i]].CRC = stream.readInt();
            }
            for (int i = 0; i < validArchivesCount; i++)
            {
                _archiveList[_validArchiveIds[i]].Revision = stream.readInt();
            }
            for (int i = 0; i < validArchivesCount; i++)
            {
                _archiveList[_validArchiveIds[i]].ValidFileIds = new int[(protocol >= 7 ? stream.readBigSmart() : stream.readUnsignedShort())];
            }

            for (int i = 0; i < validArchivesCount; i++)
            {
                int lastFileId           = 0;
                int biggestFileId        = 0;
                ArchiveReference archive = _archiveList[_validArchiveIds[i]];

                for (int j = 0; j < archive.ValidFileIds.Length; j++)
                {
                    int fileId = (lastFileId = lastFileId + (protocol >= 7 ? stream.readBigSmart() : stream.readUnsignedShort()));
                    if (fileId > biggestFileId)
                    {
                        biggestFileId = fileId;
                    }

                    archive.ValidFileIds[j] = fileId;
                }

                archive.FileList = (new FileReference[biggestFileId + 1]);

                for (int j = 0; j < archive.ValidFileIds.Length; j++)
                {
                    archive.FileList[archive.ValidFileIds[j]] = new FileReference();
                }
            }

            if (_named)
            {
                for (int i = 0; i < validArchivesCount; i++)
                {
                    ArchiveReference archive = _archiveList[_validArchiveIds[i]];
                    for (int j = 0; j < archive.ValidFileIds.Length; j++)
                    {
                        archive.FileList[archive.ValidFileIds[j]].NameHash = (stream.readInt());
                    }
                }
            }
        }
Пример #2
0
 private void readOpcode(DataInputStream stream, int opcode)
 {
     if (opcode == 1)
     {
         modelId = stream.readBigSmart();
     }
     else if (opcode == 2)
     {
         name = stream.readString();
     }
     else if (opcode == 4)
     {
         modelZoom = stream.readUnsignedShort();
     }
     else if (opcode == 5)
     {
         modelRotation1 = stream.readUnsignedShort();
     }
     else if (opcode == 6)
     {
         modelRotation2 = stream.readUnsignedShort();
     }
     else if (opcode == 7)
     {
         modelOffset1 = stream.readUnsignedShort();
         if (modelOffset1 > 32767)
         {
             modelOffset1 -= 65536;
         }
         modelOffset1 <<= 0;
     }
     else if (opcode == 8)
     {
         modelOffset2 = stream.readUnsignedShort();
         if (modelOffset2 > 32767)
         {
             modelOffset2 -= 65536;
         }
         modelOffset2 <<= 0;
     }
     else if (opcode == 11)
     {
         stackable = 1;
     }
     else if (opcode == 12)
     {
         value = stream.readInt();
     }
     else if (opcode == 117)
     {
         opcode117 = stream.readUnsignedByte();
     }
     else if (opcode == 211)
     {
         opcode211 = stream.readUnsignedByte();
     }
     else if (opcode == 255)
     {
         opcode255 = stream.readUnsignedByte();
     }
     else if (opcode == 75)
     {
         opcode75 = stream.readUnsignedByte();
     }
     else if (opcode == 87)
     {
         opcode87 = stream.readUnsignedByte();
     }
     else if (opcode == 68)
     {
         opcode68 = stream.readUnsignedByte();
     }
     else if (opcode == 118)
     {
         opcode118 = stream.readUnsignedByte();
     }
     else if (opcode == 83)
     {
         opcode83 = stream.readUnsignedByte();
     }
     else if (opcode == 254)
     {
         opcode254 = stream.readUnsignedByte();
     }
     else if (opcode == 156)
     {
         opcode156 = stream.readUnsignedByte();
     }
     else if (opcode == 232)
     {
         opcode232 = stream.readUnsignedByte();
     }
     else if (opcode == 199)
     {
         opcode199 = stream.readUnsignedByte();
     }
     else if (opcode == 253)
     {
         opcode253 = stream.readUnsignedByte();
     }
     else if (opcode == 223)
     {
         opcode223 = stream.readUnsignedByte();
     }
     else if (opcode == 198)
     {
         opcode198 = stream.readUnsignedByte();
     }
     else if (opcode == 186)
     {
         opcode186 = stream.readUnsignedByte();
     }
     else if (opcode == 29)
     {
         opcode29 = stream.readUnsignedByte();
     }
     else if (opcode == 238)
     {
         opcode238 = stream.readUnsignedByte();
     }
     else if (opcode == 153)
     {
         opcode153 = stream.readUnsignedByte();
     }
     else if (opcode == 155)
     {
         opcode155 = stream.readUnsignedByte();
     }
     else if (opcode == 99)
     {
         opcode99 = stream.readUnsignedByte();
     }
     else if (opcode == 251)
     {
         opcode251 = stream.readUnsignedByte();
     }
     else if (opcode == 22)
     {
         opcode22 = stream.readUnsignedByte();
     }
     else if (opcode == 192)
     {
         opcode192 = stream.readUnsignedByte();
     }
     else if (opcode == 245)
     {
         opcode245 = stream.readUnsignedByte();
     }
     else if (opcode == 45)
     {
         opcode45 = stream.readUnsignedByte();
     }
     else if (opcode == 56)
     {
         opcode56 = stream.readUnsignedByte();
     }
     else if (opcode == 248)
     {
         opcode248 = stream.readUnsignedByte();
     }
     else if (opcode == 237)
     {
         opcode237 = stream.readUnsignedByte();
     }
     else if (opcode == 243)
     {
         opcode243 = stream.readUnsignedByte();
     }
     else if (opcode == 185)
     {
         opcode185 = stream.readUnsignedByte();
     }
     else if (opcode == 221)
     {
         opcode221 = stream.readUnsignedByte();
     }
     else if (opcode == 240)
     {
         opcode240 = stream.readUnsignedByte();
     }
     else if (opcode == 154)
     {
         opcode154 = stream.readUnsignedByte();
     }
     else if (opcode == 158)
     {
         opcode158 = stream.readUnsignedByte();
     }
     else if (opcode == 137)
     {
         opcode137 = stream.readUnsignedByte();
     }
     else if (opcode == 143)
     {
         opcode143 = stream.readUnsignedByte();
     }
     else if (opcode == 61)
     {
         opcode61 = stream.readUnsignedByte();
     }
     else if (opcode == 80)
     {
         opcode80 = stream.readUnsignedByte();
     }
     else if (opcode == 196)
     {
         opcode196 = stream.readUnsignedByte();
     }
     else if (opcode == 85)
     {
         opcode85 = stream.readUnsignedByte();
     }
     else if (opcode == 239)
     {
         opcode239 = stream.readUnsignedByte();
     }
     else if (opcode == 177)
     {
         opcode177 = stream.readUnsignedByte();
     }
     else if (opcode == 163)
     {
         opcode163 = stream.readUnsignedByte();
     }
     else if (opcode == 150)
     {
         opcode150 = stream.readUnsignedByte();
     }
     else if (opcode == 152)
     {
         opcode152 = stream.readUnsignedByte();
     }
     else if (opcode == 135)
     {
         opcode135 = stream.readUnsignedByte();
     }
     else if (opcode == 120)
     {
         opcode120 = stream.readUnsignedByte();
     }
     else if (opcode == 204)
     {
         opcode204 = stream.readUnsignedByte();
     }
     else if (opcode == 81)
     {
         opcode81 = stream.readUnsignedByte();
     }
     else if (opcode == 208)
     {
         opcode208 = stream.readUnsignedByte();
     }
     else if (opcode == 242)
     {
         opcode242 = stream.readUnsignedByte();
     }
     else if (opcode == 15)
     {
         opcode15 = stream.readUnsignedByte();
     }
     else if (opcode == 233)
     {
         opcode233 = stream.readUnsignedByte();
     }
     else if (opcode == 213)
     {
         opcode213 = stream.readUnsignedByte();
     }
     else if (opcode == 207)
     {
         opcode207 = stream.readUnsignedByte();
     }
     else if (opcode == 216)
     {
         opcode216 = stream.readUnsignedByte();
     }
     else if (opcode == 206)
     {
         opcode206 = stream.readUnsignedByte();
     }
     else if (opcode == 50)
     {
         opcode50 = stream.readUnsignedByte();
     }
     else if (opcode == 193)
     {
         opcode193 = stream.readUnsignedByte();
     }
     else if (opcode == 71)
     {
         opcode71 = stream.readUnsignedByte();
     }
     else if (opcode == 10)
     {
         opcode10 = stream.readUnsignedByte();
     }
     else if (opcode == 55)
     {
         opcode55 = stream.readUnsignedByte();
     }
     else if (opcode == 144)
     {
         opcode144 = stream.readUnsignedByte();
     }
     else if (opcode == 235)
     {
         opcode235 = stream.readUnsignedByte();
     }
     else if (opcode == 188)
     {
         opcode188 = stream.readUnsignedByte();
     }
     else if (opcode == 241)
     {
         opcode241 = stream.readUnsignedByte();
     }
     else if (opcode == 236)
     {
         opcode236 = stream.readUnsignedByte();
     }
     else if (opcode == 182)
     {
         opcode182 = stream.readUnsignedByte();
     }
     else if (opcode == 169)
     {
         opcode169 = stream.readUnsignedByte();
     }
     else if (opcode == 190)
     {
         opcode190 = stream.readUnsignedByte();
     }
     else if (opcode == 178)
     {
         opcode178 = stream.readUnsignedByte();
     }
     else if (opcode == 88)
     {
         opcode88 = stream.readUnsignedByte();
     }
     else if (opcode == 200)
     {
         opcode200 = stream.readUnsignedByte();
     }
     else if (opcode == 184)
     {
         opcode184 = stream.readUnsignedByte();
     }
     else if (opcode == 176)
     {
         opcode176 = stream.readUnsignedByte();
     }
     else if (opcode == 197)
     {
         opcode197 = stream.readUnsignedByte();
     }
     else if (opcode == 247)
     {
         opcode247 = stream.readUnsignedByte();
     }
     else if (opcode == 218)
     {
         opcode218 = stream.readUnsignedByte();
     }
     else if (opcode == 250)
     {
         opcode250 = stream.readUnsignedByte();
     }
     else if (opcode == 174)
     {
         opcode174 = stream.readUnsignedByte();
     }
     else if (opcode == 210)
     {
         opcode210 = stream.readUnsignedByte();
     }
     else if (opcode == 164)
     {
         opcode164 = stream.readUnsignedByte();
     }
     else if (opcode == 142)
     {
         opcode142 = stream.readUnsignedByte();
     }
     else if (opcode == 148)
     {
         opcode148 = stream.readUnsignedByte();
     }
     else if (opcode == 133)
     {
         opcode133 = stream.readUnsignedByte();
     }
     else if (opcode == 222)
     {
         opcode222 = stream.readUnsignedByte();
     }
     else if (opcode == 138)
     {
         opcode138 = stream.readUnsignedByte();
     }
     else if (opcode == 194)
     {
         opcode194 = stream.readUnsignedByte();
     }
     else if (opcode == 119)
     {
         opcode119 = stream.readUnsignedByte();
     }
     else if (opcode == 202)
     {
         opcode202 = stream.readUnsignedByte();
     }
     else if (opcode == 149)
     {
         opcode149 = stream.readUnsignedByte();
     }
     else if (opcode == 64)
     {
         opcode64 = stream.readUnsignedByte();
     }
     else if (opcode == 147)
     {
         opcode147 = stream.readUnsignedByte();
     }
     else if (opcode == 214)
     {
         opcode214 = stream.readUnsignedByte();
     }
     else if (opcode == 74)
     {
         opcode74 = stream.readUnsignedByte();
     }
     else if (opcode == 86)
     {
         opcode86 = stream.readUnsignedByte();
     }
     else if (opcode == 167)
     {
         opcode167 = stream.readUnsignedByte();
     }
     else if (opcode == 161)
     {
         opcode161 = stream.readUnsignedByte();
     }
     else if (opcode == 58)
     {
         opcode58 = stream.readUnsignedByte();
     }
     else if (opcode == 59)
     {
         opcode59 = stream.readUnsignedByte();
     }
     else if (opcode == 187)
     {
         opcode187 = stream.readUnsignedByte();
     }
     else if (opcode == 77)
     {
         opcode77 = stream.readUnsignedByte();
     }
     else if (opcode == 229)
     {
         opcode229 = stream.readUnsignedByte();
     }
     else if (opcode == 230)
     {
         opcode230 = stream.readUnsignedByte();
     }
     else if (opcode == 17)
     {
         opcode17 = stream.readUnsignedByte();
     }
     else if (opcode == 67)
     {
         opcode67 = stream.readUnsignedByte();
     }
     else if (opcode == 131)
     {
         opcode131 = stream.readUnsignedByte();
     }
     else if (opcode == 225)
     {
         opcode225 = stream.readUnsignedByte();
     }
     else if (opcode == 203)
     {
         opcode203 = stream.readUnsignedByte();
     }
     else if (opcode == 19)
     {
         opcode19 = stream.readUnsignedByte();
     }
     else if (opcode == 43)
     {
         opcode43 = stream.readUnsignedByte();
     }
     else if (opcode == 168)
     {
         opcode168 = stream.readUnsignedByte();
     }
     else if (opcode == 46)
     {
         opcode46 = stream.readUnsignedByte();
     }
     else if (opcode == 209)
     {
         opcode209 = stream.readUnsignedByte();
     }
     else if (opcode == 166)
     {
         opcode166 = stream.readUnsignedByte();
     }
     else if (opcode == 54)
     {
         opcode54 = stream.readUnsignedByte();
     }
     else if (opcode == 21)
     {
         opcode21 = stream.readUnsignedByte();
     }
     else if (opcode == 73)
     {
         opcode73 = stream.readUnsignedByte();
     }
     else if (opcode == 159)
     {
         opcode159 = stream.readUnsignedByte();
     }
     else if (opcode == 123)
     {
         opcode123 = stream.readUnsignedByte();
     }
     else if (opcode == 146)
     {
         opcode146 = stream.readUnsignedByte();
     }
     else if (opcode == 180)
     {
         opcode180 = stream.readUnsignedByte();
     }
     else if (opcode == 20)
     {
         opcode20 = stream.readUnsignedByte();
     }
     else if (opcode == 165)
     {
         opcode165 = stream.readUnsignedByte();
     }
     else if (opcode == 84)
     {
         opcode84 = stream.readUnsignedByte();
     }
     else if (opcode == 28)
     {
         opcode28 = stream.readUnsignedByte();
     }
     else if (opcode == 175)
     {
         opcode175 = stream.readUnsignedByte();
     }
     else if (opcode == 141)
     {
         opcode141 = stream.readUnsignedByte();
     }
     else if (opcode == 205)
     {
         opcode205 = stream.readUnsignedByte();
     }
     else if (opcode == 220)
     {
         opcode220 = stream.readUnsignedByte();
     }
     else if (opcode == 136)
     {
         opcode136 = stream.readUnsignedByte();
     }
     else if (opcode == 212)
     {
         opcode212 = stream.readUnsignedByte();
     }
     else if (opcode == 49)
     {
         opcode49 = stream.readUnsignedByte();
     }
     else if (opcode == 69)
     {
         opcode69 = stream.readUnsignedByte();
     }
     else if (opcode == 72)
     {
         opcode72 = stream.readUnsignedByte();
     }
     else if (opcode == 60)
     {
         opcode60 = stream.readUnsignedByte();
     }
     else if (opcode == 62)
     {
         opcode62 = stream.readUnsignedByte();
     }
     else if (opcode == 219)
     {
         opcode219 = stream.readUnsignedByte();
     }
     else if (opcode == 44)
     {
         opcode44 = stream.readUnsignedByte();
     }
     else if (opcode == 227)
     {
         opcode227 = stream.readUnsignedByte();
     }
     else if (opcode == 76)
     {
         opcode76 = stream.readUnsignedByte();
     }
     else if (opcode == 234)
     {
         opcode234 = stream.readUnsignedByte();
     }
     else if (opcode == 57)
     {
         opcode57 = stream.readUnsignedByte();
     }
     else if (opcode == 51)
     {
         opcode51 = stream.readUnsignedByte();
     }
     else if (opcode == 124)
     {
         opcode124 = stream.readUnsignedByte();
     }
     else if (opcode == 70)
     {
         opcode70 = stream.readUnsignedByte();
     }
     else if (opcode == 231)
     {
         opcode231 = stream.readUnsignedByte();
     }
     else if (opcode == 162)
     {
         opcode162 = stream.readUnsignedByte();
     }
     else if (opcode == 160)
     {
         opcode160 = stream.readUnsignedByte();
     }
     else if (opcode == 181)
     {
         opcode181 = stream.readUnsignedByte();
     }
     else if (opcode == 183)
     {
         opcode183 = stream.readUnsignedByte();
     }
     else if (opcode == 191)
     {
         opcode191 = stream.readUnsignedByte();
     }
     else if (opcode == 189)
     {
         opcode189 = stream.readUnsignedByte();
     }
     else if (opcode == 179)
     {
         opcode179 = stream.readUnsignedByte();
     }
     else if (opcode == 173)
     {
         opcode173 = stream.readUnsignedByte();
     }
     else if (opcode == 48)
     {
         opcode48 = stream.readUnsignedByte();
     }
     else if (opcode == 172)
     {
         opcode172 = stream.readUnsignedByte();
     }
     else if (opcode == 42)
     {
         opcode42 = stream.readUnsignedByte();
     }
     else if (opcode == 47)
     {
         opcode47 = stream.readUnsignedByte();
     }
     else if (opcode == 246)
     {
         opcode246 = stream.readUnsignedByte();
     }
     else if (opcode == 89)
     {
         opcode89 = stream.readUnsignedByte();
     }
     else if (opcode == 195)
     {
         opcode195 = stream.readUnsignedByte();
     }
     else if (opcode == 145)
     {
         opcode145 = stream.readUnsignedByte();
     }
     else if (opcode == 224)
     {
         opcode224 = stream.readUnsignedByte();
     }
     else if (opcode == 63)
     {
         opcode63 = stream.readUnsignedByte();
     }
     else if (opcode == 94)
     {
         opcode94 = stream.readUnsignedByte();
     }
     else if (opcode == 201)
     {
         opcode201 = stream.readUnsignedByte();
     }
     else if (opcode == 217)
     {
         opcode217 = stream.readUnsignedByte();
     }
     else if (opcode == 252)
     {
         opcode252 = stream.readUnsignedByte();
     }
     else if (opcode == 228)
     {
         opcode228 = stream.readUnsignedByte();
     }
     else if (opcode == 82)
     {
         opcode82 = stream.readUnsignedByte();
     }
     else if (opcode == 13)
     {
         opcode13 = stream.readUnsignedByte();
     }
     else if (opcode == 14)
     {
         opcode14 = stream.readUnsignedByte();
     }
     else if (opcode == 9)
     {
         opcode9 = stream.readUnsignedByte();
     }
     else if (opcode == 27)
     {
         opcode27 = stream.readUnsignedByte();
     }
     else if (opcode == 66)
     {
         opcode66 = stream.readUnsignedByte();
     }
     else if (opcode == 116)
     {
         opcode116 = stream.readUnsignedByte();
     }
     else if (opcode == 157)
     {
         opcode157 = stream.readUnsignedByte();
     }
     else if (opcode == 244)
     {
         opcode244 = stream.readUnsignedByte();
     }
     else if (opcode == 53)
     {
         opcode53 = stream.readUnsignedByte();
     }
     else if (opcode == 215)
     {
         opcode215 = stream.readUnsignedByte();
     }
     else if (opcode == 171)
     {
         opcode171 = stream.readUnsignedByte();
     }
     else if (opcode == 3)
     {
         opcode3 = stream.readUnsignedByte();
     }
     else if (opcode == 170)
     {
         opcode170 = stream.readUnsignedByte();
     }
     else if (opcode == 226)
     {
         opcode226 = stream.readUnsignedByte();
     }
     else if (opcode == 52)
     {
         opcode52 = stream.readUnsignedByte();
     }
     else if (opcode == 151)
     {
         opcode151 = stream.readUnsignedByte();                //		14 66 116 157 244 170 151 9 27
     }
     else if (opcode == 16)
     {
         membersOnly = true;
     }
     else if (opcode == 18)             // added
     {
         stream.readUnsignedShort();
     }
     else if (opcode == 23)
     {
         maleEquip1 = stream.readBigSmart();
     }
     else if (opcode == 24)
     {
         maleEquip2 = stream.readBigSmart();
     }
     else if (opcode == 25)
     {
         femaleEquip1 = stream.readBigSmart();
     }
     else if (opcode == 26)
     {
         femaleEquip2 = stream.readBigSmart();
     }
     else if (opcode >= 30 && opcode < 35)
     {
         groundOptions[opcode - 30] = stream.readString();
     }
     else if (opcode >= 35 && opcode < 40)
     {
         inventoryOptions[opcode - 35] = stream.readString();
     }
     else if (opcode == 40)
     {
         int length = stream.readUnsignedByte();
         originalModelColors = new int[length];
         modifiedModelColors = new int[length];
         for (int index = 0; index < length; index++)
         {
             originalModelColors[index] = stream.readUnsignedShort();
             modifiedModelColors[index] = stream.readUnsignedShort();
         }
     }
     else if (opcode == 41)
     {
         int length = stream.readUnsignedByte();
         originalTextureColors = new short[length];
         modifiedTextureColors = new short[length];
         for (int index = 0; index < length; index++)
         {
             originalTextureColors[index] = (short)stream
                                            .readUnsignedShort();
             modifiedTextureColors[index] = (short)stream
                                            .readUnsignedShort();
         }
     }
     else if (opcode == 42)
     {
         int length = stream.readUnsignedByte();
         unknownArray1 = new byte[length];
         for (int index = 0; index < length; index++)
         {
             unknownArray1[index] = (byte)stream.readByte();
         }
     }
     else if (opcode == 65)
     {
         unnoted = true;
     }
     else if (opcode == 78)
     {
         maleEquipModelId3 = stream.readBigSmart();
     }
     else if (opcode == 79)
     {
         femaleEquipModelId3 = stream.readBigSmart();
     }
     else if (opcode == 90)
     {
         unknownInt1 = stream.readBigSmart();
     }
     else if (opcode == 91)
     {
         unknownInt2 = stream.readBigSmart();
     }
     else if (opcode == 92)
     {
         unknownInt3 = stream.readBigSmart();
     }
     else if (opcode == 93)
     {
         unknownInt4 = stream.readBigSmart();
     }
     else if (opcode == 95)
     {
         unknownInt5 = stream.readUnsignedShort();
     }
     else if (opcode == 96)
     {
         unknownInt6 = stream.readUnsignedByte();
     }
     else if (opcode == 97)
     {
         certId = stream.readUnsignedShort();
     }
     else if (opcode == 98)
     {
         certTemplateId = stream.readUnsignedShort();
     }
     else if (opcode >= 100 && opcode < 110)
     {
         if (stackIds == null)
         {
             stackIds     = new int[10];
             stackAmounts = new int[10];
         }
         stackIds[opcode - 100]     = stream.readUnsignedShort();
         stackAmounts[opcode - 100] = stream.readUnsignedShort();
     }
     else if (opcode == 110)
     {
         unknownInt7 = stream.readUnsignedShort();
     }
     else if (opcode == 111)
     {
         unknownInt8 = stream.readUnsignedShort();
     }
     else if (opcode == 112)
     {
         unknownInt9 = stream.readUnsignedShort();
     }
     else if (opcode == 113)
     {
         unknownInt10 = stream.readByte();
     }
     else if (opcode == 114)
     {
         unknownInt11 = stream.readByte() * 5;
     }
     else if (opcode == 115)
     {
         teamId = stream.readUnsignedByte();
     }
     else if (opcode == 121)
     {
         lendId = stream.readUnsignedShort();
     }
     else if (opcode == 122)
     {
         lendTemplateId = stream.readUnsignedShort();
     }
     else if (opcode == 125)
     {
         unknownInt12 = stream.readByte() << 0;
         unknownInt13 = stream.readByte() << 0;
         unknownInt14 = stream.readByte() << 0;
     }
     else if (opcode == 126)
     {
         unknownInt15 = stream.readByte() << 0;
         unknownInt16 = stream.readByte() << 0;
         unknownInt17 = stream.readByte() << 0;
     }
     else if (opcode == 127)
     {
         unknownInt18 = stream.readUnsignedByte();
         unknownInt19 = stream.readUnsignedShort();
     }
     else if (opcode == 128)
     {
         unknownInt20 = stream.readUnsignedByte();
         unknownInt21 = stream.readUnsignedShort();
     }
     else if (opcode == 129)
     {
         unknownInt20 = stream.readUnsignedByte();
         unknownInt21 = stream.readUnsignedShort();
     }
     else if (opcode == 130)
     {
         unknownInt22 = stream.readUnsignedByte();
         unknownInt23 = stream.readUnsignedShort();
     }
     else if (opcode == 132)
     {
         int length = stream.readUnsignedByte();
         unknownArray2 = new int[length];
         for (int index = 0; index < length; index++)
         {
             unknownArray2[index] = stream.readUnsignedShort();
         }
     }
     else if (opcode == 134)
     {
         int unknownValue = stream.readUnsignedByte();
     }
     else if (opcode == 139)
     {
         unknownValue2 = stream.readUnsignedShort();
     }
     else if (opcode == 140)
     {
         unknownValue1 = stream.readUnsignedShort();
     }
     else if (opcode == 249)
     {
         int length = stream.readUnsignedByte();
         for (int index = 0; index < length; index++)
         {
             bool stringInstance = stream.readUnsignedByte() == 1;
             int  key            = stream.read24BitInt();
             if (stringInstance)
             {
                 stream.readString();
             }
             else
             {
                 stream.readInt();
             }
         }
     }
     else
     {
         throw new ArgumentOutOfRangeException("MISSING OPCODE " + opcode + " FOR ITEM " + Id);
     }
 }