Re-Adds Instability

This commit is contained in:
TheDZD
2016-07-03 15:51:17 -04:00
parent c0350a654f
commit 3605aa5e4d
9 changed files with 379 additions and 342 deletions
+2
View File
@@ -124,3 +124,5 @@
#define NUTRITION_LEVEL_HUNGRY 250
#define NUTRITION_LEVEL_STARVING 150
//Used for calculations for negative effects of having genetics powers
#define DEFAULT_GENE_INSTABILITY -4
+40 -30
View File
@@ -35,7 +35,7 @@
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.")
@@ -47,7 +47,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,86 +55,95 @@
name="Hallucinate"
activation_message="Your mind says 'Hello'."
deactivation_message ="Sanity returns. Or does it?"
instability = -2
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 = -2
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 = -1
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 = -2
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 = -1
disability=TOURETTES
New()
block=TWITCHBLOCK
/datum/dna/gene/disability/tourettes/New()
block=TWITCHBLOCK
/datum/dna/gene/disability/nervousness
name="Nervousness"
activation_message="You feel nervous."
deactivation_message ="You feel much calmer."
instability = -1
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 = -5
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 = -4
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 = -3
disability=NEARSIGHTED
New()
block=GLASSESBLOCK
/datum/dna/gene/disability/nearsighted/New()
block=GLASSESBLOCK
/datum/dna/gene/disability/lisp
@@ -142,14 +151,15 @@
desc = "I wonder wath thith doeth."
activation_message = "Thomething doethn't feel right."
deactivation_message = "You now feel able to pronounce consonants."
instability = -1
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
+6 -3
View File
@@ -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)
@@ -113,10 +116,10 @@
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>")
+105 -102
View File
@@ -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 = -3
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,25 @@
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 = -6
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
/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
OnDrawUnderlays(var/mob/M,var/g,var/fat)
return "rads[fat]_s"
/datum/dna/gene/disability/radioactive/OnDrawUnderlays(var/mob/M,var/g,var/fat)
return "rads[fat]_s"
////////////////////////////////////////
// Other disabilities
@@ -59,12 +61,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 = -2
mutation = OBESITY
New()
..()
block=FATBLOCK
/datum/dna/gene/disability/fat/New()
..()
block=FATBLOCK
// WAS: /datum/bioEffect/chav
/datum/dna/gene/disability/speech/chav
@@ -72,38 +74,39 @@
desc = "Forces the language center of the subject's brain to construct sentences in a more rudimentary manner."
activation_message = "Ye feel like a reet prat like, innit?"
deactivation_message = "You no longer feel like being rude and sassy."
instability = -1
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
@@ -111,18 +114,19 @@
desc = "Forces the language center of the subject's brain to construct sentences in a vaguely norse manner."
activation_message = "You feel Swedish, however that works."
deactivation_message = "The feeling of Swedishness passes."
instability = -1
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 +134,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 = -1
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 +170,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 +187,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 +201,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 +219,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 +244,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
View File
@@ -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 = 4
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 = 4
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 = 2
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 = 2
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 = 3
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 = 1
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 = 2
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"
+72 -60
View File
@@ -6,151 +6,163 @@
name="No Breathing"
activation_messages=list("You feel no need to breathe.")
deactivation_messages=list("You feel the need to breathe, once more.")
instability = 2
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 = 1
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 = 2
mutation=RUN
New()
block=INCREASERUNBLOCK
/datum/dna/gene/basic/increaserun/New()
block=INCREASERUNBLOCK
/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 = 2
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 = 2
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 = 1
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 = 2
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 = 1
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 = 8
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 = 8
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 = 8
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"
+18 -15
View File
@@ -4,33 +4,36 @@
desc = "Forces the speaking centre of the subjects brain to yell every sentence."
activation_message = "YOU FEEL LIKE YELLING!"
deactivation_message = "You feel like being quiet.."
instability = -1
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 = -2
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)
+17 -19
View File
@@ -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 = 1
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 = 1
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 = 1
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)
+4 -3
View File
@@ -170,15 +170,16 @@
adjustCloneLoss(0.1)
/mob/living/carbon/human/handle_mutations_and_radiation()
var/gene_instability = DEFAULT_GENE_INSTABILITY
for(var/datum/dna/gene/gene in dna_genes)
if(!gene.block)
continue
if(gene.is_active(src))
/* if (prob(10) && prob(gene.instability))
adjustCloneLoss(1) */
gene_instability += gene.instability
speech_problem_flag = 1
gene.OnMobLife(src)
if(prob(10) && prob(max(gene_instability, 0)))
adjustCloneLoss(0.3 * gene_instability)
if(!(species.flags & RADIMMUNE))
if (radiation)