Salta ai contenuti

Cavalcature

Un giocatore cavalca un cavallo, un lama o uno struzzo addomesticato: cammina e corre il doppio più veloce. Sono realizzate anche la stalla e le cavalcature eteree; la bola no.

  1. Procurati una creatura tua. Addomesticala con la skill di addomesticamento, oppure un game master la assegna con tame. Una creatura senza proprietario non è di nessuno da cavalcare, nemmeno di un game master.
  2. Stai a non più di una casella da lei, più o meno alla sua altezza (fino a 8 livelli di differenza), e fai doppio clic su di lei. Il proprietario si siede in sella; un game master può montare una creatura che appartiene a qualcun altro.
  3. Cammina o corri. Chi è in sella fa un passo ogni 200 ms camminando e ogni 100 ms correndo, chi è a piedi ogni 400 e 200. Corre il cavallo, non chi lo cavalca: correre non costa stamina al cavaliere, e un cavaliere sovraccarico si stanca come se camminasse.
  4. Fai doppio clic su te stesso per scendere, oppure muori: il cavallo torna in piedi dove eri tu.

Il client mostra un suo testo quando una cavalcatura viene rifiutata: stai già cavalcando, la creatura è a più di una casella, oppure non è di nessuno o è di qualcun altro.

Un cavaliere morto non può montare. Il pulsante paperdoll del client apre comunque il tuo paperdoll mentre cavalchi.

Il cavallo non resta vivo fuori dalla mappa: diventa un dato sull’oggetto cavalcatura che il cavaliere indossa sul layer mount (25). L’oggetto conserva il template del cavallo e il suo proprietario, viene salvato insieme al cavaliere, e dopo un riavvio o un logout non resta nulla indietro. Scendere rimuove subito l’oggetto e ricrea il cavallo, dal suo template, sulla casella del cavaliere, con il suo proprietario. Il cavallo riceve un nuovo serial e non conserva né i punti ferita, né il colore, né ciò che portava; la sua lealtà e il suo legame restano sull’oggetto cavalcatura e tornano con lui.

La riga dell’oggetto cavalcatura viene cancellata prima che il cavallo sia creato, quindi un crash fra i due momenti lascia il cavaliere a piedi e il cavallo nel mondo, mai entrambi. Se il cavallo non si riesce a creare si riprova tre volte, a un secondo di distanza, registrando ogni errore; dopo la terza volta è perso, e la riga di log dice quale template e dove.

L’oggetto cavalcatura non si può sollevare dal cavaliere. Una creatura che sta morendo non si può cavalcare, e nemmeno un cavaliere con l’inventario riservato, per esempio mentre si ritira un allegato di un libro.

Dai al suo template mobile il tag mount_item, l’id di un template di oggetto il cui layer è mount:

[[mobile]]
id = "horse"
body = 228
[mobile.tags]
mount_item = "horse4"

I figli di un template ereditano il tag. Un valore vuoto, mount_item = "", rende un figlio non cavalcabile, come per ora le cavalcature eteree, gli incubi e le altre creature di templates/mobiles/mounts.toml.

Un cavaliere non può estrarre minerale con un piccone, pescare con una canna né usare la skill Stealth o un mucchio di neve: ognuna di queste azioni viene rifiutata con il testo del client e non parte nulla. L’ascia e la skill Hiding non sono toccate. Uno script chiede mobile.is_mounted(serial).

Un oggetto teletrasporto con la prop deny_mounted impostata a true (come testo in un file di decorazione: deny_mounted = "true") dice al cavaliere di scendere prima e lo lascia dove si trova; non partono né fumo né suono. Chi è a piedi passa. Nessun teletrasporto distribuito porta ancora il flag.

[[decoration]]
type = "Teleporter"
item_id = 0x1BC3
props = { point_dest = [5690, 569, 25], deny_mounted = "true" }
locations = [[5827, 593, 0]]

I maestri di animali delle città, compresi quelli degli zingari (script_id = "stablemaster"), tengono una stalla. Restano venditori come prima: il negozio e le lezioni rimangono.

  1. Stai a non più di 12 caselle e di’ stable, oppure scegli Stable nel menu contestuale del maestro. Leggi il messaggio e ottieni un cursore: scegli un tuo animale, a non più di una casella da te.
  2. L’animale lascia il mondo e il suo template entra nella tua stalla; la tariffa viene prelevata dal tuo zaino e poi dalla banca (30 monete d’oro di default). Il maestro risponde con il testo del client: il tuo animale è in stalla, oppure non puoi metterlo in stalla, non è tuo, hai troppi animali nella stalla, o non puoi pagare.
  3. Di’ claim per vedere l’elenco dei tuoi animali in stalla, un pulsante ciascuno; un pulsante ricrea quell’animale accanto a te. Claim All nel menu li riprende tutti.

