forked from github/server
85 lines
2.7 KiB
Lua
85 lines
2.7 KiB
Lua
|
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
|