Skip to content
Snippets Groups Projects
20-canvasmodel-combat-close-chest.js 2.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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);
    
    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;