Translations:Difficulty scaling/376/fr

Revision as of 12:57, 14 June 2022 by Echocolat (talk | contribs) (Created page with "<source lang="c++"> bool Ecosystem::LevelSensor::scaleWeapon(const sead::SafeString& weapon_to_look_up, WeaponModifier required_modifi...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
bool Ecosystem::LevelSensor::scaleWeapon(const sead::SafeString& weapon_to_look_up,
                                         WeaponModifier required_modifier,
                                         const char** weapon_to_use_name,
                                         WeaponModifier* modifier_to_use,
                                         void* unknown)
{
  // quelques checks utilisant 'unknown' ici qui semble être un pointeur vers l'acteur
  //
  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;
    for (j = 0; j < weapon_table["actors"].size; ++j) {
      entry = weapon_table["actors"][j];
      float points_for_next_transition = entry["value"];
      //
      if (this->weapon_points > points_for_next_transition &&
          weapon_to_look_up == entry["name"] &&
          convert_to_modifier(entry["plus"]) == required_modifier) {
        i = j;
        break;
      }
    }
    //
    if (i == -1)
      continue;
    //
    do {
      entry = weapon_table["actors"][i];
      //
      // 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)
        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"])
        break;
      //
      ++i;
    } while (i < weapon_table["actors"].size);
    //
    *weapon_to_use_name = entry["name"];
    *modifier_to_use = convert_to_modifier(entry["plus"]);
    return true;
  }
  return false;  // ne peut pas niveller
}