--- orig/rpggame/rpgobjset.h
+++ mod/rpggame/rpgobjset.h
@@ -33,8 +33,8 @@
         CCOMMAND(r_quest,       "ss",  (rpgobjset *self, char *s, char *a), { self->stack[0]->addaction(self->stringpool(s), self->stringpool(a), true); });
         CCOMMAND(r_action,      "ss",  (rpgobjset *self, char *s, char *a), { self->stack[0]->addaction(self->stringpool(s), self->stringpool(a), false); });
         CCOMMAND(r_action_use,  "s",   (rpgobjset *self, char *s), { self->stack[0]->action_use.script = self->stringpool(s); });
-        CCOMMAND(r_take,        "sss", (rpgobjset *self, char *name, char *ok, char *notok), { self->takefromplayer(name, ok, notok); });
-        CCOMMAND(r_give,        "s",   (rpgobjset *self, char *s), { self->givetoplayer(s); });
+        CCOMMAND(r_take,        "sssi",(rpgobjset *self, char *name, char *ok, char *notok, int *silent), { self->takefromplayer(name, ok, notok, *silent); });
+        CCOMMAND(r_give,        "si",  (rpgobjset *self, char *s, int *silent), { self->givetoplayer(s, *silent); });
         CCOMMAND(r_use,         "",    (rpgobjset *self), { self->stack[0]->selectuse(); });
         CCOMMAND(r_applydamage, "i",   (rpgobjset *self, int *d), { self->stack[0]->takedamage(*d, *self->stack[1]); });
         CCOMMAND(r_get_name,    "",    (rpgobjset *self), { if (self->stack[0]->name) result(self->stack[0]->name); });
@@ -116,7 +116,7 @@
         newowner->add(worldobj, newowner->IF_INVENTORY);
     }
 
-    void takefromplayer(char *name, char *ok, char *notok)
+    void takefromplayer(char *name, char *ok, char *notok, int silent)
     {
         rpgobj *o = playerobj->take(name);
         if(o)
@@ -125,19 +125,19 @@
             conoutf("\f2you hand over a %s", o->name);
             if(currentquest)
             {
-                conoutf("\f2you finish a quest for %s", currentquest->npc);
+                if (!silent) conoutf("\f2you finish a quest for %s", currentquest->npc);
                 currentquest->completed = true;
             }
         }
         execute(o ? ok : notok);
     }
 
-    void givetoplayer(char *name)
+    void givetoplayer(char *name, int silent)
     {
         rpgobj *o = stack[0]->take(name);
         if(o)
         {
-            conoutf("\f2you receive a %s", o->name);
+            if (!silent) conoutf("\f2you receive a %s", o->name);
             playerobj->add(o, o->IF_INVENTORY);
         }
     }
