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 70450af6902..773948e4e12 100644 Binary files a/icons/mob/human_races/r_shadow.dmi and b/icons/mob/human_races/r_shadow.dmi differ 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"