/**************************************************************************
* # # # ## # # ### ## ## ### 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