From: Erik V. <ev...@us...> - 2012-02-16 15:35:33
|
rails/game/GameManager.java | 7 rails/game/GameManagerI.java | 4 rails/game/specific/_1835/StartRound_1835.java | 16 - test/data/test/1835_NatSingleShare.report | 339 +++++++++++++++++++--- test/data/test/1835_SwapPresForDoubleShare.report | 339 +++++++++++++++++++--- 5 files changed, 629 insertions(+), 76 deletions(-) New commits: commit f311be5af549febd7e4d81cefaf2097c0d07c7e6 Merge: 190aa16 366e5cf Author: Erik Vos <eri...@xs...> Date: Thu Feb 16 16:35:19 2012 +0100 Merge branch 'master' of ssh://rails.git.sourceforge.net/gitroot/rails/rails commit 190aa165b93f5a1ab9b4454d9906e6ddb1979e99 Author: Erik Vos <eri...@xs...> Date: Thu Feb 16 16:32:58 2012 +0100 Fixed start round number management for 1835 JUnit testing. The start round number has been moved from StartRound_1835 to GameManager and is now a generic feature, though it is only used yet in 1835. It is no longer Java-static. The same applies to the turn number, which stayed in StartRound_1835. The NatDoubleShare test case now works. The NatSingleShare and SwapPresForDoubleShare cases were wrong and have been replaced. diff --git a/rails/game/GameManager.java b/rails/game/GameManager.java index f35ed6a..c147924 100644 --- a/rails/game/GameManager.java +++ b/rails/game/GameManager.java @@ -110,6 +110,9 @@ public class GameManager implements ConfigurableComponentI, GameManagerI { protected State currentRound = new State("CurrentRound", Round.class); protected RoundI interruptedRound = null; + /** Number of the current start round. Currently only used in some 1835 variants. */ + protected IntegerState startRoundNumber = new IntegerState ("StartRoundNumber", 0); + protected IntegerState srNumber = new IntegerState ("SRNumber"); protected IntegerState absoluteORNumber = @@ -721,6 +724,7 @@ public class GameManager implements ConfigurableComponentI, GameManagerI { System.exit(1); } StartRound startRound = createRound (startRoundClass); + startRoundNumber.add(1); startRound.start (); } @@ -805,6 +809,9 @@ public class GameManager implements ConfigurableComponentI, GameManagerI { return numOfORs.getText(); } + public int getStartRoundNumber () { + return startRoundNumber.intValue(); + } /* (non-Javadoc) * @see rails.game.GameManagerI#getSRNumber() */ diff --git a/rails/game/GameManagerI.java b/rails/game/GameManagerI.java index 06b404c..92f2a88 100644 --- a/rails/game/GameManagerI.java +++ b/rails/game/GameManagerI.java @@ -41,6 +41,8 @@ public interface GameManagerI extends MoveableHolder, ConfigurableComponentI { public int getRelativeORNumber(); public int getAbsoluteORNumber (); + public int getStartRoundNumber (); + public abstract int getSRNumber(); public abstract void startShareSellingRound(Player player, int cashToRaise, @@ -101,7 +103,7 @@ public interface GameManagerI extends MoveableHolder, ConfigurableComponentI { public abstract RoundI getCurrentRound(); public abstract ModelObject getCurrentRoundModel(); - + public abstract ModelObject getCurrentPlayerModel(); /** diff --git a/rails/game/specific/_1835/StartRound_1835.java b/rails/game/specific/_1835/StartRound_1835.java index 0768fce..f0f6b98 100644 --- a/rails/game/specific/_1835/StartRound_1835.java +++ b/rails/game/specific/_1835/StartRound_1835.java @@ -16,10 +16,7 @@ import rails.game.state.IntegerState; public class StartRound_1835 extends StartRound { /* To control the player sequence in the Clemens and Snake variants */ - private static IntegerState turn = new IntegerState("TurnNumber", 0); - - private static IntegerState startRoundNumber = - new IntegerState("StartRoundNumber", 0); + private IntegerState turn = new IntegerState("TurnNumber", 0); /* Additional variants */ public static final String CLEMENS_VARIANT = "Clemens"; @@ -41,7 +38,6 @@ public class StartRound_1835 extends StartRound { @Override public void start() { super.start(); - startRoundNumber.add(1); if (variant.equalsIgnoreCase(CLEMENS_VARIANT)) { setCurrentPlayerIndex (numPlayers-1); @@ -173,7 +169,7 @@ public class StartRound_1835 extends StartRound { /* Select the player that has the turn. */ - if (startRoundNumber.intValue() == 1) { + if (gameManager.getStartRoundNumber() == 1) { /* * Some variants have a reversed player order in the first or second * cycle of the first round (a cycle spans one turn of all players). @@ -203,9 +199,11 @@ public class StartRound_1835 extends StartRound { setCurrentPlayerIndex(newIndex); Player newPlayer = getCurrentPlayer(); log.debug("Game turn has moved from " + oldPlayer.getName() - + " to " + newPlayer.getName() + " [startRound=" - + startRoundNumber + " cycle=" + cycleNumber + " turn=" - + turnNumber + " newIndex=" + newIndex + "]"); + + " to " + newPlayer.getName() + + " [startRound=" + gameManager.getStartRoundNumber() + + " cycle=" + cycleNumber + + " turn=" + turnNumber + + " newIndex=" + newIndex + "]"); } else { diff --git a/test/data/test/1835_NatSingleShare.report b/test/data/test/1835_NatSingleShare.report index f1eadbb..a7d01c4 100644 --- a/test/data/test/1835_NatSingleShare.report +++ b/test/data/test/1835_NatSingleShare.report @@ -10,43 +10,43 @@ StartOfInitialRound HasPriority,T1 BuysItemFor,T3,M5,80 FloatsWithCash,M5,80 -BuysItemFor,T1,M1,80 +BuysItemFor,T2,M1,80 FloatsWithCash,M1,80 -BuysItemFor,T2,M3,80 +BuysItemFor,T1,M3,80 FloatsWithCash,M3,80 -BuysItemFor,T3,M6,80 +BuysItemFor,T1,M6,80 FloatsWithCash,M6,80 -BuysItemFor,T1,M2,170 +BuysItemFor,T2,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 +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,BB,130 -BuysItemFor,T1,NF,100 -ALSO_GETS,T1,CERT_NAME,BY,10 -BuysItemFor,T2,M4,160 +BuysItemFor,T3,M4,160 FloatsWithCash,M4,160 -CannotBuyAnything,T3 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,90 -Has,T2,56 -Has,T3,120 +Has,T1,120 +Has,T2,90 +Has,T3,56 START_OR,0.0 -ReceivesFor,T1,5,NF -ReceivesFor,T2,10,OBB -ReceivesFor,T3,20,LD -ReceivesFor,T3,25,BB -ReceivesFor,T1,30,HB +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 @@ -54,13 +54,14 @@ Has,M3,80 Has,M4,160 Has,M5,80 Has,M6,80 -Has,T1,125 -Has,T2,66 -Has,T3,165 +Has,T1,165 +Has,T2,125 +Has,T3,66 StartOfInitialRound -HasPriority,T3 -BuysItemFor,T3,PfB,150 -ALSO_GETS,T3,CERT_NAME,BY,10 +HasPriority,T1 +CannotBuyAnything,T3 +BuysItemFor,T1,PfB,150 +ALSO_GETS,T1,CERT_NAME,BY,10 FloatsWithCash,BY,460 Has,M1,80 Has,M2,170 @@ -69,9 +70,281 @@ Has,M4,160 Has,M5,80 Has,M6,80 Has,BY,460 -Has,T1,125 -Has,T2,66 -Has,T3,15 +Has,T1,15 +Has,T2,125 +Has,T3,66 StartStockRound,1 -HasPriority,T1 -LoadInterrupted,13 +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 + +CompanyOperates,BY,T3 +LoadInterrupted,121 diff --git a/test/data/test/1835_SwapPresForDoubleShare.report b/test/data/test/1835_SwapPresForDoubleShare.report index f1eadbb..a7d01c4 100644 --- a/test/data/test/1835_SwapPresForDoubleShare.report +++ b/test/data/test/1835_SwapPresForDoubleShare.report @@ -10,43 +10,43 @@ StartOfInitialRound HasPriority,T1 BuysItemFor,T3,M5,80 FloatsWithCash,M5,80 -BuysItemFor,T1,M1,80 +BuysItemFor,T2,M1,80 FloatsWithCash,M1,80 -BuysItemFor,T2,M3,80 +BuysItemFor,T1,M3,80 FloatsWithCash,M3,80 -BuysItemFor,T3,M6,80 +BuysItemFor,T1,M6,80 FloatsWithCash,M6,80 -BuysItemFor,T1,M2,170 +BuysItemFor,T2,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 +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,BB,130 -BuysItemFor,T1,NF,100 -ALSO_GETS,T1,CERT_NAME,BY,10 -BuysItemFor,T2,M4,160 +BuysItemFor,T3,M4,160 FloatsWithCash,M4,160 -CannotBuyAnything,T3 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,90 -Has,T2,56 -Has,T3,120 +Has,T1,120 +Has,T2,90 +Has,T3,56 START_OR,0.0 -ReceivesFor,T1,5,NF -ReceivesFor,T2,10,OBB -ReceivesFor,T3,20,LD -ReceivesFor,T3,25,BB -ReceivesFor,T1,30,HB +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 @@ -54,13 +54,14 @@ Has,M3,80 Has,M4,160 Has,M5,80 Has,M6,80 -Has,T1,125 -Has,T2,66 -Has,T3,165 +Has,T1,165 +Has,T2,125 +Has,T3,66 StartOfInitialRound -HasPriority,T3 -BuysItemFor,T3,PfB,150 -ALSO_GETS,T3,CERT_NAME,BY,10 +HasPriority,T1 +CannotBuyAnything,T3 +BuysItemFor,T1,PfB,150 +ALSO_GETS,T1,CERT_NAME,BY,10 FloatsWithCash,BY,460 Has,M1,80 Has,M2,170 @@ -69,9 +70,281 @@ Has,M4,160 Has,M5,80 Has,M6,80 Has,BY,460 -Has,T1,125 -Has,T2,66 -Has,T3,15 +Has,T1,15 +Has,T2,125 +Has,T3,66 StartStockRound,1 -HasPriority,T1 -LoadInterrupted,13 +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 + +CompanyOperates,BY,T3 +LoadInterrupted,121 |