Thoroughly flushes out every apparently obvious beaker drop exploit

This also updates the formatting on a few devices and updates them to
use forceMove()
This commit is contained in:
Crazylemon
2015-10-03 11:26:23 -07:00
parent cbca437f9c
commit 1607f64e06
6 changed files with 55 additions and 53 deletions
+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)