MANIERO 2.51a DELUXE da un'idea originale di Leon Baradat, tradotto, corretto ed ampliato da Stefano 'theruler' Crespi (stecrespi76@gmail.com). Questa versione DELUXE riprende il mio lavoro del 2018 e lo espande con nuove meccaniche migliorando la giocabilità e l'aderenza storica delle versioni precedenti. Maniero 2.0 vide la luce dopo 3 mesi di duro lavoro di stesura codice GW BASIC (un dialetto del Basic IBM) su cui non programmavo da almeno 25 anni. E' stato un rinfrescante e divertente esercizio di stile. Ringrazio per il profondo betatest: l'autore originale Leon Baradat (https://peyre.x10.mx/GWBASIC/), mio fratello Alessandro Crespi (https://www.commandsandcolors.net/), Leonardo Boselli (https://www.youtube.com/user/1001avventura) e Selven del forum di OGI, che mi hanno aiutato segnalando i bug della mia versione (un'enormità!), suggerendomi modifiche estetiche ed implementazioni di nuove meccaniche. In caso di errori non gestiti apparirà in basso una linea di testo rossa (GURU MEDITATION) vi prego di segnalare sul forum di oldgamesitalia.net i due numeri alla sua destra. File presenti nel pacchetto: MANIERO2.BAS (il gioco eseguibile) MANIERO2.INT (le istruzioni, visualizzabili dal gioco) Questi due file devono risiedere nella stessa cartella. Verificare che il link al gioco abbia il campo "Da:" popolato con la cartella dove risiedono questi file, ad esempio "C:\Giochi\Maniero2". MANIERO2.ITA.BAS.TXT (codice sorgente in chiaro del .BAS - non necessario) MANIERO2.ITA.INT.TXT (codice sorgente in chiaro del .INT - non necessario) Il gioco creerà i seguenti file al primo avvio nel caso non fossero presenti: MANIERO2.HI (i punteggi migliori) MANIERO2.SAV (il salvataggio della partita in corso) MANIERO2.ART (il salvataggio "criptato" delle ascii art scoperte) MANIERO2.TMP (il file delle GESTA della partita in corso) XXXXXXXX.GES (i file delle GESTA salvati dall'utente) Il codice sorgente di GW BASIC è stato recentemente rilasciato gratuitamente su github: https://github.com/microsoft/GW-BASIC L'emulatore di GWBASIC è cross platform e scritto in Python da Rob Hegemans scaricabile qui: http://robhagemans.github.io/pcbasic/ Testato sia su PC-BASIC 1.2.15, 2.0.x che su hardware originale PS/1 IBM 286@10Mhz e 386@16MHz con Microsoft GW Basic v3.23 (1988). Changelog Maniero v2.51a DELUXE 04/04/2023) - Aggiornato PC-Basic alla versione 2.0.7 e pacchetto ridotto al minimo funzionale per eseguire MANIERO 2.51a DELUXE - Nessun cambiamento al codice in quanto il workaround A$=INKEY$ per il bug di PC-BASIC #166 ha ora l'effetto di far comportare il gioco come se fosse eseguito su di un 386 a prescindere dal PC host. Changelog Maniero v2.51 DELUXE (26/08/2022) - Aggiornato PC-Basic alla versione 2.0.6 - Aggiunto A$=INKEY$ all'interno dei cicli FOR/NEXT dedicati alle animazioni (transizioni, morto bruciato e raccolto) come workaround del bug di PC-BASIC #166 (https://github.com/robhagemans/pcbasic/issues/166). - L'animazione "morto bruciato", se scoperta, non veniva correttamente visualizzata nella sezione "L'arte di Maniero" - Risolto il bug nel riepilogo di fine partita per cui premere "Vedere la mappa finale" incrementava erroneamente la statistica "felicità del popolo" Changelog Maniero v2.50 DELUXE (05/12/2021) Problemi originali risolti: - Gestito il raro "divide by zero" in caso di zero popolazione durante il calcolo del morale - Risolto problema decessi negativi quando la variabile V(A) risultava negativa, riportando il valore assoluto di VA(A) - Migliorato il calcolo dei decessi da malnutrizione e indigenza in quanto poteva capitare che morissero più persone di quelle presenti - Risolto bug originale "divide by zero" durante il calcolo del morale dei vassalli. Va fatto solo se LE o LF sono diversi da zero. MO(2)=MO(2)-(RND*(((LF*2)-LE)/(LE*2))*.5) - Spostato il calcolo delle nascite e dei decessi da prima degli eventi casuali (rivolte, peste, avvelenamenti ecc.) a dopo, rendeva i calcoli del giocatore durante la distribuzione delle terre inutile in caso di assegnazione al limite (se il popolo aumenta il pro capite si abbassa e ciò porta a rivolte anche se tutti sono felici) - Tolta la possibilità di cercare mercenari quando qualcuno marcia contro di noi, non c'è tempo, tematicamente più accurato - Invertita la logica della risposta (normalmente INVIO per NO o zero) nella distribuzione delle terre e nell'avvio della battaglia (dunque INVIO per Sì). In questi due casi un inavvertito INVIO poteva compromettere l'intera partita - Ora quando si visualizza la mappa finale, in caso si perda a seguito di una invasione militare, il tuo terreno è correttamente assegnato al nobile invasore, così come il colore delle bandiere e del campo del castello nella schermata finale - Poteva capitare di non riuscire a conquistare un maniero avversario pur avendo preso già tutta la sua terra. Ora se la terra avversaria scende sotto una certa soglia (bassa) la conquista del maniero in caso di vittoria della battaglia è automatica - Dopo innumerevoli prove di distribuzione delle terre poteva capitare che i morali si disallineassero - Un errore in una formula impediva ai nobili di invadere i propri manieri reciprocamente. In NESSUNA delle partite testate finora era MAI successo - Risolto il bug "RETURN WITHOUT GOSUB" della linea 1600 che non veniva mai attivata per via dell'errore di cui sopra, di fatto un nobile che veniva attaccato aveva zero possibilità di invadere il maniero avversario anche se previsto in caso di forte superiorità - I calcoli del punteggio (S7 e S8) relativi alle campagne militari, non prevedendo l'eventualità che un nobile ne potesse conquistare un altro, risultava in "ILLEGAL FUNCTION CALL". L'errore si presentava per valori di terra doppi rispetto a quelli di partenza - Corretta una formula legata alle perdite in battaglia, calcolava perdite alte in caso di vittoria contro un avversario debole - Rimossi calcoli e variabili non necessarie (PS e SS, quest'ultima anche duplicata) durante la fase di assedio - Variabile PQ1 assegnata correttamente come PQ1(I) all'avversario alla fine della battaglia (essendo PQ1 non definita rimaneva a zero: PQ1=PQ1*(RND*.3+.65), PQ1(I) è una discriminante nella compravendita dei terreni) Nuove meccaniche: - Aggiunta la proposta del Re di pagare in uomini il debito e come evento random (30%) ogni anno tra la stagione del raccolto e la elargizione grano - Aggiunte le stagioni e spostata la fase di semina in accordo con le reali attività stagionali, più realistico della semina e raccolto istantanee. Ciò introduce una interessante variante strategica dovendo decidere gli acri da seminare a fine turno e non più in fase di raccolto - Reso variabile il numero di campagne possibili in base alla stagione (2-6) precedentemente fissato a tre - Aggiunti due valori alla scala del morale del popolo: furiosi, scontenti, pacifici, felici, appagati. In questo modo il trend è più chiaro ed è più facile capire quanto e quando spingere con le tasse e le elargizioni e dunque prevenire avvelenamenti o tumulti - Modificata la scala del morale da 0-2 a 0.1-2.1 per rendere i risultati dei calcoli meno assoluti - Aumentato il tasso di cambio moggi/fiorini e differenziato dal tasso fiorini/moggi per adeguarlo alla maggiore disponibilità e rendere più appetibile il pagamento delle tasse - Modificata la richiesta di moggi pro capite annui della popolazione da 25 a 22 (soglia indigenza da 20 a 18) per adeguarla al nuovo tasso di crescita - Modificato il calcolo dei decessi e delle nascite a fine turno, ora è maggiormente legato al morale con una forbice che va da +30%/+15% con morale massimo (molte nascite) a +15%/0% con morale medio (poche nascite) a 0/-15% con morale minimo (pochi decessi) - Legato il numero di mercenari trovati alle dimensioni di terra posseduta (L) e variato l'ingaggio da 20 moggi ad un numero variabile tra 15 e 25 - Ora il morale viene influenzato negativamente anche dai decessi per malnutrizione, positivamente dal surplus di moggi per il popolo e soprattutto dalla quantità di terra pro capite assegnata (assurdo non averla implementata prima) - La mappa non è più solamente cosmetica. Introdotta la verifica delle adiacenze, in modo che un nobile possa attaccare solo i propri confinanti (nel gioco originale due feudi opposti si potevano attaccare ma di fatto non si scambiavano terra) - La verifica delle adiacenze aggiunge un nuovo livello strategico al gioco, potenziando la compravendita dei terreni. Ad esempio per tagliare l'accesso ad un particolare feudo per un altro nobile, escludendo la minaccia che quest'ultimo possa conquistarlo, oppure vendendo una striscia contigua di terra ad un feudo X per isolarsi dal feudo Y - Ora se i nobili scendono sotto i 7 acri pro capite non è più certa l'impiccagione (ovvero GAME OVER) avendo aggiunto una componente casuale - Aumentati i fiorini iniziali da 15 a 50 e i moggi di grano da 150 a 350 per dare più scelte i primi due turni, altrimenti quasi sempre predefinite - Aumentati i costi dei guardiani da 3 a 5 e delle spie da 5 a 8 - Con l'incremento della popolazione si è reso necessario rivedere le formule delle perdite amiche C(A) e nemiche WC in battaglia, legandole alla differenza di forza tra i due eserciti e alla popolazione di partenza. Poteva capitare di avere fino a 90 caduti. Valore che non avrebbe mai permesso una ripresa - Esiste ora una piccola probabilità, e una volta soltanto nella partita, di annettere una provincia senza spargimenti di sangue attraverso matrimonio di convenienza Nuove caratteristiche: - Rivisto completamente il sistema di spionaggio, ora le spie base (i vassalli) forniscono comunque informazioni sporadiche. Si possono assoldare fino a 3 spie, ma non garantiranno mai il 100% dei dati. Aggiunte inoltre i dati sui moggi e sui fiorini posseduti dai 5 nobili, organizzati in una più immediata tabella - Modificato il sistema di protezione dei magazzini. Ora gli eventi sono più catastrofici in base alla gravità (furto < morbo < locuste < incendio < alluvione) e l'eventuale perdita viene mitigata dal numero di guardiani ingaggiati - Ottimizzata la definizione iniziale delle variabili della mappa, ora senza sovrapposizioni - Aggiunte importanti informazioni al riepilogo superiore che accompagna per tutta la partita in una nuova veste grafica che richiama le mura del maniero - Riorganizzato il riepilogo di inizio turno con le nuove informazioni e aggiunto elemento decorativo medievale che richiama la vista interna della sala del consiglio del maniero - Riorganizzata la tabella della distribuzione delle terre e completamente rimossa la componente casuale dal calcolo del morale in questa fase. In questo modo la previsione è più veritiera e direttamente collegata alle scelte di distribuzione - Aggiunta grafica ascii per morte di vecchiaia, portando il totale a 7 - Aggiunte tre transizioni che si attivano casualmente al passaggio del turno e in caso di assedio - Aggiunta animazione per la stagione del raccolto - La maggior parte delle informazioni statiche di gioco (inizializzazione, attendere, premi un tasto ecc..) sono state spostate nell'ultima riga possibile, la 24a - Spostata l'inizializzazione delle costanti di gioco e la schermata iniziale sul file maniero2.int liberando così ram per il gioco. Quella porzione di codice (circa 4KB) viene eseguita solo una volta ad inizio partita, passaggio cruciale visto l'ammontare di byte che ha richiesto il nuovo codice della v2.5 Deluxe - Aggiunte indicazioni su come scegliere gli acri da vendere/comprare nella mappa - Sostituito il termine servi con il più contestualmente accurato vassalli - modificato i testi di gioco e dell'intro per adeguarli alle nuove terminologie e meccaniche introdotte o modificate dalla v2.22 - Rimossa la possibilità di comprare o vendere la terra del Re quando si è in guerra con lui - Dopo il punteggio finale viene presentato un box con le opzioni di fine partita, rimosse le noiose domande in sequenza - Aggiunto al menù principale un collegamento alla "Arte di Maniero 2", un sottomenù che permette di visualizzare tutte le ascii art scoperte - Riorganizzata la tabella dei migliori feudatari - Ottimizzato il processo di visualizzazione della mappa di gioco grazie alla sostituzione della condizionale per il colore con una formula che pesca da costanti definite all'inizio - La mappa non ha più bisogno di essere aggiornata al termine della selezione della terra. Ogni casella scelta cambia il suo colore immediatamente - Aumentati gli acri dei possedimenti iniziali di ogni feudatario e Re per raggiungere la corretta relazione con il numero di caselle (1 = 12 acri) sulla mappa. (TU)1385 => 1524, (1)2425 => 2664, (2)1135 => 1248, (3)1760 => 1932, (4)1593 => 1764, (5)1302 => 1428, (RE)9600 => 15307 - Visualizzando le Gesta è ora possibile uscire in ogni momento (prima era necessario vedere tutti i turni fino alla fine) e riprendere la partita da un determinato anno. Non sarà però possibile vedere né salvare, punteggi, le gesta o eventuali ascii art scoperte - Sostituita la grafica ascii del fuoco (peso originale 327 Bytes) con una animazione di 100 frames (310 Bytes) composta principalmente da comandi e pochissimi caratteri. Il calo di dimensione è dovuto al fatto che GWBASIC converte ogni comando in token di 1Byte ma lascia inalterato, quindi in chiaro, il testo all'interno delle stringhe - Riordinato e ottimizzato il codice per una maggiore velocità di esecuzione su real hardware lento + GWBASIC (286/386) utilizzando funzioni specifiche al posto di cicli FOR-NEXT. Circa 3KB liberi di RAM a gioco inizializzato, circa 58KB e 600 linee di GW BASIC un linguaggio di programmazione ad alto livello scritto nel 1983! - Pacchetto contenente le versioni 1.1 eng, 1.5, 2.2 e 2.5 deluxe eseguibili tramite un unico batch che integra l'ultima versione di PC-BASIC Changelog v2.22 (29/12/2018) Nuove caratteristiche: - Tutti i dati sono memorizzati di anno in anno e con "invio" mantengono il valore dell'anno precedente - Tutti i risultati dei calcoli sono ora degli interi e quando previsto, a una o due cifre decimali - Aggiunte 6 ASCII ART per 4 dei 7 possibili finali e "grafica" di contorno - Aggiunti gli effetti sonori (pc speaker). Si segnalano crash casuali in PC-BASIC che non riesce a gestire più comandi SOUND in sequenza (bug noto), per questo nelle opzioni vi è la possibilità di disabilitare il suono - Ottimizzazione del codice (circa 2500 Bytes liberi di RAM a gioco in corso), 59286 Bytes e 595 linee di codice. In originale 29896 e 311 Changelog v2.20 (21/12/2018) Nuove meccaniche: - Aggiunta la possibilità di impiccare il feudatario avversario di cui si è conquistato il maniero (giustiziandolo il morale dei nobili si abbassa, salvandolo si abbassa quello dei contadini e lui rientra tra i tuoi nobili) Nuove caratteristiche: - Una volta terminata la selezione dei terreni sulla mappa non viene eseguito l'aggiornamento dell'intera schermata ma solo dei cubetti interessati - Se il maniero di un feudatario viene conquistato, il suo nome, così come il suo colore, ora non compare più sulla mappa - Una volta conquistato il maniero più forte (Duca Cinturanera) diventa attaccabile il terreno del Re. Decisione che però sconvolgerà parte delle meccaniche Changelog v2.15 (24/11/2018) Nuove caratteristiche: - Aggiunto fissato in alto il pannello riepilogativo con le informazioni principali del Maniero. Si aggiorna automaticamente ad ogni variazione e/o scelta del giocatore - Tutte le sezioni di gioco sono codificate da un colore (Distribuzione terre in azzurro, tasse in marrone, consigliere in giallo ecc... vedi le istruzioni per la descrizione completa) - Il gioco ora salva automaticamente la partita (unico slot) ad ogni inizio turno - Aggiunta possibilità a fine gioco di visualizzare la mappa finale - Ora è possibile salvare le proprie GESTA in un file che contiene tutti i turni di gioco, ripercorribili ad uno ad uno seguendo il mutamento della mappa e delle principali statistiche - Aggiunta la classifica dei migliori feudatari (highscore) Changelog v2.10 (14/11/2018) Nuove caratteristiche: - Aggiunta cosmetica della tendina che sancisce il passaggio del turno - Nuovo Menù opzioni iniziale (istruzioni/carica/suoni/uscita ecc...) - Aggiunta indentazione alle tabelle riepilogative Changelog v2.03 (02/11/2018) Nuove meccaniche: - Adesso il morale delle classi sociali varia coerentemente con la terra elargita Nuove caratteristiche: - Riorganizzata le schermate riepilogative di inizio e di fine turno - Rimossa da ogni schermata qualunque informazione ridondante - Aggiunte informazioni rilevanti (colorate contestualmente) all'interno del testo come i moggi mancanti ai gruppi sociali, il loro morale, la fertilità dei terreni (dei gruppi e dei manieri limitrofi) ecc... - Il morale delle tre classi ora viene modificato anche dalle tasse del Re, dalla percentuale di acri lavorati da parte dei servi o quando si decide la sorte del feudatario sconfitto - Modificata la sezione "fame e raccolto" in una più comoda tabella riepilogativa che presenta tutti i dati in un'unica schermata, utile per la gestione delle elargizioni di grano - Modificata la sezione "distribuzione delle terre" in una più comoda tabella riepilogativa che presenta tutti i dati in un'unica soluzione (con l'aggiunta della fertilità e del morale attuale e previsto) per una miglior gestione delle elargizioni di terreno Changelog v2.00 (20/10/2018) Problemi originali risolti: - Corretta la condizione che limita la fertilità ad un intervallo di 0-70 onde evitare i rari casi di "illegal function call" essendo le variabili e gli array F,F(A) e FF(A) utilizzati all'interno di funzioni stringa - Gestione completa delle eccezioni del programma. Il gioco non si blocca o esce, semplicemente segnala due codici di errore (GURU MEDITATION in onore del famoso errore Commodore AMIGA) Nuove meccaniche: - Nuova meccanica legata alla guerra, ora è possibile attaccare il Re (Final Boss Fight), ma è difficile! - Se si conquistano tutti i terreni la mappa si allontana per mostrare i terreni limitrofi posseduti dal Re, aumentando la scala delle battaglie Nuove caratteristiche: - Rivisto completamente il calcolo dei caduti in battaglia, ora è minore se si subisce un assedio nel castello ed è legato alla differenza di numero di soldati attaccanti e difensori, combattere contro un esercito più debole produrrà meno vittime - Durante il consiglio dei cavalieri prima della battaglia, i nobili daranno più informazioni e saranno più precise - Le risposte s/n non devono più essere seguite da invio. Vale solo "s", ogni altro tasto vale come NO, tranne se altrimenti specificato Changelog v1.90 (15/09/2018) Problemi originali risolti: - Aggiunta una condizione di uscita dall'eventuale loop "i servi stanno ridisegnando i confini sulla mappa, attendere..." dopo 5 secondi (capitava che l'algoritmo non riuscisse a trovare un quadrato disponibile per via dell'eccessivo frastagliamento dei confini) - Ora non è più possibile acquisire, in caso di conquista di un maniero, più persone in salute di quelle totali per il gruppo specifico (capitava si acquisissero ad esempio 20 contadini di cui 25 in salute) - Corretto il calcolo delle perdite in battaglia (in originale poteva capitare morissero ad esempio 8 nobili di 0) - Corretta la condizione che limita il morale ad un intervallo di 0.1-2, poteva capitare di ottenere in battaglia, in caso di vittorie consecutive, morali oltre 9 che falsavano i calcoli successivi Nuove meccaniche: - Limitato a 3 il numero di campagne militari possibili effettuabili in un anno (evita il cheat che permette di acquistare sempre il numero massimo di mercenari, 20) - Ora i mercenari sopravvissuti alla prima battaglia continuano a combattere per te anche nelle eventuali 2 campagne successive, all'interno dell'anno, visto che il loro costo di ingaggio è annuale Nuove caratteristiche: - Aggiunto un nuovo modo di morire - Schermata finale riepilogativa ampliata con i dati utili a sottolineare le conquiste o le mancanze della partita - Aggiunta visualizzazione testuale della battaglia Changelog v1.65 (27/08/2018) Problemi originali risolti: - Mappa erroneamente visualizzata in modalità "transazione terreni" dopo essere stati attaccati (bug dovuto alla duplicazione della variabile RT) - Poteva capitare che un Nobile già sconfitto (provincia) fosse interessato alla tua terra Nuove meccaniche: - Nuovo sistema di spionaggio. Le spie garantiscono una precisione dell'informazione del +/- 10%, quando riescono a trovarla (50% per ogni dato)! - Nuovo sistema di guardiani dei magazzini a protezione del grano da calamità naturali. In originale veniva tolto d'ufficio un numero casuale di moggi dalle riserve tra i 251 e i 349, ora si possono investire fiorini per salvaguardarli (6 eventi) Nuove caratteristiche: - Calcolo punteggio finale rivisto, premiata maggiormente la conquista, l'acquisto delle terre e penalizzata la vendita. Rivisti e omologati alcuni calcoli - Resa facoltativa la visualizzazione della mappa dei manieri limitrofi, saltata se il numero di acri acquistati o venduti è meno di 7 (un quadretto equivale a 12 acri) - Il gioco non fa più scorrere il testo ma è organizzato a schermate e blocchi tematici (acquisti, distribuzione terreni, tassazione, guerra ecc...) Changelog v1.5 release iniziale (10/08/2018) Problemi originali risolti: - "Script out of range in 2070" durante il disegno della mappa una volta che si perdeva un assalto fatto da 2 nobili (bug dovuto alla duplicazione della variabile B1) - "Subscript out of range" o "illegal function call" se il cursore veniva spostato fuori dai confini della mappa, ora quando arriva ai limiti della mappa si blocca ed emette un tono a bassa frequenza - Sulla mappa il cursore lasciava una traccia verde quando veniva spostato Nuove meccaniche: - Nuovo sistema di tassazione legato a quanto effettivamente raccolto, guadagnato e posseduto. Nessun valore eccessivamente alto o basso. Il gioco originale tende a livellare TROPPO verso il basso magazzini troppo pieni (capita spesso di trovarsi a pagare 5000 moggi di tasse avendone solo 2000), ora lo fanno le calamità in maniera ridotta - I guadagni derivanti dalle tasse ai contadini e nobili sono ora spostati nella parte "guadagni personali" diventando così la parte di tasse più cospicua. E' dunque più importante la decisione di occultare i guadagni Nuove caratteristiche: - Gioco e istruzioni tradotti completamente in italiano, testo giustificato per sfruttare a pieno le 80 colonne. Questa è la versione più vicina alla originale