diff --git a/code/game/gamemodes/miniantags/guardian/types/explosive_guardian.dm b/code/game/gamemodes/miniantags/guardian/types/explosive_guardian.dm
index aef8e9ef42b..08943d4dc63 100644
--- a/code/game/gamemodes/miniantags/guardian/types/explosive_guardian.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/explosive_guardian.dm
@@ -22,7 +22,7 @@
if(get_dist(get_turf(src), get_turf(A)) > 1)
to_chat(src, "You're too far from [A] to disguise it as a bomb.")
return
- if(isobj(A))
+ if(isobj(A) && can_plant(A))
if(bomb_cooldown <= world.time && !stat)
var/obj/item/guardian_bomb/B = new /obj/item/guardian_bomb(get_turf(A))
add_attack_logs(src, A, "booby trapped (summoner: [summoner])")
@@ -35,13 +35,23 @@
else
to_chat(src, "Your power is on cooldown! You must wait another [max(round((bomb_cooldown - world.time)*0.1, 0.1), 0)] seconds before you can place next bomb.")
+/mob/living/simple_animal/hostile/guardian/bomb/proc/can_plant(atom/movable/A)
+ if(ismecha(A))
+ var/obj/mecha/target = A
+ if(target.occupant)
+ to_chat(src, "You can't disguise piloted mechs as a bomb!")
+ return FALSE
+ if(istype(A, /obj/machinery/disposal)) // Have no idea why they just destroy themselves
+ to_chat(src, "You can't disguise disposal units as a bomb!")
+ return FALSE
+ return TRUE
+
/obj/item/guardian_bomb
name = "bomb"
desc = "You shouldn't be seeing this!"
var/obj/stored_obj
var/mob/living/spawner
-
/obj/item/guardian_bomb/proc/disguise(obj/A)
A.forceMove(src)
stored_obj = A
@@ -85,6 +95,21 @@
/obj/item/guardian_bomb/attack_hand(mob/user)
detonate(user)
+/obj/item/guardian_bomb/MouseDrop_T(obj/item/I, mob/living/user)
+ detonate(user)
+
+/obj/item/guardian_bomb/AltClick(mob/living/user)
+ detonate(user)
+
+/obj/item/guardian_bomb/MouseDrop(mob/living/user)
+ detonate(user)
+
+/obj/item/guardian_bomb/Bumped(mob/living/user)
+ detonate(user)
+
+/obj/item/guardian_bomb/can_be_pulled(mob/living/user)
+ detonate(user)
+
/obj/item/guardian_bomb/examine(mob/user)
. = stored_obj.examine(user)
if(get_dist(user, src) <= 2)