#include "inventorymanager.h"
#include "log.h"
-#include "environment.h"
-#include "scripting_game.h"
+#include "serverenvironment.h"
+#include "scripting_server.h"
#include "serverobject.h"
#include "settings.h"
#include "craftdef.h"
#include "rollback_interface.h"
-#include "strfnd.h"
-
-#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
+#include "util/strfnd.h"
+#include "util/basic_macros.h"
#define PLAYER_TO_SA(p) p->getEnv()->getScriptIface()
If something is wrong (source item is empty, destination is the
same as source), nothing happens
*/
+ bool did_swap = false;
move_count = list_from->moveItem(from_i,
- list_to, to_i, count, !caused_by_move_somewhere);
+ list_to, to_i, count, !caused_by_move_somewhere, &did_swap);
// If source is infinite, reset it's stack
if (src_can_take_count == -1) {
}
}
}
- if (move_count > 0) {
+ if (move_count > 0 || did_swap) {
list_from->deleteItem(from_i);
list_from->addItem(from_i, from_stack_was);
}
// Add the new replacements to the list
IItemDefManager *itemdef = gamedef->getItemDefManager();
for (std::vector<ItemStack>::iterator it = temp.begin();
- it != temp.end(); it++) {
+ it != temp.end(); ++it) {
for (std::vector<ItemStack>::iterator jt = output_replacements.begin();
- jt != output_replacements.end(); jt++) {
+ jt != output_replacements.end(); ++jt) {
if (it->name == jt->name) {
*it = jt->addItem(*it, itemdef);
if (it->empty())
// Put the replacements in the inventory or drop them on the floor, if
// the invenotry is full
for (std::vector<ItemStack>::iterator it = output_replacements.begin();
- it != output_replacements.end(); it++) {
+ it != output_replacements.end(); ++it) {
if (list_main)
*it = list_main->addItem(*it);
if (it->empty())
std::vector<ItemStack> &output_replacements,
bool decrementInput, IGameDef *gamedef)
{
- DSTACK(__FUNCTION_NAME);
+ DSTACK(FUNCTION_NAME);
result.clear();