You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
(46) |
Dec
(57) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(51) |
Feb
(10) |
Mar
|
Apr
|
May
(14) |
Jun
|
Jul
(13) |
Aug
(30) |
Sep
(83) |
Oct
(56) |
Nov
(148) |
Dec
(107) |
2010 |
Jan
(260) |
Feb
(164) |
Mar
(183) |
Apr
(99) |
May
(160) |
Jun
(40) |
Jul
(33) |
Aug
(48) |
Sep
(22) |
Oct
(24) |
Nov
(1) |
Dec
(12) |
2011 |
Jan
(6) |
Feb
(15) |
Mar
(13) |
Apr
(37) |
May
(27) |
Jun
(29) |
Jul
(33) |
Aug
(20) |
Sep
(17) |
Oct
(20) |
Nov
(33) |
Dec
(17) |
2012 |
Jan
(39) |
Feb
(38) |
Mar
(20) |
Apr
(21) |
May
(17) |
Jun
(22) |
Jul
(16) |
Aug
(3) |
Sep
(9) |
Oct
(10) |
Nov
|
Dec
|
From: Stefan F. <ste...@us...> - 2011-12-23 10:01:24
|
buildRails.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) New commits: commit b6c5aed6c24e02db72c10a91be4be734788fd898 Author: Stefan Frey <ste...@we...> Date: Fri Dec 23 11:04:51 2011 +0100 added fix to publish readme.txt on sourceforge automatically diff --git a/buildRails.xml b/buildRails.xml index 3185488..d7dd74f 100644 --- a/buildRails.xml +++ b/buildRails.xml @@ -130,7 +130,7 @@ </manifest> </jar> <delete dir="jar"/> - <tar destfile="../rails-${version}.tar.gz" compression="gzip"> + <tar destfile="../../rails-${version}.tar.gz" compression="gzip"> <!-- adds executable flags to rails.sh, has to be done again for the tar (see above) --> <tarfileset dir="." filemode="755"> <include name="rails-${version}/rails.sh"/> @@ -140,10 +140,10 @@ <exclude name="rails-${version}/rails.sh"/> </tarfileset> </tar> - <zip destfile="../rails-${version}.zip" basedir="." includes="rails-${version}/**"/> + <zip destfile="../../rails-${version}.zip" basedir="." includes="rails-${version}/**"/> </target> <target name="publish-release"> - <exec executable="rsync" dir=".." failonerror="true"> + <exec executable="rsync" dir="../.." failonerror="true"> <arg value="-avP"/> <arg value="-e"/> <arg value="ssh"/> @@ -151,8 +151,8 @@ <arg value="rails-${version}.tar.gz"/> <arg value="${sf.user},rails@${sf.uri}${sf.filedir}${version}/"/> </exec> - <exec executable="scp" dir="../rails-${version}" failonerror="true"> - <arg value="Readme.txt"/> + <exec executable="scp" dir="../../rails-${version}" failonerror="true"> + <arg value="readme.txt"/> <arg value="${sf.user},rails@${sf.uri}${sf.filedir}${version}/"/> </exec> </target> |
From: Stefan F. <ste...@us...> - 2011-12-23 09:55:38
|
version.number | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit 3c9bf2cb422804c563a94ab125e52a8cb16189cd Author: Stefan Frey <ste...@we...> Date: Fri Dec 23 10:58:00 2011 +0100 prepared for release 1.6.0 diff --git a/version.number b/version.number index 4dd99d7..79c0ece 100644 --- a/version.number +++ b/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.5.5 +version=1.6.0 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file |
From: Stefan F. <ste...@us...> - 2011-12-23 09:53:05
|
dev/null |binary test/data/real/18EU_A.report | 2099 ------------------------------------------- test/data/real/18GA_A.report | 415 -------- 3 files changed, 2514 deletions(-) New commits: commit d9159f4c53dd8688d81408c31bc1c8f6716d4cba Author: Stefan Frey <ste...@we...> Date: Fri Dec 23 10:55:54 2011 +0100 Removed 18EU_A and 18GA_A test games. diff --git a/test/data/real/18EU_A.rails b/test/data/real/18EU_A.rails deleted file mode 100644 index 74bd1d4..0000000 Binary files a/test/data/real/18EU_A.rails and /dev/null differ diff --git a/test/data/real/18EU_A.report b/test/data/real/18EU_A.report deleted file mode 100644 index de4b73f..0000000 --- a/test/data/real/18EU_A.report +++ /dev/null @@ -1,2099 +0,0 @@ -GameIs,18EU -PlayerIs,1,Chris -PlayerIs,2,Joakim -PlayerIs,3,Joshua -PlayerIs,4,Phil -PlayerIs,5,Ed -PlayerIs,6,Arne -PlayerCash,250 -BankHas,10500 -StartOfPhase,2 -BankSizeIs,10500 -StartOfInitialRound -HasPriority,Chris - -SelectForAuctioning,Chris,11 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,90 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,80 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,70 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,60 -PASSES,Chris -BuysItemFor,Joakim,11,60 -Floats,11 - -SelectForAuctioning,Joakim,8 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,90 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,80 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,70 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,60 -BuysItemFor,Joakim,8,60 -Floats,8 - -SelectForAuctioning,Joshua,9 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,90 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,80 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,70 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -BuysItemFor,Chris,9,70 -Floats,9 - -SelectForAuctioning,Phil,14 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,14,90 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,14,80 -BuysItemFor,Phil,14,80 -Floats,14 - -SelectForAuctioning,Ed,1 -PASSES,Arne -PASSES,Chris -BID_ITEM,Joakim,100,1 -BID_ITEM,Joshua,105,1 -PASSES,Phil -PASSES,Ed -BID_ITEM,Arne,110,1 -PASSES,Chris -BID_ITEM,Joakim,115,1 -BID_ITEM,Joshua,120,1 -PASSES,Arne -BID_ITEM,Joakim,130,1 -PASSES,Joshua -BuysItemFor,Joakim,1,130 -Floats,1 - -SelectForAuctioning,Arne,7 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -ITEM_PRICE_REDUCED,7,90 -PASSES,Arne -BuysItemFor,Chris,7,90 -Floats,7 - -SelectForAuctioning,Chris,2 -PASSES,Joakim -BID_ITEM,Joshua,100,2 -PASSES,Phil -PASSES,Ed -BID_ITEM,Arne,105,2 -PASSES,Chris -PASSES,Joakim -BID_ITEM,Joshua,110,2 -BID_ITEM,Arne,115,2 -BID_ITEM,Joshua,120,2 -BID_ITEM,Arne,125,2 -PASSES,Joshua -BuysItemFor,Arne,2,125 -Floats,2 - -SelectForAuctioning,Joakim,3 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,3,90 -PASSES,Joakim -BuysItemFor,Joshua,3,90 -Floats,3 - -SelectForAuctioning,Joshua,12 -PASSES,Phil -BID_ITEM,Ed,100,12 -BID_ITEM,Arne,105,12 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BID_ITEM,Ed,110,12 -BID_ITEM,Arne,115,12 -BID_ITEM,Ed,120,12 -BID_ITEM,Arne,125,12 -PASSES,Ed -BuysItemFor,Arne,12,125 -Floats,12 - -SelectForAuctioning,Phil,5 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,90 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,80 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,70 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,60 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -BuysItemFor,Joshua,5,60 -Floats,5 - -SelectForAuctioning,Ed,4 -BID_ITEM,Ed,100,4 -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BuysItemFor,Ed,4,100 -Floats,4 - -SelectForAuctioning,Arne,13 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BID_ITEM,Ed,100,13 -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -BID_ITEM,Phil,110,13 -BID_ITEM,Ed,125,13 -PASSES,Phil -BuysItemFor,Ed,13,125 -Floats,13 - -SelectForAuctioning,Chris,15 -PASSES,Joakim -BID_ITEM,Joshua,100,15 -BID_ITEM,Phil,105,15 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -BuysItemFor,Phil,15,105 -Floats,15 - -SelectForAuctioning,Joakim,10 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,10,90 -PASSES,Joakim -BuysItemFor,Joshua,10,90 -Floats,10 - -SelectForAuctioning,Joshua,6 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,90 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,80 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,70 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -BuysItemFor,Chris,6,70 -All 2-trains are sold out, 3-trains now available -Floats,6 -Has,1,0 -Has,2,0 -Has,3,0 -Has,4,0 -Has,5,0 -Has,6,0 -Has,7,0 -Has,8,0 -Has,9,0 -Has,10,0 -Has,11,0 -Has,12,0 -Has,13,0 -Has,14,0 -Has,15,0 -Has,Chris,20 -Has,Joakim,0 -Has,Joshua,10 -Has,Phil,65 -Has,Ed,25 -Has,Arne,0 -START_OR,0.1 - -CompanyOperates,1,Joakim -LaysTileAt,1,8,I2,SW -LaysTileAt,1,58,G2,S -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -LaysTileAt,2,201,H3,N -LaysTileAt,2,58,F3,NE -CompanyRevenue,2,40 -CompanySplits,2,40 -2 receives 20 -Payout,Arne,20,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,8,K2,S -LaysTileAt,3,58,M2,N -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,202,G10,NW -LaysTileAt,4,4,H9,SW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,201,S8,SW -LaysTileAt,5,8,U8,SW -CompanyRevenue,5,60 -CompanySplits,5,60 -5 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,6,Chris -LaysTileAt,6,58,L11,S -LaysTileAt,6,57,K10,NW -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,9,F9,SW -LaysTileAt,7,58,G8,NW -CompanyRevenue,7,40 -CompanySplits,7,40 -7 receives 20 -Payout,Chris,20,1,100 - -CompanyOperates,8,Joakim -LaysTileAt,8,202,P13,NW -LaysTileAt,8,9,Q12,SW -CompanyRevenue,8,60 -CompanySplits,8,60 -8 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,9,Chris -LaysTileAt,9,58,D11,SE -LaysTileAt,9,4,E12,NW -CompanyRevenue,9,50 -CompanySplits,9,50 -9 receives 25 -Payout,Chris,25,1,100 - -CompanyOperates,10,Joshua -LaysTileAt,10,201,R5,S -LaysTileAt,10,57,T5,S -CompanyRevenue,10,60 -CompanySplits,10,60 -10 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,11,Joakim -LaysTileAt,11,7,Q10,NE -LaysTileAt,11,8,R11,NW -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -LaysTileAt,12,202,C4,NW -LaysTileAt,12,3,D3,NE -CompanyRevenue,12,40 -CompanySplits,12,40 -12 receives 20 -Payout,Arne,20,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,201,L7,N -LaysTileAt,13,58,J7,S -CompanyRevenue,13,40 -CompanySplits,13,40 -13 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,14,Phil -LaysTileAt,14,201,M4,S -LaysTileAt,14,58,O4,SW -CompanyRevenue,14,40 -CompanySplits,14,40 -14 receives 20 -Payout,Phil,20,1,100 - -CompanyOperates,15,Phil -LaysTileAt,15,202,Q2,SW -LaysTileAt,15,4,P3,SW -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -EndOfOperatingRound,0.1 -ORWorthIncrease,Chris,0.1,75 -ORWorthIncrease,Joakim,0.1,105 -ORWorthIncrease,Joshua,0.1,85 -ORWorthIncrease,Phil,0.1,60 -ORWorthIncrease,Ed,0.1,40 -ORWorthIncrease,Arne,0.1,40 -Has,1,45 -Has,2,20 -Has,3,25 -Has,4,20 -Has,5,30 -Has,6,30 -Has,7,20 -Has,8,30 -Has,9,25 -Has,10,30 -Has,11,30 -Has,12,20 -Has,13,20 -Has,14,20 -Has,15,40 -Has,Chris,95 -Has,Joakim,105 -Has,Joshua,95 -Has,Phil,125 -Has,Ed,65 -Has,Arne,40 -START_OR,0.2 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -LaysTileAt,2,3,E4,SW -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,7,N3,NW -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,8,I8,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,4,T7,SW -CompanyRevenue,5,70 -CompanySplits,5,70 -5 receives 35 -Payout,Joshua,35,1,100 - -CompanyOperates,6,Chris -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,4,F7,NW -CompanyRevenue,7,50 -CompanySplits,7,50 -7 receives 25 -Payout,Chris,25,1,100 - -CompanyOperates,8,Joakim -CompanyRevenue,8,60 -CompanySplits,8,60 -8 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,9,Chris -LaysTileAt,9,8,F13,NW -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -LaysTileAt,10,8,S6,S -CompanyRevenue,10,60 -CompanySplits,10,60 -10 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -LaysTileAt,12,9,D5,NW -CompanyRevenue,12,90 -CompanySplits,12,90 -12 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,57,I6,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -CompanyRevenue,14,80 -CompanySplits,14,80 -14 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,15,Phil -LaysTileAt,15,57,S2,S -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -EndOfOperatingRound,0.2 -ORWorthIncrease,Chris,0.2,90 -ORWorthIncrease,Joakim,0.2,105 -ORWorthIncrease,Joshua,0.2,90 -ORWorthIncrease,Phil,0.2,80 -ORWorthIncrease,Ed,0.2,50 -ORWorthIncrease,Arne,0.2,90 -Has,1,90 -Has,2,65 -Has,3,50 -Has,4,40 -Has,5,65 -Has,6,60 -Has,7,45 -Has,8,60 -Has,9,60 -Has,10,60 -Has,11,60 -Has,12,65 -Has,13,50 -Has,14,60 -Has,15,80 -Has,Chris,185 -Has,Joakim,210 -Has,Joshua,185 -Has,Phil,205 -Has,Ed,115 -Has,Arne,130 -StartStockRound,1 -HasPriority,Chris -Autopasses,Chris -START_COMPANY_LOG,Joakim,KKÃB,70,140,2,20,KKÃB -MERGE_MINOR_LOG,Joakim,8,KKÃB,60,1 -GetShareForMinor,Joakim,10,KKÃB,IPO,8 -SharesPutInTreasury,70,KKÃB -PaysForTokens,KKÃB,100,5 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Ed,10,KKÃB,KKÃB,70 -Floats,KKÃB -BUY_SHARE_LOG,Arne,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Chris,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Joakim,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Joshua,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 -Autopasses,Ed -Autopasses,Arne -Autopasses,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil - -END_SR,1 -PRICE_MOVES_LOG,KKÃB,70,C5,75,C4 -SoldOut,KKÃB,70,C5,75,C4 -Has,1,90 -Has,2,65 -Has,3,50 -Has,4,40 -Has,5,65 -Has,6,60 -Has,7,45 -Has,9,60 -Has,10,60 -Has,11,60 -Has,12,65 -Has,13,50 -Has,14,60 -Has,15,80 -Has,KKÃB,590 -Has,Chris,115 -Has,Joakim,0 -Has,Joshua,115 -Has,Phil,65 -Has,Ed,45 -Has,Arne,60 -START_OR,1.1 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,8,L3,NE -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,9,H7,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,3,U6,N -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -LaysTileAtFor,6,9,J9,NW,60 -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,9,E6,NW -CompanyRevenue,7,80 -CompanySplits,7,80 -7 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,9,Chris -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -CompanyRevenue,12,110 -CompanySplits,12,110 -12 receives 55 -Payout,Arne,55,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,9,H5,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -LaysTileAtFor,14,3,N5,NW,60 -CompanyRevenue,14,90 -CompanySplits,14,90 -14 receives 45 -Payout,Phil,45,1,100 - -CompanyOperates,15,Phil -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,KKÃB,Joakim -CompanyRevenue,KKÃB,60 -CompanyPaysOutFull,KKÃB,60 -Payout,Joakim,24,4,10 -Payout,Phil,12,2,10 -Payout,Chris,6,1,10 -Payout,Joshua,6,1,10 -Payout,Arne,6,1,10 -Payout,Ed,6,1,10 -BuysTrain,KKÃB,3,IPO,200 -FirstTrainBought,3 -StartOfPhase,3 -BuysTrain,KKÃB,P,Pool,100 - -EndOfOperatingRound,1.1 -ORWorthIncrease,Chris,1.1,111 -ORWorthIncrease,Joakim,1.1,99 -ORWorthIncrease,Joshua,1.1,111 -ORWorthIncrease,Phil,1.1,97 -ORWorthIncrease,Ed,1.1,56 -ORWorthIncrease,Arne,1.1,106 -Has,1,135 -Has,2,110 -Has,3,75 -Has,4,60 -Has,5,105 -Has,6,30 -Has,7,85 -Has,9,95 -Has,10,100 -Has,11,90 -Has,12,120 -Has,13,80 -Has,14,45 -Has,15,120 -Has,KKÃB,290 -Has,Chris,226 -Has,Joakim,99 -Has,Joshua,226 -Has,Phil,162 -Has,Ed,101 -Has,Arne,166 -START_OR,1.2 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 -BuysTrain,1,P,Pool,100 - -CompanyOperates,2,Arne -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 -BuysTrain,2,P,Pool,100 - -CompanyOperates,3,Joshua -LaysTileAtFor,3,9,K4,SW,60 -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,9,G6,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -CompanyRevenue,7,80 -CompanySplits,7,80 -7 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,9,Chris -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -CompanyRevenue,12,110 -CompanySplits,12,110 -12 receives 55 -Payout,Arne,55,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,57,G4,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -LaysTileAt,14,58,L5,NE -CompanyRevenue,14,100 -CompanySplits,14,100 -14 receives 50 -Payout,Phil,50,1,100 - -CompanyOperates,15,Phil -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,581,N11,NE -CompanyRevenue,KKÃB,190 -CompanyPaysOutFull,KKÃB,190 -Payout,Joakim,76,4,10 -Payout,Chris,19,1,10 -Payout,Joshua,19,1,10 -Payout,Phil,38,2,10 -Payout,Arne,19,1,10 -Payout,Ed,19,1,10 -PRICE_MOVES_LOG,KKÃB,75,C4,82,D4 - -EndOfOperatingRound,1.2 -ORWorthIncrease,Chris,1.2,131 -ORWorthIncrease,Joakim,1.2,179 -ORWorthIncrease,Joshua,1.2,131 -ORWorthIncrease,Phil,1.2,142 -ORWorthIncrease,Ed,1.2,76 -ORWorthIncrease,Arne,1.2,126 -Has,1,80 -Has,2,55 -Has,3,40 -Has,4,80 -Has,5,145 -Has,6,60 -Has,7,125 -Has,9,130 -Has,10,140 -Has,11,120 -Has,12,175 -Has,13,110 -Has,14,95 -Has,15,160 -Has,KKÃB,290 -Has,Chris,350 -Has,Joakim,250 -Has,Joshua,350 -Has,Phil,290 -Has,Ed,170 -Has,Arne,285 -StartStockRound,2 -HasPriority,Ed -PASSES,Ed -SELL_SHARE_LOG,Arne,10,KKÃB,82 -PRICE_MOVES_LOG,KKÃB,82,D4,75,D5 -START_COMPANY_LOG,Arne,SNCF,100,200,2,20,SNCF -MERGE_MINOR_LOG,Arne,2,SNCF,55,2 -GetShareForMinor,Arne,10,SNCF,IPO,2 -SharesPutInTreasury,70,SNCF -PaysForTokens,SNCF,100,5 -SELL_SHARE_LOG,Chris,10,KKÃB,75 -PRICE_MOVES_LOG,KKÃB,75,D5,70,D6 -START_COMPANY_LOG,Chris,DR,100,200,2,20,DR -MERGE_MINOR_LOG,Chris,7,DR,125,1 -GetShareForMinor,Chris,10,DR,IPO,7 -SharesPutInTreasury,70,DR -PaysForTokens,DR,100,5 -BUY_SHARE_LOG,Joakim,10,SNCF,SNCF,100 -START_COMPANY_LOG,Joshua,NS,82,164,2,20,NS -MERGE_MINOR_LOG,Joshua,3,NS,40,1 -GetShareForMinor,Joshua,10,NS,IPO,3 -SharesPutInTreasury,70,NS -PaysForTokens,NS,100,5 -START_COMPANY_LOG,Phil,KBS,90,180,2,20,KBS -MERGE_MINOR_LOG,Phil,15,KBS,160,1 -GetShareForMinor,Phil,10,KBS,IPO,15 -SharesPutInTreasury,70,KBS -PaysForTokens,KBS,100,5 -BUY_SHARE_LOG,Ed,10,KKÃB,Pool,70 -MERGE_MINOR_LOG,Arne,12,SNCF,175,1 -GetShareForMinor,Arne,10,SNCF,SNCF,12 -ExchangesBaseToken,SNCF,12,C4 -MinorCloses,12 -Floats,SNCF -MERGE_MINOR_LOG,Chris,9,DR,130,1 -GetShareForMinor,Chris,10,DR,DR,9 -ExchangesBaseToken,DR,9,E10 -MinorCloses,9 -BUY_SHARE_LOG,Joakim,10,KKÃB,Pool,70 -BUY_SHARE_LOG,Joshua,10,NS,NS,82 -BUY_SHARE_LOG,Phil,10,KBS,KBS,90 -BUY_SHARE_LOG,Ed,10,SNCF,SNCF,100 -BUY_SHARE_LOG,Arne,10,SNCF,SNCF,100 -BUY_SHARE_LOG,Chris,10,DR,DR,100 -Floats,DR -PASSES,Joakim -BUY_SHARE_LOG,Joshua,10,NS,NS,82 -Floats,NS -MERGE_MINOR_LOG,Phil,14,KBS,95,1 -GetShareForMinor,Phil,10,KBS,KBS,14 -ExchangesBaseToken,KBS,14,M4 -MinorCloses,14 -Floats,KBS -Autopasses,Ed -Autopasses,Arne -BUY_SHARE_LOG,Chris,10,DR,DR,100 -PASSES,Joakim -Autopasses,Joshua -Autopasses,Phil -Autopasses,Ed -Autopasses,Arne -Autopasses,Chris - -END_SR,2 -PRICE_MOVES_LOG,KKÃB,70,D6,75,D5 -SoldOut,KKÃB,70,D6,75,D5 -Has,1,80 -Has,4,80 -Has,5,145 -Has,6,60 -Has,10,140 -Has,11,120 -Has,13,110 -Has,NS,268 -Has,KBS,425 -Has,KKÃB,290 -Has,SNCF,630 -Has,DR,555 -Has,Chris,25 -Has,Joakim,80 -Has,Joshua,22 -Has,Phil,20 -Has,Ed,0 -Has,Arne,67 -START_OR,2.1 - -CompanyOperates,1,Joakim -CompanyRevenue,1,130 -CompanySplits,1,130 -1 receives 65 -Payout,Joakim,65,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,57,F5,NW -CompanyRevenue,4,60 -CompanySplits,4,60 -4 receives 30 -Payout,Ed,30,1,100 -BuysTrain,4,P,Pool,100 - -CompanyOperates,5,Joshua -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -LaysTileAtFor,6,8,M10,SE,60 -CompanyRevenue,6,80 -CompanySplits,6,80 -6 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,80 -CompanySplits,11,80 -11 receives 40 -Payout,Joakim,40,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,58,K6,SE -CompanyRevenue,13,100 -CompanySplits,13,100 -13 receives 50 -Payout,Ed,50,1,100 -BuysTrain,13,P,Pool,100 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,141,G2,N -CompanyRevenue,SNCF,240 -CompanyPaysOutFull,SNCF,240 -Payout,Joakim,24,1,10 -Payout,Arne,120,5,10 -Payout,Ed,24,1,10 -Payout,SNCF,72,3,10 -PRICE_MOVES_LOG,SNCF,100,E3,110,F3 -BuysTrain,SNCF,3,IPO,200 - -CompanyOperates,DR,Chris -LaysTileAt,DR,581,E10,SE -CompanyRevenue,DR,190 -CompanyPaysOutFull,DR,190 -Payout,Chris,114,6,10 -Payout,DR,76,4,10 -PRICE_MOVES_LOG,DR,100,E3,110,F3 -BuysTrain,DR,3,IPO,200 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,576,M4,NW -CompanyRevenue,KBS,190 -CompanyPaysOutFull,KBS,190 -Payout,Phil,95,5,10 -Payout,KBS,95,5,10 -PRICE_MOVES_LOG,KBS,90,E4,100,F4 -BuysTrain,KBS,3,IPO,200 -BuysTrain,KBS,3,IPO,200 -All 3-trains are sold out, 4-trains now available - -CompanyOperates,NS,Joshua -LaysTileAt,NS,9,J5,SW -CompanyRevenue,NS,50 -CompanySplits,NS,50 -NS receives 20 -Payout,Joshua,15,5,10 -Payout,NS,15,5,10 -BuysTrain,NS,4,IPO,300 -FirstTrainBought,4 -StartOfPhase,4 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,577,P13,SE -CompanyRevenue,KKÃB,170 -CompanySplits,KKÃB,170 -KKÃB receives 80 -Payout,Phil,18,2,10 -Payout,Joakim,45,5,10 -Payout,Joshua,9,1,10 -Payout,Ed,18,2,10 -PRICE_MOVES_LOG,KKÃB,75,D5,82,E5 -BuysTrain,KKÃB,4,IPO,300 - -EndOfOperatingRound,2.1 -ORWorthIncrease,Chris,2.1,214 -ORWorthIncrease,Joakim,2.1,219 -ORWorthIncrease,Joshua,2.1,111 -ORWorthIncrease,Phil,2.1,177 -ORWorthIncrease,Ed,2.1,146 -ORWorthIncrease,Arne,2.1,170 -Has,1,145 -Has,4,10 -Has,5,185 -Has,6,40 -Has,10,180 -Has,11,160 -Has,13,60 -Has,NS,3 -Has,KBS,120 -Has,KKÃB,70 -Has,SNCF,502 -Has,DR,431 -Has,Chris,179 -Has,Joakim,254 -Has,Joshua,126 -Has,Phil,133 -Has,Ed,122 -Has,Arne,187 -START_OR,2.2 - -CompanyOperates,1,Joakim -CompanyDoesNotPayDividend,1 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,5,Joshua -CompanyDoesNotPayDividend,5 - -CompanyOperates,6,Chris -CompanyDoesNotPayDividend,6 - -CompanyOperates,10,Joshua -CompanyDoesNotPayDividend,10 - -CompanyOperates,11,Joakim -CompanyDoesNotPayDividend,11 -BuysTrain,11,3,KKÃB,160 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,143,F3,SW -LAYS_FREE_TOKEN_ON,SNCF,G4 -CompanyRevenue,SNCF,220 -CompanyPaysOutFull,SNCF,220 -Payout,Joakim,22,1,10 -Payout,Arne,110,5,10 -Payout,Ed,22,1,10 -Payout,SNCF,66,3,10 -PRICE_MOVES_LOG,SNCF,110,F3,122,G3 -BuysTrain,SNCF,4,IPO,300 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,D9,NW -CompanyRevenue,DR,100 -CompanyPaysOutFull,DR,100 -Payout,Chris,60,6,10 -Payout,DR,40,4,10 -BuysTrain,DR,4,IPO,300 -All 4-trains are sold out, 5-trains now available - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,80,L3,S -CompanyRevenue,KBS,270 -CompanyPaysOutFull,KBS,270 -Payout,Phil,135,5,10 -Payout,KBS,135,5,10 -PRICE_MOVES_LOG,KBS,100,F4,110,G4 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,82,Q10,NW -CompanyRevenue,KKÃB,170 -CompanySplits,KKÃB,170 -KKÃB receives 80 -Payout,Phil,18,2,10 -Payout,Joakim,45,5,10 -Payout,Joshua,9,1,10 -Payout,Ed,18,2,10 -PRICE_MOVES_LOG,KKÃB,82,E5,90,F5 -BuysTrain,KKÃB,3,11,1 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,14,I6,SW -LAYS_FREE_TOKEN_ON,NS,I6 -CompanyRevenue,NS,120 -CompanyPaysOutFull,NS,120 -Payout,Joshua,60,5,10 -Payout,NS,60,5,10 -PRICE_MOVES_LOG,NS,82,D4,90,E4 - -EndOfOperatingRound,2.2 -ORWorthIncrease,Chris,2.2,60 -ORWorthIncrease,Joakim,2.2,119 -ORWorthIncrease,Joshua,2.2,117 -ORWorthIncrease,Phil,2.2,219 -ORWorthIncrease,Ed,2.2,68 -ORWorthIncrease,Arne,2.2,170 -Has,1,145 -Has,4,10 -Has,5,185 -Has,6,40 -Has,10,180 -Has,11,1 -Has,13,60 -Has,NS,63 -Has,KBS,255 -Has,KKÃB,309 -Has,SNCF,268 -Has,DR,171 -Has,Chris,239 -Has,Joakim,321 -Has,Joshua,195 -Has,Phil,286 -Has,Ed,162 -Has,Arne,297 -StartStockRound,3 -HasPriority,Joakim -SELL_SHARE_LOG,Joakim,10,SNCF,122 -PRICE_MOVES_LOG,SNCF,122,G3,110,G4 -START_COMPANY_LOG,Joakim,SNCB,100,200,2,20,SNCB -MERGE_MINOR_LOG,Joakim,1,SNCB,145,0 -GetShareForMinor,Joakim,10,SNCB,IPO,1 -SharesPutInTreasury,70,SNCB -PaysForTokens,SNCB,100,5 -SELL_SHARE_LOG,Joshua,10,KKÃB,90 -START_COMPANY_LOG,Joshua,KPEV,90,180,2,20,KPEV -MERGE_MINOR_LOG,Joshua,5,KPEV,185,0 -GetShareForMinor,Joshua,10,KPEV,IPO,5 -SharesPutInTreasury,70,KPEV -PaysForTokens,KPEV,100,5 -BUY_SHARE_LOG,Phil,10,KBS,KBS,110 -BUY_SHARE_LOG,Ed,10,KBS,KBS,110 -BUY_SHARE_LOG,Arne,10,KKÃB,Pool,90 -SELL_SHARE_LOG,Chris,10,DR,110 -PRICE_MOVES_LOG,DR,110,F3,100,F4 -START_COMPANY_LOG,Chris,FS,82,164,2,20,FS -MERGE_MINOR_LOG,Chris,6,FS,40,0 -GetShareForMinor,Chris,10,FS,IPO,6 -SharesPutInTreasury,70,FS -PaysForTokens,FS,100,5 -BUY_SHARE_LOG,Joakim,10,SNCB,SNCB,100 -BUY_SHARE_LOG,Joshua,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Phil,10,SNCF,Pool,110 -PASSES,Ed -BUY_SHARE_LOG,Arne,10,NS,NS,90 -BUY_SHARE_LOG,Chris,10,FS,FS,82 -BUY_SHARE_LOG,Joakim,10,SNCB,SNCB,100 -Floats,SNCB -MERGE_MINOR_LOG,Joshua,10,KPEV,180,0 -GetShareForMinor,Joshua,10,KPEV,KPEV,10 -ExchangesBaseToken,KPEV,10,R5 -MinorCloses,10 -Floats,KPEV -PASSES,Phil -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,SNCF,SNCF,110 -BUY_SHARE_LOG,Chris,10,FS,FS,82 -Floats,FS -MERGE_MINOR_LOG,Joakim,11,FS,1,0 -GetShareForMinor,Joakim,10,FS,FS,11 -ExchangesBaseToken,FS,11,N11 -MinorCloses,11 -Autopasses,Joshua -Autopasses,Phil -Autopasses,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim - -END_SR,3 -PRICE_MOVES_LOG,KKÃB,90,F5,100,F4 -SoldOut,KKÃB,90,F5,100,F4 -Has,4,10 -Has,13,60 -Has,SNCB,445 -Has,NS,153 -Has,KBS,475 -Has,KPEV,535 -Has,KKÃB,309 -Has,FS,269 -Has,SNCF,378 -Has,DR,171 -Has,Chris,21 -Has,Joakim,43 -Has,Joshua,15 -Has,Phil,66 -Has,Ed,52 -Has,Arne,7 -START_OR,3.1 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,578,L7,NW -LAYS_FREE_TOKEN_ON,KBS,I6 -CompanyRevenue,KBS,290 -CompanyPaysOutFull,KBS,290 -Payout,Phil,174,6,10 -Payout,Ed,29,1,10 -Payout,KBS,87,3,10 -PRICE_MOVES_LOG,KBS,110,G4,122,H4 -BuysTrain,KBS,5,IPO,500 -FirstTrainBought,5 -StartOfPhase,5 -CompanyDiscardsTrain,KBS,3 -SELL_SHARES_LOG,KBS,3,10,30,KBS,366 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,584,E10,S -DuplicateTokenRemoved,DR,E10 -LAYS_FREE_TOKEN_ON,SNCF,E10 -CompanyRevenue,SNCF,360 -CompanyPaysOutFull,SNCF,360 -Payout,Phil,36,1,10 -Payout,Arne,216,6,10 -Payout,Ed,36,1,10 -Payout,SNCF,72,2,10 -PRICE_MOVES_LOG,SNCF,110,G4,122,H4 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,C8,NW -CompanyRevenue,DR,290 -CompanyPaysOutFull,DR,290 -Payout,Chris,145,5,10 -Payout,DR,116,4,10 -PRICE_MOVES_LOG,DR,100,F4,110,G4 -SELL_SHARES_LOG,DR,4,10,40,DR,440 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,584,N11,S -DuplicateTokenRemoved,FS,N11 -LAYS_FREE_TOKEN_ON,KKÃB,K10 -CompanyRevenue,KKÃB,240 -CompanySplits,KKÃB,240 -KKÃB receives 120 -Payout,Phil,24,2,10 -Payout,Arne,12,1,10 -Payout,Joakim,60,5,10 -Payout,Ed,24,2,10 -PRICE_MOVES_LOG,KKÃB,100,F4,110,G4 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,147,G2,N -CompanyDoesNotPayDividend,SNCB -PRICE_MOVES_LOG,SNCB,100,E3,90,D3 -BuysTrain,SNCB,4,KKÃB,172 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,14,G4,SW -LAYS_FREE_TOKEN_ON,NS,G4 -CompanyRevenue,NS,170 -CompanyPaysOutFull,NS,170 -Payout,Arne,17,1,10 -Payout,Joshua,85,5,10 -Payout,NS,68,4,10 -PRICE_MOVES_LOG,NS,90,E4,100,F4 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,577,S8,NE -CompanyDoesNotPayDividend,KPEV -PRICE_MOVES_LOG,KPEV,90,E4,82,D4 -BuysTrain,KPEV,5,IPO,500 - -CompanyOperates,FS,Chris -LaysTileAt,FS,14,K10,SW -LAYS_FREE_TOKEN_ON,FS,K10 -CompanyDoesNotPayDividend,FS -PRICE_MOVES_LOG,FS,82,D4,75,C4 -BuysTrain,FS,4,DR,1 - -EndOfOperatingRound,3.1 -ORWorthIncrease,Chris,3.1,160 -ORWorthIncrease,Joakim,3.1,53 -ORWorthIncrease,Joshua,3.1,95 -ORWorthIncrease,Phil,3.1,338 -ORWorthIncrease,Ed,3.1,133 -ORWorthIncrease,Arne,3.1,337 -Has,4,10 -Has,13,60 -Has,SNCB,273 -Has,NS,221 -Has,KBS,428 -Has,KPEV,35 -Has,KKÃB,601 -Has,FS,268 -Has,SNCF,450 -Has,DR,728 -Has,Chris,166 -Has,Joakim,103 -Has,Joshua,100 -Has,Phil,300 -Has,Ed,141 -Has,Arne,252 -START_OR,3.2 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,582,L7,S -CompanyRevenue,KBS,360 -CompanySplits,KBS,360 -KBS receives 180 -Payout,Phil,108,6,10 -Payout,Ed,18,1,10 -PRICE_MOVES_LOG,KBS,122,H4,135,H3 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,146,F3,NW -CompanyRevenue,SNCF,470 -CompanyPaysOutFull,SNCF,470 -Payout,Phil,47,1,10 -Payout,Arne,282,6,10 -Payout,Ed,47,1,10 -Payout,SNCF,94,2,10 -PRICE_MOVES_LOG,SNCF,122,H4,135,H3 -SELL_SHARES_LOG,SNCF,2,10,20,SNCF,270 -PRICE_MOVES_LOG,SNCF,135,H3,122,H4 - -CompanyOperates,DR,Chris -LaysTileAt,DR,579,G10,SW -CompanyRevenue,DR,180 -CompanyPaysOutFull,DR,180 -Payout,Chris,90,5,10 -PRICE_MOVES_LOG,DR,110,G4,122,H4 -BuysTrain,DR,5,IPO,500 -All 5-trains are sold out, 6-trains now available - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,83,I8,N -LAYS_FREE_TOKEN_ON,KKÃB,F5 -CompanyRevenue,KKÃB,160 -CompanyPaysOutFull,KKÃB,160 -Payout,Phil,32,2,10 -Payout,Arne,16,1,10 -Payout,Joakim,80,5,10 -Payout,Ed,32,2,10 -PRICE_MOVES_LOG,KKÃB,110,G4,122,H4 -BuysTrain,KKÃB,6,IPO,600 -FirstTrainBought,6 -StartOfPhase,6 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,611,I6,SE -CompanyRevenue,NS,270 -CompanySplits,NS,270 -NS receives 130 -Payout,Arne,14,1,10 -Payout,Joshua,70,5,10 -Payout,NS,56,4,10 -PRICE_MOVES_LOG,NS,100,F4,110,G4 -SELL_SHARES_LOG,NS,4,10,40,NS,440 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,82,I2,NE -CompanyRevenue,SNCB,130 -CompanyPaysOutFull,SNCB,130 -Payout,Joakim,65,5,10 -Payout,SNCB,65,5,10 -PRICE_MOVES_LOG,SNCB,90,D3,100,E3 -SELL_SHARES_LOG,SNCB,5,10,50,SNCB,500 -PRICE_MOVES_LOG,SNCB,100,E3,75,E6 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,57,R9,SW -LAYS_FREE_TOKEN_ON,KPEV,N11 -CompanyRevenue,KPEV,210 -CompanyPaysOutFull,KPEV,210 -Payout,Joshua,105,5,10 -Payout,KPEV,105,5,10 -PRICE_MOVES_LOG,KPEV,82,D4,90,E4 -BuysTrain,KPEV,P,Pool,100 - -CompanyOperates,FS,Chris -LaysTileAt,FS,582,G10,SW -LAYS_FREE_TOKEN_ON,FS,G10 -CompanyRevenue,FS,240 -CompanyPaysOutFull,FS,240 -Payout,Joakim,24,1,10 -Payout,Chris,120,5,10 -Payout,FS,96,4,10 -PRICE_MOVES_LOG,FS,75,C4,82,D4 -SELL_SHARES_LOG,FS,4,10,40,FS,328 -PRICE_MOVES_LOG,FS,82,D4,65,D7 - -EndOfOperatingRound,3.2 -ORWorthIncrease,Chris,3.2,220 -ORWorthIncrease,Joakim,3.2,144 -ORWorthIncrease,Joshua,3.2,265 -ORWorthIncrease,Phil,3.2,289 -ORWorthIncrease,Ed,3.2,134 -ORWorthIncrease,Arne,3.2,334 -Has,4,10 -Has,13,60 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,40 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,376 -Has,Joakim,272 -Has,Joshua,275 -Has,Phil,487 -Has,Ed,238 -Has,Arne,564 -StartFinalMinorExchangeRound -HasFirstTurn,Phil -MERGE_MINOR_LOG,Ed,4,FS,10,0 -GetShareForMinor,Ed,10,FS,Pool,4 -NoBaseTokenExchange,FS,4,G10 -MinorCloses,4 -MERGE_MINOR_LOG,Ed,13,KBS,60,0 -GetShareForMinor,Ed,10,KBS,Pool,13 -ExchangesBaseToken,KBS,13,L7 -MinorCloses,13 - -END_SR,3 -PRICE_MOVES_LOG,KKÃB,122,H4,135,H3 -SoldOut,KKÃB,122,H4,135,H3 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,40 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,376 -Has,Joakim,272 -Has,Joshua,275 -Has,Phil,487 -Has,Ed,238 -Has,Arne,564 -StartStockRound,4 -HasPriority,Joshua -BUY_SHARE_LOG,Joshua,10,KBS,Pool,135 -SELL_SHARE_LOG,Phil,10,SNCF,122 -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Ed,10,KBS,Pool,135 -BUY_SHARE_LOG,Arne,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Chris,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joakim,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joshua,10,DR,Pool,122 -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Ed,10,FS,Pool,65 -BUY_SHARE_LOG,Arne,10,FS,Pool,65 -BUY_SHARE_LOG,Chris,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joakim,10,KPEV,KPEV,90 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,SNCB,Pool,75 -BUY_SHARE_LOG,Chris,10,NS,Pool,110 -SELL_SHARE_LOG,Joakim,10,FS,65 -BUY_SHARE_LOG,Joakim,10,NS,Pool,110 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,DR,Pool,122 -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,NS,Pool,110 -Autopasses,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -Autopasses,Ed -PASSES,Arne - -END_SR,4 -PRICE_MOVES_LOG,KBS,135,H3,150,H2 -SoldOut,KBS,135,H3,150,H2 -PRICE_MOVES_LOG,KKÃB,135,H3,150,H2 -SoldOut,KKÃB,135,H3,150,H2 -PRICE_MOVES_LOG,SNCF,122,H4,135,H3 -SoldOut,SNCF,122,H4,135,H3 -PRICE_MOVES_LOG,KPEV,90,E4,100,E3 -SoldOut,KPEV,90,E4,100,E3 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,490 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,22 -Has,Joakim,15 -Has,Joshua,18 -Has,Phil,217 -Has,Ed,38 -Has,Arne,224 -START_OR,4.1 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,83,H7,S -LAYS_FREE_TOKEN_ON,KBS,E10 -CompanyRevenue,KBS,330 -CompanyPaysOutFull,KBS,330 -Payout,Phil,198,6,10 -Payout,Joshua,33,1,10 -Payout,Ed,99,3,10 -PRICE_MOVES_LOG,KBS,150,H2,165,I2 -BuysTrain,KBS,6,IPO,600 -All 6-trains are sold out, 8-trains now available - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,142,E4,S -LAYS_FREE_TOKEN_ON,KKÃB,G10 -CompanyRevenue,KKÃB,390 -CompanyPaysOutFull,KKÃB,390 -Payout,Phil,78,2,10 -Payout,Arne,39,1,10 -Payout,Joakim,195,5,10 -Payout,Ed,78,2,10 -PRICE_MOVES_LOG,KKÃB,150,H2,165,I2 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,14,F5,SW -LAYS_FREE_TOKEN_ON,SNCF,F5 -CompanyRevenue,SNCF,330 -CompanySplits,SNCF,330 -SNCF receives 160 -Payout,Joakim,17,1,10 -Payout,Arne,102,6,10 -Payout,Chris,34,2,10 -Payout,Ed,17,1,10 -PRICE_MOVES_LOG,SNCF,135,H3,150,I3 -BuysTrain,SNCF,8,IPO,800 -FirstTrainBought,8 -StartOfPhase,8 -BuysTrain,SNCF,P,Pool,100 - -CompanyOperates,DR,Chris -LaysTileAt,DR,4,C6,SW -CompanyRevenue,DR,190 -CompanyPaysOutFull,DR,190 -Payout,Phil,19,1,10 -Payout,Chris,95,5,10 -Payout,Joshua,19,1,10 -PRICE_MOVES_LOG,DR,122,H4,135,H3 -BuysTrain,DR,P,Pool,100 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,582,M4,NW -LAYS_FREE_TOKEN_ON,NS,M4 -CompanyDoesNotPayDividend,NS -PRICE_MOVES_LOG,NS,110,G4,100,F4 -BuysTrain,NS,8,IPO,800 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,582,P13,SE -LAYS_FREE_TOKEN_ON,KPEV,P13 -CompanyRevenue,KPEV,320 -CompanyPaysOutFull,KPEV,320 -Payout,Phil,96,3,10 -Payout,Arne,32,1,10 -Payout,Joakim,32,1,10 -Payout,Joshua,160,5,10 -PRICE_MOVES_LOG,KPEV,100,E3,110,F3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,580,J1,S -CompanyDoesNotPayDividend,SNCB -PRICE_MOVES_LOG,SNCB,75,E6,70,D6 -BuysTrain,SNCB,8,IPO,800 - -CompanyOperates,FS,Chris -LaysTileAt,FS,611,K10,NW -CompanyDoesNotPayDividend,FS -PRICE_MOVES_LOG,FS,65,D7,60,C7 -BuysTrain,FS,5,DR,690 -CompanyDiscardsTrain,DR,P - -EndOfOperatingRound,4.1 -ORWorthIncrease,Chris,4.1,189 -ORWorthIncrease,Joakim,4.1,309 -ORWorthIncrease,Joshua,4.1,240 -ORWorthIncrease,Phil,4.1,554 -ORWorthIncrease,Ed,4.1,274 -ORWorthIncrease,Arne,4.1,258 -Has,SNCB,38 -Has,NS,47 -Has,KBS,8 -Has,KPEV,490 -Has,KKÃB,1 -Has,FS,2 -Has,SNCF,74 -Has,DR,818 -Has,Chris,151 -Has,Joakim,259 -Has,Joshua,230 -Has,Phil,608 -Has,Ed,232 -Has,Arne,397 -START_OR,4.2 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,142,H9,NW -CompanyRevenue,KBS,520 -CompanyPaysOutFull,KBS,520 -Payout,Phil,312,6,10 -Payout,Joshua,52,1,10 -Payout,Ed,156,3,10 -PRICE_MOVES_LOG,KBS,165,I2,180,J2 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,583,J1,S -LAYS_FREE_TOKEN_ON,KKÃB,J1 -CompanyRevenue,KKÃB,450 -CompanySplits,KKÃB,450 -KKÃB receives 220 -Payout,Phil,46,2,10 -Payout,Arne,23,1,10 -Payout,Joakim,115,5,10 -Payout,Ed,46,2,10 -PRICE_MOVES_LOG,KKÃB,165,I2,180,J2 -BuysTrain,KKÃB,P,Pool,100 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,513,I6,S -CompanyRevenue,SNCF,660 -CompanyPaysOutFull,SNCF,660 -Payout,Joakim,66,1,10 -Payout,Arne,396,6,10 -Payout,Ed,66,1,10 -Payout,Chris,132,2,10 -PRICE_MOVES_LOG,SNCF,150,I3,165,J3 - -CompanyOperates,DR,Chris -LaysTileAt,DR,83,F9,SE -LAYS_FREE_TOKEN_ON,DR,I6 -CompanyDoesNotPayDividend,DR -PRICE_MOVES_LOG,DR,135,H3,122,G3 -BuysTrain,DR,8,IPO,800 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,513,K10,S -LAYS_FREE_TOKEN_ON,KPEV,K10 -CompanyRevenue,KPEV,360 -CompanySplits,KPEV,360 -KPEV receives 180 -Payout,Phil,54,3,10 -Payout,Arne,18,1,10 -Payout,Joakim,18,1,10 -Payout,Joshua,90,5,10 -PRICE_MOVES_LOG,KPEV,110,F3,122,G3 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,578,H3,NW -CompanyRevenue,NS,430 -CompanyPaysOutFull,NS,430 -Payout,Arne,86,2,10 -Payout,Joakim,43,1,10 -Payout,Joshua,215,5,10 -Payout,Chris,43,1,10 -PRICE_MOVES_LOG,NS,100,F4,110,G4 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,582,H3,S -LAYS_FREE_TOKEN_ON,SNCB,H3 -CompanyRevenue,SNCB,220 -CompanySplits,SNCB,220 -SNCB receives 110 -Payout,Arne,11,1,10 -Payout,Joakim,55,5,10 -PRICE_MOVES_LOG,SNCB,70,D6,75,E6 -BuysTrain,SNCB,P,Pool,100 - -CompanyOperates,FS,Chris -LaysTileAt,FS,582,S8,NE -CompanyRevenue,FS,300 -CompanyPaysOutFull,FS,300 -Payout,Arne,30,1,10 -Payout,Ed,60,2,10 -Payout,Chris,150,5,10 -PRICE_MOVES_LOG,FS,60,C7,65,D7 - -EndOfOperatingRound,4.2 -ORWorthIncrease,Chris,4.2,325 -ORWorthIncrease,Joakim,4.2,434 -ORWorthIncrease,Joshua,4.2,469 -ORWorthIncrease,Phil,4.2,555 -ORWorthIncrease,Ed,4.2,428 -ORWorthIncrease,Arne,4.2,711 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,670 -Has,KKÃB,121 -Has,FS,2 -Has,SNCF,74 -Has,DR,18 -Has,Chris,476 -Has,Joakim,556 -Has,Joshua,587 -Has,Phil,1020 -Has,Ed,560 -Has,Arne,961 -StartStockRound,5 -HasPriority,Chris -SELL_SHARE_LOG,Chris,10,FS,65 -BUY_SHARE_LOG,Chris,10,NS,Pool,110 -PASSES,Joakim -BUY_SHARE_LOG,Joshua,10,DR,Pool,122 -PASSES,Phil -BUY_SHARE_LOG,Ed,10,DR,Pool,122 -PASSES,Arne -PASSES,Chris -SELL_SHARE_LOG,Joakim,10,KPEV,122 -PRICE_MOVES_LOG,KPEV,122,G3,110,G4 -BUY_SHARE_LOG,Joakim,10,DR,Pool,122 -SELL_SHARE_LOG,Joshua,10,DR,122 -PRICE_MOVES_LOG,DR,122,G3,110,G4 -BUY_SHARE_LOG,Joshua,10,KPEV,Pool,110 -PASSES,Phil -BUY_SHARE_LOG,Ed,10,DR,Pool,110 -Autopasses,Arne -PASSES,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil -BUY_SHARE_LOG,Ed,10,SNCB,Pool,75 -Autopasses,Arne -Autopasses,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil -Autopasses,Ed - -END_SR,5 -PRICE_MOVES_LOG,KBS,180,J2,200,J1 -SoldOut,KBS,180,J2,200,J1 -PRICE_MOVES_LOG,KKÃB,180,J2,200,J1 -SoldOut,KKÃB,180,J2,200,J1 -PRICE_MOVES_LOG,SNCF,165,J3,180,J2 -SoldOut,SNCF,165,J3,180,J2 -PRICE_MOVES_LOG,NS,110,G4,122,G3 -SoldOut,NS,110,G4,122,G3 -PRICE_MOVES_LOG,KPEV,110,G4,122,G3 -SoldOut,KPEV,110,G4,122,G3 -PRICE_MOVES_LOG,DR,110,G4,122,G3 -SoldOut,DR,110,G4,122,G3 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,670 -Has,KKÃB,121 -Has,FS,2 -Has,SNCF,74 -Has,DR,18 -Has,Chris,431 -Has,Joakim,556 -Has,Joshua,477 -Has,Phil,1020 -Has,Ed,253 -Has,Arne,961 -START_OR,5.1 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,83,D5,N -CompanyRevenue,KBS,660 -CompanyPaysOutFull,KBS,660 -Payout,Phil,396,6,10 -Payout,Joshua,66,1,10 -Payout,Ed,198,3,10 -PRICE_MOVES_LOG,KBS,200,J1,220,K1 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,141,L11,N -CompanyRevenue,KKÃB,540 -CompanyPaysOutFull,KKÃB,540 -Payout,Phil,108,2,10 -Payout,Arne,54,1,10 -Payout,Joakim,270,5,10 -Payout,Ed,108,2,10 -PRICE_MOVES_LOG,KKÃB,200,J1,220,K1 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,611,G4,NW -CompanyRevenue,SNCF,670 -CompanyPaysOutFull,SNCF,670 -Payout,Arne,402,6,10 -Payout,Joakim,67,1,10 -Payout,Ed,67,1,10 -Payout,Chris,134,2,10 -PRICE_MOVES_LOG,SNCF,180,J2,200,K2 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,8,L1,N -CompanyRevenue,NS,440 -CompanyPaysOutFull,NS,440 -Payout,Arne,88,2,10 -Payout,Joakim,44,1,10 -Payout,Joshua,220,5,10 -Payout,Chris,88,2,10 -PRICE_MOVES_LOG,NS,122,G3,135,H3 - -CompanyOperates,KPEV,Joshua -LaysTileAtFor,KPEV,4,O12,NW,60 -CompanyRevenue,KPEV,480 -CompanySplits,KPEV,480 -KPEV receives 240 -Payout,Phil,72,3,10 -Payout,Arne,24,1,10 -Payout,Joshua,144,6,10 -PRICE_MOVES_LOG,KPEV,122,G3,135,H3 -BuysTrain,KPEV,8,IPO,800 -CompanyDiscardsTrain,KPEV,P - -CompanyOperates,DR,Chris -LaysTileAt,DR,513,G4,S -LAYS_FREE_TOKEN_ON,DR,G4 -CompanyRevenue,DR,520 -CompanyPaysOutFull,DR,520 -Payout,Phil,52,1,10 -Payout,Joakim,52,1,10 -Payout,Joshua,52,1,10 -Payout,Ed,104,2,10 -Payout,Chris,260,5,10 -PRICE_MOVES_LOG,DR,122,G3,135,H3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,9,H1,S -CompanyRevenue,SNCB,380 -CompanyPaysOutFull,SNCB,380 -Payout,Arne,38,1,10 -Payout,Joakim,190,5,10 -Payout,Ed,38,1,10 -PRICE_MOVES_LOG,SNCB,75,E6,82,E5 - -CompanyOperates,FS,Chris -LaysTileAt,FS,145,L11,S -CompanyRevenue,FS,350 -CompanyPaysOutFull,FS,350 -Payout,Arne,35,1,10 -Payout,Ed,70,2,10 -Payout,Chris,140,4,10 -PRICE_MOVES_LOG,FS,65,D7,70,D6 - -EndOfOperatingRound,5.1 -ORWorthIncrease,Chris,5.1,773 -ORWorthIncrease,Joakim,5.1,804 -ORWorthIncrease,Joshua,5.1,658 -ORWorthIncrease,Phil,5.1,840 -ORWorthIncrease,Ed,5.1,748 -ORWorthIncrease,Arne,5.1,832 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,50 -Has,KKÃB,121 -Has,FS,2 -Has,SNCF,74 -Has,DR,18 -Has,Chris,1053 -Has,Joakim,1179 -Has,Joshua,959 -Has,Phil,1648 -Has,Ed,838 -Has,Arne,1602 -START_OR,5.2 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,576,Q2,S -CompanyRevenue,KBS,700 -CompanyPaysOutFull,KBS,700 -Payout,Phil,420,6,10 -Payout,Joshua,70,1,10 -Payout,Ed,210,3,10 -PRICE_MOVES_LOG,KBS,220,K1,245,L1 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,578,C4,SE -CompanyRevenue,KKÃB,560 -CompanyPaysOutFull,KKÃB,560 -Payout,Phil,112,2,10 -Payout,Arne,56,1,10 -Payout,Joakim,280,5,10 -Payout,Ed,112,2,10 -PRICE_MOVES_LOG,KKÃB,220,K1,245,L1 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,611,F5,NW -CompanyRevenue,SNCF,710 -CompanyPaysOutFull,SNCF,710 -Payout,Arne,426,6,10 -Payout,Joakim,71,1,10 -Payout,Ed,71,1,10 -Payout,Chris,142,2,10 -PRICE_MOVES_LOG,SNCF,200,K2,220,L2 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,513,F5,S -LAYS_FREE_TOKEN_ON,NS,F5 -CompanyRevenue,NS,590 -CompanyPaysOutFull,NS,590 -Payout,Arne,118,2,10 -Payout,Joakim,59,1,10 -Payout,Joshua,295,5,10 -Payout,Chris,118,2,10 -PRICE_MOVES_LOG,NS,135,H3,150,I3 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,143,U6,S -CompanyRevenue,KPEV,690 -CompanyPaysOutFull,KPEV,690 -Payout,Phil,207,3,10 -Payout,Arne,69,1,10 -Payout,Joshua,414,6,10 -PRICE_MOVES_LOG,KPEV,135,H3,150,I3 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,F11,NW -CompanyRevenue,DR,520 -CompanyPaysOutFull,DR,520 -Payout,Phil,52,1,10 -Payout,Joshua,52,1,10 -Payout,Joakim,52,1,10 -Payout,Ed,104,2,10 -Payout,Chris,260,5,10 -PRICE_MOVES_LOG,DR,135,H3,150,I3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,582,C4,N -LAYS_FREE_TOKEN_ON,SNCB,C4 -CompanyRevenue,SNCB,540 -CompanyPaysOutFull,SNCB,540 -Payout,Arne,54,1,10 -Payout,Joakim,270,5,10 -Payout,Ed,54,1,10 -PRICE_MOVES_LOG,SNCB,82,E5,90,F5 - -CompanyOperates,FS,Chris -LaysTileAt,FS,15,R9,SW -LAYS_FREE_TOKEN_ON,FS,S8 -CompanyRevenue,FS,350 -CompanyPaysOutFull,FS,350 -Payout,Arne,35,1,10 -Payout,Ed,70,2,10 -Payout,Chris,140,4,10 -BankIsBrokenReportText -PRICE_MOVES_LOG,FS,70,D6,75,E6 - -EndOfOperatingRound,5.2 -ORWorthIncrease,Chris,5.2,825 -ORWorthIncrease,Joakim,5.2,947 -ORWorthIncrease,Joshua,5.2,1036 -ORWorthIncrease,Phil,5.2,1051 -ORWorthIncrease,Ed,5.2,814 -ORWorthIncrease,Arne,5.2,961 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,50 -Has,KKÃB,121 -Has,FS,2 -Has,SNCF,74 -Has,DR,18 -Has,Chris,1713 -Has,Joakim,1911 -Has,Joshua,1790 -Has,Phil,2439 -Has,Ed,1459 -Has,Arne,2360 -GameOver -EoGWinnerPhil! -EoGFinalRanking : -1. 4999 Phil -2. 4540 Arne -3. 4106 Joakim -4. 3835 Joshua -5. 3503 Chris -6. 3444 Ed diff --git a/test/data/real/18GA_A.rails b/test/data/real/18GA_A.rails deleted file mode 100644 index 53bf9c9..0000000 Binary files a/test/data/real/18GA_A.rails and /dev/null differ diff --git a/test/data/real/18GA_A.report b/test/data/real/18GA_A.report deleted file mode 100644 index 29c2395..0000000 --- a/test/data/real/18GA_A.report +++ /dev/null @@ -1,415 +0,0 @@ -GameIs,18GA -PlayerIs,1,adik -PlayerIs,2,ola -PlayerIs,3,abadura -PlayerIs,4,bazik -PlayerCash,450 -BankHas,6200 -StartOfPhase,2 -BankSizeIs,6200 -StartOfInitialRound -HasPriority,adik -BID_ITEM_LOG,adik,105,OSO,345 -BID_ITEM_LOG,ola,45,MR,405 -BID_ITEM_LOG,abadura,155,M&B,295 -BID_ITEM_LOG,bazik,110,OSO,340 -BID_ITEM_LOG,adik,75,W&S,270 -BID_ITEM_LOG,ola,160,M&B,245 -BID_ITEM_LOG,abadura,115,OSO,180 -BID_ITEM_LOG,bazik,165,M&B,175 -BuysItemFor,adik,LT,20 -BuysItemFor,ola,MR,45 -BuysItemFor,adik,W&S,75 -TO_AUCTION,OSO -BID_ITEM_LOG,bazik,120,OSO,165 -PASSES,adik -BID_ITEM_LOG,abadura,125,OSO,170 -BID_ITEM_LOG,bazik,130,OSO,155 -PASSES,adik -PASSES,abadura -BuysItemFor,bazik,OSO,130 -TO_AUCTION,M&B -PASSES,ola -BID_ITEM_LOG,abadura,170,M&B,280 -BID_ITEM_LOG,bazik,175,M&B,145 -PASSES,ola -PASSES,abadura -BuysItemFor,bazik,M&B,175 -ALSO_GETS,bazik,CERT_NAME,CoG,10 -Has,adik,355 -Has,ola,405 -Has,abadura,450 -Has,bazik,145 -StartStockRound,1 -HasPriority,ola -START_COMPANY_LOG,ola,GA,55,110,2,20,BANK -START_COMPANY_LOG,abadura,ACL,55,110,2,20,BANK -Autopasses,bazik -START_COMPANY_LOG,adik,W&A,55,110,2,20,BANK -BUY_SHARE_LOG,ola,10,GA,IPO,55 -BUY_SHARE_LOG,abadura,10,ACL,IPO,55 -Autopasses,bazik -BUY_SHARE_LOG,adik,10,W&A,IPO,55 -BUY_SHARE_LOG,ola,10,GA,IPO,55 -BUY_SHARE_LOG,abadura,10,ACL,IPO,55 -Autopasses,bazik -BUY_SHARE_LOG,adik,10,W&A,IPO,55 -BUY_SHARE_LOG,ola,10,GA,IPO,55 -BUY_SHARE_LOG,abadura,10,ACL,IPO,55 -Autopasses,bazik -BUY_SHARE_LOG,adik,10,W&A,IPO,55 -BUY_SHARE_LOG,ola,10,GA,IPO,55 -FloatsWithCash,GA,550 -BUY_SHARE_LOG,abadura,10,ACL,IPO,55 -FloatsWithCash,ACL,550 -Autopasses,bazik -BUY_SHARE_LOG,adik,10,W&A,IPO,55 -FloatsWithCash,W&A,550 -PASSES,ola -Autopasses,abadura -Autopasses,bazik -Autopasses,adik - -END_SR,1 -Has,ACL,550 -Has,GA,550 -Has,W&A,550 -Has,adik,25 -Has,ola,75 -Has,abadura,120 -Has,bazik,145 -START_OR,1.1 -ReceivesFor,adik,5,LT -ReceivesFor,ola,10,MR -ReceivesFor,adik,15,W&S -ReceivesFor,bazik,20,OSO -ReceivesFor,bazik,25,M&B - -CompanyOperates,GA,ola -LaysTileAt,GA,6,D10,NE -CompanyDoesNotPayDividend,GA -PRICE_MOVES_LOG,GA,55,C4,50,B4 -BuysTrain,GA,2,IPO,100 -FirstTrainBought,2 - -CompanyOperates,ACL,abadura -LaysTileAt,ACL,6,I11,NW -CompanyDoesNotPayDividend,ACL -PRICE_MOVES_LOG,ACL,55,C4,50,B4 -BuysTrain,ACL,2,IPO,100 - -CompanyOperates,W&A,adik -LaysTileAt,W&A,451,D4,SW -CompanyDoesNotPayDividend,W&A -PRICE_MOVES_LOG,W&A,55,C4,50,B4 -BuysTrain,W&A,2,IPO,100 - -EndOfOperatingRound,1.1 -ORWorthIncrease,adik,1.1,-10 -ORWorthIncrease,ola,1.1,-20 -ORWorthIncrease,abadura,1.1,-30 -ORWorthIncrease,bazik,1.1,45 -Has,ACL,450 -Has,GA,450 -Has,W&A,450 -Has,adik,45 -Has,ola,85 -Has,abadura,120 -Has,bazik,190 -StartStockRound,2 -HasPriority,ola -BUY_SHARE_LOG,ola,10,W&A,IPO,55 -BUY_SHARE_LOG,abadura,10,W&A,IPO,55 -BUY_SHARE_LOG,bazik,10,ACL,IPO,55 -Autopasses,adik -Autopasses,ola -BUY_SHARE_LOG,abadura,10,GA,IPO,55 -BUY_SHARE_LOG,bazik,10,ACL,IPO,55 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,ACL,IPO,55 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -PASSES,bazik - -END_SR,2 -Has,ACL,450 -Has,GA,450 -Has,W&A,450 -Has,adik,45 -Has,ola,30 -Has,abadura,10 -Has,bazik,25 -START_OR,2.1 -ReceivesFor,adik,5,LT -ReceivesFor,ola,10,MR -ReceivesFor,adik,15,W&S -ReceivesFor,bazik,20,OSO -ReceivesFor,bazik,25,M&B - -CompanyOperates,GA,ola -LaysTileAt,GA,8,C9,NE -CompanyRevenue,GA,50 -CompanyPaysOutFull,GA,50 -Payout,ola,30,6,10 -Payout,abadura,5,1,10 -PRICE_MOVES_LOG,GA,50,B4,55,C4 - -CompanyOperates,ACL,abadura -LaysTileAtFor,ACL,8,J10,NW,40 -CompanyRevenue,ACL,50 -CompanyPaysOutFull,ACL,50 -Payout,bazik,15,3,10 -Payout,abadura,30,6,10 -PRICE_MOVES_LOG,ACL,50,B4,55,C4 -BuysTrain,ACL,2,IPO,100 - -CompanyOperates,W&A,adik -LaysTileAt,W&A,5,C3,W -CompanyRevenue,W&A,50 -CompanyPaysOutFull,W&A,50 -Payout,ola,5,1,10 -Payout,abadura,5,1,10 -Payout,adik,30,6,10 -PRICE_MOVES_LOG,W&A,50,B4,55,C4 -BuysTrain,W&A,2,IPO,100 -All 2-trains are sold out, 3-trains now available - -EndOfOperatingRound,2.1 -ORWorthIncrease,adik,2.1,80 -ORWorthIncrease,ola,2.1,80 -ORWorthIncrease,abadura,2.1,80 -ORWorthIncrease,bazik,2.1,75 -Has,ACL,310 -Has,GA,450 -Has,W&A,350 -Has,adik,95 -Has,ola,75 -Has,abadura,50 -Has,bazik,85 -StartStockRound,3 -HasPriority,adik -BUY_SHARE_LOG,adik,10,ACL,IPO,55 -BUY_SHARE_LOG,ola,10,W&A,IPO,55 -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,W&A,IPO,55 -Autopasses,adik -PASSES,ola -Autopasses,abadura -PASSES,bazik - -END_SR,3 -PRICE_MOVES_LOG,ACL,55,C4,60,C3 -SoldOut,ACL,55,C4,60,C3 -PRICE_MOVES_LOG,W&A,55,C4,60,C3 -SoldOut,W&A,55,C4,60,C3 -Has,ACL,310 -Has,GA,450 -Has,W&A,350 -Has,adik,40 -Has,ola,20 -Has,abadura,50 -Has,bazik,30 -START_OR,3.1 -ReceivesFor,adik,5,LT -ReceivesFor,ola,10,MR -ReceivesFor,adik,15,W&S -ReceivesFor,bazik,20,OSO -ReceivesFor,bazik,25,M&B - -CompanyOperates,ACL,abadura -LaysTileAt,ACL,5,I9,W -CompanyRevenue,ACL,100 -CompanyPaysOutFull,ACL,100 -Payout,adik,10,1,10 -Payout,bazik,30,3,10 -Payout,abadura,60,6,10 -PRICE_MOVES_LOG,ACL,60,C3,70,D3 -BuysTrain,ACL,3,IPO,180 -FirstTrainBought,3 -StartOfPhase,3 - -CompanyOperates,W&A,adik -LaysTileAt,W&A,9,D2,SW -LAYS_TOKEN_ON,W&A,C3,40 -CompanyRevenue,W&A,100 -CompanyPaysOutFull,W&A,100 -Payout,abadura,10,1,10 -Payout,bazik,10,1,10 -Payout,adik,60,6,10 -Payout,ola,20,2,10 -PRICE_MOVES_LOG,W&A,60,C3,70,D3 -BuysTrain,W&A,3,IPO,180 -BuysPrivateFromFor,W&A,W&S,adik,105 - -CompanyOperates,GA,ola -LaysTileAt,GA,453,D10,W -CompanyRevenue,GA,70 -CompanyPaysOutFull,GA,70 -Payout,abadura,7,1,10 -Payout,ola,42,6,10 -PRICE_MOVES_LOG,GA,55,C4,60,D4 -BuysTrain,GA,3,IPO,180 -BuysPrivateFromFor,GA,MR,ola,60 - -EndOfOperatingRound,3.1 -ORWorthIncrease,adik,3.1,195 -ORWorthIncrease,ola,3.1,142 -ORWorthIncrease,abadura,3.1,152 -ORWorthIncrease,bazik,3.1,125 -Has,ACL,130 -Has,GA,210 -Has,W&A,25 -Has,adik,235 -Has,ola,152 -Has,abadura,127 -Has,bazik,115 -StartStockRound,4 -HasPriority,adik -BUY_SHARE_LOG,adik,10,GA,IPO,55 -SELL_SHARES_LOG,ola,2,10,20,W&A,140 -PRICE_MOVES_LOG,W&A,70,D3,55,D5 -SELL_SHARE_LOG,ola,10,GA,60 -PRICE_MOVES_LOG,GA,60,D4,55,D5 -START_COMPANY_LOG,ola,SAL,55,110,2,20,BANK -SELL_SHARE_LOG,abadura,10,GA,55 -PRICE_MOVES_LOG,GA,55,D5,50,D6 -SELL_SHARE_LOG,abadura,10,W&A,55 -PRICE_MOVES_LOG,W&A,55,D5,50,D6 -START_COMPANY_LOG,abadura,G&F,55,110,2,20,BANK -BUY_SHARE_LOG,bazik,10,GA,Pool,50 -SELL_SHARE_LOG,adik,10,ACL,70 -PRICE_MOVES_LOG,ACL,70,D3,60,D4 -SELL_SHARE_LOG,adik,10,GA,50 -PRICE_MOVES_LOG,GA,50,D6,45,D7 -SELL_SHARE_LOG,adik,10,W&A,50 -PRICE_MOVES_LOG,W&A,50,D6,45,D7 -START_COMPANY_LOG,adik,CoG,70,140,2,20,BANK -BUY_SHARE_LOG,ola,10,SAL,IPO,55 -PASSES,abadura -BUY_SHARE_LOG,bazik,10,ACL,Pool,60 -BUY_SHARE_LOG,adik,10,CoG,IPO,70 -BUY_SHARE_LOG,ola,10,SAL,IPO,55 -PASSES,abadura -SELL_SHARES_LOG,bazik,4,10,40,ACL,240 -PRICE_MOVES_LOG,ACL,60,D4,45,D7 -BUY_SHARE_LOG,bazik,10,G&F,IPO,55 -BUY_SHARE_LOG,adik,10,CoG,IPO,70 -BUY_SHARE_LOG,ola,10,SAL,IPO,55 -BUY_SHARE_LOG,abadura,10,G&F,IPO,55 -BUY_SHARE_LOG,bazik,10,G&F,IPO,55 -BUY_SHARE_LOG,adik,10,CoG,IPO,70 -FloatsWithCash,CoG,700 -BUY_SHARE_LOG,ola,10,SAL,IPO,55 -FloatsWithCash,SAL,550 -BUY_SHARE_LOG,abadura,10,G&F,IPO,55 -FloatsWithCash,G&F,550 -BUY_SHARE_LOG,bazik,10,G&F,IPO,55 -Autopasses,adik -Autopasses,ola -PASSES,abadura -BUY_SHARE_LOG,bazik,10,G&F,IPO,55 -Autopasses,adik -Autopasses,ola -SELL_SHARE_LOG,abadura,10,ACL,45 -BUY_SHARE_LOG,abadura,10,G&F,IPO,55 -SELL_SHARES_LOG,bazik,4,10,40,G&F,220 -PRICE_MOVES_LOG,G&F,55,C4,40,C7 -BUY_SHARE_LOG,bazik,10,CoG,IPO,70 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,CoG,IPO,70 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,CoG,IPO,70 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -SELL_SHARES_LOG,bazik,4,10,40,CoG,280 -PRICE_MOVES_LOG,CoG,70,D3,45,D7 -BUY_SHARE_LOG,bazik,10,SAL,IPO,55 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,SAL,IPO,55 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,SAL,IPO,55 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -SELL_SHARES_LOG,bazik,3,10,30,SAL,165 -PRICE_MOVES_LOG,SAL,55,C4,40,C7 -BUY_SHARE_LOG,bazik,10,W&A,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,W&A,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,W&A,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,W&A,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,GA,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -BUY_SHARE_LOG,bazik,10,GA,Pool,45 -Autopasses,adik -Autopasses,ola -Autopasses,abadura -PASSES,bazik - -END_SR,4 -PRICE_MOVES_LOG,W&A,45,D7,50,D6 -SoldOut,W&A,45,D7,50,D6 -Has,ACL,130 -Has,CoG,700 -Has,GA,210 -Has,G&F,550 -Has,SAL,550 -Has,W&A,25 -Has,adik,0 -Has,ola,22 -Has,abadura,7 -Has,bazik,45 -START_OR,4.1 -ReceivesFor,adik,5,LT -ReceivesFor,GA,10,MR -ReceivesFor,W&A,15,W&S -ReceivesFor,bazik,20,OSO -ReceivesFor,bazik,25,M&B - -CompanyOperates,W&A,adik -LaysTileAt,W&A,15,C3,NE -CompanyRevenue,W&A,120 -CompanyWithholds,W&A,120 -PRICE_MOVES_LOG,W&A,50,D6,45,C6 - -CompanyOperates,GA,ola -LaysTileAt,GA,9,F12,NW -LaysTileAt,GA,9,E11,NW -CompanyRevenue,GA,70 -CompanyPaysOutFull,GA,70 -Payout,bazik,21,3,10 -Payout,ola,35,5,10 -PRICE_MOVES_LOG,GA,45,D7,50,E7 -BuysTrain,GA,3,IPO,180 -All 3-trains are sold out, 4-trains now available - -CompanyOperates,ACL,abadura -LaysTileAt,ACL,15,I9,E -CompanyRevenue,ACL,140 -CompanyWithholds,ACL,140 -PRICE_MOVES_LOG,ACL,45,D7,40,C7 |
From: Erik V. <ev...@us...> - 2011-12-19 12:48:58
|
test/data/test/1835_NatDoubleShare.rails |binary test/data/test/1835_PRHasTwoExcessTrains.rails |binary test/data/test/1835_PR_3rdTrain.rails |binary test/data/test/1835_PR_3rdTrain.report | 2206 ++++++++++++------------- 4 files changed, 1103 insertions(+), 1103 deletions(-) New commits: commit 0d932c7d546f34fb29d88864fbb12a85b4bd075c Author: Erik Vos <eri...@xs...> Date: Mon Dec 19 13:48:29 2011 +0100 Fixed three more 1835 test cases, which were found to fail. Unclear why these failures didn't show up earlier. diff --git a/test/data/test/1835_NatDoubleShare.rails b/test/data/test/1835_NatDoubleShare.rails index 25e7f4b..682d2f2 100644 Binary files a/test/data/test/1835_NatDoubleShare.rails and b/test/data/test/1835_NatDoubleShare.rails differ diff --git a/test/data/test/1835_PRHasTwoExcessTrains.rails b/test/data/test/1835_PRHasTwoExcessTrains.rails index 433fcdb..261e2e2 100644 Binary files a/test/data/test/1835_PRHasTwoExcessTrains.rails and b/test/data/test/1835_PRHasTwoExcessTrains.rails differ diff --git a/test/data/test/1835_PR_3rdTrain.rails b/test/data/test/1835_PR_3rdTrain.rails index e2e9503..b62ac90 100644 Binary files a/test/data/test/1835_PR_3rdTrain.rails and b/test/data/test/1835_PR_3rdTrain.rails differ diff --git a/test/data/test/1835_PR_3rdTrain.report b/test/data/test/1835_PR_3rdTrain.report index 6ddf818..aef617c 100644 --- a/test/data/test/1835_PR_3rdTrain.report +++ b/test/data/test/1835_PR_3rdTrain.report @@ -1,1103 +1,1103 @@ -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 -MERGE_MINOR_LOG,Bob,BB,PR,no,no -GetShareForMinor,Bob,10,PR,IPO,BB -PrivateCloses,BB -MERGE_MINOR_LOG,Bob,M6,PR,1,0 -GetShareForMinor,Bob,5,PR,IPO,M6 -ExchangesBaseToken,PR,M6,C11/1 -MERGE_MINOR_LOG,Bob,M3,PR,0,1 -GetShareForMinor,Bob,5,PR,IPO,M3 -ExchangesBaseToken,PR,M3,F14/1 -MERGE_MINOR_LOG,Bob,M1,PR,1,0 -GetShareForMinor,Bob,5,PR,IPO,M1 -ExchangesBaseToken,PR,M1,H2/1 -MERGE_MINOR_LOG,Charlie,HB,PR,no,no -GetShareForMinor,Charlie,10,PR,IPO,HB -PrivateCloses,HB -MERGE_MINOR_LOG,Charlie,M5,PR,0,0 -GetShareForMinor,Charlie,5,PR,IPO,M5 -MERGE_MINOR_LOG,Charlie,M4,PR,45,1 -GetShareForMinor,Charlie,10,PR,IPO,M4 -ExchangesBaseToken,PR,M4,G5/1 - -EndOfFormationRound,PR,OperatingRound 7.1 -IS_NOW_PRES_OF,Bob,PR - -CompanyOperates,HE,Charlie -LaysTileAt,HE,24,K7,NE -CompanyRevenue,HE,220 -CompanyWithholds,HE,220 -PRICE_MOVES_LOG,HE,86,B3,82,A3 - -CompanyOperates,WT,Alice -LaysTileAtFor,WT,8,M13,W,50 -CompanyRevenue,WT,990 -CompanyWithholds,WT,990 -PRICE_MOVES_LOG,WT,72,A5,64,A6 -BuysTrain,WT,5,IPO,500 -FirstTrainBought,5 -StartOfPhase,5 -PrivateCloses,OBB -PrivateCloses,PfB -CompanyDiscardsTrain,SX,3 - -EndOfOperatingRound,7.1 -ORWorthIncrease,Alice,7.1,549 -ORWorthIncrease,Bob,7.1,824 -ORWorthIncrease,Charlie,7.1,946 -Has,BY,250 -Has,SX,175 -Has,BA,24 -Has,WT,752 -Has,HE,649 -Has,PR,663 -Has,Alice,317 -Has,Bob,770 -Has,Charlie,615 -START_OR,7.2 - -CompanyOperates,BY,Alice -LaysTileAt,BY,220,E19,SW -CompanyRevenue,BY,140 -CompanyPaysOutFull,BY,140 -Payout,Alice,98,7,10 -Payout,Bob,28,2,10 -Payout,Charlie,14,1,10 -PRICE_MOVES_LOG,BY,232,J1,258,K1 -BuysTrain,BY,5,WT,1 - -CompanyOperates,SX,Charlie -LaysTileAt,SX,216,H20,E -CompanyRevenue,SX,300 -CompanyWithholds,SX,300 -PRICE_MOVES_LOG,SX,166,G1,148,F1 - -CompanyOperates,PR,Bob -LaysTileAtFor,PR,221,C11,SW,50 -CompanyRevenue,PR,350 -CompanyPaysOutFull,PR,350 -Payout,Alice,105,6,5 -Payout,Bob,123,7,5 -Payout,Charlie,123,7,5 -PRICE_MOVES_LOG,PR,154,I4,172,J4 -BuysTrain,PR,5,IPO,500 -All 5-trains are sold out, 5+5-trains now available +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 +MERGE_MINOR_LOG,Bob,BB,PR,no,no +GetShareForMinor,Bob,10,PR,IPO,BB +PrivateCloses,BB +MERGE_MINOR_LOG,Bob,M6,PR,1,0 +GetShareForMinor,Bob,5,PR,IPO,M6 +ExchangesBaseToken,PR,M6,C11/1 +MERGE_MINOR_LOG,Bob,M3,PR,0,1 +GetShareForMinor,Bob,5,PR,IPO,M3 +ExchangesBaseToken,PR,M3,F14/1 +MERGE_MINOR_LOG,Bob,M1,PR,1,0 +GetShareForMinor,Bob,5,PR,IPO,M1 +ExchangesBaseToken,PR,M1,H2/1 +MERGE_MINOR_LOG,Charlie,HB,PR,no,no +GetShareForMinor,Charlie,10,PR,IPO,HB +PrivateCloses,HB +MERGE_MINOR_LOG,Charlie,M5,PR,0,0 +GetShareForMinor,Charlie,5,PR,IPO,M5 +MERGE_MINOR_LOG,Charlie,M4,PR,45,1 +GetShareForMinor,Charlie,10,PR,IPO,M4 +ExchangesBaseToken,PR,M4,G5/1 + +EndOfFormationRound,PR,OperatingRound 7.1 +IS_NOW_PRES_OF,Bob,PR + +CompanyOperates,HE,Charlie +LaysTileAt,HE,24,K7,NE +CompanyRevenue,HE,220 +CompanyWithholds,HE,220 +PRICE_MOVES_LOG,HE,86,B3,82,A3 + +CompanyOperates,WT,Alice +LaysTileAtFor,WT,8,M13,W,50 +CompanyRevenue,WT,990 +CompanyWithholds,WT,990 +PRICE_MOVES_LOG,WT,72,A5,64,A6 +BuysTrain,WT,5,IPO,500 +FirstTrainBought,5 +StartOfPhase,5 +PrivateCloses,OBB +PrivateCloses,PfB +CompanyDiscardsTrain,SX,3 + +EndOfOperatingRound,7.1 +ORWorthIncrease,Alice,7.1,549 +ORWorthIncrease,Bob,7.1,824 +ORWorthIncrease,Charlie,7.1,946 +Has,BY,250 +Has,SX,175 +Has,BA,24 +Has,WT,752 +Has,HE,649 +Has,PR,663 +Has,Alice,317 +Has,Bob,770 +Has,Charlie,615 +START_OR,7.2 + +CompanyOperates,BY,Alice +LaysTileAt,BY,220,E19,SW +CompanyRevenue,BY,140 +CompanyPaysOutFull,BY,140 +Payout,Alice,98,7,10 +Payout,Bob,28,2,10 +Payout,Charlie,14,1,10 +PRICE_MOVES_LOG,BY,232,J1,258,K1 +BuysTrain,BY,5,WT,1 + +CompanyOperates,SX,Charlie +LaysTileAt,SX,216,H20,E +CompanyRevenue,SX,300 +CompanyWithholds,SX,300 +PRICE_MOVES_LOG,SX,166,G1,148,F1 + +CompanyOperates,PR,Bob +LaysTileAtFor,PR,221,C11,SW,50 +CompanyRevenue,PR,350 +CompanyPaysOutFull,PR,350 +Payout,Alice,105,6,5 +Payout,Bob,123,7,5 +Payout,Charlie,123,7,5 +PRICE_MOVES_LOG,PR,154,I4,172,J4 +BuysTrain,PR,5,IPO,500 +All 5-trains are sold out, 5+5-trains now available |
From: Erik V. <ev...@us...> - 2011-12-19 12:01:22
|
rails/game/StockRound.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) New commits: commit db7c6ee7b80a57e88b8008ccec460fb91059ea87 Author: Erik Vos <eri...@xs...> Date: Mon Dec 19 12:59:29 2011 +0100 Fixed initialisation of raiseIfSoldOut attribute. diff --git a/rails/game/StockRound.java b/rails/game/StockRound.java index 3c469c3..03bb17a 100644 --- a/rails/game/StockRound.java +++ b/rails/game/StockRound.java @@ -56,7 +56,7 @@ public class StockRound extends Round { /* Rules */ protected int sequenceRule; - protected boolean raiseIfSoldOut; + protected boolean raiseIfSoldOut = false; /** * Constructor with the GameManager, will call super class (Round's) Constructor to initialize @@ -72,13 +72,15 @@ public class StockRound extends Round { sequenceRule = getGameParameterAsInt(GameDef.Parm.STOCK_ROUND_SEQUENCE); - raiseIfSoldOut = true; - guiHints.setVisibilityHint(GuiDef.Panel.MAP, true); guiHints.setVisibilityHint(GuiDef.Panel.STOCK_MARKET, true); guiHints.setActivePanel(GuiDef.Panel.STATUS); } + /** Start the Stock Round. <p> + * Please note: subclasses that are NOT real stock rounds should NOT call this method + * (or set raiseIfSoldOut to false after calling this method). + */ public void start() { ReportBuffer.add(LocalText.getText("StartStockRound", @@ -91,6 +93,8 @@ public class StockRound extends Round { initPlayer(); + raiseIfSoldOut = true; + } /*----- General methods -----*/ |
From: Stefan F. <ste...@us...> - 2011-12-19 10:32:57
|
.classpath | 1 build.xml | 20 data/1856/Map.xml | 203 data/1856/MapImage.svg | 6062 ++++++++++ data/18GA/Map.xml | 280 data/18GA/MapImage_CottonPort.svg |21404 ++++++++++++++++++++++++++++++++++++++ version.number | 2 7 files changed, 27725 insertions(+), 247 deletions(-) New commits: commit c115ce62b35679fd43403f139cc3d75dfebabcc6 Author: Stefan Frey <ste...@we...> Date: Mon Dec 19 11:34:35 2011 +0100 prepared for release 1.5.5 diff --git a/version.number b/version.number index 26b5665..4dd99d7 100644 --- a/version.number +++ b/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.5.4 +version=1.5.5 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file commit 235ff873135e26fa309737f264cd5003e44f99d4 Author: Frederick Weld <fre...@go...> Date: Mon Dec 19 06:57:22 2011 +0100 Added 18GA Cotton-Port and 1856 Maps. diff --git a/data/1856/Map.xml b/data/1856/Map.xml index 69d0615..2818de8 100644 --- a/data/1856/Map.xml +++ b/data/1856/Map.xml @@ -1,102 +1,103 @@ -<Map tileOrientation="NS" letterOrientation="horizontal" even="A"> - <Hex name="A20" tile="-902" value="30,50,60" city="Detroit/Windsor"/> - <Hex name="B13" tile="-902" orientation="1" value="30,50,50" city="Sarnia"/> - <Hex name="B15" tile="0"/> - <Hex name="B17" tile="0"/> - <Hex name="B19" tile="-10" label="L" city="Chatham"/> - <Hex name="B21" tile="0"/> - <Hex name="C14" tile="-10" label="L" port="yes" city="Maudaumin"/> - <Hex name="C16" tile="0"/> - <Hex name="C18" tile="0"/> - <Hex name="C20" tile="0"/> - <Hex name="D13" tile="0"/> - <Hex name="D15" tile="0"/> - <Hex name="D17" tile="-10" city="Glencoe"/> - <Hex name="D19" tile="-1" port="yes"/> - <Hex name="E12" tile="0"/> - <Hex name="E14" tile="0"/> - <Hex name="E16" tile="0"/> - <Hex name="E18" tile="-2" port="yes"/> - <Hex name="F9" tile="-939" port="yes" value="30,50,40" city="Goderich"> - <Access runThrough="yes"/> - </Hex> - <Hex name="F11" tile="0"/> - <Hex name="F13" tile="-2"/> - <Hex name="F15" tile="-11" city="London"/> - <Hex name="F17" tile="-10" label="L" port="yes" city="St.Thomas"/> - <Hex name="G8" tile="0"/> - <Hex name="G10" tile="0"/> - <Hex name="G12" tile="-10"/> - <Hex name="G14" tile="0"/> - <Hex name="G16" tile="0"/> - <Hex name="G18" tile="0"/> - <Hex name="H5" tile="-902" orientation="1" port="yes" value="30,50,40" city="Lake Huron"/> - <Hex name="H7" tile="-2" port="yes"/> - <Hex name="H9" tile="0"/> - <Hex name="H11" tile="-1"/> - <Hex name="H13" tile="0"/> - <Hex name="H15" tile="-10" city="Woodstock"/> - <Hex name="H17" tile="-1" port="yes"/> - <Hex name="I6" tile="0"/> - <Hex name="I8" tile="-10"/> - <Hex name="I10" tile="0"/> - <Hex name="I12" tile="-20" city="Kitchener"/> - <Hex name="I14" tile="-2" city="Drumbo"/> - <Hex name="I16" tile="0"/> - <Hex name="I18" tile="0"/> - <Hex name="J5" tile="-1" port="yes"/> - <Hex name="J7" tile="0"/> - <Hex name="J9" tile="-1"/> - <Hex name="J11" tile="-10" city="Guelph"/> - <Hex name="J13" tile="-10" city="Galt"/> - <Hex name="J15" tile="-10" city="Brantford"/> - <Hex name="J17" tile="-2" port="yes"/> - <Hex name="K2" tile="-902" orientation="1" port="yes" value="20,30,30" city="Georgian Bay"/> - <Hex name="K4" tile="0"/> - <Hex name="K6" tile="0"/> - <Hex name="K8" tile="-10" city="Orangeville"/> - <Hex name="K10" tile="0" cost="40"/> - <Hex name="K12" tile="0" cost="40"/> - <Hex name="K14" tile="0" cost="40"/> - <Hex name="K16" tile="-1"/> - <Hex name="K18" tile="0"/> - <Hex name="L3" tile="0"/> - <Hex name="L5" tile="0"/> - <Hex name="L7" tile="0"/> - <Hex name="L9" tile="-1"/> - <Hex name="L11" tile="0"/> - <Hex name="L13" tile="-10" label="L" city="Burlington"/> - <Hex name="L15" tile="-20" cost="40" city="Hamilton"/> - <Hex name="L17" tile="0"/> - <Hex name="M2" tile="0"/> - <Hex name="M4" tile="-11" city="Barrie"/> - <Hex name="M6" tile="-1"/> - <Hex name="M8" tile="0"/> - <Hex name="M10" tile="-2"/> - <Hex name="M12" tile="0"/> - <Hex name="M16" tile="0" cost="40"/> - <Hex name="M18" tile="-1" port="yes"/> - <Hex name="N1" tile="-902" orientation="2" value="20,30,50" city="West Canada"/> - <Hex name="N3" tile="-10" label="L" cost="40"/> - <Hex name="N7" tile="0"/> - <Hex name="N9" tile="-1"/> - <Hex name="N11" tile="-56001" orientation="0" city="Toronto"/><!-- home city to be defined --> - <Hex name="N15" tile="0" cost="40"/> - <Hex name="N17" tile="-20" city="Welland"/> - <Hex name="N19" tile="0" cost="40"/> - <Hex name="O2" tile="-903" orientation="1" value="20,30,50" city="West Canada"/> - <Hex name="O4" tile="0"/> - <Hex name="O6" tile="0"/> - <Hex name="O8" tile="0"/> - <Hex name="O10" tile="0"/> - <Hex name="O16" tile="-10" city="Niagara Falls"/> - <Hex name="O18" tile="-10" label="L" port="yes" city="Fort Erie"/> - <Hex name="P3" tile="0"/> - <Hex name="P5" tile="0"/> - <Hex name="P7" tile="0" cost="40"/> - <Hex name="P9" tile="-10" label="L" city="Oshawa"/> - <Hex name="P17" tile="-902" orientation="3" value="30,40,40" city="Buffalo"/> - <Hex name="P19" tile="-901" orientation="3" value="30,40,40" city="Buffalo"/> - <Hex name="Q8" tile="-902" orientation="3" value="20,30,50" city="Lower Canada"/> - <Hex name="Q10" tile="-901" orientation="3" value="20,30,50" city="Lower Canada"/> +<Map tileOrientation="NS" letterOrientation="horizontal" even="A"> + <Image file="1856/MapImage.svg" x="10" y="3" scale="0.1632"/> + <Hex name="A20" tile="-902" value="30,50,60" city="Detroit/Windsor"/> + <Hex name="B13" tile="-902" orientation="1" value="30,50,50" city="Sarnia"/> + <Hex name="B15" tile="0"/> + <Hex name="B17" tile="0"/> + <Hex name="B19" tile="-10" label="L" city="Chatham"/> + <Hex name="B21" tile="0"/> + <Hex name="C14" tile="-10" label="L" port="yes" city="Maudaumin"/> + <Hex name="C16" tile="0"/> + <Hex name="C18" tile="0"/> + <Hex name="C20" tile="0"/> + <Hex name="D13" tile="0"/> + <Hex name="D15" tile="0"/> + <Hex name="D17" tile="-10" city="Glencoe"/> + <Hex name="D19" tile="-1" port="yes"/> + <Hex name="E12" tile="0"/> + <Hex name="E14" tile="0"/> + <Hex name="E16" tile="0"/> + <Hex name="E18" tile="-2" port="yes"/> + <Hex name="F9" tile="-939" port="yes" value="30,50,40" city="Goderich"> + <Access runThrough="yes"/> + </Hex> + <Hex name="F11" tile="0"/> + <Hex name="F13" tile="-2"/> + <Hex name="F15" tile="-11" city="London"/> + <Hex name="F17" tile="-10" label="L" port="yes" city="St.Thomas"/> + <Hex name="G8" tile="0"/> + <Hex name="G10" tile="0"/> + <Hex name="G12" tile="-10"/> + <Hex name="G14" tile="0"/> + <Hex name="G16" tile="0"/> + <Hex name="G18" tile="0"/> + <Hex name="H5" tile="-902" orientation="1" port="yes" value="30,50,40" city="Lake Huron"/> + <Hex name="H7" tile="-2" port="yes"/> + <Hex name="H9" tile="0"/> + <Hex name="H11" tile="-1"/> + <Hex name="H13" tile="0"/> + <Hex name="H15" tile="-10" city="Woodstock"/> + <Hex name="H17" tile="-1" port="yes"/> + <Hex name="I6" tile="0"/> + <Hex name="I8" tile="-10"/> + <Hex name="I10" tile="0"/> + <Hex name="I12" tile="-20" city="Kitchener"/> + <Hex name="I14" tile="-2" city="Drumbo"/> + <Hex name="I16" tile="0"/> + <Hex name="I18" tile="0"/> + <Hex name="J5" tile="-1" port="yes"/> + <Hex name="J7" tile="0"/> + <Hex name="J9" tile="-1"/> + <Hex name="J11" tile="-10" city="Guelph"/> + <Hex name="J13" tile="-10" city="Galt"/> + <Hex name="J15" tile="-10" city="Brantford"/> + <Hex name="J17" tile="-2" port="yes"/> + <Hex name="K2" tile="-902" orientation="1" port="yes" value="20,30,30" city="Georgian Bay"/> + <Hex name="K4" tile="0"/> + <Hex name="K6" tile="0"/> + <Hex name="K8" tile="-10" city="Orangeville"/> + <Hex name="K10" tile="0" cost="40"/> + <Hex name="K12" tile="0" cost="40"/> + <Hex name="K14" tile="0" cost="40"/> + <Hex name="K16" tile="-1"/> + <Hex name="K18" tile="0"/> + <Hex name="L3" tile="0"/> + <Hex name="L5" tile="0"/> + <Hex name="L7" tile="0"/> + <Hex name="L9" tile="-1"/> + <Hex name="L11" tile="0"/> + <Hex name="L13" tile="-10" label="L" city="Burlington"/> + <Hex name="L15" tile="-20" cost="40" city="Hamilton"/> + <Hex name="L17" tile="0"/> + <Hex name="M2" tile="0"/> + <Hex name="M4" tile="-11" city="Barrie"/> + <Hex name="M6" tile="-1"/> + <Hex name="M8" tile="0"/> + <Hex name="M10" tile="-2"/> + <Hex name="M12" tile="0"/> + <Hex name="M16" tile="0" cost="40"/> + <Hex name="M18" tile="-1" port="yes"/> + <Hex name="N1" tile="-902" orientation="2" value="20,30,50" city="West Canada"/> + <Hex name="N3" tile="-10" label="L" cost="40"/> + <Hex name="N7" tile="0"/> + <Hex name="N9" tile="-1"/> + <Hex name="N11" tile="-56001" orientation="0" city="Toronto"/><!-- home city to be defined --> + <Hex name="N15" tile="0" cost="40"/> + <Hex name="N17" tile="-20" city="Welland"/> + <Hex name="N19" tile="0" cost="40"/> + <Hex name="O2" tile="-903" orientation="1" value="20,30,50" city="West Canada"/> + <Hex name="O4" tile="0"/> + <Hex name="O6" tile="0"/> + <Hex name="O8" tile="0"/> + <Hex name="O10" tile="0"/> + <Hex name="O16" tile="-10" city="Niagara Falls"/> + <Hex name="O18" tile="-10" label="L" port="yes" city="Fort Erie"/> + <Hex name="P3" tile="0"/> + <Hex name="P5" tile="0"/> + <Hex name="P7" tile="0" cost="40"/> + <Hex name="P9" tile="-10" label="L" city="Oshawa"/> + <Hex name="P17" tile="-902" orientation="3" value="30,40,40" city="Buffalo"/> + <Hex name="P19" tile="-901" orientation="3" value="30,40,40" city="Buffalo"/> + <Hex name="Q8" tile="-902" orientation="3" value="20,30,50" city="Lower Canada"/> + <Hex name="Q10" tile="-901" orientation="3" value="20,30,50" city="Lower Canada"/> </Map> \ No newline at end of file diff --git a/data/1856/MapImage.svg b/data/1856/MapImage.svg new file mode 100644 index 0000000..01dda31 --- /dev/null +++ b/data/1856/MapImage.svg @@ -0,0 +1,6062 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="5112" + height="3915" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="MapImage.svg"> + <defs + id="defs4"> + <polygon + id="pt" + points="-0.1624598481164531,0 0,-0.5 0.1624598481164531,0" + transform="scale(0.0616)" + fill="#FFF" /> + <g + id="star"> + <use + xlink:href="#pt" + transform="rotate(-144)" + id="use4787" /> + <use + xlink:href="#pt" + transform="rotate(-72)" + id="use4789" /> + <use + xlink:href="#pt" + id="use4791" /> + <use + xlink:href="#pt" + transform="rotate(72)" + id="use4793" /> + <use + xlink:href="#pt" + transform="rotate(144)" + id="use4795" /> + </g> + <g + id="s5"> + <use + xlink:href="#star" + x="-0.252" + id="use4798" /> + <use + xlink:href="#star" + x="-0.126" + id="use4800" /> + <use + xlink:href="#star" + id="use4802" /> + <use + xlink:href="#star" + x="0.126" + id="use4804" /> + <use + xlink:href="#star" + x="0.252" + id="use4806" /> + </g> + <g + id="s6"> + <use + xlink:href="#s5" + x="-0.063" + id="use4809" /> + <use + xlink:href="#star" + x="0.315" + id="use4811" /> + </g> + <g + id="x4"> + <use + xlink:href="#s6" + id="use4814" /> + <use + xlink:href="#s5" + y="0.054" + id="use4816" /> + <use + xlink:href="#s6" + y="0.108" + id="use4818" /> + <use + xlink:href="#s5" + y="0.162" + id="use4820" /> + </g> + <g + id="u"> + <use + xlink:href="#x4" + y="-0.216" + id="use4823" /> + <use + xlink:href="#x4" + id="use4825" /> + <use + xlink:href="#s6" + y="0.216" + id="use4827" /> + </g> + <rect + id="stripe" + width="1235" + height="50" + fill="#B22234" /> + <inkscape:perspective + id="perspective64" + inkscape:persp3d-origin="479.5 : 197.66667 : 1" + inkscape:vp_z="959 : 296.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 296.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + inkscape:collect="always" + id="filter4844"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="22.63124" + id="feGaussianBlur4846" /> + </filter> + <filter + inkscape:collect="always" + id="filter4926"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="6.3769976" + id="feGaussianBlur4928" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#ff6666" + borderopacity="1" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.2" + inkscape:cx="2556" + inkscape:cy="1957.5" + inkscape:document-units="px" + inkscape:current-layer="layer3" + showgrid="false" + inkscape:object-nodes="false" + inkscape:window-width="1737" + inkscape:window-height="1047" + inkscape:window-x="1452" + inkscape:window-y="-11" + inkscape:window-maximized="1" + borderlayer="true" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="GreatLakes" + style="display:inline" + transform="translate(0,-3085.3599)"> + <path + style="fill:#a1c6e9;stroke:#3584cf;stroke-width:15;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 5090.9062,1819.875 -68.7187,17.4062 -69.0625,6.9688 -111.3438,-22.9688 -139.375,15.8438 -163.625,42.1875 -216.375,142.5313 -58.375,27.5624 -80.4062,-13.125 -76.9375,14.4063 -17.5313,28.8125 -36.5312,15.8125 -27.8125,-1.1563 -46.4687,21.2813 -42.5938,27.0625 -18.3125,67.0312 -21.0625,41 -75.9062,56.4376 -72.3438,74.375 -87.25,61.3437 -2.25,45.1875 24.8125,46.0938 102.6563,101.0624 71.8124,26.625 70.3438,13.7188 54.25,10.9375 52.8438,39.4375 71.2187,15.625 64.625,-7 114.0937,-35.9375 51.375,-22.25 43.375,2.1875 26.4376,9.8125 38.875,14.75 -6.4376,68.25 -17.9687,90.1563 -16.4687,13.75 9.0937,37.125 12.9375,5.5624 3.7188,-29.1874 17.6562,-24 17.0625,-176.2188 7.875,-15.75 521.0937,-52.2812 133.8438,9.4687 41.1875,9.875 0,-808.5313 -36.2813,-4.9687 z" + transform="translate(0,3085.3599)" + id="polygon11" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccc" /> + <path + style="fill:#a1c6e9;stroke:#3584cf;stroke-width:15;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 4418.5625,2917.2188 -25.4375,52.0624 25.75,3.1876 28.8125,27.6874 -28.0625,75.3126 0.7188,22.0937 16.4374,38.2187 58.7813,55.5 17.5313,45.7813 -19.875,46.25 -22.9688,2.1875 -32,-7.0938 -92.0625,-0.3437 -26.0313,5.8125 -10.4062,19.1562 -31.9062,-4.2812 -0.9376,-17.375 -34.8124,-28 -83.2188,-21.6562 -108.2188,-11.0938 -35.3124,21.0312 -29.0938,-18.6874 -75.1875,-29.4376 -30.6875,0.9376 -57.5938,17.1562 -62.125,-26.1562 -110.4374,-5.5938 -20.4376,-16.6875 -263.9062,6.6563 -21.8438,11.75 -61.7812,8.0937 -65.9375,-6.1563 -30.5313,5.75 -130.9374,-17.9374 -31.7813,-11.7813 -101.5625,52.875 -26.3125,30.3437 -44.4687,52.5938 -49.0938,-7.4688 -101.6562,48.0626 10.7187,57.9062 110.0313,9.8125 6.4687,11.5313 64.6563,33.4374 6.4687,11.5313 22.4063,19 98.5624,27.3437 12.2188,-18.4687 19.7812,10.0937 8.2188,18.5313 78.75,21.5937 -5.75,14.5313 -66.0312,3.3437 -91.4376,-21.5312 -206.4687,-102.625 -115.5,-16.5938 -65.875,-13.6562 -90.5937,-35.125 -84.125,-52.5938 -83.9688,-63.2187 -40.1562,-22.7813 -246.1563,-78.8437 -273.9063,-49.0313 -72.5937,-3.8437 -22.4687,20.625 -17.3438,27.3437 -85.4062,3.6563 L 1488,3165 l -201.8125,126.4688 -107.9687,44.125 -98.875,58.625 -24.6563,26.1874 -59.34375,157.7813 -19.59375,1.875 -39.8125,-19.5 9.46875,-11.5625 26.5,0.2812 16.03125,-19.8437 L 1015,3460.875 999.09375,3456.5625 905,3518.5312 903.5625,3550.1562 776.125,3527.5625 716,3531.5 l -39.65625,20.625 -139.15625,43.3125 -248.6875,64.6563 -71.09375,76.4374 -74.25,87.5626 -5.59375,38.0312 -17.9375,29.8438 -24.15625,-71.625 L 86,3747.8125 l -22.9375,-17.625 -25.03125,-9.25 -36.09375,-13.375 -23.15625,-1.6875 0,258.625 3592.81255,0 206.2187,-95.7812 122.9063,-91.4376 L 4159.75,3703 l 54.9688,-74.9062 73.8124,-26.1876 15.1876,-63.4374 169.6874,-52.25 77.3126,-55.875 14.7187,-52.875 -22.5937,-172.2188 -24.3126,-63 74.5938,-64.4062 -2.75,-28.4063 -61.0938,-57.9063 L 4423.8125,2937 4426.5,2917.7812 z" + id="polygon13" + inkscape:connector-curvature="0" + transform="translate(0,3085.3599)" + sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /> + <path + style="fill:#a1c6e9;stroke:#3584cf;stroke-width:15;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 103,-23.59375 60.40625,114.25 l -81.625,35.375 0,541.15625 45.96875,-43.75 216.53125,12.71875 54.125,-49 77.6875,-20.46875 L 445.375,612.6875 556.40625,696.625 629,893.71875 662.21875,1098.0625 612.5,1449.4375 l 20.03125,174.4375 -57.6875,342.5312 -12.8125,165.4376 4.625,236.7187 -107.78125,53.5313 -8.8125,50.3124 -28.6875,110.75 -2.5625,70.0938 -12.78125,111.5625 13.875,6.375 23.9375,-39.1563 0.78125,-92.25 2.09375,-44.0624 4.8125,-28.7813 2.4375,-48.25 21.1875,-41.375 2.46875,-46.6875 107.21875,-52.1562 11.875,-38.4376 11.28125,-16.0624 56.53125,-18.75 202,-9.8438 136.56255,-61.75 115.7812,-76.5312 5.3125,-29.0313 13.9375,-11.4687 23.875,-0.2813 187.1562,-44.625 41.0626,-20.0625 92.1874,-65.5 38.9063,-49.8438 18.5937,-47.0937 10.5,-26.6563 19.8438,-170.8124 38.5625,-114.2813 34.125,-130.1875 11.7813,-130.5312 14.0624,-44 51.25,-242.0938 -12,-134.59375 13.5,-25.9375 60.4688,-52.625 79.3125,-56.75 24.125,-24.78125 82.4375,-116.65625 -10.3438,-74.46875 19.3438,-12.6875 46.6875,-10.46875 5.5,-25.3125 54.4063,-41.375 41.9687,-15.03125 70.9375,-10.625 24.5938,-18.6875 20.0624,-18.75 17.375,-47.125 63.4688,-65.375 76.0312,-51.625 25.5,-36.59375 9.9063,-53.0625 -3.2187,-36.5 15.75,-35.8125 16.7187,-18.4375 -1.6875,-27.96875 11.2812,-42.96875 z m 2534.3125,0 -3.125,1.1875 -8.4375,21.46875 10.5938,17.8125 133.7187,-30.625 1.5313,-9.84375 z m 208.6563,0 40.3124,13.15625 15.6563,31.96875 -14.1563,63.84375 -109.9062,186.25 6.2812,32.875 28.4376,-4.53125 20.625,-20.15625 25.8124,-33.28125 26.1563,-13.375 41.3437,-44.5625 54.1876,-33.53125 43.6562,-10 69.2812,13.3125 18.4063,-11.40625 19.2813,8.3125 22.5,46.8125 6.0937,53.0625 -8.875,22.5 9.6875,51.1875 29.6875,29.625 41.75,6.34375 69.125,37.5 34.3125,69.8125 37.7812,24.71875 74.8438,42.8125 74.2256,17.46081 37.1924,14.90386 18.8302,11.72795 76.8616,-15.64276 70.375,-41.40625 41.9688,-65.78125 5.1874,-70.3125 8.5233,-41.22191 -18.992,-82.94481 -38.7035,-35.87689 -1.0626,-32.53125 15.1876,-31.28125 38.9374,-17.71875 18.3438,9.5625 30.0625,23.46875 15.9063,-27.8437 |
From: Erik V. <ev...@us...> - 2011-12-18 11:59:44
|
rails/game/StockRound.java | 51 +++++++++-------- rails/game/specific/_18EU/FinalMinorExchangeRound.java | 4 + 2 files changed, 31 insertions(+), 24 deletions(-) New commits: commit fa62b37076e0753f6fa32c2af220ac880c784be3 Author: Erik Vos <eri...@xs...> Date: Sun Dec 18 12:58:58 2011 +0100 Fixed 18EU bug: sold out companies could raise value at end of FME round. Raising stock value is now controlled by a new StockRound attribute named 'raiseIfSoldOut', which is normally true. This new attribute should be set to false at initiating any subclasses that call the generic finishRound() but where stock price should not change. This is now done in 18EU/FinalMinorExchangeRound. diff --git a/rails/game/StockRound.java b/rails/game/StockRound.java index 3bbc525..3c469c3 100644 --- a/rails/game/StockRound.java +++ b/rails/game/StockRound.java @@ -56,6 +56,7 @@ public class StockRound extends Round { /* Rules */ protected int sequenceRule; + protected boolean raiseIfSoldOut; /** * Constructor with the GameManager, will call super class (Round's) Constructor to initialize @@ -71,6 +72,8 @@ public class StockRound extends Round { sequenceRule = getGameParameterAsInt(GameDef.Parm.STOCK_ROUND_SEQUENCE); + raiseIfSoldOut = true; + guiHints.setVisibilityHint(GuiDef.Panel.MAP, true); guiHints.setVisibilityHint(GuiDef.Panel.STOCK_MARKET, true); guiHints.setActivePanel(GuiDef.Panel.STATUS); @@ -417,11 +420,11 @@ public class StockRound extends Round { // and double shares for now. choiceOfPresidentExchangeCerts = uniqueCertsCount[1] > 1 && uniqueCertsCount[2] > 0; - // If a presidency dump is possible, extra (single) share(s) may be sold - // that aren't even owned - extraSingleShares = Math.min( - presidentShare/shareUnit, - (maxShareToSell-dumpThreshold)/shareUnit+1); + // If a presidency dump is possible, extra (single) share(s) may be sold + // that aren't even owned + extraSingleShares = Math.min( + presidentShare/shareUnit, + (maxShareToSell-dumpThreshold)/shareUnit+1); } // What number of shares can we sell if we cannot dump? @@ -1344,24 +1347,26 @@ public class StockRound extends Round { ReportBuffer.add(LocalText.getText("END_SR", String.valueOf(getStockRoundNumber()))); - /* Check if any companies are sold out. */ - for (PublicCompanyI company : gameManager.getCompaniesInRunningOrder()) { - if (company.hasStockPrice() && company.isSoldOut()) { - StockSpaceI oldSpace = company.getCurrentSpace(); - stockMarket.soldOut(company); - StockSpaceI newSpace = company.getCurrentSpace(); - if (newSpace != oldSpace) { - ReportBuffer.add(LocalText.getText("SoldOut", - company.getName(), - Bank.format(oldSpace.getPrice()), - oldSpace.getName(), - Bank.format(newSpace.getPrice()), - newSpace.getName())); - } else { - ReportBuffer.add(LocalText.getText("SoldOutNoRaise", - company.getName(), - Bank.format(newSpace.getPrice()), - newSpace.getName())); + if (raiseIfSoldOut) { + /* Check if any companies are sold out. */ + for (PublicCompanyI company : gameManager.getCompaniesInRunningOrder()) { + if (company.hasStockPrice() && company.isSoldOut()) { + StockSpaceI oldSpace = company.getCurrentSpace(); + stockMarket.soldOut(company); + StockSpaceI newSpace = company.getCurrentSpace(); + if (newSpace != oldSpace) { + ReportBuffer.add(LocalText.getText("SoldOut", + company.getName(), + Bank.format(oldSpace.getPrice()), + oldSpace.getName(), + Bank.format(newSpace.getPrice()), + newSpace.getName())); + } else { + ReportBuffer.add(LocalText.getText("SoldOutNoRaise", + company.getName(), + Bank.format(newSpace.getPrice()), + newSpace.getName())); + } } } } diff --git a/rails/game/specific/_18EU/FinalMinorExchangeRound.java b/rails/game/specific/_18EU/FinalMinorExchangeRound.java index 79bb761..3e96542 100644 --- a/rails/game/specific/_18EU/FinalMinorExchangeRound.java +++ b/rails/game/specific/_18EU/FinalMinorExchangeRound.java @@ -23,6 +23,8 @@ public class FinalMinorExchangeRound extends StockRound_18EU { guiHints.setVisibilityHint(GuiDef.Panel.MAP, true); guiHints.setActivePanel(GuiDef.Panel.STATUS); + + raiseIfSoldOut = false; } public void start(Player playerToStartFMERound) { @@ -56,7 +58,7 @@ public class FinalMinorExchangeRound extends StockRound_18EU { } List<PublicCompanyI> comps = - companyManager.getAllPublicCompanies(); + companyManager.getAllPublicCompanies(); List<PublicCompanyI> minors = new ArrayList<PublicCompanyI>(); List<PublicCompanyI> targetCompanies = new ArrayList<PublicCompanyI>(); String type; |
From: Erik V. <ev...@us...> - 2011-12-08 20:11:50
|
rails/game/specific/_1889/OperatingRound_1889.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) New commits: commit 60aa939317e6255ba8bd55bc37a4d7879c4232ba Author: Erik Vos <eri...@xs...> Date: Thu Dec 8 21:11:22 2011 +0100 1889: Laying port tile is only allowed action if done outside of own company OR. diff --git a/rails/game/specific/_1889/OperatingRound_1889.java b/rails/game/specific/_1889/OperatingRound_1889.java index 12d82bc..c7fdf52 100644 --- a/rails/game/specific/_1889/OperatingRound_1889.java +++ b/rails/game/specific/_1889/OperatingRound_1889.java @@ -60,7 +60,9 @@ public class OperatingRound_1889 extends OperatingRound { if (!activeSpPrivB.booleanValue()) possibleActions.add(new UseSpecialProperty(spPrivB)); else { + possibleActions.clear(); possibleActions.add(layTile); + possibleActions.add(new NullAction(NullAction.SKIP)); DisplayBuffer.add(LocalText.getText("1889PrivateBactive", privB.getPortfolio().getOwner())); } } @@ -75,7 +77,7 @@ public class OperatingRound_1889 extends OperatingRound { LayTile layTile = new LayTile(spPrivC); if (validateSpecialTileLay(layTile)) { possibleActions.clear(); - possibleActions.add(new LayTile(spPrivC)); + possibleActions.add(layTile); possibleActions.add(new NullAction(NullAction.SKIP)); DisplayBuffer.add(LocalText.getText("1889PrivateCactive", previousOwnerName)); } |
From: Erik V. <ev...@us...> - 2011-12-08 09:31:21
|
data/1889/CompanyManager.xml | 2 rails/game/specific/_1889/OperatingRound_1889.java | 84 +++++++++++---------- 2 files changed, 46 insertions(+), 40 deletions(-) New commits: commit 34d72d6fa2232eda46e9545b6f2decfb0038fff0 Author: Erik Vos <eri...@xs...> Date: Thu Dec 8 10:29:57 2011 +0100 Applied new special tile lay validations to 1889. diff --git a/data/1889/CompanyManager.xml b/data/1889/CompanyManager.xml index 83dd566..90af34a 100644 --- a/data/1889/CompanyManager.xml +++ b/data/1889/CompanyManager.xml @@ -63,7 +63,7 @@ <SpecialProperties> <!-- Timing of special property is done in OperatingRound_1889, coded against name "C" --> <SpecialProperty condition="specific" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="C4" extra="yes" free="yes"/> + <SpecialTileLay location="C4" colour="green" extra="yes" free="yes"/> </SpecialProperty> </SpecialProperties> </Company> diff --git a/rails/game/specific/_1889/OperatingRound_1889.java b/rails/game/specific/_1889/OperatingRound_1889.java index 8ed363c..12d82bc 100644 --- a/rails/game/specific/_1889/OperatingRound_1889.java +++ b/rails/game/specific/_1889/OperatingRound_1889.java @@ -6,8 +6,9 @@ import rails.common.LocalText; import rails.common.parser.GameOption; import rails.game.*; import rails.game.action.*; -import rails.game.special.*; -import rails.game.state.*; +import rails.game.special.SpecialPropertyI; +import rails.game.special.SpecialTileLay; +import rails.game.state.BooleanState; /** * Adds specific code for 1889 to allow the special timing of the special tile laying private companies @@ -16,14 +17,14 @@ public class OperatingRound_1889 extends OperatingRound { private PrivateCompanyI privB; private BooleanState activeSpPrivB; - + private PrivateCompanyI privC; private BooleanState activeSpPrivC; private GameDef.OrStep storeActiveStep; - private String previousOwnerName; - + private String previousOwnerName; + private boolean beginnerGame; - + /** * Instantiates a new operating round_1889. * @@ -31,33 +32,35 @@ public class OperatingRound_1889 extends OperatingRound { */ public OperatingRound_1889 (GameManagerI gameManager) { super (gameManager); - + privB = companyManager.getPrivateCompany("B"); activeSpPrivB = new BooleanState("ActiveSpPrivB", false); - + privC = companyManager.getPrivateCompany("C"); activeSpPrivC = new BooleanState("ActiveSpPrivC", false); - + beginnerGame = GameOption.convertValueToBoolean(getGameOption("BeginnerGame")); } - + @Override protected void setGameSpecificPossibleActions() { - + // noMapMode and beginnerGame are not effected if (noMapMode || beginnerGame) return; - + // private B: lay track at other company tile laying steps if (getStep() == GameDef.OrStep.LAY_TRACK) { - if (!privB.isClosed() && - privB.getPortfolio().getOwner() instanceof Player && + if (!privB.isClosed() && + privB.getPortfolio().getOwner() instanceof Player && privB.getPortfolio().getOwner() != operatingCompany.get().getPresident()) { SpecialPropertyI spPrivB = privB.getSpecialProperties().get(0); - if (spPrivB != null && !spPrivB.isExercised()) { - if (!activeSpPrivB.booleanValue()) + LayTile layTile = new LayTile((SpecialTileLay)spPrivB); + if (spPrivB != null && !spPrivB.isExercised() + && validateSpecialTileLay(layTile)) { + if (!activeSpPrivB.booleanValue()) possibleActions.add(new UseSpecialProperty(spPrivB)); else { - possibleActions.add(new LayTile((SpecialTileLay)spPrivB)); + possibleActions.add(layTile); DisplayBuffer.add(LocalText.getText("1889PrivateBactive", privB.getPortfolio().getOwner())); } } @@ -65,21 +68,24 @@ public class OperatingRound_1889 extends OperatingRound { } else { activeSpPrivB.set(false); } - + // private C: trigger by purchase of private -- see below if (activeSpPrivC.booleanValue()) { - possibleActions.clear(); SpecialTileLay spPrivC = (SpecialTileLay)privC.getSpecialProperties().get(0); - possibleActions.add(new LayTile(spPrivC)); - possibleActions.add(new NullAction(NullAction.SKIP)); - DisplayBuffer.add(LocalText.getText("1889PrivateCactive", previousOwnerName)); + LayTile layTile = new LayTile(spPrivC); + if (validateSpecialTileLay(layTile)) { + possibleActions.clear(); + possibleActions.add(new LayTile(spPrivC)); + possibleActions.add(new NullAction(NullAction.SKIP)); + DisplayBuffer.add(LocalText.getText("1889PrivateCactive", previousOwnerName)); + } } - + } - + @Override public boolean processGameSpecificAction(PossibleAction action) { - + // private B if (action instanceof UseSpecialProperty) { UseSpecialProperty spAction=(UseSpecialProperty)action; @@ -92,30 +98,30 @@ public class OperatingRound_1889 extends OperatingRound { } return false; } - - + + @Override public boolean buyPrivate(BuyPrivate action){ - // store the seller name, playername in action is the owner of the buying company! - String sellerName = action.getPrivateCompany().getPortfolio().getOwner().getName(); - - boolean result = super.buyPrivate(action); - - if (!(noMapMode || beginnerGame) && result && (action.getPrivateCompany() == privC)) { - // moveStack identical to buy private action + // store the seller name, playername in action is the owner of the buying company! + String sellerName = action.getPrivateCompany().getPortfolio().getOwner().getName(); + + boolean result = super.buyPrivate(action); + + if (!(noMapMode || beginnerGame) && result && (action.getPrivateCompany() == privC)) { + // moveStack identical to buy private action activeSpPrivC.set(true); previousOwnerName = sellerName; log.debug("1889 specific: Activates tile laying step for C after purchase of C"); storeActiveStep = getStep(); stepObject.set(GameDef.OrStep.LAY_TRACK); } - return result; + return result; } - + @Override public boolean layTile(LayTile action) { - + boolean result = super.layTile(action); if (result && activeSpPrivC.booleanValue()) { @@ -126,7 +132,7 @@ public class OperatingRound_1889 extends OperatingRound { } return(result); } - + @Override public void skip() { if (activeSpPrivC.booleanValue()) { @@ -138,7 +144,7 @@ public class OperatingRound_1889 extends OperatingRound { super.skip(); } } - + } |
From: Erik V. <ev...@us...> - 2011-12-06 21:01:50
|
data/1835/CompanyManager.xml | 6 rails/game/OperatingRound.java | 154 ++++++++++++--------- rails/game/specific/_1835/OperatingRound_1835.java | 42 +---- 3 files changed, 102 insertions(+), 100 deletions(-) New commits: commit 8912fbffa6d8f12e9067da0d497eebc949e17f1c Merge: 96ae931 31d0618 Author: Erik Vos <eri...@xs...> Date: Tue Dec 6 21:58:11 2011 +0100 Merge branch 'master' of ssh://rails.git.sourceforge.net/gitroot/rails/rails Conflicts: rails/game/OperatingRound.java commit 96ae93123cd0273ad7681345928a7aac2889b8e0 Author: Erik Vos <eri...@xs...> Date: Fri Dec 2 23:14:24 2011 +0100 1825 minors have 10%, not 20% shares diff --git a/data/1825/CompanyManager.xml b/data/1825/CompanyManager.xml index 2ae65c9..7be3e79 100644 --- a/data/1825/CompanyManager.xml +++ b/data/1825/CompanyManager.xml @@ -23,14 +23,14 @@ <CompanyType name="Minor" class="rails.game.specific._1825.PublicCompany_1825"> <Float percentage="40"/> <StockPrice par="no"/> - <ShareUnit percentage="20"/> + <ShareUnit percentage="10"/> <BaseTokens> <!-- HomeBase lay options: "whenStarted", "whenFloated", "firstOR" (default) --> <HomeBase lay="firstOR"/> <LayCost method="sequence" cost="0"/> </BaseTokens> - <Certificate type="President" shares="2"/> - <Certificate shares="1" number="3"/> + <Certificate type="President" shares="4"/> + <Certificate shares="2" number="3"/> <Trains limit="4,3"/> <!--TileLays> <Number colour="yellow" number="2" phase="1,2,3,4"></Number></TileLays--> commit 5c7069a25a41a974fb25001ed3145cce979f0832 Author: Erik Vos <eri...@xs...> Date: Tue Dec 6 21:20:37 2011 +0100 Further changes to fix special tile lays. Special tile lay prevalidation has been factored out into a separate method to allow OperatingRound subclasses to add game-specific checks. diff --git a/data/1830/CompanyManager.xml b/data/1830/CompanyManager.xml index 3623f7f..5c2fe0e 100644 --- a/data/1830/CompanyManager.xml +++ b/data/1830/CompanyManager.xml @@ -40,7 +40,7 @@ <Blocking hex="B20"/> <SpecialProperties> <SpecialProperty condition="ifOwnedByCompany" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="B20" extra="yes" free="yes"/> + <SpecialTileLay colour="yellow" location="B20" extra="yes" free="yes"/> </SpecialProperty> </SpecialProperties> </Company> diff --git a/data/1835/CompanyManager.xml b/data/1835/CompanyManager.xml index 7127047..58db0e2 100644 --- a/data/1835/CompanyManager.xml +++ b/data/1835/CompanyManager.xml @@ -46,10 +46,10 @@ <Company name="OBB" longname="Ostbayerische Bahn" type="Private" basePrice="120" revenue="10"> <SpecialProperties> <SpecialProperty condition="ifOwnedByPlayer" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="M15" extra="yes" free="yes" /> + <SpecialTileLay location="M15" colour="yellow" extra="yes" free="yes" /> </SpecialProperty> <SpecialProperty condition="ifOwnedByPlayer" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="M17" extra="yes" free="yes" /> + <SpecialTileLay location="M17" colour="yellow" extra="yes" free="yes" /> </SpecialProperty> </SpecialProperties> <ClosingConditions> @@ -61,7 +61,7 @@ <Company name="PfB" longname="Pfalzbahnen" type="Private" basePrice="150" revenue="15"> <SpecialProperties> <SpecialProperty condition="ifOwnedByPlayer" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="L6" extra="yes" free="yes" /> + <SpecialTileLay location="L6" colour="green" extra="yes" free="yes" /> </SpecialProperty> <SpecialProperty condition="ifOwnedByPlayer" when="orTurn" class="rails.game.special.SpecialTokenLay"> <SpecialTokenLay location="L6" extra="yes" free="yes"/> diff --git a/rails/game/OperatingRound.java b/rails/game/OperatingRound.java index f754fa8..d799ad9 100644 --- a/rails/game/OperatingRound.java +++ b/rails/game/OperatingRound.java @@ -1688,56 +1688,10 @@ public class OperatingRound extends Round implements Observer { if (operatingCompany.get().canUseSpecialProperties()) { - // What colours can be laid in the current phase? - List<String> phaseColours = getCurrentPhase().getTileColours(); - for (SpecialTileLay stl : getSpecialProperties(SpecialTileLay.class)) { - if (stl.isExtra() - // If the special tile lay is not extra, it is only allowed if - // normal tile lays are also (still) allowed - || checkNormalTileLay(stl.getTile(), false)) { - LayTile lt = new LayTile(stl); - TileI tile = stl.getTile(); - - // Which tile colour(s) are specified explicitly... - String[] stlc = stl.getTileColours(); - if ((stlc == null || stlc.length == 0) && tile != null) { - // ... or implicitly - stlc = new String[] {tile.getColourName()}; - } - - // Which of the specified tile colours can really be laid now? - List<String> layableColours; - if (stlc == null) { - layableColours = phaseColours; - } else { - layableColours = new ArrayList<String>(); - for (String colour : stlc) { - if (phaseColours.contains(colour)) layableColours.add(colour); - } - } - // If any locations are specified, check if tile or colour(s) can be laid there. - Map<String, Integer> tc = new HashMap<String, Integer>(); - List<MapHex> hexes = stl.getLocations(); - for (String colour : layableColours) { - if (hexes != null) { - for (MapHex hex : hexes) { - // At least one hex does not have that colour yet - if (hex.getCurrentTile().getColourNumber() + 1 - == Tile.getColourNumberForName(colour)) { - tc.put(colour, 1); - continue; - } - } - } else { - tc.put(colour, 1); - } - } - - if (!tc.isEmpty()) lt.setTileColours(tc); - if (!tc.isEmpty() || hexes == null) currentSpecialTileLays.add(lt); - } + LayTile layTile = new LayTile(stl); + if (validateSpecialTileLay (layTile)) currentSpecialTileLays.add(layTile); } } @@ -1755,6 +1709,94 @@ public class OperatingRound extends Round implements Observer { return currentSpecialTileLays; } + /** Prevalidate a special tile lay. + * <p>During prevalidation, the action may be updated (i.e. restricted). + * TODO <p>Note: The name of this method may suggest that it can also be used for postvalidation + * (i.e. to validate the action after the player has selected it). This is not yet the case, + * but it is conceivable that this method can be extended to cover postvalidation as well. + * Postvalidation is really a different process, which in this context has not yet been considered in detail. + * @param layTile A LayTile object embedding a SpecialTileLay property. + * Any other LayTile objects are rejected. The object may be changed by this method. + * @return TRUE if allowed. + */ + protected boolean validateSpecialTileLay (LayTile layTile) { + + if (layTile == null) return false; + + SpecialProperty sp = layTile.getSpecialProperty(); + if (sp == null || !(sp instanceof SpecialTileLay)) return false; + + SpecialTileLay stl = (SpecialTileLay) sp; + + if (!stl.isExtra() + // If the special tile lay is not extra, it is only allowed if + // normal tile lays are also (still) allowed + && !checkNormalTileLay(stl.getTile(), false)) return false; + + TileI tile = stl.getTile(); + + // What colours can be laid in the current phase? + List<String> phaseColours = getCurrentPhase().getTileColours(); + + // Which tile colour(s) are specified explicitly... + String[] stlc = stl.getTileColours(); + if ((stlc == null || stlc.length == 0) && tile != null) { + // ... or implicitly + stlc = new String[] {tile.getColourName()}; + } + + // Which of the specified tile colours can really be laid now? + List<String> layableColours; + if (stlc == null) { + layableColours = phaseColours; + } else { + layableColours = new ArrayList<String>(); + for (String colour : stlc) { + if (phaseColours.contains(colour)) layableColours.add(colour); + } + if (layableColours.isEmpty()) return false; + } + + // If any locations are specified, check if tile or colour(s) can be laid there. + Map<String, Integer> tc = new HashMap<String, Integer>(); + List<MapHex> hexes = stl.getLocations(); + List<MapHex> remainingHexes = null; + List<String> remainingColours = null; + int cash = operatingCompany.get().getCash(); + + if (hexes != null) { + remainingHexes = new ArrayList<MapHex> (); + remainingColours = new ArrayList<String>(); + } + for (String colour : layableColours) { + if (hexes != null) { + for (MapHex hex : hexes) { + // Check if the company can pay any costs + if (cash < hex.getTileCost()) continue; + + // At least one hex does not have that colour yet + if (hex.getCurrentTile().getColourNumber() + 1 + == Tile.getColourNumberForName(colour)) { + tc.put(colour, 1); + remainingColours.add(colour); + remainingHexes.add(hex); + continue; + } + } + } else { + tc.put(colour, 1); + } + } + if (!tc.isEmpty()) layTile.setTileColours(tc); + + if (hexes != null) { + if (remainingHexes.isEmpty()) return false; + layTile.setLocations(remainingHexes); + } + + return true; + } + protected boolean areTileLaysPossible() { return !tileLaysPerColour.isEmpty() || !getSpecialTileLays(false).isEmpty(); diff --git a/rails/game/action/LayTile.java b/rails/game/action/LayTile.java index a5d0ad2..074e0ea 100644 --- a/rails/game/action/LayTile.java +++ b/rails/game/action/LayTile.java @@ -181,6 +181,11 @@ public class LayTile extends PossibleORAction { return locations; } + public void setLocations(List<MapHex> locations) { + this.locations = locations; + if (locations != null) buildLocationNameString(); + } + public int getType() { return type; } diff --git a/rails/game/special/SpecialTileLay.java b/rails/game/special/SpecialTileLay.java index b7fd63a..3e1dea6 100644 --- a/rails/game/special/SpecialTileLay.java +++ b/rails/game/special/SpecialTileLay.java @@ -8,7 +8,7 @@ import rails.common.LocalText; import rails.common.parser.ConfigurationException; import rails.common.parser.Tag; import rails.game.*; -import rails.util.*; +import rails.util.Util; public class SpecialTileLay extends SpecialProperty { @@ -25,9 +25,9 @@ public class SpecialTileLay extends SpecialProperty { * Default is same colours as is allowed in a a normal tile lay. * Don't use if specific tiles are specified! */ protected String[] tileColours = null; - + @Override - public void configureFromXML(Tag tag) throws ConfigurationException { + public void configureFromXML(Tag tag) throws ConfigurationException { super.configureFromXML(tag); Tag tileLayTag = tag.getChild("SpecialTileLay"); @@ -41,43 +41,43 @@ public class SpecialTileLay extends SpecialProperty { tileNumber = tileLayTag.getAttributeAsInteger("tile", 0); - String coloursString = tag.getAttributeAsString("colour"); + String coloursString = tileLayTag.getAttributeAsString("colour"); if (Util.hasValue(coloursString)) { tileColours = coloursString.split(","); } - + name = tileLayTag.getAttributeAsString("name"); extra = tileLayTag.getAttributeAsBoolean("extra", extra); free = tileLayTag.getAttributeAsBoolean("free", free); connected = tileLayTag.getAttributeAsBoolean("connected", connected); /* sfy 1889 extension */ closingValue = - tileLayTag.getAttributeAsInteger("closingValue", closingValue); + tileLayTag.getAttributeAsInteger("closingValue", closingValue); if (tileNumber > 0) { - description = LocalText.getText("LayNamedTileInfo", - tileNumber, - name != null ? name : "", - locationCodes, - (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), - (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), - (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) - /* sfy 1889 extension */ - ); + description = LocalText.getText("LayNamedTileInfo", + tileNumber, + name != null ? name : "", + locationCodes, + (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), + (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), + (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) + /* sfy 1889 extension */ + ); } else { - description = LocalText.getText("LayTileInfo", - locationCodes, - (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), - (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), + description = LocalText.getText("LayTileInfo", + locationCodes, + (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), + (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) /* sfy 1889 extension */ - ); + ); } } @Override - public void finishConfiguration (GameManagerI gameManager) + public void finishConfiguration (GameManagerI gameManager) throws ConfigurationException { TileManager tmgr = gameManager.getTileManager(); @@ -93,7 +93,7 @@ public class SpecialTileLay extends SpecialProperty { hex = mmgr.getHex(hexName); if (hex == null) throw new ConfigurationException("Location " + hexName - + " does not exist"); + + " does not exist"); locations.add(hex); } @@ -140,18 +140,20 @@ public class SpecialTileLay extends SpecialProperty { } @Override - public String toString() { - return "SpecialTileLay comp=" + originalCompany.getName() + " hex=" - + locationCodes + " extra=" + extra + " cost=" + free + " connected=" + connected; + public String toString() { + return "SpecialTileLay comp=" + originalCompany.getName() + + " hex=" + locationCodes + + " colour="+tileColours + + " extra=" + extra + " cost=" + free + " connected=" + connected; } @Override - public String toMenu() { - return description; + public String toMenu() { + return description; } @Override - public String getInfo() { - return description; + public String getInfo() { + return description; } } diff --git a/rails/game/specific/_1835/OperatingRound_1835.java b/rails/game/specific/_1835/OperatingRound_1835.java index 6f4d312..4513f32 100644 --- a/rails/game/specific/_1835/OperatingRound_1835.java +++ b/rails/game/specific/_1835/OperatingRound_1835.java @@ -10,7 +10,8 @@ import rails.game.action.DiscardTrain; import rails.game.action.LayTile; import rails.game.move.CashMove; import rails.game.move.MapChange; -import rails.game.special.*; +import rails.game.special.ExchangeForShare; +import rails.game.special.SpecialPropertyI; import rails.game.state.BooleanState; public class OperatingRound_1835 extends OperatingRound { @@ -183,42 +184,17 @@ public class OperatingRound_1835 extends OperatingRound { } @Override - protected List<LayTile> getSpecialTileLays(boolean display) { + protected boolean validateSpecialTileLay (LayTile layTile) { - /* Special-property tile lays */ - List<LayTile> currentSpecialTileLays = new ArrayList<LayTile>(); + if (!super.validateSpecialTileLay(layTile)) return false; - if (operatingCompany.get().canUseSpecialProperties()) { + // Exclude the second OBB free tile if the first was laid in this round + if (layTile.getSpecialProperty().getLocationNameString().matches("M1(7|9)") + && hasLaidExtraOBBTile.booleanValue()) return false; - for (SpecialTileLay stl : getSpecialProperties(SpecialTileLay.class)) { - if (stl.isExtra() - // If the special tile lay is not extra, it is only allowed if - // normal tile lays are also (still) allowed - || stl.getTile() != null - && getCurrentPhase().isTileColourAllowed(stl.getTile().getColourName())) { - - // Exclude the second OBB free tile if the first was laid in this round - if (stl.getLocationNameString().matches("M1(7|9)") - && hasLaidExtraOBBTile.booleanValue()) continue; - - currentSpecialTileLays.add(new LayTile(stl)); - } - } - } - - if (display) { - int size = currentSpecialTileLays.size(); - if (size == 0) { - log.debug("No special tile lays"); - } else { - for (LayTile tileLay : currentSpecialTileLays) { - log.debug("Special tile lay: " + tileLay.toString()); - } - } - } - - return currentSpecialTileLays; + return true; } + @Override public boolean layTile(LayTile action) { |
From: Erik V. <ev...@us...> - 2011-12-02 22:15:35
|
data/1825/CompanyManager.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) New commits: commit 31d0618a8a1c98c62bbf452bb229cf0d7f26d5d3 Author: Erik Vos <eri...@xs...> Date: Fri Dec 2 23:14:24 2011 +0100 1825 minors have 10%, not 20% shares diff --git a/data/1825/CompanyManager.xml b/data/1825/CompanyManager.xml index 2ae65c9..7be3e79 100644 --- a/data/1825/CompanyManager.xml +++ b/data/1825/CompanyManager.xml @@ -23,14 +23,14 @@ <CompanyType name="Minor" class="rails.game.specific._1825.PublicCompany_1825"> <Float percentage="40"/> <StockPrice par="no"/> - <ShareUnit percentage="20"/> + <ShareUnit percentage="10"/> <BaseTokens> <!-- HomeBase lay options: "whenStarted", "whenFloated", "firstOR" (default) --> <HomeBase lay="firstOR"/> <LayCost method="sequence" cost="0"/> </BaseTokens> - <Certificate type="President" shares="2"/> - <Certificate shares="1" number="3"/> + <Certificate type="President" shares="4"/> + <Certificate shares="2" number="3"/> <Trains limit="4,3"/> <!--TileLays> <Number colour="yellow" number="2" phase="1,2,3,4"></Number></TileLays--> |
From: Erik V. <ev...@us...> - 2011-12-01 10:51:18
|
data/1830/CompanyManager.xml | 2 - rails/game/OperatingRound.java | 64 +++++++++++++++++++++++++++++---- rails/game/Tile.java | 15 +++++++ rails/game/action/LayTile.java | 37 ++++++++++--------- rails/game/special/SpecialTileLay.java | 60 +++++++++++++++--------------- 5 files changed, 125 insertions(+), 53 deletions(-) New commits: commit d7237eb244b6daecea9fa7df87e3e0116fbf9a38 Author: Erik Vos <eri...@xs...> Date: Wed Nov 30 23:21:02 2011 +0100 Further changes to fix special tile lays. diff --git a/data/1830/CompanyManager.xml b/data/1830/CompanyManager.xml index 3623f7f..5c2fe0e 100644 --- a/data/1830/CompanyManager.xml +++ b/data/1830/CompanyManager.xml @@ -40,7 +40,7 @@ <Blocking hex="B20"/> <SpecialProperties> <SpecialProperty condition="ifOwnedByCompany" when="tileLayingStep" class="rails.game.special.SpecialTileLay"> - <SpecialTileLay location="B20" extra="yes" free="yes"/> + <SpecialTileLay colour="yellow" location="B20" extra="yes" free="yes"/> </SpecialProperty> </SpecialProperties> </Company> diff --git a/rails/game/OperatingRound.java b/rails/game/OperatingRound.java index f754fa8..5ade2c4 100644 --- a/rails/game/OperatingRound.java +++ b/rails/game/OperatingRound.java @@ -1715,11 +1715,18 @@ public class OperatingRound extends Round implements Observer { for (String colour : stlc) { if (phaseColours.contains(colour)) layableColours.add(colour); } + if (layableColours.isEmpty()) continue; } // If any locations are specified, check if tile or colour(s) can be laid there. Map<String, Integer> tc = new HashMap<String, Integer>(); List<MapHex> hexes = stl.getLocations(); + List<MapHex> remainingHexes = null; + List<String> remainingColours = null; + if (hexes != null) { + remainingHexes = new ArrayList<MapHex> (); + remainingColours = new ArrayList<String>(); + } for (String colour : layableColours) { if (hexes != null) { for (MapHex hex : hexes) { @@ -1727,6 +1734,8 @@ public class OperatingRound extends Round implements Observer { if (hex.getCurrentTile().getColourNumber() + 1 == Tile.getColourNumberForName(colour)) { tc.put(colour, 1); + remainingColours.add(colour); + remainingHexes.add(hex); continue; } } @@ -1736,6 +1745,13 @@ public class OperatingRound extends Round implements Observer { } if (!tc.isEmpty()) lt.setTileColours(tc); + if (hexes != null) { + if (!remainingHexes.isEmpty()) { + lt.setLocations(remainingHexes); + } else { + continue; + } + } if (!tc.isEmpty() || hexes == null) currentSpecialTileLays.add(lt); } } diff --git a/rails/game/action/LayTile.java b/rails/game/action/LayTile.java index a5d0ad2..074e0ea 100644 --- a/rails/game/action/LayTile.java +++ b/rails/game/action/LayTile.java @@ -181,6 +181,11 @@ public class LayTile extends PossibleORAction { return locations; } + public void setLocations(List<MapHex> locations) { + this.locations = locations; + if (locations != null) buildLocationNameString(); + } + public int getType() { return type; } diff --git a/rails/game/special/SpecialTileLay.java b/rails/game/special/SpecialTileLay.java index b7fd63a..3e1dea6 100644 --- a/rails/game/special/SpecialTileLay.java +++ b/rails/game/special/SpecialTileLay.java @@ -8,7 +8,7 @@ import rails.common.LocalText; import rails.common.parser.ConfigurationException; import rails.common.parser.Tag; import rails.game.*; -import rails.util.*; +import rails.util.Util; public class SpecialTileLay extends SpecialProperty { @@ -25,9 +25,9 @@ public class SpecialTileLay extends SpecialProperty { * Default is same colours as is allowed in a a normal tile lay. * Don't use if specific tiles are specified! */ protected String[] tileColours = null; - + @Override - public void configureFromXML(Tag tag) throws ConfigurationException { + public void configureFromXML(Tag tag) throws ConfigurationException { super.configureFromXML(tag); Tag tileLayTag = tag.getChild("SpecialTileLay"); @@ -41,43 +41,43 @@ public class SpecialTileLay extends SpecialProperty { tileNumber = tileLayTag.getAttributeAsInteger("tile", 0); - String coloursString = tag.getAttributeAsString("colour"); + String coloursString = tileLayTag.getAttributeAsString("colour"); if (Util.hasValue(coloursString)) { tileColours = coloursString.split(","); } - + name = tileLayTag.getAttributeAsString("name"); extra = tileLayTag.getAttributeAsBoolean("extra", extra); free = tileLayTag.getAttributeAsBoolean("free", free); connected = tileLayTag.getAttributeAsBoolean("connected", connected); /* sfy 1889 extension */ closingValue = - tileLayTag.getAttributeAsInteger("closingValue", closingValue); + tileLayTag.getAttributeAsInteger("closingValue", closingValue); if (tileNumber > 0) { - description = LocalText.getText("LayNamedTileInfo", - tileNumber, - name != null ? name : "", - locationCodes, - (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), - (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), - (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) - /* sfy 1889 extension */ - ); + description = LocalText.getText("LayNamedTileInfo", + tileNumber, + name != null ? name : "", + locationCodes, + (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), + (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), + (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) + /* sfy 1889 extension */ + ); } else { - description = LocalText.getText("LayTileInfo", - locationCodes, - (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), - (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), + description = LocalText.getText("LayTileInfo", + locationCodes, + (extra ? LocalText.getText("extra"):LocalText.getText("notExtra")), + (free ? LocalText.getText("noCost") : LocalText.getText("normalCost")), (connected ? LocalText.getText("connected") : LocalText.getText("unconnected")) /* sfy 1889 extension */ - ); + ); } } @Override - public void finishConfiguration (GameManagerI gameManager) + public void finishConfiguration (GameManagerI gameManager) throws ConfigurationException { TileManager tmgr = gameManager.getTileManager(); @@ -93,7 +93,7 @@ public class SpecialTileLay extends SpecialProperty { hex = mmgr.getHex(hexName); if (hex == null) throw new ConfigurationException("Location " + hexName - + " does not exist"); + + " does not exist"); locations.add(hex); } @@ -140,18 +140,20 @@ public class SpecialTileLay extends SpecialProperty { } @Override - public String toString() { - return "SpecialTileLay comp=" + originalCompany.getName() + " hex=" - + locationCodes + " extra=" + extra + " cost=" + free + " connected=" + connected; + public String toString() { + return "SpecialTileLay comp=" + originalCompany.getName() + + " hex=" + locationCodes + + " colour="+tileColours + + " extra=" + extra + " cost=" + free + " connected=" + connected; } @Override - public String toMenu() { - return description; + public String toMenu() { + return description; } @Override - public String getInfo() { - return description; + public String getInfo() { + return description; } } commit 990c04c1307f86d382b46fc640cedf2fcee7fc0f Merge: 0713ba0 f3a0308 Author: Erik Vos <eri...@xs...> Date: Wed Nov 30 23:03:59 2011 +0100 Merge branch 'master' of ssh://rails.git.sourceforge.net/gitroot/rails/rails into fixes commit 0713ba0215c23c385ba9414b6f6768650e43f99f Author: Erik Vos <eri...@xs...> Date: Wed Nov 30 00:44:33 2011 +0100 Special tile lay fixes diff --git a/rails/game/OperatingRound.java b/rails/game/OperatingRound.java index 8d6dac3..f754fa8 100644 --- a/rails/game/OperatingRound.java +++ b/rails/game/OperatingRound.java @@ -485,7 +485,7 @@ public class OperatingRound extends Round implements Observer { if (getStep() != GameDef.OrStep.LAY_TOKEN) { possibleActions.add(new LayBaseToken((SpecialTokenLay)sp)); } - } else { + } else if (!(sp instanceof SpecialTileLay)){ possibleActions.add(new UseSpecialProperty(sp)); } } @@ -1688,21 +1688,55 @@ public class OperatingRound extends Round implements Observer { if (operatingCompany.get().canUseSpecialProperties()) { + // What colours can be laid in the current phase? + List<String> phaseColours = getCurrentPhase().getTileColours(); + for (SpecialTileLay stl : getSpecialProperties(SpecialTileLay.class)) { if (stl.isExtra() // If the special tile lay is not extra, it is only allowed if // normal tile lays are also (still) allowed || checkNormalTileLay(stl.getTile(), false)) { LayTile lt = new LayTile(stl); + TileI tile = stl.getTile(); + + // Which tile colour(s) are specified explicitly... String[] stlc = stl.getTileColours(); - if (stlc != null) { - Map<String, Integer> tc = new HashMap<String, Integer>(); - for (String c : stlc) { - tc.put(c, 1); + if ((stlc == null || stlc.length == 0) && tile != null) { + // ... or implicitly + stlc = new String[] {tile.getColourName()}; + } + + // Which of the specified tile colours can really be laid now? + List<String> layableColours; + if (stlc == null) { + layableColours = phaseColours; + } else { + layableColours = new ArrayList<String>(); + for (String colour : stlc) { + if (phaseColours.contains(colour)) layableColours.add(colour); } - lt.setTileColours(tc); } - currentSpecialTileLays.add(lt); + + // If any locations are specified, check if tile or colour(s) can be laid there. + Map<String, Integer> tc = new HashMap<String, Integer>(); + List<MapHex> hexes = stl.getLocations(); + for (String colour : layableColours) { + if (hexes != null) { + for (MapHex hex : hexes) { + // At least one hex does not have that colour yet + if (hex.getCurrentTile().getColourNumber() + 1 + == Tile.getColourNumberForName(colour)) { + tc.put(colour, 1); + continue; + } + } + } else { + tc.put(colour, 1); + } + } + + if (!tc.isEmpty()) lt.setTileColours(tc); + if (!tc.isEmpty() || hexes == null) currentSpecialTileLays.add(lt); } } } diff --git a/rails/game/Tile.java b/rails/game/Tile.java index 2ef98f0..d36365e 100644 --- a/rails/game/Tile.java +++ b/rails/game/Tile.java @@ -406,6 +406,21 @@ public class Tile extends ModelObject implements TileI, StationHolder, Comparabl return colourNumber; } + public static int getColourNumberForName(String name) { + if (name.equalsIgnoreCase(WHITE_COLOUR_NAME)) { + return WHITE_COLOUR_NUMBER; + } else if (name.equalsIgnoreCase(YELLOW_COLOUR_NAME)) { + return YELLOW_COLOUR_NUMBER; + } else if (name.equalsIgnoreCase(GREEN_COLOUR_NAME)) { + return GREEN_COLOUR_NUMBER; + } else if (name.equalsIgnoreCase(BROWN_COLOUR_NAME)) { + return BROWN_COLOUR_NUMBER; + } else if (name.equalsIgnoreCase(GREY_COLOUR_NAME)) { + return GREY_COLOUR_NUMBER; + } else { + return -1; + } + } /** * @return Returns the id. */ diff --git a/rails/game/action/LayTile.java b/rails/game/action/LayTile.java index 1d30f72..a5d0ad2 100644 --- a/rails/game/action/LayTile.java +++ b/rails/game/action/LayTile.java @@ -103,7 +103,7 @@ public class LayTile extends PossibleORAction { } } - + } /** @@ -194,8 +194,8 @@ public class LayTile extends PossibleORAction { public boolean isTileColourAllowed(String tileColour) { return tileColours != null - && tileColours.containsKey(tileColour) - && tileColours.get(tileColour) > 0; + && tileColours.containsKey(tileColour) + && tileColours.get(tileColour) > 0; } public void setTileColours(Map<String, Integer> map) { @@ -226,7 +226,7 @@ public class LayTile extends PossibleORAction { relaidBaseTokens.put(companyName, cityNumber); relaidBaseTokensString = Util.appendWithDelimiter(relaidBaseTokensString, Util.appendWithDelimiter(companyName, String.valueOf(cityNumber), ":"), - ","); + ","); } public Map<String, Integer> getRelaidBaseTokens() { @@ -238,10 +238,10 @@ public class LayTile extends PossibleORAction { if (!(action instanceof LayTile)) return false; LayTile a = (LayTile) action; return (a.locationNames == null && locationNames == null || a.locationNames.equals(locationNames)) - && a.type == type - && a.tileColours == tileColours - && a.tiles == tiles - && a.specialProperty == specialProperty; + && a.type == type + && a.tileColours == tileColours + && a.tiles == tiles + && a.specialProperty == specialProperty; } @Override @@ -249,15 +249,15 @@ public class LayTile extends PossibleORAction { if (!(action instanceof LayTile)) return false; LayTile a = (LayTile) action; return (a.laidTileId == laidTileId - && a.chosenHexName.equals(chosenHexName) - && a.orientation == orientation - && (a.relaidBaseTokensString == null && relaidBaseTokensString == null - || a.relaidBaseTokensString.equals(relaidBaseTokensString))); + && a.chosenHexName.equals(chosenHexName) + && a.orientation == orientation + && (a.relaidBaseTokensString == null && relaidBaseTokensString == null + || a.relaidBaseTokensString.equals(relaidBaseTokensString))); } @Override public String toString() { - StringBuffer b = new StringBuffer("LayTile"); + StringBuilder b = new StringBuilder("LayTile"); if (laidTile == null) { b.append(" type=").append(type); if (locations != null) @@ -274,7 +274,7 @@ public class LayTile extends PossibleORAction { } else { b.append(" tile=").append(laidTile.getId()).append(" hex=").append( chosenHex.getName()).append(" orientation=").append( - orientation).append(" tokens=").append(relaidBaseTokensString); + orientation).append(" tokens=").append(relaidBaseTokensString); } return b.toString(); } @@ -282,7 +282,7 @@ public class LayTile extends PossibleORAction { /** Deserialize */ @SuppressWarnings("unchecked") private void readObject(ObjectInputStream in) throws IOException, - ClassNotFoundException { + ClassNotFoundException { //in.defaultReadObject(); // Custom reading for backwards compatibility @@ -315,7 +315,7 @@ public class LayTile extends PossibleORAction { } if (specialPropertyId > 0) { specialProperty = - (SpecialTileLay) SpecialProperty.getByUniqueId(specialPropertyId); + (SpecialTileLay) SpecialProperty.getByUniqueId(specialPropertyId); } if (laidTileId != 0) { laidTile = tmgr.getTile(laidTileId); |
From: Stefan F. <ste...@us...> - 2011-11-30 22:01:43
|
Tag 'v1.5.4' created by Stefan Frey <ste...@we...> at 2011-11-30 22:04 +0000 Bug fix release 1.5.4: Warning this release might not work with existing save files (see below). Contributors: Erik Vos, Stefan Frey Bug reported by: Thomas Wall Hannaford, Hildebrand Tigelaar, John David Galt List of bugs fixed: - 18AL, 18Kaas, (1870): Green tile #25 was not upgradeable to #45 and #46 - 18AL (and others?): The registration of buying one train to prevent any further buys was not undoable. - 18AL: Background map for 18AL included (thanks to John David Galt for his permission) - 1835: allow dumped president's share to be exchanged against a 20% share. - 1835: BA home token is now laid in its first OR. - 1835: Fixed PR train discarding bugs. - 18EU, 18GA: Background map could not be displayed in previous released versions, this is fixed. - All games (required for 1835): Added tooltips to Game Status share fields to display portfolio composition. - All games: Fixed offering special token lays where that is not actually allowed. WARNING: The last fix might make existing save files unloadable. Note: To show a background map, the option has to be switched on in Configuration => Map/Report => Display background map. Background maps are only available for 18EU, 18GA and 18AL so far. Changes since v1.5.3-19: --- 0 files changed --- |
From: Stefan F. <ste...@us...> - 2011-11-30 21:41:22
|
rails/common/parser/Config.java | 15 ++++++++------- rails/game/Game.java | 34 ++++++++++++++++++++++++++++++---- rails/ui/swing/ORPanel.java | 4 ++-- rails/util/GameFileIO.java | 2 +- 4 files changed, 41 insertions(+), 14 deletions(-) New commits: commit f3a0308761bca73a19bc6e7d4a7bd0e3d72c0e98 Author: Stefan Frey <ste...@we...> Date: Wed Nov 30 22:44:14 2011 +0100 additional commit for 1.5.4: fixed issue with the develop flag and removed calibrate from menu diff --git a/rails/common/parser/Config.java b/rails/common/parser/Config.java index 63308d1..c7f64ed 100644 --- a/rails/common/parser/Config.java +++ b/rails/common/parser/Config.java @@ -438,17 +438,18 @@ public final class Config { propertiesLoaded = true; } - /* Load version number as resource */ + /* Load version number and develop flag */ Properties versionNumber = new Properties(); loadPropertyFile(versionNumber, "version.number", true); + String version = versionNumber.getProperty("version"); - String develop = versionNumber.getProperty("develop"); if (Util.hasValue("version")) { - if (Util.hasValue(develop)) { - Game.version = version + "+"; - } else { - Game.version = version; - } + Game.setVersion(version); + } + + String develop = versionNumber.getProperty("develop"); + if (Util.hasValue(develop)) { + Game.setDevelop(develop != ""); } } diff --git a/rails/game/Game.java b/rails/game/Game.java index a24cbc5..de85c55 100644 --- a/rails/game/Game.java +++ b/rails/game/Game.java @@ -14,11 +14,37 @@ import rails.game.action.PossibleAction; import rails.util.GameFileIO; public class Game { - // the correct version number is set during initialLoad in Config class - public static String version = "unknown"; - - public static String develop = "@DEVELOP@"; + // the correct version number and develop status + // is set during initialLoad in Config class + private static String version = "unknown"; + private static boolean develop = false; + public static void setVersion(String version) { + Game.version = version; + } + + public static String getVersion() { + return version; + } + + public static String getFullVersion() { + if (develop) { + return version + "+"; + } else { + return version; + } + } + + public static void setDevelop(boolean develop) { + Game.develop = develop; + } + + public static boolean getDevelop() { + return develop; + } + + // in the following the Game objects are defined + /** The component Manager */ protected GameManager gameManager; protected CompanyManagerI companyManager; diff --git a/rails/ui/swing/ORPanel.java b/rails/ui/swing/ORPanel.java index 8b6383c..0eaba7e 100644 --- a/rails/ui/swing/ORPanel.java +++ b/rails/ui/swing/ORPanel.java @@ -213,7 +213,7 @@ implements ActionListener, KeyListener, RevenueListener { zoomMenu.add(zoomOut); calibrateMap = new JMenuItem("CalibrateMap"); calibrateMap.addActionListener(this); - calibrateMap.setEnabled(true); + calibrateMap.setEnabled(Game.getDevelop()); zoomMenu.add(calibrateMap); menuBar.add(zoomMenu); @@ -599,7 +599,7 @@ implements ActionListener, KeyListener, RevenueListener { if (networkInfoMenu != null) infoMenu.remove(networkInfoMenu); networkInfoMenu = createNetworkInfo(); if (networkInfoMenu == null) return; - networkInfoMenu.setEnabled(true); + networkInfoMenu.setEnabled(Game.getDevelop()); infoMenu.add(networkInfoMenu); } diff --git a/rails/util/GameFileIO.java b/rails/util/GameFileIO.java index 628ba98..ec682df 100644 --- a/rails/util/GameFileIO.java +++ b/rails/util/GameFileIO.java @@ -240,7 +240,7 @@ public class GameFileIO { * sets the meta data required for a game save */ public void initSave(Long saveFileVersionID, String gameName, Map<String, String> gameOptions, List<String> playerNames) { - gameData.meta.version = Game.version+" "+BuildInfo.buildDate; + gameData.meta.version = Game.getFullVersion() +" "+BuildInfo.buildDate; gameData.meta.date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); gameData.meta.fileVersionID = saveFileVersionID; gameData.meta.gameName = gameName; |
From: Stefan F. <ste...@us...> - 2011-11-30 12:13:15
|
version.number | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit c400dd6d4270b8eb484f64d8e473faa1bf13213e Author: Stefan Frey <ste...@we...> Date: Wed Nov 30 13:16:24 2011 +0100 prepared release 1.5.4 diff --git a/version.number b/version.number index b52774a..26b5665 100644 --- a/version.number +++ b/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.5.3 +version=1.5.4 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file |
.classpath | 25 ++- build.xml | 301 ++++++++++++++++------------------------ buildRails.xml | 159 +++++++++++++++++++++ buildinfo.xml | 16 -- data/Properties.xml | 2 dev/null |binary rails.bat | 2 rails.sh | 2 rails/common/parser/Config.java | 14 + rails/game/Game.java | 5 test/SVGApplication.java | 105 ------------- test/SVGOffscreenLoader.java | 192 ------------------------- version.number | 5 13 files changed, 328 insertions(+), 500 deletions(-) New commits: commit afa0b856fe9eb2940de45b24d0eb29d0c03abf6c Author: Stefan Frey <ste...@we...> Date: Mon Nov 28 16:34:12 2011 +0100 Further additions to get working build diff --git a/.classpath b/.classpath index 25b28ed..d69b9b9 100644 --- a/.classpath +++ b/.classpath @@ -5,12 +5,25 @@ <classpathentry exported="true" kind="lib" path="lib/log4j-1.2/log4j-1.2.14.jar"/> <classpathentry exported="true" kind="lib" path="lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar"/> <classpathentry exported="true" kind="lib" path="lib/jgraph5/jgraph.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/batik.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/lib/batik-bridge.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/lib/batik-dom.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/lib/batik-ext.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/lib/batik-gvt.jar"/> - <classpathentry exported="true" kind="lib" path="lib/batik-1.7/lib/batik-util.jar"/> <classpathentry kind="lib" path="lib/junit-4.8.2/junit.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-transcoder.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-dom.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-swing.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-bridge.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/xml-apis.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-ext.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-gui-util.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-util.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-awt-util.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-css.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-gvt.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-parser.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-script.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-svg-dom.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-xml.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/js.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/xerces_2_5_0.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/xml-apis-ext.jar"/> + <classpathentry kind="lib" path="lib/batik-1.7/lib/batik-anim.jar"/> <classpathentry kind="output" path="classes"/> </classpath> diff --git a/build.xml b/build.xml index 107fde2..2943231 100644 --- a/build.xml +++ b/build.xml @@ -16,17 +16,32 @@ <pathelement location="lib/log4j-1.2/log4j-1.2.14.jar"/> <pathelement location="lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar"/> <pathelement location="lib/jgraph5/jgraph.jar"/> - <pathelement location="lib/batik-1.7/batik.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-bridge.jar"/> + <pathelement location="lib/junit-4.8.2/junit.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-transcoder.jar"/> <pathelement location="lib/batik-1.7/lib/batik-dom.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-swing.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-bridge.jar"/> + <pathelement location="lib/batik-1.7/lib/xml-apis.jar"/> <pathelement location="lib/batik-1.7/lib/batik-ext.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-gvt.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-gui-util.jar"/> <pathelement location="lib/batik-1.7/lib/batik-util.jar"/> - <pathelement location="lib/junit-4.8.2/junit.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-awt-util.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-css.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-gvt.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-parser.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-script.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-svg-dom.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-xml.jar"/> + <pathelement location="lib/batik-1.7/lib/js.jar"/> + <pathelement location="lib/batik-1.7/lib/xerces_2_5_0.jar"/> + <pathelement location="lib/batik-1.7/lib/xml-apis-ext.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-anim.jar"/> </path> <target name="init"> <mkdir dir="classes"/> + <!-- this is added --> <copy includeemptydirs="false" todir="classes"> + <filterset refid="developFilter"/> <fileset dir="."> <exclude name="**/*.launch"/> <exclude name="**/*.java"/> diff --git a/buildRails.xml b/buildRails.xml index 142d350..3185488 100644 --- a/buildRails.xml +++ b/buildRails.xml @@ -1,7 +1,13 @@ <?eclipse.ant.import ?> <!-- Extensions to the automatic ant file created by eclipse --> <project basedir="." default="build" name="Rails"> - + + <!-- Sourceforge properties --> + <property name="sf.uri" value="frs.sourceforge.net:/home/frs/project/r/ra/rails/"/> + <property name="sf.filedir" value="Rails/"/> + <property name="sf.user" value="stefanfrey"/> + <!-- Password is asked for --> + <!-- Define a property for the version number --> <property file="version.number"/> @@ -9,13 +15,14 @@ <filterset id="versionFilter"> <filter token="VERSION" value="${version}"/> </filterset> - + <!-- Define a filter to substitute develop tag to version number --> + <filterset id="developFilter"> + <filter token="DEVELOP" value=""/> + </filterset> + <!-- Clean the current release --> <target name="clean-release"> - <delete> - <fileset dir="jar"/> - <fileset dir="rails-${version}"/> - </delete> + <delete dir="rails-${version}"/> </target> <!-- Target that creates the release jar @@ -23,7 +30,6 @@ <target name="build-release" depends="clean-release,clean,build"> <mkdir dir="jar"/> <copy includeemptydirs="false" todir="jar"> - <filterset refid="versionFilter"/> <fileset dir="classes"> <exclude name="**/*.launch"/> <exclude name="**/*.java"/> @@ -33,7 +39,6 @@ <exclude name="18xx.log"/> <exclude name="build.xml"/> <exclude name="buildinfo.xml"/> - <exclude name="user.profiles"/> <exclude name="manifest"/> <exclude name="doc/*"/> <exclude name="html/*"/> @@ -42,7 +47,6 @@ <exclude name="rails-*-${version}/**"/> <exclude name="rails.bat"/> <exclude name="rails.sh"/> - <exclude name="version.number"/> <exclude name=".project"/> <exclude name=".classpath"/> <exclude name=".git/**"/> @@ -54,36 +58,102 @@ </fileset> </copy> <mkdir dir="rails-${version}"/> + <copy includeemptydirs="false" todir="rails-${version}/lib"> + <fileset dir="./lib"> + <include name="log4j-1.2/log4j-1.2.14.jar" /> + <include name="jgrapht-0.7.3/jgrapht-jdk1.5.jar" /> + <include name="jgraph5/jgraph.jar" /> + <include name="junit-4.8.2/junit.jar" /> + <include name="batik-1.7/lib/batik-transcoder.jar" /> + <include name="batik-1.7/lib/batik-dom.jar" /> + <include name="batik-1.7/lib/batik-swing.jar" /> + <include name="batik-1.7/lib/batik-bridge.jar" /> + <include name="batik-1.7/lib/xml-apis.jar" /> + <include name="batik-1.7/lib/batik-ext.jar" /> + <include name="batik-1.7/lib/batik-gui-util.jar" /> + <include name="batik-1.7/lib/batik-util.jar" /> + <include name="batik-1.7/lib/batik-awt-util.jar" /> + <include name="batik-1.7/lib/batik-css.jar" /> + <include name="batik-1.7/lib/batik-gvt.jar" /> + <include name="batik-1.7/lib/batik-parser.jar" /> + <include name="batik-1.7/lib/batik-script.jar" /> + <include name="batik-1.7/lib/batik-svg-dom.jar" /> + <include name="batik-1.7/lib/batik-xml.jar" /> + <include name="batik-1.7/lib/js.jar" /> + <include name="batik-1.7/lib/xerces_2_5_0.jar" /> + <include name="batik-1.7/lib/xml-apis-ext.jar" /> + <include name="batik-1.7/lib/batik-anim.jar" /> + </fileset> + </copy> <copy includeemptydirs="false" todir="rails-${version}"> - <filterset refid="versionFilter"/> - <fileset dir="."> + <filterset refid="versionFilter"/> + <fileset dir="."> <include name="LICENSE"/> <include name="README"/> <include name="AUTHORS"/> <include name="rails.bat"/> <include name="rails.sh"/> - <include name="my.properties"/> - <include name="LocalisedText.properties"/> - <include name="games.properties"/> - <include name="lib/**"/> </fileset> </copy> + <!-- adds executable flags to rails.sh --> + <chmod file="rails-${version}/rails.sh" perm="ugo+rx"/> + <jar destfile="rails-${version}/rails-${version}.jar" basedir="jar" duplicate="preserve"> <manifest> <attribute name="Main-Class" value="rails.util.RunGame" /> - <attribute name="Class-Path" value="./my.properties + <attribute name="Class-Path" value=" ./LocalisedText.properties - ./lib/log4j-1.2/log4j-1.2.14.jar - ./lib/batik-1.7/batik.jar - ./lib/batik-1.7/lib/batik-util.jar - ./lib/batik-1.7/lib/batik-dom.jar - ./lib/batik-1.7/lib/batik-bridge.jar - ./lib/batik-1.7/lib/batik-ext.jar - ./lib/batik-1.7/lib/batik-gvt.jar - ./lib/jgraph5/jgraph.jar - ./lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar" /> + ./log4j.properties + ./lib/log4j-1.2/log4j-1.2.14.jar + ./lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar + ./lib/jgraph5/jgraph.jar + ./lib/junit-4.8.2/junit.jar + ./lib/batik-1.7/lib/batik-transcoder.jar + ./lib/batik-1.7/lib/batik-dom.jar + ./lib/batik-1.7/lib/batik-swing.jar + ./lib/batik-1.7/lib/batik-bridge.jar + ./lib/batik-1.7/lib/xml-apis.jar + ./lib/batik-1.7/lib/batik-ext.jar + ./lib/batik-1.7/lib/batik-gui-util.jar + ./lib/batik-1.7/lib/batik-util.jar + ./lib/batik-1.7/lib/batik-awt-util.jar + ./lib/batik-1.7/lib/batik-css.jar + ./lib/batik-1.7/lib/batik-gvt.jar + ./lib/batik-1.7/lib/batik-parser.jar + ./lib/batik-1.7/lib/batik-script.jar + ./lib/batik-1.7/lib/batik-svg-dom.jar + ./lib/batik-1.7/lib/batik-xml.jar + ./lib/batik-1.7/lib/js.jar + ./lib/batik-1.7/lib/xerces_2_5_0.jar + ./lib/batik-1.7/lib/xml-apis-ext.jar + ./lib/batik-1.7/lib/batik-anim.jar"/> </manifest> - </jar> - </target> - + </jar> + <delete dir="jar"/> + <tar destfile="../rails-${version}.tar.gz" compression="gzip"> + <!-- adds executable flags to rails.sh, has to be done again for the tar (see above) --> + <tarfileset dir="." filemode="755"> + <include name="rails-${version}/rails.sh"/> + </tarfileset> + <tarfileset dir="."> + <include name="rails-${version}/**"/> + <exclude name="rails-${version}/rails.sh"/> + </tarfileset> + </tar> + <zip destfile="../rails-${version}.zip" basedir="." includes="rails-${version}/**"/> + </target> + <target name="publish-release"> + <exec executable="rsync" dir=".." failonerror="true"> + <arg value="-avP"/> + <arg value="-e"/> + <arg value="ssh"/> + <arg value="rails-${version}.zip"/> + <arg value="rails-${version}.tar.gz"/> + <arg value="${sf.user},rails@${sf.uri}${sf.filedir}${version}/"/> + </exec> + <exec executable="scp" dir="../rails-${version}" failonerror="true"> + <arg value="Readme.txt"/> + <arg value="${sf.user},rails@${sf.uri}${sf.filedir}${version}/"/> + </exec> + </target> </project> \ No newline at end of file diff --git a/rails/common/parser/Config.java b/rails/common/parser/Config.java index b1895e7..63308d1 100644 --- a/rails/common/parser/Config.java +++ b/rails/common/parser/Config.java @@ -16,6 +16,7 @@ import java.util.Properties; import org.apache.log4j.Logger; +import rails.game.Game; import rails.game.GameManager; import rails.util.Util; @@ -436,6 +437,19 @@ public final class Config { loadProfile(selectedProfile); propertiesLoaded = true; } + + /* Load version number as resource */ + Properties versionNumber = new Properties(); + loadPropertyFile(versionNumber, "version.number", true); + String version = versionNumber.getProperty("version"); + String develop = versionNumber.getProperty("develop"); + if (Util.hasValue("version")) { + if (Util.hasValue(develop)) { + Game.version = version + "+"; + } else { + Game.version = version; + } + } } diff --git a/rails/game/Game.java b/rails/game/Game.java index 250e6b4..a24cbc5 100644 --- a/rails/game/Game.java +++ b/rails/game/Game.java @@ -14,7 +14,10 @@ import rails.game.action.PossibleAction; import rails.util.GameFileIO; public class Game { - public static final String version = "@VERSION@"; + // the correct version number is set during initialLoad in Config class + public static String version = "unknown"; + + public static String develop = "@DEVELOP@"; /** The component Manager */ protected GameManager gameManager; diff --git a/test/SVGApplication.java b/test/SVGApplication.java deleted file mode 100644 index 8b583ec..0000000 --- a/test/SVGApplication.java +++ /dev/null @@ -1,105 +0,0 @@ -package test; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; -import javax.swing.*; - -import org.apache.batik.swing.JSVGCanvas; -import org.apache.batik.swing.gvt.GVTTreeRendererAdapter; -import org.apache.batik.swing.gvt.GVTTreeRendererEvent; -import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter; -import org.apache.batik.swing.svg.SVGDocumentLoaderEvent; -import org.apache.batik.swing.svg.GVTTreeBuilderAdapter; -import org.apache.batik.swing.svg.GVTTreeBuilderEvent; - -public class SVGApplication { - - public static void main(String[] args) { - JFrame f = new JFrame("Batik"); - SVGApplication app = new SVGApplication(f); - f.getContentPane().add(app.createComponents()); - - f.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - f.setSize(400, 400); - f.setVisible(true); - } - - JFrame frame; - JButton button = new JButton("Load..."); - JLabel label = new JLabel(); - JSVGCanvas svgCanvas = new JSVGCanvas(); - - public SVGApplication(JFrame f) { - frame = f; - } - - public JComponent createComponents() { - final JPanel panel = new JPanel(new BorderLayout()); - - JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT)); - p.add(button); - p.add(label); - - panel.add("North", p); - panel.add("Center", svgCanvas); - - // Set the button action. - button.addActionListener(new ActionListener() { - - public void actionPerformed(ActionEvent ae) { - JFileChooser fc = new JFileChooser("."); - int choice = fc.showOpenDialog(panel); - if (choice == JFileChooser.APPROVE_OPTION) { - File f = fc.getSelectedFile(); - try { - svgCanvas.setURI(f.toURL().toString()); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - } - }); - - // Set the JSVGCanvas listeners. - svgCanvas.addSVGDocumentLoaderListener(new SVGDocumentLoaderAdapter() { - - public void documentLoadingStarted(SVGDocumentLoaderEvent e) { - label.setText("Document Loading..."); - } - - public void documentLoadingCompleted(SVGDocumentLoaderEvent e) { - label.setText("Document Loaded."); - } - }); - - svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() { - - public void gvtBuildStarted(GVTTreeBuilderEvent e) { - label.setText("Build Started..."); - } - - public void gvtBuildCompleted(GVTTreeBuilderEvent e) { - label.setText("Build Done."); - frame.pack(); - } - }); - - svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() { - - public void gvtRenderingPrepare(GVTTreeRendererEvent e) { - label.setText("Rendering Started..."); - } - - public void gvtRenderingCompleted(GVTTreeRendererEvent e) { - label.setText(""); - } - }); - - return panel; - } -} diff --git a/test/SVGOffscreenLoader.java b/test/SVGOffscreenLoader.java deleted file mode 100644 index 5426d5f..0000000 --- a/test/SVGOffscreenLoader.java +++ /dev/null @@ -1,192 +0,0 @@ -package test; - -import java.awt.Rectangle; -import java.awt.geom.AffineTransform; -import java.io.*; -import java.util.List; - -import org.apache.batik.bridge.*; -import org.apache.batik.dom.svg.SAXSVGDocumentFactory; -import org.apache.batik.ext.awt.image.codec.png.PNGEncodeParam; -import org.apache.batik.ext.awt.image.codec.png.PNGImageEncoder; -import org.apache.batik.gvt.*; -import org.apache.batik.gvt.renderer.*; -import org.apache.batik.util.RunnableQueue; -import org.apache.batik.util.XMLResourceDescriptor; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class SVGOffscreenLoader { - - static final String SVGNS = "http://www.w3.org/2000/svg"; - - Document document; - UserAgentAdapter userAgent; - GVTBuilder builder; - BridgeContext ctx; - ImageRenderer renderer; - AffineTransform curTxf; - UpdateManager manager; - GraphicsNode gvtRoot; - int DISPLAY_WIDTH = 1280; - int DISPLAY_HEIGHT = 1024; - - public SVGOffscreenLoader(Document doc) { - userAgent = new UserAgentAdapter(); - ctx = new BridgeContext(userAgent); - builder = new GVTBuilder(); - document = doc; - } - - public void init() { - GraphicsNode gvtRoot = null; - - try { - ctx.setDynamicState(BridgeContext.DYNAMIC); - gvtRoot = builder.build(ctx, document); - } catch (BridgeException e) { - e.printStackTrace(); - System.exit(1); - } - - ImageRendererFactory rendererFactory; - rendererFactory = new ConcreteImageRendererFactory(); - renderer = rendererFactory.createDynamicImageRenderer(); - renderer.setDoubleBuffered(false); - - float docWidth = (float) ctx.getDocumentSize().getWidth(); - float docHeight = (float) ctx.getDocumentSize().getHeight(); - - float xscale = DISPLAY_WIDTH / docWidth; - float yscale = DISPLAY_HEIGHT / docHeight; - float scale = Math.min(xscale, yscale); - - AffineTransform px = AffineTransform.getScaleInstance(scale, scale); - - double tx = -0 + (DISPLAY_WIDTH / scale - docWidth) / 2; - double ty = -0 + (DISPLAY_WIDTH / scale - docHeight) / 2; - px.translate(tx, ty); - CanvasGraphicsNode cgn = getGraphicsNode(gvtRoot); - if (cgn != null) { - cgn.setViewingTransform(px); - curTxf = new AffineTransform(); - } else { - curTxf = px; - } - manager = new UpdateManager(ctx, gvtRoot, document); - // 'setMinRepaintTime' was added to SVN. This isn't - // essential but prevents 'frame skipping' (useful - // for "recording" content, not needed for live display). - // manager.setMinRepaintTime(-1); - - try { - manager.dispatchSVGLoadEvent(); - } catch (InterruptedException ie) { - ie.printStackTrace(); - } - - renderer.updateOffScreen(DISPLAY_WIDTH, DISPLAY_HEIGHT); - renderer.setTree(gvtRoot); - renderer.setTransform(curTxf); - renderer.clearOffScreen(); - renderer.repaint(new Rectangle(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)); - manager.addUpdateManagerListener(new UpdateManagerAdapter() { - - @Override - public void updateCompleted(UpdateManagerEvent e) { - render(e.getImage()); - } - - @Override - public void managerSuspended(UpdateManagerEvent e) { - // Make sure pending updates are completed. - System.exit(0); - } - }); - manager.manageUpdates(renderer); - this.gvtRoot = gvtRoot; - } - - private CanvasGraphicsNode getGraphicsNode(GraphicsNode gn) { - if (!(gn instanceof CompositeGraphicsNode)) return null; - CompositeGraphicsNode cgn = (CompositeGraphicsNode) gn; - List<?> children = cgn.getChildren(); - if (children.size() == 0) return null; - gn = (GraphicsNode) children.get(0); - if (!(gn instanceof CanvasGraphicsNode)) return null; - return (CanvasGraphicsNode) gn; - - } - - int imgCount = 1; - - public void render(java.awt.image.BufferedImage img) { - // paint the image or stream the image to the client display - try { - String file = "frame." + (imgCount++) + ".png"; - System.err.println("Output: " + file); - OutputStream os = new FileOutputStream(file); - - PNGEncodeParam params = PNGEncodeParam.getDefaultEncodeParam(img); - PNGImageEncoder pngEncoder = new PNGImageEncoder(os, params); - pngEncoder.encode(img); - os.flush(); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - - /** - * @param args - */ - public static void main(String[] args) { - /* - * if (args.length < 1) { System.out.println("You must provide - * background SVG file"); System.exit(1); } - */ - String docStr = "tiles/svg/tile-901.svg"; - - String xmlParser = XMLResourceDescriptor.getXMLParserClassName(); - SAXSVGDocumentFactory df; - df = new SAXSVGDocumentFactory(xmlParser); - Document doc = null; - SVGOffscreenLoader render = null; - Element r = null; - try { - File f = new File(docStr); - doc = df.createSVGDocument(f.toURL().toString()); - r = doc.createElementNS(SVGNS, "rect"); - r.setAttributeNS(null, "x", "100"); - r.setAttributeNS(null, "y", "200"); - r.setAttributeNS(null, "width", "200"); - r.setAttributeNS(null, "height", "150"); - r.setAttributeNS(null, "fill", "crimson"); - r.setAttributeNS(null, "stroke", "gold"); - r.setAttributeNS(null, "stroke-width", "3"); - doc.getDocumentElement().appendChild(r); - render = new SVGOffscreenLoader(doc); - render.init(); - } catch (IOException ioe) { - ioe.printStackTrace(); - System.exit(0); - } - - final Element rect = r; - - RunnableQueue rq = render.manager.getUpdateRunnableQueue(); - for (int i = 1; i < 10; i++) { - final int x = 100 + (i * 10); - try { - rq.invokeAndWait(new Runnable() { - - public void run() { - rect.setAttributeNS(null, "x", "" + x); - } - }); - } catch (InterruptedException ie) { - ie.printStackTrace(); - } - } - render.manager.suspend(); - } -} diff --git a/tools/lib/jarbundler-2.1.0.jar b/tools/lib/jarbundler-2.1.0.jar deleted file mode 100644 index 5127987..0000000 Binary files a/tools/lib/jarbundler-2.1.0.jar and /dev/null differ diff --git a/version.number b/version.number index 72b919f..b52774a 100644 --- a/version.number +++ b/version.number @@ -1,2 +1,5 @@ -#Property file that contains only the version number -version=1.5.3+ \ No newline at end of file +#Property file that contains version number and the develop indicator +version=1.5.3 +# the following string "@DEVELOP@ is replaced by an empty string in the release version +# this is done automatically by ant +develop=@DEVELOP@ \ No newline at end of file commit f46a2a4f1f31b3eeae95cb4379c69b359a0e16a6 Author: Stefan Frey <ste...@we...> Date: Mon Nov 28 13:37:11 2011 +0100 Updated ant build files to increase automation diff --git a/build.xml b/build.xml index 3900603..107fde2 100644 --- a/build.xml +++ b/build.xml @@ -1,180 +1,112 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- WARNING: Eclipse auto-generated file. - Any modifications will be overwritten. - To include a user specific buildfile here, simply create one in the same - directory with the processing instruction <?eclipse.ant.import?> - as the first entry and export the buildfile again. --> -<project basedir="." default="build" name="18xx"> - <property environment="env"/> - <property name="debuglevel" value="source,lines,vars"/> - <property name="target" value="1.5"/> - <property name="source" value="1.5"/> - <property name="version" value="1.5.3"/> - <taskdef name="jarbundler" - classpath="tools/lib/jarbundler-2.1.0.jar" - classname="net.sourceforge.jarbundler.JarBundler" /> - <path id="18xx.classpath"> - <pathelement location="classes"/> - <pathelement location="lib/log4j-1.2/log4j-1.2.14.jar"/> - <pathelement location="lib/batik-1.7/batik.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-dom.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-bridge.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-util.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-gvt.jar"/> - <pathelement location="lib/batik-1.7/lib/batik-ext.jar"/> - <pathelement location="lib/jgraph5/jgraph.jar"/> - <pathelement location="lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar"/> - <pathelement location="lib/junit-4.8.2/junit.jar"/> - </path> - <target depends="clean" name="init"> - <mkdir dir="classes"/> - <copy includeemptydirs="false" todir="classes"> - <fileset dir="."> - <exclude name="**/*.launch"/> - <exclude name="**/*.java"/> - <exclude name="tools/**"/> - <exclude name="images/**"/> - </fileset> - </copy> - </target> - <target name="clean"> - <delete dir="classes"/> - <delete dir="jar"/> - </target> - <target depends="clean" name="cleanall"> - <delete dir="rails-${version}"/> - <delete dir="rails-mac-${version}"/> - <delete file="18xx.log"/> - </target> - <target depends="build-subprojects,build-project,build-release" name="build"/> - <target name="build-subprojects"/> - <target depends="init" name="build-project"> - <echo message="${ant.project.name}: ${ant.file}"/> - <javac debug="true" debuglevel="${debuglevel}" destdir="classes" source="${source}" target="${target}"> - <src path="."/> - <classpath refid="18xx.classpath"/> - </javac> - </target> - <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/> - <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler"> - <copy todir="${ant.library.dir}"> - <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> - </copy> - <unzip dest="${ant.library.dir}"> - <patternset includes="jdtCompilerAdapter.jar"/> - <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> - </unzip> - </target> - <target description="compile project with Eclipse compiler" name="build-eclipse-compiler"> - <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> - <antcall target="build"/> - </target> - <target name="build-release"> - <mkdir dir="jar"/> - <copy includeemptydirs="false" todir="jar"> - <fileset dir="classes"> - <exclude name="**/*.launch"/> - <exclude name="**/*.java"/> - <exclude name="rails/test/*"/> - <exclude name="test/**"/> - <exclude name="tiles/*.*"/> - <exclude name="18xx.log"/> - <exclude name="build.xml"/> - <exclude name="buildinfo.xml"/> - <exclude name="user.profiles"/> - <exclude name="manifest"/> - <exclude name="doc/*"/> - <exclude name="html/*"/> - <exclude name="lib/**"/> - <exclude name="rails-${version}/**"/> - <exclude name="rails-*-${version}/**"/> - <exclude name="rails.bat"/> - <exclude name="rails.sh"/> - <exclude name=".project"/> - <exclude name=".classpath"/> - <exclude name=".git/**"/> - <exclude name=".gitignore"/> - <exclude name="Rails-format.xml"/> - <exclude name="**/CVS/*"/> - <exclude name="**/.settings/*"/> - <exclude name="**/rails-${version}.jar"/> - </fileset> - </copy> - <mkdir dir="rails-${version}"/> - <copy includeemptydirs="false" todir="rails-${version}"> - <fileset dir="."> - <include name="LICENSE"/> - <include name="README"/> - <include name="AUTHORS"/> - <include name="rails.bat"/> - <include name="rails.sh"/> - <include name="my.properties"/> - <include name="LocalisedText.properties"/> - <include name="games.properties"/> - <include name="lib/**"/> - </fileset> - </copy> - <jar destfile="rails-${version}/rails-${version}.jar" basedir="jar" duplicate="preserve"> - <manifest> - <attribute name="Main-Class" value="rails.util.RunGame" /> - <attribute name="Class-Path" value="./my.properties - ./LocalisedText.properties - ./lib/log4j-1.2/log4j-1.2.14.jar - ./lib/batik-1.7/batik.jar - ./lib/batik-1.7/lib/batik-util.jar - ./lib/batik-1.7/lib/batik-dom.jar - ./lib/batik-1.7/lib/batik-bridge.jar - ./lib/batik-1.7/lib/batik-ext.jar - ./lib/batik-1.7/lib/batik-gvt.jar - ./lib/jgraph5/jgraph.jar - ./lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar" /> - </manifest> - </jar> - </target> - <target name="build-mac"> - <mkdir dir="rails-mac-${version}" /> - <copy includeemptydirs="false" todir="rails-mac-${version}"> - <fileset dir="."> - <include name="LICENSE"/> - <include name="README"/> - <include name="AUTHORS"/> - <include name="my.properties"/> - </fileset> - </copy> - <jarbundler dir="rails-mac-${version}" - name="Rails" - mainclass="rails.util.RunGame" - icon="images/icon/rails.icns" - version="${version}"> - <jarfileset dir="rails-${version}"> - <include name="rails-${version}.jar"/> - <include name="lib/**"/> - </jarfileset> - <javaproperty name="apple.laf.useScreenMenuBar" value="true"/> - </jarbundler> - </target> - <target name="RunGame"> - <java classname="rails.util.RunGame" failonerror="true" fork="yes"> - <classpath refid="18xx.classpath"/> - </java> - </target> - <target name="TestGames"> - <property name="test.xml.dir" value="test/xml"/> - <property name="test.report.dir" value="test/report"/> - <mkdir dir="${test.xml.dir}"/> - <mkdir dir="${test.report.dir}"/> - <junit> - <classpath refid="18xx.classpath"/> - <formatter type="brief" usefile="false" /> - <formatter type="xml" /> - <test name ="test.TestGameBuilder" todir="${test.xml.dir}"/> - </junit> - <junitreport todir="${test.xml.dir}"> - <fileset dir="${test.xml.dir}"> - <include name="TEST-*.xml"/> - </fileset> - <report format="noframes" todir="${test.report.dir}"/> - </junitreport> - </target> - + Any modifications will be overwritten. + To include a user specific buildfile here, simply create one in the same + directory with the processing instruction <?eclipse.ant.import?> + as the first entry and export the buildfile again. --> +<project basedir="." default="build" name="Rails"> + <property environment="env"/> + <property name="junit.output.dir" value="junit"/> + <property name="debuglevel" value="source,lines,vars"/> + <property name="target" value="1.5"/> + <property name="source" value="1.5"/> + <import file="buildRails.xml"/> + <path id="Rails.classpath"> + <pathelement location="classes"/> + <pathelement location="lib/log4j-1.2/log4j-1.2.14.jar"/> + <pathelement location="lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar"/> + <pathelement location="lib/jgraph5/jgraph.jar"/> + <pathelement location="lib/batik-1.7/batik.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-bridge.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-dom.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-ext.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-gvt.jar"/> + <pathelement location="lib/batik-1.7/lib/batik-util.jar"/> + <pathelement location="lib/junit-4.8.2/junit.jar"/> + </path> + <target name="init"> + <mkdir dir="classes"/> + <copy includeemptydirs="false" todir="classes"> + <fileset dir="."> + <exclude name="**/*.launch"/> + <exclude name="**/*.java"/> + <exclude name="lib/batik-1.7/"/> + <exclude name="lib/batik-1.7/"/> + <exclude name="lib/batik-1.7/lib/"/> + <exclude name="lib/batik-1.7/lib/"/> + <exclude name="lib/jgraph5/"/> + <exclude name="lib/jgraph5/"/> + <exclude name="lib/jgrapht-0.7.3/"/> + <exclude name="lib/jgrapht-0.7.3/"/> + <exclude name="lib/junit-4.8.2"/> + <exclude name="lib/log4j-1.2/"/> + <exclude name="lib/log4j-1.2/"/> + </fileset> + </copy> + </target> + <target name="clean"> + <delete dir="classes"/> + </target> + <target depends="clean" name="cleanall"/> + <target depends="build-subprojects,build-project" name="build"/> + <target name="build-subprojects"/> + <target depends="init" name="build-project"> + <echo message="${ant.project.name}: ${ant.file}"/> + <javac debug="true" debuglevel="${debuglevel}" destdir="classes" includeantruntime="false" source="${source}" target="${target}"> + <src path="."/> + <exclude name="lib/batik-1.7/"/> + <exclude name="lib/batik-1.7/"/> + <exclude name="lib/batik-1.7/lib/"/> + <exclude name="lib/batik-1.7/lib/"/> + <exclude name="lib/jgraph5/"/> + <exclude name="lib/jgraph5/"/> + <exclude name="lib/jgrapht-0.7.3/"/> + <exclude name="lib/jgrapht-0.7.3/"/> + <exclude name="lib/junit-4.8.2"/> + <exclude name="lib/log4j-1.2/"/> + <exclude name="lib/log4j-1.2/"/> + <classpath refid="Rails.classpath"/> + </javac> + </target> + <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/> + <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler"> + <copy todir="${ant.library.dir}"> + <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> + </copy> + <unzip dest="${ant.library.dir}"> + <patternset includes="jdtCompilerAdapter.jar"/> + <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> + </unzip> + </target> + <target description="compile project with Eclipse compiler" name="build-eclipse-compiler"> + <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> + <antcall target="build"/> + </target> + <target name="TestGameBuilder (1)"> + <java classname="test.TestGameBuilder" failonerror="true" fork="yes"> + <classpath refid="Rails.classpath"/> + </java> + </target> + <target name="RunGame"> + <java classname="rails.util.RunGame" failonerror="true" fork="yes"> + <jvmarg line="-DRevenueCalculation=suggest -Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"/> + <classpath refid="Rails.classpath"/> + </java> + </target> + <target name="TestGameBuilder"> + <mkdir dir="${junit.output.dir}"/> + <junit fork="yes" printsummary="withOutAndErr"> + <formatter type="xml"/> + <test name="test.TestGameBuilder" todir="${junit.output.dir}"/> + <classpath refid="Rails.classpath"/> + </junit> + </target> + <target name="junitreport"> + <junitreport todir="${junit.output.dir}"> + <fileset dir="${junit.output.dir}"> + <include name="TEST-*.xml"/> + </fileset> + <report format="frames" todir="${junit.output.dir}"/> + </junitreport> + </target> </project> diff --git a/buildRails.xml b/buildRails.xml new file mode 100644 index 0000000..142d350 --- /dev/null +++ b/buildRails.xml @@ -0,0 +1,89 @@ +<?eclipse.ant.import ?> + <!-- Extensions to the automatic ant file created by eclipse --> +<project basedir="." default="build" name="Rails"> + + <!-- Define a property for the version number --> + <property file="version.number"/> + + <!-- Define a filter to substitute version number --> + <filterset id="versionFilter"> + <filter token="VERSION" value="${version}"/> + </filterset> + + <!-- Clean the current release --> + <target name="clean-release"> + <delete> + <fileset dir="jar"/> + <fileset dir="rails-${version}"/> + </delete> + </target> + + <!-- Target that creates the release jar + this is legacy code --> + <target name="build-release" depends="clean-release,clean,build"> + <mkdir dir="jar"/> + <copy includeemptydirs="false" todir="jar"> + <filterset refid="versionFilter"/> + <fileset dir="classes"> + <exclude name="**/*.launch"/> + <exclude name="**/*.java"/> + <exclude name="rails/test/*"/> + <exclude name="test/**"/> + <exclude name="tiles/*.*"/> + <exclude name="18xx.log"/> + <exclude name="build.xml"/> + <exclude name="buildinfo.xml"/> + <exclude name="user.profiles"/> + <exclude name="manifest"/> + <exclude name="doc/*"/> + <exclude name="html/*"/> + <exclude name="lib/**"/> + <exclude name="rails-${version}/**"/> + <exclude name="rails-*-${version}/**"/> + <exclude name="rails.bat"/> + <exclude name="rails.sh"/> + <exclude name="version.number"/> + <exclude name=".project"/> + <exclude name=".classpath"/> + <exclude name=".git/**"/> + <exclude name=".gitignore"/> + <exclude name="Rails-format.xml"/> + <exclude name="**/CVS/*"/> + <exclude name="**/.settings/*"/> + <exclude name="**/rails-${version}.jar"/> + </fileset> + </copy> + <mkdir dir="rails-${version}"/> + <copy includeemptydirs="false" todir="rails-${version}"> + <filterset refid="versionFilter"/> + <fileset dir="."> + <include name="LICENSE"/> + <include name="README"/> + <include name="AUTHORS"/> + <include name="rails.bat"/> + <include name="rails.sh"/> + <include name="my.properties"/> + <include name="LocalisedText.properties"/> + <include name="games.properties"/> + <include name="lib/**"/> + </fileset> + </copy> + <jar destfile="rails-${version}/rails-${version}.jar" basedir="jar" duplicate="preserve"> + <manifest> + <attribute name="Main-Class" value="rails.util.RunGame" /> + <attribute name="Class-Path" value="./my.properties + ./LocalisedText.properties + ./lib/log4j-1.2/log4j-1.2.14.jar + ./lib/batik-1.7/batik.jar + ./lib/batik-1.7/lib/batik-util.jar + ./lib/batik-1.7/lib/batik-dom.jar + ./lib/batik-1.7/lib/batik-bridge.jar + ./lib/batik-1.7/lib/batik-ext.jar + ./lib/batik-1.7/lib/batik-gvt.jar + ./lib/jgraph5/jgraph.jar + ./lib/jgrapht-0.7.3/jgrapht-jdk1.5.jar" /> + </manifest> + </jar> + </target> + +</project> \ No newline at end of file diff --git a/buildinfo.xml b/buildinfo.xml deleted file mode 100644 index 6c1fb15..0000000 --- a/buildinfo.xml +++ /dev/null @@ -1,16 +0,0 @@ -<!-- Generate a java class with the current svn revision number --> -<project name="buildinfo " default="makeBuildInfo" basedir="."> - <target name="makeBuildInfo" description="Create a BuildInfo source"> - <tstamp> - <format property="TODAY" pattern="yyyy-MM-dd"/> - </tstamp> - <!-- the source code of the java class --> - <echo file="${basedir}/rails/util/BuildInfo.java"> -package rails.util; - -public class BuildInfo { - public static final String buildDate = "${TODAY}"; -} -</echo> - </target> -</project> \ No newline at end of file diff --git a/rails.bat b/rails.bat index 5fb363c..fafb975 100644 --- a/rails.bat +++ b/rails.bat @@ -1,2 +1,2 @@ -java -jar rails-1.5.jar %1 \ No newline at end of file +java -jar rails-@VERSION@.jar %1 \ No newline at end of file diff --git a/rails.sh b/rails.sh index 201aab0..12e626d 100644 --- a/rails.sh +++ b/rails.sh @@ -1,3 +1,3 @@ #!/bin/bash -java -jar ./rails-1.5.jar $1 \ No newline at end of file +java -jar ./rails-@VERSION@.jar $1 \ No newline at end of file diff --git a/rails/game/Game.java b/rails/game/Game.java index c9d1054..250e6b4 100644 --- a/rails/game/Game.java +++ b/rails/game/Game.java @@ -14,7 +14,7 @@ import rails.game.action.PossibleAction; import rails.util.GameFileIO; public class Game { - public static final String version = "1.5.3+"; + public static final String version = "@VERSION@"; /** The component Manager */ protected GameManager gameManager; diff --git a/version.number b/version.number new file mode 100644 index 0000000..72b919f --- /dev/null +++ b/version.number @@ -0,0 +1,2 @@ +#Property file that contains only the version number +version=1.5.3+ \ No newline at end of file commit 760a9358b8a2e9e16e0b7542c5df9a1c64e188d5 Author: Stefan Frey <ste...@we...> Date: Mon Nov 28 11:42:11 2011 +0100 Fixed reference in properties file for the setLocale method as the class was moved previously diff --git a/data/Properties.xml b/data/Properties.xml index b54129b..eb95d4c 100644 --- a/data/Properties.xml +++ b/data/Properties.xml @@ -4,7 +4,7 @@ <Properties> <Section name="General"> <Property name="locale" type="LIST" values="en_US,te_ST" - initClass="rails.util.LocalText" initMethod="setLocale" + initClass="rails.common.LocalText" initMethod="setLocale" initParameter="yes" /> <Property name="default_game" type="STRING" /> <Property name="default_players" type="STRING" /> |
From: Stefan F. <ste...@us...> - 2011-11-25 14:12:58
|
rails/game/MapManager.java | 2 +- rails/ui/swing/hexmap/HexMapImage.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) New commits: commit 572d4fa812f40923634d460a94236d4d94b5a453 Author: Stefan Frey <ste...@we...> Date: Fri Nov 25 15:15:47 2011 +0100 Fixed bug that prevented loading MapImage from jar diff --git a/rails/game/MapManager.java b/rails/game/MapManager.java index dd85c46..f45dd10 100644 --- a/rails/game/MapManager.java +++ b/rails/game/MapManager.java @@ -245,7 +245,7 @@ public class MapManager implements ConfigurableComponentI { if (!rails.util.Util.hasValue(rootDirectory)) { rootDirectory = "data"; } - mapImageFilepath = rootDirectory + "/" + mapImageFilename; + mapImageFilepath = "/" + rootDirectory + "/" + mapImageFilename; } for (String hexName : mHexes.keySet()) { diff --git a/rails/ui/swing/hexmap/HexMapImage.java b/rails/ui/swing/hexmap/HexMapImage.java index e360245..a1435e6 100644 --- a/rails/ui/swing/hexmap/HexMapImage.java +++ b/rails/ui/swing/hexmap/HexMapImage.java @@ -67,9 +67,10 @@ public final class HexMapImage extends JSVGCanvas { private void loadMap() { try { - File imageFile = new File (mapManager.getMapImageFilepath()); - setURI(imageFile.toURI().toString()); - log.debug("ImageFile="+ imageFile.getName()); +// File imageFile = new File (mapManager.getMapImageFilepath()); +// setURI(imageFile.toURI().toString()); +// log.debug("ImageFile="+ imageFile.getName()); + setURI(getClass().getResource(mapManager.getMapImageFilepath()).toString()); } catch (Exception e) { log.error ("Cannot load map image file " + mapManager.getMapImageFilepath(), e); } |
From: Erik V. <ev...@us...> - 2011-11-25 10:10:30
|
LocalisedText.properties | 2 rails/util/GameFileIO.java | 223 ++++++++++------------ test/data/test/1835_NatDoubleShare.rails |binary test/data/test/1835_NatDoubleShare.report | 144 ++++++++++++++ test/data/test/1835_NatSingleShare.rails |binary test/data/test/1835_NatSingleShare.report | 1 test/data/test/1835_SwapPresForDoubleShare.rails |binary test/data/test/1835_SwapPresForDoubleShare.report | 1 8 files changed, 253 insertions(+), 118 deletions(-) New commits: commit a638a2bd036c47a706c0545859310cecfd135b79 Author: Erik Vos <eri...@xs...> Date: Fri Nov 25 11:06:41 2011 +0100 Interrupted load now reports action count. Three test cases refreshed again. diff --git a/LocalisedText.properties b/LocalisedText.properties index 5d32604..ac33c51 100644 --- a/LocalisedText.properties +++ b/LocalisedText.properties @@ -362,7 +362,7 @@ LoadFailed=Load failed.\n\Reason = {0}\n\To improve Rails please submit save fil LoadGame=Load Game LoadRecentGame=Load Recent LOAD=Load -LoadInterrupted=Load interrupted at this point, you can continue play from here.\n\To improve Rails please submit save file to Rails user list at \n\ rai...@li... +LoadInterrupted=Load interrupted at action {0}, you can continue play from here.\n\To improve Rails please submit save file to Rails user list at \n\ rai...@li... LoansNotAllowed={0} may not take any loans Major=Major MAP=Map diff --git a/rails/util/GameFileIO.java b/rails/util/GameFileIO.java index 59f0142..628ba98 100644 --- a/rails/util/GameFileIO.java +++ b/rails/util/GameFileIO.java @@ -1,29 +1,15 @@ package rails.util; -import java.io.EOFException; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; +import java.io.*; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; +import java.util.*; import org.apache.log4j.Logger; import rails.common.DisplayBuffer; import rails.common.LocalText; import rails.common.parser.ConfigurationException; -import rails.game.Game; -import rails.game.GameManager; -import rails.game.GameManagerI; -import rails.game.ReportBuffer; +import rails.game.*; import rails.game.action.PossibleAction; /** @@ -36,7 +22,7 @@ public class GameFileIO { protected static Logger log = Logger.getLogger(Game.class.getPackage().getName()); - + private GameData gameData = new GameData(); // fields for data load @@ -44,26 +30,26 @@ public class GameFileIO { private Game loadedGame = null; private boolean dataLoadDone = false; private boolean initialized = false; - + // fields for data save private boolean initSave = false; public String getGameDataAsText() { return gameData.metaDataAsText() + gameData.gameOptionsAsText() + gameData.playerNamesAsText(); } - + public Game getGame() { return loadedGame; } - + public List<PossibleAction> getActions() { return gameData.actions; } - + public void setActions(List<PossibleAction> actions) { gameData.actions = actions; } - + public SortedMap<Integer, String> getComments() { return gameData.userComments; } @@ -71,12 +57,12 @@ public class GameFileIO { public void setComments(SortedMap<Integer, String> comments) { gameData.userComments = comments; } - + @SuppressWarnings("unchecked") public void loadGameData(String filepath) { dataLoadDone = true; - + log.info("Loading game from file " + filepath); String filename = filepath.replaceAll(".*[/\\\\]", ""); @@ -93,7 +79,7 @@ public class GameFileIO { // Allow for older saved file versions. gameData.meta.version = "pre-1.0.7"; } - + log.info("Reading Rails " + gameData.meta.version +" saved file "+filename); if (object instanceof String) { @@ -106,30 +92,30 @@ public class GameFileIO { gameData.meta.fileVersionID = (Long) object; log.debug("Saved versionID="+gameData.meta.fileVersionID+" (object="+object+")"); long GMsaveFileVersionID = GameManager.saveFileVersionID; - + if (gameData.meta.fileVersionID != GMsaveFileVersionID) { throw new Exception("Save version " + gameData.meta.fileVersionID - + " is incompatible with current version " - + GMsaveFileVersionID); + + " is incompatible with current version " + + GMsaveFileVersionID); } // read name of saved game gameData.meta.gameName = (String) ois.readObject(); log.debug("Saved game="+ gameData.meta.gameName); - + // read selected game options and player names gameData.gameOptions = (Map<String, String>) ois.readObject(); log.debug("Selected game options = " + gameData.gameOptions); gameData.playerNames = (List<String>) ois.readObject(); log.debug("Player names = " + gameData.playerNames); - + } catch (Exception e) { dataLoadDone = false; log.fatal("Load failed", e); DisplayBuffer.add(LocalText.getText("LoadFailed", e.getMessage())); } } - + public Game initGame() throws ConfigurationException { // check if initial load was done @@ -152,105 +138,108 @@ public class GameFileIO { return loadedGame; } - - + + @SuppressWarnings("unchecked") public boolean loadActionsAndComments() throws ConfigurationException { if (!dataLoadDone) { throw new ConfigurationException("No game was loaded"); } - // Read game actions into gameData.listOfActions - try { - // read next object in stream - Object actionObject = null; - while (true) { // Single-pass loop. - try { - actionObject = ois.readObject(); - } catch (EOFException e) { - // Allow saved file at start of game (with no actions). - break; - - } - if (actionObject instanceof List) { - // Until Rails 1.3: one List of PossibleAction - gameData.actions = (List<PossibleAction>) actionObject; - } else if (actionObject instanceof PossibleAction) { - gameData.actions = new ArrayList<PossibleAction>(); - // Since Rails 1.3.1: separate PossibleActionsObjects - while (actionObject instanceof PossibleAction) { - gameData.actions.add((PossibleAction)actionObject); - try { - actionObject = ois.readObject(); - } catch (EOFException e) { - break; - } - } - } - break; - } - /** + // Read game actions into gameData.listOfActions + try { + // read next object in stream + Object actionObject = null; + while (true) { // Single-pass loop. + try { + actionObject = ois.readObject(); + } catch (EOFException e) { + // Allow saved file at start of game (with no actions). + break; + + } + if (actionObject instanceof List) { + // Until Rails 1.3: one List of PossibleAction + gameData.actions = (List<PossibleAction>) actionObject; + } else if (actionObject instanceof PossibleAction) { + gameData.actions = new ArrayList<PossibleAction>(); + // Since Rails 1.3.1: separate PossibleActionsObjects + while (actionObject instanceof PossibleAction) { + gameData.actions.add((PossibleAction)actionObject); + try { + actionObject = ois.readObject(); + } catch (EOFException e) { + break; + } + } + } + break; + } + /** todo: the code below is far from perfect, but robust - */ - - // init user comments to have a defined object in any case - gameData.userComments = new TreeMap<Integer,String>(); - - // at the end of file user comments are added as SortedMap - if (actionObject instanceof SortedMap) { - gameData.userComments = (SortedMap<Integer, String>) actionObject; - log.debug("file load: found user comments"); - } else { - try { - Object object = ois.readObject(); - if (object instanceof SortedMap) { - gameData.userComments = (SortedMap<Integer, String>) actionObject; - log.debug("file load: found user comments"); - } - } catch (IOException e) { - // continue without comments, if any IOException occurs - // sometimes not only the EOF Exception is raised - // but also the java.io.StreamCorruptedException: invalid type code - } - } - ois.close(); - ois = null; - initialized = true; - } catch (Exception e) { - log.fatal("Load failed", e); - DisplayBuffer.add(LocalText.getText("LoadFailed", e.getMessage())); - initialized = false; - } - return initialized; + */ + + // init user comments to have a defined object in any case + gameData.userComments = new TreeMap<Integer,String>(); + + // at the end of file user comments are added as SortedMap + if (actionObject instanceof SortedMap) { + gameData.userComments = (SortedMap<Integer, String>) actionObject; + log.debug("file load: found user comments"); + } else { + try { + Object object = ois.readObject(); + if (object instanceof SortedMap) { + gameData.userComments = (SortedMap<Integer, String>) actionObject; + log.debug("file load: found user comments"); + } + } catch (IOException e) { + // continue without comments, if any IOException occurs + // sometimes not only the EOF Exception is raised + // but also the java.io.StreamCorruptedException: invalid type code + } + } + ois.close(); + ois = null; + initialized = true; + } catch (Exception e) { + log.fatal("Load failed", e); + DisplayBuffer.add(LocalText.getText("LoadFailed", e.getMessage())); + initialized = false; + } + return initialized; } - + public void replayGame() throws Exception { if (!initialized) { throw new ConfigurationException("No game was loaded/initialized"); } - GameManagerI gameManager = loadedGame.getGameManager(); - log.debug("Starting to execute loaded actions"); - gameManager.setReloading(true); - - for (PossibleAction action : gameData.actions) { - if (!gameManager.processOnReload(action)) { - log.error ("Load interrupted"); - DisplayBuffer.add(LocalText.getText("LoadInterrupted")); - break; - } - } - - gameManager.setReloading(false); - ReportBuffer.setCommentItems(gameData.userComments); - - // callback to GameManager - gameManager.finishLoading(); + GameManagerI gameManager = loadedGame.getGameManager(); + log.debug("Starting to execute loaded actions"); + gameManager.setReloading(true); + + int count = -1; + for (PossibleAction action : gameData.actions) { + count++; + if (!gameManager.processOnReload(action)) { + log.error ("Load interrupted"); + DisplayBuffer.add(LocalText.getText("LoadInterrupted", count)); + ReportBuffer.add(LocalText.getText("LoadInterrupted", count)); + break; + } + } + + gameManager.setReloading(false); + ReportBuffer.setCommentItems(gameData.userComments); + + // callback to GameManager + gameManager.finishLoading(); } - + /** * sets the meta data required for a game save */ - public void initSave(Long saveFileVersionID, String gameName, Map<String, String> gameOptions, List<String> playerNames) { + public void initSave(Long saveFileVersionID, String gameName, Map<String, String> gameOptions, List<String> playerNames) { gameData.meta.version = Game.version+" "+BuildInfo.buildDate; gameData.meta.date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); gameData.meta.fileVersionID = saveFileVersionID; @@ -259,7 +248,7 @@ public class GameFileIO { gameData.playerNames = playerNames; initSave = true; } - + /** * Stores the game to a file * requires initSave and setting actions and comments @@ -296,5 +285,5 @@ public class GameFileIO { } return result; } - + } diff --git a/test/data/test/1835_NatDoubleShare.rails b/test/data/test/1835_NatDoubleShare.rails index c5eaa4e..25e7f4b 100644 Binary files a/test/data/test/1835_NatDoubleShare.rails and b/test/data/test/1835_NatDoubleShare.rails differ diff --git a/test/data/test/1835_NatDoubleShare.report b/test/data/test/1835_NatDoubleShare.report index d679b48..a6a0a67 100644 --- a/test/data/test/1835_NatDoubleShare.report +++ b/test/data/test/1835_NatDoubleShare.report @@ -738,3 +738,147 @@ 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 index c1426c9..535658d 100644 Binary files a/test/data/test/1835_NatSingleShare.rails and b/test/data/test/1835_NatSingleShare.rails differ diff --git a/test/data/test/1835_NatSingleShare.report b/test/data/test/1835_NatSingleShare.report index f0b1381..f1eadbb 100644 --- a/test/data/test/1835_NatSingleShare.report +++ b/test/data/test/1835_NatSingleShare.report @@ -74,3 +74,4 @@ Has,T2,66 Has,T3,15 StartStockRound,1 HasPriority,T1 +LoadInterrupted,13 diff --git a/test/data/test/1835_SwapPresForDoubleShare.rails b/test/data/test/1835_SwapPresForDoubleShare.rails index 5ccd94d..e8fdf45 100644 Binary files a/test/data/test/1835_SwapPresForDoubleShare.rails and b/test/data/test/1835_SwapPresForDoubleShare.rails differ diff --git a/test/data/test/1835_SwapPresForDoubleShare.report b/test/data/test/1835_SwapPresForDoubleShare.report index f0b1381..f1eadbb 100644 --- a/test/data/test/1835_SwapPresForDoubleShare.report +++ b/test/data/test/1835_SwapPresForDoubleShare.report @@ -74,3 +74,4 @@ Has,T2,66 Has,T3,15 StartStockRound,1 HasPriority,T1 +LoadInterrupted,13 |
From: Erik V. <ev...@us...> - 2011-11-24 22:20:54
|
test/data/test/1835_NatDoubleShare.rails |binary test/data/test/1835_NatDoubleShare.report | 740 +++++++++++++++++++++++ test/data/test/1835_NatSingleShare.rails |binary test/data/test/1835_NatSingleShare.report | 76 ++ test/data/test/1835_SwapPresForDoubleShare.rails |binary 5 files changed, 816 insertions(+) New commits: commit 97fbf87bb1cb05d22b05a59b978e8f3820ac2a94 Author: Erik Vos <eri...@xs...> Date: Thu Nov 24 23:19:46 2011 +0100 Fixed test cases invalidated by previous commit diff --git a/test/data/test/1835_NatDoubleShare.rails b/test/data/test/1835_NatDoubleShare.rails new file mode 100644 index 0000000..c5eaa4e Binary files /dev/null and b/test/data/test/1835_NatDoubleShare.rails differ diff --git a/test/data/test/1835_NatDoubleShare.report b/test/data/test/1835_NatDoubleShare.report new file mode 100644 index 0000000..d679b48 --- /dev/null +++ b/test/data/test/1835_NatDoubleShare.report @@ -0,0 +1,740 @@ +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 diff --git a/test/data/test/1835_NatSingleShare.rails b/test/data/test/1835_NatSingleShare.rails new file mode 100644 index 0000000..c1426c9 Binary files /dev/null and b/test/data/test/1835_NatSingleShare.rails differ diff --git a/test/data/test/1835_NatSingleShare.report b/test/data/test/1835_NatSingleShare.report new file mode 100644 index 0000000..f0b1381 --- /dev/null +++ b/test/data/test/1835_NatSingleShare.report @@ -0,0 +1,76 @@ +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_SwapPresForDoubleShare.rails b/test/data/test/1835_SwapPresForDoubleShare.rails index a656b5c..5ccd94d 100644 Binary files a/test/data/test/1835_SwapPresForDoubleShare.rails and b/test/data/test/1835_SwapPresForDoubleShare.rails differ |
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 |
From: Erik V. <ev...@us...> - 2011-11-23 16:21:39
|
rails/game/specific/_1835/PrussianFormationRound.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) New commits: commit 7f688a6ee82a52d57e6909303f91103016a29b24 Author: Erik Vos <eri...@xs...> Date: Wed Nov 23 17:20:57 2011 +0100 Fixed PR train discarding bugs. PR did not discard excess trains after forced merge at first 5-train, and would (probably) never discard more than one train, even if having two or more excess trains. diff --git a/rails/game/specific/_1835/PrussianFormationRound.java b/rails/game/specific/_1835/PrussianFormationRound.java index aa9a3b0..d31cd9f 100644 --- a/rails/game/specific/_1835/PrussianFormationRound.java +++ b/rails/game/specific/_1835/PrussianFormationRound.java @@ -92,7 +92,13 @@ public class PrussianFormationRound extends StockRound { } } executeExchange (foldables, false, true); - finishRound(); + + // Check if the PR must discard any trains + if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + step = Step.DISCARD_TRAINS; + } else { + finishRound(); + } } else { findNextMergingPlayer(false); } @@ -118,6 +124,7 @@ public class PrussianFormationRound extends StockRound { } else if (step == Step.DISCARD_TRAINS) { if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + log.debug("+++ PR has "+prussian.getNumberOfTrains()+", limit is "+prussian.getCurrentTrainLimit()); possibleActions.add(new DiscardTrain(prussian, prussian.getPortfolio().getUniqueTrains(), true)); } @@ -425,8 +432,13 @@ public class PrussianFormationRound extends StockRound { company.getName(), train.getName() )); - // This always finished this type of round - finishRound(); + // We still might have another excess train + // TODO: would be better to have DiscardTrain discard multiple trains + if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + step = Step.DISCARD_TRAINS; + } else { + finishRound(); + } return true; } |
From: Erik V. <ev...@us...> - 2011-11-22 23:43:31
|
rails/game/action/SellShares.java | 5 test/data/test/1830_SellFullPresCert.report | 257 ++++++ test/data/test/1830_SellHalfPresCert.report | 257 ++++++ test/data/test/1835_NatDoubleShare.report | 874 ++++++++++++++++++++++ test/data/test/1835_NatSingleShare.report | 66 + test/data/test/1835_SwapPresForDoubleShare.report | 66 + 6 files changed, 1524 insertions(+), 1 deletion(-) New commits: commit 5183cc7a7d798f17479525d466fbc4fcc82e149f Author: Erik Vos <eri...@xs...> Date: Wed Nov 23 00:36:27 2011 +0100 Restored removed field numberSold from SellShares action. This proved necessary for backwards compatibility. Refreshed the related new test cases. diff --git a/rails/game/action/SellShares.java b/rails/game/action/SellShares.java index e266a7a..63e66a2 100644 --- a/rails/game/action/SellShares.java +++ b/rails/game/action/SellShares.java @@ -32,6 +32,9 @@ public class SellShares extends PossibleAction { */ private int presidentExchange = 0; + // For backwards compatibility only + private int numberSold = 0; + public static final long serialVersionUID = 1L; public SellShares(String companyName, int shareUnits, int number, @@ -134,7 +137,7 @@ public class SellShares extends PossibleAction { shareUnits = fields.get("shareUnits", shareUnits); share = fields.get("share", share); price = fields.get("price", price); - int numberSold = fields.get("numberSold", 0); // For backwards compatibility + numberSold = fields.get("numberSold", 0); // For backwards compatibility number = fields.get("number", numberSold); presidentExchange = fields.get("presidentExchange", 0); diff --git a/test/data/test/1830_SellFullPresCert.report b/test/data/test/1830_SellFullPresCert.report index 63f22fb..7baab94 100644 --- a/test/data/test/1830_SellFullPresCert.report +++ b/test/data/test/1830_SellFullPresCert.report @@ -8,3 +8,260 @@ StartOfPhase,2 BankSizeIs,9600 StartOfInitialRound HasPriority,Alice +BuysItemFor,Alice,SVNRR,20 +BuysItemFor,Bob,C&StL,40 +BuysItemFor,Charlie,D&H,70 +BuysItemFor,Alice,M&H,110 +BuysItemFor,Bob,C&A,160 +ALSO_GETS,Bob,CERT_NAME,PRR,10 +BuysItemFor,Charlie,B&O,220 +ALSO_GETS,Charlie,PRES_CERT_NAME,B&O,20 +Has,Alice,670 +Has,Bob,600 +Has,Charlie,510 +StartStockRound,1 +HasPriority,Alice +START_COMPANY_LOG,Alice,NYNH,100,200,2,20,BANK +START_COMPANY_LOG,Bob,PRR,100,200,2,20,BANK +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +FloatsWithCash,PRR,1000 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +FloatsWithCash,B&O,1000 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +FloatsWithCash,NYNH,1000 +BUY_SHARE_LOG,Bob,10,B&O,IPO,100 +BUY_SHARE_LOG,Charlie,10,NYNH,IPO,100 +PASSES,Alice +PASSES,Bob +PASSES,Charlie + +END_SR,1 +Has,B&O,1000 +Has,NYNH,1000 +Has,PRR,1000 +Has,Alice,70 +Has,Bob,0 +Has,Charlie,10 +START_OR,1.1 +ReceivesFor,Alice,5,SVNRR +ReceivesFor,Bob,10,C&StL +ReceivesFor,Charlie,15,D&H +ReceivesFor,Alice,20,M&H +ReceivesFor,Bob,25,C&A +ReceivesFor,Charlie,30,B&O + +CompanyOperates,B&O,Charlie +LaysTileAtFor,B&O,57,J14,SW,80 +LAYS_TOKEN_ON,B&O,J14,40 +CompanyDoesNotPayDividend,B&O +PRICE_MOVES_LOG,B&O,100,G1,90,F1 +BuysTrain,B&O,2,IPO,80 +PrivateCloses,B&O +FirstTrainBought,2 +BuysTrain,B&O,2,IPO,80 +BuysTrain,B&O,2,IPO,80 + +CompanyOperates,NYNH,Alice +LaysTileAt,NYNH,1,F20,SW +CompanyDoesNotPayDividend,NYNH +PRICE_MOVES_LOG,NYNH,100,G1,90,F1 +BuysTrain,NYNH,2,IPO,80 +BuysTrain,NYNH,2,IPO,80 +BuysTrain,NYNH,2,IPO,80 +All 2-trains are sold out, 3-trains now available +BuysTrain,NYNH,3,IPO,180 +FirstTrainBought,3 +StartOfPhase,3 +BuysPrivateFromFor,NYNH,SVNRR,Alice,40 +BuysPrivateFromFor,NYNH,M&H,Alice,220 + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,9,H14,W +CompanyDoesNotPayDividend,PRR +PRICE_MOVES_LOG,PRR,100,G1,90,F1 +BuysTrain,PRR,3,IPO,180 +BuysPrivateFromFor,PRR,C&StL,Bob,80 +BuysPrivateFromFor,PRR,C&A,Bob,320 + +EndOfOperatingRound,1.1 +ORWorthIncrease,Alice,1.1,95 +ORWorthIncrease,Bob,1.1,165 +ORWorthIncrease,Charlie,1.1,-245 +Has,B&O,640 +Has,NYNH,320 +Has,PRR,420 +Has,Alice,355 +Has,Bob,435 +Has,Charlie,55 +StartStockRound,2 +HasPriority,Alice +SELL_SHARE_LOG,Alice,10,NYNH,90 +PRICE_MOVES_LOG,NYNH,90,F1,82,F2 +START_COMPANY_LOG,Alice,C&O,67,134,2,20,BANK +SELL_SHARE_LOG,Bob,10,B&O,90 +PRICE_MOVES_LOG,B&O,90,F1,82,F2 +START_COMPANY_LOG,Bob,NYC,82,164,2,20,BANK +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +FloatsWithCash,C&O,670 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +FloatsWithCash,NYC,820 +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,2 +Has,B&O,640 +Has,C&O,670 +Has,NYC,820 +Has,NYNH,320 +Has,PRR,420 +Has,Alice,43 +Has,Bob,33 +Has,Charlie,55 +START_OR,2.1 +ReceivesFor,NYNH,5,SVNRR +ReceivesFor,PRR,10,C&StL +ReceivesFor,Charlie,15,D&H +ReceivesFor,NYNH,20,M&H +ReceivesFor,PRR,25,C&A + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,57,H16,W +LAYS_TOKEN_ON,PRR,H16,40 +CompanyRevenue,PRR,30 +CompanyPaysOutFull,PRR,30 +Payout,Bob,18,6,10 +PRICE_MOVES_LOG,PRR,90,F1,100,G1 + +CompanyOperates,NYC,Bob +LaysTileAt,NYC,57,E19,SW +CompanyDoesNotPayDividend,NYC +PRICE_MOVES_LOG,NYC,82,G3,76,F3 +BuysTrain,NYC,3,IPO,180 + +CompanyOperates,NYNH,Alice +LaysTileAtFor,NYNH,57,F22,W,80 +LAYS_TOKEN_ON,NYNH,F22,40 +CompanyRevenue,NYNH,130 +CompanyPaysOutFull,NYNH,130 +Payout,Alice,65,5,10 +Payout,Charlie,13,1,10 +Payout,NYNH,13,1,10 +PRICE_MOVES_LOG,NYNH,82,F2,90,G2 + +CompanyOperates,B&O,Charlie +LaysTileAt,B&O,14,J14,NW +CompanyRevenue,B&O,130 +CompanyPaysOutFull,B&O,130 +Payout,Charlie,78,6,10 +Payout,B&O,13,1,10 +PRICE_MOVES_LOG,B&O,82,F2,90,G2 +BuysTrain,B&O,3,IPO,180 +BuysPrivateFromFor,B&O,D&H,Charlie,140 + +CompanyOperates,C&O,Alice +LaysTileAt,C&O,8,G5,W +CompanyDoesNotPayDividend,C&O +PRICE_MOVES_LOG,C&O,67,G6,65,F6 +BuysTrain,C&O,3,IPO,180 +All 3-trains are sold out, 4-trains now available + +EndOfOperatingRound,2.1 +ORWorthIncrease,Alice,2.1,93 +ORWorthIncrease,Bob,2.1,42 +ORWorthIncrease,Charlie,2.1,232 +Has,B&O,333 +Has,C&O,490 +Has,NYC,640 +Has,NYNH,238 +Has,PRR,415 +Has,Alice,108 +Has,Bob,51 +Has,Charlie,301 +START_OR,2.2 +ReceivesFor,NYNH,5,SVNRR +ReceivesFor,PRR,10,C&StL +ReceivesFor,B&O,15,D&H +ReceivesFor,NYNH,20,M&H +ReceivesFor,PRR,25,C&A + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,59,H18,W +LaysTileAt,PRR,58,B20,SW +CompanyRevenue,PRR,60 +CompanyPaysOutFull,PRR,60 +Payout,Bob,36,6,10 +PRICE_MOVES_LOG,PRR,100,G1,112,H1 +BuysTrain,PRR,4,IPO,300 +FirstTrainBought,4 +StartOfPhase,4 + +CompanyOperates,NYNH,Alice +LaysTileAtFor,NYNH,54,G19,SW,80 +CompanyRevenue,NYNH,90 +CompanyPaysOutFull,NYNH,90 +Payout,Alice,45,5,10 +Payout,Charlie,9,1,10 +Payout,NYNH,9,1,10 +PRICE_MOVES_LOG,NYNH,90,G2,100,H2 +BuysTrain,NYNH,4,PRR,191 + +CompanyOperates,B&O,Charlie +LaysTileAt,B&O,53,I15,SW +CompanyRevenue,B&O,110 +CompanyPaysOutFull,B&O,110 +Payout,Charlie,66,6,10 +Payout,B&O,11,1,10 +PRICE_MOVES_LOG,B&O,90,G2,100,H2 +BuysTrain,B&O,4,IPO,300 + +CompanyOperates,NYC,Bob +LaysTileAt,NYC,8,F18,NE +CompanyRevenue,NYC,80 +CompanyPaysOutFull,NYC,80 +Payout,Bob,48,6,10 +PRICE_MOVES_LOG,NYC,76,F3,82,G3 +BuysTrain,NYC,4,IPO,300 + +CompanyOperates,C&O,Alice +LaysTileAt,C&O,8,G3,NW +CompanyRevenue,C&O,70 +CompanyWithholds,C&O,70 +PRICE_MOVES_LOG,C&O,65,F6,58,E6 + +EndOfOperatingRound,2.2 +ORWorthIncrease,Alice,2.2,53 +ORWorthIncrease,Bob,2.2,192 +ORWorthIncrease,Charlie,2.2,145 +Has,B&O,59 +Has,C&O,560 +Has,NYC,340 +Has,NYNH,1 +Has,PRR,341 +Has,Alice,153 +Has,Bob,135 +Has,Charlie,376 +StartStockRound,3 +HasPriority,Charlie +BUY_SHARE_LOG,Charlie,10,NYNH,Pool,100 +SELL_SHARES_LOG,Alice,5,10,50,NYNH,500 +PRICE_MOVES_LOG,NYNH,100,H2,69,H7 +IS_NOW_PRES_OF,Charlie,NYNH diff --git a/test/data/test/1830_SellHalfPresCert.report b/test/data/test/1830_SellHalfPresCert.report index 63f22fb..956167d 100644 --- a/test/data/test/1830_SellHalfPresCert.report +++ b/test/data/test/1830_SellHalfPresCert.report @@ -8,3 +8,260 @@ StartOfPhase,2 BankSizeIs,9600 StartOfInitialRound HasPriority,Alice +BuysItemFor,Alice,SVNRR,20 +BuysItemFor,Bob,C&StL,40 +BuysItemFor,Charlie,D&H,70 +BuysItemFor,Alice,M&H,110 +BuysItemFor,Bob,C&A,160 +ALSO_GETS,Bob,CERT_NAME,PRR,10 +BuysItemFor,Charlie,B&O,220 +ALSO_GETS,Charlie,PRES_CERT_NAME,B&O,20 +Has,Alice,670 +Has,Bob,600 +Has,Charlie,510 +StartStockRound,1 +HasPriority,Alice +START_COMPANY_LOG,Alice,NYNH,100,200,2,20,BANK +START_COMPANY_LOG,Bob,PRR,100,200,2,20,BANK +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +BUY_SHARE_LOG,Bob,10,PRR,IPO,100 +FloatsWithCash,PRR,1000 +BUY_SHARE_LOG,Charlie,10,B&O,IPO,100 +FloatsWithCash,B&O,1000 +BUY_SHARE_LOG,Alice,10,NYNH,IPO,100 +FloatsWithCash,NYNH,1000 +BUY_SHARE_LOG,Bob,10,B&O,IPO,100 +BUY_SHARE_LOG,Charlie,10,NYNH,IPO,100 +PASSES,Alice +PASSES,Bob +PASSES,Charlie + +END_SR,1 +Has,B&O,1000 +Has,NYNH,1000 +Has,PRR,1000 +Has,Alice,70 +Has,Bob,0 +Has,Charlie,10 +START_OR,1.1 +ReceivesFor,Alice,5,SVNRR +ReceivesFor,Bob,10,C&StL +ReceivesFor,Charlie,15,D&H +ReceivesFor,Alice,20,M&H +ReceivesFor,Bob,25,C&A +ReceivesFor,Charlie,30,B&O + +CompanyOperates,B&O,Charlie +LaysTileAtFor,B&O,57,J14,SW,80 +LAYS_TOKEN_ON,B&O,J14,40 +CompanyDoesNotPayDividend,B&O +PRICE_MOVES_LOG,B&O,100,G1,90,F1 +BuysTrain,B&O,2,IPO,80 +PrivateCloses,B&O +FirstTrainBought,2 +BuysTrain,B&O,2,IPO,80 +BuysTrain,B&O,2,IPO,80 + +CompanyOperates,NYNH,Alice +LaysTileAt,NYNH,1,F20,SW +CompanyDoesNotPayDividend,NYNH +PRICE_MOVES_LOG,NYNH,100,G1,90,F1 +BuysTrain,NYNH,2,IPO,80 +BuysTrain,NYNH,2,IPO,80 +BuysTrain,NYNH,2,IPO,80 +All 2-trains are sold out, 3-trains now available +BuysTrain,NYNH,3,IPO,180 +FirstTrainBought,3 +StartOfPhase,3 +BuysPrivateFromFor,NYNH,SVNRR,Alice,40 +BuysPrivateFromFor,NYNH,M&H,Alice,220 + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,9,H14,W +CompanyDoesNotPayDividend,PRR +PRICE_MOVES_LOG,PRR,100,G1,90,F1 +BuysTrain,PRR,3,IPO,180 +BuysPrivateFromFor,PRR,C&StL,Bob,80 +BuysPrivateFromFor,PRR,C&A,Bob,320 + +EndOfOperatingRound,1.1 +ORWorthIncrease,Alice,1.1,95 +ORWorthIncrease,Bob,1.1,165 +ORWorthIncrease,Charlie,1.1,-245 +Has,B&O,640 +Has,NYNH,320 +Has,PRR,420 +Has,Alice,355 +Has,Bob,435 +Has,Charlie,55 +StartStockRound,2 +HasPriority,Alice +SELL_SHARE_LOG,Alice,10,NYNH,90 +PRICE_MOVES_LOG,NYNH,90,F1,82,F2 +START_COMPANY_LOG,Alice,C&O,67,134,2,20,BANK +SELL_SHARE_LOG,Bob,10,B&O,90 +PRICE_MOVES_LOG,B&O,90,F1,82,F2 +START_COMPANY_LOG,Bob,NYC,82,164,2,20,BANK +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +PASSES,Charlie +BUY_SHARE_LOG,Alice,10,C&O,IPO,67 +FloatsWithCash,C&O,670 +BUY_SHARE_LOG,Bob,10,NYC,IPO,82 +FloatsWithCash,NYC,820 +PASSES,Charlie +PASSES,Alice +PASSES,Bob + +END_SR,2 +Has,B&O,640 +Has,C&O,670 +Has,NYC,820 +Has,NYNH,320 +Has,PRR,420 +Has,Alice,43 +Has,Bob,33 +Has,Charlie,55 +START_OR,2.1 +ReceivesFor,NYNH,5,SVNRR +ReceivesFor,PRR,10,C&StL +ReceivesFor,Charlie,15,D&H +ReceivesFor,NYNH,20,M&H +ReceivesFor,PRR,25,C&A + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,57,H16,W +LAYS_TOKEN_ON,PRR,H16,40 +CompanyRevenue,PRR,30 +CompanyPaysOutFull,PRR,30 +Payout,Bob,18,6,10 +PRICE_MOVES_LOG,PRR,90,F1,100,G1 + +CompanyOperates,NYC,Bob +LaysTileAt,NYC,57,E19,SW +CompanyDoesNotPayDividend,NYC +PRICE_MOVES_LOG,NYC,82,G3,76,F3 +BuysTrain,NYC,3,IPO,180 + +CompanyOperates,NYNH,Alice +LaysTileAtFor,NYNH,57,F22,W,80 +LAYS_TOKEN_ON,NYNH,F22,40 +CompanyRevenue,NYNH,130 +CompanyPaysOutFull,NYNH,130 +Payout,Alice,65,5,10 +Payout,Charlie,13,1,10 +Payout,NYNH,13,1,10 +PRICE_MOVES_LOG,NYNH,82,F2,90,G2 + +CompanyOperates,B&O,Charlie +LaysTileAt,B&O,14,J14,NW +CompanyRevenue,B&O,130 +CompanyPaysOutFull,B&O,130 +Payout,Charlie,78,6,10 +Payout,B&O,13,1,10 +PRICE_MOVES_LOG,B&O,82,F2,90,G2 +BuysTrain,B&O,3,IPO,180 +BuysPrivateFromFor,B&O,D&H,Charlie,140 + +CompanyOperates,C&O,Alice +LaysTileAt,C&O,8,G5,W +CompanyDoesNotPayDividend,C&O +PRICE_MOVES_LOG,C&O,67,G6,65,F6 +BuysTrain,C&O,3,IPO,180 +All 3-trains are sold out, 4-trains now available + +EndOfOperatingRound,2.1 +ORWorthIncrease,Alice,2.1,93 +ORWorthIncrease,Bob,2.1,42 +ORWorthIncrease,Charlie,2.1,232 +Has,B&O,333 +Has,C&O,490 +Has,NYC,640 +Has,NYNH,238 +Has,PRR,415 +Has,Alice,108 +Has,Bob,51 +Has,Charlie,301 +START_OR,2.2 +ReceivesFor,NYNH,5,SVNRR +ReceivesFor,PRR,10,C&StL +ReceivesFor,B&O,15,D&H +ReceivesFor,NYNH,20,M&H +ReceivesFor,PRR,25,C&A + +CompanyOperates,PRR,Bob +LaysTileAt,PRR,59,H18,W +LaysTileAt,PRR,58,B20,SW +CompanyRevenue,PRR,60 +CompanyPaysOutFull,PRR,60 +Payout,Bob,36,6,10 +PRICE_MOVES_LOG,PRR,100,G1,112,H1 +BuysTrain,PRR,4,IPO,300 +FirstTrainBought,4 +StartOfPhase,4 + +CompanyOperates,NYNH,Alice +LaysTileAtFor,NYNH,54,G19,SW,80 +CompanyRevenue,NYNH,90 +CompanyPaysOutFull,NYNH,90 +Payout,Alice,45,5,10 +Payout,Charlie,9,1,10 +Payout,NYNH,9,1,10 +PRICE_MOVES_LOG,NYNH,90,G2,100,H2 +BuysTrain,NYNH,4,PRR,191 + +CompanyOperates,B&O,Charlie +LaysTileAt,B&O,53,I15,SW +CompanyRevenue,B&O,110 +CompanyPaysOutFull,B&O,110 +Payout,Charlie,66,6,10 +Payout,B&O,11,1,10 +PRICE_MOVES_LOG,B&O,90,G2,100,H2 +BuysTrain,B&O,4,IPO,300 + +CompanyOperates,NYC,Bob +LaysTileAt,NYC,8,F18,NE +CompanyRevenue,NYC,80 +CompanyPaysOutFull,NYC,80 +Payout,Bob,48,6,10 +PRICE_MOVES_LOG,NYC,76,F3,82,G3 +BuysTrain,NYC,4,IPO,300 + +CompanyOperates,C&O,Alice +LaysTileAt,C&O,8,G3,NW +CompanyRevenue,C&O,70 +CompanyWithholds,C&O,70 +PRICE_MOVES_LOG,C&O,65,F6,58,E6 + +EndOfOperatingRound,2.2 +ORWorthIncrease,Alice,2.2,53 +ORWorthIncrease,Bob,2.2,192 +ORWorthIncrease,Charlie,2.2,145 +Has,B&O,59 +Has,C&O,560 +Has,NYC,340 +Has,NYNH,1 +Has,PRR,341 +Has,Alice,153 +Has,Bob,135 +Has,Charlie,376 +StartStockRound,3 +HasPriority,Charlie +BUY_SHARE_LOG,Charlie,10,NYNH,Pool,100 +SELL_SHARES_LOG,Alice,4,10,40,NYNH,400 +PRICE_MOVES_LOG,NYNH,100,H2,71,H6 +IS_NOW_PRES_OF,Charlie,NYNH diff --git a/test/data/test/1835_NatDoubleShare.report b/test/data/test/1835_NatDoubleShare.report index 43c8fac..a6a0a67 100644 --- a/test/data/test/1835_NatDoubleShare.report +++ b/test/data/test/1835_NatDoubleShare.report @@ -8,3 +8,877 @@ 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.report b/test/data/test/1835_NatSingleShare.report index 43c8fac..f0b1381 100644 --- a/test/data/test/1835_NatSingleShare.report +++ b/test/data/test/1835_NatSingleShare.report @@ -8,3 +8,69 @@ 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_SwapPresForDoubleShare.report b/test/data/test/1835_SwapPresForDoubleShare.report index 43c8fac..f0b1381 100644 --- a/test/data/test/1835_SwapPresForDoubleShare.report +++ b/test/data/test/1835_SwapPresForDoubleShare.report @@ -8,3 +8,69 @@ 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 |
From: Erik V. <ev...@us...> - 2011-11-22 23:15:24
|
data/1835/CompanyManager.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) New commits: commit 92e0d2c13973185cb85ede8b9a83250c1295a610 Author: Erik Vos <eri...@xs...> Date: Wed Nov 23 00:14:38 2011 +0100 Fix: BA home token is now laid in its first OR. This fixes the problem that, if the BA has floated but not yet operated, its home token is already on the map and must find a place when another player lays a green XX tile on the BA home hex. In this case, the wrong player was asked for that place. diff --git a/data/1835/CompanyManager.xml b/data/1835/CompanyManager.xml index dcc124d..7127047 100644 --- a/data/1835/CompanyManager.xml +++ b/data/1835/CompanyManager.xml @@ -170,7 +170,10 @@ </Company> <Company name="BA" longname="Badische Eisenbahn" type="Major" startspace="B4" available="no" tokens="2" fgColour="FFFFFF" bgColour="808000" alias="Bad"> - <Home hex="L6"/> + <Home hex="L6" city="0"/> + <BaseTokens> + <HomeBase lay="firstOR"/> + </BaseTokens> <Certificate type="President" shares="2"/> <Certificate shares="1" number="6"/> <Certificate shares="2" number="1"/> |
From: Erik V. <ev...@us...> - 2011-11-22 13:15:07
|
test/data/real/18EU_A.report | 4197 +++++++++++----------- test/data/real/18GA_A.report | 1532 ++------ test/data/test/1830_SellFullPresCert.rails |binary test/data/test/1830_SellFullPresCert.report | 10 test/data/test/1830_SellHalfPresCert.rails |binary test/data/test/1830_SellHalfPresCert.report | 10 test/data/test/1835_NatDoubleShare.rails |binary test/data/test/1835_NatDoubleShare.report | 10 test/data/test/1835_NatSingleShare.rails |binary test/data/test/1835_NatSingleShare.report | 10 test/data/test/1835_SwapPresForDoubleShare.rails |binary test/data/test/1835_SwapPresForDoubleShare.report | 10 12 files changed, 2564 insertions(+), 3215 deletions(-) New commits: commit 13bd6bb91c38ffa428902c7798859fb00f06f31c Author: Erik Vos <eri...@xs...> Date: Tue Nov 22 14:14:22 2011 +0100 Added five test cases and fixed two. The new test cases check recently fixed 1835 omissions with nationalisation and share selling. The fixed test cases 18GA_A and 18EU_A have failed for some time because of earlier fixes. diff --git a/test/data/real/18EU_A.report b/test/data/real/18EU_A.report index b43ad0b..de4b73f 100644 --- a/test/data/real/18EU_A.report +++ b/test/data/real/18EU_A.report @@ -1,2098 +1,2099 @@ -GameIs,18EU -PlayerIs,1,Chris -PlayerIs,2,Joakim -PlayerIs,3,Joshua -PlayerIs,4,Phil -PlayerIs,5,Ed -PlayerIs,6,Arne -PlayerCash,250 -BankHas,10500 -StartOfPhase,2 -BankSizeIs,10500 -StartOfInitialRound -HasPriority,Chris - -SelectForAuctioning,Chris,11 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,90 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,80 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,70 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -ITEM_PRICE_REDUCED,11,60 -PASSES,Chris -BuysItemFor,Joakim,11,60 -Floats,11 - -SelectForAuctioning,Joakim,8 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,90 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,80 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,70 -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,8,60 -BuysItemFor,Joakim,8,60 -Floats,8 - -SelectForAuctioning,Joshua,9 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,90 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,80 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,9,70 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -BuysItemFor,Chris,9,70 -Floats,9 - -SelectForAuctioning,Phil,14 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,14,90 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,14,80 -BuysItemFor,Phil,14,80 -Floats,14 - -SelectForAuctioning,Ed,1 -PASSES,Arne -PASSES,Chris -BID_ITEM,Joakim,100,1 -BID_ITEM,Joshua,105,1 -PASSES,Phil -PASSES,Ed -BID_ITEM,Arne,110,1 -PASSES,Chris -BID_ITEM,Joakim,115,1 -BID_ITEM,Joshua,120,1 -PASSES,Arne -BID_ITEM,Joakim,130,1 -PASSES,Joshua -BuysItemFor,Joakim,1,130 -Floats,1 - -SelectForAuctioning,Arne,7 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -PASSES,Ed -ITEM_PRICE_REDUCED,7,90 -PASSES,Arne -BuysItemFor,Chris,7,90 -Floats,7 - -SelectForAuctioning,Chris,2 -PASSES,Joakim -BID_ITEM,Joshua,100,2 -PASSES,Phil -PASSES,Ed -BID_ITEM,Arne,105,2 -PASSES,Chris -PASSES,Joakim -BID_ITEM,Joshua,110,2 -BID_ITEM,Arne,115,2 -BID_ITEM,Joshua,120,2 -BID_ITEM,Arne,125,2 -PASSES,Joshua -BuysItemFor,Arne,2,125 -Floats,2 - -SelectForAuctioning,Joakim,3 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,3,90 -PASSES,Joakim -BuysItemFor,Joshua,3,90 -Floats,3 - -SelectForAuctioning,Joshua,12 -PASSES,Phil -BID_ITEM,Ed,100,12 -BID_ITEM,Arne,105,12 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BID_ITEM,Ed,110,12 -BID_ITEM,Arne,115,12 -BID_ITEM,Ed,120,12 -BID_ITEM,Arne,125,12 -PASSES,Ed -BuysItemFor,Arne,12,125 -Floats,12 - -SelectForAuctioning,Phil,5 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,90 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,80 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,70 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -ITEM_PRICE_REDUCED,5,60 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -BuysItemFor,Joshua,5,60 -Floats,5 - -SelectForAuctioning,Ed,4 -BID_ITEM,Ed,100,4 -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BuysItemFor,Ed,4,100 -Floats,4 - -SelectForAuctioning,Arne,13 -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -BID_ITEM,Ed,100,13 -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -BID_ITEM,Phil,110,13 -BID_ITEM,Ed,125,13 -PASSES,Phil -BuysItemFor,Ed,13,125 -Floats,13 - -SelectForAuctioning,Chris,15 -PASSES,Joakim -BID_ITEM,Joshua,100,15 -BID_ITEM,Phil,105,15 -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -PASSES,Joshua -BuysItemFor,Phil,15,105 -Floats,15 - -SelectForAuctioning,Joakim,10 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -ITEM_PRICE_REDUCED,10,90 -PASSES,Joakim -BuysItemFor,Joshua,10,90 -Floats,10 - -SelectForAuctioning,Joshua,6 -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,90 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,80 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim -ITEM_PRICE_REDUCED,6,70 -PASSES,Joshua -PASSES,Phil -PASSES,Ed -PASSES,Arne -BuysItemFor,Chris,6,70 -All 2-trains are sold out, 3-trains now available -Floats,6 -Has,1,0 -Has,2,0 -Has,3,0 -Has,4,0 -Has,5,0 -Has,6,0 -Has,7,0 -Has,8,0 -Has,9,0 -Has,10,0 -Has,11,0 -Has,12,0 -Has,13,0 -Has,14,0 -Has,15,0 -Has,Chris,20 -Has,Joakim,0 -Has,Joshua,10 -Has,Phil,65 -Has,Ed,25 -Has,Arne,0 -START_OR,0.1 - -CompanyOperates,1,Joakim -LaysTileAt,1,8,I2,SW -LaysTileAt,1,58,G2,S -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -LaysTileAt,2,201,H3,N -LaysTileAt,2,58,F3,NE -CompanyRevenue,2,40 -CompanySplits,2,40 -2 receives 20 -Payout,Arne,20,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,8,K2,S -LaysTileAt,3,58,M2,N -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,202,G10,NW -LaysTileAt,4,4,H9,SW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,201,S8,SW -LaysTileAt,5,8,U8,SW -CompanyRevenue,5,60 -CompanySplits,5,60 -5 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,6,Chris -LaysTileAt,6,58,L11,S -LaysTileAt,6,57,K10,NW -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,9,F9,SW -LaysTileAt,7,58,G8,NW -CompanyRevenue,7,40 -CompanySplits,7,40 -7 receives 20 -Payout,Chris,20,1,100 - -CompanyOperates,8,Joakim -LaysTileAt,8,202,P13,NW -LaysTileAt,8,9,Q12,SW -CompanyRevenue,8,60 -CompanySplits,8,60 -8 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,9,Chris -LaysTileAt,9,58,D11,SE -LaysTileAt,9,4,E12,NW -CompanyRevenue,9,50 -CompanySplits,9,50 -9 receives 25 -Payout,Chris,25,1,100 - -CompanyOperates,10,Joshua -LaysTileAt,10,201,R5,S -LaysTileAt,10,57,T5,S -CompanyRevenue,10,60 -CompanySplits,10,60 -10 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,11,Joakim -LaysTileAt,11,7,Q10,NE -LaysTileAt,11,8,R11,NW -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -LaysTileAt,12,202,C4,NW -LaysTileAt,12,3,D3,NE -CompanyRevenue,12,40 -CompanySplits,12,40 -12 receives 20 -Payout,Arne,20,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,201,L7,N -LaysTileAt,13,58,J7,S -CompanyRevenue,13,40 -CompanySplits,13,40 -13 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,14,Phil -LaysTileAt,14,201,M4,S -LaysTileAt,14,58,O4,SW -CompanyRevenue,14,40 -CompanySplits,14,40 -14 receives 20 -Payout,Phil,20,1,100 - -CompanyOperates,15,Phil -LaysTileAt,15,202,Q2,SW -LaysTileAt,15,4,P3,SW -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -EndOfOperatingRound,0.1 -ORWorthIncrease,Chris,0.1,75 -ORWorthIncrease,Joakim,0.1,105 -ORWorthIncrease,Joshua,0.1,85 -ORWorthIncrease,Phil,0.1,60 -ORWorthIncrease,Ed,0.1,40 -ORWorthIncrease,Arne,0.1,40 -Has,1,45 -Has,2,20 -Has,3,25 -Has,4,20 -Has,5,30 -Has,6,30 -Has,7,20 -Has,8,30 -Has,9,25 -Has,10,30 -Has,11,30 -Has,12,20 -Has,13,20 -Has,14,20 -Has,15,40 -Has,Chris,95 -Has,Joakim,105 -Has,Joshua,95 -Has,Phil,125 -Has,Ed,65 -Has,Arne,40 -START_OR,0.2 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -LaysTileAt,2,3,E4,SW -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,7,N3,NW -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,8,I8,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,4,T7,SW -CompanyRevenue,5,70 -CompanySplits,5,70 -5 receives 35 -Payout,Joshua,35,1,100 - -CompanyOperates,6,Chris -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,4,F7,NW -CompanyRevenue,7,50 -CompanySplits,7,50 -7 receives 25 -Payout,Chris,25,1,100 - -CompanyOperates,8,Joakim -CompanyRevenue,8,60 -CompanySplits,8,60 -8 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,9,Chris -LaysTileAt,9,8,F13,NW -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -LaysTileAt,10,8,S6,S -CompanyRevenue,10,60 -CompanySplits,10,60 -10 receives 30 -Payout,Joshua,30,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -LaysTileAt,12,9,D5,NW -CompanyRevenue,12,90 -CompanySplits,12,90 -12 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,57,I6,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -CompanyRevenue,14,80 -CompanySplits,14,80 -14 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,15,Phil -LaysTileAt,15,57,S2,S -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -EndOfOperatingRound,0.2 -ORWorthIncrease,Chris,0.2,90 -ORWorthIncrease,Joakim,0.2,105 -ORWorthIncrease,Joshua,0.2,90 -ORWorthIncrease,Phil,0.2,80 -ORWorthIncrease,Ed,0.2,50 -ORWorthIncrease,Arne,0.2,90 -Has,1,90 -Has,2,65 -Has,3,50 -Has,4,40 -Has,5,65 -Has,6,60 -Has,7,45 -Has,8,60 -Has,9,60 -Has,10,60 -Has,11,60 -Has,12,65 -Has,13,50 -Has,14,60 -Has,15,80 -Has,Chris,185 -Has,Joakim,210 -Has,Joshua,185 -Has,Phil,205 -Has,Ed,115 -Has,Arne,130 -StartStockRound,1 -HasPriority,Chris -Autopasses,Chris -START_COMPANY_LOG,Joakim,KKÃB,70,140,2,20,KKÃB -MERGE_MINOR_LOG,Joakim,8,KKÃB,60,1 -GetShareForMinor,Joakim,10,KKÃB,IPO,8 -SharesPutInTreasury,70,KKÃB -PaysForTokens,KKÃB,100,5 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Ed,10,KKÃB,KKÃB,70 -Floats,KKÃB -BUY_SHARE_LOG,Arne,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Chris,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Joakim,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Joshua,10,KKÃB,KKÃB,70 -BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 -Autopasses,Ed -Autopasses,Arne -Autopasses,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil - -END_SR,1 -PRICE_MOVES_LOG,KKÃB,70,C5,75,C4 -SoldOut,KKÃB,70,C5,75,C4 -Has,1,90 -Has,2,65 -Has,3,50 -Has,4,40 -Has,5,65 -Has,6,60 -Has,7,45 -Has,9,60 -Has,10,60 -Has,11,60 -Has,12,65 -Has,13,50 -Has,14,60 -Has,15,80 -Has,KKÃB,590 -Has,Chris,115 -Has,Joakim,0 -Has,Joshua,115 -Has,Phil,65 -Has,Ed,45 -Has,Arne,60 -START_OR,1.1 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 - -CompanyOperates,2,Arne -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 - -CompanyOperates,3,Joshua -LaysTileAt,3,8,L3,NE -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,9,H7,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -LaysTileAt,5,3,U6,N -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -LaysTileAtFor,6,9,J9,NW,60 -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -LaysTileAt,7,9,E6,NW -CompanyRevenue,7,80 -CompanySplits,7,80 -7 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,9,Chris -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -CompanyRevenue,12,110 -CompanySplits,12,110 -12 receives 55 -Payout,Arne,55,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,9,H5,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -LaysTileAtFor,14,3,N5,NW,60 -CompanyRevenue,14,90 -CompanySplits,14,90 -14 receives 45 -Payout,Phil,45,1,100 - -CompanyOperates,15,Phil -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,KKÃB,Joakim -CompanyRevenue,KKÃB,60 -CompanyPaysOutFull,KKÃB,60 -Payout,Joakim,24,4,10 -Payout,Phil,12,2,10 -Payout,Chris,6,1,10 -Payout,Joshua,6,1,10 -Payout,Arne,6,1,10 -Payout,Ed,6,1,10 -BuysTrain,KKÃB,3,IPO,200 -FirstTrainBought,3 -StartOfPhase,3 -BuysTrain,KKÃB,P,Pool,100 - -EndOfOperatingRound,1.1 -ORWorthIncrease,Chris,1.1,111 -ORWorthIncrease,Joakim,1.1,99 -ORWorthIncrease,Joshua,1.1,111 -ORWorthIncrease,Phil,1.1,97 -ORWorthIncrease,Ed,1.1,56 -ORWorthIncrease,Arne,1.1,106 -Has,1,135 -Has,2,110 -Has,3,75 -Has,4,60 -Has,5,105 -Has,6,30 -Has,7,85 -Has,9,95 -Has,10,100 -Has,11,90 -Has,12,120 -Has,13,80 -Has,14,45 -Has,15,120 -Has,KKÃB,290 -Has,Chris,226 -Has,Joakim,99 -Has,Joshua,226 -Has,Phil,162 -Has,Ed,101 -Has,Arne,166 -START_OR,1.2 - -CompanyOperates,1,Joakim -CompanyRevenue,1,90 -CompanySplits,1,90 -1 receives 45 -Payout,Joakim,45,1,100 -BuysTrain,1,P,Pool,100 - -CompanyOperates,2,Arne -CompanyRevenue,2,90 -CompanySplits,2,90 -2 receives 45 -Payout,Arne,45,1,100 -BuysTrain,2,P,Pool,100 - -CompanyOperates,3,Joshua -LaysTileAtFor,3,9,K4,SW,60 -CompanyRevenue,3,50 -CompanySplits,3,50 -3 receives 25 -Payout,Joshua,25,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,9,G6,NW -CompanyRevenue,4,40 -CompanySplits,4,40 -4 receives 20 -Payout,Ed,20,1,100 - -CompanyOperates,5,Joshua -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -CompanyRevenue,6,60 -CompanySplits,6,60 -6 receives 30 -Payout,Chris,30,1,100 - -CompanyOperates,7,Chris -CompanyRevenue,7,80 -CompanySplits,7,80 -7 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,9,Chris -CompanyRevenue,9,70 -CompanySplits,9,70 -9 receives 35 -Payout,Chris,35,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,60 -CompanySplits,11,60 -11 receives 30 -Payout,Joakim,30,1,100 - -CompanyOperates,12,Arne -CompanyRevenue,12,110 -CompanySplits,12,110 -12 receives 55 -Payout,Arne,55,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,57,G4,NW -CompanyRevenue,13,60 -CompanySplits,13,60 -13 receives 30 -Payout,Ed,30,1,100 - -CompanyOperates,14,Phil -LaysTileAt,14,58,L5,NE -CompanyRevenue,14,100 -CompanySplits,14,100 -14 receives 50 -Payout,Phil,50,1,100 - -CompanyOperates,15,Phil -CompanyRevenue,15,80 -CompanySplits,15,80 -15 receives 40 -Payout,Phil,40,1,100 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,581,N11,NE -CompanyRevenue,KKÃB,190 -CompanyPaysOutFull,KKÃB,190 -Payout,Joakim,76,4,10 -Payout,Chris,19,1,10 -Payout,Joshua,19,1,10 -Payout,Phil,38,2,10 -Payout,Arne,19,1,10 -Payout,Ed,19,1,10 -PRICE_MOVES_LOG,KKÃB,75,C4,82,D4 - -EndOfOperatingRound,1.2 -ORWorthIncrease,Chris,1.2,131 -ORWorthIncrease,Joakim,1.2,179 -ORWorthIncrease,Joshua,1.2,131 -ORWorthIncrease,Phil,1.2,142 -ORWorthIncrease,Ed,1.2,76 -ORWorthIncrease,Arne,1.2,126 -Has,1,80 -Has,2,55 -Has,3,40 -Has,4,80 -Has,5,145 -Has,6,60 -Has,7,125 -Has,9,130 -Has,10,140 -Has,11,120 -Has,12,175 -Has,13,110 -Has,14,95 -Has,15,160 -Has,KKÃB,290 -Has,Chris,350 -Has,Joakim,250 -Has,Joshua,350 -Has,Phil,290 -Has,Ed,170 -Has,Arne,285 -StartStockRound,2 -HasPriority,Ed -PASSES,Ed -SELL_SHARE_LOG,Arne,10,KKÃB,82 -PRICE_MOVES_LOG,KKÃB,82,D4,75,D5 -START_COMPANY_LOG,Arne,SNCF,100,200,2,20,SNCF -MERGE_MINOR_LOG,Arne,2,SNCF,55,2 -GetShareForMinor,Arne,10,SNCF,IPO,2 -SharesPutInTreasury,70,SNCF -PaysForTokens,SNCF,100,5 -SELL_SHARE_LOG,Chris,10,KKÃB,75 -PRICE_MOVES_LOG,KKÃB,75,D5,70,D6 -START_COMPANY_LOG,Chris,DR,100,200,2,20,DR -MERGE_MINOR_LOG,Chris,7,DR,125,1 -GetShareForMinor,Chris,10,DR,IPO,7 -SharesPutInTreasury,70,DR -PaysForTokens,DR,100,5 -BUY_SHARE_LOG,Joakim,10,SNCF,SNCF,100 -START_COMPANY_LOG,Joshua,NS,82,164,2,20,NS -MERGE_MINOR_LOG,Joshua,3,NS,40,1 -GetShareForMinor,Joshua,10,NS,IPO,3 -SharesPutInTreasury,70,NS -PaysForTokens,NS,100,5 -START_COMPANY_LOG,Phil,KBS,90,180,2,20,KBS -MERGE_MINOR_LOG,Phil,15,KBS,160,1 -GetShareForMinor,Phil,10,KBS,IPO,15 -SharesPutInTreasury,70,KBS -PaysForTokens,KBS,100,5 -BUY_SHARE_LOG,Ed,10,KKÃB,Pool,70 -MERGE_MINOR_LOG,Arne,12,SNCF,175,1 -GetShareForMinor,Arne,10,SNCF,SNCF,12 -ExchangesBaseToken,SNCF,12,C4 -MinorCloses,12 -Floats,SNCF -MERGE_MINOR_LOG,Chris,9,DR,130,1 -GetShareForMinor,Chris,10,DR,DR,9 -ExchangesBaseToken,DR,9,E10 -MinorCloses,9 -BUY_SHARE_LOG,Joakim,10,KKÃB,Pool,70 -BUY_SHARE_LOG,Joshua,10,NS,NS,82 -BUY_SHARE_LOG,Phil,10,KBS,KBS,90 -BUY_SHARE_LOG,Ed,10,SNCF,SNCF,100 -BUY_SHARE_LOG,Arne,10,SNCF,SNCF,100 -BUY_SHARE_LOG,Chris,10,DR,DR,100 -Floats,DR -PASSES,Joakim -BUY_SHARE_LOG,Joshua,10,NS,NS,82 -Floats,NS -MERGE_MINOR_LOG,Phil,14,KBS,95,1 -GetShareForMinor,Phil,10,KBS,KBS,14 -ExchangesBaseToken,KBS,14,M4 -MinorCloses,14 -Floats,KBS -Autopasses,Ed -Autopasses,Arne -BUY_SHARE_LOG,Chris,10,DR,DR,100 -PASSES,Joakim -Autopasses,Joshua -Autopasses,Phil -Autopasses,Ed -Autopasses,Arne -Autopasses,Chris - -END_SR,2 -PRICE_MOVES_LOG,KKÃB,70,D6,75,D5 -SoldOut,KKÃB,70,D6,75,D5 -Has,1,80 -Has,4,80 -Has,5,145 -Has,6,60 -Has,10,140 -Has,11,120 -Has,13,110 -Has,NS,268 -Has,KBS,425 -Has,KKÃB,290 -Has,SNCF,630 -Has,DR,555 -Has,Chris,25 -Has,Joakim,80 -Has,Joshua,22 -Has,Phil,20 -Has,Ed,0 -Has,Arne,67 -START_OR,2.1 - -CompanyOperates,1,Joakim -CompanyRevenue,1,130 -CompanySplits,1,130 -1 receives 65 -Payout,Joakim,65,1,100 - -CompanyOperates,4,Ed -LaysTileAt,4,57,F5,NW -CompanyRevenue,4,60 -CompanySplits,4,60 -4 receives 30 -Payout,Ed,30,1,100 -BuysTrain,4,P,Pool,100 - -CompanyOperates,5,Joshua -CompanyRevenue,5,80 -CompanySplits,5,80 -5 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,6,Chris -LaysTileAtFor,6,8,M10,SE,60 -CompanyRevenue,6,80 -CompanySplits,6,80 -6 receives 40 -Payout,Chris,40,1,100 - -CompanyOperates,10,Joshua -CompanyRevenue,10,80 -CompanySplits,10,80 -10 receives 40 -Payout,Joshua,40,1,100 - -CompanyOperates,11,Joakim -CompanyRevenue,11,80 -CompanySplits,11,80 -11 receives 40 -Payout,Joakim,40,1,100 - -CompanyOperates,13,Ed -LaysTileAt,13,58,K6,SE -CompanyRevenue,13,100 -CompanySplits,13,100 -13 receives 50 -Payout,Ed,50,1,100 -BuysTrain,13,P,Pool,100 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,141,G2,N -CompanyRevenue,SNCF,240 -CompanyPaysOutFull,SNCF,240 -Payout,Joakim,24,1,10 -Payout,Arne,120,5,10 -Payout,Ed,24,1,10 -Payout,SNCF,72,3,10 -PRICE_MOVES_LOG,SNCF,100,E3,110,F3 -BuysTrain,SNCF,3,IPO,200 - -CompanyOperates,DR,Chris -LaysTileAt,DR,581,E10,SE -CompanyRevenue,DR,190 -CompanyPaysOutFull,DR,190 -Payout,Chris,114,6,10 -Payout,DR,76,4,10 -PRICE_MOVES_LOG,DR,100,E3,110,F3 -BuysTrain,DR,3,IPO,200 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,576,M4,NW -CompanyRevenue,KBS,190 -CompanyPaysOutFull,KBS,190 -Payout,Phil,95,5,10 -Payout,KBS,95,5,10 -PRICE_MOVES_LOG,KBS,90,E4,100,F4 -BuysTrain,KBS,3,IPO,200 -BuysTrain,KBS,3,IPO,200 -All 3-trains are sold out, 4-trains now available - -CompanyOperates,NS,Joshua -LaysTileAt,NS,9,J5,SW -CompanyRevenue,NS,50 -CompanySplits,NS,50 -NS receives 20 -Payout,Joshua,15,5,10 -Payout,NS,15,5,10 -BuysTrain,NS,4,IPO,300 -FirstTrainBought,4 -StartOfPhase,4 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,577,P13,SE -CompanyRevenue,KKÃB,170 -CompanySplits,KKÃB,170 -KKÃB receives 80 -Payout,Phil,18,2,10 -Payout,Joakim,45,5,10 -Payout,Joshua,9,1,10 -Payout,Ed,18,2,10 -PRICE_MOVES_LOG,KKÃB,75,D5,82,E5 -BuysTrain,KKÃB,4,IPO,300 - -EndOfOperatingRound,2.1 -ORWorthIncrease,Chris,2.1,214 -ORWorthIncrease,Joakim,2.1,219 -ORWorthIncrease,Joshua,2.1,111 -ORWorthIncrease,Phil,2.1,177 -ORWorthIncrease,Ed,2.1,146 -ORWorthIncrease,Arne,2.1,170 -Has,1,145 -Has,4,10 -Has,5,185 -Has,6,40 -Has,10,180 -Has,11,160 -Has,13,60 -Has,NS,3 -Has,KBS,120 -Has,KKÃB,70 -Has,SNCF,502 -Has,DR,431 -Has,Chris,179 -Has,Joakim,254 -Has,Joshua,126 -Has,Phil,133 -Has,Ed,122 -Has,Arne,187 -START_OR,2.2 - -CompanyOperates,1,Joakim -CompanyDoesNotPayDividend,1 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,5,Joshua -CompanyDoesNotPayDividend,5 - -CompanyOperates,6,Chris -CompanyDoesNotPayDividend,6 - -CompanyOperates,10,Joshua -CompanyDoesNotPayDividend,10 - -CompanyOperates,11,Joakim -CompanyDoesNotPayDividend,11 -BuysTrain,11,3,KKÃB,160 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,143,F3,SW -LAYS_FREE_TOKEN_ON,SNCF,G4 -CompanyRevenue,SNCF,220 -CompanyPaysOutFull,SNCF,220 -Payout,Joakim,22,1,10 -Payout,Arne,110,5,10 -Payout,Ed,22,1,10 -Payout,SNCF,66,3,10 -PRICE_MOVES_LOG,SNCF,110,F3,122,G3 -BuysTrain,SNCF,4,IPO,300 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,D9,NW -CompanyRevenue,DR,100 -CompanyPaysOutFull,DR,100 -Payout,Chris,60,6,10 -Payout,DR,40,4,10 -BuysTrain,DR,4,IPO,300 -All 4-trains are sold out, 5-trains now available - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,80,L3,S -CompanyRevenue,KBS,270 -CompanyPaysOutFull,KBS,270 -Payout,Phil,135,5,10 -Payout,KBS,135,5,10 -PRICE_MOVES_LOG,KBS,100,F4,110,G4 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,82,Q10,NW -CompanyRevenue,KKÃB,170 -CompanySplits,KKÃB,170 -KKÃB receives 80 -Payout,Phil,18,2,10 -Payout,Joakim,45,5,10 -Payout,Joshua,9,1,10 -Payout,Ed,18,2,10 -PRICE_MOVES_LOG,KKÃB,82,E5,90,F5 -BuysTrain,KKÃB,3,11,1 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,14,I6,SW -LAYS_FREE_TOKEN_ON,NS,I6 -CompanyRevenue,NS,120 -CompanyPaysOutFull,NS,120 -Payout,Joshua,60,5,10 -Payout,NS,60,5,10 -PRICE_MOVES_LOG,NS,82,D4,90,E4 - -EndOfOperatingRound,2.2 -ORWorthIncrease,Chris,2.2,60 -ORWorthIncrease,Joakim,2.2,119 -ORWorthIncrease,Joshua,2.2,117 -ORWorthIncrease,Phil,2.2,219 -ORWorthIncrease,Ed,2.2,68 -ORWorthIncrease,Arne,2.2,170 -Has,1,145 -Has,4,10 -Has,5,185 -Has,6,40 -Has,10,180 -Has,11,1 -Has,13,60 -Has,NS,63 -Has,KBS,255 -Has,KKÃB,309 -Has,SNCF,268 -Has,DR,171 -Has,Chris,239 -Has,Joakim,321 -Has,Joshua,195 -Has,Phil,286 -Has,Ed,162 -Has,Arne,297 -StartStockRound,3 -HasPriority,Joakim -SELL_SHARE_LOG,Joakim,10,SNCF,122 -PRICE_MOVES_LOG,SNCF,122,G3,110,G4 -START_COMPANY_LOG,Joakim,SNCB,100,200,2,20,SNCB -MERGE_MINOR_LOG,Joakim,1,SNCB,145,0 -GetShareForMinor,Joakim,10,SNCB,IPO,1 -SharesPutInTreasury,70,SNCB -PaysForTokens,SNCB,100,5 -SELL_SHARE_LOG,Joshua,10,KKÃB,90 -START_COMPANY_LOG,Joshua,KPEV,90,180,2,20,KPEV -MERGE_MINOR_LOG,Joshua,5,KPEV,185,0 -GetShareForMinor,Joshua,10,KPEV,IPO,5 -SharesPutInTreasury,70,KPEV -PaysForTokens,KPEV,100,5 -BUY_SHARE_LOG,Phil,10,KBS,KBS,110 -BUY_SHARE_LOG,Ed,10,KBS,KBS,110 -BUY_SHARE_LOG,Arne,10,KKÃB,Pool,90 -SELL_SHARE_LOG,Chris,10,DR,110 -PRICE_MOVES_LOG,DR,110,F3,100,F4 -START_COMPANY_LOG,Chris,FS,82,164,2,20,FS -MERGE_MINOR_LOG,Chris,6,FS,40,0 -GetShareForMinor,Chris,10,FS,IPO,6 -SharesPutInTreasury,70,FS -PaysForTokens,FS,100,5 -BUY_SHARE_LOG,Joakim,10,SNCB,SNCB,100 -BUY_SHARE_LOG,Joshua,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Phil,10,SNCF,Pool,110 -PASSES,Ed -BUY_SHARE_LOG,Arne,10,NS,NS,90 -BUY_SHARE_LOG,Chris,10,FS,FS,82 -BUY_SHARE_LOG,Joakim,10,SNCB,SNCB,100 -Floats,SNCB -MERGE_MINOR_LOG,Joshua,10,KPEV,180,0 -GetShareForMinor,Joshua,10,KPEV,KPEV,10 -ExchangesBaseToken,KPEV,10,R5 -MinorCloses,10 -Floats,KPEV -PASSES,Phil -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,SNCF,SNCF,110 -BUY_SHARE_LOG,Chris,10,FS,FS,82 -Floats,FS -MERGE_MINOR_LOG,Joakim,11,FS,1,0 -GetShareForMinor,Joakim,10,FS,FS,11 -ExchangesBaseToken,FS,11,N11 -MinorCloses,11 -Autopasses,Joshua -Autopasses,Phil -Autopasses,Ed -PASSES,Arne -PASSES,Chris -PASSES,Joakim - -END_SR,3 -PRICE_MOVES_LOG,KKÃB,90,F5,100,F4 -SoldOut,KKÃB,90,F5,100,F4 -Has,4,10 -Has,13,60 -Has,SNCB,445 -Has,NS,153 -Has,KBS,475 -Has,KPEV,535 -Has,KKÃB,309 -Has,FS,269 -Has,SNCF,378 -Has,DR,171 -Has,Chris,21 -Has,Joakim,43 -Has,Joshua,15 -Has,Phil,66 -Has,Ed,52 -Has,Arne,7 -START_OR,3.1 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,578,L7,NW -LAYS_FREE_TOKEN_ON,KBS,I6 -CompanyRevenue,KBS,290 -CompanyPaysOutFull,KBS,290 -Payout,Phil,174,6,10 -Payout,Ed,29,1,10 -Payout,KBS,87,3,10 -PRICE_MOVES_LOG,KBS,110,G4,122,H4 -BuysTrain,KBS,5,IPO,500 -FirstTrainBought,5 -StartOfPhase,5 -CompanyDiscardsTrain,KBS,3 -SELL_SHARES_LOG,KBS,3,10,30,KBS,366 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,584,E10,S -DuplicateTokenRemoved,DR,E10 -LAYS_FREE_TOKEN_ON,SNCF,E10 -CompanyRevenue,SNCF,360 -CompanyPaysOutFull,SNCF,360 -Payout,Phil,36,1,10 -Payout,Arne,216,6,10 -Payout,Ed,36,1,10 -Payout,SNCF,72,2,10 -PRICE_MOVES_LOG,SNCF,110,G4,122,H4 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,C8,NW -CompanyRevenue,DR,290 -CompanyPaysOutFull,DR,290 -Payout,Chris,145,5,10 -Payout,DR,116,4,10 -PRICE_MOVES_LOG,DR,100,F4,110,G4 -SELL_SHARES_LOG,DR,4,10,40,DR,440 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,584,N11,S -DuplicateTokenRemoved,FS,N11 -LAYS_FREE_TOKEN_ON,KKÃB,K10 -CompanyRevenue,KKÃB,240 -CompanySplits,KKÃB,240 -KKÃB receives 120 -Payout,Phil,24,2,10 -Payout,Arne,12,1,10 -Payout,Joakim,60,5,10 -Payout,Ed,24,2,10 -PRICE_MOVES_LOG,KKÃB,100,F4,110,G4 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,147,G2,N -CompanyDoesNotPayDividend,SNCB -PRICE_MOVES_LOG,SNCB,100,E3,90,D3 -BuysTrain,SNCB,4,KKÃB,172 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,14,G4,SW -LAYS_FREE_TOKEN_ON,NS,G4 -CompanyRevenue,NS,170 -CompanyPaysOutFull,NS,170 -Payout,Arne,17,1,10 -Payout,Joshua,85,5,10 -Payout,NS,68,4,10 -PRICE_MOVES_LOG,NS,90,E4,100,F4 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,577,S8,NE -CompanyDoesNotPayDividend,KPEV -PRICE_MOVES_LOG,KPEV,90,E4,82,D4 -BuysTrain,KPEV,5,IPO,500 - -CompanyOperates,FS,Chris -LaysTileAt,FS,14,K10,SW -LAYS_FREE_TOKEN_ON,FS,K10 -CompanyDoesNotPayDividend,FS -PRICE_MOVES_LOG,FS,82,D4,75,C4 -BuysTrain,FS,4,DR,1 - -EndOfOperatingRound,3.1 -ORWorthIncrease,Chris,3.1,160 -ORWorthIncrease,Joakim,3.1,53 -ORWorthIncrease,Joshua,3.1,95 -ORWorthIncrease,Phil,3.1,338 -ORWorthIncrease,Ed,3.1,133 -ORWorthIncrease,Arne,3.1,337 -Has,4,10 -Has,13,60 -Has,SNCB,273 -Has,NS,221 -Has,KBS,428 -Has,KPEV,35 -Has,KKÃB,601 -Has,FS,268 -Has,SNCF,450 -Has,DR,728 -Has,Chris,166 -Has,Joakim,103 -Has,Joshua,100 -Has,Phil,300 -Has,Ed,141 -Has,Arne,252 -START_OR,3.2 - -CompanyOperates,4,Ed -CompanyDoesNotPayDividend,4 - -CompanyOperates,13,Ed -CompanyDoesNotPayDividend,13 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,582,L7,S -CompanyRevenue,KBS,360 -CompanySplits,KBS,360 -KBS receives 180 -Payout,Phil,108,6,10 -Payout,Ed,18,1,10 -PRICE_MOVES_LOG,KBS,122,H4,135,H3 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,146,F3,NW -CompanyRevenue,SNCF,470 -CompanyPaysOutFull,SNCF,470 -Payout,Phil,47,1,10 -Payout,Arne,282,6,10 -Payout,Ed,47,1,10 -Payout,SNCF,94,2,10 -PRICE_MOVES_LOG,SNCF,122,H4,135,H3 -SELL_SHARES_LOG,SNCF,2,10,20,SNCF,270 -PRICE_MOVES_LOG,SNCF,135,H3,122,H4 - -CompanyOperates,DR,Chris -LaysTileAt,DR,579,G10,SW -CompanyRevenue,DR,180 -CompanyPaysOutFull,DR,180 -Payout,Chris,90,5,10 -PRICE_MOVES_LOG,DR,110,G4,122,H4 -BuysTrain,DR,5,IPO,500 -All 5-trains are sold out, 6-trains now available - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,83,I8,N -LAYS_FREE_TOKEN_ON,KKÃB,F5 -CompanyRevenue,KKÃB,160 -CompanyPaysOutFull,KKÃB,160 -Payout,Phil,32,2,10 -Payout,Arne,16,1,10 -Payout,Joakim,80,5,10 -Payout,Ed,32,2,10 -PRICE_MOVES_LOG,KKÃB,110,G4,122,H4 -BuysTrain,KKÃB,6,IPO,600 -FirstTrainBought,6 -StartOfPhase,6 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,611,I6,SE -CompanyRevenue,NS,270 -CompanySplits,NS,270 -NS receives 130 -Payout,Arne,14,1,10 -Payout,Joshua,70,5,10 -Payout,NS,56,4,10 -PRICE_MOVES_LOG,NS,100,F4,110,G4 -SELL_SHARES_LOG,NS,4,10,40,NS,440 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,82,I2,NE -CompanyRevenue,SNCB,130 -CompanyPaysOutFull,SNCB,130 -Payout,Joakim,65,5,10 -Payout,SNCB,65,5,10 -PRICE_MOVES_LOG,SNCB,90,D3,100,E3 -SELL_SHARES_LOG,SNCB,5,10,50,SNCB,500 -PRICE_MOVES_LOG,SNCB,100,E3,75,E6 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,57,R9,SW -LAYS_FREE_TOKEN_ON,KPEV,N11 -CompanyRevenue,KPEV,210 -CompanyPaysOutFull,KPEV,210 -Payout,Joshua,105,5,10 -Payout,KPEV,105,5,10 -PRICE_MOVES_LOG,KPEV,82,D4,90,E4 -BuysTrain,KPEV,P,Pool,100 - -CompanyOperates,FS,Chris -LaysTileAt,FS,582,G10,SW -LAYS_FREE_TOKEN_ON,FS,G10 -CompanyRevenue,FS,240 -CompanyPaysOutFull,FS,240 -Payout,Joakim,24,1,10 -Payout,Chris,120,5,10 -Payout,FS,96,4,10 -PRICE_MOVES_LOG,FS,75,C4,82,D4 -SELL_SHARES_LOG,FS,4,10,40,FS,328 -PRICE_MOVES_LOG,FS,82,D4,65,D7 - -EndOfOperatingRound,3.2 -ORWorthIncrease,Chris,3.2,220 -ORWorthIncrease,Joakim,3.2,144 -ORWorthIncrease,Joshua,3.2,265 -ORWorthIncrease,Phil,3.2,289 -ORWorthIncrease,Ed,3.2,134 -ORWorthIncrease,Arne,3.2,334 -Has,4,10 -Has,13,60 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,40 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,376 -Has,Joakim,272 -Has,Joshua,275 -Has,Phil,487 -Has,Ed,238 -Has,Arne,564 -StartFinalMinorExchangeRound -HasFirstTurn,Phil -MERGE_MINOR_LOG,Ed,4,FS,10,0 -GetShareForMinor,Ed,10,FS,Pool,4 -NoBaseTokenExchange,FS,4,G10 -MinorCloses,4 -MERGE_MINOR_LOG,Ed,13,KBS,60,0 -GetShareForMinor,Ed,10,KBS,Pool,13 -ExchangesBaseToken,KBS,13,L7 -MinorCloses,13 - -END_SR,3 -PRICE_MOVES_LOG,KKÃB,122,H4,135,H3 -SoldOut,KKÃB,122,H4,135,H3 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,40 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,376 -Has,Joakim,272 -Has,Joshua,275 -Has,Phil,487 -Has,Ed,238 -Has,Arne,564 -StartStockRound,4 -HasPriority,Joshua -BUY_SHARE_LOG,Joshua,10,KBS,Pool,135 -SELL_SHARE_LOG,Phil,10,SNCF,122 -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Ed,10,KBS,Pool,135 -BUY_SHARE_LOG,Arne,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Chris,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joakim,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joshua,10,DR,Pool,122 -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -BUY_SHARE_LOG,Ed,10,FS,Pool,65 -BUY_SHARE_LOG,Arne,10,FS,Pool,65 -BUY_SHARE_LOG,Chris,10,SNCF,Pool,122 -BUY_SHARE_LOG,Joakim,10,KPEV,KPEV,90 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,KPEV,KPEV,90 -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,SNCB,Pool,75 -BUY_SHARE_LOG,Chris,10,NS,Pool,110 -SELL_SHARE_LOG,Joakim,10,FS,65 -BUY_SHARE_LOG,Joakim,10,NS,Pool,110 -PASSES,Joshua -BUY_SHARE_LOG,Phil,10,DR,Pool,122 -Autopasses,Ed -BUY_SHARE_LOG,Arne,10,NS,Pool,110 -Autopasses,Chris -PASSES,Joakim -PASSES,Joshua -PASSES,Phil -Autopasses,Ed -PASSES,Arne - -END_SR,4 -PRICE_MOVES_LOG,KBS,135,H3,150,H2 -SoldOut,KBS,135,H3,150,H2 -PRICE_MOVES_LOG,KKÃB,135,H3,150,H2 -SoldOut,KKÃB,135,H3,150,H2 -PRICE_MOVES_LOG,SNCF,122,H4,135,H3 -SoldOut,SNCF,122,H4,135,H3 -PRICE_MOVES_LOG,KPEV,90,E4,100,E3 -SoldOut,KPEV,90,E4,100,E3 -Has,SNCB,838 -Has,NS,847 -Has,KBS,608 -Has,KPEV,490 -Has,KKÃB,1 -Has,FS,692 -Has,SNCF,814 -Has,DR,228 -Has,Chris,22 -Has,Joakim,15 -Has,Joshua,18 -Has,Phil,217 -Has,Ed,38 -Has,Arne,224 -START_OR,4.1 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,83,H7,S -LAYS_FREE_TOKEN_ON,KBS,E10 -CompanyRevenue,KBS,330 -CompanyPaysOutFull,KBS,330 -Payout,Phil,198,6,10 -Payout,Joshua,33,1,10 -Payout,Ed,99,3,10 -PRICE_MOVES_LOG,KBS,150,H2,165,I2 -BuysTrain,KBS,6,IPO,600 -All 6-trains are sold out, 8-trains now available - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,142,E4,S -LAYS_FREE_TOKEN_ON,KKÃB,G10 -CompanyRevenue,KKÃB,390 -CompanyPaysOutFull,KKÃB,390 -Payout,Phil,78,2,10 -Payout,Arne,39,1,10 -Payout,Joakim,195,5,10 -Payout,Ed,78,2,10 -PRICE_MOVES_LOG,KKÃB,150,H2,165,I2 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,14,F5,SW -LAYS_FREE_TOKEN_ON,SNCF,F5 -CompanyRevenue,SNCF,330 -CompanySplits,SNCF,330 -SNCF receives 160 -Payout,Joakim,17,1,10 -Payout,Arne,102,6,10 -Payout,Chris,34,2,10 -Payout,Ed,17,1,10 -PRICE_MOVES_LOG,SNCF,135,H3,150,I3 -BuysTrain,SNCF,8,IPO,800 -FirstTrainBought,8 -StartOfPhase,8 -BuysTrain,SNCF,P,Pool,100 - -CompanyOperates,DR,Chris -LaysTileAt,DR,4,C6,SW -CompanyRevenue,DR,190 -CompanyPaysOutFull,DR,190 -Payout,Phil,19,1,10 -Payout,Chris,95,5,10 -Payout,Joshua,19,1,10 -PRICE_MOVES_LOG,DR,122,H4,135,H3 -BuysTrain,DR,P,Pool,100 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,582,M4,NW -LAYS_FREE_TOKEN_ON,NS,M4 -CompanyDoesNotPayDividend,NS -PRICE_MOVES_LOG,NS,110,G4,100,F4 -BuysTrain,NS,8,IPO,800 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,582,P13,SE -LAYS_FREE_TOKEN_ON,KPEV,P13 -CompanyRevenue,KPEV,320 -CompanyPaysOutFull,KPEV,320 -Payout,Phil,96,3,10 -Payout,Arne,32,1,10 -Payout,Joakim,32,1,10 -Payout,Joshua,160,5,10 -PRICE_MOVES_LOG,KPEV,100,E3,110,F3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,580,J1,S -CompanyDoesNotPayDividend,SNCB -PRICE_MOVES_LOG,SNCB,75,E6,70,D6 -BuysTrain,SNCB,8,IPO,800 - -CompanyOperates,FS,Chris -LaysTileAt,FS,611,K10,NW -CompanyDoesNotPayDividend,FS -PRICE_MOVES_LOG,FS,65,D7,60,C7 -BuysTrain,FS,5,DR,690 -CompanyDiscardsTrain,DR,P - -EndOfOperatingRound,4.1 -ORWorthIncrease,Chris,4.1,189 -ORWorthIncrease,Joakim,4.1,309 -ORWorthIncrease,Joshua,4.1,240 -ORWorthIncrease,Phil,4.1,554 -ORWorthIncrease,Ed,4.1,274 -ORWorthIncrease,Arne,4.1,258 -Has,SNCB,38 -Has,NS,47 -Has,KBS,8 -Has,KPEV,490 -Has,KKÃB,1 -Has,FS,2 -Has,SNCF,74 -Has,DR,818 -Has,Chris,151 -Has,Joakim,259 -Has,Joshua,230 -Has,Phil,608 -Has,Ed,232 -Has,Arne,397 -START_OR,4.2 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,142,H9,NW -CompanyRevenue,KBS,520 -CompanyPaysOutFull,KBS,520 -Payout,Phil,312,6,10 -Payout,Joshua,52,1,10 -Payout,Ed,156,3,10 -PRICE_MOVES_LOG,KBS,165,I2,180,J2 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,583,J1,S -LAYS_FREE_TOKEN_ON,KKÃB,J1 -CompanyRevenue,KKÃB,450 -CompanySplits,KKÃB,450 -KKÃB receives 220 -Payout,Phil,46,2,10 -Payout,Arne,23,1,10 -Payout,Joakim,115,5,10 -Payout,Ed,46,2,10 -PRICE_MOVES_LOG,KKÃB,165,I2,180,J2 -BuysTrain,KKÃB,P,SNCF,100 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,513,I6,S -CompanyRevenue,SNCF,660 -CompanyPaysOutFull,SNCF,660 -Payout,Joakim,66,1,10 -Payout,Arne,396,6,10 -Payout,Ed,66,1,10 -Payout,Chris,132,2,10 -PRICE_MOVES_LOG,SNCF,150,I3,165,J3 - -CompanyOperates,DR,Chris -LaysTileAt,DR,83,F9,SE -LAYS_FREE_TOKEN_ON,DR,I6 -CompanyDoesNotPayDividend,DR -PRICE_MOVES_LOG,DR,135,H3,122,G3 -BuysTrain,DR,8,IPO,800 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,513,K10,S -LAYS_FREE_TOKEN_ON,KPEV,K10 -CompanyRevenue,KPEV,360 -CompanySplits,KPEV,360 -KPEV receives 180 -Payout,Phil,54,3,10 -Payout,Arne,18,1,10 -Payout,Joakim,18,1,10 -Payout,Joshua,90,5,10 -PRICE_MOVES_LOG,KPEV,110,F3,122,G3 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,578,H3,NW -CompanyRevenue,NS,430 -CompanyPaysOutFull,NS,430 -Payout,Arne,86,2,10 -Payout,Joakim,43,1,10 -Payout,Joshua,215,5,10 -Payout,Chris,43,1,10 -PRICE_MOVES_LOG,NS,100,F4,110,G4 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,582,H3,S -LAYS_FREE_TOKEN_ON,SNCB,H3 -CompanyRevenue,SNCB,220 -CompanySplits,SNCB,220 -SNCB receives 110 -Payout,Arne,11,1,10 -Payout,Joakim,55,5,10 -PRICE_MOVES_LOG,SNCB,70,D6,75,E6 -BuysTrain,SNCB,P,KKÃB,100 - -CompanyOperates,FS,Chris -LaysTileAt,FS,582,S8,NE -CompanyRevenue,FS,300 -CompanyPaysOutFull,FS,300 -Payout,Arne,30,1,10 -Payout,Ed,60,2,10 -Payout,Chris,150,5,10 -PRICE_MOVES_LOG,FS,60,C7,65,D7 - -EndOfOperatingRound,4.2 -ORWorthIncrease,Chris,4.2,325 -ORWorthIncrease,Joakim,4.2,434 -ORWorthIncrease,Joshua,4.2,469 -ORWorthIncrease,Phil,4.2,555 -ORWorthIncrease,Ed,4.2,428 -ORWorthIncrease,Arne,4.2,711 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,670 -Has,KKÃB,221 -Has,FS,2 -Has,SNCF,174 -Has,DR,18 -Has,Chris,476 -Has,Joakim,556 -Has,Joshua,587 -Has,Phil,1020 -Has,Ed,560 -Has,Arne,961 -StartStockRound,5 -HasPriority,Chris -SELL_SHARE_LOG,Chris,10,FS,65 -BUY_SHARE_LOG,Chris,10,NS,Pool,110 -PASSES,Joakim -BUY_SHARE_LOG,Joshua,10,DR,Pool,122 -PASSES,Phil -BUY_SHARE_LOG,Ed,10,DR,Pool,122 -PASSES,Arne -PASSES,Chris -SELL_SHARE_LOG,Joakim,10,KPEV,122 -PRICE_MOVES_LOG,KPEV,122,G3,110,G4 -BUY_SHARE_LOG,Joakim,10,DR,Pool,122 -SELL_SHARE_LOG,Joshua,10,DR,122 -PRICE_MOVES_LOG,DR,122,G3,110,G4 -BUY_SHARE_LOG,Joshua,10,KPEV,Pool,110 -PASSES,Phil -BUY_SHARE_LOG,Ed,10,DR,Pool,110 -Autopasses,Arne -PASSES,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil -BUY_SHARE_LOG,Ed,10,SNCB,Pool,75 -Autopasses,Arne -Autopasses,Chris -PASSES,Joakim -Autopasses,Joshua -PASSES,Phil -Autopasses,Ed - -END_SR,5 -PRICE_MOVES_LOG,KBS,180,J2,200,J1 -SoldOut,KBS,180,J2,200,J1 -PRICE_MOVES_LOG,KKÃB,180,J2,200,J1 -SoldOut,KKÃB,180,J2,200,J1 -PRICE_MOVES_LOG,SNCF,165,J3,180,J2 -SoldOut,SNCF,165,J3,180,J2 -PRICE_MOVES_LOG,NS,110,G4,122,G3 -SoldOut,NS,110,G4,122,G3 -PRICE_MOVES_LOG,KPEV,110,G4,122,G3 -SoldOut,KPEV,110,G4,122,G3 -PRICE_MOVES_LOG,DR,110,G4,122,G3 -SoldOut,DR,110,G4,122,G3 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,670 -Has,KKÃB,221 -Has,FS,2 -Has,SNCF,174 -Has,DR,18 -Has,Chris,431 -Has,Joakim,556 -Has,Joshua,477 -Has,Phil,1020 -Has,Ed,253 -Has,Arne,961 -START_OR,5.1 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,83,D5,N -CompanyRevenue,KBS,660 -CompanyPaysOutFull,KBS,660 -Payout,Phil,396,6,10 -Payout,Joshua,66,1,10 -Payout,Ed,198,3,10 -PRICE_MOVES_LOG,KBS,200,J1,220,K1 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,141,L11,N -CompanyRevenue,KKÃB,540 -CompanyPaysOutFull,KKÃB,540 -Payout,Phil,108,2,10 -Payout,Arne,54,1,10 -Payout,Joakim,270,5,10 -Payout,Ed,108,2,10 -PRICE_MOVES_LOG,KKÃB,200,J1,220,K1 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,611,G4,NW -CompanyRevenue,SNCF,670 -CompanyPaysOutFull,SNCF,670 -Payout,Arne,402,6,10 -Payout,Joakim,67,1,10 -Payout,Ed,67,1,10 -Payout,Chris,134,2,10 -PRICE_MOVES_LOG,SNCF,180,J2,200,K2 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,8,L1,N -CompanyRevenue,NS,440 -CompanyPaysOutFull,NS,440 -Payout,Arne,88,2,10 -Payout,Joakim,44,1,10 -Payout,Joshua,220,5,10 -Payout,Chris,88,2,10 -PRICE_MOVES_LOG,NS,122,G3,135,H3 - -CompanyOperates,KPEV,Joshua -LaysTileAtFor,KPEV,4,O12,NW,60 -CompanyRevenue,KPEV,480 -CompanySplits,KPEV,480 -KPEV receives 240 -Payout,Phil,72,3,10 -Payout,Arne,24,1,10 -Payout,Joshua,144,6,10 -PRICE_MOVES_LOG,KPEV,122,G3,135,H3 -BuysTrain,KPEV,8,IPO,800 - -CompanyOperates,DR,Chris -LaysTileAt,DR,513,G4,S -LAYS_FREE_TOKEN_ON,DR,G4 -CompanyRevenue,DR,520 -CompanyPaysOutFull,DR,520 -Payout,Phil,52,1,10 -Payout,Joakim,52,1,10 -Payout,Joshua,52,1,10 -Payout,Ed,104,2,10 -Payout,Chris,260,5,10 -PRICE_MOVES_LOG,DR,122,G3,135,H3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,9,H1,S -CompanyRevenue,SNCB,380 -CompanyPaysOutFull,SNCB,380 -Payout,Arne,38,1,10 -Payout,Joakim,190,5,10 -Payout,Ed,38,1,10 -PRICE_MOVES_LOG,SNCB,75,E6,82,E5 - -CompanyOperates,FS,Chris -LaysTileAt,FS,145,L11,S -CompanyRevenue,FS,350 -CompanyPaysOutFull,FS,350 -Payout,Arne,35,1,10 -Payout,Ed,70,2,10 -Payout,Chris,140,4,10 -PRICE_MOVES_LOG,FS,65,D7,70,D6 - -EndOfOperatingRound,5.1 -ORWorthIncrease,Chris,5.1,773 -ORWorthIncrease,Joakim,5.1,804 -ORWorthIncrease,Joshua,5.1,658 -ORWorthIncrease,Phil,5.1,840 -ORWorthIncrease,Ed,5.1,748 -ORWorthIncrease,Arne,5.1,832 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,50 -Has,KKÃB,221 -Has,FS,2 -Has,SNCF,174 -Has,DR,18 -Has,Chris,1053 -Has,Joakim,1179 -Has,Joshua,959 -Has,Phil,1648 -Has,Ed,838 -Has,Arne,1602 -START_OR,5.2 - -CompanyOperates,KBS,Phil -LaysTileAt,KBS,576,Q2,S -CompanyRevenue,KBS,700 -CompanyPaysOutFull,KBS,700 -Payout,Phil,420,6,10 -Payout,Joshua,70,1,10 -Payout,Ed,210,3,10 -PRICE_MOVES_LOG,KBS,220,K1,245,L1 - -CompanyOperates,KKÃB,Joakim -LaysTileAt,KKÃB,578,C4,SE -CompanyRevenue,KKÃB,560 -CompanyPaysOutFull,KKÃB,560 -Payout,Phil,112,2,10 -Payout,Arne,56,1,10 -Payout,Joakim,280,5,10 -Payout,Ed,112,2,10 -PRICE_MOVES_LOG,KKÃB,220,K1,245,L1 - -CompanyOperates,SNCF,Arne -LaysTileAt,SNCF,611,F5,NW -CompanyRevenue,SNCF,710 -CompanyPaysOutFull,SNCF,710 -Payout,Arne,426,6,10 -Payout,Joakim,71,1,10 -Payout,Ed,71,1,10 -Payout,Chris,142,2,10 -PRICE_MOVES_LOG,SNCF,200,K2,220,L2 - -CompanyOperates,NS,Joshua -LaysTileAt,NS,513,F5,S -LAYS_FREE_TOKEN_ON,NS,F5 -CompanyRevenue,NS,590 -CompanyPaysOutFull,NS,590 -Payout,Arne,118,2,10 -Payout,Joakim,59,1,10 -Payout,Joshua,295,5,10 -Payout,Chris,118,2,10 -PRICE_MOVES_LOG,NS,135,H3,150,I3 - -CompanyOperates,KPEV,Joshua -LaysTileAt,KPEV,143,U6,S -CompanyRevenue,KPEV,690 -CompanyPaysOutFull,KPEV,690 -Payout,Phil,207,3,10 -Payout,Arne,69,1,10 -Payout,Joshua,414,6,10 -PRICE_MOVES_LOG,KPEV,135,H3,150,I3 - -CompanyOperates,DR,Chris -LaysTileAt,DR,9,F11,NW -CompanyRevenue,DR,520 -CompanyPaysOutFull,DR,520 -Payout,Phil,52,1,10 -Payout,Joshua,52,1,10 -Payout,Joakim,52,1,10 -Payout,Ed,104,2,10 -Payout,Chris,260,5,10 -PRICE_MOVES_LOG,DR,135,H3,150,I3 - -CompanyOperates,SNCB,Joakim -LaysTileAt,SNCB,582,C4,N -LAYS_FREE_TOKEN_ON,SNCB,C4 -CompanyRevenue,SNCB,540 -CompanyPaysOutFull,SNCB,540 -Payout,Arne,54,1,10 -Payout,Joakim,270,5,10 -Payout,Ed,54,1,10 -PRICE_MOVES_LOG,SNCB,82,E5,90,F5 - -CompanyOperates,FS,Chris -LaysTileAt,FS,15,R9,SW -LAYS_FREE_TOKEN_ON,FS,S8 -CompanyRevenue,FS,350 -CompanyPaysOutFull,FS,350 -Payout,Arne,35,1,10 -BankIsBrokenReportText -Payout,Ed,70,2,10 -Payout,Chris,140,4,10 -PRICE_MOVES_LOG,FS,70,D6,75,E6 - -EndOfOperatingRound,5.2 -ORWorthIncrease,Chris,5.2,825 -ORWorthIncrease,Joakim,5.2,947 -ORWorthIncrease,Joshua,5.2,1036 -ORWorthIncrease,Phil,5.2,1051 -ORWorthIncrease,Ed,5.2,814 -ORWorthIncrease,Arne,5.2,961 -Has,SNCB,48 -Has,NS,47 -Has,KBS,8 -Has,KPEV,50 -Has,KKÃB,221 -Has,FS,2 -Has,SNCF,174 -Has,DR,18 -Has,Chris,1713 -Has,Joakim,1911 -Has,Joshua,1790 -Has,Phil,2439 -Has,Ed,1459 -Has,Arne,2360 -GameOver -EoGWinnerPhil! -EoGFinalRanking : -1. 4999 Phil -2. 4540 Arne -3. 4106 Joakim -4. 3835 Joshua -5. 3503 Chris -6. 3444 Ed +GameIs,18EU +PlayerIs,1,Chris +PlayerIs,2,Joakim +PlayerIs,3,Joshua +PlayerIs,4,Phil +PlayerIs,5,Ed +PlayerIs,6,Arne +PlayerCash,250 +BankHas,10500 +StartOfPhase,2 +BankSizeIs,10500 +StartOfInitialRound +HasPriority,Chris + +SelectForAuctioning,Chris,11 +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +ITEM_PRICE_REDUCED,11,90 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +ITEM_PRICE_REDUCED,11,80 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +ITEM_PRICE_REDUCED,11,70 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +ITEM_PRICE_REDUCED,11,60 +PASSES,Chris +BuysItemFor,Joakim,11,60 +Floats,11 + +SelectForAuctioning,Joakim,8 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,8,90 +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,8,80 +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,8,70 +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,8,60 +BuysItemFor,Joakim,8,60 +Floats,8 + +SelectForAuctioning,Joshua,9 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,9,90 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,9,80 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,9,70 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +BuysItemFor,Chris,9,70 +Floats,9 + +SelectForAuctioning,Phil,14 +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,14,90 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,14,80 +BuysItemFor,Phil,14,80 +Floats,14 + +SelectForAuctioning,Ed,1 +PASSES,Arne +PASSES,Chris +BID_ITEM,Joakim,100,1 +BID_ITEM,Joshua,105,1 +PASSES,Phil +PASSES,Ed +BID_ITEM,Arne,110,1 +PASSES,Chris +BID_ITEM,Joakim,115,1 +BID_ITEM,Joshua,120,1 +PASSES,Arne +BID_ITEM,Joakim,130,1 +PASSES,Joshua +BuysItemFor,Joakim,1,130 +Floats,1 + +SelectForAuctioning,Arne,7 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +PASSES,Ed +ITEM_PRICE_REDUCED,7,90 +PASSES,Arne +BuysItemFor,Chris,7,90 +Floats,7 + +SelectForAuctioning,Chris,2 +PASSES,Joakim +BID_ITEM,Joshua,100,2 +PASSES,Phil +PASSES,Ed +BID_ITEM,Arne,105,2 +PASSES,Chris +PASSES,Joakim +BID_ITEM,Joshua,110,2 +BID_ITEM,Arne,115,2 +BID_ITEM,Joshua,120,2 +BID_ITEM,Arne,125,2 +PASSES,Joshua +BuysItemFor,Arne,2,125 +Floats,2 + +SelectForAuctioning,Joakim,3 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,3,90 +PASSES,Joakim +BuysItemFor,Joshua,3,90 +Floats,3 + +SelectForAuctioning,Joshua,12 +PASSES,Phil +BID_ITEM,Ed,100,12 +BID_ITEM,Arne,105,12 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +BID_ITEM,Ed,110,12 +BID_ITEM,Arne,115,12 +BID_ITEM,Ed,120,12 +BID_ITEM,Arne,125,12 +PASSES,Ed +BuysItemFor,Arne,12,125 +Floats,12 + +SelectForAuctioning,Phil,5 +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,5,90 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,5,80 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,5,70 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +ITEM_PRICE_REDUCED,5,60 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +BuysItemFor,Joshua,5,60 +Floats,5 + +SelectForAuctioning,Ed,4 +BID_ITEM,Ed,100,4 +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +BuysItemFor,Ed,4,100 +Floats,4 + +SelectForAuctioning,Arne,13 +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +PASSES,Phil +BID_ITEM,Ed,100,13 +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +BID_ITEM,Phil,110,13 +BID_ITEM,Ed,125,13 +PASSES,Phil +BuysItemFor,Ed,13,125 +Floats,13 + +SelectForAuctioning,Chris,15 +PASSES,Joakim +BID_ITEM,Joshua,100,15 +BID_ITEM,Phil,105,15 +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +PASSES,Joshua +BuysItemFor,Phil,15,105 +Floats,15 + +SelectForAuctioning,Joakim,10 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +ITEM_PRICE_REDUCED,10,90 +PASSES,Joakim +BuysItemFor,Joshua,10,90 +Floats,10 + +SelectForAuctioning,Joshua,6 +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,6,90 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,6,80 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +PASSES,Chris +PASSES,Joakim +ITEM_PRICE_REDUCED,6,70 +PASSES,Joshua +PASSES,Phil +PASSES,Ed +PASSES,Arne +BuysItemFor,Chris,6,70 +All 2-trains are sold out, 3-trains now available +Floats,6 +Has,1,0 +Has,2,0 +Has,3,0 +Has,4,0 +Has,5,0 +Has,6,0 +Has,7,0 +Has,8,0 +Has,9,0 +Has,10,0 +Has,11,0 +Has,12,0 +Has,13,0 +Has,14,0 +Has,15,0 +Has,Chris,20 +Has,Joakim,0 +Has,Joshua,10 +Has,Phil,65 +Has,Ed,25 +Has,Arne,0 +START_OR,0.1 + +CompanyOperates,1,Joakim +LaysTileAt,1,8,I2,SW +LaysTileAt,1,58,G2,S +CompanyRevenue,1,90 +CompanySplits,1,90 +1 receives 45 +Payout,Joakim,45,1,100 + +CompanyOperates,2,Arne +LaysTileAt,2,201,H3,N +LaysTileAt,2,58,F3,NE +CompanyRevenue,2,40 +CompanySplits,2,40 +2 receives 20 +Payout,Arne,20,1,100 + +CompanyOperates,3,Joshua +LaysTileAt,3,8,K2,S +LaysTileAt,3,58,M2,N +CompanyRevenue,3,50 +CompanySplits,3,50 +3 receives 25 +Payout,Joshua,25,1,100 + +CompanyOperates,4,Ed +LaysTileAt,4,202,G10,NW +LaysTileAt,4,4,H9,SW +CompanyRevenue,4,40 +CompanySplits,4,40 +4 receives 20 +Payout,Ed,20,1,100 + +CompanyOperates,5,Joshua +LaysTileAt,5,201,S8,SW +LaysTileAt,5,8,U8,SW +CompanyRevenue,5,60 +CompanySplits,5,60 +5 receives 30 +Payout,Joshua,30,1,100 + +CompanyOperates,6,Chris +LaysTileAt,6,58,L11,S +LaysTileAt,6,57,K10,NW +CompanyRevenue,6,60 +CompanySplits,6,60 +6 receives 30 +Payout,Chris,30,1,100 + +CompanyOperates,7,Chris +LaysTileAt,7,9,F9,SW +LaysTileAt,7,58,G8,NW +CompanyRevenue,7,40 +CompanySplits,7,40 +7 receives 20 +Payout,Chris,20,1,100 + +CompanyOperates,8,Joakim +LaysTileAt,8,202,P13,NW +LaysTileAt,8,9,Q12,SW +CompanyRevenue,8,60 +CompanySplits,8,60 +8 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,9,Chris +LaysTileAt,9,58,D11,SE +LaysTileAt,9,4,E12,NW +CompanyRevenue,9,50 +CompanySplits,9,50 +9 receives 25 +Payout,Chris,25,1,100 + +CompanyOperates,10,Joshua +LaysTileAt,10,201,R5,S +LaysTileAt,10,57,T5,S +CompanyRevenue,10,60 +CompanySplits,10,60 +10 receives 30 +Payout,Joshua,30,1,100 + +CompanyOperates,11,Joakim +LaysTileAt,11,7,Q10,NE +LaysTileAt,11,8,R11,NW +CompanyRevenue,11,60 +CompanySplits,11,60 +11 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,12,Arne +LaysTileAt,12,202,C4,NW +LaysTileAt,12,3,D3,NE +CompanyRevenue,12,40 +CompanySplits,12,40 +12 receives 20 +Payout,Arne,20,1,100 + +CompanyOperates,13,Ed +LaysTileAt,13,201,L7,N +LaysTileAt,13,58,J7,S +CompanyRevenue,13,40 +CompanySplits,13,40 +13 receives 20 +Payout,Ed,20,1,100 + +CompanyOperates,14,Phil +LaysTileAt,14,201,M4,S +LaysTileAt,14,58,O4,SW +CompanyRevenue,14,40 +CompanySplits,14,40 +14 receives 20 +Payout,Phil,20,1,100 + +CompanyOperates,15,Phil +LaysTileAt,15,202,Q2,SW +LaysTileAt,15,4,P3,SW +CompanyRevenue,15,80 +CompanySplits,15,80 +15 receives 40 +Payout,Phil,40,1,100 + +EndOfOperatingRound,0.1 +ORWorthIncrease,Chris,0.1,75 +ORWorthIncrease,Joakim,0.1,105 +ORWorthIncrease,Joshua,0.1,85 +ORWorthIncrease,Phil,0.1,60 +ORWorthIncrease,Ed,0.1,40 +ORWorthIncrease,Arne,0.1,40 +Has,1,45 +Has,2,20 +Has,3,25 +Has,4,20 +Has,5,30 +Has,6,30 +Has,7,20 +Has,8,30 +Has,9,25 +Has,10,30 +Has,11,30 +Has,12,20 +Has,13,20 +Has,14,20 +Has,15,40 +Has,Chris,95 +Has,Joakim,105 +Has,Joshua,95 +Has,Phil,125 +Has,Ed,65 +Has,Arne,40 +START_OR,0.2 + +CompanyOperates,1,Joakim +CompanyRevenue,1,90 +CompanySplits,1,90 +1 receives 45 +Payout,Joakim,45,1,100 + +CompanyOperates,2,Arne +LaysTileAt,2,3,E4,SW +CompanyRevenue,2,90 +CompanySplits,2,90 +2 receives 45 +Payout,Arne,45,1,100 + +CompanyOperates,3,Joshua +LaysTileAt,3,7,N3,NW +CompanyRevenue,3,50 +CompanySplits,3,50 +3 receives 25 +Payout,Joshua,25,1,100 + +CompanyOperates,4,Ed +LaysTileAt,4,8,I8,NW +CompanyRevenue,4,40 +CompanySplits,4,40 +4 receives 20 +Payout,Ed,20,1,100 + +CompanyOperates,5,Joshua +LaysTileAt,5,4,T7,SW +CompanyRevenue,5,70 +CompanySplits,5,70 +5 receives 35 +Payout,Joshua,35,1,100 + +CompanyOperates,6,Chris +CompanyRevenue,6,60 +CompanySplits,6,60 +6 receives 30 +Payout,Chris,30,1,100 + +CompanyOperates,7,Chris +LaysTileAt,7,4,F7,NW +CompanyRevenue,7,50 +CompanySplits,7,50 +7 receives 25 +Payout,Chris,25,1,100 + +CompanyOperates,8,Joakim +CompanyRevenue,8,60 +CompanySplits,8,60 +8 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,9,Chris +LaysTileAt,9,8,F13,NW +CompanyRevenue,9,70 +CompanySplits,9,70 +9 receives 35 +Payout,Chris,35,1,100 + +CompanyOperates,10,Joshua +LaysTileAt,10,8,S6,S +CompanyRevenue,10,60 +CompanySplits,10,60 +10 receives 30 +Payout,Joshua,30,1,100 + +CompanyOperates,11,Joakim +CompanyRevenue,11,60 +CompanySplits,11,60 +11 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,12,Arne +LaysTileAt,12,9,D5,NW +CompanyRevenue,12,90 +CompanySplits,12,90 +12 receives 45 +Payout,Arne,45,1,100 + +CompanyOperates,13,Ed +LaysTileAt,13,57,I6,NW +CompanyRevenue,13,60 +CompanySplits,13,60 +13 receives 30 +Payout,Ed,30,1,100 + +CompanyOperates,14,Phil +CompanyRevenue,14,80 +CompanySplits,14,80 +14 receives 40 +Payout,Phil,40,1,100 + +CompanyOperates,15,Phil +LaysTileAt,15,57,S2,S +CompanyRevenue,15,80 +CompanySplits,15,80 +15 receives 40 +Payout,Phil,40,1,100 + +EndOfOperatingRound,0.2 +ORWorthIncrease,Chris,0.2,90 +ORWorthIncrease,Joakim,0.2,105 +ORWorthIncrease,Joshua,0.2,90 +ORWorthIncrease,Phil,0.2,80 +ORWorthIncrease,Ed,0.2,50 +ORWorthIncrease,Arne,0.2,90 +Has,1,90 +Has,2,65 +Has,3,50 +Has,4,40 +Has,5,65 +Has,6,60 +Has,7,45 +Has,8,60 +Has,9,60 +Has,10,60 +Has,11,60 +Has,12,65 +Has,13,50 +Has,14,60 +Has,15,80 +Has,Chris,185 +Has,Joakim,210 +Has,Joshua,185 +Has,Phil,205 +Has,Ed,115 +Has,Arne,130 +StartStockRound,1 +HasPriority,Chris +Autopasses,Chris +START_COMPANY_LOG,Joakim,KKÃB,70,140,2,20,KKÃB +MERGE_MINOR_LOG,Joakim,8,KKÃB,60,1 +GetShareForMinor,Joakim,10,KKÃB,IPO,8 +SharesPutInTreasury,70,KKÃB +PaysForTokens,KKÃB,100,5 +PASSES,Joshua +BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 +BUY_SHARE_LOG,Ed,10,KKÃB,KKÃB,70 +Floats,KKÃB +BUY_SHARE_LOG,Arne,10,KKÃB,KKÃB,70 +BUY_SHARE_LOG,Chris,10,KKÃB,KKÃB,70 +BUY_SHARE_LOG,Joakim,10,KKÃB,KKÃB,70 +BUY_SHARE_LOG,Joshua,10,KKÃB,KKÃB,70 +BUY_SHARE_LOG,Phil,10,KKÃB,KKÃB,70 +Autopasses,Ed +Autopasses,Arne +Autopasses,Chris +PASSES,Joakim +Autopasses,Joshua +PASSES,Phil + +END_SR,1 +PRICE_MOVES_LOG,KKÃB,70,C5,75,C4 +SoldOut,KKÃB,70,C5,75,C4 +Has,1,90 +Has,2,65 +Has,3,50 +Has,4,40 +Has,5,65 +Has,6,60 +Has,7,45 +Has,9,60 +Has,10,60 +Has,11,60 +Has,12,65 +Has,13,50 +Has,14,60 +Has,15,80 +Has,KKÃB,590 +Has,Chris,115 +Has,Joakim,0 +Has,Joshua,115 +Has,Phil,65 +Has,Ed,45 +Has,Arne,60 +START_OR,1.1 + +CompanyOperates,1,Joakim +CompanyRevenue,1,90 +CompanySplits,1,90 +1 receives 45 +Payout,Joakim,45,1,100 + +CompanyOperates,2,Arne +CompanyRevenue,2,90 +CompanySplits,2,90 +2 receives 45 +Payout,Arne,45,1,100 + +CompanyOperates,3,Joshua +LaysTileAt,3,8,L3,NE +CompanyRevenue,3,50 +CompanySplits,3,50 +3 receives 25 +Payout,Joshua,25,1,100 + +CompanyOperates,4,Ed +LaysTileAt,4,9,H7,NW +CompanyRevenue,4,40 +CompanySplits,4,40 +4 receives 20 +Payout,Ed,20,1,100 + +CompanyOperates,5,Joshua +LaysTileAt,5,3,U6,N +CompanyRevenue,5,80 +CompanySplits,5,80 +5 receives 40 +Payout,Joshua,40,1,100 + +CompanyOperates,6,Chris +LaysTileAtFor,6,9,J9,NW,60 +CompanyRevenue,6,60 +CompanySplits,6,60 +6 receives 30 +Payout,Chris,30,1,100 + +CompanyOperates,7,Chris +LaysTileAt,7,9,E6,NW +CompanyRevenue,7,80 +CompanySplits,7,80 +7 receives 40 +Payout,Chris,40,1,100 + +CompanyOperates,9,Chris +CompanyRevenue,9,70 +CompanySplits,9,70 +9 receives 35 +Payout,Chris,35,1,100 + +CompanyOperates,10,Joshua +CompanyRevenue,10,80 +CompanySplits,10,80 +10 receives 40 +Payout,Joshua,40,1,100 + +CompanyOperates,11,Joakim +CompanyRevenue,11,60 +CompanySplits,11,60 +11 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,12,Arne +CompanyRevenue,12,110 +CompanySplits,12,110 +12 receives 55 +Payout,Arne,55,1,100 + +CompanyOperates,13,Ed +LaysTileAt,13,9,H5,NW +CompanyRevenue,13,60 +CompanySplits,13,60 +13 receives 30 +Payout,Ed,30,1,100 + +CompanyOperates,14,Phil +LaysTileAtFor,14,3,N5,NW,60 +CompanyRevenue,14,90 +CompanySplits,14,90 +14 receives 45 +Payout,Phil,45,1,100 + +CompanyOperates,15,Phil +CompanyRevenue,15,80 +CompanySplits,15,80 +15 receives 40 +Payout,Phil,40,1,100 + +CompanyOperates,KKÃB,Joakim +CompanyRevenue,KKÃB,60 +CompanyPaysOutFull,KKÃB,60 +Payout,Joakim,24,4,10 +Payout,Phil,12,2,10 +Payout,Chris,6,1,10 +Payout,Joshua,6,1,10 +Payout,Arne,6,1,10 +Payout,Ed,6,1,10 +BuysTrain,KKÃB,3,IPO,200 +FirstTrainBought,3 +StartOfPhase,3 +BuysTrain,KKÃB,P,Pool,100 + +EndOfOperatingRound,1.1 +ORWorthIncrease,Chris,1.1,111 +ORWorthIncrease,Joakim,1.1,99 +ORWorthIncrease,Joshua,1.1,111 +ORWorthIncrease,Phil,1.1,97 +ORWorthIncrease,Ed,1.1,56 +ORWorthIncrease,Arne,1.1,106 +Has,1,135 +Has,2,110 +Has,3,75 +Has,4,60 +Has,5,105 +Has,6,30 +Has,7,85 +Has,9,95 +Has,10,100 +Has,11,90 +Has,12,120 +Has,13,80 +Has,14,45 +Has,15,120 +Has,KKÃB,290 +Has,Chris,226 +Has,Joakim,99 +Has,Joshua,226 +Has,Phil,162 +Has,Ed,101 +Has,Arne,166 +START_OR,1.2 + +CompanyOperates,1,Joakim +CompanyRevenue,1,90 +CompanySplits,1,90 +1 receives 45 +Payout,Joakim,45,1,100 +BuysTrain,1,P,Pool,100 + +CompanyOperates,2,Arne +CompanyRevenue,2,90 +CompanySplits,2,90 +2 receives 45 +Payout,Arne,45,1,100 +BuysTrain,2,P,Pool,100 + +CompanyOperates,3,Joshua +LaysTileAtFor,3,9,K4,SW,60 +CompanyRevenue,3,50 +CompanySplits,3,50 +3 receives 25 +Payout,Joshua,25,1,100 + +CompanyOperates,4,Ed +LaysTileAt,4,9,G6,NW +CompanyRevenue,4,40 +CompanySplits,4,40 +4 receives 20 +Payout,Ed,20,1,100 + +CompanyOperates,5,Joshua +CompanyRevenue,5,80 +CompanySplits,5,80 +5 receives 40 +Payout,Joshua,40,1,100 + +CompanyOperates,6,Chris +CompanyRevenue,6,60 +CompanySplits,6,60 +6 receives 30 +Payout,Chris,30,1,100 + +CompanyOperates,7,Chris +CompanyRevenue,7,80 +CompanySplits,7,80 +7 receives 40 +Payout,Chris,40,1,100 + +CompanyOperates,9,Chris +CompanyRevenue,9,70 +CompanySplits,9,70 +9 receives 35 +Payout,Chris,35,1,100 + +CompanyOperates,10,Joshua +CompanyRevenue,10,80 +CompanySplits,10,80 +10 receives 40 +Payout,Joshua,40,1,100 + +CompanyOperates,11,Joakim +CompanyRevenue,11,60 +CompanySplits,11,60 +11 receives 30 +Payout,Joakim,30,1,100 + +CompanyOperates,12,Arne +CompanyRevenue,12,110 +CompanySplits,12,110 +12 receives 55 +Payout,Arne,55,1,100 + +CompanyOperates,13,Ed +LaysTileAt,13,57,G4,NW +CompanyRevenue,13,60 +CompanySplits,13,60 +13 receives 30 +Payout,Ed,30,1,100 + +CompanyOperates,14,Phil +LaysTileAt,14,58,L5,NE +CompanyRevenue,14,100 +CompanySplits,14,100 +14 receives 50 +Payout,Phil,50,1,100 + +CompanyOperates,15,Phil +CompanyRevenue,15,80 +CompanySplits,15,80 +15 receives 40 +Payout,Phil,40,1,100 + +CompanyOperates,KKÃB,Joakim +LaysTileAt,KKÃB,581,N11,NE +CompanyRevenue,KKÃB,190 +CompanyPaysOutFull,KKÃB,190 +Payout,Joakim,76,4,10 +Payout,Chris,19,1,10 +Payout,Joshua,19,1,10 +Payout,Phil,38,2,10 +Payout,Arne,19,1,10 +Payout,Ed,19,1,10 +PRICE_MOVES_LOG,KKÃB,75,C4,82,D4 + +EndOfOperatingRound,1.2 +ORWorthIncrease,Chris,1.2,131 +ORWorthIncrease,Joakim,1.2,179 +ORWorthIncrease,Joshua,1.2,131 +ORWorthIncrease,Phil,1.2,142 +ORWorthIncrease,Ed,1.2,76 +ORWorthIncrease,Arne,1.2,126 +Has,1,80 +Has,2,55 +Has,3,40 +Has,4,80 +Has,5,145 +Has,6,60 +Has,7,125 +Has,9,130 +Has,10,140 +Has,11,120 +Has,12,175 +Has,13,110 +Has,14,95 +Has,15,160 +Has,KKÃB,290 +Has,Chris,350 +Has,Joakim,250 +Has,Joshua,350 +Has,Phil,290 +Has,Ed,170 +Has,Arne,285 +StartStockRound,2 +HasPriority,Ed +PASSES,Ed +SELL_SHARE_LOG,Arne,10,KKÃB,82 +PRICE_MOVES_LOG,KKÃB,82,D4,75,D5 +START_COMPANY_LOG,Arne,SNCF,100,200,2,20,SNCF +MERGE_MINOR_LOG,Arne,2,SNCF,55,2 +GetShareForMinor,Arne,10,SNCF,IPO,2 +SharesPutInTreasury,70,SNCF +PaysForTokens,SNCF,100,5 +SEL... [truncated message content] |
From: Erik V. <ev...@us...> - 2011-11-21 16:42:21
|
LocalisedText.properties | 4 ++-- rails/game/StockRound.java | 34 ++++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 14 deletions(-) New commits: commit cd74aa6bf8943b56ce719db283e90fa0bac4e275 Author: Erik Vos <eri...@xs...> Date: Mon Nov 21 17:40:58 2011 +0100 Fixed presidency dumping issues after previous commit. Added 5 test cases for share selling and nationalisation issues. diff --git a/LocalisedText.properties b/LocalisedText.properties index d957c20..5d32604 100644 --- a/LocalisedText.properties +++ b/LocalisedText.properties @@ -557,8 +557,8 @@ SelectStationForToken={0}, select a station on hex {1} for the {2} home base tok SelectStationForTokenOption=Place token in station {0} with tracks to {1} SelectForAuctioning={0} selects {1} for auctioning SELL=Sell -SELL_SHARE_LOG={0} sells a {1}% share of {2} to Pool for {3}. -SELL_SHARES_LOG={0} sells {1} {2}% shares ({3}%) of {4} to Pool for {5}. +SELL_SHARE_LOG={0} sells a {1}% certificate of {2} to Pool for {3}. +SELL_SHARES_LOG={0} sells {1} {2}% certificates ({3}%) of {4} to Pool for {5}. SellHowManyShares=Sell how many shares? SellShares=Sell {0} {1}% certificates(s) ({2}%) of {3} for {4} SellSharesWithSwap=Sell {0} {1}% certificates(s) ({2}%) of {3} for {4}, swapping president for {5} {6}% certificate(s). diff --git a/rails/game/StockRound.java b/rails/game/StockRound.java index 4ee9c7b..3bbc525 100644 --- a/rails/game/StockRound.java +++ b/rails/game/StockRound.java @@ -353,8 +353,9 @@ public class StockRound extends Round { String compName; int price; int number; - int share, shareUnit, maxShareToSell; + int ownedShare, shareUnit, maxShareToSell; int dumpThreshold = 0; + int extraSingleShares = 0; boolean choiceOfPresidentExchangeCerts = false; Portfolio playerPortfolio = currentPlayer.getPortfolio(); @@ -367,7 +368,7 @@ public class StockRound extends Round { // Check if shares of this company can be sold at all if (!mayPlayerSellShareOfCompany(company)) continue; - share = maxShareToSell = playerPortfolio.getShare(company); + ownedShare = maxShareToSell = playerPortfolio.getShare(company); shareUnit = company.getShareUnit(); if (maxShareToSell == 0) continue; @@ -385,7 +386,7 @@ public class StockRound extends Round { if (company.getPresident() == currentPlayer) { int presidentShare = company.getCertificates().get(0).getShare(); - if (maxShareToSell > share - presidentShare) { + if (maxShareToSell > ownedShare - presidentShare) { int playerShare; // Check in correct player sequence, because we must also check // whether we must offer a choice for the Pres.cert exchange @@ -408,7 +409,7 @@ public class StockRound extends Round { dumpedPlayerShare = playerShare; // From what share sold are we dumping? - dumpThreshold = share - playerShare + shareUnit; + dumpThreshold = ownedShare - playerShare + shareUnit; // Check if the potential dumpee has a choice of return certs int[] uniqueCertsCount = player.getPortfolio().getCertificateTypeCountsPerCompany(company.getName(), false); @@ -416,10 +417,15 @@ public class StockRound extends Round { // and double shares for now. choiceOfPresidentExchangeCerts = uniqueCertsCount[1] > 1 && uniqueCertsCount[2] > 0; + // If a presidency dump is possible, extra (single) share(s) may be sold + // that aren't even owned + extraSingleShares = Math.min( + presidentShare/shareUnit, + (maxShareToSell-dumpThreshold)/shareUnit+1); } // What number of shares can we sell if we cannot dump? - if (dumpThreshold == 0) maxShareToSell = share - presidentShare; + if (dumpThreshold == 0) maxShareToSell = ownedShare - presidentShare; } } @@ -431,7 +437,7 @@ public class StockRound extends Round { */ // Take care for max. 4 share units per share compName = company.getName(); - int[] shareCountPerUnit = playerPortfolio.getCertificateTypeCountsPerCompany(compName, true); + int[] shareCountPerUnit = playerPortfolio.getCertificateTypeCountsPerCompany(compName, false); // Check the price. If a cert was sold before this turn, the original price is still valid. price = getCurrentSellPrice(company); @@ -440,6 +446,9 @@ public class StockRound extends Round { number = shareCountPerUnit[shareSize]; if (number == 0) continue; + // If you can dump a presidency, you may sell additional single shares that you don't own + if (shareSize == 1) number += extraSingleShares; + /* In some games (1856), a just bought share may not be sold */ // This code ignores the possibility of different share units if ((Boolean)gameManager.getGameParameter(GameDef.Parm.NO_SALE_OF_JUST_BOUGHT_CERT) @@ -448,18 +457,19 @@ public class StockRound extends Round { } if (number <= 0) continue; - // Check against the share% already in the pool - number = - Math.min(number, maxShareToSell - / (shareSize * company.getShareUnit())); + // Check against the maximum share that can be sold + number = Math.min(number, maxShareToSell / (shareSize * shareUnit)); if (number <= 0) continue; for (int i=1; i<=number; i++) { if (dumpThreshold > 0 && i*shareSize*shareUnit >= dumpThreshold && choiceOfPresidentExchangeCerts) { - // Also offer the alternative president exchange for a double share possibleActions.add(new SellShares(compName, shareSize, i, price, 1)); - possibleActions.add(new SellShares(compName, shareSize, i, price, 2)); + // Also offer the alternative president exchange for a double share, + // unless the remaining share would be less than a double share + if (ownedShare/shareUnit - i*shareSize >= 2) { + possibleActions.add(new SellShares(compName, shareSize, i, price, 2)); + } } else { possibleActions.add(new SellShares(compName, shareSize, i, price, 0)); } |