Aller au contenu
Afficher dans l'application

Une meilleure façon de naviguer. En savoir plus.

Asterobot

Une application plein écran sur votre écran d'accueil avec notifications push, badges et plus encore.

Pour installer cette application sur iOS et iPadOS
  1. Appuyez sur Icône de partage dans Safari
  2. Faites défiler le menu et appuyez sur Ajouter à l'écran d'accueil.
  3. Appuyez sur Ajouter dans le coin supérieur droit.
Pour installer cette application sur Android
  1. Appuyez sur le menu à trois points (⋮) dans le coin supérieur droit du navigateur.
  2. Appuyez sur Ajouter à l'écran d'accueil ou Installer l'application.
  3. Confirmez en appuyant sur Installer.

Protocole Dofus

Le protocole Dofus actuellement pris en charge par Asterobot
The cast spell's global (team-wide) cast counters after a cast: the count and the count per target.
Kind struct · Area Game.Action
The TargetedAbility.ability_refresh_info_team record (3.6.10.10 on).
READ IT LIKE THIS
1. AbilityRefreshInfoTeam.cast_count: the spell's global cast count (all fighters together). 2. AbilityRefreshInfoTeam.target_cast_counts: the same per target fighter. 3. Store them as the spell's global counters for every fighter refreshed by TargetedAbility.ability_refresh_infos.
3.7.x adds a nested enum member that the client never reads: ignore it.
Not sent on its own — it travels inside TargetedAbility.ability_refresh_info_team. proven
Used by
TargetedAbility Fields
#FieldTypeMeaningYou set it 2cast_countint32The spell's global cast count.
Stored together with the per-target counts as the global counters.never 3target_cast_countsrepeated CastCountOneSomeoneThe spell's global cast count per target fighter.never
  • summary: The cast spell's global (team-wide) cast counters after a cast: the count and the count per target.
  • area: Game.Action
  • 38 vues
A mark on the fight map is switched on or off.
Kind struct · Area Game.Action
The GameActionFightEvent.activate_glyph_trap action: an existing glyph or trap becomes active (it will trigger) or inactive.
READ IT LIKE THIS
1. ActivateGlyphTrap.mark_id names the mark (the mark id of its FightMark). 2. ActivateGlyphTrap.active is its new state: true = active, false = inactive. 3. Update the mark you keep for that id; nothing else changes.
WHAT THE CLIENT DOES. It queues a step that, when played, sets the mark's active flag and redraws it.
Not sent on its own — it travels inside GameActionFightEvent.activate_glyph_trap. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1mark_idint32The id of the mark whose state changes.never 2activeboolThe mark's new state: true = active (it triggers), false = inactive.never
  • summary: A mark on the fight map is switched on or off.
  • area: Game.Action
  • 38 vues
What an actor looks like and what kind of actor it is: a roleplay actor or a fighter.
Kind struct · Area Game.Common
The actor_information of ActorPositionInformation. It carries the actor's EntityLook and a oneof, information, that says WHAT the actor is.
BRANCH ON THE ONEOF, NOT ON THE ENCLOSING EVENT. role_play_actor is set for actors on a roleplay map (characters, monster groups, NPCs, merchants...), and fighter - a FightFighterInformation - for every combatant during a fight, which is how FightFighterShowEvent describes a fighter.
Some builds declare a second fighter-typed member outside the oneof. The client never reads it: read fighter, never the other one.
Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred
Used by
ActorPositionInformation Fields
#FieldTypeMeaningYou set it 2lookEntityLookThe actor's appearance - see EntityLook.never 1role_play_actorRolePlayActorSet for an actor on a roleplay map: what kind of roleplay actor it is.never 4fighterFightFighterInformationSet for a combatant: the fighter record - see FightFighterInformation.never
  • summary: What an actor looks like and what kind of actor it is: a roleplay actor or a fighter.
  • area: Game.Common
  • 40 vues
A fighter's body starts covering a cell (its hit box changes).
Kind struct · Area Game.Action
One step of a fight action (GameActionFightEvent). Some fighters occupy more than one cell; their hit box is the set of cells they cover. This step adds a cell to the hit box of the action's GameActionFightEvent.source_id.
READ IT LIKE THIS
1. The fighter is the action's source. 2. Add AddHitBox.cell to the set of cells it covers (targeting that cell targets the fighter). The client ignores a cell id outside the map. 3. SEND NOTHING BACK.
Not sent on its own — it travels inside GameActionFightEvent.add_hit_box. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 2cellint32The cell added to the fighter's hit box. (map cell id)never
  • summary: A fighter's body starts covering a cell (its hit box changes).
  • area: Game.Action
  • 35 vues
