From 19f90acdd006a8ecdec282a690e4031a648fab83 Mon Sep 17 00:00:00 2001 From: Eman Date: Tue, 30 Jul 2019 17:19:35 +0200 Subject: [PATCH 1/4] Blobbernaut major changes Blobbernauts can now be controlled by players through a prompt whicha appears when they are spawned by blobs. Blobbernauts have been nerfed, they now have less health, deal less damage and cannot break walls anymore. Blobbernauts now regenerate health overtime when standing on blob structures. Blobbernauts and blobs can now communicate with each other. Blob's "Produce Blobbernaut" ability has been made more expensive to use, now costing 40 resources instead of 20. --- code/_onclick/hud/blob_overmind.dm | 4 +-- code/game/gamemodes/blob/blobs/blob_mobs.dm | 37 ++++++++++++++++++--- code/game/gamemodes/blob/overmind.dm | 2 +- code/game/gamemodes/blob/powers.dm | 11 ++++-- 4 files changed, 44 insertions(+), 10 deletions(-) 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 From cf46e2b7cee32e0913eb23ff73ab81c27a76929a Mon Sep 17 00:00:00 2001 From: Eman Date: Tue, 30 Jul 2019 21:32:57 +0200 Subject: [PATCH 2/4] Small changes Blobbernauts regenerate health slower. -0.25 from -0.5 per tick. The prompt to play as a blobbernaut now only lasts 15 seconds instead of 30. --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 4 ++-- code/game/gamemodes/blob/powers.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index abb27f94dac..aec24116f33 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -184,8 +184,8 @@ /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) + adjustBruteLoss(-0.25) + adjustFireLoss(-0.25) /mob/living/simple_animal/hostile/blob/blobbernaut/blob_act() return diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 3124d7585ff..f19e23e0d98 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -234,7 +234,7 @@ blobber.overmind = src blob_mobs.Add(blobber) spawn() - var/list/candidates = pollCandidates("Do you want to play as a blobbernaut?", ROLE_BLOB, 1) + var/list/candidates = pollCandidates("Do you want to play as a blobbernaut?", ROLE_BLOB, 1, 150) if(candidates.len) var/mob/C = pick(candidates) if(C) From 51c1780f77ff56242fa3ee818b999f317a8623e6 Mon Sep 17 00:00:00 2001 From: Eman Date: Thu, 1 Aug 2019 13:39:14 +0200 Subject: [PATCH 3/4] Increased the resources needed to create blobbernauts --- code/_onclick/hud/blob_overmind.dm | 4 ++-- code/game/gamemodes/blob/powers.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 0b223fc0b9e..c1f14fc625d 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 (40)" - desc = "Produces a strong, intelligent blobbernaut from a factory blob for 40 resources.
The factory blob will be destroyed in the process." + name = "Produce Blobbernaut (60)" + desc = "Produces a strong, intelligent blobbernaut from a factory blob for 60 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/powers.dm b/code/game/gamemodes/blob/powers.dm index f19e23e0d98..2348155fc11 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 (40)" + set name = "Create Blobbernaut (60)" 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(40)) + if(!can_buy(60)) return var/mob/living/simple_animal/hostile/blob/blobbernaut/blobber = new /mob/living/simple_animal/hostile/blob/blobbernaut (get_turf(B)) From 3d3af66be2a79a878041e6bb9fad119c78366268 Mon Sep 17 00:00:00 2001 From: Eman Date: Fri, 2 Aug 2019 15:59:05 +0200 Subject: [PATCH 4/4] Blobbernauts now lose health if they are not at max health outside of blob structures. --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 5 ++++- code/game/gamemodes/blob/powers.dm | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index aec24116f33..f15f1dc742c 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -183,9 +183,12 @@ /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)) + if(locate(/obj/structure/blob) in get_turf(src)) adjustBruteLoss(-0.25) adjustFireLoss(-0.25) + else + adjustBruteLoss(0.2) // If you are at full health, you won't lose health. You'll need it. However the moment anybody sneezes on you, the decaying will begin. + adjustFireLoss(0.2) /mob/living/simple_animal/hostile/blob/blobbernaut/blob_act() return diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 2348155fc11..810ff50851a 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -240,6 +240,7 @@ 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!") + to_chat(blobber, "You heal while standing on blob structures, however you will decay slowly if you are damaged outside of the blob.") return