Definzione NPC
Gli NPC sono definiti in un file di testo chiamato npcdesc.cfg. Al suo interno, ogni NPC ha una sezione dedicata che inizia con la dicitura NpcTemplate <nome>, dove <nome> è il nome in codice univoco per ogni NPC. Il suo contenuto è quindi racchiuso tra parentesi graffe, indicando una caratteristica per riga.
NpcTemplate drake { <nome> <valore> <nome> <valore> ... }
Ciascuna caratteristica viene espressa nel normato <nome> <valore>. Il nome è case-insensitive, ma è buona convenzione usare il CamelCase per una migliore leggibilità. Prima del nome, va usato un singolo carattere TAB per l'indentazione[1], successivamente si useranno degli spazi per allineare i blocchi, in modo da renderli più facilmente leggibili. Di solito è buona norma allineare alla 25ª colonna gli attributi e alla 30ª le CProp. I numeri possono essere espressi sia in notazione decimale che esadecimale.
Le linee vuote vengono ignorate e sono utili per raggruppare le caratteristiche in blocchi, le linee che iniziano con '//' possono contenete un commento di testo libero: saranno ignorate dal POL ma il commento può essere utile per chi dovrà modificare il file in futuro.
Indice
Caratteristiche base
Queste sono le caratteristiche fondamentali di ogni NPC e devono essere sempre presenti
- Name: testo, il nome che comparirà sopra la testa
- ObjType: numero, l'ID della grafica
- Script: testo, il nome completo di percorso dello script dell'AI
- Gender: numero, 0=maschio, 1=femmina
- Color: numero, il codice colore
- TrueColor: numero, il codice colore "reale". Quando il colore viene cambiato, l'NPC tornerà sempre di questo colore alla fine dell'effetto (es dispel)
- Alignment: testo, uno tra "good", "neutral" o "evil"
Vitals e Stats
Indicano i valori di vita e le stat e devono essere sempre presenti
- Srength: dado, la forza. Influenza principalmente il danno.
- Intelligence: dado, l'intelligenza. Influenza principalmente il danno e la resistenza alle spell.
- Dexterity: dado, la destrezza. Influenza principalmente la velocità di movimento.
- Life: dado, gli HP iniziali e massimi
- Mana: dado, gli MP inizialie e massimi
- Stamina: dado, la stamina iniziale e massima
Skills (attributi)
Indicano le skill che avrà l'NPC alla sua creazione. Le skill degli NPC salgono nel tempo proprio come quelle dei PG, ma la loro salita è generalmente irrilevante.
Arma intrinseca o Equip
Per NPC con grafica non umanoide, in cui non si vedono gli oggetti equippati, se si vogliono fornire un'arma e un'armor base, è sufficiente specificare l'armor e l'arma intrinseche. Per una definizione più in dettagli di tutto l'equip, si può invece specificare un equip completo, che andra poi indicato a parte nel file equip.cfg. I due sistemi si escludono a vicenda.
Movimento
- MoveMode
- RunSpeed
Proprietà specifiche di ZHI
Queste proprietà non sono interpretate direttamente dal core, ma dallo script di AI. Per distinguerle dalle altre per convenzione il loro nome viene scritto in minuscolo.
CProp
Queste proprietà sono a loro volta specifiche di ZHI, ma di distinguono dalle altre perché vengono scritte sull'NPC al momento della sua creazione e non possono essere più cambiate anche se il file viene modificato (almeno che ovviamente l'NPC non sia ucciso e ricreato). Vengono definite come:
CProp <nome> <valore>
La dicitura CProp è sempre la stessa, dopodiché è convenzione usare un singolo spazio, seguito dal nome della proprietà. I nomi sono case sensitive, a differenza di tutto il resto del file. I valori possono essere di vari tipi, quelli qui rilevanti sono:
- testo: si scrive con il primo carattere 's' seguito dal testo
- numero: si scrive con il primo carattere 'i' seguito dal numero esclusivamente in forma decimale
Esempi:
CProp MyProp sCiao mondo! CProp MyProp2 i33