#include <properties.h>#include <language.h>#include <seil.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| void | create () |
| protected void | create_super () |
| string | _query_short () |
| mixed | _query_noget () |
| int | tie (string str) |
| int | loesen (string str) |
| object | query_tied_to_ob () |
| varargs int | binde_seil (string ziel, string msg) |
| varargs int | loese_seil (string msg) |
Variablen | |
| inherit std | thing |
| object | tied_to_ob |
| string | tied_name |
| mixed _query_noget | ( | ) |
Definiert in Zeile 62 der Datei seil.c.
Benutzt name, tied_to_ob und WER.
00063 { 00064 if (tied_to_ob) 00065 return "Das geht nicht, solange "+name(WER)+" festgebunden ist.\n"; 00066 return 0; 00067 }
| string _query_short | ( | ) |
Definiert in Zeile 43 der Datei seil.c.
Benutzt artikel(), FEMALE, MALE, NEUTER, P_GENDER, QueryProp(), tied_name, tied_to_ob, WEM und WER.
00044 { 00045 string artikel; 00046 switch( QueryProp(P_GENDER) ) 00047 { 00048 case NEUTER : artikel="das";break; 00049 case MALE : artikel="der";break; 00050 case FEMALE : artikel="die";break; 00051 default : artikel="das"; 00052 } 00053 00054 if (tied_to_ob) 00055 return this_object()->Name(WER)+", "+artikel+" an " 00056 + (tied_name?tied_name:(string)(tied_to_ob->name(WEM))) 00057 + " festgebunden ist"; 00058 return (string)this_object()->Name(WER); 00059 00060 }

