void CreatureManager::internalLoadCreatureBuffer(TiXmlElement* attrib, const CreatureTypePtr& m) { if(std::find(m_creatures.begin(), m_creatures.end(), m) != m_creatures.end()) return; Outfit out; int32 type = attrib->readType<int32>("type"); if(type > 0) { out.setCategory(ThingCategoryCreature); out.setId(type); } else { out.setCategory(ThingCategoryItem); out.setAuxId(attrib->readType<int32>("typeex")); } { out.setHead(attrib->readType<int>(("head"))); out.setBody(attrib->readType<int>(("body"))); out.setLegs(attrib->readType<int>(("legs"))); out.setFeet(attrib->readType<int>(("feet"))); out.setAddons(attrib->readType<int>(("addons"))); out.setMount(attrib->readType<int>(("mount"))); } m->setOutfit(out); m_creatures.push_back(m); }
Outfit ProtocolGame::internalGetOutfit(InputMessage& msg) { Outfit outfit; int id = msg.getU16(); if(id != 0) { outfit.setCategory(ThingsType::Creature); int head = msg.getU8(); int body = msg.getU8(); int legs = msg.getU8(); int feet = msg.getU8(); int addons = msg.getU8(); outfit.setId(id); outfit.setHead(head); outfit.setBody(body); outfit.setLegs(legs); outfit.setFeet(feet); outfit.setAddons(addons); } else { int id = msg.getU16(); if(id == 0) { outfit.setCategory(ThingsType::Effect); outfit.setId(13); } else { outfit.setCategory(ThingsType::Item); outfit.setId(id); } } return outfit; }