mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 21:48:21 +01:00
Merge remote-tracking branch 'ParadiseSS13/master' into brutal-part1
This commit is contained in:
@@ -16,6 +16,8 @@ GLOBAL_LIST_INIT(random_color_list, list("#00aedb","#a200ff","#f47835","#d41243"
|
||||
for(var/datum/reagent/reagent in reagent_list)
|
||||
if(reagent.id == "blood" && reagent.data && reagent.data["blood_color"])
|
||||
reagent_color = reagent.data["blood_color"]
|
||||
else if(reagent.id == "slimejelly" && reagent.data && reagent.data["colour"])
|
||||
reagent_color = reagent.data["colour"]
|
||||
else
|
||||
reagent_color = reagent.color
|
||||
|
||||
@@ -23,7 +25,7 @@ GLOBAL_LIST_INIT(random_color_list, list("#00aedb","#a200ff","#f47835","#d41243"
|
||||
vol_counter += vol_temp
|
||||
|
||||
if(isnull(color))
|
||||
color = reagent.color
|
||||
color = reagent_color
|
||||
else if(length(color) >= length(reagent_color))
|
||||
color = BlendRGB(color, reagent_color, vol_temp/vol_counter)
|
||||
else
|
||||
|
||||
@@ -128,8 +128,7 @@
|
||||
if(powered())
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
spawn(rand(0, 15))
|
||||
stat |= NOPOWER
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/chem_dispenser/ex_act(severity)
|
||||
if(severity < 3)
|
||||
|
||||
@@ -58,8 +58,7 @@
|
||||
if(powered())
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
spawn(rand(0, 15))
|
||||
stat |= NOPOWER
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/chem_heater/attackby(obj/item/I, mob/user)
|
||||
if(isrobot(user))
|
||||
|
||||
@@ -80,8 +80,7 @@
|
||||
if(powered())
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
spawn(rand(0, 15))
|
||||
stat |= NOPOWER
|
||||
stat |= NOPOWER
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/chem_master/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -227,24 +227,24 @@
|
||||
return update_flags
|
||||
|
||||
/datum/reagent/proc/fakedeath(mob/living/M)
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
if(HAS_TRAIT(M, TRAIT_FAKEDEATH))
|
||||
return
|
||||
if(!(M.status_flags & CANPARALYSE))
|
||||
return
|
||||
if(M.mind && M.mind.changeling && M.mind.changeling.regenerating) //no messing with changeling's fake death
|
||||
return
|
||||
M.emote("deathgasp")
|
||||
M.status_flags |= FAKEDEATH
|
||||
ADD_TRAIT(M, TRAIT_FAKEDEATH, id)
|
||||
M.updatehealth("fakedeath reagent")
|
||||
|
||||
/datum/reagent/proc/fakerevive(mob/living/M)
|
||||
if(!(M.status_flags & FAKEDEATH))
|
||||
if(!HAS_TRAIT(M, TRAIT_FAKEDEATH))
|
||||
return
|
||||
if(M.mind && M.mind.changeling && M.mind.changeling.regenerating)
|
||||
return
|
||||
if(M.resting)
|
||||
M.StopResting()
|
||||
M.status_flags &= ~(FAKEDEATH)
|
||||
REMOVE_TRAIT(M, TRAIT_FAKEDEATH, id)
|
||||
if(M.healthdoll)
|
||||
M.healthdoll.cached_healthdoll_overlays.Cut()
|
||||
M.updatehealth("fakedeath reagent end")
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
E.mend_fracture()
|
||||
E.internal_bleeding = FALSE
|
||||
M.SetEyeBlind(0, FALSE)
|
||||
M.CureNearsighted(FALSE)
|
||||
M.CureBlind(FALSE)
|
||||
M.cure_nearsighted(null, FALSE)
|
||||
M.cure_blind(null, FALSE)
|
||||
M.CureMute()
|
||||
M.CureDeaf()
|
||||
M.CureEpilepsy()
|
||||
|
||||
@@ -17,12 +17,9 @@
|
||||
|
||||
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/item/paper))
|
||||
if(istype(O,/obj/item/paper/contract/infernal))
|
||||
O.visible_message("<span class='warning'>The solution ignites on contact with [O].</span>")
|
||||
else
|
||||
var/obj/item/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
paperaffected.visible_message("<span class='notice'>The solution melts away the ink on the paper.</span>")
|
||||
var/obj/item/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
paperaffected.visible_message("<span class='notice'>The solution melts away the ink on the paper.</span>")
|
||||
if(istype(O,/obj/item/book))
|
||||
if(volume >= 5)
|
||||
var/obj/item/book/affectedbook = O
|
||||
@@ -376,6 +373,18 @@
|
||||
drink_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
|
||||
taste_description = "whiskey and coke"
|
||||
|
||||
/datum/reagent/consumable/ethanol/daiquiri
|
||||
name = "Daiquiri"
|
||||
id = "daiquiri"
|
||||
description = "Lime juice and sugar mixed with rum. A sweet and refreshing mix."
|
||||
reagent_state = LIQUID
|
||||
color = "#61d961" // rgb: 38, 85, 38
|
||||
alcohol_perc = 0.4
|
||||
drink_icon = "daiquiriglass"
|
||||
drink_name = "Daiquiri"
|
||||
drink_desc = "When Botany gives you limes, make daiquiris."
|
||||
taste_description = "sweetened lime juice and rum"
|
||||
|
||||
/datum/reagent/consumable/ethanol/martini
|
||||
name = "Classic Martini"
|
||||
id = "martini"
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
M.apply_damage(0.4 * volume, BURN)
|
||||
if(M.reagents)
|
||||
if(M.reagents.has_reagent("teslium") && prob(0.6 * volume))
|
||||
M.electrocute_act((0.5 * volume), "the blob's electrical discharge", 1, TRUE)
|
||||
M.electrocute_act((0.5 * volume), "the blob's electrical discharge", 1, SHOCK_NOGLOVES)
|
||||
M.reagents.del_reagent("teslium")
|
||||
return //don't add more teslium after you shock it out of someone.
|
||||
M.reagents.add_reagent("teslium", 0.125 * volume) // a little goes a long way
|
||||
|
||||
@@ -73,11 +73,11 @@
|
||||
update_flags |= M.Druggy(30, FALSE)
|
||||
M.AdjustDizzy(5)
|
||||
M.SetDrowsy(0)
|
||||
M.status_flags |= GOTTAGONOTSOFAST
|
||||
ADD_TRAIT(M, TRAIT_GOTTAGONOTSOFAST, id)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/cold/nuka_cola/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGONOTSOFAST
|
||||
REMOVE_TRAIT(M, TRAIT_GOTTAGONOTSOFAST, id)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/drink/cold/spacemountainwind
|
||||
|
||||
@@ -74,8 +74,8 @@
|
||||
if(1 to 20)
|
||||
//nothing
|
||||
if(21 to INFINITY)
|
||||
if(prob(current_cycle-10))
|
||||
update_flags |= M.CureNearsighted(FALSE)
|
||||
if(prob(current_cycle - 10))
|
||||
update_flags |= M.cure_nearsighted(EYE_DAMAGE, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/doctor_delight
|
||||
@@ -178,7 +178,7 @@
|
||||
|
||||
/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if((ishuman(M) && (COMIC in M.mutations)) || issmall(M))
|
||||
if(HAS_TRAIT(M, TRAIT_COMIC_SANS) || issmall(M))
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
@@ -409,7 +409,7 @@
|
||||
|
||||
/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if((ishuman(M) && (COMIC in M.mutations)) || issmall(M))
|
||||
if(HAS_TRAIT(M, TRAIT_COMIC_SANS) || issmall(M))
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
@@ -517,7 +517,7 @@
|
||||
description = "Beloved of children and teetotalers."
|
||||
color = "#E6CDFF"
|
||||
taste_description = "grape soda"
|
||||
|
||||
|
||||
/datum/reagent/consumable/drink/coco/icecoco
|
||||
name = "Iced Cocoa"
|
||||
id = "icecoco"
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
else if(effect <= 7)
|
||||
M.emote("collapse")
|
||||
to_chat(M, "<span class='warning'>Your heart is pounding!</span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
SEND_SOUND(M, sound('sound/effects/singlebeat.ogg'))
|
||||
update_flags |= M.Paralyse(5, FALSE)
|
||||
M.Jitter(30)
|
||||
update_flags |= M.adjustToxLoss(6, FALSE)
|
||||
@@ -290,7 +290,7 @@
|
||||
H.visible_message("<span class='warning'>[M]'s skin is rotting away!</span>")
|
||||
update_flags |= H.adjustBruteLoss(25, FALSE)
|
||||
H.emote("scream")
|
||||
H.ChangeToHusk()
|
||||
H.become_husk("krokodil_overdose")
|
||||
H.emote("faint")
|
||||
else if(effect <= 7)
|
||||
M.emote("shiver")
|
||||
@@ -322,13 +322,13 @@
|
||||
update_flags |= M.AdjustWeakened(-2.5, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-2, FALSE)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
if(prob(50))
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
..()
|
||||
|
||||
/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
|
||||
@@ -407,7 +407,7 @@
|
||||
/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(method == REAGENT_INGEST)
|
||||
to_chat(M, "<span class = 'danger'><font face='[pick("Curlz MT", "Comic Sans MS")]' size='[rand(4,6)]'>You feel FUCKED UP!!!!!!</font></span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
SEND_SOUND(M, sound('sound/effects/singlebeat.ogg'))
|
||||
M.emote("faint")
|
||||
M.apply_effect(5, IRRADIATE)
|
||||
M.adjustToxLoss(5)
|
||||
@@ -684,7 +684,7 @@
|
||||
update_flags |= M.AdjustStunned(-2, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-2, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-2, FALSE)
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
M.Jitter(3)
|
||||
update_flags |= M.adjustBrainLoss(0.5, FALSE)
|
||||
if(prob(5))
|
||||
@@ -692,7 +692,7 @@
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/lube/ultra/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
..()
|
||||
|
||||
/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
|
||||
|
||||
@@ -591,15 +591,18 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#21170E"
|
||||
taste_description = "tea"
|
||||
harmless = TRUE
|
||||
|
||||
/datum/reagent/consumable/mugwort/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M) && M.mind)
|
||||
if(M.mind.special_role == SPECIAL_ROLE_WIZARD)
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(ishuman(M) && M.mind?.special_role == SPECIAL_ROLE_WIZARD)
|
||||
update_flags |= M.adjustToxLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(!R.harmless)
|
||||
M.reagents.remove_reagent(R.id, 5) // purge those meme chems
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/porktonium
|
||||
@@ -809,7 +812,7 @@
|
||||
H.Weaken(2, FALSE)
|
||||
H.update_canmove()
|
||||
to_chat(H, "<span class='danger'>Ugh! Eating that was a terrible idea!</span>")
|
||||
if(NO_HUNGER in H.dna.species.species_traits) //If you don't eat, then you can't get food poisoning
|
||||
if(HAS_TRAIT(H, TRAIT_NOHUNGER)) //If you don't eat, then you can't get food poisoning
|
||||
return
|
||||
H.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
|
||||
|
||||
@@ -295,6 +295,11 @@
|
||||
M.adjustFireLoss(-1.5*volume)
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='notice'>The synthetic flesh integrates itself into your wounds, healing you.</span>")
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(HAS_TRAIT_FROM(H, TRAIT_HUSK, BURN) && H.getFireLoss() < UNHUSK_DAMAGE_THRESHOLD && (H.reagents.get_reagent_amount("synthflesh") + volume >= SYNTHFLESH_UNHUSK_AMOUNT))
|
||||
H.cure_husk(BURN)
|
||||
H.visible_message("<span class='nicegreen'>The squishy liquid coats [H]'s burns. [H] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because humans could be a skeleton or a golem or something
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
|
||||
@@ -411,7 +416,7 @@
|
||||
|
||||
/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M)
|
||||
if(prob(80))
|
||||
M.radiation = max(0, M.radiation-1)
|
||||
M.radiation = max(0, M.radiation-10)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/medicine/pen_acid
|
||||
@@ -428,7 +433,7 @@
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,4)
|
||||
M.radiation = max(0, M.radiation-7)
|
||||
M.radiation = max(0, M.radiation-70)
|
||||
if(prob(75))
|
||||
update_flags |= M.adjustToxLoss(-4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(33))
|
||||
@@ -639,9 +644,9 @@
|
||||
update_flags |= M.AdjustEyeBlurry(-1, FALSE)
|
||||
update_flags |= M.AdjustEarDamage(-1)
|
||||
if(prob(50))
|
||||
update_flags |= M.CureNearsighted(FALSE)
|
||||
update_flags |= M.cure_nearsighted(EYE_DAMAGE, FALSE)
|
||||
if(prob(30))
|
||||
update_flags |= M.CureBlind(FALSE)
|
||||
update_flags |= M.cure_blind(EYE_DAMAGE, FALSE)
|
||||
update_flags |= M.SetEyeBlind(0, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
@@ -769,7 +774,7 @@
|
||||
if(M.getBruteLoss() + M.getFireLoss() + M.getCloneLoss() >= 150)
|
||||
M.delayed_gib()
|
||||
return
|
||||
if(!M.suiciding && !(NOCLONE in M.mutations) && (!M.mind || M.mind && M.mind.is_revivable()))
|
||||
if(!M.suiciding && !HAS_TRAIT(M, TRAIT_HUSK) && !HAS_TRAIT(M, TRAIT_BADDNA))
|
||||
var/time_dead = world.time - M.timeofdeath
|
||||
M.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
|
||||
M.adjustCloneLoss(50)
|
||||
@@ -820,13 +825,13 @@
|
||||
..()
|
||||
return
|
||||
M.SetJitter(0)
|
||||
var/needs_update = M.mutations.len > 0
|
||||
var/needs_update = length(M.active_mutations)
|
||||
|
||||
if(needs_update)
|
||||
for(var/block = 1; block<=DNA_SE_LENGTH; block++)
|
||||
if(!(block in M.dna.default_blocks))
|
||||
M.dna.SetSEState(block, FALSE, TRUE)
|
||||
genemutcheck(M, block, null, MUTCHK_FORCED)
|
||||
singlemutcheck(M, block, MUTCHK_FORCED)
|
||||
M.dna.UpdateSE()
|
||||
|
||||
M.dna.struc_enzymes = M.dna.struc_enzymes_original
|
||||
@@ -902,7 +907,7 @@
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
if(M.health < 50 && M.health > 0)
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
@@ -915,7 +920,7 @@
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M, severity)
|
||||
|
||||
@@ -117,11 +117,6 @@
|
||||
color = "#D0D0D0" // rgb: 208, 208, 208
|
||||
taste_description = "sub-par bling"
|
||||
|
||||
/datum/reagent/silver/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(M.has_bane(BANE_SILVER))
|
||||
M.reagents.add_reagent("toxin", volume)
|
||||
. = ..()
|
||||
|
||||
/datum/reagent/aluminum
|
||||
name = "Aluminum"
|
||||
id = "aluminum"
|
||||
@@ -169,11 +164,6 @@
|
||||
H.blood_volume += 0.8
|
||||
return ..()
|
||||
|
||||
/datum/reagent/iron/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(M.has_bane(BANE_IRON) && holder && holder.chem_temp < 150) //If the target is weak to cold iron, then poison them.
|
||||
M.reagents.add_reagent("toxin", volume)
|
||||
..()
|
||||
|
||||
//foam
|
||||
/datum/reagent/fluorosurfactant
|
||||
name = "Fluorosurfactant"
|
||||
@@ -460,8 +450,8 @@
|
||||
else
|
||||
to_chat(C, "<span class='warning'>Something doesn't feel right...</span>")
|
||||
C.AdjustDizzy(volume)
|
||||
ADD_TRAIT(C, TRAIT_JESTER, id)
|
||||
C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE)
|
||||
ADD_TRAIT(C, TRAIT_COMIC_SANS, id)
|
||||
C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE, falloff_exponent = 20)
|
||||
C.AddElement(/datum/element/waddling)
|
||||
|
||||
/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/M)
|
||||
@@ -496,7 +486,7 @@
|
||||
|
||||
/datum/reagent/jestosterone/on_mob_delete(mob/living/M)
|
||||
..()
|
||||
REMOVE_TRAIT(M, TRAIT_JESTER, id)
|
||||
REMOVE_TRAIT(M, TRAIT_COMIC_SANS, id)
|
||||
qdel(M.GetComponent(/datum/component/squeak))
|
||||
M.RemoveElement(/datum/element/waddling)
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/berry_banned2/on_mob_death(mob/living/M)
|
||||
M << sound('sound/effects/adminhelp.ogg',0,1,0,25)
|
||||
SEND_SOUND(M, sound('sound/effects/adminhelp.ogg', 0, 1, 0, 25))
|
||||
to_chat(M, "<span class='adminhelp'>PM from-<b>Administrator</b>: BWOINK!</span>")
|
||||
..()
|
||||
|
||||
|
||||
@@ -203,8 +203,6 @@
|
||||
S.create_reagents(volume)
|
||||
S.reagents.add_reagent("thermite", volume)
|
||||
S.thermite = TRUE
|
||||
S.overlays.Cut()
|
||||
S.overlays = image('icons/effects/effects.dmi', icon_state = "thermite")
|
||||
if(S.active_hotspot)
|
||||
S.reagents.temperature_reagents(S.active_hotspot.temperature, 10, 300)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
taste_description = "mint"
|
||||
|
||||
/datum/reagent/minttoxin/on_mob_life(mob/living/M)
|
||||
if(FAT in M.mutations)
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
M.gib()
|
||||
return ..()
|
||||
|
||||
@@ -180,11 +180,11 @@
|
||||
/datum/reagent/mutagen/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(!..())
|
||||
return
|
||||
if(!M.dna)
|
||||
if(!M.dna || HAS_TRAIT(M, TRAIT_BADDNA) || HAS_TRAIT(M, TRAIT_GENELESS))
|
||||
return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
if((method==REAGENT_TOUCH && prob(33)) || method==REAGENT_INGEST)
|
||||
randmutb(M)
|
||||
domutcheck(M, null)
|
||||
domutcheck(M)
|
||||
M.UpdateAppearance()
|
||||
|
||||
/datum/reagent/mutagen/on_mob_life(mob/living/M)
|
||||
@@ -213,7 +213,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/reagent/stable_mutagen/on_mob_life(mob/living/M)
|
||||
if(!ishuman(M) || !M.dna)
|
||||
if(!ishuman(M) || !M.dna || HAS_TRAIT(M, TRAIT_BADDNA) || HAS_TRAIT(M, TRAIT_GENELESS))
|
||||
return
|
||||
M.apply_effect(2 * REAGENTS_EFFECT_MULTIPLIER, IRRADIATE)
|
||||
if(current_cycle == 10 && islist(data))
|
||||
@@ -544,7 +544,7 @@
|
||||
update_flags |= M.Weaken(8, FALSE)
|
||||
else if(effect <= 7)
|
||||
to_chat(M, "<span class='warning'>Your heartbeat is pounding inside your head!</span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
SEND_SOUND(M, sound('sound/effects/singlebeat.ogg'))
|
||||
M.emote("collapse")
|
||||
update_flags |= M.adjustOxyLoss(8, FALSE)
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
@@ -1040,20 +1040,19 @@
|
||||
var/obj/structure/spacevine/SV = O
|
||||
SV.on_chem_effect(src)
|
||||
|
||||
/datum/reagent/glyphosate/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.wear_mask) // If not wearing a mask
|
||||
C.adjustToxLoss(lethality)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(IS_PLANT in H.dna.species.species_traits) //plantmen take extra damage
|
||||
H.adjustToxLoss(3)
|
||||
..()
|
||||
else if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
|
||||
var/mob/living/simple_animal/diona/D = M
|
||||
D.adjustHealth(100)
|
||||
..()
|
||||
/datum/reagent/glyphosate/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume)
|
||||
if(isliving(M))
|
||||
if(M.mob_biotypes & MOB_PLANT)
|
||||
var/damage = min(round(0.4 * volume, 0.1), 10)
|
||||
M.adjustToxLoss(damage)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.wear_mask) // If not wearing a mask
|
||||
C.adjustToxLoss(lethality)
|
||||
if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
|
||||
var/mob/living/simple_animal/diona/D = M
|
||||
D.adjustHealth(100)
|
||||
..()
|
||||
|
||||
/datum/reagent/glyphosate/atrazine
|
||||
name = "Atrazine"
|
||||
@@ -1081,15 +1080,17 @@
|
||||
O.visible_message("<span class='warning'>The ants die.</span>")
|
||||
qdel(O)
|
||||
|
||||
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.wear_mask) // If not wearing a mask
|
||||
C.adjustToxLoss(2)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(iskidan(H)) //RIP
|
||||
H.adjustToxLoss(20)
|
||||
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume)
|
||||
if(isliving(M))
|
||||
if(M.mob_biotypes & MOB_BUG)
|
||||
var/damage = min(round(0.4 * volume, 0.1), 10)
|
||||
M.adjustToxLoss(damage)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.wear_mask) // If not wearing a mask
|
||||
C.adjustToxLoss(2)
|
||||
if(iskidan(C)) //RIP
|
||||
C.adjustToxLoss(18)
|
||||
|
||||
/datum/reagent/capulettium
|
||||
name = "Capulettium"
|
||||
@@ -1113,12 +1114,12 @@
|
||||
update_flags |= M.AdjustEyeBlurry(10, FALSE)
|
||||
if(70 to INFINITY)
|
||||
update_flags |= M.AdjustEyeBlurry(10, FALSE)
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
if(HAS_TRAIT(M, TRAIT_FAKEDEATH))
|
||||
fakerevive(M)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/capulettium/on_mob_delete(mob/living/M)
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
if(HAS_TRAIT(M, TRAIT_FAKEDEATH))
|
||||
fakerevive(M)
|
||||
..()
|
||||
|
||||
@@ -1133,14 +1134,14 @@
|
||||
|
||||
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
|
||||
M.Silence(2)
|
||||
if((M.status_flags & FAKEDEATH) && !M.resting)
|
||||
if((HAS_TRAIT(M, TRAIT_FAKEDEATH)) && !M.resting)
|
||||
fakerevive(M)
|
||||
else if(!(M.status_flags & FAKEDEATH) && M.resting)
|
||||
else if(!HAS_TRAIT(M, TRAIT_FAKEDEATH) && M.resting)
|
||||
fakedeath(M)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/capulettium_plus/on_mob_delete(mob/living/M)
|
||||
if(M.status_flags & FAKEDEATH)
|
||||
if(HAS_TRAIT(M, TRAIT_FAKEDEATH))
|
||||
fakerevive(M)
|
||||
..()
|
||||
|
||||
@@ -1178,7 +1179,7 @@
|
||||
return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
if((method==REAGENT_TOUCH && prob(50)) || method==REAGENT_INGEST)
|
||||
randmutb(M)
|
||||
domutcheck(M, null)
|
||||
domutcheck(M)
|
||||
M.UpdateAppearance()
|
||||
|
||||
/datum/reagent/glowing_slurry/on_mob_life(mob/living/M)
|
||||
@@ -1193,7 +1194,7 @@
|
||||
randmutg(M)
|
||||
did_mutation = TRUE
|
||||
if(did_mutation)
|
||||
domutcheck(M, null)
|
||||
domutcheck(M)
|
||||
M.UpdateAppearance()
|
||||
return ..()
|
||||
|
||||
@@ -1233,10 +1234,22 @@
|
||||
shock_timer++
|
||||
if(shock_timer >= rand(5,30)) //Random shocks are wildly unpredictable
|
||||
shock_timer = 0
|
||||
M.electrocute_act(rand(5, 20), "Teslium in their body", 1, TRUE) //Override because it's caused from INSIDE of you
|
||||
playsound(M, "sparks", 50, 1)
|
||||
M.electrocute_act(rand(5, 20), "Teslium in their body", 1, SHOCK_NOGLOVES) //Override because it's caused from INSIDE of you
|
||||
playsound(M, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/teslium/on_mob_add(mob/living/M)
|
||||
..()
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.physiology.siemens_coeff *= 2
|
||||
|
||||
/datum/reagent/teslium/on_mob_delete(mob/living/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.physiology.siemens_coeff *= 0.5
|
||||
..()
|
||||
|
||||
/datum/reagent/gluttonytoxin
|
||||
name = "Gluttony's Blessing"
|
||||
id = "gluttonytoxin"
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
M.SetConfused(0)
|
||||
if(ishuman(M)) // Unequip all cult clothing
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/I in H.contents - (H.bodyparts | H.internal_organs)) // Satanic liver NYI
|
||||
for(var/I in H.contents)
|
||||
if(is_type_in_list(I, CULT_CLOTHING))
|
||||
H.unEquip(I)
|
||||
return
|
||||
|
||||
@@ -451,6 +451,14 @@
|
||||
result_amount = 3
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/chemical_reaction/daquiri
|
||||
name = "Daiquiri"
|
||||
id = "daiquiri"
|
||||
result = "daiquiri"
|
||||
required_reagents = list("limejuice" = 1, "sugar" = 1, "rum" = 2)
|
||||
result_amount = 4
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
|
||||
////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////
|
||||
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
SSblackbox.record_feedback("tally", "slime_cores_used", 1, type)
|
||||
|
||||
//Oil
|
||||
/datum/chemical_reaction/slimeexplosion
|
||||
/datum/chemical_reaction/slime_explosion
|
||||
name = "Slime Explosion"
|
||||
id = "m_explosion"
|
||||
result = null
|
||||
@@ -489,13 +489,20 @@
|
||||
required_container = /obj/item/slime_extract/oil
|
||||
required_other = 1
|
||||
|
||||
/datum/chemical_reaction/slimeexplosion/on_reaction(datum/reagents/holder)
|
||||
/datum/chemical_reaction/slime_explosion/on_reaction(datum/reagents/holder)
|
||||
SSblackbox.record_feedback("tally", "slime_cores_used", 1, type)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently !</span>")
|
||||
spawn(50)
|
||||
if(holder && holder.my_atom)
|
||||
explosion(get_turf(holder.my_atom), 1 ,3, 6)
|
||||
var/obj/item/slime_extract/oil/extract = holder.my_atom
|
||||
extract.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
|
||||
addtimer(CALLBACK(src, .proc/explode, extract), 5 SECONDS)
|
||||
|
||||
/datum/chemical_reaction/slime_explosion/proc/explode(obj/item/slime_extract/oil/extract)
|
||||
if(QDELETED(extract))
|
||||
return
|
||||
var/who = extract.injector_mob ? "[key_name_admin(extract.injector_mob)]" : "Unknown"
|
||||
var/turf/extract_turf = get_turf(extract)
|
||||
message_admins("[who] triggered an oil slime explosion at [COORD(extract_turf)].")
|
||||
log_game("[who] triggered an oil slime explosion at [COORD(extract_turf)].")
|
||||
explosion(extract_turf, 1, 3, 6)
|
||||
|
||||
//Light Pink
|
||||
/datum/chemical_reaction/slimepotion2
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
result_amount = 3
|
||||
mix_message = "The substance turns neon green and bubbles unnervingly."
|
||||
|
||||
/datum/chemical_reaction/stable_mustagen
|
||||
/datum/chemical_reaction/stable_mutagen
|
||||
name = "Stable mutagen"
|
||||
id = "stable_mutagen"
|
||||
result = "stable_mutagen"
|
||||
@@ -162,7 +162,7 @@
|
||||
result_amount = 3
|
||||
mix_message = "The substance turns a drab green and begins to bubble."
|
||||
|
||||
/datum/chemical_reaction/stable_mustagen/stable_mustagen2
|
||||
/datum/chemical_reaction/stable_mutagen/stable_mutagen2
|
||||
id = "stable_mutagen2"
|
||||
required_reagents = list("mutadone" = 3, "lithium" = 1)
|
||||
result_amount = 4
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Pills.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* # Pill
|
||||
*
|
||||
* A swallowable pill. Can be dissolved in reagent containers.
|
||||
*/
|
||||
/obj/item/reagent_containers/food/pill
|
||||
name = "pill"
|
||||
desc = "a pill."
|
||||
desc = "A pill."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = null
|
||||
item_state = "pill"
|
||||
container_type = NONE
|
||||
possible_transfer_amounts = null
|
||||
volume = 100
|
||||
has_lid = FALSE
|
||||
consume_sound = null
|
||||
can_taste = FALSE
|
||||
antable = FALSE
|
||||
|
||||
/obj/item/reagent_containers/food/pill/New()
|
||||
..()
|
||||
/obj/item/reagent_containers/food/pill/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!icon_state)
|
||||
icon_state = "pill[rand(1,20)]"
|
||||
|
||||
/obj/item/reagent_containers/food/pill/attack_self(mob/user)
|
||||
return
|
||||
icon_state = "pill[rand(1, 20)]"
|
||||
|
||||
/obj/item/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
|
||||
if(!istype(M))
|
||||
@@ -31,34 +32,23 @@
|
||||
return FALSE
|
||||
|
||||
/obj/item/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
if(!proximity || !target.is_open_container())
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You [!target.reagents.total_volume ? "break open" : "dissolve"] [src] in [target].</span>")
|
||||
for(var/mob/O in oviewers(2, user))
|
||||
O.show_message("<span class='warning'>[user] puts something in [target].</span>", 1)
|
||||
reagents.trans_to(target, reagents.total_volume)
|
||||
qdel(src)
|
||||
|
||||
if(target.is_open_container() != 0 && target.reagents)
|
||||
if(!target.reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[target] is empty. Cant dissolve [src].</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notify'>You dissolve [src] in [target].</span>")
|
||||
reagents.trans_to(target, reagents.total_volume)
|
||||
for(var/mob/O in viewers(2, user))
|
||||
O.show_message("<span class='warning'>[user] puts something in [target].</span>", 1)
|
||||
spawn(5)
|
||||
qdel(src)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Pills. END
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//Pills
|
||||
// Basic set of pills below
|
||||
/obj/item/reagent_containers/food/pill/tox
|
||||
name = "Toxins pill"
|
||||
name = "\improper Toxin pill"
|
||||
desc = "Highly toxic."
|
||||
icon_state = "pill21"
|
||||
list_reagents = list("toxin" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/initropidril
|
||||
name = "initropidril pill"
|
||||
name = "\improper Initropidril pill"
|
||||
desc = "Don't swallow this."
|
||||
icon_state = "pill21"
|
||||
list_reagents = list("initropidril" = 50)
|
||||
@@ -70,85 +60,85 @@
|
||||
list_reagents = list("capulettium_plus" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/adminordrazine
|
||||
name = "Adminordrazine pill"
|
||||
name = "\improper Adminordrazine pill"
|
||||
desc = "It's magic. We don't have to explain it."
|
||||
icon_state = "pill16"
|
||||
list_reagents = list("adminordrazine" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/morphine
|
||||
name = "Morphine pill"
|
||||
name = "\improper Morphine pill"
|
||||
desc = "Commonly used to treat insomnia."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("morphine" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/methamphetamine
|
||||
name = "Methamphetamine pill"
|
||||
name = "\improper Methamphetamine pill"
|
||||
desc = "Helps improve the ability to concentrate."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("methamphetamine" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/haloperidol
|
||||
name = "Haloperidol pill"
|
||||
desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems."
|
||||
name = "\improper Haloperidol pill"
|
||||
desc = "Haloperidol is an anti-psychotic used to treat psychiatric problems."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("haloperidol" = 15)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/happy
|
||||
name = "Happy pill"
|
||||
name = "happy pill"
|
||||
desc = "Happy happy joy joy!"
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("space_drugs" = 15, "sugar" = 15)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/zoom
|
||||
name = "Zoom pill"
|
||||
name = "zoom pill"
|
||||
desc = "Zoooom!"
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("synaptizine" = 5, "methamphetamine" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/charcoal
|
||||
name = "Charcoal pill"
|
||||
name = "\improper Charcoal pill"
|
||||
desc = "Neutralizes many common toxins."
|
||||
icon_state = "pill17"
|
||||
list_reagents = list("charcoal" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/epinephrine
|
||||
name = "Epinephrine pill"
|
||||
name = "\improper Epinephrine pill"
|
||||
desc = "Used to provide shots of adrenaline."
|
||||
icon_state = "pill6"
|
||||
list_reagents = list("epinephrine" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/salicylic
|
||||
name = "Salicylic Acid pill"
|
||||
name = "\improper Salicylic Acid pill"
|
||||
desc = "Commonly used to treat moderate pain and fevers."
|
||||
icon_state = "pill4"
|
||||
list_reagents = list("sal_acid" = 20)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/salbutamol
|
||||
name = "Salbutamol pill"
|
||||
name = "\improper Salbutamol pill"
|
||||
desc = "Used to treat respiratory distress."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("salbutamol" = 20)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/hydrocodone
|
||||
name = "Hydrocodone pill"
|
||||
name = "\improper Hydrocodone pill"
|
||||
desc = "Used to treat extreme pain."
|
||||
icon_state = "pill6"
|
||||
list_reagents = list("hydrocodone" = 15)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/calomel
|
||||
name = "calomel pill"
|
||||
name = "\improper Calomel pill"
|
||||
desc = "Can be used to purge impurities, but is highly toxic itself."
|
||||
icon_state = "pill3"
|
||||
list_reagents = list("calomel" = 15)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/mutadone
|
||||
name = "mutadone pill"
|
||||
name = "\improper Mutadone pill"
|
||||
desc = "Used to cure genetic abnormalities."
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("mutadone" = 20)
|
||||
|
||||
/obj/item/reagent_containers/food/pill/mannitol
|
||||
name = "mannitol pill"
|
||||
name = "\improper Mannitol pill"
|
||||
desc = "Used to treat cranial swelling."
|
||||
icon_state = "pill19"
|
||||
list_reagents = list("mannitol" = 20)
|
||||
|
||||
@@ -110,9 +110,10 @@
|
||||
..()
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/tesla_act()
|
||||
..() //extend the zap
|
||||
boom()
|
||||
/obj/structure/reagent_dispensers/fueltank/zap_act(power, zap_flags)
|
||||
. = ..() //extend the zap
|
||||
if(ZAP_OBJ_DAMAGE & zap_flags)
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user