- summary: Spend capital points on the six base characteristics in one go: one amount of points per characteristic.
- area: Game.Character
Spend capital points on the six base characteristics in one go: one amount of points per characteristic.
Kind request · Area Game.Character
Spends capital points (the characteristic points the character earns by levelling) on the six base characteristics. One request carries the whole spread; the client does not send one request per characteristic.
HOW TO SEND IT
1. KNOW YOUR CAPITAL. The points left to spend are characteristic StatsPoints (3)
of CharacterCharacteristicsEvent.
2. FILL ONE MEMBER PER CHARACTERISTIC with the number of CAPITAL POINTS TO SPEND
on it, not the characteristic you expect to gain:
CharacterCharacteristicUpgradeRequest.strength (StatId 10)
CharacterCharacteristicUpgradeRequest.vitality (StatId 11)
CharacterCharacteristicUpgradeRequest.wisdom (StatId 12)
CharacterCharacteristicUpgradeRequest.chance (StatId 13)
CharacterCharacteristicUpgradeRequest.agility (StatId 14)
CharacterCharacteristicUpgradeRequest.intelligence (StatId 15)
Leave a characteristic you do not boost at 0.
3. SPEND AT MOST YOUR CAPITAL in total.
4. READ THE RESULT in the next CharacterCharacteristicsEvent: each boosted
characteristic's base value and the remaining StatsPoints. The values you sent
are POINTS SPENT (the client fills them from each row's points used); the
server converts them with your class's cost, which is why 3 points on wisdom
read as a wisdom of 1 in the observed session.
USE THE NAMES, NEVER THE FIELD ORDER. Field numbers and declaration order differ in every build: 3.7 sends strength as field 7 and wisdom as field 8, 3.2 sends vitality as field 7.
OBSERVED (one session, 3.7.7.6): spending 1 point each on strength, vitality, chance,
agility and intelligence and 3 on wisdom sent exactly those amounts, and was
answered by InventoryWeightEvent and CharacterCharacteristicsEvent, every one
of the six bases then reading 1 and 37 StatsPoints left.
PADDING. Some builds add members the client never writes: an int32 and a two-value enum on 3.7, an int32 and a nested list message on 3.6.12.16, a five-value enum on 3.3.20.19, a map<string, int64> on 3.2. Leave them unset.
When you may send it
- Requires
character_loadedinferred - Raised by: the player validates the points spread in the character sheet's characteristic boost panel (full or minimized) proven
Related messages
- Reply not yet recovered: the protocol also declares an upgrade-result event (result code and points); it was not seen after the one observed successful upgrade, and it has no signature here yet.
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 2 | vitality | int32 | Capital points to spend on vitality (StatId 11). (capital points) 0 leaves vitality unchanged. | required |
| 4 | chance | int32 | Capital points to spend on chance (StatId 13). (capital points) 0 leaves chance unchanged. | required |
| 5 | agility | int32 | Capital points to spend on agility (StatId 14). (capital points) 0 leaves agility unchanged. | required |
| 6 | intelligence | int32 | Capital points to spend on intelligence (StatId 15). (capital points) 0 leaves intelligence unchanged. | required |
| 7 | strength | int32 | Capital points to spend on strength (StatId 10). (capital points) 0 leaves strength unchanged. | required |
| 8 | wisdom | int32 | Capital points to spend on wisdom (StatId 12). (capital points) Observed: 3, which gave +1 wisdom, observed in a capturePoints spent, not wisdom gained: the server applies your class's cost. | required |