WIF - La Community Italiana di The Battle for Wesnoth

Wesnoth Italian Forum
La Community Italiana di The Battle for Wesnoth uno dei migliori giochi multiplayer online gratis open source, a turni di ambientazione fantasy. Iscriviti a wifper partecipare ai tornei online, allo sviluppo di nuove estensioni (campagne, mappe, ere, scenari, fazioni) e a tutte le iniziative di w.i.f. per questo meraviglioso gioco strategia . Giocare gratis on line non è mai stato più facile.

Se stai cercando giochi multiplayer online, giochi di strategia, giochi a turni, giochi open source, giochi gratuiti o giochi fantasy, vieni a giocare online in multiplayer con noi! Questo è il forum che cercavi.
17 Ottobre 2017, 16:21:49 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
 Notizia
VENITE A TROVARCI NELLA CHAT DI W.I.F.
- per organizzare partite ed incontri Ghigno  -
Ti aspettiamo!
Ricerca avanzata  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Tutto quello che non vi è mai interessato sapere del LONG DISTANCE ATTACK MOD  (Letto 359 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« inserita:: 20 Maggio 2017, 21:56:15 »

Complice un altro pomeriggio di pioggia ed una vita sentimentale piuttosto misera mi sono industriato a levarmi uno sfizio, vale a dire creare una modifica che permettesse, in multiplayer 1 vs 1 e solamente a determinate unità, di attaccare altre unità distanti 2 tiles, o settori che dir si voglia: il Long Distance Attack Mod.

Le unità prescelte sono quelle che rispondono ai seguenti requisiti:

requisito a) Sono unità di livello 2

requisito b) Hanno almeno un attacco ranged di tipo magico oppure meccanico, ovvero gli attacchi  con: ballista, bow, chill tempest, composite bow, crossbow, curse, dragonguard, faerie fire, fireball, flame blast, lightbeam, longbow,shadow wave, thorns, thundersick e, ma solo per i trolls, sling.

Questo significa che gli attacchi ranged senza supporto magico o meccanico, e quindi, a titolo di esempio, la fiamma dei draghi oppure il giavellotto del Javelineer, non rientrano tra quelli utilizzabili a lunga distanza.

requisito c) L'unità deve essere tra quelle disponibili nel core del gioco.

Significa che il mod può essere utilizzato con qualunque era, in teoria, ma solo se l'era prevede l'uso delle unità rispondenti al requisito c), perchè per le unità che rispondono ai requisiti a) e b) ma non al requisito c) non ha effetto, almeno in questa versione; sto già studiando una versione del mod per la versione 1.13 del gioco che permetta di ignorare il requisito c)

Come funziona il marchingegno:

Se, con il cursore su una unità abilitata come sopra, si preme il tasto destro, comparirà il solito menù con in testa l'opzione < * Shooter >; se questa opzione viene selezionata l'unità in questione diventa l'unità attaccante, o unità shooter, come viene evidenziato da una etichetta che lampeggia per circa un secondo sull'unità.

A questo punto potete portare il cursore su una unità nemica alla giusta distanza, vale a dire a non meno e non più di 2 settori di distanza, e cliccare ancora il tasto destro; si aprirà ancora il menù ma questa volta l'opzione di testa sarà  < * Target >; se questa opzione viene selezionata l'unità in questione diventa l'unità bersaglio, o unità target, come viene ancora evidenziato da una etichetta che lampeggia per circa un secondo sull'unità.

Una volta acquisita una unità shooter potete cambiarla quando volete, selezionandone una differente sempre con il sistema dianzi indicato; se era già stata selezionata una unità target questa viene deselezionata e bisogna selezionarla di nuovo oppure selezionarne un'altra, oppure eseguire una qualunque altra normale operazione di movimento oppure attacco con le vostre unità.

Una volta acquisito così una unità shooter e una unità target potete usare ancora il tasto destro per aprire il solito menù e selezionare, tra quelle possibili, l'opzione < * Fire a Long Distance Shoot from Shooter to Target >.

A questo punto l'unità selezionata come shooter attaccherà l'unità selezionata come target con il proprio solito attacco ranged, con alcune differenze rispetto ai normali attacchi, il più rilevante dei quali è che gli attacchi da lunga distanza hanno sempre una probabilità di riuscita del 30%.
Inoltre solo le unità abilitate a compiere attacchi a lunga gittata rispondono a questi attacchi, le unità non abilitate subiscono passivamente l'attacco anche se hanno degli attacchi ranged.

