Lyonesse/bin/
Lyonesse/doc/eng/
Lyonesse/doc/ita/
Lyonesse/lib/
Lyonesse/lib/buildings/
Lyonesse/lib/clans/
Lyonesse/lib/data/
Lyonesse/lib/etc/
Lyonesse/lib/house/
Lyonesse/lib/misc/
Lyonesse/lib/plralias/A-E/
Lyonesse/lib/plralias/F-J/
Lyonesse/lib/plralias/K-O/
Lyonesse/lib/plralias/P-T/
Lyonesse/lib/plralias/U-Z/
Lyonesse/lib/plralias/ZZZ/
Lyonesse/lib/plrobjs/A-E/
Lyonesse/lib/plrobjs/F-J/
Lyonesse/lib/plrobjs/K-O/
Lyonesse/lib/plrobjs/P-T/
Lyonesse/lib/plrobjs/U-Z/
Lyonesse/lib/plrobjs/ZZZ/
Lyonesse/lib/plrsave/A-E/
Lyonesse/lib/plrsave/F-J/
Lyonesse/lib/plrsave/K-O/
Lyonesse/lib/plrsave/P-T/
Lyonesse/lib/plrsave/U-Z/
Lyonesse/lib/plrsave/ZZZ/
Lyonesse/lib/ships/
Lyonesse/lib/stables/
Lyonesse/lib/text/help/
Lyonesse/lib/world/
Lyonesse/lib/world/bld/
Lyonesse/lib/world/ship/
Lyonesse/lib/world/shp/
Lyonesse/lib/world/wls/
Lyonesse/lib/world/wls/Life/
Lyonesse/lib/world/wls/Map/
Lyonesse/log/
/**************************************************************************
 * #   #   #   ##   #  #  ###   ##   ##  ###       http://www.lyonesse.it *
 * #    # #   #  #  ## #  #    #    #    #                                *
 * #     #    #  #  # ##  ##    #    #   ##   ## ##  #  #  ##             *
 * #     #    #  #  # ##  #      #    #  #    # # #  #  #  # #            *
 * ###   #     ##   #  #  ###  ##   ##   ###  #   #  ####  ##    Ver. 1.0 *
 *                                                                        *
 * -Based on CircleMud & Smaug-     Copyright (c) 2001-2002 by Mithrandir *
 * ********************************************************************** */

CodeBase di partenza: Circle 3.0 bpl 19 e Smaug 1.4a

Legenda:
-       Fatto
*       In Lavorazione
#       Da Fare

---------------
Implementazioni
---------------

- Convertita la gestione delle stanze da array a tabella hash con linked list (Smaug like)
    [tutti i files]
        Tutte le chiamate a world[] sono state sostituite con chiamate
        alla funzione get_room();
        I loop da 0 a top_of_world sono stati sostituiti con loop sulla
        tabella hash;
        Nella struttura char_data non c'e' piu' il numero della stanza ma
        un puntatore alla stanza stessa;

- Gestione delle uscite con doppia linked list (Smaug like)
    [structs.h db.c utils.c act.movement.c genwld.c redit.c + varie cose in altri files]
    Non c'e' piu' limite alle uscite da una stanza.. sono possibili
    anche + uscite in una stessa direzione.

- Wilderness (see wilderness.txt)
        [wilderness.c structs.h utils.h]
        Gestione totalmente dinamica di stanze, settori wild e mappa ascii..
        - Aggiunte un sacco di macro per gestire nomi, descrizioni e coordinate..
        - Aggiunto comando Survey

- Gestione liste oggetti con doppia linked list (Smaug like)
        [structs.h + vari..]
        Le liste di oggetti trasportati, presenti nelle stanze o
        dentro altri oggetti ora sono gestite tramite una doppia linked
        list (first_content e last_content per stanze e contenitori,
        first_carrying e last_carrying per i giocatori/mob) e con doppio
        puntatore ai nodi (next_content e prev_content);
        - Importate le macro LINK, UNLINK e INSERT da Smaug;
        - fixed: sostituite tutte le chiamate a get_obj_in_list_vis() con
          get_obj_in_list_vis_rev() per mantenere la gestione LIFO degli
          oggetti dato che le nuove funzioni aggiungono gli oggetti in
          fondo alle liste e non piu' in testa.

