Color Masks Property - Floogen/FashionSense GitHub Wiki

What are Color Masks?

Color masks allow mod authors to specify a list of RGB colors to target for color overlays.

If both the ColorMasks and ColorMaskLayers properties are excluded, then the whole sprite will be targeted by the player's color choice.

Note: All color masks are ignored if DisableGrayscale is set to true.

Properties

Property Required Description Default
ColorMasks true The list of RGB colors to use for the color masking / replacement. []

What is the difference between Color Masks and Color Mask Layers?

While Color mask layers act primarily the same as the ColorMasks property, the following should be noted:

  • ColorMaskLayers allows for multiple colorable sections, while ColorMasks only allows for one colorable section to be set.
  • ColorMaskLayers can "protect" colors of an appearance by using its IgnoreUserColorChoice property.

Note: Using ColorMasks and ColorMaskLayers together is not supported.

Multiple Color Targets

Multiple RGB colors can be targeted via ColorMasks, allowing mod authors to specify colors within the sprite that change according to the player's own color choice.

Note: The RGB colors listed in ColorMasks do not have to be grayscale, as they can be any possible RGB color.

Additional note: If the color given is not grayscale, then the color overlay will be treated as additive. This means the resulting color will be a different hue compared to any grayscale counterpart.

Example Usage

Below is the Colorable Mouse Ears, found in the example pack.

Notice that only one color is given (191, 183, 181), which outlines the ears of the sprite.

This means the player's color choice will only be applied to the outline color (191, 183, 181), while the rest of the sprite's color will remain the same.

{
  "Name": "Colorable Mouse Ears",
  "FrontHat": {
    "ColorMasks": [
      [ 191, 183, 181 ]
    ],
    "StartingPosition": {
      "X": 0,
      "Y": 0
    },
    "HeadPosition": {
      "X": -2,
      "Y": 0
    },
    "HatSize": {
      "Width": 16,
      "Length": 16
    }
  }
}

Example sprite: