From f3d39de03dd520300de1bc48c0f75da3d0ecf2d8 Mon Sep 17 00:00:00 2001 From: ElorgRHG <71735193+ElorgRHG@users.noreply.github.com> Date: Sun, 28 Sep 2025 14:13:12 +0200 Subject: [PATCH] Dominia cape code tweaks (mainly: they all should now display in character setup) (#21363) Changelog: > - rscadd: "The tribunalist medical cape can now have its mantle be rolled up, like its non-medical tribunalist counterpart." > - rscadd: "Alt-clicking on tribunalist capes now rolls their mantles up." > - bugfix: "All dominian capes should now properly display as attached to clothing in character setup preview." I have noticed that non-Zavodskoi dominian capes never seemed to display as attached in the character setup, and attempting to solve that made me notice how all the capes are poorly pathed and have vestiges of code solutions made for their old sprite variations. So this PR, which was made in like 30 minutes, _attempts_ to fix that. I also have noticed that the tribunalist medical cape had sprites that allowed it to be rolled up, but the code did not support that. Now it does. I also added an alt-click functionality to roll them up, because why not. --- .../loadout/items/religion.dm | 12 +- .../preference_setup/loadout/items/suit.dm | 5 +- code/modules/clothing/factions/dominia.dm | 194 ++++++++---------- .../ElorgRHG-dominia-cape-code-tweaks.yml | 15 ++ .../accessory/poncho/dominia_cape.dmi | Bin 6310 -> 5490 bytes .../accessory/poncho/dominia_medical_cape.dmi | Bin 0 -> 973 bytes .../dominian_corvette/dominian_corvette.dmm | 2 +- .../dominian_unathi_privateer.dmm | 2 +- maps/sccv_horizon/sccv_horizon.dmm | 2 +- 9 files changed, 108 insertions(+), 124 deletions(-) create mode 100644 html/changelogs/ElorgRHG-dominia-cape-code-tweaks.yml create mode 100644 icons/obj/item/clothing/accessory/poncho/dominia_medical_cape.dmi diff --git a/code/modules/client/preference_setup/loadout/items/religion.dm b/code/modules/client/preference_setup/loadout/items/religion.dm index 7b61bde8b69..5578a080054 100644 --- a/code/modules/client/preference_setup/loadout/items/religion.dm +++ b/code/modules/client/preference_setup/loadout/items/religion.dm @@ -136,15 +136,15 @@ ABSTRACT_TYPE(/datum/gear/religion/dominia) /datum/gear/religion/dominia/cape display_name = "dominian outerwear selection" description = "A selection of capes and outerwear worn by the Moroz Holy Tribunal." - path = /obj/item/clothing/under/dominia/priest - slot = slot_wear_suit + path = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist + slot = slot_in_backpack /datum/gear/religion/dominia/cape/New() ..() var/list/cape = list() - cape["tribunalist red cape"] = /obj/item/clothing/accessory/poncho/dominia/red - cape["tribunalist full cape"] = /obj/item/clothing/accessory/poncho/dominia/red/double - cape["tribunalist surcoat"] = /obj/item/clothing/accessory/poncho/dominia/red/surcoat + cape["tribunalist red cape"] = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist + cape["tribunalist full cape"] = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/double + cape["tribunalist surcoat"] = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/surcoat gear_tweaks += new /datum/gear_tweak/path(cape) /datum/gear/religion/dominia/accessory @@ -192,7 +192,7 @@ ABSTRACT_TYPE(/datum/gear/religion/dominia) /datum/gear/religion/dominia/cape_consular display_name = "tribunalist cousular cape" description = "A truly majestic gold and red cape worn by members of the clergy affiliated with His Majesty's Diplomatic Service." - path = /obj/item/clothing/accessory/poncho/dominia/consular + path = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/consular slot = slot_wear_suit allowed_roles = list("Consular Officer") diff --git a/code/modules/client/preference_setup/loadout/items/suit.dm b/code/modules/client/preference_setup/loadout/items/suit.dm index f75dbcbd718..7a51ec663ad 100644 --- a/code/modules/client/preference_setup/loadout/items/suit.dm +++ b/code/modules/client/preference_setup/loadout/items/suit.dm @@ -320,6 +320,7 @@ /datum/gear/suit/dominia_cape display_name = "dominian cape" path = /obj/item/clothing/accessory/poncho/dominia_cape + slot = slot_in_backpack flags = GEAR_HAS_DESC_SELECTION culture_restriction = list(/singleton/origin_item/culture/dominia, /singleton/origin_item/culture/dominian_unathi) @@ -346,6 +347,7 @@ /datum/gear/suit/dominia_cape_colorable display_name = "dominian cape selection, colorable" path = /obj/item/clothing/accessory/poncho/dominia_cape/colorable + slot = slot_in_backpack flags = GEAR_HAS_DESC_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION description = "A black or white Dominian cape with a colorable stripe that can be used to represent either a generic cape or a Minor House." culture_restriction = list(/singleton/origin_item/culture/dominia, /singleton/origin_item/culture/dominian_unathi) @@ -359,7 +361,8 @@ /datum/gear/suit/dominia_medical_cape display_name = "tribunalist medical cape" - path = /obj/item/clothing/accessory/poncho/dominia_cape/hospital + path = /obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/medical + slot = slot_in_backpack flags = GEAR_HAS_DESC_SELECTION allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Pharmacist", "Paramedic", "Medical Intern") culture_restriction = list(/singleton/origin_item/culture/dominia, /singleton/origin_item/culture/dominian_unathi) diff --git a/code/modules/clothing/factions/dominia.dm b/code/modules/clothing/factions/dominia.dm index 35ad06a5126..d5ecf77a559 100644 --- a/code/modules/clothing/factions/dominia.dm +++ b/code/modules/clothing/factions/dominia.dm @@ -48,33 +48,17 @@ item_state = "dominian_cape" icon_override = null contained_sprite = TRUE - var/cape_backing_state = "cape_backing" protects_against_weather = FALSE /obj/item/clothing/accessory/poncho/dominia_cape/white name = "white dominian cape" icon_state = "dominian_capew" item_state = "dominian_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/zavod name = "zavodskoi dominian cape" icon_state = "dominian_capez" item_state = "dominian_capez" - cape_backing_state = "capez_backing" - -/obj/item/clothing/accessory/poncho/dominia_cape/get_mob_overlay(var/mob/living/carbon/human/human, var/mob_icon, var/mob_state, var/slot) - var/image/I = ..() - if(slot == slot_wear_suit_str) - var/image/cape_backing = image(mob_icon, null, cape_backing_state, human ? human.layer - 0.01 : MOB_LAYER - 0.01) - I.AddOverlays(cape_backing) - return I - -/obj/item/clothing/accessory/poncho/dominia_cape/get_accessory_mob_overlay(mob/living/carbon/human/human, force) - var/image/base = ..() - var/image/cape_backing = image(icon, null, cape_backing_state, human ? human.layer - 0.01 : MOB_LAYER - 0.01) - base.AddOverlays(cape_backing) - return base /obj/item/clothing/accessory/poncho/dominia_cape/strelitz name = "house strelitz cape" @@ -86,13 +70,11 @@ name = "white house strelitz cape" icon_state = "strelitz_capew" item_state = "strelitz_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/strelitz/zavod name = "zavodskoi house strelitz cape" icon_state = "strelitz_capez" item_state = "strelitz_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/volvalaad name = "house volvalaad cape" @@ -104,13 +86,11 @@ name = "white house volvalaad cape" icon_state = "volvalaad_capew" item_state = "volvalaad_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/volvalaad/zavod name = "zavodskoi house volvalaad cape" icon_state = "volvalaad_capez" item_state = "volvalaad_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/kazhkz name = "house kazhkz cape" @@ -122,13 +102,11 @@ name = "white house kazhkz cape" icon_state = "kazhkz_capew" item_state = "kazhkz_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/kazhkz/zavod name = "zavodskoi house kazhkz cape" icon_state = "kazhkz_capez" item_state = "kazhkz_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/hansan name = "clan han'san cape" @@ -140,13 +118,11 @@ name = "white clan han'san cape" icon_state = "hansan_capew" item_state = "hansan_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/hansan/zavod name = "zavodskoi clan han'san cape" icon_state = "hansan_capez" item_state = "hansan_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/caladius name = "house caladius cape" @@ -158,13 +134,11 @@ name = "white house caladius cape" icon_state = "caladius_capew" item_state = "caladius_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/caladius/zavod name = "zavodskoi house caladius cape" icon_state = "caladius_capez" item_state = "caladius_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/zhao name = "house zhao cape" @@ -176,13 +150,11 @@ name = "white house zhao cape" icon_state = "zhao_capew" item_state = "zhao_capew" - cape_backing_state = "capew_backing" /obj/item/clothing/accessory/poncho/dominia_cape/zhao/zavod name = "zavodskoi house zhao cape" icon_state = "zhao_capez" item_state = "zhao_capez" - cape_backing_state = "capez_backing" /obj/item/clothing/accessory/poncho/dominia_cape/colorable icon_state = "dominian_cape_colorable" @@ -207,10 +179,88 @@ icon_state = "armsman_mantle" item_state = "armsman_mantle" -/obj/item/clothing/accessory/poncho/dominia_cape/hospital + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist + name = "tribunalist cape" + desc = "This is a cape in the style of Dominian clergy. The red differentiates the clergy from the nobility who wear traditionally black capes." + desc_extended = "Dominian priests and priestesses are traditionally expected to wear red or golden clothing when discharging \ + their duties. Capes are worn as both a fashion statement to attract the attention of crowds and as a simple form of protection\ + against the elements." + icon = 'icons/obj/item/clothing/accessory/poncho/dominia_red.dmi' + icon_state = "dominian_cape_red" + item_state = "dominian_cape_red" + var/rolled = FALSE + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/update_clothing_icon() + if(ismob(loc)) + var/mob/M = loc + M.update_inv_wear_suit() + get_mob_overlay(TRUE) + get_inv_overlay(TRUE) + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/verb/roll_up_mantle() + set name = "Roll Up Cape Mantle" + set desc = "Roll up your cape's mantle. Doesn't work with some capes." + set category = "Object.Equipped" + set src in usr + + if(use_check_and_message(usr)) + return FALSE + + var/list/icon_states = icon_states(icon) + var/initial_state = initial(icon_state) + var/new_state = "[initial_state]_h" + if(!(new_state in icon_states)) + to_chat(usr, SPAN_WARNING("Your cape doesn't allow this!")) + return + + rolled = !rolled + to_chat(usr, SPAN_NOTICE("You roll your cape's mantle [rolled ? "up" : "down"].")) + icon_state = rolled ? new_state : initial_state + item_state = rolled ? new_state : initial_state + overlay_state = rolled ? new_state : initial_state + update_icon() + update_clothing_icon() + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/AltClick(mob/user) + roll_up_mantle(user) + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/surcoat + name = "tribunalist surcoat" + desc = "A simple red surcoat commonly worn by Dominian clergy members." + desc_extended = "Spun with rough but hardy fabrics from the Dominian frontier, this surcoat is commonly worn by poorer Tribunal clergy as well as missionaries\ + seeking protection from the elements. This garment was popularized by the Kael'kah sect and remains respected as a symbol of humility and poverty amongst priests." + icon = 'icons/obj/item/clothing/accessory/poncho/dominia_surcoat.dmi' + icon_state = "dominian_surcoat" + item_state = "dominian_surcoat" + overlay_state = "dominian_surcoat" + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/double + name = "tribunalist's full cape" + desc = "This is a large cape in the style of Dominian clergy. The symbol of 'The Eye' of the Tribunal is present on both the front and the back." + desc_extended = "This style of cape is among the most flashy and ornate of the Tribunal's garb. Its weight and impracticality of use means that \ + it is often only worn by clergy of high station and on special occasions. Lower ranking members of the Tribunal or those who wear it frequently \ + are often frowned upon as arrogant and vain." + icon = 'icons/obj/item/clothing/accessory/poncho/dominia_doublecape.dmi' + icon_state = "dominian_doublecape" + item_state = "dominian_doublecape" + overlay_state = "dominian_doublecape" + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/consular + name = "tribunalist consular's cape" + desc = "A truly majestic gold and red cape worn by members of the clergy affiliated with His Majesty's Diplomatic Service." + desc_extended = "His Majesty's Diplomatic Service - as with much of the Empire tends to be dominated by the great houses, though the Service also \ + employs may commoners - as long as they can pass the rigorous examinations required to become a full member of the Diplomatic Service." + icon = 'icons/obj/item/clothing/accessory/poncho/dominia_consular_cape.dmi' + icon_state = "dominia_cape_consular" + item_state = "dominia_cape_consular" + overlay_state = "dominia_cape_consular" + +/obj/item/clothing/accessory/poncho/dominia_cape/tribunalist/medical name = "tribunalist medical cape" desc = "A white-and-green cape in the style of the Dominian clergy. Worn by those medical workers affiliated with the Moroz Holy Tribunal." - cape_backing_state = "" + desc_extended = null + icon = 'icons/obj/item/clothing/accessory/poncho/dominia_medical_cape.dmi' icon_state = "dominian_cape_hospital" item_state = "dominian_cape_hospital" @@ -514,90 +564,6 @@ name = "black zhao noble dress" house = "zhao" -/obj/item/clothing/accessory/poncho/dominia - protects_against_weather = FALSE - -/obj/item/clothing/accessory/poncho/dominia/red/surcoat - name = "tribunalist surcoat" - desc = "A simple red surcoat commonly worn by Dominian clergy members." - desc_extended = "Spun with rough but hardy fabrics from the Dominian frontier, this surcoat is commonly worn by poorer Tribunal clergy as well as missionaries\ - seeking protection from the elements. This garment was popularized by the Kael'kah sect and remains respected as a symbol of humility and poverty amongst priests." - icon = 'icons/obj/item/clothing/accessory/poncho/dominia_surcoat.dmi' - icon_state = "dominian_surcoat" - item_state = "dominian_surcoat" - overlay_state = "dominian_surcoat" - icon_override = null - -/obj/item/clothing/accessory/poncho/dominia/red/double - name = "tribunalist's full cape" - desc = "This is a large cape in the style of Dominian clergy. The symbol of 'The Eye' of the Tribunal is present on both the front and the back." - desc_extended = "This style of cape is among the most flashy and ornate of the Tribunal's garb. Its weight and impracticality of use means that \ - it is often only worn by clergy of high station and on special occasions. Lower ranking members of the Tribunal or those who wear it frequently \ - are often frowned upon as arrogant and vain." - icon = 'icons/obj/item/clothing/accessory/poncho/dominia_doublecape.dmi' - icon_state = "dominian_doublecape" - item_state = "dominian_doublecape" - overlay_state = "dominian_doublecape" - icon_override = null - -/obj/item/clothing/accessory/poncho/dominia/red - name = "tribunalist cape" - desc = "This is a cape in the style of Dominian clergy. The red differentiates the clergy from the nobility who wear traditionally black capes." - desc_extended = "Dominian priests and priestesses are traditionally expected to wear red or golden clothing when discharging \ - their duties. Capes are worn as both a fashion statement to attract the attention of crowds and as a simple form of protection\ - against the elements." - icon = 'icons/obj/item/clothing/accessory/poncho/dominia_red.dmi' - icon_state = "dominian_cape_red" - item_state = "dominian_cape_red" - overlay_state = "dominian_cape_red" - contained_sprite = TRUE - icon_override = null - var/rolled = FALSE - -/obj/item/clothing/accessory/poncho/dominia/red/update_clothing_icon() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_wear_suit() - get_mob_overlay(TRUE) - get_inv_overlay(TRUE) - -/obj/item/clothing/accessory/poncho/dominia/red/verb/roll_up_mantle() - set name = "Roll Up Cape Mantle" - set desc = "Roll up your cape's mantle. Doesn't work with some capes." - set category = "Object.Equipped" - set src in usr - - if(use_check_and_message(usr)) - return FALSE - - var/list/icon_states = icon_states(icon) - var/initial_state = initial(icon_state) - var/new_state = "[initial_state]_h" - if(!(new_state in icon_states)) - to_chat(usr, SPAN_WARNING("Your cape doesn't allow this!")) - return - - rolled = !rolled - to_chat(usr, SPAN_NOTICE("You roll your cape's mantle [rolled ? "up" : "down"].")) - icon_state = rolled ? new_state : initial_state - item_state = rolled ? new_state : initial_state - overlay_state = rolled ? new_state : initial_state - update_icon() - update_clothing_icon() - -/obj/item/clothing/accessory/poncho/dominia/consular - name = "tribunalist consular's cape" - desc = "A truly majestic gold and red cape worn by members of the clergy affiliated with His Majesty's Diplomatic Service." - desc_extended = "His Majesty's Diplomatic Service - as with much of the Empire tends to be dominated by the great houses, though the Service also \ - employs may commoners - as long as they can pass the rigorous examinations required to become a full member of the Diplomatic Service." - icon = 'icons/obj/item/clothing/accessory/poncho/dominia_consular_cape.dmi' - icon_state = "dominia_cape_consular" - item_state = "dominia_cape_consular" - overlay_state = "dominia_cape_consular" - contained_sprite = TRUE - icon_override = null - var/rolled = FALSE - /obj/item/clothing/under/dominia/consular name = "dominian consular officer's uniform" desc = "The traditional red-black-gold uniform of a member of His Majesty's Diplomatic Service." diff --git a/html/changelogs/ElorgRHG-dominia-cape-code-tweaks.yml b/html/changelogs/ElorgRHG-dominia-cape-code-tweaks.yml new file mode 100644 index 00000000000..f9924063ca1 --- /dev/null +++ b/html/changelogs/ElorgRHG-dominia-cape-code-tweaks.yml @@ -0,0 +1,15 @@ +# Your name. +author: ElorgRHG + +# 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, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "The tribunalist medical cape can now have its mantle be rolled up, like its non-medical tribunalist counterpart." + - rscadd: "Alt-clicking on tribunalist capes now rolls their mantles up." + - bugfix: "All dominian capes should now properly display as attached to clothing in character setup preview." diff --git a/icons/obj/item/clothing/accessory/poncho/dominia_cape.dmi b/icons/obj/item/clothing/accessory/poncho/dominia_cape.dmi index 4260a2d4f19e46e8d80e2781ab1e2e4ed9164bd9..a0bedf1e72dd428dfd5aad2f4407d2752b3b20c0 100644 GIT binary patch literal 5490 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 K004jl0{{R3eocQU0000aP)t-sz`($c zj*ePdTHW2teGttc@!6~ZQdYY5u^ALNHv^A@l@(n5T)>e50BXR1l7(~Z zEC2ukw@E}nRA_dE@jBJqz3$WPytML!cFbTz%L;0~h-pdREcI>o6W#dY|<&FdUH+fu2`1 z@rM)g=L4OSftFV^@z({03T@HE$1CL7YX2w$k+&ZL*>%^%$MdvE_Z!C^1+lo>>x@(3Vd4kn$bGYerWSK1^s!Cw$005rF@6C99=M`0#?B zOk!n!Q&Uq@({(E4!6W@;?~ijT<-wea-yi2x{Qfwn;`hfHmGfXOu$Tug2`u8lY+yML vW&+E3@Onm