Achievement Database Structure

Sample

 - Id: 99                  
   Group: Baby            
   Name: Example Achiev
   Targets:            
     - Id: 0
       Mob: XM_CELINE_KIMI
       Count: 1
   Condition: " BaseLevel >= 99 "
   Map: prontera
   Dependents:
     - Id: 100
   Rewards:
     Item: Shabby_Purse
     Amount: 10
     Script: " specialeffect2 EF_BLESSING; sc_start SC_BLESSING,30000,10; "
     TitleId: 1000
   Score: 10

Content

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. See examples below:

Player must kill 5 Scorpions and 10 Porings

  Targets:
    - Id: 0
      Mob: SCORPION
      Count: 5
    - Id: 1
      Mob: PORING
      Count: 10

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. See examples below:

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);

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. See examples below:

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.