Esempio n. 1
0
        CString getProp(char pId, int clientVersion)
        {
            switch ((NPCPROP)pId)
            {
                case NPCPROP.IMAGE:
                    return new CString() + (char)image.Text.Length + image;

                case NPCPROP.SCRIPT:
                    {
                        //if (clientVersion != NSVER_GENERIC)
                        return new CString() + (short)(clientScriptFormatted.Length > 0x3FFF ? 0x3FFF : clientScriptFormatted.Length) + clientScriptFormatted.ToString().Substring(0, 0x3FFF);
                        //else
                        //	return new CString() + (long)serverScriptFormatted.Length + serverScriptFormatted;
                    }

                case NPCPROP.X:
                    return new CString() + (char)(x * 2);

                case NPCPROP.Y:
                    return new CString() + (char)(y * 2);

                case NPCPROP.POWER:
                    return new CString() + (char)power;

                case NPCPROP.RUPEES:
                    return new CString() + (int)rupees;

                case NPCPROP.ARROWS:
                    return new CString() + (char)darts;

                case NPCPROP.BOMBS:
                    return new CString() + (char)bombs;

                case NPCPROP.GLOVEPOWER:
                    return new CString() + (char)glovePower;

                case NPCPROP.BOMBPOWER:
                    return new CString() + (char)bombPower;

                case NPCPROP.SWORDIMAGE:
                    if (swordPower == 0)
                        return new CString() + (char)0;
                    else
                        return new CString() + (char)(swordPower + 30) + (char)swordImage.Length + swordImage;

                case NPCPROP.SHIELDIMAGE:
                    if (shieldPower + 10 > 10)
                        return new CString() + (char)(shieldPower + 10) + (char)shieldImage.Length + shieldImage;
                    else
                        return new CString() + (char)0;

                case NPCPROP.GANI:
            //if (clientVersion < CLVER_2_1)
            //	return bowImage;
                    return new CString() + (char)gani.Length + gani;

                case NPCPROP.VISFLAGS:
                    return new CString() + (char)visFlags;

                case NPCPROP.BLOCKFLAGS:
                    return new CString() + (char)blockFlags;

                case NPCPROP.MESSAGE:
                    return new CString() + (char)chatMsg.ToString().Substring(0, 200).Length + chatMsg.ToString().Substring(0, 200);

                case NPCPROP.HURTDXDY:
                    return new CString() + (char)((hurtX * 32) + 32) + (char)((hurtY * 32) + 32);

                case NPCPROP.ID:
                    return new CString() + (int)id;

            // Sprite is deprecated and has been replaced by def.gani.
            // Sprite now holds the direction of the npc.  sprite % 4 gives backwards compatibility.
                case NPCPROP.SPRITE:
                    {
                        //if (clientVersion < CLVER_2_1) return new CString() + (char)sprite;
                        //else
                        return new CString() + (char)(sprite % 4);
                    }

                case NPCPROP.COLORS:
                    return new CString() + (char)colors[0] + (char)colors[1] + (char)colors[2] + (char)colors[3] + (char)colors[4];

                case NPCPROP.NICKNAME:
                    return new CString() + (char)nickName.Length + nickName;

                case NPCPROP.HORSEIMAGE:
                    return new CString() + (char)horseImage.Length + horseImage;

                case NPCPROP.HEADIMAGE:
                    return new CString() + (char)(headImage.Length + 100) + headImage;

                case NPCPROP.ALIGNMENT:
                    return new CString() + (char)ap;

                case NPCPROP.IMAGEPART:
                    return new CString() + imagePart;

                case NPCPROP.BODYIMAGE:
                    return new CString() + (char)bodyImage.Length + bodyImage;

                case NPCPROP.GMAPLEVELX:
                    return new CString() + (char)gmaplevelx;

                case NPCPROP.GMAPLEVELY:
                    return new CString() + (char)gmaplevely;

                case NPCPROP.CLASS:
                    return new CString() + (short)0;

                case NPCPROP.X2:
                    {
                        ushort val = (ushort)(x2 < 0 ? -x2 : x2);
                        val += (ushort)1;
                        if (x2 < 0)
                        {
                            val |= 0x0001;
                        }

                        CString ret = new CString();
                        ret.writeGShort((short)val);

                        return ret;
                    }

                case NPCPROP.Y2:
                    {
                        ushort val = (ushort)(y2 < 0 ? -y2 : y2);
                        val += 1;
                        if (y2 < 0)
                            val |= 0x0001;

                        CString ret = new CString();

                        return ret.writeGShort((short)val);
                    }
            }

            // Saves.
            if (pId.InRange((char)23, (char)32))
            {
                for (uint i = 0; i < __nSavePackets.Length; i++)
                {
                    if (__nSavePackets[i] == pId)
                        return new CString() + (char)saves[i];
                }
            }

            // Gani attributes.
            if (pId.InRange((char)NPCPROP.GATTRIB1, (char)NPCPROP.GATTRIB5) || pId.InRange((char)NPCPROP.GATTRIB6, (char)NPCPROP.GATTRIB9) || pId.InRange((char)NPCPROP.GATTRIB10, (char)NPCPROP.GATTRIB30))
            {
                for (uint i = 0; i < __nAttrPackets.Length; i++)
                {
                    if (__nAttrPackets[i] == pId)
                        return new CString() + (char)gAttribs[i].Length + gAttribs[i];
                }
            }

            return new CString();
        }