//===== 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.
