summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2012-05-17 08:16:07 +0200
committerBardur Arantsson <bardur@scientician.net>2012-05-18 11:47:20 +0200
commitccb4ffd3033ac953c064b590709e0a88ff659003 (patch)
tree03590d0b1765bd39fb3c7aaa7c7daf54811332c6 /src
parent0582181c200ef17189b6e1c3161f50860b8b1fab (diff)
Lua: Rework get_level_school() callout
Diffstat (limited to 'src')
-rw-r--r--src/externs.h1
-rw-r--r--src/lua_bind.c16
2 files changed, 16 insertions, 1 deletions
diff --git a/src/externs.h b/src/externs.h
index 0b7b2575..564c0b2b 100644
--- a/src/externs.h
+++ b/src/externs.h
@@ -2307,6 +2307,7 @@ extern s32b get_level_device(s32b s, s32b max, s32b min);
extern int get_mana(s32b s);
extern s32b spell_chance(s32b s);
extern s32b get_level(s32b s, s32b max, s32b min);
+extern void get_level_school(s32b s, s32b max, s32b min, s32b *level, bool_ *na);
extern s32b lua_spell_chance(s32b chance, int level, int skill_level, int mana, int cur_mana, int stat);
extern s32b lua_spell_device_chance(s32b chance, int level, int base_level);
diff --git a/src/lua_bind.c b/src/lua_bind.c
index 409e005d..a019004b 100644
--- a/src/lua_bind.c
+++ b/src/lua_bind.c
@@ -271,13 +271,27 @@ s32b spell_chance(s32b s)
}
}
+void get_level_school(s32b s, s32b max, s32b min, s32b *level, bool_ *na)
+{
+ if (level != NULL)
+ {
+ *level = exec_lua(format("local lvl, na = get_level_school(%d, %d, %d); return lvl", s, max, min));
+ }
+
+ if (na != NULL)
+ {
+ *na = exec_lua(format("local lvl, na = get_level_school(%d, %d, %d); return (na == \"n/a\")", s, max, min));
+ }
+}
+
s32b get_level(s32b s, s32b max, s32b min)
{
/** Ahah shall we use Magic device instead ? */
if (get_level_use_stick > -1) {
return get_level_device(s, max, min);
} else {
- int level = exec_lua(format("local lvl, na = get_level_school(%d, %d, %d); return lvl", s, max, min));
+ s32b level;
+ get_level_school(s, max, min, &level, NULL);
return level;
}
}