Il suddetto mod è un cantiere aperto, nel senso che
molto c'è da fare per animazioni e suoni, confidate nella pioggia oppure nei malumori della Lory.
devo capire come ricavare il valore naturale di defence delle unita Shooter e Target senza dove considerare tutte le possibilità possibili ed impossibili (Qualcuno ha qualche idea?)
Pensavo di limitare il potenziale degli attacchi a distanza in qualche maniera, magari rendendolo utilizzabile solo alle unità che hanno un certo numero di mosse a disposizione, oppure dimezzando il numero degli attacchi o i danni che infliggono, oppure ... (si accettano suggerimenti, consigli e proposte, anche quella di lasciare tutto come stà ora!)
Sto valutando di modificare i requisiti perchè una unità venga abilitata agli attacchi a distanza (anche qui si accettano suggerimenti, consigli e proposte, anche quella di lasciare tutto come stà ora!)
Il marchingegno è macchiavellico e devo creargli una pagina iniziale di istruzioni per l'uso che compaia ai giocatori all'inizio della partita.
Eccetera eccetera.

Intanto aspetto le vostre opinioni, critiche, consigli, domande e quant'altro.

Argesilao il solitario
« Ultima modifica: 20 Maggio 2017, 21:59:54 da Argesilao » Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
Nicodema
Maestro di Battaglia
****
Scollegato Scollegato

Messaggi: 359


GRRRRRRRRRRRRR


« Risposta #1 inserita:: 22 Maggio 2017, 07:20:14 »

Buondi Argesialo.
Bel lavoro. Credo (credo) che esista gìà un'era ranged, ma non so se esista una mod.
Se posso suggerire alcune idee, per equlibrare un po' di più il marchingegno (come lo chiami tu):

1)tratterei questa abilità come attacco speciale dell'arma, 
2)non darei un 30% fisso per colpire, ma piuttosto scalerei la probabilità di attacco di un tot (20% magari), senza poter ridurre la probabilità a zero (considera che se dai 30% fisso, attaccare un nano in montagna o un arciere elfo nel bosco con penalizza lo shooter).
1+2=3) bisognerebbe stabilire la priorità di altri attacchi speciali (magico, colpo preciso ecc), io personalmente credo che tali attacchi nno debbano ridurre la loro probabilità di copire.
4a) l'unità che attacca perde tutte le mosse, ovvero, se si è già mossa non può più usare l'abilità
4b) l'unità che usa l'abilità non possiede zoc per un turno
5)aumenterei il prezzo di reclutamento delle unità che possono evolvere con questa abilità, magari 2 monete?
6)si potrebbe anche pensare ad una riduzione della difesa (10% magari) in mischia degli shooter, essendo magari più impacciati a causa delle armi potenti ma ingombranti o comunque meno avvezzi al corpo a corpo
7) limiterei le unità con questa abilità, senza assegnarla di default a tutte le unità con attacchi meccanici o magici. Non credo che un elfo combattente possa evolvere in shooter o unità simili più votate alla mischia che agli attacchi a distanza. Contemporaneamente, darei l'abilità ai draghi inceneritori, ma anche qui, se evolve come drago splendente la perde, perchè maggiormente votato alla mischia.
Fico non darei la possibilità di contrattacco ad altre unità con la stessa abilità. Secondo me è un attacco molto macchinoso da preparare

Boh per adesso non bengono altri suggerimenti.
Buon lavoro!

Registrato
mich
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 921



« Risposta #2 inserita:: 22 Maggio 2017, 18:26:26 »

Ciao Argesilao.
Ai tempi tutto questo era stato implementato in un'era. La prima versione credo sia stata creata per wesnoth 1.4, quindi il wml che ci trovi è un po' antiquato, anche se è poi stato leggermente rivisto per funzionare su versioni successive.
Sicuramente il codice usato non era il massimo, ma puoi darci un'occhiata. Era stato implementato anche il calcolo del corretto valore della possibilità di colpire, le influenze delle varie abilità/periodo del giorno e le resistenze.
Le ultime versioni necesitavano di una riscrittura completa del codice. In particolare ora è possibile realizzare molte cose in maniera molto più semplice e senza strani giri...

Magari i prossimi giorni se trovo un po' di tempo provo la tua versione.

mich
Registrato
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« Risposta #3 inserita:: 22 Maggio 2017, 21:50:18 »

Dunque, come Nicodema e Mich mi fanno notare, esiste effettivamente una ranged era già bella e pronta;

