diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index 069bbcc3b07..240e807e92a 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -60,10 +60,9 @@ var/datum/antagonist/raider/raiders
/obj/item/clothing/suit/storage/toggle/bomber,
/obj/item/clothing/suit/storage/toggle/leather_jacket,
/obj/item/clothing/suit/storage/toggle/brown_jacket,
- /obj/item/clothing/suit/storage/toggle/hoodie,
- /obj/item/clothing/suit/storage/toggle/hoodie/black,
/obj/item/clothing/suit/unathi/mantle,
- /obj/item/clothing/accessory/poncho
+ /obj/item/clothing/accessory/poncho,
+ /obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/grey
)
var/list/raider_guns = list(
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index b9325f15cd0..003c1b5cc94 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -164,8 +164,8 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(3 to 6)
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
+ H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/grey(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
- H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/hoodie(H), slot_wear_suit)
if(7 to 9)
H.equip_to_slot_or_del(new /obj/item/clothing/under/sl_suit(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index e6defb1f5c4..f5b21a1baac 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -50,7 +50,6 @@
new /obj/item/clothing/under/waiter(src)
new /obj/item/device/radio/headset/headset_service(src)
new /obj/item/device/radio/headset/headset_service(src)
- new /obj/item/clothing/suit/storage/toggle/hoodie(src)
new /obj/item/weapon/storage/box/gloves(src)
new /obj/item/weapon/storage/box/mousetraps(src)
new /obj/item/clothing/under/rank/chef(src)
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index 80ecd912d21..dac5881b971 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -44,12 +44,12 @@
gear_tweaks += new/datum/gear_tweak/path(hazard)
/datum/gear/suit/hoodie
- display_name = "hoodie, grey"
- path = /obj/item/clothing/suit/storage/toggle/hoodie
+ display_name = "hoodie"
+ path = /obj/item/clothing/suit/storage/hooded/wintercoat/hoodie
-/datum/gear/suit/hoodie/black
- display_name = "hoodie, black"
- path = /obj/item/clothing/suit/storage/toggle/hoodie/black
+/datum/gear/suit/hoodie/New()
+ ..()
+ gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/suit/labcoat
display_name = "labcoat"
diff --git a/code/modules/clothing/suits/hoodies.dm b/code/modules/clothing/suits/hoodies.dm
index 01bec85cc7a..033d487bf2c 100644
--- a/code/modules/clothing/suits/hoodies.dm
+++ b/code/modules/clothing/suits/hoodies.dm
@@ -24,8 +24,8 @@
..()
/obj/item/clothing/suit/storage/hooded/proc/RemoveHood()
- icon_state = "[initial(icon_state)]"
- item_state = "[initial(item_state)]"
+ icon_state = initial(icon_state)
+ item_state = initial(item_state)
suittoggled = 0
// Hood got nuked. Probably because of RIGs or the like.
@@ -51,17 +51,17 @@
set category = "Object"
set src in usr
- if(!usr.canmove || usr.stat || usr.restrained())
+ if(!use_check(usr))
return 0
if(!suittoggled)
if(ishuman(loc))
var/mob/living/carbon/human/H = src.loc
if(H.wear_suit != src)
- H << "You must be wearing [src] to put up the hood!"
+ to_chat(H, "You must be wearing [src] to put up the hood!")
return
if(H.head)
- H << "You're already wearing something on your head!"
+ to_chat(H, "You're already wearing something on your head!")
return
else
H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
@@ -174,3 +174,72 @@
name = "space carp hood"
desc = "A hood attached to a space carp costume."
icon_state = "carp_helm"
+
+/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie
+ name = "hoodie"
+ desc = "Warm and cozy."
+ icon_state = "hoodie"
+ var/icon_open = "hoodie_open"
+ var/icon_closed = "hoodie"
+ item_state = "hoodie"
+ hoodtype = /obj/item/clothing/head/winterhood/hoodie
+
+/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/RemoveHood()
+ ..()
+ icon_open = initial(icon_open)
+ icon_closed = initial(icon_closed)
+
+/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/verb/Toggle() //copied from storage toggle
+ set name = "Toggle Coat Buttons"
+ set category = "Object"
+ set src in usr
+ if(!use_check(usr))
+ return 0
+ if(icon_state == icon_open)
+ icon_state = icon_closed
+ item_state = icon_closed
+ to_chat(usr, "You zip the hoodie.")
+ else if(icon_state == icon_closed)
+ icon_state = icon_open
+ item_state = icon_open
+ to_chat(usr, "You unzip the hoodie.")
+ else
+ to_chat(usr, "You attempt to zip the velcro on your [src], before promptly realising how silly you are.")
+ return
+ update_clothing_icon()
+
+/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/verb/ToggleHoodie()
+ set name ="Toggle Coat Hood"
+ set category = "Object"
+ set src in usr
+
+ if(!use_check(usr))
+ return 0
+
+ if(!suittoggled)
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = src.loc
+ if(H.wear_suit != src)
+ to_chat(H, "You must be wearing [src] to put up the hood!")
+ return
+ if(H.head)
+ to_chat(H, "You're already wearing something on your head!")
+ return
+ else
+ H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
+ suittoggled = 1
+ icon_open = "[initial(icon_open)]_t" // this is where the change is.
+ icon_closed = "[initial(icon_closed)]_t"
+ icon_state = "[initial(icon_state)]_t"
+ item_state = "[initial(item_state)]_t"
+ H.update_inv_wear_suit()
+ else
+ RemoveHood()
+
+/obj/item/clothing/head/winterhood/hoodie
+ name = "hood"
+ desc = "A hood attached to a warm hoodie."
+ icon_state = "hoodie_hood"
+
+/obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/grey //legacy item. for raiders, shuttle spawn
+ color = "#777777"
\ No newline at end of file
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 730e922d6b7..7a33101895b 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -283,24 +283,6 @@
icon_open = "brown_jacket_nt_open"
icon_closed = "brown_jacket_nt"
-/obj/item/clothing/suit/storage/toggle/hoodie
- name = "grey hoodie"
- desc = "A warm, grey sweatshirt."
- icon_state = "grey_hoodie"
- item_state = "grey_hoodie"
- icon_open = "grey_hoodie_open"
- icon_closed = "grey_hoodie"
- min_cold_protection_temperature = T0C - 20
- cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
-
-/obj/item/clothing/suit/storage/toggle/hoodie/black
- name = "black hoodie"
- desc = "A warm, black sweatshirt."
- icon_state = "black_hoodie"
- item_state = "black_hoodie"
- icon_open = "black_hoodie_open"
- icon_closed = "black_hoodie"
-
/obj/item/clothing/suit/storage/toggle/flannel
name = "green flannel shirt"
desc = "A flannel shirt, for all your space hipster needs."
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 3a0952ba0f1..8006263af79 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -47,13 +47,13 @@
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
icon_state = icon_closed
item_state = icon_closed
- usr << "You button up the coat."
+ to_chat(usr, "You button up the coat.")
else if(icon_state == icon_closed)
icon_state = icon_open
item_state = icon_open
- usr << "You unbutton the coat."
+ to_chat(usr, "You unbutton the coat.")
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
- usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
+ to_chat(usr, "You attempt to button-up the velcro on your [src], before promptly realising how silly you are.")
return
update_clothing_icon() //so our overlays update
diff --git a/html/changelogs/VTCobaltblood - hoodies.yml b/html/changelogs/VTCobaltblood - hoodies.yml
new file mode 100644
index 00000000000..d9f6f8a508d
--- /dev/null
+++ b/html/changelogs/VTCobaltblood - hoodies.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: VTCobaltblood
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Reworked the hoodies entirely."
+ - tweak: "Tweaked the cardigan sprite a little for it to be less ugly."
\ No newline at end of file
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 12e97187e61..cc7a7029514 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/hoodies.dmi b/icons/obj/hoodies.dmi
index 912a069be37..7fab9e5fe5a 100644
Binary files a/icons/obj/hoodies.dmi and b/icons/obj/hoodies.dmi differ