disaster_cmd.c
changeset 4845 72bbb6e2694e
parent 4559 aa0c13e39840
equal deleted inserted replaced
4844:10fde6a49e04 4845:72bbb6e2694e
    26 {
    26 {
    27 	if (!EnsureNoVehicle(tile)) return;
    27 	if (!EnsureNoVehicle(tile)) return;
    28 
    28 
    29 	switch (GetTileType(tile)) {
    29 	switch (GetTileType(tile)) {
    30 		case MP_RAILWAY:
    30 		case MP_RAILWAY:
    31 			if (IS_HUMAN_PLAYER(GetTileOwner(tile)) && !IsRailWaypoint(tile)) {
    31 			if (IsHumanPlayer(GetTileOwner(tile)) && !IsRailWaypoint(tile)) {
    32 				PlayerID p = _current_player;
    32 				PlayerID p = _current_player;
    33 				_current_player = OWNER_WATER;
    33 				_current_player = OWNER_WATER;
    34 				DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
    34 				DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
    35 				_current_player = p;
    35 				_current_player = p;
    36 			}
    36 			}
   186 			tile = v->tile; /**/
   186 			tile = v->tile; /**/
   187 
   187 
   188 			if (IsValidTile(tile) &&
   188 			if (IsValidTile(tile) &&
   189 					IsTileType(tile, MP_STATION) &&
   189 					IsTileType(tile, MP_STATION) &&
   190 					IsAirport(tile) &&
   190 					IsAirport(tile) &&
   191 					IS_HUMAN_PLAYER(GetTileOwner(tile))) {
   191 					IsHumanPlayer(GetTileOwner(tile))) {
   192 				v->current_order.dest = 1;
   192 				v->current_order.dest = 1;
   193 				v->age = 0;
   193 				v->age = 0;
   194 
   194 
   195 				SetDParam(0, GetStationIndex(tile));
   195 				SetDParam(0, GetStationIndex(tile));
   196 				AddNewsItem(STR_B000_ZEPPELIN_DISASTER_AT,
   196 				AddNewsItem(STR_B000_ZEPPELIN_DISASTER_AT,
   211 		tile = v->tile; /**/
   211 		tile = v->tile; /**/
   212 
   212 
   213 		if (IsValidTile(tile) &&
   213 		if (IsValidTile(tile) &&
   214 				IsTileType(tile, MP_STATION) &&
   214 				IsTileType(tile, MP_STATION) &&
   215 				IsAirport(tile) &&
   215 				IsAirport(tile) &&
   216 				IS_HUMAN_PLAYER(GetTileOwner(tile))) {
   216 				IsHumanPlayer(GetTileOwner(tile))) {
   217 			st = GetStationByTile(tile);
   217 			st = GetStationByTile(tile);
   218 			CLRBITS(st->airport_flags, RUNWAY_IN_block);
   218 			CLRBITS(st->airport_flags, RUNWAY_IN_block);
   219 		}
   219 		}
   220 
   220 
   221 		SetDisasterVehiclePos(v, v->x_pos, v->y_pos, v->z_pos);
   221 		SetDisasterVehiclePos(v, v->x_pos, v->y_pos, v->z_pos);
   253 
   253 
   254 	tile = v->tile;/**/
   254 	tile = v->tile;/**/
   255 	if (IsValidTile(tile) &&
   255 	if (IsValidTile(tile) &&
   256 			IsTileType(tile, MP_STATION) &&
   256 			IsTileType(tile, MP_STATION) &&
   257 			IsAirport(tile) &&
   257 			IsAirport(tile) &&
   258 			IS_HUMAN_PLAYER(GetTileOwner(tile))) {
   258 			IsHumanPlayer(GetTileOwner(tile))) {
   259 		st = GetStationByTile(tile);
   259 		st = GetStationByTile(tile);
   260 		SETBITS(st->airport_flags, RUNWAY_IN_block);
   260 		SETBITS(st->airport_flags, RUNWAY_IN_block);
   261 	}
   261 	}
   262 }
   262 }
   263 
   263 
   287 			return;
   287 			return;
   288 		}
   288 		}
   289 		v->current_order.dest = 1;
   289 		v->current_order.dest = 1;
   290 
   290 
   291 		FOR_ALL_VEHICLES(u) {
   291 		FOR_ALL_VEHICLES(u) {
   292 			if (u->type == VEH_Road && IS_HUMAN_PLAYER(u->owner)) {
   292 			if (u->type == VEH_Road && IsHumanPlayer(u->owner)) {
   293 				v->dest_tile = u->index;
   293 				v->dest_tile = u->index;
   294 				v->age = 0;
   294 				v->age = 0;
   295 				return;
   295 				return;
   296 			}
   296 			}
   297 		}
   297 		}
   593 
   593 
   594 		tile_org = tile = RandomTile();
   594 		tile_org = tile = RandomTile();
   595 		do {
   595 		do {
   596 			if (IsTileType(tile, MP_RAILWAY) &&
   596 			if (IsTileType(tile, MP_RAILWAY) &&
   597 					IsPlainRailTile(tile) &&
   597 					IsPlainRailTile(tile) &&
   598 					IS_HUMAN_PLAYER(GetTileOwner(tile))) {
   598 					IsHumanPlayer(GetTileOwner(tile))) {
   599 				break;
   599 				break;
   600 			}
   600 			}
   601 			tile = TILE_MASK(tile+1);
   601 			tile = TILE_MASK(tile+1);
   602 		} while (tile != tile_org);
   602 		} while (tile != tile_org);
   603 		v->dest_tile = tile;
   603 		v->dest_tile = tile;
   724 	x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2;
   724 	x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2;
   725 
   725 
   726 	FOR_ALL_STATIONS(st) {
   726 	FOR_ALL_STATIONS(st) {
   727 		if (st->airport_tile != 0 &&
   727 		if (st->airport_tile != 0 &&
   728 				st->airport_type <= 1 &&
   728 				st->airport_type <= 1 &&
   729 				IS_HUMAN_PLAYER(st->owner)) {
   729 				IsHumanPlayer(st->owner)) {
   730 			x = (TileX(st->xy) + 2) * TILE_SIZE;
   730 			x = (TileX(st->xy) + 2) * TILE_SIZE;
   731 			break;
   731 			break;
   732 		}
   732 		}
   733 	}
   733 	}
   734 
   734