Appearances.dat

The appearances.dat file is the Tibia 11 client's file that has all the information the client needs in order to allow the player to interact with the environment. Generally speaking, with this client-side data, the client can make decisions and decide whether a certain action is possible or not without communicating with the server, increasing the overall game performance. For example, when a player explores the map, the client receives information about the position of Objects on it and decides where the character can or can't walk based on the properties of the objects contained in the dat file.
Technically speaking, the appearances.dat file is a serialized file, which makes it rather small even though it contains a lot of information. For example, while the serialized file has around 2.3 MB, if converted to JSON it would have approximately 27 MB. The much smaller file size can be transferred and read by the client much faster than any text version of it. The file is located inside Tibia's installation folder, an can be found under %localappdata%/Tibia/packages/Tibia/assets on Windows machines. The file name also contains a hash, which corresponds to the SHA-2 hash of its content. This hash is most likely used to check for file integrity as well as to avoid cheating.
== Data Structure ==
The dat file contains data regarding Appearances, which are graphic representations of everything that can be displayed in the game window. Appearances can be of one of four types:
* Objects: These is by far the largest part of the file. Objects are what TibiaWiki commonly calls Objects, Items and Corpses, but there are no differences among these three groups other than the properties they have. 
* Outfits: Outfit appearances are those used to represent creatures, i.e player characters, NPCs and monsters. On TibiaWiki, they're split in outfits and mounts, but there are no differences among them, similarly to the Object appearances subdivision we have.
* Effects: Effects are graphical representations (usually animated) that appear on certain events, for example casting a spell or drinking a potion. On TibiaWiki, they are under Effects.
* Missiles: They are similar to effects, with the key difference that missiles move across the map, whereas effects are always fixed on the same position. For example, the animation of a moving projectile is a missile appearance. They are currently also categorized as Effects on TibiaWiki.
Appearances can have a number of properties. Outfits, Effects and Missiles have mostly animation-related properties, but Objects usually have many more. The following properties can be assigned to an appearance:
Appearance:
:id: An integer that defines the unique identification of the appearance (under its type group). 
:frame_group: All the data necessary for the graphical representation of the appearance. Objects, Missiles and Effects usually have 1 FrameGroup, and Outfits can have 1 or 2 (for idle and movement data, respectively).
::fixed_frame_group:
::id: The ID of the frame_group.
::sprite_info: The visual data. 
:::pattern_width:
:::pattern_height:
:::pattern_depth:
:::layers:
:::sprite_id: The sprite IDs used on this appearance's frame_group.
:::bounding_square:
:::animation: If the appearance is animated. 
::::default_start_phase: The first frame displayed when the animation starts.
::::synchronized:
::::random_start_phase: If the animation is allowed to start at any given frame. 
::::loop_type: The type of loot (if any) the animation will have. 
:::::infinite: The animation loops indefinitely.
:::::pingpong: The sprites are displayed back and forth instead of a regular loop.
:::::counted: The animation is displayed only loop_count times.
::::loop_count: Number of times the counted animation is displayed.
::::sprite_phase: The duration of the animation frames. 
::::duration_min: The minimum duration of the respective frame, in milliseconds.
::::duration_max: The maximum duration of the respective frame, in milliseconds.
:::is_opaque:
:::bounding_box_per_direction:
::::x:
::::y:
::::width:
::::height:
:flags: These are values that represent how the client can interact with the appearance, and it's mostly used for Objects.
::bank: If the object is a Tile, then it has a walking friction
:::waypoints: An integer that represents the friction of the tile. Current objects range from 50 (fastest) to 1200 (slowest).
::clip: If the appearance is ground but only partially covers it, for example the top tile where 2 different grounds are displayed. 
::bottom: If the appearance is the bottom-most appearance, only above the ground (bank). 
::top: If the appearance is the top-most appearance
::container: If the appearance is a Container
::cumulative: If the appearance is stackable. 
::usable: If the appearance has any use function.
::forceuse:
::multiuse: If the appearance has any use with function.
::write: If the object is writable and editable. 
:::max_text_length: Maximum number of characters it can hold. 
::write_once: If the object is writable, but only once. 
:::max_text_length_once: Maximum number of characters it can hold. 
::liquidpool:
::unpass: If it's impossible to walk over the appearance.
::unmove: If it's impossible to move the appearance.
::unsight: If the appearance blocks the vision when trying to i.e. shoot projectiles or spells. 
::avoid: If the character will avoid walking over this object when automatically defining a walking path, even though it's walkable.
::no_movement_animation:
::take: If the object is pickupable, i.e. can be taken by players and stored into containers. 
::liquidcontainer: If the object is able to hold Liquids. 
::hang: If the object can be hanged on walls. 
::hook: The direction in which the object can be hanged: South or East.
::rotate: If the appearance can be rotated (such as many Furnitures). 
::light: If the appearance emits any kind of light. This flag is also used on some outfits, for example. 
:::brightness: An integer that represents the radius of the emitted light.
:::color: The code of the color of the light, as seen here.
::dont_hide: 
::translucent:
::shift:
:::x:
:::y':
::height:
:::elevation:
::lying_object:
::animate_always:
::automap: If the appearance should be displayed on the Automap.
:::color: The color used on the Automap, as seen here.
::lenshelp: If the appearance should trigger the help icon when the help feature is used on the client. 
:::id: The ID of the help tooltip. 
::fullbank:
::ignore_look: If the appearance must be ignored when the player looks it, meaning the appearance under it will be the one seen. 
::clothes: If the object can be worn as an equipment:
:::slot: The ID of the inventory slot it can be worn on. 
::default_action: The default action when using Left-Smart click mouse controls.
:::action: The default action type:
::::None
::::Look
::::Use
::::Open
::::Autowalk_Highlight
::market: If an object is displayed in The Market. 
:::category: The Market Category of the object: Armors, Amulets, Boots, Cotainers, Decoration, Food, Helmets_Hats, Legs, Others, Potions, Rings, Runes, Shields, Tools, Valuables, Ammunition, Axes, Clubs, Distance_Weapons, Swords, Wands_Rods, Premium_Scrolls, Tibia_Coins, Creature_Products. 
:::trade_as_object_id:
:::show_as_object_id:
:::restrict_to_profession: The Vocation restriction of the object: Any, Knight, Paladin, Sorcerer, Druid, Promoted.
:::minimum_level: The required level to use the object. 
::wrap: If the object can be into a furniture kit or similar.
::unwrap: If the object can be unwrapped. 
::topeffect:
::npcsaledata: NPC Buy and Sell data as displayed in the Cyclopedia:
:::name: Name of the NPC.
:::location: Location of the NPC.
:::sale_price: Price the NPC sells the object for.
:::buy_price: Price the NPC buys the object for.
:::currency: Currency used to buy or sell the object. The absence means gold piece. Another currency is "Favour" point.
::changedtoexpire: If the item can be switched on Action Bars using the Smart Switch option, currently available for Rings only.
:::former_object_typeid: The object ID of the corresponding "activated" version of the object. 
::corpse: If the object is a corpse.
::player_corpse: If the object is a player's corpse.
::cyclopediaitem: If the object is in the Cyclopedia.
:::cyclopedia_type: The Object ID that will be used to represent this object, which is not always the same as its own ID. 
:name: Only used for some objects, the name that is displayed if the object is present in the Cyclopedia.
:description: Description of the object, as displayed in the cyclopedia, on the market, or if one looks at the object. Only used for some objects.