Allow placing several items on surfaces. (#32467)

* Allow placing soaps and light replacers on surfaces.

* Also modify spray bottles, scanners, laser pointers, analyzer.

* Include sprays for real this time.
This commit is contained in:
Alan
2026-08-23 14:05:36 +00:00
committed by GitHub
parent d55711bad9
commit 45c90035ec
7 changed files with 20 additions and 9 deletions
@@ -106,10 +106,10 @@
/obj/item/analyzer/interact_with_atom(atom/target, mob/living/user, list/modifiers)
..()
if(!isturf(target.loc))
if(!isturf(target.loc) && !isturf(target))
return NONE
if(isstorage(target))
if(isstorage(target) || is_surface(target))
return NONE
if(target.return_analyzable_air())
@@ -51,7 +51,7 @@
if(!isturf(target.loc))
return NONE
if(isstorage(target))
if(isstorage(target) || is_surface(target))
return NONE
laser_act(target, user, modifiers)
@@ -217,10 +217,7 @@
/obj/item/lightreplacer/proc/CanUse(mob/living/user)
add_fingerprint(user)
if(uses > 0)
return 1
else
return 0
return (uses > 0)
/obj/item/lightreplacer/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(..())
@@ -233,6 +230,9 @@
return ITEM_INTERACT_COMPLETE
return ..()
if(is_surface(target))
return NONE
var/turf/replace_turf = get_turf(target)
if(!istype(replace_turf))
return ITEM_INTERACT_COMPLETE
@@ -96,6 +96,8 @@ SLIME SCANNER
/obj/item/reagent_scanner/interact_with_atom(atom/target, mob/living/user, list/modifiers)
. = ..()
if(isstorage(target) || is_surface(target))
return NONE
do_scan(target, user)
return ITEM_INTERACT_COMPLETE
@@ -185,6 +187,8 @@ SLIME SCANNER
/obj/item/slime_scanner/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(user.incapacitated() || user.AmountBlinded())
return ..()
if(isstorage(target) || is_surface(target))
return NONE
if(!isslime(target))
to_chat(user, SPAN_WARNING("This device can only scan slimes!"))
return ITEM_INTERACT_COMPLETE
+1 -1
View File
@@ -25,7 +25,7 @@
/obj/item/soap/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(!ismob(target))
// if it's a storage item and it isn't dirty, just put the soap in the storage
if(isstorage(target) && !target.is_dirty())
if((isstorage(target) || is_surface(target)) && !target.is_dirty())
return ..()
target.cleaning_act(user, src, cleanspeed)
return ITEM_INTERACT_COMPLETE