| varargs int binde_seil | ( | string | ziel, | |
| string | msg | |||
| ) |
Definiert in Zeile 263 der Datei seil.c.
Benutzt Name(), P_TIE_AUTO, P_TIE_MESSAGE, P_TIE_VERB, QueryProp(), SetProp(), tie() und WER.
00264 { 00265 if(!QueryProp(P_TIE_AUTO)) return 0; 00266 00267 // diese funktion bindet ein Seil und kann von einem object aus 00268 // aufgerufen werden. 00269 SetProp(P_TIE_VERB,"binde"); 00270 00271 if(!msg) msg = Name(WER)+" wird auf magische Art und Weise festgebunden.\n"; 00272 00273 SetProp(P_TIE_MESSAGE,msg); 00274 return tie("seil an "+ziel); 00275 }

| void create | ( | ) |
Definiert in Zeile 13 der Datei seil.c.
Benutzt AddCmd(), AddDetail(), AddId(), break_string(), create(), NEUTER, P_GENDER, P_LONG, P_MATERIAL, P_NAME, P_TIE_AUTO, P_VALUE, P_WEIGHT und SetProp().
00013 { 00014 ::create(); 00015 00016 AddId( ({"seil", "\nseil"}) ); 00017 SetProp(P_NAME, "Seil"); 00018 00019 SetProp(P_GENDER, NEUTER); 00020 SetProp(P_LONG,break_string("Du siehst ein ganz normales Seil. Du kannst es an "+ 00021 "Gegenstaenden festbinden und wieder loesen. Das Seil besteht "+ 00022 "aus solider fester Steinbeisserwolle.",78)); 00023 AddDetail(({"wolle","steinbeisserwolle"}),"Diese Wolle ist eine besonders feste und stabile Wolle.\n"); 00024 SetProp(P_VALUE, 15); 00025 SetProp(P_TIE_AUTO,1); 00026 SetProp(P_WEIGHT, 300); 00027 00028 SetProp(P_MATERIAL,({MAT_MISC_STONE,MAT_WOOL})); 00029 AddCmd( ({"binde","bind","knote","befestige","mach","mache"}), "tie" ); 00030 00031 // der Befehle loesen wird auf die anderen Befehle umgebogen und dient nur 00032 // der besseren benutzbarkeit des seiles. 00033 AddCmd( ({"loese" }), "loesen" ); 00034 00035 }

| protected void create_super | ( | ) |
| varargs int loese_seil | ( | string | msg | ) |
Definiert in Zeile 277 der Datei seil.c.
Benutzt Name(), P_TIE_AUTO, P_TIE_VERB, P_UNTIE_MESSAGE, QueryProp(), SetProp(), tie() und WER.
00278 { 00279 if(!QueryProp(P_TIE_AUTO)) return 0; 00280 00281 if(!msg) msg = Name(WER)+" loest sich.\n"; 00282 00283 SetProp(P_TIE_VERB,"binde"); 00284 SetProp(P_UNTIE_MESSAGE,msg); 00285 return tie("seil los"); 00286 }

| int loesen | ( | string | str | ) |
Definiert in Zeile 244 der Datei seil.c.
Benutzt _notify_fail(), P_NAME, QueryProp() und tie().
00245 { 00246 if(str == "seil" || 00247 str == lower_case(QueryProp(P_NAME)) || 00248 id(str) 00249 ) 00250 { 00251 return tie("seil los"); 00252 } 00253 _notify_fail("Was moechtest Du loesen?\n"); 00254 return 0; 00255 }

| object query_tied_to_ob | ( | ) |
Definiert in Zeile 258 der Datei seil.c.
Benutzt tied_to_ob.
00259 { 00260 return tied_to_ob; 00261 }
| int tie | ( | string | str | ) |
Definiert in Zeile 69 der Datei seil.c.
Benutzt _notify_fail(), m_delete(), Name(), name, ob(), P_TIE_MESSAGE, P_TIE_USER, P_TIE_VERB, P_TIED, P_UNTIE_MESSAGE, QueryProp(), SetProp(), tied_name, tied_to_ob, WEM und WER.
Wird benutzt von binde_seil(), loese_seil() und loesen().
00070 { 00071 string t1, t2; 00072 object ob; 00073 string verb; 00074 mapping tied_map; 00075 00076 _notify_fail("Binde was?\n"); 00077 00078 // zunaechst den User notieren, damit spaeter immer drauf 00079 // zugegriffen werden kann. 00080 // Wegen kompatibilitaet wird das nicht direkt an tie()/untie() 00081 // uebergeben. 00082 SetProp(P_TIE_USER,this_player()); 00083 00084 if (!str||!stringp(str)) return 0; 00085 00086 verb = query_verb(); 00087 00088 //automatischer aus objecten/raeumen generierter aufruf 00089 if(QueryProp(P_TIE_VERB)) verb=QueryProp(P_TIE_VERB); 00090 00091 if (sscanf(str, "%s an %s", t1, t2) != 2 && 00092 sscanf(str,"%s los",t1) != 1 && 00093 sscanf(str,"%s fest",t1) != 1 ) 00094 return 0; 00095 00096 if(id(t1) && str==(t1+" fest")) str="seil an raum"; 00097 00098 if(sscanf(str,"%s an %s",t1,t2)==2) 00099 { 00100 if(tied_to_ob) 00101 { 00102 write("Es ist bereits irgendwo festgebunden.\n"); 00103 return 1; 00104 } 00105 00106 if (!id(t1)) return 0; 00107 00108 if (t2 == "mich") 00109 { 00110 _notify_fail("Warum willst Du das denn machen?\n"); 00111 return 0; 00112 } 00113 00114 ob = present(t2, this_player()); 00115 00116 if (!ob) ob = present(t2, environment(this_player())); 00117 00118 if (!ob) 00119 { 00120 if (call_other(environment(this_player()), "id", t2)) 00121 ob = environment(this_player()); 00122 } 00123 00124 if(!ob && str == "seil an raum") 00125 { 00126 ob=environment(this_player()); 00127 } 00128 00129 _notify_fail( "Soetwas findest Du hier nicht.\n" ); 00130 if (!ob) return 0; 00131 00132 if (!(tied_name=(string)call_other(ob, "tie", t2))) 00133 { 00134 if(ob->QueryProp(P_INVIS)) return 0; 00135 00136 if (ob != environment(this_player())) 00137 { 00138 _notify_fail("Du kannst "+name(WER)+" nicht an "+ob->name(WEM)+ 00139 " festbinden.\n"); 00140 return 0; 00141 } 00142 else 00143 { 00144 _notify_fail("Du kannst "+name(WER)+" nicht daran festbinden.\n"); 00145 return 0; 00146 } 00147 00148 } 00149 00150 /* Is he carrying the rope ? */ 00151 if (environment() == this_player()) 00152 { 00153 this_object()->move(environment(this_player())); 00154 } 00155 00156 tied_to_ob = ob; 00157 00158 if (tied_to_ob != environment(this_player()) || 00159 environment(this_player())->name()!=0 ) 00160 { 00161 tied_name = (string)(tied_to_ob->name(WEM)); 00162 } 00163 else 00164 { 00165 if( !stringp(tied_name) ) tied_name="etwas"; 00166 } 00167 00168 if(QueryProp(P_TIE_VERB)) 00169 { 00170 // das seil wird gesteuert 00171 tell_room(environment(),QueryProp(P_TIE_MESSAGE)); 00172 00173 // seil wieder in roh-zustand versetzen. 00174 SetProp(P_UNTIE_MESSAGE,0); 00175 SetProp(P_TIE_VERB,0); 00176 } 00177 else 00178 { 00179 write("Du bindest "+name(WER)+" an " + tied_name + " fest.\n"); 00180 say(this_player()->name(WER) + " bindet "+name(WER)+" an " 00181 + tied_name + " fest.\n"); 00182 } 00183 00184 // den object mitteilen, an wen es gebunden ist. 00185 if(tied_to_ob->QueryProp(P_TIED)==0) tied_to_ob->SetProp(P_TIED,([]) ); 00186 tied_to_ob->SetProp(P_TIED,tied_to_ob->QueryProp(P_TIED)+([this_object(): 00187 ([ 00188 "player":this_player(), 00189 "time" :time() 00190 ]) ])); 00191 00192 return 1; 00193 } 00194 00195 if( (member( ({ 00196 "binde", 00197 "bind", 00198 "knote", 00199 "mach", 00200 "mache", 00201 "loese" 00202 }),verb 00203 )!=-1) && 00204 sscanf(str,"%s los",t1)==1) 00205 { 00206 if (!tied_to_ob) 00207 { 00208 write(Name(WER)+" ist nirgendwo festgebunden.\n"); 00209 return 1; 00210 } 00211 00212 if (!call_other(tied_to_ob, "untie")) 00213 { 00214 write("Das klappt leider nicht.\n"); 00215 return 1; 00216 } 00217 00218 if(QueryProp(P_TIE_VERB)) 00219 { 00220 // das seil wird gesteuert 00221 tell_room(environment(),QueryProp(P_UNTIE_MESSAGE)); 00222 00223 // wieder in roh-zustand versetzen. 00224 SetProp(P_UNTIE_MESSAGE,0); 00225 SetProp(P_TIE_VERB,0); 00226 } 00227 else 00228 { 00229 write("Du bindest "+name(WER)+" los.\n"); 00230 say(this_player()->name()+" bindet "+name(WER)+" los.\n"); 00231 } 00232 00233 tied_map=([])+tied_to_ob->QueryProp(P_TIED); 00234 tied_map=m_delete(tied_map,this_object()); 00235 00236 tied_to_ob->SetProp(P_TIED,tied_map); 00237 00238 tied_to_ob = (object) 0; 00239 00240 return 1; 00241 } 00242 }


| string tied_name |
Definiert in Zeile 11 der Datei seil.c.
Wird benutzt von _query_short() und tie().
| object tied_to_ob |
Definiert in Zeile 10 der Datei seil.c.
Wird benutzt von _query_noget(), _query_short(), query_tied_to_ob() und tie().
1.6.3