An extra turn granted to a fighter, identified by its own additional-turn id.
Kind struct · Area Game.Fight
An extra slot in TimelineRefreshEvent for a fighter who plays again.
READ IT LIKE THIS
1. AdditionalTurn.fighter_id is the fighter who plays this extra turn. 2. AdditionalTurn.additional_turn_id names this extra turn. When FightTurnEvent later starts a turn, its additional id tells you it is this slot rather than the fighter's regular turn. 3. An empty additional_turn_id is allowed; the client then keeps the slot but cannot look it up by id.
Not sent on its own — it travels inside Turn.additional_turn of TimelineRefreshEvent. proven
Used by
Turn Fields
#FieldTypeMeaningYou set it 1additional_turn_idstringIdentifies this extra turn; FightTurnEvent's additional id refers to it.
The client keys its additional-turn lookup by it; the timeline UI calls it additionalTurnId.never 2fighter_idint64The fighter who plays this extra turn. (fighter (entity) id)never
  • summary: An extra turn granted to a fighter, identified by its own additional-turn id.
  • area: Game.Fight
  • 35 vues
Honour points, the current grade's honour bounds, and the character's attackability status.
Kind struct · Area Game.Common
The honour half of AlignmentInformation.
honor is the character's honour points. honor_grade_floor and honor_next_grade_floor bound the current grade: the honour the grade started at and the honour that reaches the next one. A fresh character receives 0, 0 and 500.
attackable says whether other players may attack the character - see AttackableStatus. It is the member the aggression menu checks.
THE CURRENT CLIENT NEVER READS THE THREE HONOUR VALUES. It stores them and does nothing else, so treat them as informational: no client behaviour depends on them.
Not sent on its own — it is only ever carried by AlignmentInformation. inferred
Used by
AlignmentInformation Fields
#FieldTypeMeaningYou set it 1honorint32The character's honour points. (honour points)never 2honor_next_grade_floorint32The honour needed to reach the next grade. (honour points)
Observed: 500never 3attackableAttackableStatusWhether, and in which mode, other players may attack the character.
An AttackableStatus value.never 4honor_grade_floorint32The honour at which the current grade started. (honour points)never
  • summary: Honour points, the current grade's honour bounds, and the character's attackability status.
  • area: Game.Common
  • 36 vues
How an alliance relates to the viewer's own; carried only by FightTeamMembersInformation and never read by the client.
Kind enum · Area Game.Fight
The type of FightTeamMembersInformation.alliance_relation.
DO NOT BRANCH ON IT. No client code reads the member or this enum on any dumped build, so its values cannot be told apart and stay unnamed. Treat any value as "unknown".
Not sent on its own — an enum carried only as FightTeamMembersInformation.alliance_relation. proven
Used by
FightTeamMembersInformation No fields you may set.
  • summary: How an alliance relates to the viewer's own; carried only by FightTeamMembersInformation and never read by the client.
  • area: Game.Fight
  • 39 vues
Whether, and in which PvP or AvA mode, a character may be attacked.
Kind enum · Area Game.Common
The attackability carried by AlignmentExtendedInformation.attackable.
THE VALUES ARE NOT RECOVERED. The client compares the raw number in its aggression menu and alignment tab, but nothing in the dumps names a value, so every value keeps its obfuscated name. Do not map them by position.
Not sent on its own — an enum is never sent on its own. inferred
Used by
AlignmentExtendedInformation AllianceOption No fields you may set.
  • summary: Whether, and in which PvP or AvA mode, a character may be attacked.
  • area: Game.Common
  • 35 vues
An alliance as shown next to a fight team member: its uid and its tag.
Kind struct · Area Game.Fight
The FightTeamMemberCharacter.alliance_info record.
BasicAllianceInformation.alliance_uid is a GUID string: parse it as one. Show BasicAllianceInformation.alliance_tag beside the member's name.
Not sent on its own — it travels only inside FightTeamMemberInformation. proven
Used by
FightTeamMemberCharacter Fields
#FieldTypeMeaningYou set it 2alliance_uidstringThe alliance's unique id, a GUID in text form.
The client parses it with System.Guid(string).never 3alliance_tagstringThe alliance's short tag.
The other string the client keeps; it is the tag shown beside the member's name.never
  • summary: An alliance as shown next to a fight team member: its uid and its tag.
  • area: Game.Fight
  • 39 vues