In effetti l'avevo già visto, ma avevo scaricato il files sotto il titolo ranged era modificata del 2011, ma conteneva praticamente solo il file main.cfg così avevo lasciato perdere (Argesilao il superficiale), invece sotto al titolo Era con tiro a distanza del 2009  Scioccato si trova un'era che permette il tiro a distanza, fino a 5 settori  Scioccato Scioccato Scioccato.

Ho cominciato a spulciarla e credo che possa essere resa facilmente funzionale anche per le versioni più recenti; da quel poco che ho visto è sicuramente più completa della mia, soprattutto per quanto riguarda i valori della defence e l'applicazione delle varie abilities e special weapons , ma pare che fondamentalmente anche quell'era usi il menù item per attivare l'attacco a distanza, e comunque mi pare esagerato permettere alle unità con attacchi ranged di colpire fino a 5 settori di distanza (Argesilao il criticone)

Nei prossimi giorni la studierò con più attenzione (non è facilissimo capire cosa vuole fare, e come lo vuole fare, un codice scritto da qualcun'altro, anche se il suddetto codice è abbondantemente commentato, molto meglio di come commenti i suoi codici il sottoscritto Ghigno ) e cercherò di renderla operativa per la versione 1.13 di BfW per carpirne i più reconditi segreti.  Fico
Domanda per Mich: se riesco a renderla operativa la posso/devo postare nella sezione download? Non vorrei sembrare l'imbianchino che si assume il merito di aver tirato su il muro che ha solo verniciato.

Comunque credo che non rinuncerò a completare la mia mod ed ad ampliarne il campo di utilizzo, magari cercando di renderla indipendente, per quanto possibile, dalle ere che si usano; quindi continuate a criticare, suggerire, consigliare, proporre.

Argesilao



Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
mich
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 921



« Risposta #4 inserita:: 23 Maggio 2017, 12:01:19 »

Come detto molte parti del codice sarebbero da riscrivere completamente....
Il codice è abbastanza fatto male da quanto ricordo...
Le unità dell'era colpiscono fino a 3 caselle se ricordo bene, ma il codice era studiato per farla funzionare con qualsiasi distanza (qualcuno mi ha raccontato di aver visto attacchi da una parte all'altra della mappa...realizzati con una versione modificata dell'era). Solo il calcolo degli ostacoli arrivava fino a 5 caselle, poi mi ero fermato visto che al tempo avevo fatto il tutto in maniera esplicita e per ogni distanza avevo scritto a mano il codice.
Secondo me ti conviene guardare la versione che trovi tra gli add-on della versione 1.8 o 1.6. Quella sul forum non so quanto sia aggiornata.
Ovviamente dell'era puoi farne quello che vuoi. Credo comunque che ora il modo migliore di implementare il tiro a distanza sia con una mod e non con un'era, quindi ben venga il tuo lavoro.

Ps: al tempo l'era non era stata realizzata pensando al bilanciamento.  Sarebbe spettato poi ad altri creare sulla base di quel codice ere pensate appositamente per il tiro a distanza.

mich
Registrato
Draghen
Viandante
*
Scollegato Scollegato

Messaggi: 32



« Risposta #5 inserita:: 24 Maggio 2017, 04:30:09 »

Come saprete si gioca spesso con la mod di pick your recruits ultimamente. Nella versione con 120 unità, alcune delle quali salvate da ere ormai obsolete, ci sono 2 unità con questo tipo di attacco (chiamato qui multi-hex).

Si tratta di marchingegni pesanti che non si schiodano dal loro ancoraggio nel castello, o al limite si spostano di 1, e possono attaccare soltanto ranged. Il raggio della torretta è di 4 hex, ma viene influenzato dai terreni invalicabili o dalle zones of control del nemico ( fare uno stonewall con unità tank bloccando tutti i passaggi permette alle unità più fragili di avvicinarsi).

Quindi solo unità pesantissime hanno il long distance. In un'altra mod invece le unità potevano sparare a una distanza equivalente al loro movimento rimasto, quindi anche 6 hex. Si chiamava laser tag mi pare e c'erano vari tipi di dardo. Ma era ambientata in camere sotterranee.

Quanto misura un hex in mappe standard ( un campo da tennis? da calcio??)

Comunque ci piacerebbe che venissero sviluppate queste torrette, che per il momento hanno un utilizzo alquanto limitato (non avanzano di livello e si può scegliere soltanto un tipo di proiettile).
Sarebbe interessante un survival in modalità "tower defence".

Le altre unità meccaniche che meriterebbero questo attacco sono i velieri: sarebbe realistico, ma per il momento non possono farlo e non hanno lvl 2.

In altri giochi strategici simili l'attacco multi-hex era molto importante: le unità standard avevano raggio di 1 hex (carri armati, marines...), e quindi l'artiglieria (pesante o leggera), la contraerea e la marina permettevano tattiche davvero smacchiavelliche! Alcune unità avevano un "cannoncino" che funzionava in modo passivo, solo se attaccate multi-hex, con un più o meno piccolo danno da ritorsione ( alcune contraeree orientate contro le colline all'occorrenza, i carri più costosi con cannoncino antiaereo e radar...) Anche in Wesnoth ho visto qualcosa di simile però...

Qualche idea sparsa qua e là, così a occhio mi sembra un gran lavoro mettere questo long distance a tutte le unità lvl 2 elencate, poi l'attacco % e tutto il resto senza sconvolgere gli equilibri di gioco...

Good luck!  Ghigno
Registrato
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« Risposta #6 inserita:: 24 Maggio 2017, 20:30:28 »

La questione diventa sempre più ingarbugliata, interessante e sotto certi aspetti misteriosa. Fico

Quando mi saltò il ticchio di dare ad alcune unità la possibilità di colpire gli avversari oltre i settori a loro più immediatamente adiacenti pensai, prima di tutto, di creare delle unità ad hoc da inserire poi in qualche era; avevo pensato ad unità armate di ballista, catapulte ed altri ordigni similari.
Solamente in un secondo momento pensai che era più interessante creare un mod che, stante certe condizioni che dovevano essere rispettate dalle unità che venivano abilitate all'uso dell'attacco a lunga distanza, potesse essere utilizzato in maniera il più possibile indipendente dall'era con cui si desiderava giocare.
Visto che un'era con unità in grado di colpire a distanza, la PYRA segnalata da Draghen, esiste già, posso abbandonare i residui dubbi e concentrarmi nel completamento della Long Distance Attack come mod invece che come era.

Ma il motivo di questo post è un'altro; ho scaricato l'era Armageddon PYR segnalata da Draghen ed ho constatato che vi sono un paio di unità che usano attacchi a distanza; questi attacchi sono eseguiti con le modalità già codificate da Mich temporibus illis per la ranged era, ma la cosa interessante e misteriosa al contempo è questa:
Una delle suddette unità è chiamata Watch Tower ed il suo progenitore è un'omonima unità che si trova solamente nella versione 1.0 di BfW; andando a guardare il codice di questa unità progenitrice vi ho trovato, per quanto riguarda gli attacchi, le seguenti righe di codice:

   [attack]
   name=ballista
   icon=attacks/ballista.png
   type=pierce
   range=long
#   hexes=5         <---  Che?!?
   damage=20
   number=1
   [missile_frame]
      begin=-50
      end=0
      image="projectiles/stone.png"
      image_diagonal="projectiles/stone.png"
   [/missile_frame]
   [/attack]

ipotesi:
I programmatori originali di Wesnoth dovevano aver previsto di dotare alcune unità della capacità di attaccare fino a 5 settori di distanza, e dovevano aver previsto che la definizione di un attacco comprendesse anche una variabile hexes che ne definisse la portata; poi la cosa non è stata sviluppata, forse perchè si pensava di svilupparla nelle versioni successive del gioco, ed alla riga di codice è stato aggiunto il cancelletto, che in pratica la neutralizza rendendola niente più che una riga di commento.

L'aspetto negativo della vicenda è che probabilmente non esiste un modo, usando il solo WML, per creare attacchi a lunga distanza che funzionino 'automaticamente' come i normali attacchi melee e ranged che ben conosciamo; se così non fosse penso che le molteplici generazioni di Wesnothiani che mi hanno preceduto avrebbero già risolto il problema. Pianto
Il che significa che i controlli per i valori delle difese, dei danni, delle animazioni e di quant'altro fa funzionare le fasi di attacco/difesa del gioco dovranno essere elaborati caso per caso, tipo di unità per tipo di unità, eccetera per tipo di eccetera. Triste

Questo non significa che il progetto Long Distance Attack Mod  non andrà avanti, significa solo che ci vorrà un bel pò di tempo per vedere un prodotto che sia esteticamente apprezzabile, soprattutto adesso che comincia la stagione delle sagre. Ghigno

Intanto prego tutti di continuare a segnalarmi quanto potrebbe essermi utile, e di fornirmi idee, critiche, consigli ed opinioni su ogni aspetto del mod in questione.
L'unico punto assolutamente fermo del progetto, almeno per ora, è che, per vari motivi, la distanza massima di attacco resterà quella dei due settori. Triste

Argesilao l'indomito
« Ultima modifica: 24 Maggio 2017, 20:32:55 da Argesilao » Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« Risposta #7 inserita:: 26 Maggio 2017, 19:54:00 »

Innanzi tutto, comunico che grazie ad un paio di felici e sconcertanti intuizioni (sconcertanti perché non sono abituato ad avere intuizioni felici Ghigno) la gestione di molte variabili come defense, resistance o le ability delle unità adiacenti sarà molto meno lungo e complicato di quanto temevo (applausi e urla di esultanza registrate di sottofondo).

Vediamo al dunque:
Domanda: cosa succede alle unità liminali quando sono adiacenti ad una unità con abilità illumination? Ho supposto che:
- durante il giorno non cambia nulla, quindi damage -25%
- durante il crepuscolo è come se fosse giorno, e quindi damage -25%
- durante la notte o nel sottosuolo è come se diventasse crepuscolo, e quindi damage +25
Ho supposto giusto (nessuno faccia battute sulle supposte per favore  Occhiolino) ?

Domanda di riserva: Ho fatto una lista sommaria delle abilities o special che devo considerare, ed è venuto fuori:
adiacenza di unità con ability illumination
adiacenza di unità con ability leadership
adiacenza di unità con ability inspire
uso di special weapons magical
uso di special weapons marksman
possesso di ability steadfast
possesso di trait dextrous
La domanda è: ho dimenticato qualcosa?

Anticipatamente ringrazio

Argesilao il supponente ... o supponitore? Suppuratore? Suppa di cavoli? Che schifo!
Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
mich
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 921



« Risposta #8 inserita:: 28 Maggio 2017, 09:40:21 »

Per quanto riguarda le unità liminali dovrebbe funzionare come supponi.

Per le abilità e special sicuramente devi tener conto del rallentamento.
Io aggiungerei anche il supporto al veleno e la possibilità di rallentare, anche se non includerai unità con queste capacità nella tua mod, estensioni di questo tipo credo sia sempre meglio farle il più complete possibile in modo che poi possano essere riutilizzate da altri facilmente.

mich
Registrato
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« Risposta #9 inserita:: 02 Giugno 2017, 15:49:54 »

Ho appena postato nella sezione ere della sezione downloads la seconda versione del Long Distance Attack Mod (LDAM per gli amici); questa versione è utilizzabile, in linea teorica, con qualunque era; in linea pratica potrebbe non funzionare correttamente in ere che usano:

abilities, special weapons, defence o resistance (queste ultime due categorie per quanto riguarda il loro tipo, non il loro valore) non contemplate dalle esistenti versioni di BfW.
unità, anche queste non contemplate nelle esistenti versioni di BfW, che hanno più di un attacco ranged dello stesso tipo (per esempio due attacchi ranged di tipo pierce)
unità che hanno un usage originale e differente da quelli codificati in BfW (che sarebbero: fighter, mixed fighter, archer,scout, healers)
unità che usano attacchi di tipo differente da quelli codificati in BfW (vale a dire arcane, blade, cold, fire, impact e pierce)

Non è detto che in presenza di questi casi si abbia un malfunzionamento del gioco; unità o caratteristiche originali potrebbero semplicemente essere ignorate dal LDAM.

in questa versione si ha che:

Le unità abilitate all'uso dell''attacco a lunga distanza sono quelle che, oltre, naturalmente, a possedere almeno un attacco ranged :
hanno un usage archer o mixed fighter.
Sono di livello 2 o superiore
e come eccezione alle due condizioni predette:
Le unità di race mechanical con qualunque usage o livello

Avevo, ed ho ancora, parecchie perplessità nell'includere le unità mixed fighter tra quelle abilitate, ma escluderle avrebbe significato ridurre eccessivamente i tipi di unità abilitate; per esempio sarebbero stati esclusi maghi, negromanti e sacerdotesse varie.
Per contro l'inclusione delle unità mixed fighter allarga forse eccessivamente la platea delle unità che potrebbero utilizzare l'attacco a lunga distanza, rendendo il LDAM forse eccessivamente invasivo e perturbante rispetto agli equilibri del gioco.

Per questo ed altri motivi ho introdotto delle limitazioni e degli handicap per quando viene usato l'attacco a lunga distanza; l'idea di fondo è che il LDAM garantisce alle unità abilitate un nuovo vantaggio tattico, quindi questo vantaggio tattico viene compensato con una menomazione dell'efficenza delle unità che lo usano così che se si decide di sfruttare questo vantaggio non si potrà sfruttare tutto il potenziale dell'unità prescelta; tanto più che anche nella realtà colpire un avversario più distante comporta un maggiore tempo di preparazione del tiro ed una minore precisione e letalità dello stesso ... a meno che non si usino missili cruise. Ghigno
.
Ho quindi introdotto:
un damage handicap, che riduce di un certo valore il danno inflitto dagli attacchi ranged a lunga distanza rispetto al valore che infliggerebbe lo stesso attacco ranged convenzionale
un movement handicap che impedisce l'attacco a distanza alle unità che non hanno un certo numero di mosse ancora a disposizione
un precision handicap che riduce di un certo valore la probabilità di colpire l'avversario con un attacco ranged a lunga distanza piuttosto che con un attacco ranged convenzionale

L'entità di questi handicap può essere settato dal giocatore che carica il gioco nella fase di configurazione della partita;
il damage handicap ha un valore di default di 2 ma può essere settato da 0 (nessun handicap nel damage inflitto con l'attacco) a 6; in nessun caso il valore del danno inflitto sarà inferiore a 1.
il movement handicap ha un valore di default 2 ma può essere settato da 0 (una unità può eseguire l'attacco a lunga distanza anche se ha esaurito le mosse a disposizione) a 6 (una unità deve avere almeno 6 punti movimento a disposizione per eseguire l'attacco a distanza)
il precision handicap ha un valore di default del 20%, il precision handicap viene sottratto alla normale probabilità di un certo tipo di attacco di colpire una unità nemica; per esempio, se l'attacco ha il 60% di probabilità di colpire tale probabilità viene ridotta al 40%; alche il precision handicap può essere settato, da un valore minimo di 0 ad un valore massimo del 50%; in ogni caso la probabilità di colpire il bersaglio sarà sempre maggiore o uguale al 10%.

Non è possibile colpire un avversario se tra l'attaccante ed il suo obiettivo c'è un ostacolo; in questa versione l'ostacolo può essere un tipo di terreno (muri, montagne,villaggi) oppure un'altra unità, sia questa nemica o alleata.
Ora, dato un determinato settore abbiamo 12 differenti settori ad una distanza 2; ognuno di questi 12 settori può essere 'raggiunto' dal settore centrale, quello dell'attaccante prescelto per intenderci, potendo passare per uno o per due, a seconda dei casi, settori adiacenti sia settore centrale che al settore periferico prescelto, per intenderci quello del besaglio; se i settori adiacenti comuni sono due allora per rendere inattuabile l'attacco a lunga distanza bisogna che in entrambi i settori sia presente un ostacolo.

Tutto molto bello, ma il marchingegno come funziona? Che?!?

Attuare un attacco a lunga distanza è molto più semplice di quanto la sua descrizione lasci supporre:

Prima di tutto si seleziona una unità attaccante portando il cursore sull'unità scelta, quindi cliccando il tasto destro del mouse si apre un menù in cui si seleziona l'opzione < Shooter >

Attenzione: ci sono dei controlli preventivi e dei controlli successivi sulla conformità dell'unità prescelta; in fase preventiva viene controllato che l'unità prescelta sia della fazione del giocatore di turno ed abbia le caratteristiche di usage, race e level necessarie.
Se il controllo non dà esito positivo allora il menù si aprirà senza avere l'opzione <Shooter>; se si apre il menù senza opzione <Shooter> significa che avete selezionato un settore in cui non ci sono unità oppure una unità c'è ma non ha alcune delle caratteristiche necessarie.
Se invece avete aperto il menù in corrispondenza di una unità con le necessarie caratteristiche di side, usage, attacco ranged, e quindi avete selezionato l'opzione <Shooter>, il codice eseguirà alcuni controlli successivi su:
esistenza di unità nemiche che, per distanza e assenza di ostacoli, possono essere attaccate a lunga distanza
possibilità di attaccare non avendo, l'attaccante prescelto, ancora attaccato
disponibilità, per l'unità attaccante, dei movimenti minimi necessari (vedi movement handicap)
Questi tre controlli successivi , in caso di esito nefasto, danno un messaggio di errore; se compare un messaggio di errore dovete scegliere un altra unità attaccante; la prima scelta viene obliterata automaticamente.

In pratica i controlli preventivi verificano che l'unità scelta sia, in virtù delle sue caratteristiche generali, una unità abilitata all'uso dell'attacco a lunga distanza; i controlli successivi verificano che l'unità scelta possa, in virtù della situazione contingente in cui si trova, effettivamente effettuare l'attacco; quindi se avete potuto selezionare l'opzione <Shooter> ma appare poi un messaggio di errore significa che l'unità scelta è del tipo giusto ma nella situazione sbagliata; se invece non avete potuto selezionare nel menù l'opzione <Shooter> significa che l'unità scelta si troverebbe magari pure nella posizione/situazione giusta per un attacco a lunga distanza, ma non è tra quelle abilitate a farlo.

Curiosità: qualcuno, avendo a disposizione un bel Lich potrebbe avere l'idea di usarlo per un attacco a distanza, visto che dispone di un paio di attacchi ranged di discreta efficacia; avrebbe così modo di scoprire, come ha fatto il sottoscritto a sue spese durante la fase di test, che non può farlo perchè il nostro dinoccolato e tenebroso eroe è stato etichettato dai programmatori di BfW con un usage fighter. Scioccato

Se invece tutto fila liscio nel settore dell'unità prescelta lampeggerà la scritta SHOOTER per un secondo; significa che avete selezionato un attaccante e potete adesso scegliere un bersaglio.

Anche il bersaglio si sceglie allo stesso modo; si porta il cursore sull'unità prescelta e si usa il tasto destro del mouse per aprire il menù; quindi nel menù si seleziona l'opzione <Target>.
Una volta selezionato così il bersaglio il codice effettua dei controlli sulla presenza di ostacoli e sulla distanza tra attaccante e bersaglio; se i controlli sono sfavorevoli compaiono degli esplicativi messaggi di errore, le scelte dell'attaccante e del bersaglio vengono cancellate e l'intera operazione è annullata.

Attenzione: non è possibile scegliere il bersaglio se non si è prima selezionato un attaccante valido.

Ora avete selezionato un attaccante ed un bersaglio entrambi corretti, ed appare un ultimo messaggio;
questo messaggio contiene una riga di testo non selezionabile, la prima, in cui vengono visualizzate le caratteristiche di un eventuale contrattacco dell'unità bersaglio, oppure ci dice che il bersaglio non dispone di un contrattacco a lunga distanza; le righe successive sono delle opzioni selezionabili.
Selezionando l'ultima riga, quella che dice “NO ATTACK!” l'intera operazione è cancellata e si può passare ad altro.
Selezionando invece una delle righe intermedie, di solito una o due, si sceglierà con quale, tra gli attacchi disponibili all'attaccante, l'attacco a lunga distanza deve essere eseguito, e l'attacco verrà immediatamente eseguito. Ognuna di queste righe intermedie contiene, in sequenza, le seguenti informazioni:
Il tipo di attacco (arcane, blade, cold, fire, impact, pierce)
Il danno ricevuto dal bersaglio ogni volta che verrà colpito; si tratta del valore effettivo che tiene già conto delle resistenze del bersaglio, steadfast compresa, e degli effetti del periodo del giorno e dell'eventuale effetto di leadership ed illumination e dell'handicap
Il numero degli attacchi che l'attaccante porterà al difensore.
Le chance, per ogni singolo attacco, di colpire il bersaglio, già corrette in base a defence del bersaglio, eventuali marksman o magical e handicap
Se l'attacco comporta effetti slow o poison alla fine della riga compaiono le scritte SLOW e POISON

Il contrattacco: ebbene si, le unità abilitate ad eseguire l'attacco a lunga distanza, se bersagliate dal suddetto attacco reagiscono esattamente come reagirebbe una qualunque normale unità con attacchi ranged fatta segno di un attacco ranged convenzionale da parte di un'altra unità. Il contrattacco è soggetto agli stessi handicap per danni e precisione già detti.
Il contrattacco migliore, se il bersaglio ne ha più di un tipo a disposizione, viene selezionato automaticamente dal computer, senza nessun intervento umano.

Ricapitolando:
{right click} e si seleziona l'attaccante
{click) e si seleziona <Shooter> dal menù
{right click} e si seleziona il bersaglio
{click} e si seleziona <Target> dal menù
Selezione dell'attacco (o del non attacco) e {click} su OK

Il marchingeno sembra macchinoso ma dopo aver fatto una minima pratica viene abbastanza automatico; avrei potuto risparmiare un click o due senza passare per il menù per confermare la scelta dell'attaccante e quella del bersaglio, ma ho preferito strutturare la cosa in modo che interferisse il meno possibile con la presenza di altri eventuali mod che prevedessero la necessità di selezionare delle unità per i loro misteriosi scopi.

A parte la modalità di selezione dell'attaccante e del suo bersaglio, il mod è stato realizzato per rendere l'attacco a lunga distanza il più possibile simile, nelle sue conseguenze sull'andamento del gioco, ad un attacco convenzionale; così un'unità attaccante non può più muoversi, e tantomeno attaccare ancora in qualunque modo, dopo aver eseguito un attacco a lunga distanza; attaccante e bersaglio guadagnano esperienza di conseguenza.

Attenzione: il mod è stato realizzato con la versione 1.12 di BfW, pare funzioni anche con la 1.13 e forse anche con qualche versione precedente, e, soprattutto, è studiato per le partite in Multiplayer per 2 giocatori 1 vs 1; è meglio non fare esperimenti con altre modalità di gioco. Broncio

Nota dolente: le animazioni sono misere, quando ci sono;  Pianto ci sto pensando su, ed un paio di idee le avrei pure, ma prima di concentrarmi sull'estetica vorrei ottenere un risultato definitivo, o quasi, riguardo alla funzionalità tecnica.

Ho comunque sempre bisogno di critiche, consigli, domande, suggerimenti.

A proposito di estetica, qualcuno sa dove potrei trovare un elenco dei codici alfanumerici dei principali colori, da usare nei testi delle etichette e dei messaggi?

Argesilao il maneggione
Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
Xalzar
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1513


Il Lucertolino


« Risposta #10 inserita:: 07 Giugno 2017, 10:40:27 »

Complimenti per questa impresa titanica! (lo so perché ci avevo provato anche io a smaneggiare nei codici per "distanziare" gli attacchi)  Occhi al cielo

Al momento non ho nemmeno una briciola di tempo per provare la mod, ma terrò sott'occhio la tua creazione... (mannagg' se fossi arrivato prima avrei risolto tanti di quei problemi nelle mie ere passate!)  Linguaccia
Registrato
Argesilao
Veterano delle Grandi Guerre
***
Scollegato Scollegato

Messaggi: 149



« Risposta #11 inserita:: 09 Giugno 2017, 16:42:25 »

Mi sono improvvisamente ricordato dell'esistenza di almeno un paio di unità con attacchi ranged e con la special weapons drains.
Le unità in questione sono piuttosto neglette, infatti sarebbero gli orcs shaman che appaiono solo nella campagna "Il figlio di occhionero" ed il mostriciattolo monocolo che appare escluzivamente, se non ricordo male, in uno degli ultimi scenari de "La guardia del sud", però, hai visto mai; così ho aggiornato la versione del Long Distance Attack Mod perchè prenda in considerazione anche gli attacchi drains a distanza.

Cambiando argomento, il precedente post di Xalzar mi ha fatto sorgere il dubbio che la portata del mod in questione sia stata sovrastimata; tutto quello che ho fatto, in realtà, è stato creare un'opzione da menù che imitasse, e sottolineo imitasse, negli effetti pratici, e purtroppo solo in minima ed infima parte negli effetti grafici, un attacco di una unità contro un'unità avversaria, con la differenza che questo attacco, e contrattacco, avviene tra unità non adiacenti tra loro, cosa che dovrebbe arricchire la variabilità tattica del gioco.
Creare un vero attacco a lunga distanza, che funzioni automaticamente come un attacco convenzionale, richiederebbe approfondite competenze di lua, ed io non ne ho nemmeno di superficiali.

Spero comunque che anche così qualcuno possa trovarci una fonte di divertimento!

Argesilao il rimembrante
Registrato

Quello che non ti uccide ti rende più menomato

Il caso non esiste, esiste solo l'inevitabile
(Yuko Ichihara)

Sai tu qual sia in questa nera valle la risultanza ed il premio di ogni sacrifizio umano? Calci nel deretano!
(Brancaleone da Norcia)
Elvish_Hunter
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 674


Lo sviluppator cortese


« Risposta #12 inserita:: 14 Giugno 2017, 19:40:33 »

Creare un vero attacco a lunga distanza, che funzioni automaticamente come un attacco convenzionale, richiederebbe approfondite competenze di lua, ed io non ne ho nemmeno di superficiali.
Credo però che questo non sia possibile nemmeno col Lua, e sia necessario intervenire direttamente a livello di C++. Inutile dire che neanche io avrei idea di dove cominciare, a maggior ragione considerando che non ho avuto il tempo di provare anche solo a capire le nuove peculiarità del C++11... Imbarazzato
Registrato

Manutentore corrente di The Sojournings of Grog, Children of Dragons, A Rough Life e Wesnoth Lua Pack.
The White Troll - topic ufficiale
Pagine: [1]   Vai su
  Stampa  
 
Vai a: