diff --git a/src/common/gamecode/creport.c b/src/common/gamecode/creport.c index f87f96bc9..ddb112b1d 100644 --- a/src/common/gamecode/creport.c +++ b/src/common/gamecode/creport.c @@ -77,7 +77,7 @@ without prior permission by the authors of Eressea. #include /* imports */ -extern int quiet; +extern int verbosity; boolean opt_cr_absolute_coords = false; /* globals */ diff --git a/src/common/gamecode/laws.c b/src/common/gamecode/laws.c index 15c2fc561..6ffe68479 100644 --- a/src/common/gamecode/laws.c +++ b/src/common/gamecode/laws.c @@ -170,7 +170,7 @@ checkorders(void) { faction *f; - puts(" - Warne spaete Spieler..."); + if (verbosity>=1) puts(" - Warne spaete Spieler..."); for (f = factions; f; f = f->next) if (!is_monsters(f) && turn - f->lastorders == NMRTimeout() - 1) ADDMSG(&f->msgs, msg_message("turnreminder", "")); @@ -841,7 +841,7 @@ demographics(void) remove_empty_units(); - puts(" - Einwanderung..."); + if (verbosity>=1) puts(" - Einwanderung..."); for (r = regions; r; r = r->next) { if (r->land && r->land->newpeasants) { int rp = rpeasants(r) + r->land->newpeasants; @@ -1061,7 +1061,7 @@ parse_restart(void) } } - puts(" - beseitige Spieler, die sich zu lange nicht mehr gemeldet haben..."); + if (verbosity>=1) puts(" - beseitige Spieler, die sich zu lange nicht mehr gemeldet haben..."); for (f = factions; f; f = f->next) { if(fval(f, FFL_NOIDLEOUT)) f->lastorders = turn; @@ -1095,8 +1095,10 @@ parse_restart(void) continue; } } - puts(" - beseitige Spieler, die sich nach der Anmeldung nicht " - "gemeldet haben..."); + if (verbosity>=1) { + puts(" - beseitige Spieler, die sich nach der Anmeldung nicht " + "gemeldet haben..."); + } age = calloc(MAX(4,turn+1), sizeof(int)); for (f = factions; f; f = f->next) if (!is_monsters(f)) { @@ -1119,7 +1121,7 @@ parse_restart(void) } /* Clear away debris of destroyed factions */ - puts(" - beseitige leere Einheiten und leere Parteien..."); + if (verbosity>=1) puts(" - beseitige leere Einheiten und leere Parteien..."); remove_empty_units(); } /* ------------------------------------------------------------- */ @@ -3573,9 +3575,9 @@ process(void) region *r; processor *pglobal = proc; - printf("- Step %u\n", prio); + if (verbosity>=3) printf("- Step %u\n", prio); while (proc && proc->priority==prio) { - if (proc->name) log_stdio(stdout, " - %s\n", proc->name); + if (proc->name && verbosity>=1) log_stdio(stdout, " - %s\n", proc->name); proc = proc->next; } @@ -3652,7 +3654,7 @@ process(void) } } - if (quiet<2) printf("\n - Leere Gruppen loeschen...\n"); + if (verbosity>=3) printf("\n - Leere Gruppen loeschen...\n"); for (f=factions; f; f=f->next) { group ** gp = &f->groups; while (*gp) { @@ -3882,7 +3884,7 @@ processorders (void) process(); /*************************************************/ - puts(" - Attribute altern"); + if (verbosity>=1) puts(" - Attribute altern"); ageing(); remove_empty_units(); diff --git a/src/common/gamecode/monster.c b/src/common/gamecode/monster.c index e05a1798c..f5f6377a6 100644 --- a/src/common/gamecode/monster.c +++ b/src/common/gamecode/monster.c @@ -1081,7 +1081,7 @@ spawn_dragons(void) fset(u, UFL_ISNEW|UFL_MOVED); equip_unit(u, get_equipment("monster_dragon")); - if (!quiet) { + if (verbosity>=2) { log_printf("%d %s in %s.\n", u->number, LOC(default_locale, rc_name(u->race, u->number!=1)), regionname(r, NULL)); } @@ -1147,7 +1147,7 @@ spawn_undead(void) deathcounts(r, -undead); name_unit(u); - if (!quiet) { + if (verbosity>=2) { log_printf("%d %s in %s.\n", u->number, LOC(default_locale, rc_name(u->race, u->number!=1)), regionname(r, NULL)); } diff --git a/src/common/gamecode/randenc.c b/src/common/gamecode/randenc.c index e406301dd..15cfced91 100644 --- a/src/common/gamecode/randenc.c +++ b/src/common/gamecode/randenc.c @@ -1077,7 +1077,7 @@ demon_skillchanges(void) while (weeks--) learn_skill(u, sv->id, 1.0); } if (sv->old>sv->level) { - if (!quiet) { + if (verbosity>=3) { log_printf("%s dropped from %u to %u:%u in %s\n", unitname(u), sv->old, sv->level, sv->weeks, skillname(sv->id, NULL)); } diff --git a/src/common/gamecode/report.c b/src/common/gamecode/report.c index ec1c10734..bacc16cc3 100644 --- a/src/common/gamecode/report.c +++ b/src/common/gamecode/report.c @@ -97,7 +97,7 @@ #include #endif -extern int quiet; +extern int verbosity; extern int *storms; extern int weeks_per_month; extern int months_per_year; diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c index 78029b3ae..2b78654eb 100644 --- a/src/common/kernel/eressea.c +++ b/src/common/kernel/eressea.c @@ -580,7 +580,7 @@ count_skill(faction * f, skill_t sk) return n; } -int quiet = 0; +int verbosity = 0; FILE *debug; @@ -675,7 +675,7 @@ verify_data(void) unit *u; int mage, alchemist; - puts(" - Überprüfe Daten auf Korrektheit..."); + if (verbosity>=1) puts(" - Überprüfe Daten auf Korrektheit..."); list_foreach(faction, factions, f) { mage = 0; @@ -2260,7 +2260,7 @@ remove_empty_factions(boolean writedropouts) if ((f->units==NULL || f->alive == 0) && !is_monsters(f)) { ursprung * ur = f->ursprung; while (ur && ur->id!=0) ur=ur->next; - if (!quiet) log_stdio(stdout, "\t%s\n", factionname(f)); + if (verbosity>=2) log_stdio(stdout, "\t%s\n", factionname(f)); /* Einfach in eine Datei schreiben und später vermailen */ diff --git a/src/common/kernel/eressea.h b/src/common/kernel/eressea.h index 9839b6623..9a3ff3126 100644 --- a/src/common/kernel/eressea.h +++ b/src/common/kernel/eressea.h @@ -143,7 +143,7 @@ typedef struct strlist { #define freset(u, i) ((u)->flags &= ~(i)) extern int turn; -extern int quiet; +extern int verbosity; /* parteinummern */ extern boolean faction_id_is_unused(int); diff --git a/src/common/kernel/save.c b/src/common/kernel/save.c index a9e5723a2..07bb22e2e 100644 --- a/src/common/kernel/save.c +++ b/src/common/kernel/save.c @@ -380,7 +380,7 @@ readorders(const char *filename) if (filename) F = cfopen(filename, "rb"); if (F==NULL) return 0; - puts(" - lese Befehlsdatei...\n"); + if (verbosity>=1) puts(" - lese Befehlsdatei...\n"); /* TODO: recognize UTF8 BOM */ b = getbuf(F, enc_gamedata); diff --git a/src/common/triggers/triggers.c b/src/common/triggers/triggers.c index 24f18316d..404bb83ca 100644 --- a/src/common/triggers/triggers.c +++ b/src/common/triggers/triggers.c @@ -44,7 +44,7 @@ void init_triggers(void) { - if (quiet<2) printf("- registering triggers\n"); + if (verbosity>=2) printf("- registering triggers\n"); tt_register(&tt_changefaction); tt_register(&tt_changerace); tt_register(&tt_createcurse); diff --git a/src/eressea.vcproj b/src/eressea.vcproj index 7f04a3412..4f72f098f 100644 --- a/src/eressea.vcproj +++ b/src/eressea.vcproj @@ -66,7 +66,7 @@ /> =4) { + printf("\n%s PBEM host\n" + "Copyright (C) 1996-2005 C. Schlittchen, K. Zedel, E. Rehling, H. Peters.\n\n" + "Compilation: " __DATE__ " at " __TIME__ "\nVersion: %f\n\n", global.gamename, version()); + } if ((i=read_args(argc, argv, luaState))!=0) return i; #ifdef CRTDBG diff --git a/src/eressea/tolua/bind_building.c b/src/eressea/tolua/bind_building.c index e639086fc..2ddc39aeb 100644 --- a/src/eressea/tolua/bind_building.c +++ b/src/eressea/tolua/bind_building.c @@ -19,7 +19,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include int tolua_buildinglist_next(lua_State *tolua_S) { diff --git a/src/eressea/tolua/bind_faction.c b/src/eressea/tolua/bind_faction.c index 66ba6f7bc..1524adcba 100644 --- a/src/eressea/tolua/bind_faction.c +++ b/src/eressea/tolua/bind_faction.c @@ -25,7 +25,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include int tolua_factionlist_next(lua_State *tolua_S) @@ -426,34 +426,12 @@ tolua_faction_open(lua_State* tolua_S) #ifdef TODO def("faction_origin", &faction_getorigin, pure_out_value(_2) + pure_out_value(_3)), - // heroes - .def("heroes", &faction_countheroes) - .def("max_heroes", &faction_maxheroes) - - .def_readonly("name", &faction::name) - .def_readonly("score", &faction::score) - .def_readonly("id", &faction::no) - .def_readwrite("age", &faction::age) - .def_readwrite("options", &faction::options) - .def_readwrite("flags", &faction::flags) .def_readwrite("subscription", &faction::subscription) - .def_readwrite("lastturn", &faction::lastorders) - .def("add_item", &faction_additem) - .property("items", &faction_items, return_stl_iterator) .property("x", &faction_getorigin_x, &faction_setorigin_x) .property("y", &faction_getorigin_y, &faction_setorigin_y) - .def("renum", &faction_renumber) .def("add_notice", &faction_addnotice) - .property("password", &faction_get_passw, &faction_set_passw) - .property("info", &faction_get_banner, &faction_set_banner) - .property("email", &faction_get_email, &faction_set_email) - .property("locale", &faction_getlocale, &faction_setlocale) - .property("units", &faction_units, return_stl_iterator) - .property("alliance", &faction_getalliance, &faction_setalliance) - .property("race", &faction_getrace, &faction_setrace) - .property("objects", &eressea::get_objects) #endif tolua_variable(tolua_S, "objects", tolua_faction_get_objects, NULL); } diff --git a/src/eressea/tolua/bind_gmtool.c b/src/eressea/tolua/bind_gmtool.c index fac6eccf7..3c17c1c66 100644 --- a/src/eressea/tolua/bind_gmtool.c +++ b/src/eressea/tolua/bind_gmtool.c @@ -7,7 +7,7 @@ #include #include -#include +#include static int tolua_run_mapper(lua_State* tolua_S) diff --git a/src/eressea/tolua/bind_hashtable.c b/src/eressea/tolua/bind_hashtable.c index f9dbed01e..1b7dd299d 100644 --- a/src/eressea/tolua/bind_hashtable.c +++ b/src/eressea/tolua/bind_hashtable.c @@ -24,7 +24,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include #include diff --git a/src/eressea/tolua/bind_message.c b/src/eressea/tolua/bind_message.c index ae4a06f14..cdbc6493b 100644 --- a/src/eressea/tolua/bind_message.c +++ b/src/eressea/tolua/bind_message.c @@ -13,7 +13,7 @@ // lua includes #include -#include +#include #define E_OK 0 #define E_INVALID_MESSAGE 1 @@ -257,6 +257,21 @@ tolua_msg_set_region(lua_State * tolua_S) return 1; } +static int +tolua_msg_set(lua_State * tolua_S) +{ + tolua_Error err; + if (tolua_isnumber(tolua_S, 3, 0, &err)) { + return tolua_msg_set_int(tolua_S); + } else if (tolua_isusertype(tolua_S, 3, "region", 0, &err)) { + return tolua_msg_set_region(tolua_S); + } else if (tolua_isusertype(tolua_S, 3, "unit", 0, &err)) { + return tolua_msg_set_unit(tolua_S); + } + tolua_pushnumber(tolua_S, (lua_Number)-1); + return 1; +} + static int tolua_msg_send_region(lua_State * tolua_S) { @@ -291,6 +306,7 @@ tolua_message_open(lua_State* tolua_S) tolua_cclass(tolua_S, "message", "message", "", NULL); tolua_beginmodule(tolua_S, "message"); { + tolua_function(tolua_S, "set", tolua_msg_set); tolua_function(tolua_S, "set_unit", tolua_msg_set_unit); tolua_function(tolua_S, "set_region", tolua_msg_set_region); tolua_function(tolua_S, "set_resource", tolua_msg_set_resource); @@ -300,7 +316,6 @@ tolua_message_open(lua_State* tolua_S) tolua_function(tolua_S, "send_region", tolua_msg_send_region); tolua_function(tolua_S, "create", tolua_msg_create); - // tolua_function(tolua_S, "destroy", tolua_msg_destroy); } tolua_endmodule(tolua_S); } diff --git a/src/eressea/tolua/bind_region.c b/src/eressea/tolua/bind_region.c index 2d2f3b40f..d2f176fa8 100644 --- a/src/eressea/tolua/bind_region.c +++ b/src/eressea/tolua/bind_region.c @@ -32,7 +32,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include int tolua_regionlist_next(lua_State *tolua_S) { diff --git a/src/eressea/tolua/bind_ship.c b/src/eressea/tolua/bind_ship.c index 9098836a2..743d125e0 100644 --- a/src/eressea/tolua/bind_ship.c +++ b/src/eressea/tolua/bind_ship.c @@ -22,7 +22,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include int tolua_shiplist_next(lua_State *tolua_S) { diff --git a/src/eressea/tolua/bind_unit.c b/src/eressea/tolua/bind_unit.c index aadd3cdaa..1a5d6d3bd 100644 --- a/src/eressea/tolua/bind_unit.c +++ b/src/eressea/tolua/bind_unit.c @@ -44,7 +44,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include #include @@ -377,12 +377,14 @@ fctr_handle(struct trigger * tp, void * data) unit * u = fd->target; evt.args = (event_arg*)data; + lua_rawgeti(L, LUA_REGISTRYINDEX, fd->fhandle); tolua_pushusertype(L, u, "unit"); tolua_pushusertype(L, &evt, "event"); if (lua_pcall(L, 2, 0, 0)!=0) { const char* error = lua_tostring(L, -1); - log_error(("event (%s): %s", unitname(u), error)); + log_error(("event (%s): %s\n", unitname(u), error)); lua_pop(L, 1); + tolua_error(L, "event handler call failed", NULL); } return 0; @@ -840,6 +842,40 @@ tolua_unit_tostring(lua_State *tolua_S) return 1; } +static int +tolua_event_gettype(lua_State *tolua_S) +{ + event * self = (event *)tolua_tousertype(tolua_S, 1, 0); + int index = (int)tolua_tonumber(tolua_S, 2, 0); + lua_pushstring(tolua_S, self->args[index].type); + return 1; +} + +static int +tolua_event_get(lua_State *tolua_S) +{ + struct event * self = (struct event *)tolua_tousertype(tolua_S, 1, 0); + int index = (int)tolua_tonumber(tolua_S, 2, 0); + + event_arg * arg = self->args+index; + + if (arg->type) { + if (strcmp(arg->type, "string")==0) { + tolua_pushstring(tolua_S, (const char *)arg->data.v); + } else if (strcmp(arg->type, "int")==0) { + tolua_pushnumber(tolua_S, (lua_Number)arg->data.i); + } else if (strcmp(arg->type, "float")==0) { + tolua_pushnumber(tolua_S, (lua_Number)arg->data.f); + } else { + /* this is pretty lazy */ + tolua_pushusertype(tolua_S, (void*)arg->data.v, arg->type); + } + return 1; + } + tolua_error(tolua_S, "invalid type argument for event", NULL); + return 0; +} + void tolua_unit_open(lua_State * tolua_S) { @@ -850,6 +886,14 @@ tolua_unit_open(lua_State * tolua_S) tolua_module(tolua_S, NULL, 0); tolua_beginmodule(tolua_S, NULL); { + tolua_cclass(tolua_S, "event", "event", "", NULL); + tolua_beginmodule(tolua_S, "event"); + { + tolua_function(tolua_S, "get_type", tolua_event_gettype); + tolua_function(tolua_S, "get", tolua_event_get); + } + tolua_endmodule(tolua_S); + tolua_cclass(tolua_S, "unit", "unit", "", NULL); tolua_beginmodule(tolua_S, "unit"); { diff --git a/src/eressea/tolua/bindings.c b/src/eressea/tolua/bindings.c index a91a03b08..088724256 100644 --- a/src/eressea/tolua/bindings.c +++ b/src/eressea/tolua/bindings.c @@ -53,7 +53,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include #include #include @@ -172,7 +172,8 @@ tolua_message_unit(lua_State* tolua_S) unit * sender = (unit *)tolua_tousertype(tolua_S, 1, 0); unit * target = (unit *)tolua_tousertype(tolua_S, 2, 0); const char * str = tolua_tostring(tolua_S, 3, 0); - + if (!target) tolua_error(tolua_S, "target is nil", NULL); + if (!sender) tolua_error(tolua_S, "sender is nil", NULL); deliverMail(target->faction, sender->region, sender, str, target); return 0; } @@ -183,6 +184,8 @@ tolua_message_faction(lua_State * tolua_S) unit * sender = (unit *)tolua_tousertype(tolua_S, 1, 0); faction * target = (faction *)tolua_tousertype(tolua_S, 2, 0); const char * str = tolua_tostring(tolua_S, 3, 0); + if (!target) tolua_error(tolua_S, "target is nil", NULL); + if (!sender) tolua_error(tolua_S, "sender is nil", NULL); deliverMail(target, sender->region, sender, str, NULL); return 0; @@ -194,6 +197,7 @@ tolua_message_region(lua_State * tolua_S) unit * sender = (unit *)tolua_tousertype(tolua_S, 1, 0); const char * str = tolua_tostring(tolua_S, 2, 0); + if (!sender) tolua_error(tolua_S, "sender is nil", NULL); ADDMSG(&sender->region->msgs, msg_message("mail_result", "unit message", sender, str)); return 0; @@ -220,6 +224,7 @@ call_script(lua_State * L, struct unit * u) const attrib * a = a_findc(u->attribs, &at_script); if (a==NULL) a = a_findc(u->race->attribs, &at_script); if (a!=NULL && a->data.i>0) { + lua_rawgeti(L, LUA_REGISTRYINDEX, a->data.i); if (lua_pcall(L, 1, 0, 0)!=0) { const char* error = lua_tostring(L, -1); log_error(("call_script (%s): %s", unitname(u), error)); diff --git a/src/eressea/tolua/helpers.c b/src/eressea/tolua/helpers.c index f6d6937d2..f08dc91b0 100644 --- a/src/eressea/tolua/helpers.c +++ b/src/eressea/tolua/helpers.c @@ -28,7 +28,7 @@ without prior permission by the authors of Eressea. #include #include -#include +#include #include diff --git a/src/scripts/adamant.lua b/src/scripts/adamant.lua index e72ee3cdc..66c260bdf 100644 --- a/src/scripts/adamant.lua +++ b/src/scripts/adamant.lua @@ -46,7 +46,7 @@ function mktunnel() local from = gmtool.get_cursor() local to = gmtool.get_selection()() if to~=nil then - terraform(from.x, from.y, "glacier") + region.create(from.x, from.y, "glacier") create_tunnel(from, to) gmtool.select(to, 0) gmtool.highlight(to, 1) @@ -67,12 +67,12 @@ function mkanchors() end end --- terraform and prepare all hell-regions to become wonky gates +-- region.create and prepare all hell-regions to become wonky gates function mkgates() for r in regions() do if r.plane_id==0 and r.terrain=="hell" then create_tunnel(r, "tnnL") - terraform(r.x, r.y, "glacier") + region.create(r.x, r.y, "glacier") end end end diff --git a/src/scripts/eressea/tunnels.lua b/src/scripts/eressea/tunnels.lua index cad8e4da7..283cbab5b 100644 --- a/src/scripts/eressea/tunnels.lua +++ b/src/scripts/eressea/tunnels.lua @@ -23,7 +23,7 @@ local function get_target(param) r:set_flag(0, false) end if (r.terrain=="ocean") then - r = terraform(r.x, r.y, "plain") + r = region.create(r.x, r.y, "plain") end targets[ntargets] = r ntargets = ntargets + 1 diff --git a/src/scripts/run-tests.lua b/src/scripts/run-tests.lua index b412323fb..e9bad42a9 100644 --- a/src/scripts/run-tests.lua +++ b/src/scripts/run-tests.lua @@ -51,7 +51,7 @@ function test_free() end function test_reorder() - r = terraform(0, 0, "plain") + r = region.create(0, 0, "plain") f = faction.create("enno@ix.de", "orc", "de") s1 = add_ship(r, "boat") s1.size = 1 @@ -65,45 +65,45 @@ function test_reorder() b2.size = 2 b3 = add_building(r, "portal") b3.size = 3 - u = add_unit(f, r) + u = unit.create(f, r) u.number = 1 u.name = "a" - u = add_unit(f, r) + u = unit.create(f, r) u.number = 1 u.name = "b" u.ship = s3 - u = add_unit(f, r) + u = unit.create(f, r) u.number = 1 u.name = "c" u.building = b1 - u = add_unit(f, r) + u = unit.create(f, r) u.number = 1 u.name = "d" u.ship = s2 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "e" u.number = 1 u.building = b1 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "f" u.number = 1 u.building = b3 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "g" u.number = 1 u.ship = s2 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "h" u.number = 1 u.building = b2 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "i" u.number = 1 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "j" u.number = 1 u.building = b1 - u = add_unit(f, r) + u = unit.create(f, r) u.name = "k" u.number = 1 u.ship = s1 @@ -205,10 +205,10 @@ function action(b, param) end function test_tunnels() - r = terraform(0, 0, "glacier") + r = region.create(0, 0, "glacier") b = add_building(r, "portal") b:add_action("tunnel_action", "tnnL") - r2 = terraform(5, 5, "plain") + r2 = region.create(5, 5, "plain") r2:set_key("tnnL", true) process_orders() end diff --git a/src/scripts/samples.lua b/src/scripts/samples.lua index 6e73e594e..4f0fc3087 100644 --- a/src/scripts/samples.lua +++ b/src/scripts/samples.lua @@ -1,5 +1,5 @@ function mkunit(f, r, num) - u = add_unit(f, r) + u = unit.create(f, r) u.number = num u:add_item("money", num*10) u:clear_orders() @@ -11,16 +11,16 @@ function test_movement() east = direction("east") -- im westen ohne strassen - ocean = terraform(-3, 0, "ocean") - w2 = terraform(-2, 0, "plain") - w1 = terraform(-1, 0, "plain") + ocean = region.create(-3, 0, "ocean") + w2 = region.create(-2, 0, "plain") + w1 = region.create(-1, 0, "plain") -- im osten mit strassen - r0 = terraform(0, 0, "plain") - r1 = terraform(1, 0, "desert") - r2 = terraform(2, 0, "glacier") - r3 = terraform(3, 0, "plain") - r4 = terraform(4, 0, "glacier") + r0 = region.create(0, 0, "plain") + r1 = region.create(1, 0, "desert") + r2 = region.create(2, 0, "glacier") + r3 = region.create(3, 0, "plain") + r4 = region.create(4, 0, "glacier") r0:add_direction(r4, "Wirbel", "Nimm die Abkürzung, Luke") @@ -110,7 +110,7 @@ function test_movement() bug:add_order("GIB 0 ALLES Holz") bug:add_order("FAHREN " .. itoa36(orc.id)) - u = add_unit(orcs, r0) + u = unit.create(orcs, r0) u.number = 1 u:add_item("horse", u.number*3) u:add_item("money", u.number*10) @@ -122,7 +122,7 @@ function test_movement() u:add_order("NUMMER EINHEIT foLg") u:add_order("BENENNE EINHEIT Verfolger") - u2 = add_unit(orcs, r0) + u2 = unit.create(orcs, r0) u2.number = 1 u2:add_item("horse", u2.number*3) u2:add_item("money", u.number*10) @@ -137,12 +137,12 @@ end function test_sail() - r0 = terraform(0, 0, "plain") + r0 = region.create(0, 0, "plain") orcs = faction.create("enno@eressea.de", "orc", "de") orcs.age = 20 - orc = add_unit(orcs, r0) + orc = unit.create(orcs, r0) orc.number = 1 orc:add_item("speedsail", orc.number) @@ -166,13 +166,13 @@ function test_handler() message_region(u, "thanks region, i got your message: " .. str) end - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") skill = 8 f = faction.create("enno@eressea.de", "orc", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 1 u:add_item("money", u.number*100) u:clear_orders() @@ -183,7 +183,7 @@ function test_handler() f = faction.create("enno@eressea.de", "elf", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 1 u:add_item("money", u.number*100) u:clear_orders() @@ -194,13 +194,13 @@ end function test_combat() - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") skill = 8 f = faction.create("enno@eressea.de", "orc", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 100 u:add_item("money", u.number*100) u:add_item("sword", u.number) @@ -214,7 +214,7 @@ function test_combat() f = faction.create("enno@eressea.de", "elf", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 100 u:add_item("money", u.number*100) u:add_item("sword", u.number) @@ -229,12 +229,12 @@ end function test_rewards() -- this script tests manufacturing and fighting. - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") skill = 5 f = faction.create("enno@eressea.de", "human", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 10 u:add_item("money", u.number*100) u:add_item("greatbow", u.number) @@ -243,7 +243,7 @@ function test_rewards() u:add_order("KAEMPFE") attack = "ATTACKIERE " .. itoa36(u.id) - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 7 u:add_item("money", u.number*100) u:add_item("mallorn", u.number*10) @@ -255,7 +255,7 @@ function test_rewards() f = faction.create("enno@eressea.de", "elf", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 7 u:add_item("money", u.number*100) u:add_item("greatbow", u.number) @@ -264,7 +264,7 @@ function test_rewards() u:add_order("KAEMPFE HINTEN") u:add_order(attack) - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 7 u:add_item("money", u.number*100) u:add_item("mallorn", u.number*10) @@ -274,7 +274,7 @@ function test_rewards() u:add_order("MACHEN Elfenbogen") u:add_order("NUMMER PARTEI eviL") - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 7 u:add_item("money", u.number*100) u:add_item("mallorn", u.number*10) @@ -296,10 +296,10 @@ function test_rewards() end function test_give() - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") f = faction.create("enno@eressea.de", "human", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 10 u:add_item("money", u.number*100) u:clear_orders() @@ -342,12 +342,12 @@ end function test_parser() -- this script tests the changes to quotes - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") skill = 5 f = faction.create("enno@eressea.de", "human", "de") f.age = 20 - u = add_unit(f, plain) + u = unit.create(f, plain) u.number = 10 u:clear_orders() u:add_order("Nummer Partei test") @@ -356,7 +356,7 @@ function test_parser() end function test_fail() - plain = terraform(0, 0, "plain") + plain = region.create(0, 0, "plain") skill = 5 f = faction.create("enno@eressea.de", "human", "de") diff --git a/src/scripts/tests.lua b/src/scripts/tests.lua index 365539765..5ea6dada5 100644 --- a/src/scripts/tests.lua +++ b/src/scripts/tests.lua @@ -179,6 +179,45 @@ local function test_hashtable() assert(f.objects:get("age") == nil) end +function test_events() + local fail = 1 + local function msg_handler(u, evt) + str = evt:get(0) + u2 = evt:get(1) + assert(u2~=nil) + print(str=="Du Elf stinken") + message_unit(u, u2, "thanks unit, i got your message: " .. str) + message_faction(u, u2.faction, "thanks faction, i got your message: " .. str) + message_region(u, "thanks region, i got your message: " .. str) + fail = 0 + end + + plain = region.create(0, 0, "plain") + skill = 8 + + f = faction.create("enno@eressea.de", "orc", "de") + f.age = 20 + + u = unit.create(f, plain) + u.number = 1 + u:add_item("money", u.number*100) + u:clear_orders() + u:add_order("NUMMER PARTEI test") + u:add_handler("message", msg_handler) + msg = "BOTSCHAFT EINHEIT " .. itoa36(u.id) .. " Du~Elf~stinken" + f = faction.create("enno@eressea.de", "elf", "de") + f.age = 20 + + u = unit.create(f, plain) + u.number = 1 + u:add_item("money", u.number*100) + u:clear_orders() + u:add_order("NUMMER PARTEI eviL") + u:add_order(msg) + process_orders() + assert(fail==0) +end + loadscript("extensions.lua") tests = { ["test_pure"] = test_pure, @@ -189,7 +228,8 @@ tests = { ["test_unit"] = test_unit, ["test_message"] = test_message, ["test_hashtable"] = test_hashtable, - ["test_gmtool"] = test_gmtool + ["test_gmtool"] = test_gmtool, + ["test_events"] = test_events } fail = 0 diff --git a/src/scripts/wdw-setup.lua b/src/scripts/wdw-setup.lua index 5043d3db5..26dc300cb 100644 --- a/src/scripts/wdw-setup.lua +++ b/src/scripts/wdw-setup.lua @@ -62,7 +62,7 @@ function make_faction(position, alliance, number, email, race) print("\n" .. email .. " (" .. itoa36(f.id) .. ")") f.alliance = alliance - local u = add_unit(f, position) + local u = unit.create(f, position) -- erster ist der, der die extras kriegt: u.number = 1 local units = units - 1 @@ -79,7 +79,7 @@ function make_faction(position, alliance, number, email, race) local sk local skill for sk, skill in pairs(skills) do - u = add_unit(f, position) + u = unit.create(f, position) -- anzahl personen berechnen local number = math.floor(units / skillno) diff --git a/src/scripts/wdw/sphinx.lua b/src/scripts/wdw/sphinx.lua index bd835cfbb..3ec2f1e07 100644 --- a/src/scripts/wdw/sphinx.lua +++ b/src/scripts/wdw/sphinx.lua @@ -93,8 +93,8 @@ function sphinx_handler() for r in regions() do m:send_region(r) end - -- Region terraformen - terraform(u2.region.x, u.region.y, "plain") + -- Region region.createen + region.create(u2.region.x, u.region.y, "plain") u2.region.set_resource(u2.region, "tree", 721) u2.region.set_resource(u2.region, "peasant", 2312) u2.add_item(u2, "trappedairelemental", 5)