Réduction des dégâts PVP
Réduction des dégâts PVP
Il semblerait qu'il y ait un bug sur la réduction des dégâts :
Dès qu'on passe le premier seuil, on a droit à la réduction de dégâts maximale...
viewtopic.php?p=280883#p280883
Au passage... ca ne vous dirait pas de lisser tout ça?
Dégâts infligés/2 du début à la fin?
Devoir infliger 200% de la vie de lacible c'est bien suffisant comme réduction, non?
Dès qu'on passe le premier seuil, on a droit à la réduction de dégâts maximale...
viewtopic.php?p=280883#p280883
Au passage... ca ne vous dirait pas de lisser tout ça?
Dégâts infligés/2 du début à la fin?
Devoir infliger 200% de la vie de lacible c'est bien suffisant comme réduction, non?
Eclate tout sur son passage
Re: Réduction des dégâts PVP
Quelque chose a été changé? Autre cible et pas de soucis...
Eclate tout sur son passage
Re: Réduction des dégâts PVP
Autre cible :
Pas de réduction sur les PL mais bien sur les frappes...
=> y a quelque chose qui déconne...
Pas de réduction sur les PL mais bien sur les frappes...
=> y a quelque chose qui déconne...
Eclate tout sur son passage
- pnarcade
- Ami des souterrains de Delain
- Messages : 2963
- Inscription : 25 avr. 2012 14:28
- Localisation : Dresden
Re: Réduction des dégâts PVP
Peux pas dire j'ai pas trouvé de cibles depuis des mois
PKs, PKes, on vous exploite on vous spolie!!
Si qqun connait un dev qui aurait le temps de s'occuper de notre jeu préféré, ce serait le moment ! ^^
PKs, PKes, on vous exploite on vous spolie!!
Si qqun connait un dev qui aurait le temps de s'occuper de notre jeu préféré, ce serait le moment ! ^^
Thenshirock vous couche tous avec sa grosse arbalète.
-Qu'est ce que je vous sers?
-Causette!
-Qu'est ce que je vous sers?
-Causette!
Re: Réduction des dégâts PVP
Il n'y a pas eu de modification niveau PvP depuis un sacré bout de temps normalement. (je n'ai pas vu passer de modifs)
Il y a peut-être un paramètre que tu as oublié dans tes calculs ?
Il y a peut-être un paramètre que tu as oublié dans tes calculs ?
Re: Réduction des dégâts PVP
Aucun...
Quand sur des PLs ca me met que les dégâts liés à l'initiative pour chaque projectile sont égaux aux dégâts du jet initial, y a pas de réduction...
Alors que les frappes avant et après ce PL étaient réduites...
Quand les dégâts après armure, sont réduits à moins du tiers, on est au dernier seuil... or avec une cible au stade touché seulement, et qui peut soutenir cette frappe sans réduction sans passer blessé, c'est juste impossible d'arriver à ce résultat sans que quelque chose déconne...
Je ne dis pas qu'il y a eu modif des paramètres du pvp mais que les params du pvp plantent suite à l'utilisation de certains sorts... (lié à l'une ou l'autre migration ou autre modif?)
Le combat où j'ai pas eu de pb (a priori) était purement physique (que des frappes, pas de sorts offensifs)
Je ne saurais pas dire si le problème est récent ou non...
Je fais pas le calcul à chaque combat...
Mais pour le premier, c'était bien trop flagrant pour être ignoré...
Quand sur des PLs ca me met que les dégâts liés à l'initiative pour chaque projectile sont égaux aux dégâts du jet initial, y a pas de réduction...
Alors que les frappes avant et après ce PL étaient réduites...
Quand les dégâts après armure, sont réduits à moins du tiers, on est au dernier seuil... or avec une cible au stade touché seulement, et qui peut soutenir cette frappe sans réduction sans passer blessé, c'est juste impossible d'arriver à ce résultat sans que quelque chose déconne...
Je ne dis pas qu'il y a eu modif des paramètres du pvp mais que les params du pvp plantent suite à l'utilisation de certains sorts... (lié à l'une ou l'autre migration ou autre modif?)
Le combat où j'ai pas eu de pb (a priori) était purement physique (que des frappes, pas de sorts offensifs)
Je ne saurais pas dire si le problème est récent ou non...
Je fais pas le calcul à chaque combat...
Mais pour le premier, c'était bien trop flagrant pour être ignoré...
Eclate tout sur son passage
Re: Réduction des dégâts PVP
C'est vrai que j'ai un peu lâché l'affaire cette année.
Mais avec les confinements et le télétravail, j'ai jamais eu autant de boulot .
J''avoue quand même qu'après le boulot je me suis bouffé pas mal de série !
ça va peut-être finir un jour cette histoire, j'espère !
~~ Le monde est partagé en 10 catégories de personnes, ceux qui comprennent le binaire et les autres. ~~
Re: Réduction des dégâts PVP
N'oubliez pas qu'il y a des cas particuliers:
En arène le comportement est différent
Les attaquants/cibles sous Malédiction/Bénédiction d'ECATIS.
J'ai trouvé un truc étrange aussi:
Le niveau de PVP est calculé après l'attaque et sert pour l'attaque suivante, si la victime a été soignée entre les 2 attaques, c'est quand même le niveau de PVP calculé après la première attaque et donc avant les soins qui est pris en compte.
ça peut grandement fausser les résultats visibles.
Ce qui est sûr c'est que j'ai pas trop envie d'y mettre les doigts (sauf éventuellement comme le dit Cook, pour faire reforme en vue de simplification).
En arène le comportement est différent
Les attaquants/cibles sous Malédiction/Bénédiction d'ECATIS.
J'ai trouvé un truc étrange aussi:
Le niveau de PVP est calculé après l'attaque et sert pour l'attaque suivante, si la victime a été soignée entre les 2 attaques, c'est quand même le niveau de PVP calculé après la première attaque et donc avant les soins qui est pris en compte.
ça peut grandement fausser les résultats visibles.
Ce qui est sûr c'est que j'ai pas trop envie d'y mettre les doigts (sauf éventuellement comme le dit Cook, pour faire reforme en vue de simplification).
~~ Le monde est partagé en 10 catégories de personnes, ceux qui comprennent le binaire et les autres. ~~
Re: Réduction des dégâts PVP
- Les combats ne sont pas déroulés en arène
- pas de béné ou malédiction d'écatis sur moi et mes cibles n'avaient aucun rang de prêtrise d'écatis + que des interactions récentes avec des monstres
- pas de soins sur les cibles (aucune action de leur part pendant les combats et les constats)
- si le niveau de pvp est calculé sur la dernière attaque et non l'état de santé actuel, y a un souci de cohérence avec les seuils et les explications données par Azaghal
cf : viewtopic.php?p=213931&sid=8908e16180a7 ... ab#p213931
Pnarcade avait calculé, dans le même topic, le % de PVs à infliger au total pour down une cible avec le calcul actuel tel qu'il devrait marcher : 208% des PVs max (mais vu qu'il y a des arrondis inférieurs, ça doit être légèrement plus)
si on réforme en faisant "dégâts pvp" = "dégâts infligés *0,5" (arrondi inférieur), ca simplifiera bien les choses et permettra d'évacuer tous les bugs cachés derrière les formules actuelles...
Lancer Malédiction d'écatis permettrait de faire "dégâts pvp" = "dégâts infligés *0,6" (arrondi inférieur)
Eventuellement implémenter un autre sort divin de même niveau (de Falis par exemple, vu que c'est la soeur jumelle d'Ecatis) qui permettrait de ne subir que "dégâts pvp" = "dégâts infligés *0,4" (arrondi inférieur)
- pas de béné ou malédiction d'écatis sur moi et mes cibles n'avaient aucun rang de prêtrise d'écatis + que des interactions récentes avec des monstres
- pas de soins sur les cibles (aucune action de leur part pendant les combats et les constats)
- si le niveau de pvp est calculé sur la dernière attaque et non l'état de santé actuel, y a un souci de cohérence avec les seuils et les explications données par Azaghal
cf : viewtopic.php?p=213931&sid=8908e16180a7 ... ab#p213931
Pnarcade avait calculé, dans le même topic, le % de PVs à infliger au total pour down une cible avec le calcul actuel tel qu'il devrait marcher : 208% des PVs max (mais vu qu'il y a des arrondis inférieurs, ça doit être légèrement plus)
si on réforme en faisant "dégâts pvp" = "dégâts infligés *0,5" (arrondi inférieur), ca simplifiera bien les choses et permettra d'évacuer tous les bugs cachés derrière les formules actuelles...
Lancer Malédiction d'écatis permettrait de faire "dégâts pvp" = "dégâts infligés *0,6" (arrondi inférieur)
Eventuellement implémenter un autre sort divin de même niveau (de Falis par exemple, vu que c'est la soeur jumelle d'Ecatis) qui permettrait de ne subir que "dégâts pvp" = "dégâts infligés *0,4" (arrondi inférieur)
Eclate tout sur son passage
- pnarcade
- Ami des souterrains de Delain
- Messages : 2963
- Inscription : 25 avr. 2012 14:28
- Localisation : Dresden
Re: Réduction des dégâts PVP
Hello,
Ivy a constaté le même bug.
Le perso 5407439 attaque le 19.01.2021 à 18h30 55s le perso . Degats théorique 27, après réduction des degats: 7. Idem à 18h30 51
À 18h30 35: 15 points de dégats théoriques, reduits à 4 avec les seuils PvP, il est maintenant touché.
A priori par contre boule de magma (quand il est indemne) a bien fonctionné.
Capture d'ecran avec dates à dispo pour étudier le PB mais Cook a bel et bien raison les seuils PvP sont bugués.
Ivy a constaté le même bug.
Le perso 5407439 attaque le 19.01.2021 à 18h30 55s le perso . Degats théorique 27, après réduction des degats: 7. Idem à 18h30 51
À 18h30 35: 15 points de dégats théoriques, reduits à 4 avec les seuils PvP, il est maintenant touché.
A priori par contre boule de magma (quand il est indemne) a bien fonctionné.
Capture d'ecran avec dates à dispo pour étudier le PB mais Cook a bel et bien raison les seuils PvP sont bugués.
Thenshirock vous couche tous avec sa grosse arbalète.
-Qu'est ce que je vous sers?
-Causette!
-Qu'est ce que je vous sers?
-Causette!
- Fullkro
- Gros bill du forum
- Messages : 1244
- Inscription : 17 févr. 2004 21:09
- Localisation : en plein jardin, à planter du RADIS
Re: Réduction des dégâts PVP
Y a pas que les seuils qui soient bugué dans le pvp
Oui, oui, pn, t'as réussi à me faire revenir sur le fofo
Oui, oui, pn, t'as réussi à me faire revenir sur le fofo
-
- Newbie
- Messages : 8
- Inscription : 10 mars 2021 20:17
Re: Réduction des dégâts PVP
Je suis en train de combattre un veilleur en zone pvp de la taupinière...
Hier vers 19h il s'est pris deux boules de magma, il a joué ce matin et était au stade touché avant mes frappes de la matinée...
Toutes mes frappes ont "bénéficié" de la réduction max alors que vu le délai écoulé depuis les BdMs, le fait d'avoir rejoué et le stade de blessure, j'aurais dû avoir droit à la première réduction, voire pas de réduction...
Ordo Skirata (perso n°5493969) est mon fam qui a laché les frappes... hors spécial, les dégâts après armure sont de 5 à 8 => toutes mes frappes sont passées à 2...
Possible de faire quelque chose?
Deg/2 pour tout le pvp serait beaucoup plus vivable que ce système obscur et buggué...
Hier vers 19h il s'est pris deux boules de magma, il a joué ce matin et était au stade touché avant mes frappes de la matinée...
Toutes mes frappes ont "bénéficié" de la réduction max alors que vu le délai écoulé depuis les BdMs, le fait d'avoir rejoué et le stade de blessure, j'aurais dû avoir droit à la première réduction, voire pas de réduction...
Ordo Skirata (perso n°5493969) est mon fam qui a laché les frappes... hors spécial, les dégâts après armure sont de 5 à 8 => toutes mes frappes sont passées à 2...
Possible de faire quelque chose?
Deg/2 pour tout le pvp serait beaucoup plus vivable que ce système obscur et buggué...
Re: Réduction des dégâts PVP
Je ne saurais pas le corriger moi-même mais on a peut-être un 2e DBA qui pourrait donner un coup de main à Marlyza.
Faudrait faire un "audit" du code pour se rendre compte du boulot à faire, peut-être que ça peut être grandement simplifié effectivement
Pour vous avancer un peu, voici les 1ers éléments que j'ai trouvé
Dans fonctions_sql/deb_tour_degats.sql
https://github.com/Merrick28/delain/blo ... general.sh >>
Faudrait faire un "audit" du code pour se rendre compte du boulot à faire, peut-être que ça peut être grandement simplifié effectivement
Pour vous avancer un peu, voici les 1ers éléments que j'ai trouvé
Dans fonctions_sql/deb_tour_degats.sql
Code : Tout sélectionner
valeur_pvp integer; -- Valeur numérique des PV ingligés, corrigés de l’atténuation PVP
Code : Tout sélectionner
-- Effet: Perte ou gain de PVs
(...)
elsif ligne.perso_cod != v_source then -- Perte de PVs (dégâts)
valeur_pvp := effectue_degats_perso(ligne.perso_cod, valeur, v_source);
code_retour := code_retour || '<br />' || v_nom_efaseur || ' inflige ' || valeur_pvp::text || ' dégâts à ' || ligne.perso_nom;
if v_bloque_magie = 1 then
code_retour := code_retour || ' (résisté)';
end if;
Code : Tout sélectionner
-- On gère les dégâts
if ligne.perso_pv <= valeur_pvp then
-- on a tué l’adversaire !!
Re: Réduction des dégâts PVP
En réalité _sql/deb_tour_degats.sql
C'est le code exécuté lorsqu'il y a un EA dégâts/soins
La reduction des dégats PvP, c'est le code ci-dessous, ça date de 2007
C'est le code exécuté lorsqu'il y a un EA dégâts/soins
La reduction des dégats PvP, c'est le code ci-dessous, ça date de 2007
Code : Tout sélectionner
--
-- Name: effectue_degats(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: delain
--
CREATE FUNCTION public.effectue_degats(integer, integer, integer) RETURNS integer
LANGUAGE plpgsql
AS $_$/*********************************************/
/* effectue_degats */
/* $1 = perso sur lequel on fait les dégats */
/* $2 = degats de base */
/* $3 = type de perso effectuant les degs */
/* Retour : dégats rééls */
/*********************************************/
/* créé le 30/05/2007 par Merrick */
/*********************************************/
declare
code_retour integer;
personnage alias for $1;
v_degats alias for $2;
v_type_att alias for $3;
--
v_type_perso integer;
v_compt_pvp integer;
v_compt_pvp1 integer; -- ajout azaghal pour garde fou
v_pv numeric;
v_pv_max numeric;
v_test text;
v_anc_niveau integer;
v_nv_niveau integer;
v_correction_1 numeric;
v_correction_2 numeric;
v_correction_3 numeric;
v_ratio numeric;
v_marge_pv integer;
v_degats_restants integer;
nb_sort_tour integer;
begin
v_correction_1 := 0.7;
v_correction_2 := 0.45;
v_correction_3 := 0.25;
-- ajout azaghal, en cas de sorts de malédiction d'écatis, les seuils sont moins puissants
if valeur_bonus(personnage, 'MEC') <> 0 then
v_correction_1 := 0.8;
v_correction_2 := 0.55;
v_correction_3 := 0.35;
end if;
v_degats_restants := v_degats;
--
-- test sur le perso cible et attaquant
--
select into v_type_perso , v_compt_pvp , v_pv , v_pv_max
perso_type_perso , perso_compt_pvp , perso_pv , perso_pv_max
from perso
where perso_cod = personnage;
if v_type_perso = 2 then
return v_degats;
end if;
if v_type_att = 2 then
return v_degats;
end if;
-- test arène : pas de réforme si on est dans une arène
if est_dans_arene(personnage) then
return v_degats;
end if;
--
-- a priori, on peut commencer à y aller maintenant
--
code_retour := 0;
while (v_degats_restants > 0) loop
if v_compt_pvp = 1 then
v_degats_restants := ceil(v_degats_restants*v_correction_1);
elsif v_compt_pvp = 2 then
v_degats_restants := ceil(v_degats_restants*v_correction_2);
elsif v_compt_pvp >= 3 then
v_degats_restants := ceil(v_degats_restants*v_correction_3);
end if;
-- Marge restante avant de changer de seuil de blessures
v_ratio := (v_pv - code_retour - 1) / cast(v_pv_max as numeric);
-- Pour des seuils à 0.8, 0.66, 0.33, 0.2 * pv_max
v_marge_pv := 1 + floor(v_pv_max * (v_ratio - floor(3*v_ratio) / cast(3 as numeric)
- 0.20 * cast(v_ratio < 0.33 and v_ratio > 0.20 as integer)
- 0.13 * cast(v_ratio > 0.80 as integer)));
if (v_degats_restants < v_marge_pv) then
code_retour := code_retour + v_degats_restants;
v_degats_restants := 0; -- On quitte la boucle
else
v_degats_restants := v_degats_restants - v_marge_pv;
code_retour := code_retour + v_marge_pv;
-- On restaure les degats restants, pour le prochain passage dans la boucle
if (v_compt_pvp = 1) then
v_degats_restants := floor(v_degats_restants / v_correction_1);
elsif (v_compt_pvp = 2) then
v_degats_restants := floor(v_degats_restants / v_correction_2);
elsif (v_compt_pvp >= 3) then
v_degats_restants := floor(v_degats_restants / v_correction_3);
end if;
v_compt_pvp := v_compt_pvp + 1;
if (code_retour >= v_pv) then -- La cible est décédée. On arrête le massacre
v_degats_restants := 0;
end if;
end if;
end loop;
--
-- on est bien d'accord les dégats vont être effectués par un joueur, il faut donc mettre les compteurs à jour
-- même si c'est pas encore vrai :)
--
if ((v_pv/v_pv_max) < 0.20) then
v_anc_niveau := 4;
elsif ((v_pv/v_pv_max) < 0.33) then
v_anc_niveau := 3;
elsif ((v_pv/v_pv_max) < 0.66) then
v_anc_niveau := 2;
elsif ((v_pv/v_pv_max) < 0.80) then
v_anc_niveau := 1;
elsif ((v_pv/v_pv_max) >= 0.80) then
v_anc_niveau := 0;
end if;
-- nouveau niveau
v_pv := v_pv - code_retour;
if ((v_pv/v_pv_max) < 0.20) then
v_nv_niveau := 4;
elsif ((v_pv/v_pv_max) < 0.33) then
v_nv_niveau := 3;
elsif ((v_pv/v_pv_max) < 0.66) then
v_nv_niveau := 2;
elsif ((v_pv/v_pv_max) < 0.80) then
v_nv_niveau := 1;
elsif ((v_pv/v_pv_max) >= 0.80) then
v_nv_niveau := 0;
end if;
v_compt_pvp := v_nv_niveau - v_anc_niveau;
-- garde fou compteur pvp bloqué à 4 max ajout azaghal
select into v_compt_pvp1
perso_compt_pvp
from perso
where perso_cod = personnage;
v_compt_pvp1 := v_compt_pvp1 + v_compt_pvp;
if v_compt_pvp1 > 4 then
v_compt_pvp := 4 - v_compt_pvp1;
end if;
-- evidemment on ne permet pas d'ajout negatif
if v_compt_pvp < 0 then
v_compt_pvp = 0;
end if;
update perso
set perso_compt_pvp = perso_compt_pvp + v_compt_pvp
where perso_cod = personnage;
return code_retour;
end;$_$;
~~ Le monde est partagé en 10 catégories de personnes, ceux qui comprennent le binaire et les autres. ~~
Re: Réduction des dégâts PVP
Du coup, le malus de pvs de la brûlure de BdM peut-elle faire planter la fonction "v_compt_pvp" ?
Sans tout réformer (pour les seuils et réductions), ce serait pas possible de sortir "v_compt_pvp" de la boucle "while (v_degats_restants > 0) loop" en définissant les seuils à partir desquels les réductions s'appliquent et garder les réductions actuelles :
Seuil 1 = 0.80 *v_pv_max
Seuil 2 = 0.66 *v_pv_max
Seuil 3 = 0.33 *v_pv_max
arrondis inf
Et faire :
Entre v_pv_max et seuil 1 : deg infligés * 1
Entre seuil 1 et seuil 2 : deg infligés * v_correction_1
Entre seuil 2 et seuil 3 : deg infligés * v_correction_2
Au-delà de seuil 3 : deg infligés * v_correction_3
avec une vérif sur le passage des seuils comme cela semble être fait pour une application progressive des dégâts
Et virer les formules de :
v_anc_niveau
v_nv_niveau
et définir pour la fuite : v_compt_pvp = 1 + 1 (si v_pv<seuil 2) + 1 (si v_pv<seuil 3)
cette phrase ne colle pas vraiment avec le calcul du compteur pvp... vu qu'il semble pouvoir aller jusqu'à 415) Quel est le malus en % de fuite pour chaque point du compteur pvp
(attention il a été modifié il y a peu)
La bonne réponse était 15%*compteur pvp !(avec respect de la limite de 10% mini).
Donc une cible peut avoir au maximum 45% de malus de fuite et cela sera très souvent 30% !!
Sans tout réformer (pour les seuils et réductions), ce serait pas possible de sortir "v_compt_pvp" de la boucle "while (v_degats_restants > 0) loop" en définissant les seuils à partir desquels les réductions s'appliquent et garder les réductions actuelles :
Seuil 1 = 0.80 *v_pv_max
Seuil 2 = 0.66 *v_pv_max
Seuil 3 = 0.33 *v_pv_max
arrondis inf
Et faire :
Entre v_pv_max et seuil 1 : deg infligés * 1
Entre seuil 1 et seuil 2 : deg infligés * v_correction_1
Entre seuil 2 et seuil 3 : deg infligés * v_correction_2
Au-delà de seuil 3 : deg infligés * v_correction_3
avec une vérif sur le passage des seuils comme cela semble être fait pour une application progressive des dégâts
Et virer les formules de :
v_anc_niveau
v_nv_niveau
et définir pour la fuite : v_compt_pvp = 1 + 1 (si v_pv<seuil 2) + 1 (si v_pv<seuil 3)
Eclate tout sur son passage