 3dda8c9bad
			
		
	
	3dda8c9bad
	
	
	
		
			
			Script::HasRoadType was only checking if the tile had the same RoadTramType as that of the RoadType provided. Now it really checks RoadType against RoadType.
		
			
				
	
	
		
			395 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			395 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  * This file is part of OpenTTD.
 | |
|  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
 | |
|  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
|  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| AILog.Info("0.7 API compatibility in effect:");
 | |
| AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed.");
 | |
| AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies.");
 | |
| AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies.");
 | |
| 
 | |
| AISign.GetMaxSignID <- function()
 | |
| {
 | |
| 	local list = AISignList();
 | |
| 	local max_id = 0;
 | |
| 	foreach (id, d in list) {
 | |
| 		if (id > max_id) max_id = id;
 | |
| 	}
 | |
| 	return max_id;
 | |
| }
 | |
| 
 | |
| AITile.GetHeight <- function(tile)
 | |
| {
 | |
| 	if (!AIMap.IsValidTile(tile)) return -1;
 | |
| 
 | |
| 	return AITile.GetCornerHeight(tile, AITile.CORNER_N);
 | |
| }
 | |
| 
 | |
| AIOrder.ChangeOrder <- function(vehicle_id, order_position, order_flags)
 | |
| {
 | |
| 	return AIOrder.SetOrderFlags(vehicle_id, order_position, order_flags);
 | |
| }
 | |
| 
 | |
| AIWaypoint.WAYPOINT_INVALID <- 0xFFFF;
 | |
| 
 | |
| AISubsidy.SourceIsTown <- function(subsidy_id)
 | |
| {
 | |
| 	if (!AISubsidy.IsValidSubsidy(subsidy_id) || AISubsidy.IsAwarded(subsidy_id)) return false;
 | |
| 
 | |
| 	return AISubsidy.GetSourceType(subsidy_id) == AISubsidy.SPT_TOWN;
 | |
| }
 | |
| 
 | |
| AISubsidy.GetSource <- function(subsidy_id)
 | |
| {
 | |
| 	if (!AISubsidy.IsValidSubsidy(subsidy_id)) return AIBaseStation.STATION_INVALID;
 | |
| 
 | |
| 	if (AISubsidy.IsAwarded(subsidy_id)) {
 | |
| 		return AIBaseStation.STATION_INVALID;
 | |
| 	}
 | |
| 
 | |
| 	return AISubsidy.GetSourceIndex(subsidy_id);
 | |
| }
 | |
| 
 | |
| AISubsidy.DestinationIsTown <- function(subsidy_id)
 | |
| {
 | |
| 	if (!AISubsidy.IsValidSubsidy(subsidy_id) || AISubsidy.IsAwarded(subsidy_id)) return false;
 | |
| 
 | |
| 	return AISubsidy.GetDestinationType(subsidy_id) == AISubsidy.SPT_TOWN;
 | |
| }
 | |
| 
 | |
| AISubsidy.GetDestination <- function(subsidy_id)
 | |
| {
 | |
| 	if (!AISubsidy.IsValidSubsidy(subsidy_id)) return AIBaseStation.STATION_INVALID;
 | |
| 
 | |
| 	if (AISubsidy.IsAwarded(subsidy_id)) {
 | |
| 		return AIBaseStation.STATION_INVALID;
 | |
| 	}
 | |
| 
 | |
| 	return AISubsidy.GetDestinationIndex(subsidy_id);
 | |
| }
 | |
| 
 | |
| AITown.GetMaxProduction <- function(town_id, cargo_id)
 | |
| {
 | |
| 	return AITown.GetLastMonthProduction(town_id, cargo_id);
 | |
| }
 | |
| 
 | |
| AIRail.RemoveRailWaypoint <- function(tile)
 | |
| {
 | |
| 	return AIRail.RemoveRailWaypointTileRect(tile, tile, true);
 | |
| }
 | |
| 
 | |
| AIRail.RemoveRailStationTileRect <- function(tile, tile2)
 | |
| {
 | |
| 	return AIRail.RemoveRailStationTileRectangle(tile, tile2, false);
 | |
| }
 | |
| 
 | |
| AIVehicle.SkipToVehicleOrder <- function(vehicle_id, order_position)
 | |
| {
 | |
| 	return AIOrder.SkipToOrder(vehicle_id, order_position);
 | |
| }
 | |
| 
 | |
| AIEngine.IsValidEngine <- function(engine_id)
 | |
