From afc0924eba3f911550bdcfc5c1562918d422a11e Mon Sep 17 00:00:00 2001 From: ehn-pkalinowski Date: Fri, 18 Jun 2021 00:25:06 -0400 Subject: [PATCH] it somewhat works --- README.md | 16 + feudal_tb_pl.bas | Bin 0 -> 18131 bytes feudal_tb_pl.txt | 1482 ++++++++++++++++++++++++++++++++++++++++ original_feudal_pl.bas | Bin 0 -> 21152 bytes original_feudal_pl.txt | 375 ++++++++++ 5 files changed, 1873 insertions(+) create mode 100644 feudal_tb_pl.bas create mode 100644 feudal_tb_pl.txt create mode 100644 original_feudal_pl.bas create mode 100644 original_feudal_pl.txt diff --git a/README.md b/README.md index e55846e..6982f7f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,18 @@ # feudal-economy Rework of old BASIC game for Atari 8-bit + +I got so hooked on an old game called "Feudal Economy" that I used to play with my friends when I was a kid. + +Holy crap, when I started to look at the code I crashed, spaghetti code turbo power, but it's not the programmer's fault, it's hard to do otherwise in basic... + +Anyway, I rewrote the code to tbxl_parser of the great dmsc (https://github.com/dmsc/tbxl-parser) and with a benedictine effort I unspaghetti'ed code and deobfuscated most of the variables and procedures. + +Unfortunately I didn't do without adding a bunch of bugs. + +The current version is worse than the original, because I threw away most of the error handling. But in most cases it is possible to continue by typing CONT 2 times. + +Second step - fixing the errors, getting the "quality" of the original, but not orthodoxly :] + +Third step - rewriting to madpascal or something, this is already a task close to trivial from the current code form. + +Step four - game server and support via fujinet, diff --git a/feudal_tb_pl.bas b/feudal_tb_pl.bas new file mode 100644 index 0000000000000000000000000000000000000000..4b42f4da4ca8881c9739b7b68b48c3ea07f153e6 GIT binary patch literal 18131 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 then AX=1 + NEXT A + IF AX=0 THEN exec continue + + 'all dead?' + AX=0 + FOR A=1 TO players + IF dead(A)=0 THEN AX=1 + NEXT A + IF AX=0 THEN run + + IF E>players + E=0 + Y1=Y1+1: 'next year + else + IF Y1<=death_date(E) and dead(E) = 0 + IF Y1=death_date(E) OR land(E)<1001 + exec game_over + else + exec weather + exec grain_land_trade + exec modify_taxes + exec map + '666' + exec development + exec winner_check + IF cash(E)>0 THEN cash(E)=INT(cash(E)*1.1) + endif + endif + endif + loop + + + +proc splash_screen + GRAPHICS 0 + SETCOLOR 2,0,2 + POKE @LMARGN,4 + POKE @RMARGN,39 + POKE @CRSINH,1 + POSITION 9,9 + ? "\7D\1D\1D\1D \A0 \A0 \A0 \A0" + ? "\A0 \A0 \A0 \A0 \8A\A0\A0\A0\A0\A0\88" + ? "\8A\A0\A0\A0\A0\A0\88 \A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0 \A0\A0\A0 \A0" + ? " \A0\13\A0\A0\A0 \A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0 \A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0 \A0\A0 \A0\A0 \A0\A0 \A0\A0 \A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\D0\C1\CE\CF\D7\C9\C5\A0\C9\A0\D0\CF\C4\C4\C1\CE\C9\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\92\92\92\92\92\92\92\92\92\92\92\92\92\92\92\92\92\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\E6\E5\F5\E4\E1\EC\EE\E1\A0\E5\EB\EF\EE\EF\ED\E9\E1\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\13\13\13\13\13\13\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0\13\13\13\13\13\13\A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0 \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? " \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0 \A0\A0\A0\A0\A0\A0\A0\A0\A0\A0" + ? + ? " Chcesz zaladowac ostatni stan gry?" +endproc + +proc initial_settings + ? "\7D" + POSITION 7,8 + ? "PODAJ LICZBE GRACZY (1-6)?" + exec get_digit, 6 + players=key + names$=" " + names$(43,49)="PEPPONE" + FOR A=1 TO players + markets(A)=0 + palace_points(A)=0 + cathedral_points(A)=0 + mills(A)=0 + dead(A)=0 + POKE @CRSINH,0 + ? "\7D" + POSITION 9,5 + ? "IMIE GRACZA ";A;"?" + POSITION 12,8 + ? "\0D\0D\0D\0D\0D\0D\0D"; + ? "\1C\1E\1E\1E\1E\1E\1E\1E\1E"; + ? ""; + INPUT A$ + POKE @CRSINH,1 + IF LEN(A$)>7 THEN A$=A$(1,7) + ? + names$(A*7-6,A*7-5+LEN(A$))=A$ + ? "\7D\1D\1D\1D ";names$(A*7-6,A*7-7+LEN(A$));" to mezczyzna czy kobieta?"; + sex(A)=0 + repeat + get KEY + IF key=@key_k THEN sex(A)=15 + until key=@key_k or key=@key_m + customs_duty(A)=25 + sales_tax(A)=10 + income_tax(A)=5 + justice(A)=2 + death_date(A)=1440+RaND(15) + cash(A)=100000:'1000 'Initial wealth + land(A)=10000 + grain(A)=5000 + victory_points(A)=1 + status_points(A)=1 + nobles(A)=4 + troops(A)=25 + clergymen(A)=5 + merchants(A)=25 + serfs(A)=2000 + land_prices(A)=2 + NEXT A + + ? "\7D\1D\1D\1D\1D\1D PODAJ POZIOM GRY (0-9)" + exec get_digit, 9 + status_points(0)=key+6 +endproc + +proc top_of_the_screen + if victory_points>0 + ? titles$(N1(victory_points(E)+sex(E)),N2(victory_points(E)+sex(E)));" "; + endif + X=0 + repeat + ? names$(E*7-6+X,E*7-6+X); + X=X+1 + until names$(E*7-6+X,E*7-6+X)=" " or X>=7 +endproc + +proc weather + POKE @LMARGN,1 + W=rand(5) + 1 + if w = 1 then W$="SUSZA GROZI GLOD" + if w = 2 then W$="ZLA POGODA-LICHE ZBIORY" + if w = 3 then W$="NORMALNA POGODA-PRZECIETNE ZBIORY" + if w = 4 then W$="DOBRA POGODA-B.DOBRE ZBIORY" + if w = 5 then W$="WSPANIALA POGODA-$WIETNE ZBIORY" + R=rand(25)+1 + V=(grain(E)*R)/100 + grain(E)=grain(E)-V + REM rats eat R% + X=land(E) + Y=(serfs(E)-mills(E)*100)*5 + IF Y<0 THEN Y=0 + REM subtract 100 serfs from harvest for each mill + IF Y2 THEN Y=2 + endif + IF Y<0.8 THEN Y=0.8 + L=L*Y + L=INT(L*10)/10 + REM land price=2dice,weather;proportion of grain purchased raises land price + IF L>land_prices(E)+0.8 THEN L=land_prices(E)+0.8 + REM max amt land price can rise=0.8 + IF Lgrain(E)-D1 THEN SD=grain(E)-D1 + IF SD<0 THEN SD=0 + ? "NASIONA ";SD;" (";INT(100*SD/(land(E)/2));"%)" + FOR V=1 TO 37 + ? "\0E"; + NEXT V + ? + ? "ZAPAS ZAP. NA CENA CENA SKARB" + ? "ZIARNA ZIARNO ZIARNA ZIEMI" + Z9=PEEK(@ROWCRS) + ? grain(E)-SD + POSITION 9,Z9 + ? D1 + POSITION 17,Z9 + ? G + POSITION 24,Z9 + ? L + POSITION 31,Z9 + ? cash(E) + ? "Korce Korce Tys.K Hektar Dukaty " +endproc + +proc grain_land_trade + GRAPHICS 0 + SETCOLOR 2,0,2 + ? + exec top_of_the_screen + POSITION 27,1 + ? " Rok ";Y1 + ? + exec harvest_report + POKE @CRSINH,1 + do + ? "\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14" + ? + ? "<1> Kupno ziarna <3> Kupno ziemi" + ? + ? "<2> Sprzedaz ziarna <4> Sprzedaz ziemi" + ? + ? " kontynuacja" + exec get_digit, 4 + if key = -1 + exit + endif + I1=key + 'IF I1=0 THEN RETURN + + if i1 = 1 + ? "\9CILE ZIARNA I NASION \CB\D5\D0\D5\CA\C5\D3\DA "; + exec input_number, 1, 500000 + cash(E)=cash(E)-(I1*G/1000) + grain(E)=grain(E)+I1 + endif + + if i1 = 2 + ? "\9CILE ZIARNA I NASION \D3\D0\D2\DA\C5\C4\C1\CA\C5\D3\DA"; + exec input_number, 1, 500000 + IF I1>grain(E) + ? "\1C\9CTYLE NIE POSIADASZ\FD" + pause DELAY + else + cash(E)=cash(E)+(I1*G/1000) + grain(E)=grain(E)-I1 + endif + endif + + if i1 = 3 + ? "\9CILE HEKTAROW \CB\D5\D0\D5\CA\C5\D3\DA"; + exec input_number, 1, 100000 + land(E)=land(E)+I1 + cash(E)=cash(E)-(I1*L) + endif + + if i1 = 4 + ? "\9CILE HEKTAROW \D3\D0\D2\DA\C5\C4\C1\CA\C5\D3\DA"; + exec input_number, 1, 100000 + IF I1>land(E)-5000 + ? "\1C\9CMUSISZ TRZYMAC CO NAJMNIEJ 5000 HEKTAROW!\FD" + pause DELAY + else + land(E)=land(E)-I1 + cash(E)=cash(E)+(I1*L) + endif + endif + + '2720 + POSITION 2,7 + ? "\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C"; + exec land_report + loop + exec calc_round_results +endproc + +proc calc_round_results + do: 'fake loop for if/then purposes' + ? "\9CIle ziarna dajesz dla ludzi?" + ? "\99\D2\C5\D4 dajesz tyle,jakie zap. "; + POKE @CRSINH,0 + INPUT A$ + if a$="" + G1=D1 + else + g1=val(a$) + endif + + POKE @CRSINH,1 + IF G1>grain(E) + ? "\1C\9C\9CBRAKUJE CI ";G1-INT(grain(E));" KORCOW !\FD" + pause DELAY+DELAY + else + exit + endif + loop + do: 'fake loop' + grain(E)=grain(E)-G1 + POKE @LMARGN,2 + ? "\7D" + exec top_of_the_screen + ? ", ";Y1 + ? + Z=G1/D1-1 + IF Z>0 THEN Z=Z/2 + IF Z>0.25 THEN Z=Z/10+0.25 + Z1=50-customs_duty(E)-sales_tax(E)-income_tax(E) + IF Z1<0 THEN Z1=Z1*justice(E) + Z1=Z1/10 + IF Z1>0 THEN Z1=Z1+3-justice(E) + Z=Z+(Z1/10) + IF Z>0.5 THEN Z=0.5 + IF G1<(D1-1) THEN exec get_births_and_deaths:exit + IF serfs(E)<0 THEN serfs(E)=0 + A=7 + ? + exec births + A=3 + exec deaths + + REM if sales+customs tax_rates<35%, add 1-4 extra merchants/turn + IF (customs_duty(E)+sales_tax(E))<35 THEN merchants(E)=merchants(E)+RaND(4)+1 + REM if income_tax rate less than a random number 1-20 then add 0-1 nobles, 0-2 clergy + IF income_tax(E) < RaND(20)+1 + nobles(E)=nobles(E)+RaND(2) + clergymen(E)=clergymen(E)+RaND(3) + endif + IF G1<(D1*1.3) THEN exit + Z1=serfs(E)/1000 + Z=(G1-D1)/D1*10 + Z=Z*Z1*RaND(25) + 1 + RaND(20) + 1 + IF Z>32000 THEN Z=32000 + Z1=Z + Z=INT(RaND(Z1)+INT(Z1/5)) + ? Z;" przybylo do twego lenna" + ? + serfs(E)=serfs(E)+Z + Z1=Z/5 + Z=RaND(Z1)+1 + IF Z>50 THEN Z=50 + merchants(E)=merchants(E)+Z + nobles(E)=nobles(E)+1 + clergymen(E)=clergymen(E)+2 + REM migration adds 1 noble, 2 clergy, up to 50 merchants(0-20% of new serfs) + exit: 'not a real loop' + loop + + IF justice(E)>2 + J1=serfs(E)/100*(justice(E)-2)*(justice(E)-2) + J1=RaND(J1)+1 + serfs(E)=serfs(E)-J1 + ? J1;" poddanych zbieglo" + ? + endif + + IF cash(E)<0 + cash(E)=INT(cash(E)*1.5) + ? "Lichwiarze domagaja sie zwrotu ";ABS(INT(cash(E)/3));" dukatow" + ? + endif + Z=11-INT(sales_tax(E)/10) + A=INT((serfs(E)-500+300*mills(E))/1000) + FOR V=1 TO 10 + IF markets(E)>A*V THEN Z=Z-1 + REM margins + NEXT V + Z1=Z/100*markets(E)*1000 + cash(E)=cash(E)+Z + IF Z1>0 THEN ? "Kramy przyniosly ";Z1;" dukatow (";Z;"%)" + IF serfs(E)<32766 + 'why this check is here?' + serfs(E)=int(serfs(E)) + endif + Z=180-customs_duty(E)*2-justice(E)*10-income_tax(E) + IF Z<0 OR serfs(E)/1000 + cash(E)=cash(E)+Z + ? "Mlyny przyniosly ";Z;" dukatow (";INT((Z/mills(E))/20);"%)" + endif + troops(E)=INT(troops(E)) + Z=troops(E)*3 + ? + ? troops(E);" Wojownikow kosztuje ";Z;" dukatow" + ? + ? + cash(E)=cash(E)-Z + IF (land(E)/1000)>troops(E) THEN exec military_attack + REM CHECK DEFENSES + while (land(E)/500)>=troops(E) + 'nested ifs did not work, but while/exit is almost an if + FOR A=1 TO players + IF A <> E and troops(A)>(troops(E)*2) THEN exec military_attack + NEXT A + exit + wend + ? + ? + exec press_any +endproc + +proc show_taxes + 'justice$="" + J=INT((justice(E)*300-500)*victory_points(E)) + IF justice(E)=1 THEN justice$=" LAGODNE" + IF justice(E)=2 THEN justice$="UMIARKOWANE" + IF justice(E)=3 THEN justice$=" SUROWE" + IF justice(E)=4 THEN justice$="DRAKONSKIE" + Y=150-customs_duty(E)-sales_tax(E)-income_tax(E) + IF Y<1 THEN Y=1 + REM you get points if your 3 tax rates add up to less than 50 + C1=(nobles(E)*180+clergymen(E)*75+merchants(E)*20)*(Y/100)+status_points(E)*100 + REM taxable trade=Nobles, clergy, merchants, points, tax<50 + S1=(nobles(E)*50+merchants(E)*25+status_points(E)*10)*(Y/100)*(5-justice(E))/2 + REM taxable retail sales=nobles,merch,points,tax<50,JUSTICE + I1=nobles(E)*250+status_points(E)*20+(10*justice(E)*merchants(E))*(Y/100) + REM TAXABLE INCOME=nobles, points, merchants*justice + C1=C1*customs_duty(E)/100 + IF C1<32760 THEN C1=INT(C1) + S1=S1*sales_tax(E)/100 + IF S1<32760 THEN S1=INT(S1) + I1=I1*income_tax(E)/100 + IF I1<32760 THEN I1=INT(I1) + ? "Twoje Dochody ";J+C1+S1+I1;" dukatow" + ? + ? " CLO SPRZEDAZ KUPNO PRAWO " + Z9=PEEK(@ROWCRS) + POSITION 3,Z9 + ? customs_duty(E);"%" + POSITION 12,Z9 + ? sales_tax(E);"%" + POSITION 20,Z9 + ? income_tax(E);"%" + POSITION 27,Z9 + ? justice$ + ? + Z9=PEEK(@ROWCRS) + POSITION 2,Z9 + ? C1 + POSITION 11,Z9 + ? S1 + POSITION 19,Z9 + ? I1 + POSITION 27,Z9 + ? J;" DUK." +endproc + +proc modify_taxes + do + POKE @LMARGN,2 + ? "\7D" + POKE @CRSINH,1 + exec top_of_the_screen + ? + ? "Rok ";Y1;" Ziemia ";land(E);" hektarow" + ? + exec show_taxes + ? + ? " \14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14" + ? + ? "<1> Clo <2> Podatek od sprzedazy" + ? + ? "<3> Podatek od kupna <4> Prawo " + ? + ? " kontynuacja" + exec get_digit, 4 + IF key = -1 or key = 0 + exec is_bankrupt + exit + endif + I=key + do + POSITION 2,13 + ? "\9C\9C\9C\9C\9C\9C\9C\9C\9C\9C"; + POKE @CRSINH,0 + 'ON I GOTO 3070,3110,3140,3170 + if i = 1 + ? "NOWE CLO (0 to 100)"; + exec input_number, 0, 100 + IF I1=-1 + I=1 + exit + else + customs_duty(E)=I1 + endif + exit + endif + if i = 2 + ? "NOWY POD.SPRZ.(0 to 50)"; + exec input_number, 0, 50 + IF i1=-1 + I=2 + ''? "\7D" + exit + else + sales_tax(E)=I1 + endif + exit + endif + if i = 3 + ? "NOWY POD.KUPNA (0 to 25)"; + exec input_number, 0, 25 + IF i1=-1 + I=3 + ''? "\7D" + exit + else + income_tax(E)=I1 + endif + exit + endif + if i = 4 + POKE @CRSINH,1 + ? " \A0\A0\A0\D0\D2\C1\D7\CF\A0\A0\A0" + ? + ? " <1> Lagodne" + ? + ? " <2> Umiarkowane" + ? + ? " <3> Surowe" + ? + ? " <4> Drakonskie" + exec get_digit, 4 + justice(E)=key + exit + endif + loop + if key = -1 then exit + loop +endproc + +proc births + POKE @CRSINH,1 + Z= (RaND(A)+1)*serfs(E)/100 + Z1=INT(Z) + ? Z1;" poddanych sie urodzilo" + serfs(E)=serfs(E)+Z1 +endproc + +proc deaths + Z= (RaND(A)+1)*serfs(E)/100 + Z1=INT(Z) + ? Z1;" poddanych zmarlo" + IF Z1>serfs(E)*0.3 + dead(E)=1 + pause DELAY + A=7 + endif + ? + serfs(E)=serfs(E)-Z1 +endproc + +proc get_births_and_deaths + X=(D1-G1)/D1*100-9 + V=X + IF X>65 THEN X=65 + IF X<0 + X=0 + V=0 + endif + A=3 + exec births + A=V+8 + exec deaths +endproc + + +proc res_table_1st_column + POKE @LMARGN,2 + GRAPHICS 0 + SETCOLOR 2,0,2 + POKE @CRSINH,1 + ? + ? + ? "WASALE" + ? + ? "WOJOWNICY" + ? + ? "KLER" + ? + ? "KUPCY" + ? + ? "PODDANI" + ? + ? "ZIEMIA" + ? + ? "SKARB" + ? + ? "KRAMY" + ? + ? "MLYNY" +endproc + +proc results_table + F1=1 + exec res_table_1st_column + Z1=1:'column number 1-3 + FOR A=F1 TO players + POSITION 4+Z1*9,1 + ? names$(A*7-6,A*7) + POSITION 5+Z1*9,2 + ? nobles(A) + POSITION 5+Z1*9,4 + ? troops(A) + POSITION 5+Z1*9,6 + ? clergymen(A) + POSITION 5+Z1*9,8 + ? merchants(A) + POSITION 5+Z1*9,10 + ? serfs(A) + POSITION 5+Z1*9,12 + ? land(A) + POSITION 5+Z1*9,14 + cash(A)=INT(cash(A)) + ? cash(A) + POSITION 5+Z1*9,16 + ? markets(A) + POSITION 5+Z1*9,18 + ? mills(A) + Z1=Z1+1 + IF A=3 AND players>3 + 'second page' + exec press_any + exec res_table_1st_column + z1=1 + endif + NEXT A + ? + exec press_any +endproc + +proc is_bankrupt + cash(E)=cash(E)+C1+S1+I1+J + IF cash(E)<(-10000*victory_points(E)) + GRAPHICS 0 + exec top_of_the_screen + ? " JEST BANKRUTEM!" + ? + ? "Kredytorzy zablokowali" + ? " twoje aktywa!" + ? + exec press_any + markets(E)=0 + grain(E)=nobles(E)*100+clergymen(E)*40+merchants(E)*30+troops(E)*10+serfs(E)*5+2000 + palace_points(E)=0 + cathedral_points(E)=0 + mills(E)=0 + land(E)=6000 + status_points(E)=1 + cash(E)=100 + victory_points(E)=victory_points(E)-2 + merchants(E)=25 + nobles(E)=5 + clergymen(E)=5 + troops(E)=troops(E)/2 + endif +endproc + +proc military_attack + Z=0 + FOR A=1 TO players + REM war + IF A<>E and troops(A)>=troops(E) and troops(A)>=(1.2*(land(A)/1000)) + IF troops(A)>troops(Z) THEN Z=A + REM define invader + endif + NEXT A + IF Z=0 + Z=7 + A=RaND(9000)+1001 + REM "Peppone" + else + A=INT((troops(Z)-troops(E)))*50 + IF A>land(E)-1000 THEN A=land(E)-1000 + endif + IF A<1000 THEN A=1000 + ? titles$(N1(Z)+sex(Z),N2(Z)+sex(Z));" ";names$(Z*7-6,Z*7) + ? "najechal i zajal ";A + ? "hektarow ziemi!" + land(Z)=land(Z)+A + land(E)=land(E)-A + Z=INT(RaND(40)*(A/1000)) + IF Z>troops(E)-15 THEN Z=troops(E)-15 + IF Z<0 THEN Z=0 + exec top_of_the_screen + ? " stracil ";Z;" wojownikow!" + troops(E)=troops(E)-Z + ? + 'exec press_any +endproc + +proc press_any + ? "\CE\C1\C3\C9\A4\CE\C9\CA\A0\C4\CF\D7\CF\CC\CE\D9\A0\CB\CC\C1\D7\C9\D3\DA" + get key +endproc + +proc get_digit, max_digit + repeat + get KEY + until key>47 and key<@key_1+max_digit or key=@key_ret + if key=@key_ret + key = -1: 'RETURN key marker + else + key = val(chr$(key)) + endif +endproc + +proc input_number, min_number, max_number + POKE @CRSINH,0 + INPUT I1 + POKE @CRSINH,1 + IF I1max_number OR I<>INT(I) + ? "\FD"; + 'error marker + I1 = -1 + endif +endproc + +proc adjust_points + IF A>25 THEN A=25 + A=INT(A) + Z=Z+A +endproc + +proc development + do + do + POKE @LMARGN,5 + CLOSE #1 + GRAPHICS 0 + SETCOLOR 2,0,3 + POKE @CRSINH,1 + ? + exec top_of_the_screen + ? + FOR V=1 TO 28 + ? "-"; + NEXT V + ? + ? cash(E);" Dukatow" + ? + ? + ? "MOZLIWO$CI, ROK ";Y1 + ? "\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D\0D" + ? "<1> Kram 1000" + ? "<2> Mlyn 2000" + ? "<3> Rozbudowa Zamku 3000" + ? "<4> Rozbudowa Katedry 5000" + ? "<5> 20 Wojownikow 500" + ? + ? "<6> Stan posiadania 100" + ? "<7> Mapa 100" + ? "<8> Samobojstwo" + ? "<9> Zapisanie stanu gry na D:" + ? "\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E" + ? + ? "\99\D2\C5\D4\D5\D2\CE\19 kontynuacja"; + exec get_digit, 9 + if key < 1 then exit + IF key=6 + exec results_table + cash(E)=cash(E)-100 + exit + endif + IF key=7 + exec map + cash(E)=cash(E)-100 + exit + endif + IF key=8 + ? "\9CPodaj pierwsza litere imienia"; + get key + POKE @CH,255 + IF names$(E*7-6,E*7-6)=CHR$(key) + dead(E)=1 + exec game_over + key=-1 + endif + exit + endif + IF key=9 + exec save_game + exit + endif + 'key {1..5}' + I = key + ? "\9CIle jednostek nr. ";I;"?"; + exec get_digit, 9 + ZZ=key + IF ZZ<1 THEN exit + FOR IJ=1 TO ZZ + if i=1 + markets(E)=markets(E)+1 + merchants(E)=merchants(E)+5 + cash(E)=cash(E)-1000 + status_points(E)=status_points(E)+0.1 + endif + if i=2 + mills(E)=mills(E)+1 + cash(E)=cash(E)-2000 + status_points(E)=status_points(E)+0.25 + endif + if i=3 + palace_points(E)=palace_points(E)+1 + nobles(E)=nobles(E)+RaND(2)+1 + cash(E)=cash(E)-3000 + status_points(E)=status_points(E)+0.5 + endif + if i=4 + cathedral_points(E)=cathedral_points(E)+1 + clergymen(E)=clergymen(E)+RaND(6)+1 + cash(E)=cash(E)-5000 + status_points(E)=status_points(E)+1 + endif + if i=5 + troops(E)=troops(E)+20 + serfs(E)=serfs(E)-20 + cash(E)=cash(E)-500 + endif + NEXT IJ + loop + if key = -1 then exit + loop +endproc + + + +proc winner_check + Z=0 + A=markets(E) + exec adjust_points + A=palace_points(E) + exec adjust_points + A=cathedral_points(E)*2 + exec adjust_points + A=mills(E) + exec adjust_points + A=cash(E)/5000 + exec adjust_points + A=land(E)/4000 + exec adjust_points + A=merchants(E)/40 + exec adjust_points + A=nobles(E) + exec adjust_points + A=troops(E)/20 + exec adjust_points + A=clergymen(E)/10 + exec adjust_points + A=serfs(E)/1000 + exec adjust_points + A=status_points(E)/5 + exec adjust_points + REM enough points to win? + A=Z/status_points(0)-justice(E) + A=INT(A) + IF A>15 + A=15 + endif: 'TBXL-parser error!!! + REM adjust for difficulty,justice + IF (Y1+2)=death_date(E) THEN victory_points(E)=victory_points(E)+1 + IF A<1 THEN A=1 + IF victory_points(E)-1<=A + victory_points(E)=A + while winner(E)<>1 and victory_points(E)>=15 + GRAPHICS 7 + winner(E)=1 + ? "* "; + exec top_of_the_screen + ? " WYNIKI KONCOWE!" + exec draw_map + exec results_table + exec continue + exit + wend + endif +endproc + +proc continue + ? "\9CChcesz grac dalej?"; + do + get KEY + if key=@key_y + exit + else + run + endif + loop +endproc + +proc game_over + GRAPHICS 0 + SETCOLOR 2,3,2 + ? + ? "FATALNE WIE$CI" + ? + exec top_of_the_screen + ? " zeszedl $miertelnie" + ? + victory_points(E)=-1 + dead(e) = dead(e) + 1:'to prevent displaying game over more than once + do:'fake loop + IF land(E)<1001 + ? "podczas powstania" + exit + endif + IF A=71 + ? "podczas zamieszek glodowych" + A=0 + exit + endif + Y=RaND(6)+1 + IF Y1>1455 + ? "ze staro$ci w R.P. ";Y1 + else + IF Y=1 THEN ? "podczas zarazy" + IF Y=2 THEN ? "na tyfus" + IF Y=3 THEN ? "na ospe" + IF Y=4 THEN ? "na czerwonke" + IF Y=5 THEN ? "przez zamordowanie" + IF Y=6 THEN ? "przez zatrucie" + endif + exit:'fake loop + loop + ? + exec press_any + exec map + exec results_table +endproc + +proc map + GRAPHICS 7 + SETCOLOR 4,11,5 + SETCOLOR 2,E-1,2 + CC=3 + exec draw_map +endproc + +proc draw_map + LL=int(land(E)/1000) + do: 'emulating if elif with do loop exit' + IF LL<10 + X=100 + Y=45 + exit + endif + IF LL<20 + X=100 + Y=45-(LL-10) + exit + endif + IF LL<30 + X=80 + Y=45-(LL-20) + exit + endif + IF LL<40 + X=60 + Y=45-(LL-30) + exit + endif + IF LL<50 + X=40 + Y=45-(LL-40) + exit + endif + IF LL<60 + X=5 + Y=45-(LL-50) + exit + endif + X=5 + Y=3 + exit + loop + + REM draw boundaries + COLOR CC + PLOT X,Y + DRAWTO 159,Y + PLOT X,Y + DRAWTO X,79 + + IF troops(E)-5>=land(E)/1000 + REM simple tower + FOR A=X+1 TO X+6 + FOR B=Y+1 TO Y+9 + PLOT A,B + NEXT B + NEXT A + FOR Z=X TO X+6 STEP 2 + PLOT Z,Y-1 + NEXT Z + endif + IF troops(E)/2>=land(E)/1000 + REM 2-turret tower + FOR A=X+7 TO X+10 + FOR B=Y+1 TO Y+9 + PLOT A,B + NEXT B + NEXT A + PLOT X+8,Y-1 + PLOT X+10,Y-1 + COLOR 0 + PLOT X+3,Y+2 + PLOT X+7,Y+4 + COLOR CC + PLOT X+1,Y-1 + PLOT X+9,Y-1 + PLOT X,Y-2 + PLOT X+2,Y-2 + PLOT X+8,Y-2 + PLOT X+10,Y-2 + endif + + Z=cathedral_points(E) + COLOR CC + IF Z>15 THEN Z=15 + REM cathedral points + ' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 'ON Z GOTO 5250,5245,5240,5230,5220,5208,5206,5204,5202,5200,5198,5196,5194,5192,5190,5180 + if z>14 + PLOT 120,50 + DRAWTO 138,50 + COLOR 0 + PLOT 127,50 + PLOT 131,50 + COLOR CC + endif + if z>13 + FOR A=120 TO 124 + FOR B=40 TO 41 + PLOT A,B + NEXT B + NEXT A + endif + if z>12 + FOR A=120 TO 124 + FOR B=42 TO 43 + PLOT A,B + NEXT B + NEXT A + endif + if z>11 + FOR A=120 TO 124 + FOR B=44 TO 45 + PLOT A,B + NEXT B + NEXT A + COLOR 0 + PLOT 122,44 + PLOT 122,45 + COLOR CC + endif + if z>10 + FOR A=120 TO 124 + FOR B=46 TO 47 + PLOT A,B + NEXT B + NEXT A + endif + if z>9 + FOR A=120 TO 124 + FOR B=48 TO 49 + PLOT A,B + NEXT B + NEXT A + endif + if z>8 + FOR A=134 TO 138 + FOR B=40 TO 41 + PLOT A,B + NEXT B + NEXT A + ENDIF + if z>7 + FOR A=134 TO 138 + FOR B=42 TO 43 + PLOT A,B + NEXT B + NEXT A + endif + if z>6 + FOR A=134 TO 138 + FOR B=44 TO 45 + PLOT A,B + NEXT B + NEXT A + COLOR 0 + PLOT 136,44 + PLOT 136,45 + COLOR CC + endif + if z>5 + FOR A=134 TO 138 + FOR B=46 TO 47 + PLOT A,B + NEXT B + NEXT A + endif + if z>4 + FOR A=134 TO 138 + FOR B=48 TO 49 + PLOT A,B + NEXT B + NEXT A + endif + if z>3 + FOR B=36 TO 41 + PLOT 129,B + NEXT B + PLOT 128,38 + PLOT 130,38 + endif + if z>2 + FOR A=127 TO 131 + FOR B=42 TO 44 + PLOT A,B + NEXT B + NEXT A + COLOR 0 + PLOT 127,42 + PLOT 131,42 + COLOR CC + endif + if z>1 + FOR A=125 TO 133 + FOR B=45 TO 46 + PLOT A,B + NEXT B + NEXT A + endif + if z>0 + FOR A=125 TO 133 + FOR B=47 TO 49 + PLOT A,B + NEXT B + NEXT A + COLOR 0 + PLOT 127,49 + PLOT 131,49 + COLOR CC + endif +'-------end-of-cathedral-------' + + Z=palace_points(E) + IF Z<>0 + REM PALACE POINTS + COLOR CC + IF Z>12 + Z=13 + PLOT 94,52 + PLOT 110,52 + endif + IF Z>11 + PLOT 93,53 + PLOT 95,53 + PLOT 109,53 + PLOT 111,53 + PLOT 94,52 + PLOT 110,52 + endif + IF Z>10 + COLOR 0 + PLOT 101,53 + PLOT 103,52 + COLOR CC + endif + IF Z>9 + PLOT 101,50 + PLOT 103,50 + PLOT 102,49 + endif + IF Z>8 + FOR A=100 TO 104 + FOR B=51 TO 53 + PLOT A,B + NEXT B + NEXT A + endif + FOR A=102-Z TO 102+Z + FOR B=54 TO 56 + PLOT A,B + NEXT B + NEXT A + FOR A=103-Z TO 101+Z STEP 2 + COLOR 0 + PLOT A,55 + NEXT A + PLOT 102,56 + COLOR CC + endif + Z=serfs(E)-mills(E)*100 + IF Z<1 THEN Z=1 + Z=Z*5/land(E)*10+1 + IF Z>10 THEN Z=10 + Z=(Z/10)*(77-Y) + Z=INT(79-Z) + REM locate farmer & plow: the higher the more labor/land + FOR A=145 TO 153 + PLOT A,Z + NEXT A + COLOR 0 + PLOT 148,Z + PLOT 149,Z + PLOT 151,Z + COLOR CC + FOR A=145 TO 153 STEP 2 + PLOT A,Z+1 + NEXT A + PLOT 144,Z-1 + PLOT 153,Z-1 + Z=markets(E)*2 + IF Z>0 + REM draw market stalls + IF Z>154-X THEN Z=154-X + FOR A=X TO X+Z STEP 2 + PLOT A,60 + PLOT A+1,60 + PLOT A+1,61 + PLOT A+1,62 + NEXT A + endif + Z=mills(E) + IF Z<>0 + REM draw mills + IF Z>153-X THEN Z=153-X + FOR B=76 TO 78 + PLOT 153-Z,B + DRAWTO 155,B + NEXT B + COLOR 0 + FOR A=155-Z TO 153 STEP 2 + PLOT A,77 + NEXT A + endif + COLOR CC + ? + ? "ROK: ";Y1;" "; + exec top_of_the_screen + ? + exec press_any + GRAPHICS 0 + SETCOLOR 2,0,2 +endproc + +proc save_game + CLOSE #1 + OPEN #1,8,0,"D:SAVEGAME.DAT" + ? #1;names$ + ? #1;players + ? #1;U + ? #1;E + ? #1;W + ? #1;AX + ? #1;Y1 + ? #1;status_points(0) + FOR A=1 TO players + ? #1;land(A) + ? #1;troops(A) + ? #1;cathedral_points(A) + ? #1;mills(A) + ? #1;markets(A) + ? #1;palace_points(A) + ? #1;serfs(A) + ? #1;cash(A) + ? #1;winner(A) + ? #1;customs_duty(A) + ? #1;sex(A) + ? #1;sales_tax(A) + ? #1;income_tax(A) + ? #1;justice(A) + ? #1;death_date(A) + ? #1;grain(A) + ? #1;victory_points(A) + ? #1;status_points(A) + ? #1;nobles(A) + ? #1;clergymen(A) + ? #1;merchants(A) + ? #1;dead(A) + ? #1;land_prices(A) + NEXT A + FOR A=1 TO 30 + ? #1;N1(A) + ? #1;N2(A) + NEXT A + CLOSE #1 + POKE @CRSINH,1 + ? "\7D" + POSITION 13,10 + ? "GRA ZAPISANA" + pause delay + POKE @CRSINH,0 +endproc + +proc load_game + 'TRAP 22050 + OPEN #1,4,0,"D:SAVEGAME.DAT" + REM LOAD GAME + ? "\7D" + POSITION 12,10 + ? "LADOWANIE GRY" + INPUT #1;names$ + INPUT #1;players + INPUT #1;U + INPUT #1;E + INPUT #1;W + INPUT #1;AX + INPUT #1;Y1 + INPUT #1;B + status_points(0)=B + FOR A=1 TO players + INPUT #1;B + land(A)=B + INPUT #1;B + troops(A)=B + INPUT #1;B + cathedral_points(A)=B + INPUT #1;B + mills(A)=B + INPUT #1;B + markets(A)=B + INPUT #1;B + palace_points(A)=B + INPUT #1;B + serfs(A)=B + INPUT #1;B + cash(A)=B + INPUT #1;B + winner(A)=B + INPUT #1;B + customs_duty(A)=B + INPUT #1;B + sex(A)=B + INPUT #1;B + sales_tax(A)=B + INPUT #1;B + income_tax(A)=B + INPUT #1;B + justice(A)=B + INPUT #1;B + death_date(A)=B + INPUT #1;B + grain(A)=B + INPUT #1;B + victory_points(A)=B + INPUT #1;B + status_points(A)=B + INPUT #1;B + nobles(A)=B + INPUT #1;B + clergymen(A)=B + INPUT #1;B + merchants(A)=B + INPUT #1;B + dead(A)=B + INPUT #1;B + land_prices(A)=B + NEXT A + FOR A=1 TO 30 + INPUT #1;B + N1(A)=B + INPUT #1;B + N2(A)=B + NEXT A + CLOSE #1 + POKE @CRSINH,0 +'22050 +'' CLOSE #1 +'' ? "\7D" +'' POSITION 7,11 +'' ? "NIE MOGE ZNALEZC TEJ GRY" +'' pause DELAY +endproc + + DATA SIR,BARON,COUNT,MARQUIS,LORD,DUKE,ARCHDUKE,GRAND DUKE,PRINCE,KING,EMPEROR,SHOGUN + DATA DEMI-GOD,GOD,SUPREME RULER + DATA MADAM,BARONESS,COUNTESS,MARQUISE,LADY,DUCHESS,ARCHDUCHESS,GRAND DUCHESS,PRINCESS + DATA QUEEN,EMPRESS,SAINT,DEMI-GODESS,GODESS,SUPREME RULER + DATA SANTA PARAVIA ,FIUMACCIO ,TORRICELLA ,VENIZIA ,MOLINETTO ,FONTANILE + 'the code below gets never executed + 'FOR A=1 TO 30 + '? titles$(N1(A),N2(A)) + 'NEXT A + diff --git a/original_feudal_pl.bas b/original_feudal_pl.bas new file mode 100644 index 0000000000000000000000000000000000000000..c81de565c3d9d12359b48dc3d36942bd68e3a731 GIT binary patch literal 21152 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 literal 0 HcmV?d00001 diff --git a/original_feudal_pl.txt b/original_feudal_pl.txt new file mode 100644 index 0000000..dc9524a --- /dev/null +++ b/original_feudal_pl.txt @@ -0,0 +1,375 @@ +1 REM modified 061485 by Bruce Ramsey 411 N 61st, Seattle, WA 98103 +8 REM Æ=# of players;Å=player;Ù±=year Ç=$/grain,ı=demand;×=weather; Ì=land price;ñ=customs revenue +9 REM Ó±=sales tax rev.;ɱ=income tax rev.;Ê=net justice revenue +10 REM Á¨Å©=# of markets;ͨũ=# of mer chants (5 per market):Ĩũ=# of woollen mills:Өũ=# of serfs +11 REM ¨ũ=palace pts:Ψũ=nobles(RND 1-2/B(E));èũ=cathedral pts. +12 REM Ѩũ=# of clergymen(RND 1-6 per cath.point;˨ũ=cash;̨ũ=land Шũ=troops(paid $3/turn) +13 REM Ǩũ=customs duty;Ȩũ=sales tx ɨũ=income tax;ʨũ=justice Ԩũ=victory pts.(15 to win) +14 REM Ϩũ=you will die by this date (1440-1455);Ҩũ=grain reserves ÄӨũ 0=alive,1=dead;֨ũ=sex +15 REM Ô¤=titles;פ=weather & harvest; Τ=names;ʤ=level of justice; ÍԨũare you already sup.ruler? +16 REM ըũ=status pts.:cathedral pt. adds 1;palace,0.5;mill,0.25; market,0.1;ÌШũ=land prices +80 CLR :READ N1,N2,N3,N4,N5,N6,N7,N10,N100,KEY,DELAY +82 DATA 1,2,3,4,5,6,7,10,100,764,12000 +100 DIM N$(49),T$(215),W$(34),L(N7),P(N7),C(N6),D(N6),A(N6),B(N6),S(N6),A$(23),K(N6),N1(30),N2(30),LP(N6) +110 DIM MT(N6),G(N6),V(N7),H(N6),I(N6),J(N6),O(N6),R(N6),T(N7),U(N6),N(N6),Q(N6),M(N6),J$(12),DS(N6):Y1=1400 +120 FOR A=N1 TO 30:N1(A)=LEN(T$)+N1:READ A$:N2(A)=LEN(T$)+LEN(A$):T$(LEN(T$)+N1)=A$:NEXT A +200 GRAPHICS N0:SETCOLOR N2,N0,N2:POKE 82,N4:POKE 83,39:POKE 752,N1:POSITION 9,9 +210 GOSUB 23000:POKE 82,N2 +212 GOSUB KEY+N2:IF V=84 THEN 22000 +215 IF V<>78 THEN 212 +300 ? "}":POSITION N7,8:? "PODAJ LICZBE GRACZY (1-6)?":GOSUB KEY+N2:F=V:IF F<49 OR F>54 THEN 300 +302 F=VAL(CHR$(F)) +308 N$=" ":N$(43,49)="PEPPONE" +310 FOR A=N1 TO F +315 A(A)=N0:B(A)=N0:C(A)=N0:D(A)=N0:DS(A)=N0 +318 POKE 752,N0:? "}":POSITION 9,N5:? "IMIE GRACZA ";A;"?":POSITION 12,8:? " ";:? "";:? "";:INPUT A$ +322 POKE 752,N1:IF LEN(A$)>N7 THEN A$=A$(N1,N7) +330 ? :N$(A*N7-N6,A*N7-N5+LEN(A$))=A$:? "} ";N$(A*N7-N6,A*N7-N7+LEN(A$));" to mezczyzna czy kobieta?";:V(A)=N0 +331 GOSUB KEY+N2:IF V=75 THEN V(A)=15 +334 IF V<>75 AND V<>77 THEN 331 +400 G(A)=25:H(A)=N10:I(A)=N5:J(A)=N2:O(A)=1440+INT(RND(N0)*15):K(A)=1000:L(A)=10000:R(A)=5000:T(A)=N1:U(A)=N1:N(A)=N4 +410 P(A)=25:Q(A)=N5:M(A)=25:S(A)=2000:LP(A)=N2:NEXT A +550 ? "} PODAJ POZIOM GRY (0-9)":GOSUB KEY+N2:U=V:IF U<48 OR U>57 THEN 550 +560 U(N0)=VAL(CHR$(U))+N6 +600 E=E+N1:IF T(E)=-N1 THEN E=E+N1 +620 AX=N0:FOR A=N1 TO N6:IF T(A)>N0 THEN AX=N1:NEXT A:IF AX=N0 THEN 11000 +630 IF E>F THEN E=N0:Y1=Y1+N1:GOTO 600 +640 IF Y1>O(E) THEN 600 +650 IF Y1=O(E) OR L(E)<1001 THEN 1100 +660 GOSUB 2000:GOSUB 2600:GOSUB 3000:GOSUB 5000 +666 GOSUB 6000:GOSUB 7000 +670 IF K(E)>N0 THEN K(E)=INT(K(E)*1.1) +675 GOTO 600 +764 ? "ÎÁÃɤÎÉÊ ÄÏ×ÏÌÎÙ ËÌÁ×ÉÓÚ" +766 CLOSE #N1:OPEN #1,N4,N0,"K:":BK=PEEK(16):IF BK>127 THEN BK=BK-128:POKE 16,BK:POKE 53774,BK +768 GET #N1,V:CLOSE #N1:RETURN +1000 POKE 82,2:GOSUB 1001:F1=N1:GOTO 1005 +1001 GRAPHICS N0:SETCOLOR N2,N0,N2:POKE 752,N1:? :? :? "WASALE":? :? "WOJOWNICY":? :? "KLER":? :? "KUPCY" +1002 ? :? "PODDANI":? :? "ZIEMIA":? :? "SKARB":? :? "KRAMY":? :? "MLYNY":RETURN +1005 Z1=N1:FOR A=F1 TO F:POSITION N4+Z1*9,N1:? N$(A*N7-N6,A*N7):POSITION N5+Z1*9,N2:? N(A):POSITION N5+Z1*9,N4 +1006 ? P(A):POSITION N5+Z1*9,N6:? Q(A):POSITION N5+Z1*9,8:? M(A):POSITION N5+Z1*9,N10:? S(A):K(A)=INT(K(A)) +1007 POSITION N5+Z1*9,12:? L(A):POSITION N5+Z1*9,14:? K(A):POSITION N5+Z1*9,16:? A(A):POSITION N5+Z1*9,18:? D(A) +1008 Z1=Z1+N1:IF A=N3 AND F>N3 THEN F1=N4:GOSUB KEY:GOSUB 1001:GOTO 1005 +1009 NEXT A +1010 ? :GOSUB KEY:RETURN +1100 GRAPHICS N0:SETCOLOR N2,N3,N2:? :? "FATALNE WIE$CI":? :GOSUB 15000:? " zeszedl $miertelnie":T(E)=-N1 +1103 IF L(E)<1001 THEN ? "podczas powstania":GOTO 1190 +1104 IF A=71 THEN ? "podczas zamieszek glodowych":A=N0:GOTO 1190 +1110 Y=INT(RND(N0)*N6+N1):IF Y1>1455 THEN ? "ze staro$ci w R.P. ";Y1:GOTO 1190 +1120 IF Y=N1 THEN ? "podczas zarazy" +1160 IF Y=N2 THEN ? "na tyfus" +1170 IF Y=N3 THEN ? "na ospe" +1180 IF Y=N4 THEN ? "na czerwonke" +1182 IF Y=N5 THEN ? "przez zamordowanie" +1185 IF Y=N6 THEN ? "przez zatrucie" +1190 ? :GOSUB KEY:GOSUB 5000:GOSUB 1000:GOTO 600 +1300 I1=INT(I1):RETURN +1310 C1=INT(C1):RETURN +1320 S1=INT(S1):RETURN +1330 K(E)=INT(K(E)):RETURN +1500 POKE 752,N1:Z=INT(RND(N0)*A+N1)*S(E)/N100:Z1=INT(Z):? Z1;" poddanych sie urodzilo":S(E)=S(E)+Z1:RETURN +1510 Z=INT(RND(N0)*A+N1)*S(E)/N100:Z1=INT(Z):? Z1;" poddanych zmarlo":IF Z1>S(E)*0.3 THEN DS(E)=N1:GOSUB DELAY:A=7 +1512 ? :S(E)=S(E)-Z1:RETURN +2000 POKE 82,N1:IF DS(E)=N1 THEN 600 +2005 W=(INT(RND(N0)*N5+N1)+INT(RND(N0)*N6+N1))/N2:W=INT(W):W$="" +2009 ON W GOTO 2010,2020,2030,2040,2050 +2010 W$="SUSZA GROZI GLOD":GOTO 2100 +2020 W$="ZLA POGODA-LICHE ZBIORY":GOTO 2100 +2030 W$="NORMALNA POGODA-PRZECIETNE ZBIORY":GOTO 2100 +2040 W$="DOBRA POGODA-B.DOBRE ZBIORY":GOTO 2100 +2050 W$="WSPANIALA POGODA-$WIETNE ZBIORY" +2100 R=INT(RND(N0)*25+N1):V=(R(E)*R)/N100:R(E)=R(E)-V:REM òáôó åáô Ò¥ +2140 X=L(E):Y=(S(E)-D(E)*N100)*N5:IF YN2 THEN Y=N2 +2210 IF Y<0.8 THEN Y=0.8 +2220 L=L*Y:L=INT(L*N10)/N10:REM ìáîä ðòéãå½²äéãå¬÷åáôèåò»ðòïðïòôéïî ïæ çòáéî ðõòãèáóåä òáéóåó ìáîä ðòéãå +2222 IF L>LP(E)+0.8 THEN L=LP(E)+0.8:REM íáø áíô ìáîä ðòéãå ãáî òéóå½°®¸ +2224 IF LR(E)-D1 THEN SD=R(E)-D1:IF SD Kupno ziarna <3> Kupno ziemi":? :? "<2> Sprzedaz ziarna <4> Sprzedaz ziemi":? +2621 ? " kontynuacja" +2622 POKE KEY,255:GOSUB KEY+N2:I1=V:IF I1=155 THEN 4000 +2624 IF I1<49 OR I1>52 THEN 2622 +2625 I1=VAL(CHR$(I1)):IF I1=N0 THEN RETURN +2660 ON I1 GOTO 2700,2750,2800,2850 +2700 ? "œILE ZIARNA I NASION ËÕÐÕÊÅÓÚ ";:GOSUB 9000 +2705 K(E)=K(E)-(I1*G/1000):R(E)=R(E)+I1 +2720 POSITION N2,7:? "œœœœœœœœœœœœœœœœœ";:GOSUB 2340:GOTO 2610 +2750 ? "œILE ZIARNA I NASION ÓÐÒÚÅÄÁÊÅÓÚ";:GOSUB 9000 +2760 IF I1>R(E) THEN ? "œTYLE NIE POSIADASZý":GOSUB DELAY:GOTO 2720 +2770 K(E)=K(E)+(I1*G/1000):R(E)=R(E)-I1:GOTO 2720 +2800 ? "œILE HEKTAROW ËÕÐÕÊÅÓÚ";:GOSUB 9000:L(E)=L(E)+I1:K(E)=K(E)-(I1*L):GOTO 2720 +2850 ? "œILE HEKTAROW ÓÐÒÚÅÄÁÊÅÓÚ";:GOSUB 9000 +2852 IF I1>L(E)-5000 THEN ? "œMUSISZ TRZYMAC CO NAJMNIEJ 5000 HEKTAROW!ý":GOSUB DELAY:GOTO 2720 +2870 L(E)=L(E)-I1:K(E)=K(E)+(I1*L):GOTO 2720 +3000 POKE 82,N2:? "}":POKE 752,N1:GOSUB 15000:? :GOSUB 11100:? :GOSUB 2400:? :? " " +3002 ? :? "<1> Clo <2> Podatek od sprzedazy" +3003 ? :? "<3> Podatek od kupna <4> Prawo " +3004 ? :? " kontynuacja" +3005 GOSUB KEY+N2:I=V:IF I=155 THEN GOSUB 3200:RETURN +3006 IF I<49 OR I>52 THEN 3005 +3008 I=VAL(CHR$(I)) +3010 POSITION N2,13:? "œœœœœœœœœœ";:POKE 752,N0 +3060 ON I GOTO 3070,3110,3140,3170 +3070 TRAP 3010:? "NOWE CLO (0 to 100)";:INPUT I:TRAP 40000:I=INT(I):IF I>N100 OR I50 OR I25 THEN I=N3:? "}":GOTO 3010 +3160 I(E)=I:GOTO 3000 +3170 POKE 752,N1:? "    ÐÒÁ×Ï   ":? +3171 ? " <1> Lagodne":? +3172 ? " <2> Umiarkowane":? +3173 ? " <3> Surowe":? +3174 ? " <4> Drakonskie" +3179 GOSUB KEY+N2:I=V:IF I<49 OR I>52 THEN 3179 +3190 J(E)=VAL(CHR$(I)):GOTO 3000 +3200 K(E)=K(E)+C1+S1+I1+J +3220 IF K(E)<(-10000*T(E)) THEN GOTO 8000 +3230 RETURN +4000 TRAP 4008:? "œIle ziarna dajesz dla ludzi?":? "™ÒÅÔ dajesz tyle,jakie zap. "; +4002 POKE 752,N0:INPUT G1:GOTO 4016 +4008 G1=D1 +4016 POKE 752,N1:TRAP 40000:IF G1<=R(E) THEN 4040 +4032 ? "œœBRAKUJE CI ";G1-INT(R(E));" KORCOW !ý":GOSUB DELAY:GOSUB DELAY:GOTO 2720 +4040 R(E)=R(E)-G1:POKE 82,N2:? "}":GOSUB 15000:? ", ";Y1:? :Z=G1/D1-1:IF Z>N0 THEN Z=Z/N2 +4050 IF Z>0.25 THEN Z=Z/N10+0.25 +4060 Z1=50-G(E)-H(E)-I(E):IF Z1N0 THEN Z1=Z1+N3-J(E) +4080 Z=Z+(Z1/N10):IF Z>0.5 THEN Z=0.5 +4100 IF G1<(D1-1) THEN 4500 +4110 IF S(E)32000 THEN Z=32000 +4230 Z1=Z:Z=INT(RND(N0)*Z1+INT(Z1/N5)):? Z;" przybylo do twego lenna":? :S(E)=S(E)+Z +4250 Z1=Z/N5:Z=INT(RND(N0)*Z1+N1):IF Z>50 THEN Z=50 +4260 M(E)=M(E)+Z:N(E)=N(E)+N1:Q(E)=Q(E)+N2:REM íéçòáôéïî áääó ± îïâì嬠² ãìåòçù¬ õð ôï µ° íåòãèáîôó¨°­²°¥ ïæ îå÷ óåòæó© +4300 IF J(E)65 THEN X=65 +4510 IF XA*V THEN Z=Z-N1:REM íáòçéîó +4905 NEXT V:Z1=Z/100*A(E)*1000:K(E)=K(E)+Z:IF Z1>N0 THEN ? "Kramy przyniosly ";Z1;" dukatow (";Z;"%)" +4910 IF S(E)<32766 THEN S1=S(E):GOSUB 1320:S(E)=S1 +4920 Z=180-G(E)*N2-J(E)*N10-I(E):IF ZN0 THEN K(E)=K(E)+Z:? "Mlyny przyniosly ";Z;" dukatow (";INT((Z/D(E))/20);"%)" +4930 P(E)=INT(P(E)):Z=P(E)*N3:? :? P(E);" Wojownikow kosztuje ";Z;" dukatow":? :? :K(E)=K(E)-Z +4940 IF (L(E)/1000)>P(E) THEN 8100:REM ÃÈÅÃË ÄÅÆÅÎÓÅÓ +4950 IF (L(E)/500)(P(E)*N2) THEN 8100 +4975 NEXT A +4980 ? :? :GOSUB KEY:RETURN +5000 GRAPHICS N7:SETCOLOR N4,11,N5:SETCOLOR N2,E-N1,N2:CC=N3 +5010 LL=L(E)/1000:IF LL15 THEN Z=15:REM ãáôèåäòáì ðïéîôó +5170 ON Z GOTO 5250,5245,5240,5230,5220,5208,5206,5204,5202,5200,5198,5196,5194,5192,5190,5180 +5180 PLOT 120,50:DRAWTO 138,50:COLOR N0:PLOT 127,50:PLOT 131,50:COLOR CC +5190 FOR A=120 TO 124:FOR B=40 TO 41:PLOT A,B:NEXT B:NEXT A +5192 FOR A=120 TO 124:FOR B=42 TO 43:PLOT A,B:NEXT B:NEXT A +5194 FOR A=120 TO 124:FOR B=44 TO 45:PLOT A,B:NEXT B:NEXT A:COLOR N0:PLOT 122,44:PLOT 122,45:COLOR CC +5196 FOR A=120 TO 124:FOR B=46 TO 47:PLOT A,B:NEXT B:NEXT A +5198 FOR A=120 TO 124:FOR B=48 TO 49:PLOT A,B:NEXT B:NEXT A +5200 FOR A=134 TO 138:FOR B=40 TO 41:PLOT A,B:NEXT B:NEXT A +5202 FOR A=134 TO 138:FOR B=42 TO 43:PLOT A,B:NEXT B:NEXT A +5204 FOR A=134 TO 138:FOR B=44 TO 45:PLOT A,B:NEXT B:NEXT A:COLOR N0:PLOT 136,44:PLOT 136,45:COLOR CC +5206 FOR A=134 TO 138:FOR B=46 TO 47:PLOT A,B:NEXT B:NEXT A +5208 FOR A=134 TO 138:FOR B=48 TO 49:PLOT A,B:NEXT B:NEXT A +5220 FOR B=36 TO 41:PLOT 129,B:NEXT B:PLOT 128,38:PLOT 130,38 +5230 FOR A=127 TO 131:FOR B=42 TO 44:PLOT A,B:NEXT B:NEXT A:COLOR N0:PLOT 127,42:PLOT 131,42:COLOR CC +5240 FOR A=125 TO 133:FOR B=45 TO 46:PLOT A,B:NEXT B:NEXT A +5245 FOR A=125 TO 133:FOR B=47 TO 49:PLOT A,B:NEXT B:NEXT A:COLOR N0:PLOT 127,49:PLOT 131,49:COLOR CC +5250 Z=B(E):IF Z=N0 THEN 5300:REM  ÐÁÌÁÃÅ ÐÏÉÎÔÓ  +5255 COLOR CC:IF Z>12 THEN Z=13:PLOT 94,52:PLOT 110,52 +5258 IF Z>11 THEN PLOT 93,53:PLOT 95,53:PLOT 109,53:PLOT 111,53:PLOT 94,52:PLOT 110,52 +5260 IF Z>N10 THEN COLOR N0:PLOT 101,53:PLOT 103,52:COLOR CC +5262 IF Z>9 THEN PLOT 101,50:PLOT 103,50:PLOT 102,49 +5265 IF Z>8 THEN FOR A=N100 TO 104:FOR B=51 TO 53:PLOT A,B:NEXT B:NEXT A +5270 FOR A=102-Z TO 102+Z:FOR B=54 TO 56:PLOT A,B:NEXT B:NEXT A +5280 FOR A=103-Z TO 101+Z STEP N2:COLOR N0:PLOT A,55:NEXT A:PLOT 102,56:COLOR CC +5300 Z=S(E)-D(E)*N100:IF ZN10 THEN Z=N10 +5310 Z=(Z/N10)*(77-Y):Z=INT(79-Z):REM ìïãáôå æáòíåò ¦ ðìï÷º ôèå èéçèåò ôèå íïòå ìáâïò¯ìáîä +5320 FOR A=145 TO 153:PLOT A,Z:NEXT A:COLOR N0:PLOT 148,Z:PLOT 149,Z:PLOT 151,Z +5330 COLOR CC:FOR A=145 TO 153 STEP N2:PLOT A,Z+N1:NEXT A:PLOT 144,Z-N1:PLOT 153,Z-N1 +5400 Z=A(E)*N2:IF Z=N0 THEN 5500 +5410 IF Z>154-X THEN Z=154-X +5420 FOR A=X TO X+Z STEP N2:PLOT A,60:PLOT A+N1,60:PLOT A+N1,61:PLOT A+N1,62:NEXT A:REM draw market stalls +5500 Z=D(E):IF Z=N0 THEN 5600 +5510 IF Z>153-X THEN Z=153-X +5525 FOR B=76 TO 78:PLOT 153-Z,B:DRAWTO 155,B:NEXT B +5530 COLOR N0:FOR A=155-Z TO 153 STEP N2:PLOT A,77:NEXT A:REM  äòá÷ íéììó  +5600 COLOR CC +5900 ? :? "ROK :";Y1;" ";:GOSUB 15000 +5910 ? :GOSUB KEY:GRAPHICS N0:SETCOLOR N2,N0,N2:RETURN +6000 POKE 82,5:CLOSE #N1:GRAPHICS N0:SETCOLOR N2,N0,N3:POKE 752,N1:? :GOSUB 15000:? +6002 FOR V=N1 TO 28:? "-";:NEXT V:? :? K(E);" Dukatow":? :? +6004 ? "MOZLIWO$CI, ROK ";Y1:? " " +6010 ? "<1> Kram 1000" +6020 ? "<2> Mlyn 2000" +6030 ? "<3> Rozbudowa Zamku 3000" +6040 ? "<4> Rozbudowa Katedry 5000" +6050 ? "<5> 20 Wojownikow 500":? +6055 ? "<6> Stan posiadania 100" +6057 ? "<7> Mapa 100" +6058 ? "<8> Samobojstwo":? "<9> Zapisanie stanu gry na TM":? "" +6072 ? :? "™ÒÅÔÕÒÎ kontynuacja"; +6082 GOSUB KEY+N2:I=V:IF I=155 THEN RETURN +6084 IF I<49 OR I>57 THEN 6082 +6085 I=VAL(CHR$(I)) +6093 IF I>N0 AND I57 THEN 6108 +6109 ZZ=VAL(CHR$(ZZ)):IF ZZ=N0 THEN 6000 +6110 FOR IJ=N1 TO ZZ:ON I GOTO 6200,6120,6300,6400,6500 +6120 D(E)=D(E)+N1:K(E)=K(E)-2000:U(E)=U(E)+0.25:GOTO 6505 +6200 A(E)=A(E)+N1:M(E)=M(E)+N5:K(E)=K(E)-1000:U(E)=U(E)+0.1:GOTO 6505 +6300 B(E)=B(E)+N1:N(E)=N(E)+INT(RND(N0)*N2+N1):K(E)=K(E)-3000:U(E)=U(E)+0.5:GOTO 6505 +6400 C(E)=C(E)+N1:Q(E)=Q(E)+INT(RND(0)*N6+N1):K(E)=K(E)-5000:U(E)=U(E)+N1:GOTO 6505 +6500 P(E)=P(E)+20:S(E)=S(E)-20:K(E)=K(E)-500:GOTO 6505 +6505 NEXT IJ +6506 GOTO 6000 +7000 Z=N0:A=A(E):GOSUB 7500:A=B(E):GOSUB 7500:A=C(E)*N2:GOSUB 7500:A=D(E):GOSUB 7500:A=K(E)/5000:GOSUB 7500:A=L(E)/4000 +7010 GOSUB 7500:A=M(E)/40:GOSUB 7500:A=N(E):GOSUB 7500:A=P(E)/20:GOSUB 7500:A=Q(E)/N10:GOSUB 7500:A=S(E)/1000:GOSUB 7500 +7020 A=U(E)/N5:GOSUB 7500:REM åîïõçè ðïéîôó ôï ÷éî¿ +7130 A=Z/U(0)-J(E):A=INT(A):IF A>15 THEN A=15:REM áäêõóô æïò äéææéãõìôù¬êõóôéãå +7140 IF (Y1+N2)=O(E) THEN T(E)=T(E)+N1 +7145 IF AA THEN RETURN +7160 T(E)=A:IF MT(E)=N1 THEN 7490 +7165 IF T(E)>=15 THEN 7600 +7490 RETURN +7500 IF A>25 THEN A=25 +7530 A=INT(A):Z=Z+A:RETURN +7600 GRAPHICS N7:MT(E)=N1:? "* ";:GOSUB 15000:? " POSTANOWIENIA!":GOSUB 5010:GOSUB 1000:GOTO 11000 +8000 GRAPHICS N0:GOSUB 15000:? " JEST BANKRUTEM!":? :? "Kredytorzy zablokowali":? " twoje aktywa!":? :GOSUB KEY +8002 A(E)=N0:R(E)=N(E)*N100+Q(E)*40+M(E)*30+P(E)*N10+S(E)*N5+2000:B(E)=N0:C(E)=N0:D(E)=N0:L(E)=6000:U(E)=N1 +8005 K(E)=N100:T(E)=T(E)-N2:M(E)=25:N(E)=N5:Q(E)=N5:P(E)=P(E)/N2:RETURN +8100 Z=N0:FOR A=N1 TO F:IF A=E THEN 8200:REM ÷áò +8110 IF P(A)P(Z) THEN Z=A:REM äåæéîå éîöáäåò +8200 NEXT A +8205 IF Z=N0 THEN Z=N7:A=INT(RND(N0)*9000+1001):GOTO 8220:REM ¢Ðåððïîå¢ +8210 A=INT((P(Z)-P(E)))*50:IF A>L(E)-1000 THEN A=L(E)-1000 +8220 IF A<1000 THEN A=1000 +8230 GOSUB 16000:? "najechal i zajal ";A:? "hektarow ziemi!":L(Z)=L(Z)+A:L(E)=L(E)-A:Z=INT(RND(N0)*40*(A/1000)) +8233 IF Z>P(E)-15 THEN Z=P(E)-15:IF Z250000 OR I<>INT(I) THEN 9007 +9005 POKE 752,N1:RETURN +9007 POKE 752,N1:? "ý";:POP :GOTO 2720 +11000 ? "œChcesz grac dalej?";:GOSUB KEY+N2:IF V=78 THEN DS(E)=N1:RETURN +11002 IF V<>84 THEN ? "œ";:GOTO 11000 +11003 GOTO 6000 +11100 ? "Rok ";Y1;" Ziemia ";L(E);" hektarow":RETURN +12000 FOR DEL=N10 TO N100:NEXT DEL:RETURN +15000 X=N0:TRAP 15002:? T$(N1(T(E)+V(E)),N2(T(E)+V(E)));" "; +15002 ? N$(E*N7-N6+X,E*N7-N6+X);:X=X+N1:IF N$(E*N7-N6+X,E*N7-N6+X)<>" " AND X89 THEN POKE KEY,255:GOTO 21004 +21010 CLOSE #N1:OPEN #N1,8,N0,"C:" +21012 ? #N1;N$:? #N1;F:? #N1;U:? #N1;E:? #N1;W:? #N1;AX:? #N1;Y1:? #N1;U(N0) +21014 FOR A=N1 TO F:? #N1;L(A):? #N1;P(A):? #N1;C(A):? #N1;D(A):? #N1;A(A):? #N1;B(A):? #N1;S(A):? #N1;K(A) +21018 ? #N1;MT(A):? #N1;G(A):? #N1;V(A):? #N1;H(A):? #N1;I(A):? #N1;J(A):? #N1;O(A):? #N1;R(A):? #N1;T(A) +21020 ? #N1;U(A):? #N1;N(A):? #N1;Q(A):? #N1;M(A):? #N1;DS(A):? #N1;LP(A):NEXT A +21022 FOR A=N1 TO 30:? #N1;N1(A):? #N1;N2(A):NEXT A:CLOSE #N1 +21024 POKE 752,N1:? "}":POSITION 13,N10:? "GRA ZAPISANA":FOR V=N1 TO 400:NEXT V:POKE 752,N0:GOTO 6000 +22000 TRAP 22050:OPEN #N1,N4,N0,"C:":REM  ÌÏÁÄ ÇÁÍÅ  +22011 ? "}":POSITION 12,N10:? "LADOWANIE GRY" +22012 INPUT #N1;N$:INPUT #N1;F:INPUT #N1;U:INPUT #N1;E:INPUT #N1;W:INPUT #N1;AX:INPUT #N1;Y1:INPUT #N1;B:U(N0)=B +22014 FOR A=N1 TO F:INPUT #N1;B:L(A)=B:INPUT #N1;B:P(A)=B:INPUT #N1;B:C(A)=B:INPUT #N1;B:D(A)=B:INPUT #N1;B:A(A)=B:INPUT #N1;B:B(A)=B +22015 INPUT #N1;B:S(A)=B:INPUT #N1;B:K(A)=B:INPUT #N1;B:MT(A)=B:INPUT #N1;B:G(A)=B:INPUT #N1;B:V(A)=B +22018 INPUT #N1;B:H(A)=B:INPUT #N1;B:I(A)=B:INPUT #N1;B:J(A)=B:INPUT #N1;B:O(A)=B:INPUT #N1;B:R(A)=B:INPUT #N1;B:T(A)=B +22020 INPUT #N1;B:U(A)=B:INPUT #N1;B:N(A)=B:INPUT #N1;B:Q(A)=B:INPUT #N1;B:M(A)=B:INPUT #N1;B:DS(A)=B +22021 INPUT #N1;B:LP(A)=B:NEXT A +22022 FOR A=N1 TO 30:INPUT #N1;B:N1(A)=B:INPUT #N1;B:N2(A)=B:NEXT A:CLOSE #N1:POKE 752,N0:GOTO 666 +22050 CLOSE #N1:? "}":POSITION N7,11:? "NIE MOGE ZNALEZC TEJ GRY":FOR V=N1 TO 500:NEXT V:GOTO 300 +23000 ? "}        " +23012 ? "        Š     ˆ" +23014 ? "Š     ˆ      " +23016 ? "            " +23018 ? "           " +23020 ? "            " +23022 ? "                           " +23024 ? "                           " +23026 ? "                           " +23028 ? "     ÐÁÎÏ×ÉÅ É ÐÏÄÄÁÎÉ     " +23030 ? "     ’’’’’’’’’’’’’’’’’     " +23032 ? "     æåõäáìîá åëïîïíéá     " +23034 ? "                           " +23036 ? "                           " +23038 ? "                     " +23040 ? "                     " +23042 ? "                      " +23044 ? "                      ":? :? " Chcesz zaladowac ostatni stan gry?":RETURN