diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index f32fc2cea4..e76def6eee 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -335,12 +335,20 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \
/*
* Adamantine
*/
+GLOBAL_LIST_INIT(adamantine_recipes, list(
+ new /datum/stack_recipe("artificial golem shell", /obj/item/golem_shell/artificial, req_amount=1, res_amount=1),
+ ))
+
/obj/item/stack/sheet/mineral/adamantine
name = "adamantine"
icon_state = "sheet-adamantine"
singular_name = "adamantine sheet"
origin_tech = "materials=4"
+/obj/item/stack/sheet/mineral/adamantine/Initialize(mapload, new_amount, merge = TRUE)
+ recipes = GLOB.adamantine_recipes
+ ..()
+
/*
* Mythril
*/
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 42608e1e5d..e56b2221ba 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -9,7 +9,7 @@
punchdamagelow = 5
punchdamagehigh = 14
punchstunthreshold = 11 //about 40% chance to stun
- no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform, slot_s_store)
+ no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform, slot_s_store)
nojumpsuit = 1
sexes = 1
damage_overlay_type = ""
@@ -20,6 +20,7 @@
dangerous_existence = TRUE
limbs_id = "golem"
fixed_mut_color = "aaa"
+ mutant_organs = list(/obj/item/organ/adamantine_resonator)
var/info_text = "As an Iron Golem, you don't have any special traits."
var/prefix = "Iron"
@@ -54,8 +55,9 @@
name = "Adamantine Golem"
id = "adamantine golem"
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine
+ mutant_organs = list(/obj/item/organ/adamantine_resonator, /obj/item/organ/vocal_cords/adamantine)
fixed_mut_color = "4ed"
- info_text = "As an Adamantine Golem, you don't have any special traits."
+ info_text = "As an Adamantine Golem, you possess special vocal cords allowing you to \"resonate\" messages to all golems."
prefix = "Adamantine"
//Explodes on death
@@ -71,14 +73,14 @@
prefix = "Plasma"
special_names = list("Flood","Fire","Bar","Man")
-/datum/species/golem/plasma/spec_life(mob/living/carbon/human/H)
- if(H.bodytemperature > 900 && H.on_fire)
- explosion(get_turf(H),1,2,4,flame_range = 5)
- if(H)
- H.gib()
- if(H.fire_stacks < 2) //flammable
- H.adjust_fire_stacks(1)
- ..()
+/datum/species/golem/plasma/spec_life(mob/living/carbon/human/H)
+ if(H.bodytemperature > 900 && H.on_fire)
+ explosion(get_turf(H),1,2,4,flame_range = 5)
+ if(H)
+ H.gib()
+ if(H.fire_stacks < 2) //flammable
+ H.adjust_fire_stacks(1)
+ ..()
//Harder to hurt
/datum/species/golem/diamond
@@ -505,7 +507,7 @@
sexes = FALSE
info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie."
species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER) //no mutcolors
- prefix = "Runic"
+ prefix = "Runic"
var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift
var/obj/effect/proc_holder/spell/targeted/abyssal_gaze/abyssal_gaze
@@ -643,18 +645,19 @@
if(P.is_hot())
visible_message("[src] bursts into flames!")
- fire_act()
-/datum/species/golem/plastic
- name = "Plastic"
- id = "plastic golem"
- prefix = "Plastic"
- fixed_mut_color = "fff"
- info_text = "As a Plastic Golem, you are capable of ventcrawling, and passing through plastic flaps."
-
-/datum/species/golem/plastic/on_species_gain(mob/living/carbon/C, datum/species/old_species)
- . = ..()
- C.ventcrawler = VENTCRAWLER_NUDE
-
-/datum/species/golem/plastic/on_species_loss(mob/living/carbon/C)
- . = ..()
- C.ventcrawler = initial(C.ventcrawler)
+
+ fire_act()
+/datum/species/golem/plastic
+ name = "Plastic"
+ id = "plastic golem"
+ prefix = "Plastic"
+ fixed_mut_color = "fff"
+ info_text = "As a Plastic Golem, you are capable of ventcrawling, and passing through plastic flaps."
+
+/datum/species/golem/plastic/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+ . = ..()
+ C.ventcrawler = VENTCRAWLER_NUDE
+
+/datum/species/golem/plastic/on_species_loss(mob/living/carbon/C)
+ . = ..()
+ C.ventcrawler = initial(C.ventcrawler)
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index a1c4a74795..c507dd6794 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -477,26 +477,15 @@
..()
//Adamantine
-/datum/chemical_reaction/slime/slimegolem
- name = "Slime Golem"
- id = "m_golem"
+/datum/chemical_reaction/slime/adamantine
+ name = "Adamantine"
+ id = "adamantine"
required_reagents = list("plasma" = 1)
required_container = /obj/item/slime_extract/adamantine
required_other = 1
-/datum/chemical_reaction/slime/slimegolem/on_reaction(datum/reagents/holder)
- new /obj/effect/golemrune(get_turf(holder.my_atom))
- ..()
-
-/datum/chemical_reaction/slime/slimegolem2
- name = "Slime Golem 2"
- id = "m_golem2"
- required_reagents = list("iron" = 1)
- required_container = /obj/item/slime_extract/adamantine
- required_other = 1
-
-/datum/chemical_reaction/slime/slimegolem2/on_reaction(datum/reagents/holder)
- new /obj/item/golem_shell/artificial(get_turf(holder.my_atom))
+/datum/chemical_reaction/slime/adamantine/on_reaction(datum/reagents/holder)
+ new /obj/item/stack/sheet/mineral/adamantine(get_turf(holder.my_atom))
..()
//Bluespace
diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm
index 1007b32fe2..b34986c75f 100644
--- a/code/modules/ruins/lavaland_ruin_code.dm
+++ b/code/modules/ruins/lavaland_ruin_code.dm
@@ -107,6 +107,9 @@
if(istype(O, /obj/item/stack/sheet/plastic))
species = /datum/species/golem/plastic
+ if(istype(O, /obj/item/stack/sheet/mineral/adamantine))
+ species = /datum/species/golem/adamantine
+
if(species)
if(O.use(10))
to_chat(user, "You finish up the golem shell with ten sheets of [O].")
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 50f66fef27..e817557cc2 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -20,6 +20,40 @@
/obj/item/organ/vocal_cords/proc/handle_speech(message) //actually say the message
owner.say(message, spans = spans, sanitize = FALSE)
+/obj/item/organ/adamantine_resonator
+ name = "adamantine resonator"
+ desc = "Fragments of adamantine exists in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders."
+ zone = "head"
+ slot = "adamantine_resonator"
+ icon_state = "adamantine_resonator"
+
+/obj/item/organ/vocal_cords/adamantine
+ name = "adamantine vocal cords"
+ desc = "When adamantine resonates, it causes all nearby pieces of adamantine to resonate as well. Adamantine golems use this to broadcast messages to nearby golems."
+ actions_types = list(/datum/action/item_action/organ_action/use/adamantine_vocal_cords)
+ zone = "mouth"
+ slot = "vocal_cords"
+ icon_state = "adamantine_cords"
+
+/datum/action/item_action/organ_action/use/adamantine_vocal_cords/Trigger()
+ if(!IsAvailable())
+ return
+ var/message = input(owner, "Resonate a message to all nearby golems.", "Resonate")
+ if(QDELETED(src) || QDELETED(owner) || !message)
+ return
+ owner.say(".x[message]")
+
+/obj/item/organ/vocal_cords/adamantine/handle_speech(message)
+ var/msg = "[owner.real_name] resonates, \"[message]\""
+ for(var/m in GLOB.player_list)
+ if(iscarbon(m))
+ var/mob/living/carbon/C = m
+ if(C.getorganslot("adamantine_resonator"))
+ to_chat(C, msg)
+ if(isobserver(m))
+ var/link = FOLLOW_LINK(m, src)
+ to_chat(m, "[link] [msg]")
+
//Colossus drop, forces the listeners to obey certain commands
/obj/item/organ/vocal_cords/colossus
name = "divine vocal cords"
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index 19d6275d78..78657abe36 100644
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index a758818c8c..acecb4874b 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -154,4 +154,5 @@ BIG IMG.icon {width: 32px; height: 32px;}
.love {color: #FF69Bf;}
.lovebold {color: #FF69Bf; font-weight: bold;}
+.resonate {color: #298F85;}
"}