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.

Smooth

Administrateurs
  • Adhésion

  • Dernière visite

Tout ce qui a été publié par Smooth

  1. How many times triggered effects have fired on their fighters; updates the counter of each matching buff. Kind event · Area Game.Action Updates the trigger counter of buffs (effects that fire when something happens, a limited number of times). WHAT TO DO WHEN YOU RECEIVE IT 1. For each entry of GameActionUpdateEffectTriggerCountEvent.effects_count_on_target (FightEffectTriggerCount): a. take the buffs of the fighter FightEffectTriggerCount.target_id; b. find the buff whose spell effect has the uid FightEffectTriggerCount.effect_id; c. set that buff's trigger count to FightEffectTriggerCount.count (replace, do not add). 2. An entry that matches no buff changes nothing. 3. SEND NOTHING BACK. WHEN IT ARRIVES. In a 3.7.10.10 capture it carried one entry right after a buff was added during the player's turn: count 1 for the player's own buff of effect uid 250172. WHAT THE OFFICIAL CLIENT DOES. The fight buff handler asks the buff service for the target's buffs and, among the buffs of one kind, writes the count into the one whose effect (EffectInstanceData.effectUid) matches. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server pushes it when a triggered effect fires; no request asks for it Fields #FieldTypeMeaningYou set it 1effects_count_on_targetrepeated FightEffectTriggerCountOne trigger count per (fighter, effect). Each entry updates one buff's trigger counter.never
  2. Smooth a posté un record dans Types
    One item inside an action-item announcement: its effects, plus integral members that are deliberately left unnamed. Kind struct · Area Game.Inventory This name is not Ankama's. It was chosen for this documentation from proven client behaviour, and is a label rather than protocol documentation. One item listed by a GameActionItem in an action-item announcement. It is a display description, not an inventory record. THE NAME IS OURS. No Ankama source names this record: it has no nested type, so the client's type-name table does not list it, and it postdates both beta and the 3.2 name map. Do not confuse it with ItemMinimalInformation, the NPC-shop item record, which beta's older GameActionItem used to carry. ONLY effects IS NAMED HERE, AND THAT IS DELIBERATE. The record carries integral members whose values the client does pass into its item factory, but telling the template id apart from the quantity needs a role proof this signature does not have. They stand with their obfuscated names; do not read meaning into their position. If you need the real quantity or template id of something you were just given, read it from the inventory - see InventoryContentEvent - rather than from here. A repeated bool member is likewise untouched: it may be a decoy or protocol state the game has not started using. Not sent on its own — it is only ever reached inside GameActionItem.items. inferred Used by GameActionItem Fields #FieldTypeMeaningYou set it 3effectsrepeated ObjectEffectThe effects the item carries. Element type ObjectEffect - branch on its oneof.never
  3. Smooth a posté un record dans Events
    One action played during a fight: who did it, which action it is, and the payload of exactly one action kind (spell cast, damage, movement, death, summon...). Kind event · Area Game.Action The building block of fight playback. Each event is ONE action of the fight: a spell cast, life points lost, a fighter pushed or teleported, a death, a summon, a glyph set or triggered, a look change... It nearly always arrives between a SequenceStartEvent and the matching SequenceEndEvent, with the other actions of the same sequence. WHAT TO DO WHEN YOU RECEIVE IT 1. Read GameActionFightEvent.source_id: the fighter who performs the action (the caster, the attacker, the thrower, the killer...). 2. Read GameActionFightEvent.action_id: the effect/action id from the game data (ActionId). It tells variants of one kind apart: 300 is a spell cast, and the points-variation and dodge kinds use it to say WHICH points (AP or MP) changed. 3. Exactly one member of the GameActionFightEvent.action oneof is set. Branch on it and apply that kind (see each member below and its record type). 4. Apply the actions in arrival order: they are the sequence's playback script. 5. SEND NOTHING for this event. Acknowledge the whole sequence once, after SequenceEndEvent, with GameActionAcknowledgementRequest. WHAT THE OFFICIAL CLIENT DOES. The fight sequence service switches on the action kind and turns each one into a playback step (a death step, a slide step, a teleport step, a life-change step...) that it queues in the current sequence; the steps then play one after the other (animations, floating numbers, state updates). CAPTURE (3.7.10.10, 2026-10-14). A spell cast on yourself: action_id 300, source_id your character, GameActionFightEvent.targeted_ability set (cell 370, target yourself, spell 12718). When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server streams these during the playback of a fight action sequence; no request asks for them Fields #FieldTypeMeaningYou set it 22action_idint32The action's id from the game data (ActionId): which effect this is. 300 is a spell cast. The client converts it to its ActionId type and hands it to the step builders; the points-variation and dodge kinds use it to tell AP from MP.never 36source_idint64The fighter who performs the action (caster, attacker, thrower, killer, summoner...). (fighter (entity) id)never 1change_teamChangeTeamThe action's source switches to another team (it changes sides): ChangeTeam.never 2targeted_abilityTargetedAbilityA fighter casts a spell or hits with its weapon: TargetedAbility says on which cell and target, and which spell or weapon.never 3deathDeathA fighter dies: Death says which (its summons die with it). The fight log shows ui.fight.isDead.never 4exchange_positionsExchangePositionsSet when the action's source and another fighter swap places: see ExchangePositions. The client moves both fighters to their new cells in one step.never 5slideSlideSet when a fighter is pushed or pulled along a line: see Slide. The client animates the fighter from the start cell to the end cell.never 6modify_effects_durationModifyEffectsDurationThe remaining duration of every effect on a fighter changes. See ModifyEffectsDuration. The client shifts the end turn of each of the fighter's buffs by the delta; the fight log prints ui.fight.effectsModifyDuration.never 7spell_removeSpellRemoveSet when the action ends every effect one spell left on a fighter: see SpellRemove.never 8reflect_damagesReflectDamagesA fighter sends damage back to its attacker: ReflectDamages.never 9mark_cellsMarkCellsA mark (glyph, trap, wall, portal, rune) is laid on the map: MarkCells.never 10carry_characterCarryCharacterSet when the action's source picks up another fighter: see CarryCharacter. The client attaches the carried fighter to its carrier until a throw or a drop.never 11reduce_damagesReduceDamagesA fighter reduced the damage it was about to take. See ReduceDamages. The fight log prints ui.fight.reduceDamages.never 12summonsSummonsFighters join the fight (summons, invocations, companions): Summons.never 13points_variationPointsVariationA fighter's action points (AP) or movement points (MP) change. See PointsVariation. GameActionFightEvent.action_id says which points and how: AP lost / used / won, MP lost / used / won. The fight log prints ui.fight.lostAP, winAP, lostMP or winMP.never 14invisibilityInvisibilityA fighter becomes invisible, detected or visible again: Invisibility.never 15invisible_detectedInvisibleDetectedAn invisible fighter is revealed for a moment on a cell (the client shows a ghost there): InvisibleDetected.never 17change_lookChangeLookA fighter's appearance changes (transformation, costume): ChangeLook carries the new look.never 18tackledTackledThe action's source is tackled while leaving a cell: Tackled. The fight log shows ui.fight.dodgeFailed.never 19remove_hit_boxRemoveHitBoxSet when a fighter's body stops covering a cell: see RemoveHitBox. The client removes the cell from the source fighter's hitbox.never 20teleport_on_same_mapTeleportOnSameMapSet when a fighter is teleported to another cell of the map: see TeleportOnSameMap. The client moves the fighter to the cell with a teleport step.never 21trigger_glyph_trapTriggerGlyphTrapA mark fires on a fighter: TriggerGlyphTrap.never 23dodge_point_lossDodgePointLossA fighter dodged an attempt to remove its AP or MP. See DodgePointLoss. GameActionFightEvent.action_id says whether AP or MP were dodged; the fight log prints ui.fight.dodgeAP or ui.fight.dodgeMP.never 24activate_glyph_trapActivateGlyphTrapA mark is switched on or off: ActivateGlyphTrap.never 25execute_scriptExecuteScriptA spell script plays without a regular cast (a trap or glyph effect, a scripted animation): ExecuteScript.never 26vanishVanishA fighter disappears from the map without dying: Vanish.never 27throw_characterThrowCharacterSet when a carrier throws the fighter it carries onto a cell: see ThrowCharacter. The client plays the throw animation, releases the carried fighter and lands it on the cell.never 28reflect_spellReflectSpellA fighter sends a spell back to its caster: ReflectSpell.never 29drop_characterDropCharacterSet when a carrier puts the fighter it carries down on a cell: see DropCharacter. If the cell is not a valid map cell, the client uses the target cell of the spell being cast instead.never 30unmark_cellsUnmarkCellsA mark is removed from the map: UnmarkCells.never 31effect_removeEffectRemoveSet when the action ends one effect on a fighter: see EffectRemove. Before 3.4.18.19 (and in beta) this was not a branch of its own: it was the effect_remove alternative inside SpellRemove.never 33spell_immunitySpellImmunityA fighter is immune to the spell: SpellImmunity.never 34stagingStagingA staging (camera / screen effect) sequence plays: Staging.never 35killKillThe action's source kills a fighter: Kill says which. The fight log shows ui.fight.killed.never 37life_points_lostLifePointsLostA fighter loses life points: damage, with the shield points it absorbed. See LifePointsLost. The client queues a shield-loss step when shield points were lost, then a life step; its fight log prints ui.fight.lifeLoss / ui.fight.lostShieldPoints.never 38add_hit_boxAddHitBoxSet when a fighter's body grows to cover one more cell: see AddHitBox. The client adds the cell to the source fighter's hitbox (the cells it occupies).never 39life_points_gainLifePointsGainA fighter is healed. See LifePointsGain. The client queues a life step with the gained amount; its fight log prints ui.fight.lifeGain.never 40steal_kamaStealKamaThe source fighter steals kamas from another fighter. See StealKama. The fight log prints ui.fight.stealMoney.never
  4. Smooth a posté un record dans Types
    A tax collector member of a fight team, named by its two name ids. Kind struct · Area Game.Fight The FightTeamMemberInformation.tax_collector_member record. TO SHOW IT, resolve FightTeamMemberTaxCollector.first_name_id in the first-name table and FightTeamMemberTaxCollector.last_name_id in the name table, and join them with a space. The client shows a tax collector at level 200 regardless of anything here. Not sent on its own — it travels only inside FightTeamMemberInformation. proven Used by FightTeamMemberInformation Fields #FieldTypeMeaningYou set it 1first_name_idint32Id of the tax collector's first name. Resolved in the tax-collector first-name table.never 2last_name_idint32Id of the tax collector's last name. Resolved in the tax-collector name table.never
  5. Smooth a posté un record dans Types
    A monster member of a fight team: which monster, at which grade. Kind struct · Area Game.Fight The FightTeamMemberInformation.monster_member record. TO SHOW IT, look FightTeamMemberMonster.monster_id up in the monster table and take its FightTeamMemberMonster.grade; the grade gives the level the client displays. The record carries no level of its own. Not sent on its own — it travels only inside FightTeamMemberInformation. proven Used by FightTeamMemberInformation Fields #FieldTypeMeaningYou set it 1monster_idint32The monster template id. (monster template id) The tooltip looks it up in the monster table.never 2gradeint32The monster's grade within its template. The tooltip asks the monster template for this grade and shows that grade's level.never
  6. Smooth a posté un record dans Types
    One member of a fight team: its id plus exactly one kind-specific record (character, entity, monster or tax collector). Kind struct · Area Game.Fight One entry of FightTeamMembersInformation.team_members. HOW TO READ IT 1. Take FightTeamMemberInformation.member_id: the fighter's id, the same id the fight later uses for that fighter. 2. Look at which member of FightTeamMemberInformation.information is set; exactly one is: - FightTeamMemberInformation.character_member: a player character, with name, level and optional alliance (FightTeamMemberCharacter); - FightTeamMemberInformation.monster_member: a monster, by monster template id and grade (FightTeamMemberMonster); - FightTeamMemberInformation.tax_collector_member: a tax collector, by its two name ids (FightTeamMemberTaxCollector); - FightTeamMemberInformation.entity_member: a companion-like entity owned by another member (FightTeamMemberEntity). 3. If none is set, the client still keeps the member, by id only. The map's fight tooltip (the swords) is built from these entries: monsters are named from the monster table at the given grade, tax collectors from their name tables, entities from the companion table, characters from their own name. Not sent on its own — it travels only as an entry of FightTeamMembersInformation.team_members. proven Used by FightTeamMembersInformation Fields #FieldTypeMeaningYou set it 3member_idint64The member's fighter id. (entity id) Copied into every client team-member object; the tooltip uses it to attach a companion to its owner.never 1monster_memberFightTeamMemberMonsterSet when the member is a monster. Identified as the branch whose members the tooltip hands to the monster table and its grade lookup.never 2tax_collector_memberFightTeamMemberTaxCollectorSet when the member is a tax collector. Identified as the branch whose members the tooltip looks up in the tax-collector first-name and name tables.never 4entity_memberFightTeamMemberEntitySet when the member is an entity owned by another fighter (a companion). Identified as the branch whose model id the tooltip looks up in the companion table.never 5character_memberFightTeamMemberCharacterSet when the member is a player character. Identified as the branch whose alliance uid the client parses as a Guid.never
  7. Smooth a posté un record dans Types
    An entity member of a fight team (a companion), with its model, level and owner. Kind struct · Area Game.Fight The FightTeamMemberInformation.entity_member record. TO SHOW IT, look FightTeamMemberEntity.entity_model_id up in the companion table and attach the entity to the team member whose id is FightTeamMemberEntity.master_id. Not sent on its own — it travels only inside FightTeamMemberInformation. proven Used by FightTeamMemberInformation Fields #FieldTypeMeaningYou set it 1levelint32The entity's level. The remaining int32 the client copies into its object after the model id; no later code reads it in the dumped builds.never 2master_idint64Fighter id of the member that owns this entity. (entity id) The tooltip attaches the entity to the preceding fighter whose id equals this value.never 3entity_model_idint32Which companion model this entity is. (companion id) The tooltip looks it up in the companion table.never
  8. Smooth a posté un record dans Types
    A player-character member of a fight team: name, level and optional alliance. Kind struct · Area Game.Fight The FightTeamMemberInformation.character_member record. TO SHOW IT, use FightTeamMemberCharacter.name and FightTeamMemberCharacter.level directly. When FightTeamMemberCharacter.alliance_info is set, show its tag (BasicAllianceInformation.alliance_tag). Not sent on its own — it travels only inside FightTeamMemberInformation. proven Used by FightTeamMemberInformation Fields #FieldTypeMeaningYou set it 2namestringThe character's name. The record's only string the client copies.never 3levelint32The character's level. The record's only int32 the client copies.never 4alliance_infoBasicAllianceInformationThe character's alliance, when it has one. Absent means no alliance; the client then builds the member without one.never
  9. Smooth a posté un record dans Types
    The placement cells of the two sides of a fight: one list for the attackers, one for the defenders. Kind struct · Area Game.Fight.Preparation Two lists of map cell ids: where each side of a fight may stand before it starts. It travels inside FightPlacementPossiblePositionsEvent.starting_positions (and in the fight-map preview the spectator window shows). THE CHALLENGERS ARE THE ATTACKERS. FightStartingPositions.challengers_positions holds the cells of the side that started the fight - the side of FightStartingEvent.attacker_id. When your character attacks a monster group, your cell is in this list and the monsters' cells are in FightStartingPositions.defenders_positions. Do not pick a list by its field number or its position in the message. TO PLACE YOUR CHARACTER 1. Take the list of your side (challengers if your side attacked). 2. Send FightPlacementPositionRequest with one of its cells. The client draws both lists, each in its own colour, whatever your side. Not sent on its own — it travels inside FightPlacementPossiblePositionsEvent.starting_positions and the fight-map preview data. proven Used by FightPlacementPossiblePositionsEvent Fields #FieldTypeMeaningYou set it 1defenders_positionsrepeated int32Cells the attacked side may be placed on. (map cell ids) When your character attacks a monster group, the monsters stand on these cells.never 2challengers_positionsrepeated int32Cells the attacking side may be placed on. (map cell ids) The side that started the fight; when your character attacks, your own starting cell is in this list.never
  10. Smooth a posté un record dans Types
    A spell of a fighter and the number of turns before it can be cast again. Kind struct · Area Game.Common One entry of RefreshSpellCastStateEvent.spell_cool_downs. READ IT LIKE THIS 1. FightSpellCoolDown.spell_id: the spell. 2. FightSpellCoolDown.cool_down: turns left before the fighter can cast it again (63: it can no longer be cast at all). The record's enum is never read by the client: ignore it. Not sent on its own — it travels inside RefreshSpellCastStateEvent.spell_cool_downs. proven Used by RefreshSpellCastStateEvent Fields #FieldTypeMeaningYou set it 2cool_downint32Turns left before the spell can be cast again. (turns) Becomes the spell's cooldown for the fighter; the client never counts it down by itself. 63 is not a number of turns: the client treats the spell as no longer castable.never 3spell_idint32The spell on cooldown. (spell id)never
  11. Smooth a posté un record dans Types
    A cast's outcome: normal, critical hit, or the third outcome. The type is named; its values are not. Kind enum · Area Game.Action The type of TargetedAbility.critical. THE VALUES ARE NOT NAMED HERE. Beta declares NORMAL = 0, CRITICAL_HIT = 1, CRITICAL_FAIL = 2; enum numbers are not trusted across builds. What the 3.x client does: value 0 is the ordinary cast (an absent field), value 1 sets the cast context's critical-hit flag, value 2 sets another flag and the cast is then NOT counted in the caster's cast counters; the cast step and the critical-effect step receive the value as their outcome. Not sent on its own — an enum is never sent on its own. inferred Used by TargetedAbility No fields you may set.
  12. Smooth a posté un record dans Types
    How many times a fighter has cast one spell, in total and on each target. Kind struct · Area Game.Common One entry of RefreshSpellCastStateEvent.cast_counts or RefreshSpellCastStateEvent.global_cast_counts. READ IT LIKE THIS 1. FightSpellCast.spell_id: the spell. 2. FightSpellCast.cast_count: how many times it was cast. 3. FightSpellCast.target_cast_counts: the same count per target fighter (CastCountOneSomeone). 4. Replace (do not add to) the stored values of that spell. In the global list only cast_count matters; the client ignores the per-target list there. Not sent on its own — it travels inside RefreshSpellCastStateEvent.cast_counts. proven Used by RefreshSpellCastStateEvent Fields #FieldTypeMeaningYou set it 1target_cast_countsrepeated CastCountOneSomeoneHow many times the spell was cast on each target. One record per target fighter; checked against maxCastPerTarget / maxGlobalCastPerTarget. Ignored for entries of the global list.never 2cast_countint32How many times the spell was cast. In cast_counts: checked against the spell level's maxCastPerTurn; in global_cast_counts: against maxGlobalCastPerTurn.never 3spell_idint32The spell these counts are for. (spell id) Must be the spell of the counters it updates; the client rejects it otherwise.never
  13. One active fight effect (buff or debuff) together with the action that applied it and the fighter who cast it. Kind struct · Area Game.Common One entry of a fight's effect list: the effect itself plus who applied it and through which action. It travels in lists sent when a fight is joined or resumed, in the buff-list refresh sent at fight start (empty in a fresh fight), and on its own when a single effect is applied. TO BUILD THE BUFF LIST OF A FIGHTER 1. Read FightRemovableEffectExtendedInformation.effect: its FightRemovableEffect.target_id is the fighter that carries the effect, its FightRemovableEffect.uid identifies it. 2. FightRemovableEffectExtendedInformation.source_id is the fighter who applied it - not the carrier. 3. FightRemovableEffectExtendedInformation.action_id is the effect action (the effect type id of the game data), not a spell id. When a list replaces the whole buff state, drop every buff whose uid is not in the list: the client does exactly that. Not sent on its own — a record carried inside fight messages, never sent on its own. proven Used by FightBoostAddEvent FightBoostSynchronizeEvent Fields #FieldTypeMeaningYou set it 1effectFightRemovableEffectThe effect itself: what it does, to whom, for how long. Its carrier is the effect's target_id, not this entry's source_id.never 2action_idint32The effect action (effect type id of the game data) that applied this effect. (effect action id) The client converts it to its ActionId enum before building the buff.never 3source_idint64The fighter who applied the effect. (fighter id) Becomes the buff's caster; the carrier is the effect's target_id.never
  14. Smooth a posté un record dans Types
    A buff or debuff on a fighter: which spell and spell effect it comes from, who carries it, and its id. Kind struct · Area Game.Common One effect currently applied to a fighter. It always arrives wrapped in FightRemovableEffectExtendedInformation, which adds the caster and the effect action. THE UID IS THE KEY. FightRemovableEffect.uid identifies the effect for its whole life: later updates, removals and full refreshes refer to it, and a refresh list replaces every effect whose uid it does not contain. A negative uid means "no id". TO DESCRIBE THE EFFECT 1. Look up FightRemovableEffect.spell_id in the spell data, at the level the record also carries (the int32 passed beside the spell id). 2. In that spell level, find the effect whose effect uid is FightRemovableEffect.effect_id: that gives the visible effect. 3. FightRemovableEffect.target_id is the fighter that carries it. Since 3.3 the record is flat: the per-kind sub-records of older builds (boost, spell immunity, triggered effect) are gone, replaced by three int32 effect parameters, two turn records (start and end of the effect), a critical flag, a 4-value dissipation enum, a 9-value effect-kind enum and a trigger string. Those members stay unnamed here: no reference build names the flat layout. Not sent on its own — it travels inside FightRemovableEffectExtendedInformation.effect. proven Used by FightRemovableEffectExtendedInformation Fields #FieldTypeMeaningYou set it 5uidint32Identifier of this effect instance for its whole life. (buff id) Negative means no id. Refreshes, updates and removals refer to it.never 6effect_idint32Which effect of that spell level this is. (spell effect uid) Matched against the effect uids of the spell level's effects.never 8target_idint64The fighter that carries the effect. (fighter id) Not the caster: that is the wrapper's source_id.never 16spell_idint32The spell the effect comes from. (spell id) The client's own log names it: 'Spell #{0} from buff #{1} seems unknown'.never
  15. Smooth a posté un record dans Types
    A mutant fighter's power level. Kind struct · Area Game.Common The mutant_information branch of NamedFighterInformation. power_level is the mutant's power level; the client stores it where a monster's grade goes. Recent builds add a member the client resolves as a monster template; it has no canonical name yet. Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred Used by NamedFighterInformation Fields #FieldTypeMeaningYou set it 2power_levelint32The mutant's power level. (power level)never
  16. Smooth a posté un record dans Events
    Where the fight map really is: its map id, subarea and, for an ordinary map, its world coordinates. Kind event · Area Game.Gamemap Sent while a fight is being set up, so the client can show where the fight takes place. A fight runs on its own map: the map id is that fight map's id, the same value as MapCurrentEvent.map_id and the one to echo in ContextReadyRequest.map_id. USE THESE COORDINATES, NOT A LOOKUP. When FightMapInformationEvent.coordinates is set, the client takes the map's world position from it instead of looking the fight map up in its map data. A script that converts the map id itself shows the wrong place. Read FightMapInformationEvent.subarea_id for the subarea name and treat the complement as optional: at most one of coordinates or anomaly information is set. When you may send it Requires context_ready observed Related messages Unsolicited - nothing you send causes this the server sends it with the other fight-placement events Fields #FieldTypeMeaningYou set it 3map_idint64Id of the map the fight takes place on. (map id) Same value as MapCurrentEvent.map_id during the fight; echo it in ContextReadyRequest.map_id.never 5subarea_idint32Subarea the fight map belongs to. (subarea id) Look it up in the subarea data for the area name.never 1coordinatesMapCoordinatesWorld coordinates to show for the fight map. Element type MapCoordinates. When set, it replaces the position the client would derive from the map id.never 4anomaly_informationMapComplementaryAnomalyInformationAnomaly details when the fight map is an anomaly map. Same record as MapComplementaryInformationEvent.anomaly_information. Named from that type only: no dumped client reads it here, so it stays obfuscated on builds where that record is not recovered.never
  17. Smooth a posté un record dans Types
    How visible a fighter is: invisible, detected or visible. Kind enum · Area Game.Common The invisibility_state of FightCharacteristics, also carried by the fight action that changes a fighter's visibility. An invisible fighter cannot be targeted, and the client hides it. The value names are not recovered yet: compare against the values you observe, not against numbers from another build. Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred Used by FightCharacteristics Invisibility No fields you may set.
  18. Smooth a posté un record dans Types
    One combatant: where and on which team it spawned, its fight characteristics, and who or what it is. Kind struct · Area Game.Common The fighter branch of ActorInformation, sent for every combatant by FightFighterShowEvent and the fight synchronisation messages. spawn_information gives the fighter's team, whether it is alive and its position - see SpawnInformation. stats are its fight characteristics - see FightCharacteristics: life, action and movement points, resistances, and the summoned/summoner and invisibility state. wave is the monster wave the fighter belongs to (0 for the first wave; the fight timeline shows it). previous_positions are cells the fighter stood on earlier in the fight. BRANCH ON fighter_information TO KNOW WHAT THE FIGHTER IS. named_fighter is a player character (or a mutant), ai_fighter a monster or a tax collector, and entity_fighter a companion bound to a master. The level lives inside the branch. Other members may appear (an int64 the client uses to resolve the fighter's effective level, a map the monster converter reads); they have no canonical name yet. Do not branch on them. Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred Used by ActorInformation Fields #FieldTypeMeaningYou set it 4previous_positionsrepeated int32Cells the fighter previously stood on in this fight. (cell id)never 7statsFightCharacteristicsThe fighter's fight characteristics - see FightCharacteristics.never 8spawn_informationSpawnInformationTeam, liveness and position the fighter spawned with - see SpawnInformation.never 9waveint32Monster wave the fighter belongs to. (wave index) 0 for fighters present from the start.never 5named_fighterNamedFighterInformationSet for a player character or a mutant - see NamedFighterInformation.never 6ai_fighterAIFighterInformationSet for a monster or a tax collector - see AIFighterInformation.never 11entity_fighterEntityFighterInformationSet for a companion bound to a master - see EntityFighterInformation.never
  19. Smooth a posté un record dans Types
    How many times one triggered effect has fired on one fighter. Kind struct · Area Game.Action One entry of GameActionUpdateEffectTriggerCountEvent.effects_count_on_target. READ IT LIKE THIS 1. FightEffectTriggerCount.target_id: the fighter carrying the buff. 2. FightEffectTriggerCount.effect_id: the uid of the spell effect behind the buff (the effect's data uid, not an effect type and not the buff's own uid). 3. FightEffectTriggerCount.count: how many times that effect has now triggered; replace the buff's counter with it. Not sent on its own — it travels inside GameActionUpdateEffectTriggerCountEvent.effects_count_on_target. proven Used by GameActionUpdateEffectTriggerCountEvent Fields #FieldTypeMeaningYou set it 1countint32How many times the effect has triggered. Replaces the buff's trigger counter.never 2target_idint64The fighter carrying the buff. (fighter (entity) id)never 3effect_idint32Uid of the spell effect behind the buff. (effect uid (game data)) Matched against the buff's effect (EffectInstanceData.effectUid).never
  20. Smooth a posté un record dans Events
    Which fighter you now command in the fight, who commands it, and the spells, spell bar and modifiers to use for it. Kind event · Area Game.Fight Hands you the controls of ONE fighter: your own character, or a creature you command (a summon or another controllable fighter; beta called this a slave switch). It carries everything the spell bar needs for that fighter. WHAT TO DO WHEN YOU RECEIVE IT 1. FIND OUT WHO COMMANDS WHOM. FightControlEvent.slave_id is the fighter you are now given; FightControlEvent.master_id is the fighter that commands it. When master_id is your character's id, you command slave_id: add it to the fighters you control. master_id is optional; do not assume it is you when it is absent. 2. REPLACE that fighter's spell list with FightControlEvent.slave_spells. It is the whole list (the weapon is one of its entries), not a change to the previous one. 3. REPLACE the spell bar with FightControlEvent.shortcuts, the bar to show while you command this fighter. Each entry carries its own slot index. 4. REPLACE that fighter's modifiers: FightControlEvent.spell_modifiers apply to individual spells, FightControlEvent.weapon_modifiers to its weapon. 5. SEND NOTHING BACK. WHEN IT ARRIVES. In a 3.7.10.10 capture of a fight against monsters it arrived during the player's own turn, between two cooldown refreshes and just before the player's first spell cast, with BOTH ids set to the player's character: in an ordinary fight the server hands you the controls of yourself. WHAT THE OFFICIAL CLIENT DOES - The fight frame stores master_id on the controlled fighter's entity record. If master_id is the local player's id, it adds slave_id to its set of fighters the player controls and refreshes the fight view. Then it raises a control-changed notification carrying (slave_id, master_id). - The spells frame rebuilds the fighter's spells from slave_spells and the spell bar from shortcuts, both keyed by slave_id. - The modifier service replaces slave_id's spell modifiers and files each weapon modifier under spell id 0, the weapon's slot. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server sends it when control of a fighter starts or changes; no request asks for it Fields #FieldTypeMeaningYou set it 1spell_modifiersrepeated SpellModifierModifiers currently applied to the controlled fighter's spells. Element type SpellModifier. Beta keeps this list inside the fighter's characteristic sheet under the same name; here it travels on its own.never 2shortcutsrepeated type not documented yetThe spell bar to show while you command this fighter. Element type Shortcut, the same record as ShortcutBarContentEvent.shortcuts. Only occupied slots appear; each carries its slot index.never 3weapon_modifiersrepeated type not documented yetModifiers currently applied to the controlled fighter's weapon. Each entry is a value, a modifier type and an action type, the two enums of SpellModifier without a spell id. The client files them under spell id 0, the weapon.never 4master_idint64The fighter that commands the controlled fighter. Explicit presence: absent is not the same as zero. (entity id) Observed: 785381589283 Optional. The client compares it with the local player's id: when they are equal, the player commands FightControlEvent.slave_id. Also stored on the controlled fighter's entity record.never 5slave_spellsrepeated type not documented yetEvery spell the controlled fighter can use, its weapon included. Element type SpellItem (spell id, level, availability and a kind; the weapon entry has spell id 0). Replaces the previous list.never 6slave_idint64The fighter you are given control of: whose spells, bar and modifiers this message carries. (entity id) Observed: 785381589283 Your own character's id when you play yourself.never
  21. Smooth a posté un record dans Types
    A fighter's characteristics in fight, plus whether it was summoned, by whom, and how visible it is. Kind struct · Area Game.Common The stats of FightFighterInformation. characteristics is the list of CharacterCharacteristic values: life points, action and movement points, resistances... For an opposing fighter they come as plain totals. summoned is true for a summoned creature, and summoner is then the id of the fighter that summoned it; the client gives a summon its summoner's level. invisibility_state is the fighter's visibility - see FightInvisibilityState. An invisible fighter cannot be targeted. Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred Used by FightFighterInformation FightRefreshCharacterStatsEvent SummonContextInformation Fields #FieldTypeMeaningYou set it 1invisibility_stateFightInvisibilityStateHow visible the fighter is - see FightInvisibilityState.never 2summonedboolWhether this fighter is a summon.never 3summonerint64Id of the fighter that summoned this one. (fighter id) Meaningful when summoned is true.never 4characteristicsrepeated CharacterCharacteristicThe fighter's characteristic values - see CharacterCharacteristic.never
  22. Smooth a posté un record dans Types
    A player character fighter's level, breed, gender and alignment. Kind struct · Area Game.Common The character_information branch of NamedFighterInformation. level is the character level (the client clamps it to 200 for display); breed_id the character's breed (class) - look it up in the breeds data; gender its Gender; alignment_information its AlignmentInformation. DO NOT TELL LEVEL AND BREED APART BY POSITION. Both are int32 and their numbers and order change between builds. Some builds declare a second alignment record and an extra enum here; the client never reads them. Not sent on its own — it travels inside the fighter record of FightFighterShowEvent. inferred Used by NamedFighterInformation Fields #FieldTypeMeaningYou set it 2breed_idint32The character's breed (class). (breed id)never 3alignment_informationAlignmentInformationThe character's alignment - see AlignmentInformation.never 4genderGenderThe character's gender - see Gender.never 6levelint32The character's level. (level) The client caps it at 200 for display.never
  23. Smooth a posté un record dans Events
    The complete list of active buffs and debuffs of every fighter. It replaces the client's buff state: missing buffs are removed, changed ones updated, new ones added. Kind event · Area Game.Fight This name is not Ankama's. It was chosen for this documentation from proven client behaviour, and is a label rather than protocol documentation. The server's full list of every active fight effect (buff or debuff) on every fighter. After it, the client holds EXACTLY this list. WHY IT EXISTS Buffs normally change one at a time inside the actions that cause them: FightBoostAddEvent adds one (played as a step of the current action), FightBoostRemoveEvent and the removal actions of GameActionFightEvent take them away. This event is the full resynchronisation that does not depend on that history: whatever the client holds, the list wins. WHEN IT ARRIVES - At fight start. In a 3.7.10.10 capture it arrived EMPTY when the fight started: nobody has a buff yet, so any buff left over is dropped. - Whenever the server resynchronises buffs (inferred: the client accepts it at any moment). It is applied IMMEDIATELY, not queued in the action sequence being played (unlike FightBoostAddEvent). WHAT TO DO WHEN YOU RECEIVE IT 1. Take every entry of FightBoostSynchronizeEvent.effects (FightRemovableEffectExtendedInformation: the effect, the action that applied it and the fighter who cast it). The buff's identity is its uid (FightRemovableEffect.uid). 2. REMOVE every buff you hold, on any fighter, whose uid is not in the list. 3. For each entry, look for the buff with that uid on its target (FightRemovableEffect.target_id): - you hold it: if any of its values differ (effect parameters, start and end turns, kind), UPDATE it to the entry's values; - you do not: ADD it as a new buff, cast by source_id through action_id. 4. An EMPTY list removes every buff of every fighter. 5. SEND NOTHING BACK. When you may send it Requires character_loaded inferred Raised by: the server resynchronising every fighter's buffs (at least at fight start) inferred Related messages Unsolicited - nothing you send causes this pushed by the server (seen empty at fight start in a 3.7.10.10 capture); no request asks for it Fields #FieldTypeMeaningYou set it 1effectsrepeated FightRemovableEffectExtendedInformationEvery active fight effect, with its action and caster. The whole buff state: buffs missing from it are removed, changed ones updated, new ones added. An empty list clears every buff.never
  24. Smooth a posté un record dans Events
    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
  25. Smooth a posté un record dans Events
    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

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.