// #1: geclonter Raum mit Ausweich-Aufwachraum: Klerus-Gilde
#include <properties.h>
inherit "/std/room";
void create() {
::create();
SetProp(P_NETDEAD_INFO, "/gilden/klerus");
SetProp(P_LIGHT, 1);
}
// #2: komplexerer Beispielraum fuer P_NETDEAD_INFO-Funktionalitaet
// Siehe auch: /doc/beispiele/testobjekte/netdead_info_testraum.c
#include <properties.h>
inherit "/std/room";
void create() {
::create();
if (clonep(this_object()))
// setze Informationen, die im Netztoten gespeichert werden sollen
Set(P_NETDEAD_INFO, random(5));
else
// Blueprint: hier kann man zu einem Cloneraum gehen
AddExit("cloneraum", #'create_room);
// Set-Method, um die Informationen aus P_NETDEAD_INFO beim Aufwachen
// in der Blueprint auswerten zu koennen
Set(P_NETDEAD_INFO, #'create_destiny, F_SET_METHOD);
SetProp(P_LIGHT, 1);
}
// Raum entfernen, normalerweise so KEINE GUTE IDEE!
void BecomesNetDead(object pl) {
call_out(#'remove, 30);
}
// erzeuge einen Cloneraum und bewege den Spieler dahin
int create_room(string dir) {
object dest = clone_object(object_name(this_object()));
this_player()->move(dest, M_NOCHECK);
return 1;
}
// Set-Method fuer P_NETDEAD_INFO: gibt Pfad zurueck
// benutze die Informationen aus dem jetzt aufwachenden Netztoten, um
// einen alternativen Aufwachraum zu ermitteln, da der Einschlafraum
// zerstoert ist
string create_destiny(mixed val) {
if (intp(val)) {
switch (val) {
case 0:
return "/d/ebene/room/PortVain/po_haf1";
case 1:
return "/gilden/klerus";
case 2:
return "/gilden/karate";
default:
}
return "/d/ebene/room/waldweg4";
}
}