equal
deleted
inserted
replaced
244 if (!IsArticulatedPart(u)) { |
244 if (!IsArticulatedPart(u)) { |
245 /* Check powered wagon / visual effect callback */ |
245 /* Check powered wagon / visual effect callback */ |
246 if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) { |
246 if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) { |
247 uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); |
247 uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); |
248 |
248 |
249 if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback; |
249 if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = GB(callback, 0, 8); |
250 } |
250 } |
251 |
251 |
252 if (rvi_v->pow_wag_power != 0 && rvi_u->railveh_type == RAILVEH_WAGON && |
252 if (rvi_v->pow_wag_power != 0 && rvi_u->railveh_type == RAILVEH_WAGON && |
253 UsesWagonOverride(u) && !HasBit(u->u.rail.cached_vis_effect, 7)) { |
253 UsesWagonOverride(u) && !HasBit(u->u.rail.cached_vis_effect, 7)) { |
254 /* wagon is powered */ |
254 /* wagon is powered */ |
1300 if (v->type != VEH_TRAIN || !CheckOwnership(v->owner)) return CMD_ERROR; |
1300 if (v->type != VEH_TRAIN || !CheckOwnership(v->owner)) return CMD_ERROR; |
1301 |
1301 |
1302 /* Check if this train can be started/stopped. The callback will fail or |
1302 /* Check if this train can be started/stopped. The callback will fail or |
1303 * return 0xFF if it can. */ |
1303 * return 0xFF if it can. */ |
1304 uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v); |
1304 uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v); |
1305 if (callback != CALLBACK_FAILED && callback != 0xFF) { |
1305 if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) { |
1306 StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback); |
1306 StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback); |
1307 return_cmd_error(error); |
1307 return_cmd_error(error); |
1308 } |
1308 } |
1309 |
1309 |
1310 if (v->vehstatus & VS_STOPPED && v->u.rail.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY); |
1310 if (v->vehstatus & VS_STOPPED && v->u.rail.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY); |