Merge remote-tracking branch 'upstream/master' into meme

This commit is contained in:
dapnee
2020-06-22 15:15:28 -06:00
2469 changed files with 599038 additions and 170177 deletions
@@ -8,7 +8,6 @@
possible_transfer_amounts = list(5,10,15,25,30)
volume = 30
/obj/item/reagent_containers/glass/bottle/Initialize()
. = ..()
if(!icon_state)
@@ -40,7 +39,6 @@
. += filling
/obj/item/reagent_containers/glass/bottle/epinephrine
name = "epinephrine bottle"
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
@@ -228,6 +226,13 @@
desc = "A small bottle of atropine."
list_reagents = list(/datum/reagent/medicine/atropine = 30)
/obj/item/reagent_containers/glass/bottle/zeolites
name = "Zeolites bottle"
desc = "A small bottle of lab made Zeolite, which removes radiation from people quickly as well as contamination on items."
list_reagents = list(/datum/reagent/fermi/zeolites = 30)
// Viro bottles
/obj/item/reagent_containers/glass/bottle/romerol
name = "romerol bottle"
desc = "A small bottle of Romerol. The REAL zombie powder."
@@ -0,0 +1,51 @@
/obj/item/reagent_containers/chem_pack
name = "intravenous medicine bag"
desc = "A plastic pressure bag, or 'chem pack', for IV administration of drugs. It is fitted with a thermosealing strip."
icon = 'icons/obj/bloodpack.dmi'
icon_state = "chempack"
volume = 100
reagent_flags = OPENCONTAINER
spillable = TRUE
obj_flags = UNIQUE_RENAME
resistance_flags = ACID_PROOF
var/sealed = FALSE
/obj/item/reagent_containers/chem_pack/on_reagent_change(changetype)
update_icon()
/obj/item/reagent_containers/chem_pack/update_icon()
cut_overlays()
var/v = min(round(reagents.total_volume / volume * 10), 10)
if(v > 0)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "chempack1")
filling.icon_state = "chempack[v]"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/reagent_containers/chem_pack/AltClick(mob/living/user)
if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERY) && !sealed)
if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)))
to_chat(user, "<span class='warning'>Uh... whoops! You accidentally spill the content of the bag onto yourself.</span>")
SplashReagents(user)
return
else
DISABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAWABLE |INJECTABLE )
spillable = FALSE
sealed = TRUE
to_chat(user, "<span class='notice'>You seal the bag.</span>")
/obj/item/reagent_containers/chem_pack/examine()
. = ..()
if(sealed)
. += "<span class='notice'>The bag is sealed shut.</span>"
else
. += "<span class='notice'>Alt-click to seal it.</span>"
obj/item/reagent_containers/chem_pack/attack_self(mob/user)
if(sealed)
return
..()
@@ -7,6 +7,7 @@
possible_transfer_amounts = list(1, 2, 3, 4, 5)
volume = 5
reagent_flags = TRANSPARENT
custom_price = PRICE_CHEAP_AS_FREE
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
. = ..()
@@ -245,7 +245,6 @@
icon_state = "beakerbluespace"
custom_materials = list(/datum/material/glass = 5000, /datum/material/plasma = 3000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000)
volume = 300
material_flags = MATERIAL_NO_EFFECTS
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
container_HP = 5
@@ -352,7 +351,7 @@
name = "wooden bucket"
desc = "It's a bucket made of wood."
icon_state = "bucket_wooden"
custom_materials = null
custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 2)
slot_flags = NONE
item_flags = NO_MAT_REDEMPTION
@@ -362,6 +361,7 @@
icon = 'icons/obj/drinks.dmi'
icon_state = "smallbottle"
item_state = "bottle"
custom_price = PRICE_CHEAP_AS_FREE
list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
custom_materials = list(/datum/material/glass=0)
volume = 50
@@ -96,6 +96,7 @@
reagent_flags = DRAWABLE
flags_1 = null
list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/preservahyde = 3)
custom_premium_price = PRICE_ALMOST_EXPENSIVE
/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -207,8 +208,8 @@
#define DELUXE_SELF_SPRAY 10
#define DELUXE_SELF_INJECT 10
#define COMBAT_WAIT_SPRAY 0
#define COMBAT_WAIT_INJECT 0
#define COMBAT_WAIT_SPRAY 15
#define COMBAT_WAIT_INJECT 15
#define COMBAT_SELF_SPRAY 0
#define COMBAT_SELF_INJECT 0
@@ -331,7 +332,6 @@
else
to_chat(user, "<span class='notice'>This doesn't fit in [src].</span>")
return FALSE
return FALSE
/obj/item/hypospray/mkii/AltClick(mob/user)
. = ..()
@@ -0,0 +1,117 @@
/obj/item/reagent_containers/glass/maunamug
name = "mauna mug"
desc = "A drink served in a classy mug. Now with built-in heating!"
icon = 'icons/obj/mauna_mug.dmi'
icon_state = "maunamug"
spillable = TRUE
reagent_flags = OPENCONTAINER
// fill_icon_state = "maunafilling"
// fill_icon_thresholds = list(25)
var/obj/item/stock_parts/cell/cell
var/open = FALSE
var/on = FALSE
/obj/item/reagent_containers/glass/maunamug/Initialize(mapload, vol)
. = ..()
cell = new /obj/item/stock_parts/cell(src)
/obj/item/reagent_containers/glass/maunamug/examine(mob/user)
. = ..()
. += "<span class='notice'>The status display reads: Current temperature: <b>[reagents.chem_temp]K</b> Current Charge:[cell ? "[cell.charge / cell.maxcharge * 100]%" : "No cell found"].</span>"
if(open)
. += "<span class='notice'>The battery case is open.</span>"
/obj/item/reagent_containers/glass/maunamug/update_overlays()
. = ..()
if(reagents.total_volume >= 25)
. += mutable_appearance('icons/obj/reagentfillings.dmi', "maunafilling25", color = mix_color_from_reagents(reagents.reagent_list))
/obj/item/reagent_containers/glass/maunamug/process()
..()
if(on && (!cell || cell.charge <= 0)) //Check if we ran out of power
change_power_status(FALSE)
return FALSE
cell.use(10) //Basic cell goes for like 200 seconds, bluespace for 8000
if(!reagents.total_volume)
return FALSE
var/max_temp = min(500 + (500 * (0.2 * cell.rating)), 1000) // 373 to 1000
reagents.adjust_thermal_energy(0.8 * cell.maxcharge * reagents.total_volume, max_temp = max_temp) // 4 kelvin every tick on a basic cell. 160k on bluespace
reagents.handle_reactions()
update_icon()
if(reagents.chem_temp >= max_temp)
change_power_status(FALSE)
audible_message("<span class='notice'>The Mauna Mug lets out a happy beep and turns off!</span>")
playsound(src, 'sound/machines/chime.ogg', 50)
/obj/item/reagent_containers/glass/maunamug/Destroy()
if(cell)
QDEL_NULL(cell)
STOP_PROCESSING(SSobj, src)
. = ..()
/obj/item/reagent_containers/glass/maunamug/attack_self(mob/user)
if(on)
change_power_status(FALSE)
else
if(!cell || cell.charge <= 0)
return FALSE //No power, so don't turn on
change_power_status(TRUE)
/obj/item/reagent_containers/glass/maunamug/proc/change_power_status(status)
on = status
if(on)
START_PROCESSING(SSobj, src)
else
STOP_PROCESSING(SSobj, src)
update_icon()
/obj/item/reagent_containers/glass/maunamug/screwdriver_act(mob/living/user, obj/item/I)
. = ..()
open = !open
to_chat(user, "<span class='notice'>You screw the battery case on [src] [open ? "open" : "closed"] .</span>")
update_icon()
/obj/item/reagent_containers/glass/maunamug/attackby(obj/item/I, mob/user, params)
add_fingerprint(user)
if(!istype(I, /obj/item/stock_parts/cell))
return ..()
if(!open)
to_chat(user, "<span class='warning'>The battery case must be open to insert a power cell!</span>")
return FALSE
if(cell)
to_chat(user, "<span class='warning'>There is already a power cell inside!</span>")
return FALSE
else if(!user.transferItemToLoc(I, src))
return
cell = I
user.visible_message("<span class='notice'>[user] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>")
update_icon()
/obj/item/reagent_containers/glass/maunamug/attack_hand(mob/living/user)
if(cell && open)
cell.update_icon()
user.put_in_hands(cell)
cell = null
to_chat(user, "<span class='notice'>You remove the power cell from [src].</span>")
on = FALSE
update_icon()
return TRUE
return ..()
/obj/item/reagent_containers/glass/maunamug/update_icon()
..()
if(open)
if(cell)
icon_state = "maunamug_bat"
else
icon_state = "maunamug_no_bat"
else if(on)
icon_state = "maunamug_on"
else
icon_state = "maunamug"
if(reagents.total_volume && reagents.chem_temp >= 400)
var/intensity = (reagents.chem_temp - 400) * 1 / 600 //Get the opacity of the incandescent overlay. Ranging from 400 to 1000
var/mutable_appearance/mug_glow = mutable_appearance(icon, "maunamug_incand")
mug_glow.alpha = 255 * intensity
add_overlay(mug_glow)
@@ -22,10 +22,11 @@
if(reagents.total_volume && roundstart)
name += " ([reagents.total_volume]u)"
/obj/item/reagent_containers/pill/attack_self(mob/user)
return
/obj/item/reagent_containers/pill/get_w_volume() // DEFAULT_VOLUME_TINY at 25u, DEFAULT_VOLUME_SMALL at 50u
return DEFAULT_VOLUME_TINY/2 + reagents.total_volume / reagents.maximum_volume * DEFAULT_VOLUME_TINY
/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone)
if(!canconsume(M, user))
@@ -72,9 +73,8 @@
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
user.visible_message("<span class='warning'>[user] slips something into [target]!</span>",
"<span class='notice'>You dissolve [src] in [target].</span>", vision_distance = 2)
reagents.trans_to(target, reagents.total_volume)
qdel(src)
@@ -138,14 +138,14 @@
name = "mannitol pill"
desc = "Used to treat brain damage."
icon_state = "pill17"
list_reagents = list(/datum/reagent/medicine/mannitol = 50)
list_reagents = list(/datum/reagent/medicine/mannitol = 25)
roundstart = 1
/obj/item/reagent_containers/pill/mutadone
name = "mutadone pill"
desc = "Used to treat genetic damage."
icon_state = "pill20"
list_reagents = list(/datum/reagent/medicine/mutadone = 50)
list_reagents = list(/datum/reagent/medicine/mutadone = 25)
roundstart = 1
/obj/item/reagent_containers/pill/salicyclic
@@ -187,14 +187,14 @@
name = "prussian blue pill"
desc = "Used to treat heavy radition poisoning."
icon_state = "prussian_blue"
list_reagents = list(/datum/reagent/medicine/prussian_blue = 25, /datum/reagent/water = 10)
list_reagents = list(/datum/reagent/medicine/prussian_blue = 25)
roundstart = 1
/obj/item/reagent_containers/pill/mutarad
name = "radiation treatment deluxe pill"
desc = "Used to treat heavy radition poisoning and genetic defects."
icon_state = "anit_rad_fixgene"
list_reagents = list(/datum/reagent/medicine/prussian_blue = 15, /datum/reagent/medicine/potass_iodide = 15, /datum/reagent/medicine/mutadone = 15, /datum/reagent/water = 5)
list_reagents = list(/datum/reagent/medicine/prussian_blue = 10, /datum/reagent/medicine/potass_iodide = 10, /datum/reagent/medicine/mutadone = 5)
roundstart = 1
///////////////////////////////////////// this pill is used only in a legion mob drop
@@ -217,7 +217,7 @@
/obj/item/reagent_containers/pill/lsd
name = "hallucinogen pill"
list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15)
list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 12.5, /datum/reagent/toxin/mindbreaker = 12.5)
/obj/item/reagent_containers/pill/aranesp
@@ -66,7 +66,7 @@
/obj/item/reagent_containers/spray/proc/spray(atom/A)
var/range = CLAMP(get_dist(src, A), 1, current_range)
var/range = clamp(get_dist(src, A), 1, current_range)
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE)
var/puff_reagent_left = range //how many turf, mob or dense objet we can react with before we consider the chem puff consumed
@@ -15,6 +15,7 @@
var/show_filling = TRUE
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
reagent_flags = TRANSPARENT
custom_price = PRICE_CHEAP_AS_FREE
/obj/item/reagent_containers/syringe/Initialize()
. = ..()
@@ -180,7 +181,7 @@
///Used by update_icon() and update_overlays()
/obj/item/reagent_containers/syringe/proc/get_rounded_vol()
if(reagents && reagents.total_volume)
return CLAMP(round((reagents.total_volume / volume * 15),5), 1, 15)
return clamp(round((reagents.total_volume / volume * 15),5), 1, 15)
else
return 0