Skip to content
Snippets Groups Projects
20-canvasmodel-combat-close-chest.js 2.41 KiB
Newer Older
Jimmys's avatar
Jimmys committed
// @ts-check
Kirsty's avatar
Kirsty committed
/* globals CombatRenderer, CloseCombatMapper, CloseOptions */
Jimmys's avatar
Jimmys committed

/**
 * @type {CanvasModelOptions<CloseOptions>}
 */
const combatCloseChest = {
	name: "combatCloseChest",
	width: 64,
	height: 64,
xao's avatar
xao committed
	scale: true,
Jimmys's avatar
Jimmys committed
	frames: 6,
	generatedOptions() {
		return [];
	},
	defaultOptions() {
Kirsty's avatar
Kirsty committed
		return { ...CloseCombatMapper.generateOptions(), ...this.metadata };
Jimmys's avatar
Jimmys committed
	},
	preprocess(options) {
Kirsty's avatar
Kirsty committed
		CloseCombatMapper.mapCloseOptions(options);
		if (V.debug) {
			// Save options for easy lookup
			CombatRenderer.options[this.name] = options;
		}
Jimmys's avatar
Jimmys committed
	},
	layers: {
		chest: {
			srcfn(options) {
				return `${options.src}chest/${options.chest.base}.png`;
			},
			showfn(options) {
				return !!options.showChest;
			},
			animationfn(options) {
				return options.animKeyChest;
			},
			filters: ["body"],
Kirsty's avatar
Kirsty committed
			z: CombatRenderer.indices.closeBase,
Jimmys's avatar
Jimmys committed
		},
		breasts: {
			srcfn(options) {
				return `${options.src}chest/${options.chest.breasts}-job.png`;
			},
			showfn(options) {
				return !!options.showChest && options.chest.base === "base-job" && V.player.breastsize > 0;
			},
			animationfn(options) {
				return options.animKeyChest;
			},
			filters: ["body"],
Kirsty's avatar
Kirsty committed
			z: CombatRenderer.indices.closeNpc + 1,
Jimmys's avatar
Jimmys committed
		},
		npc: {
			srcfn(options) {
				return `${options.src}chest/npc/${options.chest.npc}.png`;
			},
			showfn(options) {
Kirsty's avatar
Kirsty committed
				return !!options.showChest && ["penis", "tentacle"].includes(V.chestuse.toString());
Jimmys's avatar
Jimmys committed
			},
			animationfn(options) {
				return options.animKeyChest;
			},
			filtersfn(options) {
				return options.chest.npc === "tentacle" ? ["chestTentacle"] : ["chestNpc"];
			},
			alphafn(options) {
				const isWraith = ["tentacles-wraith", "tentacles-wraith-penetrated"].includes(V.tentacleColour);
				return options.chest.npc === "tentacle" && isWraith ? 0.8 : 1;
			},
			brightnessfn(options) {
				const isWraith = ["tentacles-wraith", "tentacles-wraith-penetrated"].includes(V.tentacleColour);
				return options.chest.npc === "tentacle" && isWraith ? 0.2 : 0;
			},
Kirsty's avatar
Kirsty committed
			z: CombatRenderer.indices.closeNpc,
Jimmys's avatar
Jimmys committed
		},
		npcCondom: {
			srcfn(options) {
				return `${options.src}chest/npc/penis-condom.png`;
			},
			showfn(options) {
				return !!options.showChest && options.chest.npc === "penis" && !!options.chest.condom;
			},
			animationfn(options) {
				return options.animKeyChest;
			},
			filters: ["chestCondom"],
			alpha: 0.4,
Kirsty's avatar
Kirsty committed
			z: CombatRenderer.indices.closeNpc,
Jimmys's avatar
Jimmys committed
		},
	},
};
Renderer.CanvasModels.combatCloseChest = combatCloseChest;