diff --git a/game/03-JavaScript/ingame.js b/game/03-JavaScript/ingame.js index d7b50ff677813d71c79c461ce209a121db50a29b..0e37ecdd74f94d263f00465744c65fc175b3585f 100644 --- a/game/03-JavaScript/ingame.js +++ b/game/03-JavaScript/ingame.js @@ -1131,13 +1131,13 @@ function isConnectedToHood(slot) { // Return false if slot is undefined or not a valid clothing category if (!slot || !V.worn[slot]) return false; // Return true if this item IS a hood - if (V.worn[slot].hood) return true; + if (V.worn[slot].hood && V.worn[slot].outfitSecondary[1] !== "broken") return true; // Use the primary clothing slot for the next check if this item is connected to an outfit (and is not the primary item) if (V.worn[slot].outfitSecondary && V.worn[slot].outfitSecondary[1] !== "broken"){ slot = V.worn[slot].outfitSecondary[0]; } - if (V.worn[slot].outfitPrimary && V.worn[slot].outfitPrimary.head && V.worn[slot].outfitPrimary.head !== "broken" && V.worn.head.hood){ + if (V.worn[slot].hoodposition && (V.worn[slot].hoodposition == "down" || (V.worn[slot].hoodposition == "up" && V.worn[slot].outfitPrimary.head !== "broken" && V.worn.head.hood == 1))){ return true; } return false; diff --git a/game/04-Variables/canvasmodel-main.js b/game/04-Variables/canvasmodel-main.js index 682b5ea2591ac91783c96c3738f7ff3ffc4f5468..77a5719726a53a46461da53c0960ea09ffc53c57 100644 --- a/game/04-Variables/canvasmodel-main.js +++ b/game/04-Variables/canvasmodel-main.js @@ -2354,8 +2354,8 @@ function genlayer_clothing_main(slot, overrideOptions) { return Object.assign({ srcfn(options) { let isHoodDown = options.hood_down && - options["worn_" + slot + "_setup"].hood && - options["worn_" + slot + "_setup"].outfitSecondary !== undefined; + options["worn_" + slot + "_setup"].hoodposition !== undefined && + options["worn_" + slot + "_setup"].outfitPrimary.head !== undefined; let path = 'img/clothes/' + slot + '/' + options["worn_" + slot + "_setup"].variable + '/' + @@ -2380,8 +2380,8 @@ function genlayer_clothing_accessory(slot, overrideOptions) { srcfn(options) { let setup = options["worn_" + slot + "_setup"]; let isHoodDown = options.hood_down && - setup.hood && - setup.outfitSecondary !== undefined; + setup.hoodposition !== undefined && + setup.outfitPrimary.head !== undefined; let path = 'img/clothes/' + slot + '/' + setup.variable + '/' + diff --git a/game/04-Variables/variables-start2.twee b/game/04-Variables/variables-start2.twee index b47de5db6889c0daada4188894bbac6b181a6de8..c7bdabd611fa6a455570dc9ec9d805694dcd290f 100644 --- a/game/04-Variables/variables-start2.twee +++ b/game/04-Variables/variables-start2.twee @@ -288,6 +288,8 @@ rng: random(0,1000) }>> +<<set $retrieveShopCustomColor to {}>> + <<set $customColors to { presets:{}, action: "set", diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee index fd4ca3144eac52b2a3cb7f4635ec5ea5e88291a7..083026709494c4c18d181f1606fd3a60f3751944 100644 --- a/game/04-Variables/variables-versionUpdate.twee +++ b/game/04-Variables/variables-versionUpdate.twee @@ -2646,9 +2646,9 @@ <<run window.backCompPillsInventory()>> /* restructure V.sexStats.pills inventory */ <<set $runWardrobeSanityChecker to true>> - <<if $objectVersion.updateClothes lt 30 or $objectVersion.updateClothes is undefined>> + <<if $objectVersion.updateClothes lt 31 or $objectVersion.updateClothes is undefined>> <<updateClothes>> - <<set $objectVersion.updateClothes to 30>> + <<set $objectVersion.updateClothes to 31>> <!--If you have added any `colour_combat` or `accessory_colour_combat` to clothes that need their `colour` or `accessory_colour`, this will clear them. Remove `colour_combat` or `accessory_colour_combat` where this is the case, they are independant so `colour_combat` will only clear `colour`--> <</if>> diff --git a/game/base-clothing/canvasmodel-img.twee b/game/base-clothing/canvasmodel-img.twee index 448662f54b1eb054d6df5a1bd5d0e7a7ee03c912..925fe17941ab6868cf6d9642765a3c485b050cb3 100644 --- a/game/base-clothing/canvasmodel-img.twee +++ b/game/base-clothing/canvasmodel-img.twee @@ -491,8 +491,8 @@ Set model options & filters for player clothes <<set _modeloptions.crotch_visible to false>> <</if>> -<<set _modeloptions.hood_down to $hoodDown>> -<<if ((($worn.over_head.hood is 1 and $worn.over_head.mask_img isnot 1) or ($worn.head.hood is 1 and $worn.head.mask_img isnot 1))) and $hoodDown is 0>> +<<set _modeloptions.hood_down to $worn.upper.hoodposition is "down">> +<<if ((($worn.over_head.hood is 1 and $worn.over_head.mask_img isnot 1) or ($worn.head.hood is 1 and $worn.head.mask_img isnot 1))) and $worn.upper.hoodposition is "down">> <<set _modeloptions.hair_sides_length to "short">> <<set _modeloptions.hair_fringe_length to "short">> <</if>> diff --git a/game/base-clothing/clothing-upper.twee b/game/base-clothing/clothing-upper.twee index 6e46b001c3eda097428042d1be2035c0aa0128c3..63fc90979b931ca14af6d47112120a0bb0e4be05 100644 --- a/game/base-clothing/clothing-upper.twee +++ b/game/base-clothing/clothing-upper.twee @@ -3379,7 +3379,8 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur iconFile: "hoodie.png", accIcon: 0, outfitPrimary:{head:"hoodie hood"}, - notuck: 1 + notuck: 1, + hoodposition: "up" }, {index: 78, @@ -3638,7 +3639,8 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur iconFile: "monster_hoodie.png", accIcon: 0, outfitPrimary:{lower:"monster skirt", head:"monster hood"}, - notuck: 0 + notuck: 0, + hoodposition: "up" }, {index: 84, @@ -3896,7 +3898,8 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur iconFile: "cow_onesie.png", accIcon: 0, outfitPrimary:{lower:"cow onesie bottoms", head:"cow onesie hood"}, - notuck: 0 + notuck: 0, + hoodposition: "up" }, {index: 90, diff --git a/game/base-clothing/images.twee b/game/base-clothing/images.twee index 65e6cde008102b8abe774a006bd4e92bf9082de6..fd1b88b037e19004b6ead80e2e31a73ba55319dd 100644 --- a/game/base-clothing/images.twee +++ b/game/base-clothing/images.twee @@ -38,7 +38,7 @@ <<if $player.penisExist>> <<set _penisSize to Math.clamp($player.penissize, -2, 4)>> <</if>> - <<if ($worn.over_head.hood is 1 or $worn.head.hood is 1) and $hoodDown is 0>> + <<if $worn.over_head.hood is 1 or $worn.head.hood is 1>> <<set _hairlengthstage to "short">> <<set _fringelengthstage to "short">> <<else>> @@ -2774,17 +2774,15 @@ <<widget "baseClothingImg">> <<if $worn[_args[0]].name isnot "naked">> <<baseClothingStrings _args[0]>> - <<set _isHoodDown = $hoodDown and $worn[_args[0]].hood and $worn[_args[0]].outfitSecondary isnot undefined>> - <<set _hoodDown = _isHoodDown ? "_down" : "">> <div @class="'clothes-div layer-'+_args[0]"> <<if $worn[_args[0]].mainImage isnot 0>> - <img @class="_class" @src="'img/clothes/'+[_args[0]]+'/' + $worn[_args[0]].variable + '/' + 'full' + _hoodDown + '.png'" @style="_style"> + <img @class="_class" @src="'img/clothes/'+[_args[0]]+'/' + $worn[_args[0]].variable + '/' + 'full.png'" @style="_style"> <</if>> <<if $worn[_args[0]].accessory is 1>> - <img @class="_classAcc" @src="'img/clothes/'+[_args[0]]+'/' + $worn[_args[0]].variable + '/' + 'acc' + _hoodDown + '.png'" @style="_styleAcc"> + <img @class="_classAcc" @src="'img/clothes/'+[_args[0]]+'/' + $worn[_args[0]].variable + '/' + 'acc.png'" @style="_styleAcc"> <</if>> </div> - <<if $worn[_args[0]].back_img is 1 and !_isHoodDown>> + <<if $worn[_args[0]].back_img is 1>> <div @class="'clothes-div layer-'+_args[0]+'-back'"> <img @class="$worn[_args[0]].back_img_colour is 'secondary' ? _classAcc : _class" @src="'img/clothes/'+[_args[0]]+'/' + $worn[_args[0]].variable + '/' + 'back.png'" @style="_styleAcc"> </div> @@ -3071,6 +3069,7 @@ <<default>><<set _upperWetness to "">> <</switch>> <<set _tucked = $upperTucked and !setup.clothes.upper[clothesIndex('upper', $worn.upper)].notuck and $worn.upper.outfitPrimary is undefined ? " tucked" : "">> + <<set $_hoodDown to $worn.upper.hoodposition is "down" ? "_down" : "">> <div @class="'clothes-div layer-upper' + _tucked + _upperWetness"> <<if $worn.upper.mainImage isnot 0>> <<if $worn.upper.integrity lte (clothingData('upper',$worn.upper,'integrity_max') / 10) * 2>> @@ -3082,13 +3081,13 @@ <<else>> <<set _imgName to "full">> <</if>> - <img @class="_class" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + _imgName + '.png'" @style="_style"> + <img @class="_class" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + _imgName + $_hoodDown + '.png'" @style="_style"> <</if>> <<if setup.clothes.upper[clothesIndex('upper', $worn.upper)].breast_img is 1>> <img @class="_class" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + (Math.min(_breastSize, 5)) + '.png'" @style="_style"> <</if>> <<if $worn.upper.accessory is 1>> - <img @class="_classAcc" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + 'acc' + ($worn.upper.accessory_integrity_img ? '_' + _imgName : '') + '.png'" @style="_styleAcc"> + <img @class="_classAcc" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + 'acc' + ($worn.upper.accessory_integrity_img ? '_' + _imgName : '') + $_hoodDown + '.png'" @style="_styleAcc"> <</if>> <<if $worn.upper.breast_acc_img is 1>> <img @class="_classAcc" @src="'img/clothes/upper/' + $worn.upper.variable + '/' + (Math.min(_breastSize, 5)) + '_acc.png'" @style="_styleAcc"> diff --git a/game/base-clothing/update.twee b/game/base-clothing/update.twee index 7adce0f0adb0f4c7ed9f687e3d22f75e383be12c..78d479b8fc4fec55a619d3a76ef00e5909c8c7ad 100644 --- a/game/base-clothing/update.twee +++ b/game/base-clothing/update.twee @@ -5,6 +5,12 @@ <<set _skip to ["integrity","integrity_max","colour","accessory_colour", "exposed", "vagina_exposed", "anus_exposed", "anal_shield", "one_piece", "skirt_down", "state", "state_top","name_cap","iconFile","accIcon","notuck","skirt","description","colour_options","accessory_colour_options","fabric_strength","integrity_max","bustresize","sleeve_img","breast_img","exposed_base","vagina_exposed_base","anus_exposed_base","state_top_base","state_base",,"word","femininity","strap","cost","shop"]>> <<set _remap_colours to {"light-pink":"light pink", "blue-steel":"blue steel"}>> +/*0.3.9.3: adding "hoodposition" variable to all hoodies*/ +/*Just add the variable to hoodies that don't have it, skip it after this*/ +<<if $objectVersion.updateClothes gte 31>> + <<set _skip.push("hoodposition")>> +<</if>> + <<for _i to 0; _i lt _equip.length; _i++>> <<set _worn to $worn[_equip[_i]]>> <<set _default to setup.clothes[_equip[_i]][clothesIndex(_equip[_i],_worn)]>> diff --git a/game/base-clothing/wardrobes.twee b/game/base-clothing/wardrobes.twee index c2b96cb5983cfce4c6f7d5ba83e7cecfedc0da56..8c044fa120a14bebed9189780fec2db60a1171b0 100644 --- a/game/base-clothing/wardrobes.twee +++ b/game/base-clothing/wardrobes.twee @@ -564,17 +564,54 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> <</if>> <</silently>><<print $_output>><</widget>> -<<widget "toggleHood">> +<<widget "toggleHoodLink">> <div class="toggleHoodLink"> - <<link `($hoodDown ? "Pull hood up" : "Pull hood down")`>> - <<set $hoodDown to +!$hoodDown>> + <<link `($worn.upper.hoodposition is "down" ? "Pull hood up" : "Pull hood down")`>> + <<toggleHood _args[0]>> <<updatesidebarimg>> - <<run $(".toggleHoodLink .link-internal").html($hoodDown ? "Pull hood up" : "Pull hood down")>> + <<if _args[0] isnot "shop">> + <<updatewardrobe>> + <</if>> + <<run $(".toggleHoodLink .link-internal").html($worn.upper.hoodposition is "down" ? "Pull hood up" : "Pull hood down")>> <<run Links.generateLinkNumbers($(".passage"))>> <</link>> </div> <</widget>> +<<widget "toggleHood">> + /* If hood is up, put it down and free up the head slot*/ + <<if $worn.upper.hoodposition is "up">> + <<run delete $worn.upper.outfitPrimary.head>> + <<set $worn.upper.hoodposition to "down">> + <<if _args[0] is "shop" and $tryOn.ownedStored.head.name isnot $worn.head.name and !($tryOn.ownedStored.head.outfitSecondary and $tryOn.ownedStored.head.outfitSecondary[1] isnot "broken")>> + <<set $worn.head to clone($tryOn.ownedStored.head)>> + <<else>> + <<set $worn.head to clone(setup.clothes.head[0])>> + <</if>> + + /* If hood is down, put it back up and remove anything on the head if necessary */ + <<else>> + <<if !$worn.head.cursed>> /* No cursed head items yet, but if one is made, should probably have some popup saying this was prevented */ + <<if $worn.head.name isnot "naked" and _args[0] isnot "shop">> /*Don't put head accessory back in wardrobe if curently in a shop, might need it back*/ + <<generalUndress $wardrobe_location "head">> + <</if>> + <<set $worn.upper.outfitPrimary.head to clone(setup.clothes.upper[$worn.upper.index].outfitPrimary.head)>> + <<set $worn.upper.hoodposition to "up">> + /* re-create the hood using colors from the hoodie */ + <<set $_hoodIndex to setup.clothes.head.findIndex(x => x.name === $worn.upper.outfitPrimary.head)>> + <<set $worn.head to clone(setup.clothes.head[$_hoodIndex])>> + <<set $worn.head.colour to $worn.upper.colour>> + <<if $worn.head.colour is "custom">> + <<set $worn.head.colourCustom to $worn.upper.colourCustom>> + <</if>> + <<set $worn.head.accessory_colour to $worn.upper.accessory_colour>> + <<if $worn.head.accessory_colour is "custom">> + <<set $worn.head.accessory_colourCustom to $worn.upper.accessory_colourCustom>> + <</if>> + <</if>> + <</if>> +<</widget>> + <<widget "toggleUpperTuck">> <<set _linkOption1 to _args[0] || "Untuck">> <<set _linkOption2 to _args[1] || "Tuck in">> @@ -684,7 +721,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> <<if isConnectedToHood(_wardrobe_list)>> <!-- If selected item is a hood or selected item has a secondary hood piece --> - <div class="no-numberify"><<toggleHood>></div> + <div class="no-numberify"><<toggleHoodLink>></div> <br> <</if>> <<if _wardrobe_list is "upper" and $worn.lower.name isnot "naked" and _wornItem.outfitPrimary is undefined and !_wornItemData.notuck>> @@ -826,7 +863,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label> <</if>> <<if $worn.head.hood>> <!-- If selected item is a hood or selected item has a secondary hood piece --> - <<toggleHood>> + <<Link>> <</if>> </div> <</widget>> diff --git a/game/base-clothing/widgets.twee b/game/base-clothing/widgets.twee index 39339d8a93e6945deb851d52c9fdf13d56bde090..64ef63c2cf5743cf5c9e4d61cca285bab8b500dd 100644 --- a/game/base-clothing/widgets.twee +++ b/game/base-clothing/widgets.twee @@ -161,7 +161,9 @@ <<for $_label, $_value range $_outfitPrimary>> <<set _pieceId to setup.clothes[$_label].findIndex(item => item.name is $_value)>> <<if _pieceId isnot -1>> <!-- findIndex() returns -1 if no index is found --> - <<sendToWardrobeFromDefault _args[0] $_label _pieceId _colour _accessory_colour>> + <<if !_hoodDown or $_label isnot "head">> /*If hood is down, don't make a hood*/ + <<sendToWardrobeFromDefault _args[0] $_label _pieceId _colour _accessory_colour>> + <</if>> <<else>> <!-- Error --> <</if>> @@ -206,6 +208,10 @@ <<set $_item.accessory_colour to clone($_item.accessory_colour_options.random())>> <</if>> <</if>> + <<if _hoodDown and $_item.hoodposition isnot undefined>> + <<set $_item.hoodposition to "down">> + <<run delete $_item.outfitPrimary.head>> + <</if>> <<run clothesDataTrimmer($_item)>> <</widget>> @@ -598,6 +604,7 @@ <</if>> <<set $_cost to Math.trunc(getClothingCost($_item, $_slot) * 1.5)>> + <<set _hoodDown to $_item.hoodposition is "down">> <<if $_item.outfitSecondary isnot undefined and $_item.outfitSecondary[1] is "broken">> <<elseif $money gte $_cost>> @@ -609,6 +616,7 @@ <<run $rebuy_failure.push(clone($_item.name))>> <<set $effectsmessage to 1>> <</if>> + <<unset _hoodDown>> <</if>> <</if>> <</widget>> diff --git a/game/base-system/effects.twee b/game/base-system/effects.twee index 1dd8d1e382a601f008fe194f042ae6f9425ef738..d43271599bccb6560995d2de22abfda68de23ed9 100644 --- a/game/base-system/effects.twee +++ b/game/base-system/effects.twee @@ -812,8 +812,6 @@ <<if $worn[_active_clothes].warmth isnot undefined>> <<if _active_clothes is "upper" and $worn.upper.warmth lte $upperwet or _active_clothes is "lower" and $worn.lower.warmth lte $lowerwet or _active_clothes is "under_upper" and $worn.under_upper.warmth lte $underupperwet or _active_clothes is "under_lower" and $worn.under_lower.warmth lte $underlowerwet>> /*Do nothing*/ - <<elseif $hoodDown and (_active_clothes is "head" or _active_clothes is "over_head") and $worn[_active_clothes].hood and $worn[_active_clothes].outfitSecondary isnot undefined>> - /* Don't add warmth if it's a hood and it has been pulled down */ <<else>> <<set $warmth += $worn[_active_clothes].warmth>> <</if>> diff --git a/game/base-system/widgets.js b/game/base-system/widgets.js index af54617ec4f9379e1a98a91b2f22a160c2d1f88e..31a57b518325972ea2b747bd3cd84a1949c1cf03 100644 --- a/game/base-system/widgets.js +++ b/game/base-system/widgets.js @@ -104,7 +104,7 @@ function genderappearancecheck() { addfemininityofclothingarticle('legs',V.worn.legs); addfemininityofclothingarticle('feet',V.worn.feet); /* Hair length */ - if ((V.worn.over_head.hood !== 1 && V.worn.head.hood !== 1) || V.hoodDown == 1) { + if (V.worn.over_head.hood !== 1 && V.worn.head.hood !== 1) { let lengthCap; /* Set Hair Style cap */ if(hairStyleCap.hairtype[V.hairtype] && hairStyleCap.fringetype[V.fringetype]){ diff --git a/game/overworld-town/loc-shop/clothing-v2.twee b/game/overworld-town/loc-shop/clothing-v2.twee index 365e9e155dc46653c1717cbbe11bfdcf6a1d13a1..de192bdb30d5dba7720e4c2c85435ba6e466d435 100644 --- a/game/overworld-town/loc-shop/clothing-v2.twee +++ b/game/overworld-town/loc-shop/clothing-v2.twee @@ -666,9 +666,9 @@ <</link>> </div> <</if>> - <<if $worn.head.hood and isConnectedToHood($clothingShopSlot)>> + <<if $worn[$clothingShopSlot].name is _temp_choice.name and isConnectedToHood($clothingShopSlot)>> <!-- If selected item is a hood or selected item has a secondary hood piece --> - <div class="try-button div-link"><<toggleHood>></div> + <div class="try-button div-link"><<toggleHoodLink "shop">></div> <br> <</if>> <<if ["upper","lower"].includes($clothingShopSlot) and $worn.lower.name isnot "naked" and $worn.upper.outfitPrimary is undefined and !setup.clothes.upper[clothesIndex("upper",$worn.upper)].notuck>> @@ -1577,4 +1577,11 @@ <<else>> <<set $wardrobes.shopReturn to "wardrobe">> <</if>> +<</widget>> + +/*If the player just goes to the shop and puts up their hood, make sure whatever they had on their head doesn't just disappear*/ +<<widget "shopHoodCheck">> + <<if $tryOn.tryingOn.head is null and $tryOn.ownedStored.head.name isnot "naked" and $tryOn.ownedStored.head.name isnot $worn.head.name and $worn.head.hood is 1>> + <<wardrobeSend "head" $tryOn.ownedStored.head>> + <</if>> <</widget>> \ No newline at end of file diff --git a/game/overworld-town/loc-shop/clothing.twee b/game/overworld-town/loc-shop/clothing.twee index 71ace502a66eb00e8cd576ded71e46877e080633..e75314bc9a9c674bc6bc25ddf1b08af9d3d864e8 100644 --- a/game/overworld-town/loc-shop/clothing.twee +++ b/game/overworld-town/loc-shop/clothing.twee @@ -118,6 +118,7 @@ <<ShowUnderEquip "over">> <<set $tryOn.autoReset to true>> <<crimeup `$tryOn.value / 100`>> + <<shopHoodCheck>> <</link>> <<else>> <<link [[Leave|Shopping Centre Top]]>> @@ -126,6 +127,7 @@ <<ShowUnderEquip "over">> <<set $tryOn.autoReset to true>> <<crimeup `$tryOn.value / 100`>> + <<shopHoodCheck>> <</link>> <</if>> <<if $tryOn.value gt 0>> @@ -160,7 +162,7 @@ <</link>> <br> <</if>> - <<link [[Leave with stolen clothes|Stolen Clothing Shop Result]]>><<shopClothingFilterReset>><</link>> + <<link [[Leave with stolen clothes|Stolen Clothing Shop Result]]>><<shopClothingFilterReset>><<shopHoodCheck>><</link>> <br> <</if>> <</if>> diff --git a/game/overworld-town/loc-shop/tryOn.twee b/game/overworld-town/loc-shop/tryOn.twee index 1678109c47f55e3c5969047da2a33e90fbe3e538..cd3c29567eb079bf47e9884b120e1297328851d3 100644 --- a/game/overworld-town/loc-shop/tryOn.twee +++ b/game/overworld-town/loc-shop/tryOn.twee @@ -117,6 +117,14 @@ <<if $tryOn.ownedStored[_equip[_i]] isnot null and $tryOn.tryingOn[_equip[_i]] isnot null and $tryOn.ownedStored[_equip[_i]].name isnot "naked" and !_towels.includes($tryOn.ownedStored[_equip[_i]].name)>> /*Send previously equipped clothes to wardrobe*/ <<wardrobeSend _equip[_i] $tryOn.ownedStored[_equip[_i]]>> + /*Make sure outfit parts don't get left behind*/ + <<if $tryOn.ownedStored[_equip[_i]].outfitPrimary isnot undefined>> + <<for $_slot, $_item range $tryOn.ownedStored[_equip[_i]].outfitPrimary>> + <<if $_item isnot "broken" and $tryOn.ownedStored[$_slot].name isnot "naked" and !_towels.includes($tryOn.ownedStored[$_slot].name)>> + <<wardrobeSend $_slot $tryOn.ownedStored[$_slot]>> + <</if>> + <</for>> + <</if>> <</if>> <</for>> <<case "wardrobe">> diff --git a/img/clothes/upper/cowonesie/frayed_down.png b/img/clothes/upper/cowonesie/frayed_down.png new file mode 100644 index 0000000000000000000000000000000000000000..3e474852b192574d8f687c6660fd02fa46b53c47 Binary files /dev/null and b/img/clothes/upper/cowonesie/frayed_down.png differ diff --git a/img/clothes/upper/cowonesie/full_down.png b/img/clothes/upper/cowonesie/full_down.png new file mode 100644 index 0000000000000000000000000000000000000000..da0de4c14c1332a1ff4395169723ef8729b25c67 Binary files /dev/null and b/img/clothes/upper/cowonesie/full_down.png differ diff --git a/img/clothes/upper/cowonesie/tattered_down.png b/img/clothes/upper/cowonesie/tattered_down.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7fbedf184b25dddbbebed760ff41cf0b929805 Binary files /dev/null and b/img/clothes/upper/cowonesie/tattered_down.png differ diff --git a/img/clothes/upper/cowonesie/torn_down.png b/img/clothes/upper/cowonesie/torn_down.png new file mode 100644 index 0000000000000000000000000000000000000000..812acd37ac2835fdef5bde2259c53908b4e7ded5 Binary files /dev/null and b/img/clothes/upper/cowonesie/torn_down.png differ diff --git a/img/clothes/upper/hoodie/acc_down.png b/img/clothes/upper/hoodie/acc_down.png new file mode 100644 index 0000000000000000000000000000000000000000..c24a4ba9c22428c4c28bf3c1c0e3061dc004c3d4 Binary files /dev/null and b/img/clothes/upper/hoodie/acc_down.png differ diff --git a/img/clothes/upper/hoodie/acc_down_gray.png b/img/clothes/upper/hoodie/acc_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..67dac0c3dc612ed88af3e80394964763c9130109 Binary files /dev/null and b/img/clothes/upper/hoodie/acc_down_gray.png differ diff --git a/img/clothes/upper/hoodie/frayed_down.png b/img/clothes/upper/hoodie/frayed_down.png new file mode 100644 index 0000000000000000000000000000000000000000..8b35f725bb4a42d4ff9b8e2d00e3edff6253e23e Binary files /dev/null and b/img/clothes/upper/hoodie/frayed_down.png differ diff --git a/img/clothes/upper/hoodie/frayed_down_gray.png b/img/clothes/upper/hoodie/frayed_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c6096febe55259191d03dd123028678abf4086d9 Binary files /dev/null and b/img/clothes/upper/hoodie/frayed_down_gray.png differ diff --git a/img/clothes/upper/hoodie/full_down.png b/img/clothes/upper/hoodie/full_down.png new file mode 100644 index 0000000000000000000000000000000000000000..78551420a152b77c7057c3df1a369401ad739d9b Binary files /dev/null and b/img/clothes/upper/hoodie/full_down.png differ diff --git a/img/clothes/upper/hoodie/full_down_gray.png b/img/clothes/upper/hoodie/full_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c28a816c4852ef8d7e3567582a4cbe0cd6f380cf Binary files /dev/null and b/img/clothes/upper/hoodie/full_down_gray.png differ diff --git a/img/clothes/upper/hoodie/tattered_down.png b/img/clothes/upper/hoodie/tattered_down.png new file mode 100644 index 0000000000000000000000000000000000000000..9090b9b0b637768821bc7f5fe834338ccafb2dbf Binary files /dev/null and b/img/clothes/upper/hoodie/tattered_down.png differ diff --git a/img/clothes/upper/hoodie/tattered_down_gray.png b/img/clothes/upper/hoodie/tattered_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7b52deb4ed4d5b60065fbb0a26b270d01347be Binary files /dev/null and b/img/clothes/upper/hoodie/tattered_down_gray.png differ diff --git a/img/clothes/upper/hoodie/torn_down.png b/img/clothes/upper/hoodie/torn_down.png new file mode 100644 index 0000000000000000000000000000000000000000..a4028e984ea3923f880edd034779c7139a47d2ce Binary files /dev/null and b/img/clothes/upper/hoodie/torn_down.png differ diff --git a/img/clothes/upper/hoodie/torn_down_gray.png b/img/clothes/upper/hoodie/torn_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..0422a4dccef3dad49647b68d6d93019fd004677e Binary files /dev/null and b/img/clothes/upper/hoodie/torn_down_gray.png differ diff --git a/img/clothes/upper/monster/acc_down.png b/img/clothes/upper/monster/acc_down.png new file mode 100644 index 0000000000000000000000000000000000000000..3b732f755ac708469d264bbd36c7d0f0a971d072 Binary files /dev/null and b/img/clothes/upper/monster/acc_down.png differ diff --git a/img/clothes/upper/monster/acc_down_gray.png b/img/clothes/upper/monster/acc_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3b732f755ac708469d264bbd36c7d0f0a971d072 Binary files /dev/null and b/img/clothes/upper/monster/acc_down_gray.png differ diff --git a/img/clothes/upper/monster/frayed_down.png b/img/clothes/upper/monster/frayed_down.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4f5d94539193345246893c9e7d4256be3c4611 Binary files /dev/null and b/img/clothes/upper/monster/frayed_down.png differ diff --git a/img/clothes/upper/monster/frayed_down_gray.png b/img/clothes/upper/monster/frayed_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..910c4f4272073de7345a859e18ba523ddb4fd132 Binary files /dev/null and b/img/clothes/upper/monster/frayed_down_gray.png differ diff --git a/img/clothes/upper/monster/full_down.png b/img/clothes/upper/monster/full_down.png new file mode 100644 index 0000000000000000000000000000000000000000..9499bf4ab3a383eae7ff65bb014fdc616ad135ff Binary files /dev/null and b/img/clothes/upper/monster/full_down.png differ diff --git a/img/clothes/upper/monster/full_down_gray.png b/img/clothes/upper/monster/full_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c910cbe70711d45f420fdf6f69badf69872dec0f Binary files /dev/null and b/img/clothes/upper/monster/full_down_gray.png differ diff --git a/img/clothes/upper/monster/tattered_down.png b/img/clothes/upper/monster/tattered_down.png new file mode 100644 index 0000000000000000000000000000000000000000..14713da0130f9f959b2ccbe51e13d658aff8d282 Binary files /dev/null and b/img/clothes/upper/monster/tattered_down.png differ diff --git a/img/clothes/upper/monster/tattered_down_gray.png b/img/clothes/upper/monster/tattered_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..93c49b0342984ab9ae4456f6a5955ac9dfbff5f5 Binary files /dev/null and b/img/clothes/upper/monster/tattered_down_gray.png differ diff --git a/img/clothes/upper/monster/torn_down.png b/img/clothes/upper/monster/torn_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e304d64d8c14c5cf3dd8415fb893a1acb25c07a1 Binary files /dev/null and b/img/clothes/upper/monster/torn_down.png differ diff --git a/img/clothes/upper/monster/torn_down_gray.png b/img/clothes/upper/monster/torn_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ec80489eccf5762ee391a710eeadb968739a9e Binary files /dev/null and b/img/clothes/upper/monster/torn_down_gray.png differ