small fixes (morale < 0)

This commit is contained in:
Enno Rehling 2009-10-17 10:12:58 +00:00
parent 79c4ea0efe
commit 090c6665f0
5 changed files with 16 additions and 7 deletions

View File

@ -646,7 +646,8 @@ give_control(unit * u, unit * u2)
int morale = region_get_morale(r); int morale = region_get_morale(r);
region_set_owner(r, u2->faction, turn); region_set_owner(r, u2->faction, turn);
if (morale>0) { if (morale>0) {
region_set_morale(r, morale-MORALE_TRANSFER, turn); morale = MAX(0, morale-MORALE_TRANSFER);
region_set_morale(r, morale, turn);
} }
} }
} }

View File

@ -1532,7 +1532,11 @@ region_getname(const region * r) {
int region_get_morale(const region * r) int region_get_morale(const region * r)
{ {
return r->land?r->land->morale:-1; if (r->land) {
assert(r->land->morale>=0 && r->land->morale<=MORALE_MAX);
return r->land->morale;
}
return -1;
} }
void region_set_morale(region * r, int morale, int turn) void region_set_morale(region * r, int morale, int turn)
@ -1542,6 +1546,7 @@ void region_set_morale(region * r, int morale, int turn)
if (turn>=0 && r->land->ownership) { if (turn>=0 && r->land->ownership) {
r->land->ownership->morale_turn = turn; r->land->ownership->morale_turn = turn;
} }
assert(r->land->morale>=0 && r->land->morale<=MORALE_MAX);
} }
} }

View File

@ -1062,6 +1062,7 @@ readregion(struct storage * store, int x, int y)
} }
if (store->version>=REGIONOWNER_VERSION) { if (store->version>=REGIONOWNER_VERSION) {
r->land->morale = (short)store->r_int(store); r->land->morale = (short)store->r_int(store);
if (r->land->morale<0) r->land->morale = 0;
read_owner(store, &r->land->ownership); read_owner(store, &r->land->ownership);
if (r->land->ownership && r->land->ownership->owner) { if (r->land->ownership && r->land->ownership->owner) {
faction * owner = r->land->ownership->owner; faction * owner = r->land->ownership->owner;

View File

@ -7,7 +7,7 @@ function mark_multi(f)
if u.building~=nil then if u.building~=nil then
local found = False local found = False
for u2 in u.region.units do for u2 in u.region.units do
if u2.faction~=u.faction then if u2.faction.id~=u.faction.id then
found = true found = true
break break
end end

View File

@ -3,6 +3,7 @@ local locales = { "de", "en" }
local confirmed_multis = { local confirmed_multis = {
} }
local suspected_multis = { local suspected_multis = {
"odin"
} }
function num_oceans(r) function num_oceans(r)
@ -72,10 +73,11 @@ function kill_multis(multis)
end end
function mark_multis(multis) function mark_multis(multis)
if multi~=nil and multis~=nil then if multis~=nil then
for idx, fno in ipairs(multis) do for idx, fno in ipairs(multis) do
local f = get_faction(fno) local f = get_faction(fno)
if f~=nil and f.email~="doppelspieler@eressea.de" then if f~=nil and f.email~="doppelspieler@eressea.de" then
print("* multi-player " .. tostring(f))
mark_multi(f) mark_multi(f)
end end
end end
@ -147,7 +149,7 @@ end
function process(orders) function process(orders)
-- initialize starting equipment for new players -- initialize starting equipment for new players
print(orders)
if open_game(get_turn())~=0 then if open_game(get_turn())~=0 then
print("could not read game") print("could not read game")
return -1 return -1
@ -156,6 +158,8 @@ function process(orders)
-- kill multi-players (external script) -- kill multi-players (external script)
-- loadscript("eressea/multis.lua") -- loadscript("eressea/multis.lua")
kill_multis(confirmed_multis)
mark_multis(suspected_multis)
-- run the turn: -- run the turn:
if read_orders(orders) ~= 0 then if read_orders(orders) ~= 0 then
@ -163,7 +167,6 @@ function process(orders)
return -1 return -1
end end
kill_multis(confirmed_multis)
-- plan_monsters() -- plan_monsters()
local mon = get_faction(666) local mon = get_faction(666)
if mon ~= nil then if mon ~= nil then
@ -192,7 +195,6 @@ function process(orders)
-- spawn_ents() -- spawn_ents()
kill_nonstarters() kill_nonstarters()
mark_multis(suspected_multis)
-- post-turn updates: -- post-turn updates:
update_guards() update_guards()
update_scores() update_scores()