Skip to content

SkinCharacterDataProperties

Changed on PBE 16.23

PBE 16.23 changes this class. This page shows the live definition. PBE changes

Inheritance 1 descendant

Class Documentation

Edit documentation

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:

  1. Characters/<Character>/Skins/Skin<N>
  2. Characters/<Name>/Skins/Skin<N>, where <Name> is the character's CharacterRecord.mFallbackCharacterName
  3. Characters/<Character>/Skins/Skin0

The 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.

Changes on PBE 16.23

0x957f2fcc removed String
0xee05e09 re-added String

Properties

0x2ac577e2

Bool = false
15.13
Edit documentation

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.

0x2d790b62

U8 = 2
Removed in 16.9 16.5
Type history (2 revisions)
  • 16.5 - 16.7 U32
  • 16.8 - 16.8 U8
Edit documentation

Removed from current builds. The same field is now part of 0x81169a8b.

0x46558f0e

U8 = 0
15.19
Type history (2 revisions)
  • 15.19 - 16.7 U32
  • since 16.8 U8
Edit documentation

Never read by the game client, and no shipped skin sets it.

0x55d3758e

String = ""
16.16
Edit documentation

A path to a chroma preview image, ASSETS/Characters/<Character>/Skins/Skin<N>/ChromaPreview.tex. No reader was found in the game client.

0x62ca0ae

Pointer<SpawnInSequence> = null
15.19
Edit documentation

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.

0x6911966a

String = ""
16.20
Add documentation

No documentation available yet. Click "Add documentation" to contribute!

0x7b6954ef

Link<Sequence> = "0x0"
Removed in 16.9 16.8
Edit documentation

Removed from current builds. The same field is now part of 0x81169a8b.

0x7d564f9a

Map<String, 0x7d564f9a> = {}
16.9
Edit documentation

Keyed by a character name. Shipped data uses it only on Ivern skins, with the key IvernTotem. No reader was found.

0x81169a8b

Embed<0x81169a8b>
16.9
Default value
{
  "0x2d790b62": 2,
  "0x41796e8e": "0x0",
  "0x575e63f2": "0x0",
  "0x73548d8b": "0x0",
  "0x7b6954ef": "0x0"
}
Edit documentation

See 0x81169a8b. No shipped skin sets it.

0x957f2fcc

String = ""
16.21
Add documentation

No documentation available yet. Click "Add documentation" to contribute!

0x9cf5d363

String = ""
16.16
Edit documentation

No reader was found, and no shipped skin sets it.

0xad74545b

U8 = 0
16.4
Edit documentation

No reader was found, and no shipped skin sets it.

0xb67a2dd8

List<0x9c1d99c0> = []
Edit documentation

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.

0xbf8e9bae

I32 = -1
15.22
Edit documentation

No reader was found, and no shipped skin sets it.

0xe02ae791

Bool = false
15.23
Edit documentation

No reader was found, and no shipped skin sets it.

0xe484edc4

Link<0x48f3fe52> = "0x0"
13.23
Edit documentation

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.

0xeda7817e

Link<StaticMaterialDef> = "0x0"
13.22
Edit documentation

A UI material for the skin. Shipped data sets it only on Hall of Legends skins. No reader was found in the game client.

0xee05e09

String = ""
Removed in 16.21 16.21
Add documentation

No documentation available yet. Click "Add documentation" to contribute!

0xffdf3bd9

Option<File> = null
16.6
Type history (2 revisions)
  • 16.6 - 16.16 Option<String>
  • since 16.17 Option<File>
Edit documentation

A texture that is loaded with the skin when set. No reader of the loaded texture was found, and no shipped skin sets it.

CanShareThemeMusic

Bool = true
Edit documentation

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.

ChromaData

Pointer<IChromaData> = null
15.11
Edit documentation

Store data for a chroma: its preset and rarity overrides. No reader was found in the game client.

ExtraActionButtonCount

U32 = 0
Edit documentation

Shipped data sets 3 on Gangplank and 5 on Ornn. No reader was found in the game client.

HudMuteEvent

String = ""
Edit documentation

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.

HudUnmuteEvent

String = ""
Edit documentation

The Wwise event posted when a player unmutes this unit. Set together with HudMuteEvent.

OverrideOnScreenName

String = ""
Edit documentation

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.

PersistentEffectConditions

List2<PersistentEffectConditionData> = []
Edit documentation

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.
  • While both are true, PersistentVfxs are spawned once, and SubmeshesToShow and SubmeshesToHide apply.
  • When either turns false, the entry's effects are removed and its submesh changes are undone.

The submesh changes of all true entries add up. Gear changes register the list again. BuffData.PersistentEffectConditions uses the same system. See PersistentEffectConditionData.

alternateIconsCircle

List<File> = []
Removed in 16.20
Type history (2 revisions)
  • 13.15 - 16.16 List<String>
  • 16.17 - 16.19 List<File>
Edit documentation

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.

alternateIconsSquare

List<File> = []
Removed in 16.20
Type history (2 revisions)
  • 13.15 - 16.16 List<String>
  • 16.17 - 16.19 List<File>
Edit documentation

