- summary: The fight is over: the results of every fighter and the outcome of each team.
- area: Game.Fight
The fight is over: the results of every fighter and the outcome of each team.
Kind event · Area Game.Fight
The fight is over. It carries the result of every fighter and the outcome of each team, and it is the last fight message: the context switches back to roleplay afterwards.
WHAT TO DO WHEN YOU RECEIVE IT
1. Stop playing: no more turns, no more casts.
2. If a fight action sequence is still open, close it. The official client does
it itself ('Fight end but no SequenceEnd was received') and delays the end of
the fight until the sequence it is playing has finished.
3. Read FightEndEvent.results: one FightResultListEntry per fighter. Find yours
by its FighterListEntry.fighter_id; it gives your FightOutcome, your
experience gauge (ExperienceData) and what you won (FightReward: kamas and,
per defeated monster, items and alterations). FightEndEvent.named_party_teams_outcomes
names the winning and losing parties (NamedPartyTeamWithOutcome).
4. The fight summary: FightEndEvent.duration is how long the fight lasted, in
milliseconds; FightEndEvent.reward_rate is the reward bonus (positive) or malus
(negative), in percent; FightEndEvent.score, when present, is the fight score;
FightEndEvent.budget, when present, is the budget shown in your result tab.
5. SEND NOTHING BACK. Wait for the context change that brings you back to the
map (ContextCreationEvent naming the roleplay context).
Two declared int32 are never used by the client (one is copied into its report and never read, the other is not even read): ignore them.
When you may send it
- Requires
context_readyinferred
Related messages
- Unsolicited - nothing you send causes this the server ends the fight when one team is defeated or the fight is abandoned
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 1 | reward_rate | int32 | Reward bonus (positive) or malus (negative), in percent. The result screen shows it as "{0}%", labelled bonus when >= 0 and malus otherwise. | never |
| 2 | named_party_teams_outcomes | repeated NamedPartyTeamWithOutcome | The named teams of the fight with their outcome (winners and losers). Proven as the list the client converts into its winners/losers team names. Elements are NamedPartyTeamWithOutcome. | never |
| 3 | score | int32 | The fight score, when the fight has one. Explicit presence: absent is not the same as zero. Name ours: not in beta. The result screen shows it after the localized 'ui.common.score' label. | never |
| 4 | results | repeated FightResultListEntry | One result entry per fighter: who it was, the outcome and the rewards. Proven as the list the client converts into its list of fighter result entries. Elements are FightResultListEntry. | never |
| 6 | budget | int32 | The budget shown in your result tab, when present. Explicit presence: absent is not the same as zero. The client keeps it as m_budget and hands it to FightResultCharacterTab.Init(budget). | never |
| 8 | duration | int64 | How long the fight lasted, in milliseconds. Beta's member was an int32; the client converts it with TimeSpan.FromMilliseconds for the result screen's time label. | never |