Overdose is more dangerous, Bicaridine works again

This commit is contained in:
Anewbe
2017-03-30 19:50:19 -05:00
parent 9a9849d56c
commit f7d086fa59
7 changed files with 81 additions and 12 deletions

View File

@@ -72,6 +72,7 @@
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/vision_flags = SEE_SELF // Same flags as glasses.
// Death vars.

View File

@@ -174,6 +174,7 @@
darksight = 4
flash_mod = 1.2
chemOD_mod = 0.9
ambiguous_genders = TRUE

View File

@@ -698,10 +698,9 @@ Note that amputating the affected organ does in fact remove the infection from t
if(W.internal && owner.bodytemperature >= 170)
var/bicardose = owner.reagents.get_reagent_amount("bicaridine")
var/inaprovaline = owner.reagents.get_reagent_amount("inaprovaline")
if(!(W.can_autoheal() || (bicardose && inaprovaline))) //bicaridine and inaprovaline stop internal wounds from growing bigger with time, unless it is so small that it is already healing
var/myeldose = owner.reagents.get_reagent_amount("myelamine")
if(!(W.can_autoheal() || (bicardose && inaprovaline) || myeldose)) //bicaridine and inaprovaline stop internal wounds from growing bigger with time, unless it is so small that it is already healing
W.open_wound(0.1 * wound_update_accuracy)
if(bicardose >= 30) //overdose of bicaridine begins healing IB
W.damage = max(0, W.damage - 0.2)
owner.vessel.remove_reagent("blood", wound_update_accuracy * W.damage/40) //line should possibly be moved to handle_blood, so all the bleeding stuff is in one place.
if(prob(1 * wound_update_accuracy))

View File

@@ -26,7 +26,8 @@
var/touch_met = 0
var/dose = 0
var/max_dose = 0
var/overdose = 0
var/overdose = 0 //Amount at which overdose starts
var/overdose_mod = 2 //Modifier to overdose damage
var/scannable = 0 // Shows up on health analyzers.
var/affects_dead = 0
var/cup_icon_state = null
@@ -60,8 +61,6 @@
return
if(!affects_dead && M.stat == DEAD)
return
if(overdose && (volume > overdose) && (location != CHEM_TOUCH))
overdose(M, alien)
var/removed = metabolism
if(!mrate_static == TRUE)
removed *= M.species.metabolic_rate
@@ -80,6 +79,8 @@
affect_ingest(M, alien, removed)
if(CHEM_TOUCH)
affect_touch(M, alien, removed)
if(overdose && (volume > overdose) && (location != CHEM_TOUCH))
overdose(M, alien, removed)
remove_self(removed)
return
@@ -93,9 +94,13 @@
/datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
return
/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien) // Overdose effect. Doesn't happen instantly.
M.adjustToxLoss(REM)
return
/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect. Doesn't happen instantly.
if(alien == IS_DIONA)
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
overdose_mod *= H.species.chemOD_mod
M.adjustToxLoss(removed * overdose_mod)
/datum/reagent/proc/initialize_data(var/newdata) // Called when the reagent is created.
if(!isnull(newdata))

View File

@@ -32,6 +32,23 @@
if(alien != IS_DIONA)
M.heal_organ_damage(6 * removed, 0)
/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/wound_heal = 1.5 * removed
M.eye_blurry += (wound_heal)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/external/O in H.bad_external_organs)
for(var/datum/wound/W in O.wounds)
if(W.bleeding())
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
if(W.internal)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
/datum/reagent/kelotane
name = "Kelotane"
id = "kelotane"
@@ -368,21 +385,23 @@
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
var/repair_strength = 3
/datum/reagent/myelamine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.eye_blurry += (3 * removed)
M.eye_blurry += (repair_strength * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/wound_heal = removed * repair_strength
for(var/obj/item/organ/external/O in H.bad_external_organs)
for(var/datum/wound/W in O.wounds)
if(W.bleeding())
W.damage = max(W.damage - removed, 0)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
if(W.internal)
W.damage = max(W.damage - removed, 0)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W

View File

@@ -388,6 +388,7 @@
color = "#000067"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 5 //For that good, lethal feeling
/datum/reagent/chloralhydrate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
@@ -413,6 +414,11 @@
if(effective_dose > 1 * threshold)
M.adjustToxLoss(removed)
/datum/reagent/chloralhydrate/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.losebreath = (min(M.losebreath + 1, 10))
M.adjustOxyLoss(removed * overdose_mod)
/datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots
name = "Beer"
id = "beer2"