init python:
    class DollLipstick(DollCloth):

        def set_imagepath(self):
            self.imagepath = "{}/characters/{}/clothes/makeup/lipstick/".format(self.modpath, self.name)

        def set_layers(self):
            for x in self.layers_special:
                self.__dict__[x] =  None

            for x in self.layers_additional:
                self.__dict__[x] = []
                for i in xrange(self.layers):
                    path = "{}{}_{}.webp".format(self.imagepath, i, x)
                    if renpy.loadable(path):
                        self.__dict__[x].append(path)
                self.__dict__[x+"_outline"] = None

            return

        def build_image(self):
            mouth = self.char.face.face["mouth"][0]
            sprites = ((self.apply_color("{}{}.webp".format(self.imagepath, mouth), 0)), )
            return sprites

        def build_icon(self):
            mouth = "base" #HARDCODED
            sprites = (self.char.body.get_mannequin([self]), self.apply_color("{}{}.webp".format(self.imagepath, mouth), 0), )
            bounds = "{}{}.webp".format(self.imagepath, mouth)

            wmax, hmax = self.sizes
            wmin = hmin = 96

            x, y, w, h = crop_whitespace(bounds)
            xoffset, yoffset = w/2, h/2

            w = h = max(w, h, wmin, hmin)

            w = max(wmin, w + w/2)
            h = max(hmin, h + h/2)

            x = clamp( (x - w/2) + xoffset, 0, wmax)
            y = clamp( (y - h/2) + yoffset, 0, hmax)

            # Forbid exceeding the image height.
            if y+h > hmax:
                y = hmax-h

            return Transform(Fixed(*sprites, fit_first=True), crop=(x, y, w, h))

        def set_pose(self, pose):
            if pose is None:
                path = "{}/characters/{}/clothes/makeup/lipstick/".format(self.modpath, self.name)
                self.imagepath = path
            else:
                path = "{}/characters/{}/poses/{}/clothes/makeup/lipstick/".format(self.modpath, self.name, pose)
                if renpy.loadable(path + "base.webp"):
                    self.imagepath = path

            self.rebuild_image()
            return

        def clone(self):
            """Creates a clone of this lipstick object. Since it requires a parent object it should be used internally only to avoid object depth issue."""
            return DollLipstick(self.name, self.categories, self.type, self.id, [x[:] for x in self.color], self.zorder, self.unlocked, self.level, self.blacklist, self, self.armfix, self.modpath)
