allow setting a faction's magic school from Lua

This commit is contained in:
Enno Rehling 2012-05-25 20:15:57 -07:00
parent 24cba1bea7
commit d58e853074
3 changed files with 28 additions and 2 deletions

View File

@ -14,11 +14,12 @@ function test_roi()
u.race = "elf" u.race = "elf"
u:set_skill("magic", 10) u:set_skill("magic", 10)
u:add_item("money", 3010) u:add_item("money", 3010)
f.magic = "tybied"
u.magic = "tybied" u.magic = "tybied"
u.aura = 200 u.aura = 200
u.ship = s1 u.ship = s1
local err = u:add_spell("create_roi") -- local err = u:add_spell("create_roi")
assert_equal(0, err) -- assert_equal(0, err)
u:clear_orders() u:clear_orders()
u:add_order("ZAUBERE 'Erschaffe einen Ring der Unsichtbarkeit' ") u:add_order("ZAUBERE 'Erschaffe einen Ring der Unsichtbarkeit' ")
process_orders() process_orders()

View File

@ -117,6 +117,28 @@ static int tolua_faction_set_id(lua_State * L)
return 1; return 1;
} }
static int tolua_faction_get_magic(lua_State * L)
{
faction *self = (faction *) tolua_tousertype(L, 1, 0);
lua_pushstring(L, magic_school[self->magiegebiet]);
return 1;
}
static int tolua_faction_set_magic(lua_State * L)
{
faction *self = (faction *) tolua_tousertype(L, 1, 0);
const char *type = tolua_tostring(L, 2, 0);
magic_t mtype;
for (mtype = 0; mtype != MAXMAGIETYP; ++mtype) {
if (strcmp(magic_school[mtype], type) == 0) {
self->magiegebiet = mtype;
break;
}
}
return 0;
}
static int tolua_faction_get_age(lua_State * L) static int tolua_faction_get_age(lua_State * L)
{ {
faction *self = (faction *) tolua_tousertype(L, 1, 0); faction *self = (faction *) tolua_tousertype(L, 1, 0);
@ -498,6 +520,8 @@ void tolua_faction_open(lua_State * L)
tolua_variable(L, TOLUA_CAST "alliance", tolua_faction_get_alliance, tolua_variable(L, TOLUA_CAST "alliance", tolua_faction_get_alliance,
tolua_faction_set_alliance); tolua_faction_set_alliance);
tolua_variable(L, TOLUA_CAST "score", tolua_faction_get_score, NULL); tolua_variable(L, TOLUA_CAST "score", tolua_faction_get_score, NULL);
tolua_variable(L, TOLUA_CAST "magic", &tolua_faction_get_magic,
tolua_faction_set_magic);
tolua_variable(L, TOLUA_CAST "age", tolua_faction_get_age, tolua_variable(L, TOLUA_CAST "age", tolua_faction_get_age,
tolua_faction_set_age); tolua_faction_set_age);
tolua_variable(L, TOLUA_CAST "options", tolua_faction_get_options, tolua_variable(L, TOLUA_CAST "options", tolua_faction_get_options,

View File

@ -1745,6 +1745,7 @@ struct spellbook * unit_get_spellbook(struct unit * u)
if (u->faction->spellbook) { if (u->faction->spellbook) {
return u->faction->spellbook; return u->faction->spellbook;
} }
return get_spellbook(magic_school[u->faction->magiegebiet]);
} }
return 0; return 0;
} }