A fighter picks up another fighter and carries it.
Kind struct · Area Game.Action
One step of a fight action (GameActionFightEvent): the action's GameActionFightEvent.source_id lifts CarryCharacter.target_id and carries it until a ThrowCharacter or a DropCharacter.
READ IT LIKE THIS
1. The carrier is the action's source; the carried fighter is CarryCharacter.target_id. 2. CarryCharacter.cell is a cell; when it is -1 the client ignores the whole action. 3. Remember who carries whom: the carried fighter moves with its carrier until it is thrown or dropped. 4. SEND NOTHING BACK.
Not sent on its own — it travels inside GameActionFightEvent.carry_character. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1target_idint64The fighter that is picked up. (fighter (entity) id)never 2cellint32A cell kept with the carry step; -1 makes the client ignore the action. (map cell id)never
  • summary: A fighter picks up another fighter and carries it.
  • area: Game.Action
  • 39 vues
How many times a spell was cast on one target fighter.
Kind struct · Area Game.Common
One entry of FightSpellCast.target_cast_counts or AbilityRefreshInfo.target_cast_counts.
READ IT LIKE THIS
1. CastCountOneSomeone.target_id: the target fighter. 2. CastCountOneSomeone.cast_count: how many times the spell was cast on it.
The record's other int64 and its map are never read by the client: ignore them.
Not sent on its own — it travels inside FightSpellCast.target_cast_counts. proven
Used by
AbilityRefreshInfo AbilityRefreshInfoTeam FightSpellCast Fields
#FieldTypeMeaningYou set it 2cast_countint32How many times the spell was cast on that target.
Checked against the spell level's maxCastPerTarget / maxGlobalCastPerTarget.never 4target_idint64The target fighter. (fighter (entity) id)
Key of the per-target count table.never
  • summary: How many times a spell was cast on one target fighter.
  • area: Game.Common
  • 40 vues
A fighter's appearance changes during the fight.
Kind struct · Area Game.Action
The change_look action of GameActionFightEvent: a fighter takes another appearance (a transformation, a disguise, an effect that changes its skin or size).
READ IT LIKE THIS
1. ChangeLook.target_id is the fighter whose appearance changes. 2. ChangeLook.look is its new EntityLook: replace the fighter's whole look with it. 3. SEND NOTHING BACK.
WHAT THE CLIENT DOES. Its fight sequencer queues a step that converts the look and applies it to the fighter's sprite when the step plays.
Not sent on its own — it travels inside GameActionFightEvent.change_look. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1lookEntityLookThe fighter's new appearance.
See EntityLook; it replaces the fighter's whole look.never 2target_idint64The fighter whose appearance changes. (fighter (entity) id)never
  • summary: A fighter's appearance changes during the fight.
  • area: Game.Action
  • 35 vues
A fighter now fights for another team.
Kind struct · Area Game.Action
The change_team action of GameActionFightEvent: the fighter that performs the action switches sides in the middle of the fight.
READ IT LIKE THIS
1. The fighter is the enclosing event's GameActionFightEvent.source_id; this record does not repeat it. 2. ChangeTeam.team is the Team it fights for from now on. 3. Move the fighter to that team in your fight state: from this action on it counts as an ally or an enemy accordingly. 4. SEND NOTHING BACK.
WHAT THE CLIENT DOES. Its fight sequencer queues a step that records the new team on the fighter's entity information and refreshes how the fighter is drawn.
Not sent on its own — it travels inside GameActionFightEvent.change_team. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1teamTeamThe team the fighter fights for from now on.
See Team. The client stores it as the fighter's new team; the fighter is the enclosing event's GameActionFightEvent.source_id.never
  • summary: A fighter now fights for another team.
  • area: Game.Action
  • 41 vues
