diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index 1e8f99814df..0b223fc0b9e 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -49,8 +49,8 @@
/obj/screen/blob/Blobbernaut
icon_state = "ui_blobbernaut"
- name = "Produce Blobbernaut (20)"
- desc = "Produces a strong, but dumb blobbernaut from a factory blob for 20 resources.
The factory blob will be destroyed in the process."
+ name = "Produce Blobbernaut (40)"
+ desc = "Produces a strong, intelligent blobbernaut from a factory blob for 40 resources.
The factory blob will be destroyed in the process."
/obj/screen/blob/Blobbernaut/Click()
if(isovermind(usr))
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index bf2143b9784..abb27f94dac 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -163,10 +163,10 @@
icon_state = "blobbernaut"
icon_living = "blobbernaut"
icon_dead = "blobbernaut_dead"
- health = 240
- maxHealth = 240
- melee_damage_lower = 20
- melee_damage_upper = 20
+ health = 200
+ maxHealth = 200
+ melee_damage_lower = 10
+ melee_damage_upper = 15
obj_damage = 60
attacktext = "hits"
attack_sound = 'sound/effects/blobattack.ogg'
@@ -175,18 +175,45 @@
maxbodytemp = 360
force_threshold = 10
mob_size = MOB_SIZE_LARGE
- environment_smash = ENVIRONMENT_SMASH_RWALLS
+ environment_smash = ENVIRONMENT_SMASH_STRUCTURES
pressure_resistance = 100 //100 kPa difference required to push
throw_pressure_limit = 120 //120 kPa difference required to throw
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
+/mob/living/simple_animal/hostile/blob/blobbernaut/Life(seconds, times_fired)
+ if(stat != DEAD && (getBruteLoss() || getFireLoss())) // Heal on blob structures
+ if (locate(/obj/structure/blob) in get_turf(src))
+ adjustBruteLoss(-0.5)
+ adjustFireLoss(-0.5)
+
/mob/living/simple_animal/hostile/blob/blobbernaut/blob_act()
return
+/mob/living/simple_animal/hostile/blob/blobbernaut/New()
+ ..()
+ if(name == "blobbernaut")
+ name = text("blobbernaut ([rand(1, 1000)])")
+
/mob/living/simple_animal/hostile/blob/blobbernaut/death(gibbed)
// Only execute the below if we successfully died
. = ..()
if(!.)
return FALSE
flick("blobbernaut_death", src)
+
+/mob/living/simple_animal/hostile/blob/blobbernaut/verb/communicate_overmind()
+ set category = "Blobbernaut"
+ set name = "Blob Telepathy"
+ set desc = "Send a message to the Overmind"
+
+ if(stat != DEAD)
+ blob_talk()
+
+/mob/living/simple_animal/hostile/blob/blobbernaut/proc/blob_talk()
+ var/message = input(src, "Announce to the overmind", "Blob Telepathy")
+ var/rendered = "Blob Telepathy, [name]([overmind]) states, \"[message]\""
+ if(message)
+ for(var/mob/M in GLOB.mob_list)
+ if(isovermind(M) || isobserver(M) || istype((M), /mob/living/simple_animal/hostile/blob/blobbernaut))
+ M.show_message(rendered, 2)
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 4489aaf707b..d4d9dc15c58 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -84,7 +84,7 @@
var/rendered = "Blob Telepathy, [name]([blob_reagent_datum.name]) [verb] \"[message]\""
for(var/mob/M in GLOB.mob_list)
- if(isovermind(M) || isobserver(M))
+ if(isovermind(M) || isobserver(M) || istype((M), /mob/living/simple_animal/hostile/blob/blobbernaut))
M.show_message(rendered, 2)
/mob/camera/blob/emote(act, m_type = 1, message = null, force)
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 2743277edb7..3124d7585ff 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -207,7 +207,7 @@
/mob/camera/blob/verb/create_blobbernaut()
set category = "Blob"
- set name = "Create Blobbernaut (20)"
+ set name = "Create Blobbernaut (40)"
set desc = "Create a powerful blob-being, a Blobbernaut"
var/turf/T = get_turf(src)
@@ -224,7 +224,7 @@
to_chat(src, "Unable to use this blob, find a factory blob.")
return
- if(!can_buy(20))
+ if(!can_buy(40))
return
var/mob/living/simple_animal/hostile/blob/blobbernaut/blobber = new /mob/living/simple_animal/hostile/blob/blobbernaut (get_turf(B))
@@ -233,6 +233,13 @@
blobber.color = blob_reagent_datum.complementary_color
blobber.overmind = src
blob_mobs.Add(blobber)
+ spawn()
+ var/list/candidates = pollCandidates("Do you want to play as a blobbernaut?", ROLE_BLOB, 1)
+ if(candidates.len)
+ var/mob/C = pick(candidates)
+ if(C)
+ blobber.key = C.key
+ to_chat(blobber, "You are a blobbernaut! You must assist all blob lifeforms in their mission to consume everything!")
return