description.c-Dateireferenz

#include <living/skills.h>
#include <living/clothing.h>
#include <thing/properties.h>
#include <wizlevels.h>
#include <new_skills.h>
#include <language.h>
#include <defines.h>
#include <class.h>
#include <sys_debug.h>
Include-Abhängigkeitsdiagramm für description.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define NEED_PROTOTYPES

Funktionen

public string _query_internal_extralook ()
public varargs int AddExtraLook (string look, int duration, string key, string lookende, object ob)
public int RemoveExtraLook (string key)
void create ()
string condition ()
varargs string long ()
varargs string name (int casus, int demonst)
static int _query_gender ()
static string _query_real_race ()
static mixed _set_name (mixed nm)
int _query_container ()
int is_class_member (mixed str)
mapping _query_material ()
static int _query_player_light ()
varargs int CannotSee (int silent)

Variablen

inherit std container description

Makro-Dokumentation

#define NEED_PROTOTYPES

Definiert in Zeile 14 der Datei description.c.


Dokumentation der Funktionen

int _query_container (  ) 

Definiert in Zeile 288 der Datei description.c.

00289 {
00290   return 0;
00291 }

static int _query_gender (  )  [static]

Definiert in Zeile 265 der Datei description.c.

Benutzt P_FROG, P_GENDER, Query() und QueryProp().

00266 {
00267   if (QueryProp(P_FROG)) return 1;
00268   return Query(P_GENDER);
00269 }

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

public string _query_internal_extralook (  ) 

Definiert in Zeile 27 der Datei description.c.

Benutzt abs, F_VALUE, m_delete(), ME, P_INTERNAL_EXTRA_LOOK, Query() und zeit.

00027                                           {
00028   mixed xl;
00029   int zeit;
00030   string res, look="";
00031 
00032   xl=Query(P_INTERNAL_EXTRA_LOOK,F_VALUE);
00033   if (!mappingp(xl))
00034     return(0);
00035 
00036   foreach(string key, mapping xld: xl) {
00037     if (intp(zeit=xld["xlduration"])) {
00038       //hat offenbar nen Ablaufdatum
00039       if ( (zeit > 0 && zeit < time()) ||
00040            (zeit < 0 && abs(zeit) < object_time(ME)) ) {
00041                 // Zeit abgelaufen oder
00042                 // negative "Ablaufzeit" und das Objekt ist neuer als die
00043                 // Eintragzeit, also loeschen und weiter (ja, das geht. ;-) und xld
00044                 // hat das Eintragsmapping ja noch, weitere Benutzung also moeglich.)
00045                 efun::m_delete(xl,key);
00046                 // ggf. Meldung ausgeben
00047                 if (interactive(ME)) {
00048                   if (strlen(xld["xlende"])) {
00049                     tell_object(ME,xld["xlende"]);
00050                   }
00051                   //kein einfacher String, aber Objekt+Funktion gegeben?
00052                   else if (strlen(xld["xlendefun"]) && strlen(xld["xlobjectname"]) &&
00053                     (!catch(res=call_other(xld["xlobjectname"],xld["xlendefun"],ME)
00054                                     ;publish))) {
00055                       if (stringp(res) && strlen(res))
00056                                 tell_object(ME,res);
00057                     }
00058                 }
00059                 continue;
00060       }
00061     }
00062     // Der Eintrag ist offenbar noch gueltig, Meldung anhaengen, bzw. via
00063     // Funktionsaufruf beschaffen.
00064     if (strlen(xld["xllook"]))
00065       look+=xld["xllook"];
00066     else if (strlen(xld["xlfun"]) && strlen(xld["xlobjectname"]) &&
00067                 (!catch(res=call_other(xld["xlobjectname"],xld["xlfun"],ME);publish))) {
00068       if (!stringp(res) || !strlen(res)) {
00069                 // keinen String oder leeren String gekriegt -> ueberspringen.
00070                 continue;
00071       }
00072       else
00073                 look+=res;
00074     }
00075   }
00076   // fertig. Wenn look nicht leer ist, zurueckgeben, sonst 0.
00077   if (strlen(look))
00078     return(look);
00079   else
00080     return(0);
00081 }

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

mapping _query_material (  ) 

Definiert in Zeile 313 der Datei description.c.

