#include <properties.h>#include <moving.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| void | create () |
| mixed | _query_short () |
| protected int | PreventMove (object dest, object oldenv, int method) |
| protected void | NotifyMove (object dest, object oldenv, int method) |
| varargs void | NotifyLeave (object ob) |
| varargs void | NotifyRemove (object ob) |
| void | merge_pile () |
| void | reset () |
Variablen | |
| inherit std | container |
| private nosave status | spielerhaufen |
| mixed _query_short | ( | ) |
Definiert in Zeile 44 der Datei pile.c.
Benutzt call_out().
00044 { 00045 int sz = sizeof(all_inventory()); 00046 if( sz==0 ) { 00047 call_out("remove",0,1); // fallback, wenn inhalt auf unerwartete weise verschwindet 00048 return 0; 00049 } else if( sz<10 ) { 00050 return "Ein kleiner Haufen Krempel"; 00051 } else if( sz<30 ) { 00052 return "Ein Haufen Krempel"; 00053 } else { 00054 return "Ein grosser Haufen Krempel"; 00055 } 00056 return 0; 00057 }

| void create | ( | ) |
Definiert in Zeile 19 der Datei pile.c.
Benutzt AddDetail(), AddId(), break_string(), call_out(), create(), MALE, P_GENDER, P_INFO, P_LONG, P_NAME, P_PILE_NAME, QueryProp(), set_next_reset(), SetProp() und spielerhaufen.
00019 { 00020 string von; 00021 if (object_name(this_object()) == __FILE__[0..<3]) { 00022 set_next_reset(-1); 00023 return; 00024 } 00025 if( !clonep(this_object()) ) return; 00026 ::create(); 00027 von = (string)previous_object()->QueryProp(P_PILE_NAME); 00028 SetProp( P_PILE_NAME, "\nhaufen "+von ); 00029 spielerhaufen = (int)previous_object()->IsPlayerCorpse(); 00030 00031 AddId( ({"haufen","krempel","kluengel","gegenstaende"}) ); 00032 AddId( QueryProp(P_PILE_NAME) ); 00033 SetProp( P_NAME, "Haufen Krempel" ); 00034 SetProp( P_GENDER, MALE ); 00035 SetProp( P_INFO, "Diese Gegenstaende gehoerten einmal " + von + ".\n" ); 00036 SetProp( P_LONG, break_string("Du betrachtest einen Haufen, der aus einer von Leichenresten zusammengebackenen Menge diverser Gegenstaende besteht. Zum Glueck ist von der Leiche nicht mehr genug uebrig, um Ekelgefuehle zu wecken. Ganz im Gegenteil: Dir juckt es ein wenig in den Fingern, Dich an diesem Haufen zu bedienen. Aber man kann sich nie ganz sicher sein, ob nicht doch ein Fluch auf den Dingen lastet. Vielleicht hat der verschiedene Besitzer sie auch jemandem vererbt? Andererseits, wenn gerade niemand guckt ...\n" ) ); 00037 AddDetail( ({"fetzen","leiche","leichenteile"}), "Mit blossen Augen kann man nicht mehr viel erkennen, aber einige Fetzen deuten darauf hin, dass die Sachen von "+von+" stammen.\n" ); 00038 AddDetail( ({"ekel","ekelgefuehle"}), "Es ist nicht mehr genug da, um welche zu wecken.\n" ); 00039 AddDetail( "menge", "Viele kleine Fetzen, die an den Gegenstaenden kleben.\n" ); 00040 AddDetail( "fluch", "Dem Anschein nach lastet auf den Sachen kein Fluch, aber wer weiss ...?\n" ); 00041 call_out( "merge_pile", 1 ); 00042 }

| void merge_pile | ( | ) |
Definiert in Zeile 100 der Datei pile.c.
Benutzt M_NOCHECK, M_SILENT, P_PILE_NAME und QueryProp().
00100 { 00101 object* other = filter_objects( 00102 all_inventory(environment()) - ({ this_object() }), 00103 "id", 00104 QueryProp( P_PILE_NAME ) 00105 ); 00106 if( !sizeof(other) ) return; 00107 filter_objects( all_inventory(), "move", other[0], M_SILENT | M_NOCHECK ); 00108 remove(); 00109 }

| varargs void NotifyLeave | ( | object | ob | ) |
Definiert in Zeile 88 der Datei pile.c.
Benutzt call_out().
Wird benutzt von NotifyRemove().
00088 { 00089 if( sizeof(all_inventory())>1 ) return; 00090 call_out( "remove", 0, 1 ); // verzoegern, um prepare_destruct gnaedig zu stimmen 00091 }


| protected void NotifyMove | ( | object | dest, | |
| object | oldenv, | |||
| int | method | |||
| ) |
Definiert in Zeile 73 der Datei pile.c.
Benutzt call_out(), dtime(), log_file, M_NOCHECK, M_SILENT und NotifyMove().
00073 { 00074 if( query_once_interactive(dest)) { 00075 log_file( "PILE.log", dtime(time()) + ": pile in " 00076 + dest->query_real_name() + " gelandet.\n" ); 00077 } 00078 if( living(dest) ) { 00079 filter_objects( all_inventory(), "move", dest, M_SILENT | M_NOCHECK ); 00080 // NPCs erwarten nicht, dass dinge im move verschwinden, deshalb 00081 // abwarten 00082 call_out( "remove", 0, 1 ); 00083 } 00084 return ::NotifyMove(dest, oldenv, method); 00085 }

| varargs void NotifyRemove | ( | object | ob | ) |
Definiert in Zeile 94 der Datei pile.c.
Benutzt NotifyLeave().
00094 { 00095 NotifyLeave( ob ); 00096 }

| protected int PreventMove | ( | object | dest, | |
| object | oldenv, | |||
| int | method | |||
| ) |
Definiert in Zeile 61 der Datei pile.c.
Benutzt M_NOCHECK, ME_NOT_ALLOWED und PreventMove().
00061 { 00062 if( !objectp(dest) ) return 0; 00063 if( method & M_NOCHECK ) return 0; 00064 if( query_once_interactive(dest) ) { 00065 return ME_NOT_ALLOWED; 00066 // default meldung in put_and_get:pick 00067 // IDEE: im spieler per hook eine andere meldung unterbringen 00068 } 00069 return ::PreventMove(dest, oldenv, method); 00070 }

| void reset | ( | void | ) |
Definiert in Zeile 111 der Datei pile.c.
Benutzt remove_multiple(), reset() und spielerhaufen.
00111 { 00112 // wenn es ein NPC-Haufen ist, werden Gegenstaende, die oefter als 3mal 00113 // vorkommen, zerstoert. Schraenkt die Objektflut an Stellen ein, wo NPC 00114 // ihren Kram nicht mit AddItem clonen. 00115 if (!spielerhaufen) 00116 remove_multiple(3); 00117 ::reset(); 00118 // wenn nur noch unsichtbare items im Haufen: aufloesen 00119 if (!sizeof(filter(all_inventory(), function int (object o) 00120 { return !o->QueryProp(P_INVIS);} ))) 00121 remove(1); 00122 00123 }

| private nosave status spielerhaufen |
1.6.3