Ticket #12565: nodups.diff

File nodups.diff, 1.3 KB (added by neuromancer, 3 years ago)
  • engines/private/funcs.cpp

    diff --git a/engines/private/funcs.cpp b/engines/private/funcs.cpp
    index d781325ab..b5881f19b 100644
    a b static void fLoseInventory(ArgArray args) {  
    298298        g_private->inventory.clear();
    299299}
    300300
     301bool inInventory(Common::String &bmp) {
     302        for (NameList::const_iterator it = g_private->inventory.begin(); it != g_private->inventory.end(); ++it) {
     303                if (*it == bmp)
     304                        return true;
     305        }
     306        return false;
     307}
     308
    301309static void fInventory(ArgArray args) {
    302310        // assert types
    303311        Datum b1 = args[0];
    static void fInventory(ArgArray args) {  
    354362                        g_private->playSound(g_private->getTakeLeaveSound(), 1, false, false);
    355363                }
    356364
    357                 g_private->inventory.push_back(bmp);
     365                if (!inInventory(bmp))
     366                        g_private->inventory.push_back(bmp);
    358367        } else {
    359368                if (v1.type == NAME) {
    360369                        if (strcmp(c.u.str, "\"REMOVE\"") == 0) {
    361370                                v1.u.sym->u.val = 0;
    362                                 g_private->inventory.remove(bmp);
     371                                if (inInventory(bmp))
     372                                        g_private->inventory.remove(bmp);
    363373                        } else {
    364374                                v1.u.sym->u.val = 1;
    365                                 g_private->inventory.push_back(bmp);
     375                                if (!inInventory(bmp))
     376                                        g_private->inventory.push_back(bmp);
    366377                        }
    367378                } else {
    368                         g_private->inventory.push_back(bmp);
     379                        if (!inInventory(bmp))
     380                                g_private->inventory.push_back(bmp);
    369381                }
    370382                if (v2.type == NAME)
    371383                        v2.u.sym->u.val = 1;