diff --git a/items/pfeifchen.c b/items/pfeifchen.c
index c0d8976..0bdf38e 100644
--- a/items/pfeifchen.c
+++ b/items/pfeifchen.c
@@ -123,7 +123,7 @@
 int smoke2(object pl){
   object ob;
   if(!rauchen) return 0;
-  if(!ob=find_player(pl)) return 0;
+  if(!ob=find_player(getuid(pl))) return 0;
   if(environment()!=ob) return 0;
   tell_object(ob,"Genuesslich pustest Du ein paar Rauchkringel in die Luft.\n");
   tell_room(environment(ob),ob->Name()+" pustet genuesslich ein paar "
@@ -136,7 +136,7 @@
 int smoke3(object pl){
   object ob;
   if(!rauchen) return 0;
-  if(!ob=find_player(pl)) return 0;
+  if(!ob=find_player(getuid(pl))) return 0;
   if(environment()!=ob) return 0;
   tell_object(ob,break_string("Genuesslich pustest Du ein paar Rauchkringel "
    "in die Luft, rauchst Dein Pfeifchen auf und klopfst es aus.",78));
diff --git a/obj/mpa.c b/obj/mpa.c
index 24c432c..c27f827 100644
--- a/obj/mpa.c
+++ b/obj/mpa.c
@@ -450,7 +450,7 @@
   return 1;
 }
 
-LiesArtikel(str) {
+int LiesArtikel(string str) {
   string s1;
   int i1;
   if ( !str ) return 0;
@@ -460,6 +460,7 @@
     return lies(to_int(i1));
   if (sscanf(str,"artikel %s",s1))
     return lies(s1);
+  return 0;
 }
 
 
diff --git a/obj/tools/teller/t_base.c b/obj/tools/teller/t_base.c
index 8336d3b..0747a4a 100644
--- a/obj/tools/teller/t_base.c
+++ b/obj/tools/teller/t_base.c
@@ -281,12 +281,12 @@
 		return objectp(argv[0]);
 }
 
-static isSubStr( pl, str, len )
+static int isSubStr( object pl, string str, int len )
 {
 	return getuid(pl)[0..len] == str;
 }
 
-static becomes_pl(argv)
+static mixed becomes_pl( mixed argv)
 {
 	object pl;
 	object* pllist;
@@ -318,7 +318,9 @@
 	return argv[0];
 }
 
-static DumpObj( ob )
+static mixed DumpMapp( mixed ob, int i);
+
+static mixed DumpObj( mixed ob )
 {
   string ans;
   int i,j;
@@ -347,7 +349,7 @@
   }
 }
 
-static DumpMapp(ob,i)
+static mixed DumpMapp( mixed ob, int i)
 {
   int j,vz;
   string ans;
diff --git a/p/daemon/channeld.c b/p/daemon/channeld.c
index cc9ced9..a26f9ed 100644
--- a/p/daemon/channeld.c
+++ b/p/daemon/channeld.c
@@ -611,7 +611,7 @@
           function mixed (object listener) {
             string* chans = listener->QueryProp(P_CHANNELS);
             chans -= ({lower_case(ch)});
-            listener->SetProp(P_CHANNELS, chans);
+            ({string*})listener->SetProp(P_CHANNELS, chans);
           });
     channels = m_copy_delete(channels, lower_case(ch));
 
diff --git a/std/items/fishing/haken.c b/std/items/fishing/haken.c
index 66b91f4..91a2427 100644
--- a/std/items/fishing/haken.c
+++ b/std/items/fishing/haken.c
@@ -138,7 +138,7 @@
 
 int _query_total_weight() {
   int tw;
-  foreach(int w: all_inventory(ME)+({ME}))
+  foreach(object w: all_inventory(ME)+({ME}))
     tw += w->QueryProp(P_WEIGHT);
   return tw;
 }
