From b21332c1436831b2aab59b7ecaa3160aed52558f Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 10 Sep 2013 18:27:17 -0400 Subject: [PATCH] MOAR mutations! --- code/game/dna.dm | 5 ++++- code/modules/mob/living/carbon/carbon.dm | 5 +++++ code/modules/mob/living/carbon/human/human.dm | 11 ++++++++++- code/modules/mob/living/carbon/human/life.dm | 9 +++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 13f90e7d506..89f76136f1d 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -401,7 +401,7 @@ M.sdisabilities = 0 var/old_mutations = M.mutations M.mutations = list() - + M.pass_flags = 0 // M.see_in_dark = 2 // M.see_invisible = 0 @@ -421,6 +421,7 @@ if(ismuton(REMOTEVIEWBLOCK,M)) if(probinj(45,inj) || (mRemote in old_mutations)) M << "\blue Your mind expands" + M.verbs += /mob/living/carbon/human/proc/remoteobserve M.mutations.Add(mRemote) if(ismuton(REGENERATEBLOCK,M)) if(probinj(45,inj) || (mRegen in old_mutations)) @@ -434,6 +435,7 @@ if(probinj(45,inj) || (mRemotetalk in old_mutations)) M << "\blue You expand your mind outwards" M.mutations.Add(mRemotetalk) + M.verbs += /mob/living/carbon/human/proc/remotesay if(ismuton(MORPHBLOCK,M)) if(probinj(45,inj) || (mMorph in old_mutations)) M.mutations.Add(mMorph) @@ -458,6 +460,7 @@ if(probinj(45,inj) || (mSmallsize in old_mutations)) M << "\blue Your skin feels rubbery" M.mutations.Add(mSmallsize) + M.pass_flags |= 1 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c7469e678c9..3d7df9ec0c9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -334,6 +334,11 @@ var/obj/item/W = get_active_hand() if( !W )//Not holding anything if( client && (TK in mutations) ) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(H.remoteview_target) + H << "\red Your mind is too busy remote viewing." + return var/obj/item/tk_grab/O = new(src) put_in_active_hand(O) O.host = src diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cbcb11d5a77..9534efe283c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -504,6 +504,9 @@ if(gloves) var/obj/item/clothing/gloves/G = gloves siemens_coeff = G.siemens_coefficient + //If they have shock immunity mutation + if(mShock in src.mutations) + siemens_coeff = 0 return ..(shock_damage,source,siemens_coeff) @@ -988,6 +991,12 @@ src.verbs -= /mob/living/carbon/human/proc/remoteobserve return + if(istype(l_hand, /obj/item/tk_grab) || istype(r_hand, /obj/item/tk_grab/)) + src << "\red Your mind is too busy with that telekinetic grab." + remoteview_target = null + reset_view(0) + return + if(client.eye != client.mob) remoteview_target = null reset_view(0) @@ -1278,4 +1287,4 @@ mob/living/carbon/human/yank_out_object() if(species) return 1 else - return 0 + return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8fa07005f22..6efd457297d 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -285,6 +285,7 @@ proc/breathe() if(reagents.has_reagent("lexorin")) return + if(mNobreath in mutations) return // No breath mutation means no breathing. if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return if(species && species.flags & NO_BREATHE) return @@ -947,6 +948,14 @@ blinded = 1 silent = 0 else //ALIVE. LIGHTS ARE ON + if(mRegen in mutations) + if(nutrition) + if(prob(10)) + var/randumb = rand(1,5) + nutrition -= randumb + heal_overall_damage(randumb,randumb) + if(nutrition < 0) + nutrition = 0 updatehealth() //TODO if(!in_stasis) handle_organs()