Benutzt P_MATERIAL und Query().

00313                           {
00314   mixed res;
00315 
00316   if (mappingp(res=Query(P_MATERIAL)))
00317     return res;
00318   return ([MAT_MISC_LIVING:100]);
00319 }

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

static int _query_player_light (  )  [static]

Definiert in Zeile 321 der Datei description.c.

Benutzt _query_int_light(), P_LIGHT_MODIFIER und QueryProp().

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

static string _query_real_race (  )  [static]

Definiert in Zeile 274 der Datei description.c.

Benutzt F_VALUE, P_RACE, P_REAL_RACE, Query() und QueryProp().

00275 {
00276   return Query(P_REAL_RACE,F_VALUE)||QueryProp(P_RACE);
00277 }

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

static mixed _set_name ( mixed  nm  )  [static]

Definiert in Zeile 279 der Datei description.c.

Benutzt P_NAME, Set() und set_living_name().

00280 {
00281   string lvnam;
00282   lvnam = nm;
00283   if(pointerp(nm)) lvnam = nm[0];
00284   set_living_name(lower_case(lvnam));
00285   return Set(P_NAME, nm);
00286 }

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

public varargs int AddExtraLook ( string  look,
int  duration,
string  key,
string  lookende,
object  ob 
)

Definiert in Zeile 83 der Datei description.c.

Benutzt BLUE_NAME, break_string(), BS_LEAVE_MY_LFS, F_VALUE, ME, P_INTERNAL_EXTRA_LOOK, Query(), replace_personal() und Set().

00084                                                             {
00085   mapping xl;
00086   string oname;
00087   if (!stringp(key) || !strlen(key)) {
00088     // Automatisch erzeugen, wenn moeglich
00089     if (!objectp(previous_object()) || 
00090                 !stringp(key=object_name(previous_object())) || !strlen(key))
00091       return(-1);
00092   }
00093   
00094   if (!stringp(look) || !strlen(look))
00095     return(-2);
00096   if (!intp(duration))
00097     return(-3);
00098   
00099   xl=Query(P_INTERNAL_EXTRA_LOOK,F_VALUE); // dran denken: liefert referenz zurueck
00100   if (!mappingp(xl)) {
00101     Set(P_INTERNAL_EXTRA_LOOK, xl=([]) );
00102   }
00103 
00104   // kein Automatisches Ueberschreiben.
00105   if (member(xl,key))
00106     return(-4);
00107 
00108   // neg. Werte: "bis Ende/reboot", abs(duration) == Eintragzeit
00109   // 0: "fuer ewig", >0: Zeitdauer in Sekunden
00110   if (duration > 0)
00111     duration+=time();  // hoffentlich gibt es reichtzeitig 64bit-Ints
00112   else if (duration < 0)
00113     duration=negate(time());
00114   // 0 bleibt, wie es ist.
00115 
00116   if (objectp(ob)) {
00117     // Funktionsname und Objektname (als Name, damit es auch noch geht, wenn
00118     // das Objekt entladen wurde, Crash/reboot war etc.) speichern
00119     if (!oname=object_name(blueprint(ob)))
00120                 oname=BLUE_NAME(ob); //BLUE_NAME nimmt explode()...
00121     xl[key]=(["xlobjectname":oname,
00122                       "xlfun": look,
00123                      ]);
00124     // ggf. Name der Funktion speichern, die bei Ablauf aufgerufen wird.
00125     if (stringp(lookende) && strlen(lookende))
00126                 xl[key]["xlendefun"]=lookende;
00127   }
00128   else {
00129     // Einfacher Eintrag, nur den bearbeiteten String merken. ;-)
00130     xl[key]=(["xllook": break_string(replace_personal(look,({ME}),1),78,
00131                                              "",BS_LEAVE_MY_LFS),
00132                      ]);
00133     // ggf. Meldung speichern, die bei Ablauf ausgegeben werden soll.
00134     if (stringp(lookende) && strlen(lookende)) {
00135       xl[key]["xlende"]=break_string(replace_personal(lookende,({ME}),1),78,
00136                                              "",BS_LEAVE_MY_LFS);
00137     }
00138   }
00139   // Endezeit vermerken.
00140   if (duration != 0)
00141     xl[key]["xlduration"]=duration;
00142 
00143   // Kein Set noetig, weil Query das Mapping ja als Referenz lieferte.
00144   return(1);
00145 }

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

