eh, who needs three traits? also, sanity checking on various boozetypes
This commit is contained in:
Killian
2023-03-23 09:08:24 +00:00
parent 1e103f4395
commit 1fd16b60b5
4 changed files with 154 additions and 142 deletions
+7 -8
View File
@@ -177,14 +177,13 @@
M.Confuse(20)
if(effective_dose >= strength * 4) // Blurry vision
M.eye_blurry = max(M.eye_blurry, 10)
if((M.species.robo_ethanol_drunk && M.species.robo_ethanol_proc) || !(M.isSynthetic()))
if(effective_dose >= strength * 5) // Drowsyness - periodically falling asleep
M.drowsyness = max(M.drowsyness, 20)
if(effective_dose >= strength * 6) // Toxic dose
M.add_chemical_effect(CE_ALCOHOL_TOXIC, toxicity)
if(effective_dose >= strength * 7) // Pass out
M.Paralyse(20)
M.Sleeping(30)
if(effective_dose >= strength * 5) // Drowsyness - periodically falling asleep
M.drowsyness = max(M.drowsyness, 20)
if(effective_dose >= strength * 6) // Toxic dose
M.add_chemical_effect(CE_ALCOHOL_TOXIC, toxicity)
if(effective_dose >= strength * 7) // Pass out
M.Paralyse(20)
M.Sleeping(30)
if(druggy != 0)
M.druggy = max(M.druggy, druggy)
+72 -55
View File
@@ -2577,9 +2577,10 @@
/datum/reagent/ethanol/beer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.jitteriness = max(M.jitteriness - 3, 0)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(alien == IS_DIONA)
return
M.jitteriness = max(M.jitteriness - 3, 0)
/datum/reagent/ethanol/beer/lite
name = "Lite Beer"
@@ -2639,7 +2640,8 @@
..()
if(alien == IS_DIONA)
return
M.dizziness +=5
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
M.dizziness +=5
/datum/reagent/ethanol/firepunch
name = "Fire Punch"
@@ -2671,18 +2673,19 @@
allergen_type = ALLERGEN_COFFEE|ALLERGEN_STIMULANT //Contains coffee or is made from coffee
/datum/reagent/ethanol/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
..()
M.dizziness = max(0, M.dizziness - 5)
M.drowsyness = max(0, M.drowsyness - 3)
M.AdjustSleeping(-2)
if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
if(!(M.isSynthetic()))
if(alien == IS_DIONA)
return
..()
M.dizziness = max(0, M.dizziness - 5)
M.drowsyness = max(0, M.drowsyness - 3)
M.AdjustSleeping(-2)
if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
//if(alien == IS_TAJARA)
//M.adjustToxLoss(0.5 * removed)
//M.make_jittery(4) //extra sensitive to caffine
//if(alien == IS_TAJARA)
//M.adjustToxLoss(0.5 * removed)
//M.make_jittery(4) //extra sensitive to caffine
/datum/reagent/ethanol/coffee/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
//if(alien == IS_TAJARA)
@@ -2696,7 +2699,8 @@
//if(alien == IS_TAJARA)
//M.adjustToxLoss(4 * REM)
//M.apply_effect(3, STUTTER) //VOREStation Edit end
M.make_jittery(5)
if(!(M.isSynthetic()))
M.make_jittery(5)
/datum/reagent/ethanol/coffee/kahlua
name = "Kahlua"
@@ -2800,12 +2804,14 @@
/datum/reagent/ethanol/thirteenloko/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.drowsyness = max(0, M.drowsyness - 7)
if (M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
M.make_jittery(5)
if(!(M.isSynthetic()))
if(alien == IS_DIONA)
return
M.drowsyness = max(0, M.drowsyness - 7)
if (M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
M.make_jittery(5)
/datum/reagent/ethanol/vermouth
name = "Vermouth"
@@ -2835,7 +2841,8 @@
/datum/reagent/ethanol/vodka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.apply_effect(max(M.radiation - 1 * removed, 0), IRRADIATE, check_protection = 0)
if(!(M.isSynthetic()))
M.apply_effect(max(M.radiation - 1 * removed, 0), IRRADIATE, check_protection = 0)
/datum/reagent/ethanol/whiskey
name = "Whiskey"
@@ -2904,16 +2911,18 @@
/datum/reagent/ethanol/pwine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(dose > 30)
M.adjustToxLoss(2 * removed)
if(dose > 60 && ishuman(M) && prob(5))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/heart/L = H.internal_organs_by_name[O_HEART]
if (L && istype(L))
if(dose < 120)
L.take_damage(10 * removed, 0)
else
L.take_damage(100, 0)
if(!(M.isSynthetic()))
if(dose > 30)
M.adjustToxLoss(2 * removed)
if(dose > 60 && ishuman(M) && prob(5))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/heart/L = H.internal_organs_by_name[O_HEART]
if (L && istype(L))
if(dose < 120)
L.take_damage(10 * removed, 0)
else
L.take_damage(100, 0)
/datum/reagent/ethanol/wine/champagne
name = "Champagne"
@@ -3112,7 +3121,9 @@
/datum/reagent/ethanol/beepsky_smash/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.Stun(2)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
M.Stun(2)
/datum/reagent/ethanol/bilk
name = "Bilk"
@@ -3549,7 +3560,9 @@
/datum/reagent/ethanol/neurotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.Weaken(3)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
M.Weaken(3)
/datum/reagent/ethanol/patron
name = "Patron"
@@ -3799,16 +3812,18 @@
/datum/reagent/ethanol/unathiliquor/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
var/drug_strength = 10
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(alien == IS_DIONA)
return
M.druggy = max(M.druggy, drug_strength)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
step(M, pick(cardinal))
var/drug_strength = 10
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
M.druggy = max(M.druggy, drug_strength)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
step(M, pick(cardinal))
/datum/reagent/ethanol/sakebomb
name = "Sake Bomb"
@@ -4337,19 +4352,21 @@
/datum/reagent/ethanol/godka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(!(M.isSynthetic()))
M.apply_effect(max(M.radiation - 5 * removed, 0), IRRADIATE, check_protection = 0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.has_organ[O_LIVER])
var/obj/item/organ/L = H.internal_organs_by_name[O_LIVER]
if(!L)
return
var/adjust_liver = rand(-3, 2)
if(prob(L.damage))
to_chat(M, "<span class='cult'>You feel woozy...</span>")
L.damage = max(L.damage + (adjust_liver * removed), 0)
var/adjust_tox = rand(-4, 2)
M.adjustToxLoss(adjust_tox * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.has_organ[O_LIVER])
var/obj/item/organ/L = H.internal_organs_by_name[O_LIVER]
if(!L)
return
var/adjust_liver = rand(-3, 2)
if(prob(L.damage))
to_chat(M, "<span class='cult'>You feel woozy...</span>")
L.damage = max(L.damage + (adjust_liver * removed), 0)
var/adjust_tox = rand(-4, 2)
M.adjustToxLoss(adjust_tox * removed)
/datum/reagent/ethanol/holywine
name = "Angel Ichor"
@@ -48,10 +48,11 @@
/datum/reagent/ethanol/deathbell/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(dose * strength >= strength) // Early warning
M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects.
if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional.
M.slurring = max(M.slurring, 30)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(dose * strength >= strength) // Early warning
M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects.
if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional.
M.slurring = max(M.slurring, 30)
/datum/reagent/ethanol/burnout
name = "Burnout"
@@ -70,22 +71,23 @@
/datum/reagent/ethanol/burnout/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
// Deathbell effects.
if(dose * strength >= strength)
M.make_dizzy(24)
if(dose * strength >= strength * 2.5)
M.slurring = max(M.slurring, 30)
// Simulating heat effects of spice. Without spice.
if(alien == IS_DIONA || alien == IS_ALRAUNE)
return
else if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.can_feel_pain())
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(dose * strength >= strength)
M.make_dizzy(24)
if(dose * strength >= strength * 2.5)
M.slurring = max(M.slurring, 30)
// Simulating heat effects of spice. Without spice.
if(alien == IS_DIONA || alien == IS_ALRAUNE)
return
else
if((dose < 5) && (dose == metabolism || prob(5)))
to_chat(M, "<span class='danger'>Your insides feel uncomfortably hot!</span>")
if(dose >= 5 && prob(5))
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>", pick("<span class='danger'>You feel like your insides are burning!</span>", "<span class='danger'>You feel like your insides are on fire!</span>", "<span class='danger'>You feel like your belly is full of lava!</span>"))
else if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.can_feel_pain())
return
else
if((dose < 5) && (dose == metabolism || prob(5)))
to_chat(M, "<span class='danger'>Your insides feel uncomfortably hot!</span>")
if(dose >= 5 && prob(5))
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>", pick("<span class='danger'>You feel like your insides are burning!</span>", "<span class='danger'>You feel like your insides are on fire!</span>", "<span class='danger'>You feel like your belly is full of lava!</span>"))
/datum/reagent/ethanol/monstertamer
name = "Monster Tamer"
@@ -159,27 +161,28 @@
/datum/reagent/ethanol/monstertamer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
M.adjust_nutrition(alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein.
if(IS_UNATHI)
M.adjust_nutrition(alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein.
//Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein.
//Chimera don't need their own case here since their factors for nutriment and protein cancel out.
else
M.adjust_nutrition(alt_nutriment_factor * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.feral > 0 && H.nutrition > 150 && H.traumatic_shock < 20 && H.jitteriness < 100) //Same check as feral triggers to stop them immediately re-feralling
H.feral -= removed * 3 // should calm them down quick, provided they're actually in a state to STAY calm.
if (H.feral <=0) //check if they're unferalled
H.feral = 0
to_chat(H, "<span class='info'>Your mind starts to clear, soothed into a state of clarity as your senses return.</span>")
log_and_message_admins("is no longer feral.", H)
if(!(M.isSynthetic()))
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
M.adjust_nutrition(alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein.
if(IS_UNATHI)
M.adjust_nutrition(alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein.
//Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein.
//Chimera don't need their own case here since their factors for nutriment and protein cancel out.
else
M.adjust_nutrition(alt_nutriment_factor * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.feral > 0 && H.nutrition > 150 && H.traumatic_shock < 20 && H.jitteriness < 100) //Same check as feral triggers to stop them immediately re-feralling
H.feral -= removed * 3 // should calm them down quick, provided they're actually in a state to STAY calm.
if (H.feral <=0) //check if they're unferalled
H.feral = 0
to_chat(H, "<span class='info'>Your mind starts to clear, soothed into a state of clarity as your senses return.</span>")
log_and_message_admins("is no longer feral.", H)
/datum/reagent/ethanol/monstertamer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -216,10 +219,11 @@
/datum/reagent/ethanol/galacticpanic/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(dose * strength >= strength) // Early warning
M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects.
if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional.
M.slurring = max(M.slurring, 30)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
if(dose * strength >= strength) // Early warning
M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects.
if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional.
M.slurring = max(M.slurring, 30)
/datum/reagent/ethanol/bulldog
name = "Space Bulldog"
@@ -309,7 +313,9 @@
/datum/reagent/ethanol/russianroulette/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.Stun(2)
if(M.species.robo_ethanol_drunk || !(M.isSynthetic()))
M.Stun(2)
/datum/reagent/ethanol/lovemaker
name = "The Love Maker"
@@ -460,27 +466,28 @@
/datum/reagent/ethanol/hairoftherat/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
M.nutrition += (alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein.
if(IS_UNATHI)
M.nutrition += (alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein.
//Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein.
//Chimera don't need their own case here since their factors for nutriment and protein cancel out.
else
M.nutrition += (alt_nutriment_factor * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.feral > 0 && H.nutrition > 100 && H.traumatic_shock < min(60, H.nutrition/10) && H.jitteriness < 100) // same check as feral triggers to stop them immediately re-feralling
H.feral -= removed * 3 // should calm them down quick, provided they're actually in a state to STAY calm.
if (H.feral <=0) //check if they're unferalled
H.feral = 0
to_chat(H, "<span class='info'>Your mind starts to clear, soothed into a state of clarity as your senses return.</span>")
log_and_message_admins("is no longer feral.", H)
if(!(M.isSynthetic()))
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
M.nutrition += (alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein.
if(IS_UNATHI)
M.nutrition += (alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein.
//Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein.
//Chimera don't need their own case here since their factors for nutriment and protein cancel out.
else
M.nutrition += (alt_nutriment_factor * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.feral > 0 && H.nutrition > 100 && H.traumatic_shock < min(60, H.nutrition/10) && H.jitteriness < 100) // same check as feral triggers to stop them immediately re-feralling
H.feral -= removed * 3 // should calm them down quick, provided they're actually in a state to STAY calm.
if (H.feral <=0) //check if they're unferalled
H.feral = 0
to_chat(H, "<span class='info'>Your mind starts to clear, soothed into a state of clarity as your senses return.</span>")
log_and_message_admins("is no longer feral.", H)
/datum/reagent/ethanol/hairoftherat/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()