mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 05:57:24 +01:00
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:
@@ -34,9 +34,10 @@
|
||||
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>"
|
||||
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 +106,7 @@
|
||||
|
||||
else if(href_list["eject"])
|
||||
if(beaker)
|
||||
A.loc = loc
|
||||
A.forceMove(loc)
|
||||
beaker = null
|
||||
reagents.trans_to(A,reagents.total_volume)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
user << "\The [src] is already loaded."
|
||||
return
|
||||
|
||||
sample = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
if(user.drop_item())
|
||||
sample = O
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
src.attack_hand(user)
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
if("sample")
|
||||
if(sample)
|
||||
sample.loc = src.loc
|
||||
sample.forceMove(src.loc)
|
||||
sample = null
|
||||
return 1
|
||||
|
||||
@@ -210,4 +210,4 @@
|
||||
<u>Additional Notes:</u> <field>
|
||||
"}
|
||||
|
||||
state("The nearby computer prints out a pathology report.")
|
||||
state("The nearby computer prints out a pathology report.")
|
||||
@@ -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")
|
||||
@@ -18,18 +18,18 @@
|
||||
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
|
||||
|
||||
beaker = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
if(user.drop_item())
|
||||
beaker = O
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
src.attack_hand(user)
|
||||
return
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/weapon/virusdish))
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
user << "The dish tray is aleady full!"
|
||||
return
|
||||
|
||||
dish = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
if(user.drop_item())
|
||||
dish = O
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
src.attack_hand(user)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/disease2/incubator/attack_hand(mob/user as mob)
|
||||
if(stat & (NOPOWER|BROKEN)) return
|
||||
@@ -152,7 +152,7 @@
|
||||
|
||||
if (href_list["ejectchem"])
|
||||
if(beaker)
|
||||
beaker.loc = src.loc
|
||||
beaker.forceMove(src.loc)
|
||||
beaker = null
|
||||
return 1
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
if (href_list["ejectdish"])
|
||||
if(dish)
|
||||
dish.loc = src.loc
|
||||
dish.forceMove(src.loc)
|
||||
dish = null
|
||||
return 1
|
||||
|
||||
@@ -200,4 +200,4 @@
|
||||
ping("\The [src] pings, \"Injection complete.\"")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
return 0
|
||||
Reference in New Issue
Block a user