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"