diff --git a/src/lib/subs/sect.c b/src/lib/subs/sect.c index cae10971..1effb104 100644 --- a/src/lib/subs/sect.c +++ b/src/lib/subs/sect.c @@ -65,7 +65,7 @@ sct_prewrite(int id, void *old, void *new) struct sctstr *oldsp = old; struct sctstr *sp = new; int mil, civs; - natid own; + natid own, prev_own; bridge_damaged(sp); item_prewrite(sp->sct_item); @@ -73,6 +73,7 @@ sct_prewrite(int id, void *old, void *new) mil = sp->sct_item[I_MILIT]; civs = sp->sct_item[I_CIVIL]; own = sp->sct_own; + prev_own = oldsp->sct_own; if (own && !civs) { sp->sct_work = 100; @@ -82,18 +83,15 @@ sct_prewrite(int id, void *old, void *new) if (own && !civs && !mil && !has_units(sp->sct_x, sp->sct_y, own, NULL) && !(sp->sct_flags & MOVE_IN_PROGRESS)) { /* more cruft! */ - own = 0; + own = sp->sct_own = 0; sp->sct_mobil = 0; if (sp->sct_type == SCT_CAPIT || sp->sct_type == SCT_MOUNT) - caploss(sp, own, ""); + caploss(sp, prev_own, ""); } - /* We've avoided assigning to sp->sct_own, in case oldsp == sp */ - if (oldsp->sct_own != own) - lost_and_found(EF_SECTOR, oldsp->sct_own, own, + if (prev_own != own) + lost_and_found(EF_SECTOR, prev_own, own, 0, sp->sct_x, sp->sct_y); - - sp->sct_own = own; } void