0x2ac577e2
Bool = false When true, the player gets a mute button for their own skin music. Shipped data sets
it on Seraphine and a few skins with theme music.
PBE 16.23 changes this class. This page shows the live definition. PBE changes
Data for one skin of a character: mesh, animation graph, audio, icons, loading-screen art, idle effects, and some HUD and audio options. Every character has at least one, including sub-units, minions, monsters, structures, companions and TFT units.
A skin is the object at Characters/<Character>/Skins/Skin<N>, where <N> is the skin
number the unit is created with. The client looks for these objects in order:
Characters/<Character>/Skins/Skin<N>Characters/<Name>/Skins/Skin<N>, where <Name> is the character's
CharacterRecord.mFallbackCharacterNameCharacters/<Character>/Skins/Skin0The client uses the first object it finds. It loads mResourceResolver, the icons, the
preloads and the audio, then builds the mesh from skinMeshProperties and loads the
animation graph. If the mesh cannot be built, the character does not load, and the client
does not try another skin.
A chroma is a complete skin object and does not inherit data from its base skin.
skinClassification and skinParent only change the chroma's display name.
Bool = false When true, the player gets a mute button for their own skin music. Shipped data sets
it on Seraphine and a few skins with theme music.
U8 = 2 U32 U8 Removed from current builds. The same field is now part of 0x81169a8b.
U8 = 0 U32 U8 Never read by the game client, and no shipped skin sets it.
String = "" A path to a chroma preview image, ASSETS/Characters/<Character>/Skins/Skin<N>/ChromaPreview.tex.
No reader was found in the game client.
Removed from current builds. The same field is now part of 0x81169a8b.
A spawn-in sequence, started by a server message. It plays one sequence for each team and an animation on the unit. See SpawnInSequence. The code that plays it is behind a client feature flag, and no shipped skin sets it.
String = "" No documentation available yet. Click "Add documentation" to contribute!
Removed from current builds. The same field is now part of 0x81169a8b.
Keyed by a character name. Shipped data uses it only on Ivern skins, with the key IvernTotem. No reader was found.
{
"0x2d790b62": 2,
"0x41796e8e": "0x0",
"0x575e63f2": "0x0",
"0x73548d8b": "0x0",
"0x7b6954ef": "0x0"
}See 0x81169a8b. No shipped skin sets it.
String = "" No documentation available yet. Click "Add documentation" to contribute!
String = "" No reader was found, and no shipped skin sets it.
U8 = 0 No reader was found, and no shipped skin sets it.
Damage-number formats for specific spells. Each entry lists spells and the formats to use for their physical, magical and true damage, critical hits and absorbed damage. When the unit's damage comes from a listed spell, the first matching entry's formats are used. Shipped data uses it only on one Samira skin.
I32 = -1 No reader was found, and no shipped skin sets it.
Bool = false No reader was found, and no shipped skin sets it.
A set of restyled announcements, for example the kill-streak banners. Shipped data sets it only on Hall of Legends skins. No reader was found in the game client.
A UI material for the skin. Shipped data sets it only on Hall of Legends skins. No reader was found in the game client.
String = "" No documentation available yet. Click "Add documentation" to contribute!
Option<File> = null Option<String> Option<File> A texture that is loaded with the skin when set. No reader of the loaded texture was found, and no shipped skin sets it.
Bool = true When true, teammates get a mute button for this player's skin music on their HUD.
When false, they do not. Whether the player gets the button on their own row is set by
0x2ac577e2.
Store data for a chroma: its preset and rarity overrides. No reader was found in the game client.
U32 = 0 Shipped data sets 3 on Gangplank and 5 on Ornn. No reader was found in the game client.
String = "" The Wwise event posted when a player mutes this unit with its HUD mute button. The client
does not mute anything else, so the event must do the muting. Shipped events mute a music
bus. Only teammates get the button, and only when this event or HudUnmuteEvent is set.
String = "" The Wwise event posted when a player unmutes this unit. Set together with HudMuteEvent.
String = "" A string-table key for the name the unit shows in game. When it is set, it is used instead of the character's own name. Shipped data uses it only for the practice-tool target dummy.
Effects and submesh changes that apply while a condition is true. Each entry is checked continuously:
OwnerCondition is evaluated on the unit and SourceCondition on the source unit. A
condition that is not set counts as true.PersistentVfxs are spawned once, and SubmeshesToShow and
SubmeshesToHide apply.The submesh changes of all true entries add up. Gear changes register the list again.
BuffData.PersistentEffectConditions uses the same system. See
PersistentEffectConditionData.
List<File> = [] List<String> List<File> Other round icons for the skin. All of them are loaded with the skin, and the server
selects one by its index in this list. The selected icon replaces iconAvatar.
Shipped data uses it for Lillia.
List<File> = [] List<String> List<File> Other square icons for the skin, loaded with the skin and selected by the same mechanism as alternateIconsCircle.
String = "" A material name such as Flesh, Metal, Stone or Wood. No reader of this field was
found. The unit's armor material used in game comes from another source.
U32 = 0 Bit flags. Shipped data sets only the value 1, on a mixed set of skins. No reader was found in the game client.
I32 = 0 A global skin number. In shipped data it is the champion's numeric id times 1000, plus
the skin number: Ahri's Skin8 is 103008. How the client uses it is not yet
identified.
String = "" The name used in the skin's sound event names, as in Play_sfx_AhriSkin04_AhriQ_OnCast.
When it is empty, the character name is used.
List<String> = [] Animations started on the unit when its animation graph is set up, and again when it is refreshed. Each name is an animation of the skin's graph.
String = "Root" No reader was found in the game client.
Hash = "0x0" The object path of a SkinSummonerEmoteLoadout. It is used for a unit that has no player emote loadout of its own.
F32 = 0 Moves the summoner emote up (positive) or down (negative) from its default position, which is above the health bar. The offset is in screen space, so camera zoom does not change it.
String = "" The name written for this unit in the TFT end-of-game statistics. Shipped data sets it only in the TFT tutorial.
List<String> = [] Names of other characters to load together with this one, such as Anivia's egg. Each is
loaded with the same skin number as the owner, through the normal skin lookup, and stays
loaded as long as the owner does. Preloaded characters load their own
extraCharacterPreloads too. A name that fails to load is skipped without a message.
String = "BUFFBONE_GLB_GROUND_LOC" No reader was found in the game client.
Embed<CharacterHealthBarDataRecord> {
"unitHealthBarStyle": 0,
"attachToBone": "",
"hpPerTick": 0,
"ShowCharacterStateIndicatorToAllies": false,
"ShowCharacterStateIndicatorOnStartGame": false,
"ShowCharacterStateIndicatorToEnemies": false,
"showWhileUntargetable": false,
"AlphaOutWhileUntargetable": true,
"CharacterStateIndicatorMaxCount": 0
}The unit's health bar settings. See CharacterHealthBarDataRecord.
File = "0x0" String File The hero portrait. When it is not set, iconCircle is used. An alternate icon that the
server selects from alternateIconsCircle takes priority.
Option<File> = null Option<String> Option<File> The round portrait of the unit, used by the HUD and other UI. An entry of
uncensoredIconCircles replaces it when the censorship check accepts the entry.
Option<F32> = null Scale of iconCircle in some icon displays. When it is not set, the scale is 1.
Shipped data sets 1.2 on epic monsters and buff camps.
Option<File> = null Option<String> Option<File> The square portrait of the unit. An entry of uncensoredIconSquares replaces it when the
censorship check accepts the entry.
Effects that play on the unit while it is alive. They start when the skin is applied,
stop when the unit dies, and restart when the skin, model or gear changes. A gear with
its own OverrideIdleEffects replaces this list while it is equipped.
Each entry is spawned as follows:
effectKey is resolved through the unit's resource resolvers and then the global
resolvers. It takes priority over effectName. A key that no resolver has spawns
nothing, and effectName is not used instead.effectName is a particle name, used only when effectKey is not set.boneName is the bone the effect is placed on and attached to. When it is empty, the
effect is attached to the unit.targetBoneName attaches the effect's target end to that bone of the unit.An entry with neither effectKey nor effectName is skipped.
The skin's loading-screen art. The loading screen shows the first entry of
UncensoredImages that the censorship check accepts (see uncensoredIconCircles).
If none is accepted, it shows loadscreenVintage when the player has vintage art turned
on, and image otherwise.
The loading-screen art for a player with vintage art turned on. The game start data sets
this per player. Only image is read, not UncensoredImages.
More resource resolvers. No reader was found in the game client.
The unit's ContextualActionData. A unit without it gets no contextual action component, unless the unit type always gets one, which is probably the case for champions.
Emblems drawn on the loading-screen card. Only the first entry is used. It is shown when
the client setting DisplayTencentEmblems is on, and in some other cases that are not
yet identified.
The skin's ResourceResolver, which maps effect keys to effect definitions. When the skin is found, every target of the resolver is loaded.
String = "" A particle name spawned at the unit's position when the unit spawns. It plays only if the unit is created on the client within 0.25 seconds of its spawn time, so a unit that first appears later, for example when it comes into view, does not play it. Shipped data uses it for minion spawns.
String = "" Comma-separated key:value tags, such as faction, gender, race and skinline. No
reader was found in the game client.
Hash = "0x0" The path hash of this skin object. In shipped data it always equals the object's own entry key. It is passed to the effects that the skin spawns.
String = "" A particle name, preloaded with the skin. All shipped values are doesnotexist.troy,
which loads no particle.
String = "" A particle name, preloaded with the skin. Shipped data sets it on structures, for example turret, inhibitor and Nexus explosions.
How the HUD shows the unit's secondary resource. Shipped data sets it only to
SecondaryResourceDisplayFractional, on Yorick. No reader was found in the game client.
Links to the skin's animation graph. There is no fallback to another skin's graph. When
the graph loads, the client preloads every particle event in its clips whose name ends
in .troy.
Embed<SkinAudioProperties> = { "PlaysVo": true, "tagEventList": [], "bankUnits": [] } The skin's sound banks, sound event tags and the PlaysVo switch. When PlaysVo is
false, the unit plays no voice-over events. Shipped data sets it to false only on
companion-type units, such as Teemo's mushrooms and Yorick's ghouls.
U32 = 0 The kind of skin. The client only checks for 2, which marks a chroma. A chroma is
named after its skinParent.
| Value | Shipped on |
|---|---|
1 |
base and purchasable skins |
2 |
chromas |
| unset | sub-units, map units, companions and TFT units |
Embed<SkinMeshDataProperties> {
"reflectionOpacityDirect": 0,
"reflectionFresnel": 1,
"reflectionOpacityGlancing": 1,
"RoughnessMetallicAoTexture": "0x0",
"materialOverride": [],
"selfIllumination": 0,
"ForceDrawLast": false,
"submeshRenderOrder": "",
"EmitterSubmeshAvatarToHide": "",
"initialSubmeshMouseOversToHide": "",
"fresnelColor": [0, 0, 0, 255],
"texture": "0x0",
"SocketDefinitions": [],
"boundingCylinderRadius": 50,
"reflectionFresnelColor": [255, 255, 255, 255],
"overrideBoundingBox": null,
"boundingCylinderHeight": 150,
"materialController": null,
"initialSubmeshToHide": "",
"0x8881ee77": null,
"fresnel": 0,
"boundingSphereRadius": null,
"OutlineCategorySubmeshes": [],
"emissiveTexture": "0x0",
"skinScale": 1,
"castShadows": true,
"skeleton": "",
"EnablePicking": true,
"InitialSubmeshAvatarToHide": "",
"brushAlphaOverride": 0.25,
"Material": "0x0",
"ReducedBoneSkinning": false,
"simpleSkin": "",
"reflectionMap": "0x0",
"glossTexture": "0x0",
"usesSkinVO": false,
"normalMapTexture": "0x0",
"rigPoseModifierData": [],
"initialSubmeshShadowsToHide": ""
}The skin's mesh, skeleton, textures and materials. See SkinMeshDataProperties.
I32 = -1 The skin number of the skin this chroma belongs to. Read only when skinClassification
is 2. The chroma's display name is built from the parent,
game_character_skin_displayname_<Character>_<skinParent>, and skin-number conditions
that are set to accept a chroma compare against the parent.
Embed<SkinUpgradeData> {
"SkinAugmentCategories": { "BorderAugments": [], "BasicAugments": [] },
"mGearSkinUpgrades": []
}Gear and augment data. The gear list of mGearSkinUpgrades becomes the unit's gear
list when the unit is created. Switching gear changes the unit's submeshes, materials,
animations, idle effects and persistent effects.
Bool = false Removed from current builds.
List<String> = [] The skin's theme music, as a list of Wwise event names. The server selects which track plays and when, by its index in this list. An index outside the list is ignored.
When the list is not empty, the HUD offers teammates a button to mute this player's
music. See CanShareThemeMusic, HudMuteEvent and HudUnmuteEvent.
Map<Hash, File> = {} Map<Hash, String> Map<Hash, File> Replacements for iconCircle, keyed by the hash of a content category such as
tobacco. An entry is used when the client's censorship table allows its category for
the current game. When the table is missing or does not allow the category, the default
icon is shown.
Map<Hash, File> = {} Map<Hash, String> Map<Hash, File> Replacements for iconSquare, chosen the same way as uncensoredIconCircles.
String = "" Removed from current builds.