diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ebbe18ff11..6cb45fb9d7 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -5,9 +5,9 @@
icon = 'icons/mob/human.dmi'
icon_state = "caucasian_m"
- // ME TARZAN, YOU JANEBOT
- initial_languages = list(/datum/language/common)
-
+ // ME TARZAN, YOU JANEBOT
+ initial_languages = list(/datum/language/common)
+
/mob/living/carbon/human/dummy
@@ -58,9 +58,10 @@
if(!(NOBLOOD in dna.species.species_traits))
internal_organs += new /obj/item/organ/heart
- internal_organs += new dna.species.mutanteyes()
+ internal_organs += new dna.species.mutanteyes
internal_organs += new dna.species.mutantears
internal_organs += new /obj/item/organ/brain
+ internal_organs += new dna.species.mutanttongue
give_genitals()
..()
@@ -733,8 +734,8 @@
/mob/living/carbon/human/wash_cream()
//clean both to prevent a rare bug
- cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_lizard"))
- cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
+ cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_lizard"))
+ cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
//Turns a mob black, flashes a skeleton overlay
@@ -743,19 +744,19 @@
//Handle mutant parts if possible
if(dna && dna.species)
add_atom_colour("#000000", TEMPORARY_COLOUR_PRIORITY)
- var/static/mutable_appearance/electrocution_skeleton_anim
- if(!electrocution_skeleton_anim)
- electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base")
- electrocution_skeleton_anim.appearance_flags |= RESET_COLOR
+ var/static/mutable_appearance/electrocution_skeleton_anim
+ if(!electrocution_skeleton_anim)
+ electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base")
+ electrocution_skeleton_anim.appearance_flags |= RESET_COLOR
add_overlay(electrocution_skeleton_anim)
addtimer(CALLBACK(src, .proc/end_electrocution_animation, electrocution_skeleton_anim), anim_duration)
else //or just do a generic animation
flick_overlay_view(image(icon,src,"electrocuted_generic",ABOVE_MOB_LAYER), src, anim_duration)
-/mob/living/carbon/human/proc/end_electrocution_animation(mutable_appearance/MA)
+/mob/living/carbon/human/proc/end_electrocution_animation(mutable_appearance/MA)
remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, "#000000")
- cut_overlay(MA)
+ cut_overlay(MA)
/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close = 0)
if(incapacitated() || lying )
@@ -824,9 +825,9 @@
if(hal_screwyhud == SCREWYHUD_HEALTHY)
icon_num = 0
if(icon_num)
- hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[BP.body_zone][icon_num]"))
+ hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[BP.body_zone][icon_num]"))
for(var/t in get_missing_limbs()) //Missing limbs
- hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[t]6"))
+ hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[t]6"))
else
hud_used.healthdoll.icon_state = "healthdoll_DEAD"
@@ -929,19 +930,19 @@
riding_datum = new /datum/riding/human(src)
if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS))
return
- visible_message("[M] starts to climb onto [src]...")
- if(do_after(M, 15, target = src))
- if(iscarbon(M))
- if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE))
- M.visible_message("[M] can't hang onto [src]!")
- return
- if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!!
- M.visible_message("[M] can't climb onto [src]!")
- return
- . = ..(M, force, check_loc)
- stop_pulling()
- else
- visible_message("[M] fails to climb onto [src]!")
+ visible_message("[M] starts to climb onto [src]...")
+ if(do_after(M, 15, target = src))
+ if(iscarbon(M))
+ if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE))
+ M.visible_message("[M] can't hang onto [src]!")
+ return
+ if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!!
+ M.visible_message("[M] can't climb onto [src]!")
+ return
+ . = ..(M, force, check_loc)
+ stop_pulling()
+ else
+ visible_message("[M] fails to climb onto [src]!")
/mob/living/carbon/human/unbuckle_mob(mob/living/M, force=FALSE)
if(iscarbon(M))
diff --git a/code/modules/mob/living/carbon/human/human.dm.rej b/code/modules/mob/living/carbon/human/human.dm.rej
new file mode 100644
index 0000000000..5866cddae0
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/human.dm.rej
@@ -0,0 +1,12 @@
+diff a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm (rejected hunks)
+@@ -58,8 +58,9 @@
+ if(!(NOBLOOD in dna.species.species_traits))
+ internal_organs += new /obj/item/organ/heart
+
+- internal_organs += new dna.species.mutanteyes()
++ internal_organs += new dna.species.mutanteyes
+ internal_organs += new dna.species.mutantears
++ internal_organs += new dna.species.mutanttongue
+ internal_organs += new /obj/item/organ/brain
+ ..()
+
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 1704595d79..9be254e4bc 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -35,7 +35,7 @@
var/say_mod = "says" // affects the speech message
var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have.
var/list/mutant_bodyparts = list() // Parts of the body that are diferent enough from the standard human model that they cause clipping with some equipment
- var/list/mutant_organs = list(/obj/item/organ/tongue) //Internal organs that are unique to this race.
+ var/list/mutant_organs = list() //Internal organs that are unique to this race.
var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
var/armor = 0 // overall defense for the race... or less defense, if it's negative.
var/brutemod = 1 // multiplier for brute damage
@@ -65,11 +65,9 @@
//Flight and floating
var/override_float = 0
- //Eyes
var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes
-
- //Ears
var/obj/item/organ/ears/mutantears = /obj/item/organ/ears
+ var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue
//Hands
var/obj/item/mutanthands = null
@@ -136,6 +134,7 @@
var/obj/item/organ/appendix/appendix = C.getorganslot("appendix")
var/obj/item/organ/eyes/eyes = C.getorganslot("eye_sight")
var/obj/item/organ/ears/ears = C.getorganslot("ears")
+ var/obj/item/organ/tongue/tongue = C.getorganslot("tongue")
if((NOBLOOD in species_traits) && heart)
heart.Remove(C)
@@ -159,6 +158,11 @@
ears = new mutantears
ears.Insert(C)
+ if(tongue)
+ qdel(tongue)
+ tongue = new mutanttongue
+ tongue.Insert(C)
+
if((!(NOBREATH in species_traits)) && !lungs)
if(mutantlungs)
lungs = new mutantlungs()
diff --git a/code/modules/mob/living/carbon/human/species.dm.rej b/code/modules/mob/living/carbon/human/species.dm.rej
new file mode 100644
index 0000000000..1260400360
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species.dm.rej
@@ -0,0 +1,18 @@
+diff a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm (rejected hunks)
+@@ -66,15 +66,10 @@
+ //Flight and floating
+ var/override_float = 0
+
+-
+- //Eyes
+ var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes
+-
+- //Ears
+ var/obj/item/organ/ears/mutantears = /obj/item/organ/ears
+-
+- //Hands
+ var/obj/item/mutanthands = null
++ var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue
+
+ ///////////
+ // PROCS //
diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm
index 85b36c90c0..b76536f5bf 100644
--- a/code/modules/mob/living/carbon/human/species_types/abductors.dm
+++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm
@@ -4,6 +4,6 @@
say_mod = "gibbers"
sexes = 0
species_traits = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER)
- mutant_organs = list(/obj/item/organ/tongue/abductor)
+ mutanttongue = /obj/item/organ/tongue/abductor
var/scientist = 0 // vars to not pollute spieces list with castes
- var/team = 1
\ No newline at end of file
+ var/team = 1
diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm
index 0e63115652..1c7cc6806b 100644
--- a/code/modules/mob/living/carbon/human/species_types/android.dm
+++ b/code/modules/mob/living/carbon/human/species_types/android.dm
@@ -5,7 +5,7 @@
species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT)
meat = null
damage_overlay_type = "synth"
- mutant_organs = list(/obj/item/organ/tongue/robot)
+ mutanttongue = /obj/item/organ/tongue/robot
limbs_id = "synth"
/datum/species/android/on_species_gain(mob/living/carbon/C)
@@ -18,4 +18,4 @@
. = ..()
for(var/X in C.bodyparts)
var/obj/item/bodypart/O = X
- O.change_bodypart_status(BODYPART_ORGANIC,FALSE, TRUE)
\ No newline at end of file
+ O.change_bodypart_status(BODYPART_ORGANIC,FALSE, TRUE)
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 65b3eb9a65..3d6a10aae9 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -2,7 +2,7 @@
name = "Flyperson"
id = "fly"
say_mod = "buzzes"
- mutant_organs = list(/obj/item/organ/tongue/fly)
+ mutanttongue = /obj/item/organ/tongue/fly
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/fly
/datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 5fa3d1e4f8..ca4deab288 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -6,7 +6,7 @@
default_color = "00FF00"
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR)
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur")
- mutant_organs = list(/obj/item/organ/tongue/lizard)
+ mutanttongue = /obj/item/organ/tongue/lizard
coldmod = 1.5
heatmod = 0.67
default_features = list("mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "taur" = "None")
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm.rej b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm.rej
new file mode 100644
index 0000000000..1aab6d751d
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm (rejected hunks)
+@@ -6,7 +6,7 @@
+ default_color = "00FF00"
+ species_traits = list(MUTCOLORS,EYECOLOR,LIPS)
+ mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs")
+- mutant_organs = list(/obj/item/organ/tongue/lizard)
++ mutanttongue = /obj/item/organ/tongue/lizard
+ coldmod = 1.5
+ heatmod = 0.67
+ default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs")
diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
index 6672c69b1e..f372968270 100644
--- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
@@ -6,7 +6,7 @@
meat = /obj/item/stack/sheet/mineral/plasma
species_traits = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER)
mutantlungs = /obj/item/organ/lungs/plasmaman
- mutant_organs = list(/obj/item/organ/tongue/bone/plasmaman)
+ mutanttongue = /obj/item/organ/tongue/bone/plasmaman
dangerous_existence = 1 //So so much
blacklisted = 1 //See above
burnmod = 1.5
@@ -66,4 +66,4 @@
if(lastname)
randname += " [lastname]"
- return randname
\ No newline at end of file
+ return randname
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 97e794b466..78adf8268c 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -125,16 +125,13 @@
if(!getorganslot("tongue"))
var/obj/item/organ/tongue/T
- if(dna && dna.species)
- for(var/tongue_type in dna.species.mutant_organs)
- if(ispath(tongue_type, /obj/item/organ/tongue))
- T = new tongue_type()
- T.Insert(src)
+ if(dna && dna.species && dna.species.mutanttongue)
+ T = new dna.species.mutanttongue()
+ else
+ T = new()
// if they have no mutant tongues, give them a regular one
- if(!T)
- T = new()
- T.Insert(src)
+ T.Insert(src)
if(!getorganslot("eye_sight"))
var/obj/item/organ/eyes/E