seil.c-Dateireferenz

#include <properties.h>
#include <language.h>
#include <seil.h>
Include-Abhängigkeitsdiagramm für seil.c:

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

Dokumentation der Funktionen

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

protected void create_super (  ) 

Definiert in Zeile 39 der Datei seil.c.

Benutzt create().

Wird benutzt von create().

00039                               {
00040   ::create();
00041 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:


Variablen-Dokumentation

inherit std thing

Definiert in Zeile 6 der Datei seil.c.

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().

Erzeugt am Thu Jun 3 14:39:44 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3