Discussion Discord : Moteur de combat.
Posté : 11 août 2018, 09:42
Afin de simplifier une discussion discord voici comment je m'imagine le combat et la gestion des cas de combat.
Je suis tout à fait conscient que je n'ai pas tous les éléments pour effectuer une explication "complète" et j'oublie certainement certains cas etc ...
Le but ici est de montrer que ce n'est pas non plus "insurmontable" d'effectuer certaines modifications.
Cette liste de cas,
Si l'attaquant frappe 3 fois plus que la vie du défenseur, il ne recevra que 10% des points de défense de sa cible.
Si l'attaquant frappe 2 fois plus que la vie du défenseur, il ne recevra que 30% des points de défense de sa cible.
Si l'attaquant frappe 1.5 fois plus que la vie du défenseur, il ne recevra que 50% des points de défense de sa cible.
Si l'attaquant frappe plus que la vie du défenseur mais pas plus de 1.5 fois, il ne recevra que 80% des points de défense de sa cible.
Si l'attaquant frappe moins que la vie du défenseur, il recevra 100% des points de défense de sa cible.
C'est juste le meme combat avec 1 parametre qui change.
si ( FDF de armée X ( ... ) > 3 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,1 )
si ( FDF de armée X ( ... ) <=3 & > 2 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,3 )
si ( FDF de armée X ( ... ) <=2 & > 1,5 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,5 )
si ( FDF de armée X ( ... ) <=1,5 & > 1 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,8 )
si ( FDF de armée X ( ... ) <= 1 * PDV de armée Y ( ... ) ) alors ==> Riposte = 1,0 )
combat ( Armée X ( ... ) ; Armée Y ( ...) ; Riposte )
Mais vous allez me dire "oui mais il y a le lieu du combat qui change aussi ...
Et la je vous réponds "en effet, des parametres de plus. Ce qui donne juste 1 facteur de plus dans "combat" pour définir le type de bonus et le %age associé.
Nous avons plusieurs possibilités.
Si ( Libération ) => LieuCombat = ( ChezX , en TM )
Si ( Attaque en TM de xxx ) => LieuCombat = ( Chezxxx , en TM ) ; BonusDefensif = BonusTMxxx
Si ( Attaque en RR de xxx ) => LieuCombat = ( Chezxxx , en RR ) ; BonusDefensif = BonusRRxxx
Si ( Attaque en BDC de xxx ) => LieuCombat = ( Chezxxx , en BDC ) ; BonusDefensif = BonusBDCxxx
combat ( Armée X ( ... ) ; Armée Y ( ...) ; LieuCombat ; Riposte ; BonusDefensif )
Morsure de Armée X (valeur obtenue) ( pas oublie bonus alliance si existe )
Morsure de Armée Y (valeur obtenue) ( pas oublie bonus alliance si existe )
Ecaille de Armée X (valeur obtenue)
Ecaille de Armée Y (valeur obtenue)
Armée X ( ... ) c'est un tableau de la liste des unités, trié par liste de priorité des morts avec plusieurs colonnes
nb unités , vie/unité ( bonus ecaille appliqué ), attaque/unité ( bonus morsure appliqué )
Armée Y ( ... ) c'est un tableau de la liste des unités, trié par liste de priorité des morts avec plusieurs colonnes
nb unités , vie/unité ( bonus ecaille appliqué & Bonus défensif appliqué ), defense/unité ( bonus morsure appliqué et Riposte appliqué)
J'obtiens une valeut totale calculée d'attaque pour X et de vie pour Y
A noter que le ( calcul de la riposte ) se fait après le calcul de la vie totale du défenseur.
je prends l'attaque totale de arméee X ( ... ) et je calcule combien d'unités je tue dans armée Y ( ... )
==> Si je tue toutes les unités d'une ligne, je passe à la ligne suivante.
==> lorsque l'attaquand ne tue plus rien , on calcule ce que le défenseur tue.
je prends la riposte totale de armée Y ( ... ) et je calcule combien d'unités je tue dans armée X ( ... )
Si ( Armée x ( ... ) ou Armée Y ( ... ) n'est pas vide ) Alors Nouveau combat ( ... ) avec recalcul etc etc.
Tout ceci pour montrer le plus simplement possible que " trié par liste de priorité des morts " ce n'est au final qu'un paramètre également.
Cela ne change pas "tout" , mais juste 1 truc à 1 endroit.
Je ne dis pas que c'est "facile" à réaliser, je dis que c'est réalisable assez simplement.
Est-ce que cela complique le combat ? oui
Est-ce que cela modifie la manière dont le combat est vu par le joueur ? oui
Est-ce qu'il y a des effets de bords et autre complexités associées ? oui ( par exemple le fait de savoir si la priorité est propre à 1 armée ou propre au joueur.)
Ce n'est pas une solution simple ou encore "toute faite" mais c'est "possible"
Je suis tout à fait conscient que je n'ai pas tous les éléments pour effectuer une explication "complète" et j'oublie certainement certains cas etc ...
Le but ici est de montrer que ce n'est pas non plus "insurmontable" d'effectuer certaines modifications.
Cette liste de cas,
Si l'attaquant frappe 3 fois plus que la vie du défenseur, il ne recevra que 10% des points de défense de sa cible.
Si l'attaquant frappe 2 fois plus que la vie du défenseur, il ne recevra que 30% des points de défense de sa cible.
Si l'attaquant frappe 1.5 fois plus que la vie du défenseur, il ne recevra que 50% des points de défense de sa cible.
Si l'attaquant frappe plus que la vie du défenseur mais pas plus de 1.5 fois, il ne recevra que 80% des points de défense de sa cible.
Si l'attaquant frappe moins que la vie du défenseur, il recevra 100% des points de défense de sa cible.
C'est juste le meme combat avec 1 parametre qui change.
si ( FDF de armée X ( ... ) > 3 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,1 )
si ( FDF de armée X ( ... ) <=3 & > 2 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,3 )
si ( FDF de armée X ( ... ) <=2 & > 1,5 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,5 )
si ( FDF de armée X ( ... ) <=1,5 & > 1 * PDV de armée Y ( ... ) ) alors ==> Riposte = 0,8 )
si ( FDF de armée X ( ... ) <= 1 * PDV de armée Y ( ... ) ) alors ==> Riposte = 1,0 )
combat ( Armée X ( ... ) ; Armée Y ( ...) ; Riposte )
Mais vous allez me dire "oui mais il y a le lieu du combat qui change aussi ...
Et la je vous réponds "en effet, des parametres de plus. Ce qui donne juste 1 facteur de plus dans "combat" pour définir le type de bonus et le %age associé.
Nous avons plusieurs possibilités.
Si ( Libération ) => LieuCombat = ( ChezX , en TM )
Si ( Attaque en TM de xxx ) => LieuCombat = ( Chezxxx , en TM ) ; BonusDefensif = BonusTMxxx
Si ( Attaque en RR de xxx ) => LieuCombat = ( Chezxxx , en RR ) ; BonusDefensif = BonusRRxxx
Si ( Attaque en BDC de xxx ) => LieuCombat = ( Chezxxx , en BDC ) ; BonusDefensif = BonusBDCxxx
combat ( Armée X ( ... ) ; Armée Y ( ...) ; LieuCombat ; Riposte ; BonusDefensif )
Morsure de Armée X (valeur obtenue) ( pas oublie bonus alliance si existe )
Morsure de Armée Y (valeur obtenue) ( pas oublie bonus alliance si existe )
Ecaille de Armée X (valeur obtenue)
Ecaille de Armée Y (valeur obtenue)
Armée X ( ... ) c'est un tableau de la liste des unités, trié par liste de priorité des morts avec plusieurs colonnes
nb unités , vie/unité ( bonus ecaille appliqué ), attaque/unité ( bonus morsure appliqué )
Armée Y ( ... ) c'est un tableau de la liste des unités, trié par liste de priorité des morts avec plusieurs colonnes
nb unités , vie/unité ( bonus ecaille appliqué & Bonus défensif appliqué ), defense/unité ( bonus morsure appliqué et Riposte appliqué)
J'obtiens une valeut totale calculée d'attaque pour X et de vie pour Y
A noter que le ( calcul de la riposte ) se fait après le calcul de la vie totale du défenseur.
je prends l'attaque totale de arméee X ( ... ) et je calcule combien d'unités je tue dans armée Y ( ... )
==> Si je tue toutes les unités d'une ligne, je passe à la ligne suivante.
==> lorsque l'attaquand ne tue plus rien , on calcule ce que le défenseur tue.
je prends la riposte totale de armée Y ( ... ) et je calcule combien d'unités je tue dans armée X ( ... )
Si ( Armée x ( ... ) ou Armée Y ( ... ) n'est pas vide ) Alors Nouveau combat ( ... ) avec recalcul etc etc.
Tout ceci pour montrer le plus simplement possible que " trié par liste de priorité des morts " ce n'est au final qu'un paramètre également.
Cela ne change pas "tout" , mais juste 1 truc à 1 endroit.
Je ne dis pas que c'est "facile" à réaliser, je dis que c'est réalisable assez simplement.
Est-ce que cela complique le combat ? oui
Est-ce que cela modifie la manière dont le combat est vu par le joueur ? oui
Est-ce qu'il y a des effets de bords et autre complexités associées ? oui ( par exemple le fait de savoir si la priorité est propre à 1 armée ou propre au joueur.)
Ce n'est pas une solution simple ou encore "toute faite" mais c'est "possible"