From 0eeed994604e16a1a5cee21bc96fb3080ab70fed Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 12 Jul 2015 13:08:56 -0400 Subject: [PATCH] Changeling sting nerfs/changes/tweaks - Prevents transform sting from working on species with NO_BLOOD. - Prevents DNA extraction sting from working on species with NO_BLOOD. - Prevents Plasma Men from being changelings, largely for the same reason Slime People can't be changelings, horribly mutilating people with transform sting. (Alternative way to do this would be for a species check in the DNA sting's Click() proc, which is horrendous because DNA does not contain a species datum, just a string with the species' name.) - Ported some nerfs from tgstation/-tg-station#10482, transform stinging somebody is no longer silent. It won't point you out specifically, but it will create a visible message for everyone in view range, and will make the person jittery. Also forces a cooldown on the use of all changeling powers. - Re-enables cryo sting. This should now be working since mob temperatures were fixed a while ago. --- code/game/gamemodes/changeling/changeling.dm | 6 ++- .../gamemodes/changeling/powers/tiny_prick.dm | 37 ++++++++++++------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 00c199d7332..0b18cbcdde8 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -9,7 +9,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" config_tag = "changeling" restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent") - protected_species = list("Machine", "Slime People") + protected_species = list("Machine", "Slime People", "Plasmaman") required_players = 2 required_players_secret = 10 required_enemies = 1 @@ -304,6 +304,10 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" user << "We do not know how to parse this creature's DNA!" return + if(T.species.flags & NO_BLOOD) + user << "We are not able to use the DNA of a creature without a circulatory system." + return + if(has_dna(target.dna)) user << "We already have this DNA in storage!" diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 0490b00d820..b772cfca49a 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -62,10 +62,11 @@ /obj/effect/proc_holder/changeling/sting/transformation name = "Transformation Sting" desc = "We silently sting a human, injecting a retrovirus that forces them to transform." - helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." + helptext = "The victim will transform much like a changeling would. The effects will be obvious to the victim, and the process will damage our genomes." sting_icon = "sting_transform" chemical_cost = 40 dna_cost = 2 + genetic_damage = 100 var/datum/dna/selected_dna = null /obj/effect/proc_holder/changeling/sting/transformation/Click() @@ -77,12 +78,11 @@ selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") if(!selected_dna) return - ..() /obj/effect/proc_holder/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target) if(!..()) return - if((HUSK in target.mutations) || (!ishuman(target)) ) + if((HUSK in target.mutations) || (!ishuman(target))) user << "Our sting appears ineffective against its DNA." return 0 if(ishuman(target)) @@ -90,20 +90,31 @@ if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly user << "This won't work on a creature with abnormal genetic material." return 0 + if(H.species.flags & NO_BLOOD) + user << "This won't work on a creature without a circulatory system." + return 0 return 1 /obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target) add_logs(target, user, "stung", object="transformation sting", addition=" new identity is [selected_dna.real_name]") var/datum/dna/NewDNA = selected_dna if(issmall(target)) - user << "We stealthily sting [target.name]." - target.dna = NewDNA.Clone() - target.real_name = NewDNA.real_name - var/mob/living/carbon/human/H = target - if(istype(H)) - H.set_species() - target.UpdateAppearance() - domutcheck(target, null) + user << "Our genes cry out as we sting [target.name]!" + + if(iscarbon(target) && (target.status_flags & CANWEAKEN)) + var/mob/living/carbon/C = target + C.do_jitter_animation(500) + + target.visible_message("[target] begins to violenty convulse!","You feel a tiny prick and a begin to uncontrollably convulse!") + + spawn(10) + target.dna = NewDNA.Clone() + target.real_name = NewDNA.real_name + var/mob/living/carbon/human/H = target + if(istype(H)) + H.set_species() + target.UpdateAppearance() + domutcheck(target, null) feedback_add_details("changeling_powers","TS") return 1 @@ -172,7 +183,7 @@ obj/effect/proc_holder/changeling/sting/LSD target.hallucination = max(400, target.hallucination) feedback_add_details("changeling_powers","HS") return 1 -/* + obj/effect/proc_holder/changeling/sting/cryo //Enable when mob cooling is fixed so that frostoil actually makes you cold, instead of mostly just hungry. name = "Cryogenic Sting" desc = "We silently sting a human with a cocktail of chemicals that freeze them." @@ -188,4 +199,4 @@ obj/effect/proc_holder/changeling/sting/cryo //Enable when mob cooling is fixed target.reagents.add_reagent("ice", 30) feedback_add_details("changeling_powers","CS") return 1 -*/ +