diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm
index acfd8c90fef..047edf87483 100644
--- a/code/game/dna/genes/goon_disabilities.dm
+++ b/code/game/dna/genes/goon_disabilities.dm
@@ -9,7 +9,7 @@
// WAS: /datum/bioEffect/mute
/datum/dna/gene/disability/mute
name = "Mute"
- desc = "Completley shuts down the speech center of the subject's brain."
+ desc = "Completely shuts down the speech center of the subject's brain."
activation_message = "You feel unable to express yourself at all."
deactivation_message = "You feel able to speak freely again."
@@ -278,4 +278,85 @@
C << "\red [src.personalized_stink]"
else
C << "\red [stinkString()]"
-*/
\ No newline at end of file
+*/
+
+
+////////////////////////////////////////////////////////////////////////
+// WAS: /datum/bioEffect/immolate
+/datum/dna/gene/basic/grant_spell/immolate
+ name = "Incendiary Mitochondria"
+ desc = "The subject becomes able to convert excess cellular energy into thermal energy."
+ activation_messages = list("You suddenly feel rather hot.")
+ deactivation_messages = list("You no longer feel uncomfortably hot.")
+
+ spelltype=/obj/effect/proc_holder/spell/targeted/immolate
+
+ New()
+ ..()
+ block = IMMOLATEBLOCK
+
+/obj/effect/proc_holder/spell/targeted/immolate
+ name = "Incendiary Mitochondria"
+ desc = "The subject becomes able to convert excess cellular energy into thermal energy."
+ panel = "Mutant Powers"
+
+ charge_type = "recharge"
+ charge_max = 600
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = -1
+ selection_type = "range"
+
+/obj/effect/proc_holder/spell/targeted/immolate/cast(list/targets)
+ if (istype(usr,/mob/living/))
+ var/mob/living/L = usr
+
+ L.adjust_fire_stacks(0.5) // Same as walking into fire. Was 100 (goon fire)
+ L.visible_message("\red [L.name] suddenly bursts into flames!")
+ //playsound(L.loc, 'mag_fireballlaunch.ogg', 50, 0)
+
+ return
+
+////////////////////////////////////////////////////////////////////////
+
+// WAS: /datum/bioEffect/melt
+/datum/dna/gene/basic/grant_verb/melt
+ name = "Self Biomass Manipulation"
+ desc = "The subject becomes able to transform the matter of their cells into a liquid state."
+ activation_messages = list("You feel strange and jiggly.")
+ deactivation_messages = list("You feel more solid.")
+
+ verbtype=/proc/bioproc_melt
+
+ New()
+ ..()
+ block = MELTBLOCK
+
+/proc/bioproc_melt()
+ set name = "Dissolve"
+ set desc = "Transform yourself into a liquified state."
+ set category = "Mutant Abilities"
+
+ if (istype(usr,/mob/living/carbon/human/))
+ var/mob/living/carbon/human/H = usr
+
+ H.visible_message("\red [H.name]'s flesh melts right off! Holy shit!")
+ //if (H.gender == "female")
+ // playsound(H.loc, 'female_fallscream.ogg', 50, 0)
+ //else
+ // playsound(H.loc, 'male_fallscream.ogg', 50, 0)
+ //playsound(H.loc, 'bubbles.ogg', 50, 0)
+ //playsound(H.loc, 'loudcrunch2.ogg', 50, 0)
+ var/mob/living/carbon/human/skellington/nH = new /mob/living/carbon/human/skellington(H.loc)
+ nH.real_name = H.real_name
+ nH.name = "[H.name]'s skeleton"
+ //H.decomp_stage = 4
+ nH.brain_op_stage = 4
+ H.gib(1)
+ else
+ usr.visible_message("\red [usr.name] melts into a pile of bloody viscera!")
+ usr.gib(1)
+
+ return
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 83b7e681e08..69b232442ff 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -72,4 +72,399 @@
if((world.time - M.last_movement) >= 30 && !M.stat && M.canmove && !M.restrained())
M.alpha = round(255 * 0.10)
else
- M.alpha = round(255 * 0.80)
\ No newline at end of file
+ M.alpha = round(255 * 0.80)
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+/datum/dna/gene/basic/grant_spell
+ var/obj/effect/proc_holder/spell/spelltype
+
+ activate(var/mob/M, var/connected, var/flags)
+ ..()
+ M.spell_list += spelltype
+ return 1
+
+ deactivate(var/mob/M, var/connected, var/flags)
+ ..()
+ M.spell_list -= spelltype
+/datum/dna/gene/basic/grant_verb
+ var/verbtype
+
+ activate(var/mob/M, var/connected, var/flags)
+ ..()
+ M.verbs += verbtype
+ return 1
+
+ deactivate(var/mob/M, var/connected, var/flags)
+ ..()
+ M.verbs -= verbtype
+
+// WAS: /datum/bioEffect/cryokinesis
+/datum/dna/gene/basic/grant_spell/cryo
+ name = "Cryokinesis"
+ desc = "Allows the subject to lower the body temperature of others."
+ activation_messages = list("You notice a strange cold tingle in your fingertips.")
+ deactivation_messages = list("Your fingers feel warmer.")
+
+ spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
+
+ New()
+ ..()
+ block = CRYOBLOCK
+
+/obj/effect/proc_holder/spell/targeted/cryokinesis
+ name = "Cryokinesis"
+ desc = "Drops the bodytemperature of another person."
+ panel = "Mutant Powers"
+
+ charge_type = "recharge"
+ charge_max = 600
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = 7
+ selection_type = "range"
+ var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+
+/obj/effect/proc_holder/spell/targeted/cryokinesis/cast(list/targets)
+ if(!targets.len)
+ usr << "No target found in range."
+ return
+
+ var/mob/living/carbon/C = targets[1]
+
+ if(!iscarbon(C))
+ usr << "\red This will only work on normal organic beings."
+ return
+
+ C.bodytemperature = -1500
+ C.ExtinguishMob()
+
+ C.visible_message("\red A cloud of fine ice crystals engulfs [C]!")
+
+ //playsound(usr.loc, 'bamf.ogg', 50, 0)
+
+ new/obj/effects/self_deleting(C.loc, icon('icons/effects/genetics.dmi', "cryokinesis"))
+
+ return
+
+/obj/effects/self_deleting
+ density = 0
+ opacity = 0
+ anchored = 1
+ icon = null
+ desc = ""
+ //layer = 15
+
+ New(var/atom/location, var/icon/I, var/duration = 20, var/oname = "something")
+ src.name = oname
+ loc=location
+ src.icon = I
+ spawn(duration)
+ del(src)
+
+///////////////////////////////////////////////////////////////////////////////////////////
+
+// WAS: /datum/bioEffect/mattereater
+/datum/dna/gene/basic/grant_spell/mattereater
+ name = "Matter Eater"
+ desc = "Allows the subject to eat just about anything without harm."
+ activation_messages = list("You feel hungry.")
+ deactivation_messages = list("You don't feel quite so hungry anymore.")
+
+ spelltype=/obj/effect/proc_holder/spell/targeted/eat
+
+ New()
+ ..()
+ block = EATBLOCK
+
+/obj/effect/proc_holder/spell/targeted/eat
+ name = "Eat"
+ desc = "Eat just about anything!"
+ panel = "Mutant Powers"
+
+ charge_type = "recharge"
+ charge_max = 300
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = 1
+ selection_type = "range"
+
+/obj/effect/proc_holder/spell/targeted/eat/choose_targets(mob/user = usr)
+ var/list/targets = list()
+ var/list/possible_targets = list()
+
+ for(var/obj/item/O in view_or_range(range, user, selection_type))
+ possible_targets += O
+
+ targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets
+
+ if(!targets.len) //doesn't waste the spell
+ revert_cast(user)
+ return
+
+ perform(targets)
+
+/obj/effect/proc_holder/spell/targeted/eat/cast(list/targets)
+ if(!targets.len)
+ usr << "No target found in range."
+ return
+
+ var/obj/item/the_item = targets[1]
+
+ usr.visible_message("\red [usr] eats [the_item].")
+ playsound(usr.loc, 'sound/items/eatfood.ogg', 50, 0)
+
+ del(the_item)
+
+ if(ishuman(usr))
+ var/mob/living/carbon/human/H=usr
+ for(var/name in H.organs_by_name)
+ var/datum/organ/external/affecting = null
+ if(!H.organs[name])
+ continue
+ affecting = H.organs[name]
+ if(!istype(affecting, /datum/organ/external))
+ continue
+ affecting.heal_damage(4, 0)
+ usr:UpdateDamageIcon()
+ usr:updatehealth()
+
+ return
+
+////////////////////////////////////////////////////////////////////////
+
+//WAS: /datum/bioEffect/jumpy
+/datum/dna/gene/basic/grant_spell/jumpy
+ name = "Jumpy"
+ desc = "Allows the subject to leap great distances."
+ //cooldown = 30
+ activation_messages = list("Your leg muscles feel taut and strong.")
+ deactivation_messages = list("Your leg muscles shrink back to normal.")
+
+ spelltype =/obj/effect/proc_holder/spell/targeted/leap
+
+ New()
+ ..()
+ block = JUMPBLOCK
+
+/obj/effect/proc_holder/spell/targeted/leap
+ name = "Jump"
+ desc = "Leap great distances!"
+ panel = "Mutant Powers"
+ range = -1
+ include_user = 1
+
+ charge_type = "recharge"
+ charge_max = 30
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+
+/obj/effect/proc_holder/spell/targeted/leap/cast(list/targets)
+ if (istype(usr.loc,/mob/))
+ usr << "\red You can't jump right now!"
+ return
+
+ if (istype(usr.loc,/turf/))
+ usr.visible_message("\red [usr.name] takes a huge leap!")
+ playsound(usr.loc, 'sound/weapons/thudswoosh.ogg', 50, 1)
+ var/prevLayer = usr.layer
+ usr.layer = 15
+
+ for(var/i=0, i<10, i++)
+ step(usr, usr.dir)
+ if(i < 5) usr.pixel_y += 8
+ else usr.pixel_y -= 8
+ sleep(1)
+
+ if (M_FAT in usr.mutations && prob(66))
+ usr.visible_message("\red [usr.name] crashes due to their heavy weight!")
+ //playsound(usr.loc, 'zhit.wav', 50, 1)
+ usr.weakened += 10
+ usr.stunned += 5
+
+ usr.layer = prevLayer
+
+ if (istype(usr.loc,/obj/))
+ var/obj/container = usr.loc
+ usr << "\red You leap and slam your head against the inside of [container]! Ouch!"
+ usr.paralysis += 3
+ usr.weakened += 5
+ container.visible_message("\red [usr.loc] emits a loud thump and rattles a bit.")
+ playsound(usr.loc, 'sound/effects/bang.ogg', 50, 1)
+ var/wiggle = 6
+ while(wiggle > 0)
+ wiggle--
+ container.pixel_x = rand(-3,3)
+ container.pixel_y = rand(-3,3)
+ sleep(1)
+ container.pixel_x = 0
+ container.pixel_y = 0
+
+
+ return
+
+////////////////////////////////////////////////////////////////////////
+
+// WAS: /datum/bioEffect/polymorphism
+
+/datum/dna/gene/basic/grant_spell/polymorph
+ name = "Polymorphism"
+ desc = "Enables the subject to reconfigure their appearance to mimic that of others."
+
+ spelltype =/obj/effect/proc_holder/spell/targeted/polymorph
+ //cooldown = 1800
+ activation_messages = list("You don't feel entirely like yourself somehow.")
+ deactivation_messages = list("You feel secure in your identity.")
+
+ New()
+ ..()
+ block = POLYMORPHBLOCK
+
+/obj/effect/proc_holder/spell/targeted/polymorph
+ name = "Polymorph"
+ desc = "Mimic the appearance of others!"
+ panel = "Mutant Powers"
+ charge_max = 1800
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = 1
+ selection_type = "range"
+
+/obj/effect/proc_holder/spell/targeted/polymorph/cast(list/targets)
+ var/mob/living/M=targets[1]
+ if(!ishuman(M))
+ usr << "\red You can only change your appearance to that of another human."
+ return
+
+ if(!ishuman(usr)) return
+
+
+ //playsound(usr.loc, 'blobattack.ogg', 50, 1)
+
+ usr.visible_message("\red [usr]'s body shifts and contorts.")
+
+ spawn(10)
+ if(M && usr)
+ //playsound(usr.loc, 'gib.ogg', 50, 1)
+ usr.UpdateAppearance(M.dna.UI)
+ usr:real_name = M:real_name
+ usr:name = M:name
+////////////////////////////////////////////////////////////////////////
+
+// WAS: /datum/bioEffect/empath
+/datum/dna/gene/basic/grant_verb/empath
+ name = "Empathic Thought"
+ desc = "The subject becomes able to read the minds of others for certain information."
+
+ verbtype = /proc/bioproc_empath
+ activation_messages = list("You suddenly notice more about others than you did before.")
+ deactivation_messages = list("You no longer feel able to sense intentions.")
+
+ New()
+ ..()
+ block = EMPATHBLOCK
+
+/proc/bioproc_empath(var/mob/living/carbon/M in range(7,usr))
+ set name = "Read Mind"
+ set desc = "Read the minds of others for information."
+ set category = "Mutant Abilities"
+
+ if(!iscarbon(M))
+ usr << "\red You may only use this on other organic beings."
+ return
+
+ if(usr.stat)
+ return
+
+ if (M_PSY_RESIST in M.mutations)
+ usr << "\red You can't see into [M.name]'s mind at all!"
+ return
+
+ if (M.stat == 2)
+ usr << "\red [M.name] is dead and cannot have their mind read."
+ return
+ if (M.health < 0)
+ usr << "\red [M.name] is dying, and their thoughts are too scrambled to read."
+ return
+
+ usr << "\blue Mind Reading of [M.name]:"
+ var/pain_condition = M.health
+ // lower health means more pain
+ var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
+ "their hair","what to do next","their job","space","amusing things","sad things",
+ "annoying things","happy things","something incoherent","something they did wrong")
+ var/thoughts = "thinking about [pick(randomthoughts)]"
+ if (M.fire_stacks)
+ pain_condition -= 50
+ thoughts = "preoccupied with the fire"
+ if (M.radiation)
+ pain_condition -= 25
+
+ switch(pain_condition)
+ if (81 to INFINITY)
+ usr << "\blue Condition: [M.name] feels good."
+ if (61 to 80)
+ usr << "\blue Condition: [M.name] is suffering mild pain."
+ if (41 to 60)
+ usr << "\blue Condition: [M.name] is suffering significant pain."
+ if (21 to 40)
+ usr << "\blue Condition: [M.name] is suffering severe pain."
+ else
+ usr << "\blue Condition: [M.name] is suffering excruciating pain."
+ thoughts = "haunted by their own mortality"
+
+ switch(M.a_intent)
+ if ("help")
+ usr << "\blue Mood: You sense benevolent thoughts from [M.name]."
+ if ("disarm")
+ usr << "\blue Mood: You sense cautious thoughts from [M.name]."
+ if ("grab")
+ usr << "\blue Mood: You sense hostile thoughts from [M.name]."
+ if ("harm")
+ usr << "\blue Mood: You sense cruel thoughts from [M.name]."
+ for(var/mob/living/L in view(7,M))
+ if (L == M)
+ continue
+ thoughts = "thinking about punching [L.name]"
+ break
+ else
+ usr << "\blue Mood: You sense strange thoughts from [M.name]."
+
+ if (istype(M,/mob/living/carbon/human))
+ var/numbers[0]
+ var/mob/living/carbon/human/H = M
+ if(H.mind && H.mind.initial_account)
+ numbers += H.mind.initial_account.account_number
+ numbers += H.mind.initial_account.remote_access_pin
+ if(numbers.len>0)
+ usr << "\blue Numbers: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name]."
+ usr << "\blue Thoughts: [M.name] is currently [thoughts]."
+
+ if (/datum/dna/gene/basic/grant_verb/empath in M.active_genes)
+ M << "\red You sense [usr.name] reading your mind."
+ else if (prob(5) || M.mind.assigned_role=="Chaplain")
+ M << "\red You sense someone intruding upon your thoughts..."
+ return
+
+////////////////////////////////////////////////////////////////////////
+
+// WAS: /datum/bioEffect/superfart
+/datum/dna/gene/basic/superfart
+ name = "High-Pressure Intestines"
+ desc = "Vastly increases the gas capacity of the subject's digestive tract."
+ activation_messages = list("You feel bloated and gassy.")
+ deactivation_messages = list("You no longer feel gassy. What a relief!")
+
+ mutation = M_SUPER_FART
+
+ New()
+ ..()
+ block = SUPERFARTBLOCK
\ No newline at end of file
diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm
index dc85d7e9970..c47f04daeb1 100644
--- a/code/game/gamemodes/setupgame.dm
+++ b/code/game/gamemodes/setupgame.dm
@@ -77,6 +77,14 @@
PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS)
SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS)
CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS)
+ CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS)
+ EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS)
+ JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS)
+ MELTBLOCK = getAssignedBlock("MELT", numsToAssign)
+ IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign)
+ EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS)
+ SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS)
+ POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS)
//
// Static Blocks
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index d8df24484f2..df8ce5328c6 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -523,7 +523,7 @@ steam.start() -- spawns the effect
number = n
cardinals = c
- chemholder.reagents.add_reagent("mercury", 50)
+ chemholder.reagents.add_reagent("space_drugs", rand(1,10))
if(istype(loca, /turf/))
location = loca
diff --git a/code/global.dm b/code/global.dm
index 038f9ab0bc0..3dee0d74ab2 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -86,6 +86,14 @@ var/SOBERBLOCK = 0
var/PSYRESISTBLOCK = 0
var/SHADOWBLOCK = 0
var/CHAMELEONBLOCK = 0
+var/CRYOBLOCK = 0
+var/EATBLOCK = 0
+var/JUMPBLOCK = 0
+var/MELTBLOCK = 0
+var/EMPATHBLOCK = 0
+var/SUPERFARTBLOCK = 0
+var/IMMOLATEBLOCK = 0
+var/POLYMORPHBLOCK = 0
var/skipupdate = 0
///////////////
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 2a4d1b79d54..08d8cbaf434 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -548,22 +548,66 @@
if(world.time-lastFart >= 600)
message = "[src] [pick("passes wind","farts")]."
m_type = 2
- var/location = get_turf(src)
- playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
+
+ var/turf/location = get_turf(src)
+ var/aoe_range=2 // Default
+ if(M_SUPER_FART in mutations)
+ aoe_range+=5
+
+ // If we're wearing a suit, don't blast or gas those around us.
+ var/wearing_suit=0
+ var/wearing_mask=0
+ if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO)
+ wearing_suit=1
+ if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS))
+ wearing_mask=1
+
+ // Process toxic farts first.
if(M_TOXIC_FARTS in mutations)
- if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO)
- if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS))
- return
- src << "\red You gas yourself!"
- reagents.add_reagent("mercury", rand(10,20))
- return
- var/datum/effect/effect/system/chem_smoke_spread/fart/S = new /datum/effect/effect/system/chem_smoke_spread/fart
- S.attach(location)
- S.set_up(src, 10, 0, location)
- spawn(0)
- S.start()
- sleep(10)
- S.start()
+ message=""
+ if(wearing_suit)
+ if(!wearing_mask)
+ src << "\red You gas yourself!"
+ reagents.add_reagent("space_drugs", rand(10,20))
+ else
+ // Was /turf/, now /mob/
+ for(var/mob/M in view(location,2))
+ // Now, we don't have this:
+ //new /obj/effects/fart_cloud(T,L)
+ // But:
+ // <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it
+ // <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem
+ // <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud
+ // So, let's give 'em space drugs.
+ M.reagents.add_reagent("space_drugs",rand(1,10))
+ /*
+ var/datum/effect/effect/system/smoke_spread/chem/fart/S = new /datum/effect/effect/system/smoke_spread/chem/fart
+ S.attach(location)
+ S.set_up(src, 10, 0, location)
+ spawn(0)
+ S.start()
+ sleep(10)
+ S.start()
+ */
+ if(M_SUPER_FART in mutations)
+ message=""
+ playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
+ visible_message("\red [name] hunches down and grits their teeth!")
+ if(do_after(usr,30))
+ visible_message("\red [name] unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.")
+ //playsound(L.loc, 'superfart.ogg', 50, 0)
+ if(wearing_suit)
+ for(var/mob/living/V in view(src,aoe_range))
+ shake_camera(V,10,5)
+ if (V == src)
+ continue
+ V << "\red You are sent flying!"
+ V.Weaken(5) // why the hell was this set to 12 christ
+ step_away(V,location,15)
+ step_away(V,location,15)
+ step_away(V,location,15)
+ else
+ usr << "\red You were interrupted and couldn't fart! Rude!"
lastFart=world.time
else
message = "[src] strains, and nothing happens."
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index a13fb11e76f..31d92e2ea7d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -32,6 +32,11 @@
set_species("Vox")
..()
+/mob/living/carbon/human/skellington/New()
+ h_style = "Bald"
+ set_species("Skellington")
+ ..()
+
/mob/living/carbon/human/diona/New()
species = new /datum/species/diona(src)
..()
diff --git a/code/setup.dm b/code/setup.dm
index e5b5eb44d26..33734fe20a1 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -368,6 +368,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define M_STRONG 202 // (Nothing)
#define M_SOBER 203 // Increased alcohol metabolism
#define M_PSY_RESIST 204 // Block remoteview
+#define M_SUPER_FART 205 // Duh
//disabilities
#define NEARSIGHTED 1