void SpawnPetHandler::handle(InPacket& recv) const { using Character::Char; Optional<Char> character = Stage::get().getcharacter(recv.readint()); if (!character) return; uint8_t petindex = recv.readbyte(); int8_t mode = recv.readbyte(); if (mode == 1) { recv.skip(1); int32_t itemid = recv.readint(); string name = recv.readascii(); int32_t uniqueid = recv.readint(); recv.skip(4); Point<int16_t> pos = recv.readpoint(); uint8_t stance = recv.readbyte(); int32_t fhid = recv.readint(); character->addpet(petindex, itemid, name, uniqueid, pos, stance, fhid); } else if (mode == 0) { bool hunger = recv.readbool(); character->removepet(petindex, hunger); } }