Eine quietschende Rüstung
![]()
// Eine quietschende Rüstung // Sie gibt Quietsch-Chats von sich, wenn sie angezogen ist. // Dazu lauscht sie auf ET_WEAR und ET_UNWEAR // by Sunrise@Wunderland 2003 #pragma strong_types inherit "armour"; #include <properties.h> // die grundlegenden Properties #include <events.h> // für Events allgemein #include <combat.h> // die Rüstung // Deklaration der Funktionen void quietsch_start(mixed data, string type, int prio); void quietsch_ende(mixed data, string type, int prio); void quietschen(); void create() { if (!clonep()) return; ::create(); AddAdjective(({"quietschend", "quietschende", "quietschender", "quietschenden"})); // Die Id "ruestung" haben alle Objekte, die von /std/armour" erben // automagisch. Deswegen brauchen wir das nicht setzen SetProp(P_NAME, "Ruestung"); SetProp(P_PLURAL, "Ruestungen"); SetProp(P_NAME_ADJ, "quietschend"); SetProp(P_WEIGHT, 3000); SetProp(P_BULKINESS, 500); SetProp(P_GENDER, FEMALE); SetProp(P_ARMOUR_TYPE, AT_ARMOUR); SetProp(P_AC, 30); SetProp(P_LONG, "Diese Ruestung scheint schon sehr alt zu sein. Ausserdem quietscht sie " "sicherlich, wenn man sie traegt."); // Wenn die Rüstung angezogen wird, soll sie anfangen zu quietschen // Also lauschen wir auf den Anzieh-Event ET_WEAR und Reagieren darauf // (EPRIO_REACT) listen_event(ET_WEAR, EPRIO_REACT, #'quietsch_start); // Wenn die Rüstung ausgezogen wird, soll das Quietschen natürlich aufhören listen_event(ET_UNWEAR, EPRIO_REACT, #'quietsch_ende); } void quietsch_start(mixed data, string type, int prio) { // Wenn nicht diese Rüstung angezogen werden soll if (data[E_WEAR_ARMOUR] != this_object()) return; // Wenn der Anziehende kein Spieler ist if (!query_once_interactive(data[E_ACTOR])) return; call_out("quietschen", 10); } void quietsch_ende(mixed data, string type, int prio) { // Wenn nicht diese Rüstung ausgezogen werden soll if (data[E_UNWEAR_ARMOUR] != this_object()) return; // Wenn der Ausziehende kein Spieler ist if (!query_once_interactive(data[E_ACTOR])) return; // Alle callouts fuer die Funktion "quietschen" stoppen. while (remove_call_out("quietschen") != -1); } void quietschen() { // nochmal eine Sicherheitsabfrage, ob die Rüstung wirklich getragen ist: // QueryWornBy() ist dabei das Lebewesen, das die Rüstung traegt if (!QueryWornBy()) return; tell_room(environment(QueryWornBy()), QueryWornBy()->name(WESSEN, NAME_CAP|NAME_DEF)+" Ruestung quietscht.\n", ({QueryWornBy()})); tell_object(QueryWornBy(), "Deine Ruestung quietscht.\n"); call_out("quietschen", 120); } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Quietschende Rüstung | |
|
| |