Add cheat to fix station ratings at 100%
This commit is contained in:
@@ -189,6 +189,7 @@ static const CheatEntry _cheats_ui[] = {
|
|||||||
{CNM_LOCAL_ONLY, SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_date_ymd.year, &_cheats.change_date.been_used, &ClickChangeDateCheat },
|
{CNM_LOCAL_ONLY, SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_date_ymd.year, &_cheats.change_date.been_used, &ClickChangeDateCheat },
|
||||||
{CNM_ALL, SLF_NOT_IN_SAVE, STR_CHEAT_INFLATION_COST, &_economy.inflation_prices, &_extra_cheats.inflation_cost.been_used, nullptr },
|
{CNM_ALL, SLF_NOT_IN_SAVE, STR_CHEAT_INFLATION_COST, &_economy.inflation_prices, &_extra_cheats.inflation_cost.been_used, nullptr },
|
||||||
{CNM_ALL, SLF_NOT_IN_SAVE, STR_CHEAT_INFLATION_INCOME, &_economy.inflation_payment, &_extra_cheats.inflation_income.been_used, nullptr },
|
{CNM_ALL, SLF_NOT_IN_SAVE, STR_CHEAT_INFLATION_INCOME, &_economy.inflation_payment, &_extra_cheats.inflation_income.been_used, nullptr },
|
||||||
|
{CNM_ALL, SLE_BOOL, STR_CHEAT_STATION_RATING, &_extra_cheats.station_rating.value, &_extra_cheats.station_rating.been_used, nullptr },
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool IsCheatAllowed(CheatNetworkMode mode)
|
static bool IsCheatAllowed(CheatNetworkMode mode)
|
||||||
@@ -439,7 +440,7 @@ struct CheatWindow : Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (value != oldvalue) {
|
if (value != oldvalue) {
|
||||||
if (_networking) {
|
if (_networking || btn == CHT_STATION_RATING) {
|
||||||
if (btn != CHT_MONEY) DoCommandP(0, (uint32)btn, (uint32)value, CMD_CHEAT_SETTING);
|
if (btn != CHT_MONEY) DoCommandP(0, (uint32)btn, (uint32)value, CMD_CHEAT_SETTING);
|
||||||
} else {
|
} else {
|
||||||
WriteValue(ce->variable, ce->type, (int64)value);
|
WriteValue(ce->variable, ce->type, (int64)value);
|
||||||
|
@@ -40,6 +40,7 @@ struct Cheats {
|
|||||||
struct ExtraCheats {
|
struct ExtraCheats {
|
||||||
Cheat inflation_cost; ///< inflation cost factor
|
Cheat inflation_cost; ///< inflation cost factor
|
||||||
Cheat inflation_income; ///< inflation income factor
|
Cheat inflation_income; ///< inflation income factor
|
||||||
|
Cheat station_rating; ///< 100% station rating
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Available cheats. */
|
/** Available cheats. */
|
||||||
@@ -54,6 +55,7 @@ enum CheatNumbers {
|
|||||||
CHT_CHANGE_DATE, ///< Do time traveling.
|
CHT_CHANGE_DATE, ///< Do time traveling.
|
||||||
CHT_INFLATION_COST, ///< Change inflation cost factor
|
CHT_INFLATION_COST, ///< Change inflation cost factor
|
||||||
CHT_INFLATION_INCOME,///< Change inflation income factor
|
CHT_INFLATION_INCOME,///< Change inflation income factor
|
||||||
|
CHT_STATION_RATING, ///< 100% station ratings
|
||||||
|
|
||||||
CHT_NUM_CHEATS, ///< Number of cheats.
|
CHT_NUM_CHEATS, ///< Number of cheats.
|
||||||
};
|
};
|
||||||
|
@@ -2260,6 +2260,7 @@ STR_CHEAT_INFLATION_COST :{LTBLUE}Change
|
|||||||
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Change inflation cost factor
|
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Change inflation cost factor
|
||||||
STR_CHEAT_INFLATION_INCOME :{LTBLUE}Change inflation income factor: {ORANGE}{DECIMAL}
|
STR_CHEAT_INFLATION_INCOME :{LTBLUE}Change inflation income factor: {ORANGE}{DECIMAL}
|
||||||
STR_CHEAT_INFLATION_INCOME_QUERY_CAPT :{WHITE}Change inflation income factor
|
STR_CHEAT_INFLATION_INCOME_QUERY_CAPT :{WHITE}Change inflation income factor
|
||||||
|
STR_CHEAT_STATION_RATING :{LTBLUE}Stations ratings fixed at 100%: {ORANGE}{STRING1}
|
||||||
|
|
||||||
# Livery window
|
# Livery window
|
||||||
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Colour Scheme
|
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Colour Scheme
|
||||||
|
@@ -282,6 +282,10 @@ CommandCost CmdCheatSetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
|||||||
}
|
}
|
||||||
return CommandCost();
|
return CommandCost();
|
||||||
|
|
||||||
|
case CHT_STATION_RATING:
|
||||||
|
cht = &_extra_cheats.station_rating;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return CMD_ERROR;
|
return CMD_ERROR;
|
||||||
}
|
}
|
||||||
@@ -289,6 +293,11 @@ CommandCost CmdCheatSetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
|||||||
cht->value = p2;
|
cht->value = p2;
|
||||||
cht->been_used = true;
|
cht->been_used = true;
|
||||||
SetWindowDirty(WC_CHEATS, 0);
|
SetWindowDirty(WC_CHEATS, 0);
|
||||||
|
|
||||||
|
if (p1 == CHT_STATION_RATING) {
|
||||||
|
extern void UpdateAllStationRatings();
|
||||||
|
UpdateAllStationRatings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ struct ExtraCheatNameDesc {
|
|||||||
static ExtraCheatNameDesc _extra_cheat_descs[] = {
|
static ExtraCheatNameDesc _extra_cheat_descs[] = {
|
||||||
{ "inflation_cost", &_extra_cheats.inflation_cost },
|
{ "inflation_cost", &_extra_cheats.inflation_cost },
|
||||||
{ "inflation_income", &_extra_cheats.inflation_income },
|
{ "inflation_income", &_extra_cheats.inflation_income },
|
||||||
|
{ "station_rating", &_extra_cheats.station_rating },
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -57,6 +57,7 @@
|
|||||||
#include "widgets/station_widget.h"
|
#include "widgets/station_widget.h"
|
||||||
#include "zoning.h"
|
#include "zoning.h"
|
||||||
#include "tunnelbridge_map.h"
|
#include "tunnelbridge_map.h"
|
||||||
|
#include "cheat_type.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
@@ -3809,7 +3810,10 @@ static void UpdateStationRating(Station *st)
|
|||||||
*/
|
*/
|
||||||
uint waiting_avg = waiting / (num_dests + 1);
|
uint waiting_avg = waiting / (num_dests + 1);
|
||||||
|
|
||||||
if (HasBit(cs->callback_mask, CBM_CARGO_STATION_RATING_CALC)) {
|
if (_extra_cheats.station_rating.value) {
|
||||||
|
ge->rating = rating = 255;
|
||||||
|
skip = true;
|
||||||
|
} else if (HasBit(cs->callback_mask, CBM_CARGO_STATION_RATING_CALC)) {
|
||||||
/* Perform custom station rating. If it succeeds the speed, days in transit and
|
/* Perform custom station rating. If it succeeds the speed, days in transit and
|
||||||
* waiting cargo ratings must not be executed. */
|
* waiting cargo ratings must not be executed. */
|
||||||
|
|
||||||
@@ -4135,6 +4139,14 @@ static void StationHandleSmallTick(BaseStation *st)
|
|||||||
if (b == 0) UpdateStationRating(Station::From(st));
|
if (b == 0) UpdateStationRating(Station::From(st));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdateAllStationRatings()
|
||||||
|
{
|
||||||
|
for (Station *st : Station::Iterate()) {
|
||||||
|
if (!st->IsInUse()) continue;
|
||||||
|
UpdateStationRating(st);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OnTick_Station()
|
void OnTick_Station()
|
||||||
{
|
{
|
||||||
if (_game_mode == GM_EDITOR) return;
|
if (_game_mode == GM_EDITOR) return;
|
||||||
|
Reference in New Issue
Block a user