- Object count (Smaug like)
        [structs.h act.item.c objects.c handler.c + altri..]
        - implementate funzioni per riunire (group_object()) e separare
          (split_obj()) oggetti uguali. In questo modo se un pg ha
          10 pozioni di cura, non vengono creati 10 oggetti diversi ma
          un solo oggetto con valore count = 10, con un notevole risparmio
          di memoria nonche' una semplificazione nella gestione di piu'
          copie dello stesso oggetto in visualizzazione, gestione, ecc;
        - Gli oggetti raggruppati vengono estratti (extract_obj());
        - Quando una di questi oggetti viene usato, il codice lo separa
          dagli altri uguali, decrementando il valore count e creando
          un nuovo oggetto con count = 1;
        - riscritte le varie funzioni di manipolazioni di oggetti
          (drop, get, give, put);
        - FIX - ora le funzioni obj_to_char, obj_to_obj e obj_to_room
          hanno come valore di ritorno OBJ_DATA* e non piu' void, e ritornano
          o l'oggetto oppure l'oggetto con cui sono stati raggruppati. Questo
          per evitare che, in caso di raggruppamento, ulteriori riferimenti
          all'oggetto abbiano un puntatore non valido;

- Monete
        [structs.h objects.c]
        Le monete vengono ora gestite come oggetti e non piu' come un valore
        di una variabile. L'oro di un giocatore e' sempre un singolo oggetto,
        la quantita' di monete e' data dal valore della var. value[0]
        dell'oggetto, questo per evitare di considerare 1000 monete d'oro come
        1000 oggetti diversi.
        Il valore gold rimane invece per i mob, onde evitare di creare migliaia
        di oggetti al boot. L'oro viene "convertito" in oggetto quando un mob
        viene ammazzato.
        L'oro in banca resta come prima.
        - Aggiunte funzioni di creazione e aggiornamento monete
        - Inserita nelle funzioni di manipolazioni degli oggetti (get, drop, ecc)
          la gestione delle monete.
        - FIX - sistemato il calcolo del peso per gli ITEM_MONEY
        
- Ascii Playerfile & Objfile
        [structs.h, save.c + tanti altri]
        Riscritta la gestione dei salvataggi dei giocatori e dei loro oggetti
        usando file ascii invece che binari.
        - eliminato objsave.c
        - eliminate da db.c le funzioni save_char, load_char, char_to_store,
          store_to_char
        - riscritte le funzioni per gestire la tabella dei giocatori
        - modificato tutto il codice che usava le funzioni Crash_xxxxx per
          usare le nuove funzioni.
        
- Creazione random di oggetti
        [objrandom.c objrandom.h structs.h db.c]
        Crea oggetti del tipo specificato in modo casuale, magici e non
        - Aggiunti nuovi comandi per Zone, per caricare gli oggetti random

- Item Condition
        [structs.h objects.c fight.c act.informative.c]
        Item can be damaged and repaired

- Oggetti di Mobilia (Furnitures)
        [act.movement.c + vari]
        Implementati i mobili. Ora un pg puo' sedersi su una sedia, 
        sdraiarsi su un letto o posare/prendere oggetti da un tavolo.
        - FIX - char_from_room() ora controlla e se necessario chiama
                char_from_obj()

- Introduction Code
        [structs.h act.other.c act.informative.c + vari]
        Se non si conosce un giocatore, non viene visualizzato il nome ma
        solo la classe e la razza;
        La gestione delle "conoscenze" viene fatta tramite una doppia
        linked list KNOWN_DATA, manipolata dalle funzioni in act.other.c
        ( is_known_char(), add_known(), etc.)
        - Introdotto comando GREET per presentarsi
        - Introdotto comando FORGET per "dimenticarsi" qualcuno
        - Introdotto comando KNOWINGS per avere un elenco delle conoscenze

- Clan code
        [clan.c clan.h fight.c]
        #TODO# - Gestire edifici Clanhall
                
