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.
This commit is contained in:
DZD
2015-07-12 13:08:56 -04:00
parent 2e2d8794b8
commit 0eeed99460
2 changed files with 29 additions and 14 deletions
+5 -1
View File
@@ -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 << "<span class='warning'>We do not know how to parse this creature's DNA!</span>"
return
if(T.species.flags & NO_BLOOD)
user << "<span class='warning'>We are not able to use the DNA of a creature without a circulatory system.</span>"
return
if(has_dna(target.dna))
user << "<span class='warning'>We already have this DNA in storage!</span>"
@@ -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 << "<span class='warning'>Our sting appears ineffective against its DNA.</span>"
return 0
if(ishuman(target))
@@ -90,20 +90,31 @@
if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly
user << "<span class='warning'>This won't work on a creature with abnormal genetic material.</span>"
return 0
if(H.species.flags & NO_BLOOD)
user << "<span class='warning'>This won't work on a creature without a circulatory system.</span>"
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 << "<span class='notice'>We stealthily sting [target.name].</span>"
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 << "<span class='notice'>Our genes cry out as we sting [target.name]!</span>"
if(iscarbon(target) && (target.status_flags & CANWEAKEN))
var/mob/living/carbon/C = target
C.do_jitter_animation(500)
target.visible_message("<span class='danger'>[target] begins to violenty convulse!</span>","<span class='userdanger'>You feel a tiny prick and a begin to uncontrollably convulse!</span>")
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
*/