Tout ce qui a été publié par Smooth
-
QuestStartRequest
Asks the server to start one quest for the character. Kind request · Area Game.Quest Starts ONE quest. Only send it for a quest the game offers to start by hand: the client sends it from a quest scroll's Start button and from a "start quest" link in a text, and from nowhere else. HOW TO SEND IT 1. Set quest_id to the quest's id (the quest data id; the scroll and the link both carry it). It is the only member to fill. 2. Send it once. The client does not retry it and does not wait for anything before closing the scroll. 3. Wait for QuestStartedEvent with the same quest id before treating the quest as active. That event is not a reply: the server sends it for every quest that starts, whatever started it. Do not add the quest to your journal on send: the server may refuse to start it, and then no QuestStartedEvent comes. NOT TO BE CONFUSED WITH QuestStepInformationRequest, which has the same shape (one quest id) but only asks about a quest that is already active. When you may send it Requires character_loaded inferred Raised by: the player presses Start on a quest scroll, or clicks a "start quest" link in a text inferred Related messages You will then receive QuestStartedEvent inferred — the server announces the started quest with that event; it is not a dedicated reply (it also arrives for quests started any other way), and no refusal message is known Fields #FieldTypeMeaningYou set it 1quest_idint32The quest to start. (quest id)required
-
ObjectsAddedEvent
Several items were added to your inventory at once. Kind event · Area Game.Inventory Several items arrive in your inventory together (quest rewards, a craft, loot...). WHAT TO DO 1. Add each of objects (ObjectItemInventory) to your inventory, as for a single ObjectAddedEvent. 2. The client also writes one ui.quest.itemObtained chat line per item. Do not send anything back. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this Fields #FieldTypeMeaningYou set it 1objectsrepeated ObjectItemInventoryThe items added, each with its inventory record.never
-
ObjectUseRequest
Uses one unit of an inventory item that needs no target (bread, potion, recall potion...). Kind request · Area Game.Inventory Uses ONE unit of an item that acts on the character itself. HOW TO SEND IT 1. Set object_uid to the item's ObjectItem.uid from your inventory (not its template id, ObjectItem.gid). 2. Send it only for one unit and only for an item that needs no target. The client picks another request otherwise: - more than one unit at once: ObjectUseMultipleRequest (uid + quantity); - an item used on a cell or on another character: the use-on-cell / use-on-character requests, sent after the player picks the target. Those requests have no signature yet. 3. Do not send it while your character is playing an animation: the client holds the request until the animation ends, then sends it. 4. Watch the item's quantity: it drops by one (or the item is deleted) when the use succeeds. When you may send it Requires character_loaded inferred Raised by: the player uses an item from the inventory or the shortcut bar, one unit at a time, on no target proven Related messages Reply not yet recovered: the server answers with the item's new quantity or its deletion (see ObjectQuantityEvent / ObjectDeletedEvent) and with whatever the item does (life, stats, teleport). A refusal comes as an object error event that has no signature yet, so treat the use as unconfirmed until the quantity changes. Fields #FieldTypeMeaningYou set it 1object_uidint32The inventory item to use: its uid, as in ObjectItem.uid. (item uid)required
-
ObjectSetPositionRequest
Moves an inventory item to a position: an equipment slot to equip it, or back to the bag to unequip it. Kind request · Area Game.Inventory Moves one of your items to a new position. HOW TO SEND IT 1. object_uid: the item's ObjectItem.uid from your inventory (not its template id, ObjectItem.gid). 2. position: where it goes, a client inventory position: - equipment slots: 0 amulet, 1 weapon, 2 left ring, 3 belt, 4 right ring, 5 boots, 6 hat, 7 cape, 8 pet, 9-14 the six Dofus slots, 15 shield, 16 mount, 29 ride harness, 27 follower, 28 entity, 30 costume; - 63: back to the bag (unequip). 3. quantity: how many units to move, 1 for equipment. The client asks for a number only when moving part of a stack. 4. Skip it when the item is already at that position: the client does not send it then. AFTER SENDING Wait for ObjectMovementEvent with the same uid: your item is now at its position. If the slot was taken, the item that was there comes back with its own ObjectMovementEvent to 63. When you may send it Requires character_loaded inferred Raised by: the player equips or unequips an item: double-click, drag and drop onto a slot, a slot's double-click, or the quantity popup when moving part of a stack proven Related messages You will then receive ObjectMovementEvent observed — the server confirms the move with the same uid and position; an item pushed out of the target slot gets its own ObjectMovementEvent back to the bag Fields #FieldTypeMeaningYou set it 1quantityint32How many units of the stack to move; 1 for equipment. (units)required 2object_uidint32The inventory item to move: its uid, as in ObjectItem.uid. (item uid)required 3positionint32Where the item goes: an equipment slot (0 amulet, 1 weapon, 2/4 rings, 3 belt, 5 boots, 6 hat, 7 cape, 8 pet, 9-14 Dofus, 15 shield...) or 63 for the bag (unequip). (client inventory position)required
-
ObjectMovementEvent
An inventory item is now at a new position (equipped in a slot, or back in the bag). Kind event · Area Game.Inventory Set the position of item object_uid to position. 1. Find the stack whose uid is object_uid (the uid of ObjectItem, not the gid). 2. Set its position: an equipment slot (0 amulet, 1 weapon, 2/4 rings, 3 belt, 5 boots, 6 hat, 7 cape, 8 pet, 9-14 Dofus, 15 shield...) or 63, the bag (not equipped). It confirms ObjectSetPositionRequest (same uid and position), but it also arrives for items you did not move: equipping into a taken slot sends the item that was there back to 63 with its own event. Handle it whether or not you asked. Do not send anything back. When you may send it Requires context_ready inferred Related messages Arrives after ObjectSetPositionRequest Fields #FieldTypeMeaningYou set it 1object_uidint32The item that moved: its uid, as in ObjectItem.uid. (item uid)never 3positionint32Its new position: an equipment slot (0 amulet, 1 weapon, 2/4 rings, 3 belt, 5 boots, 6 hat, 7 cape, 8 pet, 9-14 Dofus, 15 shield...) or 63, the bag. (client inventory position)never
-
ExchangeSetCraftRecipeRequest
Selects the recipe to craft in the open workshop. Kind request · Area Game.Exchange Picks the recipe to craft in the workshop you have open. HOW TO SEND IT 1. A craft exchange must be open (the workshop window). 2. object_uid: the item id of the recipe's RESULT (the item the recipe makes, as in the game data's recipe list). It is NOT an inventory uid, whatever Ankama's member name says. 3. If you own every ingredient, send only this request. 4. If some are missing, the client warns (ui.craft.dontHaveAllIngredient, or ui.craft.noIngredient), first puts in the ingredients you do own, one ExchangeObjectMoveRequest each (inventory uid, quantity), and then sends this request anyway. 5. Leave any other member unset: the client never fills it. AFTER SENDING Watch ExchangeObjectsAddedEvent (remote false) for the items now in the craft. When you may send it Requires exchange_open inferred Raised by: the player picks a recipe in the workshop's recipe list proven Related messages You will then receive ExchangeObjectsAddedEvent inferred — when you own every ingredient the client moves nothing itself, so the ingredients that appear in the craft are put there by the server Fields #FieldTypeMeaningYou set it 1object_uidint32Item id of the recipe's result (the item the recipe makes), not an inventory uid despite the name. (item id) Ankama's name says uid; the client sends the recipe's result item id (RecipeData.resultId).required
-
ExchangeReadyRequest
Presses the exchange's go button: craft in a workshop, recycle, smith, or validate a trade. Kind request · Area Game.Exchange Says you are ready: in a workshop it launches the craft. HOW TO SEND IT 1. An exchange must be open (workshop, smithing, recycling, trade). 2. ready: true to launch / validate. A trade window also sends false to take its validation back. 3. step: the exchange's change counter. It is 0 when the exchange opens; the client adds 1 each time the multi-craft payment changes (the payment-modified event, not recovered yet). In a solo workshop send 0. AFTER SENDING In a workshop, ExchangeCraftResultEvent tells you how the craft went. When you may send it Requires exchange_open inferred Raised by: the player confirms a craft (workshop or multi-craft), starts recycling, merges in the smithing window, or validates a trade proven Related messages You will then receive ExchangeCraftResultEvent inferred — in a workshop, the craft's outcome; the client resends this request from the smithing result handler to chain merges Fields #FieldTypeMeaningYou set it 1stepint32The exchange's change counter: 0 when the exchange opens, +1 on each multi-craft payment change. 0 in a solo workshop. (count)required 2readyboolTrue to launch the craft / validate; false withdraws a trade validation.required
-
ExchangeObjectsAddedEvent
Items were put into the open exchange window (craft, smithing, rune making, recycling, trade), by you or by the other side. Kind event · Area Game.Exchange Items were put into the exchange window you have open: a crafting, smithing, rune-making or recycling workshop, or a trade with another player. WHAT TO DO 1. remote false: the items are on YOUR side (you put them in, or the server did for you). remote true: the OTHER party put them in; in a trade the client shows them in the other player's grid. 2. Add each of objects (ObjectItemInventory) to that side's slots. 3. fm_power is optional (read as 0 when absent). Only the smithing window uses it: it hands it, with the item, to the slot it fills. Do not send anything back. When you may send it Requires exchange_open inferred Related messages Arrives after ExchangeSetCraftRecipeRequest Fields #FieldTypeMeaningYou set it 1remoteboolFalse: the items are on your side of the exchange. True: the other party put them in (in a trade, the other player's grid).never 2fm_powerfloatOptional, read as 0 when absent. Only the smithing window uses it: it hands it, with the added item, to the slot it fills. Explicit presence: absent is not the same as zero. Beta declares it as an optional int32; it is a float since 3.2.never 3objectsrepeated ObjectItemInventoryThe items put in, each with its inventory record.never
-
ExchangeObjectRemovedEvent
An item was taken out of the open exchange window (craft, smithing, rune making, recycling, trade). Kind event · Area Game.Exchange An item left the exchange window you have open. WHAT TO DO 1. remote false: it left YOUR side; true: the other party removed it. 2. Remove the item object_uid from that side. 3. Ignore any other member: the client never reads it. It is the counterpart of ExchangeObjectsAddedEvent. Do not send anything back. When you may send it Requires exchange_open inferred Related messages Unsolicited - nothing you send causes this Fields #FieldTypeMeaningYou set it 2remoteboolFalse: the item left your side of the exchange. True: the other party removed it.never 3object_uidint32Uid of the item removed from the exchange. (object uid)never
-
ExchangeCraftResultWithObjectDescription
The item a craft or smithing attempt produced, with the smithing magic-pool details. Kind struct · Area Game.Exchange Carried in ExchangeCraftResultEvent.object. WHAT TO DO 1. object: the produced or modified item; replace your copy of it. 2. Smithing only: - fm_power: the item's magic pool after the rune (the smithing window shows it as the leftovers); - magic_pool_status: how that pool changed. Values are not renamed; on 3.7.11.11 the window shows 1 as a gain ('+') and the other non-zero value as a loss ('-'); beta: no change 0, increase 1, loss 2. 3. Ignore any other member: the client never reads it. Not sent on its own — a record carried by ExchangeCraftResultEvent, never sent on its own. inferred Used by ExchangeCraftResultEvent Fields #FieldTypeMeaningYou set it 2fm_powerfloatSmithing: the item's magic pool after the attempt, shown as the leftovers. Beta declares it as int32; it is a float since 3.2.never 3magic_pool_statusMagicPoolStatusSmithing: how the item's magic pool changed (gain or loss). Values are not renamed. Explicit presence: absent is not the same as zero.never 4objectObjectItemThe item produced or modified by the craft or the smithing attempt.never
-
ExchangeCraftResultEvent
The outcome of a craft or smithing attempt in a workshop. Kind event · Area Game.Exchange The result of a craft launched with ExchangeReadyRequest. WHAT TO DO 1. Read result (CraftResult). Its values are not renamed; on 3.7.11.11 the client treats them as: - 0: impossible (recipe invalid, job level too low, nothing to make); - 2: success; - 4: forbidden (for example a legendary item); - 1 and 3: the other outcomes (beta: failed, neutral). In smithing, 1 and 2 change the item, 3 leaves it as it was. 2. complement holds ONE of: - object_gid: with impossible / forbidden, the item id the craft would have made; - object: the item produced or modified, with its smithing details (ExchangeCraftResultWithObjectDescription). Do not send anything back. To chain smithing merges, send ExchangeReadyRequest again. When you may send it Requires exchange_open inferred Related messages Arrives after ExchangeReadyRequest Fields #FieldTypeMeaningYou set it 1resultCraftResultHow the craft went (CraftResult). Values are not renamed; see the message description for their meaning.never 2objectExchangeCraftResultWithObjectDescriptionThe item produced or modified, with its smithing details.never 3object_gidint32With an impossible or forbidden result: the item id the craft would have made. (item id)never
-
EmotePlayRequest
Plays an emote (sit, wave, an aura...) on your character. Kind request · Area Game.Emote Plays one of your emotes. HOW TO SEND IT 1. emote_id: an emote your character knows (the list comes with EmotesEvent). In the capture, 1 is sit (animation AnimEmoteSit). 2. auto_aura: leave it false. The client sets it to true only when it replays the aura of your current outfit by itself. 3. Respect the emote's cooldown: the client does not send an emote while its cooldown (from the emote data) is running. 4. If your character is in the middle of an animation, the client waits for it to end before sending. AFTER SENDING EmotePlayEvent comes back with your actor id and the animation name. To stand up from sit, play the sit emote again; the server answers with emote id 0. When you may send it Requires character_loaded inferred Raised by: the player picks an emote in the emote tab or on the shortcut bar; the client also sends it by itself to replay the outfit's aura proven Related messages You will then receive EmotePlayEvent observed — the server broadcasts the emote to the map, you included, with the same emote id and the animation to play Reply not yet recovered: a refused emote comes back as an emote error event (the client shows ui.common.cantUseEmote); it has no signature yet. Fields #FieldTypeMeaningYou set it 1emote_idint32The emote to play, one of those listed by EmotesEvent (1 = sit). (emote id)required 2auto_auraboolTrue only when the client replays your outfit's aura by itself; false when the player picks an emote. Name invented: no reference build names this member.conditional
-
EmotePlayEvent
An actor on your map plays an emote (or stops one): play the named animation on it. Kind event · Area Game.Emote Someone on your map, you included, plays an emote. WHAT TO DO 1. Find the actor actor_id on the map. 2. If emote_id is 0, the actor stopped its emote (for example stood up): put it back in its normal stance. 3. Otherwise play animation (for example AnimEmoteSit) on it. It answers your own EmotePlayRequest (same emote id, your actor id), but it also arrives for every other player's emotes on the map. The client checks the actor's name and account_id with its social service and does not play the emote on a match (players you ignore). Do not send anything back. When you may send it Requires context_ready inferred Related messages Arrives after EmotePlayRequest Fields #FieldTypeMeaningYou set it 1emote_idint32The emote played (as listed by EmotesEvent); 0 means the actor stopped its emote. (emote id)never 2account_idint32The actor's account; the client checks it, with the actor's name, against its social lists and skips the emote on a match. (account id)never 3animationstringName of the animation to play, for example AnimEmoteSit. Name invented from the client parameter it fills (SetAnimationAction's animation); no reference build names this member.never 5actor_idint64The map actor playing the emote (a character id). (actor id)never
-
SummonWeightUpdatedEvent
How many summon points a fighter now uses: refresh its summon counter. Kind event · Area Game.Fight The summon points SummonWeightUpdatedEvent.fighter_id uses NOW. It replaces the previous value; it is not a change to add. WHAT TO DO WHEN YOU RECEIVE IT 1. STORE SummonWeightUpdatedEvent.summon_weight as that fighter's summon points in use. 2. If the fighter is your character, show it against your maximum number of summoned creatures (a characteristic): the client draws "used / maximum". 3. SEND NOTHING BACK. Bombs are counted separately: this value does not include them. Any other declared member is padding: ignore it. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server sends it when a fighter's summons change; no request asks for it Fields #FieldTypeMeaningYou set it 1summon_weightint32Summon points the fighter uses now, bombs excluded. Observed: 1 The client shows it against the fighter's maximum number of summoned creatures.never 2fighter_idint64The fighter whose summon points changed. (entity id) Observed: 774841172259never
-
SpellsEvent
Your character's spell lists: its own (human) spells and the spells of its mutant form. Kind event · Area Game.Spell The spells YOUR character can cast, as two complete lists. Each list replaces the previous one; neither is a change to apply. WHAT TO DO WHEN YOU RECEIVE IT 1. REPLACE your character's normal spell list with SpellsEvent.human_spells. The client completes it with your breed's own spells (the breed's spell variants), so a breed spell missing from the list is still yours. 2. REPLACE the spell list of your mutant form with SpellsEvent.mutant_spells. Use it only while your character is transformed; it gets no breed spells. 3. SEND NOTHING BACK. In a fight, a creature you command has its own lists: see FightControlEvent and FightSpellsUpdateEvent. Any other declared member is never read by the client: ignore it. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server sends it when your character's spells are set or change; no request asks for it Fields #FieldTypeMeaningYou set it 1human_spellsrepeated SpellItemYour character's own spell list; the client adds your breed's spells to it. Element type SpellItem. The whole list, not a change.never 3mutant_spellsrepeated SpellItemThe spell list of your character's mutant (transformed) form; no breed spells are added. Element type SpellItem. The whole list, not a change.never
-
SpellModifierType
Which property of a spell a SpellModifier changes: range, AP cost, damage, line of sight... Kind enum · Area Game.Common The modifier_type of SpellModifier: which property of the spell the modifier changes. HOW TO READ IT 1. Look the value up below. Most values change a number of the spell's level data (range, AP cost, casts per turn...); the others switch a casting rule (line of sight, cast in a line, free or occupied target cell...). 2. For AP_COST and CAST_INTERVAL a BOOST lowers the value: the client subtracts the boost instead of adding it. 3. Two values have no known name (19 and 20 on 3.7). The client applies 20 to the spell's critical-hit damage bonus (SpellLevelData.criticalHitBonus). Not sent on its own — an enum is never sent on its own. inferred Used by RemoveSpellModifierEvent SpellModifier Values ValueNumberMeaning INVALID_MODIFICATION0No modification. RANGE1Range. DAMAGE2Damage. BASE_DAMAGE3Base damage. HEAL_BONUS4Heal bonus. AP_COST5AP cost; a boost LOWERS it. The client applies it to SpellLevelData.apCost, and inverts the sign of boosts for it. CAST_INTERVAL6Interval between casts; a boost LOWERS it. The client inverts the sign of boosts for it, as for AP_COST. CRITICAL_HIT_BONUS7Critical-hit chance. The client applies it to SpellLevelData.criticalHitProbability. CAST_LINE8Cast in a line. LOS9Line of sight. The client applies it to SpellLevelData.castTestLos. MAX_CAST_PER_TURN10Casts per turn. The client applies it to SpellLevelData.maxCastPerTurn. MAX_CAST_PER_TARGET11Casts per target. RANGE_MAX12Maximum range. The client applies it to SpellLevelData.range (the spell's maximum range). RANGE_MIN13Minimum range. The client applies it to SpellLevelData.minRange. OCCUPIED_CELL14Occupied target cell. Named by beta's wire number; no client constant was seen for it. FREE_CELL15Free target cell. Named by beta's wire number; no client constant was seen for it. VISIBLE_TARGET16Visible target. Named by beta's wire number; no client constant was seen for it. PORTAL_FREE_CELL17Free cell for a portal. Named by beta's wire number; no client constant was seen for it. PORTAL_PROJECTION18Portal projection. Named by beta's wire number; no client constant was seen for it.
-
SpellModifierActionType
How a SpellModifier changes the spell's value: add, subtract or replace. Kind enum · Area Game.Common The action_type of SpellModifier: how its amounts combine with the spell's own value. HOW TO COMPUTE A SPELL'S VALUE Keep, per spell and per SpellModifierType, the latest amounts of each action. 1. If an ACTION_SET entry exists, the value IS that entry's amount; ignore the rest. 2. Otherwise value = base + BOOST - REMOVE_BOOST, where base is the spell level's own value. For AP_COST and CAST_INTERVAL subtract the difference instead of adding it. The amount of an entry is its equipment plus its context part (see SpellModifier.equipment and SpellModifier.context). Not sent on its own — an enum is never sent on its own. inferred Used by RemoveSpellModifierEvent SpellModifier Values ValueNumberMeaning ACTION_INVALID0No action. ACTION_BOOST1Adds the amounts to the spell's value. ACTION_REMOVE_BOOST2Subtracts the amounts from the spell's value. ACTION_SET3Replaces the spell's value with the amounts.
-
SpellItem
One spell a fighter can cast: its id and level, plus availability and a kind. Kind struct · Area Game.Common One entry of a spell list. HOW TO READ IT 1. SpellItem.spell_id is the spell; look it up in the spell data. Spell id 0 is the weapon entry. 2. SpellItem.spell_level is the level of that spell to use. 3. SpellItem.available, when present, says whether the spell can be used. 4. SpellItem.kind is a category the server sends (1 on the character's spells and 2 on the weapon entry in captures). The client keeps it but no client logic reads it: do not rely on it. Not sent on its own — a record carried by SpellsEvent, FightControlEvent and FightSpellsUpdateEvent, never sent on its own. inferred Used by FightControlEvent FightSpellsUpdateEvent SpellsEvent Fields #FieldTypeMeaningYou set it 1kindtype not documented yetA category of the entry; the client keeps it but never reads it. Name ours: no Ankama source names it. Captures show 1 on the character's spells and 2 on the weapon entry (spell id 0).never 2spell_idint32The spell (0 for the weapon entry). The client looks it up with SpellData.GetById.never 3availableboolWhether the spell can be used; absent when not said. Explicit presence: absent is not the same as zero.never 4spell_levelint32The level of the spell to use. The client passes it, beside the spell id, down to SpellData.GetSpellLevelData(rank).never
-
ShortcutSpell
A spell placed on a shortcut slot. Kind struct · Area Game.Common The spell a shortcut slot holds. HOW TO READ IT 1. ShortcutSpell.spell_id is the spell; 0 is the weapon entry. Not sent on its own — the spell branch of a Shortcut, never sent on its own. inferred Used by Shortcut Fields #FieldTypeMeaningYou set it 1spell_idint32The spell on the slot (0 = the weapon).never
-
Shortcut
One slot of a shortcut bar: its position and what it holds (a spell, an item, an emote ...). Kind struct · Area Game.Common One entry of a shortcut bar. HOW TO READ IT 1. Shortcut.slot_id is the position of the entry in the bar (0 = first slot). 2. Exactly one member of Shortcut.shortcut is set; it says what the slot holds: Shortcut.shortcut_spell a spell (its spell id; 0 is the weapon), Shortcut.shortcut_object_item an inventory item, Shortcut.shortcut_preset a preset, Shortcut.shortcut_smiley a smiley, Shortcut.shortcut_emote an emote, Shortcut.shortcut_cosmetic_object a cosmetic object, Shortcut.shortcut_outfit an outfit. One declared enum member is never read by the client: ignore it. Not sent on its own — a record carried by the shortcut-bar messages and FightControlEvent, never sent on its own. inferred Used by FightControlEvent FightSpellsUpdateEvent ShortcutBarContentEvent Fields #FieldTypeMeaningYou set it 3slot_idint32The position of the entry in the bar (0 = first slot). The client copies it into ShortcutProperties.id.never 2shortcut_spellShortcutSpellA spell: put this spell on the slot. Type ShortcutSpell when recovered; the client turns this branch into ShortCutBarTypes.Spell.never 4shortcut_emotetype not documented yetAn emote. Type ShortcutEmote when recovered; the client turns this branch into ShortCutBarTypes.Emote.never 5shortcut_object_itemtype not documented yetAn inventory item. Type ShortcutObjectItem when recovered; the client turns this branch into ShortCutBarTypes.Item.never 6shortcut_cosmetic_objecttype not documented yetA cosmetic object. Type ShortcutCosmeticObject when recovered; the client turns this branch into ShortCutBarTypes.CosmeticItem.never 7shortcut_smileytype not documented yetA smiley. Type ShortcutSmiley when recovered; the client turns this branch into ShortCutBarTypes.Smiley.never 8shortcut_outfittype not documented yetAn outfit. Type ShortcutOutfit when recovered; the client turns this branch into ShortCutBarTypes.Outfit.never 9shortcut_presettype not documented yetA preset. Type ShortcutPreset when recovered; the client turns this branch into ShortCutBarTypes.Preset.never
-
RemoveSpellModifierEvent
One spell modifier no longer applies to a fighter: remove it from that fighter's modifiers. Kind event · Area Game.Spell Undoes what ApplySpellModifierEvent did for ONE action type of ONE modifier. WHAT TO DO WHEN YOU RECEIVE IT 1. FIND the modifiers of the fighter RemoveSpellModifierEvent.actor_id. If it has none, stop. 2. FIND the entry for RemoveSpellModifierEvent.spell_id and RemoveSpellModifierEvent.modifier_type. If there is none, stop. 3. REMOVE that entry's values for RemoveSpellModifierEvent.action_type. 4. If the entry has no action type left, DELETE the entry. 5. SEND NOTHING BACK. Any other declared member is padding: ignore it. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this the server sends it when an effect stops modifying a fighter's spell; no request asks for it Fields #FieldTypeMeaningYou set it 1spell_idint32The spell the removed modifier applied to.never 2action_typeSpellModifierActionTypeWhich of the entry's action types to remove: the entry keeps its other action types. A SpellModifierActionType.never 3modifier_typeSpellModifierTypeWhich property of the spell the removed modifier changed (range, damage, AP cost, ...). A SpellModifierType.never 4actor_idint64The fighter whose spell modifier ends. (entity id)never
-
RemovableEffectKind
What kind of effect a FightRemovableEffect is: a state, a triggered effect, or another boost. Kind enum · Area Game.Common This name is not Ankama's. It was chosen for this documentation from proven client behaviour, and is a label rather than protocol documentation. Says how to read the parameters of a FightRemovableEffect. HOW TO READ IT 1. STATE: the effect puts the fighter in a state. The state id is FightRemovableEffect.third_param. 2. TRIGGERED: the effect fires on an event (see FightRemovableEffect.triggers). Its three params are dice: count, sides, flat value. The server sends trigger counts for these effects. 3. Values 0, 1, 4 and 6 are boosts, like STATE: they change a characteristic by FightRemovableEffect.first_param (negative when the effect's characteristic operator in the game data is "-"). 4. Value 3 is a non-boost kind the client handles apart; values 5 and 8 carry no client behaviour. Their names are not known. Not sent on its own — an enum is never sent on its own. inferred Used by FightRemovableEffect Values ValueNumberMeaning STATE2A state: the state id is the effect's third_param. After beta's FightTemporaryBoostEffect.state_id; the client tags the buff as a state and reads its state id from the effect's third parameter. TRIGGERED7A triggered effect: the three params are dice (count, sides, flat value). After beta's FightRemovableEffect.triggered_effect; the client rolls the params as dice and tracks trigger counts for it.
-
MarkedCell
One cell of a mark, with the zone around it and its colour. Kind struct · Area Game.Common One entry of FightMark.cells. 1. The mark covers MarkedCell.id. 2. When MarkedCell.zone_size is above 0 and MarkedCell.cells_type is not the single-cell kind, it also covers the zone of that size around the cell. 3. MarkedCell.color is the colour to draw it with (RGB). One declared int32 is never read: padding. Not sent on its own — a record carried by FightMark, never sent on its own. inferred Used by FightMark Fields #FieldTypeMeaningYou set it 2zone_sizeint32Size of the zone around the cell that the mark also covers; 0 for the cell alone.never 3cells_typetype not documented yetThe zone's shape, or the single-cell kind.never 4idint32A cell the mark covers. (cell id)never 5colorint32Colour of the mark's cells. (RGB)never
-
MarkType
What kind of mark lies on the ground: glyph, trap, wall, portal or rune. Kind enum · Area Game.Common The kind of a FightMark. It decides how the mark behaves for the fighters on its cells. HOW TO READ IT 1. GLYPH, TRAP, WALL, PORTAL and RUNE are the five kinds the game has had since beta. 2. Value 5 is a sixth kind the client handles like the others; its name is not known. Keep the mark; do not treat it as one of the five. 3. Value 6 is never converted by the client: it ends up as an unknown kind. Ignore a mark carrying it. Not sent on its own — an enum is never sent on its own. inferred Used by FightMark Values ValueNumberMeaning GLYPH0A glyph: acts on the fighters standing in it, at their turn. The client turns it into its own 'Glyph' mark kind. TRAP1A trap: triggers when a fighter walks into it, then disappears. The client turns it into its own 'Trap' mark kind. WALL2A wall: a line of cells linking two marks. The client turns it into its own 'Wall' mark kind. PORTAL3A portal: fighters and spells pass from one portal to another. The client turns it into its own 'Portal' mark kind. RUNE4A rune. The client turns it into its own 'Rune' mark kind.
-
HavenBagFurnitureRequest
Saves the furniture layout of your haven bag: the whole layout, in slices of at most 40 Elements. Kind request · Area Game.Haven.Bag Send the COMPLETE furniture layout, never only what changed. One Element per piece. 1. Send HavenBagFurnitureOpenRequest (empty). 2. Cut the list into slices of at most 40 Elements, in order. Send one HavenBagFurnitureRequest per slice, with the slice in furniture. 3. Send HavenBagFurnitureCloseRequest (empty). The client sends all three steps in one go, with nothing in between. Leave every other member at its default. When you may send it Requires context_ready inferred Raised by: the player clicks Save in the haven-bag edit window inferred Related messages Reply not yet recovered: the client sends the whole save sequence without waiting between messages; no answer to it was traced, and none has a signature here yet. Fields #FieldTypeMeaningYou set it 2furniturerepeated ElementOne slice of the layout: at most 40 pieces, in order. Type Element.required