Ein Schild mit dem Zeichen Willinas
![]()
// Ein Schild mit dem Zeichen Willinas // Da Willina eine der guten Feen des Wunderlandes ist, muss // man sich würdig erweisen, um das Schild zücken zu // dürfen. inherit "std/armour"; #include <properties.h> #include <combat.h> #include <events.h> // Die Funktion, die vom Event aufgerufen werden soll void abbrechen(mixed data, string type); void create() { if (!clonep()) return; ::create(); SetProp(P_NAME, "Schild"); SetProp(P_PLURAL, "Schilde"); SetProp(P_LONG, "Ein Schild. Er traegt das Zeichen der guten Fee Willina."); SetProp(P_GENDER, MALE); AddId("schild", "schilde"); SetProp(P_WEIGHT, 1000); SetProp(P_BULKINESS, 100); SetProp(P_VALUE, 400); SetProp(P_ARMOUR_TYPE, AT_SHIELD); SetProp(P_AC, 28); AddDetail(({"zeichen", "willina", "fee"}), "Der Schild traegt das Zeichen Willinas. Du solltest Dich seiner wuerdig " "erweisen."); // Wir melden uns beim Eventhandler an. // Wir lauschen dem Event ET_WIELD, weil Schilde gezückt werden, mit der // Prioritaet EPRIO_CANCEL, weil wir nur abbrechen wollen. Und geben die // Funktion abbrechen als aufzurufende Funktion an. listen_event(ET_WIELD, EPRIO_CANCEL, #'abbrechen); } void abbrechen(mixed data, string type) { object pl; // Wenn nicht dieser Schild im Event-Mapping steht, brechen wir ab if (data[E_WIELD_WEAPON] != this_object()) return; // Wenn es keinen Akteur gibt, brechen wir auch ab if (!data[E_ACTOR]) return; // Wenn die Gesinnung des Akteurs zu schlecht ist, darf er das Schild nicht // fuehren. if ((data[E_ACTOR]->QueryProp(P_ALIGN)) < 300) cancel_event("Die Stimme Willinas ertoent: Du bist nicht " "wuerdig, diesen Schild zu fuehren!\n"); // Achtung! Wenn beim Abbruch mehr als nur diese eine Textausgabe an den // Akteur erfolgen soll, muss dem Event noch zusaetzlich mit EPRIO_C_HANDLE // gelauscht werden, und das dann dort passieren. Siehe dazu auch ruestung3.c } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Schild | |
|
| |