~Promethean Tweaks: The one with the chemicals, and the other thing. (#5201)

* Promethean Tweaks Round Howevermany We're On Now

* Tweak again. Drinks only plink damage that can be regenned. Multiple drinks, or other sources of tox will still mean these are dangerous.

* Add Blurb other than just "What has science done?"

* Adds the changelog.

* Fixes the stupid.

* Fixfix @ Ater
This commit is contained in:
Mechoid
2018-05-01 12:23:47 -07:00
committed by Atermonera
parent 7075a65df0
commit 1db4c4b677
13 changed files with 504 additions and 79 deletions
@@ -661,12 +661,13 @@
I = internal_organs_by_name[O_EYES]
if(I.is_broken())
return FLASH_PROTECTION_MAJOR
else // They can't be flashed if they don't have eyes.
else if(!species.dispersed_eyes) // They can't be flashed if they don't have eyes, or widespread sensing surfaces.
return FLASH_PROTECTION_MAJOR
var/number = get_equipment_flash_protection()
number = I.get_total_protection(number)
I.additional_flash_effects(number)
if(I)
number = I.get_total_protection(number)
I.additional_flash_effects(number)
return number
#define add_clothing_protection(A) \
@@ -107,6 +107,11 @@
tally += item_tally
if(CE_SLOWDOWN in chem_effects)
if (tally >= 0 )
tally = (tally + tally/4) //Add a quarter of penalties on top.
tally += 1
if(CE_SPEEDBOOST in chem_effects)
if (tally >= 0) // cut any penalties in half
tally = tally/2
@@ -75,13 +75,14 @@
/datum/unarmed_attack/bite
)
var/list/unarmed_attacks = null // For empty hand harm-intent attack
var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier.
var/oxy_mod = 1 // Oxyloss modifier
var/toxins_mod = 1 // Toxloss modifier
var/radiation_mod = 1 // Radiation modifier
var/flash_mod = 1 // Stun from blindness modifier.
var/chemOD_mod = 1 // Damage modifier for overdose
var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier.
var/oxy_mod = 1 // Oxyloss modifier
var/toxins_mod = 1 // Toxloss modifier
var/radiation_mod = 1 // Radiation modifier
var/flash_mod = 1 // Stun from blindness modifier.
var/sound_mod = 1 // Stun from sounds, I.E. flashbangs.
var/chemOD_mod = 1 // Damage modifier for overdose
var/vision_flags = SEE_SELF // Same flags as glasses.
// Death vars.
@@ -189,6 +190,7 @@
O_EYES = /obj/item/organ/internal/eyes
)
var/vision_organ // If set, this organ is required for vision. Defaults to "eyes" if the species has them.
var/dispersed_eyes // If set, the species will be affected by flashbangs regardless if they have eyes or not, as they see in large areas.
var/list/has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
@@ -5,7 +5,11 @@ var/datum/species/shapeshifter/promethean/prometheans
name = SPECIES_PROMETHEAN
name_plural = "Prometheans"
blurb = "What has Science done?"
blurb = "Prometheans (Macrolimus artificialis) are a species of artificially-created gelatinous humanoids, \
chiefly characterized by their primarily liquid bodies and ability to change their bodily shape and color in order to \
mimic many forms of life. Derived from the Aetolian giant slime (Macrolimus vulgaris) inhabiting the warm, tropical planet \
of Aetolus, they are a relatively new lab-created sapient species, and as such many things about them have yet to be comprehensively studied. \
What has Science done?"
show_ssd = "totally quiescent"
death_message = "rapidly loses cohesion, splattering across the ground..."
knockout_message = "collapses inwards, forming a disordered puddle of goo."
@@ -46,6 +50,8 @@ var/datum/species/shapeshifter/promethean/prometheans
brute_mod = 0.75
burn_mod = 2
oxy_mod = 0
flash_mod = 0.5 //No centralized, lensed eyes.
item_slowdown_mod = 1.33
cloning_modifier = /datum/modifier/cloning_sickness/promethean
@@ -66,6 +72,9 @@ var/datum/species/shapeshifter/promethean/prometheans
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
has_organ = list(O_BRAIN = /obj/item/organ/internal/brain/slime) // Slime core.
dispersed_eyes = TRUE
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest/unbreakable/slime),
BP_GROIN = list("path" = /obj/item/organ/external/groin/unbreakable/slime),
@@ -143,22 +152,37 @@ var/datum/species/shapeshifter/promethean/prometheans
var/turf/T = H.loc
if(istype(T))
var/obj/effect/decal/cleanable/C = locate() in T
if(C)
if(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)))
return
if(C && !(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET))))
qdel(C)
if (istype(T, /turf/simulated))
var/turf/simulated/S = T
S.dirt = 0
H.nutrition += rand(15, 45)
H.nutrition = min(500, max(0, H.nutrition + rand(15, 30)))
// Heal remaining damage.
if(H.fire_stacks >= 0)
if(H.getBruteLoss() || H.getFireLoss() || H.getOxyLoss() || H.getToxLoss())
H.adjustBruteLoss(-heal_rate)
H.adjustFireLoss(-heal_rate)
H.adjustOxyLoss(-heal_rate)
H.adjustToxLoss(-heal_rate)
var/nutrition_cost = 0
var/nutrition_debt = H.getBruteLoss()
var/starve_mod = 1
if(H.nutrition <= 25)
starve_mod = 0.75
H.adjustBruteLoss(-heal_rate * starve_mod)
nutrition_cost += nutrition_debt - H.getBruteLoss()
nutrition_debt = H.getFireLoss()
H.adjustFireLoss(-heal_rate * starve_mod)
nutrition_cost += nutrition_debt - H.getFireLoss()
nutrition_debt = H.getOxyLoss()
H.adjustOxyLoss(-heal_rate * starve_mod)
nutrition_cost += nutrition_debt - H.getOxyLoss()
nutrition_debt = H.getToxLoss()
H.adjustToxLoss(-heal_rate * starve_mod)
nutrition_cost += nutrition_debt - H.getToxLoss()
H.nutrition -= (2 * nutrition_cost) //Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired.
H.nutrition = max(0, H.nutrition) //Ensure it's not below 0.
else
H.adjustToxLoss(2*heal_rate) // Doubled because 0.5 is miniscule, and fire_stacks are capped in both directions