
* 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>
116 lines
4.9 KiB
Plaintext
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.
|