bug 2221: buildings cannot exceed maxsize.

* enable the allies.lua tests
This commit is contained in:
Enno Rehling 2020-01-26 00:34:31 +01:00
parent b88f9e8610
commit 42e17f3ba9
4 changed files with 28 additions and 19 deletions

View File

@ -5519,7 +5519,7 @@ msgstr "aquarians"
msgctxt "iteminfo"
msgid "fairyboot"
msgstr "These leather boots are embroidere with unicorn hair and allow their wearer to walk at twice his normal speed."
msgstr "These leather boots are embroidered with unicorn hair and allow their wearer to walk at twice his normal speed."
msgctxt "spell"
msgid "skillmod"

View File

@ -29,6 +29,25 @@ function test_castle_names()
assert_equal("citadel", b:get_typename(6250))
end
function test_build_tunnel_limited()
-- bug 2221
local r = region.create(0, 0, "plain")
local b = building.create(r, "tunnel")
local f = faction.create('human')
local u = unit.create(f, r, 2)
u:set_skill('building', 6, true)
u:add_item('stone', 22)
u:add_item('log', 10)
u:add_item('iron', 2)
u:add_item('money', 700)
u.building = b
u.name = 'Xolgrim'
u:add_order('MACHE 2 BURG ' .. itoa36(b.id))
b.size = 99
process_orders()
assert_equal(100, b.size)
end
function test_build_castle_one_stage()
local r = region.create(0, 0, 'plain')
local f = faction.create('human')

View File

@ -1,3 +1,6 @@
require 'tests.e2.buildings'
require 'tests.e2.allies'
require 'tests.e2.quit'
require 'tests.e2.movement'
require 'tests.e2.carts'
require 'tests.e2.quit'
@ -5,7 +8,6 @@ require 'tests.e2.astral'
require 'tests.e2.spells'
require 'tests.e2.e2features'
require 'tests.e2.insects'
require 'tests.e2.buildings'
require 'tests.e2.production'
require 'tests.e2.adamantium'
require 'tests.e2.undead'

View File

@ -810,25 +810,13 @@ build_building(unit * u, const building_type * btype, int id, int want, order *
}
built = b->size;
}
if (n <= 0 || n == INT_MAX) {
if (b == NULL) {
if (btype->maxsize > 0) {
n = btype->maxsize - built;
}
else {
n = INT_MAX;
}
}
else {
if (b->type->maxsize > 0) {
n = b->type->maxsize - built;
}
else {
n = INT_MAX;
}
}
}
if (btype->maxsize > 0) {
int remain = btype->maxsize - built;
if (remain < n) {
n = remain;
}
}
built = build_stages(u, btype, built, n, basesk, &skills);
if (built < 0) {