From 09a08fb84ae01bdec5f520ca4cd55e34784db87a Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Mon, 3 Dec 2007 19:26:17 +0000 Subject: [PATCH] fixing the item use functions and making future fuckups less likely --- src/common/gamecode/items.c | 15 ++++---- src/common/items/artrewards.c | 7 ++-- src/common/items/demonseye.c | 4 +- src/common/items/phoenixcompass.c | 2 +- src/common/items/speedsail.c | 3 +- src/common/items/xerewards.c | 4 +- src/common/kernel/eressea.c | 32 ++++++---------- src/common/kernel/eressea.h | 4 ++ src/common/kernel/item.c | 62 +++++++++++++++++++++++-------- src/common/kernel/item.h | 3 ++ src/common/modules/arena.c | 10 ++--- src/common/modules/museum.c | 4 +- src/common/modules/xecmd.c | 10 ----- src/common/modules/xecmd.h | 1 - src/eressea/lua/script.cpp | 2 +- 15 files changed, 88 insertions(+), 75 deletions(-) diff --git a/src/common/gamecode/items.c b/src/common/gamecode/items.c index dbaf30daf..20b391640 100644 --- a/src/common/gamecode/items.c +++ b/src/common/gamecode/items.c @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -256,11 +255,11 @@ void register_itemfunctions(void) { register_demonseye(); - register_function((pf_generic)use_antimagiccrystal, "use_antimagiccrystal"); - register_function((pf_generic)use_instantartsculpture, "use_instantartsculpture"); - register_function((pf_generic)use_studypotion, "use_studypotion"); - register_function((pf_generic)use_speedsail, "use_speedsail"); - register_function((pf_generic)use_instantartacademy, "use_instantartacademy"); - register_function((pf_generic)use_bagpipeoffear, "use_bagpipeoffear"); - register_function((pf_generic)use_aurapotion50, "use_aurapotion50"); + register_item_use(use_antimagiccrystal, "use_antimagiccrystal"); + register_item_use(use_instantartsculpture, "use_instantartsculpture"); + register_item_use(use_studypotion, "use_studypotion"); + register_item_use(use_speedsail, "use_speedsail"); + register_item_use(use_instantartacademy, "use_instantartacademy"); + register_item_use(use_bagpipeoffear, "use_bagpipeoffear"); + register_item_use(use_aurapotion50, "use_aurapotion50"); } diff --git a/src/common/items/artrewards.c b/src/common/items/artrewards.c index a3355f6bc..07efe87c1 100644 --- a/src/common/items/artrewards.c +++ b/src/common/items/artrewards.c @@ -29,7 +29,6 @@ /* util includes */ #include -#include #include /* libc includes */ @@ -151,7 +150,7 @@ void register_artrewards(void) { at_register(&at_peaceimmune); - register_function((pf_generic)use_hornofdancing, "use_hornofdancing"); - register_function((pf_generic)use_trappedairelemental, "use_trappedairelemental"); - register_function((pf_generic)useonother_trappedairelemental, "useonother_trappedairelemental"); + register_item_use(use_hornofdancing, "use_hornofdancing"); + register_item_use(use_trappedairelemental, "use_trappedairelemental"); + register_item_useonother(useonother_trappedairelemental, "useonother_trappedairelemental"); } diff --git a/src/common/items/demonseye.c b/src/common/items/demonseye.c index 3727015fa..cb20dd454 100644 --- a/src/common/items/demonseye.c +++ b/src/common/items/demonseye.c @@ -55,6 +55,6 @@ give_igjarjuk(const struct unit * src, const struct unit * d, const struct item_ void register_demonseye(void) { - register_function((pf_generic)summon_igjarjuk, "useigjarjuk"); - register_function((pf_generic)give_igjarjuk, "giveigjarjuk"); + register_item_use(summon_igjarjuk, "useigjarjuk"); + register_function((pf_generic)give_igjarjuk, "giveigjarjuk"); } diff --git a/src/common/items/phoenixcompass.c b/src/common/items/phoenixcompass.c index c7eb92165..2e9ca691f 100644 --- a/src/common/items/phoenixcompass.c +++ b/src/common/items/phoenixcompass.c @@ -119,6 +119,6 @@ use_phoenixcompass(struct unit * u, const struct item_type * itype, void register_phoenixcompass(void) { - register_function((pf_generic)use_phoenixcompass, "use_phoenixcompass"); + register_item_use(use_phoenixcompass, "use_phoenixcompass"); } diff --git a/src/common/items/speedsail.c b/src/common/items/speedsail.c index d3e7ba588..da78ab485 100644 --- a/src/common/items/speedsail.c +++ b/src/common/items/speedsail.c @@ -28,7 +28,6 @@ /* util includes */ #include -#include #include /* libc includes */ @@ -66,5 +65,5 @@ use_speedsail(struct unit * u, const struct item_type * itype, int amount, struc void register_speedsail(void) { - register_function((pf_generic)use_speedsail, "use_speedsail"); + register_item_use(use_speedsail, "use_speedsail"); } diff --git a/src/common/items/xerewards.c b/src/common/items/xerewards.c index b7c798342..948d8565d 100644 --- a/src/common/items/xerewards.c +++ b/src/common/items/xerewards.c @@ -80,7 +80,7 @@ use_manacrystal(struct unit * u, const struct item_type * itype, int amount, str void register_xerewards(void) { - register_function((pf_generic)use_skillpotion, "use_skillpotion"); - register_function((pf_generic)use_manacrystal, "use_manacrystal"); + register_item_use(use_skillpotion, "use_skillpotion"); + register_item_use(use_manacrystal, "use_manacrystal"); } diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c index 06361163b..293e1e456 100644 --- a/src/common/kernel/eressea.c +++ b/src/common/kernel/eressea.c @@ -21,9 +21,6 @@ #include #include "eressea.h" -/* modules includes */ -#include - /* attributes includes */ #include #include @@ -97,6 +94,17 @@ const struct race * new_race[MAXRACES]; boolean sqlpatch = false; int turn; +#ifdef XECMD_MODULE +attrib_type at_xontormiaexpress = { + "xontormiaexpress", + DEFAULT_INIT, + DEFAULT_FINALIZE, + DEFAULT_AGE, + a_writeint, + a_readint, + ATF_UNIQUE +}; +#endif int NewbieImmunity(void) { static int value = -1; @@ -1920,24 +1928,6 @@ gc_add(void * p) return p; } -void -use_birthdayamulet(region * r, unit * magician, order * ord) -{ - region *tr; - direction_t d; - message * msg = msg_message("meow", ""); - - unused(ord); - unused(magician); - - add_message(&r->msgs, msg); - for(d=0;dmsgs, msg); - } - msg_release(msg); -} - static void init_directions(tnode * root, const struct locale * lang) { diff --git a/src/common/kernel/eressea.h b/src/common/kernel/eressea.h index aa772de7f..07ca584a1 100644 --- a/src/common/kernel/eressea.h +++ b/src/common/kernel/eressea.h @@ -421,6 +421,10 @@ extern struct attrib_type at_guard; # define count_unit(u) 1 #endif +#ifdef XECMD_MODULE +extern struct attrib_type at_xontormiaexpress; +#endif + #ifdef __cplusplus } #endif diff --git a/src/common/kernel/item.c b/src/common/kernel/item.c index 81bce5211..bd9b2ae3a 100644 --- a/src/common/kernel/item.c +++ b/src/common/kernel/item.c @@ -628,7 +628,25 @@ set_item(unit * u, item_t it, int value) return value; } -void use_birthdayamulet(region * r, unit * magician, int amount, struct order * ord); +static int +use_birthdayamulet(unit * u, const struct item_type * itype, int amount, struct order * ord) +{ + direction_t d; + message * msg = msg_message("meow", ""); + + unused(ord); + unused(amount); + unused(itype); + + add_message(&u->region->msgs, msg); + for(d=0;dregion, d); + if (tr) add_message(&tr->msgs, msg); + } + msg_release(msg); + return 0; +} + /* t_item::flags */ #define FL_ITEM_CURSED (1<<0) @@ -640,8 +658,8 @@ void use_birthdayamulet(region * r, unit * magician, int amount, struct order * /* ------------------------------------------------------------- */ /* Kann auch von Nichtmagier benutzt werden, modifiziert Taktik für diese * Runde um -1 - 4 Punkte. */ -static void -use_tacticcrystal(region * r, unit * u, int amount, struct order * ord) +static int +use_tacticcrystal(unit * u, const struct item_type * itype, int amount, struct order * ord) { int i; for (i=0;i!=amount;++i) { @@ -658,10 +676,10 @@ use_tacticcrystal(region * r, unit * u, int amount, struct order * ord) c->data.i = SK_TACTICS; unused(ord); } - use_pooled(u, oldresourcetype[R_TACTICCRYSTAL], GET_DEFAULT, amount); + use_pooled(u, itype->rtype, GET_DEFAULT, amount); ADDMSG(&u->faction->msgs, msg_message("use_tacticcrystal", - "unit region", u, r)); - return; + "unit region", u, u->region)); + return 0; } typedef struct t_item { @@ -729,6 +747,18 @@ heal(unit * user, int effect) return effect; } +void +register_item_use(int (*foo) (struct unit *, const struct item_type *, int, struct order *), const char * name) +{ + register_function((pf_generic)foo, name); +} + +void +register_item_useonother(int (*foo) (struct unit *, int, const struct item_type *, int, struct order *), const char * name) +{ + register_function((pf_generic)foo, name); +} + static int use_healingpotion(struct unit *user, const struct item_type *itype, int amount, struct order * ord) { @@ -1104,16 +1134,16 @@ register_resources(void) register_function((pf_generic)res_changehp, "changehp"); register_function((pf_generic)res_changeaura, "changeaura"); - register_function((pf_generic)use_potion, "usepotion"); - register_function((pf_generic)use_tacticcrystal, "use_tacticcrystal"); - register_function((pf_generic)use_birthdayamulet, "use_birthdayamulet"); - register_function((pf_generic)use_warmthpotion, "usewarmthpotion"); - register_function((pf_generic)use_bloodpotion, "usebloodpotion"); - register_function((pf_generic)use_healingpotion, "usehealingpotion"); - register_function((pf_generic)use_foolpotion, "usefoolpotion"); - register_function((pf_generic)use_mistletoe, "usemistletoe"); - register_function((pf_generic)use_magicboost, "usemagicboost"); - register_function((pf_generic)use_snowball, "usesnowball"); + register_item_use(use_potion, "usepotion"); + register_item_use(use_tacticcrystal, "use_tacticcrystal"); + register_item_use(use_birthdayamulet, "use_birthdayamulet"); + register_item_use(use_warmthpotion, "usewarmthpotion"); + register_item_use(use_bloodpotion, "usebloodpotion"); + register_item_use(use_healingpotion, "usehealingpotion"); + register_item_useonother(use_foolpotion, "usefoolpotion"); + register_item_use(use_mistletoe, "usemistletoe"); + register_item_use(use_magicboost, "usemagicboost"); + register_item_use(use_snowball, "usesnowball"); register_function((pf_generic)give_horses, "givehorses"); diff --git a/src/common/kernel/item.h b/src/common/kernel/item.h index a4d0a7a77..3e73ee569 100644 --- a/src/common/kernel/item.h +++ b/src/common/kernel/item.h @@ -333,6 +333,9 @@ extern struct attrib_type at_seenitem; /* knows this potion's description, no ne extern void register_resources(void); extern void init_resources(void); +extern void register_item_use(int (*foo) (struct unit *, const struct item_type *, int, struct order *), const char * name); +extern void register_item_useonother(int (*foo) (struct unit *, int, const struct item_type *, int, struct order *), const char * name); + extern struct item_type *i_silver; #ifdef __cplusplus diff --git a/src/common/modules/arena.c b/src/common/modules/arena.c index ef273d110..ccdec6116 100644 --- a/src/common/modules/arena.c +++ b/src/common/modules/arena.c @@ -519,11 +519,11 @@ create_arena(void) void register_arena(void) { - at_register(&at_hurting); - register_function((pf_generic)use_wand_of_tears, "use_wand_of_tears"); - register_function((pf_generic)enter_arena, "enter_arena"); - register_function((pf_generic)leave_arena, "leave_arena"); - tt_register(&tt_caldera); + at_register(&at_hurting); + register_item_use(use_wand_of_tears, "use_wand_of_tears"); + register_function((pf_generic)enter_arena, "enter_arena"); + register_function((pf_generic)leave_arena, "leave_arena"); + tt_register(&tt_caldera); } #endif /* def ARENA_MODULE */ diff --git a/src/common/modules/museum.c b/src/common/modules/museum.c index 9bbc0e083..ebaa9c4cf 100644 --- a/src/common/modules/museum.c +++ b/src/common/modules/museum.c @@ -384,8 +384,8 @@ register_museum(void) at_register(&at_museumgivebackcookie); at_register(&at_museumgiveback); - register_function((pf_generic)use_museumticket, "use_museumticket"); - register_function((pf_generic)use_museumexitticket, "use_museumexitticket"); + register_item_use(use_museumticket, "use_museumticket"); + register_item_use(use_museumexitticket, "use_museumexitticket"); } #endif diff --git a/src/common/modules/xecmd.c b/src/common/modules/xecmd.c index df92c379f..7fe84d187 100644 --- a/src/common/modules/xecmd.c +++ b/src/common/modules/xecmd.c @@ -39,16 +39,6 @@ #include #include -attrib_type at_xontormiaexpress = { - "xontormiaexpress", - DEFAULT_INIT, - DEFAULT_FINALIZE, - DEFAULT_AGE, - a_writeint, - a_readint, - ATF_UNIQUE -}; - static void xe_givelaen(unit *u, struct order * ord) { diff --git a/src/common/modules/xecmd.h b/src/common/modules/xecmd.h index 206fdbbf1..7fb81ae03 100644 --- a/src/common/modules/xecmd.h +++ b/src/common/modules/xecmd.h @@ -17,7 +17,6 @@ extern "C" { #endif #ifdef XECMD_MODULE -extern struct attrib_type at_xontormiaexpress; int xecmd(struct unit * u, struct order * ord); #endif diff --git a/src/eressea/lua/script.cpp b/src/eressea/lua/script.cpp index fb162fbfe..4cd175c45 100644 --- a/src/eressea/lua/script.cpp +++ b/src/eressea/lua/script.cpp @@ -334,7 +334,7 @@ bind_script(lua_State * L) { register_function((pf_generic)&lua_callspell, "lua_castspell"); register_function((pf_generic)&lua_initfamiliar, "lua_initfamiliar"); - register_function((pf_generic)&lua_useitem, "lua_useitem"); + register_item_use(&lua_useitem, "lua_useitem"); register_function((pf_generic)&lua_getresource, "lua_getresource"); register_function((pf_generic)&lua_changeresource, "lua_changeresource"); register_function((pf_generic)&lua_equipmentcallback, "lua_equip");