You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.5 KiB

Achievement Database Structure

Table of contents

  1. Id
  2. Group
    1. Valid Groups
  3. Name
  4. Targets
  5. Condition
  6. Map
  7. Dependents
  8. Rewards
  9. Score
  10. Example

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.

Example

 - Id: 99
   Group: Baby
   Name: Example Achieve
   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