}
}
+std::string InventoryItem::getItemString() {
+ // Get item string
+ std::ostringstream os(std::ios_base::binary);
+ serialize(os);
+ return os.str();
+}
+
ServerActiveObject* InventoryItem::createSAO(ServerEnvironment *env, u16 id, v3f pos)
{
/*
Create an ItemSAO
*/
- // Get item string
- std::ostringstream os(std::ios_base::binary);
- serialize(os);
// Create object
- ServerActiveObject *obj = new ItemSAO(env, 0, pos, os.str());
+ ServerActiveObject *obj = new ItemSAO(env, 0, pos, getItemString());
return obj;
}
{
if(item_craft_is_eatable(m_subname))
{
+ u16 result_count = getCount() - 1; // Eat one at a time
s16 hp_change = item_craft_eat_hp_change(m_subname);
if(player->hp + hp_change > 20)
player->hp = 20;
else
player->hp += hp_change;
- return true;
+
+ if(result_count < 1)
+ return true;
+ else
+ setCount(result_count);
}
return false;
}
#endif
// Shall return a text to show in the GUI
virtual std::string getText() { return ""; }
+ // Returns the string used for inventory
+ virtual std::string getItemString();
// Creates an object from the item, to be placed in the world.
virtual ServerActiveObject* createSAO(ServerEnvironment *env, u16 id, v3f pos);
// Gets amount of items that dropping one SAO will decrement