From e633b1b715358b432343aa4661ffe9d31c0209e4 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 00:16:05 -0400
Subject: [PATCH 01/22] Initial
---
.../human/species/station/prometheans_vr.dm | 28 ++++
.../human/species/station/prommie_blob.dm | 140 ++++++++++++++++++
vorestation.dme | 3 +-
3 files changed, 170 insertions(+), 1 deletion(-)
create mode 100644 code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index f2b233cccf5..c7562307894 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -32,6 +32,34 @@
/mob/living/carbon/human/proc/shapeshifter_select_wings,
/mob/living/carbon/human/proc/shapeshifter_select_tail,
/mob/living/carbon/human/proc/shapeshifter_select_ears,
+ /mob/living/carbon/human/proc/prommie_blobform,
/mob/living/proc/set_size,
/mob/living/carbon/human/proc/promethean_select_opaqueness,
)
+
+/mob/living/carbon/human/proc/prommie_blobform()
+ set name = "Toggle Blobform"
+ set desc = "Switch between amorphous and humanoid forms."
+ set category = "Abilities"
+ set hidden = TRUE
+
+ var/atom/movable/to_locate = temporary_form || src
+ if(!isturf(to_locate.loc))
+ to_chat(to_locate,"You need more space to perform this action!")
+ return
+
+ //Blob form
+ if(temporary_form)
+ if(health < maxHealth*0.5)
+ to_chat(temporary_form,"You need to regenerate more nanites first!")
+ else if(temporary_form.stat)
+ to_chat(temporary_form,"You can only do this while not stunned.")
+ else
+ prommie_outofblob(temporary_form)
+
+ //Human form
+ else if(stat)
+ to_chat(src,"You can only do this while not stunned.")
+ return
+ else
+ prommie_intoblob()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
new file mode 100644
index 00000000000..cdd39ac7ab4
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -0,0 +1,140 @@
+// Prommies are slimes, lets make them a subtype of slimes.
+/mob/living/simple_mob/slime/promethean
+ desc = "This slime changes colors constantly."
+ color = null // Uses a special icon_state.
+ slime_color = "rainbow"
+ unity = TRUE
+ water_resist = 100 // Lets not kill the prommies
+
+ description_info = "It's a little squisher! Lil' Blurble! Small wurble! It's a flowing blob of goop, with a spark of intelligence!"
+
+ var/mob/living/carbon/human/humanform
+ var/datum/modifier/healing
+
+ var/obj/prev_left_hand
+ var/obj/prev_right_hand
+
+// Helpers - Unsafe, WILL perform change.
+/mob/living/carbon/human/proc/prommie_intoblob(force)
+ if(!force && !isturf(loc))
+ to_chat(src,"You can't change forms while inside something.")
+ return
+
+ handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
+ remove_micros(src, src) //Living things don't fare well in roblobs.
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Record where they should go
+ var/atom/creation_spot = drop_location()
+
+ //Create our new blob
+ var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
+
+ //Drop all our things
+ var/list/things_to_drop = contents.Copy()
+ var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
+
+ things_to_drop -= things_to_not_drop //Crunch the lists
+ things_to_drop -= organs //Mah armbs
+ things_to_drop -= internal_organs //Mah sqeedily spooch
+
+ for(var/obj/item/I in things_to_drop) //rip hoarders
+ drop_from_inventory(I)
+
+ if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
+ var/obj/item/clothing/uniform = w_uniform
+ if(LAZYLEN(uniform.accessories))
+ for(var/obj/item/clothing/accessory/A in uniform.accessories)
+ if(is_type_in_list(A, disallowed_protean_accessories))
+ uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
+
+ //Size update
+ blob.transform = matrix()*size_multiplier
+ blob.size_multiplier = size_multiplier
+
+ if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
+ if(r_hand) blob.prev_right_hand = r_hand
+
+ //Put our owner in it (don't transfer var/mind)
+ blob.ckey = ckey
+ temporary_form = blob
+
+ //Mail them to nullspace
+ moveToNullspace()
+
+ //Message
+ blob.visible_message("[src.name] collapses into a gooey blob!")
+
+ //Transfer vore organs
+ blob.vore_organs = vore_organs
+ blob.vore_selected = vore_selected
+ for(var/obj/belly/B as anything in vore_organs)
+ B.forceMove(blob)
+ B.owner = blob
+
+ //We can still speak our languages!
+ blob.languages = languages.Copy()
+
+ //Return our blob in case someone wants it
+ return blob
+
+mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
+ if(!istype(blob))
+ return
+
+ if(!force && !isturf(blob.loc))
+ to_chat(blob,"You can't change forms while inside something.")
+ return
+
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Stop healing if we are
+ if(blob.healing)
+ blob.healing.expire()
+
+ //Message
+ blob.visible_message("[src.name] reshapes into a humanoid appearance!")
+
+ //Record where they should go
+ var/atom/reform_spot = blob.drop_location()
+
+ //Size update
+ resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
+
+ //Move them back where the blob was
+ forceMove(reform_spot)
+
+ //Put our owner in it (don't transfer var/mind)
+ ckey = blob.ckey
+ temporary_form = null
+
+ //Transfer vore organs
+ vore_selected = blob.vore_selected
+ for(var/obj/belly/B as anything in blob.vore_organs)
+ B.forceMove(src)
+ B.owner = src
+
+ if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
+ if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
+
+ Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
+
+ //Get rid of friend blob
+ qdel(blob)
+
+ //Return ourselves in case someone wants it
+ return src
\ No newline at end of file
diff --git a/vorestation.dme b/vorestation.dme
index ec74fd632c5..6ae5acf3e24 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2841,6 +2841,7 @@
#include "code\modules\mob\living\carbon\human\species\station\monkey_vr.dm"
#include "code\modules\mob\living\carbon\human\species\station\prometheans.dm"
#include "code\modules\mob\living\carbon\human\species\station\prometheans_vr.dm"
+#include "code\modules\mob\living\carbon\human\species\station\prommie_blob.dm"
#include "code\modules\mob\living\carbon\human\species\station\station.dm"
#include "code\modules\mob\living\carbon\human\species\station\station_special_abilities_vr.dm"
#include "code\modules\mob\living\carbon\human\species\station\station_special_vr.dm"
@@ -4099,7 +4100,6 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
-#include "maps\stellardelight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"
@@ -4109,5 +4109,6 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
+#include "maps\virgo_minitest\virgo_minitest.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE
From abfb6d2b62eb5f73ec8ca18d21fbb3625050294b Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 01:21:05 -0400
Subject: [PATCH 02/22] Stuff
---
.../human/species/station/prometheans_vr.dm | 2 +-
.../human/species/station/prommie_blob.dm | 28 +++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index c7562307894..f040c377758 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -41,7 +41,7 @@
set name = "Toggle Blobform"
set desc = "Switch between amorphous and humanoid forms."
set category = "Abilities"
- set hidden = TRUE
+ set hidden = FALSE
var/atom/movable/to_locate = temporary_form || src
if(!isturf(to_locate.loc))
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index cdd39ac7ab4..41628145f61 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -5,6 +5,8 @@
slime_color = "rainbow"
unity = TRUE
water_resist = 100 // Lets not kill the prommies
+ can_buckle = TRUE
+ cores = 0
description_info = "It's a little squisher! Lil' Blurble! Small wurble! It's a flowing blob of goop, with a spark of intelligence!"
@@ -14,6 +16,28 @@
var/obj/prev_left_hand
var/obj/prev_right_hand
+/mob/living/simple_mob/slime/promethean/Initialize()
+ verbs |= /mob/living/proc/ventcrawl
+ verbs += /mob/living/carbon/human/proc/prommie_blobform
+ verbs += /mob/living/proc/set_size
+ verbs += /mob/living/proc/hide
+ update_mood()
+ glow_color = color
+ handle_light()
+ update_icon()
+ return
+
+//Constructor allows passing the human to sync damages
+/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
+ ..()
+ if(H)
+ humanform = H
+ updatehealth()
+
+ verbs |= /mob/living/proc/hide
+ else
+ update_icon()
+
// Helpers - Unsafe, WILL perform change.
/mob/living/carbon/human/proc/prommie_intoblob(force)
if(!force && !isturf(loc))
@@ -64,6 +88,9 @@
//Put our owner in it (don't transfer var/mind)
blob.ckey = ckey
+ blob.name = name
+ blob.color = color
+ blob.mood = ":3"
temporary_form = blob
//Mail them to nullspace
@@ -120,6 +147,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Put our owner in it (don't transfer var/mind)
ckey = blob.ckey
+ color = blob.color
temporary_form = null
//Transfer vore organs
From 890e03f17db0cf755f40c2a609c49663d65dacfe Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 02:12:33 -0400
Subject: [PATCH 03/22] Update prommie_blob.dm
---
.../living/carbon/human/species/station/prommie_blob.dm | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 41628145f61..12fbe1807f2 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -25,7 +25,12 @@
glow_color = color
handle_light()
update_icon()
- return
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/Stat()
+ ..()
+ if(humanform)
+ humanform.species.Stat(humanform)
//Constructor allows passing the human to sync damages
/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
@@ -89,7 +94,7 @@
//Put our owner in it (don't transfer var/mind)
blob.ckey = ckey
blob.name = name
- blob.color = color
+ blob.color = rgb(r_skin, g_skin, b_skin)
blob.mood = ":3"
temporary_form = blob
From b378548ec3fae88d544265af7650bb6fcd79531f Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 02:19:26 -0400
Subject: [PATCH 04/22] Update prommie_blob.dm
---
.../mob/living/carbon/human/species/station/prommie_blob.dm | 1 +
1 file changed, 1 insertion(+)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 12fbe1807f2..62004eb7562 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -7,6 +7,7 @@
water_resist = 100 // Lets not kill the prommies
can_buckle = TRUE
cores = 0
+ movement_cooldown = 3
description_info = "It's a little squisher! Lil' Blurble! Small wurble! It's a flowing blob of goop, with a spark of intelligence!"
From 31d5b7a21708efce9061f3eda901035c39b14f70 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 14:27:35 -0400
Subject: [PATCH 05/22] Blobs can now humanoid
---
.../human/species/station/prometheans_vr.dm | 23 ++-
.../human/species/station/prommie_blob.dm | 163 +++++++++++++++++-
2 files changed, 177 insertions(+), 9 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index f040c377758..66543b70a80 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -47,19 +47,30 @@
if(!isturf(to_locate.loc))
to_chat(to_locate,"You need more space to perform this action!")
return
-
+ /*
//Blob form
if(temporary_form)
- if(health < maxHealth*0.5)
- to_chat(temporary_form,"You need to regenerate more nanites first!")
- else if(temporary_form.stat)
+ if(temporary_form.stat)
to_chat(temporary_form,"You can only do this while not stunned.")
else
prommie_outofblob(temporary_form)
-
+ */
//Human form
else if(stat)
to_chat(src,"You can only do this while not stunned.")
return
else
- prommie_intoblob()
\ No newline at end of file
+ prommie_intoblob()
+
+/datum/species/shapeshifter/promethean/handle_death(var/mob/living/carbon/human/H)
+ if(!H)
+ return // Iono!
+
+ if(H.temporary_form)
+ H.forceMove(H.temporary_form.drop_location())
+ H.ckey = H.temporary_form.ckey
+ QDEL_NULL(H.temporary_form)
+
+ spawn(1)
+ if(H)
+ H.gib()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 62004eb7562..088d6866205 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -8,6 +8,7 @@
can_buckle = TRUE
cores = 0
movement_cooldown = 3
+ appearance_flags = RADIATION_GLOWS
description_info = "It's a little squisher! Lil' Blurble! Small wurble! It's a flowing blob of goop, with a spark of intelligence!"
@@ -16,10 +17,12 @@
var/obj/prev_left_hand
var/obj/prev_right_hand
+ var/human_brute = 0
+ var/human_burn = 0
/mob/living/simple_mob/slime/promethean/Initialize()
- verbs |= /mob/living/proc/ventcrawl
- verbs += /mob/living/carbon/human/proc/prommie_blobform
+ verbs -= /mob/living/proc/ventcrawl
+ verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
verbs += /mob/living/proc/hide
update_mood()
@@ -97,6 +100,7 @@
blob.name = name
blob.color = rgb(r_skin, g_skin, b_skin)
blob.mood = ":3"
+ blob.update_icon()
temporary_form = blob
//Mail them to nullspace
@@ -171,4 +175,157 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
qdel(blob)
//Return ourselves in case someone wants it
- return src
\ No newline at end of file
+ return src
+
+/mob/living/simple_mob/slime/promethean/updatehealth()
+ if(!humanform)
+ return ..()
+
+ //Set the max
+ maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh.
+ //Set us to their health, but, human health ignores robolimbs so we do it 'the hard way'
+ human_brute = humanform.getActualBruteLoss()
+ human_burn = humanform.getActualFireLoss()
+ health = maxHealth - humanform.getOxyLoss() - humanform.getToxLoss() - humanform.getCloneLoss() - human_brute - human_burn
+
+ //Alive, becoming dead
+ if((stat < DEAD) && (health <= 0))
+ death()
+
+ //Overhealth
+ if(health > getMaxHealth())
+ health = getMaxHealth()
+
+ //Grab any other interesting values
+ confused = humanform.confused
+ radiation = humanform.radiation
+ paralysis = humanform.paralysis
+
+ //Update our hud if we have one
+ if(healths)
+ if(stat != DEAD)
+ var/heal_per = (health / getMaxHealth()) * 100
+ switch(heal_per)
+ if(100 to INFINITY)
+ healths.icon_state = "health0"
+ if(80 to 100)
+ healths.icon_state = "health1"
+ if(60 to 80)
+ healths.icon_state = "health2"
+ if(40 to 60)
+ healths.icon_state = "health3"
+ if(20 to 40)
+ healths.icon_state = "health4"
+ if(0 to 20)
+ healths.icon_state = "health5"
+ else
+ healths.icon_state = "health6"
+ else
+ healths.icon_state = "health7"
+
+// All the damage and such to the blob translates to the human
+/mob/living/simple_mob/slime/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
+ if(humanform)
+ return humanform.apply_effect(effect, effecttype, blocked, check_protection)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustBruteLoss(var/amount,var/include_robo)
+ amount *= 1.5
+ if(humanform)
+ return humanform.adjustBruteLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustFireLoss(var/amount,var/include_robo)
+ amount *= 1.5
+ if(humanform)
+ return humanform.adjustFireLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustToxLoss(amount)
+ if(humanform)
+ return humanform.adjustToxLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustOxyLoss(amount)
+ if(humanform)
+ return humanform.adjustOxyLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustHalLoss(amount)
+ if(humanform)
+ return humanform.adjustHalLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/adjustCloneLoss(amount)
+ if(humanform)
+ return humanform.adjustCloneLoss(amount)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/ex_act(severity)
+ if(humanform)
+ return humanform.ex_act(severity)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/rad_act(severity)
+ if(humanform)
+ return humanform.ex_act(severity)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
+ if(humanform)
+ return humanform.bullet_act(P)
+ else
+ return ..()
+
+/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
+ if(humanform)
+ humanform.death(gibbed, deathmessage)
+ else
+ animate(src, alpha = 0, time = 2 SECONDS)
+ sleep(2 SECONDS)
+
+ if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart
+ qdel(src)
+
+/mob/living/simple_mob/slime/promethean/proc/prommie_blobform()
+ set name = "Toggle Blobform"
+ set desc = "Switch between amorphous and humanoid forms."
+ set category = "Abilities"
+ set hidden = FALSE
+
+ to_chat(src,"Blob form attepted to revert!")
+ var/atom/movable/to_locate = src
+ if(!isturf(to_locate.loc))
+ to_chat(src,"You need more space to perform this action!")
+ return
+
+ //Blob form
+ if(!ishuman(src))
+ to_chat(src,"They are a blob!")
+ if(humanform.temporary_form.stat)
+ to_chat(src,"You can only do this while not stunned.")
+ else
+ to_chat(src,"Attempting to revert!")
+ humanform.prommie_outofblob(src)
+
+/datum/species/shapeshifter/promethean/handle_death(var/mob/living/carbon/human/H)
+ if(!H)
+ return // Iono!
+
+ if(H.temporary_form)
+ H.forceMove(H.temporary_form.drop_location())
+ H.ckey = H.temporary_form.ckey
+ QDEL_NULL(H.temporary_form)
+
+ spawn(1)
+ if(H)
+ H.gib()
\ No newline at end of file
From f0319310306011329022a8463d80b681fe128d0c Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 17:05:29 -0400
Subject: [PATCH 06/22] Update prommie_blob.dm
---
.../human/species/station/prommie_blob.dm | 83 +++++++++++++------
1 file changed, 56 insertions(+), 27 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 088d6866205..ff587868205 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -1,6 +1,7 @@
// Prommies are slimes, lets make them a subtype of slimes.
-/mob/living/simple_mob/slime/promethean
- desc = "This slime changes colors constantly."
+/mob/living/simple_mob/slime/xenobio/promethean
+ desc = "A promethean expressing their true form."
+ //ai_holder_type = null
color = null // Uses a special icon_state.
slime_color = "rainbow"
unity = TRUE
@@ -9,8 +10,9 @@
cores = 0
movement_cooldown = 3
appearance_flags = RADIATION_GLOWS
-
- description_info = "It's a little squisher! Lil' Blurble! Small wurble! It's a flowing blob of goop, with a spark of intelligence!"
+ shock_resist = 0 // Lets not be immune to zaps.
+ is_adult = TRUE
+ harmless = TRUE
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -20,9 +22,9 @@
var/human_brute = 0
var/human_burn = 0
-/mob/living/simple_mob/slime/promethean/Initialize()
- verbs -= /mob/living/proc/ventcrawl
- verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
+/mob/living/simple_mob/slime/xenobio/promethean/Initialize()
+ //verbs -= /mob/living/proc/ventcrawl
+ verbs += /mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
verbs += /mob/living/proc/hide
update_mood()
@@ -31,19 +33,19 @@
update_icon()
return ..()
-/mob/living/simple_mob/slime/promethean/Stat()
+/mob/living/simple_mob/slime/xenobio/promethean/Stat()
..()
if(humanform)
humanform.species.Stat(humanform)
//Constructor allows passing the human to sync damages
-/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
+/mob/living/simple_mob/slime/xenobio/promethean/New(var/newloc, var/mob/living/carbon/human/H)
..()
if(H)
humanform = H
updatehealth()
- verbs |= /mob/living/proc/hide
+ verbs += /mob/living/proc/hide
else
update_icon()
@@ -68,7 +70,7 @@
var/atom/creation_spot = drop_location()
//Create our new blob
- var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
+ var/mob/living/simple_mob/slime/xenobio/promethean/blob = new(creation_spot,src)
//Drop all our things
var/list/things_to_drop = contents.Copy()
@@ -96,11 +98,18 @@
if(r_hand) blob.prev_right_hand = r_hand
//Put our owner in it (don't transfer var/mind)
+ qdel(blob.ai_holder)
+ blob.ai_holder = null
blob.ckey = ckey
blob.name = name
blob.color = rgb(r_skin, g_skin, b_skin)
+ //blob.pacify()
+ //blob.make_adult()
blob.mood = ":3"
blob.update_icon()
+ blob.verbs -= /mob/living/proc/ventcrawl
+ blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve
+ blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/reproduce
temporary_form = blob
//Mail them to nullspace
@@ -122,7 +131,7 @@
//Return our blob in case someone wants it
return blob
-mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
+mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/xenobio/promethean/blob, force)
if(!istype(blob))
return
@@ -157,7 +166,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Put our owner in it (don't transfer var/mind)
ckey = blob.ckey
- color = blob.color
temporary_form = null
//Transfer vore organs
@@ -177,7 +185,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Return ourselves in case someone wants it
return src
-/mob/living/simple_mob/slime/promethean/updatehealth()
+/mob/living/simple_mob/slime/xenobio/promethean/updatehealth()
if(!humanform)
return ..()
@@ -224,69 +232,69 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
healths.icon_state = "health7"
// All the damage and such to the blob translates to the human
-/mob/living/simple_mob/slime/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
+/mob/living/simple_mob/slime/xenobio/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
if(humanform)
return humanform.apply_effect(effect, effecttype, blocked, check_protection)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustBruteLoss(var/amount,var/include_robo)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustBruteLoss(var/amount,var/include_robo)
amount *= 1.5
if(humanform)
return humanform.adjustBruteLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustFireLoss(var/amount,var/include_robo)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustFireLoss(var/amount,var/include_robo)
amount *= 1.5
if(humanform)
return humanform.adjustFireLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustToxLoss(amount)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustToxLoss(amount)
if(humanform)
return humanform.adjustToxLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustOxyLoss(amount)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustOxyLoss(amount)
if(humanform)
return humanform.adjustOxyLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustHalLoss(amount)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustHalLoss(amount)
if(humanform)
return humanform.adjustHalLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/adjustCloneLoss(amount)
+/mob/living/simple_mob/slime/xenobio/promethean/adjustCloneLoss(amount)
if(humanform)
return humanform.adjustCloneLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/promethean/ex_act(severity)
+/mob/living/simple_mob/slime/xenobio/promethean/ex_act(severity)
if(humanform)
return humanform.ex_act(severity)
else
return ..()
-/mob/living/simple_mob/slime/promethean/rad_act(severity)
+/mob/living/simple_mob/slime/xenobio/promethean/rad_act(severity)
if(humanform)
return humanform.ex_act(severity)
else
return ..()
-/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/slime/xenobio/promethean/bullet_act(obj/item/projectile/P)
if(humanform)
return humanform.bullet_act(P)
else
return ..()
-/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
+/mob/living/simple_mob/slime/xenobio/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
if(humanform)
humanform.death(gibbed, deathmessage)
else
@@ -296,7 +304,11 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart
qdel(src)
-/mob/living/simple_mob/slime/promethean/proc/prommie_blobform()
+/mob/living/simple_mob/slime/xenobio/promethean/Login()
+ . = ..()
+ copy_from_prefs_vr(bellies = FALSE)
+
+/mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform()
set name = "Toggle Blobform"
set desc = "Switch between amorphous and humanoid forms."
set category = "Abilities"
@@ -328,4 +340,21 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
spawn(1)
if(H)
- H.gib()
\ No newline at end of file
+ H.gib()
+
+/mob/living/simple_mob/slime/xenobio/promethean/get_description_interaction()
+ return
+
+
+/mob/living/simple_mob/slime/xenobio/promethean/get_description_info()
+ return
+
+/mob/living/simple_mob/slime/xenobio/promethean/examine(mob/user)
+ . = ..()
+ . -= "It appears to have been pacified."
+
+/mob/living/simple_mob/slime/attackby(obj/item/I, mob/user)
+ if(istype(I, /obj/item/slimepotion))
+ to_chat(user, "You can't feed this to a promethean!.")
+ return
+ ..()
\ No newline at end of file
From 583cc5c925aa06101a30e37447237a2487abbacb Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 18:42:14 -0400
Subject: [PATCH 07/22] Update prommie_blob.dm
---
.../human/species/station/prommie_blob.dm | 25 ++++++++++++++-----
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index ff587868205..ab00e584852 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -13,6 +13,7 @@
shock_resist = 0 // Lets not be immune to zaps.
is_adult = TRUE
harmless = TRUE
+ friendly = list("nuzzles", "glomps", "snuggles", "hugs") // lets be cute :3
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -27,6 +28,8 @@
verbs += /mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
verbs += /mob/living/proc/hide
+ verbs += /mob/living/simple_mob/proc/animal_nom
+ verbs += /mob/living/proc/shred_limb
update_mood()
glow_color = color
handle_light()
@@ -74,14 +77,16 @@
//Drop all our things
var/list/things_to_drop = contents.Copy()
- var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
-
+ var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear,head) //And whatever else we decide for balancing.
+ var/obj/item/clothing/head/new_hat
things_to_drop -= things_to_not_drop //Crunch the lists
things_to_drop -= organs //Mah armbs
things_to_drop -= internal_organs //Mah sqeedily spooch
for(var/obj/item/I in things_to_drop) //rip hoarders
drop_from_inventory(I)
+ for(var/obj/item/clothing/head/H in things_to_not_drop)
+ new_hat = H
if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
var/obj/item/clothing/uniform = w_uniform
@@ -100,16 +105,23 @@
//Put our owner in it (don't transfer var/mind)
qdel(blob.ai_holder)
blob.ai_holder = null
+ if(new_hat)
+ blob.hat = new_hat
+ unEquip(new_hat)
+ new_hat.forceMove(src)
blob.ckey = ckey
blob.name = name
blob.color = rgb(r_skin, g_skin, b_skin)
//blob.pacify()
//blob.make_adult()
blob.mood = ":3"
+
+
blob.update_icon()
- blob.verbs -= /mob/living/proc/ventcrawl
- blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve
+ blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
+ blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve // We aren't really xenobio, so none of this.
blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/reproduce
+ blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
temporary_form = blob
//Mail them to nullspace
@@ -166,6 +178,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
//Put our owner in it (don't transfer var/mind)
ckey = blob.ckey
+ equip_to_slot_if_possible(blob.hat, slot_head)
temporary_form = null
//Transfer vore organs
@@ -239,14 +252,14 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
return ..()
/mob/living/simple_mob/slime/xenobio/promethean/adjustBruteLoss(var/amount,var/include_robo)
- amount *= 1.5
+ amount *= 0.75
if(humanform)
return humanform.adjustBruteLoss(amount)
else
return ..()
/mob/living/simple_mob/slime/xenobio/promethean/adjustFireLoss(var/amount,var/include_robo)
- amount *= 1.5
+ amount *= 2
if(humanform)
return humanform.adjustFireLoss(amount)
else
From 7404f10522b12bdf4cefa7f253c8e9fa24e9d222 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 21:05:52 -0400
Subject: [PATCH 08/22] Update prommie_blob.dm
---
.../mob/living/carbon/human/species/station/prommie_blob.dm | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index ab00e584852..6866dbeae59 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -79,6 +79,7 @@
var/list/things_to_drop = contents.Copy()
var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear,head) //And whatever else we decide for balancing.
var/obj/item/clothing/head/new_hat
+ var/has_hat = FALSE
things_to_drop -= things_to_not_drop //Crunch the lists
things_to_drop -= organs //Mah armbs
things_to_drop -= internal_organs //Mah sqeedily spooch
@@ -86,8 +87,9 @@
for(var/obj/item/I in things_to_drop) //rip hoarders
drop_from_inventory(I)
for(var/obj/item/clothing/head/H in things_to_not_drop)
- new_hat = H
-
+ if(H)
+ new_hat = H
+ has_hat = TRUE
if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
var/obj/item/clothing/uniform = w_uniform
if(LAZYLEN(uniform.accessories))
From bc1aed4c86ab49ed2f02d45928661041ba6b2972 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 21:35:15 -0400
Subject: [PATCH 09/22] Update prommie_blob.dm
---
.../carbon/human/species/station/prommie_blob.dm | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 6866dbeae59..a1dda958cc6 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -14,6 +14,8 @@
is_adult = TRUE
harmless = TRUE
friendly = list("nuzzles", "glomps", "snuggles", "hugs") // lets be cute :3
+ melee_damage_upper = 0
+ melee_damage_lower = 0
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -107,9 +109,10 @@
//Put our owner in it (don't transfer var/mind)
qdel(blob.ai_holder)
blob.ai_holder = null
- if(new_hat)
+ if(has_hat)
blob.hat = new_hat
- unEquip(new_hat)
+ src.u_equip(new_hat)
+ //unEquip(new_hat)
new_hat.forceMove(src)
blob.ckey = ckey
blob.name = name
@@ -182,6 +185,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
ckey = blob.ckey
equip_to_slot_if_possible(blob.hat, slot_head)
temporary_form = null
+ update_icon()
//Transfer vore organs
vore_selected = blob.vore_selected
@@ -368,8 +372,11 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
. = ..()
. -= "It appears to have been pacified."
-/mob/living/simple_mob/slime/attackby(obj/item/I, mob/user)
+/mob/living/simple_mob/slime/xenobio/promethean/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/slimepotion))
to_chat(user, "You can't feed this to a promethean!.")
return
- ..()
\ No newline at end of file
+ ..()
+
+/mob/living/simple_mob/slime/xenobio/promethean/init_vore()
+ return
\ No newline at end of file
From 23a0f3e8a0049bab067052111349dbb3b5cbbe09 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 23:11:24 -0400
Subject: [PATCH 10/22] Update prommie_blob.dm
---
.../carbon/human/species/station/prommie_blob.dm | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index a1dda958cc6..c8c79e8e364 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -1,12 +1,12 @@
// Prommies are slimes, lets make them a subtype of slimes.
/mob/living/simple_mob/slime/xenobio/promethean
+ name = "Promethean Blob"
desc = "A promethean expressing their true form."
//ai_holder_type = null
color = null // Uses a special icon_state.
slime_color = "rainbow"
unity = TRUE
water_resist = 100 // Lets not kill the prommies
- can_buckle = TRUE
cores = 0
movement_cooldown = 3
appearance_flags = RADIATION_GLOWS
@@ -16,6 +16,7 @@
friendly = list("nuzzles", "glomps", "snuggles", "hugs") // lets be cute :3
melee_damage_upper = 0
melee_damage_lower = 0
+ player_msg = "You're a little squisher! Your cuteness level has increased tenfold."
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -25,7 +26,7 @@
var/human_brute = 0
var/human_burn = 0
-/mob/living/simple_mob/slime/xenobio/promethean/Initialize()
+/mob/living/simple_mob/slime/xenobio/promethean/Initialize(mapload, null)
//verbs -= /mob/living/proc/ventcrawl
verbs += /mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
@@ -50,7 +51,6 @@
humanform = H
updatehealth()
- verbs += /mob/living/proc/hide
else
update_icon()
@@ -89,9 +89,11 @@
for(var/obj/item/I in things_to_drop) //rip hoarders
drop_from_inventory(I)
for(var/obj/item/clothing/head/H in things_to_not_drop)
- if(H)
- new_hat = H
- has_hat = TRUE
+ drop_from_inventory(H)
+ //if(H)
+ new_hat = H
+ has_hat = TRUE
+
if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
var/obj/item/clothing/uniform = w_uniform
if(LAZYLEN(uniform.accessories))
@@ -111,7 +113,6 @@
blob.ai_holder = null
if(has_hat)
blob.hat = new_hat
- src.u_equip(new_hat)
//unEquip(new_hat)
new_hat.forceMove(src)
blob.ckey = ckey
@@ -188,6 +189,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
update_icon()
//Transfer vore organs
+ vore_organs = blob.vore_organs
vore_selected = blob.vore_selected
for(var/obj/belly/B as anything in blob.vore_organs)
B.forceMove(src)
From b47f58e1390299f98e2b5f0ab87ea5f2abfd1e9f Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Thu, 17 Mar 2022 23:30:55 -0400
Subject: [PATCH 11/22] Update prommie_blob.dm
---
.../human/species/station/prommie_blob.dm | 79 ++++++++++---------
1 file changed, 40 insertions(+), 39 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index c8c79e8e364..e921afe6706 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -1,5 +1,5 @@
// Prommies are slimes, lets make them a subtype of slimes.
-/mob/living/simple_mob/slime/xenobio/promethean
+/mob/living/simple_mob/slime/promethean
name = "Promethean Blob"
desc = "A promethean expressing their true form."
//ai_holder_type = null
@@ -11,8 +11,8 @@
movement_cooldown = 3
appearance_flags = RADIATION_GLOWS
shock_resist = 0 // Lets not be immune to zaps.
- is_adult = TRUE
- harmless = TRUE
+ //is_adult = TRUE
+ //harmless = TRUE
friendly = list("nuzzles", "glomps", "snuggles", "hugs") // lets be cute :3
melee_damage_upper = 0
melee_damage_lower = 0
@@ -26,9 +26,9 @@
var/human_brute = 0
var/human_burn = 0
-/mob/living/simple_mob/slime/xenobio/promethean/Initialize(mapload, null)
+/mob/living/simple_mob/slime/promethean/Initialize(mapload, null)
//verbs -= /mob/living/proc/ventcrawl
- verbs += /mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform
+ verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
verbs += /mob/living/proc/hide
verbs += /mob/living/simple_mob/proc/animal_nom
@@ -39,13 +39,13 @@
update_icon()
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/Stat()
+/mob/living/simple_mob/slime/promethean/Stat()
..()
if(humanform)
humanform.species.Stat(humanform)
//Constructor allows passing the human to sync damages
-/mob/living/simple_mob/slime/xenobio/promethean/New(var/newloc, var/mob/living/carbon/human/H)
+/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
..()
if(H)
humanform = H
@@ -75,11 +75,11 @@
var/atom/creation_spot = drop_location()
//Create our new blob
- var/mob/living/simple_mob/slime/xenobio/promethean/blob = new(creation_spot,src)
+ var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
//Drop all our things
var/list/things_to_drop = contents.Copy()
- var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear,head) //And whatever else we decide for balancing.
+ var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
var/obj/item/clothing/head/new_hat
var/has_hat = FALSE
things_to_drop -= things_to_not_drop //Crunch the lists
@@ -88,11 +88,14 @@
for(var/obj/item/I in things_to_drop) //rip hoarders
drop_from_inventory(I)
- for(var/obj/item/clothing/head/H in things_to_not_drop)
- drop_from_inventory(H)
+ if(I == new_hat)
+ new_hat = I
+ has_hat = TRUE
+ //for(var/obj/item/clothing/head/H in things_to_not_drop)
+ // drop_from_inventory(H)
//if(H)
- new_hat = H
- has_hat = TRUE
+ // new_hat = H
+ // has_hat = TRUE
if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
var/obj/item/clothing/uniform = w_uniform
@@ -125,8 +128,8 @@
blob.update_icon()
blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
- blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve // We aren't really xenobio, so none of this.
- blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/reproduce
+ //blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve // We aren't really xenobio, so none of this.
+ //blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/reproduce
blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
temporary_form = blob
@@ -149,7 +152,7 @@
//Return our blob in case someone wants it
return blob
-mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/xenobio/promethean/blob, force)
+mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
if(!istype(blob))
return
@@ -206,7 +209,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
//Return ourselves in case someone wants it
return src
-/mob/living/simple_mob/slime/xenobio/promethean/updatehealth()
+/mob/living/simple_mob/slime/promethean/updatehealth()
if(!humanform)
return ..()
@@ -253,69 +256,69 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
healths.icon_state = "health7"
// All the damage and such to the blob translates to the human
-/mob/living/simple_mob/slime/xenobio/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
+/mob/living/simple_mob/slime/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
if(humanform)
return humanform.apply_effect(effect, effecttype, blocked, check_protection)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustBruteLoss(var/amount,var/include_robo)
+/mob/living/simple_mob/slime/promethean/adjustBruteLoss(var/amount,var/include_robo)
amount *= 0.75
if(humanform)
return humanform.adjustBruteLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustFireLoss(var/amount,var/include_robo)
+/mob/living/simple_mob/slime/promethean/adjustFireLoss(var/amount,var/include_robo)
amount *= 2
if(humanform)
return humanform.adjustFireLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustToxLoss(amount)
+/mob/living/simple_mob/slime/promethean/adjustToxLoss(amount)
if(humanform)
return humanform.adjustToxLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustOxyLoss(amount)
+/mob/living/simple_mob/slime/promethean/adjustOxyLoss(amount)
if(humanform)
return humanform.adjustOxyLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustHalLoss(amount)
+/mob/living/simple_mob/slime/promethean/adjustHalLoss(amount)
if(humanform)
return humanform.adjustHalLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/adjustCloneLoss(amount)
+/mob/living/simple_mob/slime/promethean/adjustCloneLoss(amount)
if(humanform)
return humanform.adjustCloneLoss(amount)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/ex_act(severity)
+/mob/living/simple_mob/slime/promethean/ex_act(severity)
if(humanform)
return humanform.ex_act(severity)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/rad_act(severity)
+/mob/living/simple_mob/slime/promethean/rad_act(severity)
if(humanform)
return humanform.ex_act(severity)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
if(humanform)
return humanform.bullet_act(P)
else
return ..()
-/mob/living/simple_mob/slime/xenobio/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
+/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
if(humanform)
humanform.death(gibbed, deathmessage)
else
@@ -325,17 +328,16 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart
qdel(src)
-/mob/living/simple_mob/slime/xenobio/promethean/Login()
+/mob/living/simple_mob/slime/promethean/Login()
. = ..()
copy_from_prefs_vr(bellies = FALSE)
-/mob/living/simple_mob/slime/xenobio/promethean/proc/prommie_blobform()
+/mob/living/simple_mob/slime/promethean/proc/prommie_blobform()
set name = "Toggle Blobform"
set desc = "Switch between amorphous and humanoid forms."
set category = "Abilities"
set hidden = FALSE
- to_chat(src,"Blob form attepted to revert!")
var/atom/movable/to_locate = src
if(!isturf(to_locate.loc))
to_chat(src,"You need more space to perform this action!")
@@ -343,7 +345,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
//Blob form
if(!ishuman(src))
- to_chat(src,"They are a blob!")
if(humanform.temporary_form.stat)
to_chat(src,"You can only do this while not stunned.")
else
@@ -363,22 +364,22 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/x
if(H)
H.gib()
-/mob/living/simple_mob/slime/xenobio/promethean/get_description_interaction()
+/mob/living/simple_mob/slime/promethean/get_description_interaction()
return
-/mob/living/simple_mob/slime/xenobio/promethean/get_description_info()
+/mob/living/simple_mob/slime/promethean/get_description_info()
return
-
-/mob/living/simple_mob/slime/xenobio/promethean/examine(mob/user)
+/*
+/mob/living/simple_mob/slime/promethean/examine(mob/user)
. = ..()
. -= "It appears to have been pacified."
-/mob/living/simple_mob/slime/xenobio/promethean/attackby(obj/item/I, mob/user)
+/mob/living/simple_mob/slime/promethean/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/slimepotion))
to_chat(user, "You can't feed this to a promethean!.")
return
..()
-
-/mob/living/simple_mob/slime/xenobio/promethean/init_vore()
+*/
+/mob/living/simple_mob/slime/promethean/init_vore()
return
\ No newline at end of file
From 4d37f3cc9eb246aa43cc8e01971f6ced88c54ebd Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 00:06:31 -0400
Subject: [PATCH 12/22] Update prommie_blob.dm
---
.../human/species/station/prommie_blob.dm | 41 +++++++++++++------
1 file changed, 29 insertions(+), 12 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index e921afe6706..fd2b8522e57 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -60,6 +60,10 @@
to_chat(src,"You can't change forms while inside something.")
return
+ var/panel_was_up = FALSE
+ if(client?.statpanel == "Abilities")
+ panel_was_up = TRUE
+
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
remove_micros(src, src) //Living things don't fare well in roblobs.
if(buckled)
@@ -86,11 +90,15 @@
things_to_drop -= organs //Mah armbs
things_to_drop -= internal_organs //Mah sqeedily spooch
+ for(var/obj/item/clothing/head/H in things_to_drop)
+ if(H)
+ new_hat = H
+ has_hat = TRUE
+ drop_from_inventory(H)
+ things_to_drop -= H
+
for(var/obj/item/I in things_to_drop) //rip hoarders
drop_from_inventory(I)
- if(I == new_hat)
- new_hat = I
- has_hat = TRUE
//for(var/obj/item/clothing/head/H in things_to_not_drop)
// drop_from_inventory(H)
//if(H)
@@ -119,10 +127,8 @@
//unEquip(new_hat)
new_hat.forceMove(src)
blob.ckey = ckey
- blob.name = name
+ //blob.name = name
blob.color = rgb(r_skin, g_skin, b_skin)
- //blob.pacify()
- //blob.make_adult()
blob.mood = ":3"
@@ -149,6 +155,9 @@
//We can still speak our languages!
blob.languages = languages.Copy()
+ if(panel_was_up)
+ client?.statpanel = "Abilities"
+
//Return our blob in case someone wants it
return blob
@@ -156,6 +165,10 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
if(!istype(blob))
return
+ var/panel_was_up = FALSE
+ if(client?.statpanel == "Abilities")
+ panel_was_up = TRUE
+
if(!force && !isturf(blob.loc))
to_chat(blob,"You can't change forms while inside something.")
return
@@ -169,10 +182,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
pulledby.stop_pulling()
stop_pulling()
- //Stop healing if we are
- if(blob.healing)
- blob.healing.expire()
-
//Message
blob.visible_message("[src.name] reshapes into a humanoid appearance!")
@@ -187,16 +196,21 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Put our owner in it (don't transfer var/mind)
ckey = blob.ckey
- equip_to_slot_if_possible(blob.hat, slot_head)
+ var/obj/item/hat = blob.hat
+ blob.drop_hat()
+ drop_from_inventory(hat)
+ equip_to_slot_if_possible(hat, slot_head)
temporary_form = null
update_icon()
//Transfer vore organs
- vore_organs = blob.vore_organs
+ //vore_organs = blob.vore_organs
+ to_chat(src,"Attempting to get vore bellies back.")
vore_selected = blob.vore_selected
for(var/obj/belly/B as anything in blob.vore_organs)
B.forceMove(src)
B.owner = src
+ to_chat(src,"[B]'s owner is [src].")
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
@@ -206,6 +220,9 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Get rid of friend blob
qdel(blob)
+ if(panel_was_up)
+ client?.statpanel = "Abilities"
+
//Return ourselves in case someone wants it
return src
From 6791dc2b4a69ccc82c4f51856fcacf939ed28510 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 00:25:13 -0400
Subject: [PATCH 13/22] Update prommie_blob.dm
---
.../carbon/human/species/station/prommie_blob.dm | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index fd2b8522e57..3cbfdb2affd 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -204,14 +204,12 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
update_icon()
//Transfer vore organs
- //vore_organs = blob.vore_organs
to_chat(src,"Attempting to get vore bellies back.")
vore_selected = blob.vore_selected
for(var/obj/belly/B as anything in blob.vore_organs)
B.forceMove(src)
B.owner = src
to_chat(src,"[B]'s owner is [src].")
-
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
@@ -368,19 +366,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
to_chat(src,"Attempting to revert!")
humanform.prommie_outofblob(src)
-/datum/species/shapeshifter/promethean/handle_death(var/mob/living/carbon/human/H)
- if(!H)
- return // Iono!
-
- if(H.temporary_form)
- H.forceMove(H.temporary_form.drop_location())
- H.ckey = H.temporary_form.ckey
- QDEL_NULL(H.temporary_form)
-
- spawn(1)
- if(H)
- H.gib()
-
/mob/living/simple_mob/slime/promethean/get_description_interaction()
return
From 54268c0a58dc813c6a4a2e33472f06fc8ad78cdf Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 00:33:56 -0400
Subject: [PATCH 14/22] Update prommie_blob.dm
---
.../mob/living/carbon/human/species/station/prommie_blob.dm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 3cbfdb2affd..8a7bb223fc7 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -210,6 +210,8 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
B.forceMove(src)
B.owner = src
to_chat(src,"[B]'s owner is [src].")
+
+ blob.vore_organs.Cut()
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
From 2265b4f63bdcf875b4a2f6970c5c1837b7bfc377 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 00:42:39 -0400
Subject: [PATCH 15/22] Update prommie_blob.dm
---
.../mob/living/carbon/human/species/station/prommie_blob.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 8a7bb223fc7..92c484f9dcf 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -211,7 +211,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
B.owner = src
to_chat(src,"[B]'s owner is [src].")
- blob.vore_organs.Cut()
+ //vore_organs.Cut()
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
From dbf5948dc9277b18cab1350e8ab2fcc3cb992b3c Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 02:42:26 -0400
Subject: [PATCH 16/22] Update prommie_blob.dm
---
.../human/species/station/prommie_blob.dm | 127 ++++++++++++++----
1 file changed, 102 insertions(+), 25 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 92c484f9dcf..7d2ac8f97d6 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -11,12 +11,12 @@
movement_cooldown = 3
appearance_flags = RADIATION_GLOWS
shock_resist = 0 // Lets not be immune to zaps.
- //is_adult = TRUE
- //harmless = TRUE
- friendly = list("nuzzles", "glomps", "snuggles", "hugs") // lets be cute :3
+ friendly = list("nuzzles", "glomps", "snuggles", "cuddles", "squishes") // lets be cute :3
melee_damage_upper = 0
melee_damage_lower = 0
player_msg = "You're a little squisher! Your cuteness level has increased tenfold."
+ heat_damage_per_tick = 20 // Hot and cold are bad, but cold is AS bad for prommies as it is for slimes.
+ cold_damage_per_tick = 20
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -25,7 +25,19 @@
var/obj/prev_right_hand
var/human_brute = 0
var/human_burn = 0
+ var/is_wide = FALSE
+ var/list/default_emotes = list(
+ /decl/emote/audible/squish,
+ /decl/emote/audible/chirp,
+ /decl/emote/visible/bounce,
+ /decl/emote/visible/jiggle,
+ /decl/emote/visible/lightup,
+ /decl/emote/visible/vibrate,
+ /decl/emote/visible/flip,
+ /decl/emote/visible/spin,
+ /decl/emote/visible/floorspin
+ )
/mob/living/simple_mob/slime/promethean/Initialize(mapload, null)
//verbs -= /mob/living/proc/ventcrawl
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
@@ -33,17 +45,33 @@
verbs += /mob/living/proc/hide
verbs += /mob/living/simple_mob/proc/animal_nom
verbs += /mob/living/proc/shred_limb
+ verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_expand
+ verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_select_colour
+ verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_shine
update_mood()
glow_color = color
handle_light()
update_icon()
return ..()
+/mob/living/simple_mob/slime/promethean/update_icon()
+ icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_wide ? "adult" : "baby"][""]"
+ ..()
+
+/mob/living/simple_mob/slime/promethean/Destroy()
+ humanform = null
+ vore_organs = null
+ vore_selected = null
+ return ..()
+
/mob/living/simple_mob/slime/promethean/Stat()
..()
if(humanform)
humanform.species.Stat(humanform)
+/mob/living/simple_mob/slime/promethean/handle_special() // Should disable default slime healing, we'll use nutrition based heals instead.
+ return
+
//Constructor allows passing the human to sync damages
/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
..()
@@ -60,10 +88,6 @@
to_chat(src,"You can't change forms while inside something.")
return
- var/panel_was_up = FALSE
- if(client?.statpanel == "Abilities")
- panel_was_up = TRUE
-
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
remove_micros(src, src) //Living things don't fare well in roblobs.
if(buckled)
@@ -127,7 +151,8 @@
//unEquip(new_hat)
new_hat.forceMove(src)
blob.ckey = ckey
- //blob.name = name
+ blob.name = name
+ blob.nutrition = nutrition
blob.color = rgb(r_skin, g_skin, b_skin)
blob.mood = ":3"
@@ -143,7 +168,7 @@
moveToNullspace()
//Message
- blob.visible_message("[src.name] collapses into a gooey blob!")
+ blob.visible_message("[src.name] squishes into their true form!")
//Transfer vore organs
blob.vore_organs = vore_organs
@@ -155,9 +180,6 @@
//We can still speak our languages!
blob.languages = languages.Copy()
- if(panel_was_up)
- client?.statpanel = "Abilities"
-
//Return our blob in case someone wants it
return blob
@@ -165,10 +187,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
if(!istype(blob))
return
- var/panel_was_up = FALSE
- if(client?.statpanel == "Abilities")
- panel_was_up = TRUE
-
if(!force && !isturf(blob.loc))
to_chat(blob,"You can't change forms while inside something.")
return
@@ -183,7 +201,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
stop_pulling()
//Message
- blob.visible_message("[src.name] reshapes into a humanoid appearance!")
+ blob.visible_message("[src.name] pulls together, forming a humanoid shape!")
//Record where they should go
var/atom/reform_spot = blob.drop_location()
@@ -198,18 +216,20 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
ckey = blob.ckey
var/obj/item/hat = blob.hat
blob.drop_hat()
- drop_from_inventory(hat)
+ drop_from_inventory(hat) // Hat me baby
equip_to_slot_if_possible(hat, slot_head)
+ nutrition = blob.nutrition // food good
temporary_form = null
+
+ shapeshifter_set_colour(blob.color)
+
update_icon()
//Transfer vore organs
- to_chat(src,"Attempting to get vore bellies back.")
vore_selected = blob.vore_selected
for(var/obj/belly/B as anything in blob.vore_organs)
B.forceMove(src)
B.owner = src
- to_chat(src,"[B]'s owner is [src].")
//vore_organs.Cut()
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
@@ -220,9 +240,6 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
//Get rid of friend blob
qdel(blob)
- if(panel_was_up)
- client?.statpanel = "Abilities"
-
//Return ourselves in case someone wants it
return src
@@ -365,9 +382,64 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
if(humanform.temporary_form.stat)
to_chat(src,"You can only do this while not stunned.")
else
- to_chat(src,"Attempting to revert!")
humanform.prommie_outofblob(src)
+/mob/living/simple_mob/slime/promethean/proc/toggle_expand()
+ set name = "Toggle Width"
+ set desc = "Switch between smole and lorge."
+ set category = "Abilities"
+ set hidden = FALSE
+
+ if(stat || world.time < last_special)
+ return
+
+ last_special = world.time + 50
+
+ if(is_wide)
+ is_wide = FALSE
+ src.visible_message("[src.name] pulls together, compacting themselves into a small ball!")
+ update_icon()
+ else
+ is_wide = TRUE
+ src.visible_message("[src.name] flows outwards, their goop expanding!")
+ update_icon()
+
+/mob/living/simple_mob/slime/promethean/proc/toggle_shine()
+ set name = "Toggle Shine"
+ set desc = "Shine on you crazy diamond."
+ set category = "Abilities"
+ set hidden = FALSE
+
+ if(stat || world.time < last_special)
+ return
+
+ last_special = world.time + 50
+
+ if(shiny)
+ shiny = FALSE
+ src.visible_message("[src.name] dulls their shine, becoming more translucent.")
+ update_icon()
+ else
+ shiny = TRUE
+ src.visible_message("[src.name] glistens and sparkles, shining brilliantly.")
+ update_icon()
+
+/mob/living/simple_mob/slime/promethean/proc/prommie_select_colour()
+
+ set name = "Select Body Colour"
+ set category = "Abilities"
+
+ if(stat || world.time < last_special)
+ return
+
+ last_special = world.time + 50
+
+ var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", color) as null|color
+ if(!new_skin)
+ return
+ color = new_skin
+ update_icon()
+
/mob/living/simple_mob/slime/promethean/get_description_interaction()
return
@@ -386,4 +458,9 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
..()
*/
/mob/living/simple_mob/slime/promethean/init_vore()
- return
\ No newline at end of file
+ return
+
+/mob/living/simple_mob/slime/promethean/get_available_emotes()
+ var/list/fulllist = _slime_default_emotes
+ fulllist += default_emotes
+ return fulllist
\ No newline at end of file
From b1c45b1cad3441b3aa1ff5ea8169fe3a86f8d1f9 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 02:46:02 -0400
Subject: [PATCH 17/22] Blep
---
vorestation.dme | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vorestation.dme b/vorestation.dme
index 6ae5acf3e24..ca58989588f 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4100,6 +4100,7 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
+#include "maps\stellardelight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"
@@ -4109,6 +4110,5 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
-#include "maps\virgo_minitest\virgo_minitest.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE
From 33b58fcc3dbe30ca8f87d484676b4ae400ad8c4e Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 15:14:06 -0400
Subject: [PATCH 18/22] Fixing radiation death and keeping glow
---
.../human/species/station/prometheans_vr.dm | 171 +++++++++++++++-
.../human/species/station/prommie_blob.dm | 190 ++----------------
vorestation.dme | 2 +-
3 files changed, 193 insertions(+), 170 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 66543b70a80..042945e0f59 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -73,4 +73,173 @@
spawn(1)
if(H)
- H.gib()
\ No newline at end of file
+ H.gib()
+
+// Helpers - Unsafe, WILL perform change.
+/mob/living/carbon/human/proc/prommie_intoblob(force)
+ if(!force && !isturf(loc))
+ to_chat(src,"You can't change forms while inside something.")
+ return
+
+ handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
+ remove_micros(src, src) //Living things don't fare well in roblobs.
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Record where they should go
+ var/atom/creation_spot = drop_location()
+
+ //Create our new blob
+ var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
+
+ //Drop all our things
+ var/list/things_to_drop = contents.Copy()
+ var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
+ var/obj/item/clothing/head/new_hat
+ var/has_hat = FALSE
+ things_to_drop -= things_to_not_drop //Crunch the lists
+ things_to_drop -= organs //Mah armbs
+ things_to_drop -= internal_organs //Mah sqeedily spooch
+
+ for(var/obj/item/clothing/head/H in things_to_drop)
+ if(H)
+ new_hat = H
+ has_hat = TRUE
+ drop_from_inventory(H)
+ things_to_drop -= H
+
+ for(var/obj/item/I in things_to_drop) //rip hoarders
+ drop_from_inventory(I)
+ //for(var/obj/item/clothing/head/H in things_to_not_drop)
+ // drop_from_inventory(H)
+ //if(H)
+ // new_hat = H
+ // has_hat = TRUE
+
+ if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
+ var/obj/item/clothing/uniform = w_uniform
+ if(LAZYLEN(uniform.accessories))
+ for(var/obj/item/clothing/accessory/A in uniform.accessories)
+ if(is_type_in_list(A, disallowed_protean_accessories))
+ uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
+
+ //Size update
+ blob.transform = matrix()*size_multiplier
+ blob.size_multiplier = size_multiplier
+
+ if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
+ if(r_hand) blob.prev_right_hand = r_hand
+
+ //Put our owner in it (don't transfer var/mind)
+ qdel(blob.ai_holder)
+
+ blob.ai_holder = null
+ if(has_hat)
+ blob.hat = new_hat
+ new_hat.forceMove(src)
+ blob.ckey = ckey
+ blob.name = name
+ blob.nutrition = nutrition
+ blob.color = rgb(r_skin, g_skin, b_skin)
+ blob.mood = ":3"
+ if(radiation)
+ blob.rad_glow = CLAMP(radiation,0,250)
+ blob.glow_intensity = max(1,min(5,blob.rad_glow/15))
+ blob.glow_range = max(1,min(10,blob.rad_glow/25))
+ blob.glow_toggle = TRUE
+ set_light(0)
+ blob.set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), blob.color)
+ blob.handle_light()
+ blob.update_icon()
+ blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
+ blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
+ temporary_form = blob
+
+ //Mail them to nullspace
+ moveToNullspace()
+
+ //Message
+ blob.visible_message("[src.name] squishes into their true form!")
+
+ //Transfer vore organs
+ blob.vore_organs = vore_organs
+ blob.vore_selected = vore_selected
+ for(var/obj/belly/B as anything in vore_organs)
+ B.forceMove(blob)
+ B.owner = blob
+
+ //We can still speak our languages!
+ blob.languages = languages.Copy()
+
+ //Return our blob in case someone wants it
+ return blob
+
+mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
+ if(!istype(blob))
+ return
+
+ if(!force && !isturf(blob.loc))
+ to_chat(blob,"You can't change forms while inside something.")
+ return
+
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Message
+ blob.visible_message("[src.name] pulls together, forming a humanoid shape!")
+
+ //Record where they should go
+ var/atom/reform_spot = blob.drop_location()
+
+ //Size update
+ resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
+
+ //Move them back where the blob was
+ forceMove(reform_spot)
+
+ //Put our owner in it (don't transfer var/mind)
+ ckey = blob.ckey
+ var/obj/item/hat = blob.hat
+ blob.drop_hat()
+ drop_from_inventory(hat) // Hat me baby
+ equip_to_slot_if_possible(hat, slot_head)
+ nutrition = blob.nutrition // food good
+
+
+ temporary_form = null
+
+ shapeshifter_set_colour(blob.color)
+ if(blob.rad_glow)
+ radiation = CLAMP(blob.rad_glow,0,250)
+ set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
+ update_icon()
+
+ //Transfer vore organs
+ vore_selected = blob.vore_selected
+ for(var/obj/belly/B as anything in blob.vore_organs)
+ B.forceMove(src)
+ B.owner = src
+
+ //vore_organs.Cut()
+ if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
+ if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
+
+ Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
+
+ //Get rid of friend blob
+ qdel(blob)
+
+ //Return ourselves in case someone wants it
+ return src
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 7d2ac8f97d6..0e740649936 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -9,7 +9,7 @@
water_resist = 100 // Lets not kill the prommies
cores = 0
movement_cooldown = 3
- appearance_flags = RADIATION_GLOWS
+ //appearance_flags = RADIATION_GLOWS
shock_resist = 0 // Lets not be immune to zaps.
friendly = list("nuzzles", "glomps", "snuggles", "cuddles", "squishes") // lets be cute :3
melee_damage_upper = 0
@@ -17,6 +17,8 @@
player_msg = "You're a little squisher! Your cuteness level has increased tenfold."
heat_damage_per_tick = 20 // Hot and cold are bad, but cold is AS bad for prommies as it is for slimes.
cold_damage_per_tick = 20
+ //glow_range = 0
+ //glow_intensity = 0
var/mob/living/carbon/human/humanform
var/datum/modifier/healing
@@ -26,6 +28,7 @@
var/human_brute = 0
var/human_burn = 0
var/is_wide = FALSE
+ var/rad_glow = 0
var/list/default_emotes = list(
/decl/emote/audible/squish,
@@ -50,18 +53,25 @@
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_shine
update_mood()
glow_color = color
- handle_light()
+ if(rad_glow)
+ rad_glow = CLAMP(rad_glow,0,250)
+ set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
update_icon()
return ..()
/mob/living/simple_mob/slime/promethean/update_icon()
icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_wide ? "adult" : "baby"][""]"
+ //if(rad_glow)
+ // set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
+ //else
+ // set_light(0)
..()
/mob/living/simple_mob/slime/promethean/Destroy()
humanform = null
vore_organs = null
vore_selected = null
+ set_light(0)
return ..()
/mob/living/simple_mob/slime/promethean/Stat()
@@ -70,6 +80,11 @@
humanform.species.Stat(humanform)
/mob/living/simple_mob/slime/promethean/handle_special() // Should disable default slime healing, we'll use nutrition based heals instead.
+ if(rad_glow)
+ rad_glow = CLAMP(rad_glow,0,250)
+ set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
+ else
+ set_light(0)
return
//Constructor allows passing the human to sync damages
@@ -82,167 +97,6 @@
else
update_icon()
-// Helpers - Unsafe, WILL perform change.
-/mob/living/carbon/human/proc/prommie_intoblob(force)
- if(!force && !isturf(loc))
- to_chat(src,"You can't change forms while inside something.")
- return
-
- handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
- remove_micros(src, src) //Living things don't fare well in roblobs.
- if(buckled)
- buckled.unbuckle_mob()
- if(LAZYLEN(buckled_mobs))
- for(var/buckledmob in buckled_mobs)
- riding_datum.force_dismount(buckledmob)
- if(pulledby)
- pulledby.stop_pulling()
- stop_pulling()
-
- //Record where they should go
- var/atom/creation_spot = drop_location()
-
- //Create our new blob
- var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
-
- //Drop all our things
- var/list/things_to_drop = contents.Copy()
- var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
- var/obj/item/clothing/head/new_hat
- var/has_hat = FALSE
- things_to_drop -= things_to_not_drop //Crunch the lists
- things_to_drop -= organs //Mah armbs
- things_to_drop -= internal_organs //Mah sqeedily spooch
-
- for(var/obj/item/clothing/head/H in things_to_drop)
- if(H)
- new_hat = H
- has_hat = TRUE
- drop_from_inventory(H)
- things_to_drop -= H
-
- for(var/obj/item/I in things_to_drop) //rip hoarders
- drop_from_inventory(I)
- //for(var/obj/item/clothing/head/H in things_to_not_drop)
- // drop_from_inventory(H)
- //if(H)
- // new_hat = H
- // has_hat = TRUE
-
- if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
- var/obj/item/clothing/uniform = w_uniform
- if(LAZYLEN(uniform.accessories))
- for(var/obj/item/clothing/accessory/A in uniform.accessories)
- if(is_type_in_list(A, disallowed_protean_accessories))
- uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
-
- //Size update
- blob.transform = matrix()*size_multiplier
- blob.size_multiplier = size_multiplier
-
- if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
- if(r_hand) blob.prev_right_hand = r_hand
-
- //Put our owner in it (don't transfer var/mind)
- qdel(blob.ai_holder)
- blob.ai_holder = null
- if(has_hat)
- blob.hat = new_hat
- //unEquip(new_hat)
- new_hat.forceMove(src)
- blob.ckey = ckey
- blob.name = name
- blob.nutrition = nutrition
- blob.color = rgb(r_skin, g_skin, b_skin)
- blob.mood = ":3"
-
-
- blob.update_icon()
- blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
- //blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/evolve // We aren't really xenobio, so none of this.
- //blob.verbs -= /mob/living/simple_mob/slime/xenobio/verb/reproduce
- blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
- temporary_form = blob
-
- //Mail them to nullspace
- moveToNullspace()
-
- //Message
- blob.visible_message("[src.name] squishes into their true form!")
-
- //Transfer vore organs
- blob.vore_organs = vore_organs
- blob.vore_selected = vore_selected
- for(var/obj/belly/B as anything in vore_organs)
- B.forceMove(blob)
- B.owner = blob
-
- //We can still speak our languages!
- blob.languages = languages.Copy()
-
- //Return our blob in case someone wants it
- return blob
-
-mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
- if(!istype(blob))
- return
-
- if(!force && !isturf(blob.loc))
- to_chat(blob,"You can't change forms while inside something.")
- return
-
- if(buckled)
- buckled.unbuckle_mob()
- if(LAZYLEN(buckled_mobs))
- for(var/buckledmob in buckled_mobs)
- riding_datum.force_dismount(buckledmob)
- if(pulledby)
- pulledby.stop_pulling()
- stop_pulling()
-
- //Message
- blob.visible_message("[src.name] pulls together, forming a humanoid shape!")
-
- //Record where they should go
- var/atom/reform_spot = blob.drop_location()
-
- //Size update
- resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
-
- //Move them back where the blob was
- forceMove(reform_spot)
-
- //Put our owner in it (don't transfer var/mind)
- ckey = blob.ckey
- var/obj/item/hat = blob.hat
- blob.drop_hat()
- drop_from_inventory(hat) // Hat me baby
- equip_to_slot_if_possible(hat, slot_head)
- nutrition = blob.nutrition // food good
- temporary_form = null
-
- shapeshifter_set_colour(blob.color)
-
- update_icon()
-
- //Transfer vore organs
- vore_selected = blob.vore_selected
- for(var/obj/belly/B as anything in blob.vore_organs)
- B.forceMove(src)
- B.owner = src
-
- //vore_organs.Cut()
- if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
- if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
-
- Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
-
- //Get rid of friend blob
- qdel(blob)
-
- //Return ourselves in case someone wants it
- return src
-
/mob/living/simple_mob/slime/promethean/updatehealth()
if(!humanform)
return ..()
@@ -341,10 +195,10 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
return ..()
/mob/living/simple_mob/slime/promethean/rad_act(severity)
- if(humanform)
- return humanform.ex_act(severity)
- else
- return ..()
+ rad_glow += severity
+ rad_glow = CLAMP(rad_glow,0,250)
+ if(rad_glow)
+ set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
if(humanform)
@@ -352,7 +206,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
else
return ..()
-/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
+/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "rapidly loses cohesion, splattering across the ground...")
if(humanform)
humanform.death(gibbed, deathmessage)
else
diff --git a/vorestation.dme b/vorestation.dme
index ca58989588f..6ae5acf3e24 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4100,7 +4100,6 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
-#include "maps\stellardelight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"
@@ -4110,5 +4109,6 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
+#include "maps\virgo_minitest\virgo_minitest.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE
From ebf014907ab6851f50ab22572bacbd4f6c38200d Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 15:57:39 -0400
Subject: [PATCH 19/22] Final (I hope)
Should fix some lingering radiation problems and allow the little guys to glow.
---
.../carbon/human/species/station/prometheans_vr.dm | 10 +++++-----
.../carbon/human/species/station/prommie_blob.dm | 5 ++---
vorestation.dme | 2 +-
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 042945e0f59..47e4755cc52 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -140,15 +140,12 @@
qdel(blob.ai_holder)
blob.ai_holder = null
- if(has_hat)
- blob.hat = new_hat
- new_hat.forceMove(src)
blob.ckey = ckey
blob.name = name
blob.nutrition = nutrition
blob.color = rgb(r_skin, g_skin, b_skin)
blob.mood = ":3"
- if(radiation)
+ if(radiation > 0)
blob.rad_glow = CLAMP(radiation,0,250)
blob.glow_intensity = max(1,min(5,blob.rad_glow/15))
blob.glow_range = max(1,min(10,blob.rad_glow/25))
@@ -156,6 +153,9 @@
set_light(0)
blob.set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), blob.color)
blob.handle_light()
+ if(has_hat)
+ blob.hat = new_hat
+ new_hat.forceMove(src)
blob.update_icon()
blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
@@ -221,7 +221,7 @@ mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/p
temporary_form = null
shapeshifter_set_colour(blob.color)
- if(blob.rad_glow)
+ if(blob.rad_glow > 0)
radiation = CLAMP(blob.rad_glow,0,250)
set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
update_icon()
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 0e740649936..ebc8ff25d16 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -52,11 +52,9 @@
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_select_colour
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_shine
update_mood()
- glow_color = color
if(rad_glow)
rad_glow = CLAMP(rad_glow,0,250)
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
- update_icon()
return ..()
/mob/living/simple_mob/slime/promethean/update_icon()
@@ -197,8 +195,9 @@
/mob/living/simple_mob/slime/promethean/rad_act(severity)
rad_glow += severity
rad_glow = CLAMP(rad_glow,0,250)
- if(rad_glow)
+ if(rad_glow > 1)
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
+ update_icon()
/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
if(humanform)
diff --git a/vorestation.dme b/vorestation.dme
index 6ae5acf3e24..ca58989588f 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4100,6 +4100,7 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
+#include "maps\stellardelight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"
@@ -4109,6 +4110,5 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
-#include "maps\virgo_minitest\virgo_minitest.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE
From 31ec0b11801c302979ec8a5c5e03c9e166b84988 Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 16:08:17 -0400
Subject: [PATCH 20/22] Fixing issue
---
.../mob/living/carbon/human/species/station/prometheans_vr.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 47e4755cc52..f360599d16a 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -180,7 +180,7 @@
//Return our blob in case someone wants it
return blob
-mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
+/mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
if(!istype(blob))
return
From 019dcfb674a149e4d97d798f78e632ec8e90f69b Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Fri, 18 Mar 2022 16:38:09 -0400
Subject: [PATCH 21/22] Cleanup
Removing unused and redundant code.
---
.../human/species/station/prometheans_vr.dm | 171 +----------------
.../human/species/station/prommie_blob.dm | 177 ++++++++++++++++--
2 files changed, 163 insertions(+), 185 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index f360599d16a..66543b70a80 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -73,173 +73,4 @@
spawn(1)
if(H)
- H.gib()
-
-// Helpers - Unsafe, WILL perform change.
-/mob/living/carbon/human/proc/prommie_intoblob(force)
- if(!force && !isturf(loc))
- to_chat(src,"You can't change forms while inside something.")
- return
-
- handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
- remove_micros(src, src) //Living things don't fare well in roblobs.
- if(buckled)
- buckled.unbuckle_mob()
- if(LAZYLEN(buckled_mobs))
- for(var/buckledmob in buckled_mobs)
- riding_datum.force_dismount(buckledmob)
- if(pulledby)
- pulledby.stop_pulling()
- stop_pulling()
-
- //Record where they should go
- var/atom/creation_spot = drop_location()
-
- //Create our new blob
- var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
-
- //Drop all our things
- var/list/things_to_drop = contents.Copy()
- var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
- var/obj/item/clothing/head/new_hat
- var/has_hat = FALSE
- things_to_drop -= things_to_not_drop //Crunch the lists
- things_to_drop -= organs //Mah armbs
- things_to_drop -= internal_organs //Mah sqeedily spooch
-
- for(var/obj/item/clothing/head/H in things_to_drop)
- if(H)
- new_hat = H
- has_hat = TRUE
- drop_from_inventory(H)
- things_to_drop -= H
-
- for(var/obj/item/I in things_to_drop) //rip hoarders
- drop_from_inventory(I)
- //for(var/obj/item/clothing/head/H in things_to_not_drop)
- // drop_from_inventory(H)
- //if(H)
- // new_hat = H
- // has_hat = TRUE
-
- if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
- var/obj/item/clothing/uniform = w_uniform
- if(LAZYLEN(uniform.accessories))
- for(var/obj/item/clothing/accessory/A in uniform.accessories)
- if(is_type_in_list(A, disallowed_protean_accessories))
- uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
-
- //Size update
- blob.transform = matrix()*size_multiplier
- blob.size_multiplier = size_multiplier
-
- if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
- if(r_hand) blob.prev_right_hand = r_hand
-
- //Put our owner in it (don't transfer var/mind)
- qdel(blob.ai_holder)
-
- blob.ai_holder = null
- blob.ckey = ckey
- blob.name = name
- blob.nutrition = nutrition
- blob.color = rgb(r_skin, g_skin, b_skin)
- blob.mood = ":3"
- if(radiation > 0)
- blob.rad_glow = CLAMP(radiation,0,250)
- blob.glow_intensity = max(1,min(5,blob.rad_glow/15))
- blob.glow_range = max(1,min(10,blob.rad_glow/25))
- blob.glow_toggle = TRUE
- set_light(0)
- blob.set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), blob.color)
- blob.handle_light()
- if(has_hat)
- blob.hat = new_hat
- new_hat.forceMove(src)
- blob.update_icon()
- blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
- blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
- temporary_form = blob
-
- //Mail them to nullspace
- moveToNullspace()
-
- //Message
- blob.visible_message("[src.name] squishes into their true form!")
-
- //Transfer vore organs
- blob.vore_organs = vore_organs
- blob.vore_selected = vore_selected
- for(var/obj/belly/B as anything in vore_organs)
- B.forceMove(blob)
- B.owner = blob
-
- //We can still speak our languages!
- blob.languages = languages.Copy()
-
- //Return our blob in case someone wants it
- return blob
-
-/mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
- if(!istype(blob))
- return
-
- if(!force && !isturf(blob.loc))
- to_chat(blob,"You can't change forms while inside something.")
- return
-
- if(buckled)
- buckled.unbuckle_mob()
- if(LAZYLEN(buckled_mobs))
- for(var/buckledmob in buckled_mobs)
- riding_datum.force_dismount(buckledmob)
- if(pulledby)
- pulledby.stop_pulling()
- stop_pulling()
-
- //Message
- blob.visible_message("[src.name] pulls together, forming a humanoid shape!")
-
- //Record where they should go
- var/atom/reform_spot = blob.drop_location()
-
- //Size update
- resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
-
- //Move them back where the blob was
- forceMove(reform_spot)
-
- //Put our owner in it (don't transfer var/mind)
- ckey = blob.ckey
- var/obj/item/hat = blob.hat
- blob.drop_hat()
- drop_from_inventory(hat) // Hat me baby
- equip_to_slot_if_possible(hat, slot_head)
- nutrition = blob.nutrition // food good
-
-
- temporary_form = null
-
- shapeshifter_set_colour(blob.color)
- if(blob.rad_glow > 0)
- radiation = CLAMP(blob.rad_glow,0,250)
- set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
- update_icon()
-
- //Transfer vore organs
- vore_selected = blob.vore_selected
- for(var/obj/belly/B as anything in blob.vore_organs)
- B.forceMove(src)
- B.owner = src
-
- //vore_organs.Cut()
- if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
- if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
-
- Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
-
- //Get rid of friend blob
- qdel(blob)
-
- //Return ourselves in case someone wants it
- return src
\ No newline at end of file
+ H.gib()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index ebc8ff25d16..0f59fdb8729 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -59,10 +59,6 @@
/mob/living/simple_mob/slime/promethean/update_icon()
icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_wide ? "adult" : "baby"][""]"
- //if(rad_glow)
- // set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
- //else
- // set_light(0)
..()
/mob/living/simple_mob/slime/promethean/Destroy()
@@ -299,21 +295,172 @@
/mob/living/simple_mob/slime/promethean/get_description_info()
return
-/*
-/mob/living/simple_mob/slime/promethean/examine(mob/user)
- . = ..()
- . -= "It appears to have been pacified."
-/mob/living/simple_mob/slime/promethean/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/slimepotion))
- to_chat(user, "You can't feed this to a promethean!.")
- return
- ..()
-*/
/mob/living/simple_mob/slime/promethean/init_vore()
return
/mob/living/simple_mob/slime/promethean/get_available_emotes()
var/list/fulllist = _slime_default_emotes
fulllist += default_emotes
- return fulllist
\ No newline at end of file
+ return fulllist
+
+// Helpers - Unsafe, WILL perform change.
+/mob/living/carbon/human/proc/prommie_intoblob(force)
+ if(!force && !isturf(loc))
+ to_chat(src,"You can't change forms while inside something.")
+ return
+
+ handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
+ remove_micros(src, src) //Living things don't fare well in roblobs.
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Record where they should go
+ var/atom/creation_spot = drop_location()
+
+ //Create our new blob
+ var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
+
+ //Drop all our things
+ var/list/things_to_drop = contents.Copy()
+ var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
+ var/obj/item/clothing/head/new_hat
+ var/has_hat = FALSE
+ things_to_drop -= things_to_not_drop //Crunch the lists
+ things_to_drop -= organs //Mah armbs
+ things_to_drop -= internal_organs //Mah sqeedily spooch
+
+ for(var/obj/item/clothing/head/H in things_to_drop)
+ if(H)
+ new_hat = H
+ has_hat = TRUE
+ drop_from_inventory(H)
+ things_to_drop -= H
+
+ for(var/obj/item/I in things_to_drop) //rip hoarders
+ drop_from_inventory(I)
+
+ if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
+ var/obj/item/clothing/uniform = w_uniform
+ if(LAZYLEN(uniform.accessories))
+ for(var/obj/item/clothing/accessory/A in uniform.accessories)
+ if(is_type_in_list(A, disallowed_protean_accessories))
+ uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
+
+ //Size update
+ blob.transform = matrix()*size_multiplier
+ blob.size_multiplier = size_multiplier
+
+ if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
+ if(r_hand) blob.prev_right_hand = r_hand
+
+ //Put our owner in it (don't transfer var/mind)
+ qdel(blob.ai_holder)
+
+ blob.ai_holder = null
+ blob.ckey = ckey
+ blob.name = name
+ blob.nutrition = nutrition
+ blob.color = rgb(r_skin, g_skin, b_skin)
+ blob.mood = ":3"
+ if(radiation > 0)
+ blob.rad_glow = CLAMP(radiation,0,250)
+ set_light(0)
+ blob.set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), blob.color)
+ blob.handle_light()
+ if(has_hat)
+ blob.hat = new_hat
+ new_hat.forceMove(src)
+ blob.update_icon()
+ blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
+ blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
+ temporary_form = blob
+
+ //Mail them to nullspace
+ moveToNullspace()
+
+ //Message
+ blob.visible_message("[src.name] squishes into their true form!")
+
+ //Transfer vore organs
+ blob.vore_organs = vore_organs
+ blob.vore_selected = vore_selected
+ for(var/obj/belly/B as anything in vore_organs)
+ B.forceMove(blob)
+ B.owner = blob
+
+ //We can still speak our languages!
+ blob.languages = languages.Copy()
+
+ //Return our blob in case someone wants it
+ return blob
+
+/mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
+ if(!istype(blob))
+ return
+
+ if(!force && !isturf(blob.loc))
+ to_chat(blob,"You can't change forms while inside something.")
+ return
+
+ if(buckled)
+ buckled.unbuckle_mob()
+ if(LAZYLEN(buckled_mobs))
+ for(var/buckledmob in buckled_mobs)
+ riding_datum.force_dismount(buckledmob)
+ if(pulledby)
+ pulledby.stop_pulling()
+ stop_pulling()
+
+ //Message
+ blob.visible_message("[src.name] pulls together, forming a humanoid shape!")
+
+ //Record where they should go
+ var/atom/reform_spot = blob.drop_location()
+
+ //Size update
+ resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
+
+ //Move them back where the blob was
+ forceMove(reform_spot)
+
+ //Put our owner in it (don't transfer var/mind)
+ ckey = blob.ckey
+ var/obj/item/hat = blob.hat
+ blob.drop_hat()
+ drop_from_inventory(hat) // Hat me baby
+ equip_to_slot_if_possible(hat, slot_head)
+ nutrition = blob.nutrition // food good
+
+
+ temporary_form = null
+
+ shapeshifter_set_colour(blob.color)
+ if(blob.rad_glow > 0)
+ radiation = CLAMP(blob.rad_glow,0,250)
+ set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
+ update_icon()
+
+ //Transfer vore organs
+ vore_selected = blob.vore_selected
+ for(var/obj/belly/B as anything in blob.vore_organs)
+ B.forceMove(src)
+ B.owner = src
+
+ //vore_organs.Cut()
+ if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
+ if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
+
+ Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
+
+ //Get rid of friend blob
+ qdel(blob)
+
+ //Return ourselves in case someone wants it
+ return src
\ No newline at end of file
From c5b52849b1cc2f5633dc513461ecb772de0ff4ba Mon Sep 17 00:00:00 2001
From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com>
Date: Sun, 20 Mar 2022 01:57:56 -0400
Subject: [PATCH 22/22] Saving the blob instead of deleting it
Saves the blob instead of deleting it!
---
.../human/species/station/prometheans_vr.dm | 8 ++-
.../human/species/station/prommie_blob.dm | 62 ++++++++++++++-----
2 files changed, 52 insertions(+), 18 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 66543b70a80..fd040e64dd9 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -16,10 +16,9 @@
spawn_flags = SPECIES_CAN_JOIN
wikilink="https://wiki.vore-station.net/Promethean"
genders = list(MALE, FEMALE, PLURAL, NEUTER)
-
color_mult = 1
mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping
-
+ //var/mob/living/simple_mob/slime/promethean/stored_blob = null
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR
inherent_verbs = list(
@@ -56,7 +55,7 @@
prommie_outofblob(temporary_form)
*/
//Human form
- else if(stat)
+ else if(stat || paralysis || stunned || weakened || restrained())
to_chat(src,"You can only do this while not stunned.")
return
else
@@ -70,6 +69,9 @@
H.forceMove(H.temporary_form.drop_location())
H.ckey = H.temporary_form.ckey
QDEL_NULL(H.temporary_form)
+ //else if(H.stored_blob) // Should prevent phantom blobs in the aether. I don't anticipate this being an issue, but if it is just uncomment.
+ // qdel(stored_blob)
+ // stored_blob = null
spawn(1)
if(H)
diff --git a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
index 0f59fdb8729..5ec9a83bb71 100644
--- a/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prommie_blob.dm
@@ -68,6 +68,12 @@
set_light(0)
return ..()
+/mob/living/carbon/human/Destroy()
+ if(stored_blob)
+ stored_blob = null
+ qdel(stored_blob)
+ return ..()
+
/mob/living/simple_mob/slime/promethean/Stat()
..()
if(humanform)
@@ -79,6 +85,11 @@
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
else
set_light(0)
+ update_icon()
+
+ if(!humanform) // If we somehow have a blob with no human, lets just clean up.
+ log_debug("Cleaning up blob with no prommie!")
+ qdel(src)
return
//Constructor allows passing the human to sync damages
@@ -89,7 +100,7 @@
updatehealth()
else
- update_icon()
+ qdel(src)
/mob/living/simple_mob/slime/promethean/updatehealth()
if(!humanform)
@@ -228,7 +239,7 @@
//Blob form
if(!ishuman(src))
- if(humanform.temporary_form.stat)
+ if(humanform.temporary_form.stat || paralysis || stunned || weakened || restrained())
to_chat(src,"You can only do this while not stunned.")
else
humanform.prommie_outofblob(src)
@@ -242,7 +253,7 @@
if(stat || world.time < last_special)
return
- last_special = world.time + 50
+ last_special = world.time + 25
if(is_wide)
is_wide = FALSE
@@ -262,7 +273,7 @@
if(stat || world.time < last_special)
return
- last_special = world.time + 50
+ last_special = world.time + 25
if(shiny)
shiny = FALSE
@@ -281,7 +292,7 @@
if(stat || world.time < last_special)
return
- last_special = world.time + 50
+ last_special = world.time + 25
var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", color) as null|color
if(!new_skin)
@@ -303,7 +314,8 @@
var/list/fulllist = _slime_default_emotes
fulllist += default_emotes
return fulllist
-
+/mob/living/carbon/human
+ var/mob/living/simple_mob/slime/promethean/stored_blob = null
// Helpers - Unsafe, WILL perform change.
/mob/living/carbon/human/proc/prommie_intoblob(force)
if(!force && !isturf(loc))
@@ -323,9 +335,16 @@
//Record where they should go
var/atom/creation_spot = drop_location()
-
+ var/mob/living/simple_mob/slime/promethean/blob = null
//Create our new blob
- var/mob/living/simple_mob/slime/promethean/blob = new(creation_spot,src)
+ if(!stored_blob)
+ blob = new(creation_spot,src)
+ blob.mood = ":3"
+ qdel(blob.ai_holder)
+ blob.ai_holder = null
+ else
+ blob = stored_blob
+ blob.forceMove(creation_spot)
//Drop all our things
var/list/things_to_drop = contents.Copy()
@@ -361,14 +380,14 @@
if(r_hand) blob.prev_right_hand = r_hand
//Put our owner in it (don't transfer var/mind)
- qdel(blob.ai_holder)
-
- blob.ai_holder = null
+ blob.Weaken(2)
+ blob.transforming = TRUE
blob.ckey = ckey
+ blob.transforming = FALSE
blob.name = name
blob.nutrition = nutrition
blob.color = rgb(r_skin, g_skin, b_skin)
- blob.mood = ":3"
+ playsound(src.loc, "sound/effects/slime_squish.ogg", 15)
if(radiation > 0)
blob.rad_glow = CLAMP(radiation,0,250)
set_light(0)
@@ -377,11 +396,11 @@
if(has_hat)
blob.hat = new_hat
new_hat.forceMove(src)
+
blob.update_icon()
blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
temporary_form = blob
-
//Mail them to nullspace
moveToNullspace()
@@ -431,7 +450,12 @@
forceMove(reform_spot)
//Put our owner in it (don't transfer var/mind)
+ Weaken(2)
+ playsound(src.loc, "sound/effects/slime_squish.ogg", 15)
+ transforming = TRUE
ckey = blob.ckey
+ transforming = FALSE
+ blob.name = "Promethean Blob"
var/obj/item/hat = blob.hat
blob.drop_hat()
drop_from_inventory(hat) // Hat me baby
@@ -460,7 +484,15 @@
Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
//Get rid of friend blob
- qdel(blob)
+ stored_blob = blob
+ blob.set_light(0)
+ blob.moveToNullspace()
+ //qdel(blob)
//Return ourselves in case someone wants it
- return src
\ No newline at end of file
+ return src
+
+/mob/living/simple_mob/slime/promethean/examine(mob/user)
+ . = ..()
+ if(hat)
+ . += "They are wearing \a [hat]."
\ No newline at end of file