From d956c2ec4b07ed68e6963765793866a6323b038c Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Wed, 29 Jul 2009 17:17:34 +0000 Subject: [PATCH] fixoring compilation BUG: dying factions got screwy spellbooks BUG: monsters should not die --- src/common/kernel.vcproj | 8 ++++++-- src/common/kernel/faction.c | 17 +++++++++++------ src/common/kernel/save.c | 1 + src/common/kernel/sqlite.c | 13 +++++++------ src/eressea/eressea-lua.vcproj | 4 ++++ src/eressea/tolua/bind_region.c | 1 - 6 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/common/kernel.vcproj b/src/common/kernel.vcproj index f891d3082..93e7d2ea8 100644 --- a/src/common/kernel.vcproj +++ b/src/common/kernel.vcproj @@ -41,7 +41,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/MP" Optimization="0" - AdditionalIncludeDirectories="..;." + AdditionalIncludeDirectories="..;../common;../external" PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -176,7 +176,7 @@ + + diff --git a/src/common/kernel/faction.c b/src/common/kernel/faction.c index 503c10a97..71daafb31 100644 --- a/src/common/kernel/faction.c +++ b/src/common/kernel/faction.c @@ -92,6 +92,7 @@ get_monsters(void) { static faction * monsters; static int gamecookie = -1; + if (gamecookie!=global.cookie) { monsters = NULL; gamecookie = global.cookie; @@ -104,11 +105,13 @@ get_monsters(void) return monsters=f; } } - } - if (monsters==NULL) { - /* shit! */ - monsters = findfaction(666); - if (monsters) fset(monsters, FFL_NPC); + if (!monsters) { + /* shit! */ + monsters = findfaction(666); + } + if (monsters) { + fset(monsters, FFL_NPC|FFL_NOIDLEOUT); + } } return monsters; } @@ -272,6 +275,7 @@ destroyfaction(faction * f) fset(f, FFL_QUIT); freelist(f->spellbook); + f->spellbook = NULL; while (f->battles) { struct bmsg * bm = f->battles; @@ -466,7 +470,8 @@ boolean valid_race(const struct faction * f, const struct race * rc) if (f->race==rc) return true; else { const char * str = get_param(f->race->parameters, "other_race"); - return (str?rc_find(str)==rc:false); + if (str) return (boolean)(rc_find(str)==rc); + return false; } } diff --git a/src/common/kernel/save.c b/src/common/kernel/save.c index 42a31e335..9efc090e1 100644 --- a/src/common/kernel/save.c +++ b/src/common/kernel/save.c @@ -1260,6 +1260,7 @@ readfaction(struct storage * store) } } read_groups(store, f); + f->spellbook = NULL; read_spellist(&f->spellbook, store); return f; } diff --git a/src/common/kernel/sqlite.c b/src/common/kernel/sqlite.c index 3d59a9d8c..92eb2727c 100644 --- a/src/common/kernel/sqlite.c +++ b/src/common/kernel/sqlite.c @@ -4,6 +4,7 @@ #include #include #include +#include faction * get_faction_by_id(int uid) { @@ -28,7 +29,7 @@ db_update_factions(sqlite3 * db) "INSERT OR IGNORE email (email,md5) VALUES (?,?)"; const char * sql_select_email = "SELECT id FROM email WHERE md5=?"; - const char * sql_update_faction = + const char sql_update_faction[] = "UPDATE faction SET email_id=?, lastturn=?, no=? WHERE id=?"; faction * f; @@ -38,13 +39,13 @@ db_update_factions(sqlite3 * db) sqlite3_stmt *stmt_select; int res; - res = sqlite3_prepare_v2(db, sql_select_email, strlen(sql_select_email)+1, &stmt_select_email, NULL); + res = sqlite3_prepare_v2(db, sql_select_email, (int)strlen(sql_select_email)+1, &stmt_select_email, NULL); if (res!=SQLITE_OK) return res; - res = sqlite3_prepare_v2(db, sql_insert_email, strlen(sql_insert_email)+1, &stmt_insert_email, NULL); + res = sqlite3_prepare_v2(db, sql_insert_email, (int)strlen(sql_insert_email)+1, &stmt_insert_email, NULL); if (res!=SQLITE_OK) return res; - res = sqlite3_prepare_v2(db, sql_select, strlen(sql_select)+1, &stmt_select, NULL); + res = sqlite3_prepare_v2(db, sql_select, (int)strlen(sql_select)+1, &stmt_select, NULL); if (res!=SQLITE_OK) return res; - res = sqlite3_prepare_v2(db, sql_update_faction, strlen(sql_update_faction)+1, &stmt_update_faction, NULL); + res = sqlite3_prepare_v2(db, sql_update_faction, sizeof(sql_update_faction), &stmt_update_faction, NULL); if (res!=SQLITE_OK) return res; res = sqlite3_bind_int(stmt_select, 1, game_id); @@ -75,7 +76,7 @@ db_update_factions(sqlite3 * db) int i; md5_init(&ms); - md5_append(&ms, (md5_byte_t*)lower, strlen(lower)); + md5_append(&ms, (md5_byte_t*)lower, (int)strlen(lower)); md5_finish(&ms, digest); for (i=0;i!=16;++i) sprintf(md5hash+2*i, "%.02x", digest[i]); diff --git a/src/eressea/eressea-lua.vcproj b/src/eressea/eressea-lua.vcproj index 4f517a28e..472608b8f 100644 --- a/src/eressea/eressea-lua.vcproj +++ b/src/eressea/eressea-lua.vcproj @@ -332,6 +332,10 @@ RelativePath=".\tolua\bind_ship.h" > + + diff --git a/src/eressea/tolua/bind_region.c b/src/eressea/tolua/bind_region.c index c97ead3aa..226cb911c 100644 --- a/src/eressea/tolua/bind_region.c +++ b/src/eressea/tolua/bind_region.c @@ -599,7 +599,6 @@ tolua_region_open(lua_State* L) tolua_function(L, TOLUA_CAST "get_key", tolua_region_getkey); tolua_function(L, TOLUA_CAST "set_key", tolua_region_setkey); #if 0 - .property("owner", &lua_region_getowner, &lua_region_setowner) .property("herbtype", ®ion_getherbtype, ®ion_setherbtype) .def("add_notice", ®ion_addnotice) .def("add_direction", ®ion_adddirection)