diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3d456654b0a..2f003dbc75c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -46,6 +46,10 @@ dna.mutantrace = "slime" ..() +/mob/living/carbon/human/grey/New() + set_species("Grey") + ..() + /mob/living/carbon/human/skellington/New() species = new /datum/species/skellington(src) ..() @@ -1320,7 +1324,7 @@ mob/living/carbon/human/yank_out_object() else usr << "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)]." -/mob/living/carbon/human/proc/set_species(var/new_species) +/mob/living/carbon/human/proc/set_species(var/new_species,var/on_spawn=0) if(!new_species) new_species = "Human" @@ -1339,6 +1343,10 @@ mob/living/carbon/human/yank_out_object() if(species.name=="Slime People") dna.mutantrace = "slime" + if(mutations.len==0) + mutations=species.default_mutations + + spawn(0) update_icons() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 0084fab689c..82ac38a018e 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -117,7 +117,7 @@ log_attack("[M.name] ([M.ckey]) [M.species.attack_verb]ed [src.name] ([src.ckey])") - var/damage = rand(0, 5)//BS12 EDIT + var/damage = rand(0, M.species.max_hurt_damage)//BS12 EDIT if(!damage) if(M.species.attack_verb == "punch") playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 4ce04615781..f1c0d666209 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -31,6 +31,7 @@ var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning. var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure. + // This shit is apparently not even wired up. var/brute_resist // Physical damage reduction. var/burn_resist // Burn damage reduction. @@ -38,6 +39,10 @@ var/bloodflags=0 var/bodyflags=0 + // For grays + var/max_hurt_damage = 5 // Max melee damage dealt + 5 if hulk + var/default_mutations = list() + /datum/species/human name = "Human" @@ -177,7 +182,10 @@ deform = 'icons/mob/human_races/r_def_grey.dmi' language = "Galactic Standard" attack_verb = "punch" - darksight = 8 + path = /mob/living/carbon/human/grey + darksight = 5 // BOOSTED from 2 + max_hurt_damage = 3 // From 5 (for humans) + default_mutations=list(mRemotetalk) // TK is also another candidate, but TK is overpowered as fuck. primitive = /mob/living/carbon/monkey // TODO diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 0ef8269f138..7c7bf9c3dfb 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -371,6 +371,8 @@ new_character = new /mob/living/carbon/human/kidan(loc) if("Skellington") new_character = new /mob/living/carbon/human/skellington(loc) + if("Grey") + new_character = new /mob/living/carbon/human/grey(loc) if("Human") new_character = new /mob/living/carbon/human(loc) // new_character.set_species(client.prefs.species) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index a00747f5f13..5d2d361067e 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -213,6 +213,44 @@ datum color = "#0064C8" // rgb: 0, 100, 200 custom_metabolism = 0.01 + on_mob_life(var/mob/living/M as mob) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species.name=="Grey") + if(!M) M = holder.my_atom + M.adjustToxLoss(1*REM) + M.take_organ_damage(0, 1*REM) + ..() + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + + // Grays treat water like acid. + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species.name=="Grey") + if(method == TOUCH) + if(H.wear_mask) + H << "\red Your mask protects you from the water!" + return + if(H.head) + H << "\red Your helmet protects you from the water!" + return + if(!M.unacidable) + if(prob(15) && volume >= 30) + var/datum/organ/external/affecting = H.get_organ("head") + if(affecting) + if(affecting.take_damage(25, 0)) + H.UpdateDamageIcon() + H.status_flags |= DISFIGURED + H.emote("scream") + else + M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl + else + if(!M.unacidable) + M.take_organ_damage(min(15, volume * 2)) + + reaction_turf(var/turf/simulated/T, var/volume) if (!istype(T)) return src = null @@ -826,8 +864,12 @@ datum return if(!M.unacidable) - if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30) + if(prob(15) && istype(M, /mob/living/carbon/human/grey) && volume >= 30) var/mob/living/carbon/human/H = M + if(H.species.name=="Grey") + ..() + return // Greys lurve dem some sacid + var/datum/organ/external/affecting = H.get_organ("head") if(affecting) if(affecting.take_damage(25, 0)) @@ -838,6 +880,11 @@ datum M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl else if(!M.unacidable) + if(ishuman(M)) + var/mob/living/carbon/human/grey/H = M + if(H.species.name=="Grey") + ..() + return // Greys lurve dem some sacid M.take_organ_damage(min(15, volume * 2)) reaction_obj(var/obj/O, var/volume)