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"