Skip to content
Snippets Groups Projects
22-canvasmodel-combat-xray-penis.js 3.15 KiB
Newer Older
  • Learn to ignore specific revisions
  • Purity's avatar
    Purity committed
    // @ts-check
    
    Jimmys's avatar
    Jimmys committed
    /* globals CombatRenderer, XrayCombatMapper, XrayOptions */
    
    Purity's avatar
    Purity committed
    
    /**
     * @type {CanvasModelOptions<XrayOptions>}
     */
    const combatXrayPenis = {
    	name: "combatXrayPenis",
    
    Jimmys's avatar
    Jimmys committed
    	width: 256,
    	height: 120,
    
    Purity's avatar
    Purity committed
    	scale: true,
    	frames: 8,
    	generatedOptions() {
    		return [];
    	},
    	defaultOptions() {
    		return { ...XrayCombatMapper.generateOptions(), ...this.metadata };
    	},
    	preprocess(options) {
    		XrayCombatMapper.mapXrayOptions(options);
    
    		if (V.debug) {
    			// Save options for easy lookup
    			CombatRenderer.options[this.name] = options;
    		}
    
    Purity's avatar
    Purity committed
    	},
    	layers: {
    		base: {
    			srcfn(options) {
    				const base = ["machine", "tentacle"].includes(options.penis.penetratedType) ? options.penis.base + "_tentacle" : options.penis.base;
    				const baseSize = options.penis.size ? "_size" + options.penis.size : "";
    				return `${options.src}${options.penis.penetrated}/${base}${baseSize}.png`;
    			},
    			showfn(options) {
    				return options.penis.penetrated === "vaginal" ? !!options.showNpcVagina : !!options.showNpcArse;
    			},
    			animationfn(options) {
    				return options.animKeyPenis;
    			},
    
    Purity's avatar
    Purity committed
    			filters: ["penisPenetrated"],
    
    Purity's avatar
    Purity committed
    			z: CombatRenderer.indices.xrayBase,
    		},
    		playerPenis: {
    			srcfn(options) {
    				const playerPenis = options.penis.playerSprite;
    				const size = options.penis.size ? "_size" + options.penis.size : "";
    				return `${options.src}${options.penis.penetrated}/${playerPenis}${size}.png`;
    			},
    			showfn(options) {
    				return !!options.showPcPenis;
    			},
    			animationfn(options) {
    				return options.animKeyPenis;
    			},
    
    Purity's avatar
    Purity committed
    			filtersfn(options) {
    				if (playerHasStrapon()) {
    					return ["worn_under_lower_main"];
    				}
    				if (options.penis.type === "parasite") {
    					return ["parasite"];
    				}
    				return ["body"];
    			},
    
    Purity's avatar
    Purity committed
    			z: CombatRenderer.indices.xrayPenetrator,
    		},
    		playerCum: {
    			srcfn(options) {
    				const size = options.penis.size ? "_size" + options.penis.size : "";
    
    Purity's avatar
    Purity committed
    				const cumAmt = options.penis.penetrated === "vaginal" ? "_cum" + V.otherFilled : "_cum";
    
    Purity's avatar
    Purity committed
    				return `${options.src}${options.penis.penetrated}/cum/${options.penis.base}${size}${cumAmt}.png`;
    			},
    			showfn(options) {
    
    Purity's avatar
    Purity committed
    				return !!options.penis.showCum && V.otherFilled >= 1;
    
    Purity's avatar
    Purity committed
    			},
    			animationfn(options) {
    				return options.animKeyPenis;
    			},
    			filters: [],
    			z: CombatRenderer.indices.xrayCum,
    		},
    		playerEjac: {
    			srcfn(options) {
    				const cumSize = options.penis.size ? "_size" + options.penis.size + "_cumming" : "";
    				return `${options.src}${options.penis.penetrated}/cum/${options.penis.base}${cumSize}.png`;
    			},
    			showfn(options) {
    
    Purity's avatar
    Purity committed
    				return !!options.penis.showCum && !!options.penis.isCumActive;
    
    Purity's avatar
    Purity committed
    			},
    			animationfn(options) {
    				return options.animKeyPenis;
    			},
    			filters: [],
    			z: CombatRenderer.indices.xrayEjac,
    		},
    		playerCondom: {
    			srcfn(options) {
    				const conSize = "_size" + options.penis.size;
    				return `${options.src}${options.penis.penetrated}/tentacle${conSize}.png`;
    			},
    			showfn(options) {
    
    Purity's avatar
    Purity committed
    				return !!options.showPcPenis && !!options.penis.condom.worn;
    
    Purity's avatar
    Purity committed
    			},
    			animationfn(options) {
    				return options.animKeyPenis;
    			},
    			alpha: 0.4,
    			filters: ["playerCondom"],
    			z: CombatRenderer.indices.xrayCondom,
    		},
    	},
    };
    Renderer.CanvasModels.combatXrayPenis = combatXrayPenis;