forked from github/server
repair lua spells (bad stack index)
add a whole bunch more spell tests allow spell tests to disable fumbles
This commit is contained in:
parent
347ff0dd77
commit
cb0e406733
4 changed files with 116 additions and 22 deletions
|
@ -5,25 +5,117 @@ module("tests.spells", package.seeall, lunit.testcase)
|
||||||
function setup()
|
function setup()
|
||||||
free_game()
|
free_game()
|
||||||
settings.set("magic.fumble.enable", "0")
|
settings.set("magic.fumble.enable", "0")
|
||||||
|
settings.set("magic.regeneration.enable", "0")
|
||||||
|
settings.set("rules.economy.food", "0")
|
||||||
end
|
end
|
||||||
|
|
||||||
function test_roi()
|
function test_create_firesword()
|
||||||
local r = region.create(0,0, "plain")
|
local r = region.create(0,0, "plain")
|
||||||
local f = faction.create("noreply@eressea.de", "human", "de")
|
local f = faction.create("create_firesword@eressea.de", "human", "de")
|
||||||
local u = unit.create(f, r, 1)
|
local u = unit.create(f, r, 1)
|
||||||
u.race = "elf"
|
u:set_skill("magic", 12)
|
||||||
u:set_skill("magic", 10)
|
u:add_spell("create_firesword")
|
||||||
u:add_item("money", 3010)
|
|
||||||
f.magic = "gwyrrd"
|
|
||||||
u.magic = "gwyrrd"
|
|
||||||
u.aura = 200
|
|
||||||
u.ship = s1
|
|
||||||
|
|
||||||
-- local err = u:add_spell("create_roi")
|
u:cast_spell('create_firesword', 1)
|
||||||
-- assert_equal(0, err)
|
assert_equal(1, u:get_item("firesword"))
|
||||||
u:clear_orders()
|
end
|
||||||
u:add_order("ZAUBERE 'Erschaffe einen Ring der Unsichtbarkeit' ")
|
|
||||||
process_orders()
|
function test_create_roi()
|
||||||
write_reports()
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_roi@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_roi')
|
||||||
assert_equal(1, u:get_item("roi"))
|
assert_equal(1, u:get_item("roi"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function test_create_roqf()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_roqf@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_roqf')
|
||||||
|
assert_equal(1, u:get_item("roqf"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_aots()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_aots@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_aots')
|
||||||
|
assert_equal(1, u:get_item("aots"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_ror()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_ror@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_ror')
|
||||||
|
assert_equal(1, u:get_item("ror"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_magicherbbag()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_magicherbbag@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_magicherbbag')
|
||||||
|
assert_equal(1, u:get_item("magicherbbag"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_trollbelt()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_trollbelt@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_trollbelt')
|
||||||
|
assert_equal(1, u:get_item("trollbelt"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_dreameye()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_dreameye@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_dreameye')
|
||||||
|
assert_equal(1, u:get_item("dreameye"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_antimagic()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_antimagic@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_antimagic')
|
||||||
|
assert_equal(1, u:get_item("antimagic"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_runesword()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_runesword@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_runesword')
|
||||||
|
assert_equal(1, u:get_item("runesword"))
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_create_rop()
|
||||||
|
local r = region.create(0,0, "plain")
|
||||||
|
local f = faction.create("create_rop@eressea.de", "human", "de")
|
||||||
|
local u = unit.create(f, r, 1)
|
||||||
|
u:set_skill("magic", 10)
|
||||||
|
|
||||||
|
u:cast_spell('create_rop')
|
||||||
|
assert_equal(1, u:get_item("rop"))
|
||||||
|
end
|
||||||
|
|
|
@ -1070,7 +1070,7 @@ static int tolua_eventbus_register(lua_State * L)
|
||||||
{
|
{
|
||||||
void *sender = tolua_tousertype(L, 1, 0);
|
void *sender = tolua_tousertype(L, 1, 0);
|
||||||
const char *event = tolua_tostring(L, 2, 0);
|
const char *event = tolua_tostring(L, 2, 0);
|
||||||
event_args *args = malloc(sizeof(event_args));
|
event_args *args = (event_args *)malloc(sizeof(event_args));
|
||||||
args->sendertype = sender ? tolua_typename(L, 1) : NULL;
|
args->sendertype = sender ? tolua_typename(L, 1) : NULL;
|
||||||
lua_pushvalue(L, 3);
|
lua_pushvalue(L, 3);
|
||||||
args->hfunction = luaL_ref(L, LUA_REGISTRYINDEX);
|
args->hfunction = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||||
|
@ -1259,10 +1259,8 @@ int tolua_eressea_open(lua_State * L)
|
||||||
tolua_function(L, TOLUA_CAST "itoa36", tolua_itoa36);
|
tolua_function(L, TOLUA_CAST "itoa36", tolua_itoa36);
|
||||||
tolua_function(L, TOLUA_CAST "dice_roll", tolua_dice_rand);
|
tolua_function(L, TOLUA_CAST "dice_roll", tolua_dice_rand);
|
||||||
tolua_function(L, TOLUA_CAST "get_nmrs", tolua_get_nmrs);
|
tolua_function(L, TOLUA_CAST "get_nmrs", tolua_get_nmrs);
|
||||||
tolua_function(L, TOLUA_CAST "remove_empty_units",
|
tolua_function(L, TOLUA_CAST "remove_empty_units", tolua_remove_empty_units);
|
||||||
tolua_remove_empty_units);
|
tolua_function(L, TOLUA_CAST "update_subscriptions", tolua_update_subscriptions);
|
||||||
tolua_function(L, TOLUA_CAST "update_subscriptions",
|
|
||||||
tolua_update_subscriptions);
|
|
||||||
tolua_function(L, TOLUA_CAST "update_scores", tolua_update_scores);
|
tolua_function(L, TOLUA_CAST "update_scores", tolua_update_scores);
|
||||||
tolua_function(L, TOLUA_CAST "update_owners", tolua_update_owners);
|
tolua_function(L, TOLUA_CAST "update_owners", tolua_update_owners);
|
||||||
tolua_function(L, TOLUA_CAST "learn_skill", tolua_learn_skill);
|
tolua_function(L, TOLUA_CAST "learn_skill", tolua_learn_skill);
|
||||||
|
|
|
@ -203,7 +203,7 @@ static int lua_callspell(castorder * co)
|
||||||
|
|
||||||
lua_pushstring(L, fname);
|
lua_pushstring(L, fname);
|
||||||
lua_rawget(L, LUA_GLOBALSINDEX);
|
lua_rawget(L, LUA_GLOBALSINDEX);
|
||||||
if (lua_isfunction(L, 1)) {
|
if (lua_isfunction(L, -1)) {
|
||||||
int nparam = 4;
|
int nparam = 4;
|
||||||
tolua_pushusertype(L, r, TOLUA_CAST "region");
|
tolua_pushusertype(L, r, TOLUA_CAST "region");
|
||||||
tolua_pushusertype(L, caster, TOLUA_CAST "unit");
|
tolua_pushusertype(L, caster, TOLUA_CAST "unit");
|
||||||
|
@ -236,7 +236,8 @@ static int lua_callspell(castorder * co)
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log_error("spell(%s) calling '%s': not a function.\n", unitname(caster), fname);
|
int ltype = lua_type(L, -1);
|
||||||
|
log_error("spell(%s) calling '%s': not a function, has type %d.\n", unitname(caster), fname, ltype);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1452,6 +1452,9 @@ void regeneration_magiepunkte(void)
|
||||||
double reg_aura;
|
double reg_aura;
|
||||||
int regen;
|
int regen;
|
||||||
double mod;
|
double mod;
|
||||||
|
int regen_enabled = get_param_int(global.parameters, "magic.regeneration.enable", 1);
|
||||||
|
|
||||||
|
if (!regen_enabled) return;
|
||||||
|
|
||||||
for (r = regions; r; r = r->next) {
|
for (r = regions; r; r = r->next) {
|
||||||
for (u = r->units; u; u = u->next) {
|
for (u = r->units; u; u = u->next) {
|
||||||
|
|
Loading…
Reference in a new issue