| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -23,6 +23,8 @@ typedef void (*checkTile)(DFCoord, MapExtras::MapCache &);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//Forward Declarations for Commands
 | 
					 | 
					 | 
					 | 
					//Forward Declarations for Commands
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					command_result filltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
					 | 
					 | 
					 | 
					command_result filltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					command_result alltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
					 | 
					 | 
					 | 
					command_result alltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					command_result restrictLiquid(color_ostream &out, std::vector<std::string> & params);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					command_result restrictIce(color_ostream &out, std::vector<std::string> & params);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//Forward Declarations for Utility Functions
 | 
					 | 
					 | 
					 | 
					//Forward Declarations for Utility Functions
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					command_result setAllMatching(color_ostream &out, checkTile checkProc,
 | 
					 | 
					 | 
					 | 
					command_result setAllMatching(color_ostream &out, checkTile checkProc,
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -34,6 +36,9 @@ void allNormal(DFCoord coord, MapExtras::MapCache & map);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void allLow(DFCoord coord, MapExtras::MapCache & map);
 | 
					 | 
					 | 
					 | 
					void allLow(DFCoord coord, MapExtras::MapCache & map);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void allRestricted(DFCoord coord, MapExtras::MapCache & map);
 | 
					 | 
					 | 
					 | 
					void allRestricted(DFCoord coord, MapExtras::MapCache & map);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void restrictLiquidProc(DFCoord coord, MapExtras::MapCache &map);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void restrictIceProc(DFCoord coord, MapExtras::MapCache &map);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					DFHACK_PLUGIN("filltraffic");
 | 
					 | 
					 | 
					 | 
					DFHACK_PLUGIN("filltraffic");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <PluginCommand> &commands)
 | 
					 | 
					 | 
					 | 
					DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <PluginCommand> &commands)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -66,6 +71,14 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <Plug
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        "  L: Low Traffic\n"
 | 
					 | 
					 | 
					 | 
					        "  L: Low Traffic\n"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        "  R: Restricted Traffic\n"
 | 
					 | 
					 | 
					 | 
					        "  R: Restricted Traffic\n"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ));
 | 
					 | 
					 | 
					 | 
					    ));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						commands.push_back(PluginCommand(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							"restrictliquids","Restrict on every visible square with liquid",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							restrictLiquid, false, ""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						commands.push_back(PluginCommand(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							"restrictice","Restrict traffic on squares above visible ice",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							restrictIce, false, ""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return CR_OK;
 | 
					 | 
					 | 
					 | 
					    return CR_OK;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -265,6 +278,16 @@ command_result alltraffic(color_ostream &out, std::vector<std::string> & params)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return setAllMatching(out, proc);
 | 
					 | 
					 | 
					 | 
					    return setAllMatching(out, proc);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					command_result restrictLiquid(color_ostream &out, std::vector<std::string> & params)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  return setAllMatching(out, restrictLiquidProc);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					command_result restrictIce(color_ostream &out, std::vector<std::string> & params)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return setAllMatching(out, restrictIceProc);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//Helper function for writing new functions that check every tile on the map.
 | 
					 | 
					 | 
					 | 
					//Helper function for writing new functions that check every tile on the map.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//newTraffic is the traffic designation to set.
 | 
					 | 
					 | 
					 | 
					//newTraffic is the traffic designation to set.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//check takes a coordinate and the map cache as arguments, and returns true if the criteria is met.
 | 
					 | 
					 | 
					 | 
					//check takes a coordinate and the map cache as arguments, and returns true if the criteria is met.
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -356,3 +379,33 @@ void allRestricted(DFCoord coord, MapExtras::MapCache &map)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    des.bits.traffic = tile_traffic::Restricted;
 | 
					 | 
					 | 
					 | 
					    des.bits.traffic = tile_traffic::Restricted;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    map.setDesignationAt(coord, des);
 | 
					 | 
					 | 
					 | 
					    map.setDesignationAt(coord, des);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					//Restrict traffic if tile is visible and liquid is present.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void restrictLiquidProc(DFCoord coord, MapExtras::MapCache &map)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						df::tile_designation des = map.designationAt(coord);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if ((des.bits.hidden == 0) && (des.bits.flow_size != 0))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							des.bits.traffic = tile_traffic::Restricted;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							map.setDesignationAt(coord, des);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					//Restrict traffice if tile is above visible ice wall.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void restrictIceProc(DFCoord coord, MapExtras::MapCache &map)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//There is no ice below the bottom of the map.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (coord.z == 0)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						DFCoord tile_below = DFCoord(coord.x, coord.y, coord.z - 1);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						df::tiletype tt = map.tiletypeAt(tile_below);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						df::tile_designation des = map.designationAt(tile_below);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if ((des.bits.hidden == 0) && (tileMaterial(tt) == tiletype_material::FROZEN_LIQUID))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							des = map.designationAt(coord);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							des.bits.traffic = tile_traffic::Restricted;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							map.setDesignationAt(coord, des);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |