From e64e4ed0c8b529cce4db6b1c43f96c35d961dc81 Mon Sep 17 00:00:00 2001 From: fludd12 Date: Thu, 24 May 2018 07:08:46 -0400 Subject: [PATCH 1/5] Prometheans melt on death, and can now be revived. --- .../human/species/station/prometheans_vr.dm | 11 +-- code/modules/organs/internal/brain.dm | 93 +++++++++++++++++++ 2 files changed, 96 insertions(+), 8 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 53d540e4b0..5a09e5f04a 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 @@ -8,19 +8,19 @@ "Flatland Zorren", "Vulpkanin", "Vasilissan", "Rapala", "Neaera", "Stok", "Farwa", "Sobaka", "Wolpin", "Saru", "Sparra") - + heal_rate = 0.2 //As of writing, original was 0.5 - Slows regen speed (bad) hunger_factor = 0.1 //As of writing, original was 0.2 - Slows hunger rate (good) siemens_coefficient = 1 //As of writing, original was 0.4 (bad) active_regen_mult = 0.66 //As of writing, original was 1 (good) - + color_mult = 1 mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping (good) num_alternate_languages = 1 //Might be outdated: They currently have 3 in the other file trashcan = 1 //They have goopy bodies. They can just dissolve things within them. appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR - + inherent_verbs = list( /mob/living/carbon/human/proc/shapeshifter_select_shape, /mob/living/carbon/human/proc/shapeshifter_select_colour, @@ -35,8 +35,3 @@ /mob/living/carbon/human/proc/slime_feed, /mob/living/proc/eat_trash ) - - death_message = "goes limp, their body becoming softer..." - -/datum/species/shapeshifter/promethean/handle_death(var/mob/living/carbon/human/H) - return //This nullifies them gibbing. diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index ec0b9d8034..cdedeb2957 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -135,10 +135,103 @@ icon_state = "green slime extract" parent_organ = BP_TORSO clone_source = TRUE + flags = OPENCONTAINER /obj/item/organ/internal/brain/slime/is_open_container() return 1 +/obj/item/organ/internal/brain/slime/New() + ..() + create_reagents(50) + +/obj/item/organ/internal/brain/slime/proc/reviveBody() + var/datum/dna2/record/R = new /datum/dna2/record() + R.dna = brainmob.dna + R.ckey = brainmob.ckey + R.id = copytext(md5(brainmob.real_name), 2, 6) + R.name = R.dna.real_name + R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE + R.languages = brainmob.languages + R.flavor = list() + for(var/datum/modifier/mod in brainmob.modifiers) + if(mod.flags & MODIFIER_GENETIC) + R.genetic_modifiers.Add(mod.type) + + var/datum/mind/clonemind = brainmob.mind + + if(!istype(clonemind, /datum/mind)) //not a mind + return 0 + if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body + return 0 + if(clonemind.active) //somebody is using that mind + if(ckey(clonemind.key) != R.ckey) + return 0 + else + for(var/mob/observer/dead/G in player_list) + if(G.ckey == R.ckey) + if(G.can_reenter_corpse) + break + else + return 0 + + for(var/modifier_type in R.genetic_modifiers) //Can't be revived. Probably won't happen...? + if(istype(modifier_type, /datum/modifier/no_clone)) + return 0 + + var/mob/living/carbon/human/H = new /mob/living/carbon/human(get_turf(src), R.dna.species) + + if(!R.dna) + H.dna = new /datum/dna() + H.dna.real_name = H.real_name + else + H.dna = R.dna + + H.UpdateAppearance() + H.sync_organ_dna() + if(!R.dna.real_name) //to prevent null names + R.dna.real_name = "promethean ([rand(0,999)])" + H.real_name = R.dna.real_name + + H.nutrition = 260 //Enough to try to regenerate ONCE. + H.adjustBruteLoss(40) + H.adjustFireLoss(40) + H.paralyze(4) + H.updatehealth() + for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. + if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) + E.removed() + qdel(E) + E = null + H.regenerate_icons() + clonemind.transfer_to(H) + for(var/modifier_type in R.genetic_modifiers) + H.add_modifier(modifier_type) + + for(var/datum/language/L in R.languages) + H.add_language(L.name) + H.flavor_texts = R.flavor.Copy() + qdel(src) + return 1 + +/datum/chemical_reaction/promethean_brain_revival + name = "Promethean Revival" + id = "prom_revival" + result = null + required_reagents = list("phoron" = 40) + result_amount = 1 + +/datum/chemical_reaction/promethean_brain_revival/can_happen(var/datum/reagents/holder) + if(holder.my_atom && istype(holder.my_atom, /obj/item/organ/internal/brain/slime)) + return ..() + return FALSE + +/datum/chemical_reaction/promethean_brain_revival/on_reaction(var/datum/reagents/holder) + var/obj/item/organ/internal/brain/slime/brain = holder.my_atom + if(brain.reviveBody()) + brain.visible_message("[brain] bubbles, surrounding itself with a rapidly expanding mass of slime!") + else + brain.visible_message("[brain] shifts strangely, but falls still.") + /obj/item/organ/internal/brain/golem name = "chem" desc = "A tightly furled roll of paper, covered with indecipherable runes." From 84058a4de0d4132931b2f05af4ac566138879de7 Mon Sep 17 00:00:00 2001 From: fludd12 Date: Thu, 24 May 2018 07:20:02 -0400 Subject: [PATCH 2/5] Friggin capital letters --- code/modules/organs/internal/brain.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index cdedeb2957..f39cb44bc1 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -195,7 +195,7 @@ H.nutrition = 260 //Enough to try to regenerate ONCE. H.adjustBruteLoss(40) H.adjustFireLoss(40) - H.paralyze(4) + H.Paralyze(4) H.updatehealth() for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) From 49380bd2ff7ce4344ba48360964be57767a47f68 Mon Sep 17 00:00:00 2001 From: fludd12 Date: Thu, 24 May 2018 07:22:06 -0400 Subject: [PATCH 3/5] Curse You Great Britain --- code/modules/organs/internal/brain.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index f39cb44bc1..9ab6b7ce1a 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -195,7 +195,7 @@ H.nutrition = 260 //Enough to try to regenerate ONCE. H.adjustBruteLoss(40) H.adjustFireLoss(40) - H.Paralyze(4) + H.Paralyse(4) H.updatehealth() for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) From 92e339363c9e765ea7c64b8dc8f92ce4226c8167 Mon Sep 17 00:00:00 2001 From: fludd12 Date: Thu, 24 May 2018 09:37:14 -0400 Subject: [PATCH 4/5] Compliance with vorecode coding standards! --- code/modules/organs/internal/brain.dm | 93 ----------------------- code/modules/organs/internal/brain_vr.dm | 94 ++++++++++++++++++++++++ vorestation.dme | 1 + 3 files changed, 95 insertions(+), 93 deletions(-) create mode 100644 code/modules/organs/internal/brain_vr.dm diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index 9ab6b7ce1a..ec0b9d8034 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -135,103 +135,10 @@ icon_state = "green slime extract" parent_organ = BP_TORSO clone_source = TRUE - flags = OPENCONTAINER /obj/item/organ/internal/brain/slime/is_open_container() return 1 -/obj/item/organ/internal/brain/slime/New() - ..() - create_reagents(50) - -/obj/item/organ/internal/brain/slime/proc/reviveBody() - var/datum/dna2/record/R = new /datum/dna2/record() - R.dna = brainmob.dna - R.ckey = brainmob.ckey - R.id = copytext(md5(brainmob.real_name), 2, 6) - R.name = R.dna.real_name - R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE - R.languages = brainmob.languages - R.flavor = list() - for(var/datum/modifier/mod in brainmob.modifiers) - if(mod.flags & MODIFIER_GENETIC) - R.genetic_modifiers.Add(mod.type) - - var/datum/mind/clonemind = brainmob.mind - - if(!istype(clonemind, /datum/mind)) //not a mind - return 0 - if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body - return 0 - if(clonemind.active) //somebody is using that mind - if(ckey(clonemind.key) != R.ckey) - return 0 - else - for(var/mob/observer/dead/G in player_list) - if(G.ckey == R.ckey) - if(G.can_reenter_corpse) - break - else - return 0 - - for(var/modifier_type in R.genetic_modifiers) //Can't be revived. Probably won't happen...? - if(istype(modifier_type, /datum/modifier/no_clone)) - return 0 - - var/mob/living/carbon/human/H = new /mob/living/carbon/human(get_turf(src), R.dna.species) - - if(!R.dna) - H.dna = new /datum/dna() - H.dna.real_name = H.real_name - else - H.dna = R.dna - - H.UpdateAppearance() - H.sync_organ_dna() - if(!R.dna.real_name) //to prevent null names - R.dna.real_name = "promethean ([rand(0,999)])" - H.real_name = R.dna.real_name - - H.nutrition = 260 //Enough to try to regenerate ONCE. - H.adjustBruteLoss(40) - H.adjustFireLoss(40) - H.Paralyse(4) - H.updatehealth() - for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. - if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) - E.removed() - qdel(E) - E = null - H.regenerate_icons() - clonemind.transfer_to(H) - for(var/modifier_type in R.genetic_modifiers) - H.add_modifier(modifier_type) - - for(var/datum/language/L in R.languages) - H.add_language(L.name) - H.flavor_texts = R.flavor.Copy() - qdel(src) - return 1 - -/datum/chemical_reaction/promethean_brain_revival - name = "Promethean Revival" - id = "prom_revival" - result = null - required_reagents = list("phoron" = 40) - result_amount = 1 - -/datum/chemical_reaction/promethean_brain_revival/can_happen(var/datum/reagents/holder) - if(holder.my_atom && istype(holder.my_atom, /obj/item/organ/internal/brain/slime)) - return ..() - return FALSE - -/datum/chemical_reaction/promethean_brain_revival/on_reaction(var/datum/reagents/holder) - var/obj/item/organ/internal/brain/slime/brain = holder.my_atom - if(brain.reviveBody()) - brain.visible_message("[brain] bubbles, surrounding itself with a rapidly expanding mass of slime!") - else - brain.visible_message("[brain] shifts strangely, but falls still.") - /obj/item/organ/internal/brain/golem name = "chem" desc = "A tightly furled roll of paper, covered with indecipherable runes." diff --git a/code/modules/organs/internal/brain_vr.dm b/code/modules/organs/internal/brain_vr.dm new file mode 100644 index 0000000000..e760844fa0 --- /dev/null +++ b/code/modules/organs/internal/brain_vr.dm @@ -0,0 +1,94 @@ +/obj/item/organ/internal/brain/slime + flags = OPENCONTAINER + +/obj/item/organ/internal/brain/slime/New() + ..() + create_reagents(50) + +/obj/item/organ/internal/brain/slime/proc/reviveBody() + var/datum/dna2/record/R = new /datum/dna2/record() + R.dna = brainmob.dna + R.ckey = brainmob.ckey + R.id = copytext(md5(brainmob.real_name), 2, 6) + R.name = R.dna.real_name + R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE + R.languages = brainmob.languages + R.flavor = list() + for(var/datum/modifier/mod in brainmob.modifiers) + if(mod.flags & MODIFIER_GENETIC) + R.genetic_modifiers.Add(mod.type) + + var/datum/mind/clonemind = brainmob.mind + + if(!istype(clonemind, /datum/mind)) //not a mind + return 0 + if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body + return 0 + if(clonemind.active) //somebody is using that mind + if(ckey(clonemind.key) != R.ckey) + return 0 + else + for(var/mob/observer/dead/G in player_list) + if(G.ckey == R.ckey) + if(G.can_reenter_corpse) + break + else + return 0 + + for(var/modifier_type in R.genetic_modifiers) //Can't be revived. Probably won't happen...? + if(istype(modifier_type, /datum/modifier/no_clone)) + return 0 + + var/mob/living/carbon/human/H = new /mob/living/carbon/human(get_turf(src), R.dna.species) + + if(!R.dna) + H.dna = new /datum/dna() + H.dna.real_name = H.real_name + else + H.dna = R.dna + + H.UpdateAppearance() + H.sync_organ_dna() + if(!R.dna.real_name) //to prevent null names + R.dna.real_name = "promethean ([rand(0,999)])" + H.real_name = R.dna.real_name + + H.nutrition = 260 //Enough to try to regenerate ONCE. + H.adjustBruteLoss(40) + H.adjustFireLoss(40) + H.Paralyse(4) + H.updatehealth() + for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. + if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) + E.removed() + qdel(E) + E = null + H.regenerate_icons() + clonemind.transfer_to(H) + for(var/modifier_type in R.genetic_modifiers) + H.add_modifier(modifier_type) + + for(var/datum/language/L in R.languages) + H.add_language(L.name) + H.flavor_texts = R.flavor.Copy() + qdel(src) + return 1 + +/datum/chemical_reaction/promethean_brain_revival + name = "Promethean Revival" + id = "prom_revival" + result = null + required_reagents = list("phoron" = 40) + result_amount = 1 + +/datum/chemical_reaction/promethean_brain_revival/can_happen(var/datum/reagents/holder) + if(holder.my_atom && istype(holder.my_atom, /obj/item/organ/internal/brain/slime)) + return ..() + return FALSE + +/datum/chemical_reaction/promethean_brain_revival/on_reaction(var/datum/reagents/holder) + var/obj/item/organ/internal/brain/slime/brain = holder.my_atom + if(brain.reviveBody()) + brain.visible_message("[brain] bubbles, surrounding itself with a rapidly expanding mass of slime!") + else + brain.visible_message("[brain] shifts strangely, but falls still.") \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 1b92618ced..fbe254eea6 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2296,6 +2296,7 @@ #include "code\modules\organs\wound.dm" #include "code\modules\organs\internal\appendix.dm" #include "code\modules\organs\internal\brain.dm" +#include "code\modules\organs\internal\brain_vr.dm" #include "code\modules\organs\internal\eyes.dm" #include "code\modules\organs\internal\heart.dm" #include "code\modules\organs\internal\kidneys.dm" From dc2b20c7c93e8bc6b17e940f9cedc62887609e5b Mon Sep 17 00:00:00 2001 From: fludd12 Date: Thu, 31 May 2018 00:27:58 -0400 Subject: [PATCH 5/5] Removes `brain_vr`, as upstream merged the same code. --- code/modules/organs/internal/brain_vr.dm | 94 ------------------------ vorestation.dme | 1 - 2 files changed, 95 deletions(-) delete mode 100644 code/modules/organs/internal/brain_vr.dm diff --git a/code/modules/organs/internal/brain_vr.dm b/code/modules/organs/internal/brain_vr.dm deleted file mode 100644 index e760844fa0..0000000000 --- a/code/modules/organs/internal/brain_vr.dm +++ /dev/null @@ -1,94 +0,0 @@ -/obj/item/organ/internal/brain/slime - flags = OPENCONTAINER - -/obj/item/organ/internal/brain/slime/New() - ..() - create_reagents(50) - -/obj/item/organ/internal/brain/slime/proc/reviveBody() - var/datum/dna2/record/R = new /datum/dna2/record() - R.dna = brainmob.dna - R.ckey = brainmob.ckey - R.id = copytext(md5(brainmob.real_name), 2, 6) - R.name = R.dna.real_name - R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE - R.languages = brainmob.languages - R.flavor = list() - for(var/datum/modifier/mod in brainmob.modifiers) - if(mod.flags & MODIFIER_GENETIC) - R.genetic_modifiers.Add(mod.type) - - var/datum/mind/clonemind = brainmob.mind - - if(!istype(clonemind, /datum/mind)) //not a mind - return 0 - if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body - return 0 - if(clonemind.active) //somebody is using that mind - if(ckey(clonemind.key) != R.ckey) - return 0 - else - for(var/mob/observer/dead/G in player_list) - if(G.ckey == R.ckey) - if(G.can_reenter_corpse) - break - else - return 0 - - for(var/modifier_type in R.genetic_modifiers) //Can't be revived. Probably won't happen...? - if(istype(modifier_type, /datum/modifier/no_clone)) - return 0 - - var/mob/living/carbon/human/H = new /mob/living/carbon/human(get_turf(src), R.dna.species) - - if(!R.dna) - H.dna = new /datum/dna() - H.dna.real_name = H.real_name - else - H.dna = R.dna - - H.UpdateAppearance() - H.sync_organ_dna() - if(!R.dna.real_name) //to prevent null names - R.dna.real_name = "promethean ([rand(0,999)])" - H.real_name = R.dna.real_name - - H.nutrition = 260 //Enough to try to regenerate ONCE. - H.adjustBruteLoss(40) - H.adjustFireLoss(40) - H.Paralyse(4) - H.updatehealth() - for(var/obj/item/organ/external/E in H.organs) //They've still gotta congeal, but it's faster than the clone sickness they'd normally get. - if(E && E.organ_tag == BP_L_ARM || E.organ_tag == BP_R_ARM || E.organ_tag == BP_L_LEG || E.organ_tag == BP_R_LEG) - E.removed() - qdel(E) - E = null - H.regenerate_icons() - clonemind.transfer_to(H) - for(var/modifier_type in R.genetic_modifiers) - H.add_modifier(modifier_type) - - for(var/datum/language/L in R.languages) - H.add_language(L.name) - H.flavor_texts = R.flavor.Copy() - qdel(src) - return 1 - -/datum/chemical_reaction/promethean_brain_revival - name = "Promethean Revival" - id = "prom_revival" - result = null - required_reagents = list("phoron" = 40) - result_amount = 1 - -/datum/chemical_reaction/promethean_brain_revival/can_happen(var/datum/reagents/holder) - if(holder.my_atom && istype(holder.my_atom, /obj/item/organ/internal/brain/slime)) - return ..() - return FALSE - -/datum/chemical_reaction/promethean_brain_revival/on_reaction(var/datum/reagents/holder) - var/obj/item/organ/internal/brain/slime/brain = holder.my_atom - if(brain.reviveBody()) - brain.visible_message("[brain] bubbles, surrounding itself with a rapidly expanding mass of slime!") - else - brain.visible_message("[brain] shifts strangely, but falls still.") \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index fbe254eea6..1b92618ced 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2296,7 +2296,6 @@ #include "code\modules\organs\wound.dm" #include "code\modules\organs\internal\appendix.dm" #include "code\modules\organs\internal\brain.dm" -#include "code\modules\organs\internal\brain_vr.dm" #include "code\modules\organs\internal\eyes.dm" #include "code\modules\organs\internal\heart.dm" #include "code\modules\organs\internal\kidneys.dm"