mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Merge pull request #4797 from TheDZD/GENETICS-PLAYER-ANGRY-GENTICS-PLAYER-SMASH!!!
Re-Adds Instability
This commit is contained in:
@@ -124,3 +124,8 @@
|
||||
#define NUTRITION_LEVEL_HUNGRY 250
|
||||
#define NUTRITION_LEVEL_STARVING 150
|
||||
|
||||
//Used for calculations for negative effects of having genetics powers
|
||||
#define DEFAULT_GENE_STABILITY 100
|
||||
#define GENE_INSTABILITY_MINOR 5
|
||||
#define GENE_INSTABILITY_MODERATE 10
|
||||
#define GENE_INSTABILITY_MAJOR 15
|
||||
|
||||
@@ -196,7 +196,3 @@
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
// Used below, simple injection modifier.
|
||||
/proc/probinj(var/pr, var/inj)
|
||||
return prob(pr+inj*pr)
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
return 1 // Always set!
|
||||
|
||||
/datum/dna/gene/disability/activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
if(mutation && !(mutation in M.mutations))
|
||||
M.mutations.Add(mutation)
|
||||
if(disability)
|
||||
@@ -35,11 +36,12 @@
|
||||
if(sdisability)
|
||||
M.sdisabilities|=sdisability
|
||||
if(activation_message)
|
||||
to_chat(M, "\red [activation_message]")
|
||||
to_chat(M, "<span class='warning'>[activation_message]</span>")
|
||||
else
|
||||
testing("[name] has no activation message.")
|
||||
|
||||
/datum/dna/gene/disability/deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
if(mutation && (mutation in M.mutations))
|
||||
M.mutations.Remove(mutation)
|
||||
if(disability)
|
||||
@@ -47,7 +49,7 @@
|
||||
if(sdisability)
|
||||
M.sdisabilities &= ~sdisability
|
||||
if(deactivation_message)
|
||||
to_chat(M, "\red [deactivation_message]")
|
||||
to_chat(M, "<span class='warning'>[deactivation_message]</span>")
|
||||
else
|
||||
testing("[name] has no deactivation message.")
|
||||
|
||||
@@ -55,46 +57,51 @@
|
||||
name="Hallucinate"
|
||||
activation_message="Your mind says 'Hello'."
|
||||
deactivation_message ="Sanity returns. Or does it?"
|
||||
instability = -GENE_INSTABILITY_MODERATE
|
||||
mutation=HALLUCINATE
|
||||
|
||||
New()
|
||||
block=HALLUCINATIONBLOCK
|
||||
/datum/dna/gene/disability/hallucinate/New()
|
||||
block=HALLUCINATIONBLOCK
|
||||
|
||||
/datum/dna/gene/disability/epilepsy
|
||||
name="Epilepsy"
|
||||
activation_message="You get a headache."
|
||||
deactivation_message ="Your headache is gone, at last."
|
||||
instability = -GENE_INSTABILITY_MODERATE
|
||||
disability=EPILEPSY
|
||||
|
||||
New()
|
||||
block=EPILEPSYBLOCK
|
||||
/datum/dna/gene/disability/epilepsy/New()
|
||||
block=EPILEPSYBLOCK
|
||||
|
||||
/datum/dna/gene/disability/cough
|
||||
name="Coughing"
|
||||
activation_message="You start coughing."
|
||||
deactivation_message ="Your throat stops aching."
|
||||
instability = -GENE_INSTABILITY_MINOR
|
||||
disability=COUGHING
|
||||
|
||||
New()
|
||||
block=COUGHBLOCK
|
||||
/datum/dna/gene/disability/cough/New()
|
||||
block=COUGHBLOCK
|
||||
|
||||
/datum/dna/gene/disability/clumsy
|
||||
name="Clumsiness"
|
||||
activation_message="You feel lightheaded."
|
||||
deactivation_message ="You regain some control of your movements"
|
||||
instability = -GENE_INSTABILITY_MINOR
|
||||
mutation=CLUMSY
|
||||
|
||||
New()
|
||||
block=CLUMSYBLOCK
|
||||
/datum/dna/gene/disability/clumsy/New()
|
||||
block=CLUMSYBLOCK
|
||||
|
||||
/datum/dna/gene/disability/tourettes
|
||||
name="Tourettes"
|
||||
activation_message="You twitch."
|
||||
deactivation_message ="Your mouth tastes like soap."
|
||||
instability = -GENE_INSTABILITY_MODERATE
|
||||
disability=TOURETTES
|
||||
|
||||
New()
|
||||
block=TWITCHBLOCK
|
||||
/datum/dna/gene/disability/tourettes/New()
|
||||
block=TWITCHBLOCK
|
||||
|
||||
/datum/dna/gene/disability/nervousness
|
||||
name="Nervousness"
|
||||
@@ -102,39 +109,42 @@
|
||||
deactivation_message ="You feel much calmer."
|
||||
disability=NERVOUS
|
||||
|
||||
New()
|
||||
block=NERVOUSBLOCK
|
||||
/datum/dna/gene/disability/nervousness/New()
|
||||
block=NERVOUSBLOCK
|
||||
|
||||
/datum/dna/gene/disability/blindness
|
||||
name="Blindness"
|
||||
activation_message="You can't seem to see anything."
|
||||
deactivation_message ="You can see now, in case you didn't notice..."
|
||||
instability = -GENE_INSTABILITY_MAJOR
|
||||
sdisability=BLIND
|
||||
|
||||
New()
|
||||
block=BLINDBLOCK
|
||||
/datum/dna/gene/disability/blindness/New()
|
||||
block=BLINDBLOCK
|
||||
|
||||
/datum/dna/gene/disability/deaf
|
||||
name="Deafness"
|
||||
activation_message="It's kinda quiet."
|
||||
deactivation_message ="You can hear again!"
|
||||
instability = -GENE_INSTABILITY_MAJOR
|
||||
sdisability=DEAF
|
||||
|
||||
New()
|
||||
block=DEAFBLOCK
|
||||
/datum/dna/gene/disability/deaf/New()
|
||||
block=DEAFBLOCK
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
M.ear_deaf = 1
|
||||
/datum/dna/gene/disability/deaf/activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
M.ear_deaf = 1
|
||||
|
||||
/datum/dna/gene/disability/nearsighted
|
||||
name="Nearsightedness"
|
||||
activation_message="Your eyes feel weird..."
|
||||
deactivation_message ="You can see clearly now"
|
||||
instability = -GENE_INSTABILITY_MODERATE
|
||||
disability=NEARSIGHTED
|
||||
|
||||
New()
|
||||
block=GLASSESBLOCK
|
||||
/datum/dna/gene/disability/nearsighted/New()
|
||||
block=GLASSESBLOCK
|
||||
|
||||
|
||||
/datum/dna/gene/disability/lisp
|
||||
@@ -144,12 +154,12 @@
|
||||
deactivation_message = "You now feel able to pronounce consonants."
|
||||
mutation = LISP
|
||||
|
||||
New()
|
||||
..()
|
||||
block=LISPBLOCK
|
||||
/datum/dna/gene/disability/lisp/New()
|
||||
..()
|
||||
block=LISPBLOCK
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
return replacetext(message,"s","th")
|
||||
/datum/dna/gene/disability/lisp/OnSay(var/mob/M, var/message)
|
||||
return replacetext(message,"s","th")
|
||||
|
||||
/datum/dna/gene/disability/comic
|
||||
name = "Comic"
|
||||
@@ -158,5 +168,5 @@
|
||||
deactivation_message = "Well thank god that's over with."
|
||||
mutation=COMIC
|
||||
|
||||
New()
|
||||
block = COMICBLOCK
|
||||
/datum/dna/gene/disability/comic/New()
|
||||
block = COMICBLOCK
|
||||
|
||||
@@ -23,7 +23,10 @@
|
||||
// Any of a number of GENE_ flags.
|
||||
var/flags=0
|
||||
|
||||
/**
|
||||
// Chance of the gene to cause adverse effects when active
|
||||
var/instability=0
|
||||
|
||||
/*
|
||||
* Is the gene active in this mob's DNA?
|
||||
*/
|
||||
/datum/dna/gene/proc/is_active(var/mob/M)
|
||||
@@ -35,14 +38,16 @@
|
||||
return 0
|
||||
|
||||
// Called when the gene activates. Do your magic here.
|
||||
/datum/dna/gene/proc/activate(var/mob/M, var/connected, var/flags)
|
||||
/datum/dna/gene/proc/activate(var/mob/living/M, var/connected, var/flags)
|
||||
M.gene_stability -= instability
|
||||
return
|
||||
|
||||
/**
|
||||
* Called when the gene deactivates. Undo your magic here.
|
||||
* Only called when the block is deactivated.
|
||||
*/
|
||||
/datum/dna/gene/proc/deactivate(var/mob/M, var/connected, var/flags)
|
||||
/datum/dna/gene/proc/deactivate(var/mob/living/M, var/connected, var/flags)
|
||||
M.gene_stability += instability
|
||||
return
|
||||
|
||||
// This section inspired by goone's bioEffects.
|
||||
@@ -107,16 +112,18 @@
|
||||
if(flags & MUTCHK_FORCED)
|
||||
return 1
|
||||
// Probability check
|
||||
return probinj(activation_prob,(flags&MUTCHK_FORCED))
|
||||
return prob(activation_prob)
|
||||
|
||||
/datum/dna/gene/basic/activate(var/mob/M)
|
||||
..()
|
||||
M.mutations.Add(mutation)
|
||||
if(activation_messages.len)
|
||||
var/msg = pick(activation_messages)
|
||||
to_chat(M, "\blue [msg]")
|
||||
to_chat(M, "<span class='notice'>[msg]</span>")
|
||||
|
||||
/datum/dna/gene/basic/deactivate(var/mob/M)
|
||||
..()
|
||||
M.mutations.Remove(mutation)
|
||||
if(deactivation_messages.len)
|
||||
var/msg = pick(deactivation_messages)
|
||||
to_chat(M, "\red [msg]")
|
||||
to_chat(M, "<span class='warning'>[msg]</span>")
|
||||
|
||||
@@ -12,14 +12,15 @@
|
||||
desc = "Completely shuts down the speech center of the subject's brain."
|
||||
activation_message = "You feel unable to express yourself at all."
|
||||
deactivation_message = "You feel able to speak freely again."
|
||||
instability = -GENE_INSTABILITY_MODERATE
|
||||
sdisability = MUTE
|
||||
|
||||
New()
|
||||
..()
|
||||
block=MUTEBLOCK
|
||||
/datum/dna/gene/disability/mute/New()
|
||||
..()
|
||||
block=MUTEBLOCK
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
return ""
|
||||
/datum/dna/gene/disability/mute/OnSay(var/mob/M, var/message)
|
||||
return ""
|
||||
|
||||
////////////////////////////////////////
|
||||
// Harmful to others as well as self
|
||||
@@ -30,24 +31,35 @@
|
||||
desc = "The subject suffers from constant radiation sickness and causes the same on nearby organics."
|
||||
activation_message = "You feel a strange sickness permeate your whole body."
|
||||
deactivation_message = "You no longer feel awful and sick all over."
|
||||
instability = -GENE_INSTABILITY_MAJOR
|
||||
mutation = RADIOACTIVE
|
||||
|
||||
New()
|
||||
..()
|
||||
block=RADBLOCK
|
||||
/datum/dna/gene/disability/radioactive/New()
|
||||
..()
|
||||
block=RADBLOCK
|
||||
|
||||
OnMobLife(var/mob/living/owner)
|
||||
var/radiation_amount = abs(min(owner.radiation - 20,0))
|
||||
owner.apply_effect(radiation_amount, IRRADIATE)
|
||||
for(var/mob/living/L in range(1, owner))
|
||||
if(L == owner)
|
||||
continue
|
||||
to_chat(L, "<span class='danger'>You are enveloped by a soft green glow emanating from [owner].</span>")
|
||||
L.apply_effect(5, IRRADIATE)
|
||||
return
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "rads[fat]_s"
|
||||
/datum/dna/gene/disability/radioactive/can_activate(var/mob/M,var/flags)
|
||||
if(!..())
|
||||
return 0
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species && H.species.flags & RADIMMUNE && !(flags & MUTCHK_FORCED))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/dna/gene/disability/radioactive/OnMobLife(var/mob/living/owner)
|
||||
var/radiation_amount = abs(min(owner.radiation - 20,0))
|
||||
owner.apply_effect(radiation_amount, IRRADIATE)
|
||||
for(var/mob/living/L in range(1, owner))
|
||||
if(L == owner)
|
||||
continue
|
||||
to_chat(L, "<span class='danger'>You are enveloped by a soft green glow emanating from [owner].</span>")
|
||||
L.apply_effect(5, IRRADIATE)
|
||||
return
|
||||
|
||||
/datum/dna/gene/disability/radioactive/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "rads[fat]_s"
|
||||
|
||||
////////////////////////////////////////
|
||||
// Other disabilities
|
||||
@@ -59,12 +71,12 @@
|
||||
desc = "Greatly slows the subject's metabolism, enabling greater buildup of lipid tissue."
|
||||
activation_message = "You feel blubbery and lethargic!"
|
||||
deactivation_message = "You feel fit!"
|
||||
|
||||
instability = -GENE_INSTABILITY_MINOR
|
||||
mutation = OBESITY
|
||||
|
||||
New()
|
||||
..()
|
||||
block=FATBLOCK
|
||||
/datum/dna/gene/disability/fat/New()
|
||||
..()
|
||||
block=FATBLOCK
|
||||
|
||||
// WAS: /datum/bioEffect/chav
|
||||
/datum/dna/gene/disability/speech/chav
|
||||
@@ -74,36 +86,36 @@
|
||||
deactivation_message = "You no longer feel like being rude and sassy."
|
||||
mutation = CHAV
|
||||
|
||||
New()
|
||||
..()
|
||||
block=CHAVBLOCK
|
||||
/datum/dna/gene/disability/speech/chav/New()
|
||||
..()
|
||||
block=CHAVBLOCK
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
// THIS ENTIRE THING BEGS FOR REGEX
|
||||
message = replacetext(message,"dick","prat")
|
||||
message = replacetext(message,"comdom","knob'ead")
|
||||
message = replacetext(message,"looking at","gawpin' at")
|
||||
message = replacetext(message,"great","bangin'")
|
||||
message = replacetext(message,"man","mate")
|
||||
message = replacetext(message,"friend",pick("mate","bruv","bledrin"))
|
||||
message = replacetext(message,"what","wot")
|
||||
message = replacetext(message,"drink","wet")
|
||||
message = replacetext(message,"get","giz")
|
||||
message = replacetext(message,"what","wot")
|
||||
message = replacetext(message,"no thanks","wuddent fukken do one")
|
||||
message = replacetext(message,"i don't know","wot mate")
|
||||
message = replacetext(message,"no","naw")
|
||||
message = replacetext(message,"robust","chin")
|
||||
message = replacetext(message," hi ","how what how")
|
||||
message = replacetext(message,"hello","sup bruv")
|
||||
message = replacetext(message,"kill","bang")
|
||||
message = replacetext(message,"murder","bang")
|
||||
message = replacetext(message,"windows","windies")
|
||||
message = replacetext(message,"window","windy")
|
||||
message = replacetext(message,"break","do")
|
||||
message = replacetext(message,"your","yer")
|
||||
message = replacetext(message,"security","coppers")
|
||||
return message
|
||||
/datum/dna/gene/disability/speech/chav/OnSay(var/mob/M, var/message)
|
||||
// THIS ENTIRE THING BEGS FOR REGEX
|
||||
message = replacetext(message,"dick","prat")
|
||||
message = replacetext(message,"comdom","knob'ead")
|
||||
message = replacetext(message,"looking at","gawpin' at")
|
||||
message = replacetext(message,"great","bangin'")
|
||||
message = replacetext(message,"man","mate")
|
||||
message = replacetext(message,"friend",pick("mate","bruv","bledrin"))
|
||||
message = replacetext(message,"what","wot")
|
||||
message = replacetext(message,"drink","wet")
|
||||
message = replacetext(message,"get","giz")
|
||||
message = replacetext(message,"what","wot")
|
||||
message = replacetext(message,"no thanks","wuddent fukken do one")
|
||||
message = replacetext(message,"i don't know","wot mate")
|
||||
message = replacetext(message,"no","naw")
|
||||
message = replacetext(message,"robust","chin")
|
||||
message = replacetext(message," hi ","how what how")
|
||||
message = replacetext(message,"hello","sup bruv")
|
||||
message = replacetext(message,"kill","bang")
|
||||
message = replacetext(message,"murder","bang")
|
||||
message = replacetext(message,"windows","windies")
|
||||
message = replacetext(message,"window","windy")
|
||||
message = replacetext(message,"break","do")
|
||||
message = replacetext(message,"your","yer")
|
||||
message = replacetext(message,"security","coppers")
|
||||
return message
|
||||
|
||||
// WAS: /datum/bioEffect/swedish
|
||||
/datum/dna/gene/disability/speech/swedish
|
||||
@@ -113,16 +125,16 @@
|
||||
deactivation_message = "The feeling of Swedishness passes."
|
||||
mutation = SWEDISH
|
||||
|
||||
New()
|
||||
..()
|
||||
block=SWEDEBLOCK
|
||||
/datum/dna/gene/disability/speech/swedish/New()
|
||||
..()
|
||||
block=SWEDEBLOCK
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
// svedish
|
||||
message = replacetext(message,"w","v")
|
||||
if(prob(30))
|
||||
message += " Bork[pick("",", bork",", bork, bork")]!"
|
||||
return message
|
||||
/datum/dna/gene/disability/speech/swedish/OnSay(var/mob/M, var/message)
|
||||
// svedish
|
||||
message = replacetext(message,"w","v")
|
||||
if(prob(30))
|
||||
message += " Bork[pick("",", bork",", bork, bork")]!"
|
||||
return message
|
||||
|
||||
// WAS: /datum/bioEffect/unintelligable
|
||||
/datum/dna/gene/disability/unintelligable
|
||||
@@ -130,34 +142,35 @@
|
||||
desc = "Heavily corrupts the part of the brain responsible for forming spoken sentences."
|
||||
activation_message = "You can't seem to form any coherent thoughts!"
|
||||
deactivation_message = "Your mind feels more clear."
|
||||
instability = -GENE_INSTABILITY_MINOR
|
||||
mutation = SCRAMBLED
|
||||
|
||||
New()
|
||||
..()
|
||||
block=SCRAMBLEBLOCK
|
||||
/datum/dna/gene/disability/unintelligable/New()
|
||||
..()
|
||||
block=SCRAMBLEBLOCK
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
var/prefix=copytext(message,1,2)
|
||||
if(prefix == ";")
|
||||
message = copytext(message,2)
|
||||
else if(prefix in list(":","#"))
|
||||
prefix += copytext(message,2,3)
|
||||
message = copytext(message,3)
|
||||
else
|
||||
prefix=""
|
||||
/datum/dna/gene/disability/unintelligable/OnSay(var/mob/M, var/message)
|
||||
var/prefix=copytext(message,1,2)
|
||||
if(prefix == ";")
|
||||
message = copytext(message,2)
|
||||
else if(prefix in list(":","#"))
|
||||
prefix += copytext(message,2,3)
|
||||
message = copytext(message,3)
|
||||
else
|
||||
prefix=""
|
||||
|
||||
var/list/words = splittext(message," ")
|
||||
var/list/rearranged = list()
|
||||
for(var/i=1;i<=words.len;i++)
|
||||
var/cword = pick(words)
|
||||
words.Remove(cword)
|
||||
var/suffix = copytext(cword,length(cword)-1,length(cword))
|
||||
while(length(cword)>0 && suffix in list(".",",",";","!",":","?"))
|
||||
cword = copytext(cword,1 ,length(cword)-1)
|
||||
suffix = copytext(cword,length(cword)-1,length(cword) )
|
||||
if(length(cword))
|
||||
rearranged += cword
|
||||
return "[prefix][uppertext(jointext(rearranged," "))]!!"
|
||||
var/list/words = splittext(message," ")
|
||||
var/list/rearranged = list()
|
||||
for(var/i=1;i<=words.len;i++)
|
||||
var/cword = pick(words)
|
||||
words.Remove(cword)
|
||||
var/suffix = copytext(cword,length(cword)-1,length(cword))
|
||||
while(length(cword)>0 && suffix in list(".",",",";","!",":","?"))
|
||||
cword = copytext(cword,1 ,length(cword)-1)
|
||||
suffix = copytext(cword,length(cword)-1,length(cword) )
|
||||
if(length(cword))
|
||||
rearranged += cword
|
||||
return "[prefix][uppertext(jointext(rearranged," "))]!!"
|
||||
|
||||
// WAS: /datum/bioEffect/toxic_farts
|
||||
/datum/dna/gene/disability/toxic_farts
|
||||
@@ -165,12 +178,11 @@
|
||||
desc = "Causes the subject's digestion to create a significant amount of noxious gas."
|
||||
activation_message = "Your stomach grumbles unpleasantly."
|
||||
deactivation_message = "Your stomach stops acting up. Phew!"
|
||||
|
||||
mutation = TOXIC_FARTS
|
||||
|
||||
New()
|
||||
..()
|
||||
block=TOXICFARTBLOCK
|
||||
/datum/dna/gene/disability/toxic_farts/New()
|
||||
..()
|
||||
block=TOXICFARTBLOCK
|
||||
|
||||
//////////////////
|
||||
// USELESS SHIT //
|
||||
@@ -183,12 +195,11 @@
|
||||
desc = "Enhances the subject's ability to build and retain heavy muscles."
|
||||
activation_message = "You feel buff!"
|
||||
deactivation_message = "You feel wimpy and weak."
|
||||
|
||||
mutation = STRONG
|
||||
|
||||
New()
|
||||
..()
|
||||
block=STRONGBLOCK
|
||||
/datum/dna/gene/disability/strong/New()
|
||||
..()
|
||||
block=STRONGBLOCK
|
||||
|
||||
// WAS: /datum/bioEffect/horns
|
||||
/datum/dna/gene/disability/horns
|
||||
@@ -198,12 +209,12 @@
|
||||
deactivation_message = "Your horns crumble away into nothing."
|
||||
mutation = HORNS
|
||||
|
||||
New()
|
||||
..()
|
||||
block=HORNSBLOCK
|
||||
/datum/dna/gene/disability/horns/New()
|
||||
..()
|
||||
block=HORNSBLOCK
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "horns_s"
|
||||
/datum/dna/gene/disability/horns/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "horns_s"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// WAS: /datum/bioEffect/immolate
|
||||
@@ -216,9 +227,9 @@
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/immolate
|
||||
|
||||
New()
|
||||
..()
|
||||
block = IMMOLATEBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/immolate/New()
|
||||
..()
|
||||
block = IMMOLATEBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/immolate
|
||||
name = "Incendiary Mitochondria"
|
||||
@@ -241,6 +252,6 @@
|
||||
/obj/effect/proc_holder/spell/targeted/immolate/cast(list/targets)
|
||||
var/mob/living/carbon/L = usr
|
||||
L.adjust_fire_stacks(0.5)
|
||||
L.visible_message("\red <b>[L.name]</b> suddenly bursts into flames!")
|
||||
L.visible_message("<span class='danger'>[L.name]</b> suddenly bursts into flames!</span>")
|
||||
L.IgniteMob()
|
||||
playsound(L.loc, 'sound/effects/bamf.ogg', 50, 0)
|
||||
|
||||
+115
-110
@@ -8,8 +8,8 @@
|
||||
|
||||
mutation=SOBER
|
||||
|
||||
New()
|
||||
block=SOBERBLOCK
|
||||
/datum/dna/gene/basic/sober/New()
|
||||
block=SOBERBLOCK
|
||||
|
||||
//WAS: /datum/bioEffect/psychic_resist
|
||||
/datum/dna/gene/basic/psychic_resist
|
||||
@@ -20,24 +20,26 @@
|
||||
|
||||
mutation=PSY_RESIST
|
||||
|
||||
New()
|
||||
block=PSYRESISTBLOCK
|
||||
/datum/dna/gene/basic/psychic_resist/New()
|
||||
block=PSYRESISTBLOCK
|
||||
|
||||
/////////////////////////
|
||||
// Stealth Enhancers
|
||||
/////////////////////////
|
||||
|
||||
/datum/dna/gene/basic/stealth
|
||||
can_activate(var/mob/M, var/flags)
|
||||
// Can only activate one of these at a time.
|
||||
if(is_type_in_list(/datum/dna/gene/basic/stealth,M.active_genes))
|
||||
testing("Cannot activate [type]: /datum/dna/gene/basic/stealth in M.active_genes.")
|
||||
return 0
|
||||
return ..(M,flags)
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
|
||||
deactivate(var/mob/M)
|
||||
..(M)
|
||||
M.alpha=255
|
||||
/datum/dna/gene/basic/stealth/can_activate(var/mob/M, var/flags)
|
||||
// Can only activate one of these at a time.
|
||||
if(is_type_in_list(/datum/dna/gene/basic/stealth,M.active_genes))
|
||||
testing("Cannot activate [type]: /datum/dna/gene/basic/stealth in M.active_genes.")
|
||||
return 0
|
||||
return ..(M,flags)
|
||||
|
||||
/datum/dna/gene/basic/stealth/deactivate(var/mob/M)
|
||||
..(M)
|
||||
M.alpha=255
|
||||
|
||||
// WAS: /datum/bioEffect/darkcloak
|
||||
/datum/dna/gene/basic/stealth/darkcloak
|
||||
@@ -48,23 +50,23 @@
|
||||
activation_prob=10
|
||||
mutation = CLOAK
|
||||
|
||||
New()
|
||||
block=SHADOWBLOCK
|
||||
/datum/dna/gene/basic/stealth/darkcloak/New()
|
||||
block=SHADOWBLOCK
|
||||
|
||||
OnMobLife(var/mob/M)
|
||||
var/turf/simulated/T = get_turf(M)
|
||||
if(!istype(T))
|
||||
return
|
||||
var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T
|
||||
var/light_available
|
||||
if(L)
|
||||
light_available = L.get_clamped_lum()*10
|
||||
else
|
||||
light_available = 5
|
||||
if(light_available <= 2)
|
||||
M.alpha = round(M.alpha * 0.8)
|
||||
else
|
||||
M.alpha = 255
|
||||
/datum/dna/gene/basic/stealth/darkcloak/OnMobLife(var/mob/M)
|
||||
var/turf/simulated/T = get_turf(M)
|
||||
if(!istype(T))
|
||||
return
|
||||
var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T
|
||||
var/light_available
|
||||
if(L)
|
||||
light_available = L.get_clamped_lum()*10
|
||||
else
|
||||
light_available = 5
|
||||
if(light_available <= 2)
|
||||
M.alpha = round(M.alpha * 0.8)
|
||||
else
|
||||
M.alpha = 255
|
||||
|
||||
//WAS: /datum/bioEffect/chameleon
|
||||
/datum/dna/gene/basic/stealth/chameleon
|
||||
@@ -75,43 +77,43 @@
|
||||
activation_prob=10
|
||||
mutation = CHAMELEON
|
||||
|
||||
New()
|
||||
/datum/dna/gene/basic/stealth/chameleon/New()
|
||||
block=CHAMELEONBLOCK
|
||||
|
||||
OnMobLife(var/mob/M)
|
||||
if((world.time - M.last_movement) >= 30 && !M.stat && M.canmove && !M.restrained())
|
||||
M.alpha -= 25
|
||||
else
|
||||
M.alpha = round(255 * 0.80)
|
||||
/datum/dna/gene/basic/stealth/chameleon/OnMobLife(var/mob/M)
|
||||
if((world.time - M.last_movement) >= 30 && !M.stat && M.canmove && !M.restrained())
|
||||
M.alpha -= 25
|
||||
else
|
||||
M.alpha = round(255 * 0.80)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/dna/gene/basic/grant_spell
|
||||
var/obj/effect/proc_holder/spell/spelltype
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
M.AddSpell(new spelltype(M))
|
||||
..()
|
||||
return 1
|
||||
/datum/dna/gene/basic/grant_spell/activate(var/mob/M, var/connected, var/flags)
|
||||
M.AddSpell(new spelltype(M))
|
||||
..()
|
||||
return 1
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
|
||||
if(istype(S,spelltype))
|
||||
M.spell_list.Remove(S)
|
||||
..()
|
||||
return 1
|
||||
/datum/dna/gene/basic/grant_spell/deactivate(var/mob/M, var/connected, var/flags)
|
||||
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
|
||||
if(istype(S,spelltype))
|
||||
M.spell_list.Remove(S)
|
||||
..()
|
||||
return 1
|
||||
|
||||
/datum/dna/gene/basic/grant_verb
|
||||
var/verbtype
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs += verbtype
|
||||
return 1
|
||||
/datum/dna/gene/basic/grant_verb/activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs += verbtype
|
||||
return 1
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs -= verbtype
|
||||
/datum/dna/gene/basic/grant_verb/deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs -= verbtype
|
||||
|
||||
// WAS: /datum/bioEffect/cryokinesis
|
||||
/datum/dna/gene/basic/grant_spell/cryo
|
||||
@@ -119,13 +121,14 @@
|
||||
desc = "Allows the subject to lower the body temperature of others."
|
||||
activation_messages = list("You notice a strange cold tingle in your fingertips.")
|
||||
deactivation_messages = list("Your fingers feel warmer.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation = CRYO
|
||||
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
|
||||
New()
|
||||
..()
|
||||
block = CRYOBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/cryo/New()
|
||||
..()
|
||||
block = CRYOBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
name = "Cryokinesis"
|
||||
@@ -153,11 +156,11 @@
|
||||
var/mob/living/carbon/C = targets[1]
|
||||
|
||||
if(!iscarbon(C))
|
||||
to_chat(usr, "\red This will only work on normal organic beings.")
|
||||
to_chat(usr, "<span class='warning'>This will only work on normal organic beings.</span>")
|
||||
return
|
||||
|
||||
if (RESIST_COLD in C.mutations)
|
||||
C.visible_message("\red A cloud of fine ice crystals engulfs [C.name], but disappears almost instantly!")
|
||||
C.visible_message("<span class='warning'>A cloud of fine ice crystals engulfs [C.name], but disappears almost instantly!</span>")
|
||||
return
|
||||
var/handle_suit = 0
|
||||
if(ishuman(C))
|
||||
@@ -166,12 +169,12 @@
|
||||
if(istype(H.wear_suit, /obj/item/clothing/suit/space))
|
||||
handle_suit = 1
|
||||
if(H.internal)
|
||||
H.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [H]!",
|
||||
H.visible_message("<span class='warning'>[usr] sprays a cloud of fine ice crystals, engulfing [H]!</span>",
|
||||
"<span class='notice'>[usr] sprays a cloud of fine ice crystals over your [H.head]'s visor.</span>")
|
||||
log_admin("[key_name(usr)] has used cryokinesis on [key_name(C)] while wearing internals and a suit")
|
||||
msg_admin_attack("[key_name_admin(usr)] has cast cryokinesis on [key_name_admin(C)]")
|
||||
else
|
||||
H.visible_message("\red [usr] sprays a cloud of fine ice crystals engulfing, [H]!",
|
||||
H.visible_message("<span class='warning'>[usr] sprays a cloud of fine ice crystals engulfing, [H]!</span>",
|
||||
"<span class='warning'>[usr] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.</span>")
|
||||
log_admin("[key_name(usr)] has used cryokinesis on [key_name(C)]")
|
||||
msg_admin_attack("[key_name_admin(usr)] has cast cryokinesis on [key_name_admin(C)]")
|
||||
@@ -200,12 +203,12 @@
|
||||
desc = ""
|
||||
//layer = 15
|
||||
|
||||
New(var/atom/location, var/icon/I, var/duration = 20, var/oname = "something")
|
||||
src.name = oname
|
||||
loc=location
|
||||
src.icon = I
|
||||
spawn(duration)
|
||||
qdel(src)
|
||||
/obj/effect/self_deleting/New(var/atom/location, var/icon/I, var/duration = 20, var/oname = "something")
|
||||
src.name = oname
|
||||
loc=location
|
||||
src.icon = I
|
||||
spawn(duration)
|
||||
qdel(src)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -215,13 +218,14 @@
|
||||
desc = "Allows the subject to eat just about anything without harm."
|
||||
activation_messages = list("You feel hungry.")
|
||||
deactivation_messages = list("You don't feel quite so hungry anymore.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation = EATER
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/eat
|
||||
|
||||
New()
|
||||
..()
|
||||
block = EATBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/mattereater/New()
|
||||
..()
|
||||
block = EATBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat
|
||||
name = "Eat"
|
||||
@@ -356,13 +360,14 @@
|
||||
//cooldown = 30
|
||||
activation_messages = list("Your leg muscles feel taut and strong.")
|
||||
deactivation_messages = list("Your leg muscles shrink back to normal.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation = JUMPY
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/leap
|
||||
|
||||
New()
|
||||
..()
|
||||
block = JUMPBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/jumpy/New()
|
||||
..()
|
||||
block = JUMPBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/leap
|
||||
name = "Jump"
|
||||
@@ -383,12 +388,10 @@
|
||||
/obj/effect/proc_holder/spell/targeted/leap/cast(list/targets)
|
||||
var/failure = 0
|
||||
if (istype(usr.loc,/mob/) || usr.lying || usr.stunned || usr.buckled || usr.stat)
|
||||
to_chat(usr, "\red You can't jump right now!")
|
||||
to_chat(usr, "<span class='warning'>You can't jump right now!</span>")
|
||||
return
|
||||
|
||||
if (istype(usr.loc,/turf/))
|
||||
|
||||
|
||||
if(usr.restrained())//Why being pulled while cuffed prevents you from moving
|
||||
for(var/mob/M in range(usr, 1))
|
||||
if(M.pulling == usr)
|
||||
@@ -400,12 +403,12 @@
|
||||
if(usr.pinned.len)
|
||||
failure = 1
|
||||
|
||||
usr.visible_message("\red <b>[usr.name]</b> takes a huge leap!")
|
||||
usr.visible_message("<span class='danger'>[usr.name]</b> takes a huge leap!</span>")
|
||||
playsound(usr.loc, 'sound/weapons/thudswoosh.ogg', 50, 1)
|
||||
if(failure)
|
||||
usr.Weaken(5)
|
||||
usr.Stun(5)
|
||||
usr.visible_message("<span class='warning'> \the [usr] attempts to leap away but is slammed back down to the ground!</span>",
|
||||
usr.visible_message("<span class='warning'>[usr] attempts to leap away but is slammed back down to the ground!</span>",
|
||||
"<span class='warning'>You attempt to leap away but are suddenly slammed back down to the ground!</span>",
|
||||
"<span class='notice'>You hear the flexing of powerful muscles and suddenly a crash as a body hits the floor.</span>")
|
||||
return 0
|
||||
@@ -422,7 +425,7 @@
|
||||
usr.flying = prevFlying
|
||||
|
||||
if (FAT in usr.mutations && prob(66))
|
||||
usr.visible_message("\red <b>[usr.name]</b> crashes due to their heavy weight!")
|
||||
usr.visible_message("<span class='danger'>[usr.name]</b> crashes due to their heavy weight!</span>")
|
||||
//playsound(usr.loc, 'zhit.wav', 50, 1)
|
||||
usr.AdjustWeakened(10)
|
||||
usr.AdjustStunned(5)
|
||||
@@ -431,10 +434,10 @@
|
||||
|
||||
if (istype(usr.loc,/obj/))
|
||||
var/obj/container = usr.loc
|
||||
to_chat(usr, "\red You leap and slam your head against the inside of [container]! Ouch!")
|
||||
to_chat(usr, "<span class='warning'>You leap and slam your head against the inside of [container]! Ouch!</span>")
|
||||
usr.AdjustParalysis(3)
|
||||
usr.AdjustWeakened(5)
|
||||
container.visible_message("\red <b>[usr.loc]</b> emits a loud thump and rattles a bit.")
|
||||
container.visible_message("<span class='danger'>[usr.loc]</b> emits a loud thump and rattles a bit.</span>")
|
||||
playsound(usr.loc, 'sound/effects/bang.ogg', 50, 1)
|
||||
var/wiggle = 6
|
||||
while(wiggle > 0)
|
||||
@@ -460,11 +463,12 @@
|
||||
//cooldown = 1800
|
||||
activation_messages = list("You don't feel entirely like yourself somehow.")
|
||||
deactivation_messages = list("You feel secure in your identity.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation = POLYMORPH
|
||||
|
||||
New()
|
||||
..()
|
||||
block = POLYMORPHBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/polymorph/New()
|
||||
..()
|
||||
block = POLYMORPHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph
|
||||
name = "Polymorph"
|
||||
@@ -483,13 +487,13 @@
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph/cast(list/targets)
|
||||
var/mob/living/M=targets[1]
|
||||
if(!ishuman(M))
|
||||
to_chat(usr, "\red You can only change your appearance to that of another human.")
|
||||
to_chat(usr, "<span class='warning'>You can only change your appearance to that of another human.</span>")
|
||||
return
|
||||
|
||||
if(!ishuman(usr))
|
||||
return
|
||||
|
||||
usr.visible_message("\red [usr]'s body shifts and contorts.")
|
||||
usr.visible_message("<span class='warning'>[usr]'s body shifts and contorts.</span>")
|
||||
|
||||
spawn(10)
|
||||
if(M && usr)
|
||||
@@ -510,11 +514,12 @@
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/empath
|
||||
activation_messages = list("You suddenly notice more about others than you did before.")
|
||||
deactivation_messages = list("You no longer feel able to sense intentions.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=EMPATH
|
||||
|
||||
New()
|
||||
..()
|
||||
block = EMPATHBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/empath/New()
|
||||
..()
|
||||
block = EMPATHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/empath
|
||||
name = "Read Mind"
|
||||
@@ -544,21 +549,21 @@
|
||||
|
||||
for(var/mob/living/carbon/M in targets)
|
||||
if(!iscarbon(M))
|
||||
to_chat(usr, "\red You may only use this on other organic beings.")
|
||||
to_chat(usr, "<span class='warning'>You may only use this on other organic beings.</span>")
|
||||
return
|
||||
|
||||
if (PSY_RESIST in M.mutations)
|
||||
to_chat(usr, "\red You can't see into [M.name]'s mind at all!")
|
||||
to_chat(usr, "<span class='warning'>You can't see into [M.name]'s mind at all!</span>")
|
||||
return
|
||||
|
||||
if (M.stat == 2)
|
||||
to_chat(usr, "\red [M.name] is dead and cannot have their mind read.")
|
||||
to_chat(usr, "<span class='warning'>[M.name] is dead and cannot have their mind read.</span>")
|
||||
return
|
||||
if (M.health < 0)
|
||||
to_chat(usr, "\red [M.name] is dying, and their thoughts are too scrambled to read.")
|
||||
to_chat(usr, "<span class='warning'>[M.name] is dying, and their thoughts are too scrambled to read.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "\blue Mind Reading of [M.name]:</b>")
|
||||
to_chat(usr, "<span class='notice'>Mind Reading of <b>[M.name]:</b></span>")
|
||||
var/pain_condition = M.health
|
||||
// lower health means more pain
|
||||
var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
|
||||
@@ -575,33 +580,33 @@
|
||||
|
||||
switch(pain_condition)
|
||||
if (81 to INFINITY)
|
||||
to_chat(usr, "\blue <b>Condition</b>: [M.name] feels good.")
|
||||
to_chat(usr, "<span class='notice'><b>Condition</b>: [M.name] feels good.</span>")
|
||||
if (61 to 80)
|
||||
to_chat(usr, "\blue <b>Condition</b>: [M.name] is suffering mild pain.")
|
||||
to_chat(usr, "<span class='notice'><b>Condition</b>: [M.name] is suffering mild pain.</span>")
|
||||
if (41 to 60)
|
||||
to_chat(usr, "\blue <b>Condition</b>: [M.name] is suffering significant pain.")
|
||||
to_chat(usr, "<span class='notice'><b>Condition</b>: [M.name] is suffering significant pain.</span>")
|
||||
if (21 to 40)
|
||||
to_chat(usr, "\blue <b>Condition</b>: [M.name] is suffering severe pain.")
|
||||
to_chat(usr, "<span class='notice'><b>Condition</b>: [M.name] is suffering severe pain.</span>")
|
||||
else
|
||||
to_chat(usr, "\blue <b>Condition</b>: [M.name] is suffering excruciating pain.")
|
||||
to_chat(usr, "<span class='notice'><b>Condition</b>: [M.name] is suffering excruciating pain.</span>")
|
||||
thoughts = "haunted by their own mortality"
|
||||
|
||||
switch(M.a_intent)
|
||||
if (I_HELP)
|
||||
to_chat(usr, "\blue <b>Mood</b>: You sense benevolent thoughts from [M.name].")
|
||||
to_chat(usr, "<span class='notice'><b>Mood</b>: You sense benevolent thoughts from [M.name].</span>")
|
||||
if (I_DISARM)
|
||||
to_chat(usr, "\blue <b>Mood</b>: You sense cautious thoughts from [M.name].")
|
||||
to_chat(usr, "<span class='notice'><b>Mood</b>: You sense cautious thoughts from [M.name].</span>")
|
||||
if (I_GRAB)
|
||||
to_chat(usr, "\blue <b>Mood</b>: You sense hostile thoughts from [M.name].")
|
||||
to_chat(usr, "<span class='notice'><b>Mood</b>: You sense hostile thoughts from [M.name].</span>")
|
||||
if (I_HARM)
|
||||
to_chat(usr, "\blue <b>Mood</b>: You sense cruel thoughts from [M.name].")
|
||||
to_chat(usr, "<span class='notice'><b>Mood</b>: You sense cruel thoughts from [M.name].</span>")
|
||||
for(var/mob/living/L in view(7,M))
|
||||
if (L == M)
|
||||
continue
|
||||
thoughts = "thinking about punching [L.name]"
|
||||
break
|
||||
else
|
||||
to_chat(usr, "\blue <b>Mood</b>: You sense strange thoughts from [M.name].")
|
||||
to_chat(usr, "<span class='notice'><b>Mood</b>: You sense strange thoughts from [M.name].</span>")
|
||||
|
||||
if (istype(M,/mob/living/carbon/human))
|
||||
var/numbers[0]
|
||||
@@ -610,13 +615,13 @@
|
||||
numbers += H.mind.initial_account.account_number
|
||||
numbers += H.mind.initial_account.remote_access_pin
|
||||
if(numbers.len>0)
|
||||
to_chat(usr, "\blue <b>Numbers</b>: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].")
|
||||
to_chat(usr, "\blue <b>Thoughts</b>: [M.name] is currently [thoughts].")
|
||||
to_chat(usr, "<span class='notice'>b>Numbers</b>: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].</span>")
|
||||
to_chat(usr, "<span class='notice'><b>Thoughts</b>: [M.name] is currently [thoughts].</span>")
|
||||
|
||||
if (EMPATH in M.mutations)
|
||||
to_chat(M, "\red You sense [usr.name] reading your mind.")
|
||||
to_chat(M, "<span class='warning'>You sense [usr.name] reading your mind.</span>")
|
||||
else if (prob(5) || M.mind.assigned_role=="Chaplain")
|
||||
to_chat(M, "\red You sense someone intruding upon your thoughts...")
|
||||
to_chat(M, "<span class='warning'>You sense someone intruding upon your thoughts...</span>")
|
||||
return
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@@ -627,13 +632,13 @@
|
||||
desc = "Vastly increases the gas capacity of the subject's digestive tract."
|
||||
activation_messages = list("You feel bloated and gassy.")
|
||||
deactivation_messages = list("You no longer feel gassy. What a relief!")
|
||||
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation = SUPER_FART
|
||||
spelltype = /obj/effect/proc_holder/spell/aoe_turf/superfart
|
||||
|
||||
New()
|
||||
..()
|
||||
block = SUPERFARTBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/superfart/New()
|
||||
..()
|
||||
block = SUPERFARTBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/superfart
|
||||
name = "Super Fart"
|
||||
|
||||
@@ -6,151 +6,171 @@
|
||||
name="No Breathing"
|
||||
activation_messages=list("You feel no need to breathe.")
|
||||
deactivation_messages=list("You feel the need to breathe, once more.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation=NO_BREATH
|
||||
activation_prob=10
|
||||
|
||||
New()
|
||||
block=NOBREATHBLOCK
|
||||
/datum/dna/gene/basic/nobreath/New()
|
||||
block=NOBREATHBLOCK
|
||||
|
||||
|
||||
/datum/dna/gene/basic/regenerate
|
||||
name="Regenerate"
|
||||
activation_messages=list("Your wounds start healing.")
|
||||
deactivation_messages=list("Your regenerative powers feel like they've vanished.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=REGEN
|
||||
|
||||
New()
|
||||
block=REGENERATEBLOCK
|
||||
/datum/dna/gene/basic/regenerate/New()
|
||||
block=REGENERATEBLOCK
|
||||
|
||||
/datum/dna/gene/basic/increaserun
|
||||
name="Super Speed"
|
||||
activation_messages=list("You feel swift and unencumbered.")
|
||||
deactivation_messages=list("You feel slow.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=RUN
|
||||
|
||||
New()
|
||||
block=INCREASERUNBLOCK
|
||||
/datum/dna/gene/basic/increaserun/New()
|
||||
block=INCREASERUNBLOCK
|
||||
|
||||
/datum/dna/gene/basic/increaserun/can_activate(var/mob/M,var/flags)
|
||||
if(!..())
|
||||
return 0
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species && H.species.slowdown && !(flags & MUTCHK_FORCED))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/dna/gene/basic/heat_resist
|
||||
name="Heat Resistance"
|
||||
activation_messages=list("Your skin is icy to the touch.")
|
||||
deactivation_messages=list("Your skin no longer feels icy to the touch.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation=RESIST_HEAT
|
||||
|
||||
New()
|
||||
block=COLDBLOCK
|
||||
/datum/dna/gene/basic/heat_resist/New()
|
||||
block=COLDBLOCK
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "cold[fat]_s"
|
||||
/datum/dna/gene/basic/heat_resist/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "cold[fat]_s"
|
||||
|
||||
/datum/dna/gene/basic/cold_resist
|
||||
name="Cold Resistance"
|
||||
activation_messages=list("Your body is filled with warmth.")
|
||||
deactivation_messages=list("Your body is no longer filled with warmth.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation=RESIST_COLD
|
||||
|
||||
New()
|
||||
block=FIREBLOCK
|
||||
/datum/dna/gene/basic/cold_resist/New()
|
||||
block=FIREBLOCK
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "fire[fat]_s"
|
||||
/datum/dna/gene/basic/cold_resist/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "fire[fat]_s"
|
||||
|
||||
/datum/dna/gene/basic/noprints
|
||||
name="No Prints"
|
||||
activation_messages=list("Your fingers feel numb.")
|
||||
deactivation_messages=list("your fingers no longer feel numb.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=FINGERPRINTS
|
||||
|
||||
New()
|
||||
block=NOPRINTSBLOCK
|
||||
/datum/dna/gene/basic/noprints/New()
|
||||
block=NOPRINTSBLOCK
|
||||
|
||||
/datum/dna/gene/basic/noshock
|
||||
name="Shock Immunity"
|
||||
activation_messages=list("Your skin feels dry and unreactive.")
|
||||
deactivation_messages=list("Your skin no longer feels dry and unreactive.")
|
||||
instability = GENE_INSTABILITY_MODERATE
|
||||
mutation=NO_SHOCK
|
||||
|
||||
New()
|
||||
block=SHOCKIMMUNITYBLOCK
|
||||
/datum/dna/gene/basic/noshock/New()
|
||||
block=SHOCKIMMUNITYBLOCK
|
||||
|
||||
/datum/dna/gene/basic/midget
|
||||
name="Midget"
|
||||
activation_messages=list("Everything around you seems bigger now...")
|
||||
deactivation_messages = list("Everything around you seems to shrink...")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=DWARF
|
||||
|
||||
New()
|
||||
block=SMALLSIZEBLOCK
|
||||
/datum/dna/gene/basic/midget/New()
|
||||
block=SMALLSIZEBLOCK
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
M.pass_flags |= PASSTABLE
|
||||
M.resize = 0.8
|
||||
/datum/dna/gene/basic/midget/activate(var/mob/M, var/connected, var/flags)
|
||||
..(M,connected,flags)
|
||||
M.pass_flags |= PASSTABLE
|
||||
M.resize = 0.8
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.pass_flags &= ~PASSTABLE
|
||||
M.resize = 1.25
|
||||
/datum/dna/gene/basic/midget/deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.pass_flags &= ~PASSTABLE
|
||||
M.resize = 1.25
|
||||
|
||||
// OLD HULK BEHAVIOR
|
||||
/datum/dna/gene/basic/hulk
|
||||
name="Hulk"
|
||||
activation_messages=list("Your muscles hurt.")
|
||||
deactivation_messages=list("Your muscles shrink.")
|
||||
instability = GENE_INSTABILITY_MAJOR
|
||||
mutation=HULK
|
||||
activation_prob=5
|
||||
|
||||
New()
|
||||
block=HULKBLOCK
|
||||
/datum/dna/gene/basic/hulk/New()
|
||||
block=HULKBLOCK
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH
|
||||
M.status_flags &= ~status
|
||||
/datum/dna/gene/basic/hulk/activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH
|
||||
M.status_flags &= ~status
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH
|
||||
/datum/dna/gene/basic/hulk/deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
if(HULK in M.mutations)
|
||||
if(fat)
|
||||
return "hulk_[fat]_s"
|
||||
else
|
||||
return "hulk_[g]_s"
|
||||
return 0
|
||||
/datum/dna/gene/basic/hulk/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
if(HULK in M.mutations)
|
||||
if(fat)
|
||||
return "hulk_[fat]_s"
|
||||
else
|
||||
return "hulk_[g]_s"
|
||||
return 0
|
||||
|
||||
OnMobLife(var/mob/living/carbon/human/M)
|
||||
if(!istype(M)) return
|
||||
if ((HULK in M.mutations) && M.health <= 0)
|
||||
M.mutations.Remove(HULK)
|
||||
M.dna.SetSEState(HULKBLOCK,0)
|
||||
genemutcheck(M, HULKBLOCK,null,MUTCHK_FORCED)
|
||||
M.update_mutations() //update our mutation overlays
|
||||
M.update_body()
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH //temporary fix until the problem can be solved.
|
||||
to_chat(M, "<span class='danger'>You suddenly feel very weak.</span>")
|
||||
/datum/dna/gene/basic/hulk/OnMobLife(var/mob/living/carbon/human/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
if ((HULK in M.mutations) && M.health <= 0)
|
||||
M.mutations.Remove(HULK)
|
||||
M.dna.SetSEState(HULKBLOCK,0)
|
||||
genemutcheck(M, HULKBLOCK,null,MUTCHK_FORCED)
|
||||
M.update_mutations() //update our mutation overlays
|
||||
M.update_body()
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH //temporary fix until the problem can be solved.
|
||||
to_chat(M, "<span class='danger'>You suddenly feel very weak.</span>")
|
||||
|
||||
/datum/dna/gene/basic/xray
|
||||
name="X-Ray Vision"
|
||||
activation_messages=list("The walls suddenly disappear.")
|
||||
deactivation_messages=list("the walls around you re-appear.")
|
||||
instability = GENE_INSTABILITY_MAJOR
|
||||
mutation=XRAY
|
||||
activation_prob=10
|
||||
|
||||
New()
|
||||
block=XRAYBLOCK
|
||||
/datum/dna/gene/basic/xray/New()
|
||||
block=XRAYBLOCK
|
||||
|
||||
/datum/dna/gene/basic/tk
|
||||
name="Telekenesis"
|
||||
activation_messages = list("You feel smarter.")
|
||||
deactivation_messages = list("You feel dumber.")
|
||||
instability = GENE_INSTABILITY_MAJOR
|
||||
mutation=TK
|
||||
activation_prob=10
|
||||
|
||||
New()
|
||||
block=TELEBLOCK
|
||||
/datum/dna/gene/basic/tk/New()
|
||||
block=TELEBLOCK
|
||||
|
||||
OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "telekinesishead[fat]_s"
|
||||
/datum/dna/gene/basic/tk/OnDrawUnderlays(var/mob/M,var/g,var/fat)
|
||||
return "telekinesishead[fat]_s"
|
||||
|
||||
@@ -6,31 +6,33 @@
|
||||
deactivation_message = "You feel like being quiet.."
|
||||
mutation = LOUD
|
||||
|
||||
New()
|
||||
..()
|
||||
block=LOUDBLOCK
|
||||
/datum/dna/gene/disability/speech/loud/New()
|
||||
..()
|
||||
block=LOUDBLOCK
|
||||
|
||||
|
||||
|
||||
OnSay(var/mob/M, var/message)
|
||||
message = replacetext(message,".","!")
|
||||
message = replacetext(message,"?","?!")
|
||||
message = replacetext(message,"!","!!")
|
||||
return uppertext(message)
|
||||
/datum/dna/gene/disability/speech/loud/OnSay(var/mob/M, var/message)
|
||||
message = replacetext(message,".","!")
|
||||
message = replacetext(message,"?","?!")
|
||||
message = replacetext(message,"!","!!")
|
||||
return uppertext(message)
|
||||
|
||||
/datum/dna/gene/disability/dizzy
|
||||
name = "Dizzy"
|
||||
desc = "Causes the cerebellum to shut down in some places."
|
||||
activation_message = "You feel very dizzy..."
|
||||
deactivation_message = "You regain your balance."
|
||||
instability = -GENE_INSTABILITY_MINOR
|
||||
mutation = DIZZY
|
||||
|
||||
New()
|
||||
..()
|
||||
block=DIZZYBLOCK
|
||||
/datum/dna/gene/disability/dizzy/New()
|
||||
..()
|
||||
block=DIZZYBLOCK
|
||||
|
||||
|
||||
OnMobLife(var/mob/living/carbon/human/M)
|
||||
if(!istype(M)) return
|
||||
if(DIZZY in M.mutations)
|
||||
M.Dizzy(300)
|
||||
/datum/dna/gene/disability/dizzy/OnMobLife(var/mob/living/carbon/human/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
if(DIZZY in M.mutations)
|
||||
M.Dizzy(300)
|
||||
|
||||
@@ -3,17 +3,15 @@
|
||||
/datum/dna/gene/basic/grant_spell/morph
|
||||
name = "Morphism"
|
||||
desc = "Enables the subject to reconfigure their appearance to that of any human."
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/morph
|
||||
activation_messages=list("Your body feels if can alter its appearance.")
|
||||
deactivation_messages = list("Your body doesn't feel capable of altering its appearance.")
|
||||
|
||||
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=MORPH
|
||||
|
||||
New()
|
||||
..()
|
||||
block = MORPHBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/morph/New()
|
||||
..()
|
||||
block = MORPHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/morph
|
||||
name = "Morph"
|
||||
@@ -34,7 +32,7 @@
|
||||
if(!ishuman(usr)) return
|
||||
|
||||
if (istype(usr.loc,/mob/))
|
||||
to_chat(usr, "\red You can't change your appearance right now!")
|
||||
to_chat(usr, "<span class='warning'>You can't change your appearance right now!</span>")
|
||||
return
|
||||
var/mob/living/carbon/human/M=usr
|
||||
var/obj/item/organ/external/head/head_organ = M.get_organ("head")
|
||||
@@ -146,19 +144,20 @@
|
||||
M.regenerate_icons()
|
||||
M.update_dna()
|
||||
|
||||
M.visible_message("\blue \The [src] morphs and changes [M.get_visible_gender() == MALE ? "his" : M.get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
|
||||
M.visible_message("<span class='notice'>[src] morphs and changes [M.get_visible_gender() == MALE ? "his" : M.get_visible_gender() == FEMALE ? "her" : "their"] appearance!</span>", "<span class='notice'>You change your appearance!</span>", "<span class='warning'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</span>")
|
||||
|
||||
/datum/dna/gene/basic/grant_spell/remotetalk
|
||||
name="Telepathy"
|
||||
activation_messages=list("You feel you can project your thoughts.")
|
||||
deactivation_messages=list("You no longer feel you can project your thoughts.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=REMOTE_TALK
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/remotetalk
|
||||
|
||||
New()
|
||||
..()
|
||||
block=REMOTETALKBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/remotetalk/New()
|
||||
..()
|
||||
block=REMOTETALKBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remotetalk
|
||||
name = "Project Mind"
|
||||
@@ -206,10 +205,10 @@
|
||||
for(var/mob/living/target in targets)
|
||||
log_say("Project Mind: [key_name(usr)]->[key_name(target)]: [say]")
|
||||
if(REMOTE_TALK in target.mutations)
|
||||
target.show_message("\blue You hear [usr.real_name]'s voice: [say]")
|
||||
target.show_message("<span class='notice'>You hear [usr.real_name]'s voice: [say]</span>")
|
||||
else
|
||||
target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
|
||||
usr.show_message("\blue You project your mind into [target.real_name]: [say]")
|
||||
target.show_message("<span class='notice'>You hear a voice that seems to echo around the room: [say]</span>")
|
||||
usr.show_message("<span class='notice'>You project your mind into [target.real_name]: [say]</span>")
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
G.show_message("<i>Telepathic message from <b>[usr]</b> ([ghost_follow_link(usr, ghost=G)]) to <b>[target]</b> ([ghost_follow_link(target, ghost=G)]): [say]</i>")
|
||||
|
||||
@@ -217,12 +216,13 @@
|
||||
name="Remote Viewing"
|
||||
activation_messages=list("Your mind can see things from afar.")
|
||||
deactivation_messages=list("Your mind can no longer can see things from afar.")
|
||||
instability = GENE_INSTABILITY_MINOR
|
||||
mutation=REMOTE_VIEW
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/remoteview
|
||||
|
||||
New()
|
||||
block=REMOTEVIEWBLOCK
|
||||
/datum/dna/gene/basic/grant_spell/remoteview/New()
|
||||
block=REMOTEVIEWBLOCK
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/remoteview
|
||||
@@ -262,7 +262,7 @@
|
||||
var/mob/target
|
||||
|
||||
if(istype(user.l_hand, /obj/item/tk_grab) || istype(user.r_hand, /obj/item/tk_grab/))
|
||||
to_chat(user, "\red Your mind is too busy with that telekinetic grab.")
|
||||
to_chat(user, "<span class='warning'>Your mind is too busy with that telekinetic grab.</span>")
|
||||
user.remoteview_target = null
|
||||
user.reset_view(0)
|
||||
return
|
||||
@@ -285,5 +285,3 @@
|
||||
else
|
||||
user.remoteview_target = null
|
||||
user.reset_view(0)
|
||||
|
||||
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
to_chat(wizard_mob, "In your pockets you will find a teleport scroll. Use it as needed.")
|
||||
wizard_mob.mind.store_memory("<B>Remember:</B> do not forget to prepare your spells.")
|
||||
wizard_mob.update_icons()
|
||||
wizard_mob.gene_stability += DEFAULT_GENE_STABILITY //magic
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ REAGENT SCANNER
|
||||
for(var/datum/wound/W in e.wounds) if(W.internal)
|
||||
user.show_message(text("\red Internal bleeding detected. Advanced scanner required for location."), 1)
|
||||
break
|
||||
if(M:vessel)
|
||||
if(H.vessel)
|
||||
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
|
||||
var/blood_percent = blood_volume / 560
|
||||
blood_percent *= 100
|
||||
@@ -246,7 +246,14 @@ REAGENT SCANNER
|
||||
if(implant_detect)
|
||||
user.show_message("<span class='notice'>Detected cybernetic modifications:</span>")
|
||||
user.show_message("<span class='notice'>[implant_detect]</span>")
|
||||
|
||||
if(H.gene_stability < 40)
|
||||
user.show_message("<span class='userdanger'>Subject's genes are quickly breaking down!</span>")
|
||||
else if(H.gene_stability < 70)
|
||||
user.show_message("<span class='danger'>Subject's genes are showing signs of spontenous breakdown.</span>")
|
||||
else if(H.gene_stability < 85)
|
||||
user.show_message("<span class='warning'>Subject's genes are showing minor signs of instability.</span>")
|
||||
else
|
||||
user.show_message("<span class='notice'>Subject's genes are stable.</span>")
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -523,4 +530,3 @@ REAGENT SCANNER
|
||||
if (T.cores > 1)
|
||||
user.show_message("Anomalious slime core amount detected", 1)
|
||||
user.show_message("Growth progress: [T.amount_grown]/10", 1)
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
M.dna.UpdateSE()
|
||||
else
|
||||
M.dna.SetSEValue(block,src.GetValue())
|
||||
domutcheck(M, null, block!=null)
|
||||
domutcheck(M, null, 0)
|
||||
M.update_mutations()
|
||||
if(H)
|
||||
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
|
||||
|
||||
@@ -80,4 +80,4 @@ var/global/default_martial_art = new/datum/martial_art
|
||||
var/fire_dmi = 'icons/mob/OnFire.dmi'
|
||||
var/fire_sprite = "Standing"
|
||||
|
||||
var/datum/body_accessory/body_accessory = null
|
||||
var/datum/body_accessory/body_accessory = null
|
||||
|
||||
@@ -174,10 +174,25 @@
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
/* if (prob(10) && prob(gene.instability))
|
||||
adjustCloneLoss(1) */
|
||||
speech_problem_flag = 1
|
||||
gene.OnMobLife(src)
|
||||
if(gene_stability < 85)
|
||||
var/instability = DEFAULT_GENE_STABILITY - gene_stability
|
||||
if(prob(instability / 10))
|
||||
adjustFireLoss(min(6, instability / 12))
|
||||
to_chat(src, "<span class='danger'>You feel like your skin is burning and bubbling off!</span>")
|
||||
if(gene_stability < 70)
|
||||
if(prob(instability / 12))
|
||||
adjustCloneLoss(min(5, instability / 15))
|
||||
to_chat(src, "<span class='danger'>You feel as if your body is warping.</span>")
|
||||
if(prob(instability / 10))
|
||||
adjustToxLoss(min(6, instability / 12))
|
||||
to_chat(src, "<span class='danger'>You feel weak and nauseous.</span>")
|
||||
if(gene_stability < 40 && prob(1))
|
||||
to_chat(src, "<span class='biggerdanger'>You feel incredibly sick... Something isn't right!</span>")
|
||||
spawn(300)
|
||||
if(gene_stability < 40)
|
||||
gib()
|
||||
|
||||
if(!(species.flags & RADIMMUNE))
|
||||
if (radiation)
|
||||
|
||||
@@ -54,4 +54,6 @@
|
||||
|
||||
var/list/butcher_results = null
|
||||
|
||||
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
|
||||
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
|
||||
|
||||
var/gene_stability = DEFAULT_GENE_STABILITY
|
||||
|
||||
Reference in New Issue
Block a user