Si può mettere in stalla solo un animale cavalcabile e tuo, non uno che sta morendo. Un animale ritirato viene ricreato dal suo template, con te come proprietario, e non conserva né i punti ferita, né il colore, né ciò che portava; la creazione viene tentata tre volte, e un animale che non si riesce a creare torna nella tua stalla. La stalla è la prop stabled del tuo personaggio (gli id dei template, uniti da ;), salvata insieme a lui; la prop stabled_loyalty conserva la lealtà e il legame di ogni animale nello stesso ordine, così un animale ritirato è leale come lo era. Il limite e la tariffa sono in [ultima.stable].

Una statuetta di una cavalcatura eterea (un cavallo, un lama, uno struzzo, un kirin, un unicorno, un ridgeback, un drago di palude o uno scarabeo, templates/items/misc/ethereal-statues.toml) permette al proprietario di cavalcare senza una creatura. Fai doppio clic mentre è nel tuo zaino: sparisce e ti siedi sulla cavalcatura eterea. Leggi il testo del client quando non è nello zaino, o quando stai già cavalcando. Scendendo, o morendo, la statuetta torna nel tuo zaino, anche oltre il suo limite di oggetti (il suo posto era stato liberato quando hai montato), oppure a terra dove ti trovi se non hai uno zaino. Torna con il suo colore e il suo nome ma con un nuovo serial. Non c’è attesa per evocarla e nessuno slot da seguace. Un game master ne crea una con .add ethereal_horse_statue. La statuetta è un template con script_id = "ethereal_mount" e il tag mount_item, il template dell’oggetto cavalcatura che viene indossato.

Una pietra della cavalcatura (templates/items/misc/mount-stones.toml: un cavallo, un lama, uno struzzo e un incubo) è un oggetto che porta in sella il suo proprietario e non si consuma mai. Fai doppio clic mentre è nel tuo zaino e ti siedi sulla sua cavalcatura; fai di nuovo doppio clic sulla stessa pietra e scendi, ovunque si trovi la pietra a quel punto. Leggi il testo del client quando non è nello zaino e vuoi salire, o quando stai già su un’altra cavalcatura. Morire, o fare doppio clic su te stesso, ti fa scendere ugualmente; non viene restituito nulla, perché la pietra non ha mai lasciato lo zaino. Un game master ne crea una con .add mount_stone_horse. La pietra è un template con script_id = "mount_stone" e il tag mount_item, il template dell’oggetto cavalcatura che viene indossato (templates/items/misc/equippable-mounts.toml): per fare una pietra per un’altra cavalcatura copia un blocco del file e cambia l’id, il nome e quel tag; nessuno script da modificare. I veterinari e gli addestratori di animali le vendono: 6000 monete la pietra del cavallo, 7000 le altre.

Un cavaliere che attacca esegue le azioni di una cavalcatura: una mano, due mani, arco o balestra. L’animazione che indica un colpo subito è quella consueta. Gli id sono quelli della tabella animazioni del client; non sono stati provati con un client.

Il modulo stable è ciò che usa lo script di uno stalliere (scripts/mobiles/stablemaster.lua):

Funzione Cosa fa
stable.attend(player) True per lo stalliere che serve ora; false per chi chiede di nuovo entro mezzo secondo. Più addestratori nello stesso riquadro sentono le stesse parole, ne risponde uno.
stable.pets(player) Gli animali in stalla come lista di { template, name }, nell’ordine in cui sono stati lasciati; i posti si contano da 1. nil per un NPC.
stable.stable(player, pet) Lascia l’animale in stalla e preleva la tariffa. Dà Ok, NotAPet, NotYours, TooFar, Dying, Full, NoGold, NoPlayer o Failed.
stable.claim(player, place, template) Ritira l’animale in quel posto e lo ricrea accanto al giocatore. Il template deve corrispondere al posto. Dà Ok, NoPlayer, BadIndex o Failed.
stable.max_pets() Quanti animali può lasciare un giocatore (ultima.stable.max_pets).
stable.fee() Le monete d’oro che costa un animale (ultima.stable.fee); 0 è gratis.

mount.ride_ethereal(player, statuette) mette il giocatore sulla cavalcatura eterea di una statuetta nel suo zaino. Restituisce false, con il motivo detto al giocatore, quando la statuetta non è nello zaino o il giocatore cavalca già; false e in silenzio per un fantasma o un oggetto che non è una statuetta. mobile.is_mounted(serial) dice se un mobile cavalca.

La bola e l’abilità di disarcionare delle armi.

Creato con ❤️ da Tom

Offrimi un caffè