From ba0a40c4895e8c7b72e62cda5faf51691149792d Mon Sep 17 00:00:00 2001 From: sigee Date: Tue, 8 Aug 2017 21:51:07 +0200 Subject: [PATCH 1/2] Add pre_exit_functions --- lib/std/room/exits.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/std/room/exits.c b/lib/std/room/exits.c index 66cefa6..253465d 100644 --- a/lib/std/room/exits.c +++ b/lib/std/room/exits.c @@ -210,3 +210,14 @@ void post_exit(string str) { (*__Exits[str]["post"])(str); } } + +static void set_pre_exit_functions(string *dirs, function *functions) { + int i; + if (!dirs || !functions || (sizeof(dirs) != sizeof(functions))) return; + i = sizeof(dirs); + while (i--) { + if (stringp(dirs[i]) && functionp(functions[i])) { + __Exits[dirs[i]]["pre"] = functions[i]; + } + } +} From 885c6ba9d4761cc83716e4e356cbafd070e486ae Mon Sep 17 00:00:00 2001 From: sigee Date: Tue, 8 Aug 2017 21:54:33 +0200 Subject: [PATCH 2/2] Add wizhall --- lib/domains/wizhall/adv_inner.c | 59 +++++++++++++++++++++++++++++ lib/domains/wizhall/app_room.c | 35 +++++++++++++++++ lib/domains/wizhall/arch.c | 37 ++++++++++++++++++ lib/domains/wizhall/lpc_inner.c | 32 ++++++++++++++++ lib/domains/wizhall/mudlib.c | 31 +++++++++++++++ lib/domains/wizhall/planning_room.c | 44 +++++++++++++++++++++ lib/domains/wizhall/wizhall.h | 6 +++ 7 files changed, 244 insertions(+) create mode 100644 lib/domains/wizhall/adv_inner.c create mode 100644 lib/domains/wizhall/app_room.c create mode 100644 lib/domains/wizhall/arch.c create mode 100644 lib/domains/wizhall/lpc_inner.c create mode 100644 lib/domains/wizhall/mudlib.c create mode 100644 lib/domains/wizhall/planning_room.c create mode 100644 lib/domains/wizhall/wizhall.h diff --git a/lib/domains/wizhall/adv_inner.c b/lib/domains/wizhall/adv_inner.c new file mode 100644 index 0000000..ae0b616 --- /dev/null +++ b/lib/domains/wizhall/adv_inner.c @@ -0,0 +1,59 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +int go_up(); + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_property("no steal", 1); + set_short("A halhatatlanok csarnoka"); + set_long("Ebben a csarnokbanban talalkoznak egymassal a halhatatlanok " + "es itt intezik a dolgaikat. Ilyenek peldaul az uj oletek " + "megviatatasa, azon tervek hogy egyes halhatatlanok milyen " + "teruleteket, klanokat, kuldeteseket szeretnenek alkotni, illetve " + "milyen feladatokat jelolnek ki szamukra. Innen a lepcson lefele " + "talalhato az egyes otletek, feladatok elbiralasanak kis zuga."); + set_exits( ([ + "fel" : BASE_PATH "mudlib", + "del" : BASE_PATH "lpc_inner", + "lepcso": BASE_PATH "/app_room", + "kelet" : BASE_PATH "planning_room"]) ); + set_pre_exit_functions(({"fel"}), ({ (:go_up:) })); +} + +int go_up() { + if (!archp(this_player())) { + write("Oda csak fonokok mehetnek be!"); + return 0; + } + return 1; +} + +int receive_objects(object ob) { + if (!living(ob)) return 1; + if (!userp(ob)) return 0; + if (!creatorp(ob)) { + message("my_action", "Ide csak halhatatlanok lephetnek be!", ob); + return 0; + } + return ::receive_objects(ob); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")) { + ob = new("std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "uzenotabla" }) ); + ob->set_board_id("immortal"); + ob->set_max_posts(30); + ob->move(BASE_PATH "adv_inner"); + ob->set_short("Halhatatlanok uzenotablaja"); + ob->set_long("Ide irjak fel a halhatatlanok ugyes-bajos dolgaikat, problemaikat.\n"); + } +} diff --git a/lib/domains/wizhall/app_room.c b/lib/domains/wizhall/app_room.c new file mode 100644 index 0000000..7bc26bb --- /dev/null +++ b/lib/domains/wizhall/app_room.c @@ -0,0 +1,35 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_short("Rabolintas also zuga"); + set_long("Ez a kis zug a javaslatok elbiralasanak a helye. Itt lehet " + "megviatatni minden problemat, javaslatot amik az uj " + "fejlesztesekkel kapcsolatban merulnek fel. Ezenkivul itt " + "fogadjak el az ujj teruletek alkotasarol szolo terveket. Innen " + "felfele talalhato a halhatatlanok csarnoka."); + set_exits( ([ + "fel": BASE_PATH "adv_inner" + ]) ); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")){ + ob = new("std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "uzenotabla" }) ); + ob->set_board_id("teruletektervek"); + ob->set_max_posts(30); + ob->move(BASE_PATH "app_room"); + ob->set_short("Teruletek es fejlesztesek tablaja"); + ob->set_long("Ezen a tablan tortenik minden terulettekkel es " + "feladatokkal kapcsolatos megbeszeles.\n"); + } +} diff --git a/lib/domains/wizhall/arch.c b/lib/domains/wizhall/arch.c new file mode 100644 index 0000000..ae4c47a --- /dev/null +++ b/lib/domains/wizhall/arch.c @@ -0,0 +1,37 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +void init() { + ::init(); + if (!archp(this_player())) { + this_player()->move_player(BASE_PATH "planning_room", "le"); + } +} + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_short("A kisfonokok szobaja"); + set_long("A kisfookok talakozo helye valahola csillagokban. Korulotted " + "a fenyessen ragyogo csillagog apro csilogo porszemekkent usznak " + "a semmiben. A kisfonokok itt diskuralnak egymassal."); + set_exits( (["le" : BASE_PATH "planning_room"]) ); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")) { + ob = new("/std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "uzenotabla" }) ); + ob->set_board_id("arch"); + ob->set_max_posts(30); + ob->move(BASE_PATH "arch"); + ob->set_short("A kisfonokok tablaja."); + ob->set_long("Egy uszo tabla a semmiben.Ide irhatod feluzeneteidet.\n"); + } +} diff --git a/lib/domains/wizhall/lpc_inner.c b/lib/domains/wizhall/lpc_inner.c new file mode 100644 index 0000000..3cb0ea7 --- /dev/null +++ b/lib/domains/wizhall/lpc_inner.c @@ -0,0 +1,32 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_short("Kodolas szobaja"); + set_long("A halhatatlanok itt beszelik meg a kodolassal kapcsolatos " + "problemaikat. Itt folyik meg az ujj parancsok es egyebb " + "programozasi lehetosegek ismertetese is. Ebben a tabla segitsege " + "veheto igenybe. Eszakra talahato a halhatatlanok csarnoka."); + set_exits( (["eszak" : BASE_PATH "adv_inner"]) ); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")) { + ob = new("std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "tablaja", "uzenotabla" }) ); + ob->set_board_id("coding"); + ob->set_max_posts(30); + ob->move(BASE_PATH "lpc_inner"); + ob->set_short("A kodolas dolgainak tablaja"); + ob->set_long("A tabla a kodolassal kapcsolatos kerdesek problemak " + "megvitatasanak a helye.\n"); + } +} diff --git a/lib/domains/wizhall/mudlib.c b/lib/domains/wizhall/mudlib.c new file mode 100644 index 0000000..6cb9e6a --- /dev/null +++ b/lib/domains/wizhall/mudlib.c @@ -0,0 +1,31 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_short("A Fonokseg szobaja"); + set_long("Ebben a szobaban tudod megnezni a munka elorehaladtat a hibakon " + "amik a jatekban talalhatoak. Ezenkivul itt tudod jelenteni " + "azokat a hibakat amik nem kaptak meg a szerinted kello " + "figyelmet. Hasznald batran az elozokhoz a tabla segitseget."); + set_exits( (["le" : BASE_PATH "adv_inner"]) ); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")) { + ob = new("/std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "uzenotabla" }) ); + ob->set_board_id("mudlib"); + ob->set_max_posts(50); + ob->move(BASE_PATH "mudlib"); + ob->set_short("A fonokseg uzenotablaja"); + ob->set_long("A nagyon es kevesbe fontos fonoksegi ugyek tablaja.\n"); + } +} diff --git a/lib/domains/wizhall/planning_room.c b/lib/domains/wizhall/planning_room.c new file mode 100644 index 0000000..94beee3 --- /dev/null +++ b/lib/domains/wizhall/planning_room.c @@ -0,0 +1,44 @@ +#include +#include "wizhall.h" + +inherit ROOM; + +int go_up(); + +void create() { + ::create(); + set_property("light", 2); + set_property("indoors", 1); + set_short("Tervezo szoba"); + set_long("Minden otletet itt lehet megvitatni. Ha nem irod fel otleteidet " + "es mas megteszi helyetted learatva a baberokat magadra vess."); + set_exits( ([ + "nyugat" : BASE_PATH "adv_inner", + "fel": BASE_PATH "arch", + ]) ); + set_pre_exit_functions(({"fel"}), ({ (:go_up:) })); +} + +void reset() { + object ob; + ::reset(); + if (!present("tabla")) { + ob = new("/std/bboard"); + ob->set_name("tabla"); + ob->set_id( ({ "tabla", "uzenotabla" }) ); + ob->set_board_id("planning"); + ob->set_max_posts(30); + ob->move(BASE_PATH "planning_room"); + ob->set_short("Otletek tablaja"); + ob->set_long("Egy tabla az otleteknek, hogy azokat senki ne " + "hasznalja.\n"); + } +} + +int go_up() { + if (!archp(this_player())) { + write("Oda csak fonokok mehetnek be!"); + return 0; + } + return 1; +} diff --git a/lib/domains/wizhall/wizhall.h b/lib/domains/wizhall/wizhall.h new file mode 100644 index 0000000..f81ec31 --- /dev/null +++ b/lib/domains/wizhall/wizhall.h @@ -0,0 +1,6 @@ +#ifndef __WIZHALL_H__ +#define __WIZHALL_H__ + +#define BASE_PATH "/domains/wizhall/" + +#endif /* __WIZHALL_H__ */