Merge pull request #2273 from Crazylemon64/stickier_beakers_II

Stickier beakers ii
This commit is contained in:
Mark van Alphen
2015-10-04 02:49:51 +02:00
16 changed files with 187 additions and 162 deletions
+6 -4
View File
@@ -34,9 +34,11 @@
if(beaker)
user << "<span class='notice'>A container is already inside [src].</span>"
return
if(!user.drop_item())
user << "<span class='warning'>\The [I] is stuck to you!</span>"
return
beaker = I
user.drop_item()
I.loc = src
I.forceMove(src)
user << "<span class='notice'>You add [I] to [src]</span>"
updateUsrDialog()
return
@@ -105,7 +107,7 @@
else if(href_list["eject"])
if(beaker)
A.loc = loc
A.forceMove(loc)
beaker = null
reagents.trans_to(A,reagents.total_volume)
@@ -248,4 +250,4 @@
dat += show_toppings()
var/datum/browser/popup = new(user, "cream_master","Cream-Master Deluxe", 700, 400, src)
popup.set_content(dat)
popup.open()
popup.open()
+47 -39
View File
@@ -191,7 +191,7 @@
if(href_list["ejectBeaker"])
if(beaker)
var/obj/item/weapon/reagent_containers/glass/B = beaker
B.loc = loc
B.forceMove(loc)
beaker = null
overlays.Cut()
add_fingerprint(usr)
@@ -202,33 +202,35 @@
return
if(broken_requirements.len && B.type == broken_requirements[1])
broken_requirements -= broken_requirements[1]
user << "<span class='notice'>You fix [src].</span>"
if(istype(B,/obj/item/stack))
var/obj/item/stack/S = B
S.use(1)
else
user.drop_item()
if(!user.drop_item())
user << "<span class='warning'>\The [B] is stuck to you!</span>"
return
qdel(B)
broken_requirements -= broken_requirements[1]
user << "<span class='notice'>You fix [src].</span>"
return
if(src.beaker)
user << "Something is already loaded into the machine."
user << "<span class='warning'>Something is already loaded into the machine.</span>"
return
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks))
src.beaker = B
if(user.drop_item())
B.forceMove(src)
user << "You set [B] on the machine."
nanomanager.update_uis(src) // update all UIs attached to src
if(!icon_beaker)
icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position.
icon_beaker.pixel_x = rand(-10,5)
overlays += icon_beaker
if(!user.drop_item())
user << "<span class='warning'>\The [B] is stuck to you!</span>"
return
else
user << "\The [B] is stuck to you!"
B.forceMove(src)
user << "<span class='notice'>You set [B] on the machine.</span>"
nanomanager.update_uis(src) // update all UIs attached to src
if(!icon_beaker)
icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position.
icon_beaker.pixel_x = rand(-10,5)
overlays += icon_beaker
return
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
..()
@@ -358,16 +360,16 @@
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
if(anchored)
anchored = 0
user << "<span class='caution'>The [src] can now be moved.</span>"
user << "<span class='caution'>\The [src] can now be moved.</span>"
else if(!anchored)
anchored = 1
user << "<span class='caution'>The [src] is now secured.</span>"
user << "<span class='caution'>\The [src] is now secured.</span>"
if(panel_open)
if(istype(I, /obj/item/weapon/crowbar))
if(beaker)
var/obj/item/weapon/reagent_containers/glass/B = beaker
B.loc = loc
B.forceMove(loc)
beaker = null
default_deconstruction_crowbar(I)
return 1
@@ -427,25 +429,29 @@
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
if(src.beaker)
user << "A beaker is already loaded into the machine."
user << "<span class='warning'>A beaker is already loaded into the machine.</span>"
return
if(!user.drop_item())
user << "<span class='warning'>\The [B] is stuck to you!</span>"
return
src.beaker = B
user.drop_item()
B.loc = src
user << "You add the beaker to the machine!"
B.forceMove(src)
user << "<span class='notice'>You add the beaker to the machine!</span>"
src.updateUsrDialog()
icon_state = "mixer1"
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
if(src.loaded_pill_bottle)
user << "A pill bottle is already loaded into the machine."
user << "<span class='warning'>A pill bottle is already loaded into the machine.</span>"
return
if(!user.drop_item())
user << "<span class='warning'>\The [B] is stuck to you!</span>"
return
src.loaded_pill_bottle = B
user.drop_item()
B.loc = src
user << "You add the pill bottle into the dispenser slot!"
B.forceMove(src)
user << "<span class='notice'>You add the pill bottle into the dispenser slot!</span>"
src.updateUsrDialog()
return
@@ -459,7 +465,7 @@
if (href_list["ejectp"])
if(loaded_pill_bottle)
loaded_pill_bottle.loc = src.loc
loaded_pill_bottle.forceMove(src.loc)
loaded_pill_bottle = null
else if(href_list["close"])
usr << browse(null, "window=chem_master")
@@ -579,7 +585,7 @@
reagents.trans_to(P,amount_per_pill)
if(src.loaded_pill_bottle)
if(loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots)
P.loc = loaded_pill_bottle
P.forceMove(loaded_pill_bottle)
src.updateUsrDialog()
else
var/name = reject_bad_text(input(usr,"Name:","Name your bag!",reagents.get_master_reagent_name()))
@@ -816,15 +822,17 @@
if (beaker)
return 1
else
if(!user.drop_item())
user << "<span class='warning'>\The [O] is stuck to you!</span>"
return
src.beaker = O
user.drop_item()
O.loc = src
O.forceMove(src)
update_icon()
src.updateUsrDialog()
return 0
if(holdingitems && holdingitems.len >= limit)
usr << "The machine cannot hold anymore items."
usr << "<span class='warning'>The machine cannot hold anymore items.</span>"
return 1
//Fill machine with the plantbag!
@@ -832,25 +840,25 @@
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
O.contents -= G
G.loc = src
G.forceMove(src)
holdingitems += G
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
user << "You fill the All-In-One grinder to the brim."
user << "<span class='notice>You fill the All-In-One grinder to the brim.</span>"
break
if(!O.contents.len)
user << "You empty the plant bag into the All-In-One grinder."
user << "<span class='notice'>You empty the plant bag into the All-In-One grinder.</span>"
src.updateUsrDialog()
return 0
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
user << "Cannot refine into a reagent."
user << "<span class='warning'>Cannot refine into a reagent.</span>"
return 1
user.unEquip(O)
O.loc = src
O.forceMove(src)
holdingitems += O
src.updateUsrDialog()
return 0
@@ -929,7 +937,7 @@
return
if (!beaker)
return
beaker.loc = src.loc
beaker.forceMove(src.loc)
beaker = null
update_icon()
@@ -941,7 +949,7 @@
return
for(var/obj/item/O in holdingitems)
O.loc = src.loc
O.forceMove(src.loc)
holdingitems -= O
holdingitems = list()
@@ -1146,4 +1154,4 @@
var/amount = O.reagents.total_volume
O.reagents.trans_to(beaker, amount)
if(!O.reagents.total_volume)
remove_object(O)
remove_object(O)
+20 -18
View File
@@ -60,11 +60,11 @@
/obj/item/weapon/gun/dartgun/examine(mob/user)
if(..(user, 2))
if(beakers.len)
user << "\blue [src] contains:"
user << "<span class='notice>[src] contains:</span>"
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
if(B.reagents && B.reagents.reagent_list.len)
for(var/datum/reagent/R in B.reagents.reagent_list)
user << "\blue [R.volume] units of [R.name]"
user << "<span class='notice>[R.volume] units of [R.name]</span>"
/obj/item/weapon/gun/dartgun/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/dart_cartridge))
@@ -72,34 +72,36 @@
var/obj/item/weapon/dart_cartridge/D = I
if(!D.darts)
user << "\blue [D] is empty."
user << "<span class='warning'>[D] is empty.</span>"
return 0
if(cartridge)
if(cartridge.darts <= 0)
src.remove_cartridge()
else
user << "\blue There's already a cartridge in [src]."
user << "<span class='warning'>There's already a cartridge in [src].</span>"
return 0
user.drop_item()
cartridge = D
D.loc = src
user << "\blue You slot [D] into [src]."
D.forceMove(src)
user << "<span class='notice'>You slot [D] into [src].</span>"
update_icon()
return
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!istype(I, container_type))
user << "\blue [I] doesn't seem to fit into [src]."
user << "<span class='warning'>[I] doesn't seem to fit into [src].</span>"
return
if(beakers.len >= max_beakers)
user << "\blue [src] already has [max_beakers] beakers in it - another one isn't going to fit!"
user << "<span class='warning'>[src] already has [max_beakers] beakers in it - another one isn't going to fit!</span>"
return
var/obj/item/weapon/reagent_containers/glass/beaker/B = I
user.drop_item()
B.loc = src
if(!user.drop_item())
user << "<span class='warning'>\The [B] is stuck to you!</span>"
return
B.forceMove(src)
beakers += B
user << "\blue You slot [B] into [src]."
user << "<span class='notice>You slot [B] into [src].</span>"
src.updateUsrDialog()
/obj/item/weapon/gun/dartgun/can_fire()
@@ -113,9 +115,9 @@
/obj/item/weapon/gun/dartgun/proc/remove_cartridge()
if(cartridge)
usr << "\blue You pop the cartridge out of [src]."
usr << "<span class='notice'>You pop the cartridge out of [src].</span>"
var/obj/item/weapon/dart_cartridge/C = cartridge
C.loc = get_turf(src)
C.forceMove(get_turf(src))
C.update_icon()
cartridge = null
src.update_icon()
@@ -143,10 +145,10 @@
var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
var/obj/item/weapon/reagent_containers/syringe/S = get_mixed_syringe()
if(!S)
user << "\red There are no darts in [src]!"
user << "<span class='warning'>There are no darts in [src]!</span>"
return
if(!S.reagents)
user << "\red There are no reagents available!"
user << "<span class='warning'>There are no reagents available!</span>"
return
cartridge.darts--
src.update_icon()
@@ -269,10 +271,10 @@
if(index <= beakers.len)
if(beakers[index])
var/obj/item/weapon/reagent_containers/glass/beaker/B = beakers[index]
usr << "You remove [B] from [src]."
usr << "<span class='notice'>You remove [B] from [src].</span>"
mixing -= B
beakers -= B
B.loc = get_turf(src)
B.forceMove(get_turf(src))
else if (href_list["eject_cart"])
remove_cartridge()
src.updateUsrDialog()
@@ -282,7 +284,7 @@
if(cartridge)
spawn(0) fire_dart(target,user)
else
usr << "\red [src] is empty."
usr << "<span class='warning'>[src] is empty.</span>"
/obj/item/weapon/gun/dartgun/vox
+2 -2
View File
@@ -53,7 +53,7 @@
/obj/machinery/chem_heater/proc/eject_beaker()
if(beaker)
beaker.loc = get_turf(src)
beaker.forceMove(get_turf(src))
beaker.reagents.handle_reactions()
beaker = null
icon_state = "mixer0b"
@@ -79,7 +79,7 @@
if(user.drop_item())
beaker = I
I.loc = src
I.forceMove(src)
user << "<span class='notice'>You add the beaker to the machine!</span>"
icon_state = "mixer1b"
nanomanager.update_uis(src)
+7 -4
View File
@@ -18,9 +18,12 @@
user << "\The [src] is already loaded."
return
if(!user.drop_item())
user << "<span class='warning'>\The [O] is stuck to you!</span>"
return
sample = O
user.drop_item()
O.loc = src
O.forceMove(src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
nanomanager.update_uis(src)
@@ -140,7 +143,7 @@
if("sample")
if(sample)
sample.loc = src.loc
sample.forceMove(src.loc)
sample = null
return 1
@@ -210,4 +213,4 @@
<u>Additional Notes:</u> <field>
"}
state("The nearby computer prints out a pathology report.")
state("The nearby computer prints out a pathology report.")
+5 -6
View File
@@ -11,14 +11,13 @@
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob, params)
if(istype(I,/obj/item/weapon/reagent_containers))
var/mob/living/carbon/C = user
if(!container)
if(!container && C.drop_item())
container = I
C.drop_item()
I.loc = src
I.forceMove(src)
return
if(istype(I,/obj/item/weapon/virusdish))
if(virusing)
user << "<b>The pathogen materializer is still recharging.."
user << "<b>The pathogen materializer is still recharging..</b>"
return
var/obj/item/weapon/reagent_containers/glass/beaker/product = new(src.loc)
@@ -88,7 +87,7 @@
if (href_list["antibody"])
curing = 10
else if(href_list["eject"])
container.loc = src.loc
container.forceMove(src.loc)
container = null
src.add_fingerprint(usr)
@@ -105,4 +104,4 @@
data["antibodies"] = B.data["antibodies"]
product.reagents.add_reagent("antibodies",30,data)
state("\The [src.name] buzzes", "blue")
state("\The [src.name] buzzes", "blue")
+13 -8
View File
@@ -18,12 +18,15 @@
if(istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/syringe))
if(beaker)
user << "\The [src] is already loaded."
user << "<span class='warning'>\The [src] is already loaded.</span>"
return
if(!user.drop_item())
user << "<span class='warning'>\The [O] is stuck to you!</span>"
return
beaker = O
user.drop_item()
O.loc = src
O.forceMove(src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
nanomanager.update_uis(src)
@@ -37,9 +40,11 @@
user << "The dish tray is aleady full!"
return
if(!user.drop_item())
user << "<span class='warning'>\The [O] is stuck to you!</span>"
return
dish = O
user.drop_item()
O.loc = src
O.forceMove(src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
nanomanager.update_uis(src)
@@ -152,7 +157,7 @@
if (href_list["ejectchem"])
if(beaker)
beaker.loc = src.loc
beaker.forceMove(src.loc)
beaker = null
return 1
@@ -164,7 +169,7 @@
if (href_list["ejectdish"])
if(dish)
dish.loc = src.loc
dish.forceMove(src.loc)
dish = null
return 1
@@ -200,4 +205,4 @@
ping("\The [src] pings, \"Injection complete.\"")
return 1
return 0
return 0