N3OW/common/achievements/_achievements.info

76 lines
3.3 KiB
Text
Raw Normal View History

2026-05-30 04:14:43 -04:00
##############################################################
# Structure
##############################################################
#
# These files comprise the Achievement Database.
#
# Achievements Flags
#
# When we add flags etc for achievements, we need to do it in a certain roundabout way, or else it'll trigger errors
# when running some of our automated tests. For context, these tests run the game without graphics, which for one
# reason or another, don't read achievements.
# Thus if the only place an achievement flag/variable is read is inside the achievement script, we end up with errors
# like these during the test:
#
# [15:36:43][jomini_effect.cpp:324]: Character flag 'rd_character_blocked_far_from_home_achievement' is set but is never used
# [15:36:43][jomini_effect.cpp:324]: Variable 'first_of_the_crusader_kings_achievement_flag' is set but is never used
#
# Instead use the scripted achievement effects such as add_achievement_flag_effect.
# They will suppress the above errors by adding dummy usages as well.
#
# Look for all effects in achievement_effects.txt, the different effects are used for different kinds of achievement checks.
# Key of the achievement. Name and description loc keys will use this as base in achievements_l_LANGUAGE.yml
# name: ACHIEVEMENT_your_achievement_key
# description: ACHIEVEMENT_DESC_your_achievement_key
your_achievement_key = {
### possible (trigger, optional)
#
# A player-character-scoped trigger that determines whether the achievement can ever be unlocked in this run.
# This allows the player to see which achievement they can aim for in this run. Can be empty and check for variables
#
# Scopes:
# root = the character being played
possible = {
}
### happened (trigger)
#
# A player-character-scoped trigger that determines whether the achievement was unlocked.
# In practice we always use a custom_description trigger to be able to show custom trigger text.
# The custom trigger descriptions are defined in XX_track_achievement_triggers.txt in the common/trigger_localization folder.
# After the text you can write the actual condition to unlock the achievement.
happened = {
custom_description = {
# Name of the custom trigger localization. Usually the structure to use in the achievement_triggers file goes like this:
#
# your_achievement_key_trigger = {
# global = ACHIEVEMENT_DESC_your_achievement_key
# }
text = your_achievement_key_trigger
### subject (optional)
# scope object of the subject of the text's phrase, to be used when localizing the text's variable entities (he/she/I...).
# This only affects the text localization. Generally unused for achievements.
subject = {}
### object (optional)
# scope object of the object of the text's phrase, to be used when localizing the text's variable entities (he/she/I...).
# This only affects the text localization. Generally unused for achievements.
object = {}
### value (optional)
# scope object of a numeric value to be used in the text's phrase.
# This only affects the text localization. Generally unused for achievements.
value = {}
# Everything else in this custom_description is counted as a Character-scoped trigger that checks if the current situation can unlock this achievement.
#
# Scopes:
# root = the character being played
exists = root.capital_province
}
}
}