All pastes #538086 Raw Edit

Unnamed

public java v1 · immutable
·published 2007-06-04 23:05 UTC
rendered paste body
    private final void parseNPCPacket(Stream stream, int i)    {        playerIdsIDX = 0;        anInt893 = 0;        readNPCWalkingData(stream, i);        readNPCPositionData(i, stream);        readNPCUpdateData(i, stream, true);        for(int k = 0; k < playerIdsIDX; k++)        {            int l = playerIDs[k];            if(((AnimableObject) (npcs[l])).anInt1537 != loopCycle)            {                npcs[l].myData = null;                npcs[l] = null;            }        }        if(stream.streamPos != i)        {            signlink.reporterror(aString1173 + " size mismatch in getnpcpos - pos:" + stream.streamPos + " psize:" + i);            throw new RuntimeException("eek");        }        for(int i1 = 0; i1 < npcCount; i1++)            if(npcs[npcServerIndex[i1]] == null)            {                signlink.reporterror(aString1173 + " null entry in npc list - pos:" + i1 + " size:" + npcCount);                throw new RuntimeException("eek");            }    }   private final void readNPCWalkingData(Stream stream, int j)    {        stream.initBitAccess();        int k = stream.readBits(8, 0);        if(k < npcCount)        {            for(int l = k; l < npcCount; l++)                playerIDs[playerIdsIDX++] = npcServerIndex[l];        }        if(k > npcCount)        {            signlink.reporterror(aString1173 + " Too many npcs");            throw new RuntimeException("eek");        }        npcCount = 0;        for(int i1 = 0; i1 < k; i1++)        {            int j1 = npcServerIndex[i1];            NPC WalkingObject_sub1 = npcs[j1];            int k1 = stream.readBits(1, 0);            if(k1 == 0)            {                npcServerIndex[npcCount++] = j1;                WalkingObject_sub1.anInt1537 = loopCycle;            } else            {                int l1 = stream.readBits(2, 0);                if(l1 == 0)                {                    npcServerIndex[npcCount++] = j1;                    WalkingObject_sub1.anInt1537 = loopCycle;                    anIntArray894[anInt893++] = j1;                } else                if(l1 == 1)                {                    npcServerIndex[npcCount++] = j1;                    WalkingObject_sub1.anInt1537 = loopCycle;                    int i2 = stream.readBits(3, 0);                    WalkingObject_sub1.method448(false, (byte)20, i2);                    int k2 = stream.readBits(1, 0);                    if(k2 == 1)                        anIntArray894[anInt893++] = j1;                } else                if(l1 == 2)                {                    npcServerIndex[npcCount++] = j1;                    WalkingObject_sub1.anInt1537 = loopCycle;                    int j2 = stream.readBits(3, 0);                    WalkingObject_sub1.method448(true, (byte)20, j2);                    int l2 = stream.readBits(3, 0);                    WalkingObject_sub1.method448(true, (byte)20, l2);                    int i3 = stream.readBits(1, 0);                    if(i3 == 1)                        anIntArray894[anInt893++] = j1;                } else                if(l1 == 3)                    playerIDs[playerIdsIDX++] = j1;            }        }    }    private final void readNPCPositionData(int i, Stream stream)    {        while(stream.bitPos + 21 < i * 8)        {            int k = stream.readBits(14, 0);            if(k == 16383)                break;            if(npcs[k] == null)                npcs[k] = new NPC();            NPC class30_sub2_sub4_sub1_sub1 = npcs[k];            npcServerIndex[npcCount++] = k;            class30_sub2_sub4_sub1_sub1.anInt1537 = loopCycle;            int l = stream.readBits(5, 0);            if(l > 15)                l -= 32;            int i1 = stream.readBits(5, 0);            if(i1 > 15)                i1 -= 32;            int j1 = stream.readBits(1, 0);            int npcid = stream.readBits(13, 0);            class30_sub2_sub4_sub1_sub1.myData = NPCData.loadFromCache(npcid);            int k1 = stream.readBits(1, 0);            if(k1 == 1)                anIntArray894[anInt893++] = k;            class30_sub2_sub4_sub1_sub1.anInt1540 = class30_sub2_sub4_sub1_sub1.myData.aByte68;            class30_sub2_sub4_sub1_sub1.anInt1504 = class30_sub2_sub4_sub1_sub1.myData.anInt79;            class30_sub2_sub4_sub1_sub1.walkAnimID = class30_sub2_sub4_sub1_sub1.myData.walkAnimID;            class30_sub2_sub4_sub1_sub1.turn180AnimID = class30_sub2_sub4_sub1_sub1.myData.turn180AnimID;            class30_sub2_sub4_sub1_sub1.turn90CWAnimID = class30_sub2_sub4_sub1_sub1.myData.cwAnimID;            class30_sub2_sub4_sub1_sub1.turn90CCWAnimID = class30_sub2_sub4_sub1_sub1.myData.ccwAnimID;            class30_sub2_sub4_sub1_sub1.standAnimID = class30_sub2_sub4_sub1_sub1.myData.standAnimID;            class30_sub2_sub4_sub1_sub1.method445(((AnimableObject) (playerMe)).posX[0] + i1, ((AnimableObject) (playerMe)).posY[0] + l, j1 == 1, false);        }        stream.finishBitAccess(true);    }    private final void readNPCUpdateData(int i, Stream stream, boolean flag)    {        for(int j = 0; j < anInt893; j++)        {            int k = anIntArray894[j];            NPC class30_sub2_sub4_sub1_sub1 = npcs[k];            int l = stream.readUnsignedByte();            if((l & 0x10) != 0)            {                int i1 = stream.readUnsignedWordBigEndian();                if(i1 == 65535)                    i1 = -1;                int i2 = stream.readUnsignedByte();                if(i1 == ((AnimableObject) (class30_sub2_sub4_sub1_sub1)).animationIdx && i1 != -1)                {                    int l2 = AnimSeqData.animSeqCache[i1].anInt365;                    if(l2 == 1)                    {                        class30_sub2_sub4_sub1_sub1.anInt1527 = 0;                        class30_sub2_sub4_sub1_sub1.anInt1528 = 0;                        class30_sub2_sub4_sub1_sub1.animationDelay = i2;                        class30_sub2_sub4_sub1_sub1.anInt1530 = 0;                    }                    if(l2 == 2)                        class30_sub2_sub4_sub1_sub1.anInt1530 = 0;                } else                if(i1 == -1 || ((AnimableObject) (class30_sub2_sub4_sub1_sub1)).animationIdx == -1 || AnimSeqData.animSeqCache[i1].anInt359 >= AnimSeqData.animSeqCache[((AnimableObject) (class30_sub2_sub4_sub1_sub1)).animationIdx].anInt359)                {                    class30_sub2_sub4_sub1_sub1.animationIdx = i1;                    class30_sub2_sub4_sub1_sub1.anInt1527 = 0;                    class30_sub2_sub4_sub1_sub1.anInt1528 = 0;                    class30_sub2_sub4_sub1_sub1.animationDelay = i2;                    class30_sub2_sub4_sub1_sub1.anInt1530 = 0;                    class30_sub2_sub4_sub1_sub1.anInt1542 = ((AnimableObject) (class30_sub2_sub4_sub1_sub1)).anInt1525;                }            }            if((l & 8) != 0)            {                int j1 = stream.readUnsignedByteA();                int j2 = stream.readUnsignedByteC();                class30_sub2_sub4_sub1_sub1.method447(-35698, j2, j1, loopCycle);                class30_sub2_sub4_sub1_sub1.hpBarVisEnd = loopCycle + 300;                class30_sub2_sub4_sub1_sub1.currentHits = stream.readUnsignedByteA();                class30_sub2_sub4_sub1_sub1.maxHits = stream.readUnsignedByte();            }            if((l & 0x80) != 0)            {                class30_sub2_sub4_sub1_sub1.anInt1520 = stream.readUnsignedWord();                int k1 = stream.readDWord();                class30_sub2_sub4_sub1_sub1.anInt1524 = k1 >> 16;                class30_sub2_sub4_sub1_sub1.anInt1523 = loopCycle + (k1 & 0xffff);                class30_sub2_sub4_sub1_sub1.anInt1521 = 0;                class30_sub2_sub4_sub1_sub1.anInt1522 = 0;                if(((AnimableObject) (class30_sub2_sub4_sub1_sub1)).anInt1523 > loopCycle)                    class30_sub2_sub4_sub1_sub1.anInt1521 = -1;                if(((AnimableObject) (class30_sub2_sub4_sub1_sub1)).anInt1520 == 65535)                    class30_sub2_sub4_sub1_sub1.anInt1520 = -1;            }            if((l & 0x20) != 0)            {                class30_sub2_sub4_sub1_sub1.serverPosition = stream.readUnsignedWord();                if(((AnimableObject) (class30_sub2_sub4_sub1_sub1)).serverPosition == 65535)                    class30_sub2_sub4_sub1_sub1.serverPosition = -1;            }            if((l & 1) != 0)            {                class30_sub2_sub4_sub1_sub1.chatString = stream.readString();                class30_sub2_sub4_sub1_sub1.chatVisLen = 100;            }            if((l & 0x40) != 0)            {                int l1 = stream.readUnsignedByteC();                int k2 = stream.readUnsignedByteS();                class30_sub2_sub4_sub1_sub1.method447(-35698, k2, l1, loopCycle);                class30_sub2_sub4_sub1_sub1.hpBarVisEnd = loopCycle + 300;                class30_sub2_sub4_sub1_sub1.currentHits = stream.readUnsignedByteS();                class30_sub2_sub4_sub1_sub1.maxHits = stream.readUnsignedByteC();            }            if((l & 2) != 0)            {                class30_sub2_sub4_sub1_sub1.myData = NPCData.loadFromCache(stream.readUnsignedWordBigEndianA());                class30_sub2_sub4_sub1_sub1.anInt1540 = class30_sub2_sub4_sub1_sub1.myData.aByte68;                class30_sub2_sub4_sub1_sub1.anInt1504 = class30_sub2_sub4_sub1_sub1.myData.anInt79;                class30_sub2_sub4_sub1_sub1.walkAnimID = class30_sub2_sub4_sub1_sub1.myData.walkAnimID;                class30_sub2_sub4_sub1_sub1.turn180AnimID = class30_sub2_sub4_sub1_sub1.myData.turn180AnimID;                class30_sub2_sub4_sub1_sub1.turn90CWAnimID = class30_sub2_sub4_sub1_sub1.myData.cwAnimID;                class30_sub2_sub4_sub1_sub1.turn90CCWAnimID = class30_sub2_sub4_sub1_sub1.myData.ccwAnimID;                class30_sub2_sub4_sub1_sub1.standAnimID = class30_sub2_sub4_sub1_sub1.myData.standAnimID;            }            if((l & 4) != 0)            {                class30_sub2_sub4_sub1_sub1.anInt1538 = stream.readUnsignedWordBigEndian();                class30_sub2_sub4_sub1_sub1.anInt1539 = stream.readUnsignedWordBigEndian();            }        }    }