Other square icons for the skin, loaded with the skin and selected by the same mechanism as alternateIconsCircle.

armorMaterial

String = ""
Edit documentation

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.

attributeFlags

U32 = 0
Edit documentation

Bit flags. Shipped data sets only the value 1, on a mixed set of skins. No reader was found in the game client.

championSkinId

I32 = 0
16.19
Edit documentation

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.

championSkinName

String = ""
Edit documentation

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.

defaultAnimations

List<String> = []
Edit documentation

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.

emoteBuffbone

String = "Root"
Edit documentation

No reader was found in the game client.

emoteYOffset

F32 = 0
Edit documentation

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.

endOfGameAlias

String = ""
Edit documentation

The name written for this unit in the TFT end-of-game statistics. Shipped data sets it only in the TFT tutorial.

extraCharacterPreloads

List<String> = []
Edit documentation

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.

godrayFXbone

String = "BUFFBONE_GLB_GROUND_LOC"
Edit documentation

No reader was found in the game client.

healthBarData

Embed<CharacterHealthBarDataRecord>
Default value
{
  "unitHealthBarStyle": 0,
  "attachToBone": "",
  "hpPerTick": 0,
  "ShowCharacterStateIndicatorToAllies": false,
  "ShowCharacterStateIndicatorOnStartGame": false,
  "ShowCharacterStateIndicatorToEnemies": false,
  "showWhileUntargetable": false,
  "AlphaOutWhileUntargetable": true,
  "CharacterStateIndicatorMaxCount": 0
}
Edit documentation

The unit's health bar settings. See CharacterHealthBarDataRecord.

iconAvatar

File = "0x0"
Type history (2 revisions)
  • 13.15 - 16.16 String
  • since 16.17 File
Edit documentation

The hero portrait. When it is not set, iconCircle is used. An alternate icon that the server selects from alternateIconsCircle takes priority.

iconCircle

Option<File> = null
Type history (2 revisions)
  • 13.15 - 16.16 Option<String>
  • since 16.17 Option<File>
Edit documentation

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.

iconCircleScale

Option<F32> = null
Edit documentation

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.

iconSquare

Option<File> = null
Type history (2 revisions)
  • 13.15 - 16.16 Option<String>
  • since 16.17 Option<File>
Edit documentation

The square portrait of the unit. An entry of uncensoredIconSquares replaces it when the censorship check accepts the entry.

idleParticlesEffects

List<SkinCharacterDataProperties_CharacterIdleEffect> = []
Edit documentation

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.

loadscreen

Embed<CensoredImage> = { "UncensoredImages": {}, "image": "0x0" }
Edit documentation

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.

loadscreenVintage

Embed<CensoredImage> = { "UncensoredImages": {}, "image": "0x0" }
Edit documentation

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.

mEmblems

List<SkinEmblem> = []
Edit documentation

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.

mSpawnParticleName

String = ""
Edit documentation

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.

metaDataTags

String = ""
Edit documentation

Comma-separated key:value tags, such as faction, gender, race and skinline. No reader was found in the game client.

objectPath

Hash = "0x0"
16.16
Edit documentation

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.

particleOverride_ChampionKillDeathParticle

String = ""
Edit documentation

A particle name, preloaded with the skin. All shipped values are doesnotexist.troy, which loads no particle.

particleOverride_DeathParticle

String = ""
Edit documentation

A particle name, preloaded with the skin. Shipped data sets it on structures, for example turret, inhibitor and Nexus explosions.

secondaryResourceHudDisplayData

Pointer<ISecondaryResourceDisplayData> = null
Edit documentation

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.

skinAnimationProperties

Embed<SkinAnimationProperties> = { "animationGraphData": "0x0" }
Edit documentation

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.

skinAudioProperties

Embed<SkinAudioProperties> = { "PlaysVo": true, "tagEventList": [], "bankUnits": [] }
Edit documentation

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.

skinClassification

U32 = 0
Edit documentation

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

skinMeshProperties

Embed<SkinMeshDataProperties>
Default value
{
  "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": ""
}
Edit documentation

The skin's mesh, skeleton, textures and materials. See SkinMeshDataProperties.

skinParent

I32 = -1
Edit documentation

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.

skinUpgradeData

Embed<SkinUpgradeData>
Default value
{
  "SkinAugmentCategories": { "BorderAugments": [], "BasicAugments": [] },
  "mGearSkinUpgrades": []
}
Edit documentation

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.

skipVOOverride

Bool = false
Removed in 16.6
Edit documentation

Removed from current builds.

themeMusic

List<String> = []
Edit documentation

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.

uncensoredIconCircles

Map<Hash, File> = {}
Type history (2 revisions)
  • 13.15 - 16.16 Map<Hash, String>
  • since 16.17 Map<Hash, File>
Edit documentation

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.

uncensoredIconSquares

Map<Hash, File> = {}
Type history (2 revisions)
  • 13.15 - 16.16 Map<Hash, String>
  • since 16.17 Map<Hash, File>
Edit documentation

Replacements for iconSquare, chosen the same way as uncensoredIconCircles.

voiceOverOverride

String = ""
Removed in 16.6
Edit documentation

Removed from current builds.