Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Medals #522

Open
Tracked by #486
SapiensAnatis opened this issue Nov 30, 2023 · 3 comments
Open
Tracked by #486

Medals #522

SapiensAnatis opened this issue Nov 30, 2023 · 3 comments
Assignees
Labels
enhancement New feature or request

Comments

@SapiensAnatis
Copy link
Owner

SapiensAnatis commented Nov 30, 2023

Medials should be implemented in the encyclopedia.

In the original game, medals were a way to show off having cleared particular content with a certain unit. For instance, a medal to clear an Agito Uprising quest on Legend would be earned when you cleared it with character X, and then when you viewed character X's medals in the encyclopedia it would be there. The implicit encouragement here is to clear content with a wide range of units.

The wiki article contains a full list of the available medals: https://dragalialost.wiki/w/Medals

The proposed DB schema would be

  • DbMedalClear table [DeviceAccountId, QuestId, CharaId, ClearCount]

At a precursory glance and guessing at the right property name, this data appears to be sent in album/index via chara_honor_list

{
    "data_headers": {
        "result_code": 1
    },
    "data": {
        "chara_honor_list": [
            {
                "chara_id": 10140302,
                "honor_list": [
                    {
                        "honor_id": 100101
                    }
                ]
            }
        ]
    }
}

Here honor_id is an ID from the HonorData asset in the masterasset. A JSON dump of this is below which can be included as a MasterAsset instance in the code:

HonorData.json

Outstanding questions:

  1. How do we go from a quest ID to an honor_id? Does not seem to be a way to link this using the data in the asset alone. A manual map may be required.
  2. In light of this, should the DB schema actually use honor_id instead of a quest ID?
  3. When viewing medals you see a quantity against each one, but the AtgenHonorList type only contains an honor_id and no quantity field or similar. Do we send the same honor_id multiple times to reflect quantity?

Things to be careful of:

  1. Medals are not awarded when using skip tickets. Skip tickets are currently implemented as simulating a dungeon clear such that the exact same methods are called. I don't think there is any current way from within the DungeonRecordService to know if a skip ticket is being used -- which we will need to check when awarding a medal.
  2. Medals are not awarded to units who died and used up all of their revives.
@Antimeify
Copy link

Hey @SapiensAnatis can you please add a bit more detail for this just while I get my head around the code base to begin with :)

@SapiensAnatis
Copy link
Owner Author

@Antimeify Sure, I've fleshed out the description a bit describing the core mechanic and some initial investigation into what the client is expecting here.

@SapiensAnatis
Copy link
Owner Author

Also, here are the localisation strings and honor IDs from the above JSON next to their English translation:

HonorId HonorName English Text
100101 HONOR_NAME_100101 Dragon Conqueror Medal (Master Class)
100201 HONOR_NAME_100201 Astral Conqueror Medal (Master Class)
100301 HONOR_NAME_100301 Void Dragon Conqueror Medal (Standard Class)
100302 HONOR_NAME_100302 Void Dragon Conqueror Medal (Expert Class)
100401 HONOR_NAME_100401 Void Chimera Conqueror Medal (Standard Class)
100402 HONOR_NAME_100402 Void Chimera Conqueror Medal (Expert Class)
100501 HONOR_NAME_100501 High Dragon Conqueror Medal (Standard Class)
100502 HONOR_NAME_100502 High Dragon Conqueror Medal (Expert Class)
100503 HONOR_NAME_100503 High Dragon Conqueror Medal (Master Class)
100601 HONOR_NAME_100601 Agito Conqueror Medal (Standard Class)
100602 HONOR_NAME_100602 Agito Conqueror Medal (Expert Class)
100603 HONOR_NAME_100603 Agito Conqueror Medal (Master Class)
100701 HONOR_NAME_100701 Agito Conqueror Medal (Legend Class)
100801 HONOR_NAME_100801 Archdemon Conqueror Medal (Standard Class)
100802 HONOR_NAME_100802 Archdemon Conqueror Medal (Expert Class)
100803 HONOR_NAME_100803 Archdemon Conqueror Medal (Master Class)
100901 HONOR_NAME_100901 Morsayati Conqueror Medal
101001 HONOR_NAME_101001 Conqueror of the Mighty Medal (Standard Class)
101002 HONOR_NAME_101002 Conqueror of the Mighty Medal (Expert Class)
101003 HONOR_NAME_101003 Conqueror of the Mighty Medal (Master Class)
101101 HONOR_NAME_101101 Archdemon Conqueror Medal (Legend Class)
101201 HONOR_NAME_101201 Kaleidoscape Conqueror Medal (Expert Class)
101202 HONOR_NAME_101202 Kaleidoscape Conqueror Medal (Master Class)
101301 HONOR_NAME_101301 Primal Dragon Conqueror Medal (Standard Class)
101302 HONOR_NAME_101302 Primal Dragon Conqueror Medal (Expert Class)
101303 HONOR_NAME_101303 Primal Dragon Conqueror Medal (Master Class)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants