From: Erik V. <ev...@us...> - 2011-11-24 21:58:24
|
dev/null |binary rails/game/MapHex.java | 2 rails/game/OperatingRound.java | 27 test/data/test/1835_NatDoubleShare.report | 884 ------------------ test/data/test/1835_NatSingleShare.report | 76 - test/data/test/1835_PRHasTwoExcessTrains.rails |binary test/data/test/1835_PRHasTwoExcessTrains.report | 1141 ++++++++++++++++++++++++ 7 files changed, 1162 insertions(+), 968 deletions(-) New commits: commit 50a81714eb68f951868feb7d0f3d7d32241ae648 Author: Erik Vos <eri...@xs...> Date: Thu Nov 24 22:09:55 2011 +0100 Fixed offering special token lays where that is not actually allowed. Cases: - Company has no tokens. - Company already has token on target location - Target location is blocked (e.g. another home token is not yet placed). ==> THIS FIX MAY BREAK EXISTING SAVED FILES. Three test cases had to be withdrawn because of this fix. diff --git a/rails/game/MapHex.java b/rails/game/MapHex.java index a1d32ab..0e1af5c 100644 --- a/rails/game/MapHex.java +++ b/rails/game/MapHex.java @@ -1194,7 +1194,7 @@ StationHolder, TokenHolder { return isBlockedForTokenLays.booleanValue(); } else if (homes != null && !homes.isEmpty()) { Stop cityToLay = this.getStop(cityNumber); - if (cityToLay == null) { // city does not exist, this does not block itself + if (cityNumber > 0 && cityToLay == null) { // city does not exist, this does not block itself return false; } // check if the city is potential home for other companies diff --git a/rails/game/OperatingRound.java b/rails/game/OperatingRound.java index 604caeb..8d6dac3 100644 --- a/rails/game/OperatingRound.java +++ b/rails/game/OperatingRound.java @@ -1940,22 +1940,35 @@ public class OperatingRound extends Round implements Observer { /* Special-property tile lays */ currentSpecialTokenLays.clear(); - if (!operatingCompany.get().canUseSpecialProperties()) return; + PublicCompanyI company = operatingCompany.get(); + if (!company.canUseSpecialProperties()) return; + // Check if the company still has tokens + if (company.getNumberOfFreeBaseTokens() == 0) return; /* * In 1835, this only applies to major companies. TODO: For now, * hardcode this, but it must become configurable later. */ - if (operatingCompany.get().getType().getName().equals("Minor")) return; + // Removed EV 24-11-2011 - entirely redundant; why did I ever do this?? + //if (operatingCompany.get().getType().getName().equals("Minor")) return; for (SpecialTokenLay stl : getSpecialProperties(SpecialTokenLay.class)) { - log.debug("Spec.prop:" + stl); + // If the special tile lay is not extra, it is only allowed if + // normal tile lays are also (still) allowed if (stl.getTokenClass().equals(BaseToken.class) && (stl.isExtra() || !currentNormalTokenLays.isEmpty())) { - /* - * If the special tile lay is not extra, it is only allowed if - * normal tile lays are also (still) allowed - */ + + // If this STL is location specific, check if there + // isn't already a token of this company or if it is blocked + List<MapHex> locations = stl.getLocations(); + if (locations != null && !locations.isEmpty()) { + boolean canLay = false; + for (MapHex location : locations) { + if (!location.hasTokenOfCompany(company) + && !location.isBlockedForTokenLays(company, 0)) canLay = true; + } + if (!canLay) continue; + } currentSpecialTokenLays.add(new LayBaseToken(stl)); } } diff --git a/test/data/test/1835_NatDoubleShare.rails b/test/data/test/1835_NatDoubleShare.rails deleted file mode 100644 index 822e7c2..0000000 Binary files a/test/data/test/1835_NatDoubleShare.rails and /dev/null differ diff --git a/test/data/test/1835_NatDoubleShare.report b/test/data/test/1835_NatDoubleShare.report deleted file mode 100644 index a6a0a67..0000000 --- a/test/data/test/1835_NatDoubleShare.report +++ /dev/null @@ -1,884 +0,0 @@ -GameIs,1835 -PlayerIs,1,T1 -PlayerIs,2,T2 -PlayerIs,3,T3 -PlayerCash,600 -BankHas,10200 -StartOfPhase,2 -BankSizeIs,10200 -StartOfInitialRound -HasPriority,T1 -BuysItemFor,T3,M5,80 -FloatsWithCash,M5,80 -BuysItemFor,T2,M1,80 -FloatsWithCash,M1,80 -BuysItemFor,T1,M3,80 -FloatsWithCash,M3,80 -BuysItemFor,T1,M6,80 -FloatsWithCash,M6,80 -BuysItemFor,T2,M2,170 -FloatsWithCash,M2,170 -BuysItemFor,T3,PRES_CERT_NAME,BY,20,184 -BuysItemFor,T1,LD,190 -ALSO_GETS,T1,PRES_CERT_NAME,SX,20 -BuysItemFor,T2,HB,160 -BuysItemFor,T3,OBB,120 -ALSO_GETS,T3,CERT_NAME,BY,10 -BuysItemFor,T1,BB,130 -BuysItemFor,T2,NF,100 -ALSO_GETS,T2,CERT_NAME,BY,10 -BuysItemFor,T3,M4,160 -FloatsWithCash,M4,160 -CannotBuyAnything,T1 -CannotBuyAnything,T2 -CannotBuyAnything,T3 -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,T1,120 -Has,T2,90 -Has,T3,56 -START_OR,0.0 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,20,LD -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB -ShortORExecuted -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,T1,165 -Has,T2,125 -Has,T3,66 -StartOfInitialRound -HasPriority,T1 -CannotBuyAnything,T3 -BuysItemFor,T1,PfB,150 -ALSO_GETS,T1,CERT_NAME,BY,10 -FloatsWithCash,BY,460 -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,BY,460 -Has,T1,15 -Has,T2,125 -Has,T3,66 -StartStockRound,1 -HasPriority,T2 -BUY_SHARE_LOG,T2,10,BY,IPO,92 -PriceIsPaidTo,92,BY -PASSES,T3 -PASSES,T1 -PASSES,T2 - -END_SR,1 -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,BY,552 -Has,T1,15 -Has,T2,33 -Has,T3,66 -START_OR,1.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,20,LD -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,201,H2,SW -CompanyDoesNotPayDividend,M1 -BuysTrain,M1,2,IPO,80 -FirstTrainBought,2 - -CompanyOperates,M2,T2 -LaysTileAt,M2,8,E17,NW -CompanyDoesNotPayDividend,M2 -BuysTrain,M2,2,IPO,80 - -CompanyOperates,M3,T1 -LaysTileAt,M3,6,F14,NW -CompanyDoesNotPayDividend,M3 -BuysTrain,M3,2,IPO,80 - -CompanyOperates,M4,T3 -LaysTileAt,M4,57,G5,SW -CompanyDoesNotPayDividend,M4 -BuysTrain,M4,2,IPO,80 -BuysTrain,M4,2,IPO,80 - -CompanyOperates,M5,T3 -LaysTileAt,M5,8,D18,NE -CompanyDoesNotPayDividend,M5 -BuysTrain,M5,2,IPO,80 - -CompanyOperates,M6,T1 -LaysTileAt,M6,9,B10,NW -CompanyDoesNotPayDividend,M6 -BuysTrain,M6,2,IPO,80 - -CompanyOperates,BY,T3 -LaysTileAt,BY,202,O15,E -LaysTileAt,BY,8,O13,NW -CompanyDoesNotPayDividend,BY -PRICE_MOVES_LOG,BY,92,C3,86,B3 -BuysTrain,BY,2,IPO,80 -BuysTrain,BY,2,IPO,80 -All 2-trains are sold out, 2+2-trains now available -BuysTrain,BY,2+2,IPO,120 -FirstTrainBought,2+2 - -EndOfOperatingRound,1.1 -ORWorthIncrease,T1,1.1,54 -ORWorthIncrease,T2,1.1,23 -ORWorthIncrease,T3,1.1,-8 -Has,M1,0 -Has,M2,90 -Has,M3,0 -Has,M4,0 -Has,M5,0 -Has,M6,0 -Has,BY,272 -Has,T1,75 -Has,T2,68 -Has,T3,76 -StartStockRound,2 -HasPriority,T3 -PASSES,T3 -PASSES,T1 -PASSES,T2 - -END_SR,2 -Has,M1,0 -Has,M2,90 -Has,M3,0 -Has,M4,0 -Has,M5,0 -Has,M6,0 -Has,BY,272 -Has,T1,75 -Has,T2,68 -Has,T3,76 -START_OR,2.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,20,LD -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,9,J2,NW -CompanyRevenue,M1,40 -CompanySplits,M1,40 -M1 receives 20 -Payout,T2,20,1,100 - -CompanyOperates,M2,T2 -LaysTileAt,M2,8,D16,SE -CompanyRevenue,M2,0 -CompanyDoesNotPayDividend,M2 - -CompanyOperates,M3,T1 -LaysTileAt,M3,4,G15,NW -CompanyRevenue,M3,40 -CompanySplits,M3,40 -M3 receives 20 -Payout,T1,20,1,100 - -CompanyOperates,M4,T3 -LaysTileAt,M4,2,H4,NE -CompanyRevenue,M4,30 -CompanySplits,M4,30 -M4 receives 15 -Payout,T3,15,1,100 - -CompanyOperates,M5,T3 -LaysTileAt,M5,8,C19,E -CompanyRevenue,M5,50 -CompanySplits,M5,50 -M5 receives 25 -Payout,T3,25,1,100 - -CompanyOperates,M6,T1 -LaysTileAt,M6,6,A11,NW -CompanyRevenue,M6,60 -CompanySplits,M6,60 -M6 receives 30 -Payout,T1,30,1,100 - -CompanyOperates,BY,T3 -LaysTileAt,BY,8,N16,SW -LaysTileAt,BY,4,M15,NW -LaysTileAt,BY,6,N12,NW -LAYS_TOKEN_ON,BY,L14,60 -CompanyRevenue,BY,130 -CompanyPaysOutFull,BY,130 -Payout,T1,13,1,10 -Payout,T2,26,2,10 -Payout,T3,39,3,10 -PRICE_MOVES_LOG,BY,86,B3,92,C3 - -EndOfOperatingRound,2.1 -ORWorthIncrease,T1,2.1,129 -ORWorthIncrease,T2,2.1,93 -ORWorthIncrease,T3,2.1,107 -Has,M1,20 -Has,M2,90 -Has,M3,20 -Has,M4,15 -Has,M5,25 -Has,M6,30 -Has,BY,212 -Has,T1,198 -Has,T2,149 -Has,T3,165 -StartStockRound,3 -HasPriority,T3 -BUY_SHARE_LOG,T3,10,BY,IPO,92 -PriceIsPaidTo,92,BY -BUY_SHARE_LOG,T1,10,BY,IPO,92 -PriceIsPaidTo,92,BY -BUY_SHARE_LOG,T2,10,BY,IPO,92 -PriceIsPaidTo,92,BY -PASSES,T3 -BUY_SHARE_LOG,T1,10,BY,IPO,92 -PriceIsPaidTo,92,BY -SELL_SHARE_LOG,T1,10,BY,92 -PRICE_MOVES_LOG,BY,92,C3,88,C4 -PASSES,T2 -PASSES,T3 -SELL_SHARE_LOG,T1,10,BY,88 -PRICE_MOVES_LOG,BY,88,C4,86,C5 -BUY_SHARE_LOG,T1,10,SX,IPO,88 -PASSES,T2 -PASSES,T3 -SELL_SHARE_LOG,T1,10,BY,86 -PRICE_MOVES_LOG,BY,86,C5,82,C6 -BUY_SHARE_LOG,T1,10,SX,IPO,88 -PASSES,T2 -PASSES,T3 -BUY_SHARE_LOG,T1,10,SX,IPO,88 -FloatsWithCash,SX,440 -PASSES,T2 -PASSES,T3 -PASSES,T1 - -END_SR,3 -Has,M1,20 -Has,M2,90 -Has,M3,20 -Has,M4,15 -Has,M5,25 -Has,M6,30 -Has,BY,580 -Has,SX,440 -Has,T1,16 -Has,T2,57 -Has,T3,73 -START_OR,3.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,20,LD -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,4,K3,NW -CompanyRevenue,M1,40 -CompanySplits,M1,40 -M1 receives 20 -Payout,T2,20,1,100 - -CompanyOperates,M2,T2 -LaysTileAtFor,M2,8,D14,NW,50 -CompanyRevenue,M2,70 -CompanySplits,M2,70 -M2 receives 35 -Payout,T2,35,1,100 - -CompanyOperates,M3,T1 -LaysTileAt,M3,57,H16,NW -CompanyRevenue,M3,40 -CompanySplits,M3,40 -M3 receives 20 -Payout,T1,20,1,100 - -CompanyOperates,M4,T3 -LaysTileAt,M4,58,F6,E -CompanyRevenue,M4,60 -CompanySplits,M4,60 -M4 receives 30 -Payout,T3,30,1,100 - -CompanyOperates,M5,T3 -CompanyRevenue,M5,50 -CompanySplits,M5,50 -M5 receives 25 -Payout,T3,25,1,100 - -CompanyOperates,M6,T1 -LaysTileAt,M6,58,B12,SW -CompanyRevenue,M6,60 -CompanySplits,M6,60 -M6 receives 30 -Payout,T1,30,1,100 - -CompanyOperates,SX,T1 -LaysTileAt,SX,56,I17,NE -LaysTileAt,SX,202,H20,W -CompanyDoesNotPayDividend,SX -PRICE_MOVES_LOG,SX,88,C4,84,B4 -BuysTrain,SX,2+2,IPO,120 -PrivateCloses,LD -BuysTrain,SX,2+2,IPO,120 - -CompanyOperates,BY,T3 -LaysTileAt,BY,69,N10,NE -LaysTileAt,BY,5,M9,SW -CompanyRevenue,BY,140 -CompanyPaysOutFull,BY,140 -Payout,T2,42,3,10 -Payout,T3,56,4,10 -Payout,BY,42,3,10 -PRICE_MOVES_LOG,BY,82,C6,88,D6 - -EndOfOperatingRound,3.1 -ORWorthIncrease,T1,3.1,-100 -ORWorthIncrease,T2,3.1,150 -ORWorthIncrease,T3,3.1,145 -Has,M1,40 -Has,M2,75 -Has,M3,40 -Has,M4,45 -Has,M5,50 -Has,M6,60 -Has,BY,622 -Has,SX,200 -Has,T1,126 -Has,T2,189 -Has,T3,194 -StartStockRound,4 -HasPriority,T2 -BUY_SHARE_LOG,T2,10,BY,Pool,88 -BUY_SHARE_LOG,T3,10,BY,Pool,88 -BUY_SHARE_LOG,T1,10,SX,IPO,88 -PriceIsPaidTo,88,SX -BUY_SHARE_LOG,T2,10,SX,IPO,88 -PriceIsPaidTo,88,SX -BUY_SHARE_LOG,T3,10,BY,Pool,88 -PASSES,T1 -PASSES,T2 -PASSES,T3 - -END_SR,4 -PRICE_MOVES_LOG,BY,88,D6,90,D5 -SoldOut,BY,88,D6,90,D5 -Has,M1,40 -Has,M2,75 -Has,M3,40 -Has,M4,45 -Has,M5,50 -Has,M6,60 -Has,BY,622 -Has,SX,376 -Has,T1,38 -Has,T2,13 -Has,T3,18 -START_OR,4.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,8,L4,NW -CompanyRevenue,M1,40 -CompanySplits,M1,40 -M1 receives 20 -Payout,T2,20,1,100 - -CompanyOperates,M2,T2 -LaysTileAt,M2,58,B14,E -CompanyRevenue,M2,70 -CompanySplits,M2,70 -M2 receives 35 -Payout,T2,35,1,100 - -CompanyOperates,M3,T1 -LaysTileAt,M3,5,F10,SE -CompanyRevenue,M3,40 -CompanySplits,M3,40 -M3 receives 20 -Payout,T1,20,1,100 - -CompanyOperates,M4,T3 -LaysTileAt,M4,8,F8,W -CompanyRevenue,M4,60 -CompanySplits,M4,60 -M4 receives 30 -Payout,T3,30,1,100 - -CompanyOperates,M5,T3 -CompanyRevenue,M5,50 -CompanySplits,M5,50 -M5 receives 25 -Payout,T3,25,1,100 - -CompanyOperates,M6,T1 -LaysTileAt,M6,58,B16,SE -CompanyRevenue,M6,60 -CompanySplits,M6,60 -M6 receives 30 -Payout,T1,30,1,100 - -CompanyOperates,BY,T3 -LaysTileAt,BY,8,M11,W -LaysTileAt,BY,8,L12,SW -CompanyRevenue,BY,140 -CompanyPaysOutFull,BY,140 -Payout,T2,56,4,10 -Payout,T3,84,6,10 -PRICE_MOVES_LOG,BY,90,D5,96,E5 - -CompanyOperates,SX,T1 -LaysTileAt,SX,7,H18,SE -LaysTileAt,SX,3,I15,NE -LAYS_TOKEN_ON,SX,H20,40 -CompanyRevenue,SX,130 -CompanyPaysOutFull,SX,130 -Payout,T1,78,6,10 -Payout,T2,13,1,10 -PRICE_MOVES_LOG,SX,84,B4,88,C4 - -EndOfOperatingRound,4.1 -ORWorthIncrease,T1,4.1,192 -ORWorthIncrease,T2,4.1,187 -ORWorthIncrease,T3,4.1,185 -Has,M1,60 -Has,M2,110 -Has,M3,60 -Has,M4,75 -Has,M5,75 -Has,M6,90 -Has,BY,622 -Has,SX,336 -Has,T1,206 -Has,T2,172 -Has,T3,167 -StartStockRound,5 -HasPriority,T1 -BUY_SHARE_LOG,T1,10,SX,IPO,88 -PriceIsPaidTo,88,SX -BUY_SHARE_LOG,T2,10,SX,IPO,88 -PriceIsPaidTo,88,SX -BUY_SHARE_LOG,T3,10,SX,IPO,88 -PriceIsPaidTo,88,SX -SharesReleased,All,BA -PASSES,T1 -SELL_SHARES_LOG,T2,4,10,40,BY,384 -PRICE_MOVES_LOG,BY,96,E5,92,E6 -START_COMPANY_LOG,T2,BA,84,168,2,20,BANK -SharesReleased,4 10%,PR -PASSES,T3 -BUY_SHARE_LOG,T1,10,BY,Pool,92 -BUY_SHARE_LOG,T2,10,BA,IPO,84 -PASSES,T3 -PASSES,T1 -BUY_SHARE_LOG,T2,10,BA,IPO,84 -Autopasses,T3 -Autopasses,T1 -BUY_SHARE_LOG,T2,10,BA,IPO,84 -FloatsWithCash,BA,420 -SharesReleased,All,WT -Autopasses,T3 -Autopasses,T1 -PASSES,T2 - -END_SR,5 -PRICE_MOVES_LOG,SX,88,C4,92,C3 -SoldOut,SX,88,C4,92,C3 -Has,M1,60 -Has,M2,110 -Has,M3,60 -Has,M4,75 -Has,M5,75 -Has,M6,90 -Has,BY,622 -Has,SX,600 -Has,BA,420 -Has,T1,26 -Has,T2,48 -Has,T3,79 -START_OR,5.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAtFor,M1,201,I3,NW,50 -CompanyRevenue,M1,60 -CompanySplits,M1,60 -M1 receives 30 -Payout,T2,30,1,100 - -CompanyOperates,M2,T2 -LaysTileAt,M2,9,C17,NW -CompanyRevenue,M2,70 -CompanySplits,M2,70 -M2 receives 35 -Payout,T2,35,1,100 - -CompanyOperates,M3,T1 -LaysTileAt,M3,8,E11,SW -CompanyRevenue,M3,40 -CompanySplits,M3,40 -M3 receives 20 -Payout,T1,20,1,100 - -CompanyOperates,M4,T3 -LaysTileAt,M4,9,E9,SW -CompanyRevenue,M4,60 -CompanySplits,M4,60 -M4 receives 30 -Payout,T3,30,1,100 - -CompanyOperates,M5,T3 -CompanyRevenue,M5,50 -CompanySplits,M5,50 -M5 receives 25 -Payout,T3,25,1,100 - -CompanyOperates,M6,T1 -CompanyRevenue,M6,60 -CompanySplits,M6,60 -M6 receives 30 -Payout,T1,30,1,100 - -CompanyOperates,BY,T3 -LaysTileAt,BY,3,K11,E -LaysTileAt,BY,8,K13,SE -CompanyRevenue,BY,140 -CompanyPaysOutFull,BY,140 -Payout,T1,14,1,10 -Payout,T3,84,6,10 -Payout,BY,42,3,10 -PRICE_MOVES_LOG,BY,92,E6,98,F6 - -CompanyOperates,SX,T1 -CompanyRevenue,SX,130 -CompanyPaysOutFull,SX,130 -Payout,T1,91,7,10 -Payout,T3,13,1,10 -Payout,T2,26,2,10 -PRICE_MOVES_LOG,SX,92,C3,100,D3 - -CompanyOperates,BA,T2 -CompanyDoesNotPayDividend,BA -PRICE_MOVES_LOG,BA,84,B4,78,A4 -BuysTrain,BA,2+2,IPO,120 -All 2+2-trains are sold out, 3-trains now available -BuysTrain,BA,3,IPO,180 -FirstTrainBought,3 -StartOfPhase,3 - -EndOfOperatingRound,5.1 -ORWorthIncrease,T1,5.1,257 -ORWorthIncrease,T2,5.1,112 -ORWorthIncrease,T3,5.1,206 -Has,M1,40 -Has,M2,145 -Has,M3,80 -Has,M4,105 -Has,M5,100 -Has,M6,120 -Has,BY,664 -Has,SX,600 -Has,BA,120 -Has,T1,221 -Has,T2,174 -Has,T3,241 -StartStockRound,6 -HasPriority,T3 -START_COMPANY_LOG,T3,WT,84,168,2,20,BANK -PASSES,T1 -BUY_SHARE_LOG,T2,10,BA,IPO,84 -PriceIsPaidTo,84,BA -SELL_SHARE_LOG,T3,10,SX,100 -PRICE_MOVES_LOG,SX,100,D3,94,D4 -BUY_SHARE_LOG,T3,10,WT,IPO,84 -PASSES,T1 -BUY_SHARE_LOG,T2,10,BA,IPO,84 -PriceIsPaidTo,84,BA -BUY_SHARE_LOG,T3,10,WT,IPO,84 -PASSES,T1 -PASSES,T2 -SELL_SHARE_LOG,T3,10,BY,98 -BUY_SHARE_LOG,T3,10,WT,IPO,84 -FloatsWithCash,WT,420 -SharesReleased,All,HE -START_COMPANY_LOG,T1,HE,84,168,2,20,BANK -PASSES,T2 -PASSES,T3 -PASSES,T1 - -END_SR,6 -Has,M1,40 -Has,M2,145 -Has,M3,80 -Has,M4,105 -Has,M5,100 -Has,M6,120 -Has,BY,664 -Has,SX,600 -Has,BA,288 -Has,WT,420 -Has,T1,53 -Has,T2,6 -Has,T3,19 -START_OR,6.1 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,207,H2,E -CompanyRevenue,M1,70 -CompanySplits,M1,70 -M1 receives 35 -Payout,T2,35,1,100 - -CompanyOperates,M2,T2 -LaysTileAt,M2,209,E19,SE -CompanyRevenue,M2,80 -CompanySplits,M2,80 -M2 receives 40 -Payout,T2,40,1,100 -BuysTrain,M2,3,IPO,180 - -CompanyOperates,M3,T1 -LaysTileAt,M3,14,F14,W -CompanyRevenue,M3,50 -CompanySplits,M3,50 -M3 receives 25 -Payout,T1,25,1,100 -BuysTrain,M3,2,M6,105 - -CompanyOperates,M4,T3 -LaysTileAt,M4,205,G5,W -CompanyRevenue,M4,80 -CompanySplits,M4,80 -M4 receives 40 -Payout,T3,40,1,100 - -CompanyOperates,M5,T3 -LaysTileAt,M5,8,F18,NE -CompanyRevenue,M5,80 -CompanySplits,M5,80 -M5 receives 40 -Payout,T3,40,1,100 -BuysTrain,M5,2,BY,140 - -CompanyOperates,M6,T1 -LaysTileAt,M6,12,A11,W -CompanyDoesNotPayDividend,M6 -BuysTrain,M6,2+2,SX,225 - -CompanyOperates,BY,T3 -LaysTileAt,BY,15,M9,NW -CompanyRevenue,BY,120 -CompanyPaysOutFull,BY,120 -Payout,T1,12,1,10 -Payout,T3,60,5,10 -Payout,BY,48,4,10 -PRICE_MOVES_LOG,BY,98,F6,106,G6 -BuysTrain,BY,3,IPO,180 - -CompanyOperates,SX,T1 -LaysTileAt,SX,208,H20,W -CompanyRevenue,SX,90 -CompanyPaysOutFull,SX,90 -Payout,T1,63,7,10 -Payout,T2,18,2,10 -Payout,SX,9,1,10 -PRICE_MOVES_LOG,SX,94,D4,102,E4 -BuysTrain,SX,3,IPO,180 -All 3-trains are sold out, 3+3-trains now available -BuysTrain,SX,3+3,IPO,270 -FirstTrainBought,3+3 - -CompanyOperates,WT,T3 -LaysTileAt,WT,204,K11,NE -CompanyDoesNotPayDividend,WT -PRICE_MOVES_LOG,WT,84,B4,78,A4 -BuysTrain,WT,3+3,IPO,270 -BuysTrain,WT,2,M4,1 - -CompanyOperates,BA,T2 -LaysTileAt,BA,212,L6,SW -LAYS_TOKEN_ON,BA,H2,80 -CompanyRevenue,BA,170 -CompanyPaysOutFull,BA,170 -Payout,T2,119,7,10 -PRICE_MOVES_LOG,BA,78,A4,84,B4 - -EndOfOperatingRound,6.1 -ORWorthIncrease,T1,6.1,204 -ORWorthIncrease,T2,6.1,305 -ORWorthIncrease,T3,6.1,160 -Has,M1,75 -Has,M2,5 -Has,M3,0 -Has,M4,146 -Has,M5,0 -Has,M6,0 -Has,BY,672 -Has,SX,384 -Has,BA,208 -Has,WT,149 -Has,T1,193 -Has,T2,253 -Has,T3,169 -START_OR,6.2 -ReceivesFor,T2,5,NF -ReceivesFor,T3,10,OBB -ReceivesFor,T1,15,PfB -ReceivesFor,T1,25,BB -ReceivesFor,T2,30,HB - -CompanyOperates,M1,T2 -LaysTileAt,M1,207,I3,SW -CompanyRevenue,M1,80 -CompanySplits,M1,80 -M1 receives 40 -Payout,T2,40,1,100 - -CompanyOperates,M2,T2 -LaysTileAt,M2,8,F20,NE -CompanyRevenue,M2,170 -CompanySplits,M2,170 -M2 receives 85 -Payout,T2,85,1,100 - -CompanyOperates,M3,T1 -LaysTileAt,M3,8,D10,NE -CompanyRevenue,M3,90 -CompanySplits,M3,90 -M3 receives 45 -Payout,T1,45,1,100 - -CompanyOperates,M4,T3 -LaysTileAt,M4,24,D10,NE -CompanyRevenue,M4,40 -CompanySplits,M4,40 -M4 receives 20 -Payout,T3,20,1,100 -BuysTrain,M4,2,BY,166 - -CompanyOperates,M5,T3 -LaysTileAt,M5,23,D18,NW -CompanyRevenue,M5,140 -CompanySplits,M5,140 -M5 receives 70 -Payout,T3,70,1,100 - -CompanyOperates,M6,T1 -LaysTileAt,M6,203,B12,W -CompanyRevenue,M6,80 -CompanySplits,M6,80 -M6 receives 40 -Payout,T1,40,1,100 - -CompanyOperates,BY,T3 -LaysTileAt,BY,8,J10,SE -LAYS_TOKEN_ON,BY,J8,120 -CompanyRevenue,BY,160 -CompanyPaysOutFull,BY,160 -Payout,T1,16,1,10 -Payout,T3,80,5,10 -Payout,BY,64,4,10 -PRICE_MOVES_LOG,BY,106,G6,114,G5 -BuysTrain,BY,2,M5,1 - -CompanyOperates,SX,T1 -LaysTileAt,SX,206,H16,SW -LAYS_TOKEN_ON,SX,E19,60 -CompanyRevenue,SX,320 -CompanyPaysOutFull,SX,320 -Payout,T1,224,7,10 -Payout,T2,64,2,10 -Payout,SX,32,1,10 -PRICE_MOVES_LOG,SX,102,E4,112,F4 - -CompanyOperates,BA,T2 -LaysTileAt,BA,9,K5,NW -CompanyRevenue,BA,190 -CompanyPaysOutFull,BA,190 -Payout,T2,133,7,10 -PRICE_MOVES_LOG,BA,84,B4,88,C4 - -CompanyOperates,WT,T3 -LaysTileAt,WT,1,L8,W -CompanyRevenue,WT,160 -CompanyPaysOutFull,WT,160 -Payout,T3,80,5,10 -PRICE_MOVES_LOG,WT,78,A4,84,B4 - -EndOfOperatingRound,6.2 -ORWorthIncrease,T1,6.2,443 -ORWorthIncrease,T2,6.2,405 -ORWorthIncrease,T3,6.2,330 -Has,M1,115 -Has,M2,90 -Has,M3,45 -Has,M4,0 -Has,M5,71 -Has,M6,40 -Has,BY,781 -Has,SX,356 -Has,BA,208 -Has,WT,149 -Has,T1,558 -Has,T2,610 -Has,T3,429 -StartStockRound,7 -HasPriority,T2 -BUY_SHARE_LOG,T2,10,PR,IPO,154 -BUY_SHARE_LOG,T3,10,PR,IPO,154 -BUY_SHARE_LOG,T1,10,PR,IPO,154 -BUY_SHARE_LOG,T2,10,PR,IPO,154 -BUY_SHARE_LOG,T3,10,BY,Pool,114 -BUY_SHARE_LOG,T1,10,SX,Pool,112 -BUY_SHARE_LOG,T2,10,BY,Pool,114 -BUY_SHARE_LOG,T3,10,BA,IPO,84 -PriceIsPaidTo,84,BA -PASSES,T1 -PASSES,T2 -SELL_SHARE_LOG,T3,10,BY,114 -PRICE_MOVES_LOG,BY,114,G5,106,G6 -BUY_SHARE_LOG,T3,20,BA,IPO,168 -PriceIsPaidTo,168,BA -PASSES,T1 -SELL_SHARE_LOG,T2,10,BY,106 -BUY_SHARE_LOG,T2,20,BA,T3,264 diff --git a/test/data/test/1835_NatSingleShare.rails b/test/data/test/1835_NatSingleShare.rails deleted file mode 100644 index 84da84d..0000000 Binary files a/test/data/test/1835_NatSingleShare.rails and /dev/null differ diff --git a/test/data/test/1835_NatSingleShare.report b/test/data/test/1835_NatSingleShare.report deleted file mode 100644 index f0b1381..0000000 --- a/test/data/test/1835_NatSingleShare.report +++ /dev/null @@ -1,76 +0,0 @@ -GameIs,1835 -PlayerIs,1,T1 -PlayerIs,2,T2 -PlayerIs,3,T3 -PlayerCash,600 -BankHas,10200 -StartOfPhase,2 -BankSizeIs,10200 -StartOfInitialRound -HasPriority,T1 -BuysItemFor,T3,M5,80 -FloatsWithCash,M5,80 -BuysItemFor,T1,M1,80 -FloatsWithCash,M1,80 -BuysItemFor,T2,M3,80 -FloatsWithCash,M3,80 -BuysItemFor,T3,M6,80 -FloatsWithCash,M6,80 -BuysItemFor,T1,M2,170 -FloatsWithCash,M2,170 -BuysItemFor,T2,PRES_CERT_NAME,BY,20,184 -BuysItemFor,T3,LD,190 -ALSO_GETS,T3,PRES_CERT_NAME,SX,20 -BuysItemFor,T1,HB,160 -BuysItemFor,T2,OBB,120 -ALSO_GETS,T2,CERT_NAME,BY,10 -BuysItemFor,T3,BB,130 -BuysItemFor,T1,NF,100 -ALSO_GETS,T1,CERT_NAME,BY,10 -BuysItemFor,T2,M4,160 -FloatsWithCash,M4,160 -CannotBuyAnything,T3 -CannotBuyAnything,T1 -CannotBuyAnything,T2 -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,T1,90 -Has,T2,56 -Has,T3,120 -START_OR,0.0 -ReceivesFor,T1,5,NF -ReceivesFor,T2,10,OBB -ReceivesFor,T3,20,LD -ReceivesFor,T3,25,BB -ReceivesFor,T1,30,HB -ShortORExecuted -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,T1,125 -Has,T2,66 -Has,T3,165 -StartOfInitialRound -HasPriority,T3 -BuysItemFor,T3,PfB,150 -ALSO_GETS,T3,CERT_NAME,BY,10 -FloatsWithCash,BY,460 -Has,M1,80 -Has,M2,170 -Has,M3,80 -Has,M4,160 -Has,M5,80 -Has,M6,80 -Has,BY,460 -Has,T1,125 -Has,T2,66 -Has,T3,15 -StartStockRound,1 -HasPriority,T1 diff --git a/test/data/test/1835_PRHasTwoExcessTrains.rails b/test/data/test/1835_PRHasTwoExcessTrains.rails new file mode 100644 index 0000000..433fcdb Binary files /dev/null and b/test/data/test/1835_PRHasTwoExcessTrains.rails differ diff --git a/test/data/test/1835_PRHasTwoExcessTrains.report b/test/data/test/1835_PRHasTwoExcessTrains.report new file mode 100644 index 0000000..2049760 --- /dev/null +++ b/test/data/test/1835_PRHasTwoExcessTrains.report @@ -0,0 +1,1141 @@ +GameIs,1835 +PlayerIs,1,Alice +PlayerIs,2,Bob +PlayerIs,3,Charlie +PlayerCash,600 +BankHas,10200 +StartOfPhase,2 +BankSizeIs,10200 +StartOfInitialRound +HasPriority,Alice +BuysItemFor,Alice,NF,100 +ALSO_GETS,Alice,CERT_NAME,BY,10 +BuysItemFor,Bob,M1,80 +FloatsWithCash,M1,80 +BuysItemFor,Charlie,LD,190 +ALSO_GETS,Charlie,PRES_CERT_NAME,SX,20 +BuysItemFor,Alice,M2,170 +FloatsWithCash,M2,170 +BuysItemFor,Bob,M3,80 +FloatsWithCash,M3,80 +BuysItemFor,Charlie,M4,160 +FloatsWithCash,M4,160 +BuysItemFor,Alice,PRES_CERT_NAME,BY,20,184 +BuysItemFor,Bob,BB,130 +BuysItemFor,Charlie,HB,160 +BuysItemFor,Alice,OBB,120 +ALSO_GETS,Alice,CERT_NAME,BY,10 +BuysItemFor,Bob,PfB,150 +ALSO_GETS,Bob,CERT_NAME,BY,10 +FloatsWithCash,BY,460 +BuysItemFor,Charlie,M5,80 +FloatsWithCash,M5,80 +CannotBuyAnything,Alice +BuysItemFor,Bob,M6,80 +FloatsWithCash,M6,80 +Has,M1,80 +Has,M2,170 +Has,M3,80 +Has,M4,160 +Has,M5,80 +Has,M6,80 +Has,BY,460 +Has,Alice,26 +Has,Bob,80 +Has,Charlie,10 +StartStockRound,1 +HasPriority,Charlie +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,1 +Has,M1,80 +Has,M2,170 +Has,M3,80 +Has,M4,160 +Has,M5,80 +Has,M6,80 +Has,BY,460 +Has,Alice,26 +Has,Bob,80 +Has,Charlie,10 +START_OR,1.1 +ReceivesFor,Alice,5,NF +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Charlie,20,LD +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,202,H2,W +CompanyDoesNotPayDividend,M1 +BuysTrain,M1,2,IPO,80 +FirstTrainBought,2 + +CompanyOperates,M2,Alice +LaysTileAt,M2,8,E17,NW +CompanyDoesNotPayDividend,M2 +BuysTrain,M2,2,IPO,80 + +CompanyOperates,M3,Bob +LaysTileAt,M3,6,F14,NW +CompanyDoesNotPayDividend,M3 +BuysTrain,M3,2,IPO,80 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,57,G5,SW +CompanyDoesNotPayDividend,M4 +BuysTrain,M4,2,IPO,80 +BuysTrain,M4,2,IPO,80 + +CompanyOperates,M5,Charlie +LaysTileAt,M5,8,D18,NE +CompanyDoesNotPayDividend,M5 +BuysTrain,M5,2,IPO,80 + +CompanyOperates,M6,Bob +LaysTileAt,M6,9,B10,NW +CompanyDoesNotPayDividend,M6 +BuysTrain,M6,2,IPO,80 + +CompanyOperates,BY,Alice +LAYS_FREE_TOKEN_ON,BY,L14 +PrivateCloses,NF +LaysTileAtFor,BY,9,K15,SW,70 +LaysTileAt,BY,1,I17,SW +LaysTileAt,BY,58,M15,SW +CompanyDoesNotPayDividend,BY +PRICE_MOVES_LOG,BY,92,C3,86,B3 +BuysTrain,BY,2,IPO,80 +BuysTrain,BY,2,IPO,80 +All 2-trains are sold out, 2+2-trains now available +BuysTrain,BY,2+2,IPO,120 +FirstTrainBought,2+2 + +EndOfOperatingRound,1.1 +ORWorthIncrease,Alice,1.1,-109 +ORWorthIncrease,Bob,1.1,34 +ORWorthIncrease,Charlie,1.1,50 +Has,M1,0 +Has,M2,90 +Has,M3,0 +Has,M4,0 +Has,M5,0 +Has,M6,0 +Has,BY,110 +Has,Alice,41 +Has,Bob,120 +Has,Charlie,60 +StartStockRound,2 +HasPriority,Charlie +PASSES,Charlie +PASSES,Alice +BUY_SHARE_LOG,Bob,10,BY,IPO,92 +PriceIsPaidTo,92,BY +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,2 +Has,M1,0 +Has,M2,90 +Has,M3,0 +Has,M4,0 +Has,M5,0 +Has,M6,0 +Has,BY,202 +Has,Alice,41 +Has,Bob,28 +Has,Charlie,60 +START_OR,2.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Charlie,20,LD +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,69,H4,NW +CompanyRevenue,M1,40 +CompanySplits,M1,40 +M1 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M2,Alice +LaysTileAt,M2,8,D16,SE +CompanyRevenue,M2,0 +CompanyDoesNotPayDividend,M2 + +CompanyOperates,M3,Bob +LaysTileAt,M3,4,G15,NW +CompanyRevenue,M3,40 +CompanySplits,M3,40 +M3 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,4,F6,SW +CompanyRevenue,M4,60 +CompanySplits,M4,60 +M4 receives 30 +Payout,Charlie,30,1,100 + +CompanyOperates,M5,Charlie +LaysTileAt,M5,8,C19,E +CompanyRevenue,M5,50 +CompanySplits,M5,50 +M5 receives 25 +Payout,Charlie,25,1,100 + +CompanyOperates,M6,Bob +LaysTileAt,M6,6,A11,NW +CompanyRevenue,M6,60 +CompanySplits,M6,60 +M6 receives 30 +Payout,Bob,30,1,100 + +CompanyOperates,BY,Alice +LaysTileAt,BY,202,H20,W +LaysTileAt,BY,9,F20,NW +LAYS_TOKEN_ON,BY,H20,160 +CompanyRevenue,BY,160 +CompanyPaysOutFull,BY,160 +Payout,Bob,32,2,10 +Payout,Alice,64,4,10 +PRICE_MOVES_LOG,BY,86,B3,92,C3 + +EndOfOperatingRound,2.1 +ORWorthIncrease,Alice,2.1,98 +ORWorthIncrease,Bob,2.1,154 +ORWorthIncrease,Charlie,2.1,105 +Has,M1,20 +Has,M2,90 +Has,M3,20 +Has,M4,30 +Has,M5,25 +Has,M6,30 +Has,BY,42 +Has,Alice,115 +Has,Bob,170 +Has,Charlie,165 +StartStockRound,3 +HasPriority,Charlie +BUY_SHARE_LOG,Charlie,10,BY,IPO,92 +PriceIsPaidTo,92,BY +BUY_SHARE_LOG,Alice,10,BY,IPO,92 +PriceIsPaidTo,92,BY +BUY_SHARE_LOG,Bob,10,BY,IPO,92 +PriceIsPaidTo,92,BY +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,3 +Has,M1,20 +Has,M2,90 +Has,M3,20 +Has,M4,30 +Has,M5,25 +Has,M6,30 +Has,BY,318 +Has,Alice,23 +Has,Bob,78 +Has,Charlie,73 +START_OR,3.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Charlie,20,LD +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,9,J2,NW +CompanyRevenue,M1,40 +CompanySplits,M1,40 +M1 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M2,Alice +LaysTileAtFor,M2,8,D14,NW,50 +CompanyRevenue,M2,70 +CompanySplits,M2,70 +M2 receives 35 +Payout,Alice,35,1,100 + +CompanyOperates,M3,Bob +LaysTileAt,M3,6,H16,SE +CompanyRevenue,M3,40 +CompanySplits,M3,40 +M3 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,9,E7,SW +CompanyRevenue,M4,60 +CompanySplits,M4,60 +M4 receives 30 +Payout,Charlie,30,1,100 + +CompanyOperates,M5,Charlie +CompanyRevenue,M5,50 +CompanySplits,M5,50 +M5 receives 25 +Payout,Charlie,25,1,100 + +CompanyOperates,M6,Bob +LaysTileAt,M6,58,B12,NW +CompanyRevenue,M6,60 +CompanySplits,M6,60 +M6 receives 30 +Payout,Bob,30,1,100 + +CompanyOperates,BY,Alice +LaysTileAt,BY,8,N14,NE +LaysTileAt,BY,201,O15,NW +CompanyRevenue,BY,190 +CompanyPaysOutFull,BY,190 +Payout,Charlie,19,1,10 +Payout,Bob,57,3,10 +Payout,Alice,95,5,10 +PRICE_MOVES_LOG,BY,92,C3,100,D3 +BuysTrain,BY,2+2,IPO,120 + +EndOfOperatingRound,3.1 +ORWorthIncrease,Alice,3.1,180 +ORWorthIncrease,Bob,3.1,191 +ORWorthIncrease,Charlie,3.1,132 +Has,M1,40 +Has,M2,75 +Has,M3,40 +Has,M4,60 +Has,M5,50 +Has,M6,60 +Has,BY,198 +Has,Alice,163 +Has,Bob,245 +Has,Charlie,197 +StartStockRound,4 +HasPriority,Charlie +BUY_SHARE_LOG,Charlie,10,SX,IPO,88 +BUY_SHARE_LOG,Alice,10,BY,IPO,92 +PriceIsPaidTo,92,BY +BUY_SHARE_LOG,Bob,10,SX,IPO,88 +BUY_SHARE_LOG,Charlie,10,SX,IPO,88 +FloatsWithCash,SX,440 +PASSES,Alice +BUY_SHARE_LOG,Bob,10,SX,IPO,88 +PriceIsPaidTo,88,SX +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,4 +PRICE_MOVES_LOG,BY,100,D3,108,D2 +SoldOut,BY,100,D3,108,D2 +Has,M1,40 +Has,M2,75 +Has,M3,40 +Has,M4,60 +Has,M5,50 +Has,M6,60 +Has,BY,290 +Has,SX,528 +Has,Alice,71 +Has,Bob,69 +Has,Charlie,21 +START_OR,4.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Charlie,20,LD +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,4,K3,NW +CompanyRevenue,M1,40 +CompanySplits,M1,40 +M1 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M2,Alice +CompanyRevenue,M2,70 +CompanySplits,M2,70 +M2 receives 35 +Payout,Alice,35,1,100 + +CompanyOperates,M3,Bob +LaysTileAt,M3,57,F10,W +CompanyRevenue,M3,40 +CompanySplits,M3,40 +M3 receives 20 +Payout,Bob,20,1,100 + +CompanyOperates,M4,Charlie +LaysTileAtFor,M4,5,D8,W,50 +CompanyRevenue,M4,60 +CompanySplits,M4,60 +M4 receives 30 +Payout,Charlie,30,1,100 + +CompanyOperates,M5,Charlie +CompanyRevenue,M5,50 +CompanySplits,M5,50 +M5 receives 25 +Payout,Charlie,25,1,100 + +CompanyOperates,M6,Bob +LaysTileAt,M6,58,B14,SE +CompanyRevenue,M6,60 +CompanySplits,M6,60 +M6 receives 30 +Payout,Bob,30,1,100 + +CompanyOperates,BY,Alice +LaysTileAtFor,BY,9,J14,W,70 +LaysTileAt,BY,9,J12,W +CompanyRevenue,BY,200 +CompanyPaysOutFull,BY,200 +Payout,Bob,60,3,10 +Payout,Charlie,20,1,10 +Payout,Alice,120,6,10 +PRICE_MOVES_LOG,BY,108,D2,120,E2 + +CompanyOperates,SX,Charlie +LaysTileAt,SX,8,H18,SE +CompanyDoesNotPayDividend,SX +PRICE_MOVES_LOG,SX,88,C4,84,B4 +BuysTrain,SX,2+2,IPO,120 +PrivateCloses,LD +BuysTrain,SX,2+2,IPO,120 +All 2+2-trains are sold out, 3-trains now available +BuysTrain,SX,3,IPO,180 +FirstTrainBought,3 +StartOfPhase,3 + +EndOfOperatingRound,4.1 +ORWorthIncrease,Alice,4.1,237 +ORWorthIncrease,Bob,4.1,198 +ORWorthIncrease,Charlie,4.1,-69 +Has,M1,60 +Has,M2,110 +Has,M3,60 +Has,M4,40 +Has,M5,75 +Has,M6,90 +Has,BY,220 +Has,SX,108 +Has,Alice,236 +Has,Bob,239 +Has,Charlie,146 +StartStockRound,5 +HasPriority,Charlie +BUY_SHARE_LOG,Charlie,10,SX,IPO,88 +PriceIsPaidTo,88,SX +BUY_SHARE_LOG,Alice,10,SX,IPO,88 +PriceIsPaidTo,88,SX +BUY_SHARE_LOG,Bob,10,SX,IPO,88 +PriceIsPaidTo,88,SX +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,SX,IPO,88 +PriceIsPaidTo,88,SX +SharesReleased,All,BA +PASSES,Bob +PASSES,Charlie +PASSES,Alice + +END_SR,5 +PRICE_MOVES_LOG,BY,120,E2,132,E1 +SoldOut,BY,120,E2,132,E1 +PRICE_MOVES_LOG,SX,84,B4,86,B3 +SoldOut,SX,84,B4,86,B3 +Has,M1,60 +Has,M2,110 +Has,M3,60 +Has,M4,40 +Has,M5,75 +Has,M6,90 +Has,BY,220 +Has,SX,460 +Has,Alice,60 +Has,Bob,151 +Has,Charlie,58 +START_OR,5.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,207,H2,E +CompanyRevenue,M1,50 +CompanySplits,M1,50 +M1 receives 25 +Payout,Bob,25,1,100 + +CompanyOperates,M2,Alice +LaysTileAt,M2,209,E19,SW +CompanyRevenue,M2,80 +CompanySplits,M2,80 +M2 receives 40 +Payout,Alice,40,1,100 +BuysTrain,M2,2+2,BY,150 + +CompanyOperates,M3,Bob +LaysTileAt,M3,205,F14,SE +CompanyRevenue,M3,50 +CompanySplits,M3,50 +M3 receives 25 +Payout,Bob,25,1,100 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,14,G5,SW +CompanyRevenue,M4,80 +CompanySplits,M4,80 +M4 receives 40 +Payout,Charlie,40,1,100 + +CompanyOperates,M5,Charlie +LaysTileAt,M5,208,H20,W +CompanyRevenue,M5,80 +CompanySplits,M5,80 +M5 receives 40 +Payout,Charlie,40,1,100 +BuysTrain,M5,2+2,SX,115 + +CompanyOperates,M6,Bob +LaysTileAt,M6,12,A11,W +CompanyRevenue,M6,70 +CompanySplits,M6,70 +M6 receives 35 +Payout,Bob,35,1,100 + +CompanyOperates,BY,Alice +LaysTileAt,BY,9,J10,W +LAYS_TOKEN_ON,BY,J8,120 +CompanyRevenue,BY,240 +CompanyPaysOutFull,BY,240 +Payout,Bob,72,3,10 +Payout,Alice,144,6,10 +Payout,Charlie,24,1,10 +PRICE_MOVES_LOG,BY,132,E1,148,F1 +BuysTrain,BY,3,IPO,180 + +CompanyOperates,SX,Charlie +LaysTileAt,SX,13,H16,W +LAYS_TOKEN_ON,SX,E19,60 +CompanyRevenue,SX,190 +CompanyPaysOutFull,SX,190 +Payout,Alice,38,2,10 +Payout,Bob,57,3,10 +Payout,Charlie,95,5,10 +PRICE_MOVES_LOG,SX,86,B3,92,C3 +BuysTrain,SX,3,IPO,180 +BuysTrain,SX,3,IPO,180 +All 3-trains are sold out, 3+3-trains now available + +EndOfOperatingRound,5.1 +ORWorthIncrease,Alice,5.1,340 +ORWorthIncrease,Bob,5.1,320 +ORWorthIncrease,Charlie,5.1,275 +Has,M1,85 +Has,M2,0 +Has,M3,85 +Has,M4,80 +Has,M5,0 +Has,M6,125 +Has,BY,70 +Has,SX,155 +Has,Alice,292 +Has,Bob,405 +Has,Charlie,287 +START_OR,5.2 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAtFor,M1,211,G3,E,50 +CompanyRevenue,M1,70 +CompanySplits,M1,70 +M1 receives 35 +Payout,Bob,35,1,100 + +CompanyOperates,M2,Alice +LaysTileAt,M2,23,D18,NW +CompanyRevenue,M2,180 +CompanySplits,M2,180 +M2 receives 90 +Payout,Alice,90,1,100 + +CompanyOperates,M3,Bob +LaysTileAt,M3,8,F8,E +CompanyRevenue,M3,50 +CompanySplits,M3,50 +M3 receives 25 +Payout,Bob,25,1,100 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,8,G7,W +CompanyRevenue,M4,110 +CompanySplits,M4,110 +M4 receives 55 +Payout,Charlie,55,1,100 + +CompanyOperates,M5,Charlie +LaysTileAt,M5,8,C17,SE +CompanyRevenue,M5,180 +CompanySplits,M5,180 +M5 receives 90 +Payout,Charlie,90,1,100 + +CompanyOperates,M6,Bob +LaysTileAt,M6,8,C15,NW +CompanyRevenue,M6,70 +CompanySplits,M6,70 +M6 receives 35 +Payout,Bob,35,1,100 + +CompanyOperates,BY,Alice +LaysTileAtFor,BY,214,J6,SE,50 +CompanyRevenue,BY,330 +CompanyPaysOutFull,BY,330 +Payout,Alice,198,6,10 +Payout,Bob,99,3,10 +Payout,Charlie,33,1,10 +PRICE_MOVES_LOG,BY,148,F1,166,G1 + +CompanyOperates,SX,Charlie +LaysTileAt,SX,23,H18,E +LAYS_TOKEN_ON,SX,H20,40 +CompanyRevenue,SX,370 +CompanyPaysOutFull,SX,370 +Payout,Alice,74,2,10 +Payout,Bob,111,3,10 +Payout,Charlie,185,5,10 +PRICE_MOVES_LOG,SX,92,C3,100,D3 + +EndOfOperatingRound,5.2 +ORWorthIncrease,Alice,5.2,496 +ORWorthIncrease,Bob,5.2,423 +ORWorthIncrease,Charlie,5.2,451 +Has,M1,70 +Has,M2,90 +Has,M3,110 +Has,M4,135 +Has,M5,90 +Has,M6,160 +Has,BY,20 +Has,SX,115 +Has,Alice,664 +Has,Bob,750 +Has,Charlie,680 +StartStockRound,6 +HasPriority,Bob +START_COMPANY_LOG,Bob,BA,84,168,2,20,BANK +SharesReleased,4 10%,PR +BUY_SHARE_LOG,Charlie,10,BA,IPO,84 +BUY_SHARE_LOG,Alice,10,BA,IPO,84 +BUY_SHARE_LOG,Bob,10,BA,IPO,84 +FloatsWithCash,BA,420 +SharesReleased,All,WT +BUY_SHARE_LOG,Charlie,10,BA,IPO,84 +PriceIsPaidTo,84,BA +START_COMPANY_LOG,Alice,WT,84,168,2,20,BANK +BUY_SHARE_LOG,Bob,10,BA,IPO,84 +PriceIsPaidTo,84,BA +BUY_SHARE_LOG,Charlie,10,BA,IPO,84 +PriceIsPaidTo,84,BA +BUY_SHARE_LOG,Alice,10,WT,IPO,84 +BUY_SHARE_LOG,Bob,20,BA,IPO,168 +PriceIsPaidTo,168,BA +BUY_SHARE_LOG,Charlie,10,WT,IPO,84 +BUY_SHARE_LOG,Alice,10,WT,IPO,84 +FloatsWithCash,WT,420 +SharesReleased,All,HE +BUY_SHARE_LOG,Bob,10,WT,IPO,84 +PriceIsPaidTo,84,WT +START_COMPANY_LOG,Charlie,HE,84,168,2,20,BANK +BUY_SHARE_LOG,Alice,10,HE,IPO,84 +BUY_SHARE_LOG,Bob,10,HE,IPO,84 +BUY_SHARE_LOG,Charlie,10,HE,IPO,84 +FloatsWithCash,HE,420 +BUY_SHARE_LOG,Alice,10,HE,IPO,84 +PriceIsPaidTo,84,HE +PASSES,Bob +BUY_SHARE_LOG,Charlie,10,HE,IPO,84 +PriceIsPaidTo,84,HE +PASSES,Alice +PASSES,Bob +PASSES,Charlie + +END_SR,6 +PRICE_STAYS_LOG,BY,166,G1 +SoldOutNoRaise,BY,166,G1 +PRICE_MOVES_LOG,SX,100,D3,108,D2 +SoldOut,SX,100,D3,108,D2 +PRICE_MOVES_LOG,BA,84,B4,86,B3 +SoldOut,BA,84,B4,86,B3 +Has,M1,70 +Has,M2,90 +Has,M3,110 +Has,M4,135 +Has,M5,90 +Has,M6,160 +Has,BY,20 +Has,SX,115 +Has,BA,840 +Has,WT,504 +Has,HE,588 +Has,Alice,76 +Has,Bob,78 +Has,Charlie,8 +START_OR,6.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,9,I5,SE +CompanyRevenue,M1,70 +CompanySplits,M1,70 +M1 receives 35 +Payout,Bob,35,1,100 + +CompanyOperates,M2,Alice +CompanyRevenue,M2,180 +CompanySplits,M2,180 +M2 receives 90 +Payout,Alice,90,1,100 + +CompanyOperates,M3,Bob +LaysTileAt,M3,206,F10,SE +CompanyRevenue,M3,50 +CompanySplits,M3,50 +M3 receives 25 +Payout,Bob,25,1,100 + +CompanyOperates,M4,Charlie +LaysTileAt,M4,15,D8,NE +CompanyRevenue,M4,110 +CompanySplits,M4,110 +M4 receives 55 +Payout,Charlie,55,1,100 + +CompanyOperates,M5,Charlie +CompanyRevenue,M5,180 +CompanySplits,M5,180 +M5 receives 90 +Payout,Charlie,90,1,100 + +CompanyOperates,M6,Bob +CompanyRevenue,M6,70 +CompanySplits,M6,70 +M6 receives 35 +Payout,Bob,35,1,100 + +CompanyOperates,BY,Alice +LaysTileAt,BY,8,K5,NE +CompanyRevenue,BY,330 +CompanyPaysOutFull,BY,330 +Payout,Alice,198,6,10 +Payout,Bob,99,3,10 +Payout,Charlie,33,1,10 +PRICE_MOVES_LOG,BY,166,G1,186,H1 + +CompanyOperates,SX,Charlie +CompanyRevenue,SX,370 +CompanyPaysOutFull,SX,370 +Payout,Alice,74,2,10 +Payout,Bob,111,3,10 +Payout,Charlie,185,5,10 +PRICE_MOVES_LOG,SX,108,D2,120,E2 + +CompanyOperates,BA,Bob +LaysTileAt,BA,210,L6,E +CompanyDoesNotPayDividend,BA +PRICE_MOVES_LOG,BA,86,B3,82,A3 +BuysTrain,BA,3+3,IPO,270 +FirstTrainBought,3+3 +BuysTrain,BA,3+3,IPO,270 +BuysTrain,BA,3+3,IPO,270 +All 3+3-trains are sold out, 4-trains now available + +CompanyOperates,WT,Alice +LaysTileAt,WT,57,M9,W +CompanyDoesNotPayDividend,WT +PRICE_MOVES_LOG,WT,84,B4,78,A4 +BuysTrain,WT,4,IPO,360 +FirstTrainBought,4 +StartOfPhase,4 +CompanyDiscardsTrain,SX,2+2 +StartFormationRound,PR +StartingPlayer,Alice + +EndOfFormationRound,PR,OperatingRound 6.1 + +CompanyOperates,HE,Charlie +LaysTileAtFor,HE,9,K7,SW,50 +CompanyDoesNotPayDividend,HE +PRICE_MOVES_LOG,HE,84,B4,78,A4 +BuysTrain,HE,4,IPO,360 + +EndOfOperatingRound,6.1 +ORWorthIncrease,Alice,6.1,476 +ORWorthIncrease,Bob,6.1,405 +ORWorthIncrease,Charlie,6.1,431 +Has,M1,105 +Has,M2,180 +Has,M3,135 +Has,M4,190 +Has,M5,180 +Has,M6,195 +Has,BY,20 +Has,SX,115 +Has,BA,30 +Has,WT,144 +Has,HE,178 +Has,Alice,448 +Has,Bob,423 +Has,Charlie,401 +StartFormationRound,PR +StartingPlayer,Alice + +EndOfFormationRoundNoInterrupt,PR +START_OR,6.2 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +LaysTileAt,M1,8,D10,W +CompanyDoesNotPayDividend,M1 +BuysTrain,M1,3+3,BA,105 + +CompanyOperates,M2,Alice +LaysTileAt,M2,203,B12,W +CompanyRevenue,M2,100 +CompanySplits,M2,100 +M2 receives 50 +Payout,Alice,50,1,100 + +CompanyOperates,M3,Bob +LaysTileAt,M3,9,F16,W +CompanyDoesNotPayDividend,M3 + +CompanyOperates,M4,Charlie +CompanyDoesNotPayDividend,M4 +BuysTrain,M4,3,SX,190 + +CompanyOperates,M5,Charlie +CompanyRevenue,M5,100 +CompanySplits,M5,100 +M5 receives 50 +Payout,Charlie,50,1,100 + +CompanyOperates,M6,Bob +CompanyDoesNotPayDividend,M6 +BuysTrain,M6,3+3,BA,195 + +CompanyOperates,BY,Alice +LaysTileAt,BY,23,F20,NW +CompanyRevenue,BY,180 +CompanyPaysOutFull,BY,180 +Payout,Alice,108,6,10 +Payout,Bob,54,3,10 +Payout,Charlie,18,1,10 +PRICE_MOVES_LOG,BY,186,H1,208,I1 +BuysTrain,BY,2+2,M2,1 + +CompanyOperates,SX,Charlie +CompanyRevenue,SX,220 +CompanyPaysOutFull,SX,220 +Payout,Alice,44,2,10 +Payout,Bob,66,3,10 +Payout,Charlie,110,5,10 +PRICE_MOVES_LOG,SX,120,E2,134,F2 +BuysTrain,SX,2+2,M5,1 + +CompanyOperates,BA,Bob +CompanyRevenue,BA,120 +CompanyPaysOutFull,BA,120 +Payout,Alice,12,1,10 +Payout,Bob,72,6,10 +Payout,Charlie,36,3,10 +PRICE_MOVES_LOG,BA,82,A3,86,B3 +BuysTrain,BA,3+3,M1,1 + +CompanyOperates,WT,Alice +LaysTileAt,WT,9,M11,W +CompanyRevenue,WT,0 +CompanyDoesNotPayDividend,WT +PRICE_MOVES_LOG,WT,78,A4,72,A5 + +CompanyOperates,HE,Charlie +CompanyRevenue,HE,130 +CompanyPaysOutFull,HE,130 +Payout,Alice,26,2,10 +Payout,Bob,13,1,10 +Payout,Charlie,52,4,10 +PRICE_MOVES_LOG,HE,78,A4,84,B4 +BuysTrain,HE,3+3,M6,1 + +EndOfOperatingRound,6.2 +ORWorthIncrease,Alice,6.2,402 +ORWorthIncrease,Bob,6.2,377 +ORWorthIncrease,Charlie,6.2,418 +Has,M1,1 +Has,M2,231 +Has,M3,135 +Has,M4,0 +Has,M5,231 +Has,M6,1 +Has,BY,19 +Has,SX,304 +Has,BA,329 +Has,WT,144 +Has,HE,177 +Has,Alice,698 +Has,Bob,668 +Has,Charlie,697 +StartFormationRound,PR +StartingPlayer,Alice + +EndOfFormationRoundNoInterrupt,PR +StartStockRound,7 +HasPriority,Alice +BUY_SHARE_LOG,Alice,10,PR,IPO,154 +BUY_SHARE_LOG,Bob,10,PR,IPO,154 +BUY_SHARE_LOG,Charlie,10,PR,IPO,154 +BUY_SHARE_LOG,Alice,10,PR,IPO,154 +SELL_SHARE_LOG,Bob,10,BY,208 +PRICE_MOVES_LOG,BY,208,I1,188,I2 +BUY_SHARE_LOG,Charlie,10,HE,IPO,84 +PriceIsPaidTo,84,HE +BUY_SHARE_LOG,Alice,10,BY,Pool,188 +BUY_SHARE_LOG,Bob,20,HE,IPO,168 +PriceIsPaidTo,168,HE +BUY_SHARE_LOG,Charlie,10,WT,IPO,84 +PriceIsPaidTo,84,WT +BUY_SHARE_LOG,Alice,10,WT,IPO,84 +PriceIsPaidTo,84,WT +PASSES,Bob +PASSES,Charlie +PASSES,Alice + +END_SR,7 +PRICE_MOVES_LOG,BY,188,I2,208,I1 +SoldOut,BY,188,I2,208,I1 +PRICE_MOVES_LOG,SX,134,F2,148,F1 +SoldOut,SX,134,F2,148,F1 +SoldOutNoRaise,BA,86,B3 +PRICE_MOVES_LOG,HE,84,B4,86,B3 +SoldOut,HE,84,B4,86,B3 +Has,M1,1 +Has,M2,231 +Has,M3,135 +Has,M4,0 +Has,M5,231 +Has,M6,1 +Has,BY,19 +Has,SX,304 +Has,BA,329 +Has,WT,312 +Has,HE,429 +Has,Alice,118 +Has,Bob,554 +Has,Charlie,375 +StartFormationRound,PR +StartingPlayer,Alice + +EndOfFormationRoundNoInterrupt,PR +START_OR,7.1 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +CompanyDoesNotPayDividend,M1 + +CompanyOperates,M2,Alice +CompanyDoesNotPayDividend,M2 +BuysTrain,M2,2+2,BY,231 + +CompanyOperates,M3,Bob +CompanyDoesNotPayDividend,M3 +BuysTrain,M3,3+3,BA,135 + +CompanyOperates,M4,Charlie +CompanyRevenue,M4,90 +CompanySplits,M4,90 +M4 receives 45 +Payout,Charlie,45,1,100 + +CompanyOperates,M5,Charlie +CompanyDoesNotPayDividend,M5 +BuysTrain,M5,2+2,SX,231 + +CompanyOperates,M6,Bob +CompanyDoesNotPayDividend,M6 + +CompanyOperates,BY,Alice +CompanyRevenue,BY,190 +CompanyPaysOutFull,BY,190 +Payout,Alice,133,7,10 +Payout,Bob,38,2,10 +Payout,Charlie,19,1,10 +PRICE_MOVES_LOG,BY,208,I1,232,J1 + +CompanyOperates,SX,Charlie +CompanyRevenue,SX,220 +CompanyPaysOutFull,SX,220 +Payout,Alice,44,2,10 +Payout,Bob,66,3,10 +Payout,Charlie,110,5,10 +PRICE_MOVES_LOG,SX,148,F1,166,G1 +BuysTrain,SX,4,IPO,360 +All 4-trains are sold out, 4+4-trains now available + +CompanyOperates,BA,Bob +CompanyRevenue,BA,120 +CompanyPaysOutFull,BA,120 +Payout,Alice,12,1,10 +Payout,Bob,72,6,10 +Payout,Charlie,36,3,10 +PRICE_MOVES_LOG,BA,86,B3,92,C3 +BuysTrain,BA,4+4,IPO,440 +All 4+4-trains are sold out, 5-trains now available +FirstTrainBought,4+4 +StartOfPhase,4+4 +StartFormationRound,PR +START_MERGED_COMPANY,PR,154,154 +FloatsWithCash,PR,616 +MERGE_MINOR_LOG,Alice,M2,PR,0,0 +GetShareForMinor,Alice,10,PR,IPO,M2 +ExchangesBaseToken,PR,M2,E19/1 + +EndOfFormationRound,PR,OperatingRound 7.1 + +CompanyOperates,HE,Charlie +LaysTileAt,HE,8,L4,NW +LAYS_TOKEN_ON,HE,G5,60 +CompanyRevenue,HE,260 +CompanyPaysOutFull,HE,260 +Payout,Alice,52,2,10 +Payout,Bob,78,3,10 +Payout,Charlie,130,5,10 +PRICE_MOVES_LOG,HE,86,B3,92,C3 + +CompanyOperates,WT,Alice +LaysTileAt,WT,69,M7,SE +CompanyRevenue,WT,280 +CompanyWithholds,WT,280 +PRICE_MOVES_LOG,WT,72,A5,64,A6 + +EndOfOperatingRound,7.1 +ORWorthIncrease,Alice,7.1,741 +ORWorthIncrease,Bob,7.1,442 +ORWorthIncrease,Charlie,7.1,516 +Has,M1,1 +Has,M3,0 +Has,M4,45 +Has,M5,0 +Has,M6,1 +Has,BY,250 +Has,SX,175 +Has,BA,24 +Has,WT,592 +Has,HE,369 +Has,PR,616 +Has,Alice,369 +Has,Bob,848 +Has,Charlie,745 +StartFormationRound,PR + +EndOfFormationRoundNoInterrupt,PR +START_OR,7.2 +ReceivesFor,Alice,10,OBB +ReceivesFor,Bob,15,PfB +ReceivesFor,Bob,25,BB +ReceivesFor,Charlie,30,HB + +CompanyOperates,M1,Bob +CompanyDoesNotPayDividend,M1 +BuysTrain,M1,3+3,BA,1 + +CompanyOperates,M3,Bob +CompanyRevenue,M3,90 +CompanySplits,M3,90 +M3 receives 45 +Payout,Bob,45,1,100 + +CompanyOperates,M4,Charlie +CompanyRevenue,M4,90 +CompanySplits,M4,90 +M4 receives 45 +Payout,Charlie,45,1,100 + +CompanyOperates,M5,Charlie +CompanyDoesNotPayDividend,M5 + +CompanyOperates,M6,Bob +CompanyDoesNotPayDividend,M6 +BuysTrain,M6,3,SX,1 + +CompanyOperates,BY,Alice +CompanyRevenue,BY,110 +CompanyPaysOutFull,BY,110 +Payout,Alice,77,7,10 +Payout,Bob,22,2,10 +Payout,Charlie,11,1,10 +PRICE_MOVES_LOG,BY,232,J1,258,K1 + +CompanyOperates,SX,Charlie +CompanyRevenue,SX,240 +CompanyPaysOutFull,SX,240 +Payout,Alice,48,2,10 +Payout,Bob,72,3,10 +Payout,Charlie,120,5,10 +PRICE_MOVES_LOG,SX,166,G1,186,H1 + +CompanyOperates,PR,Alice +CompanyDoesNotPayDividend,PR +PRICE_MOVES_LOG,PR,154,I4,138,H4 +BuysTrain,PR,5,IPO,500 +FirstTrainBought,5 +StartOfPhase,5 +PrivateCloses,OBB +PrivateCloses,PfB +StartFormationRound,PR +MERGE_MINOR_LOG,Bob,BB,PR,no,no +GetShareForMinor,Bob,10,PR,IPO,BB +PrivateCloses,BB +MERGE_MINOR_LOG,Charlie,HB,PR,no,no +GetShareForMinor,Charlie,10,PR,IPO,HB +PrivateCloses,HB +MERGE_MINOR_LOG,Bob,M1,PR,0,1 +GetShareForMinor,Bob,5,PR,IPO,M1 +ExchangesBaseToken,PR,M1,H2/1 +MERGE_MINOR_LOG,Bob,M3,PR,45,1 +GetShareForMinor,Bob,5,PR,IPO,M3 +ExchangesBaseToken,PR,M3,F14/1 +MERGE_MINOR_LOG,Charlie,M4,PR,90,1 +GetShareForMinor,Charlie,10,PR,IPO,M4 +ExchangesBaseToken,PR,M4,G5/1 +MERGE_MINOR_LOG,Charlie,M5,PR,0,0 +GetShareForMinor,Charlie,5,PR,IPO,M5 +MERGE_MINOR_LOG,Bob,M6,PR,0,1 +GetShareForMinor,Bob,5,PR,IPO,M6 +ExchangesBaseToken,PR,M6,C11/1 +CompanyDiscardsTrain,PR,3 +CompanyDiscardsTrain,PR,3 + +EndOfFormationRound,PR,OperatingRound 7.2 +IS_NOW_PRES_OF,Bob,PR + +CompanyOperates,BA,Bob |