#include <thing/language.h>#include <player/description.h>#include <living/clothing.h>#include <properties.h>#include <wizlevels.h>#include <defines.h>#include <combat.h>#include <sys_debug.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | RassenString() |
Funktionen | |
| void | create () |
| string | _query_info () |
| int | _query_size () |
| string | short () |
| private string | andlist (object *arr) |
| private string | get_vis_name (object ob) |
| varargs string | long () |
| static mixed | _query_presay () |
| static string | _query_name () |
Variablen | |
| inherit std living | description |
| #define RassenString | ( | ) |
| string _query_info | ( | ) |
Definiert in Zeile 36 der Datei description.c.
Benutzt info, IS_ARCH, IS_DOMAINMEMBER, IS_ELDER, IS_GOD, IS_LEARNER, IS_LORD, IS_SEER, IS_SPECIAL, IS_WIZARD, P_INFO, P_LEVEL, Query(), query_wiz_level() und QueryProp().
00037 { 00038 string info; 00039 info = Query(P_INFO); 00040 if(!info)info==""; 00041 info = (string)query_wiz_level(this_object()); 00042 if(IS_GOD(this_object())) 00043 return info+" [Gott]\n"; 00044 if(IS_ARCH(this_object())) 00045 return info+" [Erzmagier]\n"; 00046 if(IS_ELDER(this_object())) 00047 return info+" [Weiser]\n"; 00048 if(IS_LORD(this_object())) 00049 return info+" [Regionschef]\n"; 00050 if(IS_SPECIAL(this_object())) 00051 return info+" [Special]\n"; 00052 if(IS_DOMAINMEMBER(this_object())) 00053 return info+" [Regionsmitarbeiter]\n"; 00054 if(IS_WIZARD(this_object())) 00055 return info+" [Magier]\n"; 00056 if(IS_LEARNER(this_object())) 00057 return info+" [Magieranwaerter]\n"; 00058 info = QueryProp(P_LEVEL); 00059 if(IS_SEER(this_object())) 00060 return info+" [Seher]\n"; 00061 return info+" [Spieler]\n"; 00062 }

| static string _query_name | ( | ) | [static] |
| static mixed _query_presay | ( | ) | [static] |
| int _query_size | ( | ) |
Definiert in Zeile 64 der Datei description.c.
Benutzt P_FROG, P_SIZE, Query() und QueryProp().

| private string andlist | ( | object * | arr | ) |
Definiert in Zeile 101 der Datei description.c.
00101 { 00102 string *tmp; 00103 if(!pointerp(arr)) return ""; 00104 if(sizeof(tmp = map_objects(arr, "name", WEN))) 00105 return(CountUp(tmp)); 00106 return ""; 00107 }

| void create | ( | ) |
Definiert in Zeile 24 der Datei description.c.
Benutzt create(), F_MODE_AS, F_SET_METHOD, NOSETMETHOD, P_EXTRA_LOOK, P_GENDER, P_INFO, P_NAME, P_PRESAY, P_SIZE, P_TITLE, SAVE und Set().
00025 { 00026 ::create(); 00027 Set(P_NAME, NOSETMETHOD, F_SET_METHOD); 00028 Set(P_PRESAY, SAVE, F_MODE_AS); 00029 Set(P_TITLE, SAVE, F_MODE_AS); 00030 Set(P_EXTRA_LOOK, SAVE, F_MODE_AS); 00031 Set(P_GENDER, SAVE, F_MODE_AS); 00032 Set(P_SIZE, SAVE, F_MODE_AS); 00033 Set(P_INFO, NOSETMETHOD, F_SET_METHOD); 00034 }

