#include <wizlevels.h>#include <moving.h>#include <thing/language.h>#include <thing/properties.h>#include <thing/description.h>#include <living/put_and_get.h>#include <player.h>#include <magier.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| static mixed * | _query_localcmds () |
| static int | _clone (string cmdline) |
| static int | _destruct (string cmdline) |
| static int | _setcmsg (string str) |
| static int | _setdmsg (string str) |
| static int _clone | ( | string | cmdline | ) | [static] |
Definiert in Zeile 36 der Datei objects.c.
Benutzt _unparsed_args(), CLONE_F, CLONE_OPTS, destruct(), err, file_list(), FILESIZE, flags, FULLNAME, M_GET, M_NOCHECK, MODE_CLONE, Name(), ob(), P_CLONE_MSG, parseargs(), QueryProp(), USAGE und WER.
00037 { 00038 mixed *tmp; 00039 int flags; 00040 object ob; 00041 string *args,*args2,err; 00042 00043 cmdline=_unparsed_args(); 00044 args=parseargs(cmdline,&flags,CLONE_OPTS,1); 00045 if (flags==-1||sizeof(args)!=1) 00046 return USAGE("clone [-" CLONE_OPTS "] <objektname>"); 00047 if (flags&CLONE_F) 00048 cmdline=args[0]; 00049 else 00050 { 00051 // etwas umstaendlich, aber so kann man auch Dateien clonen, 00052 // wenn man keine Leserechte hat. Man muss aber im Verzeichnis 00053 // lesen koennen 00054 args2=explode(args[0],"/"); 00055 if (args2[<1][<1]=='.') args2[<1]+="c"; 00056 else if (args2[<1][<2..<1]!=".c") args2[<1]+=".c"; 00057 tmp=file_list(({implode(args2[0..<2],"/")+"/*"}),MODE_CLONE,0,"", 00058 args2[<1]); 00059 if (!sizeof(tmp)||tmp[0][FILESIZE]<0) 00060 return printf("clone: %s: Datei existiert nicht.\n",args[0]),1; 00061 cmdline=tmp[0][FULLNAME]; 00062 } 00063 00064 if (err=catch(ob=clone_object(cmdline))||!ob) 00065 return printf("clone: %s: Objekt konnte nicht erzeugt werden.\n" 00066 "Grund: %O", 00067 args[0],err||"unbekannt"),1; 00068 if (!objectp(ob)) 00069 return printf("clone: %s: Objekt beim Erzeugen zerstoert.\n", 00070 args[0]),1; 00071 if ((ob->move(this_object(),M_GET)>0) || 00072 (!objectp(ob)||ob->move(environment(),M_NOCHECK)>0)||!objectp(ob)) 00073 { 00074 if (!objectp(ob)) 00075 return printf("clone: %s: Objekt beim Erzeugen zerstoert.\n", 00076 args[0]),1; 00077 printf("Clone: %s erzeugt.\n",object_name(ob)); 00078 tell_room(environment(this_object()), 00079 sprintf("%s %s.\n",Name(WER,1),QueryProp(P_CLONE_MSG)), 00080 ({ this_object()})); 00081 return 1; 00082 } 00083 tell_room(environment(this_object()), 00084 sprintf("%s malt wilde Zeichen in die Luft und " 00085 "murmelt vor sich hin, aber nichts " 00086 "passiert...\n",Name(WER,1)), 00087 ({ this_object()})); 00088 destruct(ob); 00089 printf("Clone: %s: Objekt konnte nicht bewegt werden.",args[0]); 00090 return 1; 00091 }

| static int _destruct | ( | string | cmdline | ) | [static] |
Definiert in Zeile 102 der Datei objects.c.
Benutzt _unparsed_args(), destruct(), find_obs(), flags, notify_fail(), ob(), P_DESTRUCT_MSG, P_PLURAL, PUT_GET_NONE, QueryProp(), USAGE und WER.
00103 { 00104 int flags; 00105 mixed *args; 00106 object ob; 00107 00108 if (!strlen(cmdline=_unparsed_args())) 00109 return USAGE(query_verb()+" <objektname>"); 00110 args=find_obs(lower_case(cmdline),PUT_GET_NONE); 00111 if (!args||!sizeof(args)) 00112 { 00113 if (!(ob=find_object(cmdline))) 00114 { 00115 notify_fail(query_verb()+": Objekt \"" +cmdline+ 00116 "\" nicht gefunden.\n"); 00117 return 0; 00118 } 00119 } 00120 else 00121 ob=args[0]; 00122 cmdline=capitalize(to_string(ob->name(WER))); 00123 flags=(int)ob->QueryProp(P_PLURAL); // Missbrauch von flags :o) 00124 if (query_verb()=="destruct") 00125 { 00126 if (!ob->remove()) 00127 { 00128 notify_fail(cmdline+" will nicht zerstoert werden!\n"); 00129 return 0; 00130 } 00131 } 00132 else destruct(ob); 00133 if (!ob) 00134 { 00135 if (!QueryProp(P_INVIS)) 00136 { 00137 tell_room(environment(this_object()), 00138 sprintf("%s %s.\n",cmdline,QueryProp(P_DESTRUCT_MSG)), 00139 ({ this_object() })); 00140 } 00141 printf("%s w%s von Dir zerstaeubt.\n",cmdline,(flags?"erden":"ird")); 00142 } 00143 else 00144 printf("%s kann nicht zerstoert werden.\n",cmdline); 00145 return 1; 00146 }

| static mixed* _query_localcmds | ( | ) | [static] |
Definiert in Zeile 23 der Datei objects.c.
Benutzt WIZARD_LVL.
00024 { 00025 return ({({"clone","_clone",0,WIZARD_LVL}), 00026 ({"setcmsg","_setcmsg",0,WIZARD_LVL}), 00027 ({"setdmsg","_setdmsg",0,WIZARD_LVL}), 00028 ({"destruct","_destruct",0,WIZARD_LVL}), 00029 ({"Destruct","_destruct",0,WIZARD_LVL})}); 00030 }
| static int _setcmsg | ( | string | str | ) | [static] |
Definiert in Zeile 152 der Datei objects.c.
Benutzt _unparsed_args(), MALE, P_CLONE_MSG, QueryPossPronoun(), SetProp() und WEM.
00153 { 00154 printf("Beim Clonen von Objekten sehen die Anderen nun:\n" 00155 "<Dein Name> %s.\n", 00156 (SetProp(P_CLONE_MSG, _unparsed_args()||"zaubert etwas aus " 00157 + QueryPossPronoun(MALE,WEM) + " Aermel hervor"))); 00158 return 1; 00159 }

| static int _setdmsg | ( | string | str | ) | [static] |
Definiert in Zeile 161 der Datei objects.c.
Benutzt _unparsed_args(), name, P_DESTRUCT_MSG, SetProp() und WER.
00162 { 00163 printf("Beim Zerstoeren von Objekten sehen die Anderen nun:\n" 00164 "<Objekt> %s.\n", 00165 SetProp(P_DESTRUCT_MSG, _unparsed_args()||"wird von " + name(WER,1) 00166 + " zerstaeubt")); 00167 return 1; 00168 }

1.6.3