diff --git a/code/WorkInProgress/Cib/amorph/life.dm b/code/WorkInProgress/Cib/amorph/life.dm
index 14c4d41ccab..e3eae759756 100644
--- a/code/WorkInProgress/Cib/amorph/life.dm
+++ b/code/WorkInProgress/Cib/amorph/life.dm
@@ -396,7 +396,7 @@
handle_regular_hud_updates()
- if (src.stat == 2 || (XRAY in mutations))
+ if (src.stat == 2 || (M_XRAY in mutations))
src.sight |= SEE_TURFS
src.sight |= SEE_MOBS
src.sight |= SEE_OBJS
diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm
index 71f7e0aca5f..7d847dc4b73 100644
--- a/code/game/dna/dna2_domutcheck.dm
+++ b/code/game/dna/dna2_domutcheck.dm
@@ -150,12 +150,12 @@
M.disabilities |= TOURETTES
M << "\red You twitch."
if (M.dna.GetSEState(XRAYBLOCK))
- if(forced || probinj(30,inj) || (XRAY in old_mutations))
+ if(forced || probinj(30,inj) || (M_XRAY in old_mutations))
M << "\blue The walls suddenly disappear."
// M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
// M.see_in_dark = 8
// M.see_invisible = 2
- M.mutations.Add(XRAY)
+ M.mutations.Add(M_XRAY)
if (M.dna.GetSEState(NERVOUSBLOCK))
M.disabilities |= NERVOUS
M << "\red You feel nervous."
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index dc38f464af4..f339bb73733 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -167,7 +167,7 @@
/datum/dna/gene/basic/xray
name="X-Ray Vision"
activation_messages=list("The walls suddenly disappear.")
- mutation=XRAY
+ mutation=M_XRAY
New()
block=XRAYBLOCK
diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm
index 15256590eff..fde7b0d076a 100644
--- a/code/game/machinery/wishgranter.dm
+++ b/code/game/machinery/wishgranter.dm
@@ -42,8 +42,8 @@
if (!(LASER in user.mutations))
user.mutations.Add(LASER)
- if (!(XRAY in user.mutations))
- user.mutations.Add(XRAY)
+ if (!(M_XRAY in user.mutations))
+ user.mutations.Add(M_XRAY)
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
user.see_in_dark = 8
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index cc651af199d..05bd557d1e0 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -77,7 +77,7 @@
if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) //robots and aliens are unaffected
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
user << "[M] pupils does not react to the light!"
- else if(XRAY in M.mutations) //mob has X-RAY vision
+ else if(M_XRAY in M.mutations) //mob has X-RAY vision
flick("flash", M.flash) //Yes, you can still get flashed wit X-Ray.
user << "[M] pupils give an eerie glow!"
else //they're okay!
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index 25c823fa199..65f02608354 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -380,7 +380,7 @@
proc/handle_regular_hud_updates()
- if (stat == 2 || (XRAY in mutations))
+ if (stat == 2 || (M_XRAY in mutations))
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index cdae216d5c5..076df1370f8 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -293,7 +293,7 @@
proc/handle_regular_hud_updates()
- if (stat == 2 || (XRAY in mutations))
+ if (stat == 2 || (M_XRAY in mutations))
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index bcf3a4f5acb..6e5561c917c 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -206,7 +206,7 @@
proc/handle_regular_hud_updates()
- if (stat == 2 || (XRAY in src.mutations))
+ if (stat == 2 || (M_XRAY in src.mutations))
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 5c90dbf9c26..ee516ac8be2 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1283,8 +1283,8 @@
if((VAMP_FULL in mind.vampire.powers))
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
see_in_dark = 8
- if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
- if(XRAY in mutations)
+ if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ if(M_XRAY in mutations)
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
see_in_dark = 8
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 1c350dbbdb4..8637787474d 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -571,7 +571,7 @@
proc/handle_regular_hud_updates()
- if (stat == 2 || (XRAY in mutations))
+ if (stat == 2 || (M_XRAY in mutations))
sight |= SEE_TURFS
sight |= SEE_MOBS
sight |= SEE_OBJS
diff --git a/code/modules/mob/living/silicon/mommi/life.dm b/code/modules/mob/living/silicon/mommi/life.dm
index 5b9f8bd98c1..948d5967888 100644
--- a/code/modules/mob/living/silicon/mommi/life.dm
+++ b/code/modules/mob/living/silicon/mommi/life.dm
@@ -133,7 +133,7 @@
/
/mob/living/silicon/robot/mommi/handle_regular_hud_updates()
- if (src.stat == 2 || XRAY in mutations || src.sight_mode & BORGXRAY)
+ if (src.stat == 2 || M_XRAY in mutations || src.sight_mode & BORGXRAY)
src.sight |= SEE_TURFS
src.sight |= SEE_MOBS
src.sight |= SEE_OBJS
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 21fcd4f873d..62f27029eb5 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -140,7 +140,7 @@
/mob/living/silicon/robot/proc/handle_regular_hud_updates()
- if (src.stat == 2 || XRAY in mutations || src.sight_mode & BORGXRAY)
+ if (src.stat == 2 || M_XRAY in mutations || src.sight_mode & BORGXRAY)
src.sight |= SEE_TURFS
src.sight |= SEE_MOBS
src.sight |= SEE_OBJS
diff --git a/code/setup.dm b/code/setup.dm
index 77a251ed7d0..34eefde7662 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -323,7 +323,7 @@ var/MAX_EXPLOSION_RANGE = 14
// Generic mutations:
#define M_TK 1
#define M_RESIST_COLD 2
-#define XRAY 3
+#define M_XRAY 3
#define HULK 4
#define CLUMSY 5
#define FAT 6
diff --git a/code/unused/hivebot/life.dm b/code/unused/hivebot/life.dm
index 362328cb4dd..9ab6e8c3e89 100644
--- a/code/unused/hivebot/life.dm
+++ b/code/unused/hivebot/life.dm
@@ -116,7 +116,7 @@
handle_regular_hud_updates()
- if (src.stat == 2 || XRAY in src.mutations)
+ if (src.stat == 2 || M_XRAY in src.mutations)
src.sight |= SEE_TURFS
src.sight |= SEE_MOBS
src.sight |= SEE_OBJS
diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm
index ec690435dbd..f7f82434713 100644
--- a/maps/RandomZLevels/wildwest.dm
+++ b/maps/RandomZLevels/wildwest.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/* Code for the Wild West map by Brotemis
* Contains:
* Wish Granter
@@ -174,4 +175,182 @@
C << "You have regenerated."
C.visible_message("[usr] appears to wake from the dead, having healed all wounds.")
C.update_canmove()
+=======
+/* Code for the Wild West map by Brotemis
+ * Contains:
+ * Wish Granter
+ * Meat Grinder
+ */
+
+/*
+ * Wish Granter
+ */
+/obj/machinery/wish_granter_dark
+ name = "Wish Granter"
+ desc = "You're not so sure about this, anymore..."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "syndbeacon"
+
+ anchored = 1
+ density = 1
+ use_power = 0
+
+ var/chargesa = 1
+ var/insistinga = 0
+
+/obj/machinery/wish_granter_dark/attack_hand(var/mob/living/carbon/human/user as mob)
+ usr.set_machine(src)
+
+ if(chargesa <= 0)
+ user << "The Wish Granter lies silent."
+ return
+
+ else if(!istype(user, /mob/living/carbon/human))
+ user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
+ return
+
+ else if(is_special_character(user))
+ user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away."
+
+ else if (!insistinga)
+ user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?"
+ insistinga++
+
+ else
+ chargesa--
+ insistinga = 0
+ var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","Immortality","To Kill","Peace")
+ switch(wish)
+ if("Power")
+ 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."
+ if (!(LASER in user.mutations))
+ user.mutations.Add(LASER)
+ user << "\blue You feel pressure building behind your eyes."
+ if (!(M_RESIST_COLD in user.mutations))
+ user.mutations.Add(M_RESIST_COLD)
+ user << "\blue Your body feels warm."
+ if (!(M_RESIST_HEAT in user.mutations))
+ user.mutations.Add(M_RESIST_HEAT)
+ user << "\blue Your skin feels icy to the touch."
+ if (!(M_XRAY in user.mutations))
+ user.mutations.Add(M_XRAY)
+ user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
+ user.see_in_dark = 8
+ user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ user << "\blue The walls suddenly disappear."
+ user.dna.mutantrace = "shadow"
+ user.update_mutantrace()
+ 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"
+ user.update_mutantrace()
+ 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"
+ user.update_mutantrace()
+ if("To Kill")
+ user << "Your wish is granted, but at a terrible cost..."
+ user << "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart."
+ ticker.mode.traitors += user.mind
+ user.mind.special_role = "traitor"
+ var/datum/objective/hijack/hijack = new
+ hijack.owner = user.mind
+ user.mind.objectives += hijack
+ user << "Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!"
+ var/obj_count = 1
+ for(var/datum/objective/OBJ in user.mind.objectives)
+ user << "Objective #[obj_count]: [OBJ.explanation_text]"
+ obj_count++
+ user.dna.mutantrace = "shadow"
+ user.update_mutantrace()
+ 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."
+ user << "You feel as if you just narrowly avoided a terrible fate..."
+ for(var/mob/living/simple_animal/hostile/faithless/F in world)
+ F.health = -10
+ F.stat = 2
+ F.icon_state = "faithless_dead"
+
+
+///////////////Meatgrinder//////////////
+
+
+/obj/effect/meatgrinder
+ name = "Meat Grinder"
+ desc = "What is that thing?"
+ density = 1
+ anchored = 1
+ layer = 3
+ icon = 'icons/mob/critter.dmi'
+ icon_state = "blob"
+ var/triggerproc = "explode" //name of the proc thats called when the mine is triggered
+ var/triggered = 0
+
+/obj/effect/meatgrinder/New()
+ icon_state = "blob"
+
+/obj/effect/meatgrinder/HasEntered(AM as mob|obj)
+ Bumped(AM)
+
+/obj/effect/meatgrinder/Bumped(mob/M as mob|obj)
+
+ if(triggered) return
+
+ if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))
+ for(var/mob/O in viewers(world.view, src.loc))
+ O << "[M] triggered the \icon[src] [src]"
+ triggered = 1
+ call(src,triggerproc)(M)
+
+/obj/effect/meatgrinder/proc/triggerrad1(mob)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ for(var/mob/O in viewers(world.view, src.loc))
+ s.set_up(3, 1, src)
+ s.start()
+ explosion(mob, 1, 0, 0, 0)
+ spawn(0)
+ del(src)
+
+/obj/effect/meatgrinder
+ name = "Meat Grinder"
+ icon_state = "blob"
+ triggerproc = "triggerrad1"
+
+
+/////For the Wishgranter///////////
+
+/mob/living/carbon/proc/immortality()
+ set category = "Immortality"
+ set name = "Resurrection"
+
+ var/mob/living/carbon/C = usr
+ if(!C.stat)
+ C << "You're not dead yet!"
+ return
+ C << "Death is not your end!"
+
+ spawn(rand(800,1200))
+ if(C.stat == DEAD)
+ dead_mob_list -= C
+ living_mob_list += C
+ C.stat = CONSCIOUS
+ C.tod = null
+ C.setToxLoss(0)
+ C.setOxyLoss(0)
+ C.setCloneLoss(0)
+ C.SetParalysis(0)
+ C.SetStunned(0)
+ C.SetWeakened(0)
+ C.radiation = 0
+ C.heal_overall_damage(C.getBruteLoss(), C.getFireLoss())
+ C.reagents.clear_reagents()
+ C << "You have regenerated."
+ C.visible_message("[usr] appears to wake from the dead, having healed all wounds.")
+ C.update_canmove()
+>>>>>>> da9b61b... Standardize XRAY.
return 1
\ No newline at end of file