A fighter dies during a fight action: who died.
Kind struct · Area Game.Action
The death branch of GameActionFightEvent: inside an action sequence, a fighter's life reached zero (or it was removed) and it dies.
WHAT TO DO WHEN YOU RECEIVE IT
1. Death.target_id is the fighter that dies. Mark it dead: it keeps its place in the timeline but will not play again (TimelineRefreshEvent lists it as slain). 2. Every summon whose summoner is that fighter dies with it; the client builds a death for each of them as well. 3. The enclosing event's source_id is who caused the death (the caster or the attacker); action_id says how. 4. SEND NOTHING BACK. Keep processing the sequence; the server acknowledges it with GameActionAcknowledgementRequest like any other action.
WHAT THE CLIENT DOES. Plays the fighter's death animation (AnimMort), removes it from the fight and writes "<fighter> is dead" in the fight log (ui.fight.isDead; ui.fight.leave when the fighter left the fight instead).
Not sent on its own — it travels inside GameActionFightEvent (death). proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 2target_idint64The fighter that dies. (fighter (entity) id)
The client hands it to its death step; the summons of that fighter die with it.never
  • summary: A fighter dies during a fight action: who died.
  • area: Game.Action
  • 34 vues
A fighter dodged an attempt to remove its action or movement points: which fighter and how many points it kept.
Kind struct · Area Game.Action
A dodged AP/MP removal: the payload of GameActionFightEvent.dodge_point_loss.
READ IT LIKE THIS
1. DodgePointLoss.target_id is the fighter that dodged. 2. GameActionFightEvent.action_id says what was dodged: 308 = AP, 309 = MP (any other id is ignored by the client: "Points dodge with unsupported action"). 3. DodgePointLoss.amount is how many points it dodged. Nothing changes on the fighter: this is information only.
WHAT THE OFFICIAL CLIENT DOES. It queues an AP-dodge or MP-dodge step; the fight log prints ui.fight.dodgeAP or ui.fight.dodgeMP.
Not sent on its own — it travels inside GameActionFightEvent.dodge_point_loss. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1target_idint64The fighter that dodged. (fighter (entity) id)never 2amountint32How many AP or MP were dodged (kept). (action or movement points)
Which points comes from GameActionFightEvent.action_id.never
  • summary: A fighter dodged an attempt to remove its action or movement points: which fighter and how many points it kept.
  • area: Game.Action
  • 39 vues
A carrier puts down the fighter it carries onto a cell.
Kind struct · Area Game.Action
One step of a fight action (GameActionFightEvent): the end of a CarryCharacter. The action's GameActionFightEvent.source_id is the carrier.
READ IT LIKE THIS
1. DropCharacter.target_id is the fighter that was carried; it is no longer carried after this step. 2. It is put on DropCharacter.cell. If that is not a valid cell of the map, the client uses the target cell of the spell being cast instead. 3. SEND NOTHING BACK.
WHAT THE CLIENT DOES. It plays the throw step: the carried fighter leaves its carrier and is placed on the cell.
Not sent on its own — it travels inside GameActionFightEvent.drop_character. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1cellint32Where the carried fighter lands. (map cell id)never 3target_idint64The fighter that was carried. (fighter (entity) id)never
  • summary: A carrier puts down the fighter it carries onto a cell.
  • area: Game.Action
  • 39 vues
