From 2fee8ecdda20a08e9f3039132f7458b0debfe74a Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Sun, 8 Sep 2019 10:54:46 +0200 Subject: [PATCH] Add #7525: Allow autoreplace with same model vehicle --- src/autoreplace.cpp | 13 ++++++++++++- src/autoreplace_cmd.cpp | 3 --- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/autoreplace.cpp b/src/autoreplace.cpp index e1b73448dd..977b5e674a 100644 --- a/src/autoreplace.cpp +++ b/src/autoreplace.cpp @@ -69,7 +69,18 @@ EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group, /* We didn't find anything useful in the vehicle's own group so we will try ALL_GROUP */ er = GetEngineReplacement(erl, engine, ALL_GROUP); } - if (replace_when_old != nullptr) *replace_when_old = er == nullptr ? false : er->replace_when_old; + if (replace_when_old != nullptr) { + if (er == nullptr) { + /* Not replacing */ + *replace_when_old = false; + } else if (er->to == engine) { + /* When replacing with same model, only ever do it when old */ + *replace_when_old = true; + } else { + /* Use player setting */ + *replace_when_old = er->replace_when_old; + } + } return er == nullptr ? INVALID_ENGINE : er->to; } diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 2d3943c863..ca3883f8d4 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -60,9 +60,6 @@ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company) { assert(Engine::IsValidID(from) && Engine::IsValidID(to)); - /* we can't replace an engine into itself (that would be autorenew) */ - if (from == to) return false; - const Engine *e_from = Engine::Get(from); const Engine *e_to = Engine::Get(to); VehicleType type = e_from->type;