diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index d3f4abef037..2c5c77ffa9c 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -36,7 +36,7 @@ #define NO_BLOOD 1 #define NO_BREATHE 2 -#define NO_DNA_RAD 4 +#define NO_DNA 4 #define RAD_ABSORB 8 #define NO_SCAN 16 #define NO_PAIN 32 @@ -48,6 +48,7 @@ #define IS_RESTRICTED 2048 #define NO_INTORGANS 4096 #define NO_POISON 8192 +#define RADIMMUNE 16384 //Species clothing flags #define HAS_UNDERWEAR 1 diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm index 745af66ac15..8bf993f43eb 100644 --- a/code/game/dna/dna2_domutcheck.dm +++ b/code/game/dna/dna2_domutcheck.dm @@ -5,7 +5,7 @@ // flags: See below, bitfield. #define MUTCHK_FORCED 1 /proc/domutcheck(var/mob/living/M, var/connected=null, var/flags=0) - + for(var/datum/dna/gene/gene in dna_genes) if(!M || !M.dna) return @@ -52,7 +52,7 @@ /proc/genemutcheck(var/mob/living/M, var/block, var/connected=null, var/flags=0) if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure. var/mob/living/carbon/human/H = M - if(H.species.flags & NO_DNA_RAD) + if(H.species.flags & NO_DNA) return if(!M) return @@ -76,12 +76,12 @@ var/gene_active = (gene.flags & GENE_ALWAYS_ACTIVATE) if(!gene_active) gene_active = M.dna.GetSEState(gene.block) - + var/defaultgenes // Do not mutate inherent species abilities if(ishuman(M)) var/mob/living/carbon/human/H = M defaultgenes = H.species.default_genes - + if((gene in defaultgenes) && gene_active) return diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 4fa679e5d55..3e3a3d4287a 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -326,7 +326,7 @@ if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant - if((H.species.flags & NO_DNA_RAD)) + if((H.species.flags & NO_DNA)) return 1 var/radiation_protection = occupant.run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm.") diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 01c0b9ed535..e5ebf16975c 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -385,7 +385,7 @@ // 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, delay_ready_dna=1) + var/mob/living/carbon/human/skeleton/nH = new /mob/living/carbon/human/skeleton(H.loc, delay_ready_dna=1) nH.real_name = H.real_name nH.name = "[H.name]'s skeleton" //H.decomp_stage = 4 diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index bc323d14c3c..324fa636740 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -316,7 +316,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" user << "DNA of [target] is ruined beyond usability!" return - if(T.species.flags & NO_DNA_RAD) + if(T.species.flags & NO_DNA) user << "This creature does not have DNA!" return diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm index be5df7d9a67..09ecf7029bb 100644 --- a/code/game/gamemodes/changeling/powers/swap_form.dm +++ b/code/game/gamemodes/changeling/powers/swap_form.dm @@ -17,7 +17,7 @@ if((NOCLONE || SKELETON || HUSK) in target.mutations) user << "DNA of [target] is ruined beyond usability!" return - if(!istype(target) || issmall(target) || target.species.flags & NO_DNA_RAD || target.species.flags & NO_SCAN || target.species.flags & NO_BLOOD) + if(!istype(target) || issmall(target) || target.species.flags & NO_DNA || target.species.flags & NO_SCAN || target.species.flags & NO_BLOOD) user << "[target] is not compatible with this ability." return return 1 diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index eae015b09e7..8a522c08f3b 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -99,7 +99,7 @@ if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure. var/mob/living/carbon/human/H = M - if(H.species.flags & NO_DNA_RAD) + if(H.species.flags & NO_DNA) return 0 if (!user.IsAdvancedToolUser()) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 1dfe1b68fc5..ca4d59fbe6a 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -1,5 +1,5 @@ // PLASMEN SHIT -// CAN'T WEAR UNLESS YOU'RE A PINK SKELLINGTON +// CAN'T WEAR UNLESS YOU'RE A PINK SKELETON /obj/item/clothing/suit/space/eva/plasmaman name = "plasmaman suit" desc = "A special containment suit designed to protect a plasmaman's volatile body from outside exposure and quickly extinguish it in emergencies." diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 1d5ac326517..d7877676b21 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -4,7 +4,7 @@ /datum/event/mass_hallucination/start() for(var/mob/living/carbon/human/H in living_mob_list) var/armor = H.getarmor(type = "rad") - if((H.species.flags & NO_DNA_RAD) || armor >= 75) // Leave DNA-less species/rad armored players completely unaffected + if((H.species.flags & RADIMMUNE) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected continue H.hallucination += rand(50, 100) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index b297f898feb..f798e9984d4 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -37,7 +37,7 @@ for(var/i = 0, i < 10, i++) for(var/mob/living/carbon/human/H in living_mob_list) var/armor = H.getarmor(type = "rad") - if((H.species.flags & NO_DNA_RAD) || armor >= 100) // Leave DNA-less species/fully rad armored players completely unaffected + if((H.species.flags & RADIMMUNE) || armor >= 100) // Leave radiation-immune species/fully rad armored players completely unaffected continue var/turf/T = get_turf(H) if(!T) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5dc9f08b6b9..4978be101d3 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -95,9 +95,9 @@ h_style = "Bald" ..(new_loc, "Vox Armalis") -/mob/living/carbon/human/skellington/New(var/new_loc) +/mob/living/carbon/human/skeleton/New(var/new_loc) h_style = "Bald" - ..(new_loc, "Skellington") + ..(new_loc, "Skeleton") /mob/living/carbon/human/kidan/New(var/new_loc) ..(new_loc, "Kidan") diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e088434d7e3..cbf77866005 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -142,7 +142,7 @@ /mob/living/carbon/human/adjustCloneLoss(var/amount) ..() - if(species.flags & (NO_DNA_RAD)) + if(species.flags & (NO_DNA)) cloneloss = 0 return diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 233d4eabb6d..8677aa80420 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -213,85 +213,86 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc speech_problem_flag = 1 gene.OnMobLife(src) - if (radiation) + if(!(species.flags & RADIMMUNE)) + if (radiation) - if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) - var/rads = radiation/25 - radiation -= rads - radiation -= 0.1 - reagents.add_reagent("radium", rads/10) - if( prob(10) ) - src << "You feel relaxed." - return - - if (radiation > 100) - radiation = 100 - if(!(species.flags & RAD_ABSORB)) - Weaken(10) - if(!lying) - src << "You feel weak." - emote("collapse") - - if (radiation < 0) - radiation = 0 - - else - if(species.flags & RAD_ABSORB) + if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) var/rads = radiation/25 radiation -= rads - nutrition += rads - adjustBruteLoss(-(rads)) - adjustOxyLoss(-(rads)) - adjustToxLoss(-(rads)) - updatehealth() + radiation -= 0.1 + reagents.add_reagent("radium", rads/10) + if( prob(10) ) + src << "You feel relaxed." return - var/damage = 0 - switch(radiation) - if(0 to 49) - radiation-- - if(prob(25)) - adjustToxLoss(1) + if (radiation > 100) + radiation = 100 + if(!(species.flags & RAD_ABSORB)) + Weaken(10) + if(!lying) + src << "You feel weak." + emote("collapse") + + if (radiation < 0) + radiation = 0 + + else + if(species.flags & RAD_ABSORB) + var/rads = radiation/25 + radiation -= rads + nutrition += rads + adjustBruteLoss(-(rads)) + adjustOxyLoss(-(rads)) + adjustToxLoss(-(rads)) + updatehealth() + return + + var/damage = 0 + switch(radiation) + if(0 to 49) + radiation-- + if(prob(25)) + adjustToxLoss(1) + damage = 1 + updatehealth() + + if(50 to 74) + radiation -= 2 damage = 1 + adjustToxLoss(1) + if(prob(5)) + radiation -= 5 + Weaken(3) + if(!lying) + src << "You feel weak." + emote("collapse") updatehealth() - if(50 to 74) - radiation -= 2 - damage = 1 - adjustToxLoss(1) - if(prob(5)) + if(75 to 100) + radiation -= 3 + adjustToxLoss(3) + damage = 3 + if(prob(1)) + src << "You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() + + else radiation -= 5 - Weaken(3) - if(!lying) - src << "You feel weak." - emote("collapse") - updatehealth() + adjustToxLoss(5) + damage = 5 + if(prob(1)) + src << "You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() - if(75 to 100) - radiation -= 3 - adjustToxLoss(3) - damage = 3 - if(prob(1)) - src << "You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() - - else - radiation -= 5 - adjustToxLoss(5) - damage = 5 - if(prob(1)) - src << "You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() - - if(damage && organs.len) - var/obj/item/organ/external/O = pick(organs) - if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) + if(damage && organs.len) + var/obj/item/organ/external/O = pick(organs) + if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) /mob/living/carbon/human/breathe() if(reagents.has_reagent("lexorin")) @@ -844,7 +845,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //the analgesic effect wears off slowly analgesic = max(0, analgesic - 1) - if(hallucination && !(species.flags & NO_DNA_RAD)) + if(hallucination) spawn() handle_hallucinations() diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm new file mode 100644 index 00000000000..82c7864dd46 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -0,0 +1,33 @@ +/datum/species/skeleton + name = "Skeleton" + name_plural = "Skeletons" + + blurb = "Spoopy and scary." + + icobase = 'icons/mob/human_races/r_skeleton.dmi' + deform = 'icons/mob/human_races/r_skeleton.dmi' + path = /mob/living/carbon/human/skeleton + default_language = "Galactic Common" + unarmed_type = /datum/unarmed_attack/punch + + blood_color = "#FFFFFF" + flesh_color = "#E6E6C6" + + flags = NO_BREATHE | NO_BLOOD | RADIMMUNE + virus_immune = 1 //why is this a var and not a flag? + dietflags = DIET_OMNI + reagent_tag = PROCESS_ORG + + warning_low_pressure = -1 + hazard_low_pressure = -1 + hazard_high_pressure = 999999999 + warning_high_pressure = 999999999 + + cold_level_1 = -1 + cold_level_2 = -1 + cold_level_3 = -1 + + heat_level_1 = 999999999 + heat_level_2 = 999999999 + heat_level_3 = 999999999 + heat_level_3_breathe = 999999999 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 1b47c7a30ed..ff9ae6ff835 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -496,7 +496,7 @@ passive_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. - flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA_RAD | NO_POISON + flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA | NO_POISON | RADIMMUNE clothing_flags = HAS_SOCKS bodyflags = HAS_SKIN_COLOR dietflags = 0 //IPCs can't eat, so no diet diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 999ebacb58d..a19572f67a2 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -78,7 +78,7 @@ return 1 /mob/living/carbon/human/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/negate_armor = 0) - if((effecttype == IRRADIATE) && (species.flags & NO_DNA_RAD)) + if((effecttype == IRRADIATE) && (species.flags & RADIMMUNE)) return 0 return ..() diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index ce2a34259ea..4643974d0eb 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -64,7 +64,7 @@ name = "Bald" icon_state = "bald" gender = MALE - species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skellington") + species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skeleton") short name = "Short Hair" // try to capatilize the names please~ @@ -1069,7 +1069,7 @@ /datum/sprite_accessory/underwear icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skellington") + species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skeleton") nude name = "Nude" @@ -1217,7 +1217,7 @@ /datum/sprite_accessory/undershirt icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skellington") + species_allowed = list("Human","Unathi","Vox","Diona","Vulpkanin","Kidan","Grey","Plasmaman","Skeleton") /datum/sprite_accessory/undershirt/nude name = "Nude" @@ -1503,13 +1503,13 @@ /////////////////////// /datum/sprite_accessory/socks icon = 'icons/mob/underwear.dmi' - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skeleton") /datum/sprite_accessory/socks/nude name = "Nude" icon_state = null gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skeleton","Vox") /datum/sprite_accessory/socks/white_norm @@ -1681,7 +1681,7 @@ /datum/sprite_accessory/head_accessory/none name = "None" - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skeleton","Vox") icon_state = "accessory_none" /datum/sprite_accessory/head_accessory/simple @@ -1773,7 +1773,7 @@ /datum/sprite_accessory/body_markings/none name = "None" - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skeleton","Vox") icon_state = "accessory_none" /datum/sprite_accessory/body_markings/stripe diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index ef21731868d..d54115adcfe 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -348,14 +348,14 @@ E.droplimb(0,DROPLIMB_EDGE) if(3) if(ishuman(mob)) - if(H.species.name != "Skellington") + if(H.species.name != "Skeleton") mob << " Your necrotic skin ruptures!" for (var/obj/item/organ/external/E in H.organs) if(pick(1,0) && !(E.status & ORGAN_ROBOT)) E.createwound(CUT, pick(2,4)) if(prob(30)) - if(H.species.name != "Skellington") - if(H.set_species("Skellington")) + if(H.species.name != "Skeleton") + if(H.set_species("Skeleton")) mob << " A massive amount of flesh sloughs off your bones!" H.regenerate_icons() else diff --git a/icons/mob/human_races/r_skeleton.dmi b/icons/mob/human_races/r_skeleton.dmi index f67639aa96b..a350c3f4c4d 100644 Binary files a/icons/mob/human_races/r_skeleton.dmi and b/icons/mob/human_races/r_skeleton.dmi differ diff --git a/paradise.dme b/paradise.dme index c173704f225..9de3d4ce5d5 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1396,6 +1396,7 @@ #include "code\modules\mob\living\carbon\human\species\monkey.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\human\species\skeleton.dm" #include "code\modules\mob\living\carbon\human\species\species.dm" #include "code\modules\mob\living\carbon\human\species\station.dm" #include "code\modules\mob\living\carbon\slime\death.dm"