/// <summary> /// Set Properties /// </summary> /// <param name="Packet"></param> internal void SetProps(CString Packet) { bool compileScript = false; while (Packet.BytesLeft > 0) { Int32 PropId = Packet.ReadGUByte1(); switch ((Properties)PropId) { case Properties.IMAGE: // 0 this.Image = Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.SCRIPT: // 1 this.Script = Packet.ReadChars((int)Packet.ReadGUByte5()).Replace("\xa7", "\n"); if (this.Script.IndexOf("void") > 0 || this.Script.IndexOf("join(") > 0) compileScript = true; break; case Properties.NPCX: // 2 - obsolete Packet.ReadGByte1(); break; case Properties.NPCY: // 3 - obsolete Packet.ReadGByte1(); break; case Properties.NPCPOWER: // 4 Packet.ReadGUByte1(); break; case Properties.NPCRUPEES: // 5 this.Gralats = (int)Packet.ReadGUByte3(); break; case Properties.ARROWS: // 6 this.Arrows = Packet.ReadGUByte1(); break; case Properties.BOMBS: // 7 this.Bombs = Packet.ReadGUByte1(); break; case Properties.GLOVEPOWER: // 8 Packet.ReadGUByte1(); break; case Properties.BOMBPOWER: // 9 Packet.ReadGUByte1(); break; case Properties.GANI: // 12 Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.VISFLAGS: // 13 this.VisFlags = Packet.ReadGByte1(); break; case Properties.BLOCKFLAGS: // 14 this.BlockFlags = Packet.ReadGByte1(); break; case Properties.MESSAGE: // 15 this.Chat = Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.NPCID: // 17 Packet.ReadGUByte3(); break; case Properties.SPRITE: // 18 Packet.ReadGUByte1(); break; case Properties.COLORS: // 19 Packet.ReadGUByte5(); break; case Properties.NICKNAME: // 20 this.Nickname = Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.HORSEIMG: // 21 Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.HEADIMG: // 22 { Int32 len = Packet.ReadGUByte1(); this.HeadImage = (len < 100 ? "head" + len + ".png" : Packet.ReadChars(len - 100)); break; } case Properties.SAVE0: // 23 this.Save[0] = Packet.ReadGUByte1(); break; case Properties.SAVE1: // 24 this.Save[1] = Packet.ReadGUByte1(); break; case Properties.SAVE2: // 25 this.Save[2] = Packet.ReadGUByte1(); break; case Properties.SAVE3: // 26 this.Save[3] = Packet.ReadGUByte1(); break; case Properties.SAVE4: // 27 this.Save[4] = Packet.ReadGUByte1(); break; case Properties.SAVE5: // 28 this.Save[5] = Packet.ReadGUByte1(); break; case Properties.SAVE6: // 29 this.Save[6] = Packet.ReadGUByte1(); break; case Properties.SAVE7: // 30 this.Save[7] = Packet.ReadGUByte1(); break; case Properties.SAVE8: // 31 this.Save[8] = Packet.ReadGUByte1(); break; case Properties.SAVE9: // 32 this.Save[9] = Packet.ReadGUByte1(); break; case Properties.ALIGNMENT: // 33 Packet.ReadGUByte1(); break; case Properties.IMAGEPART: // 34 this.ImagePart = Packet.Read(6); break; case Properties.BODYIMG: // 35 this.BodyImage = Packet.ReadChars(Packet.ReadGUByte1()); break; case Properties.GMAPLVLX: // 41 this.GMapX = Packet.ReadGUByte1(); break; case Properties.GMAPLVLY: // 42 this.GMapY = Packet.ReadGUByte1(); break; case Properties.PIXELX: // 75 { int tmp = this.PixelX = Packet.ReadGUByte2(); // If the first bit is 1, our position is negative. this.PixelX >>= 1; if ((tmp & 0x0001) != 0) this.PixelX = -this.PixelX; break; } case Properties.PIXELY: // 76 { int tmp = this.PixelY = Packet.ReadGUByte2(); // If the first bit is 1, our position is negative. this.PixelY >>= 1; if ((tmp & 0x0001) != 0) this.PixelY = -this.PixelY; break; } default: System.Console.WriteLine("Unknown NPC Prop: " + PropId); return; } } // Compile script if script changed. if (compileScript) Server.Compiler.CompileAdd(this); }