mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-04 14:33:58 +00:00
Merge branch 'master' of https://github.com/VOREStation/VOREStation
# Conflicts: # code/game/objects/items/weapons/tools.dm # code/modules/mob/living/silicon/robot/robot_modules/station.dm # config/custom_items.txt # vorestation.dme
This commit is contained in:
@@ -23,6 +23,9 @@
|
||||
/obj/item/weapon/reagent_containers/borghypo/crisis
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/lost
|
||||
reagent_ids = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/New()
|
||||
..()
|
||||
|
||||
|
||||
@@ -146,3 +146,22 @@
|
||||
underlays += I
|
||||
else continue
|
||||
side = "right"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/afterattack(var/obj/target, var/mob/user, var/proximity)
|
||||
if(user.a_intent == I_HURT) //We only want splashing to be done if they are on harm intent.
|
||||
if(!is_open_container() || !proximity)
|
||||
return 1
|
||||
if(standard_splash_mob(user, target))
|
||||
return 1
|
||||
if(reagents && reagents.total_volume) //They are on harm intent, aka wanting to spill it.
|
||||
user << "<span class='notice'>You splash the solution onto [target].</span>"
|
||||
reagents.splash(target, reagents.total_volume)
|
||||
return 1
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/standard_feed_mob(var/mob/user, var/mob/target)
|
||||
if(afterattack(target, user)) //Check to see if harm intent & splash.
|
||||
return
|
||||
else
|
||||
..() //If they're splashed, no need to do anything else.
|
||||
@@ -3459,7 +3459,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
|
||||
name = "\improper SkrellSnax"
|
||||
desc = "Cured fungus shipped all the way from Jargon 4, almost like jerky! Almost."
|
||||
desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost."
|
||||
icon_state = "skrellsnacks"
|
||||
filling_color = "#A66829"
|
||||
center_of_mass = list("x"=15, "y"=12)
|
||||
@@ -3494,4 +3494,4 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/croissant/New()
|
||||
..()
|
||||
bitesize = 2
|
||||
bitesize = 2
|
||||
|
||||
@@ -78,25 +78,27 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/proximity)
|
||||
|
||||
if(!is_open_container() || !proximity)
|
||||
return
|
||||
if(!is_open_container() || !proximity) //Is the container open & are they next to whatever they're clicking?
|
||||
return //If not, do nothing.
|
||||
|
||||
for(var/type in can_be_placed_into)
|
||||
for(var/type in can_be_placed_into) //Is it something it can be placed into?
|
||||
if(istype(target, type))
|
||||
return
|
||||
|
||||
if(standard_splash_mob(user, target))
|
||||
return
|
||||
if(standard_dispenser_refill(user, target))
|
||||
return
|
||||
if(standard_pour_into(user, target))
|
||||
if(standard_dispenser_refill(user, target)) //Are they clicking a water tank/some dispenser?
|
||||
return
|
||||
|
||||
if(reagents && reagents.total_volume)
|
||||
user << "<span class='notice'>You splash the solution onto [target].</span>"
|
||||
reagents.splash(target, reagents.total_volume)
|
||||
if(standard_pour_into(user, target)) //Pouring into another beaker?
|
||||
return
|
||||
|
||||
if(user.a_intent == I_HURT) //Harm intent?
|
||||
if(standard_splash_mob(user, target)) //If harm intent and can splash a mob, go ahead.
|
||||
return
|
||||
if(reagents && reagents.total_volume) //Otherwise? Splash the floor.
|
||||
user << "<span class='notice'>You splash the solution onto [target].</span>"
|
||||
reagents.splash(target, reagents.total_volume)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitizeSafe(input(user, "Enter a label for [name]", "Label", label_text), MAX_NAME_LEN)
|
||||
@@ -265,6 +267,41 @@
|
||||
var/image/lid = image(icon, src, "lid_[initial(icon_state)]")
|
||||
overlays += lid
|
||||
|
||||
obj/item/weapon/reagent_containers/glass/bucket/wood
|
||||
desc = "An old wooden bucket."
|
||||
name = "wooden bucket"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "woodbucket"
|
||||
item_state = "woodbucket"
|
||||
matter = list("wood" = 50)
|
||||
w_class = ITEMSIZE_LARGE
|
||||
amount_per_transfer_from_this = 20
|
||||
possible_transfer_amounts = list(10,20,30,60,120)
|
||||
volume = 120
|
||||
flags = OPENCONTAINER
|
||||
unacidable = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/wood/attackby(var/obj/D, mob/user as mob)
|
||||
if(isprox(D))
|
||||
user << "This wooden bucket doesn't play well with electronics."
|
||||
return
|
||||
else if(istype(D, /obj/item/weapon/material/hatchet))
|
||||
to_chat(user, "<span class='notice'>You cut a big hole in \the [src] with \the [D]. It's kinda useless as a bucket now.</span>")
|
||||
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket/wood)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return
|
||||
else if(istype(D, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='warning'>\The [src] is empty!</span>"
|
||||
else
|
||||
reagents.trans_to_obj(D, 5)
|
||||
user << "<span class='notice'>You wet \the [D] in \the [src].</span>"
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/cooler_bottle
|
||||
desc = "A bottle for a water-cooler."
|
||||
name = "water-cooler bottle"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
return
|
||||
|
||||
if(mode == SYRINGE_BROKEN)
|
||||
user << "<span class='warning'>This syringe is broken!</span>"
|
||||
to_chat(user, "<span class='warning'>This syringe is broken!</span>")
|
||||
return
|
||||
|
||||
if(user.a_intent == I_HURT && ismob(target))
|
||||
@@ -70,26 +70,31 @@
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
if(!reagents.get_free_space())
|
||||
user << "<span class='warning'>The syringe is full.</span>"
|
||||
to_chat(user, "<span class='warning'>The syringe is full.</span>")
|
||||
mode = SYRINGE_INJECT
|
||||
return
|
||||
|
||||
if(ismob(target))//Blood!
|
||||
if(reagents.has_reagent("blood"))
|
||||
user << "<span class='notice'>There is already a blood sample in this syringe.</span>"
|
||||
to_chat(user, "<span class='notice'>There is already a blood sample in this syringe.</span>")
|
||||
return
|
||||
|
||||
if(istype(target, /mob/living/carbon))
|
||||
var/amount = reagents.get_free_space()
|
||||
var/mob/living/carbon/T = target
|
||||
if(!T.dna)
|
||||
user << "<span class='warning'>You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum).</span>"
|
||||
to_chat(user, "<span class='warning'>You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum).</span>")
|
||||
return
|
||||
if(NOCLONE in T.mutations) //target done been et, no more blood in him
|
||||
user << "<span class='warning'>You are unable to locate any blood.</span>"
|
||||
to_chat(user, "<span class='warning'>You are unable to locate any blood.</span>")
|
||||
return
|
||||
|
||||
if(T.isSynthetic())
|
||||
to_chat(user, "<span class = 'warning'>You can't draw blood from a synthetic!</span>")
|
||||
return
|
||||
|
||||
if(drawing)
|
||||
user << "<span class='warning'>You are already drawing blood from [T.name].</span>"
|
||||
to_chat(user, "<span class='warning'>You are already drawing blood from [T.name].</span>")
|
||||
return
|
||||
|
||||
var/datum/reagent/B
|
||||
@@ -117,50 +122,51 @@
|
||||
reagents.update_total()
|
||||
on_reagent_change()
|
||||
reagents.handle_reactions()
|
||||
user << "<span class='notice'>You take a blood sample from [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You take a blood sample from [target].</span>")
|
||||
for(var/mob/O in viewers(4, user))
|
||||
O.show_message("<span class='notice'>[user] takes a blood sample from [target].</span>", 1)
|
||||
|
||||
else //if not mob
|
||||
if(!target.reagents.total_volume)
|
||||
user << "<span class='notice'>[target] is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is empty.</span>")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !istype(target, /obj/structure/reagent_dispensers) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/weapon/reagent_containers/food))
|
||||
user << "<span class='notice'>You cannot directly remove reagents from this object.</span>"
|
||||
to_chat(user, "<span class='notice'>You cannot directly remove reagents from this object.</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to_obj(src, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You fill the syringe with [trans] units of the solution.</span>"
|
||||
to_chat(user, "<span class='notice'>You fill the syringe with [trans] units of the solution.</span>")
|
||||
update_icon()
|
||||
|
||||
|
||||
if(!reagents.get_free_space())
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
if(SYRINGE_INJECT)
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='notice'>The syringe is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>The syringe is empty.</span>")
|
||||
mode = SYRINGE_DRAW
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/smokable/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
|
||||
user << "<span class='notice'>You cannot directly fill this object.</span>"
|
||||
to_chat(user, "<span class='notice'>You cannot directly fill this object.</span>")
|
||||
return
|
||||
if(!target.reagents.get_free_space())
|
||||
user << "<span class='notice'>[target] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(istype(H))
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
if(!affected)
|
||||
user << "<span class='danger'>\The [H] is missing that limb!</span>"
|
||||
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
|
||||
return
|
||||
else if(affected.robotic >= ORGAN_ROBOT)
|
||||
user << "<span class='danger'>You cannot inject a robotic limb.</span>"
|
||||
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
|
||||
return
|
||||
|
||||
if(ismob(target) && target != user)
|
||||
@@ -200,9 +206,9 @@
|
||||
else
|
||||
trans = reagents.trans_to_obj(target, amount_per_transfer_from_this)
|
||||
if(trans)
|
||||
user << "<span class='notice'>You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.</span>"
|
||||
to_chat(user, "<span class='notice'>You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.</span>")
|
||||
else
|
||||
user << "<span class='notice'>The syringe is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>The syringe is empty.</span>")
|
||||
if (reagents.total_volume <= 0 && mode == SYRINGE_INJECT)
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
@@ -245,7 +251,7 @@
|
||||
var/obj/item/organ/external/affecting = H.get_organ(target_zone)
|
||||
|
||||
if (!affecting || affecting.is_stump())
|
||||
user << "<span class='danger'>They are missing that limb!</span>"
|
||||
to_chat(user, "<span class='danger'>They are missing that limb!</span>")
|
||||
return
|
||||
|
||||
var/hit_area = affecting.name
|
||||
@@ -302,10 +308,10 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/ld50_syringe/afterattack(obj/target, mob/user, flag)
|
||||
if(mode == SYRINGE_DRAW && ismob(target)) // No drawing 50 units of blood at once
|
||||
user << "<span class='notice'>This needle isn't designed for drawing blood.</span>"
|
||||
to_chat(user, "<span class='notice'>This needle isn't designed for drawing blood.</span>")
|
||||
return
|
||||
if(user.a_intent == "hurt" && ismob(target)) // No instant injecting
|
||||
user << "<span class='notice'>This syringe is too big to stab someone with it.</span>"
|
||||
to_chat(user, "<span class='notice'>This syringe is too big to stab someone with it.</span>")
|
||||
..()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user