From 1be205df11040642def2d511b729cb7ac707c1ff Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Mon, 13 Apr 2015 01:06:39 -0400 Subject: [PATCH] Shadowpeople update --- .../awaymissions/mission_code/wildwest.dm | 36 ++++++++++++++++-- code/modules/mob/living/carbon/human/human.dm | 4 ++ code/modules/mob/living/carbon/human/life.dm | 7 ++-- .../species.dm => species/plasmaman.dm} | 0 .../mob/living/carbon/human/species/shadow.dm | 25 ++++++++++++ .../mob/living/carbon/human/update_icons.dm | 2 +- code/modules/mob/living/carbon/species.dm | 2 + code/modules/projectiles/projectile/magic.dm | 2 +- code/modules/reagents/Chemistry-Reagents.dm | 7 ++-- code/setup.dm | 15 +------- icons/mob/human_races/r_shadow.dmi | Bin 1760 -> 46738 bytes paradise.dme | 3 +- 12 files changed, 76 insertions(+), 27 deletions(-) rename code/modules/mob/living/carbon/human/{plasmaman/species.dm => species/plasmaman.dm} (100%) create mode 100644 code/modules/mob/living/carbon/human/species/shadow.dm diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 180fbf7a331..2f1edeacaa5 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -80,19 +80,40 @@ user.mutations.Add(LASER) user.mutations.Add(RESIST_COLD) user.mutations.Add(XRAY) - user.dna.mutantrace = "shadow" + if(ishuman(user)) + var/mob/living/carbon/human/human = user + if(human.species.name != "Shadow") + user << "\red Your flesh rapidly mutates!" + user << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." + user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." + user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." + human.set_species("Shadow") user.regenerate_icons() if("Wealth") user << "Your wish is granted, but at a terrible cost..." user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart." new /obj/structure/closet/syndicate/resources/everything(loc) - user.dna.mutantrace = "shadow" + if(ishuman(user)) + var/mob/living/carbon/human/human = user + if(human.species.name != "Shadow") + user << "\red Your flesh rapidly mutates!" + user << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." + user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." + user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." + human.set_species("Shadow") user.regenerate_icons() if("Immortality") user << "Your wish is granted, but at a terrible cost..." user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart." user.verbs += /mob/living/carbon/proc/immortality - user.dna.mutantrace = "shadow" + if(ishuman(user)) + var/mob/living/carbon/human/human = user + if(human.species.name != "Shadow") + user << "\red Your flesh rapidly mutates!" + user << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." + user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." + user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." + human.set_species("Shadow") user.regenerate_icons() if("To Kill") user << "Your wish is granted, but at a terrible cost..." @@ -107,7 +128,14 @@ for(var/datum/objective/OBJ in user.mind.objectives) user << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - user.dna.mutantrace = "shadow" + if(ishuman(user)) + var/mob/living/carbon/human/human = user + if(human.species.name != "Shadow") + user << "\red Your flesh rapidly mutates!" + user << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." + user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." + user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." + human.set_species("Shadow") user.regenerate_icons() if("Peace") user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 56d0f59048d..ee372c90967 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -98,6 +98,10 @@ h_style = "blue IPC screen" ..(new_loc, "Machine") +/mob/living/carbon/human/shadow/New(var/new_loc) + h_style = "Bald" + ..(new_loc, "Shadow") + /mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes) if ((!( yes ) || now_pushing)) return diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 94f4a93d38b..d6885fa8390 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -808,7 +808,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc adjustOxyLoss(-(light_amount)) //TODO: heal wounds, heal broken limbs. - if(dna && dna.mutantrace == "shadow") + if(species.light_dam) var/light_amount = 0 if(isturf(loc)) var/turf/T = loc @@ -816,11 +816,12 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(A) if(A.lighting_use_dynamic) light_amount = T.lighting_lumcount else light_amount = 10 - if(light_amount > 2) //if there's enough light, start dying + if(light_amount > species.light_dam) //if there's enough light, start dying take_overall_damage(1,1) - else if (light_amount < 2) //heal in the dark + else //heal in the dark heal_overall_damage(1,1) + //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. if(species.flags & CAN_BE_FAT) if(FAT in mutations) diff --git a/code/modules/mob/living/carbon/human/plasmaman/species.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm similarity index 100% rename from code/modules/mob/living/carbon/human/plasmaman/species.dm rename to code/modules/mob/living/carbon/human/species/plasmaman.dm diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm new file mode 100644 index 00000000000..269ce2b1f58 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -0,0 +1,25 @@ +/datum/species/shadow + name = "Shadow" + + icobase = 'icons/mob/human_races/r_shadow.dmi' + deform = 'icons/mob/human_races/r_shadow.dmi' + + default_language = "Galactic Common" + unarmed_type = /datum/unarmed_attack/claws + light_dam = 2 + darksight = 8 + + blood_color = "#CCCCCC" + flesh_color = "#AAAAAA" + + has_organ = list( + "brain" = /obj/item/organ/brain/slime + ) + + flags = NO_BLOOD | NO_BREATHE | NO_SCAN + bodyflags = FEET_NOSLIP + +/datum/species/shadow/handle_death(var/mob/living/carbon/human/H) + spawn(1) + new /obj/effect/decal/cleanable/ash(H.loc) + del(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 7223899e84e..4c48fd8a12b 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -447,7 +447,7 @@ proc/get_damage_icon_part(damage_state, body_part) if(dna) switch(dna.mutantrace) - if("golem","shadow","adamantine") + if("golem","adamantine") overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s") if("slime") overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/slimemutant.dmi', "icon_state" = "[slime_color]_[dna.mutantrace][fat]_[gender]_s") diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 0d194f7d3c2..fb6e4588a62 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -42,6 +42,8 @@ var/brute_mod = null // Physical damage reduction/malus. var/burn_mod = null // Burn damage reduction/malus. + var/light_dam + var/max_hurt_damage = 9 // Max melee damage dealt + 5 if hulk var/list/default_genes = list() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 28bdf2961e2..0051f472e7c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -217,7 +217,7 @@ proc/wabbajack(mob/living/M) var/mob/living/carbon/human/human/H = new_mob // ready_dna(H) if(H.dna) - H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") + H.dna.mutantrace = pick("lizard","golem","plant","fly","adamantine","skeleton",8;"") H.update_body() else return diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 09d27ee57dc..c3ffcb06ed2 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -355,16 +355,17 @@ datum if(!M) M = holder.my_atom if(ishuman(M)) var/mob/living/carbon/human/human = M - if(human.dna.mutantrace == null) + if(human.species.name != "Shadow") M << "\red Your flesh rapidly mutates!" M << "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids." M << "\red Your body reacts violently to light. \green However, it naturally heals in darkness." M << "Aside from your new traits, you are mentally unchanged and retain your prior obligations." - human.dna.mutantrace = "shadow" - human.update_mutantrace() + human.set_species("Shadow") ..() return + + aslimetoxin name = "Advanced Mutation Toxin" id = "amutationtoxin" diff --git a/code/setup.dm b/code/setup.dm index 1f8956ad74c..b255899deaf 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -313,19 +313,6 @@ var/MAX_EX_FLASH_RANGE = 14 #define THERMAL_PROTECTION_HAND_RIGHT 0.025 -//bitflags for mutations - // Extra powers: -#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM (1<<11) // supersonic screaming (25%) -#define EXPLOSIVE (1<<12) // exploding on-demand (15%) -#define REGENERATION (1<<13) // superhuman regeneration (30%) -#define REPROCESSOR (1<<14) // eat anything (50%) -#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%) -#define PHASING (1<<16) // ability to phase through walls (40%) -#define SHIELD (1<<17) // shielding from all projectile attacks (30%) -#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%) - // String identifiers for associative list lookup @@ -839,7 +826,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define IS_SYNTHETIC 2048 #define IS_PLANT 4096 #define CAN_BE_FAT 8192 -#define HAS_CHITTIN 16384 +#define IS_RESTRICTED 16384 #define NO_INTORGANS 32768 //Species Blood Flags diff --git a/icons/mob/human_races/r_shadow.dmi b/icons/mob/human_races/r_shadow.dmi index 70450af690243fd20f537d6b1d6606549b15265a..773948e4e123a946a98236ffb6da3c29152ddfe7 100644 GIT binary patch literal 46738 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 UFCTy5Cq>?zs?`qC5t&r~4~zehd;kCd literal 1760 zcmYLKc{rQt7XQ91MMA|@bmD3((-zfGTQ?%Hv`jmp#HF3qI@T&FVHA;2OY4rCblTf% ztJ0}@YKWFv5~^t#OHt}h)e>7!)oY183;8BGf86JJpL5>xd(Ziu<^AK__8^~CLt#+> z0I0dSI(q^DsJMav09_GtN`;1j$PP| zpm~zL0OF^iP=(QwMDe9Lhr|WPMo?)HG0^~!Sd=^Pd~do1X3r#-p0g*x=*yQN{VbAS zX~e)yTkS}WmT(lEpih3eh?htqJr-hnMxEf=5YGCI-@GvKF@38r8El+WtrY% zc@`D-!r~sv1Ueo$kU{<~@7GMp#^WNX>)PHvvs8l~?fYZi49>pqeW0avbaqUef#6We zT>wBD3#{1E~Fd z{jco_#N^;%RVw=D#Q{`j)y`?KJ4#R?A(plL_M>jKr;cM!CqM`O#0|W z3f3S;G-r#E@9M82uD1-mzI5q8JN$9cH`!bLYEB(l1>WJoN=fY_ykfsQg8D?4h5jb* ztqk=3WE0!ZSomxe2!@8=MR~Xc&-WSXG7i$B^pFAO^-GN$AIlmTqdc-1MziQs)to#7 zn#lO#BWXAeRtbOVUZ|dC|6%Qtj_25F;9nG;ov_ohY4Q4hJo(&OHLXd}!%X}SpN;&8 zg%swZ2-S#s=NrS?bXBXbkMc@zBw-M{N4$7LyzQu*@6VPXcSYs|Bh>&W1(&A8NQ;`f zgSuTkEW`PsNZsVp5TA{S2=21~`{}^Tp4qKu9=`MCBpJ^Q-QJ;X9efHX*rwJrpjTq( zcj(ms1W_I3j9sku&Mxy`*>+{dhZ%H-^-u=Qd(L@3B=}=}+bBu)XW?cIr!xmTnC>H~hZHVEeRf z@RIXHb(oaRwBs@{rlOPQHKJ~=zOf0q@iaR5gw>`c0SsdwFK_cg6echV*&Z&(AgL-U zI}@9(ul&ZIg5%U?bq|oFZ5McD*se|;Bs;sUM^#-bKpU6d<>XVmt%A8Ims)9w`WeNN zRVOj`pv{3J0mCNw69@iiWzGNAzagArkolL^1tGJ;r<(k?q;^)BuU&!0#bGbuA>?1*9$0&WxD8t3s45@Hy8cw*rlIEM#cQ?^ z(`d5b6MR7l(KG1FnX^47x-);v>?N}SlZ7i#?;0?VqZc0Pum0(OSCHQ>!=*f$xE4`a z*8DE+$8HCVU7jsr%9$Qd$Di2IM!e`k-t(#U9yCMo_u$wN@uiLIPWbl@^7t#RyW^jz zwIvudutKh-I7Z`oN5mNd!hOLhog8;%_lmHe-8-js<>}1$6%{Vs?&`E=tSo%6{qW4@ zbLTl+z%FP#IET|ex=w(AYsc6O=4glIW@*}{p}lw;{w#GeS`J3za<401^Kn##ti&}I zDxA&+CqHB`d(>(FhdO>~daGbsgID!A5I?F5dL8(S(@2_^9JF+>n8lSW$(kfejdW{X z@v1sol4b${TGZnZ&;TL9GDXDrGFrhXhRV0$f9R-v^{l9-%fZ!De?=v2vxHe(0BmF| zdGq~`@$+ly>@C?FMK(EP0`ZqZOZ62*tnxe|`j;)4NsImpq$EVg$`WHo1KN>3Q+&-^ z=ADXS8a2(9AF3#~>C9}dz!t0~{4uv2nB6iiy&2f*+0sD>)h)mt0yd;rB8MGdFje?F zNC5#mwjlm$j=|upC;`EbNS~6S6Su)}B@dvM^`!FE>JFGD28|V?6HY6McEDOOD5`jo uxdSSk`KgR489a0a9#AsYDhHx*t^TE2K0U%K$KNV85a8xQcIG$+r2h$`%}*x) diff --git a/paradise.dme b/paradise.dme index f4bdc02c04c..0f867a0d784 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1217,7 +1217,8 @@ #include "code\modules\mob\living\carbon\human\say.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" #include "code\modules\mob\living\carbon\human\whisper.dm" -#include "code\modules\mob\living\carbon\human\plasmaman\species.dm" +#include "code\modules\mob\living\carbon\human\species\plasmaman.dm" +#include "code\modules\mob\living\carbon\human\species\shadow.dm" #include "code\modules\mob\living\carbon\metroid\death.dm" #include "code\modules\mob\living\carbon\metroid\emote.dm" #include "code\modules\mob\living\carbon\metroid\examine.dm"