diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm
index c8916e31f40..c8f98c1fbeb 100644
--- a/code/__DEFINES/genetics.dm
+++ b/code/__DEFINES/genetics.dm
@@ -143,27 +143,27 @@
//Species traits.
-#define IS_WHITELISTED 1
-#define LIPS 2
-#define NO_BLOOD 3
-#define NO_BREATHE 4
-#define NO_DNA 5
-#define NO_SCAN 6
-#define NO_PAIN 7
-#define IS_PLANT 8
-#define CAN_BE_FAT 9
-#define NO_INTORGANS 10
-#define RADIMMUNE 11
-#define NOGUNS 12
-#define NOTRANSSTING 13
-#define VIRUSIMMUNE 14
-#define NOCRITDAMAGE 15
-#define RESISTHOT 16
-#define RESISTCOLD 17
-#define NO_EXAMINE 18
-#define CAN_WINGDINGS 19
-#define NOZOMBIE 20
-#define NO_GERMS 21
-#define NO_DECAY 22
-#define PIERCEIMMUNE 23
-#define NO_HUNGER 24
\ No newline at end of file
+#define IS_WHITELISTED "whitelisted"
+#define LIPS "lips"
+#define NO_BLOOD "no_blood"
+#define NO_BREATHE "no_breathe"
+#define NO_DNA "no_dna"
+#define NO_SCAN "no_scan"
+#define NO_PAIN "no_pain"
+#define IS_PLANT "is_plant"
+#define CAN_BE_FAT "can_be_fat"
+#define NO_INTORGANS "no_internal_organs"
+#define RADIMMUNE "rad_immunity"
+#define NOGUNS "no_guns"
+#define NOTRANSSTING "no_trans_sting"
+#define VIRUSIMMUNE "virus_immunity"
+#define NOCRITDAMAGE "no_crit"
+#define RESISTHOT "resist_heat"
+#define RESISTCOLD "resist_cold"
+#define NO_EXAMINE "no_examine"
+#define CAN_WINGDINGS "can_wingdings"
+#define NOZOMBIE "no_zombie"
+#define NO_GERMS "no_germs"
+#define NO_DECAY "no_decay"
+#define PIERCEIMMUNE "pierce_immunity"
+#define NO_HUNGER "no_hunger"
\ No newline at end of file
diff --git a/code/__DEFINES/station_goals.dm b/code/__DEFINES/station_goals.dm
index ce1723e6521..7c13f4f9e67 100644
--- a/code/__DEFINES/station_goals.dm
+++ b/code/__DEFINES/station_goals.dm
@@ -1,8 +1,2 @@
#define BSA_SIZE_FRONT 4
-#define BSA_SIZE_BACK 6
-
-#define VAULT_SPACEIMMUNE "Space Immunity"
-#define VAULT_XRAY "X-Ray Vision"
-#define VAULT_TELEKINESIS "Telekinesis"
-#define VAULT_PSYCHIC "Psychic Powers"
-#define VAULT_SPEED "Speediness"
\ No newline at end of file
+#define BSA_SIZE_BACK 6
\ No newline at end of file
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index f526659d664..f8b231372dc 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -39,7 +39,7 @@
return 0
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.dna.species && H.dna.species.slowdown && !(flags & MUTCHK_FORCED))
+ if(H.dna.species && H.dna.species.speed_mod && !(flags & MUTCHK_FORCED))
return 0
return 1
diff --git a/code/modules/awaymissions/mission_code/academy.dm b/code/modules/awaymissions/mission_code/academy.dm
index e41e29a747f..f8d66058199 100644
--- a/code/modules/awaymissions/mission_code/academy.dm
+++ b/code/modules/awaymissions/mission_code/academy.dm
@@ -125,7 +125,7 @@
//Cut speed
T.visible_message("[user] starts moving slower!")
var/datum/species/S = user.dna.species
- S.slowdown += 1
+ S.speed_mod += 1
if(7)
//Throw
T.visible_message("Unseen forces throw [user]!")
diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm
index 19861534af9..84c65f7d356 100644
--- a/code/modules/mob/living/carbon/human/species/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/_species.dm
@@ -18,7 +18,6 @@
var/tail // Name of tail image in species effects icon file.
var/datum/unarmed_attack/unarmed //For empty hand harm-intent attack
var/unarmed_type = /datum/unarmed_attack
- var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
var/silent_steps = 0 // Stops step noises
var/cold_level_1 = 260 // Cold damage level 1 below this point.
@@ -52,7 +51,7 @@
var/brain_mod = 1 // Brain damage damage reduction/amplification
var/stamina_mod = 1
var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis
- var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
+ var/speed_mod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
var/blood_damage_type = OXY //What type of damage does this species take if it's low on blood?
var/obj/item/mutanthands
var/total_health = 100
@@ -232,8 +231,8 @@
gravity = 1
if(!ignoreslow && gravity)
- if(slowdown)
- . = slowdown
+ if(speed_mod)
+ . = speed_mod
if(H.wear_suit)
. += H.wear_suit.slowdown
diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm
index 0328e99a6a0..7c92d8748bd 100644
--- a/code/modules/mob/living/carbon/human/species/golem.dm
+++ b/code/modules/mob/living/carbon/human/species/golem.dm
@@ -7,7 +7,7 @@
species_traits = list(NO_BREATHE, NO_BLOOD, NO_PAIN, RADIMMUNE, NOGUNS, PIERCEIMMUNE)
dies_at_threshold = TRUE
- slowdown = 2
+ speed_mod = 2
brute_mod = 0.45 //55% damage reduction
burn_mod = 0.45
tox_mod = 0.45
@@ -214,7 +214,7 @@
/datum/species/golem/gold
name = "Gold Golem"
golem_colour = rgb(204, 204, 0)
- slowdown = 1
+ speed_mod = 1
brute_mod = 0.75 //25% damage reduction down from 55%
burn_mod = 0.75
tox_mod = 0.75
@@ -244,7 +244,7 @@
punchdamagelow = 12
punchdamagehigh = 21
punchstunthreshold = 18 //still 40% stun chance
- slowdown = 4 //pretty fucking slow
+ speed_mod = 4 //pretty fucking slow
skinned_type = /obj/item/stack/ore/iron
info_text = "As a Plasteel Golem, you are slower, but harder to stun, and hit very hard when punching."
prefix = "Plasteel"
@@ -300,7 +300,7 @@
skinned_type = /obj/item/stack/sheet/mineral/abductor
language = "Golem Mindlink"
default_language = "Golem Mindlink"
- slowdown = 1 //faster
+ speed_mod = 1 //faster
info_text = "As an Alloy Golem, you are made of advanced alien materials: you are faster and regenerate over time. You are, however, only able to speak telepathically to other alloy golems."
prefix = "Alien"
special_names = list("Outsider", "Technology", "Watcher", "Stranger") //ominous and unknown
diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm
index 6240e2673bd..61c34ab41d9 100644
--- a/code/modules/mob/living/carbon/human/species/unathi.dm
+++ b/code/modules/mob/living/carbon/human/species/unathi.dm
@@ -116,5 +116,5 @@
language = "Sinta'unathi"
default_language = "Sinta'unathi"
- slowdown = -0.80
+ speed_mod = -0.80
species_traits = list(NO_BREATHE, NOGUNS)
diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm
index 450da31b591..3fec4822919 100644
--- a/code/modules/mob/living/carbon/human/species/wryn.dm
+++ b/code/modules/mob/living/carbon/human/species/wryn.dm
@@ -8,7 +8,7 @@
tail = "wryntail"
punchdamagelow = 0
punchdamagehigh = 1
- slowdown = 1
+ speed_mod = 1
warning_low_pressure = -300
hazard_low_pressure = 1
blurb = "The wryn (r-in, singular r-in) are a humanoid race that possess many bee-like features. Originating from Alveare they \
diff --git a/code/modules/mob/living/carbon/human/species/zombies.dm b/code/modules/mob/living/carbon/human/species/zombies.dm
index fcc8d2feeb8..1f1c4d979b7 100644
--- a/code/modules/mob/living/carbon/human/species/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species/zombies.dm
@@ -42,7 +42,7 @@
clone_mod = 0.8
brain_mod = 0.8
stamina_mod = 0.8
- speedmod = 1.6
+ speed_mod = 1.6
default_language = "Zombie"
var/heal_rate = 1
var/regen_cooldown = 0
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index 95b155df4cc..5cc26bcca14 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -3,6 +3,13 @@
// DNA vault requires x animals ,y plants, z human dna
// DNA vaults require high tier stock parts and cold
// After completion each crewmember can receive single upgrade chosen out of 2 for the mob.
+#define VAULT_TOXIN "Toxin Adaptation"
+#define VAULT_NOBREATH "Lung Enhancement"
+#define VAULT_FIREPROOF "Thermal Regulation"
+#define VAULT_STUNTIME "Neural Repathing"
+#define VAULT_ARMOUR "Bone Reinforcement"
+#define VAULT_SPEED "Leg Muscle Stimulus"
+#define VAULT_QUICK "Arm Muscle Stimulus"
/datum/station_goal/dna_vault
name = "DNA Vault"
@@ -115,7 +122,8 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/human/monkey,/
build_path = /obj/machinery/dna_vault
origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies!
req_components = list(
- /obj/item/stock_parts/capacitor/quadratic = 5,
+ /obj/item/stock_parts/capacitor/super = 5,
+ /obj/item/stock_parts/manipulator/pico = 5,
/obj/item/stack/cable_coil = 2)
/obj/structure/filler
@@ -204,7 +212,7 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/human/monkey,/
if(user in power_lottery)
return
var/list/L = list()
- var/list/possible_powers = list(VAULT_SPACEIMMUNE,VAULT_XRAY,VAULT_TELEKINESIS,VAULT_PSYCHIC,VAULT_SPEED)
+ var/list/possible_powers = list(VAULT_TOXIN, VAULT_NOBREATH, VAULT_FIREPROOF, VAULT_STUNTIME, VAULT_ARMOUR, VAULT_SPEED, VAULT_QUICK)
L += pick_n_take(possible_powers)
L += pick_n_take(possible_powers)
power_lottery[user] = L
@@ -267,34 +275,49 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/human/monkey,/
return
if(!completed)
return
- if(!H.ignore_gene_stability)
- to_chat(H, "[src] stabilizes your genes, granting you the ability to have multiple powers.")
- H.ignore_gene_stability = 1
+ var/datum/species/S = H.dna.species
+ if(NO_DNA in S.species_traits)
+ to_chat(H, "Error, no DNA detected.")
+ return
switch(upgrade_type)
- if(VAULT_SPACEIMMUNE)
- to_chat(H, "You suddenly don't feel the need to breathe anymore. You also don't feel any cold anymore.")
- grant_power(H, BREATHLESSBLOCK, BREATHLESS)
- grant_power(H, FIREBLOCK, COLDRES)
- if(VAULT_XRAY)
- to_chat(H, "You can suddenly see through walls.")
- grant_power(H, XRAYBLOCK, XRAY)
- if(VAULT_TELEKINESIS)
- to_chat(H, "You gain the ability to control objects from a distance.")
- grant_power(H, TELEBLOCK, TK)
- if(VAULT_PSYCHIC)
- to_chat(H, "Your mind expands, giving you psychic powers.")
- grant_power(H, REMOTETALKBLOCK, REMOTE_TALK)
- grant_power(H, REMOTEVIEWBLOCK, REMOTE_VIEW)
- grant_power(H, EMPATHBLOCK, EMPATH)
- grant_power(H, PSYRESISTBLOCK, PSY_RESIST)
+ if(VAULT_TOXIN)
+ to_chat(H, "You feel resistant to airborne toxins.")
+ var/obj/item/organ/internal/lungs/L = H.get_int_organ(/obj/item/organ/internal/lungs)
+ if(L)
+ L.tox_breath_dam_multiplier = 0
+ S.species_traits |= VIRUSIMMUNE
+ if(VAULT_NOBREATH)
+ to_chat(H, "Your lungs feel great.")
+ S.species_traits |= NO_BREATHE
+ if(VAULT_FIREPROOF)
+ to_chat(H, "You feel fireproof.")
+ S.burn_mod *= 0.5
+ S.species_traits |= RESISTHOT
+ if(VAULT_STUNTIME)
+ to_chat(H, "Nothing can keep you down for long.")
+ S.stun_mod *= 0.5
+ if(VAULT_ARMOUR)
+ to_chat(H, "You feel tough.")
+ S.brute_mod *= 0.7
+ S.burn_mod *= 0.7
+ S.tox_mod *= 0.7
+ S.oxy_mod *= 0.7
+ S.clone_mod *= 0.7
+ S.brain_mod *= 0.7
+ S.stamina_mod *= 0.7
+ S.species_traits |= PIERCEIMMUNE
if(VAULT_SPEED)
to_chat(H, "You feel very fast and agile.")
- grant_power(H, JUMPBLOCK, JUMPY)
- grant_power(H, INCREASERUNBLOCK, RUN)
+ S.speed_mod = -1
+ if(VAULT_QUICK)
+ to_chat(H, "Your arms move as fast as lightning.")
+ H.next_move_modifier = 0.5
power_lottery[H] = list()
-/obj/machinery/dna_vault/proc/grant_power(mob/living/carbon/human/H, block, power)
- H.dna.SetSEState(block, 1, 1)
- H.mutations |= power
- genemutcheck(H, block, null, MUTCHK_FORCED)
- H.dna.default_blocks.Add(block) //prevent removal by mutadone
+#undef VAULT_TOXIN
+#undef VAULT_NOBREATH
+#undef VAULT_FIREPROOF
+#undef VAULT_STUNTIME
+#undef VAULT_ARMOUR
+#undef VAULT_SPEED
+#undef VAULT_QUICK
\ No newline at end of file