POGO can navigate dead ships, and march dead land units. The ghosts
even get sighted and interdicted, and can hit mines (landmines only
until commit
fe372539, v4.3.27). Noted for ships in commit
9100af0b.
Has always been broken. Fix by making shp_sel() and lnd_sel()
explicitly reject ghosts.
Same code pattern also exists in pln_sel, but dead plains fail the
efficiency test, so it's harmless there. Apply the same fix anyway.
* but much of the code assumes that only the land unit's
* owner can march it.
*/
* but much of the code assumes that only the land unit's
* owner can march it.
*/
- if (land.lnd_own != player->cnum)
+ if (!land.lnd_own || land.lnd_own != player->cnum)
continue;
if (opt_MARKET) {
if (ontradingblock(EF_LAND, &land)) {
continue;
if (opt_MARKET) {
if (ontradingblock(EF_LAND, &land)) {
* much of the code assumes that only the plane's owner can
* fly it.
*/
* much of the code assumes that only the plane's owner can
* fly it.
*/
- if (plane.pln_own != player->cnum)
+ if (!plane.pln_own || plane.pln_own != player->cnum)
continue;
if (plane.pln_mobil <= 0)
continue;
continue;
if (plane.pln_mobil <= 0)
continue;
* much of the code assumes that only the ship's owner can
* navigate it.
*/
* much of the code assumes that only the ship's owner can
* navigate it.
*/
- if (ship.shp_own != player->cnum)
+ if (!ship.shp_own || ship.shp_own != player->cnum)
continue;
mcp = &mchr[(int)ship.shp_type];
if (opt_MARKET) {
continue;
mcp = &mchr[(int)ship.shp_type];
if (opt_MARKET) {