From b16a2f37827bd6463137804af652c8723395c736 Mon Sep 17 00:00:00 2001 From: perwestling Date: Sun, 18 Feb 2024 03:50:33 +0100 Subject: [PATCH] [1893] Fix exclusion of merge voter for share-only owner Fixes #10311 In case a player owned shares of the corporation to be created by merge, the merge step did not regard this as a voter, so the GUI got stuck. Players had to decline merge to get passed this. Now merge step considers share owners as well. --- lib/engine/game/g_1893/step/merger.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/engine/game/g_1893/step/merger.rb b/lib/engine/game/g_1893/step/merger.rb index 2e75058014..c7d165b636 100644 --- a/lib/engine/game/g_1893/step/merger.rb +++ b/lib/engine/game/g_1893/step/merger.rb @@ -18,11 +18,19 @@ def round_state def actions(entity) return [] if entity.company? return [] unless choice_available? - return [] if @game.round.merger_candidates_for(@game.round.current_entity).empty? + return [] if mergable_owned.empty? && !merge_target_shares_owned? ACTIONS end + def mergable_owned + @game.round.merger_candidates_for(@game.round.current_entity) + end + + def merge_target_shares_owned? + @game.round.current_entity.shares.any? { |s| s.corporation == @game.round.merge_target } + end + def description "Merge of #{@game.round.merge_target.name}" end @@ -48,9 +56,10 @@ def item_str(item) end def help - names = @game.round.names(@game.round.merger_candidates_for(@game.round.current_entity)) + names = @game.round.names(mergable_owned) "Vote Yes or No to merge #{names} into #{@game.round.merge_target.name}. " \ '50% Yes votes is required to execute merge. If No votes exceed 50% merge is postponed. ' \ + 'Shares in Market counts as No vote(s). ' \ 'Note! Even if declined, there is an automatic merge at the start of the Merge Round following '\ 'the next phase change.' end