From 907cb4fc5397f1983555fa7e20cc661876f3469e Mon Sep 17 00:00:00 2001 From: frosch Date: Thu, 28 Mar 2024 23:21:20 +0100 Subject: [PATCH] Fix: [Script] ScriptSubsidy::GetExpireDate should return an economy-date (#12372) --- src/script/api/script_subsidy.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/script/api/script_subsidy.cpp b/src/script/api/script_subsidy.cpp index 8d80ae4019..02f283d87a 100644 --- a/src/script/api/script_subsidy.cpp +++ b/src/script/api/script_subsidy.cpp @@ -54,15 +54,13 @@ { if (!IsValidSubsidy(subsidy_id)) return ScriptDate::DATE_INVALID; - int year = ScriptDate::GetYear(ScriptDate::GetCurrentDate()); - int month = ScriptDate::GetMonth(ScriptDate::GetCurrentDate()); + TimerGameEconomy::YearMonthDay ymd = TimerGameEconomy::ConvertDateToYMD(TimerGameEconomy::date); + ymd.day = 1; + auto m = ymd.month + ::Subsidy::Get(subsidy_id)->remaining; + ymd.month = (m - 1) % 12 + 1; + ymd.year += (m - 1) / 12; - month += ::Subsidy::Get(subsidy_id)->remaining; - - year += (month - 1) / 12; - month = ((month - 1) % 12) + 1; - - return ScriptDate::GetDate(year, month, 1); + return (ScriptDate::Date)TimerGameEconomy::ConvertYMDToDate(ymd.year, ymd.month, ymd.day).base(); } /* static */ CargoID ScriptSubsidy::GetCargoType(SubsidyID subsidy_id)