#include <properties.h>#include <defines.h>#include <wizlevels.h>#include <language.h>#include <doorroom.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| void | create () |
| void | init () |
| varargs void | AddRoomMessage (string *mesg, int prob, mixed *func) |
| static void | WriteRoomMessage () |
| varargs string | int_long (mixed viewer, mixed viewpoint, int flags) |
| string | int_short (mixed viewer, mixed viewpoint) |
| varargs void | exit (object liv, object dest) |
| Roommessages abschalten, wenn keine Interactives mehr da sind. | |
| static int | _set_int_light (int *light) |
| static string | _query_int_long () |
Variablen | |
| inherit std container | description |
| #define NEED_PROTOTYPES |
Definiert in Zeile 15 der Datei description.c.
| static string _query_int_long | ( | ) | [static] |
Definiert in Zeile 212 der Datei description.c.
00212 {return Query(P_INT_LONG, F_VALUE);}
| static int _set_int_light | ( | int * | light | ) | [static] |
Definiert in Zeile 184 der Datei description.c.
00185 { 00186 int tmp; 00187 00188 // zur Sicherheit 00189 if (!pointerp(light)) return -1; 00190 if (light[0]>QueryProp(P_LIGHT)) { 00191 // Licht verlaeuft sich in einem grossen Raum, daher Modifier abfragen... 00192 tmp=light[0]-QueryProp(P_LIGHT_ABSORPTION); 00193 // wenn sich das Vorzeichen geaendert hat, auf 0 setzen. 00194 light[0]=((tmp^light[0]) & 0x80000000 ? 0 : tmp); 00195 } 00196 if (light[1]<QueryProp(P_LIGHT) && light[1]<0) { 00197 // Licht verlaeuft sich in einem grossen Raum, daher Modifier abfragen... 00198 tmp=light[1]+QueryProp(P_LIGHT_ABSORPTION); 00199 // wenn sich das Vorzeichen geaendert hat, auf 0 setzen. 00200 light[1]=((tmp^light[1]) & 0x80000000 ? 0 : tmp); 00201 } 00202 light[2]=light[0]+light[1]; 00203 Set(P_INT_LIGHT, light, F_VALUE); 00204 // diese Prop setzen kaum Leute (offiziell gehts ja auch gar nicht. Keiner 00205 // davon erwartet nen Rueckgabewert. Daher wird hier 0 zurueckgeben, statt 00206 // des aufwaendig berechneten QueryProp(P_INT_LIGHT). 00207 // Achja. Der Rueckgabewert vom Set() waere ein int*, was nicht geht, weil 00208 // diese Funktion nur int zurueckgeben darf. 00209 return 0; 00210 }
| varargs void AddRoomMessage | ( | string * | mesg, | |
| int | prob, | |||
| mixed * | func | |||
| ) |
Definiert in Zeile 49 der Datei description.c.
Benutzt P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und SetProp().
00050 { 00051 if (mesg && !pointerp(mesg)) 00052 raise_error(sprintf( 00053 "AddRoomMessage(): wrong argument type, expected Array or 0, " 00054 "got %.20O",mesg)); 00055 00056 SetProp(P_ROOM_MSG, mesg); 00057 00058 if (prob>0) 00059 SetProp(P_MSG_PROB, prob); 00060 00061 if (func) 00062 SetProp(P_FUNC_MSG, func); 00063 }

| void create | ( | ) |
Definiert in Zeile 23 der Datei description.c.
Benutzt AddId(), create(), P_FUNC_MSG, P_INT_LONG, P_INT_SHORT, P_LIGHT_ABSORPTION, P_MSG_PROB, P_NAME, P_ROOM_MSG und SetProp().
00024 { 00025 ::create(); 00026 SetProp(P_NAME, "Raum"); 00027 SetProp(P_INT_SHORT,"<namenloser Raum>"); 00028 SetProp(P_INT_LONG,0); 00029 SetProp(P_ROOM_MSG, ({}) ); 00030 SetProp(P_FUNC_MSG, 0); 00031 SetProp(P_MSG_PROB, 30); 00032 SetProp(P_LIGHT_ABSORPTION, 1); 00033 AddId(({"raum", "hier"})); 00034 }

| varargs void exit | ( | object | liv, | |
| object | dest | |||
| ) |
Roommessages abschalten, wenn keine Interactives mehr da sind.
Definiert in Zeile 170 der Datei description.c.
00170 { 00171 // fall erbende Objekte das liv nicht uebergeben. Pruefung nur auf 00172 // previous_object(). Wenn Magier da noch irgendwelche Spielchen mit 00173 // call_other() & Co treiben, haben wir Pech gehabt, macht aber nicht viel, 00174 // weil die Raummeldungen dann im naechsten callout abgeschaltet werden. 00175 if (!living(liv=previous_object())) return; 00176 00177 object *interactives = filter(all_inventory(), #'interactive); 00178 // liv wurde noch nicht bewegt, ggf. beruecksichtigen. 00179 if ( !sizeof(interactives) || 00180 (interactive(liv) && sizeof(interactives) < 2) ) 00181 while (remove_call_out("WriteRoomMessage")!=-1); 00182 }
| void init | ( | ) |
Definiert in Zeile 36 der Datei description.c.
Benutzt call_out(), P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und QueryProp().
00037 { 00038 mixed roommsg; 00039 00040 // ::init(); 00041 // Wenn P_ROOM_MSG gesetzt oder P_FUNC_MSG und kein Callout laeuft, 00042 // Callout starten. 00043 if( (((roommsg=QueryProp(P_ROOM_MSG)) && sizeof(roommsg)) || 00044 QueryProp(P_FUNC_MSG) ) && 00045 (find_call_out("WriteRoomMessage")==-1)) 00046 call_out("WriteRoomMessage", random(QueryProp(P_MSG_PROB))); 00047 }

| varargs string int_long | ( | mixed | viewer, | |
| mixed | viewpoint, | |||
| int | flags | |||
| ) |
Definiert in Zeile 99 der Datei description.c.
Benutzt DOOR_MASTER, GetExits(), IS_LEARNER, make_invlist(), ME, P_DOOR_INFOS, P_HIDE_EXITS, P_INT_LONG, P_SHOW_EXITS, P_TRANSPARENT, P_WANTS_TO_LEARN, process_string() und QueryProp().
00100 { 00101 string descr, inv_descr; 00102 00103 flags &= 3; 00104 if( IS_LEARNER(viewer) && viewer->QueryProp( P_WANTS_TO_LEARN ) ) 00105 descr = "[" + object_name(ME) + "]\n"; 00106 else 00107 descr = ""; 00108 00109 descr += process_string(QueryProp(P_INT_LONG)||""); 00110 00111 // ggf. Tueren hinzufuegen. 00112 if (QueryProp(P_DOOR_INFOS)) { 00113 string tmp=((string)call_other(DOOR_MASTER,"look_doors")); 00114 if (stringp(tmp) && strlen(tmp)) 00115 descr += tmp; 00116 } 00117 00118 // ggf. Ausgaenge hinzufuegen. 00119 if ( viewer->QueryProp(P_SHOW_EXITS) && (!QueryProp(P_HIDE_EXITS) 00120 || pointerp(QueryProp(P_HIDE_EXITS))) ) 00121 descr += GetExits(viewer) || ""; 00122 00123 // Viewpoint (Objekt oder Objektarray) sind nicht sichtbar 00124 inv_descr = (string) make_invlist(viewer, all_inventory(ME) 00125 - (pointerp(viewpoint)?viewpoint:({viewpoint})) ,flags); 00126 00127 if ( inv_descr != "" ) 00128 descr += inv_descr; 00129 00130 if(environment() && (inv_descr=QueryProp(P_TRANSPARENT))) 00131 { 00132 if(stringp(inv_descr)) descr += inv_descr; 00133 else descr += "Ausserhalb siehst Du:\n"; 00134 00135 descr += environment()->int_short(viewer,ME); 00136 } 00137 00138 return descr; 00139 }

| string int_short | ( | mixed | viewer, | |
| mixed | viewpoint | |||
| ) |
Definiert in Zeile 141 der Datei description.c.
Benutzt GetExits(), IS_LEARNER, make_invlist(), ME, P_BRIEF, P_HIDE_EXITS, P_INT_SHORT, P_SHOW_EXITS, P_WANTS_TO_LEARN, process_string() und QueryProp().
00142 { 00143 string descr, inv_descr; 00144 00145 descr = process_string( QueryProp(P_INT_SHORT)||""); 00146 if( IS_LEARNER(viewer) && viewer->QueryProp( P_WANTS_TO_LEARN ) ) 00147 descr += " [" + object_name(ME) + "].\n"; 00148 else 00149 descr += ".\n"; 00150 00151 if ( ( viewer->QueryProp(P_SHOW_EXITS) 00152 || ( environment(viewer) == ME && !viewer->QueryProp(P_BRIEF) ) ) 00153 && (!QueryProp(P_HIDE_EXITS) || pointerp(QueryProp(P_HIDE_EXITS))) ) 00154 descr += GetExits(viewer) || ""; 00155 00156 // Viewpoint (Objekt oder Objektarray) sind nicht sichtbar 00157 inv_descr = (string) make_invlist( viewer, all_inventory(ME) 00158 - (pointerp(viewpoint)?viewpoint:({viewpoint})) ); 00159 00160 if ( inv_descr != "" ) 00161 descr += inv_descr; 00162 00163 return descr; 00164 }

| static void WriteRoomMessage | ( | ) | [static] |
Definiert in Zeile 65 der Datei description.c.
Benutzt call_out(), i, P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und QueryProp().
00066 { 00067 int i,tim; 00068 string *room_msg,func; 00069 mixed *func_msg; 00070 00071 room_msg = (string *)QueryProp(P_ROOM_MSG); 00072 func_msg = QueryProp(P_FUNC_MSG); 00073 if ((!room_msg || !sizeof(room_msg)) && !func_msg) 00074 return; 00075 00076 if (room_msg&&sizeof(room_msg)) 00077 { 00078 i = random(sizeof(room_msg)); 00079 tell_room(this_object(), room_msg[i]); 00080 } 00081 00082 if (func_msg) 00083 { 00084 if (stringp(func_msg)) 00085 func=(string)func_msg; 00086 else 00087 func=func_msg[random(sizeof(func_msg))]; 00088 if (func && function_exists(func)) 00089 call_other (this_object(), func, i); 00090 } 00091 00092 while (remove_call_out("WriteRoomMessage")!=-1); 00093 tim=QueryProp(P_MSG_PROB); 00094 if(this_object() && sizeof(filter( 00095 deep_inventory(this_object()), #'interactive))) //'))) 00096 call_out("WriteRoomMessage", (tim<15 ? 15 : tim)); 00097 }

| inherit std container description |
Definiert in Zeile 13 der Datei description.c.
1.6.3