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); }
bool luavalue_cast(int index, Outfit& outfit) { if(g_lua.isTable(index)) { g_lua.getField("type", index); outfit.setId(g_lua.popInteger()); g_lua.getField("auxType", index); outfit.setAuxId(g_lua.popInteger()); if(g_game.getFeature(Otc::GamePlayerAddons)) { g_lua.getField("addons", index); outfit.setAddons(g_lua.popInteger()); } g_lua.getField("head", index); outfit.setHead(g_lua.popInteger()); g_lua.getField("body", index); outfit.setBody(g_lua.popInteger()); g_lua.getField("legs", index); outfit.setLegs(g_lua.popInteger()); g_lua.getField("feet", index); outfit.setFeet(g_lua.popInteger()); if(g_game.getFeature(Otc::GamePlayerMounts)) { g_lua.getField("mount", index); outfit.setMount(g_lua.popInteger()); } return true; } return false; }