From: Stefan F. <ste...@us...> - 2012-01-30 13:03:46
|
buildRails.xml | 2 data/1856/MapImage.svg | 14 data/1889/Map.xml | 53 data/1889/MapImage.svg | 4259 ++++++++++++++++++++++++++++++++ data/18TN/Game.xml | 2 rails/game/GameManager.java | 13 rails/game/StockRound.java | 79 rails/ui/swing/GameSetupWindow.java | 3 rails/ui/swing/ReportWindowDynamic.java | 24 readme.txt | 23 test/data/real/18TN_A.rails |binary test/data/real/18TN_A.report | 612 ++++ version.number | 2 13 files changed, 4996 insertions(+), 90 deletions(-) New commits: commit 0f7757081388a42d0df9e02abbc54c9c5b5fa0d0 Author: Stefan Frey <ste...@we...> Date: Mon Jan 30 13:28:36 2012 +0100 updated version number to 1.6.1 diff --git a/version.number b/version.number index 79c0ece..d54f51c 100644 --- a/version.number +++ b/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.6.0 +version=1.6.1 # 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 afa90772b6b8aaa6093ba04b855d39380010b23d Author: Stefan Frey <ste...@we...> Date: Sun Jan 29 18:57:29 2012 +0100 18TN test game added(cherry picked from commit 6f3e1b37eec99dda21eef3bd7b66eb6a1c0716ea) diff --git a/test/data/real/18TN_A.rails b/test/data/real/18TN_A.rails new file mode 100644 index 0000000..6936faa Binary files /dev/null and b/test/data/real/18TN_A.rails differ diff --git a/test/data/real/18TN_A.report b/test/data/real/18TN_A.report new file mode 100644 index 0000000..2771851 --- /dev/null +++ b/test/data/real/18TN_A.report @@ -0,0 +1,612 @@ +GameIs,18TN +PlayerIs,1,Bob +PlayerIs,2,Chester +PlayerIs,3,Joshua +PlayerIs,4,Rob +PlayerCash,450 +BankHas,6200 +StartOfPhase,2 +BankSizeIs,6200 +StartOfInitialRound +HasPriority,Bob +BID_ITEM_LOG,Bob,75,M&C,375 +BID_ITEM_LOG,Chester,180,L&N,270 +BID_ITEM_LOG,Joshua,105,O&W,345 +BID_ITEM_LOG,Rob,185,L&N,265 +BuysItemFor,Bob,TCC,20 +BuysItemFor,Chester,ET&WNC,40 +BuysItemFor,Bob,M&C,75 +BuysItemFor,Joshua,O&W,105 +TO_AUCTION,L&N +BID_ITEM_LOG,Chester,190,L&N,220 +BID_ITEM_LOG,Rob,195,L&N,255 +PASSES,Chester +BuysItemFor,Rob,PRES_CERT_NAME,L&N,20,195 +FloatsWithCash,L&N,800 +Has,L&N,800 +Has,Bob,355 +Has,Chester,410 +Has,Joshua,345 +Has,Rob,255 +StartStockRound,1 +HasPriority,Joshua +PASSES,Joshua +BUY_SHARE_LOG,Rob,10,L&N,IPO,80 +BUY_SHARE_LOG,Bob,10,L&N,IPO,80 +START_COMPANY_LOG,Chester,SOU,65,130,2,20,BANK +BUY_SHARE_LOG,Joshua,10,L&N,IPO,80 +BUY_SHARE_LOG,Rob,10,L&N,IPO,80 +PASSES,Bob +BUY_SHARE_LOG,Chester,10,SOU,IPO,65 +BUY_SHARE_LOG,Joshua,10,L&N,IPO,80 +BUY_SHARE_LOG,Rob,10,L&N,IPO,80 +PASSES,Bob +BUY_SHARE_LOG,Chester,10,SOU,IPO,65 +BUY_SHARE_LOG,Joshua,10,L&N,IPO,80 +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,L&N,IPO,80 +BUY_SHARE_LOG,Chester,10,SOU,IPO,65 +PASSES,Joshua +Autopasses,Rob +PASSES,Bob +BUY_SHARE_LOG,Chester,10,SOU,IPO,65 +FloatsWithCash,SOU,650 +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,SOU,IPO,65 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,SOU,IPO,65 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,SOU,IPO,65 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +PASSES,Bob + +END_SR,1 +PRICE_MOVES_LOG,L&N,80,E3,90,E2 +SoldOut,L&N,80,E3,90,E2 +Has,L&N,800 +Has,SOU,650 +Has,Bob,0 +Has,Chester,20 +Has,Joshua,105 +Has,Rob,15 +START_OR,1.1 +ReceivesFor,Bob,5,TCC +ReceivesFor,Chester,10,ET&WNC +ReceivesFor,Bob,15,M&C +ReceivesFor,Joshua,20,O&W + +CompanyOperates,L&N,Rob +LaysTileAtFor,L&N,9,B15,W,60 +LaysTileAt,L&N,5,B17,NE +LAYS_TOKEN_ON,L&N,B17,40 +CompanyDoesNotPayDividend,L&N +PRICE_MOVES_LOG,L&N,90,E2,80,D2 +BuysTrain,L&N,2,IPO,80 +FirstTrainBought,2 + +CompanyOperates,SOU,Chester +BuysPrivateFromFor,SOU,ET&WNC,Chester,40 +LaysTileAt,SOU,8,F19,W +LaysTileAt,SOU,8,E20,E +LaysTileAtFor,SOU,57,F17,W,40 +CompanyDoesNotPayDividend,SOU +PRICE_MOVES_LOG,SOU,65,D4,55,C4 +BuysTrain,SOU,2,IPO,80 + +EndOfOperatingRound,1.1 +ORWorthIncrease,Bob,1.1,-30 +ORWorthIncrease,Chester,1.1,-50 +ORWorthIncrease,Joshua,1.1,-10 +ORWorthIncrease,Rob,1.1,-50 +Has,L&N,620 +Has,SOU,490 +Has,Bob,20 +Has,Chester,70 +Has,Joshua,125 +Has,Rob,15 +StartStockRound,2 +HasPriority,Chester +PASSES,Chester +BUY_SHARE_LOG,Joshua,10,SOU,IPO,65 +Autopasses,Rob +PASSES,Bob +PASSES,Chester +Autopasses,Joshua + +END_SR,2 +PRICE_MOVES_LOG,L&N,80,D2,90,D1 +SoldOut,L&N,80,D2,90,D1 +PRICE_MOVES_LOG,SOU,55,C4,60,C3 +SoldOut,SOU,55,C4,60,C3 +Has,L&N,620 +Has,SOU,490 +Has,Bob,20 +Has,Chester,70 +Has,Joshua,60 +Has,Rob,15 +START_OR,2.1 +ReceivesFor,Bob,5,TCC +ReceivesFor,SOU,10,ET&WNC +ReceivesFor,Bob,15,M&C +ReceivesFor,Joshua,20,O&W + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,58,E10,NE +LaysTileAtFor,L&N,57,F11,NW,40 +CompanyRevenue,L&N,70 +CompanyPaysOutFull,L&N,70 +Payout,Joshua,21,3,10 +Payout,Bob,14,2,10 +Payout,Rob,35,5,10 +PRICE_MOVES_LOG,L&N,90,D1,100,E1 +BuysTrain,L&N,2,IPO,80 + +CompanyOperates,SOU,Chester +LaysTileAtFor,SOU,9,F15,E,60 +LaysTileAt,SOU,58,F13,E +CompanyRevenue,SOU,80 +CompanyPaysOutFull,SOU,80 +Payout,Joshua,8,1,10 +Payout,Bob,24,3,10 +Payout,Chester,48,6,10 +PRICE_MOVES_LOG,SOU,60,C3,70,D3 +BuysTrain,SOU,2,IPO,80 + +EndOfOperatingRound,2.1 +ORWorthIncrease,Bob,2.1,108 +ORWorthIncrease,Chester,2.1,108 +ORWorthIncrease,Joshua,2.1,89 +ORWorthIncrease,Rob,2.1,85 +Has,L&N,500 +Has,SOU,360 +Has,Bob,78 +Has,Chester,118 +Has,Joshua,109 +Has,Rob,50 +StartStockRound,3 +HasPriority,Rob +PASSES,Rob +SELL_SHARES_LOG,Bob,2,10,20,L&N,200 +PRICE_MOVES_LOG,L&N,100,E1,80,E3 +SELL_SHARES_LOG,Bob,3,10,30,SOU,210 +PRICE_MOVES_LOG,SOU,70,D3,55,D6 +START_COMPANY_LOG,Bob,TC,80,160,2,20,BANK +BUY_SHARE_LOG,Chester,10,L&N,Pool,80 +BUY_SHARE_LOG,Joshua,10,L&N,Pool,80 +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,TC,IPO,80 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,TC,IPO,80 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,TC,IPO,80 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,TC,IPO,80 +FloatsWithCash,TC,800 +PASSES,Chester +Autopasses,Joshua +Autopasses,Rob +PASSES,Bob + +END_SR,3 +PRICE_MOVES_LOG,L&N,80,E3,90,E2 +SoldOut,L&N,80,E3,90,E2 +Has,L&N,500 +Has,SOU,360 +Has,TC,800 +Has,Bob,8 +Has,Chester,38 +Has,Joshua,29 +Has,Rob,50 +START_OR,3.1 +ReceivesFor,Bob,5,TCC +ReceivesFor,SOU,10,ET&WNC +ReceivesFor,Bob,15,M&C +ReceivesFor,Joshua,20,O&W + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,5,G12,E +LAYS_TOKEN_ON,L&N,G12,100 +CompanyRevenue,L&N,120 +CompanyPaysOutFull,L&N,120 +Payout,Joshua,48,4,10 +Payout,Rob,60,5,10 +Payout,Chester,12,1,10 +PRICE_MOVES_LOG,L&N,90,E2,100,F2 + +CompanyOperates,TC,Bob +CompanyDoesNotPayDividend,TC +PRICE_MOVES_LOG,TC,80,E3,70,D3 +BuysTrain,TC,2,IPO,80 +All 2-trains are sold out, 3-trains now available + +CompanyOperates,SOU,Chester +CompanyRevenue,SOU,110 +CompanyPaysOutFull,SOU,110 +Payout,Joshua,11,1,10 +Payout,Chester,66,6,10 +Payout,SOU,33,3,10 +PRICE_MOVES_LOG,SOU,55,D6,65,E6 +BuysTrain,SOU,3,IPO,180 +FirstTrainBought,3 +StartOfPhase,3 + +EndOfOperatingRound,3.1 +ORWorthIncrease,Bob,3.1,-40 +ORWorthIncrease,Chester,3.1,148 +ORWorthIncrease,Joshua,3.1,129 +ORWorthIncrease,Rob,3.1,110 +Has,L&N,400 +Has,SOU,223 +Has,TC,720 +Has,Bob,28 +Has,Chester,116 +Has,Joshua,108 +Has,Rob,110 +StartStockRound,4 +HasPriority,Chester +BUY_SHARE_LOG,Chester,10,TC,IPO,80 +SELL_SHARES_LOG,Joshua,4,10,40,L&N,400 +PRICE_MOVES_LOG,L&N,100,F2,75,F5 +SELL_SHARE_LOG,Joshua,10,SOU,65 +PRICE_MOVES_LOG,SOU,65,E6,60,E7 +START_COMPANY_LOG,Joshua,GMO,90,180,2,20,BANK +BUY_SHARE_LOG,Rob,10,L&N,Pool,75 +Autopasses,Bob +Autopasses,Chester +BUY_SHARE_LOG,Joshua,10,GMO,IPO,90 +Autopasses,Rob +Autopasses,Bob +Autopasses,Chester +BUY_SHARE_LOG,Joshua,10,GMO,IPO,90 +Autopasses,Rob +Autopasses,Bob +Autopasses,Chester +BUY_SHARE_LOG,Joshua,10,GMO,IPO,90 +Autopasses,Rob +Autopasses,Bob +Autopasses,Chester +BUY_SHARE_LOG,Joshua,10,GMO,IPO,90 +FloatsWithCash,GMO,900 +Autopasses,Rob +Autopasses,Bob +Autopasses,Chester +PASSES,Joshua + +END_SR,4 +Has,GMO,900 +Has,L&N,400 +Has,SOU,223 +Has,TC,720 +Has,Bob,28 +Has,Chester,36 +Has,Joshua,33 +Has,Rob,35 +START_OR,4.1 +ReceivesFor,Bob,5,TCC +ReceivesFor,SOU,10,ET&WNC +ReceivesFor,Bob,15,M&C +ReceivesFor,Joshua,20,O&W + +CompanyOperates,GMO,Joshua +LaysTileAt,GMO,6,H7,NE +LaysTileAt,GMO,8,F7,SW +CompanyDoesNotPayDividend,GMO +PRICE_MOVES_LOG,GMO,90,E2,80,D2 +BuysTrain,GMO,3,IPO,180 + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,15,B17,SE +CompanyRevenue,L&N,140 +CompanyPaysOutFull,L&N,140 +Payout,Chester,14,1,10 +Payout,Rob,84,6,10 +Payout,L&N,42,3,10 +PRICE_MOVES_LOG,L&N,75,F5,80,G5 +BuysTrain,L&N,3,IPO,180 + +CompanyOperates,TC,Bob +LaysTileAtFor,TC,8,C18,SW,60 +LaysTileAt,TC,8,D17,NE +LAYS_TOKEN_ON,TC,B17,40 +CompanyRevenue,TC,80 +CompanyPaysOutFull,TC,80 +Payout,Chester,8,1,10 +Payout,Bob,48,6,10 +PRICE_MOVES_LOG,TC,70,D3,80,E3 +BuysTrain,TC,3,IPO,180 +StartOfPhase,3½ + +CompanyOperates,SOU,Chester +LaysTileAt,SOU,619,G12,SW +CompanyRevenue,SOU,140 +CompanyPaysOutFull,SOU,140 +Payout,Chester,84,6,10 +Payout,SOU,56,4,10 +PRICE_MOVES_LOG,SOU,60,E7,65,E6 + +EndOfOperatingRound,4.1 +ORWorthIncrease,Bob,4.1,128 +ORWorthIncrease,Chester,4.1,151 +ORWorthIncrease,Joshua,4.1,-40 +ORWorthIncrease,Rob,4.1,114 +Has,GMO,720 +Has,L&N,262 +Has,SOU,289 +Has,TC,440 +Has,Bob,96 +Has,Chester,142 +Has,Joshua,53 +Has,Rob,119 +START_OR,4.2 +ReceivesFor,Bob,5,TCC +ReceivesFor,SOU,10,ET&WNC +ReceivesFor,Bob,15,M&C +ReceivesFor,Joshua,20,O&W + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,15,F17,E +LAYS_TOKEN_ON,L&N,F17,100 +CompanyRevenue,L&N,200 +CompanyPaysOutFull,L&N,200 +Payout,Chester,20,1,10 +Payout,Rob,120,6,10 +Payout,L&N,60,3,10 +PRICE_MOVES_LOG,L&N,80,G5,85,G4 + +CompanyOperates,TC,Bob +BuysPrivateFromFor,TC,TCC,Bob,40 +BuysPrivateFromFor,TC,M&C,Bob,120 +LaysTileAt,TC,8,H5,NW +LaysTileAt,TC,599,F11,NE +CompanyRevenue,TC,110 +CompanyPaysOutFull,TC,110 +Payout,Bob,66,6,10 +Payout,Chester,11,1,10 +PRICE_MOVES_LOG,TC,80,E3,90,F3 + +CompanyOperates,GMO,Joshua +LaysTileAt,GMO,9,I6,SW +LaysTileAt,GMO,8,E6,NE +BuysPrivateFromFor,GMO,O&W,Joshua,200 +CompanyRevenue,GMO,0 +CompanyDoesNotPayDividend,GMO +BuysTrain,GMO,3,IPO,180 +All 3-trains are sold out, 4-trains now available + +CompanyOperates,SOU,Chester +LaysTileAt,SOU,9,E12,SW +LaysTileAt,SOU,8,D13,SW +LAYS_TOKEN_ON,SOU,F11,40 +CompanyRevenue,SOU,230 +CompanyPaysOutFull,SOU,230 +Payout,Chester,138,6,10 +Payout,SOU,92,4,10 +PRICE_MOVES_LOG,SOU,65,E6,70,E5 +BuysTrain,SOU,4,IPO,300 +FirstTrainBought,4 +StartOfPhase,4 + +EndOfOperatingRound,4.2 +ORWorthIncrease,Bob,4.2,216 +ORWorthIncrease,Chester,4.2,214 +ORWorthIncrease,Joshua,4.2,120 +ORWorthIncrease,Rob,4.2,150 +Has,GMO,340 +Has,L&N,222 +Has,SOU,51 +Has,TC,280 +Has,Bob,342 +Has,Chester,311 +Has,Joshua,273 +Has,Rob,239 +StartStockRound,5 +HasPriority,Rob +SELL_SHARES_LOG,Rob,2,10,20,L&N,170 +PRICE_MOVES_LOG,L&N,85,G4,80,G5 +START_COMPANY_LOG,Rob,IC,65,195,3,30,BANK +SELL_SHARE_LOG,Bob,10,TC,90 +PRICE_MOVES_LOG,TC,90,F3,80,F4 +BUY_SHARE_LOG,Bob,10,SOU,Pool,70 +SELL_SHARE_LOG,Chester,10,TC,80 +PRICE_MOVES_LOG,TC,80,F4,75,F5 +SELL_SHARE_LOG,Chester,10,SOU,70 +PRICE_MOVES_LOG,SOU,70,E5,65,E6 +START_COMPANY_LOG,Chester,NC,75,150,2,20,BANK +BUY_SHARE_LOG,Joshua,10,SOU,Pool,65 +BUY_SHARE_LOG,Rob,10,IC,IPO,65 +BUY_SHARE_LOG,Bob,10,SOU,Pool,65 +BUY_SHARE_LOG,Chester,10,GMO,IPO,90 +BUY_SHARE_LOG,Joshua,10,SOU,Pool,65 +BUY_SHARE_LOG,Rob,10,IC,IPO,65 +BUY_SHARE_LOG,Bob,10,SOU,Pool,65 +BUY_SHARE_LOG,Chester,10,NC,IPO,75 +BUY_SHARE_LOG,Joshua,10,TC,Pool,75 +BUY_SHARE_LOG,Rob,10,IC,IPO,65 +FloatsWithCash,IC,650 +BUY_SHARE_LOG,Bob,10,IC,IPO,65 +BUY_SHARE_LOG,Chester,10,NC,IPO,75 +SELL_SHARE_LOG,Chester,10,GMO,80 +PRICE_MOVES_LOG,GMO,80,D2,70,D3 +BUY_SHARE_LOG,Joshua,10,IC,IPO,65 +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,IC,IPO,65 +SELL_SHARES_LOG,Bob,2,10,20,IC,130 +PRICE_MOVES_LOG,IC,65,D4,55,D6 +BUY_SHARE_LOG,Chester,10,NC,IPO,75 +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,GMO,Pool,70 +BUY_SHARE_LOG,Chester,10,NC,IPO,75 +FloatsWithCash,NC,750 +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,NC,IPO,75 +Autopasses,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,NC,IPO,75 +SELL_SHARES_LOG,Bob,2,10,20,NC,150 +PRICE_MOVES_LOG,NC,75,E4,65,E6 +Autopasses,Chester +Autopasses,Joshua +Autopasses,Rob +SELL_SHARE_LOG,Bob,10,SOU,65 +PRICE_MOVES_LOG,SOU,65,E6,60,E7 +BUY_SHARE_LOG,Bob,10,L&N,Pool,80 +Autopasses,Chester +Autopasses,Joshua +Autopasses,Rob +BUY_SHARE_LOG,Bob,10,GMO,IPO,90 +Autopasses,Chester +Autopasses,Joshua +Autopasses,Rob +PASSES,Bob + +END_SR,5 +Has,GMO,340 +Has,IC,650 +Has,L&N,222 +Has,NC,750 +Has,SOU,51 +Has,TC,280 +Has,Bob,57 +Has,Chester,1 +Has,Joshua,3 +Has,Rob,19 +START_OR,5.1 +ReceivesFor,TC,5,TCC +ReceivesFor,SOU,10,ET&WNC +ReceivesFor,TC,15,M&C +ReceivesFor,GMO,20,O&W + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,141,E10,SW +CompanyRevenue,L&N,110 +CompanyWithholds,L&N,110 +PRICE_MOVES_LOG,L&N,80,G5,75,F5 +BuysTrain,L&N,4,IPO,300 + +CompanyOperates,TC,Bob +LaysTileAt,TC,24,C12,NE +CompanyRevenue,TC,120 +CompanyPaysOutFull,TC,120 +Payout,Bob,60,5,10 +Payout,Joshua,12,1,10 +Payout,TC,12,1,10 +PRICE_MOVES_LOG,TC,75,F5,80,G5 +BuysTrain,TC,4,IPO,300 +All 4-trains are sold out, 5-trains now available + +CompanyOperates,GMO,Joshua +LaysTileAtFor,GMO,6,D7,NE,40 +LaysTileAt,GMO,8,C6,SE +CompanyRevenue,GMO,150 +CompanyPaysOutFull,GMO,150 +Payout,Bob,30,2,10 +Payout,Joshua,90,6,10 +PRICE_MOVES_LOG,GMO,70,D3,80,E3 + +CompanyOperates,NC,Chester +LaysTileAtFor,NC,8,H13,NW,60 +LaysTileAt,NC,9,G10,W +CompanyDoesNotPayDividend,NC +PRICE_MOVES_LOG,NC,65,E6,55,D6 +BuysTrain,NC,5,IPO,450 +FirstTrainBought,5 +StartOfPhase,5 +PrivateCloses,TCC +PrivateCloses,ET&WNC +PrivateCloses,M&C +PrivateCloses,O&W +BuysTrain,NC,3,SOU,240 + +CompanyOperates,SOU,Chester +LaysTileAt,SOU,24,B15,W +CompanyRevenue,SOU,170 +CompanyWithholds,SOU,170 +PRICE_MOVES_LOG,SOU,60,E7,50,D7 +BuysTrain,SOU,5,IPO,450 +All 5-trains are sold out, 6-trains now available + +CompanyOperates,IC,Rob +LaysTileAt,IC,619,D7,W +CompanyDoesNotPayDividend,IC +PRICE_MOVES_LOG,IC,55,D6,45,C6 +BuysTrain,IC,6,IPO,630 +FirstTrainBought,6 +StartOfPhase,6 + +EndOfOperatingRound,5.1 +ORWorthIncrease,Bob,5.1,110 +ORWorthIncrease,Chester,5.1,-115 +ORWorthIncrease,Joshua,5.1,137 +ORWorthIncrease,Rob,5.1,-80 +Has,GMO,320 +Has,IC,20 +Has,L&N,32 +Has,NC,0 +Has,SOU,21 +Has,TC,12 +Has,Bob,147 +Has,Chester,1 +Has,Joshua,105 +Has,Rob,19 +START_OR,5.2 + +CompanyOperates,TC,Bob +LaysTileAt,TC,170,F11,SW +CompanyRevenue,TC,190 +CompanyPaysOutFull,TC,190 +Payout,Bob,95,5,10 +Payout,Joshua,19,1,10 +Payout,TC,19,1,10 +PRICE_MOVES_LOG,TC,80,G5,85,G4 + +CompanyOperates,GMO,Joshua +LaysTileAt,GMO,14,G6,NW +LAYS_TOKEN_ON,GMO,D7,40 +CompanyDoesNotPayDividend,GMO +PRICE_MOVES_LOG,GMO,80,E3,70,D3 +PlayerMustSellShares,Joshua,226 +SELL_SHARES_LOG,Joshua,1,10,10,TC,85 +PRICE_MOVES_LOG,TC,85,G4,80,G5 +SELL_SHARES_LOG,Joshua,1,10,10,IC,45 +PRICE_MOVES_LOG,IC,45,C6,40,C7 +SELL_SHARES_LOG,Joshua,2,10,20,SOU,100 +PresidentAddsCash,GMO,Joshua,350 +BuysTrain,GMO,6,IPO,630 +All 6-trains are sold out, 8-trains now available +StartOfPhase,6½ + +CompanyOperates,L&N,Rob +LaysTileAt,L&N,8,D9,SE +LaysTileAt,L&N,8,E18,NW +CompanyRevenue,L&N,190 +CompanyWithholds,L&N,190 +PRICE_MOVES_LOG,L&N,75,F5,70,E5 +TrainsObsoleteRusted,4,L&N +PlayerMustSellShares,Rob,459 +SELL_SHARES_LOG,Rob,2,10,20,IC,80 +SELL_SHARES_LOG,Rob,1,10,10,L&N,70 +PRICE_MOVES_LOG,L&N,70,E5,65,E6 +PlayerIsBankrupt,Rob +GameOver +EoGWinnerBob! +EoGFinalRanking : +1. 947 Bob +2. 646 Chester +3. 424 Joshua +4. 355 Rob commit 7cf721f93cdb3a54a8519feaf0085567627f5629 Author: Stefan Frey <ste...@we...> Date: Mon Jan 30 13:27:19 2012 +0100 updated readme.txt for 1.6.1 release diff --git a/readme.txt b/readme.txt index b6a6249..f26c93f 100644 --- a/readme.txt +++ b/readme.txt @@ -1,17 +1,18 @@ -Rails release 1.6.0: +Rails release 1.6.1: -This release celebrates that 1835 is declared fully playable. +A maintenance release for the 1.6.x branch. -Warning this release might not work with existing save files (see below). - -Contributors: Martin Brumm, Stefan Frey, Erik Vos, Frederick Weld +Contributors: Frederick Weld, Erik Vos +Bugs reported by Bill Probst. List of bugs fixed and further changes: -- 18EU: Fixed that share price could raise at the end of the merger round -- 1825: Update to Minors -- Background map: Fixed glitches at 18GA display -- All games: Fixes to make entering special tile lays more efficient -WARNING: The last fix might make existing save files unloadable. +- Enforced that the DynamicReportWindow stays on top during time warp +- Added background map for 1889 (courtesy of Frederick Weld) +- Fixed autosave functionality (handling of 18xx_autosave.xxx files) +- Fixed retrieval of default game options (if options pane was not opened) +- Fixed 1856 background map's mini-map (Windsor area) +- Enforce selling over-limit shares first +- Fixed wrong price of 6 train (630 => 600) in 18TN 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 1856, 18EU, 18GA (incl. Cotton Port) and 18AL so far. +Background maps are only available for 1856, 1889, 18EU, 18GA (incl. Cotton Port) and 18AL so far. commit 4046342a471b3e672276d27138f9cc67713db8f2 Author: Stefan Frey <ste...@we...> Date: Sun Jan 29 16:57:51 2012 +0100 Fixed wrong price of 6 train (630 => 600) Reported by Bob Probst (cherry picked from commit 18c9e92b41cbbf6d2c386682c4354b0a485bd7c8) diff --git a/data/18TN/Game.xml b/data/18TN/Game.xml index 191ee87..62f3209 100644 --- a/data/18TN/Game.xml +++ b/data/18TN/Game.xml @@ -79,7 +79,7 @@ <TrainType name="5" majorStops="5" cost="450" quantity="2"> <NewPhase phaseName="5"/> </TrainType> - <TrainType name="6" majorStops="6" cost="630" quantity="2"> + <TrainType name="6" majorStops="6" cost="600" quantity="2"> <NewPhase phaseName="6"/> <NewPhase phaseName="6½" trainIndex="2"/> </TrainType> commit 2874b608449471d3e4615e46f1729696b07a0c75 Author: Erik Vos <eri...@xs...> Date: Fri Jan 6 16:51:04 2012 +0100 Enforce selling over-limit shares first. Being over limits was announced but immediate selling was not enforced.(cherry picked from commit 73886c53437f48e72a2bc3868d075be322e4ddbd) Conflicts: rails/game/StockRound.java diff --git a/rails/game/StockRound.java b/rails/game/StockRound.java index 03bb17a..037d2cc 100644 --- a/rails/game/StockRound.java +++ b/rails/game/StockRound.java @@ -58,6 +58,10 @@ public class StockRound extends Round { protected int sequenceRule; protected boolean raiseIfSoldOut = false; + /* Temporary variables */ + protected boolean isOverLimits = false; + protected String overLimitsDetail = null; + /** * Constructor with the GameManager, will call super class (Round's) Constructor to initialize * @@ -113,13 +117,9 @@ public class StockRound extends Round { setSellableShares(); - // check certification limits and display warning - if (isPlayerOverLimits (currentPlayer)) { - DisplayBuffer.add(LocalText.getText("ExceedCertificateLimit" - , currentPlayer.getName() - , isPlayerOverLimitsDetail(currentPlayer) - ) - ); + // Certificate limits must be obeyed by selling excess shares + // before any other action is allowed. + if (isOverLimits) { return true; } @@ -355,6 +355,7 @@ public class StockRound extends Round { * @return List of sellable certificates. */ public void setSellableShares() { + if (!mayCurrentPlayerSellAnything()) return; String compName; @@ -365,6 +366,9 @@ public class StockRound extends Round { int extraSingleShares = 0; boolean choiceOfPresidentExchangeCerts = false; Portfolio playerPortfolio = currentPlayer.getPortfolio(); + isOverLimits = false; + overLimitsDetail = null; + StringBuilder violations = new StringBuilder(); /* * First check of which companies the player owns stock, and what @@ -386,6 +390,22 @@ public class StockRound extends Round { - pool.getShare(company)); if (maxShareToSell == 0) continue; + // Is player over the hold limit of this company? + if (!checkAgainstHoldLimit(currentPlayer, company, 0)) { + // The first time this happens, remove all non-over-limits sell options + if (!isOverLimits) possibleActions.clear(); + isOverLimits = true; + violations.append(LocalText.getText("ExceedCertificateLimitCompany", + company.getName(), + playerPortfolio.getShare(company), + getGameParameterAsInt(GameDef.Parm.PLAYER_SHARE_LIMIT) + )); + + } else { + // If within limits, but an over-limits situation exists: correct that first. + if (isOverLimits) continue; + } + /* * If the current Player is president, check if he can dump the * presidency onto someone else. @@ -483,6 +503,23 @@ public class StockRound extends Round { } } } + + // Is player over the total certificate hold limit? + float certificateCount = playerPortfolio.getCertificateCount(); + int certificateLimit = gameManager.getPlayerCertificateLimit(currentPlayer); + if (certificateCount > certificateLimit) { + violations.append(LocalText.getText("ExceedCertificateLimitTotal", + certificateCount, + certificateLimit)); + isOverLimits = true; + } + + if (isOverLimits) { + DisplayBuffer.add(LocalText.getText("ExceedCertificateLimit" + , currentPlayer.getName() + , violations.toString() + )); + } } protected void setSpecialActions() { @@ -1431,7 +1468,6 @@ public class StockRound extends Round { hasSoldThisTurnBeforeBuying.set(false); hasActed.set(false); if (currentPlayer == startingPlayer) ReportBuffer.add(""); - } /** @@ -1489,44 +1525,31 @@ public class StockRound extends Round { /** * Can the current player do any buying? + * <p>Note: requires sellable shares to be checked BEFORE buyable shares * * @return True if any buying is allowed. */ public boolean mayCurrentPlayerBuyAnything() { - return !isPlayerOverLimits(currentPlayer) - && companyBoughtThisTurnWrapper.get() == null; + return !isOverLimits && companyBoughtThisTurnWrapper.get() == null; } + // Only used now to check if Autopass must be reset. protected boolean isPlayerOverLimits(Player player) { - return (isPlayerOverLimitsDetail(player) != null); - } - - protected String isPlayerOverLimitsDetail(Player player) { - StringBuffer violations = new StringBuffer(); // Over the total certificate hold Limit? if (player.getPortfolio().getCertificateCount() > gameManager.getPlayerCertificateLimit(player)) { - violations.append(LocalText.getText("ExceedCertificateLimitTotal", - player.getPortfolio().getCertificateCount(), - gameManager.getPlayerCertificateLimit(player))); + return true; } // Over the hold limit of any company? for (PublicCompanyI company : companyManager.getAllPublicCompanies()) { if (company.hasStarted() && company.hasStockPrice() && !checkAgainstHoldLimit(player, company, 0)) { - violations.append(LocalText.getText("ExceedCertificateLimitCompany", - company.getName(), - player.getPortfolio().getShare(company), - getGameParameterAsInt(GameDef.Parm.PLAYER_SHARE_LIMIT) - )); + return true; } } - if (violations.length() != 0) { - return violations.toString(); - } else { - return null; - } + + return false; } /** commit a7ec76db12bc2ee97839234cbfeab103d282e502 Author: Frederick Weld <fre...@gm...> Date: Sun Jan 1 07:01:15 2012 +0100 Fixed 1856 background map's mini-map (Windsor area) (cherry picked from commit c873a449f712e7934e80a467069af09807e0dd05) diff --git a/data/1856/MapImage.svg b/data/1856/MapImage.svg index 01dda31..595254a 100644 --- a/data/1856/MapImage.svg +++ b/data/1856/MapImage.svg @@ -150,12 +150,12 @@ inkscape:cx="2556" inkscape:cy="1957.5" inkscape:document-units="px" - inkscape:current-layer="layer3" + inkscape:current-layer="layer6" showgrid="false" inkscape:object-nodes="false" inkscape:window-width="1737" inkscape:window-height="1047" - inkscape:window-x="1452" + inkscape:window-x="172" inkscape:window-y="-11" inkscape:window-maximized="1" borderlayer="true" @@ -1558,6 +1558,16 @@ d="m 1316.1025,687.05754 c 11.3544,-9.50442 24.1951,-17.25146 37.7619,-23.13985 6.2666,-1.10258 11.5539,-4.50634 15.843,-9.11459 5.1019,-4.93631 11.9991,-7.33276 17.1024,-12.28326 3.9779,-3.49579 7.8596,-7.15447 12.7095,-9.4214 6.6475,-3.43833 12.4263,-8.89027 20.0869,-9.98548 6.6565,-1.63694 13.7417,-0.0944 20.2432,-2.34671" id="path3981" inkscape:connector-curvature="0" /> + <path + style="fill:#ffeaea;fill-opacity:1;stroke:none" + d="m 777.21379,820.08532 c -0.51563,-0.18361 -4.45313,-1.69384 -8.75,-3.35606 -4.29688,-1.66222 -10.20313,-3.49521 -13.125,-4.0733 -6.3968,-1.26562 -7.98154,-2.16641 -12.99328,-7.38562 -5.83181,-6.07323 -6.47767,-9.05655 -3.1495,-14.54801 2.4301,-4.00964 5.77457,-5.97601 12.52268,-7.36267 7.54706,-1.55084 10.51302,-1.32889 15.72195,1.1765 2.47731,1.19154 6.53809,2.51521 9.02396,2.94149 l 4.51977,0.77505 -0.16654,15.96477 c -0.16114,15.44732 -0.20706,15.9686 -1.41654,16.08323 -0.6875,0.0652 -1.67188,-0.0318 -2.1875,-0.21538 z" + id="path4752" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffeaea;fill-opacity:1;stroke:none" + d="" + id="path4754" + inkscape:connector-curvature="0" /> </g> <g inkscape:groupmode="layer" commit f3ee09a2da26efc14456164b39e4e7651b61d520 Author: frederickweld <fre...@gm...> Date: Tue Dec 27 19:41:21 2011 +0100 Fixed retrieval of default game options (if options pane was not opened) Game options have to be read from GamesList.xml and not from the respective game's Games.xml GameOption tags. Before the fix, this was not the case if the options pane had not been opened (which is the moment at which the GamesList's default options were loaded). This fix also solves Bug 3448429, as the reported missing 18EU route calculation was due to inconsistent defaulting between GamesList (default=suggest) and Games (default=deactivate). Now, the defaults are always taken from GamesList. (cherry picked from commit ee46d990d508904fc6a542f20f8b4c30c53f4203) diff --git a/rails/ui/swing/GameSetupWindow.java b/rails/ui/swing/GameSetupWindow.java index 3f282b1..d9652ec 100644 --- a/rails/ui/swing/GameSetupWindow.java +++ b/rails/ui/swing/GameSetupWindow.java @@ -477,10 +477,11 @@ public class GameSetupWindow extends JDialog implements ActionListener { log.info("Game option " + option.getName() + " set to " + value); } } else { - // No options selected: take the defaults GameOption option; String value; + // No options selected: take the defaults (from the games list!) + availableOptions = this.getSelectedGameInfo().getOptions(); for (int i = 0; i < availableOptions.size(); i++) { option = availableOptions.get(i); value = option.getDefaultValue(); commit 34107056b41e4dab439f4399d91d9d887aeeeeb6 Author: frederickweld <fre...@gm...> Date: Tue Dec 27 17:48:19 2011 +0100 Fixed autosave functionality (handling of 18xx_autosave.xxx files) Target design is that (1) new temp file (.tmp) is created (2) former autosave (.rails) becomes the backup autosave (.rails.bak) (3) temp file (.tmp) becomes the new autosave (.rails) Prior to the fix, the implementation did not process step (2) correctly, as backup autosaves were never dropped. This meant that autosave resulted in an error message and three files in the autosave folder (.tmp , .rails , .rails.bak). That's why autosave had never worked for me (and I doubt that it could have worked for others). (cherry picked from commit 9d832d70a9f91944f1e1d8fba124f97c00f097cd) diff --git a/rails/game/GameManager.java b/rails/game/GameManager.java index 8507931..f514d1a 100644 --- a/rails/game/GameManager.java +++ b/rails/game/GameManager.java @@ -1101,7 +1101,7 @@ public class GameManager implements ConfigurableComponentI, GameManagerI { // rename the temp file to the recover file File recoveryFile = null; - boolean result; + boolean result = false; try { log.debug("Created temporary recovery file, path = " + tempFile.getPath()); // check if previous save file exists @@ -1110,11 +1110,12 @@ public class GameManager implements ConfigurableComponentI, GameManagerI { if (recoveryFile.exists()) { log.debug("Potential recovery filePath = " + recoveryFile.getPath()); File backupFile = new File(filePath + ".bak"); - if (recoveryFile.renameTo(backupFile)) { - result = tempFile.renameTo(recoveryFile); - } else { - result = backupFile.renameTo(recoveryFile); - } + //delete backup file if existing + if (backupFile.exists()) backupFile.delete(); + //old recovery file becomes new backup file + recoveryFile.renameTo(backupFile); + //temp file becomes new recoveryFile + result = tempFile.renameTo(recoveryFile); } else { log.debug("Tries to rename temporary file"); result = tempFile.renameTo(recoveryFile); commit 00422b053131be30abc147f1c7ac5924044dcd33 Author: frederickweld <fre...@gm...> Date: Mon Dec 26 09:29:41 2011 +0100 1889: Aligned hex tooltip with style of background map The background map displays all names in Kanji and Romaji (latin alphabet). However, the hex tooltip only displayed the Romaji. Hence, the Kanji have been added to the Map.xml. (cherry picked from commit b26560a6877bcff52d78bdd686f86a06174bf879) diff --git a/data/1889/Map.xml b/data/1889/Map.xml index 19ea9a4..2f42650 100644 --- a/data/1889/Map.xml +++ b/data/1889/Map.xml @@ -1,72 +1,72 @@ <Map tileOrientation="NS" letterOrientation="horizontal" even="A"> <Image file="1889/MapImage.svg" x="6" y="5" scale="0.1632" /> <Hex name="A8" tile="0" cost="80"/> - <Hex name="A10" tile="-10" city="Sukomo"/> + <Hex name="A10" tile="-10" city="宿毛 - Sukomo"/> - <Hex name="B3" tile="-89030" orientation="0" city="Yawatahama"/> <!--NEW TILE:-890030--> + <Hex name="B3" tile="-89030" orientation="0" city="八幡浜 - Yawatahama"/> <!--NEW TILE:-890030--> <Hex name="B5" tile="0"/> - <Hex name="B7" tile="-89511" orientation="0" city="Uwajima"/> <!--NEW TILE:-89511--> + <Hex name="B7" tile="-89511" orientation="0" city="宇和島 - Uwajima"/> <!--NEW TILE:-89511--> <Hex name="B9" tile="0" cost="80"/> - <Hex name="B11" tile="-1" city="Nakamura"/> + <Hex name="B11" tile="-1" city="中村 - Nakamura"/> - <Hex name="C4" tile="-89115" orientation="0" city="Ohzu"/> + <Hex name="C4" tile="-89115" orientation="0" city="大洲 - Ohzu"/> <Hex name="C6" tile="0" cost="80"/> <Hex name="C8" tile="0"/> - <Hex name="C10" tile="-10" city="Kubokawa"/> + <Hex name="C10" tile="-10" city="窪川 - Kubokawa"/> <Hex name="D3" tile="0"/> <Hex name="D5" tile="0" cost="80"/> <Hex name="D7" tile="0" cost="80"/> <Hex name="D9" tile="0"/> - <Hex name="E2" tile="-10" city="Matsuyama"/> + <Hex name="E2" tile="-10" city="松山 - Matsuyama"/> <Hex name="E4" tile="0" cost="80"/> <Hex name="E6" tile="0" cost="80"/> <Hex name="E8" tile="0"/> - <Hex name="F1" tile="-902" orientation="2" value="30,60" city="Imabari"> + <Hex name="F1" tile="-902" orientation="2" value="30,60" city="今治 - Imabari"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> - <Hex name="F3" tile="-10" city="Saijou"/> + <Hex name="F3" tile="-10" city="西條 - Saijou"/> <Hex name="F5" tile="0" cost="80"/> <Hex name="F7" tile="0" cost="80"/> - <Hex name="F9" tile="-89015" orientation="0" city="Kouchi" cost="80"/> <!--NEW TILE:-89015--> + <Hex name="F9" tile="-89015" orientation="0" city="高知 - Kouchi" cost="80"/> <!--NEW TILE:-89015--> - <Hex name="G4" tile="-10" city="Niihama"/> + <Hex name="G4" tile="-10" city="新居浜 - Niihama"/> <Hex name="G6" tile="0" cost="80"/> <Hex name="G8" tile="0" cost="80"/> - <Hex name="G10" tile="-1" city="Nangoku"/> - <Hex name="G12" tile="-10" city="Nahari"/> - <Hex name="G14" tile="-89031" orientation="0" city="Muroto"/> <!--NEW TILE:-890031--> + <Hex name="G10" tile="-1" city="南国 - Nangoku"/> + <Hex name="G12" tile="-10" city="奈半利 - Nahari"/> + <Hex name="G14" tile="-89031" orientation="0" city="室戸 - Muroto"/> <!--NEW TILE:-890031--> <Hex name="H3" tile="0"/> <Hex name="H5" tile="0" cost="80" label="River"/> - <Hex name="H7" tile="-10" city="Ikeda"/> + <Hex name="H7" tile="-10" city="池田 - Ikeda"/> <Hex name="H9" tile="0" cost="80"/> <Hex name="H11" tile="0" cost="80"/> <Hex name="H13" tile="0" cost="80"/> - <Hex name="I2" tile="-10" city="Marugame"/> - <Hex name="I4" tile="-89010" orientation="0" city="Kotohira" cost="80,80,80"/> <!-- NEW TILE: -89010 --> + <Hex name="I2" tile="-10" city="丸亀 - Marugame"/> + <Hex name="I4" tile="-89010" orientation="0" city="琴平 - Kotohira" cost="80,80,80"/> <!-- NEW TILE: -89010 --> <Hex name="I6" tile="0" cost="80" label="River"/> <Hex name="I8" tile="0"/> <Hex name="I10" tile="0"/> - <Hex name="I12" tile="-1" city="Muki"/> + <Hex name="I12" tile="-1" city="牟岐 - Muki"/> - <Hex name="J1" tile="-902" orientation="2" value="20,40" city="Sakaide & Okoyama"> + <Hex name="J1" tile="-902" orientation="2" value="20,40" city="坂出 & 岡山 - Sakaide & Okoyama"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> <Hex name="J3" tile="0"/> - <Hex name="J5" tile="-1" city="Ritsurin Kouen"/> + <Hex name="J5" tile="-1" city="栗林公園 - Ritsurin Kouen"/> <Hex name="J7" tile="-8" orientation="2" label="River"/> - <Hex name="J9" tile="-1" city="Komatsujima"/> - <Hex name="J11" tile="-10" city="Anan"/> + <Hex name="J9" tile="-1" city="小松島 - Komatsujima"/> + <Hex name="J11" tile="-10" city="阿南 - Anan"/> - <Hex name="K4" tile="-89012" orientation="0" city="Takamatsu"/> <!--NEW TILE: -89012--> + <Hex name="K4" tile="-89012" orientation="0" city="高松 - Takamatsu"/> <!--NEW TILE: -89012--> <Hex name="K6" tile="0" cost="80" lablel="River"/> - <Hex name="K8" tile="-10" city="Tokushima"/> + <Hex name="K8" tile="-10" city="徳島 - Tokushima"/> - <Hex name="L7" tile="-902" orientation="3" value="20,40" city="Naruto & Awaji"> + <Hex name="L7" tile="-902" orientation="3" value="20,40" city="鳴門 & 淡路 - Naruto & Awaji"> <RevenueBonus value="40"> <Vertex id="-1"/> <Train type="D"/> </RevenueBonus> </Hex> commit e616a2a37758dd90e9112d2d94e54db12df3d100 Author: frederickweld <fre...@gm...> Date: Sun Dec 25 13:16:31 2011 +0100 Added background map for 1889 (cherry picked from commit dc1a96cdf357f43cb8cf219eb14063bf7e77376a) diff --git a/data/1889/Map.xml b/data/1889/Map.xml index 68d38a4..19ea9a4 100644 --- a/data/1889/Map.xml +++ b/data/1889/Map.xml @@ -1,5 +1,6 @@ <Map tileOrientation="NS" letterOrientation="horizontal" even="A"> - <Hex name="A8" tile="0" cost="80"/> + <Image file="1889/MapImage.svg" x="6" y="5" scale="0.1632" /> + <Hex name="A8" tile="0" cost="80"/> <Hex name="A10" tile="-10" city="Sukomo"/> <Hex name="B3" tile="-89030" orientation="0" city="Yawatahama"/> <!--NEW TILE:-890030--> diff --git a/data/1889/MapImage.svg b/data/1889/MapImage.svg new file mode 100644 index 0000000..7e02ff2 --- /dev/null +++ b/data/1889/MapImage.svg @@ -0,0 +1,4259 @@ +<?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="3698" + height="2703" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="MapImage.svg"> + <defs + id="defs4"> + <linearGradient + id="linearGradient4411"> + <stop + style="stop-color:#3584cf;stop-opacity:0.27450982;" + offset="0" + id="stop4413" /> + <stop + style="stop-color:#3584cf;stop-opacity:1;" + offset="1" + id="stop4415" /> + </linearGradient> + <polygon + id="pt" + points="-0.16245985,0 0,-0.5 0.16245985,0 " + transform="scale(0.0616,0.0616)" + style="fill:#ffffff" /> + <g + id="star"> + <use + xlink:href="#pt" + transform="matrix(-0.80901699,-0.58778525,0.58778525,-0.80901699,0,0)" + id="use4787" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" + id="use4789" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + id="use4791" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,0,0)" + id="use4793" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#pt" + transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,0,0)" + id="use4795" + x="0" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="s5"> + <use + xlink:href="#star" + x="-0.252" + id="use4798" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="-0.126" + id="use4800" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + id="use4802" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.126" + id="use4804" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.252" + id="use4806" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="s6"> + <use + xlink:href="#s5" + x="-0.063000001" + id="use4809" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#star" + x="0.315" + id="use4811" + y="0" + width="5112" + height="3915" /> + </g> + <g + id="x4"> + <use + xlink:href="#s6" + id="use4814" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#s5" + y="0.054000001" + id="use4816" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#s6" + y="0.108" + id="use4818" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#s5" + y="0.162" + id="use4820" + x="0" + width="5112" + height="3915" /> + </g> + <g + id="u"> + <use + xlink:href="#x4" + y="-0.21600001" + id="use4823" + x="0" + width="5112" + height="3915" /> + <use + xlink:href="#x4" + id="use4825" + x="0" + y="0" + width="5112" + height="3915" /> + <use + xlink:href="#s6" + y="0.21600001" + id="use4827" + x="0" + width="5112" + height="3915" /> + </g> + <rect + id="stripe" + width="1235" + height="50" + x="0" + y="0" + style="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="filter9017"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="5.4802153" + id="feGaussianBlur9019" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4411" + id="linearGradient4417" + x1="2255.0874" + y1="5269.3853" + x2="3294.2241" + y2="5269.3853" + gradientUnits="userSpaceOnUse" + spreadMethod="pad" /> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter23757"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="5.8877422" + id="feGaussianBlur23759" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#ff6666" + borderopacity="1" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.28967814" + inkscape:cx="1386.4176" + inkscape:cy="1357.2216" + inkscape:document-units="px" + inkscape:current-layer="layer1" + 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="Geo" + style="display:inline" + transform="translate(0,-4297.3599)"> + <rect + style="fill:#a1c6e9;fill-opacity:1;stroke:none" + id="rect5187" + width="3698.0801" + height="2696.8806" + x="3.0000001e-007" + y="4303.4795" /> + <path + inkscape:connector-curvature="0" + style="fill:#348d4c;fill-opacity:1;stroke:#000000;stroke-width:5.95329189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.86369991;stroke-dasharray:none" + d="m 2898.9121,4306.4953 1.7674,9.5811 -9.55,28.8052 -9.8292,13.3949 -0.5891,40.8669 16.1855,11.3175 7.8757,29.9214 c -0.6394,-27.5779 11.457,-47.6508 23.069,-72.6177 l 36.2469,-0.155 -1.2402,10.1391 c 15.4632,24.7539 22.6196,39.0043 29.0842,72.2457 l 14.6973,9.9222 -2.5427,16.4646 17.674,12.6817 15.5963,-15.5963 -6.7285,23.8441 12.9609,-2.9766 -0.1551,-7.6897 10.0151,-5.7362 -0.341,-15.3484 17.0228,-18.0769 4.4028,4.1239 21.3637,-17.7668 0.2481,11.5345 8.7129,0.5581 10.6663,-42.7583 c 11.6971,-14.5281 28.0225,-22.3652 41.58,-21.5497 l 9.023,15.9375 -8.2168,22.4798 4.8681,23.3481 7.0384,-8.4958 -3.3487,-21.9528 10.0151,-5.7363 4,-15.0692 c 7.5557,-8.7468 15.1742,-15.9748 24.2472,-18.8521 l 7.8137,26.1076 11.3485,-12.0306 4.527,7.9688 2.6976,-8.7749 5.7362,-2.1705 2.6355,-12.6197 15.5965,-15.5964 14.6351,6.0773 c 3.8592,-16.7652 7.2568,-33.6019 10.5114,-50.4479 l -2.6667,-5.3022 -122.8176,0 -2.0775,3.2557 -3.5037,-3.2557 -250.2554,0 z m 400.1108,0 -4.1858,11.4105 21.5186,-10.0772 5.9224,5.4882 c -12.5135,4.6136 -24.2009,14.4428 -32.6812,29.7975 l 6.2324,20.8675 15.9375,-0.217 -0.8992,25.5185 27.534,-0.7442 11.9066,14.8523 17.1776,-10.3563 11.6585,3.3177 11.2555,-15.8755 8.775,4.403 15.5963,-15.5654 0.4031,19.1932 18.914,2.5426 c 10.783,-13.934 23.9181,-22.66 37.1152,-25.6736 l -10.3563,-9.6431 7.9687,-34.0144 5.7363,-2.1704 7.8137,26.1076 18.573,-12.8368 -0.186,-7.6896 18.9761,6.3563 -3.0387,-6.5734 7.0695,-8.4959 4.5271,7.9688 20.1853,-3.7828 -5.8603,-14.1081 -243.5889,0 z m 248.426,0 6.6044,4.2789 3.5658,-4.2789 -10.1702,0 z m 18.201,0 1.3952,1.3023 3.4418,-1.3023 -4.837,0 z m 12.9608,0 0.093,4.62 6.4494,-4.62 -6.5423,0 z m 99.8416,0 1.9534,16.4646 15.5964,-4.9921 0,-11.4725 -17.5498,0 z m -47.1613,2044.8627 -5.6741,6.0154 -1.5504,-5.2091 -7.2245,0.8061 1.7364,12.8678 -7.1626,4.651 -11.8135,-11.0073 -7.1317,4.6199 4.8371,23.3481 -11.2554,15.8754 -7.3176,-3.0386 -1.2092,10.1392 35.0685,13.829 -1.3022,6.2944 c -13.9861,-1.3348 -28.8538,0.5228 -43.2854,8.6508 l -1.2403,10.1392 -28.9913,-0.6201 -4.2789,3.534 |