Fs00 / rpg-game-4inc

Didactic and highly experimental Java CLI RPG game made by a bunch of IT students.
0 stars 0 forks source link

Il contrattacco: come lo implementiamo e chi lo può usare? #7

Closed Fs00 closed 6 years ago

Fs00 commented 6 years ago

Una cosa che non abbiamo ancora definito è il contrattacco. Chi lo può usare? @AlibabaSakura suggeriva di implementarla come esclusiva del Contadino, per bilanciarlo rispetto al Soldato e al Mercenario. Tuttavia, come si giustifica il fatto che un Mercenario o un Soldato non sappiano contrattaccare? Quindi lo implementiamo come parte del Contadino o come parte di IAttaccante?

E soprattutto, come va implementato? In teoria, quando si subisce il colpo ci dovrebbe essere una probabilità (da definire) che il colpo possa essere contrattaccato. Inoltre, chi contrattacca non dovrebbe subire il danno dell'attacco originario, ma chi subisce il contrattacco quanto danno deve subire? Io pensavo il 50% del danno originale, ditemi voi cosa ne pensate.

alegotta commented 6 years ago

Non ho ben capito l'utilità di questa funzionalità. Per contrattacco si intende la possibilità di un personaggio di difendersi dal colpo subìto ed attaccare nella stessa mossa? Io pensavo semplicemente che se un personaggio (poniamo il Soldato) viene attaccato, egli può mitigare il danno con la difesa, quindi al suo turno ha la possibilità di sferrare un altro colpo all'avversario.

Ad ogni modo, io lo aggiungerei all'interfaccia IAttaccante e non solo al Contadino.

AlibabaSakura commented 6 years ago

Il Counter (contrattacco) funge da “rifletti i danni” e si attiva passivamente solo con una certa possibilità durante l’attacco del nemico (è possibile fare 20% di possibilità di riflettere i danni, facendo citazione a una skill già usata “20% chance of reflecting Physical attacks.”). L’idea di implementarlo sul Contadino come esclusiva è giustificata per bilanciare quella classe rispetto agli altri attaccanti.

Fs00 commented 6 years ago

@AlibabaSakura La percentuale del 20% mi piace. Quindi il danno del contrattacco lo facciamo uguale all'attacco originario (@alegotta d'accordo)? Però rimango convinto che, per pura e semplice logica, un Soldato e un Mercenario non possono non saper contrattaccare. Per trovare un compromesso, @AlibabaSakura, metterei la probabilità di contrattacco al 20% per i Combattenti e al 30% per il Contadino. Più che altro, è per il fatto che giocando Soldato vs Mercenario (che è effettivamente l'unica cosa sensata di questo gioco) non incontreresti mai contrattacchi e diventerebbe una feature dal potenziale un po' sprecato.

Fs00 commented 6 years ago

E soprattutto dobbiamo decidere se chi riceve un contrattacco può a sua volta contrattaccare, non sarebbe una brutta feature e renderebbe i combattimenti un po' più "movimentati".

Fs00 commented 6 years ago

Alla fine è stato deciso che il contrattacco viene inserito nell'interfaccia IAttaccante, non è contrattaccabile a sua volta e riflette il 100% del danno dell'attacco originario.

Fs00 commented 6 years ago

Ultima proposta: la probabilità del contrattacco potrebbe essere calcolata utilizzando la velocità, nello specifico VEL/1,5. In questo caso i valori risultanti (arrotondati all'intero più vicino) sarebbero:

I valori sono comunque vicini a quelli proposti in precedenza e ciò ci consentirebbe di sfruttare maggiormente una statistica già definita senza dichiarare ulteriori campi.

alegotta commented 6 years ago

Ok, è una buona idea.

Fs00 commented 6 years ago

Riflettendo, la soluzione proposta nel post precedente è l'unica praticabile senza aggiungere una nuova statistica, dato che la probabilità del contrattacco è calcolata in subisciColpo(), che si trova nella classe Personaggio. Quindi adottiamo questa soluzione.