mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Fixes nightmare brain insertion (#91875)
closes #91874 Our chain of events was a little wrong for the insertion Insert is called to insert the nightmare brain - on_mob_insert makes it a nightmare and regenerates all organs - bodypart_insert inserts the brai- WAIT THERE'S ALREADY A BRAIN FROM ON_MOB_INSERT CALLING SET_SPECIES AHHHH I added an option to not regenerate missing organs on species change, and use that for nightmare brain insertion Maybe I should redo the entire movement-insertion change, but I don't want to 🆑 fix: Fixes inserting nightmare brains implanting the organ into their ??? /🆑
This commit is contained in:
+3
-3
@@ -575,7 +575,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
stored_dna.species = mrace //not calling any species update procs since we're a brain, not a monkey/human
|
||||
|
||||
|
||||
/mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, list/override_features, list/override_mutantparts, list/override_markings) // SKYRAT EDIT CHANGE - ORIGINAL: /mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
|
||||
/mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE, list/override_features, list/override_mutantparts, list/override_markings) // SKYRAT EDIT CHANGE - ORIGINAL: /mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE)
|
||||
if(QDELETED(src))
|
||||
CRASH("You're trying to change your species post deletion, this is a recipe for madness")
|
||||
if(isnull(mrace))
|
||||
@@ -624,10 +624,10 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
|
||||
|
||||
dna.update_body_size()
|
||||
// SKYRAT EDIT ADDITION END
|
||||
dna.species.on_species_gain(src, old_species, pref_load, regenerate_icons = icon_update)
|
||||
dna.species.on_species_gain(src, old_species, pref_load, icon_update, replace_missing)
|
||||
log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]")
|
||||
|
||||
/mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, list/override_features, list/override_mutantparts, list/override_markings) // SKYRAT EDIT CHANGE - ORIGINAL: /mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
|
||||
/mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE, list/override_features, list/override_mutantparts, list/override_markings) // SKYRAT EDIT CHANGE - ORIGINAL: /mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE)
|
||||
..()
|
||||
if(icon_update)
|
||||
update_body(is_creating = TRUE)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
. = ..()
|
||||
|
||||
if(brain_owner.dna.species.id != SPECIES_NIGHTMARE)
|
||||
brain_owner.set_species(/datum/species/shadow/nightmare)
|
||||
brain_owner.set_species(/datum/species/shadow/nightmare, replace_missing = FALSE)
|
||||
visible_message(span_warning("[brain_owner] thrashes as [src] takes root in [brain_owner.p_their()] body!"))
|
||||
|
||||
our_jaunt = new(brain_owner)
|
||||
|
||||
@@ -297,8 +297,9 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
* * replace_current - boolean, forces all old organs to get deleted whether or not they pass the species' ability to keep that organ
|
||||
* * excluded_zones - list, add zone defines to block organs inside of the zones from getting handled. see headless mutation for an example
|
||||
* * visual_only - boolean, only load organs that change how the species looks. Do not use for normal gameplay stuff
|
||||
* * replace_missing - Whether or not to replace missing organs
|
||||
*/
|
||||
/datum/species/proc/regenerate_organs(mob/living/carbon/organ_holder, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE)
|
||||
/datum/species/proc/regenerate_organs(mob/living/carbon/organ_holder, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE, replace_missing = TRUE)
|
||||
for(var/slot in get_all_slots())
|
||||
var/obj/item/organ/existing_organ = organ_holder.get_organ_slot(slot)
|
||||
var/obj/item/organ/new_organ = get_mutant_organ_type_for_slot(slot)
|
||||
@@ -341,7 +342,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
existing_organ.Remove(organ_holder, special = TRUE)
|
||||
|
||||
QDEL_NULL(existing_organ)
|
||||
if(isnull(existing_organ) && should_have && !(new_organ.zone in excluded_zones) && organ_holder.get_bodypart(deprecise_zone(new_organ.zone)))
|
||||
if(isnull(existing_organ) && should_have && !(new_organ.zone in excluded_zones) && organ_holder.get_bodypart(deprecise_zone(new_organ.zone)) && (replace_missing || remove_existing))
|
||||
used_neworgan = TRUE
|
||||
new_organ.set_organ_damage(new_organ.maxHealth * (1 - health_pct))
|
||||
new_organ.Insert(organ_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
|
||||
@@ -377,8 +378,9 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
* * old_species - The species that the carbon used to be before becoming this race, used for regenerating organs.
|
||||
* * pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc.
|
||||
* * regenerate_icons - Whether or not to update the bodies icons
|
||||
* * replace_missing - Whether or not to replace missing organs
|
||||
*/
|
||||
/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons = TRUE)
|
||||
/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons = TRUE, replace_missing = TRUE)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
human_who_gained_species.living_flags |= STOP_OVERLAY_UPDATE_BODY_PARTS //Don't call update_body_parts() for every single bodypart overlay added.
|
||||
@@ -405,7 +407,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
|
||||
else if(old_species.exotic_bloodtype && isnull(exotic_bloodtype))
|
||||
human_who_gained_species.set_blood_type(random_human_blood_type())
|
||||
|
||||
regenerate_organs(human_who_gained_species, old_species, replace_current = human_who_gained_species.visual_only_organs, visual_only = human_who_gained_species.visual_only_organs) // SKYRAT EDIT - Allows existing organs to be properly removed when regenerating organs - ORIGINAL: regenerate_organs(human_who_gained_species, old_species, replace_current = FALSE, visual_only = human_who_gained_species.visual_only_organs)
|
||||
regenerate_organs(human_who_gained_species, old_species, replace_current = human_who_gained_species.visual_only_organs, visual_only = human_who_gained_species.visual_only_organs, replace_missing = replace_missing) // SKYRAT EDIT - Allows existing organs to be properly removed when regenerating organs - ORIGINAL: regenerate_organs(human_who_gained_species, old_species, replace_current = FALSE, visual_only = human_who_gained_species.visual_only_organs, replace_missing = replace_missing)
|
||||
// Update locked slots AFTER all organ and body stuff is handled
|
||||
human_who_gained_species.hud_used?.update_locked_slots()
|
||||
// Drop the items the new species can't wear
|
||||
|
||||
@@ -22,7 +22,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
|
||||
/mob/living/carbon/human/dummy/attach_rot(mapload)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/dummy/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, list/override_features, list/override_mutantparts, list/override_markings, retain_features = FALSE, retain_mutantparts = FALSE) // SKYRAT EDIT - Customization
|
||||
/mob/living/carbon/human/dummy/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE, list/override_features, list/override_mutantparts, list/override_markings, retain_features = FALSE, retain_mutantparts = FALSE) // SKYRAT EDIT - Customization
|
||||
harvest_organs()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -1131,7 +1131,7 @@
|
||||
if (!isnull(race))
|
||||
dna.species = new race
|
||||
|
||||
/mob/living/carbon/human/species/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, list/override_features, list/override_mutantparts, list/override_markings, retain_features = FALSE, retain_mutantparts = FALSE) // SKYRAT EDIT - Customization
|
||||
/mob/living/carbon/human/species/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE, list/override_features, list/override_mutantparts, list/override_markings, retain_features = FALSE, retain_mutantparts = FALSE) // SKYRAT EDIT - Customization
|
||||
|
||||
. = ..()
|
||||
if(use_random_name)
|
||||
|
||||
Reference in New Issue
Block a user