mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
~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:
@@ -33,6 +33,7 @@
|
||||
#define CE_ALCOHOL "alcohol" // Liver filtering
|
||||
#define CE_ALCOHOL_TOXIC "alcotoxic" // Liver damage
|
||||
#define CE_SPEEDBOOST "gofast" // Hyperzine
|
||||
#define CE_SLOWDOWN "goslow" // Slowdown
|
||||
|
||||
#define REAGENTS_PER_SHEET 20
|
||||
|
||||
|
||||
@@ -3,19 +3,20 @@
|
||||
icon_state = "flashbang"
|
||||
item_state = "flashbang"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1)
|
||||
var/max_range = 10 //The maximum range possible, including species effect mods. Cuts off at 7 for normal humans. Should be 3 higher than your intended target range for affecting normal humans.
|
||||
var/banglet = 0
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/prime()
|
||||
..()
|
||||
for(var/obj/structure/closet/L in hear(7, get_turf(src)))
|
||||
for(var/obj/structure/closet/L in hear(max_range, get_turf(src)))
|
||||
if(locate(/mob/living/carbon/, L))
|
||||
for(var/mob/living/carbon/M in L)
|
||||
bang(get_turf(src), M)
|
||||
|
||||
for(var/mob/living/carbon/M in hear(7, get_turf(src)))
|
||||
for(var/mob/living/carbon/M in hear(max_range, get_turf(src)))
|
||||
bang(get_turf(src), M)
|
||||
|
||||
for(var/obj/structure/blob/B in hear(8,get_turf(src))) //Blob damage here
|
||||
for(var/obj/structure/blob/B in hear(max_range - 2,get_turf(src))) //Blob damage here
|
||||
var/damage = round(30/(get_dist(B,get_turf(src))+1))
|
||||
if(B.overmind)
|
||||
damage *= B.overmind.blob_type.burn_multiplier
|
||||
@@ -39,13 +40,19 @@
|
||||
ear_safety = M.get_ear_protection()
|
||||
|
||||
//Flashing everyone
|
||||
if(eye_safety < 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/flash_effectiveness = 1
|
||||
var/bang_effectiveness = 1
|
||||
if(ishuman(M))
|
||||
flash_effectiveness = H.species.flash_mod
|
||||
bang_effectiveness = H.species.sound_mod
|
||||
if(eye_safety < 1 && get_dist(M, T) <= round(max_range * 0.7 * flash_effectiveness))
|
||||
M.flash_eyes()
|
||||
M.Confuse(2)
|
||||
M.Weaken(5)
|
||||
M.Confuse(2 * flash_effectiveness)
|
||||
M.Weaken(5 * flash_effectiveness)
|
||||
|
||||
//Now applying sound
|
||||
if((get_dist(M, T) <= 2 || src.loc == M.loc || src.loc == M))
|
||||
if((get_dist(M, T) <= round(max_range * 0.3 * bang_effectiveness) || src.loc == M.loc || src.loc == M))
|
||||
if(ear_safety > 0)
|
||||
M.Confuse(2)
|
||||
M.Weaken(1)
|
||||
@@ -58,20 +65,19 @@
|
||||
M.ear_damage += rand(0, 5)
|
||||
M.ear_deaf = max(M.ear_deaf,15)
|
||||
|
||||
else if(get_dist(M, T) <= 5)
|
||||
else if(get_dist(M, T) <= round(max_range * 0.5 * bang_effectiveness))
|
||||
if(!ear_safety)
|
||||
M.Confuse(8)
|
||||
M.ear_damage += rand(0, 3)
|
||||
M.ear_deaf = max(M.ear_deaf,10)
|
||||
|
||||
else if(!ear_safety)
|
||||
else if(!ear_safety && get_dist(M, T) <= (max_range * 0.7 * bang_effectiveness))
|
||||
M.Confuse(4)
|
||||
M.ear_damage += rand(0, 1)
|
||||
M.ear_deaf = max(M.ear_deaf,5)
|
||||
|
||||
//This really should be in mob not every check
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
|
||||
if (E && E.damage >= E.min_bruised_damage)
|
||||
M << "<span class='danger'>Your eyes start to burn badly!</span>"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -172,6 +172,11 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_SLIME)
|
||||
M.visible_message("<span class='warning'>[M]'s flesh sizzles where the water touches it!</span>", "<span class='danger'>Your flesh burns in the water!</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/fuel
|
||||
name = "Welding fuel"
|
||||
id = "fuel"
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
strength_mod *= 0.75
|
||||
if(alien == IS_DIONA)
|
||||
strength_mod = 0
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustToxLoss(removed) //Sterilizing, if only by a little bit. Also already doubled above.
|
||||
|
||||
M.add_chemical_effect(CE_ALCOHOL, 1)
|
||||
|
||||
@@ -136,6 +138,8 @@
|
||||
strength_mod *= 0.75
|
||||
if(alien == IS_DIONA)
|
||||
strength_mod = 0
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustToxLoss(removed * 2) //Sterilizing, if only by a little bit.
|
||||
|
||||
M.add_chemical_effect(CE_ALCOHOL, 1)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
data -= taste
|
||||
|
||||
/datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(!injectable)
|
||||
if(!injectable && alien != IS_SLIME)
|
||||
M.adjustToxLoss(0.1 * removed)
|
||||
return
|
||||
affect_ingest(M, alien, removed)
|
||||
@@ -94,7 +94,7 @@
|
||||
nutriment_factor = 10
|
||||
color = "#FFFF00"
|
||||
|
||||
/datum/reagent/honey/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
/datum/reagent/nutriment/honey/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
|
||||
var/effective_dose = dose
|
||||
@@ -255,6 +255,16 @@
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
ingest_met = REM
|
||||
|
||||
/datum/reagent/sodiumchloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustFireLoss(removed)
|
||||
|
||||
/datum/reagent/sodiumchloride/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/pass_mod = rand(3,5)
|
||||
var/passthrough = (removed - (removed/pass_mod)) //Some may be nullified during consumption, between one third and one fifth.
|
||||
affect_blood(M, alien, passthrough)
|
||||
|
||||
/datum/reagent/blackpepper
|
||||
name = "Black Pepper"
|
||||
id = "blackpepper"
|
||||
@@ -354,6 +364,15 @@
|
||||
/datum/reagent/condensedcapsaicin/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/eyes_covered = 0
|
||||
var/mouth_covered = 0
|
||||
|
||||
var/head_covered = 0
|
||||
var/arms_covered = 0 //These are used for the effects on slime-based species.
|
||||
var/legs_covered = 0
|
||||
var/hands_covered = 0
|
||||
var/feet_covered = 0
|
||||
var/chest_covered = 0
|
||||
var/groin_covered = 0
|
||||
|
||||
var/obj/item/safe_thing = null
|
||||
|
||||
var/effective_strength = 5
|
||||
@@ -384,27 +403,78 @@
|
||||
eyes_covered = 1
|
||||
if(!safe_thing)
|
||||
safe_thing = H.glasses
|
||||
if(alien == IS_SLIME)
|
||||
for(var/obj/item/clothing/C in H.worn_clothing)
|
||||
if(C.body_parts_covered & HEAD)
|
||||
head_covered = 1
|
||||
if(C.body_parts_covered & UPPER_TORSO)
|
||||
chest_covered = 1
|
||||
if(C.body_parts_covered & LOWER_TORSO)
|
||||
groin_covered = 1
|
||||
if(C.body_parts_covered & LEGS)
|
||||
legs_covered = 1
|
||||
if(C.body_parts_covered & ARMS)
|
||||
arms_covered = 1
|
||||
if(C.body_parts_covered & HANDS)
|
||||
hands_covered = 1
|
||||
if(C.body_parts_covered & FEET)
|
||||
feet_covered = 1
|
||||
if(head_covered && chest_covered && groin_covered && legs_covered && arms_covered && hands_covered && feet_covered)
|
||||
break
|
||||
if(eyes_covered && mouth_covered)
|
||||
M << "<span class='warning'>Your [safe_thing] protects you from the pepperspray!</span>"
|
||||
return
|
||||
to_chat(M, "<span class='warning'>Your [safe_thing] protects you from the pepperspray!</span>")
|
||||
if(alien != IS_SLIME)
|
||||
return
|
||||
else if(eyes_covered)
|
||||
M << "<span class='warning'>Your [safe_thing] protect you from most of the pepperspray!</span>"
|
||||
to_chat(M, "<span class='warning'>Your [safe_thing] protect you from most of the pepperspray!</span>")
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength * 3)
|
||||
M.Blind(effective_strength)
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
return
|
||||
else if (mouth_covered) // Mouth cover is better than eye cover
|
||||
M << "<span class='warning'>Your [safe_thing] protects your face from the pepperspray!</span>"
|
||||
if(alien != IS_SLIME)
|
||||
return
|
||||
else if(mouth_covered) // Mouth cover is better than eye cover
|
||||
to_chat(M, "<span class='warning'>Your [safe_thing] protects your face from the pepperspray!</span>")
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength)
|
||||
return
|
||||
else // Oh dear :D
|
||||
M << "<span class='warning'>You're sprayed directly in the eyes with pepperspray!</span>"
|
||||
if(alien != IS_SLIME)
|
||||
return
|
||||
else// Oh dear :D
|
||||
to_chat(M, "<span class='warning'>You're sprayed directly in the eyes with pepperspray!</span>")
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength * 5)
|
||||
M.Blind(effective_strength * 2)
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
return
|
||||
if(alien != IS_SLIME)
|
||||
return
|
||||
if(alien == IS_SLIME)
|
||||
if(!head_covered)
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your head burns!</span>")
|
||||
M.apply_effect(5 * effective_strength, AGONY, 0)
|
||||
if(!chest_covered)
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your chest burns!</span>")
|
||||
M.apply_effect(5 * effective_strength, AGONY, 0)
|
||||
if(!groin_covered && prob(75))
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your groin burns!</span>")
|
||||
M.apply_effect(3 * effective_strength, AGONY, 0)
|
||||
if(!arms_covered && prob(45))
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your arms burns!</span>")
|
||||
M.apply_effect(3 * effective_strength, AGONY, 0)
|
||||
if(!legs_covered && prob(45))
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your legs burns!</span>")
|
||||
M.apply_effect(3 * effective_strength, AGONY, 0)
|
||||
if(!hands_covered && prob(20))
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your hands burns!</span>")
|
||||
M.apply_effect(effective_strength / 2, AGONY, 0)
|
||||
if(!feet_covered && prob(20))
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>The exposed flesh on your feet burns!</span>")
|
||||
M.apply_effect(effective_strength / 2, AGONY, 0)
|
||||
|
||||
/datum/reagent/condensedcapsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(ishuman(M))
|
||||
@@ -437,7 +507,10 @@
|
||||
var/adj_temp = 0
|
||||
|
||||
/datum/reagent/drink/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjustToxLoss(removed) // Probably not a good idea; not very deadly though
|
||||
var/strength_mod = 1
|
||||
if(alien == IS_SLIME)
|
||||
strength_mod = 3
|
||||
M.adjustToxLoss(removed * strength_mod) // Probably not a good idea; not very deadly though
|
||||
return
|
||||
|
||||
/datum/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
@@ -449,6 +522,8 @@
|
||||
M.bodytemperature = min(310, M.bodytemperature + (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
if(adj_temp < 0 && M.bodytemperature > 310)
|
||||
M.bodytemperature = min(310, M.bodytemperature - (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustToxLoss(removed * 2)
|
||||
|
||||
/datum/reagent/drink/overdose(var/mob/living/carbon/M, var/alien) //Add special interactions here in the future if desired.
|
||||
..()
|
||||
@@ -489,7 +564,7 @@
|
||||
..()
|
||||
M.reagents.add_reagent("imidazoline", removed * 0.2)
|
||||
|
||||
/datum/reagent/drink/juice/
|
||||
/datum/reagent/drink/juice
|
||||
name = "Grape Juice"
|
||||
id = "grapejuice"
|
||||
description = "It's grrrrrape!"
|
||||
@@ -499,7 +574,7 @@
|
||||
glass_name = "grape juice"
|
||||
glass_desc = "It's grrrrrape!"
|
||||
|
||||
/datum/reagent/juice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
/datum/reagent/drink/juice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
|
||||
var/effective_dose = dose/2
|
||||
@@ -729,6 +804,24 @@
|
||||
cup_name = "cup of iced tea"
|
||||
cup_desc = "No relation to a certain rap artist/ actor."
|
||||
|
||||
/datum/reagent/drink/tea/icetea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= 0.5
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += 0.5
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/tea/icetea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= 0.5
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += 0.5
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/tea/minttea
|
||||
name = "Mint Tea"
|
||||
id = "minttea"
|
||||
@@ -825,7 +918,7 @@
|
||||
if(adj_temp > 0)
|
||||
holder.remove_reagent("frostoil", 10 * removed)
|
||||
|
||||
/datum/reagent/nutriment/coffee/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
/datum/reagent/drink/coffee/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_TAJARA)
|
||||
M.adjustToxLoss(2 * removed)
|
||||
@@ -851,6 +944,24 @@
|
||||
glass_desc = "A drink to perk you up and refresh you!"
|
||||
glass_special = list(DRINK_ICE)
|
||||
|
||||
/datum/reagent/drink/coffee/icecoffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= 0.5
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += 0.5
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/coffee/icecoffee/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= 0.5
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += 0.5
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/coffee/soy_latte
|
||||
name = "Soy Latte"
|
||||
id = "soy_latte"
|
||||
@@ -1047,13 +1158,13 @@
|
||||
adj_dizzy = -5
|
||||
adj_drowsy = -3
|
||||
adj_sleepy = -2
|
||||
|
||||
|
||||
|
||||
glass_name = "Coffee Milkshake"
|
||||
glass_desc = "An energizing coffee milkshake, perfect for hot days at work.."
|
||||
|
||||
/datum/reagent/drink/milkshake/coffeeshake/overdose(var/mob/living/carbon/M, var/alien)
|
||||
M.make_jittery(5)
|
||||
M.make_jittery(5)
|
||||
|
||||
/datum/reagent/drink/rewriter
|
||||
name = "Rewriter"
|
||||
@@ -1309,6 +1420,24 @@
|
||||
glass_desc = "Generally, you're supposed to put something else in there too..."
|
||||
glass_icon = DRINK_ICON_NOISY
|
||||
|
||||
/datum/reagent/drink/ice/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= rand(1,3)
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += rand(1,3)
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/ice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(M.bodytemperature > T0C)
|
||||
M.bodytemperature -= rand(1,3)
|
||||
if(M.bodytemperature < T0C)
|
||||
M.bodytemperature += rand(1,3)
|
||||
M.adjustToxLoss(5 * removed)
|
||||
|
||||
/datum/reagent/drink/nothing
|
||||
name = "Nothing"
|
||||
id = "nothing"
|
||||
|
||||
@@ -28,8 +28,11 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
M.heal_organ_damage(6 * removed, 0)
|
||||
M.heal_organ_damage(6 * removed * chem_effective, 0)
|
||||
|
||||
/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
@@ -59,8 +62,12 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.5
|
||||
M.adjustBruteLoss(2 * removed) //Mends burns, but has negative effects with a Promethean's skeletal structure.
|
||||
if(alien != IS_DIONA)
|
||||
M.heal_organ_damage(0, 6 * removed)
|
||||
M.heal_organ_damage(0, 6 * removed * chem_effective)
|
||||
|
||||
/datum/reagent/dermaline
|
||||
name = "Dermaline"
|
||||
@@ -74,8 +81,11 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
M.heal_organ_damage(0, 12 * removed)
|
||||
M.heal_organ_damage(0, 12 * removed * chem_effective)
|
||||
|
||||
/datum/reagent/dylovene
|
||||
name = "Dylovene"
|
||||
@@ -87,10 +97,15 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.66
|
||||
if(dose >= 15)
|
||||
M.druggy = max(M.druggy, 5)
|
||||
if(alien != IS_DIONA)
|
||||
M.drowsyness = max(0, M.drowsyness - 6 * removed)
|
||||
M.hallucination = max(0, M.hallucination - 9 * removed)
|
||||
M.adjustToxLoss(-4 * removed)
|
||||
M.drowsyness = max(0, M.drowsyness - 6 * removed * chem_effective = 0.66)
|
||||
M.hallucination = max(0, M.hallucination - 9 * removed * chem_effective = 0.66)
|
||||
M.adjustToxLoss(-4 * removed * chem_effective = 0.66)
|
||||
|
||||
/datum/reagent/carthatoline
|
||||
name = "Carthatoline"
|
||||
@@ -114,6 +129,8 @@
|
||||
return
|
||||
if(L.damage > 0)
|
||||
L.damage = max(L.damage - 2 * removed, 0)
|
||||
if(alien == IS_SLIME)
|
||||
H.druggy = max(M.druggy, 5)
|
||||
|
||||
/datum/reagent/dexalin
|
||||
name = "Dexalin"
|
||||
@@ -128,6 +145,12 @@
|
||||
/datum/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_VOX)
|
||||
M.adjustToxLoss(removed * 6)
|
||||
else if(alien == IS_SLIME && dose >= 15)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 15)
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='notice'>You have a moment of clarity as you collapse.</span>")
|
||||
M.adjustBrainLoss(-5 * removed)
|
||||
M.Weaken(6)
|
||||
else if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-15 * removed)
|
||||
|
||||
@@ -146,6 +169,12 @@
|
||||
/datum/reagent/dexalinp/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_VOX)
|
||||
M.adjustToxLoss(removed * 9)
|
||||
else if(alien == IS_SLIME && dose >= 10)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25)
|
||||
if(prob(25))
|
||||
to_chat(M, "<span class='notice'>You have a moment of clarity, as you feel your tubes lose pressure rapidly.</span>")
|
||||
M.adjustBrainLoss(-8 * removed)
|
||||
M.Weaken(3)
|
||||
else if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-150 * removed)
|
||||
|
||||
@@ -162,9 +191,12 @@
|
||||
|
||||
/datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-3 * removed)
|
||||
M.heal_organ_damage(1.5 * removed, 1.5 * removed)
|
||||
M.adjustToxLoss(-1.5 * removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.5
|
||||
M.adjustOxyLoss(-3 * removed * chem_effective)
|
||||
M.heal_organ_damage(1.5 * removed, 1.5 * removed * chem_effective)
|
||||
M.adjustToxLoss(-1.5 * removed * chem_effective)
|
||||
|
||||
/datum/reagent/cryoxadone
|
||||
name = "Cryoxadone"
|
||||
@@ -179,10 +211,17 @@
|
||||
|
||||
/datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.bodytemperature < 170)
|
||||
M.adjustCloneLoss(-10 * removed)
|
||||
M.adjustOxyLoss(-10 * removed)
|
||||
M.heal_organ_damage(10 * removed, 10 * removed)
|
||||
M.adjustToxLoss(-10 * removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.25
|
||||
to_chat(M, "<span class='danger'>It's cold. Something causes your cellular mass to harden occasionally, resulting in vibration.</span>")
|
||||
M.Weaken(10)
|
||||
M.silent = max(M.silent, 10)
|
||||
M.make_jittery(4)
|
||||
M.adjustCloneLoss(-10 * removed * chem_effective)
|
||||
M.adjustOxyLoss(-10 * removed * chem_effective)
|
||||
M.heal_organ_damage(10 * removed, 10 * removed * chem_effective)
|
||||
M.adjustToxLoss(-10 * removed * chem_effective)
|
||||
|
||||
/datum/reagent/clonexadone
|
||||
name = "Clonexadone"
|
||||
@@ -197,10 +236,18 @@
|
||||
|
||||
/datum/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.bodytemperature < 170)
|
||||
M.adjustCloneLoss(-30 * removed)
|
||||
M.adjustOxyLoss(-30 * removed)
|
||||
M.heal_organ_damage(30 * removed, 30 * removed)
|
||||
M.adjustToxLoss(-30 * removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.</span>")
|
||||
chem_effective = 0.5
|
||||
M.Weaken(20)
|
||||
M.silent = max(M.silent, 20)
|
||||
M.make_jittery(4)
|
||||
M.adjustCloneLoss(-30 * removed * chem_effective)
|
||||
M.adjustOxyLoss(-30 * removed * chem_effective)
|
||||
M.heal_organ_damage(30 * removed, 30 * removed * chem_effective)
|
||||
M.adjustToxLoss(-30 * removed * chem_effective)
|
||||
|
||||
/* Painkillers */
|
||||
|
||||
@@ -217,10 +264,15 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/paracetamol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25 * chem_effective)
|
||||
|
||||
/datum/reagent/paracetamol/overdose(var/mob/living/carbon/M, var/alien)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
M.add_chemical_effect(CE_SLOWDOWN, 1)
|
||||
M.hallucination = max(M.hallucination, 2)
|
||||
|
||||
/datum/reagent/tramadol
|
||||
@@ -236,7 +288,11 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/tramadol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 80)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.8
|
||||
M.add_chemical_effect(CE_SLOWDOWN, 1)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 80 * chem_effective)
|
||||
|
||||
/datum/reagent/tramadol/overdose(var/mob/living/carbon/M, var/alien)
|
||||
..()
|
||||
@@ -255,8 +311,13 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/oxycodone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 200)
|
||||
M.eye_blurry = min(M.eye_blurry + 10, 250)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
M.stuttering = min(50, max(0, M.stuttering + 5)) //If you can't feel yourself, and your main mode of speech is resonation, there's a problem.
|
||||
M.add_chemical_effect(CE_SLOWDOWN, 1)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 200 * chem_effective)
|
||||
M.eye_blurry = min(M.eye_blurry + 10, 250 * chem_effective)
|
||||
M.Confuse(5)
|
||||
|
||||
/datum/reagent/oxycodone/overdose(var/mob/living/carbon/M, var/alien)
|
||||
@@ -278,16 +339,23 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
if(alien == IS_SLIME)
|
||||
if(dose >= 5) //Not effective in small doses, though it causes toxloss at higher ones, it will make the regeneration for brute and burn more 'efficient' at the cost of more nutrition.
|
||||
M.nutrition -= removed * 2
|
||||
M.adjustBruteLoss(-2 * removed)
|
||||
M.adjustFireLoss(-1 * removed)
|
||||
chem_effective = 0.5
|
||||
M.drowsyness = max(M.drowsyness - 5, 0)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
M.adjustToxLoss(5 * removed) // It used to be incredibly deadly due to an oversight. Not anymore!
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20)
|
||||
M.adjustToxLoss(5 * removed * chem_effective) // It used to be incredibly deadly due to an oversight. Not anymore!
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20 * chem_effective)
|
||||
|
||||
/datum/reagent/hyperzine
|
||||
name = "Hyperzine"
|
||||
@@ -301,6 +369,10 @@
|
||||
/datum/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_TAJARA)
|
||||
removed *= 1.25
|
||||
if(alien == IS_SLIME)
|
||||
M.make_jittery(4) //Hyperactive fluid pumping results in unstable 'skeleton', resulting in vibration.
|
||||
if(dose >= 5)
|
||||
M.nutrition = (M.nutrition - (removed * 2)) //Sadly this movement starts burning food in higher doses.
|
||||
..()
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "blink_r", "shiver"))
|
||||
@@ -320,8 +392,16 @@
|
||||
/datum/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
M.adjustBrainLoss(-30 * removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10)
|
||||
var/
|
||||
var/chem_effective = 1
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.25
|
||||
if(M.brainloss >= 10)
|
||||
M.Weaken(5)
|
||||
if(dose >= 10 && M.paralysis < 40)
|
||||
M.AdjustParalysis(1) //Messing with the core with a simple chemical probably isn't the best idea.
|
||||
M.adjustBrainLoss(-30 * removed * chem_effective)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective)
|
||||
|
||||
/datum/reagent/imidazoline
|
||||
name = "Imidazoline"
|
||||
@@ -369,6 +449,10 @@
|
||||
if(I.damage <= 5 && I.organ_tag == O_EYES)
|
||||
H.eye_blurry = min(M.eye_blurry + 10, 250) //Eyes need to reset, or something
|
||||
H.sdisabilities &= ~BLIND
|
||||
if(alien == IS_SLIME)
|
||||
H.add_chemical_effect(CE_PAINKILLER, 20)
|
||||
if(prob(33))
|
||||
H.Confuse(10)
|
||||
|
||||
/datum/reagent/osteodaxon
|
||||
name = "Osteodaxon"
|
||||
@@ -437,9 +521,35 @@
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(alien == IS_SLIME && istype(H)) //Shifts them toward white, faster than Rezadone does toward grey.
|
||||
if(prob(50))
|
||||
if(H.r_skin)
|
||||
H.r_skin = round((H.r_skin + 510)/3)
|
||||
if(H.r_hair)
|
||||
H.r_hair = round((H.r_hair + 510)/3)
|
||||
if(H.r_facial)
|
||||
H.r_facial = round((H.r_facial + 510)/3)
|
||||
H.adjustToxLoss(6 * removed)
|
||||
if(prob(50))
|
||||
if(H.g_skin)
|
||||
H.g_skin = round((H.g_skin + 510)/3)
|
||||
if(H.g_hair)
|
||||
H.g_hair = round((H.g_hair + 510)/3)
|
||||
if(H.g_facial)
|
||||
H.g_facial = round((H.g_facial + 510)/3)
|
||||
H.adjustToxLoss(6 * removed)
|
||||
if(prob(50))
|
||||
if(H.b_skin)
|
||||
H.b_skin = round((H.b_skin + 510)/3)
|
||||
if(H.b_hair)
|
||||
H.b_hair = round((H.b_hair + 510)/3)
|
||||
if(H.b_facial)
|
||||
H.b_facial = round((H.b_facial + 510)/3)
|
||||
H.adjustToxLoss(6 * removed)
|
||||
|
||||
// Might need to update appearance for hulk etc.
|
||||
if(needs_update && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_mutations()
|
||||
|
||||
/datum/reagent/ethylredoxrazine
|
||||
@@ -513,9 +623,19 @@
|
||||
mrate_static = TRUE
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
data = 0
|
||||
|
||||
/datum/reagent/spaceacillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
if(volume <= 0.1 && data != -1)
|
||||
data = -1
|
||||
to_chat(M, "<span class='notice'>You regain focus...</span>")
|
||||
else
|
||||
var/delay = (5 MINUTES)
|
||||
if(world.time > data + delay)
|
||||
data = world.time
|
||||
to_chat(M, "<span class='warning'>Your senses feel unfocused, and divided.</span>")
|
||||
M.add_chemical_effect(CE_ANTIBIOTIC, dose >= overdose ? ANTIBIO_OD : ANTIBIO_NORM)
|
||||
|
||||
/datum/reagent/corophizine
|
||||
@@ -528,11 +648,48 @@
|
||||
mrate_static = TRUE
|
||||
overdose = 10
|
||||
scannable = 1
|
||||
data = 0
|
||||
|
||||
/datum/reagent/corophizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
M.add_chemical_effect(CE_ANTIBIOTIC, ANTIBIO_SUPER)
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(ishuman(M) && alien == IS_SLIME) //Everything about them is treated like a targetted organism. Widespread bodily function begins to fail.
|
||||
if(volume <= 0.1 && data != -1)
|
||||
data = -1
|
||||
to_chat(M, "<span class='notice'>Your body ceases its revolt.</span>")
|
||||
else
|
||||
var/delay = (3 MINUTES)
|
||||
if(world.time > data + delay)
|
||||
data = world.time
|
||||
to_chat(M, "<span class='critical'>It feels like your body is revolting!</span>")
|
||||
M.Confuse(7)
|
||||
M.adjustFireLoss(removed * 2)
|
||||
M.adjustToxLoss(removed * 2)
|
||||
if(dose >= 5 && M.toxloss >= 10) //It all starts going wrong.
|
||||
M.adjustBruteLoss(removed * 3)
|
||||
M.eye_blurry = min(20, max(0, M.eye_blurry + 10))
|
||||
if(prob(25))
|
||||
if(prob(25))
|
||||
to_chat(M, "<span class='danger'>Your pneumatic fluids seize for a moment.</span>")
|
||||
M.Stun(2)
|
||||
spawn(30)
|
||||
M.Weaken(2)
|
||||
if(dose >= 10 || M.toxloss >= 25) //Internal skeletal tubes are rupturing, allowing the chemical to breach them.
|
||||
M.adjustToxLoss(removed * 4)
|
||||
M.make_jittery(5)
|
||||
if(dose >= 20 || M.toxloss >= 60) //Core disentigration, cellular mass begins treating itself as an enemy, while maintaining regeneration. Slime-cancer.
|
||||
M.adjustBrainLoss(2 * removed)
|
||||
M.nutrition = max(H.nutrition - 20, 0)
|
||||
if(M.bruteloss >= 60 && M.toxloss >= 60 && M.brainloss >= 30) //Total Structural Failure. Limbs start splattering.
|
||||
var/obj/item/organ/external/O = pick(H.organs)
|
||||
if(prob(20) && !istype(O, /obj/item/organ/external/chest/unbreakable/slime) && !istype(O, /obj/item/organ/external/groin/unbreakable/slime))
|
||||
to_chat(M, "<span class='critical'>You feel your [O] begin to dissolve, before it sloughs from your body.</span>")
|
||||
O.droplimb() //Splat.
|
||||
return
|
||||
|
||||
//Based roughly on Levofloxacin's rather severe side-effects
|
||||
if(prob(20))
|
||||
M.Confuse(5)
|
||||
@@ -545,7 +702,6 @@
|
||||
|
||||
//One of the levofloxacin side effects is 'spontaneous tendon rupture', which I'll immitate here. 1:1000 chance, so, pretty darn rare.
|
||||
if(ishuman(M) && rand(1,1000) == 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/eo = pick(H.organs) //Misleading variable name, 'organs' is only external organs
|
||||
eo.fracture()
|
||||
|
||||
@@ -558,11 +714,20 @@
|
||||
color = "#C8A5DC"
|
||||
touch_met = 5
|
||||
|
||||
/datum/reagent/sterilizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustFireLoss(removed)
|
||||
M.adjustToxLoss(2 * removed)
|
||||
return
|
||||
|
||||
/datum/reagent/sterilizine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.germ_level -= min(removed*20, M.germ_level)
|
||||
for(var/obj/item/I in M.contents)
|
||||
I.was_bloodied = null
|
||||
M.was_bloodied = null
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustFireLoss(removed)
|
||||
M.adjustToxLoss(2 * removed)
|
||||
|
||||
/datum/reagent/sterilizine/touch_obj(var/obj/O)
|
||||
O.germ_level -= min(volume*20, O.germ_level)
|
||||
@@ -606,6 +771,29 @@
|
||||
/datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(alien == IS_SLIME && istype(H))
|
||||
if(prob(50))
|
||||
if(H.r_skin)
|
||||
H.r_skin = round((H.r_skin + 50)/2)
|
||||
if(H.r_hair)
|
||||
H.r_hair = round((H.r_hair + 50)/2)
|
||||
if(H.r_facial)
|
||||
H.r_facial = round((H.r_facial + 50)/2)
|
||||
if(prob(50))
|
||||
if(H.g_skin)
|
||||
H.g_skin = round((H.g_skin + 50)/2)
|
||||
if(H.g_hair)
|
||||
H.g_hair = round((H.g_hair + 50)/2)
|
||||
if(H.g_facial)
|
||||
H.g_facial = round((H.g_facial + 50)/2)
|
||||
if(prob(50))
|
||||
if(H.b_skin)
|
||||
H.b_skin = round((H.b_skin + 50)/2)
|
||||
if(H.b_hair)
|
||||
H.b_hair = round((H.b_hair + 50)/2)
|
||||
if(H.b_facial)
|
||||
H.b_facial = round((H.b_facial + 50)/2)
|
||||
M.adjustCloneLoss(-20 * removed)
|
||||
M.adjustOxyLoss(-2 * removed)
|
||||
M.heal_organ_damage(20 * removed, 20 * removed)
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume.
|
||||
if(alien == IS_SLIME)
|
||||
removed *= 0.25 // Results in half the standard tox as normal. Prometheans are 'Small' for flaps.
|
||||
M.nutrition += strength * removed
|
||||
if(dose >= 10)
|
||||
M.nutrition += strength * removed //Body has to deal with the massive influx of toxins, rather than try using them to repair.
|
||||
else
|
||||
M.heal_organ_damage((10/strength) * removed, (10/strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair.
|
||||
M.adjustToxLoss(strength * removed)
|
||||
|
||||
/datum/reagent/toxin/plasticide
|
||||
@@ -73,6 +76,15 @@
|
||||
spawn (0) target_tile.hotspot_expose(700, 400)
|
||||
remove_self(volume)
|
||||
|
||||
/datum/reagent/toxin/hydrophoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
M.adjust_fire_stacks(removed * 10)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='critical'>You feel something boiling within you!</span>")
|
||||
spawn(rand(30, 60))
|
||||
M.IgniteMob()
|
||||
|
||||
/datum/reagent/toxin/spidertoxin
|
||||
name = "Spidertoxin"
|
||||
id = "spidertoxin"
|
||||
@@ -107,6 +119,8 @@
|
||||
if(alien == IS_VOX)
|
||||
M.adjustOxyLoss(-100 * removed) //5 oxyloss healed per tick.
|
||||
return //You're wasting plasma (a semi-limited chemical) to save someone, so it might as well be somewhat strong.
|
||||
if(alien == IS_SLIME)
|
||||
M.adjust_fire_stacks(removed * 3) //Not quite 'converting' it. It's like mixing fuel into a jelly. You get explosive, or at least combustible, jelly.
|
||||
..()
|
||||
|
||||
/datum/reagent/toxin/phoron/touch_turf(var/turf/simulated/T, var/amount)
|
||||
@@ -177,6 +191,11 @@
|
||||
strength = 0
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/toxin/potassium_chloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustFireLoss(removed * 2)
|
||||
|
||||
/datum/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien)
|
||||
..()
|
||||
if(ishuman(M))
|
||||
@@ -206,6 +225,8 @@
|
||||
H.losebreath = max(10, M.losebreath-10)
|
||||
H.adjustOxyLoss(2)
|
||||
H.Weaken(10)
|
||||
if(alien == IS_SLIME)
|
||||
M.adjustFireLoss(removed * 3)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder
|
||||
name = "Zombie Powder"
|
||||
@@ -353,6 +374,13 @@
|
||||
/datum/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
if(alien == IS_SLIME)
|
||||
M.apply_effect(5, AGONY, 0)
|
||||
M.adjustToxLoss(3 * removed)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='warning'>Your cellular mass hardens for a moment.</span>")
|
||||
M.Stun(6)
|
||||
return
|
||||
if(alien == IS_SKRELL)
|
||||
M.take_organ_damage(2.4 * removed, 0)
|
||||
if(M.losebreath < 10)
|
||||
@@ -384,9 +412,34 @@
|
||||
if(M.isSynthetic())
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H) && (H.species.flags & NO_SCAN))
|
||||
return
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(alien == IS_SLIME && prob(25))
|
||||
var/color_shift = rand(-100, 100)
|
||||
spawn(1)
|
||||
if(prob(33))
|
||||
if(H.r_skin)
|
||||
H.r_skin = max(0, min(255, H.r_skin + color_shift))
|
||||
if(H.r_hair)
|
||||
H.r_hair = max(0, min(255, H.r_hair + color_shift))
|
||||
if(H.r_facial)
|
||||
H.r_facial = max(0, min(255, H.r_facial + color_shift))
|
||||
if(prob(33))
|
||||
if(H.g_skin)
|
||||
H.g_skin = max(0, min(255, H.g_skin + color_shift))
|
||||
if(H.g_hair)
|
||||
H.g_hair = max(0, min(255, H.g_hair + color_shift))
|
||||
if(H.g_facial)
|
||||
H.g_facial = max(0, min(255, H.g_facial + color_shift))
|
||||
if(prob(33))
|
||||
if(H.b_skin)
|
||||
H.b_skin = max(0, min(255, H.b_skin + color_shift))
|
||||
if(H.b_hair)
|
||||
H.b_hair = max(0, min(255, H.b_hair + color_shift))
|
||||
if(H.b_facial)
|
||||
H.b_facial = max(0, min(255, H.b_facial + color_shift))
|
||||
if(H.species.flags & NO_SCAN)
|
||||
return
|
||||
|
||||
//The original coder comment here wanted it to be "Approx. one mutation per 10 injected/20 ingested/30 touching units"
|
||||
//The issue was, it was removed (.2) multiplied by .1, which resulted in a .02% chance per tick to have a mutation occur. Or more accurately, 5000 injected for a single mutation.
|
||||
|
||||
8
html/changelogs/mechoid-promtweaks.yml
Normal file
8
html/changelogs/mechoid-promtweaks.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
author: Mechoid
|
||||
|
||||
delete-after: True
|
||||
|
||||
|
||||
changes:
|
||||
- tweak: "Large list of Promethean tweaks. No seriously, I'm not putting the list here."
|
||||
@@ -1319,7 +1319,6 @@
|
||||
#include "code\modules\client\preference_setup\global\01_ui.dm"
|
||||
#include "code\modules\client\preference_setup\global\02_settings.dm"
|
||||
#include "code\modules\client\preference_setup\global\03_pai.dm"
|
||||
#include "code\modules\client\preference_setup\global\04_ooc.dm"
|
||||
#include "code\modules\client\preference_setup\global\setting_datums.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\gear_tweaks.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout.dm"
|
||||
|
||||
Reference in New Issue
Block a user