sect.sct_item[I_MILIT] = ache;
if (sect.sct_own == sect.sct_oldown)
sect.sct_oldown = 0;
- makelost(EF_SECTOR, sect.sct_own, 0,
- sect.sct_x, sect.sct_y);
- makenotlost(EF_SECTOR, sect.sct_oldown, 0,
- sect.sct_x, sect.sct_y);
sect.sct_own = sect.sct_oldown;
sect.sct_off = 1; /* Turn the sector off */
putsect(§);
if (sp->sct_pstage == PLG_INFECT)
ship.shp_pstage = PLG_EXPOSED;
- makenotlost(EF_SHIP, ship.shp_own, ship.shp_uid,
- ship.shp_x, ship.shp_y);
putship(ship.shp_uid, &ship);
pr("%s", prship(&ship));
pr(" built in sector %s\n", xyas(sp->sct_x, sp->sct_y, player->cnum));
if (sp->sct_pstage == PLG_INFECT)
land.lnd_pstage = PLG_EXPOSED;
putland(nstr.cur, &land);
- makenotlost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
pr("%s", prland(&land));
pr(" built in sector %s\n", xyas(sp->sct_x, sp->sct_y, player->cnum));
return 1;
vec[I_OIL] -= np->n_oil;
vec[I_RAD] -= np->n_rad;
- makenotlost(EF_NUKE, nuke.nuk_own, nuke.nuk_uid,
- nuke.nuk_x, nuke.nuk_y);
putnuke(nuke.nuk_uid, &nuke);
pr("%s created in %s\n", prnuke(&nuke),
xyas(sp->sct_x, sp->sct_y, player->cnum));
vec[I_HCM] -= hcm;
vec[I_MILIT] -= mil;
- makenotlost(EF_PLANE, plane.pln_own, plane.pln_uid,
- plane.pln_x, plane.pln_y);
putplane(plane.pln_uid, &plane);
pr("%s built in sector %s\n", prplane(&plane),
xyas(sp->sct_x, sp->sct_y, player->cnum));
wu(0, to, "\t%s ceded to you by %s\n",
prplane(pp), cname(player->cnum));
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_own = to;
- makenotlost(EF_PLANE, pp->pln_own, pp->pln_uid,
- pp->pln_x, pp->pln_y);
pp->pln_mobil = 0;
pp->pln_mission = 0;
putplane(pp->pln_uid, pp);
wu(0, to, "\t%s ceded to you by %s\n",
prnuke(np), cname(player->cnum));
- makelost(EF_NUKE, np->nuk_own, np->nuk_uid, np->nuk_x, np->nuk_y);
np->nuk_own = to;
- makenotlost(EF_NUKE, np->nuk_own, np->nuk_uid,
- np->nuk_x, np->nuk_y);
putnuke(ni.cur, np);
}
wu(0, to, "\t%s ceded to you by %s\n",
prland(lp), cname(player->cnum));
- makelost(EF_LAND, lp->lnd_own, lp->lnd_uid, lp->lnd_x, lp->lnd_y);
- makenotlost(EF_LAND, to, lp->lnd_uid, lp->lnd_x, lp->lnd_y);
lp->lnd_own = to;
lp->lnd_mobil = 0;
lp->lnd_mission = 0;
sp->sct_dist_x = sp->sct_x;
sp->sct_dist_y = sp->sct_y;
- makelost(EF_SECTOR, sp->sct_own, 0, sp->sct_x, sp->sct_y);
- makenotlost(EF_SECTOR, to, 0, sp->sct_x, sp->sct_y);
if (sp->sct_oldown == sp->sct_own)
sp->sct_oldown = to;
sp->sct_own = to;
wu(0, to, "\t%s ceded to you by %s\n",
prplane(pp), cname(player->cnum));
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_own = to;
- makenotlost(EF_PLANE, pp->pln_own, pp->pln_uid,
- pp->pln_x, pp->pln_y);
pp->pln_mobil = 0;
pp->pln_mission = 0;
putplane(pp->pln_uid, pp);
wu(0, to, "\t%s ceded to you by %s\n",
prland(lp), cname(player->cnum));
- makelost(EF_LAND, lp->lnd_own, lp->lnd_uid, lp->lnd_x, lp->lnd_y);
- makenotlost(EF_LAND, to, lp->lnd_uid, lp->lnd_x, lp->lnd_y);
lp->lnd_own = to;
lp->lnd_mobil = 0;
lp->lnd_mission = 0;
putland(ni.cur, lp);
}
- makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);
sp->shp_own = to;
- makenotlost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);
}
* Used to call takeover() here a long time ago, but that does
* unwanted things, like generate che.
*/
- makelost(EF_SECTOR, sect.sct_own, 0, sect.sct_x, sect.sct_y);
- makenotlost(EF_SECTOR, player->cnum, 0, sect.sct_x, sect.sct_y);
sect.sct_own = player->cnum;
memset(sect.sct_dist, 0, sizeof(sect.sct_dist));
xyas(sect->sct_x, sect->sct_y, player->cnum),
cname(sect->sct_own), sect->sct_own, cname(newown), newown);
if (sect->sct_own) {
- makelost(EF_SECTOR, sect->sct_own, 0,
- sect->sct_x, sect->sct_y);
wu(player->cnum, sect->sct_own,
"Sector %s lost to deity intervention\n",
xyas(sect->sct_x, sect->sct_y, sect->sct_own));
benefit(sect->sct_own, 0);
sect->sct_own = newown;
if (newown) {
- makenotlost(EF_SECTOR, newown, 0, sect->sct_x, sect->sct_y);
wu(player->cnum, newown,
"Sector %s gained from deity intervention\n",
xyas(sect->sct_x, sect->sct_y, sect->sct_own));
if (arg && arg < MAXNOC) {
wu(player->cnum, (natid)arg,
"%s given to you by deity intervention!\n", prship(ship));
- makelost(EF_SHIP, ship->shp_own, ship->shp_uid,
- ship->shp_x, ship->shp_y);
ship->shp_own = (natid)arg;
- makenotlost(EF_SHIP, ship->shp_own, ship->shp_uid,
- ship->shp_x, ship->shp_y);
} else if (!arg)
ship->shp_effic = 0;
break;
if (arg && arg < MAXNOC) {
wu(player->cnum, (natid)arg,
"%s given to you by deity intervention!\n", prland(land));
- makelost(EF_LAND, land->lnd_own, land->lnd_uid,
- land->lnd_x, land->lnd_y);
land->lnd_own = (natid)arg;
- makenotlost(EF_LAND, land->lnd_own, land->lnd_uid,
- land->lnd_x, land->lnd_y);
} else if (!arg)
land->lnd_effic = 0;
break;
"%s taken from you by deity intervention!\n",
prplane(plane));
if (arg && arg < MAXNOC) {
- makelost(EF_PLANE, plane->pln_own, plane->pln_uid,
- plane->pln_x, plane->pln_y);
plane->pln_own = (natid)arg;
- makenotlost(EF_PLANE, plane->pln_own, plane->pln_uid,
- plane->pln_x, plane->pln_y);
wu(player->cnum, plane->pln_own,
"%s given to you by deity intervention!\n", prplane(plane));
} else if (!arg)
if (giver != givee)
wu(0, givee, "%s %s %s\n", cname(giver), obj_nameof(gen), mesg);
-
- makelost(gen->ef_type, gen->own, gen->uid, gen->x, gen->y);
gen->own = givee;
- makenotlost(gen->ef_type, gen->own, gen->uid, gen->x, gen->y);
}
static int
"%s given to you by %s\n", prplane(&plane),
cname(player->cnum));
}
- makelost(EF_PLANE, plane.pln_own, plane.pln_uid,
- plane.pln_x, plane.pln_y);
plane.pln_own = sect2.sct_own;
- makenotlost(EF_PLANE, plane.pln_own, plane.pln_uid,
- plane.pln_x, plane.pln_y);
putplane(plane.pln_uid, &plane);
}
}
"%s given to you by %s\n", prland(&land),
cname(player->cnum));
}
- makelost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
land.lnd_own = sect2.sct_own;
- makenotlost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
putland(land.lnd_uid, &land);
}
}
"%s given to you by %s\n", prland(&land),
cname(player->cnum));
}
- makelost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
land.lnd_own = sect2.sct_own;
- makenotlost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
putland(land.lnd_uid, &land);
}
}
"%s given to you by %s\n", prplane(&plane),
cname(player->cnum));
}
- makelost(EF_PLANE, plane.pln_own, plane.pln_uid,
- plane.pln_x, plane.pln_y);
plane.pln_own = sect2.sct_own;
- makenotlost(EF_PLANE, plane.pln_own, plane.pln_uid,
- plane.pln_x, plane.pln_y);
putplane(plane.pln_uid, &plane);
}
}
wu(player->cnum, amt,
"Sector %s gained from deity intervention\n",
xyas(sect.sct_x, sect.sct_y, amt));
- makelost(EF_SECTOR, sect.sct_own, 0,
- sect.sct_x, sect.sct_y);
- makenotlost(EF_SECTOR, amt, 0, sect.sct_x, sect.sct_y);
sect.sct_own = (natid)amt;
putsect(§);
}
case EF_NUKE:
tg.nuke.nuk_x = trade.trd_x;
tg.nuke.nuk_y = trade.trd_y;
- makelost(EF_NUKE, tg.nuke.nuk_own, tg.nuke.nuk_uid,
- tg.nuke.nuk_x, tg.nuke.nuk_y);
tg.nuke.nuk_own = trade.trd_maxbidder;
- makenotlost(EF_NUKE, tg.nuke.nuk_own, tg.nuke.nuk_uid,
- tg.nuke.nuk_x, tg.nuke.nuk_y);
break;
case EF_PLANE:
if (!pln_is_in_orbit(&tg.plane)) {
tg.plane.pln_x = trade.trd_x;
tg.plane.pln_y = trade.trd_y;
}
- makelost(EF_PLANE, tg.plane.pln_own, tg.plane.pln_uid,
- tg.plane.pln_x, tg.plane.pln_y);
tg.plane.pln_own = trade.trd_maxbidder;
- makenotlost(EF_PLANE, tg.plane.pln_own, tg.plane.pln_uid,
- tg.plane.pln_x, tg.plane.pln_y);
tg.plane.pln_wing = 0;
/* no cheap version of fly */
if (opt_MOB_ACCESS) {
ship.shp_nland--;
putship(ship.shp_uid, &ship);
}
- makelost(EF_LAND, tg.land.lnd_own, tg.land.lnd_uid,
- tg.land.lnd_x, tg.land.lnd_y);
tg.land.lnd_own = trade.trd_maxbidder;
- makenotlost(EF_LAND, tg.land.lnd_own, tg.land.lnd_uid,
- tg.land.lnd_x, tg.land.lnd_y);
tg.land.lnd_army = 0;
/* no cheap version of fly */
if (opt_MOB_ACCESS) {
sect.sct_mobil = (short)(com->mob - com->mobcost);
}
}
- makelost(EF_SECTOR, sect.sct_own, 0, sect.sct_x, sect.sct_y);
- makenotlost(EF_SECTOR, com->own, 0, sect.sct_x, sect.sct_y);
sect.sct_own = com->own;
if (com->plague) {
if (sect.sct_pstage == PLG_HEALTHY)
else
land.lnd_mobil = (signed char)(com->mob - com->mobcost);
}
- makelost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
land.lnd_own = com->own;
- makenotlost(EF_LAND, land.lnd_own, land.lnd_uid,
- land.lnd_x, land.lnd_y);
if (com->plague) {
if (land.lnd_pstage == PLG_HEALTHY)
land.lnd_pstage = PLG_EXPOSED;
else
ship.shp_mobil = (signed char)(com->mob - com->mobcost);
}
- makelost(EF_SHIP, ship.shp_own, ship.shp_uid,
- ship.shp_x, ship.shp_y);
ship.shp_own = com->own;
- makenotlost(EF_SHIP, ship.shp_own, ship.shp_uid,
- ship.shp_x, ship.shp_y);
if (com->plague) {
if (ship.shp_pstage == PLG_HEALTHY)
ship.shp_pstage = PLG_EXPOSED;
xyas(sp->sct_x, sp->sct_y, sp->sct_own));
sp->sct_type = SCT_WATER;
sp->sct_newtype = SCT_WATER;
- makelost(EF_SECTOR, sp->sct_own, 0, sp->sct_x, sp->sct_y);
sp->sct_own = 0;
sp->sct_oldown = 0;
sp->sct_mobil = 0;
sect.sct_fallout = MIN(fallout, FALLOUT_MAX);
}
if (damage > 100) {
- makelost(EF_SECTOR, sect.sct_own, 0, sect.sct_x, sect.sct_y);
sect.sct_oldown = 0;
sect.sct_own = 0;
if (type == SCT_WATER || type == SCT_BSPAN ||
void
lnd_prewrite(int n, void *old, void *new)
{
+ struct lndstr *oldlp = old;
struct lndstr *llp = new;
+ natid own = llp->lnd_own;
struct lndstr *lp;
struct plnstr *pp;
int i;
if (llp->lnd_own && llp->lnd_effic < LAND_MINEFF) {
- makelost(EF_LAND, llp->lnd_own, llp->lnd_uid,
- llp->lnd_x, llp->lnd_y);
- llp->lnd_own = 0;
+ own = 0;
for (i = 0; NULL != (lp = getlandp(i)); i++) {
if (lp->lnd_own && lp->lnd_land == n) {
item_prewrite(llp->lnd_item);
}
+ /* We've avoided assigning to llp->lnd_own, in case oldsp == sp */
+ if (oldlp->lnd_own != own) {
+ if (oldlp->lnd_own)
+ makelost(EF_LAND, oldlp->lnd_own,
+ llp->lnd_uid, llp->lnd_x, llp->lnd_y);
+ if (own)
+ makenotlost(EF_LAND, own,
+ llp->lnd_uid, llp->lnd_x, llp->lnd_y);
+ }
+
+ llp->lnd_own = own;
}
char *
void
nuk_prewrite(int n, void *old, void *new)
{
+ struct nukstr *oldnp = old;
struct nukstr *np = new;
+ natid own = np->nuk_own;
- if (np->nuk_effic == 0) {
- if (np->nuk_own)
- makelost(EF_NUKE, np->nuk_own, np->nuk_uid,
- np->nuk_x, np->nuk_y);
- np->nuk_own = 0;
- np->nuk_effic = 0;
+ if (np->nuk_effic == 0)
+ own = 0;
+
+ /* We've avoided assigning to np->nuk_own, in case oldsp == sp */
+ if (oldnp->nuk_own != own) {
+ if (oldnp->nuk_own)
+ makelost(EF_NUKE, oldnp->nuk_own,
+ np->nuk_uid, np->nuk_x, np->nuk_y);
+ if (own)
+ makenotlost(EF_NUKE, own,
+ np->nuk_uid, np->nuk_x, np->nuk_y);
}
+
+ np->nuk_own = own;
}
int
void
pln_prewrite(int n, void *old, void *new)
{
+ struct plnstr *oldpp = old;
struct plnstr *pp = new;
+ natid own = pp->pln_own;
struct nukstr *np;
int i;
if (pp->pln_effic < PLANE_MINEFF) {
- if (pp->pln_own)
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid,
- pp->pln_x, pp->pln_y);
- pp->pln_own = 0;
+ own = 0;
pp->pln_effic = 0;
for (i = 0; NULL != (np = getnukep(i)); i++) {
if (np->nuk_own && np->nuk_plane == n) {
}
}
}
+
+ /* We've avoided assigning to pp->pln_own, in case oldsp == sp */
+ if (oldpp->pln_own != own) {
+ if (oldpp->pln_own)
+ makelost(EF_PLANE, oldpp->pln_own,
+ pp->pln_uid, pp->pln_x, pp->pln_y);
+ if (own)
+ makenotlost(EF_PLANE, own,
+ pp->pln_uid, pp->pln_x, pp->pln_y);
+ }
+
+ pp->pln_own = own;
}
char *
void
sct_prewrite(int id, void *old, void *new)
{
+ struct sctstr *oldsp = old;
struct sctstr *sp = new;
int mil, civs;
natid own;
mil = sp->sct_item[I_MILIT];
civs = sp->sct_item[I_CIVIL];
+ own = sp->sct_own;
- if (sp->sct_own != 0 && !civs) {
+ if (own && !civs) {
sp->sct_work = 100;
- sp->sct_oldown = sp->sct_own;
+ sp->sct_oldown = own;
}
- if (sp->sct_own && !civs && !mil
- && !has_units(sp->sct_x, sp->sct_y, sp->sct_own, NULL)
+ if (own && !civs && !mil && !has_units(sp->sct_x, sp->sct_y, own, NULL)
&& !(sp->sct_flags & MOVE_IN_PROGRESS)) {
/* more cruft! */
- own = sp->sct_own;
- makelost(EF_SECTOR, sp->sct_own, 0, sp->sct_x, sp->sct_y);
- sp->sct_own = 0;
+ own = 0;
sp->sct_mobil = 0;
if (sp->sct_type == SCT_CAPIT || sp->sct_type == SCT_MOUNT)
caploss(sp, own, "");
}
+
+ /* We've avoided assigning to sp->sct_own, in case oldsp == sp */
+ if (oldsp->sct_own != own) {
+ if (oldsp->sct_own)
+ makelost(EF_SECTOR, oldsp->sct_own,
+ 0, sp->sct_x, sp->sct_y);
+ if (own)
+ makenotlost(EF_SECTOR, own,
+ 0, sp->sct_x, sp->sct_y);
+ }
+
+ sp->sct_own = own;
}
void
void
shp_prewrite(int n, void *old, void *new)
{
+ struct shpstr *oldsp = old;
struct shpstr *sp = new;
+ natid own = sp->shp_own;
struct lndstr *lp;
struct plnstr *pp;
int i;
- if (sp->shp_own != 0 && sp->shp_effic < SHIP_MINEFF) {
- mpr(sp->shp_own, "\t%s sunk!\n", prship(sp));
- makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);
- sp->shp_own = 0;
+ if (own && sp->shp_effic < SHIP_MINEFF) {
+ mpr(own, "\t%s sunk!\n", prship(sp));
+ own = 0;
for (i = 0; NULL != (lp = getlandp(i)); i++) {
if (lp->lnd_own && lp->lnd_ship == n) {
} else {
item_prewrite(sp->shp_item);
}
+
+ /* We've avoided assigning to sp->shp_own, in case oldsp == sp */
+ if (oldsp->shp_own != own) {
+ if (oldsp->shp_own)
+ makelost(EF_SHIP, oldsp->shp_own,
+ sp->shp_uid, sp->shp_x, sp->shp_y);
+ if (own)
+ makenotlost(EF_SHIP, own,
+ sp->shp_uid, sp->shp_x, sp->shp_y);
+ }
+
+ sp->shp_own = own;
}
char *
*/
sp->sct_loyal = 50;
}
- makelost(EF_SECTOR, sp->sct_own, 0, sp->sct_x, sp->sct_y);
- makenotlost(EF_SECTOR, newown, 0, sp->sct_x, sp->sct_y);
sp->sct_own = newown;
if (opt_MOB_ACCESS) {
game_tick_to_now(&sp->sct_access);
trdswitchown(EF_PLANE, pp, newown);
if (pp->pln_mobil > 0)
pp->pln_mobil = 0;
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_own = newown;
- makenotlost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_mission = 0;
pp->pln_wing = 0;
putplane(pp->pln_uid, pp);
if (opt_MARKET)
trdswitchown(EF_SHIP, sp, newown);
- makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);
sp->shp_own = newown;
- makenotlost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);
sp->shp_mission = 0;
sp->shp_fleet = 0;
sp->shp_rflags = 0;
if (opt_MARKET)
trdswitchown(EF_PLANE, pp, newown);
pp->pln_mission = 0;
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_own = newown;
- makenotlost(EF_PLANE, pp->pln_own, pp->pln_uid,
- pp->pln_x, pp->pln_y);
putplane(pp->pln_uid, pp);
}
/* Take over land units */
if (opt_MARKET)
trdswitchown(EF_LAND, landp, newown);
landp->lnd_mission = 0;
- makelost(EF_LAND, landp->lnd_own, landp->lnd_uid,
- landp->lnd_x, landp->lnd_y);
landp->lnd_own = newown;
- makenotlost(EF_LAND, landp->lnd_own, landp->lnd_uid,
- landp->lnd_x, landp->lnd_y);
pp = &p;
lp = &llp;
/* Take over planes */
if (opt_MARKET)
trdswitchown(EF_PLANE, pp, newown);
pp->pln_mission = 0;
- makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y);
pp->pln_own = newown;
- makenotlost(EF_PLANE, pp->pln_own, pp->pln_uid,
- pp->pln_x, pp->pln_y);
putplane(pp->pln_uid, pp);
}
/* Take over land units */
/* che won, and sector converts. */
if (sp->sct_own == sp->sct_oldown)
sp->sct_oldown = 0;
- else
+ else {
+ makelost(EF_SECTOR, sp->sct_own,
+ 0, sp->sct_x, sp->sct_y);
+ makenotlost(EF_SECTOR, sp->sct_oldown,
+ 0, sp->sct_x, sp->sct_y);
takeover(sp, sp->sct_oldown);
+ }
sp->sct_mobil = oldmob;
civ += uw;
uw = 0;