diff --git a/scripts/eressea/modules.lua b/scripts/eressea/modules.lua new file mode 100644 index 000000000..6a93362cb --- /dev/null +++ b/scripts/eressea/modules.lua @@ -0,0 +1,21 @@ +local modules = {} + +function add_module(pkg) + table.insert(modules, pkg) +end + +local pkg = {} + +function pkg.init() + for k, v in ipairs(modules) do + if v.init then v.init() end + end +end + +function pkg.update() + for k, v in ipairs(modules) do + if v.update then v.update() end + end +end + +return pkg diff --git a/src/eressea.c b/src/eressea.c index a9dddd130..2174450eb 100755 --- a/src/eressea.c +++ b/src/eressea.c @@ -2,6 +2,17 @@ #include "settings.h" #include "eressea.h" +#include "calendar.h" +#include "chaos.h" +#include "items.h" +#include "creport.h" +#include "report.h" +#include "names.h" +#include "reports.h" +#include "spells.h" +#include "vortex.h" +#include "wormhole.h" + #include #include @@ -25,16 +36,6 @@ #include #include -#include "calendar.h" -#include "chaos.h" -#include "items.h" -#include "creport.h" -#include "report.h" -#include "names.h" -#include "reports.h" -#include "spells.h" -#include "wormhole.h" - void game_done(void) { #ifdef CLEANUP_CODE @@ -53,6 +54,7 @@ void game_done(void) calendar_cleanup(); free_functions(); free_config(); + free_special_directions(); free_locales(); kernel_done(); } diff --git a/src/magic.c b/src/magic.c index 16ee37e60..7d33a28e1 100644 --- a/src/magic.c +++ b/src/magic.c @@ -329,8 +329,9 @@ sc_mage *get_mage(const unit * u) { if (has_skill(u, SK_MAGIC)) { attrib *a = a_find(u->attribs, &at_mage); - if (a) - return a->data.v; + if (a) { + return (sc_mage *)a->data.v; + } } return (sc_mage *)NULL; } diff --git a/src/tests.c b/src/tests.c index cfcd6d0ca..49b5b7c05 100644 --- a/src/tests.c +++ b/src/tests.c @@ -4,6 +4,7 @@ #include "prefix.h" #include "reports.h" #include "calendar.h" +#include "vortex.h" #include #include @@ -209,6 +210,7 @@ static void test_reset(void) { default_locale = 0; calendar_cleanup(); close_orders(); + free_special_directions(); free_locales(); free_spells(); free_buildingtypes(); diff --git a/src/vortex.c b/src/vortex.c index 7b6206d03..773982124 100644 --- a/src/vortex.c +++ b/src/vortex.c @@ -26,6 +26,16 @@ typedef struct dir_lookup { static dir_lookup *dir_name_lookup; +void free_special_directions(void) +{ + while (dir_name_lookup) { + dir_lookup *dl = dir_name_lookup; + dir_name_lookup = dl->next; + free(dl->name); + free(dl); + } +} + void register_special_direction(struct locale *lang, const char *name) { const char *token = locale_string(lang, name, false); diff --git a/src/vortex.h b/src/vortex.h index 993f5cdab..ea7af624a 100644 --- a/src/vortex.h +++ b/src/vortex.h @@ -26,6 +26,8 @@ extern "C" { struct region *find_special_direction(const struct region *r, const char *token); void register_special_direction(struct locale *lang, const char *name); + void free_special_directions(void); + struct spec_direction *special_direction(const struct region * from, const struct region * to); struct attrib *create_special_direction(struct region *r, struct region *rt,