| {
 | |
| 	return AIEngine.IsBuildable(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetName <- AIEngine.GetName;
 | |
| AIEngine.GetName <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return null;
 | |
| 	return AIEngine._GetName(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetCargoType <- AIEngine.GetCargoType;
 | |
| AIEngine.GetCargoType <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return 255;
 | |
| 	return AIEngine._GetCargoType(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._CanRefitCargo <- AIEngine.CanRefitCargo;
 | |
| AIEngine.CanRefitCargo <- function(engine_id, cargo_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._CanRefitCargo(engine_id, cargo_id);
 | |
| }
 | |
| 
 | |
| AIEngine._CanPullCargo <- AIEngine.CanPullCargo;
 | |
| AIEngine.CanPullCargo <- function(engine_id, cargo_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._CanPullCargo(engine_id, cargo_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetCapacity <- AIEngine.GetCapacity;
 | |
| AIEngine.GetCapacity <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetCapacity(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetReliability <- AIEngine.GetReliability;
 | |
| AIEngine.GetReliability <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetReliability(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetMaxSpeed <- AIEngine.GetMaxSpeed;
 | |
| AIEngine.GetMaxSpeed <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetMaxSpeed(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetPrice <- AIEngine.GetPrice;
 | |
| AIEngine.GetPrice <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetPrice(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetMaxAge <- AIEngine.GetMaxAge;
 | |
| AIEngine.GetMaxAge <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetMaxAge(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetRunningCost <- AIEngine.GetRunningCost;
 | |
| AIEngine.GetRunningCost <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetRunningCost(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetPower <- AIEngine.GetPower;
 | |
| AIEngine.GetPower <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetPower(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetWeight <- AIEngine.GetWeight;
 | |
| AIEngine.GetWeight <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetWeight(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetMaxTractiveEffort <- AIEngine.GetMaxTractiveEffort;
 | |
| AIEngine.GetMaxTractiveEffort <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetMaxTractiveEffort(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetDesignDate <- AIEngine.GetDesignDate;
 | |
| AIEngine.GetDesignDate <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetDesignDate(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetVehicleType <- AIEngine.GetVehicleType;
 | |
| AIEngine.GetVehicleType <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return AIVehicle.VT_INVALID;
 | |
| 	return AIEngine._GetVehicleType(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._IsWagon <- AIEngine.IsWagon;
 | |
| AIEngine.IsWagon <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._IsWagon(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._CanRunOnRail <- AIEngine.CanRunOnRail;
 | |
| AIEngine.CanRunOnRail <- function(engine_id, track_rail_type)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._CanRunOnRail(engine_id, track_rail_type);
 | |
| }
 | |
| 
 | |
| AIEngine._HasPowerOnRail <- AIEngine.HasPowerOnRail;
 | |
| AIEngine.HasPowerOnRail <- function(engine_id, track_rail_type)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._HasPowerOnRail(engine_id, track_rail_type);
 | |
| }
 | |
| 
 | |
| AIEngine._GetRoadType <- AIEngine.GetRoadType;
 | |
| AIEngine.GetRoadType <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return AIRoad.ROADTYPE_INVALID;
 | |
| 	return AIEngine._GetRoadType(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetRailType <- AIEngine.GetRailType;
 | |
| AIEngine.GetRailType <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return AIRail.RAILTYPE_INVALID;
 | |
| 	return AIEngine._GetRailType(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._IsArticulated <- AIEngine.IsArticulated;
 | |
| AIEngine.IsArticulated <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return false;
 | |
| 	return AIEngine._IsArticulated(engine_id);
 | |
| }
 | |
| 
 | |
| AIEngine._GetPlaneType <- AIEngine.GetPlaneType;
 | |
| AIEngine.GetPlaneType <- function(engine_id)
 | |
| {
 | |
| 	if (!AIEngine.IsBuildable(engine_id)) return -1;
 | |
| 	return AIEngine._GetPlaneType(engine_id);
 | |
| }
 | |
| 
 | |
| _AIWaypointList <- AIWaypointList;
 | |
| class AIWaypointList extends _AIWaypointList {
 | |
| 	constructor()
 | |
| 	{
 | |
| 		::_AIWaypointList.constructor(AIWaypoint.WAYPOINT_RAIL);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation;
 | |
| AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id)
 | |
| {
 | |
| 	if (AIRoad.IsRoadStationTile(tile) && AICompany.IsMine(AITile.GetOwner(tile))) return false;
 | |
| 
 | |
| 	return AIRoad._BuildRoadStation(tile, front, road_veh_type, station_id);
 | |
| }
 | |
| 
 | |
| AIRoad._BuildDriveThroughRoadStation <- AIRoad.BuildDriveThroughRoadStation;
 | |
| AIRoad.BuildDriveThroughRoadStation <- function(tile, front, road_veh_type, station_id)
 | |
| {
 | |
| 	if (AIRoad.IsRoadStationTile(tile) && AICompany.IsMine(AITile.GetOwner(tile))) return false;
 | |
| 
 | |
| 	return AIRoad._BuildDriveThroughRoadStation(tile, front, road_veh_type, station_id);
 | |
| }
 | |
| 
 | |
| AIBridgeList.HasNext <-
 | |
| AIBridgeList_Length.HasNext <-
 | |
| AICargoList.HasNext <-
 | |
| AICargoList_IndustryAccepting.HasNext <-
 | |
| AICargoList_IndustryProducing.HasNext <-
 | |
| AIDepotList.HasNext <-
 | |
| AIEngineList.HasNext <-
 | |
| AIGroupList.HasNext <-
 | |
| AIIndustryList.HasNext <-
 | |
| AIIndustryList_CargoAccepting.HasNext <-
 | |
| AIIndustryList_CargoProducing.HasNext <-
 | |
| AIIndustryTypeList.HasNext <-
 | |
| AIList.HasNext <-
 | |
| AIRailTypeList.HasNext <-
 | |
| AISignList.HasNext <-
 | |
| AIStationList.HasNext <-
 | |
| AIStationList_Vehicle.HasNext <-
 | |
| AISubsidyList.HasNext <-
 | |
| AITileList.HasNext <-
 | |
| AITileList_IndustryAccepting.HasNext <-
 | |
| AITileList_IndustryProducing.HasNext <-
 | |
| AITileList_StationType.HasNext <-
 | |
| AITownList.HasNext <-
 | |
| AIVehicleList.HasNext <-
 | |
| AIVehicleList_DefaultGroup.HasNext <-
 | |
| AIVehicleList_Group.HasNext <-
 | |
| AIVehicleList_SharedOrders.HasNext <-
 | |
| AIVehicleList_Station.HasNext <-
 | |
| AIWaypointList.HasNext <-
 | |
| AIWaypointList_Vehicle.HasNext <-
 | |
| function()
 | |
| {
 | |
| 	return !this.IsEnd();
 | |
| }
 | |
| 
 | |
| AIIndustry._IsCargoAccepted <- AIIndustry.IsCargoAccepted;
 | |
| AIIndustry.IsCargoAccepted <- function(industry_id, cargo_id)
 | |
| {
 | |
| 	return AIIndustry._IsCargoAccepted(industry_id, cargo_id) != AIIndustry.CAS_NOT_ACCEPTED;
 | |
| }
 | |
| 
 | |
| AIAbstractList <- AIList;
 | |
| 
 | |
| AIList.ChangeItem <- AIList.SetValue;
 | |
| 
 | |
| AIRail.ERR_NONUNIFORM_STATIONS_DISABLED <- 0xFFFF;
 | |
| 
 | |
| AICompany.GetCompanyValue <- function(company)
 | |
| {
 | |
| 	return AICompany.GetQuarterlyCompanyValue(company, AICompany.CURRENT_QUARTER);
 | |
| }
 | |
| 
 | |
| AITown.GetLastMonthTransported <- AITown.GetLastMonthSupplied;
 | |
| 
 | |
| AIEvent.AI_ET_INVALID <- AIEvent.ET_INVALID;
 | |
| AIEvent.AI_ET_TEST <- AIEvent.ET_TEST;
 | |
| AIEvent.AI_ET_SUBSIDY_OFFER <- AIEvent.ET_SUBSIDY_OFFER;
 | |
| AIEvent.AI_ET_SUBSIDY_OFFER_EXPIRED <- AIEvent.ET_SUBSIDY_OFFER_EXPIRED;
 | |
| AIEvent.AI_ET_SUBSIDY_AWARDED <- AIEvent.ET_SUBSIDY_AWARDED;
 | |
| AIEvent.AI_ET_SUBSIDY_EXPIRED <- AIEvent.ET_SUBSIDY_EXPIRED;
 | |
| AIEvent.AI_ET_ENGINE_PREVIEW <- AIEvent.ET_ENGINE_PREVIEW;
 | |
| AIEvent.AI_ET_COMPANY_NEW <- AIEvent.ET_COMPANY_NEW;
 | |
| AIEvent.AI_ET_COMPANY_IN_TROUBLE <- AIEvent.ET_COMPANY_IN_TROUBLE;
 | |
| AIEvent.AI_ET_COMPANY_MERGER <- AIEvent.ET_COMPANY_MERGER;
 | |
| AIEvent.AI_ET_COMPANY_BANKRUPT <- AIEvent.ET_COMPANY_BANKRUPT;
 | |
| AIEvent.AI_ET_VEHICLE_CRASHED <- AIEvent.ET_VEHICLE_CRASHED;
 | |
| AIEvent.AI_ET_VEHICLE_LOST <- AIEvent.ET_VEHICLE_LOST;
 | |
| AIEvent.AI_ET_VEHICLE_WAITING_IN_DEPOT <- AIEvent.ET_VEHICLE_WAITING_IN_DEPOT;
 | |
| AIEvent.AI_ET_VEHICLE_UNPROFITABLE <- AIEvent.ET_VEHICLE_UNPROFITABLE;
 | |
| AIEvent.AI_ET_INDUSTRY_OPEN <- AIEvent.ET_INDUSTRY_OPEN;
 | |
| AIEvent.AI_ET_INDUSTRY_CLOSE <- AIEvent.ET_INDUSTRY_CLOSE;
 | |
| AIEvent.AI_ET_ENGINE_AVAILABLE <- AIEvent.ET_ENGINE_AVAILABLE;
 | |
| AIEvent.AI_ET_STATION_FIRST_VEHICLE <- AIEvent.ET_STATION_FIRST_VEHICLE;
 | |
| AIEvent.AI_ET_DISASTER_ZEPPELINER_CRASHED <- AIEvent.ET_DISASTER_ZEPPELINER_CRASHED;
 | |
| AIEvent.AI_ET_DISASTER_ZEPPELINER_CLEARED <- AIEvent.ET_DISASTER_ZEPPELINER_CLEARED;
 | |
| AIOrder.AIOF_NONE <- AIOrder.OF_NONE
 | |
| AIOrder.AIOF_NON_STOP_INTERMEDIATE <- AIOrder.OF_NON_STOP_INTERMEDIATE
 | |
| AIOrder.AIOF_NON_STOP_DESTINATION <- AIOrder.OF_NON_STOP_DESTINATION
 | |
| AIOrder.AIOF_UNLOAD <- AIOrder.OF_UNLOAD
 | |
| AIOrder.AIOF_TRANSFER <- AIOrder.OF_TRANSFER
 | |
| AIOrder.AIOF_NO_UNLOAD <- AIOrder.OF_NO_UNLOAD
 | |
| AIOrder.AIOF_FULL_LOAD <- AIOrder.OF_FULL_LOAD
 | |
| AIOrder.AIOF_FULL_LOAD_ANY <- AIOrder.OF_FULL_LOAD_ANY
 | |
| AIOrder.AIOF_NO_LOAD <- AIOrder.OF_NO_LOAD
 | |
| AIOrder.AIOF_SERVICE_IF_NEEDED <- AIOrder.OF_SERVICE_IF_NEEDED
 | |
| AIOrder.AIOF_STOP_IN_DEPOT <- AIOrder.OF_STOP_IN_DEPOT
 | |
| AIOrder.AIOF_GOTO_NEAREST_DEPOT <- AIOrder.OF_GOTO_NEAREST_DEPOT
 | |
| AIOrder.AIOF_NON_STOP_FLAGS <- AIOrder.OF_NON_STOP_FLAGS
 | |
| AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
 | |
| AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
 | |
| AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
 | |
| AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
 | |
| 
 | |
| /* 1.9 adds a vehicle type parameter. */
 | |
| AIBridge._GetName <- AIBridge.GetName;
 | |
| AIBridge.GetName <- function(bridge_id)
 | |
| {
 | |
| 	return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
 | |
| }
 | |
| 
 | |
| /* 1.9 adds parent_group_id to CreateGroup function */
 | |
| AIGroup._CreateGroup <- AIGroup.CreateGroup;
 | |
| AIGroup.CreateGroup <- function(vehicle_type)
 | |
| {
 | |
| 	return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
 | |
| }
 | |
| 
 | |
| /* 13 really checks RoadType against RoadType */
 | |
| AIRoad._HasRoadType <- AIRoad.HasRoadType;
 | |
| AIRoad.HasRoadType <- function(tile, road_type)
 | |
| {
 | |
| 	local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
 | |
| 	foreach (rt, _ in list) {
 | |
| 		if (AIRoad._HasRoadType(tile, rt)) {
 | |
| 			return true;
 | |
| 		}
 | |
| 	}
 | |
| 	return false;
 | |
| }
 |