DNA Vault Rework (#12455)

This commit is contained in:
Fox McCloud
2019-10-08 21:33:43 -04:00
committed by variableundefined
parent 29fb8dbe2e
commit 386e270122
10 changed files with 88 additions and 72 deletions
+24 -24
View File
@@ -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
#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"
+1 -7
View File
@@ -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"
#define BSA_SIZE_BACK 6
+1 -1
View File
@@ -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
@@ -125,7 +125,7 @@
//Cut speed
T.visible_message("<span class='userdanger'>[user] starts moving slower!</span>")
var/datum/species/S = user.dna.species
S.slowdown += 1
S.speed_mod += 1
if(7)
//Throw
T.visible_message("<span class='userdanger'>Unseen forces throw [user]!</span>")
@@ -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
@@ -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 <span class='danger'>Plasteel Golem</span>, 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 <span class='danger'>Alloy Golem</span>, 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
@@ -116,5 +116,5 @@
language = "Sinta'unathi"
default_language = "Sinta'unathi"
slowdown = -0.80
speed_mod = -0.80
species_traits = list(NO_BREATHE, NOGUNS)
@@ -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 \
@@ -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
+51 -28
View File
@@ -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, "<span class='notice'>[src] stabilizes your genes, granting you the ability to have multiple powers.</span>")
H.ignore_gene_stability = 1
var/datum/species/S = H.dna.species
if(NO_DNA in S.species_traits)
to_chat(H, "<span class='warning'>Error, no DNA detected.</span>")
return
switch(upgrade_type)
if(VAULT_SPACEIMMUNE)
to_chat(H, "<span class='notice'>You suddenly don't feel the need to breathe anymore. You also don't feel any cold anymore.</span>")
grant_power(H, BREATHLESSBLOCK, BREATHLESS)
grant_power(H, FIREBLOCK, COLDRES)
if(VAULT_XRAY)
to_chat(H, "<span class='notice'>You can suddenly see through walls.</span>")
grant_power(H, XRAYBLOCK, XRAY)
if(VAULT_TELEKINESIS)
to_chat(H, "<span class='notice'>You gain the ability to control objects from a distance.</span>")
grant_power(H, TELEBLOCK, TK)
if(VAULT_PSYCHIC)
to_chat(H, "<span class='notice'>Your mind expands, giving you psychic powers.</span>")
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, "<span class='notice'>You feel resistant to airborne toxins.</span>")
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, "<span class='notice'>Your lungs feel great.</span>")
S.species_traits |= NO_BREATHE
if(VAULT_FIREPROOF)
to_chat(H, "<span class='notice'>You feel fireproof.</span>")
S.burn_mod *= 0.5
S.species_traits |= RESISTHOT
if(VAULT_STUNTIME)
to_chat(H, "<span class='notice'>Nothing can keep you down for long.</span>")
S.stun_mod *= 0.5
if(VAULT_ARMOUR)
to_chat(H, "<span class='notice'>You feel tough.</span>")
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, "<span class='notice'>You feel very fast and agile.</span>")
grant_power(H, JUMPBLOCK, JUMPY)
grant_power(H, INCREASERUNBLOCK, RUN)
S.speed_mod = -1
if(VAULT_QUICK)
to_chat(H, "<span class='notice'>Your arms move as fast as lightning.</span>")
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