| private string get_vis_name | ( | object | ob | ) |
| varargs string long | ( | ) |
Definiert in Zeile 116 der Datei description.c.
Benutzt break_string(), CountUp(), get_vis_name(), long(), ME, name, ob(), P_ARMOURS, P_AVERAGE_SIZE, P_CLOTHING, P_GHOST, P_LIGHT, P_LIGHTED, P_PARRY_WEAPON, P_SHOW_INV, P_SIZE, P_TRANSPARENT, P_WEAPON, QueryPronoun(), QueryProp(), RassenString, SetProp(), WEM und WER.
00117 { 00118 string exl, descr, tmp, size_descr; 00119 object ob; 00120 mixed trans, w, a, r; 00121 int per; 00122 string fill, fill2; 00123 /* fuer groessenvergleich */ 00124 string comparesize, pers1, pers2; 00125 int relation; 00126 00127 per=1000*QueryProp(P_SIZE)/QueryProp(P_AVERAGE_SIZE); 00128 switch(per) 00129 { 00130 case 0..800: size_descr="ziemlich winzig"; break; 00131 case 801..850: size_descr="eher winzig"; break; 00132 case 851..900: size_descr="recht klein"; break; 00133 case 901..950: size_descr="eher klein"; break; 00134 case 951..1050: size_descr="mittelgross"; break; 00135 case 1051..1100: size_descr="relativ gross"; break; 00136 case 1101..1150: size_descr="ziemlich gross"; break; 00137 case 1151..1200: size_descr="sehr gross"; break; 00138 default: size_descr="riesig"; break; 00139 } 00140 #define RassenString() ((QueryProp(P_FROG) ? "en Frosch" :\ 00141 (!QueryProp(P_GENDER)?" ":QueryProp(P_GENDER)==2?"e ":"en ")+\ 00142 (pointerp(QueryProp(P_RACESTRING))?\ 00143 QueryProp(P_RACESTRING)[WEN]:QueryProp(P_RACE)))) 00144 fill2=fill=0; 00145 if (QueryProp(P_AVERAGE_SIZE)<170) 00146 { 00147 if (per<950) 00148 fill="selbst fuer ein"+RassenString()+" "; 00149 else 00150 if (per>1050) 00151 fill2=", wenn auch nur fuer ein"+RassenString(); 00152 } 00153 else 00154 { 00155 if (QueryProp(P_AVERAGE_SIZE)>170) 00156 if (per>1050) 00157 fill="sogar fuer ein"+RassenString()+" "; 00158 else 00159 if (per<950) 00160 fill2=", wenn auch nur fuer ein"+RassenString(); 00161 } 00162 if (!fill&&!fill2) fill="fuer ein"+RassenString()+" "; 00163 descr = "Das ist "+name(WER,1)+". "+capitalize(QueryPronoun())+" ist "+ 00164 (fill||"")+size_descr+(fill2||"")+".\n"; 00165 00166 if(this_player()) { 00167 /* groessenvergleich_anfang (NEU) */ 00168 pers1 = QueryPronoun(WER); 00169 pers2 = QueryPronoun(WEM); 00170 00171 // || falls TP keine Groesse gesetzt hat... Warum auch immer... 00172 relation = (QueryProp(P_SIZE)*100) / 00173 (this_player()->QueryProp(P_SIZE) || 1); 00174 switch (relation) 00175 { 00176 case 0 .. 25 : comparesize = "Damit gibt "+pers1+" einen guten" 00177 " Fusschemel fuer Dich ab"; 00178 break; 00179 case 26 .. 50 : comparesize = "Damit reicht "+pers1+" Dir nicht mal bis" 00180 " zur Huefte"; 00181 break; 00182 case 51 .. 75 : comparesize = "Damit kannst Du "+pers2+" locker auf den" 00183 " Kopf spucken"; 00184 break; 00185 case 76 .. 90 : comparesize = "Damit ist "+pers1+" einen Kopf kleiner" 00186 " als Du"; 00187 break; 00188 case 91 .. 110 : comparesize = "Damit hat "+pers1+" etwa Deine Groesse"; 00189 break; 00190 case 111 .. 120 : comparesize = "Damit ist "+pers1+" einen Kopf groesser" 00191 " als Du"; 00192 break; 00193 case 121 .. 150 : comparesize = "Damit holst Du Dir einen steifen Nacken," 00194 " wenn Du "+pers2+" in die Augen siehst"; 00195 break; 00196 case 151 .. 200 : comparesize = "Damit versperrt "+pers1+" Dir absolut" 00197 " die Sicht"; 00198 break; 00199 case 201 .. 300 : comparesize = "Damit waere jeder Schlag von Dir ein" 00200 " Tiefschlag"; 00201 break; 00202 default : comparesize = "Damit kannst Du "+pers2+" bequem zwischen" 00203 " den Beinen durchlaufen"; 00204 break; 00205 } 00206 00207 descr+=comparesize+".\n"; 00208 /* groessenvergleich_ende (NEU) */ 00209 } 00210 00211 if(QueryProp(P_GHOST)) return descr; 00212 00213 trans = QueryProp(P_TRANSPARENT); SetProp(P_TRANSPARENT, 0); 00214 descr += ::long(); SetProp(P_TRANSPARENT, trans); 00215 00216 // Waffen, Ruestungen/Kleidung und Sonstiges ermitteln 00217 w = ({QueryProp(P_WEAPON), QueryProp(P_PARRY_WEAPON)}) - ({0}); 00218 a = QueryProp(P_ARMOURS) + QueryProp(P_CLOTHING) - ({0}); 00219 r = all_inventory(ME) - w - a; //Rest logischerweise 00220 00221 // rest noch nach sichbarkeit von ausserhalb des SPielers filtern. 00222 r=map(r,function string (object ob) { 00223 if(sizeof(all_inventory(ob)) || ob->QueryProp(P_LIGHT) || 00224 ob->QueryProp(P_LIGHTED) || ob->QueryProp(P_SHOW_INV)) 00225 return(get_vis_name(ob)); 00226 return(0); } ) - ({0}); 00227 00228 // Invis-Objekte ausfiltern und Namen ermitteln, anschliessend sind in w, a 00229 // und r je ein Array von Strings 00230 w = map(w, #'get_vis_name) - ({0}); 00231 a = map(a, #'get_vis_name) - ({0}); 00232 00233 return descr + 00234 (QueryProp(P_TRANSPARENT) ? 00235 break_string(capitalize(name(WER, 1))+" hat " 00236 +(sizeof(a)?CountUp(a):"keine Ruestung")+" an" 00237 +(sizeof(r)?", ":" und ") 00238 +(sizeof(w)?CountUp(w):"keine Waffe")+" gezueckt" 00239 +(sizeof(r)?" und traegt "+CountUp(r):"")+".", 78): ""); 00240 }

| string short | ( | ) |
Definiert in Zeile 71 der Datei description.c.
Benutzt IS_LEARNING, ME, P_ARTICLE, P_FROG, P_GHOST, P_NAME, P_PRESAY, P_TITLE, QueryArticle() und QueryProp().
00072 { 00073 string answer; 00074 string title; 00075 00076 if(QueryProp(P_INVIS)) 00077 if(interactive(previous_object()) && IS_LEARNING(previous_object())) 00078 return "("+QueryProp(P_NAME)+") \n"; 00079 else 00080 return (string)0; 00081 00082 if(QueryProp(P_GHOST)) 00083 { 00084 if (QueryProp(P_FROG)) 00085 return "Der Geist eines kleinen Frosches namens "+QueryProp(P_NAME)+ 00086 ".\n"; 00087 else 00088 return "Der Geist von "+QueryProp(P_NAME)+".\n"; 00089 } 00090 00091 if (QueryProp(P_FROG)) 00092 return "Ein kleiner Frosch namens "+QueryProp(P_NAME)+".\n"; 00093 00094 answer = QueryProp(P_PRESAY) + QueryProp(P_NAME); 00095 if (QueryProp(P_ARTICLE)) answer=QueryArticle(0,0)+answer; 00096 if((title=QueryProp(P_TITLE)) && title != "") answer += " " + title; 00097 if(!interactive(ME)) answer += " (netztot)"; 00098 return answer+".\n"; 00099 }

| inherit std living description |
Definiert in Zeile 12 der Datei description.c.
1.6.3