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 8a9efde9662..8bec363bfae 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -60,7 +60,7 @@
info_text = "As an Adamantine Golem, you possess special vocal cords allowing you to \"resonate\" messages to all golems."
prefix = "Adamantine"
-//Explodes on death
+//The suicide bombers of golemkind
/datum/species/golem/plasma
name = "Plasma Golem"
id = "plasma golem"
@@ -68,13 +68,24 @@
meat = /obj/item/weapon/ore/plasma
//Can burn and takes damage from heat
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR)
- info_text = "As a Plasma Golem, you explode on death!"
- burnmod = 1.5
+ info_text = "As a Plasma Golem, you burn easily. Be careful, if you get hot enough while burning, you'll blow up!"
+ heatmod = 0 //fine until they blow up
prefix = "Plasma"
special_names = list("Flood","Fire","Bar","Man")
+ var/boom_warning = FALSE
+ var/datum/action/innate/ignite/ignite
/datum/species/golem/plasma/spec_life(mob/living/carbon/human/H)
- if(H.bodytemperature > 900 && H.on_fire)
+ if(H.bodytemperature > 750)
+ if(!boom_warning && H.on_fire)
+ to_chat(H, "You feel like you could blow up at any moment!")
+ boom_warning = TRUE
+ else
+ if(boom_warning)
+ to_chat(H, "You feel more stable.")
+ boom_warning = FALSE
+
+ if(H.bodytemperature > 850 && H.on_fire && prob(25))
explosion(get_turf(H),1,2,4,flame_range = 5)
if(H)
H.gib()
@@ -82,6 +93,32 @@
H.adjust_fire_stacks(1)
..()
+/datum/species/golem/plasma/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+ ..()
+ if(ishuman(C))
+ ignite = new
+ ignite.Grant(C)
+
+/datum/species/golem/plasma/on_species_loss(mob/living/carbon/C)
+ if(ignite)
+ ignite.Remove(C)
+ ..()
+
+/datum/action/innate/ignite
+ name = "Ignite"
+ desc = "Set yourself aflame, bringing yourself closer to exploding!"
+ check_flags = AB_CHECK_CONSCIOUS
+ button_icon_state = "sacredflame"
+
+/datum/action/innate/ignite/Activate()
+ if(ishuman(owner))
+ var/mob/living/carbon/human/H = owner
+ if(H.fire_stacks)
+ to_chat(owner, "You ignite yourself!")
+ else
+ to_chat(owner, "You try ignite yourself, but fail!")
+ H.IgniteMob() //firestacks are already there passively
+
//Harder to hurt
/datum/species/golem/diamond
name = "Diamond Golem"