- Pietre Portali
        [wild.info.c]
        Implementate le pietre portali che consentono di viaggiare da una
        pietra all'altra in modo istantaneo.
        #TODO# - Seminare un po' di pietre qua e la'
        
- Incrementato numero max di spells & skills
        [spells.h structs.h lib/etc/messages]

- Sistema Atmosferico Globale
        [weather.c act.informative.c]
        Implementata una versione semplificata MA funzionante del sistema atmosferico
        del mud GreyHawk

- Gestione delle affections alle room
        [structs.h act.informative.c magic.c spells.h spell_parser.c constants.c constants.h]
        Riscritta parzialmente per gestire meglio le stanze.. ora le Room Affections sono
        salvate in due liste, una globale per tutto il mondo, e una locale interna alla
        stanza.
        RAFF_LIST e' la lista globale
        ROOM->AFFECTIONS e' la lista interna alla struttura ROOM_DATA
        sono state riscritte alcune funzioni per avere la sicurezza che quando un'affections
        viene inserita in una lista sia inserita anche nell'altra.. stesso discorso per la
        rimozione..
        inoltre le ROOM_AFFECT settano anche i corrispondenti bitvector ( RAFF_xxx )
        nella variabile room_data->room_aff (impostate anche le macro ROOM_AFFS e ROOM_AFFECTED
        in utils.h.

- Success()
        [spell_parser.c]
        funzione per effettuare i check sull'uso di skill e spell

- ImproveSkill()
        [spell_parser.c]
        funzione che, in caso di successo nell'uso di una spell/skill,
        puo' aumentare la conoscenza di quella spell/skill del personaggio

- Auto diagnose during fight
        [fight.c]
        Durante il combattimento mostra lo stato di salute dell'avversario

- Memorizzazione Incantesimi
        [structs.h magic2.c]
        Nuovo sistema magico basato sulla memorizzazione di incantesimi;
        (aggiunta var. spell_mem[MAX_SPELLS+1] a player_specials

- Item Specials
        [structs.h]
        associata alla struttura obj_data una variabile 'void *special' per assegnare
        agli oggetti dati speciali di diversa natura;
        Implementati:
        - Spell books (flag ITEM_IS_SPELLBOOK) [v. Spellbooks]
        - Item spells (flag ITEM_HAS_SPELLS)   [v. Item Spells]
        - Trapped items (flag ITEM_HAS_TRAPS)  [v. Trapped Items]
        
- Spellbooks
        [magic2.c]
        Implementati i libri di incantesimi per gli stregoni; per poter memorizzare
        un incantesimo e' necessario che sia presente nel libro.

- Trapped Items
        [structs.h obj_traps.c act.item.c act.movement.c]
        Consente di associare ad oggetti effetti nocivi per i giocatori
        in risposta ad azioni quali get, drop, use, ecc.

- Item Spells ( Enchant skill )
        [struct.h magic2.c]
        Ora e' possibile associare incantesimi agli oggetti
        (es. weapon spells)

- Study & Copy skills
        [magic2.c]
        E' possibile studiare oggetti magici per apprendere o migliorare
        i propri incantesimi

- Item FAST_MAGIC
        [structs.h limits.c magic2.c]
        furnitures che aumentano il mana regain o consentono di
        memorizzare immediatamente una spell

- Triggered Events for Rooms
        [structs.h db.c room_triggers.c + vari]
        Consente di associare alle stanze degli eventi che hanno luogo
        in risposta a determinate azioni compiute nella stanza dai
        giocatori/mob.

- Stalle
        [structs.h spec_procs.c stables.c]
        Stalle dove salvare le cavalcature ed i veicoli
        - Implementata vendita di cavalcature e veicoli

- Hunt code
        [graph.c structs.h act.offensive.c mobact.c act.informative.c]
        Gestione completa del track.
        Mob possono dare la caccia ai pc.

- Smart Mob Fighting
        [mobact.c]
        Durante il combattimento, i mob cercheranno di attaccare l'elemento
        piu' debole tra quelli che lo stanno combattendo.
        (funzione check_switch_opponent())
        
- Moon Phases
        [structs.h weather.c db.c]

- Ranged Weapon
        [act.item.c act.offensive.c fight.c + altri]
        Armi che possono colpire a distanza (archi, fionde, balestre)
        - Implementati i contenitori di proiettili: ora non occorre
          piu' holdare il proiettile ma basta averlo nell'apposito
          contenitore (faretra, sacco o custodia)
        - il mob attaccato a distanza o scappa o arriva e attacca il pc

- Ranged spell
        [spells.h spell_parser.c magic.c]
        Spells che possono avere come bersaglio mob/pc in stanze adiacenti
        - il mob attaccato a distanza o scappa o arriva e attacca il pc

- Kills and Death counter
        [structs.h fight.c act.informative.c]
        Tiene conto delle uccisioni e delle morti dei giocatori.

- Remort Code
        [structs.h class.c]
        I giocatori, raggiunto il 30^ livello, possono ricominciare dal primo
        livello in un'altra classe. Mantengono tutti gli skills e le spells
        che gia' hanno, ma non potranno usarle finche' non raggiungono il
        livello minimo necessario.
        I punteggi delle abilita' (STR, DEX, ecc) restano invariati.
        HP, MANA e MOVE e anche l'EXP invece vengono resettati.
        
- New Death System
        I giocatori, quando vengono "uccisi", non lasciano piu' un corpo nella
        stanza, ma vengono flaggati come PLR_GHOST e trasferiti nel Labirinto.
        Solo quando arriveranno all'uscita del labirinto, troveranno un mob
        guardiano che li resuscita e li fa uscire.
        - Se quittano mentre sono Ghost perdono l'eq e quando rientrano vengono
        rispediti nel labirinto.
        - fatto mob "resuscitatore".
        # TODO - fare spell "resurrect" per resuscitare al volo i giocatori.

# Trophy code
        [act.other.c]
        I giocatori possono prendere la testa dai corpi di altri giocatori.
        # INUTILE con il nuovo Death System..... hmmmmm hmmmmm hmmmmm

- Hidden doors
        [structs.h act.informative.c act.movement.c utils.c]
        Le uscite possono essere nascoste e devono essere trovate con "search".

- Weapon Proficiencies
        [spells.h spell_parser.c fight.c]

- Edifici
        [structs.h buildings.c]
        I giocatori possono costruire edifici di vario tipo, sia nella wilderness
        sia nelle aree normali (!!!limitare!!!)
        - gli edifici possono essere attaccati e danneggiati
        - implementato comando per riparare gli edifici
        - implementato collegamento con clan x clanhall
        # TODO - fare template per "Castello"
        # TODO - spells castabili su edifici

- Navigazione
        [wild.ships.c]
        I giocatori possono acquistare navi di vario tipo per navigare nei mari,
        esplorare e commerciare.
        - navigazione sui mari
        - tipologie di navi
        - rotte
        # TODO - scrivere documentazione!!!

- Veicoli
        [structs.h vehicles.c act.informative.c act.item.c act.movement.c stables.c]
        I giocatori possono acquistare (nelle stalle) veicoli di vario tipo per
        trasportare merci e persone.
        - Implementati i veicoli
        - Implementato il salvataggio dei veicoli in stalle
        - Implementato l'aggiogare mob ai veicoli per trainare
        - Implementato il caricare merce nel veicolo
        - Giocatori e Mob possono entrare dentro un veicolo
        - Attaccare un veicolo
        - Danneggiare un veicolo
        - Riparare un veicolo
        - Quando un giocatore si accampa nella wild il veicolo viene salvato
        # TODO - spells castabili su veicoli

- Sistema Economico e Sistema Commerciale
        [structs.h goods.c economy.c]
        (vedere "sistema economico.doc"
        - merci, mercati e posti di scambio
        - sistema economico "sotterraneo" indipendente dai pg
        - pg comprano e vendono merci
        - implementate affections sui mercati che influenzano prezzo e produzione
        - aggiunto comando MARKETS per avere informazioni sui mercati;
        - aggiunta opzione INFO al comando MARKETS per avere informazioni sulla
          situazione della produzione e dei prezzi dei vari mercati;

- Mob Encounter Table in Wilderness
        [structs.h wild.life.c]
        gestione incontri casuali di mob nei settori wild.

# Tarare i prezzi di edifici, navi e veicoli in base al sistema economico/commerciale

-----------------------------------------------------------------------------
:Snippets:
-----------------------------------------------------------------------------

- Eventi
        [structs.h comm.c events.c queue.c]

- Gestione dei colori con &
        [comm.c e screen.h]

- Gestione delle abbreviazioni nelle keywords
        [handler.c]

- Who sortato x livello
        [act.informative.c]

- Stacking per mob
        [act.informative.c]

- Bragging mobs
        [mobact.c]
        
- Generazione casuale di labirinti
        [db.c]
        funzione make_maze() modificata per lavorare con la nuova gestione hash delle stanze
        e delle uscite

- Line Input
        [interpreter.c]
        Snippet che permette di poter fare domande ai giocatori
        e gestirne le risposte senza dover definire N-mila nuovi
        stati CON_xxxx.
        ( es. Sei sicuro di voler mangiare la torta (Si/No) ? )

- Saving Throws & THACO Formulaes
        [class.c]
        Eliminate quelle lunghissime liste di valori, sostituite con
        delle formule

- Mount system
        [act.informative.c act.movement.c handler.c spell_parser.c spells.h structs.h utils.h]
        Cavalcature

- Weapon spells
        [structs.h fight.c magic.c oedit.c genobj.c]
        Armi che in combattimento usano incantesimi

- Killing same mobs have XP penalties
        [structs.h utils.h limits.c fight.c act.informative.c]
        Tiene conto degli ultimi 100 mob ammazzati da un giocatore, dando
        penalita' sugli XP guadagnati sulle morti di quei mob. Serve per
        evitare che i giocatori uccidano sempre gli stessi mob.

- Shop saving non-producing items.
        [shop.c db.c]
        Allows the saving of items given/sold to shopkeepers who normally
        do not load or "produce" the items.

- SpecProcs names
        [spec_procs.c]
        
- Count char items
        [utils.c]
        This is a simple drop-in tid-bit of code that returns the number of items
        that someone is in possession of. (recursive for containers)

- User Counter
        [interpreter.c]
        Conta quanti giocatori si sono collegati al mud.

- Newbie Equipment
        [class.c]
        Ai nuovi giocatori vengono dati alcuni oggetti.

- Razze
        [structs.h class.c act.informative.c act.other.c save.c]
        Razze per i giocatori (Umani, Elfi e Nani).

- Knock on Door
        [act.other.c]
        Si puo' bussare. :-)
        
- Roll Stats
        [class.c interpreter.c]
        Rollaggio del punteggio delle abilita'.

- modulo per le descrizioni multiple di stanze/oggetti
        [parser.c act.informative.c]


-----------------------------------------------------------------------------
:Spells & Skills:
-----------------------------------------------------------------------------
SPELL_WALL_OF_FOG
SPELL_ROOM_SHIELD
SPELL_MINOR_TRACK
SPELL_MAJOR_TRACK
SPELL_SHIELD
SPELL_STONE_SKIN
SPELL_PARALYSIS
SPELL_REFRESH
SPELL_INCENDIARY_CLOUD
SPELL_FIRESHIELD
SPELL_FLASH
SPELL_ACID_ARROW
SPELL_REGENERATION
SPELL_SHOCKWAVE
SPELL_FEAR

SKILL_RIDING                            All
SKILL_TAME                              Warriors & Thiefs
SKILL_STUDY                             Cleric, Magic Users & Sorcerers
SKILL_READ_MAGIC                        Cleric, Magic Users & Sorcerers
SKILL_ENCHANT_ITEMS                     Sorcerers
SKILL_WEAPON_BOW
SKILL_WEAPON_SLING
SKILL_WEAPON_CROSSBOW
SKILL_WEAPON_SWORDS
SKILL_WEAPON_DAGGERS
SKILL_WEAPON_WHIPS
SKILL_WEAPON_TALONOUS_ARMS
SKILL_WEAPON_BLUDGEONS
SKILL_WEAPON_EXOTICS