Nobility (Peerage)

⚠️ WARNING

The document is written by observing client patch 5517. There may be significant differences between client patches.

A player can donate silver or CPs (Conquer Points) to earn nobility on the server. It was introduced in patch 5017, with gender-specific ranks added in patch 5302. Depending on how much the player donates in total, their hero name can appear on a leaderboard, they get an increase in battle power & 3DEffect appears on their character model each time they are loaded into view.

Peerage Ranks

The table below shows the peerage ranks & the official requirements. Coincidentally, the rank number is also the same value as the increase in battle power.

Rank NumberTitleMax Per ServerRequirement
12King / Queen3Leaderboard Rank 1-3
9Prince / Princess12Leaderboard Rank 4-15
7Duke / Duchess35Leaderboard Rank 16-50
5Earl / CountessNo Limit200,000,000 silvers
3Baron / BaronessNo Limit100,000,000 silvers
1Knight / LadyNo Limit30,000,000 silvers
0CommonerN/AN/A

Nobility titles, status button and effects are all defined in the file peerage.ini with the ini-heading formula calculated by:

(Rank Number * 10) + Gender   (1=Male 2= Female)

For example, ini-heading [72] in peerage.ini is the female version of the 7th Rank (Duchess)

Client Implementation

Status Button

The hero's peerage rank should be sent by the server to the client shortly after the game server initializes the hero (after MsgUserInfo) by sending the message MsgPeerage: REFRESH_RANK. This message is required for the nobility status button to appear, even if the hero has never donated (as they will be Rank Commoner).

The nobility status icon has a hover-over tooltip with the hero's total donation amount, their nobility rank and position on the leaderboard. The values of this tooltip come from the MsgPeerage: REFRESH_RANK payload. If the hero has not achieved a rank then their rank is displayed as --.

Submitting Donation

After clicking the nobility status button, the dialog DlgContribution appears. There is a field where the player can enter the amount of silver to donate. The minimum amount of silver is 3,000,000 (hardcoded in the client binary). After clicking submit, the player is prompted whether they wish to donate using CPs (Bound CPs are used first, then Non-Bound) instead of silver, where 1CP is equivalent to 50,000 silver (hardcoded in the client binary). After confirming the donation currency, the client sends the message MsgPeerage: SEND_DONATION with the donation amount & currency-type.

There is client-side validation to ensure the hero has enough currency before submitting the donation, but the server should also validate and action the request. The server replies back with MsgPeerage: SEND_DONATION to confirm the donation amount, the hero's total donation, and, if applicable, the hero's new position on the leaderboard.

The server should also send MsgPeerage: REFRESH_RANK again to refresh the hero's status icon & rank.

Query Minimum Amount

On the Nobility Contribution dialog (DlgContribution) there is a section 'Minimum Donation', where the player can click on a button for each and any rank higher than their current peerage rank. When they click on a rank button, the client sends MsgPeerage: QUERY_MINIMUM with the rank number clicked on.

The server then calculates the minimum amount of silver the hero must donate for that rank and responds with MsgPeerage: QUERY_MINIMUM with the rank number clicked on.

Leaderboard

IMPORTANT

Leaderboard positions are zero-indexed. The top donor (rank 1) is sent as position 0 by the server, and the client adds 1 to this.

On the Nobility Contribution dialog (DlgContribution) the top 5 most-donated players are shown. The client requests the top 5 players by sending MsgPeerage: LEADERBOARD and the server responds with the same message with an array of the top 5 players' details.

The player can also select 'More' on the leaderboard, which will be a paginated list of top donated players. The client sends the requested page via MsgPeerage: LEADERBOARD and the server responds back with MsgPeerage: LEADERBOARD.