From 3f44c2d8162d2502152c7b6344b488a9bd6fe7c1 Mon Sep 17 00:00:00 2001 From: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:36:48 -0500 Subject: [PATCH] Removes holographic monkey species (#81606) ## About The Pull Request Split this off from https://github.com/tgstation/tgstation/pull/81598 in hopes to keep it as atomic as I can. Genericizes the things that holographic monkey species existed to replace, so now we don't have to worry about having to copy paste this to any future mob later down the line. ## Why It's Good For The Game Removes a monkey species subtype, and a pretty bad one at that. Preferably makes hologram mobs more consistent with eachother and prevents copy paste happening everywhere in the future if any new mobs ever gets added to the holodeck. ## Changelog :cl: refactor: Holographic mobs now gives better feedback to players and should more consistently not give any drops. /:cl: --- code/__DEFINES/mobs.dm | 1 - code/datums/components/butchering.dm | 6 ++++++ .../food_and_drinks/machinery/gibber.dm | 6 ++++++ code/modules/holodeck/holo_effect.dm | 6 ++---- code/modules/mob/living/carbon/carbon.dm | 10 ++++----- code/modules/mob/living/carbon/human/death.dm | 2 ++ .../modules/mob/living/carbon/human/monkey.dm | 6 ------ .../carbon/human/species_types/monkeys.dm | 19 ------------------ code/modules/mob/living/death.dm | 2 ++ code/modules/surgery/lipoplasty.dm | 19 ++++++++++-------- ...manoids__datum_species_monkey_holodeck.png | Bin 778 -> 0 bytes 11 files changed, 34 insertions(+), 43 deletions(-) delete mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey_holodeck.png diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 2e1eac6672d..d9514d735d0 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -120,7 +120,6 @@ #define SPECIES_NIGHTMARE "nightmare" #define SPECIES_MONKEY "monkey" #define SPECIES_MONKEY_FREAK "monkey_freak" -#define SPECIES_MONKEY_HOLODECK "monkey_holodeck" #define SPECIES_MONKEY_HUMAN_LEGGED "monkey_human_legged" #define SPECIES_MOTH "moth" #define SPECIES_MUSHROOM "mush" diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 0cf6631f807..1f432efc734 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -107,6 +107,12 @@ var/final_effectiveness = effectiveness - target.butcher_difficulty var/bonus_chance = max(0, (final_effectiveness - 100) + bonus_modifier) //so 125 total effectiveness = 25% extra chance + if(target.flags_1 & HOLOGRAM_1) + butcher.visible_message(span_notice("[butcher] tries to butcher [target], but it vanishes."), \ + span_notice("You try to butcher [target], but it vanishes.")) + qdel(target) + return + for(var/result_typepath in target.butcher_results) var/obj/remains = result_typepath var/amount = target.butcher_results[remains] diff --git a/code/modules/food_and_drinks/machinery/gibber.dm b/code/modules/food_and_drinks/machinery/gibber.dm index a774d0126a2..62157177bdc 100644 --- a/code/modules/food_and_drinks/machinery/gibber.dm +++ b/code/modules/food_and_drinks/machinery/gibber.dm @@ -147,6 +147,12 @@ if(!occupant) audible_message(span_hear("You hear a loud metallic grinding sound.")) return + if(occupant.flags_1 & HOLOGRAM_1) + audible_message(span_hear("You hear a very short metallic grinding sound.")) + playsound(loc, 'sound/machines/hiss.ogg', 20, TRUE) + qdel(occupant) + set_occupant(null) + return use_power(active_power_usage) audible_message(span_hear("You hear a loud squelchy grinding sound.")) diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index 1bbedefb2e0..afd4c227038 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -62,11 +62,9 @@ mobtype = pick(mobtype) our_mob = new mobtype(loc) our_mob.flags_1 |= HOLOGRAM_1 - ADD_TRAIT(our_mob, TRAIT_PERMANENTLY_MORTAL, INNATE_TRAIT) // these vars are not really standardized but all would theoretically create stuff on death - for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & our_mob.vars) - our_mob.vars[v] = null + our_mob.add_traits(list(TRAIT_PERMANENTLY_MORTAL, TRAIT_NO_BLOOD_OVERLAY, TRAIT_NOBLOOD, TRAIT_NOHUNGER), INNATE_TRAIT) RegisterSignal(our_mob, COMSIG_QDELETING, PROC_REF(handle_mob_delete)) return our_mob @@ -103,7 +101,7 @@ mobtype = /mob/living/basic/bee/toxin /obj/effect/holodeck_effect/mobspawner/monkey - mobtype = /mob/living/carbon/human/species/monkey/holodeck + mobtype = /mob/living/carbon/human/species/monkey /obj/effect/holodeck_effect/mobspawner/monkey/activate(obj/machinery/computer/holodeck/computer) var/mob/living/carbon/human/monkey = ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 729ef541ade..07814555a77 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1344,7 +1344,6 @@ else set_lying_angle(new_lying_angle) - /mob/living/carbon/vv_edit_var(var_name, var_value) switch(var_name) if(NAMEOF(src, disgust)) @@ -1360,17 +1359,18 @@ return ..() - /mob/living/carbon/get_attack_type() if(has_active_hand()) var/obj/item/bodypart/arm/active_arm = get_active_hand() return active_arm.attack_type return ..() - /mob/living/carbon/proc/attach_rot() - if(mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD)) - AddComponent(/datum/component/rot, 6 MINUTES, 10 MINUTES, 1) + if(flags_1 & HOLOGRAM_1) + return + if(!(mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) + return + AddComponent(/datum/component/rot, 6 MINUTES, 10 MINUTES, 1) /** * This proc is used to determine whether or not the mob can handle touching an acid affected object. diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 7d31dd5ff90..6d15f696bed 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -6,6 +6,8 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) new /obj/effect/temp_visual/dust_animation(loc, dna.species.dust_anim) /mob/living/carbon/human/spawn_gibs(drop_bitflags=NONE) + if(flags_1 & HOLOGRAM_1) + return if(drop_bitflags & DROP_BODYPARTS) new /obj/effect/gibspawner/human(drop_location(), src, get_static_viruses()) else diff --git a/code/modules/mob/living/carbon/human/monkey.dm b/code/modules/mob/living/carbon/human/monkey.dm index 88d46855a5e..d11e4f5208b 100644 --- a/code/modules/mob/living/carbon/human/monkey.dm +++ b/code/modules/mob/living/carbon/human/monkey.dm @@ -32,12 +32,6 @@ equip_to_slot_or_del(helmet, ITEM_SLOT_HEAD) helmet.attack_self(src) // todo encapsulate toggle -/mob/living/carbon/human/species/monkey/holodeck - race = /datum/species/monkey/holodeck - -/mob/living/carbon/human/species/monkey/holodeck/spawn_gibs() // no blood and no gibs - return - GLOBAL_DATUM(the_one_and_only_punpun, /mob/living/carbon/human/species/monkey/punpun) /mob/living/carbon/human/species/monkey/punpun diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index 3c176ff4388..b67f3efb3ef 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -191,23 +191,4 @@ /obj/item/organ/internal/brain/primate/get_attacking_limb(mob/living/carbon/human/target) return owner.get_bodypart(BODY_ZONE_HEAD) -/// Virtual monkeys that crave virtual bananas. Everything about them is ephemeral (except that bite). -/datum/species/monkey/holodeck - id = SPECIES_MONKEY_HOLODECK - knife_butcher_results = list() - meat = null - skinned_type = null - inherent_traits = list( - TRAIT_GENELESS, - TRAIT_GUN_NATURAL, - TRAIT_NO_AUGMENTS, - TRAIT_NO_BLOOD_OVERLAY, - TRAIT_NO_DNA_COPY, - TRAIT_NO_UNDERWEAR, - TRAIT_NO_ZOMBIFY, - TRAIT_NOBLOOD, - TRAIT_NOHUNGER, - TRAIT_VENTCRAWLER_NUDE, - ) - #undef MONKEY_SPEC_ATTACK_BITE_MISS_CHANCE diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 4da845c11df..0c228775662 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -37,6 +37,8 @@ * * DROP_BODYPARTS - Gibs will spawn with bodypart limbs present **/ /mob/living/proc/spawn_gibs(drop_bitflags=NONE) + if(flags_1 & HOLOGRAM_1) + return new /obj/effect/gibspawner/generic(drop_location(), src, get_static_viruses()) /** diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 1d2e6b68381..031534b0723 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -87,14 +87,17 @@ var/mob/living/carbon/human/human = target var/typeofmeat = /obj/item/food/meat/slab/human - if(human.dna && human.dna.species) + if(target.flags_1 & HOLOGRAM_1) + typeofmeat = null + else if(human.dna && human.dna.species) typeofmeat = human.dna.species.meat - var/obj/item/food/meat/slab/human/newmeat = new typeofmeat - newmeat.name = "fatty meat" - newmeat.desc = "Extremely fatty tissue taken from a patient." - newmeat.subjectname = human.real_name - newmeat.subjectjob = human.job - newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, (removednutriment / 15)) //To balance with nutriment_factor of nutriment - newmeat.forceMove(target.loc) + if(typeofmeat) + var/obj/item/food/meat/slab/human/newmeat = new typeofmeat + newmeat.name = "fatty meat" + newmeat.desc = "Extremely fatty tissue taken from a patient." + newmeat.subjectname = human.real_name + newmeat.subjectjob = human.job + newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, (removednutriment / 15)) //To balance with nutriment_factor of nutriment + newmeat.forceMove(target.loc) return ..() diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey_holodeck.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey_holodeck.png deleted file mode 100644 index e0d02f4302f431fa782e8250d9b8dcf5bad2fa1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmV+l1NHogP)KAp>Z$oXysABgMiHfJ)Mp(PaB}|{tSt3w;QEkZV5_+||Ce{Pf14u|qZeL1-2r+7@f1TfwZw9)C%H1Gq&L5Wc*AAOHXW07*qo IM6N<$g0f{}GXMYp