From 03fd28a0ee6a25340029d4c6997a71afb44ed97b Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 29 Jul 2024 13:24:41 -0400 Subject: [PATCH 01/21] teratomas --- code/__DEFINES/mobs.dm | 1 + code/__HELPERS/mobs.dm | 2 +- .../antagonists/changeling/powers/spiders.dm | 2 + .../changeling/powers/teratomas.dm | 44 ++++++++++ .../carbon/human/species_type/teratoma.dm | 78 ++++++++++++++++++ .../surgery/bodyparts/teratoma_bodyparts.dm | 55 ++++++++++++ .../icons/mob/species/teratoma/bodyparts.dmi | Bin 0 -> 898 bytes tgstation.dme | 3 + 8 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 monkestation/code/modules/antagonists/changeling/powers/teratomas.dm create mode 100644 monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm create mode 100644 monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm create mode 100644 monkestation/icons/mob/species/teratoma/bodyparts.dmi diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 9c546fb984b7..b546be628de4 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -132,6 +132,7 @@ #define SPECIES_GOBLIN "goblin" //Monkestation Addition #define SPECIES_FLORAN "floran" //Monkestation Addition #define SPECIES_SATYR "satyr" //Monkestation Addition +#define SPECIES_TERATOMA "teratoma" //Monkestation Addition // Like species IDs, but not specifically attached a species. #define BODYPART_ID_ALIEN "alien" #define BODYPART_ID_ROBOTIC "robotic" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 32ee82b6d9f8..a43a50cda5a2 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -535,7 +535,7 @@ GLOBAL_LIST_EMPTY(species_list) /proc/passtable_on(target, source) var/mob/living/L = target - if (!HAS_TRAIT(L, TRAIT_PASSTABLE) && L.pass_flags & PASSTABLE) + if (!HAS_TRAIT(L, TRAIT_PASSTABLE) && (L.pass_flags & PASSTABLE)) ADD_TRAIT(L, TRAIT_PASSTABLE, INNATE_TRAIT) ADD_TRAIT(L, TRAIT_PASSTABLE, source) L.pass_flags |= PASSTABLE diff --git a/code/modules/antagonists/changeling/powers/spiders.dm b/code/modules/antagonists/changeling/powers/spiders.dm index ce23fc0eb1b5..ff2ae524dc6f 100644 --- a/code/modules/antagonists/changeling/powers/spiders.dm +++ b/code/modules/antagonists/changeling/powers/spiders.dm @@ -1,3 +1,4 @@ +/* monkestation removal: replaced by teratomas in [monkestation\code\modules\antagonists\changeling\powers\teratomas.dm] /datum/action/changeling/spiders name = "Spread Infestation" desc = "Our form divides, creating a cluster of eggs which will grow into a deadly arachnid. Costs 45 chemicals." @@ -12,3 +13,4 @@ ..() new /obj/effect/mob_spawn/ghost_role/spider/bloody(user.loc) return TRUE +*/ diff --git a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm new file mode 100644 index 000000000000..845da1f0937c --- /dev/null +++ b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm @@ -0,0 +1,44 @@ +/datum/action/changeling/teratoma + name = "Birth Teratoma" + desc = "Our form divides, creating an egg that will soon hatch into a living tumor, fixated on causing mayhem." + helptext = "The tumor will not be loyal to us or our cause. Costs two changeling absorptions." + button_icon_state = "spread_infestation" + chemical_cost = 60 + dna_cost = 2 + req_absorbs = 3 + +/datum/action/changeling/teratoma/sting_action(mob/living/user) + ..() + if(create_teratoma(user)) + playsound(user.loc, 'sound/effects/blobattack.ogg', 50, 1) + user.spawn_gibs() + user.visible_message(span_danger("Something horrible bursts out of [user]'s chest!"), \ + span_danger("Living teratoma bursts out of your chest!"), \ + span_hear("You hear flesh tearing!"), COMBAT_MESSAGE_RANGE) + return FALSE //create_teratoma() handles the chemicals anyway so there is no reason to take them again + +/datum/action/changeling/teratoma/proc/create_teratoma(mob/living/user) + var/datum/antagonist/changeling/ling = user?.mind?.has_antag_datum(/datum/antagonist/changeling) + if(!ling) + return FALSE + ling.adjust_chemicals(-chemical_cost) + var/list/candidates = SSpolling.poll_ghost_candidates( + "Do you want to play as a living teratoma?", + poll_time = 7.5 SECONDS, + pic_source = /mob/living/carbon/human/species/teratoma, + role_name_text = "living teratoma" + ) + if(!length(candidates)) //if we got at least one candidate, they're teratoma now + to_chat(user, span_warning("You fail at creating a tumor. Perhaps you should try again later?")) + ling.adjust_chemicals(chemical_cost) + return FALSE + var/mob/dead/observer/candidate = pick(candidates) + if(QDELETED(candidate)) + to_chat(user, span_warning("You fail at creating a tumor. Perhaps you should try again later?")) + ling.adjust_chemicals(chemical_cost) + return FALSE + var/mob/living/carbon/human/species/teratoma/goober = new(user.drop_location()) + goober.key = candidate.key + to_chat(goober, span_notice("You burst out from [user]'s chest!")) + SEND_SOUND(goober, sound('sound/effects/blobattack.ogg')) + return TRUE diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm new file mode 100644 index 000000000000..8f5909a7c0de --- /dev/null +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -0,0 +1,78 @@ +/datum/species/teratoma + name = "Teratoma" + id = SPECIES_TERATOMA + bodytype = BODYTYPE_ORGANIC | BODYTYPE_MONKEY + mutanttongue = /obj/item/organ/internal/tongue/monkey + mutantbrain = /obj/item/organ/internal/brain/primate + + species_traits = list( + NO_UNDERWEAR, + NOEYESPRITES, + NOBLOODOVERLAY, + NOTRANSSTING, + NOZOMBIE, + NO_DNA_COPY, + NOAUGMENTS, + ) + inherent_traits = list( + TRAIT_BADDNA, + TRAIT_CAN_STRIP, + TRAIT_CHUNKYFINGERS, + TRAIT_EASILY_WOUNDED, + TRAIT_GENELESS, + TRAIT_ILLITERATE, + TRAIT_KLEPTOMANIAC, + TRAIT_NO_DNA_COPY, + TRAIT_NO_ZOMBIFY, + TRAIT_PASSTABLE, + TRAIT_PRIMITIVE, + TRAIT_UNCONVERTABLE, // DEAR GOD NO + TRAIT_VAULTING, + TRAIT_VENTCRAWLER_ALWAYS, + TRAIT_WEAK_SOUL, + ) + + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/teratoma, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/teratoma, + BODY_ZONE_HEAD = /obj/item/bodypart/head/teratoma, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/teratoma, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/teratoma, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/teratoma, + ) + + maxhealthmod = 0.75 + stunmod = 1.4 + speedmod = -0.15 // stupid gremlins + + no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE + changesource_flags = MIRROR_BADMIN + liked_food = MEAT | BUGS | GORE | GROSS | RAW + disliked_food = CLOTH + sexes = FALSE + species_language_holder = /datum/language_holder/monkey + + fire_overlay = "monkey" + dust_anim = "dust-m" + gib_anim = "gibbed-m" + + var/datum/component/omen/teratoma/misfortune + +/datum/species/teratoma/on_species_gain(mob/living/carbon/human/idiot, datum/species/old_species, pref_load) + . = ..() + misfortune = idiot.AddComponent(misfortune) + +/datum/species/teratoma/on_species_loss(mob/living/carbon/human/idiot, datum/species/new_species, pref_load) + . = ..() + QDEL_NULL(misfortune) + +/datum/species/teratoma/random_name(gender,unique,lastname) + return "teratoma ([rand(1,999)])" + +/datum/component/omen/teratoma + permanent = TRUE + luck_mod = 0.75 + damage_mod = 0.2 + +/mob/living/carbon/human/species/teratoma + race = /datum/species/teratoma diff --git a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm new file mode 100644 index 000000000000..fb45bfc93373 --- /dev/null +++ b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm @@ -0,0 +1,55 @@ +/obj/item/bodypart/head/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + is_dimorphic = FALSE + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + + dmg_overlay_type = "monkey" + +/obj/item/bodypart/chest/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + is_dimorphic = FALSE + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + + dmg_overlay_type = "monkey" + +/obj/item/bodypart/arm/left/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + + dmg_overlay_type = "monkey" + +/obj/item/bodypart/arm/right/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + + dmg_overlay_type = "monkey" + +/obj/item/bodypart/leg/left/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + footprint_sprite = FOOTPRINT_SPRITE_PAWS + +/obj/item/bodypart/leg/right/teratoma + icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' + husk_type = "monkey" + limb_id = SPECIES_TERATOMA + bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + footprint_sprite = FOOTPRINT_SPRITE_PAWS + + dmg_overlay_type = "monkey" diff --git a/monkestation/icons/mob/species/teratoma/bodyparts.dmi b/monkestation/icons/mob/species/teratoma/bodyparts.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a8e8d20bea02841dbe531a6bef8690f01fef1e94 GIT binary patch literal 898 zcmV-|1AY97P)005u_0{{R3dEt5<0000gP)t-sz`(%g z$hQCU;{ePv|K`-EiFU9$I`-b@>V}5<+{)*r^2Ku0=Et?bz`)Hl3l#tW00DGTPE!Ct z=GbNc0057AR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSB(*59BtJJXJ~<<`xI~GIGbOXA7^Itv zGp#5wHxgNIuNdN!@Wo+bR zluQ5s0&7V`K~!jg?V7P}+b|G@MT1a+PL->qaM8gzc=4D#fkF^=(7uF+Le*FUMzwYl zy2j6tp=eeEo%?2SrtppzQH+QpDDIo|AL(C5DIk8+$ui-E6mQe|DY!^$I0Z=BqJpcd zq%A6A%ymk`YR|*EH<$BSRa}ny@ntDV1uUlLOME-8{G68mKHDRye5WrjrDHTZ}_Hdkv?g6 zNUPuECAD_b-{Boza%r)ie7>t(t;x7=c<49OmOjIPA^pSjbWz|B6sh+sK@f!h6}n#* zAF=*RHrNo}4!y_mOu;g4ho<>%27uC332+SWNJqsUjMK7Oz%uS3 zdP|<-j*l{`L++&@gIVlLi9`*o4W?vjddw118!F2gj`$j&)=cqajNx`@aUdF);$$(x zkozoK97;8~C%-Z_^+!!sA!-n%f zf@V9$FnBYYsgEv#4mvf?LvnbGzyH%dF>jthqv4`~09F2!bF8LM%A{ zZRev6QU2rdA<@^Nb7d6Qm^kMJ!m)<*UxtE)DE~3}Fe8Bw{2A2InW354BoJ~DQV?DX Y4}!l|-?Ag|H2?qr07*qoM6N<$g6dPMpa1{> literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index a279dd6d69f6..306a6cb4ae9f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5969,6 +5969,7 @@ #include "monkestation\code\modules\antagonists\brother\actions\gear.dm" #include "monkestation\code\modules\antagonists\brother\gear\_gear.dm" #include "monkestation\code\modules\antagonists\brother\gear\recipes.dm" +#include "monkestation\code\modules\antagonists\changeling\powers\teratomas.dm" #include "monkestation\code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "monkestation\code\modules\antagonists\clock_cult\area.dm" #include "monkestation\code\modules\antagonists\clock_cult\dynamic_ruleset.dm" @@ -7049,6 +7050,7 @@ #include "monkestation\code\modules\mob\living\carbon\human\species_type\shadowpeople.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\simian.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\skeletons.dm" +#include "monkestation\code\modules\mob\living\carbon\human\species_type\teratoma.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\zombies.dm" #include "monkestation\code\modules\mob\living\silicon\death.dm" #include "monkestation\code\modules\mob\living\simple_animal\megafauna\wendigo.dm" @@ -7579,6 +7581,7 @@ #include "monkestation\code\modules\surgery\bodyparts\ethereal_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\floran_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\simian_bodyparts.dm" +#include "monkestation\code\modules\surgery\bodyparts\teratoma_bodyparts.dm" #include "monkestation\code\modules\surgery\organs\augments.dm" #include "monkestation\code\modules\surgery\organs\autosurgeon.dm" #include "monkestation\code\modules\surgery\organs\external\anime.dm" From ab542639285a8a8b5ec8acd9706912a763ce53b5 Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 31 Jul 2024 15:38:18 -0400 Subject: [PATCH 02/21] teratoma more work --- code/__DEFINES/is_helpers.dm | 1 + .../modules/antagonists/teratoma/teratoma.dm | 41 +++++++++++++++++++ tgstation.dme | 1 + 3 files changed, 43 insertions(+) create mode 100644 monkestation/code/modules/antagonists/teratoma/teratoma.dm diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 7ec216cad530..8d7dc9c28fe5 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -102,6 +102,7 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list( #define isgoblin(A) (is_species(A, /datum/species/goblin)) //Monkestation Addition #define isfloran(A) (is_species(A, /datum/species/floran)) //Monkestation Addition #define isarachnid(A) (is_species(A, /datum/species/arachnid)) //Monkestation Addition +#define isteratoma(A) (is_species(A, /datum/species/teratoma)) //Monkestation Addition //More carbon mobs diff --git a/monkestation/code/modules/antagonists/teratoma/teratoma.dm b/monkestation/code/modules/antagonists/teratoma/teratoma.dm new file mode 100644 index 000000000000..493a767e971d --- /dev/null +++ b/monkestation/code/modules/antagonists/teratoma/teratoma.dm @@ -0,0 +1,41 @@ +/datum/team/teratoma + name = "Teratomas" + member_name = "teratoma" + +/datum/antagonist/teratoma + name = "\improper Teratoma" + show_in_antagpanel = TRUE + antagpanel_category = ANTAG_GROUP_ABOMINATIONS + show_to_ghosts = TRUE + var/datum/team/teratoma/team + +/datum/antagonist/teratoma/greet() + var/list/parts = list() + parts += span_big("You are a living teratoma!") + parts += span_changeling("By all means, you should not exist. Your very existence is a sin against nature itself.") + parts += span_changeling("You are loyal to nobody, except the forces of chaos itself.") + parts += span_info("You are able to easily vault tables and ventcrawl, however you cannot use many things like guns, batons, and you are also illiterate and quite fragile.") + parts += span_hypnophrase("Spread misery and chaos upon the station.") + to_chat(owner.current, examine_block(parts.Join("\n")), type = MESSAGE_TYPE_INFO) + +/datum/antagonist/teratoma/can_be_owned(datum/mind/new_owner) + if(!isteratoma(new_owner.current)) + return FALSE + return ..() + +/datum/antagonist/teratoma/create_team(datum/team/teratoma/new_team) + var/static/datum/team/teratoma/main_teratoma_team + if(!new_team) + if(!main_teratoma_team) + main_teratoma_team = new + main_teratoma_team.add_objective(/datum/objective/teratoma) + new_team = main_teratoma_team + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + team = new_team + objectives |= team.objectives + +/datum/objective/teratoma + name = "Spread misery and chaos" + explanation_text = "Spread misery and chaos upon the station." + completed = TRUE diff --git a/tgstation.dme b/tgstation.dme index 306a6cb4ae9f..168c9583cf67 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6116,6 +6116,7 @@ #include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_headgear.dm" #include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_middlewear.dm" #include "monkestation\code\modules\antagonists\space_ninja\space_ninja.dm" +#include "monkestation\code\modules\antagonists\teratoma\teratoma.dm" #include "monkestation\code\modules\antagonists\traitor\traitor_objective.dm" #include "monkestation\code\modules\antagonists\traitor\uplink_handler.dm" #include "monkestation\code\modules\antagonists\traitor\objectives\kidnapping.dm" From 420588c86257951be80a7b75265da39c92ce4961 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 8 Aug 2024 22:46:14 -0400 Subject: [PATCH 03/21] Don't let teratomas use mutation toxins --- .../living/carbon/human/species_type/teratoma.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index 8f5909a7c0de..5ebca8d3f80b 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -69,6 +69,22 @@ /datum/species/teratoma/random_name(gender,unique,lastname) return "teratoma ([rand(1,999)])" +// Don't let them use chems that could potential change them into something non-teratoma. +/datum/species/teratoma/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/goober, seconds_per_tick, times_fired) + var/static/list/disallowed_chems_typecache + if(!disallowed_chems_typecache) + disallowed_chems_typecache = typecacheof(list( + /datum/reagent/cyborg_mutation_nanomachines, + /datum/reagent/gluttonytoxin, + /datum/reagent/magillitis, + /datum/reagent/mutationtoxin, + /datum/reagent/xenomicrobes, + )) + if(is_type_in_typecache(chem, disallowed_chems_typecache)) + chem.holder?.del_reagent(chem.type) + return TRUE + return ..() + /datum/component/omen/teratoma permanent = TRUE luck_mod = 0.75 From 5efe5a8192a6f3b1e5accf5dd8981c6633475a1c Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 8 Aug 2024 23:07:10 -0400 Subject: [PATCH 04/21] yay they work --- code/_globalvars/lists/poll_ignore.dm | 2 ++ .../antagonists/changeling/powers/teratomas.dm | 3 ++- .../modules/antagonists/teratoma/teratoma.dm | 10 ++++++++++ .../carbon/human/species_type/teratoma.dm | 17 ++++++++++++++--- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/code/_globalvars/lists/poll_ignore.dm b/code/_globalvars/lists/poll_ignore.dm index eee6e1b92910..3edde6d8ba73 100644 --- a/code/_globalvars/lists/poll_ignore.dm +++ b/code/_globalvars/lists/poll_ignore.dm @@ -10,6 +10,7 @@ #define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support" #define POLL_IGNORE_CONSTRUCT "construct" #define POLL_IGNORE_CORTICAL_BORER "cortical_borer" // MONKESTATION ADDITION -- CORTICAL_BORERS +#define POLL_IGNORE_TERATOMA "teratoma" // MONKESTATION ADDITION -- TERATOMAS #define POLL_IGNORE_DRONE "drone" #define POLL_IGNORE_FIRE_SHARK "fire_shark" #define POLL_IGNORE_FUGITIVE "fugitive" @@ -49,6 +50,7 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list( POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit", POLL_IGNORE_CONSTRUCT = "Construct", POLL_IGNORE_CORTICAL_BORER = "Cortical Borer", // MONKESTATION ADDITION -- CORTICAL_BORERS + POLL_IGNORE_TERATOMA = "Teratoma", // MONKESTATION ADDITION -- CORTICAL_BORERS POLL_IGNORE_DRONE = "Drone shells", POLL_IGNORE_FIRE_SHARK = "Fire Shark", POLL_IGNORE_FUGITIVE = "Fugitive Hunter", diff --git a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm index 845da1f0937c..fc8941a0070e 100644 --- a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm +++ b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm @@ -25,7 +25,8 @@ var/list/candidates = SSpolling.poll_ghost_candidates( "Do you want to play as a living teratoma?", poll_time = 7.5 SECONDS, - pic_source = /mob/living/carbon/human/species/teratoma, + ignore_category = POLL_IGNORE_TERATOMA, + pic_source = /datum/antagonist/teratoma, role_name_text = "living teratoma" ) if(!length(candidates)) //if we got at least one candidate, they're teratoma now diff --git a/monkestation/code/modules/antagonists/teratoma/teratoma.dm b/monkestation/code/modules/antagonists/teratoma/teratoma.dm index 493a767e971d..3d1dbcc72077 100644 --- a/monkestation/code/modules/antagonists/teratoma/teratoma.dm +++ b/monkestation/code/modules/antagonists/teratoma/teratoma.dm @@ -35,6 +35,16 @@ team = new_team objectives |= team.objectives +/datum/antagonist/teratoma/get_base_preview_icon() + RETURN_TYPE(/icon) + var/static/icon/teratoma_icon + if(!teratoma_icon) + var/mob/living/carbon/human/species/teratoma/teratoma = new + teratoma.setDir(SOUTH) + teratoma_icon = getFlatIcon(teratoma, no_anim = TRUE) + QDEL_NULL(teratoma) + return teratoma_icon + /datum/objective/teratoma name = "Spread misery and chaos" explanation_text = "Spread misery and chaos upon the station." diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index 5ebca8d3f80b..789abadf9465 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -60,14 +60,14 @@ /datum/species/teratoma/on_species_gain(mob/living/carbon/human/idiot, datum/species/old_species, pref_load) . = ..() - misfortune = idiot.AddComponent(misfortune) + misfortune = idiot.AddComponent(/datum/component/omen/teratoma) /datum/species/teratoma/on_species_loss(mob/living/carbon/human/idiot, datum/species/new_species, pref_load) . = ..() QDEL_NULL(misfortune) -/datum/species/teratoma/random_name(gender,unique,lastname) - return "teratoma ([rand(1,999)])" +/datum/species/teratoma/random_name(gender, unique, lastname) + return "teratoma ([rand(1, 999)])" // Don't let them use chems that could potential change them into something non-teratoma. /datum/species/teratoma/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/goober, seconds_per_tick, times_fired) @@ -85,6 +85,17 @@ return TRUE return ..() +/datum/species/teratoma/get_scream_sound(mob/living/carbon/human/monkey) + return pick( + 'sound/creatures/monkey/monkey_screech_1.ogg', + 'sound/creatures/monkey/monkey_screech_2.ogg', + 'sound/creatures/monkey/monkey_screech_3.ogg', + 'sound/creatures/monkey/monkey_screech_4.ogg', + 'sound/creatures/monkey/monkey_screech_5.ogg', + 'sound/creatures/monkey/monkey_screech_6.ogg', + 'sound/creatures/monkey/monkey_screech_7.ogg', + ) + /datum/component/omen/teratoma permanent = TRUE luck_mod = 0.75 From d11714c79db7951e48e18ca2072dd0a4c73b37b2 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 8 Aug 2024 23:30:08 -0400 Subject: [PATCH 05/21] Screenshot test --- ...reenshot_humanoids__datum_species_teratoma.png | Bin 0 -> 855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b17749075e6fc598203fa3f45843dfb9ab06cd GIT binary patch literal 855 zcmV-d1E~CoP)rw$#_(iHoA<$F=+1%D~7`3jhEB0d!JMQvg8b*k%9#0A+eqSad{X zb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1KAp7)aOhFFAylG$ET73 zo}hrBr17N|&PZy2nTsM&m=dLgA2N6YC>2dmn=?Ak2@PN=6pjun)mH)eHVJTz;|_2S zapp^_Exrpx{55ktol%b#CN8nISAn)F6pxYmD#}WzT&}|0m{s+zfE6TJM}sey>vp^U z*{&ChZyTz&&Ema-;&dRK9lpvU%Dd`ou*Z=AhN~1Sp>pTyMji=x0E@Os-UZNoQ})0& z64*)D6=;a@>vQ~ne3yX#zj*v*XFv!Ke*h3`dwBfO-Pg<*_UtHx2S$YTU<(}99f5F^ z4y>C9anw5kr{K;ogSv}wa$D?cWMiDzt>T~6y8v))INa5GI5$ph)p_4SEIK8ayrO`5 z_;z7WLF#cVCsGvPy9uWmHxaP}q0&5kQa0EEjCPqK|8#KG^^Iiu$CWWa3 z>H;hc6png*6qdw+C3_N}EaxRll4V`OShDgw$%*;5?w$TE^pvK}2v` Date: Thu, 22 Aug 2024 20:43:24 -0400 Subject: [PATCH 06/21] fixy wixy --- .../code/modules/antagonists/changeling/powers/teratomas.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm index fc8941a0070e..47b0597c5167 100644 --- a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm +++ b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm @@ -26,8 +26,9 @@ "Do you want to play as a living teratoma?", poll_time = 7.5 SECONDS, ignore_category = POLL_IGNORE_TERATOMA, - pic_source = /datum/antagonist/teratoma, - role_name_text = "living teratoma" + alert_pic = /datum/antagonist/teratoma, + role_name_text = "living teratoma", + chat_text_border_icon = /datum/antagonist/teratoma, ) if(!length(candidates)) //if we got at least one candidate, they're teratoma now to_chat(user, span_warning("You fail at creating a tumor. Perhaps you should try again later?")) From 30e8fac8459b9441f4b2735f6f46c91ec76ac841 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 16:20:37 -0400 Subject: [PATCH 07/21] misc --- .../carbon/human/species_type/teratoma.dm | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index 789abadf9465..c9a8692359bb 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -6,13 +6,13 @@ mutantbrain = /obj/item/organ/internal/brain/primate species_traits = list( - NO_UNDERWEAR, - NOEYESPRITES, + NOAUGMENTS, NOBLOODOVERLAY, + NOEYESPRITES, NOTRANSSTING, NOZOMBIE, NO_DNA_COPY, - NOAUGMENTS, + NO_UNDERWEAR, ) inherent_traits = list( TRAIT_BADDNA, @@ -33,12 +33,12 @@ ) bodypart_overrides = list( - BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/teratoma, - BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/teratoma, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/teratoma, BODY_ZONE_HEAD = /obj/item/bodypart/head/teratoma, + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/teratoma, BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/teratoma, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/teratoma, BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/teratoma, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/teratoma, ) maxhealthmod = 0.75 @@ -61,29 +61,43 @@ /datum/species/teratoma/on_species_gain(mob/living/carbon/human/idiot, datum/species/old_species, pref_load) . = ..() misfortune = idiot.AddComponent(/datum/component/omen/teratoma) + RegisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(prevent_banned_reagent_exposure)) /datum/species/teratoma/on_species_loss(mob/living/carbon/human/idiot, datum/species/new_species, pref_load) . = ..() QDEL_NULL(misfortune) + UnregisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS) /datum/species/teratoma/random_name(gender, unique, lastname) return "teratoma ([rand(1, 999)])" // Don't let them use chems that could potential change them into something non-teratoma. /datum/species/teratoma/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/goober, seconds_per_tick, times_fired) + if(is_banned_chem(chem)) + chem.holder?.del_reagent(chem.type) + return TRUE + return ..() + +// removes banned reagents from the list of reagents that'll be exposed +/datum/species/teratoma/proc/prevent_banned_reagent_exposure(datum/source, list/reagents, datum/reagents/source, methods, volume_modifier, show_message) + SIGNAL_HANDLER + for(var/datum/reagent/reagent as anything in reagents) + if(is_banned_chem(reagent)) + reagents -= reagent + +/datum/species/teratoma/proc/is_banned_chem(reagent) var/static/list/disallowed_chems_typecache if(!disallowed_chems_typecache) disallowed_chems_typecache = typecacheof(list( + /datum/reagent/aslimetoxin, /datum/reagent/cyborg_mutation_nanomachines, /datum/reagent/gluttonytoxin, /datum/reagent/magillitis, + /datum/reagent/mulligan, /datum/reagent/mutationtoxin, /datum/reagent/xenomicrobes, )) - if(is_type_in_typecache(chem, disallowed_chems_typecache)) - chem.holder?.del_reagent(chem.type) - return TRUE - return ..() + return is_type_in_typecache(reagent, disallowed_chems_typecache) /datum/species/teratoma/get_scream_sound(mob/living/carbon/human/monkey) return pick( From a779315f1a98b9935bf09159dada41981d6c00e0 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 16:23:36 -0400 Subject: [PATCH 08/21] bweh --- code/_globalvars/lists/poll_ignore.dm | 2 +- .../code/modules/antagonists/changeling/powers/teratomas.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/lists/poll_ignore.dm b/code/_globalvars/lists/poll_ignore.dm index 3edde6d8ba73..2a7fd69ead2a 100644 --- a/code/_globalvars/lists/poll_ignore.dm +++ b/code/_globalvars/lists/poll_ignore.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list( POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit", POLL_IGNORE_CONSTRUCT = "Construct", POLL_IGNORE_CORTICAL_BORER = "Cortical Borer", // MONKESTATION ADDITION -- CORTICAL_BORERS - POLL_IGNORE_TERATOMA = "Teratoma", // MONKESTATION ADDITION -- CORTICAL_BORERS + POLL_IGNORE_TERATOMA = "Teratoma", // MONKESTATION ADDITION -- TERATOMAS POLL_IGNORE_DRONE = "Drone shells", POLL_IGNORE_FIRE_SHARK = "Fire Shark", POLL_IGNORE_FUGITIVE = "Fugitive Hunter", diff --git a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm index 47b0597c5167..a70dfc6ef4da 100644 --- a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm +++ b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm @@ -1,7 +1,7 @@ /datum/action/changeling/teratoma name = "Birth Teratoma" desc = "Our form divides, creating an egg that will soon hatch into a living tumor, fixated on causing mayhem." - helptext = "The tumor will not be loyal to us or our cause. Costs two changeling absorptions." + helptext = "The tumor will not be loyal to us or our cause. Requires 3 changeling absorptions." button_icon_state = "spread_infestation" chemical_cost = 60 dna_cost = 2 From ce53013afbb51fd229f494ebecce4960142dd2bd Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 16:27:40 -0400 Subject: [PATCH 09/21] bleh bleh bleh --- .../modules/mob/living/carbon/human/species_type/teratoma.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index c9a8692359bb..10cc273b7fca 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -79,7 +79,7 @@ return ..() // removes banned reagents from the list of reagents that'll be exposed -/datum/species/teratoma/proc/prevent_banned_reagent_exposure(datum/source, list/reagents, datum/reagents/source, methods, volume_modifier, show_message) +/datum/species/teratoma/proc/prevent_banned_reagent_exposure(datum/source, list/reagents, datum/reagents/holder, methods, volume_modifier, show_message) SIGNAL_HANDLER for(var/datum/reagent/reagent as anything in reagents) if(is_banned_chem(reagent)) From 38bb783911a55f230a5acec220f0a1818fc1033d Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 17:23:32 -0400 Subject: [PATCH 10/21] no greyscaling them!!! --- .../code/modules/surgery/bodyparts/teratoma_bodyparts.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm index fb45bfc93373..01da36749caf 100644 --- a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm @@ -5,6 +5,7 @@ limb_id = SPECIES_TERATOMA is_dimorphic = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE dmg_overlay_type = "monkey" @@ -15,6 +16,7 @@ limb_id = SPECIES_TERATOMA is_dimorphic = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE dmg_overlay_type = "monkey" @@ -24,6 +26,7 @@ husk_type = "monkey" limb_id = SPECIES_TERATOMA bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE dmg_overlay_type = "monkey" @@ -33,6 +36,7 @@ husk_type = "monkey" limb_id = SPECIES_TERATOMA bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE dmg_overlay_type = "monkey" @@ -42,6 +46,7 @@ husk_type = "monkey" limb_id = SPECIES_TERATOMA bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE footprint_sprite = FOOTPRINT_SPRITE_PAWS /obj/item/bodypart/leg/right/teratoma @@ -50,6 +55,7 @@ husk_type = "monkey" limb_id = SPECIES_TERATOMA bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM + should_draw_greyscale = FALSE footprint_sprite = FOOTPRINT_SPRITE_PAWS dmg_overlay_type = "monkey" From 8c76a21b693fa62efa07dc831e83148c12c5dc75 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 19:28:22 -0400 Subject: [PATCH 11/21] fu89efvuhfveduhjerfverufhjv --- .../modules/surgery/bodyparts/teratoma_bodyparts.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm index 01da36749caf..e88aa252e451 100644 --- a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm @@ -1,5 +1,5 @@ /obj/item/bodypart/head/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA @@ -10,7 +10,7 @@ dmg_overlay_type = "monkey" /obj/item/bodypart/chest/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA @@ -21,7 +21,7 @@ dmg_overlay_type = "monkey" /obj/item/bodypart/arm/left/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA @@ -31,7 +31,7 @@ dmg_overlay_type = "monkey" /obj/item/bodypart/arm/right/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA @@ -41,7 +41,7 @@ dmg_overlay_type = "monkey" /obj/item/bodypart/leg/left/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA @@ -50,7 +50,7 @@ footprint_sprite = FOOTPRINT_SPRITE_PAWS /obj/item/bodypart/leg/right/teratoma - icon_greyscale = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' + icon_static = 'monkestation/icons/mob/species/teratoma/bodyparts.dmi' icon_husk = 'icons/mob/species/monkey/bodyparts.dmi' husk_type = "monkey" limb_id = SPECIES_TERATOMA From 379e195a7c0ab0c061253bffa6fa97ce44cb0216 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 5 Sep 2024 20:17:17 -0400 Subject: [PATCH 12/21] screenshit tests --- ...enshot_humanoids__datum_species_teratoma.png | Bin 855 -> 855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png index a5b17749075e6fc598203fa3f45843dfb9ab06cd..dcc4828cb0f06122d5982808cbf249ab6694c998 100644 GIT binary patch delta 21 dcmcc4cAag4850A;L<=VtO|d6eH`d)`0su_l2b2H+ delta 21 dcmcc4cAag48Pgf#i55;Q2TlZXZ>+n?1OQyo2!8+o From 8eee35bca9c6186e14b46b0ee76368541fecedb3 Mon Sep 17 00:00:00 2001 From: Lucy Date: Sat, 7 Sep 2024 22:41:11 -0400 Subject: [PATCH 13/21] blacklist teratoma parts from bioscrambler --- code/__DEFINES/research/anomalies.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm index b53f5bd1ae98..faf1163efd8a 100644 --- a/code/__DEFINES/research/anomalies.dm +++ b/code/__DEFINES/research/anomalies.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_INIT(bioscrambler_parts_blacklist, typecacheof(list( /obj/item/bodypart/leg/left/monkey, /obj/item/bodypart/leg/right/monkey, /obj/item/bodypart/leg/left/tallboy, - /obj/item/bodypart/leg/right/tallboy + /obj/item/bodypart/leg/right/tallboy, ))) /// Blacklist of limb IDs which should not appear when bioscrambled, mostly because they looks awful and buggy. @@ -32,7 +32,8 @@ GLOBAL_LIST_INIT(bioscrambler_limb_id_blacklist, list( BODYPART_ID_PSYKER, SPECIES_SIMIAN, SPECIES_MONKEY, - SPECIES_GOBLIN + SPECIES_GOBLIN, + SPECIES_TERATOMA, )) /// Blacklist of organs which should not appear when bioscrambled. From 5d7d68a80a0291a4d1cde9f3440578faaab3096b Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 9 Sep 2024 21:30:37 -0400 Subject: [PATCH 14/21] no hair for teratomas (they are cursed to forever be ugly) --- .../code/modules/surgery/bodyparts/teratoma_bodyparts.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm index e88aa252e451..807f413ff393 100644 --- a/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/teratoma_bodyparts.dm @@ -6,6 +6,7 @@ is_dimorphic = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM should_draw_greyscale = FALSE + head_flags = HEAD_LIPS | HEAD_DEBRAIN dmg_overlay_type = "monkey" From fd43651089b0a4f08ffea5652a02afbb62ea4b76 Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 9 Sep 2024 21:36:23 -0400 Subject: [PATCH 15/21] oh shit i forgot to give them the actual antag datum --- .../code/modules/antagonists/changeling/powers/teratomas.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm index a70dfc6ef4da..013f2445a236 100644 --- a/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm +++ b/monkestation/code/modules/antagonists/changeling/powers/teratomas.dm @@ -41,6 +41,9 @@ return FALSE var/mob/living/carbon/human/species/teratoma/goober = new(user.drop_location()) goober.key = candidate.key + if(!goober.mind) + goober.mind_initialize() + goober.mind.add_antag_datum(/datum/antagonist/teratoma) to_chat(goober, span_notice("You burst out from [user]'s chest!")) SEND_SOUND(goober, sound('sound/effects/blobattack.ogg')) return TRUE From 96c7739e50c7708185272d14323e091894f60b5a Mon Sep 17 00:00:00 2001 From: Lucy Date: Wed, 11 Sep 2024 02:29:12 -0400 Subject: [PATCH 16/21] BAZINGA --- .../modules/mob/living/carbon/human/species_type/teratoma.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index 10cc273b7fca..a34c3c15b1cd 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -23,6 +23,7 @@ TRAIT_ILLITERATE, TRAIT_KLEPTOMANIAC, TRAIT_NO_DNA_COPY, + TRAIT_NO_JUMPSUIT, TRAIT_NO_ZOMBIFY, TRAIT_PASSTABLE, TRAIT_PRIMITIVE, @@ -45,7 +46,7 @@ stunmod = 1.4 speedmod = -0.15 // stupid gremlins - no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE + no_equip_flags = ITEM_SLOT_ICLOTHING | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE changesource_flags = MIRROR_BADMIN liked_food = MEAT | BUGS | GORE | GROSS | RAW disliked_food = CLOTH From 91aad01b8557202badc982bb881dfb3430967d4f Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 12 Sep 2024 23:39:06 -0400 Subject: [PATCH 17/21] hacky tm workaround --- .../mob/living/carbon/human/species_type/teratoma.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index a34c3c15b1cd..2dd299680ef1 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -44,7 +44,7 @@ maxhealthmod = 0.75 stunmod = 1.4 - speedmod = -0.15 // stupid gremlins + //speedmod = -0.15 // stupid gremlins no_equip_flags = ITEM_SLOT_ICLOTHING | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE changesource_flags = MIRROR_BADMIN @@ -61,11 +61,16 @@ /datum/species/teratoma/on_species_gain(mob/living/carbon/human/idiot, datum/species/old_species, pref_load) . = ..() +#if defined(TRAIT_FEATHERED) && (defined(SPACEMAN_DMM) || defined(OPENDREAM) || defined(CIBUILDING)) + #warn 3301 has been merged, remove this stupid hacky movespeed modifier +#endif + idiot.add_movespeed_modifier(/datum/movespeed_modifier/teratoma) misfortune = idiot.AddComponent(/datum/component/omen/teratoma) RegisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(prevent_banned_reagent_exposure)) /datum/species/teratoma/on_species_loss(mob/living/carbon/human/idiot, datum/species/new_species, pref_load) . = ..() + idiot.remove_movespeed_modifier(/datum/movespeed_modifier/teratoma) QDEL_NULL(misfortune) UnregisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS) @@ -118,3 +123,7 @@ /mob/living/carbon/human/species/teratoma race = /datum/species/teratoma + +/datum/movespeed_modifier/teratoma + movetypes = ~FLYING + multiplicative_slowdown = -0.15 From 09ceda2791307eb6cd27fc575ebfd7d6fd722ca4 Mon Sep 17 00:00:00 2001 From: Lucy Date: Fri, 13 Sep 2024 01:30:36 -0400 Subject: [PATCH 18/21] fix roundend report --- monkestation/code/modules/antagonists/teratoma/teratoma.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/monkestation/code/modules/antagonists/teratoma/teratoma.dm b/monkestation/code/modules/antagonists/teratoma/teratoma.dm index 3d1dbcc72077..1a70bf7b2895 100644 --- a/monkestation/code/modules/antagonists/teratoma/teratoma.dm +++ b/monkestation/code/modules/antagonists/teratoma/teratoma.dm @@ -2,6 +2,12 @@ name = "Teratomas" member_name = "teratoma" +/datum/team/teratoma/roundend_report() + var/list/parts = list() + parts += span_header("The teratomas were:") + parts += printplayerlist(members) + return "
[parts.Join("
")]
" + /datum/antagonist/teratoma name = "\improper Teratoma" show_in_antagpanel = TRUE From e9424a5212d44676f41f3cb4dd2cb8b85415ca83 Mon Sep 17 00:00:00 2001 From: Lucy Date: Sat, 14 Sep 2024 21:04:28 -0400 Subject: [PATCH 19/21] Ah eto, bleh? --- .../code/modules/antagonists/teratoma/teratoma.dm | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/monkestation/code/modules/antagonists/teratoma/teratoma.dm b/monkestation/code/modules/antagonists/teratoma/teratoma.dm index 1a70bf7b2895..653b291c8461 100644 --- a/monkestation/code/modules/antagonists/teratoma/teratoma.dm +++ b/monkestation/code/modules/antagonists/teratoma/teratoma.dm @@ -2,12 +2,6 @@ name = "Teratomas" member_name = "teratoma" -/datum/team/teratoma/roundend_report() - var/list/parts = list() - parts += span_header("The teratomas were:") - parts += printplayerlist(members) - return "
[parts.Join("
")]
" - /datum/antagonist/teratoma name = "\improper Teratoma" show_in_antagpanel = TRUE @@ -34,13 +28,16 @@ if(!new_team) if(!main_teratoma_team) main_teratoma_team = new - main_teratoma_team.add_objective(/datum/objective/teratoma) + main_teratoma_team.add_objective(new /datum/objective/teratoma) new_team = main_teratoma_team if(!istype(new_team)) stack_trace("Wrong team type passed to [type] initialization.") team = new_team objectives |= team.objectives +/datum/antagonist/teratoma/get_team() + return team + /datum/antagonist/teratoma/get_base_preview_icon() RETURN_TYPE(/icon) var/static/icon/teratoma_icon From 1e264d795a3ebb25f000a163482ec4349ffcd076 Mon Sep 17 00:00:00 2001 From: Lucy Date: Thu, 26 Sep 2024 01:20:46 -0400 Subject: [PATCH 20/21] fix teratoma screenshot test --- ...enshot_humanoids__datum_species_teratoma.png | Bin 855 -> 759 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teratoma.png index dcc4828cb0f06122d5982808cbf249ab6694c998..ffb7cd7284fd82503bcf7d09c00806f9fb25d43c 100644 GIT binary patch delta 610 zcmV-o0-gQW2KNP!Bt<+>OjJd{z`*Cow*T|vl)ttB%rl9JiT~!*u&}VFiFU9$IyE>! z_TJ~}hK3p%Ay!&r=cV#@dxOPt)aJ*v``pT3wX9B&et>@g_(?=TR9J=WR?%+4Fbs?{ zFpJY9>-hhF-8tRRHf$HMH--^Z;_Peew7E;^(SnHnhUc84j9c(1V-J7H`GAj`vDN4N z;t?D<&yP#Mv!0I*e!?y2m2PO^6fgiUEkClH*>2?!EdPjZlVo!;<(^xAr^~GW+O9KN!n!Qg-z|0i{#Uv=wq&0lSA*hmu zPBGaD#AqH1z$mIoz>+Zotbwwyh3BmU^pGt)=_AOi60n(o1$@q+n>Rp4s`{`}O*XFG z&l!sMAYg{H{n()s6rH1kqn0ke4vuOczl9*g(LaB4V!hmj1L7Z7BjNky8P9m=fd0Qn z`1_7QpmS^hRNBrFexB+Z92hxfpffB2AAEuX?-0;YSKu{4d8-cyP852W4Go8I3YR!% zLAPNb1tM=Spk8&G+Zqw9t*Fc!4A9-CqBI=w|5`zV z0a<^FX8$IDY!O2oTlKezsDfZor*NfjO`S`nF?I=*L9SPTzeF{s4K)aMeO3q4G)uFu z2&BUoFdPE8(lr^NZQQS&oQi*9(s1m7GNhTn$?^zuEC4A~KEOI6+at6o-O(;y5+aKc w9yzmt=ng#JW`73reU5tME$)P$@sHyJ0yYv9XEL#3! zj*ye~-sc(`Ay!&rv$L~wcYt?$gHcag5fl_6CMFmh9H*+b)YspMi=yVowfo%4DHi0_ zk!gT`0z*keK~z|U?UvnA<1h?`W7DRKRR65ov`gRrLHEc8ZY(Jb+%W8_g_ilG6U8w; zT9%&{A%w5-7^9c*5$>lb1^pU=!>@Wdp+$*Rv(>bVwt>h+m_eoIi+6)NXaxN<3(tI8>7)aOhFFAylG z$ET73o}hrBr17N|&PZy2nTsM&m=dLgA2N6YC>2dmn=?Ak2@PN=6pjun)mH)eHVJTz z;|_2Sapp^_Exrpx{55ktol%b#CN8nISAn)F6pxYmD#}WzT&}|0m{s+zfE6TJM}sea zm+N-B|Jkk=i*FmMx6R_cgW_}`oE^T(BFek!Yp}P8+3cmRvGN!|s} zeN*}zCWoY<}6pVhknaBVo;)p|HLPHokB-$E=p zC78UTfO`0LVNXHoaV#fN6yUoFrx`a9u>_=eB;{#J5!(W56_;=XIMpUbKl>XryY2H{ z2RtT)sRQZ)EDaQndVLg@#DOJy5}+*SB}1~G68wL=Uaz;iC2+q1Bk5v{7~;&`zU>ag-|YdRE7 Date: Thu, 26 Sep 2024 01:29:46 -0400 Subject: [PATCH 21/21] oops --- .../mob/living/carbon/human/species_type/teratoma.dm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm index 2dd299680ef1..a34c3c15b1cd 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/teratoma.dm @@ -44,7 +44,7 @@ maxhealthmod = 0.75 stunmod = 1.4 - //speedmod = -0.15 // stupid gremlins + speedmod = -0.15 // stupid gremlins no_equip_flags = ITEM_SLOT_ICLOTHING | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE changesource_flags = MIRROR_BADMIN @@ -61,16 +61,11 @@ /datum/species/teratoma/on_species_gain(mob/living/carbon/human/idiot, datum/species/old_species, pref_load) . = ..() -#if defined(TRAIT_FEATHERED) && (defined(SPACEMAN_DMM) || defined(OPENDREAM) || defined(CIBUILDING)) - #warn 3301 has been merged, remove this stupid hacky movespeed modifier -#endif - idiot.add_movespeed_modifier(/datum/movespeed_modifier/teratoma) misfortune = idiot.AddComponent(/datum/component/omen/teratoma) RegisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(prevent_banned_reagent_exposure)) /datum/species/teratoma/on_species_loss(mob/living/carbon/human/idiot, datum/species/new_species, pref_load) . = ..() - idiot.remove_movespeed_modifier(/datum/movespeed_modifier/teratoma) QDEL_NULL(misfortune) UnregisterSignal(idiot, COMSIG_ATOM_EXPOSE_REAGENTS) @@ -123,7 +118,3 @@ /mob/living/carbon/human/species/teratoma race = /datum/species/teratoma - -/datum/movespeed_modifier/teratoma - movetypes = ~FLYING - multiplicative_slowdown = -0.15