Skip to content

Measured

Measured marks a condition for tracking progress. It adds a progress bar to the achievement overlay to inform the user how close they are to completing an achievement. As the user expects an achievement to trigger when the progress bar is full, it is expected that any other conditions in the achievement should be true most of the time.

Measured should not be used to track things that are clearly visible to the user. If you have an achievement for getting 500,000 points, you don't need to Measure it if the score is displayed on the screen. Similarly, there's no need to use Measured in an achievement for having 100 of something in the inventory if the player can see a count of how many they have just by opening the inventory.

If placed on a condition with a required HitCount, the target value is the required HitCount and the current value is the current HitCount. AddHits can be used.

If placed on a condition without a HitCount, the target value is the constant on the right side of the condition and the current value is the evaluation of the left side of the condition. AddSource and SubSource can be used.

If multiple conditions are marked as Measured and have the same target value, the current value will be the maximum of all the Measured conditions.

If multiple conditions are marked as Measured and have different target values, a Parse Error -22 will occur.

Note that progress for Measured values is reported at the time of examination and may actually go down depending on the current value (Hit Count could be reset, or comparison value decreases).

To limit the scope of a Measured condition, you can add a MeasuredIf condition. A MeasuredIf condition must be true for the Measured value to be non-zero (and for the achievement to trigger). You can use MeasuredIf to create achievements that require playing as a certain character, or just to prevent bogus data from showing up if the player is in the wrong part of the game. If any MeasuredIf condition in a group is false, the Measured value for the group is automatically 0.

Since PauseIf has precedence over Measured, the Measured value will be captured when a group becomes paused, and the captured value will be returned until the group is unpaused and Measured can be evaluated again. If another Measured exists in a non-paused group, its value will be returned even if it is lower than the captured value.

Changelog

Released under the GPL-3 License. There are no copyright-protected ROMs available for download on RetroAchievements.