diff --git a/secure/questmaster.c b/secure/questmaster.c
index 6a7d952..d6f2fb4 100644
--- a/secure/questmaster.c
+++ b/secure/questmaster.c
@@ -207,7 +207,7 @@
   for (i=sizeof(allowedobj)-1;i>=0;i--)
     {
       if (!stringp(allowedobj[i]) || allowedobj[i]=="") return -4;
-      allowedobj[i]=(string)master()->make_path_absolute(allowedobj[i]);
+      allowedobj[i]=({string})master()->make_path_absolute(allowedobj[i]);
     }
   if (!stringp(hint) || hint=="") return -5;
   if (difficulty<-1 || difficulty>100) return -6;
@@ -555,7 +555,7 @@
       || trigob->QueryProp(P_TESTPLAYER) || IS_LEARNER(trigob))
     return;
 
-  int lvl = (int)trigob->QueryProp(P_LEVEL);
+  int lvl = ({int})trigob->QueryProp(P_LEVEL);
 
   if (lvl <= 0)
     return;
@@ -690,7 +690,7 @@
   if (allowedobj[<2..] == ".c")
     allowedobj = allowedobj[0..<3];
   allowedobj = explode(allowedobj, "#")[0];
-  allowedobj = (string)master()->make_path_absolute(allowedobj);
+  allowedobj = ({string})master()->make_path_absolute(allowedobj);
   if (file_size(allowedobj+".c") <=0)
     return -3;
 
@@ -1043,7 +1043,7 @@
   if (new_mqob[<2..] == ".c")
     new_mqob = new_mqob[0..<3];
   new_mqob = explode(new_mqob, "#")[0];
-  new_mqob = (string)master()->make_path_absolute(new_mqob);
+  new_mqob = ({string})master()->make_path_absolute(new_mqob);
   if (file_size(new_mqob+".c") <= 0)
     return -3;
   // Wenn das neue Objekt schon eine MQ vergibt, kann es keine weitere
