diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-01-31 02:02:43 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-01-31 02:02:43 +0100 |
commit | b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9 (patch) | |
tree | 7375b0a214fa1e0c4523c49b0806417208b371c3 /src/scripting | |
parent | 4bae401f089c39371bc1c89d45aafae24b9402fe (diff) | |
download | manaserv-b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9.tar.gz manaserv-b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9.tar.bz2 manaserv-b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9.tar.xz manaserv-b2209cbe93aa12dcd4e4e3b9a7cd8b13ed5713e9.zip |
Fixed the money handling.
- At character's attributes recalculation when necessary.
- In the lua scripting functions.
Diffstat (limited to 'src/scripting')
-rw-r--r-- | src/scripting/lua.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index 3a615412..57146cb9 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -370,8 +370,14 @@ static int chr_inv_change(lua_State *s) int id = lua_tointeger(s, i * 2 + 2); int nb = lua_tointeger(s, i * 2 + 3); - if (id == 0) - LOG_WARN("chr_inv_change: id 0! Currency is now handled through attributes!"); + if (id == 0) // Id 0 = Change money amount. + { + double money = q->getModifiedAttribute(ATTR_MONEY); + money += nb; + q->setAttribute(ATTR_MONEY, money); + lua_pushboolean(s, 1); + return 1; + } else if (nb < 0) { nb = inv.remove(id, -nb); @@ -421,8 +427,23 @@ static int chr_inv_count(lua_State *s) Inventory inv(q); for (int i = 2; i <= nb_items + 1; ++i) { - int nb = inv.count(luaL_checkint(s, i)); - lua_pushinteger(s, nb); + int id = luaL_checkint(s, i); + + // Id 0 = Money - get it through attributes + if (id == 0) + { + int money = (int) q->getAttribute(ATTR_MONEY); + + if (money < 0) + money = 0; + lua_pushinteger(s, money); + } + else + { + // Otherwise, return the normal count result + int nb = inv.count(id); + lua_pushinteger(s, nb); + } } return nb_items; } |