File diff r540:14f3c0eda6cb → r541:062eeec7f0a4
train_cmd.c
Show inline comments
 
@@ -1240,13 +1240,18 @@ static void HandleLocomotiveSmokeCloud(V
 
	} while ( (v = v->next) != NULL );
 

	
 
}
 

	
 
static void TrainPlayLeaveStationSound(Vehicle *v)
 
{
 
	static const byte sfx[3] = { 0x2, 0x8, 0x8 };
 
	static const SoundFx sfx[] = {
 
		SND_04_TRAIN,
 
		SND_0A_TRAIN_HORN,
 
		SND_0A_TRAIN_HORN
 
	};
 

	
 
	int engtype = v->engine_type;
 

	
 
	switch (_engines[engtype].railtype) {
 
		case 0:
 
			SndPlayVehicleFx(sfx[RailVehInfo(engtype)->engclass], v);
 
			break;
 
@@ -2004,13 +2009,13 @@ static void CheckTrainCollision(Vehicle 
 
	AddNewsItem(STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL,
 
		NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
 
		v->index,
 
		0);
 

	
 
	ModifyStationRatingAround(v->tile, v->owner, -160, 30);
 
	SndPlayVehicleFx(17, v);
 
	SndPlayVehicleFx(SND_13_BIG_CRASH, v);
 
}
 

	
 
static void *CheckVehicleAtSignal(Vehicle *v, void *data)
 
{
 
	uint32 d = (uint32)data;
 

	
 
@@ -2317,13 +2322,14 @@ static void HandleBrokenTrain(Vehicle *v
 
		if (v->breakdowns_since_last_service != 255)
 
			v->breakdowns_since_last_service++;
 

	
 
		InvalidateWindow(WC_VEHICLE_VIEW, v->index);
 
		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 

	
 
		SndPlayVehicleFx((_opt.landscape != LT_CANDY) ? 0xE : 0x3A, v);
 
		SndPlayVehicleFx((_opt.landscape != LT_CANDY) ?
 
			SND_10_TRAIN_BREAKDOWN : SND_3A_COMEDY_BREAKDOWN_2, v);
 

	
 
		if (!(v->vehstatus & VS_HIDDEN)) {
 
			Vehicle *u = CreateEffectVehicleRel(v, 4, 4, 5, EV_BREAKDOWN_SMOKE);
 
			if (u)
 
				u->u.special.unk0 = v->breakdown_delay * 2;
 
		}
 
@@ -2414,13 +2420,13 @@ static void TrainCheckIfLineEnds(Vehicle
 
	if ( (uint16)ts != 0) {
 
		if ((ts &= (ts >> 16)) == 0) {
 
			// make a rail/road crossing red
 
			if (IS_TILETYPE(tile, MP_STREET) && (_map5[tile] & 0xF0)==0x10) {
 
				if (!(_map5[tile] & 4)) {
 
					_map5[tile] |= 4;
 
					SndPlayVehicleFx(12, v);
 
					SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v);
 
					MarkTileDirtyByTile(tile);
 
				}
 
			}
 
			return;
 
		}
 
	} else if (x + 4 > 15) {