Changeset - r374:d6b2f335d34c
[Not reviewed]
master
0 5 0
celestar - 20 years ago 2004-11-13 15:15:41
celestar@openttd.org
(svn r562) newgrf: Merge most of the road vehicle info to a single
road_vehicle_info table, like it already is for trains and ships. Needed
for GRF custom override support. (pasky)
5 files changed with 136 insertions and 139 deletions:
0 comments (0 inline, 0 general)
ai_new.c
Show inline comments
 
@@ -516,9 +516,6 @@ static bool AiNew_CheckVehicleStation(Pl
 
	return true;
 
}
 

	
 
extern const byte _roadveh_speed[88];
 
extern const byte _roadveh_capacity[88];
 

	
 
// This function finds a good spot for a station
 
static void AiNew_State_FindStation(Player *p) {
 
    TileIndex tile;
 
@@ -570,7 +567,7 @@ static void AiNew_State_FindStation(Play
 
				if (p->ainew.tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) == FACIL_BUS_STOP) {
 
					if (st->town == town) {
 
						// Check how much cargo there is left in the station
 
						if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > _roadveh_capacity[i-ROAD_ENGINES_INDEX] * AI_STATION_REUSE_MULTIPLER) {
 
						if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > road_vehicle_info(i)->capacity * AI_STATION_REUSE_MULTIPLER) {
 
							if (AiNew_CheckVehicleStation(p, st)) {
 
								// We did found a station that was good enough!
 
								new_tile = st->xy;
 
@@ -829,8 +826,7 @@ static int AiNew_HowManyVehicles(Player 
 
    	// Passenger run.. how long is the route?
 
    	length = p->ainew.path_info.route_length;
 
    	// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
 
    	// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
 
    	tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
 
    	tiles_a_day = road_vehicle_info(i)->max_speed * DAY_TICKS / 256 / 16;
 
    	// We want a vehicle in a station once a month at least, so, calculate it!
 
    	// (the * 2 is because we have 2 stations ;))
 
    	amount = ((int)(((float)length / (float)tiles_a_day / 30 * 2))) * 2;
 
@@ -845,8 +841,7 @@ static int AiNew_HowManyVehicles(Player 
 
    	// Passenger run.. how long is the route?
 
    	length = p->ainew.path_info.route_length;
 
    	// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
 
    	// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
 
    	tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
 
    	tiles_a_day = road_vehicle_info(i)->max_speed * DAY_TICKS / 256 / 16;
 
    	if (p->ainew.from_deliver)
 
    		max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0];
 
    	else
 
@@ -857,7 +852,7 @@ static int AiNew_HowManyVehicles(Player 
 
    	// We want all the cargo to be gone in a month.. so, we know the cargo it delivers
 
    	//  we know what the vehicle takes with him, and we know the time it takes him
 
    	//  to get back here.. now let's do some math!
 
    	amount = (int)(((float)length / (float)tiles_a_day / 30 * 2) * ((float)max_cargo / (float)_roadveh_capacity[i-ROAD_ENGINES_INDEX]));
 
    	amount = (int)(((float)length / (float)tiles_a_day / 30 * 2) * ((float)max_cargo / (float)road_vehicle_info(i)->capacity));
 
    	amount += 1;
 
    	return amount;
 
	} else {
engine.h
Show inline comments
 
@@ -14,6 +14,16 @@ typedef struct RailVehicleInfo {
 
	byte cargo_type;
 
} RailVehicleInfo;
 

	
 
typedef struct RoadVehicleInfo {
 
	byte image_index;
 
	byte base_cost;
 
	uint16 max_speed;
 
	byte cargo_type;
 
	uint16 capacity;
 
	byte running_cost;
 
	byte sfx;
 
} RoadVehicleInfo;
 

	
 
typedef struct ShipVehicleInfo {
 
	byte image_index;
 
	byte base_cost;
 
@@ -133,6 +143,10 @@ VARDEF StringID _engine_name_strings[TOT
 

	
 
extern EngineInfo _engine_info[TOTAL_NUM_ENGINES];
 
extern RailVehicleInfo _rail_vehicle_info[];
 
#define road_vehicle_info(e) (&_road_vehicle_info[e - ROAD_ENGINES_INDEX])
 
extern RoadVehicleInfo _road_vehicle_info[];
 
/* TODO: Change this to return a pointer instead, for the sake of consistency.
 
 * --pasky */
 
#define ship_vehicle_info(e) _ship_vehicle_info[e - SHIP_ENGINES_INDEX]
 
extern ShipVehicleInfo _ship_vehicle_info[];
 

	
roadveh_cmd.c
Show inline comments
 
@@ -23,7 +23,6 @@ static const uint16 _roadveh_images[63] 
 
	0xC5C, 0xC64, 0xC6C, 0xC74, 0xC84, 0xC94, 0xCA4
 
};
 

	
 

	
 
static const uint16 _roadveh_full_adder[63] = {
 
    0,  88,   0,   0,   0,   0,  48,  48,
 
   48,  48,   0,   0,  64,  64,   0,  16,
 
@@ -35,107 +34,6 @@ static const uint16 _roadveh_full_adder[
 
    0,   0,   0,   8,   8,   8,   8
 
};
 

	
 
static const byte _roadveh_spritenum[88] = {
 
	0, 17, 17, 34, 51, 51, 51, 1,
 
	18, 35, 2, 19, 36, 57, 57, 57,
 
	3, 20, 37, 4, 21, 38, 5, 22,
 

	
 
	39, 6, 23, 40, 7, 24, 41, 8,
 
	25, 42, 9, 26, 43, 10, 27, 44,
 
	11, 28, 45, 12, 29, 46, 13, 30,
 
	47, 14, 31, 48, 15, 32, 49, 16,
 

	
 
	33, 50, 52, 52, 52, 53, 53, 53,
 
	54, 54, 54, 55, 55, 55, 56, 56,
 
	56, 58, 58, 58, 59, 59, 59, 60,
 
	60, 60, 61, 61, 61, 62, 62, 62,
 
};
 

	
 
const byte _roadveh_speed[88] = {
 
	 112, 176, 224, 255, 112, 192, 240,  96,
 
	 176, 224,  96, 176, 224,  96, 176, 224,
 
	  96, 176, 224,  96, 176, 224,  96, 176,
 
	 224,  96, 176, 224,  96, 176, 224,  96,
 
	 176, 224,  96, 176, 224,  96, 176, 224,
 
	  96, 176, 224,  96, 176, 224,  96, 176,
 
	 224,  96, 176, 224,  96, 176, 224,  96,
 
	 176, 224,  96, 176, 224,  96, 176, 224,
 
	  96, 176, 224,  96, 176, 224,  96, 176,
 
	 224,  96, 176, 224,  96, 176, 224,  96,
 
	 176, 224,  96, 176, 224,  96, 176, 224,
 
};
 

	
 

	
 
const byte _roadveh_runningcost[88] = {
 
	  91, 128, 178, 240,  91, 171, 240,  90,
 
	 168, 240,  90, 168, 240,  90, 168, 240,
 
	  90, 168, 240,  90, 168, 240,  90, 168,
 
	 240,  90, 168, 240,  90, 168, 240,  90,
 
	 168, 240,  90, 168, 240,  90, 168, 240,
 
	  90, 168, 240,  90, 168, 240,  90, 168,
 
	 240,  90, 168, 240,  90, 168, 240,  90,
 
	 168, 240,  90, 168, 240,  90, 168, 240,
 
	  90, 168, 240,  90, 168, 240,  90, 168,
 
	 240,  90, 168, 240,  90, 168, 240,  90,
 
	 168, 240,  90, 168, 240,  90, 168, 240,
 
};
 

	
 

	
 
const byte _roadveh_capacity[88] = {
 
	31,  35,  37,  40,  30,  35,  38,  20,
 
	25,  28,  22,  28,  30,  22,  28,  30,
 
	21,  25,  27,  14,  16,  18,  14,  16,
 
	18,  20,  25,  30,  20,  22,  24,  22,
 
	25,  27,  15,  18,  20,  12,  15,  16,
 
	17,  20,  22,  15,  18,  20,  22,  25,
 
	27,  21,  25,  27,  18,  20,  23,  17,
 
	19,  22,  17,  19,  22,  17,  19,  22,
 
	17,  19,  22,  17,  19,  22,  17,  19,
 
	22,  17,  19,  22,  17,  19,  22,  17,
 
	19,  22,  17,  19,  22,  17,  19,  22,
 
};
 

	
 
const byte _roadveh_cargo_type[88] = {
 
	 0, 0, 0, 0, 0, 0, 0, 1,
 
	 1, 1, 2, 2, 2, 2, 2, 2,
 
	 3, 3, 3, 4, 4, 4, 5, 5,
 
	 5, 6, 6, 6, 7, 7, 7, 8,
 
	 8, 8, 9, 9, 9,10,10,10,
 
	11,11,11, 9, 9, 9, 8, 8,
 
	 8, 9, 9, 9, 4, 4, 4, 1,
 
	 1, 1, 1, 1, 1, 7, 7, 7,
 
	 8, 8, 8, 6, 6, 6, 3, 3,
 
	 3, 5, 5, 5, 4, 4, 4,11,
 
	11,11,10,10,10, 9, 9, 9,
 
};
 

	
 
const byte _roadveh_price[88] = {
 
	120,140,150,160,120,140,160,108,
 
	128,138,115,135,145,115,135,145,
 
	110,140,150,105,130,140,107,130,
 
	140,114,133,143,118,137,147,121,
 
	140,150,112,135,145,145,170,180,
 
	112,134,144,112,135,145,121,140,
 
	150,111,141,151,118,148,158,117,
 
	147,157,117,147,157,117,147,157,
 
	117,147,157,117,147,157,117,147,
 
	157,117,147,157,117,147,157,117,
 
	147,157,117,147,157,117,147,157,
 
};
 

	
 
static const byte _road_engine_sounds[88] = {
 
	23, 26, 25, 25, 60, 62, 60, 23,
 
	23, 23, 23, 23, 23, 62, 60, 62,
 
	23, 23, 23, 23, 23, 23, 23, 23,
 
	23, 23, 23, 23, 23, 23, 23, 23,
 
	23, 23, 23, 23, 23, 23, 23, 23,
 
	23, 23, 23, 23, 23, 23, 23, 23,
 
	23, 23, 23, 23, 23, 23, 23, 23,
 
	23, 23, 63, 64, 63, 64, 63, 64,
 
	63, 64, 63, 64, 63, 64, 63, 64,
 
	63, 64, 63, 64, 63, 64, 63, 64,
 
	63, 64, 63, 64, 63, 64, 63, 64,
 
};
 

	
 
static const uint16 _road_veh_fp_ax_or[4] = {
 
	0x100,0x200,1,2,
 
@@ -174,26 +72,24 @@ int GetRoadVehImage(Vehicle *v, byte dir
 

	
 
void DrawRoadVehEngine(int x, int y, int engine, uint32 image_ormod)
 
{
 
	DrawSprite((6 + _roadveh_images[_roadveh_spritenum[engine - ROAD_ENGINES_INDEX]]) | image_ormod, x, y);
 
	DrawSprite((6 + _roadveh_images[road_vehicle_info(engine)->image_index]) | image_ormod, x, y);
 
}
 

	
 
void DrawRoadVehEngineInfo(int engine, int x, int y, int maxw)
 
{
 
	engine -= ROAD_ENGINES_INDEX;
 
	SET_DPARAM32(0, ((_price.roadveh_base >> 3) * road_vehicle_info(engine)->base_cost) >> 5);
 
	SET_DPARAM16(1, road_vehicle_info(engine)->max_speed * 10 >> 5);
 
	SET_DPARAM32(2, road_vehicle_info(engine)->running_cost * _price.roadveh_running >> 8);
 

	
 
	SET_DPARAM32(0, ((_price.roadveh_base >> 3) * _roadveh_price[engine]) >> 5);
 
	SET_DPARAM16(1, _roadveh_speed[engine] * 10 >> 5);
 
	SET_DPARAM32(2, _roadveh_runningcost[engine] * _price.roadveh_running >> 8);
 

	
 
	SET_DPARAM16(4, _roadveh_capacity[engine]);
 
	SET_DPARAM16(3, _cargoc.names_long_p[_roadveh_cargo_type[engine]]);
 
	SET_DPARAM16(4, road_vehicle_info(engine)->capacity);
 
	SET_DPARAM16(3, _cargoc.names_long_p[road_vehicle_info(engine)->cargo_type]);
 

	
 
	DrawStringMultiCenter(x, y, STR_902A_COST_SPEED_RUNNING_COST, maxw);
 
}
 

	
 
static int32 EstimateRoadVehCost(byte engine_type)
 
{
 
	return ((_price.roadveh_base >> 3) * _roadveh_price[engine_type - ROAD_ENGINES_INDEX]) >> 5;
 
	return ((_price.roadveh_base >> 3) * road_vehicle_info(engine_type)->base_cost) >> 5;
 
}
 

	
 
int32 CmdBuildRoadVeh(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
@@ -235,9 +131,9 @@ int32 CmdBuildRoadVeh(int x, int y, uint
 
		v->u.road.state = 254;
 
		v->vehstatus = VS_HIDDEN|VS_STOPPED|VS_DEFPAL;
 

	
 
		v->spritenum = _roadveh_spritenum[p1 - ROAD_ENGINES_INDEX];
 
		v->cargo_type = _roadveh_cargo_type[p1 - ROAD_ENGINES_INDEX];
 
		v->cargo_cap = _roadveh_capacity[p1 - ROAD_ENGINES_INDEX];
 
		v->spritenum = road_vehicle_info(p1)->image_index;
 
		v->cargo_type = road_vehicle_info(p1)->cargo_type;
 
		v->cargo_cap = road_vehicle_info(p1)->capacity;
 
//		v->cargo_count = 0;
 
		v->value = cost;
 
//		v->day_counter = 0;
 
@@ -249,7 +145,7 @@ int32 CmdBuildRoadVeh(int x, int y, uint
 
//	v->u.road.overtaking = 0;
 

	
 
		v->last_station_visited = 0xFF;
 
		v->max_speed = _roadveh_speed[p1 - ROAD_ENGINES_INDEX];
 
		v->max_speed = road_vehicle_info(p1)->max_speed;
 
		v->engine_type = (byte)p1;
 

	
 
		e = &_engines[p1];
 
@@ -725,7 +621,7 @@ static void HandleRoadVehLoading(Vehicle
 

	
 
static void StartRoadVehSound(Vehicle *v)
 
{
 
	int s = _road_engine_sounds[v->engine_type - ROAD_ENGINES_INDEX];
 
	int s = road_vehicle_info(v->engine_type)->sfx;
 
	if (s == 23 && (v->tick_counter&3) == 0) s++;
 
	SndPlayVehicleFx(s, v);
 
}
 
@@ -1569,7 +1465,7 @@ void OnNewDay_RoadVeh(Vehicle *v)
 
	if (v->vehstatus & VS_STOPPED)
 
		return;
 

	
 
	cost = _roadveh_runningcost[v->engine_type - ROAD_ENGINES_INDEX] * _price.roadveh_running / 364;
 
	cost = road_vehicle_info(v->engine_type)->running_cost * _price.roadveh_running / 364;
 

	
 
	v->profit_this_year -= cost >> 8;
 

	
roadveh_gui.c
Show inline comments
 
@@ -11,12 +11,6 @@
 
#include "player.h"
 
#include "engine.h"
 

	
 
extern const byte _roadveh_price[88];
 
extern const byte _roadveh_speed[88];
 
extern const byte _roadveh_runningcost[88];
 
extern const byte _roadveh_capacity[88];
 
extern const byte _roadveh_cargo_type[88];
 

	
 
static void DrawRoadVehImage(Vehicle *v, int x, int y, VehicleID selection)
 
{
 
	int image = GetRoadVehImage(v, 6);
 
@@ -60,7 +54,7 @@ static void RoadVehDetailsWndProc(Window
 
			}
 
			SET_DPARAM16(0, str);
 
			SET_DPARAM16(2, v->max_age / 366);
 
			SET_DPARAM32(3, _roadveh_runningcost[v->engine_type - ROAD_ENGINES_INDEX] * _price.roadveh_running >> 8);
 
			SET_DPARAM32(3, road_vehicle_info(v->engine_type)->running_cost * _price.roadveh_running >> 8);
 
			DrawString(2, 15, STR_900D_AGE_RUNNING_COST_YR, 0);
 
		}
 

	
 
@@ -356,11 +350,11 @@ static void DrawNewRoadVehWindow(Window 
 
		if (selected_id != -1) {
 
			Engine *e;
 

	
 
			SET_DPARAM32(0, _roadveh_price[selected_id - ROAD_ENGINES_INDEX] * (_price.roadveh_base>>3)>>5);
 
			SET_DPARAM16(1, _roadveh_speed[selected_id - ROAD_ENGINES_INDEX] * 10 >> 5);
 
			SET_DPARAM32(2, _roadveh_runningcost[selected_id - ROAD_ENGINES_INDEX] * _price.roadveh_running >> 8);
 
			SET_DPARAM16(4, _roadveh_capacity[selected_id - ROAD_ENGINES_INDEX]);
 
			SET_DPARAM16(3, _cargoc.names_long_p[_roadveh_cargo_type[selected_id - ROAD_ENGINES_INDEX]]);
 
			SET_DPARAM32(0, road_vehicle_info(selected_id)->base_cost * (_price.roadveh_base>>3)>>5);
 
			SET_DPARAM16(1, road_vehicle_info(selected_id)->max_speed * 10 >> 5);
 
			SET_DPARAM32(2, road_vehicle_info(selected_id)->running_cost * _price.roadveh_running >> 8);
 
			SET_DPARAM16(4, road_vehicle_info(selected_id)->capacity);
 
			SET_DPARAM16(3, _cargoc.names_long_p[road_vehicle_info(selected_id)->cargo_type]);
 

	
 
			e = &_engines[selected_id];
 
			SET_DPARAM16(6, e->lifelength);
table/engines.h
Show inline comments
 
@@ -385,12 +385,110 @@ RailVehicleInfo _rail_vehicle_info[] = {
 
};
 

	
 

	
 
RoadVehicleInfo _road_vehicle_info[] = {
 
	/* FIXME: Cargo type constant may not be appropriate for the
 
	 * vehicle's climate. --pasky */
 
	// image_index  cargo_type     cargo_amount
 
	// |  base_cost  |             |    running_cost
 
	// |   |   max_speed           |    |   sfx
 
	// |   |    |    |             |    |   |
 
	{  0, 120, 112, CT_PASSENGERS, 31,  91, 23 }, /*  0 */
 
	{ 17, 140, 176, CT_PASSENGERS, 35, 128, 26 }, /*  1 */
 
	{ 17, 150, 224, CT_PASSENGERS, 37, 178, 25 }, /*  2 */
 
	{ 34, 160, 255, CT_PASSENGERS, 40, 240, 25 }, /*  3 */
 
	{ 51, 120, 112, CT_PASSENGERS, 30,  91, 60 }, /*  4 */
 
	{ 51, 140, 192, CT_PASSENGERS, 35, 171, 62 }, /*  5 */
 
	{ 51, 160, 240, CT_PASSENGERS, 38, 240, 60 }, /*  6 */
 
	{  1, 108,  96,       CT_COAL, 20,  90, 23 }, /*  7 */
 
	{ 18, 128, 176,       CT_COAL, 25, 168, 23 }, /*  8 */
 
	{ 35, 138, 224,       CT_COAL, 28, 240, 23 }, /*  9 */
 
	{  2, 115,  96,       CT_MAIL, 22,  90, 23 }, /* 10 */
 
	{ 19, 135, 176,       CT_MAIL, 28, 168, 23 }, /* 11 */
 
	{ 36, 145, 224,       CT_MAIL, 30, 240, 23 }, /* 12 */
 
	{ 57, 115,  96,       CT_MAIL, 22,  90, 62 }, /* 13 */
 
	{ 57, 135, 176,       CT_MAIL, 28, 168, 60 }, /* 14 */
 
	{ 57, 145, 224,       CT_MAIL, 30, 240, 62 }, /* 15 */
 
	{  3, 110,  96,        CT_OIL, 21,  90, 23 }, /* 16 */
 
	{ 20, 140, 176,        CT_OIL, 25, 168, 23 }, /* 17 */
 
	{ 37, 150, 224,        CT_OIL, 27, 240, 23 }, /* 18 */
 
	{  4, 105,  96,  CT_LIVESTOCK, 14,  90, 23 }, /* 19 */
 
	{ 21, 130, 176,  CT_LIVESTOCK, 16, 168, 23 }, /* 20 */
 
	{ 38, 140, 224,  CT_LIVESTOCK, 18, 240, 23 }, /* 21 */
 
	{  5, 107,  96,      CT_GOODS, 14,  90, 23 }, /* 22 */
 
	{ 22, 130, 176,      CT_GOODS, 16, 168, 23 }, /* 23 */
 
	{ 39, 140, 224,      CT_GOODS, 18, 240, 23 }, /* 24 */
 
	{  6, 114,  96,      CT_GRAIN, 20,  90, 23 }, /* 25 */
 
	{ 23, 133, 176,      CT_GRAIN, 25, 168, 23 }, /* 26 */
 
	{ 40, 143, 224,      CT_GRAIN, 30, 240, 23 }, /* 27 */
 
	{  7, 118,  96,       CT_WOOD, 20,  90, 23 }, /* 28 */
 
	{ 24, 137, 176,       CT_WOOD, 22, 168, 23 }, /* 29 */
 
	{ 41, 147, 224,       CT_WOOD, 24, 240, 23 }, /* 30 */
 
	{  8, 121,  96,   CT_IRON_ORE, 22,  90, 23 }, /* 31 */
 
	{ 25, 140, 176,   CT_IRON_ORE, 25, 168, 23 }, /* 32 */
 
	{ 42, 150, 224,   CT_IRON_ORE, 27, 240, 23 }, /* 33 */
 
	{  9, 112,  96,      CT_STEEL, 15,  90, 23 }, /* 34 */
 
	{ 26, 135, 176,      CT_STEEL, 18, 168, 23 }, /* 35 */
 
	{ 43, 145, 224,      CT_STEEL, 20, 240, 23 }, /* 36 */
 
	{ 10, 145,  96,  CT_VALUABLES, 12,  90, 23 }, /* 37 */
 
	{ 27, 170, 176,  CT_VALUABLES, 15, 168, 23 }, /* 38 */
 
	{ 44, 180, 224,  CT_VALUABLES, 16, 240, 23 }, /* 39 */
 
	{ 11, 112,  96,       CT_FOOD, 17,  90, 23 }, /* 40 */
 
	{ 28, 134, 176,       CT_FOOD, 20, 168, 23 }, /* 41 */
 
	{ 45, 144, 224,       CT_FOOD, 22, 240, 23 }, /* 42 */
 
	{ 12, 112,  96,      CT_STEEL, 15,  90, 23 }, /* 43 */
 
	{ 29, 135, 176,      CT_STEEL, 18, 168, 23 }, /* 44 */
 
	{ 46, 145, 224,      CT_STEEL, 20, 240, 23 }, /* 45 */
 
	{ 13, 121,  96,   CT_IRON_ORE, 22,  90, 23 }, /* 46 */
 
	{ 30, 140, 176,   CT_IRON_ORE, 25, 168, 23 }, /* 47 */
 
	{ 47, 150, 224,   CT_IRON_ORE, 27, 240, 23 }, /* 48 */
 
	{ 14, 111,  96,      CT_STEEL, 21,  90, 23 }, /* 49 */
 
	{ 31, 141, 176,      CT_STEEL, 25, 168, 23 }, /* 50 */
 
	{ 48, 151, 224,      CT_STEEL, 27, 240, 23 }, /* 51 */
 
	{ 15, 118,  96,  CT_LIVESTOCK, 18,  90, 23 }, /* 52 */
 
	{ 32, 148, 176,  CT_LIVESTOCK, 20, 168, 23 }, /* 53 */
 
	{ 49, 158, 224,  CT_LIVESTOCK, 23, 240, 23 }, /* 54 */
 
	{ 16, 117,  96,       CT_COAL, 17,  90, 23 }, /* 55 */
 
	{ 33, 147, 176,       CT_COAL, 19, 168, 23 }, /* 56 */
 
	{ 50, 157, 224,       CT_COAL, 22, 240, 23 }, /* 57 */
 
	{ 52, 117,  96,       CT_COAL, 17,  90, 63 }, /* 58 */
 
	{ 52, 147, 176,       CT_COAL, 19, 168, 64 }, /* 59 */
 
	{ 52, 157, 224,       CT_COAL, 22, 240, 63 }, /* 60 */
 
	{ 53, 117,  96,       CT_WOOD, 17,  90, 64 }, /* 61 */
 
	{ 53, 147, 176,       CT_WOOD, 19, 168, 63 }, /* 62 */
 
	{ 53, 157, 224,       CT_WOOD, 22, 240, 64 }, /* 63 */
 
	{ 54, 117,  96,   CT_IRON_ORE, 17,  90, 63 }, /* 64 */
 
	{ 54, 147, 176,   CT_IRON_ORE, 19, 168, 64 }, /* 65 */
 
	{ 54, 157, 224,   CT_IRON_ORE, 22, 240, 63 }, /* 66 */
 
	{ 55, 117,  96,      CT_GRAIN, 17,  90, 64 }, /* 67 */
 
	{ 55, 147, 176,      CT_GRAIN, 19, 168, 63 }, /* 68 */
 
	{ 55, 157, 224,      CT_GRAIN, 22, 240, 64 }, /* 69 */
 
	{ 56, 117,  96,        CT_OIL, 17,  90, 63 }, /* 70 */
 
	{ 56, 147, 176,        CT_OIL, 19, 168, 64 }, /* 71 */
 
	{ 56, 157, 224,        CT_OIL, 22, 240, 63 }, /* 72 */
 
	{ 58, 117,  96,      CT_GOODS, 17,  90, 64 }, /* 73 */
 
	{ 58, 147, 176,      CT_GOODS, 19, 168, 63 }, /* 74 */
 
	{ 58, 157, 224,      CT_GOODS, 22, 240, 64 }, /* 75 */
 
	{ 59, 117,  96,  CT_LIVESTOCK, 17,  90, 63 }, /* 76 */
 
	{ 59, 147, 176,  CT_LIVESTOCK, 19, 168, 64 }, /* 77 */
 
	{ 59, 157, 224,  CT_LIVESTOCK, 22, 240, 63 }, /* 78 */
 
	{ 60, 117,  96,       CT_FOOD, 17,  90, 64 }, /* 79 */
 
	{ 60, 147, 176,       CT_FOOD, 19, 168, 63 }, /* 80 */
 
	{ 60, 157, 224,       CT_FOOD, 22, 240, 64 }, /* 81 */
 
	{ 61, 117,  96,  CT_VALUABLES, 17,  90, 63 }, /* 82 */
 
	{ 61, 147, 176,  CT_VALUABLES, 19, 168, 64 }, /* 83 */
 
	{ 61, 157, 224,  CT_VALUABLES, 22, 240, 63 }, /* 84 */
 
	{ 62, 117,  96,      CT_STEEL, 17,  90, 64 }, /* 85 */
 
	{ 62, 147, 176,      CT_STEEL, 19, 168, 63 }, /* 86 */
 
	{ 62, 157, 224,      CT_STEEL, 22, 240, 64 }, /* 87 */
 
};
 

	
 

	
 
ShipVehicleInfo _ship_vehicle_info[] = {
 
	// image_index  cargo_type     cargo_amount  refittable
 
	// |  base_cost |              |    running_cost
 
	// |  |    max_speed           |    |    sfx |
 
	// |  |    |    |              |    |    |   |
 
	{  1, 160, 48,  CT_OIL,        220, 140, 4,  0 }, /* 0 */
 
	{  1, 160, 48,  CT_OIL,        220, 140, 4, 0 }, /* 0 */
 
	{  1, 176, 80,  CT_OIL,        350, 125, 4, 0 }, /* 1 */
 
	{  2, 96,  64,  CT_PASSENGERS, 100, 90,  5, 0 }, /* 2 */
 
	{  2, 112, 128, CT_PASSENGERS, 130, 80,  5, 0 }, /* 3 */
0 comments (0 inline, 0 general)