diff --git a/src/eressea/lua/unit.cpp b/src/eressea/lua/unit.cpp index 156aaa31d..efb039aa8 100644 --- a/src/eressea/lua/unit.cpp +++ b/src/eressea/lua/unit.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -127,7 +128,27 @@ unit_additem(unit& u, const char * iname, int number) if (itype!=NULL) { item * i = i_change(&u.items, itype, number); return i?i->number:0; - } // if (itype!=NULL) + } + return -1; +} + +static int +unit_usepooled(unit& u, const char * iname, int number) +{ + const resource_type * rtype = rt_find(iname); + if (rtype!=NULL) { + return use_pooled(&u, rtype, GET_DEFAULT, number); + } + return -1; +} + +static int +unit_getpooled(unit& u, const char * iname) +{ + const resource_type * rtype = rt_find(iname); + if (rtype!=NULL) { + return get_pooled(&u, rtype, GET_DEFAULT, INT_MAX); + } return -1; } @@ -575,6 +596,9 @@ bind_unit(lua_State * L) .def("add_item", &unit_additem) .property("items", &unit_items, return_stl_iterator) + .def("get_pooled", &unit_getpooled) + .def("use_pooled", &unit_usepooled) + // skills: .def("get_skill", &unit_getskill) .def("eff_skill", &unit_effskill) diff --git a/src/scripts/eressea/xmas2005.lua b/src/scripts/eressea/xmas2005.lua index 51f19cb31..c1e82a12c 100644 --- a/src/scripts/eressea/xmas2005.lua +++ b/src/scripts/eressea/xmas2005.lua @@ -11,7 +11,7 @@ function use_stardust(u, amount) u.region:set_resource("peasant", p) local msg = usepotion_message(u, "stardust") msg:send_region(u.region) - u:add_item("stardust", -amount) + u:use_pooled("stardust", amount) return 0 end