rathena/doc/achievements.txt
Aleos 5aa9f75343
Cleaned up remaining TODO for Achievements (#4446)
* Converts labels to camelCase.
* Converts labels to plural where needed.
* Converts Target MobID to use the Sprite name.
* Converts Rewards ItemID to use the Aegis name.
* Dependents now checks for duplicate IDs.
* Dependents now properly supports import methods.
* Added YAMLUpgrade tool to convert previous YAML databases to new format.
* Removes the unique index value for Dependent Achievement ID.
* Adds support for the AG_CHATTING achievement types triggered by script (achievementupdate script command).
* AG_CHATTING map type achievements are still disabled as behavior is unknown.
* AG_HEAR and AG_SEE are now dropped and those achievements have been converted to AG_CHATTING.
* Converts the group constants to how Aegis names them.
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2021-02-17 18:01:11 -05:00

116 lines
4.9 KiB
Plaintext

//===== rAthena Documentation ================================
//= Achievement Database Structure
//===== By: ==================================================
//= rAthena Dev Team
//===== Last Updated: ========================================
//= 20200220
//===== Description: =========================================
//= Explanation of the achievements_db.yml file and structure.
//============================================================
---------------------------------------
Id: Unique achievement ID.
---------------------------------------
Group: Achievement group type. Each achievement type calls a specific objective check.
Valid groups:
None - Can be used for custom achievements that are given through a script with no trigger events.
Add_Friend - Triggered when a player adds a friend.
Adventure - Does not trigger automatically. These are triggered by the achievementcomplete script command.
Baby - Triggered when a player becomes a baby job.
Battle - Triggered when a player kills a monster.
Chatting - Aegis uses this when talking to a NPC. These are triggered by the achievementupdate script command.
Chatting_Count - Triggered when a player has a chatroom open and others join.
Chatting_Create - Triggered when a player creates a chatroom.
Chatting_Dying - Triggered when a player creates a chatroom and dies with it open.
Eat - Unknown.
Get_Item - Triggered when a player gets an item that has a specific sell value.
Get_Zeny - Triggered when a player gets a specific amount of zeny at once.
Goal_Achieve - Triggered when a player's achievement rank levels up.
Goal_Level - Triggered when a player's base level or job level changes.
Goal_Status - Triggered when a player's base stats changes.
Job_Change - Triggered when a player's job changes.
Marry - Triggered when two players get married.
Party - Triggered when a player creates a party.
Enchant_Fail - Triggered when a player fails to refine an equipment.
Enchant_Success - Triggered when a player successfully refines an equipment.
Spend_Zeny - Triggered when a player spends any amount of zeny on vendors.
Taming - Triggered when a player tames a monster.
---------------------------------------
Name: Achievement name. Used when sending rewards through RODEX.
---------------------------------------
Targets: A list of monster names and count values that the achievement requires.
The target count can also be used for achievements that keep a counter while not being related to monster kills.
Capped at MAX_ACHIEVEMENT_OBJECTIVES.
Example:
// Player must kill 5 Scorpions and 10 Poring.
Targets:
- Id: 0
Mob: SCORPION
Count: 5
- Id: 1
Mob: PORING
Count: 10
Example 2:
// Player must have 100 or more of ARG0 value. Using the count target value is useful for achievements that are increased in increments
// and not checked for a total (UI_Type = 1).
// IE: In the achievement_list.lub file, UI_Type 0 is displayed as non-incremental while 1 shows a progress bar of completion for the achievement.
Condition: " ARG0 >= 100 "
Targets:
- Id: 0 // Array index value
Count: 100
---------------------------------------
Condition: A conditional statement that must be met for the achievement to be considered complete. Accepts script constants, player variables, and
ARGX (where X is the argument vector value). The ARGX values are sent from the server to the achievement script engine on special events.
Below are two examples of how the ARGX feature works.
Example:
// This function will send 1 argument (ARG0) with a value of i + 1 when a friend is added.
achievement_update_objective(f_sd, AG_ADD_FRIEND, 1, i + 1);
Example 2:
// This function will send 2 arguments (ARG0 and ARG1) with values of weapon level and refine level, respectively, when an equipment is
// successfully refined.
achievement_update_objective(sd, AG_REFINE_SUCCESS, 2, sd->inventory_data[i]->wlv, sd->inventory.u.items_inventory[i].refine);
---------------------------------------
Map: A map name that is used for the Chatting group which increments the counter based on the player's map.
NOTICE: This option is currently disabled until the official behavior is confirmed.
---------------------------------------
Dependents: A list of achievement IDs that need to be completed before this achievement is considered complete.
Example:
// Player must complete achievements 10001 and 10002 first.
Dependents:
10001: true
10002: true
// Used with the import, dependent achievements can be disabled. The player now only requires completion of achievement 10001.
Dependents:
10002: false
---------------------------------------
Rewards: A list of rewards that are given on completion. All fields are optional.
Item: Item Name
Amount: Amount of Item (Default: 1)
Script: Bonus Script
TitleId: Title ID
---------------------------------------
Score: Achievement points that are given on completion.