varargs int CannotSee ( int  silent  ) 

Definiert in Zeile 324 der Datei description.c.

Benutzt IS_LEARNER, P_BLIND, P_PLAYER_LIGHT, P_WANTS_TO_LEARN, Query(), QueryProp(), SK_NIGHTVISION und UseSkill().

Wird benutzt von _equipment(), _examine(), _inventory(), _look(), look_into() und show_exits().

00325 {
00326    string is_blind;
00327    if (is_blind = QueryProp(P_BLIND)) {
00328       if (!silent) {
00329          if (stringp(is_blind))
00330             tell_object(this_object(), is_blind);
00331          else tell_object(this_object(), "Du bist blind!\n");
00332       }
00333       return 2;
00334    }
00335    if (UseSkill(SK_NIGHTVISION)<=0 &&
00336        environment() && QueryProp(P_PLAYER_LIGHT)<=0 &&
00337        (!IS_LEARNER(this_object()) || !Query(P_WANTS_TO_LEARN)))
00338    {
00339        if (!silent) tell_object(this_object(), "Es ist zu dunkel!\n");
00340        return 1;
00341    }
00342    return 0;
00343 }

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

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

string condition (  ) 

Definiert in Zeile 178 der Datei description.c.

Benutzt P_HP, P_MAX_HP, QueryPronoun(), QueryProp() und WER.

Wird benutzt von long().

00179 {
00180   int hpnt, max_hpnt, perc;
00181 
00182   hpnt        = QueryProp( P_HP );
00183   max_hpnt    = QueryProp( P_MAX_HP );
00184 
00185   if(max_hpnt>0 && hpnt>0)
00186     perc=100*hpnt/max_hpnt;
00187  
00188   switch(perc) {
00189     case 0..9:
00190                 return capitalize(QueryPronoun(WER))+" steht auf der Schwelle des Todes.\n";
00191     case 10..19:
00192                 return capitalize(QueryPronoun(WER))+" braucht dringend einen Arzt.\n";
00193     case 20..29:
00194                 return capitalize(QueryPronoun(WER))+" ist in keiner guten Verfassung.\n";
00195     case 30..39:
00196                 return capitalize(QueryPronoun(WER))+" wankt bereits bedenklich.\n";
00197     case 40..49:
00198                 return capitalize(QueryPronoun(WER))+" macht einen mitgenommenen Eindruck.\n";
00199     case 50..59:
00200                 return capitalize(QueryPronoun(WER))+" sieht nicht mehr taufrisch aus.\n";
00201     case 60..69:
00202                 return capitalize(QueryPronoun(WER))+" ist leicht angeschlagen.\n";
00203     case 70..79:
00204                 return capitalize(QueryPronoun(WER))+" fuehlte sich heute schon besser.\n";
00205     case 80..89:
00206                 return capitalize(QueryPronoun(WER))+" ist schon etwas geschwaecht.\n";
00207   }
00208   //fall-through
00209   return capitalize(QueryPronoun(WER))+" ist absolut fit.\n";
00210 }

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

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

void create (  ) 

Definiert in Zeile 166 der Datei description.c.

Benutzt AddId(), create(), F_MODE, F_MODE_AS, P_CLOTHING, P_GENDER, P_INTERNAL_EXTRA_LOOK, P_LIGHT_TRANSPARENCY, PROTECTED, SAVE, Set() und SetProp().

00167 { 
00168   ::create();
00169   Set(P_GENDER, SAVE, F_MODE);
00170   // Extralook-Property speichern und vor manueller Aenderung schuetzen
00171   // EMs duerfen, die wissen hoffentlich, was sie tun.
00172   Set(P_INTERNAL_EXTRA_LOOK, SAVE|PROTECTED, F_MODE_AS);
00173   SetProp(P_LIGHT_TRANSPARENCY, 0);
00174   SetProp(P_CLOTHING,({}));
00175   AddId("Living");
00176 }

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

int is_class_member ( mixed  str  ) 

Definiert in Zeile 293 der Datei description.c.

Benutzt P_RACE, QueryProp() und race.

