Merge branch 'master' into FERMICHEMCurTweaks

This commit is contained in:
Thalpy
2019-10-01 08:20:16 +01:00
committed by GitHub
146 changed files with 2025 additions and 843 deletions
+1 -1
View File
@@ -746,7 +746,7 @@
total_volume = 0
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
if(R.volume < CHEMICAL_QUANTISATION_LEVEL)
if((R.volume < 0.01) && !fermiIsReacting)
del_reagent(R.id)
else
total_volume += R.volume
@@ -77,6 +77,16 @@
updateUsrDialog()
update_icon()
return
if(beaker)
if(istype(I, /obj/item/reagent_containers/dropper))
var/obj/item/reagent_containers/dropper/D = I
D.afterattack(beaker, user, 1)
if(istype(I, /obj/item/reagent_containers/syringe))
var/obj/item/reagent_containers/syringe/S = I
S.afterattack(beaker, user, 1)
return ..()
/obj/machinery/chem_heater/on_deconstruction()
@@ -191,6 +191,13 @@
color = "#731008" // rgb: 115, 16, 8
taste_description = "ketchup"
/datum/reagent/consumable/mustard
name = "Mustard"
id = "mustard"
description = "Mustard, mostly used on hotdogs, corndogs and burgers."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#DDED26" // rgb: 221, 237, 38
taste_description = "mustard"
/datum/reagent/consumable/capsaicin
name = "Capsaicin Oil"
@@ -200,22 +200,20 @@
pH = 7.5 //God is alkaline
/datum/reagent/water/holywater/on_mob_metabolize(mob/living/L)
..()
. = ..()
ADD_TRAIT(L, TRAIT_HOLY, id)
if(is_servant_of_ratvar(L))
to_chat(L, "<span class='userdanger'>A fog spreads through your mind, purging the Justiciar's influence!</span>")
else if(iscultist(L))
to_chat(L, "<span class='userdanger'>A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence</span>")
/datum/reagent/water/holywater/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_HOLY, id)
..()
/datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(is_servant_of_ratvar(M))
to_chat(M, "<span class='userdanger'>A fog spreads through your mind, purging the Justiciar's influence!</span>")
..()
/datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(iscultist(M))
to_chat(M, "<span class='userdanger'>A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence</span>")
..()
if(iscultist(L))
for(var/datum/action/innate/cult/blood_magic/BM in L.actions)
BM.holy_dispel = FALSE
return ..()
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
if(!data)
@@ -224,9 +222,11 @@
M.jitteriness = min(M.jitteriness+4,10)
if(iscultist(M))
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
to_chat(M, "<span class='cultlarge'>Your blood rites falter as holy water scours your body!</span>")
for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
qdel(BS)
if(!BM.holy_dispel)
BM.holy_dispel = TRUE
to_chat(M, "<span class='cultlarge'>Your blood rites falter as holy water scours your body!</span>")
for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
qdel(BS)
if(data >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec
if(!M.stuttering)
M.stuttering = 1
@@ -1445,9 +1445,6 @@
color = "#FFFFFF" // white
random_color_list = list("#FFFFFF") //doesn't actually change appearance at all
//////////////////////////////////Hydroponics stuff///////////////////////////////
/datum/reagent/plantnutriment
@@ -1489,16 +1486,8 @@
tox_prob = 15
pH = 1
// GOON OTHERS
/datum/reagent/oil
name = "Oil"
id = "oil"
@@ -2032,6 +2021,13 @@
qdel(original_dna)
return ..()
/datum/reagent/mustardgrind
name = "Mustardgrind"
id = "mustardgrind"
description = "A powerd that is mixed with water and enzymes to make mustard."
color = "#BCC740" //RGB: 188, 199, 64
taste_description = "plant dust"
/datum/reagent/pax/catnip
name = "catnip"
id = "catnip"
@@ -313,25 +313,6 @@
. = 1
..()
/datum/reagent/toxin/chloralhydratedelayed //sedates half as quickly and does not cause toxloss. same name/desc so it doesn't give away sleepypens
name = "Chloral Hydrate"
id = "chloralhydratedelayed"
description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep."
reagent_state = SOLID
color = "#000067" // rgb: 0, 0, 103
toxpwr = 0
metabolization_rate = 1 * REAGENTS_METABOLISM
/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/carbon/M)
switch(current_cycle)
if(10 to 20)
M.confused += 1
M.drowsyness += 1
M.adjustStaminaLoss(7.5)
if(20 to INFINITY)
M.Sleeping(40, 0)
..()
/datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots
name = "Beer"
id = "fakebeer"
@@ -389,12 +370,12 @@
id = "tirizene"
description = "A nonlethal poison that causes extreme fatigue and weakness in its victim."
color = "#6E2828"
data = 13
data = 15
toxpwr = 0
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(REM * data, 0)
data = max(data - 1, 3)
data = max(data - 1, 5)
..()
. = 1
@@ -82,6 +82,12 @@
required_temp = 374
mob_react = FALSE
/datum/chemical_reaction/mustard
name = "Mustard"
id = "mustard"
results = list("mustard" = 5)
required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1)
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
+64 -22
View File
@@ -17,6 +17,7 @@
var/spillable = FALSE
var/beaker_weakness_bitflag = NONE//Bitflag!
var/container_HP = 2
var/cached_icon
/obj/item/reagent_containers/Initialize(mapload, vol)
. = ..()
@@ -148,30 +149,71 @@
/obj/item/reagent_containers/proc/temp_check()
if(beaker_weakness_bitflag & TEMP_WEAK)
if(reagents.chem_temp >= 444)//assuming polypropylene
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [src]'s melts from the temperature!</span>")
playsound(get_turf(src), 'sound/FermiChem/heatmelt.ogg', 80, 1)
to_chat(M, "<span class='warning'><i>[iconhtml] Have you tried using glass or meta beakers for high temperature reactions? These are immune to temperature effects.</i></span>")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times beakers have melted from temperature")
qdel(src)
START_PROCESSING(SSobj, src)
//melts glass beakers
/obj/item/reagent_containers/proc/pH_check()
if(beaker_weakness_bitflag & PH_WEAK)
if((reagents.pH < 0.5) || (reagents.pH > 13.5))
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
container_HP--
if(container_HP <= 0)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [src]'s melts from the extreme pH!</span>")
playsound(get_turf(src), 'sound/FermiChem/acidmelt.ogg', 80, 1)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times beakers have melted from pH")
qdel(src)
if((reagents.pH < 1.5) || (reagents.pH > 12.5))
START_PROCESSING(SSobj, src)
/obj/item/reagent_containers/process()
if(!cached_icon)
cached_icon = icon_state
var/damage
var/cause
if(beaker_weakness_bitflag & PH_WEAK)
if(reagents.pH < 2)
damage = (2 - reagents.pH)/20
cause = "from the extreme pH"
playsound(get_turf(src), 'sound/FermiChem/bufferadd.ogg', 50, 1)
if(reagents.pH > 12)
damage = (reagents.pH - 12)/20
cause = "from the extreme pH"
playsound(get_turf(src), 'sound/FermiChem/bufferadd.ogg', 50, 1)
if(beaker_weakness_bitflag & TEMP_WEAK)
if(reagents.chem_temp >= 444)
if(damage)
damage += (reagents.chem_temp/444)/5
else
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [src]'s is damaged by the extreme pH and begins to deform!</span>")
playsound(get_turf(src), 'sound/FermiChem/bufferadd.ogg', 50, 1)
to_chat(M, "<span class='warning'><i>[iconhtml] Have you tried using plastic beakers (XL) or metabeakers for high pH reactions? These beakers are immune to pH effects.</i></span>")
damage = (reagents.chem_temp/444)/5
if(cause)
cause += " and "
cause += "from the high temperature"
playsound(get_turf(src), 'sound/FermiChem/heatdam.ogg', 50, 1)
if(!damage || damage <= 0)
STOP_PROCESSING(SSobj, src)
container_HP -= damage
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
var/damage_percent = ((container_HP / initial(container_HP)*100))
switch(damage_percent)
if(-INFINITY to 0)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [src]'s melts [cause]!</span>")
playsound(get_turf(src), 'sound/FermiChem/acidmelt.ogg', 80, 1)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times beakers have melted")
STOP_PROCESSING(SSobj, src)
qdel(src)
return
if(0 to 35)
icon_state = "[cached_icon]_m3"
desc = "[initial(desc)] It is severely deformed."
if(35 to 70)
icon_state = "[cached_icon]_m2"
desc = "[initial(desc)] It is deformed."
if(70 to 85)
desc = "[initial(desc)] It is mildly deformed."
icon_state = "[cached_icon]_m1"
update_icon()
if(prob(25))
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [src]'s is damaged by [cause] and begins to deform!</span>")
@@ -6,7 +6,7 @@
reagent_flags = OPENCONTAINER
spillable = TRUE
resistance_flags = ACID_PROOF
container_HP = 3
container_HP = 2
/obj/item/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
@@ -115,7 +115,6 @@
item_state = "beaker"
materials = list(MAT_GLASS=500)
beaker_weakness_bitflag = PH_WEAK
container_HP = 5
/obj/item/reagent_containers/glass/beaker/Initialize()
. = ..()
@@ -128,27 +127,29 @@
update_icon()
/obj/item/reagent_containers/glass/beaker/update_icon()
if(!cached_icon)
cached_icon = icon_state
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[icon_state]10")
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[cached_icon]10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "[icon_state]-10"
filling.icon_state = "[cached_icon]-10"
if(10 to 24)
filling.icon_state = "[icon_state]10"
filling.icon_state = "[cached_icon]10"
if(25 to 49)
filling.icon_state = "[icon_state]25"
filling.icon_state = "[cached_icon]25"
if(50 to 74)
filling.icon_state = "[icon_state]50"
filling.icon_state = "[cached_icon]50"
if(75 to 79)
filling.icon_state = "[icon_state]75"
filling.icon_state = "[cached_icon]75"
if(80 to 90)
filling.icon_state = "[icon_state]80"
filling.icon_state = "[cached_icon]80"
if(91 to INFINITY)
filling.icon_state = "[icon_state]100"
filling.icon_state = "[cached_icon]100"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
@@ -167,7 +168,7 @@
volume = 100
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
container_HP = 6
container_HP = 3
/obj/item/reagent_containers/glass/beaker/plastic
name = "x-large beaker"
@@ -227,7 +228,7 @@
volume = 300
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
container_HP = 8
container_HP = 4
/obj/item/reagent_containers/glass/beaker/cryoxadone
list_reagents = list("cryoxadone" = 30)
@@ -284,7 +285,7 @@
SLOT_L_STORE, SLOT_R_STORE,\
SLOT_GENERC_DEXTROUS_STORAGE
)
container_HP = 2
container_HP = 1
/obj/item/reagent_containers/glass/bucket/Initialize()
beaker_weakness_bitflag |= TEMP_WEAK
@@ -338,7 +339,7 @@
materials = list(MAT_GLASS=0)
volume = 50
amount_per_transfer_from_this = 10
container_HP = 2
container_HP = 1
/obj/item/reagent_containers/glass/beaker/waterbottle/Initialize()
beaker_weakness_bitflag |= TEMP_WEAK
@@ -354,7 +355,7 @@
list_reagents = list("water" = 100)
volume = 100
amount_per_transfer_from_this = 20
container_HP = 2
container_HP = 1
/obj/item/reagent_containers/glass/beaker/waterbottle/large/empty
list_reagents = list()