One effect (buff or debuff) is removed from a fighter.
Kind struct · Area Game.Action
The effect_remove action of GameActionFightEvent: one effect ends on a fighter before its duration runs out (dispelled, consumed, replaced).
READ IT LIKE THIS
1. EffectRemove.target_id is the fighter that carries the effect. 2. Exactly one of the two members of EffectRemove.effect_selector is set: - EffectRemove.effect: the uid of the one effect to remove -- the same uid the effect was announced with (FightRemovableEffect's uid). Remove that effect. - EffectRemove.effect_id: an effect id; remove the fighter's effects with that id. 3. SEND NOTHING BACK. To remove everything one spell left on a fighter the server sends SpellRemove instead.
WHAT THE CLIENT DOES. Its fight sequencer queues a step that asks the buff service either to remove the buff with that uid from the fighter, or to remove the fighter's buffs matching the effect id. A negative uid means no particular buff.
Not sent on its own — it travels inside GameActionFightEvent.effect_remove. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 2target_idint64The fighter that carries the effect. (fighter (entity) id)never 1effectint32The uid of the one effect to remove.
The uid the effect was announced with (FightRemovableEffect). A negative value names no buff.never 3effect_idint32An effect id: remove the fighter's effects with that id.never
  • summary: One effect (buff or debuff) is removed from a fighter.
  • area: Game.Action
  • 34 vues
A companion fighter: its model, level and the fighter it belongs to.
Kind struct · Area Game.Common
The entity_fighter branch of FightFighterInformation.
entity_model_id is the companion template (look it up in the companions data), level its level, and master_id the id of the fighter it belongs to.
Other members may appear (a string the client copies verbatim); they have no canonical name yet.
THE EXTRA STRING IS NOT NAMED. Recent builds add a string the client shows inside a localized label for the entity (most likely its owner's name, as in "{0}'s sidekick"), but the label's key is encrypted in the client, so its meaning is not proven. Display it if you need a label; do not rely on what it contains.
Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred
Used by
FightFighterInformation Fields
#FieldTypeMeaningYou set it 2master_idint64The fighter this companion belongs to. (fighter id)never 3levelint32The companion's level. (level)never 4entity_model_idint32The companion template. (companion id)never
  • summary: A companion fighter: its model, level and the fighter it belongs to.
  • area: Game.Common
  • 34 vues
The server confirms that your NPC-shop purchase went through. It carries nothing.
Kind event · Area Game.Exchange
THE SUCCESS ANSWER TO ExchangeBuyRequest, AND IT IS EMPTY.
By the time it arrives the purchase is already applied: the server sends the kamas, the new or grown stack and the new weight first, then this event, then the kamas and weight once more. Update your state from those messages, not from this one.
WHAT TO DO WHEN YOU RECEIVE IT
1. MARK THE OUTSTANDING PURCHASE AS DONE. It names neither the item nor the quantity, so send purchases one at a time. 2. SEND NOTHING BACK.
The current client does nothing visible with it: its handler raises an empty internal notification that nothing listens to. Older clients (up to 3.4.18.19) had their old shop panel react to it, in a handler named OnBuyOk.
PADDING. Most builds give it one or two members (a map, a string, a nested record...). The client never reads them; ignore them.
When you may send it
Requires exchange_open inferred Related messages
Arrives after ExchangeBuyRequest
  • summary: The server confirms that your NPC-shop purchase went through. It carries nothing.
  • area: Game.Exchange
  • 34 vues
Buy a number of one item from the NPC shop you have open.
Kind request · Area Game.Exchange
Buys ExchangeBuyRequest.quantity units of one item from the NPC shop that ExchangeNpcShopStartedEvent opened.
HOW TO SEND IT
1. PICK AN ITEM FROM THE SHOP'S STOCK. Copy its ItemMinimalInformation.object_gid into ExchangeBuyRequest.object_uid. Despite its name the field carries the item's TEMPLATE id, not the unique id of an object you own. 2. CHECK THAT YOU MAY BUY IT: its ItemToSellInNpcShop.buy_criterion, and the remaining allowance when ItemToSellInNpcShop.total_buyable is positive. 3. CHECK THAT YOU CAN PAY: ItemToSellInNpcShop.price times the quantity, in kamas or in the shop's token. 4. SEND IT with the quantity you want.
WHAT CAME BACK IN THE CAPTURE
A text notification (message 252; its parameters began with the template id and ended with the quantity and the price), KamasUpdateEvent, ObjectAddedEvent with the new object, InventoryWeightEvent, ExchangeBoughtEvent, then the same kamas and weight again. A stack you already held grows through ObjectQuantityEvent instead of ObjectAddedEvent.
When you may send it
Requires exchange_open inferred Raised by: a user action: the player buys an item in the NPC shop window, directly or by confirming the buy popup proven Related messages
You will then receive ExchangeBoughtEvent observed — the success answer, after the kamas, inventory and weight updates; 2 of 2 purchases Fields
#FieldTypeMeaningYou set it 1quantityint32How many units to buy.
Observed: 1
The client's quantity selector starts at 1.required 2object_uidint32The template id of the item to buy, as listed in the shop's stock. (item template id)
Observed: 6765
Despite the name it is NOT a unique object id: send the entry's ItemMinimalInformation.object_gid.required
  • summary: Buy a number of one item from the NPC shop you have open.
  • area: Game.Exchange
  • 39 vues
The server opened an NPC shop: which NPC sells, in which currency, and what it has on its shelf with prices and purchase limits.
Kind event · Area Game.Exchange
The server has opened an NPC SHOP for your character, typically in answer to the NPC's buy/sell action (NpcGenericActionRequest with that action). You are now in an exchange with the shop until it closes.
WHAT TO DO WHEN YOU RECEIVE IT
1. RECORD THE SELLER. ExchangeNpcShopStartedEvent.npc_seller_id is the NPC's actor id on the current map, the same id you used to talk to it. 2. RECORD THE CURRENCY. ExchangeNpcShopStartedEvent.token_id is 0 when prices are in kamas. Otherwise it is the template id of the token item the shop takes, and every price is a number of those tokens. 3. READ THE STOCK. ExchangeNpcShopStartedEvent.objects lists the items on sale: template and effects in ItemMinimalInformation, price and purchase allowance in ItemToSellInNpcShop. The client shows only entries that carry the shop branch; skip the others. 4. SEND NOTHING BACK. The client builds no request from it.
WHAT THE OFFICIAL CLIENT DOES WITH IT
- Converts every stock entry into a shop entry (template, effects, price, criterion, allowance) and hands the list, the seller id and the currency to its exchange service. - The service looks the seller up among the map's actors to draw its portrait, builds a display item for each entry, and opens the shop window. - The window shows your kamas, or how many tokens you hold in a token shop, and can hide what you cannot buy.
PADDING. Several builds add an unread member (an int64, a string, or an int64 and an int32). Use the recovered names, never the field order.
When you may send it
Requires character_loaded inferred State it changes
Establishes exchange_open inferred — the client hands the shop to its exchange service, which records the started exchange and opens the shop window Related messages
Arrives after NpcGenericActionRequest Reply not yet recovered: buying, selling and closing the shop are not recovered here; none of those messages has a signature yet. Fields
#FieldTypeMeaningYou set it 1npc_seller_idint64The selling NPC's actor id on the current map. (entity id)
Observed: -20000
The same id as the NPC you sent NpcGenericActionRequest to; the client looks the actor up by it to draw the seller's portrait.never 2token_idint32The currency of the shop: 0 for kamas, otherwise the template id of the token item every price is counted in. (item template id)
Observed: 0never 3objectsrepeated ItemMinimalInformationThe items on sale, one entry per item.
Element type ItemMinimalInformation; its ItemMinimalInformation.item_to_sell_in_npc_shop carries the price and allowance. The client skips entries without it.never
  • summary: The server opened an NPC shop: which NPC sells, in which currency, and what it has on its shelf with prices and purchase limits.
  • area: Game.Exchange
  • 40 vues
The caster and a target fighter swap places.
Kind struct · Area Game.Action
One step of a fight action (GameActionFightEvent): two fighters exchange their cells.
READ IT LIKE THIS
1. The caster is the action's GameActionFightEvent.source_id; ExchangePositions.target_id is the other fighter. 2. Put the caster on ExchangePositions.caster_cell_id and the target on ExchangePositions.target_cell_id. Do not assume they are each other's old cells. 3. SEND NOTHING BACK.
Not sent on its own — it travels inside GameActionFightEvent.exchange_positions. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1target_idint64The fighter the caster swaps places with. (fighter (entity) id)never 2caster_cell_idint32The cell the caster ends on. (map cell id)never 3target_cell_idint32The cell the target ends on. (map cell id)never
  • summary: The caster and a target fighter swap places.
  • area: Game.Action
  • 35 vues
A spell script plays on a cell: which script, for which spell and rank, critical or not.
Kind struct · Area Game.Action
The execute_script action of GameActionFightEvent: the server makes the caster (GameActionFightEvent.source_id) play a spell's scripted visual without a regular cast.
READ IT LIKE THIS
1. ExecuteScript.script_usage_id: which spell-script usage to play. 2. ExecuteScript.spell_id and ExecuteScript.spell_rank: the spell and its rank (grade) the script belongs to. 3. ExecuteScript.cell: the cell it plays on; ExecuteScript.critical: whether it is the critical-hit version. 4. SEND NOTHING BACK. It is visual; game effects arrive as their own actions.
WHAT THE CLIENT DOES. It builds a spell-cast context (caster, cell, critical, spell data and rank), makes it the sequence's current cast, and asks its spell-script player for the usage.
Not sent on its own — it travels inside GameActionFightEvent.execute_script. proven
Used by
GameActionFightEvent Fields
#FieldTypeMeaningYou set it 1spell_idint32The spell the script belongs to. (spell id)
Looked up in the spells table.never 2spell_rankint32The spell's rank (grade).
Used to pick the spell's level data.never 3script_usage_idint32The spell-script usage to play.
Handed to the client's spell-script player.never 4criticalboolSet for the critical-hit version.
Becomes the cast context's critical flag.never 5cellint32The cell the script plays on. (cell id)
Stored where a regular cast stores its target cell.never
  • summary: A spell script plays on a cell: which script, for which spell and rank, critical or not.
  • area: Game.Action
  • 38 vues
One new buff or debuff, applied as a step of the fight action being played.
Kind event · Area Game.Fight
Adds ONE fight effect (buff or debuff) to a fighter, as part of the action being played.
WHAT TO DO WHEN YOU RECEIVE IT
1. Read FightBoostAddEvent.effect (FightRemovableEffectExtendedInformation): the effect itself, the action that applied it and the fighter who cast it. The target is inside the effect. 2. Apply it in ORDER with the other events of the current action (after the cast that caused it): it is one step of that action, not an immediate change. 3. SEND NOTHING BACK.
WHEN IT ARRIVES. In a 3.7.10.10 capture it followed a spell cast (GameActionFightEvent, spell 12718): a buff from that spell on the caster, action 792, cast by the caster.
WHAT THE OFFICIAL CLIENT DOES. The fight sequence service builds the buff from (action, caster, effect) and queues a step holding it (its debug printer shows m_buff); the buff is added when the step runs.
When you may send it
Requires character_loaded inferred Related messages
Unsolicited - nothing you send causes this the server sends it while it plays an action that applies an effect; no request asks for it Fields
#FieldTypeMeaningYou set it 1effectFightRemovableEffectExtendedInformationThe new effect, the action that applied it and the fighter who cast it.
Applied as a step of the action being played.never
  • summary: One new buff or debuff, applied as a step of the fight action being played.
  • area: Game.Fight
  • 34 vues
Removes one buff or debuff from a fighter, as a step of the fight action being played.
Kind event · Area Game.Fight
Takes ONE fight effect (buff or debuff) away from a fighter. It is the counterpart of FightBoostAddEvent: that one adds a buff as a step of the current action, this one removes one the same way.
WHAT TO DO WHEN YOU RECEIVE IT
1. Find the fighter FightBoostRemoveEvent.target_id and, on it, the buff whose id is FightBoostRemoveEvent.buff_id: the uid the buff was created with (FightRemovableEffect.uid in FightBoostAddEvent, FightBoostSynchronizeEvent or a fight join). 2. Remove it IN ORDER with the other events of the action being played (between SequenceStartEvent and SequenceEndEvent): it is one step of that action, not an immediate change. 3. A buff id you do not hold changes nothing; a negative buff id means "no buff". 4. SEND NOTHING BACK.
EXAMPLE. buff_id 2, target_id -1: remove buff #2 from fighter -1 (a negative id is not a player; it is usually a monster).
WHAT THE OFFICIAL CLIENT DOES
The fight sequence service turns buff_id into a BuffId (a negative value gives the 'none' id) and queues a removal step holding (target_id, BuffId). When the step plays, it looks the buff up on that fighter; if it exists, the buff's end sequence plays first; then the buff is removed from the fighter and the fight UI is refreshed. If the buff is not found, the step just removes nothing and ends.
RELATED
- FightBoostAddEvent: adds one buff, as a step of the current action. - FightBoostSynchronizeEvent: the full buff list; it adds, updates and removes buffs at once, immediately. - GameActionFightEvent.effect_remove / GameActionFightEvent.spell_remove: removals that a fight action itself carries (dispels).
When you may send it
Requires character_loaded inferred Raised by: a buff of a fighter ends on the server (its duration runs out, it is dispelled or consumed) inferred Related messages
Unsolicited - nothing you send causes this pushed by the server during a fight (seen in a 3.7.10.10 capture); no request asks for it Nothing answers it - send it and move on the client only removes the buff; nothing is sent back Fields
#FieldTypeMeaningYou set it 1buff_idint32The buff to remove: its uid. (buff uid)
The uid the buff was created with; a negative value means no buff.never 2target_idint64The fighter carrying the buff. (fighter (entity) id)never
  • summary: Removes one buff or debuff from a fighter, as a step of the fight action being played.
  • area: Game.Fight
  • 38 vues

Compte

Navigation

Recherche

Recherche

Configurer les notifications push du navigateur

Chrome (Android)
  1. Appuyez sur l'icône de cadenas à côté de la barre d'adresse.
  2. Tap Autorisations → Notifications.
  3. Ajustez vos préférences.
Chrome (Desktop)
  1. Cliquez sur l'icône représentant un cadenas dans la barre d'adresse..
  2. Select Paramètres du site.
  3. Find Notifications et ajustez vos préférences.