Merge pull request #11948 from Emanthealmighty/Playerinteractionblob

Blobbernaut major changes (player control!)
This commit is contained in:
variableundefined
2019-08-25 16:39:07 -04:00
committed by GitHub
4 changed files with 48 additions and 10 deletions
+2 -2
View File
@@ -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.<br>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.<br>The factory blob will be destroyed in the process."
/obj/screen/blob/Blobbernaut/Click()
if(isovermind(usr))
+35 -5
View File
@@ -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,48 @@
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.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
/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 = "<font color=\"#EE4000\"><i><span class='game say'>Blob Telepathy, <span class='name'>[name]([overmind])</span> <span class='message'>states, \"[message]\"</span></span></i></font>"
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)
+1 -1
View File
@@ -84,7 +84,7 @@
var/rendered = "<font color=\"#EE4000\"><i><span class='game say'>Blob Telepathy, <span class='name'>[name]([blob_reagent_datum.name])</span> <span class='message'>[verb] \"[message]\"</span></span></i></font>"
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)
+10 -2
View File
@@ -208,7 +208,7 @@
/mob/camera/blob/verb/create_blobbernaut()
set category = "Blob"
set name = "Create Blobbernaut (20)"
set name = "Create Blobbernaut (60)"
set desc = "Create a powerful blob-being, a Blobbernaut"
var/turf/T = get_turf(src)
@@ -225,7 +225,7 @@
to_chat(src, "Unable to use this blob, find a factory blob.")
return
if(!can_buy(20))
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))
@@ -234,6 +234,14 @@
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, 150)
if(candidates.len)
var/mob/C = pick(candidates)
if(C)
blobber.key = C.key
to_chat(blobber, "<span class='biggerdanger'>You are a blobbernaut! You must assist all blob lifeforms in their mission to consume everything!</span>")
to_chat(blobber, "<span class='danger'>You heal while standing on blob structures, however you will decay slowly if you are damaged outside of the blob.</span>")
return