Difficulty scaling/fr: Difference between revisions
No edit summary |
Created page with "<source lang="c++"> if (actor->params["LevelSensorMode"] < 1) return false; // if (actor_name.contains("Enemy")) { for (enemy_table : this->byml["enemy"]) { i = -1;..." |
||
| (11 intermediate revisions by the same user not shown) | |||
| Line 83: | Line 83: | ||
=== Valeurs de bonus === | === Valeurs de bonus === | ||
La valeur des bonus (par exemple l'augmentation de puissance ou de durabilité) est déterminée à partir de [[ActorParam/GeneralParamList]] (avec une copie de l'information dans [[ActorInfoData]]). Les intervalles corrects et les bonus de chaque arme est configurée dans la partie WeaponCommon. | |||
==== amiibo ==== | ==== amiibo ==== | ||
À cause d'un bug dans le code du jeu<ref>Le code buggué est dans la fonction {{addr|a=0x71002df7d8|ver=nx-1.5.0}}.</ref>, à chaque fois que le jeu choisit aléatoirement le bonus "Garde ↑", le vrai bonus qui est assigné à l'arme et qui apparaît dans l'interface utilisateur est "Durabilité ↑". Pour cette raison, la valeur de la durabilité supplémentaire qui est utilisée pour les boucliers avec le bonus "Durabilité ↑" est soit addLifeMax, soit addGuardMax, suivant le bonus choisi. | |||
{|class="wikitable" | {|class="wikitable" | ||
| Line 177: | Line 177: | ||
|- | |- | ||
| 0 | | 0 | ||
| '''None''': | | '''None''': Pas de bonus. | ||
|- | |- | ||
| 1 | | 1 | ||
| '''RandomBlue''': | | '''RandomBlue''': L'arme aura aléatoirement au moins un bonus bleu / blanc (avec <code>weaponCommonSharpWeaponPer</code> faisant office de probabilité). | ||
|- | |- | ||
| 2 | | 2 | ||
| '''Blue''': | | '''Blue''': L'arme aura au moins un bonus bleu. | ||
|- | |- | ||
| 3 | | 3 | ||
| '''Yellow''': | | '''Yellow''': L'arme aura au moins un bonus jaune. | ||
|- | |- | ||
| 4 | | 4 | ||
| '''NoneForced''' ( | | '''NoneForced''' (uniquement pour les coffres): L'arme n'apparaîtra ''jamais'' avec un bonus. ''Ceci est prioritaire sur le nivellement normal.'' | ||
|} | |} | ||
| Line 231: | Line 231: | ||
=== <code>Ecosystem::LevelSensor::scaleWeapon</code> === | === <code>Ecosystem::LevelSensor::scaleWeapon</code> === | ||
Appelée par le code des coffres ou par les acteurs d'ennemi{{Check}}, <code>Ecosystem::LevelSensor::scaleActor</code> | |||
Suivant le nom de l'arme, ses bonus et le compte actuel des points, cette fonction renvoie l'arme à faire apparaître, et le bonus à utiliser, si possible. | |||
Si l'algorithme échoue à trouver une arme qui satisfait toutes les conditions (nombre de points requis, série de l'arme, bonus), l'arme spécifiée et les bonus en entrée seront utilisés à la place. | |||
Pseudocode (1.0.0) : | Pseudocode (1.0.0) : | ||
| Line 246: | Line 246: | ||
void* unknown) | void* unknown) | ||
{ | { | ||
// | // quelques checks utilisant 'unknown' ici qui semble être un pointeur vers l'acteur | ||
// | // | ||
for (weapon_table : this->byml["weapon"]) { | for (weapon_table : this->byml["weapon"]) { | ||
// | // trouve la première arme pour laquelle le joueur a assez de points | ||
// | // avec le nom spécifié et les bonus | ||
i = -1; | i = -1; | ||
for (j = 0; j < weapon_table["actors"].size; ++j) { | for (j = 0; j < weapon_table["actors"].size; ++j) { | ||
| Line 270: | Line 270: | ||
entry = weapon_table["actors"][i]; | entry = weapon_table["actors"][i]; | ||
// | // | ||
// not_rank_up | // not_rank_up signifie qu'il n'y a pas de lien entre les armes; | ||
// | // ce tableau est juste utilisé pour parcourir les bonus. | ||
// | // donc parcourt la liste jusqu'à ce qu'il n'y ait plus d'entrée pour l'arme demandée | ||
// | // ou jusqu'à ce que l'on atteigne un bonus qui nécessite plus de points. | ||
if (weapon_table["not_rank_up"] && entry["name"] != weapon_to_look_up) | if (weapon_table["not_rank_up"] && entry["name"] != weapon_to_look_up) | ||
break; | break; | ||
// | // | ||
// | // sinon, parcourt juste la liste jusqu'à atteindre la fin ou une arme qui | ||
// | // requiert plus de points. Cela peut améliorer l'arme (par ex. Chevalier -> Royal). | ||
if (this->weapon_points <= entry["value"]) | if (this->weapon_points <= entry["value"]) | ||
break; | break; | ||
| Line 289: | Line 289: | ||
return true; | return true; | ||
} | } | ||
return false; // | return false; // ne peut pas niveller | ||
} | } | ||
</source> | </source> | ||
| Line 327: | Line 327: | ||
return true; | return true; | ||
} | } | ||
return false; // | return false; // ne peut pas niveller | ||
} | } | ||
// | // | ||
| Line 341: | Line 341: | ||
return true; | return true; | ||
} | } | ||
return false; // | return false; // ne peut pas niveller | ||
} | } | ||
</source> | </source> | ||