forked from github/server
918ab39bef
If owner of a building want to enter a ship or other building, he must first leave the bulding. Commands are "leave" and "enter <ship/tower> <ID>". For buildings was that OK but not for ships. The building owner was inside the region after that commans and not in the ship.
734 lines
20 KiB
Lua
734 lines
20 KiB
Lua
require "lunit"
|
|
|
|
module("tests.e3.e3features", package.seeall, lunit.testcase)
|
|
|
|
function setup()
|
|
eressea.free_game()
|
|
eressea.settings.set("rules.economy.food", "4")
|
|
end
|
|
|
|
function test_no_stealth()
|
|
local r = region.create(0,0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local u = unit.create(f, r, 1)
|
|
|
|
u:set_skill("stealth", 1)
|
|
assert_equal(-1, u:get_skill("stealth"))
|
|
u:clear_orders()
|
|
u:add_order("LERNEN TARNUNG")
|
|
process_orders()
|
|
assert_equal(-1, u:get_skill("stealth"))
|
|
end
|
|
|
|
--[[
|
|
function test_analyze_magic()
|
|
local r1 = region.create(0,0, "plain")
|
|
local r2 = region.create(1,0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
|
|
local u = unit.create(f, r2, 1)
|
|
|
|
u.race = "elf"
|
|
u:set_skill("magic", 6)
|
|
u.magic = "gwyrrd"
|
|
u.aura = 60
|
|
u:add_spell("analyze_magic")
|
|
u:clear_orders()
|
|
u:add_order("Zaubere stufe 2 'Magie analysieren' REGION 1,0")
|
|
process_orders()
|
|
end
|
|
]]--
|
|
|
|
function test_seecast()
|
|
local r = region.create(0,0, "plain")
|
|
for i = 1,10 do
|
|
-- this prevents storms (only high seas have storms)
|
|
region.create(i, 1, "plain")
|
|
end
|
|
for i = 1,10 do
|
|
region.create(i, 0, "ocean")
|
|
end
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local s1 = ship.create(r, "cutter")
|
|
local u1 = unit.create(f, r, 2)
|
|
u1:set_skill("sailing", 3)
|
|
u1:add_item("money", 1000)
|
|
u1.ship = s1
|
|
local u2 = unit.create(f, r, 1)
|
|
u2.race = "elf"
|
|
u2:set_skill("magic", 6)
|
|
u2.magic = "gwyrrd"
|
|
u2.aura = 60
|
|
u2.ship = s1
|
|
u2:add_spell("stormwinds")
|
|
update_owners()
|
|
u2:clear_orders()
|
|
u2:add_order("Zaubere stufe 2 'Beschwoere einen Sturmelementar' " .. itoa36(s1.id))
|
|
u1:clear_orders()
|
|
u1:add_order("NACH O O O O")
|
|
process_orders()
|
|
assert_equal(4, u2.region.x)
|
|
|
|
u2:clear_orders()
|
|
u2:add_order("Zaubere stufe 2 'Beschwoere einen Sturmelementar' " .. itoa36(s1.id))
|
|
u1:clear_orders()
|
|
u1:add_order("NACH O O O O")
|
|
process_orders()
|
|
assert_equal(8, u2.region.x)
|
|
end
|
|
|
|
local function use_tree(terrain)
|
|
local r = region.create(0,0, terrain)
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f, r, 5)
|
|
r:set_resource("tree", 0)
|
|
u1:add_item("xmastree", 1)
|
|
u1:clear_orders()
|
|
u1:add_order("BENUTZEN 1 Weihnachtsbaum")
|
|
process_orders()
|
|
return r
|
|
end
|
|
|
|
function test_xmas2009()
|
|
local r = region.create(0,0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f, r, 1)
|
|
process_orders()
|
|
xmas2009()
|
|
assert_equal("xmastree", f.items())
|
|
end
|
|
|
|
function test_xmastree()
|
|
local r
|
|
r = use_tree("ocean")
|
|
assert_equal(0, r:get_resource("tree"))
|
|
eressea.free_game()
|
|
r = use_tree("plain")
|
|
assert_equal(10, r:get_resource("tree"))
|
|
end
|
|
|
|
function test_fishing()
|
|
eressea.settings.set("rules.economy.food", "0")
|
|
local r = region.create(0,0, "ocean")
|
|
local r2 = region.create(1,0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local s1 = ship.create(r, "cutter")
|
|
local u1 = unit.create(f, r, 3)
|
|
u1.ship = s1
|
|
u1:set_skill("sailing", 10)
|
|
u1:add_item("money", 100)
|
|
u1:clear_orders()
|
|
u1:add_order("NACH O")
|
|
update_owners()
|
|
|
|
process_orders()
|
|
assert_equal(r2, u1.region)
|
|
assert_equal(90, u1:get_item("money"))
|
|
|
|
u1:clear_orders()
|
|
u1:add_order("NACH W")
|
|
|
|
process_orders()
|
|
assert_equal(r, u1.region)
|
|
assert_equal(60, u1:get_item("money"))
|
|
end
|
|
|
|
function test_ship_capacity()
|
|
eressea.settings.set("rules.ship.drifting", "0")
|
|
eressea.settings.set("rules.ship.storms", "0")
|
|
local r = region.create(0,0, "ocean")
|
|
region.create(1,0, "ocean")
|
|
local r2 = region.create(2,0, "ocean")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local f2 = faction.create("noreply@eressea.de", "goblin", "de")
|
|
|
|
-- u1 is at the limit and moves
|
|
local s1 = ship.create(r, "cutter")
|
|
local u1 = unit.create(f, r, 5)
|
|
u1.ship = s1
|
|
u1:set_skill("sailing", 10)
|
|
u1:add_item("sword", 55)
|
|
u1:clear_orders()
|
|
u1:add_order("NACH O O")
|
|
|
|
-- u2 has too many people
|
|
local s2 = ship.create(r, "cutter")
|
|
local u2 = unit.create(f, r, 6)
|
|
u2.ship = s2
|
|
u2:set_skill("sailing", 10)
|
|
u2:clear_orders()
|
|
u2:add_order("NACH O O")
|
|
|
|
-- u3 has goblins, they weigh 40% less
|
|
local s3 = ship.create(r, "cutter")
|
|
local u3 = unit.create(f2, r, 8)
|
|
u3.ship = s3
|
|
u3:set_skill("sailing", 10)
|
|
u3:add_item("sword", 55)
|
|
u3:clear_orders()
|
|
u3:add_order("NACH O O")
|
|
|
|
-- u4 has too much stuff
|
|
local s4 = ship.create(r, "cutter")
|
|
local u4 = unit.create(f, r, 5)
|
|
u4.ship = s4
|
|
u4:set_skill("sailing", 10)
|
|
u4:add_item("sword", 56)
|
|
u4:clear_orders()
|
|
u4:add_order("NACH O O")
|
|
|
|
update_owners()
|
|
process_orders()
|
|
if r2~=u1.region then
|
|
print(get_turn(), u1, u1.faction)
|
|
write_reports()
|
|
end
|
|
assert_equal(r2, u1.region)
|
|
assert_not_equal(r2.id, u2.region.id)
|
|
if r2~=u3.region then
|
|
print(get_turn(), u3, u3.faction)
|
|
write_reports()
|
|
end
|
|
assert_equal(r2, u3.region)
|
|
assert_not_equal(r2.id, u4.region.id)
|
|
end
|
|
|
|
function test_owners()
|
|
local r = region.create(0, 0, "plain")
|
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f1, r, 1)
|
|
local f2 = faction.create("noreply@eressea.de", "human", "de")
|
|
local u2 = unit.create(f2, r, 1)
|
|
local u3 = unit.create(f2, r, 1)
|
|
|
|
local b3 = building.create(r, "castle")
|
|
b3.size = 2
|
|
u3.building = b3
|
|
local b1 = building.create(r, "castle")
|
|
b1.size = 1
|
|
u1.building = b1
|
|
local b2 = building.create(r, "castle")
|
|
b2.size = 2
|
|
u2.building = b2
|
|
|
|
update_owners()
|
|
assert(r.owner==u3.faction)
|
|
b1.size=3
|
|
b2.size=3
|
|
update_owners()
|
|
assert(r.owner==u2.faction)
|
|
b1.size=4
|
|
update_owners()
|
|
assert(r.owner==u1.faction)
|
|
end
|
|
|
|
function test_taxes()
|
|
local r = region.create(0, 0, "plain")
|
|
r:set_resource("peasant", 1000)
|
|
r:set_resource("money", 5000)
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local u = unit.create(f, r, 1)
|
|
u:clear_orders()
|
|
u:add_order("LERNE Holzfaellen") -- do not work
|
|
local b = building.create(r, "watch")
|
|
b.size = 10
|
|
u.building = b
|
|
update_owners()
|
|
assert_equal(1, r.morale)
|
|
process_orders()
|
|
assert_equal(1, r.morale)
|
|
assert_equal(25, u:get_item("money"))
|
|
end
|
|
|
|
function test_region_owner_cannot_leave_castle()
|
|
eressea.settings.set("rules.move.owner_leave", "1")
|
|
local r = region.create(0, 0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
f.id = 42
|
|
local b1 = building.create(r, "castle")
|
|
b1.size = 10
|
|
local b2 = building.create(r, "lighthouse")
|
|
b2.size = 10
|
|
local u = unit.create(f, r, 1)
|
|
u.building = b1
|
|
u:add_item("money", u.number * 100)
|
|
u:clear_orders()
|
|
u:add_order("BETRETE BURG " .. itoa36(b2.id))
|
|
process_orders()
|
|
init_reports()
|
|
write_report(u.faction)
|
|
assert_equal(b1, u.building, "region owner has left the building") -- region owners may not leave
|
|
end
|
|
|
|
function test_market()
|
|
-- if i am the only trader around, i should be getting all the herbs from all 7 regions
|
|
local herb_multi = 500 -- from rc_herb_trade()
|
|
local r, idx
|
|
local herbnames = { 'h0', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8' }
|
|
idx = 1
|
|
for x = -1, 1 do for y = -1, 1 do
|
|
r = region.create(x, y, "plain")
|
|
r:set_resource("peasant", herb_multi * 9 + 50) -- 10 herbs per region
|
|
r.herb = herbnames[idx]
|
|
idx = idx+1
|
|
end end
|
|
r = get_region(0, 0)
|
|
local b = building.create(r, "market")
|
|
b.size = 10
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
f.id = 42
|
|
local u = unit.create(f, r, 1)
|
|
u.building = b
|
|
u:add_item("money", u.number * 10000)
|
|
for i = 0, 5 do
|
|
local rn = r:next(i)
|
|
end
|
|
eressea.process.markets()
|
|
u:add_item("money", -u:get_item("money")) -- now we only have herbs
|
|
local len = 0
|
|
for i in u.items do
|
|
len = len + 1
|
|
end
|
|
assert_not_equal(0, len, "trader did not get any herbs")
|
|
for idx, name in pairs(herbnames) do
|
|
local n = u:get_item(name)
|
|
if n>0 then
|
|
assert_equal(10, n, 'trader did not get exaxtly 10 herbs')
|
|
end
|
|
end
|
|
end
|
|
|
|
function test_market_gives_items()
|
|
local r
|
|
for x = -1, 1 do for y = -1, 1 do
|
|
r = region.create(x, y, "plain")
|
|
r:set_resource("peasant", 5000)
|
|
end end
|
|
r = get_region(0, 0)
|
|
local b = building.create(r, "market")
|
|
b.size = 10
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
f.id = 42
|
|
local u = unit.create(f, r, 1)
|
|
u.building = b
|
|
u:add_item("money", u.number * 10000)
|
|
for i = 0, 5 do
|
|
local rn = r:next(i)
|
|
end
|
|
process_orders()
|
|
local len = 0
|
|
for i in u.items do
|
|
len = len + 1
|
|
end
|
|
assert(len>1)
|
|
end
|
|
|
|
function test_spells()
|
|
local r = region.create(0, 0, "plain")
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local u = unit.create(f, r, 1)
|
|
u.race = "elf"
|
|
u:clear_orders()
|
|
u:add_item("money", 10000)
|
|
u:set_skill("magic", 5)
|
|
u:add_order("LERNE MAGIE Illaun")
|
|
process_orders()
|
|
local sp
|
|
local nums = 0
|
|
if f.spells~=nil then
|
|
for sp in f.spells do
|
|
nums = nums + 1
|
|
end
|
|
assert(nums>0)
|
|
for sp in u.spells do
|
|
nums = nums - 1
|
|
end
|
|
assert(nums==0)
|
|
elseif u.spells~=nil then
|
|
for sp in u.spells do
|
|
nums = nums + 1
|
|
end
|
|
assert(nums>0)
|
|
end
|
|
end
|
|
|
|
function test_alliance()
|
|
local r = region.create(0, 0, "plain")
|
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f1, r, 1)
|
|
u1:add_item("money", u1.number * 100)
|
|
local f2 = faction.create("info@eressea.de", "human", "de")
|
|
local u2 = unit.create(f2, r, 1)
|
|
u2:add_item("money", u2.number * 100)
|
|
assert(f1.alliance==nil)
|
|
assert(f2.alliance==nil)
|
|
u1:clear_orders()
|
|
u2:clear_orders()
|
|
u1:add_order("ALLIANZ NEU pink")
|
|
u1:add_order("ALLIANZ EINLADEN " .. itoa36(f2.id))
|
|
u2:add_order("ALLIANZ BEITRETEN pink")
|
|
process_orders()
|
|
assert(f1.alliance~=nil)
|
|
assert(f2.alliance~=nil)
|
|
assert(f2.alliance==f1.alliance)
|
|
u1:clear_orders()
|
|
u2:clear_orders()
|
|
u1:add_order("ALLIANZ KOMMANDO " .. itoa36(f2.id))
|
|
process_orders()
|
|
assert(f1.alliance~=nil)
|
|
assert(f2.alliance~=nil)
|
|
assert(f2.alliance==f1.alliance)
|
|
for f in f1.alliance.factions do
|
|
assert_true(f.id==f1.id or f.id==f2.id)
|
|
end
|
|
u1:clear_orders()
|
|
u2:clear_orders()
|
|
u2:add_order("ALLIANZ AUSSTOSSEN " .. itoa36(f1.id))
|
|
process_orders()
|
|
assert(f1.alliance==nil)
|
|
assert(f2.alliance~=nil)
|
|
u1:clear_orders()
|
|
u2:clear_orders()
|
|
u2:add_order("ALLIANZ NEU zing")
|
|
u1:add_order("ALLIANZ BEITRETEN zing") -- no invite!
|
|
process_orders()
|
|
assert(f1.alliance==nil)
|
|
assert(f2.alliance~=nil)
|
|
u1:clear_orders()
|
|
u2:clear_orders()
|
|
u1:add_order("ALLIANZ NEU zack")
|
|
u1:add_order("ALLIANZ EINLADEN " .. itoa36(f2.id))
|
|
u2:add_order("ALLIANZ BEITRETEN zack")
|
|
process_orders()
|
|
assert(f1.alliance==f2.alliance)
|
|
assert(f2.alliance~=nil)
|
|
end
|
|
|
|
function test_canoe_passes_through_land()
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local src = region.create(0, 0, "ocean")
|
|
local land = region.create(1, 0, "plain")
|
|
region.create(2, 0, "ocean")
|
|
local dst = region.create(3, 0, "ocean")
|
|
local sh = ship.create(src, "canoe")
|
|
local u1 = unit.create(f, src, 1)
|
|
local u2 = unit.create(f, src, 1)
|
|
u1.ship = sh
|
|
u2.ship = sh
|
|
u1:set_skill("sailing", 10)
|
|
u1:clear_orders()
|
|
u1:add_order("NACH O O O")
|
|
process_orders()
|
|
assert_equal(land, u2.region, "canoe did not stop at coast")
|
|
u1:add_order("NACH O O O")
|
|
process_orders()
|
|
assert_equal(dst, sh.region, "canoe could not leave coast")
|
|
assert_equal(dst, u1.region, "canoe could not leave coast")
|
|
assert_equal(dst, u2.region, "canoe could not leave coast")
|
|
end
|
|
|
|
function test_give_50_percent_of_money()
|
|
local r = region.create(0, 0, "plain")
|
|
local u1 = unit.create(faction.create("noreply@eressea.de", "human", "de"), r, 1)
|
|
local u2 = unit.create(faction.create("noreply@eressea.de", "orc", "de"), r, 1)
|
|
u1.faction.age = 10
|
|
u2.faction.age = 10
|
|
u1:add_item("money", 500)
|
|
u2:add_item("money", 500)
|
|
local m1, m2 = u1:get_item("money"), u2:get_item("money")
|
|
u1:clear_orders()
|
|
u1:add_order("GIB " .. itoa36(u2.id) .. " 221 Silber")
|
|
u2:clear_orders()
|
|
u2:add_order("LERNEN Hiebwaffen")
|
|
process_orders()
|
|
assert_equal(m1, u1:get_item("money"))
|
|
assert_equal(m2, u2:get_item("money"))
|
|
|
|
m1, m2 = u1:get_item("money"), u2:get_item("money")
|
|
u1:clear_orders()
|
|
u1:add_order("GIB " .. itoa36(u2.id) .. " 221 Silber")
|
|
u2:clear_orders()
|
|
u2:add_order("HELFEN " .. itoa36(u1.faction.id) .. " GIB")
|
|
u2:add_item("horse", 100)
|
|
u2:add_order("GIB 0 ALLES PFERD")
|
|
local h = r:get_resource("horse")
|
|
process_orders()
|
|
assert_true(r:get_resource("horse")>=h+100)
|
|
assert_equal(m1-221, u1:get_item("money"))
|
|
assert_equal(m2+110, u2:get_item("money"))
|
|
end
|
|
|
|
function test_give_100_percent_of_items()
|
|
r = region.create(0, 0, "plain")
|
|
local u1 = unit.create(faction.create("noreply@eressea.de", "human", "de"), r, 1)
|
|
local u2 = unit.create(faction.create("noreply@eressea.de", "orc", "de"), r, 1)
|
|
u1.faction.age = 10
|
|
u2.faction.age = 10
|
|
u1:add_item("money", 500)
|
|
u1:add_item("log", 500)
|
|
local m1, m2 = u1:get_item("log"), u2:get_item("log")
|
|
u1:clear_orders()
|
|
u1:add_order("GIB " .. itoa36(u2.id) .. " 332 Holz")
|
|
u2:clear_orders()
|
|
u2:add_order("LERNEN Hiebwaffen")
|
|
u2:add_order("HELFEN " .. itoa36(u1.faction.id) .. " GIB")
|
|
process_orders()
|
|
assert_equal(m1-332, u1:get_item("log"))
|
|
assert_equal(m2+332, u2:get_item("log"))
|
|
end
|
|
|
|
function test_cannot_give_person()
|
|
local r = region.create(0, 0, "plain")
|
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
|
local f2 = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f1, r, 10)
|
|
local u2 = unit.create(f2, r, 10)
|
|
u1.faction.age = 10
|
|
u2.faction.age = 10
|
|
u1:add_item("money", 500)
|
|
u2:add_item("money", 500)
|
|
u2:clear_orders()
|
|
u2:add_order("GIB ".. itoa36(u1.id) .. " 1 PERSON")
|
|
u2:add_order("HELFE ".. itoa36(f1.id) .. " GIB")
|
|
u1:add_order("HELFE ".. itoa36(f2.id) .. " GIB")
|
|
process_orders()
|
|
assert_equal(10, u2.number)
|
|
assert_equal(10, u1.number)
|
|
end
|
|
|
|
function test_cannot_give_unit()
|
|
local r = region.create(0, 0, "plain")
|
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
|
local f2 = faction.create("noreply@eressea.de", "human", "de")
|
|
local u1 = unit.create(f1, r, 10)
|
|
local u2 = unit.create(f2, r, 10)
|
|
u1.faction.age = 10
|
|
u2.faction.age = 10
|
|
u1:add_item("money", 500)
|
|
u2:add_item("money", 500)
|
|
u2:clear_orders()
|
|
u2:add_order("GIB ".. itoa36(u1.id) .. " EINHEIT")
|
|
u2:add_order("HELFE ".. itoa36(f1.id) .. " GIB")
|
|
u1:add_order("HELFE ".. itoa36(f2.id) .. " GIB")
|
|
process_orders()
|
|
assert_not_equal(u2.faction.id, u1.faction.id)
|
|
end
|
|
|
|
function test_guard_by_owners()
|
|
-- http://bugs.eressea.de/view.php?id=1756
|
|
local r = region.create(0,0, "mountain")
|
|
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
|
f1.age=20
|
|
local f2 = faction.create("noreply@eressea.de", "human", "de")
|
|
f2.age=20
|
|
local u1 = unit.create(f1, r, 1)
|
|
local b = building.create(r, "castle")
|
|
b.size = 10
|
|
u1.building = b
|
|
u1:add_item("money", 100)
|
|
|
|
local u2 = unit.create(f2, r, 1)
|
|
u2:add_item("money", 100)
|
|
u2:set_skill("mining", 3)
|
|
u2:clear_orders()
|
|
u2:add_order("MACHEN EISEN")
|
|
|
|
process_orders()
|
|
local iron = u2:get_item("iron")
|
|
process_orders()
|
|
assert_equal(iron, u2:get_item("iron"))
|
|
end
|
|
|
|
function test_market_action()
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local x, y, r
|
|
for x=0,2 do
|
|
for y=0,2 do
|
|
r = region.create(x, y, "plain")
|
|
r.luxury = "balm"
|
|
r.herb = "h2"
|
|
r:set_resource("peasant", 5000)
|
|
end
|
|
end
|
|
r = get_region(1, 1)
|
|
local u = unit.create(f, r, 1)
|
|
b = building.create(r, "market")
|
|
b.size = 10
|
|
u.building = b
|
|
update_owners()
|
|
for r in regions() do
|
|
market_action(r)
|
|
end
|
|
assert_equal(35, u:get_item("balm"))
|
|
assert_equal(70, u:get_item("h2"))
|
|
end
|
|
|
|
local function setup_packice(x, onfoot)
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local plain = region.create(0,0, "plain")
|
|
local ice = region.create(1,0, "packice")
|
|
local ocean = region.create(2,0, "ocean")
|
|
local u = unit.create(f, get_region(x, 0), 2)
|
|
if not onfoot then
|
|
local s = ship.create(u.region, "cutter")
|
|
u:set_skill("sailing", 3)
|
|
u.ship = s
|
|
end
|
|
u:add_item("money", 400)
|
|
|
|
return u
|
|
end
|
|
|
|
function test_no_sailing_through_packice()
|
|
local u = setup_packice(0)
|
|
u:clear_orders()
|
|
u:add_order("NACH O O")
|
|
process_orders()
|
|
assert_equal(0, u.region.x)
|
|
end
|
|
|
|
function test_can_sail_from_packice_to_ocean()
|
|
local u = setup_packice(1)
|
|
|
|
u:clear_orders()
|
|
u:add_order("NACH W")
|
|
process_orders()
|
|
assert_equal(1, u.region.x)
|
|
|
|
u:clear_orders()
|
|
u:add_order("NACH O")
|
|
process_orders()
|
|
assert_equal(2, u.region.x)
|
|
end
|
|
|
|
function test_can_sail_into_packice()
|
|
local u = setup_packice(2)
|
|
u:clear_orders()
|
|
u:add_order("NACH W W")
|
|
process_orders()
|
|
assert_equal(1, u.region.x)
|
|
end
|
|
|
|
function test_can_walk_into_packice()
|
|
local u = setup_packice(0, true)
|
|
u:clear_orders()
|
|
u:add_order("NACH O")
|
|
process_orders()
|
|
assert_equal(1, u.region.x)
|
|
end
|
|
|
|
function test_cannot_walk_into_ocean()
|
|
local u = setup_packice(1, true)
|
|
u:clear_orders()
|
|
u:add_order("NACH O")
|
|
process_orders()
|
|
assert_equal(1, u.region.x)
|
|
end
|
|
|
|
function test_p2()
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local r = region.create(0, 0, "plain")
|
|
local u = unit.create(f, r, 1)
|
|
r:set_resource("tree", 0)
|
|
u:clear_orders()
|
|
u:add_order("BENUTZE 'Wasser des Lebens'")
|
|
u:add_item("p2", 1)
|
|
u:add_item("log", 10)
|
|
u:add_item("mallorn", 10)
|
|
process_orders()
|
|
assert_equal(5, r:get_resource("tree"))
|
|
assert_equal(0, u:get_item("p2"))
|
|
assert_equal(15, u:get_item("log") + u:get_item("mallorn"))
|
|
end
|
|
|
|
function test_p2_move()
|
|
-- http://bugs.eressea.de/view.php?id=1855
|
|
local f = faction.create("noreply@eressea.de", "human", "de")
|
|
local r = region.create(0, 0, "plain")
|
|
region.create(1, 0, "plain")
|
|
local u = unit.create(f, r, 1)
|
|
r:set_resource("tree", 0)
|
|
u:clear_orders()
|
|
u:add_order("BENUTZE 'Wasser des Lebens'")
|
|
u:add_order("NACH OST")
|
|
u:add_item("horse", 1)
|
|
u:add_item("p2", 1)
|
|
u:add_item("log", 1)
|
|
u:add_item("mallorn", 1)
|
|
process_orders()
|
|
assert_equal(1, u.region.x)
|
|
assert_equal(1, r:get_resource("tree"))
|
|
end
|
|
|
|
function disabled_test_bug_1738_build_castle_e3()
|
|
local r = region.create(0, 0, "plain")
|
|
local f = faction.create("bug_1738@eressea.de", "human", "de")
|
|
|
|
local c = building.create(r, "castle")
|
|
c.size = 228
|
|
|
|
local u1 = unit.create(f, r, 1)
|
|
u1:set_skill("building", 5)
|
|
u1:add_item("stone", 10000)
|
|
|
|
local u2 = unit.create(f, r, 32)
|
|
u2:set_skill("building", 3)
|
|
u2:add_item("stone", 10000)
|
|
|
|
u1:clear_orders()
|
|
u1:add_order("MACHE BURG " .. itoa36(c.id))
|
|
-- castle now has size 229.
|
|
u2:clear_orders()
|
|
u2:add_order("MACHE BURG " .. itoa36(c.id))
|
|
-- 32 * 3 makes 96 skill points.
|
|
-- from size 229 to size 250 needs 21 * 3 = 63 points, rest 33.
|
|
-- 33/4 makes 8 points, resulting size is 258.
|
|
|
|
process_orders()
|
|
--[[
|
|
init_reports()
|
|
write_report(f)
|
|
]]--
|
|
-- resulting size should be 250 because unit 2
|
|
-- does not have the needed minimum skill.
|
|
assert_equal(c.size, 250)
|
|
end
|
|
|
|
function test_golem_use_four_iron()
|
|
local r0 = region.create(0, 0, "plain")
|
|
local f1 = faction.create("noreply@eressea.de", "dwarf", "de")
|
|
local u1 = unit.create(f1, r0, 3)
|
|
u1.race = "irongolem"
|
|
u1:set_skill("weaponsmithing", 1)
|
|
u1:set_skill("armorer", 1)
|
|
u1:clear_orders()
|
|
u1:add_order("Mache 4 Turmschild")
|
|
|
|
process_orders()
|
|
|
|
assert_equal(2, u1.number)
|
|
assert_equal(4, u1:get_item("towershield"))
|
|
end
|
|
|
|
function test_building_owner_can_enter_ship()
|
|
local r1 = region.create(1, 2, "plain")
|
|
local f1 = faction.create("noreply@tteessttiinngg.de", "human", "de")
|
|
local b1 = building.create(r1, "castle")
|
|
b1.size = 10
|
|
local s1 = ship.create(r1, "cutter")
|
|
|
|
local u1 = unit.create(f1, r1, 10)
|
|
u1.building = b1
|
|
u1:add_item("money", u1.number * 100)
|
|
u1:clear_orders()
|
|
u1:add_order("VERLASSEN")
|
|
u1:add_order("BETRETE SCHIFF " .. itoa36(s1.id))
|
|
|
|
local u2 = unit.create(f1, r1, 10)
|
|
u2.ship = s1
|
|
u2:add_item("money", u1.number * 100)
|
|
u2:clear_orders()
|
|
process_orders()
|
|
assert_equal(s1.id, u1.ship.id)
|
|
assert_not_equal(b1.id, u1.ship.id, "BUG owner of the building can not go into a ship")
|
|
end
|