Global undo_flag; Global just_undone; [checkTerp; if(decTerpHasTimedInput()==false) print "(Detta spel använder tidsstyrd inmatning (Timed Input). Den Z-kods-tolk du använder stödjer inte detta. Det kan därför bli omöjligt att klara spelet. Frotz är ett exempel på en tolk som stödjer tidsstyrd inmatning. Här kan Du hitta de tolkar som finns för din plattform: http://www.inform-fiction.org/zmachine/interpreters.html )^^"; ]; [proc_receive_input i; .askAgain; decStrCpy(s_A,fnc_FNI(decWriteString(main_str-->0,""))); if(decStrCmp(fnc_FNC(s_A),decWriteString(main_str-->0,"ÅNGRA"))==0) { if(undo_flag >= 2) { ! Det finns en sparad UNDO #Ifdef TARGET_ZCODE; @restore_undo i; #Ifnot; ! TARGET_GLULX @restoreundo i; i = (~~i); #Endif; ! TARGET_ if (i == 0) { print "^Att ångra senaste draget misslyckades.^^"; } jump askAgain; } else { print "^Det går inte ångra senaste draget.^^"; jump askAgain; } } #Ifdef TARGET_ZCODE; @save_undo i; #Ifnot; ! TARGET_GLULX @saveundo i; if (i == -1) { GGRecoverObjects(); i = 2; } else i = (~~i); #Endif; ! TARGET_ just_undone = 0; undo_flag = 2; if (i == -1) undo_flag = 0; ! Tolken har inte UNDO if (i == 0) undo_flag = 1; ! Misslyckades if (i == 2) { ! Spelet återskapas från UNDO ! RestoreColours(); #Ifdef TARGET_ZCODE; style bold; #Ifnot; ! TARGET_GLULX glk($0086, 4); ! set subheader style #Endif; ! TARGET_ ! print (name) location, "^"; #Ifdef TARGET_ZCODE; style roman; #Ifnot; ! TARGET_GLULX glk($0086, 0); ! set normal style #Endif; ! TARGET_ print "^Senaste draget ångrat.^^"; just_undone = 1; jump askAgain; } ]; [proc_version i; style bold; print (string) Story,"^"; style roman; print (string) Headline,"^"; print (string) GameVersion, " Kompilerat med Inform v"; inversion;new_line; print "Release ", (HDR_GAMERELEASE-->0) & $03ff, " / Serienummer "; for (i=0 : i<6 : i++) print (char) HDR_GAMESERIAL->i; ! print " / Inform v"; inversion; print '^'; ""; ]; [pad center_width chr x i w; w=0->33; if(w>250||w<1) w=1; if(chr==0) chr=' '; x=((w-1)-center_width)/2; for(i=0:i33; if(w>1&&w<42) jump line724; if(entry_point==1) jump line702; !! 00700 REM ********************** THORVALD: ****************************** .line700; !=== ********************** THORVALD: ****************************** !! 00701 IF RND<0.8 THEN 724 !WARNING: random argument should be adjusted in line: 00701 IF RND<0.8 THEN 724 !WARNING: removed float value in line: 00701 IF RND<0.8 THEN 724 if(random(100)<80) { jump line724;} !! 00702 PRINT " IIIIIIIIIIIIIIII" .line702; style fixed; print (pad) 42, " IIIIIIIIIIIIIIII^"; !! 00703 PRINT " _ _ _ II II _ _ _" print (pad) 42, " _ _ _ II II _ _ _^"; !! 00704 PRINT "__I I I I_____I I_____I I I I______" pad(42,'_'); print "I I I I_____I I_____I I I I";pad(42,'_');new_line; !! 00705 PRINT " I I I I I I--I I--I I I I I I" print (pad) 42, "I I I I I I--I I--I I I I I I^"; !! 00706 PRINT " I_I_I_I I I I I I I I_I_I_I" print (pad) 42, "I_I_I_I I I I I I I I_I_I_I^"; !! 00707 PRINT " I I I I I I " print (pad) 42, " I I I I I I ^"; !! 00708 PRINT " I I *I I* I I" print (pad) 42, " I I *I I* I I^"; !! 00709 PRINT " I I__I I__I I" print (pad) 42, " I I__I I__I I^"; !! 00710 PRINT " II II" print (pad) 42, " II II^"; !! 00711 PRINT " II II" print (pad) 42, " II II^"; !! 00712 PRINT " II II" print (pad) 42, " II II^"; !! 00713 PRINT " I__ __I" print (pad) 42, " I__ __I^"; !! 00714 PRINT " I I" print (pad) 42, " I I^"; !! 00715 PRINT " I I" print (pad) 42, " I I^"; !! 00716 PRINT " I I" print (pad) 42, " I I^"; !! 00717 PRINT " I I" print (pad) 42, " I I^"; !! 00718 PRINT " II II" print (pad) 42, " II II^"; !! 00719 PRINT " I__I" print (pad) 42, " I__I^"; !! 00720 PRINT new_line; !! 00721 PRINT new_line; style roman; !! 00723 RETURN return; !! 00724 PRINT " I------I" .line724; style fixed; print (pad) 8, "I------I^"; !! 00725 PRINT "----------------------I * * I----------------------------" pad(8,'-');print "I * * I";pad(8,'-');new_line; !! 00726 PRINT " I I" print (pad) 8, "I I^"; !! 00727 PRINT " --II--" print (pad) 8, " --II--^"; !! 00728 PRINT " II" print (pad) 8, " II^"; !! 00729 PRINT " --" \ RETURN print (pad) 8, " --^"; style roman; return; ]; [proc_under_construction; !! 00730 REM******************OLLES SUBRUTIN**************************** .line730; !=== ******************OLLES SUBRUTIN**************************** !! 00731 PRINT "Du kommer in i ett rum där det står en massa djur! På en" print "Du kommer in i ett rum där det står en massa djur! På en "; !! 00732 PRINT "skylt i luften står det" print "skylt i luften står det^"; !! 00733 PRINT " RUM UNDER BYGGNAD, SUPREMS BYGGNADS AB" print " RUM UNDER BYGGNAD, SUPREMS BYGGNADS AB^"; !! 00734 PRINT "Plötsligt omges du av ett gult moln!" print "Plötsligt omges du av ett gult moln!^"; !! 00735 RETURN return; ]; [proc_force_drop_all; !! 07500 A(I)=Z IF A(I)=1 FOR I=1 TO A(0)'Släpper allt man bär i rummet for(i_I=1:i_I<=(i_A_1D-->0):i_I++) {if((i_A_1D-->(i_I))==1) { (i_A_1D-->(i_I))=i_Z; }} !! 07502 S(1)=0 (i_S_1D-->1)=0; !! 07504 RETURN return; ]; [proc_can_go_any_dir; !! 08290 PRINT "Du kan gå åt vänster,höger,framåt,bakåt,uppåt och neråt!" print "Du kan gå åt vänster,höger,framåt,bakåt,uppåt och neråt!^"; !! 08291 RETURN return; ]; [proc_desc_lift_room; !! 09250 PRINT "Du är i ";R$;" våningens hissrum. Till vänster finns en" print "Du är i ";PrintString(s_R);print " våningens hissrum. Till vänster finns en "; !! 09252 IF S(40)=Z-20 THEN PRINT "öppen"; ELSE PRINT "stängd"; if((i_S_1D-->40)==i_Z-20) { print "öppen"; } else {print "stängd"; } !! 09254 PRINT " hissdörr och till höger en annan dörr." print " hissdörr och till höger en annan dörr.^"; !! 09256 RETURN return; ]; [proc_lift_action; !! 09260 X%=2 \ S(39)=Z-20 !WARNING: removed float-integer conversion in line: 09260 X%=2 \ S(39)=Z-20 i_X_=2;(i_S_1D-->39)=i_Z-20; !! 09261 IF S(40)=S(39) THEN S(40)=0 \ GOTO 9280 if((i_S_1D-->40)==(i_S_1D-->39)) { (i_S_1D-->40)=0;jump line9280;} !! 09262 PRINT "Du står framför en stängd hissdörr. På en knapp bredvid" .line9262; print "Du står framför en stängd hissdörr. På en knapp bredvid "; !! 09263 PRINT "dörren står det HIT." print "dörren står det HIT.^"; !! 09264 GOSUB 12200 !WARNING: gosub skipped in line: 09264 GOSUB 12200 proc_parse(2); !! 09265 IF X1=1 THEN 9262 if(i_X1==1) { jump line9262;} !! 09266 IF FNL$(A$,3)<>"TRY" AND A$<>"HIT" THEN X%=1 \ GOTO 9280 !WARNING: removed float-integer conversion in line: 09266 IF FNL$(A$,3)<>"TRY" AND A$<>"HIT" THEN X%=1 \ GOTO 9280 if(StrCmp(fnc_FNL(s_A,3),decWriteString(main_str-->0,"TRY"))~=0 && StrCmp(s_A,decWriteString(main_str-->1,"HIT"))~=0) { i_X_=1;jump line9280;} !! 09268 IF S(40)=10 THEN PRINT "Hissen kommer inte. Den måste vara trasig!" \ X%=3 \ GOTO 9280 !WARNING: removed float-integer conversion in line: 09268 IF S(40)=10 THEN PRINT "Hissen kommer inte. Den måste vara trasig!" \ X%=3 \ GOTO 9280 if((i_S_1D-->40)==10) { print "Hissen kommer inte. Den måste vara trasig!^";i_X_=3;jump line9280;} !! 09269 I1=1 i_I1=1; !! 09270 I=INSTR(I1,A$," ") .line9270; i_I=decInstr(i_I1,s_A,decWriteString(main_str-->0," ")); !! 09271 IF I<1 OR I>=LEN(A$) THEN 9276 if(i_I<1 || i_I>=StrLen(s_A)) { jump line9276;} !! 09272 D=ASCII(MID$(A$,I+1,1)) i_D=decAscii(decMidString(main_str-->0,s_A,i_I+1,1)); !! 09273 IF D>47 AND D<58 THEN S(40)=D-48 \ GOTO 9278 if(i_D>47 && i_D<58) { (i_S_1D-->40)=i_D-48;jump line9278;} !! 09274 I1=I+1 i_I1=i_I+1; !! 09275 IF I140)=-1; !! 09277 W$="TRYCK 0" decStrCpy(s_W,decWriteString(main_str-->0,"TRYCK 0")); !! 09278 PRINT "Hissen kommer och du stiger in." .line9278; print "Hissen kommer och du stiger in.^"; !! 09280 RETURN .line9280; return; ]; [proc_get_command entry_point; if(entry_point==1) { jump line15202; } !! 15200 GOSUB 6000'XXXXX ALLMÄN GOSUBRUTIT XXXXX !WARNING: gosub skipped in line: 15200 GOSUB 6000'XXXXX ALLMÄN GOSUBRUTIT XXXXX proc_print_objects(); !! 15202 PRINT .line15202; new_line; !! 15203 IF S1<2 THEN A$=FNI$("") \ PRINT ! if(i_S1<2) { decStrCpy(s_A,fnc_FNI(decWriteString(main_str-->0,"")));new_line;} if(i_S1<2) { proc_receive_input();new_line;} !! 15204 GOSUB 8600 !WARNING: gosub skipped in line: 15204 GOSUB 8600 proc_parse(0); !! 15205 RETURN return; ]; [proc_alt_get_command; !! 20500 GOSUB 6000'SABBAR 6000, INPUTTAR, KOLLAR BÅDE 8600 OCH 12000 !WARNING: gosub skipped in line: 20500 GOSUB 6000'SABBAR 6000, INPUTTAR, KOLLAR BÅDE 8600 OCH 12000 proc_print_objects(); !! 20502 PRINT new_line; !! 20504 IF S1<2 THEN A$=FNI$("") \ PRINT ! if(i_S1<2) { decStrCpy(s_A,fnc_FNI(decWriteString(main_str-->0,"")));new_line;} if(i_S1<2) { proc_receive_input();new_line;} !! 20506 X=0 i_X=0; !! 20508 GOSUB 8600 !WARNING: gosub skipped in line: 20508 GOSUB 8600 proc_parse(0); !! 20510 IF X1=1 THEN 20520 if(i_X1==1) { jump line20520;} !! 20512 IF X>0 AND X<5 THEN X=X+2 ELSE GOSUB 12000 !WARNING: gosub skipped in line: 20512 IF X>0 AND X<5 THEN X=X+2 ELSE GOSUB 12000 if(i_X>0 && i_X<5) { i_X=i_X+2; } else {proc_parse(1); } !! 20520 S(36)=2 \ RETURN .line20520; (i_S_1D-->36)=2;return; ]; [proc_setup_phone; !! 27050 REM XXX TELEVERKET - subrutin för jackmontering XXX .line27050; !=== XXX TELEVERKET - subrutin för jackmontering XXX !! 27060 D=INT(RND*S(37))+1 !WARNING: random argument should be adjusted in line: 27060 D=INT(RND*S(37))+1 !WARNING: int function skipped in line: 27060 D=INT(RND*S(37))+1 i_D=random(i_S_1D-->37); !! 27065 A$=MID$(W$(5),((D*3)-2),3) decStrCpy(s_A,decMidString(main_str-->0,(s_W_1D-->5)-->0,((i_D*3)-2),3)); !! 27070 D=VAL(A$) i_D=decVal(s_A); !! 27075 IF J(D)=1 THEN 27050 if((i_J_1D-->(i_D))==1) { jump line27050;} !! 27080 J(D)=1 (i_J_1D-->(i_D))=1; !! 27085 RETURN return; ]; [proc_instructions; !! 91000 PRINT "Stuga är ett ADVENTURE-liknande spel på svenska." print "Stuga är ett ADVENTURE-liknande spel på svenska.^"; !! 91005 PRINT "Du ska utforska ett hus och dess omgivningar. Datorn är dina" print "Du ska utforska ett hus och dess omgivningar. Datorn är dina "; !! 91010 PRINT "ögon och händer. Ge enkla order till datorn, till exempel:" print "ögon och händer. Ge enkla order till datorn, till exempel:^"; !! 91015 PRINT "SLÄPP TAVLAN, GE SAFTFLASKAN, NORR, UPPÅT, VÄNSTER..." print "SLÄPP TAVLAN, GE SAFTFLASKAN, NORR, UPPÅT, VÄNSTER...^"; !! 91020 PRINT "Utanför stugan förflyttar du dej med väderstreck som kan för-" print "Utanför stugan förflyttar du dej med väderstreck som kan för"; !! 91025 PRINT "kortas till N, S, V, Ö, NV, NÖ, SÖ och SV. Inne i stugan används" print "kortas till N, S, V, Ö, NV, NÖ, SÖ och SV. Inne i stugan används "; !! 91030 PRINT "riktningarna FRAMÅT (F), BAKÅT (B), VÄNSTER (V), HÖGER (H)," print "riktningarna FRAMÅT (F), BAKÅT (B), VÄNSTER (V), HÖGER (H), "; !! 91035 PRINT "UPPÅT (U) samt NERÅT (N)." print "UPPÅT (U) samt NERÅT (N).^"; !! 91040 PRINT "I vissa rum kan du få särskild hjälp (det ger poängavdrag) om du" print "I vissa rum kan du få särskild hjälp (det ger poängavdrag) om du "; !! 91045 PRINT "skriver HJÄLP. INVENT listar alla saker du bär på, POÄNG skriver" print "skriver HJÄLP. INVENT listar alla saker du bär på, POÄNG skriver "; !! 91050 PRINT "ut hur många poäng du har och TITTA skriver ut den fullständiga" print "ut hur många poäng du har och TITTA skriver ut den fullständiga "; !! 91055 PRINT "beskrivningen av rummet. Ge kommandot SLUTA när du är färdig." print "beskrivningen av rummet. Ge kommandot SLUTA när du är färdig.^^"; ! Hemgjord kod: print "ÅNGRA tar tillbaka senaste draget. Kan användas flera gånger i följd för att backa längre i handlingen (om Z-kods-tolken stöder det). OM eller MENY visar information om spelets tillkomst, samt vad som "; print "skiljer denna version från originalet och en sammanfattning av de speciella kommandona i spelet. LEDTRÅD ger tillgång till ledtrådar om problemen i spelet, utan poängavdrag (fanns inte i originalet!).^^"; !! 91060 PRINT "Skriv INFO för att få en lista över kommandona." print "Skriv INFO för att få en lista över fler viktiga kommandon.^"; ! Hemgjord kod: print "Skriv ? (frågetecken) för att upprepa dessa instruktioner under spelets gång.^"; !! 91065 PRINT new_line; ! Hemgjord kod: print "Om man av någon anledning inte kan skriva å, ä och ö, eller spelet inte verkar förstå dessa bokstäver, kan man istället skriva aa, ae och oe. Om man vill skriva någon av dessa bokstavskombinationer och inte vill att den ska tolkas som å, ä eller ö, måste man skriva ett utropstecken före. Om spelet t ex frågar vad Du heter och Du heter Boel, så skriver Du B!oel.^"; new_line; !! 91070 PRINT "Du ska försöka att skaffa så många poäng som möjligt. Poäng får" print "Du ska försöka att skaffa så många poäng som möjligt. Poäng får "; !! 91075 PRINT "du genom att upptäcka nya ställen och ta vara på värdesaker." print "du genom att upptäcka nya ställen och ta vara på värdesaker.^"; !! 91080 PRINT new_line; !! 91090 RETURN return; ]; [proc_hints; if(i_hints==0) jump sorry_no_clues; if(i_hints==1) jump clues; .reask_hints; decInputStr("Det kan vara frestande att använda ledtrådar alltför lättvindigt. Du har därför möjligheten att stänga av ledtrådsmenyn för resten av spelet.^ Skriv STÄNG för att stänga av ledtrådarna, LEDTRÅD för att gå till ledtrådarna, eller AVBRYT för att återvända till spelet: ",false,s_A); decStrCpy(s_A,fnc_FNC(s_A));new_line;new_line; if(decStrCmp(fnc_FNL(s_A,1),decWriteString(main_str-->0,"S"))==0) { jump clueless;} if(decStrCmp(fnc_FNL(s_A,1),decWriteString(main_str-->0,"L"))==0) { jump clues;} if(decStrCmp(fnc_FNL(s_A,1),decWriteString(main_str-->0,"A"))==0) { jump clues_escape;} print "STÄNG, LEDTRÅD eller AVBRYT!^";jump reask_hints; .clueless; i_hints = 0; print "Ledtrådarna är nu avstängda för resten av spelet. Du måste börja om från början om du vill slå på dem.^^"; return; .sorry_no_clues; print "Ledtrådarna är avstängda. Du måste börja om från början om du vill slå på dem.^^"; return; .clues; i_hints = 1; SLAG_RunMenus(); .clues_escape; return; ]; SLAG_Menu Om_Stuga with title "Om Stuga", text "Speciella kommandon" "Historien om Stuga (1977-82)" "Historien om Stugan (1985-)" "Konverteringen till Inform (2007-)" "Om Inform", item Speciella_kommandon Om_Stuga_Historik Om_Stugan_Historik Om_Stugan_Inform_Historik Om_Inform; SLAG_Other Om_Stuga_Historik with title "Historien om Stuga (1977-82)", run [; print "^^"; print "Första versionen av Stuga skrevs 1977-78 av bröderna Kimmo och Viggo Eriksson (Viggo heter nuförtiden Kann i efternamn) samt deras kamrat Olle Johansson. När projektet började, sommaren 1977, var författarna 10, 12 respektive 14 år gamla. Spelet skrevs i DEC Basic på stordatorn Oden på Stockholms datamaskinscentral för forskning och högre utbildning, QZ. Kimmo och Viggo brukade följa med sin mor Gerd till arbetet som numerik- och programmeringslärare på KTH. Där kunde de sitta och programmera vid en terminal uppkopplad mot Oden. Då fadern Henrik jobbade som programmerare på QZ, var det knappast något problem att ordna ett konto på Oden. Olle, brödernas granne och kompis sedan flera år, kom också åt Oden, eftersom hans pappa hade ett konto på QZ genom jobbet på Statskonsult. Från 1978 hade Viggo och Kimmo en skrivande terminal med 300-bauds modem hemma, så då behövde de inte längre åka till KTH för att utveckla.^^ Genom QZ hade de unga författarna kommit i kontakt med Crowther och Woods stordatorspel Adventure, vilket kom ut 1975 och därmed snarast skapade spelgenren textäventyr. Alla tre hade dessutom redan skrivit varsitt spelprogram - Olles var ett Mastermind där man spelade mot en figur som hette Thorvald, Kimmos var en spelautomat och Viggos ett gissa-ord-spel liknande Hangman.^^ De började spåna om att slå ihop alla tre spelen till ett program - en sorts virtuell spelhall där man kunde välja vilket av spelen man skulle spela. Inspirerade av Adventure lade de till lite omgivningar som man kunde gå omkring i, och idén att göra en svenskspråkig motsvarighet till Adventure tog form. Kimmos och Viggos pappa kommenterade vid något tillfälle projektet med att ~Det där är omöjligt - ni kan inte skriva stora program i Basic!~ Handsken var kastad, och nu bestämde de sig för att det skulle gå, och att det skulle bli stort.^^ Spelhallen och spelen försvann redan efter någon månad, då de inte längre passade in, men omgivningarna broderades ut desto mer, med djur, prylar, myndigheter och skumma typer. En rest av Kimmos spelautomat blev dock kvar i spelet, liksom Olles fantasifigur Thorvald. Framåt hösten 1978 började spelet kännas klart, men programkoden var rörigare än någonsin. Då gjorde Viggo en kraftansträngning och snyggade till koden - han rensade upp sådant som var osnyggt skrivet och skrev generella subrutiner för en del återkommande uppgifter som tidigare skötts på spridda ställen i koden. Därmed stod Stuga klart i sin första version, och det var dags att möta publiken.^^"; print "I slutet av 1978 lades så spelet ut på den publika delen av QZ, där allmänheten kunde ha konton, diskutera allehanda ämnen med varandra i diskussionssystemet KOM, och köra de program som fanns. Vem som helst med ett konto kunde nu skriva det intuitiva kommandot ~R GAM:STUGA~ och dyka rakt in i Smålandsidyllen (R var kommandot i TOPS-10 för att köra systemprogram och GAM hette volymen där alla spel låg).^^ Eftersom författarna såg att folk hade svårt att lista ut hur de skulle formulera sig i kommunikationen med spelet, lät de under en period spelet logga alla kommandon som det inte förstod. Efterhand gick sedan framförallt Viggo igenom denna logg och förbättrade spelets tolk, vilket ledde till att en och annan spelare rev sig i huvudet över att spelet plötsligt förstod kommandon som det kanske inte förstått dagen innan.^^ I diskussionssystemet fanns en så kallad konferens med namnet Thorvalds Stugråd, där utvecklarna och användarna kunde mötas och dryfta åsikter och buggrapporter. Med hjälp av feedback från detta forum fortsatte ynglingarna att förbättra spelet fram till 1980. Under den perioden tillkom bl a cirka en tiondel av rummen. Författarna stod på god fot med systemprogrammerarna vid QZ, så de fick alltid hjälp att lägga ut nya versioner av spelet när de bad om det.^^ På forumet dök det allt oftare upp frågor om alla möjliga detaljer i spelet, alltid följt av frågan om det var en ~bug eller en feature~. Författarna tyckte det gick lite för långt, så de lade in en liten figur på stranden som ropar ~Hjälp, jag vet inte om jag är en bug eller en feature~ och springer rakt ut i vattnet. Diskussionen försvann ganska fort efter den figurens födelse.^^ Från 1980 låg koden i stort sett oförändrad fram till 1982, då Viggo började läsa Teknisk Fysik på KTH. Då modifierade han spelet för att kunna köras på institutionen Nadas dator Nadja. Det var den sista stordatorversionen som gjordes.^^^"; ]; SLAG_Other Om_Stugan_Historik with title "Historien om Stugan (1985-)", run [; print "^^"; print "En av dem som hade ett konto på QZ, och därigenom kom att spela Stuga, var journalisten och samhällsdebattören Erik Fichtelius. Han intervjuade författarna och skrev en artikel om spelet, vilken publicerades i Linjeflygs tidning Upp&Ner 1985. I artikeln uttryckte Fichtelius stor fascination för spelformen och spelet, och hyllade spelskaparna som pionjärer inom området.^^ Artikeln hamnade i händerna på Jan Älmeby, som relativt nyligen hade startat företaget Scandinavian PC Systems, SPCS. Älmeby ringde spelförfattarna och sade att det här måste jag ge ut. De kom överens, så Älmeby körde hem en PC till Olle för portningsarbetet. Ingen av killarna hade programmerat någon PC innan, så det blev till att lära sig lite om den plattformen först. De provade flera olika sorters Basic på PC:n, men de fick skrota dem en efter en för att de inte klarade av så stora program som Stuga. Jobbet slutfördes i Better Basic. Även den hade problem med programmets storlek, men de fick det att fungera genom att lägga ut en stor del av spelets rumsbeskrivningar på en separat fil. Den döptes till SOL.HOT för att inte se så intressant ut för användarna. För att göra texterna i datafilen lite mer svårlästa för tjuvkikare lagrades de baklänges i filen, men vändes förstås rätt när programmet läste in texterna vid uppstart.^^ Vid portningen behövde man ändra en del i koden eftersom Better Basic skilde sig en del från originalspråket DEC Basic. Samtidigt passade man på att utnyttja PC:ns möjligheter i form av teckengrafik och ljud genom (den numera ökända) PC Speaker - signaturmelodin komponerades av Kimmo några år tidigare till ett internt dockradioprogram: Skröppet forum, Viggos blivande fru Linda skrev in piratens melodi (som kom från Pirates of Penzance av Sullivan) och faunens melodi (en fauns eftermiddag av Debussy). Man lade även till några saker till spelet, såsom polletter och en sengångare. Den största förändringen var dock att en sektion av spelet innehållande några kända dockor helt sonika ströks, för att inte riskera några rättsliga problem.^^ Spelet släpptes 1986 med den något förändrade titeln Stugan, och priset sattes till 95kr, varav fem kronor gick till författarna som royalty. Det lanserades bl a genom en annons i anslutning till Fichtelius artikel när den återigen publicerades i Upp&Ner, nr 2 1986. Älmeby tyckte att Leif Åbjörnssons illustration till artikeln (som användes vid båda publiceringarna) var klockren, och köpte rätten att använda den till spelets kartong. Artikeln, samt det faktum att SPCS var en mycket stor leverantör av PC-maskiner vid den tiden, bidrog till att spelet snart nog låg på var och varannan PC i Sverige.^^ Stugan översattes även till engelska (med titeln The Cottage), norska och danska. Den som gjorde den engelska översättningen förutsatte att Viggo och Kimmo var påhittade skojnamn, och ändrade på eget initiativ Olle till Jello för att göra namnlistan ännu roligare. Inför de norska och danska översättningarna gjorde författarna en specialversion av programkoden med kommentarer om hur fria händer översättarna hade att översätta varje text. De översatta versionerna av spelet färdigställdes, men sålde långtifrån lika bra som den svenska förlagan. Författarna återfick, helt enligt svensk upphovsrättslag, rättigheterna till spelet 10 år efter att SPCS hade slutat distribuera det.^^ Exakt hur många som har klarat hela spelet och därmed blivit invalda i stugrådet är det tyvärr ingen som vet. Förutom Thorvald då förstås.^^ ^"; ]; SLAG_Other Om_Stugan_Inform_Historik with title "Konverteringen till Inform (2007-)", run [; print "^^"; print "Stuga var med stor sannolikhet det första textäventyret som skrevs på svenska, och det kan ha varit det första i världen som skrevs på något annat språk än engelska.^^ Den konvertering av Stuga, till textäventyrsspråket Inform och den virtuella maskinen Z-maskinen, som du nu spelar, gjordes 2007 av Fredrik Ramsberg och Johan Berntsson. Till vår hjälp hade vi alla tre originalförfattarna som, förutom att ge sitt generösa tillstånd till konverteringen och distributionen av spelet, även rett ut många detaljer vad gäller spelets historik. Tack vare dem är vi övertygade om att den spelhistorik som vi presenterar ligger mycket nära sanningen. Vi fick även tillstånd av Leif Åbjörnsson att använda Stugan-illustrationen vid distributionen av detta spel, vilket vi är mycket tacksamma för. Inform-versionen av Stuga betatestades av Fredrik Gertz och Benny Tall. En otroligt allvarlig bugg i Release 1 upptäcktes av Tobias Vinteus, och det är tack vare hans upptäckt som det över huvud taget är möjligt att klara spelet.^^ Vid konverteringen har vi försökt hålla oss så nära originalversionen som möjligt, med stavfel o dyl bevarade, men vissa saker vet vi skiljer:^^ * Kommandona LOGGA och LÄS LOGGFIL saknas. Med dem kunde man spara de kommandon man skrev för att senare spela upp dem igen. Eftersom slumpen ofta träder in i spelet bedömde vi att kommandologgning hade klart begränsat värde.^ ^* Kommandot VEKTOR saknas. Det var ett ~hemligt~ debug-kommando, bara avsett att användas av författarna själva för att snabbt ändra sakers tillstånd i spelet (Det finns faktiskt nya, hemliga kommandon i den här versionen, men de är som sagt just hemliga...).^ ^* Det finns ett nytt, inte särskilt viktigt kommando - VERSION. Det är standard för Inform-spel såväl som Z-kodsspel att man kan skriva VERSION för att få information om spelfilen. Dessutom är det praktiskt.^ ^* Det finns ett nytt, extremt användbart kommando - ÅNGRA. Med det kan man gå tillbaka ett eller flera steg i handlingen, och därmed undvika plötslig död och andra otrevligheter.^ ^* Eftersom spelet är såpass svårt att klara utan hjälp, har vi lagt in kommandot LEDTRÅD. Man kan då, utan poängavdrag, få hjälp att klara av problemen i spelet.^ ^* Kommandot OM har tillkommit, för att visa denna text.^ ^* Ursprungsspelet kände själv av datum och tid. Detta är inte möjligt i Z-maskinen, så vi måste istället be spelaren om denna information. Då spelet beter sig något annorlunda på ett visst skojfriskt datum varje år, vore det inte rätt mot spelarna att bara sätta ett fast datum. Klockan anses stå stilla under spelets gång, vilket endast påverkar texten på en viss sten i spelet, och endast om man sitter och spelar förbi midnatt.^ ^* Man kan skriva aa, ae och oe istället för å, ä och ö. Detta för att minska kompatibilitetsproblem med olika plattformar, samt för att underlätta för dem som har icke-svenskt tangentbord.^ ^Buggrapporter och kommentarer tas tacksamt emot på hemsidan, där eventuella nya versioner även kommer dyka upp: http://microheaven.com/if/stuga/^^^"; ]; SLAG_Other Speciella_kommandon with title "Speciella kommandon", run [; print "^^"; print "Det här är några kommandon man behöver i Stuga:^^"; style fixed; print "^? - Visa instruktionerna som man får i början, en gång till. ^INFO - Visa information om några viktiga kommandon (delvis samma som ~?~). ^INVENT - Lista vad du bär med dig. ^POÄNG - Visa hur mycket poäng du har. ^TITTA - Visa hela rumsbeskrivningen igen. ^SLUTA - Avsluta spelet och visa en bedömning av hur bra det har gått. ^HJÄLP - Be om ledtrådar. Fungerar i vissa rum, och ger då poängavdrag. ^LEDTRÅD - Gå till ledtrådsmenyn. Kostar inte poäng. ^ÅNGRA - Gör ditt senaste drag ogjort. ^SPARA - Spara spelet till en fil, så du kan fortsätta senare. ^ÅTERSKAPA - Ladda in spelet från en fil för att fortsätta spela. ^VERSION - Visa versionsinformation om spelet.^^"; style roman; ]; SLAG_Other Om_Inform with title "Om Inform", run [; print "^^"; print "Den här versionen av spelet har gjorts med programmeringsspråket Inform 6. Det utvecklades av Graham Nelson, och det är helt och hållet gjort för att skriva textäventyr i. Man kan ladda ner det gratis, tillsammans med biblioteksfiler som innehåller en färdig världsmodell, en avancerad kommandotolk mm. Det finns även en svensk översättning av biblioteksfilerna, som gör att man kan skriva spel på svenska. När man kompilerar ett Informprogram får man en plattformsoberoende spelfil. Denna spelfil kan sedan köras av en speltolk, och de finns för massor av plattformar. Man kan t ex spela på Windows, Mac, Linux/Unix, Palm och i webbläsare.^^ Om du vill veta mer om Inform och kanske prova att skriva egna spel med det, kan du gå till http://microheaven.com/svenska/skriva.shtml^^^"; ]; [ proc_about_menu; ! SLAG_Intro(); SLAG_RunMenu(Om_Stuga, 0); @set_window 0; @erase_window $ffff; print "^"; ];