diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm
index 283c6a5031..ef5987e4be 100644
--- a/code/modules/admin/verbs/buildmode.dm
+++ b/code/modules/admin/verbs/buildmode.dm
@@ -7,8 +7,9 @@
#define BUILDMODE_CONTENTS 7
#define BUILDMODE_LIGHTS 8
#define BUILDMODE_AI 9
+#define BUILDMODE_DROP 10
-#define LAST_BUILDMODE 9
+#define LAST_BUILDMODE 10
/proc/togglebuildmode(mob/M as mob in player_list)
set name = "Toggle Build Mode"
@@ -171,6 +172,16 @@
Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be interrupted by enemies)
\
Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf
\
***********************************************************")
+
+ if(BUILDMODE_DROP)
+ to_chat(usr, "***********************************************************
\
+ Right Mouse Button on buildmode button = Set object type
\
+ Middle Mouse Button on buildmode button= On/Off object type saying
\
+ Middle Mouse Button on turf/obj = Capture object type
\
+ Left Mouse Button on turf/obj = Drop objects safely
\
+ Right Mouse Button = Drop objects unsafely
\
+ Mouse Button + ctrl = Copy object type
\
+ ***********************************************************")
return 1
/obj/effect/bmode/buildquit
@@ -315,6 +326,8 @@
var/input = input(usr, "New light color.","Light Maker",3) as null|color
if(input)
new_light_color = input
+ if(BUILDMODE_DROP)
+ objholder = get_path_from_partial_text()
return 1
/proc/build_click(var/mob/user, buildmode, params, var/obj/object)
@@ -637,6 +650,27 @@
flick_overlay(orderimage, list(user.client), 8, TRUE)
return
+
+ if(BUILDMODE_DROP)
+ if(ispath(holder.buildmode.objholder,/turf))
+ to_chat(user, "Cannot use turfs with this mode.")
+ return
+ if(pa.Find("left") && !pa.Find("ctrl"))
+ if(ispath(holder.buildmode.objholder))
+ var/obj/effect/falling_effect/FE = new /obj/effect/falling_effect(get_turf(object), holder.buildmode.objholder)
+ FE.crushing = FALSE
+ else if(pa.Find("right"))
+ if(ispath(holder.buildmode.objholder))
+ var/obj/effect/falling_effect/FE = new /obj/effect/falling_effect(get_turf(object), holder.buildmode.objholder)
+ FE.crushing = TRUE
+ else if(pa.Find("ctrl"))
+ holder.buildmode.objholder = object.type
+ to_chat(user, "[object]([object.type]) copied to buildmode.")
+ if(pa.Find("middle"))
+ holder.buildmode.objholder = text2path("[object.type]")
+ if(holder.buildmode.objsay)
+ to_chat(usr, "[object.type]")
+
/proc/build_drag(var/client/user, buildmode, var/atom/fromatom, var/atom/toatom, var/atom/fromloc, var/atom/toloc, var/fromcontrol, var/tocontrol, params)
var/obj/effect/bmode/buildholder/holder = null
for(var/obj/effect/bmode/buildholder/H)
diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi
index 82214656eb..d04de3a520 100644
Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