Combattimento
Un giocatore combatte un NPC a mani nude, come nel combattimento classico (pre-AOS) di ModernUO; l’NPC risponde e muore quando i suoi punti ferita finiscono. Armi e armature degli oggetti sono implementate; la parata e gli eventi di combattimento di Lua no.
Iniziare un combattimento
Section titled “Iniziare un combattimento”Un giocatore clicca un mobile, e il client invia la richiesta di attacco (0x05), oppure uno script chiama
combat.attack(attacker, target). Il combattimento inizia quando:
- entrambi sono nel mondo, sulla stessa mappa, e il bersaglio non è l’attaccante, è vivo e non è invulnerabile
(
notoriety = "invulnerable"); - il bersaglio non è nascosto all’attaccante, è entro il raggio visivo (
ultima.world.view_range) e in linea di vista.
Un giocatore entra in modalità guerra e gli viene detto contro chi combatte (0xAA). A una richiesta rifiutata si risponde con un bersaglio
azzerato (0xAA con zero), così il client non lascia il bersaglio evidenziato.
I venditori (ogni template che eredita basevendor), i banchieri e le guardie sono invulnerable, con il
nome giallo, come in ModernUO: non possono essere attaccati. Mostri e animali sono grigi o rossi, non blu.
Un giocatore che attacca un innocente (un nome blu) che non lo sta già combattendo diventa un criminale, e arrivano le guardie. Attaccare chiunque altro, un mostro, un criminale o uno che sta combattendo il giocatore, non è un crimine.
La pace (modalità guerra disattivata) termina il combattimento di un giocatore. Ogni combattimento termina quando il bersaglio lascia il mondo, muore o va su
un’altra mappa, dopo combatant_seconds (60) senza un colpo, oppure con combat.stop.
Il colpo
Section titled “Il colpo”Ogni decimo di secondo un combattente il cui ritardo è terminato, e il cui bersaglio è entro max_range caselle (1) e
15 unità di altezza, sferra un colpo. Il primo colpo è immediato; il ritardo dopo ciascuno è
15000 / ((stamina + 100) * speed) / global_attack_speed seconds, speed 30 for fistsquindi 2,5 secondi a 100 di stamina. Un colpo:
- rivela un attaccante nascosto;
- costa a un giocatore
attack_staminadi stamina (0 per impostazione predefinita; UOX3 ne toglie 2); - viene comunicato al suo giocatore (
0x2F) e riproduce l’animazione del colpo del corpo (il pugno di un umano, il primo attacco di un mostro o di un animale); - tira per colpire con il Wrestling di entrambi,
(attacker + 50) / ((defender + 50) * 2), il che fa anche crescere il Wrestling di un giocatore; - se manca riproduce il suono del colpo mancato (
0x239) e nient’altro; - se colpisce riproduce il suono del colpo a segno (il suono
attackdel template di un NPC, altrimenti lo0x135dei pugni) e il suonohurtdel bersaglio, ne riproduce l’animazione del dolore e infligge il danno.
Il danno
Section titled “Il danno”- La base è l’arma che un giocatore impugna (un numero dal suo
damage_minal suodamage_max), i dadi del template di un NPC (damage), oppure da 1 a 8 per i pugni. - Aumentata dalla tattica dell’attaccante (
+ (tactics - 50)%), dalla forza e dall’anatomia (strength/5%,anatomy/5%, e un altro 10% con anatomia a 100). Tattica e anatomia vengono provate a ogni colpo a segno e fanno crescere un giocatore. Un’ascia viene aumentata allo stesso modo dal Lumberjacking (lumberjacking/5%, e un altro 10% a 100), che un colpo non prova. - Dimezzato quando il bersaglio è un giocatore o l’attaccante è un NPC; un giocatore che colpisce un NPC lo infligge tutto.
npc_damage_ratedivide ciò che un NPC fa a un giocatore. - L’armatura ne toglie la sua parte. Un giocatore viene colpito in una parte del corpo, scelta come la sceglie ModernUO (collo 7%,
mani 7%, braccia 14%, testa 15%, gambe 22%, petto 35%), e il pezzo che vi indossa toglie da metà a tutto il suo
armor_rating; una parte senza armatura non toglie nulla. Un NPC ha un solo numero, l’Armordel suo template, e ne viene tolta la quota di una zona, da metà a tutta. Viene inflitto almeno 1. - Lo scudo blocca prima, come la regola classica prima di AOS: chi lo indossa (la cosa dello strato a due mani che
non è un’arma, dal suo
armor_rating) tira la sua Parry dietro una probabilità di (punti di Parry − il valore dello scudo × 2) / 100, mai meno dell’1%; un tiro passato toglie metà del valore da un colpo e tutto da una freccia, e mostra il brillio0x37B9; uno fallito non toglie nulla. Il tiro allena la Parry, e senza scudo nessun tiro è fatto. - Il danno è mostrato sopra il bersaglio ai giocatori nel combattimento (
0x0B,display_damage_numbers) e la barra della salute si muove. - Un colpo che fa danno lascia del sangue a terra: un pezzo sotto chi è colpito e da uno a
blood_piecesintorno, a una casella di distanza, con una delle sette grafiche del sangue di ModernUO (0x1645, da0x122Aa0x122F), del colore della creatura. Sono oggetti a terra dei templateblood_splash_*e spariscono dopoblood_seconds(5), come in ModernUO e Source-X; gli oggetti a terra si controllano ogni 5 secondi, quindi un pezzo può durare altrettanto di più. Una creatura il cui template diceblood_hue = -1non sanguina: i non morti e i golem. Un giocatore sanguina di rosso. Pugni, spade e frecce sanguinano allo stesso modo; per ora un incantesimo non fa sangue. Il sangue è solo scena: cede il posto quando la riserva dei serial degli oggetti si assottiglia, così il bottino e le pile divise hanno i loro, e un pezzo non finisce mai fuori mappa.
La finestra di stato di un giocatore mostra il danno dei suoi pugni, da 1 a 8 con gli stessi bonus di tattica, forza e
anatomia (il minimo non scende mai sotto 1), e di Lumberjacking per un’ascia; lo stato di un NPC non ne mostra.
Un mobile senza più punti ferita muore come quando un game master lo uccide, con l’attaccante come uccisore e il suo cadavere: un NPC lascia il mondo, un giocatore resta come fantasma. Un fantasma non combatte, e nessuno lo combatte.
L’NPC risponde
Section titled “L’NPC risponde”Un NPC che viene colpito, o mancato, e non combatte nessuno, combatte chi lo attacca, al proprio ritmo. Uno che ne combatte
un altro si volta contro un nuovo aggressore più vicino del suo bersaglio (la regola classica) e non nascosto a lui, e
conserva l’attesa del colpo: il cambio non regala un colpo gratis. Uno nascosto, o più lontano, non cambia nulla; un bersaglio
morto, sparito, su un’altra mappa o scaduto viene sostituito subito; e un giocatore non si volta mai da solo. Una creatura
addomesticata o un’evocazione tiene il bersaglio che le è stato comandato, chiunque la colpisca. Un NPC con la prop
combat.passive a true non risponde mai a un
colpo, e nemmeno uno con la prop combat.flees, che uno script imposta per sempre: creature.lua la imposta per gli animali di
scared_animal.lua, che scappano, e lo stesso fa ogni script fatto con l’opzione flees, a meno che la creatura sia
addomesticata: questa combatte quando è colpita.
Il servizio di combattimento non conosce nessun id di script. Una creatura che combatte scappa quando i suoi punti ferita
scendono sotto la percentuale flee_at (20 per un mostro, 10 per un animale, salvo diversa indicazione del template; -1 mai),
vedi creature.lua.
Uno script sente anche on_health_low, una sola volta, quando i punti ferita scendono sotto il low_health_at del template
(25 per cento se non indicato), e on_mana_low: vedi Script dei mobile. Sono hook e lasciano
flee_at com’è.
Il template archerguard è una guardia cittadina che spara. Un giocatore colpito non risponde da solo: clicca. I mostri di
monster.lua vanno verso un giocatore e, accanto a lui, chiamano combat.attack su di lui.
Elenchi degli aggressori
Section titled “Elenchi degli aggressori”Ogni atto dannoso, un colpo, un incantesimo, l’atto di avvelenare, annota chi lo ha fatto a chi, per giocatori e NPC, per due minuti
([ultima.murder] aggressor_seconds). Gli elenchi stanno in memoria: un riavvio li dimentica.
-
Un giocatore è un criminale per un attacco a un innocente solo quando l’innocente non ha agito contro di lui e lui non ha agito prima contro l’innocente. Rispondere a un incantesimo, o tornare a uno scontro dopo un altro bersaglio, non è un crimine.
-
Una vittima che muore deve segnalare chi l’ha attaccata da criminale: vedi Conteggio degli omicidi.
-
Uno script li legge con
mobile.aggressors(serial)emobile.aggressed(serial). -
Un innocente che un giocatore ha combattuto, o che lo ha combattuto, è grigio per quel giocatore finché la voce vive (e il giocatore è grigio per lui); un terzo giocatore lo vede ancora blu. Un criminale, un assassino, un colore di gilda o un invulnerabile tiene il proprio. I nomi vengono ridisegnati quando nasce una voce e entro cinque secondi dalla sua fine.
-
Il cadavere di un giocatore ricorda chi lo ha combattuto; costoro possono depredarlo senza un nuovo crimine (vedi Conteggio degli omicidi).
Le guardie leggono il flag criminale, non gli elenchi. Il danno inflitto da ogni giocatore è tenuto a parte, per il diritto di depredare il cadavere di una creatura (Morte); un party o una gilda che può depredare non è ancora realizzato.
Impostazioni
Section titled “Impostazioni”[ultima.combat], vedi Configurazione del server: global_attack_speed, attack_stamina,
npc_damage_rate, max_range, combatant_seconds, display_damage_numbers, blood_enabled, blood_pieces,
blood_seconds e item_wear_enabled.
Il modulo combat: combat.attack(attacker, target), combat.stop(mobile), combat.target(mobile) e
combat.range(mobile); combat.armor_rating(mobile) (il valore di armatura di ciò che indossa, come lo mostra lo stato; 0 se non ne ha); e, per ciò che si allena su un manichino o un bersaglio, combat.weapon(mobile) (l’abilità, se
è un arco, la sua portata, il proiettile e le munizioni), combat.swing(mobile, x, y) (gira e mostra il colpo, senza
combattimento) e combat.spend_ammo(mobile) (toglie una freccia o un dardo).
Armi e armature
Section titled “Armi e armature”Ciò che un giocatore tiene in mano viene letto dai template degli oggetti sui livelli a una mano e a due mani: il
primo con un damage_max è l’arma. Dà la velocità del colpo, il danno, la skill della probabilità di colpire
(swordsmanship per una spada, un’ascia o un’arma in asta, mace fighting per una mazza o un bastone, fencing per una lancia o un pugnale) e
i suoni e il colpo del suo tipo:
| Tipo | A segno, mancato | Colpo (una mano, due mani) |
|---|---|---|
sword |
0x23B, 0x23A |
fendente (9, 13) |
axe |
0x232, 0x23A |
fendente (9, 13) |
pole_arm |
0x237, 0x238 |
fendente (13) |
mace |
0x233, 0x239 |
botta (11, 12) |
staff |
0x233, 0x239 |
botta (11, 12) |
fencing |
0x23B, 0x238 |
affondo (10, 14) |
Con un’arma senza tipo, che UOX3 non elenca, si combatte con Wrestling e suona come i pugni. La skill per colpire del difensore è quella della sua arma, Wrestling quando non ne impugna. Un arco, una balestra e un’arma da lancio vengono letti e non usati ancora per combattere: un giocatore così combatte a mani nude. Un NPC combatte con il suo template, qualunque cosa indossi.
La qualità di un oggetto creato conta: un’arma eccezionale fa il 20% di danno in più e una di bassa qualità il 20% in meno, sommati ai bonus qui sopra; un pezzo d’armatura eccezionale dà 8 di armatura in più e uno di bassa qualità 8 in meno, mai sotto 0; anche il valore di uno scudo conta la sua qualità. Vedi Fabbro.
Il tooltip di un’arma mostra il suo danno e la sua velocità base, come li dice il template (da damage_min a damage_max e
la speed grezza), non il danno finale di un colpo con i bonus di chi la impugna e la sua qualità; un pezzo d’armatura mostra la
sua armatura con la qualità, e un pezzo con una strength_required la mostra (non ancora imposta). Vedi
Pacchetti e handler.
Un cavaliere colpisce con le azioni di una cavalcatura (una mano, due mani, arco o balestra) invece di quelle di chi va a piedi; vedi cavalcature.
Il valore di armatura dell’intero giocatore, mostrato dalla finestra di stato, è l’armatura di ogni parte pesata con la quota
dei colpi che riceve (arrotondata), e il danno mostrato lì è quello dell’arma, con i bonus. I numeri sono quelli delle ere
di UOX3, convertiti da moongate-convert uox (vedi Migrare da UOX3); una grafica semplice eredita i numeri
LBR, quelli classici di ModernUO.
Arcieri
Section titled “Arcieri”Un NPC che impugna un arco o una balestra tira invece di combattere accanto al bersaglio, come fanno gli arcieri di ModernUO e
di UOX3. La gittata è quella dell’arma: 10 caselle per un arco, 8 per una balestra. Deve vedere il bersaglio: senza
linea di vista mantiene il combattimento ma non tira, e il suo script delle creature
lo porta dove la ha. Le distanze si contano in quadrati, la maggiore delle due differenze lungo X e Y, come le contano gli script e la linea di vista: un vicino in diagonale è a una casella. La linea di vista va da occhio a occhio. Un tiro è un colpo come gli altri: la velocità dell’arma e la stamina dell’NPC danno il ritardo,
il tiro per colpire usa la skill Archery contro ciò con cui il bersaglio si difende, il danno è quello dei dadi del template
(non dell’arco), e la freccia 0x0F42, o il quadrello 0x1BFE, vola dal tiratore al bersaglio, a segno o mancato.
Un corpo umano riproduce l’azione di tiro della sua arma; un corpo di mostro riproduce il suo attacco. Il suono è l’attacco proprio della
creatura, altrimenti quello dell’arco, 0x234 a segno e 0x238 se manca. Le munizioni di un NPC non vengono mai contate, e non deve restare fermo.
Un giocatore che impugna un arco o una balestra tira allo stesso modo, con il danno dell’arma (da 8 a 41 per un arco semplice, che la finestra di stato mostra), e con queste differenze, come in ModernUO e UOX3:
- Ogni tiro consuma una freccia (arco) o un quadrello (balestra), trovati nello zaino o in una borsa al suo interno. Senza, non vola nulla e il colpo è perso: il suo ritardo si paga comunque, e non viene mostrato alcun messaggio, come in ModernUO.
- Dei tiri, a segno o mancati, il 40 percento lascia una freccia o un quadrello a terra ai piedi del bersaglio, da raccogliere.
- Il giocatore deve essere rimasto fermo per un secondo: un passo, non una rotazione, entro
archery_stand_still_seconds([ultima.combat]) dal tiro lo ritarda. 0 non richiede nulla. - La skill Archery è quella tirata, e quella che cresce; un arco nelle mani del bersaglio è ciò con cui si difende.
Durabilità
Section titled “Durabilità”Un’arma o un pezzo d’armatura indossato da un giocatore si consuma in combattimento, come in ModernUO, quando il suo
template ha max_hits. Un pezzo ha punti e punti massimi, tenuti nelle proprietà durability e max_durability
dell’oggetto; un pezzo mai usato è intero.
- Un colpo a segno di un giocatore consuma la sua arma di 1, una volta su 25. I pugni non si consumano.
- Un colpo che arriva su una parte con armatura consuma quel pezzo, una volta su 4: di 0 o 1, o della metà di quanto il
pezzo ha assorbito (almeno 1) quando l’arma di chi attacca è una mazza. Un bastone o un bastone da pastore (il tipo
staff) consuma l’armatura di 0 o 1, come i bastoni di ModernUO. - Senza più punti, il resto dell’usura si toglie al massimo e il giocatore legge «Your equipment is severely damaged.»; un pezzo senza più massimo è distrutto.
- Il danno di un’arma e il valore d’armatura di un pezzo vanno dal 50% senza punti al 100% con tutti, e la finestra di stato li segue.
- Il tooltip mostra
durability hits / maximum. item_wear_enabled = falsein[ultima.combat]spegne l’usura; i pezzi tengono i punti che hanno.
Gli NPC non si consumano: armatura e danno sono quelli del loro template. Un artigiano ripara un pezzo dal gump di creazione.
Mosse speciali
Section titled “Mosse speciali”Con special_moves = true l’arma porta le sue mosse speciali dell’era AOS, vedi Mosse speciali delle armi.
Resistenze
Section titled “Resistenze”Con resistances = true il danno ha un elemento e le cinque resistenze del bersaglio lo attenuano, e un colpo in mischia
usa la resistenza fisica invece del tiro dell’armatura, vedi Resistenze.
Non ancora
Section titled “Non ancora”Parata con un’arma (solo lo scudo blocca, come prima di AOS), una faretra (le munizioni si prendono dallo zaino), la
forza richiesta da un’arma o da un’armatura (strength_required è conservato, non usato), le quote di fama e karma di un’uccisione,
ed eventi di combattimento di Lua (attack, hit, miss,
get_hit).
Vedi anche
Section titled “Vedi anche”Creato con ❤️ da Tom
