Upstream 12 15 25 unique reskins fixes (#5019)

This branch needs help, tons of datums to make for the customizable
items.

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
This commit is contained in:
nevimer
2026-01-10 13:14:26 -05:00
committed by GitHub
co-authored by Alexis
parent e82dd05cf1
commit a33fd49968
96 changed files with 4246 additions and 2843 deletions
+18 -6
View File
@@ -1,3 +1,20 @@
// Clipboard skins
/datum/atom_skin/clipboard
abstract_type = /datum/atom_skin/clipboard
change_inhand_icon_state = TRUE
/datum/atom_skin/clipboard/brown
preview_name = "Brown"
new_icon_state = "clipboard"
/datum/atom_skin/clipboard/black
preview_name = "Black"
new_icon_state = "clipboard_black"
/datum/atom_skin/clipboard/white
preview_name = "White"
new_icon_state = "clipboard_white"
/**
* Clipboard
*/
@@ -15,12 +32,6 @@
resistance_flags = FLAMMABLE
custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
unique_reskin = list(
"Brown" = "clipboard",
"Black" = "clipboard_black",
"White" = "clipboard_white",
)
unique_reskin_changes_inhand = TRUE
/// The stored pen
var/obj/item/pen/pen
@@ -40,6 +51,7 @@
/obj/item/clipboard/Initialize(mapload)
update_appearance()
. = ..()
AddComponent(/datum/component/reskinable_item, /datum/atom_skin/clipboard)
/obj/item/clipboard/Destroy()
QDEL_NULL(pen)
+46 -24
View File
@@ -177,6 +177,38 @@
time = 3 SECONDS
category = CAT_TOOLS
// Skins for captain's fountain pen
/datum/atom_skin/cap_pen
abstract_type = /datum/atom_skin/cap_pen
/datum/atom_skin/cap_pen/apply(atom/apply_to)
. = ..()
apply_to.desc = "It's an expensive [preview_name] fountain pen. The nib is quite sharp."
/datum/atom_skin/cap_pen/clear_skin(atom/clear_from)
. = ..()
clear_from.desc = initial(clear_from.desc)
/datum/atom_skin/cap_pen/oak
preview_name = "Oak"
new_icon_state = "pen-fountain-o"
/datum/atom_skin/cap_pen/gold
preview_name = "Gold"
new_icon_state = "pen-fountain-g"
/datum/atom_skin/cap_pen/rosewood
preview_name = "Rosewood"
new_icon_state = "pen-fountain-r"
/datum/atom_skin/cap_pen/black_silver
preview_name = "Black and Silver"
new_icon_state = "pen-fountain-b"
/datum/atom_skin/cap_pen/command_blue
preview_name = "Command Blue"
new_icon_state = "pen-fountain-cb"
/obj/item/pen/fountain/captain
name = "captain's fountain pen"
desc = "It's an expensive Oak fountain pen. The nib is quite sharp."
@@ -187,22 +219,15 @@
custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT*7.5)
sharpness = SHARP_EDGED
resistance_flags = FIRE_PROOF
unique_reskin = list(
"Oak" = "pen-fountain-o",
"Gold" = "pen-fountain-g",
"Rosewood" = "pen-fountain-r",
"Black and Silver" = "pen-fountain-b",
"Command Blue" = "pen-fountain-cb"
)
embed_type = /datum/embedding/pen/captain
dart_insert_casing_icon_state = "overlay_fountainpen_gold"
dart_insert_projectile_icon_state = "overlay_fountainpen_gold_proj"
var/list/overlay_reskin = list(
"Oak" = "overlay_fountainpen_gold",
"Gold" = "overlay_fountainpen_gold",
"Rosewood" = "overlay_fountainpen_gold",
"Black and Silver" = "overlay_fountainpen",
"Command Blue" = "overlay_fountainpen_gold"
/datum/atom_skin/cap_pen/black_silver::preview_name = "overlay_fountainpen",
/datum/atom_skin/cap_pen/command_blue::preview_name = "overlay_fountainpen_gold",
/datum/atom_skin/cap_pen/gold::preview_name = "overlay_fountainpen_gold",
/datum/atom_skin/cap_pen/oak::preview_name = "overlay_fountainpen_gold",
/datum/atom_skin/cap_pen/rosewood::preview_name = "overlay_fountainpen_gold",
)
/datum/embedding/pen/captain
@@ -210,24 +235,21 @@
/obj/item/pen/fountain/captain/Initialize(mapload)
. = ..()
AddComponent(/datum/component/butchering, \
speed = 20 SECONDS, \
effectiveness = 115, \
AddComponent( \
/datum/component/butchering, \
speed = 20 SECONDS, \
effectiveness = 115, \
)
AddComponent(/datum/component/reskinable_item, /datum/atom_skin/cap_pen)
//the pen is mightier than the sword
RegisterSignal(src, COMSIG_DART_INSERT_PARENT_RESKINNED, PROC_REF(reskin_dart_insert))
/obj/item/pen/fountain/captain/reskin_obj(mob/M)
..()
if(current_skin)
desc = "It's an expensive [current_skin] fountain pen. The nib is quite sharp."
/obj/item/pen/fountain/captain/proc/reskin_dart_insert(datum/component/dart_insert/insert_comp)
/obj/item/pen/fountain/captain/proc/reskin_dart_insert(datum/component/dart_insert/insert_comp, skin)
SIGNAL_HANDLER
if(!istype(insert_comp)) //You really shouldn't be sending this signal from anything other than a dart_insert component
return
insert_comp.casing_overlay_icon_state = overlay_reskin[current_skin]
insert_comp.projectile_overlay_icon_state = "[overlay_reskin[current_skin]]_proj"
insert_comp.casing_overlay_icon_state = overlay_reskin[skin]
insert_comp.projectile_overlay_icon_state = "[overlay_reskin[skin]]_proj"
/obj/item/pen/item_ctrl_click(mob/living/carbon/user)
if(loc != user)