server/scripts/tests/e2/familiars.lua

85 lines
2.7 KiB
Lua
Raw Normal View History

local tcname = 'tests.e2.familiars'
local lunit = require('lunit')
if _VERSION >= 'Lua 5.2' then
_ENV = module(tcname, 'seeall')
else
module(tcname, lunit.testcase, package.seeall)
end
function setup()
eressea.game.reset()
eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
eressea.settings.set("rules.food.flags", "4")
eressea.settings.set("rules.peasants.growth.factor", "0")
eressea.settings.set("magic.resist.enable", "0")
eressea.settings.set("magic.fumble.enable", "0")
eressea.settings.set("magic.regeneration.enable", "0")
end
local function setup_familiars(f, r)
f.magic = 'gwyrrd'
local uf = unit.create(f, r)
uf.magic = 'gray'
local u = unit.create(f, r)
u.magic = 'gwyrrd'
u:set_skill('magic', 9)
u.familiar = uf
return u, uf
end
function test_moneyspell()
local r = region.create(0, 0, "plain")
local f = faction.create('human')
local um, uf = setup_familiars(f, r)
um.aura = 9
um:add_order('ZAUBERE STUFE 9 Viehheilung')
process_orders()
assert_equal(0, um.aura)
assert_equal(450, um:get_item('money'))
end
function test_moneyspell_through_familiar()
-- casting magician's spell with the familiar: double cost
local r = region.create(0, 0, "plain")
local f = faction.create('human')
local um, uf = setup_familiars(f, r)
um.aura = 12
uf:add_order('ZAUBERE STUFE 3 Viehheilung')
process_orders()
assert_equal(0, uf:get_skill('magic'))
assert_equal(12, um.aura) -- cannot cast, familiar needs magic skill
assert_equal(0, uf:get_item('money'))
assert_equal(0, um:get_item('money'))
uf:set_skill('magic', 2) -- can cast no higher than level 2
process_orders()
assert_equal(8, um.aura) -- double the cost
assert_equal(100, uf:get_item('money'))
assert_equal(0, um:get_item('money'))
um:set_skill('magic', 4) -- use at most half of skill
uf:set_skill('magic', 1) -- too low for level 2 spell, cast at level 1
process_orders()
assert_equal(6, um.aura) -- double cost of level 1
assert_equal(150, uf:get_item('money'))
assert_equal(0, um:get_item('money'))
end
function test_moneyspell_as_familiar()
-- familiar has the spell and has magic skills: regular spellcasting rules apply
local r = region.create(0, 0, "plain")
local f = faction.create('human')
local um, uf = setup_familiars(f, r)
um.aura = 9
uf.aura = 20
uf:set_skill('magic', 10)
uf:add_spell('earn_silver#gwyrrd')
uf:add_order('ZAUBERE STUFE 10 Viehheilung')
process_orders()
assert_equal(500, uf:get_item('money'))
assert_equal(10, uf.aura)
assert_equal(9, um.aura)
end