@ -378,7 +378,8 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
* @ param tile end tile of area - drag
* @ param flags for this command type
* @ param p1 start tile of area drag
* @ param p2 height difference ; eg raise ( + 1 ) , lower ( - 1 ) or level ( 0 )
* @ param p2 various bitstuffed data .
* bits 1 - 2 : Mode of leveling \ c LevelMode .
* @ param text unused
* @ return the cost of this operation or an error
*/
@ -392,14 +393,21 @@ CommandCost CmdLevelLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
uint oldh = TileHeight ( p1 ) ;
/* compute new height */
uint h = oldh + ( int8 ) p2 ;
uint h = oldh ;
LevelMode lm = ( LevelMode ) GB ( p2 , 1 , 2 ) ;
switch ( lm ) {
case LM_LEVEL : break ;
case LM_RAISE : h + + ; break ;
case LM_LOWER : h - - ; break ;
default : return CMD_ERROR ;
}
/* Check range of destination height */
if ( h > MAX_TILE_HEIGHT ) return_cmd_error ( ( oldh = = 0 ) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH ) ;
Money money = GetAvailableMoneyForCommand ( ) ;
CommandCost cost ( EXPENSES_CONSTRUCTION ) ;
CommandCost last_error ( ( p2 = = 0 ) ? STR_ERROR_ALREADY_LEVELLED : INVALID_STRING_ID ) ;
CommandCost last_error ( lm = = LM_LEVEL ? STR_ERROR_ALREADY_LEVELLED : INVALID_STRING_ID ) ;
bool had_success = false ;
TileArea ta ( tile , p1 ) ;