forked from github/server
132 lines
4 KiB
Lua
132 lines
4 KiB
Lua
|
local tcname = 'tests.e2.migration'
|
||
|
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_mage(f, r)
|
||
|
local u = unit.create(f, r)
|
||
|
u.magic = 'tybied'
|
||
|
u:set_skill('magic', 10)
|
||
|
u:add_spell('migration')
|
||
|
return u
|
||
|
end
|
||
|
|
||
|
function test_migration_success()
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u2:add_order('KONTAKTIERE ' .. itoa36(u.id))
|
||
|
u:add_order('ZAUBERE STUFE 1 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 9
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
assert_equal(f, u2.faction)
|
||
|
assert_equal(6, u.aura)
|
||
|
assert_equal(8, u.aura_max)
|
||
|
end
|
||
|
|
||
|
function test_migration_no_contact()
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u:add_order('ZAUBERE STUFE 1 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 9
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
assert_not_equal(f, u2.faction)
|
||
|
assert_equal(9, u.aura)
|
||
|
assert_equal(9, u.aura_max)
|
||
|
end
|
||
|
|
||
|
function test_migration_too_many()
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u2:add_order('KONTAKTIERE ' .. itoa36(u.id))
|
||
|
u2.number = 2
|
||
|
u:add_order('ZAUBERE STUFE 1 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 9
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
assert_not_equal(f, u2.faction)
|
||
|
assert_equal(9, u.aura)
|
||
|
assert_equal(9, u.aura_max)
|
||
|
end
|
||
|
|
||
|
function test_migration_with_ring()
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u2:add_order('KONTAKTIERE ' .. itoa36(u.id))
|
||
|
u2.number = 2
|
||
|
u:add_item('rop', 1)
|
||
|
u:add_order('ZAUBERE STUFE 1 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 9
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
assert_equal(f, u2.faction)
|
||
|
assert_equal(6, u.aura)
|
||
|
assert_equal(8, u.aura_max)
|
||
|
end
|
||
|
|
||
|
function test_migration_insufficient_aura()
|
||
|
-- if unit cannot pay full costs, it casts at a lower level.
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u2:add_order('KONTAKTIERE ' .. itoa36(u.id))
|
||
|
u2.number = 2
|
||
|
u:add_order('ZAUBERE STUFE 2 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 3
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
-- spell fails, costs nothing:
|
||
|
assert_not_equal(f, u2.faction)
|
||
|
assert_equal(3, u.aura)
|
||
|
assert_equal(9, u.aura_max)
|
||
|
end
|
||
|
|
||
|
function test_migration_reduced_cost()
|
||
|
-- if unit cannot pay full costs, it casts at a lower level.
|
||
|
local r = region.create(0, 0, "plain")
|
||
|
local f = faction.create('human')
|
||
|
local u = setup_mage(f, r)
|
||
|
local u2 = unit.create(faction.create('human'), r)
|
||
|
u2:add_order('KONTAKTIERE ' .. itoa36(u.id))
|
||
|
u:add_order('ZAUBERE STUFE 2 "Ritual der Aufnahme" ' .. itoa36(u2.id))
|
||
|
u.aura = 3
|
||
|
u.aura_max = 9
|
||
|
process_orders()
|
||
|
-- spell is cast at level 1:
|
||
|
assert_equal(f, u2.faction)
|
||
|
assert_equal(0, u.aura)
|
||
|
assert_equal(7, u.aura_max)
|
||
|
end
|
||
|
|
||
|
--[[
|
||
|
additional tests:
|
||
|
- not enough aura, casting at lower level
|
||
|
- no aura, ring does not grant level 1
|
||
|
- magic tower, like ring, cumulative
|
||
|
]]--
|