00293                                {
00294   // Keine Klasse, keine Mitgliedschaft ...
00295   if (!str || (!stringp(str) && !pointerp(str)) || str=="") 
00296       return 0;
00297 
00298   if (::is_class_member(str))
00299     return 1;
00300 
00301   if (stringp(str))
00302     str = ({str});
00303 
00304   // Rassen werden als implizite Klassen aufgefasst.
00305   // TODO: Pruefen, ob das unbedingt hart-kodiert sein muss.
00306   string race = QueryProp(P_RACE);
00307   if ( stringp(race) && member( str, lower_case(race) ) > -1 )
00308     return 1;
00309   else
00310     return 0;
00311 }

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

varargs string long (  ) 

Definiert in Zeile 212 der Datei description.c.

Benutzt condition(), filter_ldfied(), make_invlist(), ME, ob(), P_EXTRA_LOOK, P_INTERNAL_EXTRA_LOOK, P_LONG, P_TRANSPARENT, PL, process_string(), QueryPronoun(), QueryProp() und WER.

00212                       {
00213   string str, cap_pronoun;
00214   string descr, invl,tmp,exl;
00215   int hpnt, max_hpnt;
00216   mixed filter_ldfied;
00217   object ob;
00218 
00219   str = process_string( QueryProp(P_LONG) );
00220   if(!stringp(str)) str = "";
00221 
00222   str += condition();
00223 
00224   // Extralook
00225   if(stringp(tmp = QueryProp(P_EXTRA_LOOK)))
00226     str += tmp;
00227   if (stringp(tmp = QueryProp(P_INTERNAL_EXTRA_LOOK)))
00228     str += tmp;
00229   for(ob = first_inventory(ME); ob; ob = next_inventory(ob))
00230     if(exl = ob->QueryProp(P_EXTRA_LOOK)) 
00231       str += exl;
00232     else if(exl = ob->extra_look()) 
00233       str += exl; // TO BE REMOVED
00234 
00235   
00236   if(filter_ldfied = QueryProp(P_TRANSPARENT))
00237   {
00238     invl = make_invlist(PL, all_inventory(ME));
00239     if(invl != "")
00240       str += capitalize(QueryPronoun(WER))+" traegt bei sich:\n" + invl;
00241   }
00242   return str;
00243 }

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

varargs string name ( int  casus,
int  demonst 
)

Definiert in Zeile 245 der Datei description.c.

Benutzt name, P_ARTICLE, P_FROG, QueryArticle(), QueryProp(), RAW, SetProp() und WESSEN.

00246 {
00247   string s;
00248   
00249   if( QueryProp( P_INVIS ) )
00250   {
00251     if( casus == RAW ) return "Jemand";
00252     return ({"Jemand","Jemands","Jemandem","Jemanden"})[casus];
00253   }
00254   if (QueryProp(P_FROG) && casus != RAW )
00255   {
00256     SetProp(P_ARTICLE,1);
00257     s=QueryArticle(casus,0)+"Frosch";
00258     if (casus==WESSEN) s += "es";
00259     SetProp(P_ARTICLE,0);
00260     return s;
00261   }
00262   return ::name( casus, demonst );
00263 }

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

public int RemoveExtraLook ( string  key  ) 

Definiert in Zeile 147 der Datei description.c.

Benutzt F_VALUE, m_delete(), P_INTERNAL_EXTRA_LOOK und Query().

00147                                        {
00148   mapping xl;
00149   if (!stringp(key) || !strlen(key)) {
00150     // Automatisch erzeugen, wenn moeglich
00151     if (!objectp(previous_object()) ||
00152                 !stringp(key=object_name(previous_object())) || !strlen(key))
00153       return(-1);
00154   }
00155   xl=Query(P_INTERNAL_EXTRA_LOOK,F_VALUE); // dran denken: liefert referenz zurueck
00156   if (!mappingp(xl))
00157     return (-2);
00158   if (!member(xl,key))
00159     return(-2);
00160 
00161   efun::m_delete(xl,key);
00162   // Kein Set noetig, weil Query das Mapping ja als Referenz lieferte.
00163   return(1);
00164 }

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


Variablen-Dokumentation

inherit std container description

Definiert in Zeile 12 der Datei description.c.

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