Difficulty scaling/fr: Difference between revisions

Echocolat (talk | contribs)
Created page with "'''NoneForced''' (uniquement pour les coffres): L'arme n'apparaîtra ''jamais'' avec un bonus. ''Ceci est prioritaire sur le nivellement normal.''"
Echocolat (talk | contribs)
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;..."
 
(4 intermediate revisions by the same user not shown)
Line 231: Line 231:
=== <code>Ecosystem::LevelSensor::scaleWeapon</code> ===  
=== <code>Ecosystem::LevelSensor::scaleWeapon</code> ===  


Called from treasure chest code, enemy actors{{Check}}, <code>Ecosystem::LevelSensor::scaleActor</code>
Appelée par le code des coffres ou par les acteurs d'ennemi{{Check}}, <code>Ecosystem::LevelSensor::scaleActor</code>


Given a weapon name, its modifier and current point status, this function returns the weapon to actually spawn and the modifier to use (if possible).
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.


If the algorithm fails to find an appropriate weapon that satisfies all conditions (point requirements, weapon series, modifier), the originally specified weapon and modifier will be used directly.
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)
{
{
   // some checks using 'unknown' here which seems to be a pointer to the actor
   // 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"]) {
     // find the first weapon entry for which the player has enough points
     // trouve la première arme pour laquelle le joueur a assez de points
     // with the specified name and modifier
     // 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 means there is no link between weapons;
       // not_rank_up signifie qu'il n'y a pas de lien entre les armes;
       // this table is just used to look up modifiers.
       // ce tableau est juste utilisé pour parcourir les bonus.
       // so go down the list until there are no more entries for the requested weapon
       // donc parcourt la liste jusqu'à ce qu'il n'y ait plus d'entrée pour l'arme demandée
       // or until we reach a modifier that requires more points.
       // 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;
       //
       //
       // otherwise, just go down the list until we reach the end or a weapon which
       // sinon, parcourt juste la liste jusqu'à atteindre la fin ou une arme qui
       // requires more points. this will possibly upgrade the weapon (e.g. Knight -> Royal).
       // 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;  // cannot scale up
   return false;  // ne peut pas niveller
}
}
</source>
</source>
Line 327: Line 327:
     return true;
     return true;
   }
   }
   return false;  // cannot scale up
   return false;  // ne peut pas niveller
}
}
//
//
Line 341: Line 341:
     return true;
     return true;
   }
   }
   return false;  // cannot scale up
   return false;  // ne peut pas niveller
}
}
</source>
</source>