diff --git a/code/__defines/structures.dm b/code/__defines/structures.dm new file mode 100644 index 00000000000..f91ed7aed08 --- /dev/null +++ b/code/__defines/structures.dm @@ -0,0 +1 @@ +#define STRUCTURE_FLAG_SURFACE BITFLAG(0) \ No newline at end of file diff --git a/code/_helpers/animations.dm b/code/_helpers/animations.dm index 65932553d9a..163b235e898 100644 --- a/code/_helpers/animations.dm +++ b/code/_helpers/animations.dm @@ -98,4 +98,23 @@ for(var/i in 2 to segments) //2 because 1 is covered above animate(transform = matrices[i], time = speed) //doesn't have an object argument because this is "Stacking" with the animate call above - //3 billion% intentional \ No newline at end of file + //3 billion% intentional + +// This proc is used to move an atom to a target loc and then interpolite to give the illusion of sliding from start to end. +/proc/do_visual_slide(var/atom/movable/sliding, var/turf/from, var/from_pixel_x, var/from_pixel_y, var/turf/target, var/target_pixel_x, var/target_pixel_y, var/center_of_mass) + set waitfor = FALSE + var/start_pixel_x = sliding.pixel_x - ((target.x-from.x) * world.icon_size) + var/start_pixel_y = sliding.pixel_y - ((target.y-from.y) * world.icon_size) + // Clear our glide so we don't do an animation when dropped into the target turf. + var/old_animate_movement = sliding.animate_movement + sliding.animate_movement = NO_STEPS + sleep(2 * world.tick_lag) // Due to BYOND being byond, animate_movement has to be set for at least 2 ticks before gliding will be disabled. + sliding.forceMove(target) + // Reset our glide_size now that movement has completed. + sliding.animate_movement = old_animate_movement + sliding.pixel_x = start_pixel_x + sliding.pixel_y = start_pixel_y + if(center_of_mass) + target_pixel_x -= center_of_mass["x"] + target_pixel_y -= center_of_mass["y"] + animate(sliding, pixel_x = target_pixel_x, pixel_y = target_pixel_y, time = 1 SECOND) diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 4d2168073f8..66ce1aa9e67 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -4,38 +4,38 @@ almost anything into a trash can. */ -/atom/MouseDrop(atom/over) +/atom/MouseDrop(over_object, src_location, over_location, src_control, over_control, params) SHOULD_CALL_PARENT(TRUE) - if(!can_mouse_drop(over, usr) || !handle_mouse_drop(over, usr)) + if(!can_mouse_drop(over_object, usr, params = params) || !handle_mouse_drop(over_object, usr, params)) . = ..() -/atom/proc/handle_mouse_drop(var/atom/over, var/mob/user) - . = over?.receive_mouse_drop(src, user) +/atom/proc/handle_mouse_drop(atom/over, mob/user, params) + . = over?.receive_mouse_drop(src, user, params) // Can the user drop something onto this atom? -/atom/proc/user_can_mousedrop_onto(var/mob/user, var/atom/being_dropped, var/incapacitation_flags) - return !user.incapacitated(incapacitation_flags) && check_mousedrop_interactivity(user) && user.check_dexterity(DEXTERITY_EQUIP_ITEM) +/atom/proc/user_can_mousedrop_onto(mob/user, atom/being_dropped, incapacitation_flags, params) + return !user.incapacitated(incapacitation_flags) && check_mousedrop_interactivity(user, params) && user.check_dexterity(DEXTERITY_EQUIP_ITEM) -/atom/proc/check_mousedrop_interactivity(var/mob/user) +/atom/proc/check_mousedrop_interactivity(mob/user, params) return CanPhysicallyInteract(user) // This proc checks if an atom can be mousedropped onto the target by the user. -/atom/proc/can_mouse_drop(var/atom/over, var/mob/user = usr, var/incapacitation_flags = INCAPACITATION_DEFAULT) +/atom/proc/can_mouse_drop(var/atom/over, var/mob/user = usr, var/incapacitation_flags = INCAPACITATION_DEFAULT, var/params) SHOULD_CALL_PARENT(TRUE) if(!istype(user) || !istype(over) ||QDELETED(user) || QDELETED(over) || QDELETED(src)) return FALSE - if(!over.user_can_mousedrop_onto(user, src, incapacitation_flags)) + if(!over.user_can_mousedrop_onto(user, src, incapacitation_flags, params)) return FALSE - if(!check_mousedrop_adjacency(over, user)) + if(!check_mousedrop_adjacency(over, user, params)) return FALSE return TRUE -/atom/proc/check_mousedrop_adjacency(var/atom/over, var/mob/user) +/atom/proc/check_mousedrop_adjacency(atom/over, mob/user, params) . = (Adjacent(user) && ((over in user?.client?.screen) || over.Adjacent(user))) // Receive a mouse drop. // Returns false if the atom is valid for dropping further up the chain, true if the drop has been handled. -/atom/proc/receive_mouse_drop(var/atom/dropping, var/mob/user) +/atom/proc/receive_mouse_drop(atom/dropping, mob/user, params) var/mob/living/H = user if(istype(H) && !H.anchored && can_climb(H) && dropping == user) do_climb(dropping) diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm index 54094c25e4b..fc992ae2884 100644 --- a/code/_onclick/hud/ability_screen_objects.dm +++ b/code/_onclick/hud/ability_screen_objects.dm @@ -33,7 +33,7 @@ my_mob.client.screen -= src my_mob = null -/obj/screen/ability_master/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/screen/ability_master/handle_mouse_drop(atom/over, mob/user, params) if(showing) return FALSE . = ..() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 4662c1fdc8d..dada577642e 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -15,10 +15,10 @@ is_spawnable_type = FALSE var/globalscreen = FALSE //Global screens are not qdeled when the holding mob is destroyed. -/obj/screen/receive_mouse_drop(atom/dropping, mob/user) +/obj/screen/receive_mouse_drop(atom/dropping, mob/user, params) return TRUE -/obj/screen/check_mousedrop_interactivity(var/mob/user) +/obj/screen/check_mousedrop_interactivity(mob/user, params) return user.client && (src in user.client.screen) /obj/screen/text diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index b6bda7218a4..84c5bbad3d0 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -339,7 +339,7 @@ /atom/movable/proc/can_buckle_mob(var/mob/living/dropping) . = (can_buckle && istype(dropping) && !dropping.buckled && !dropping.anchored && !dropping.buckled_mob && !buckled_mob) -/atom/movable/receive_mouse_drop(atom/dropping, mob/living/user) +/atom/movable/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && can_buckle_mob(dropping)) user_buckle_mob(dropping, user) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index f06b1cd5057..de556eb9486 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -67,7 +67,7 @@ /obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) . = (air_group || height == 0 || (istype(mover) && mover.checkpass(PASS_FLAG_TABLE))) -/obj/machinery/optable/receive_mouse_drop(atom/dropping, mob/user) +/obj/machinery/optable/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!.) if(istype(dropping, /obj/item) && user.get_active_hand() == dropping && user.try_unequip(dropping, loc)) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f78d4e0d926..34a6e1b6b9b 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -316,7 +316,7 @@ return TRUE return ..() -/obj/machinery/sleeper/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/machinery/sleeper/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && ismob(dropping)) var/mob/target = dropping diff --git a/code/game/machinery/bodyscanner.dm b/code/game/machinery/bodyscanner.dm index b236e2d5bd3..2e815dae25a 100644 --- a/code/game/machinery/bodyscanner.dm +++ b/code/game/machinery/bodyscanner.dm @@ -111,7 +111,7 @@ icon_state = "body_scanner_2" //Like grap-put, but for mouse-drop. -/obj/machinery/bodyscanner/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/machinery/bodyscanner/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && isliving(dropping)) var/mob/living/M = dropping diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 65a10708027..e7b001cbf3f 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -425,7 +425,7 @@ src.add_fingerprint(target) //Like grap-put, but for mouse-drop. -/obj/machinery/cryopod/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/machinery/cryopod/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && check_occupant_allowed(dropping)) if(occupant) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 0350d3a4998..c4066068303 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -89,7 +89,7 @@ else return ..() -/obj/machinery/gibber/receive_mouse_drop(atom/dropping, mob/user) +/obj/machinery/gibber/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && ismob(dropping)) move_into_gibber(user, dropping) diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm index ccd515bcfe8..89871af4000 100644 --- a/code/game/machinery/oxygen_pump.dm +++ b/code/game/machinery/oxygen_pump.dm @@ -41,7 +41,7 @@ breather = null return ..() -/obj/machinery/oxygen_pump/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/machinery/oxygen_pump/handle_mouse_drop(atom/over, mob/user, params) if(ishuman(over) && can_apply_to_target(over, user)) user.visible_message(SPAN_NOTICE("\The [user] begins placing the mask onto \the [over]..")) if(do_mob(user, over, 25) && can_apply_to_target(over, user)) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index a56c44d6ec5..86dec34e44b 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -26,7 +26,7 @@ . = ..() update_icon() -/obj/machinery/recharge_station/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/machinery/recharge_station/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && isliving(dropping)) var/mob/living/M = dropping diff --git a/code/game/machinery/self_destruct.dm b/code/game/machinery/self_destruct.dm index 62ded8fe63e..6b516eb954f 100644 --- a/code/game/machinery/self_destruct.dm +++ b/code/game/machinery/self_destruct.dm @@ -68,7 +68,7 @@ update_icon() src.add_fingerprint(user) -/obj/machinery/self_destruct/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/machinery/self_destruct/handle_mouse_drop(atom/over, mob/user, params) if(over == user && cylinder) if(armed) to_chat(user, SPAN_WARNING("Disarm the cylinder first.")) diff --git a/code/game/machinery/self_destruct_storage.dm b/code/game/machinery/self_destruct_storage.dm index 623edd2b60d..09f2e613213 100644 --- a/code/game/machinery/self_destruct_storage.dm +++ b/code/game/machinery/self_destruct_storage.dm @@ -120,7 +120,7 @@ ..() -/obj/machinery/nuclear_cylinder_storage/handle_mouse_drop(atom/over, mob/user) +/obj/machinery/nuclear_cylinder_storage/handle_mouse_drop(atom/over, mob/user, params) if(over == user && open && !panel_open && length(cylinders)) var/cylinder = cylinders[1] user.visible_message( diff --git a/code/game/machinery/suit_cycler.dm b/code/game/machinery/suit_cycler.dm index 245afe2e16e..7eca07344ae 100644 --- a/code/game/machinery/suit_cycler.dm +++ b/code/game/machinery/suit_cycler.dm @@ -124,7 +124,7 @@ DROP_NULL(boots) return ..() -/obj/machinery/suit_cycler/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/machinery/suit_cycler/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && ismob(dropping) && try_move_inside(dropping, user)) return TRUE diff --git a/code/game/machinery/vending/_vending.dm b/code/game/machinery/vending/_vending.dm index ad1fb149d8a..b43e75c873c 100644 --- a/code/game/machinery/vending/_vending.dm +++ b/code/game/machinery/vending/_vending.dm @@ -188,7 +188,7 @@ . = ..() SSnano.update_uis(src) -/obj/machinery/vending/receive_mouse_drop(atom/dropping, var/mob/user) +/obj/machinery/vending/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && dropping.loc == user && attempt_to_stock(dropping, user)) return TRUE diff --git a/code/game/machinery/vending_deconstruction.dm b/code/game/machinery/vending_deconstruction.dm index 55ad2206aa0..dce7ac35a27 100644 --- a/code/game/machinery/vending_deconstruction.dm +++ b/code/game/machinery/vending_deconstruction.dm @@ -20,9 +20,9 @@ /obj/structure/vending_refill/get_mechanics_info() return "Drag to a vendor to restock. Generally can not be opened." -/obj/structure/vending_refill/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/structure/vending_refill/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/machinery/vending)) - var/obj/machinery/vending/vendor = over + var/obj/machinery/vending/vendor = over var/target_type = vendor.base_type || vendor.type if(ispath(expected_type, target_type)) for(var/datum/stored_items/R in product_records) diff --git a/code/game/machinery/vitals_monitor.dm b/code/game/machinery/vitals_monitor.dm index 7378726057a..3eff63edf62 100644 --- a/code/game/machinery/vitals_monitor.dm +++ b/code/game/machinery/vitals_monitor.dm @@ -64,7 +64,7 @@ if(beep && victim && victim.get_pulse()) playsound(src, 'sound/machines/quiet_beep.ogg', 40) -/obj/machinery/vitals_monitor/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/machinery/vitals_monitor/handle_mouse_drop(atom/over, mob/user, params) if(ishuman(over)) if(victim) victim = null diff --git a/code/game/objects/item.dm b/code/game/objects/item.dm index b75e0928451..56c91beb77d 100644 --- a/code/game/objects/item.dm +++ b/code/game/objects/item.dm @@ -256,13 +256,24 @@ /obj/item/check_mousedrop_adjacency(var/atom/over, var/mob/user) . = (loc == user && istype(over, /obj/screen/inventory)) || ..() -/obj/item/handle_mouse_drop(atom/over, mob/user) - +/obj/item/handle_mouse_drop(atom/over, mob/user, params) if(over == user) usr.face_atom(src) dragged_onto(over) return TRUE + // Allow dragging items onto/around tables and racks. + if(istype(over, /obj/structure)) + var/obj/structure/struct = over + if(struct.structure_flags & STRUCTURE_FLAG_SURFACE) + if(user == loc && !user.try_unequip(src, get_turf(user))) + return TRUE + if(!isturf(loc)) + return TRUE + var/list/click_data = params2list(params) + do_visual_slide(src, get_turf(src), pixel_x, pixel_y, get_turf(over), text2num(click_data["icon-x"])-1, text2num(click_data["icon-y"])-1, center_of_mass && cached_json_decode(center_of_mass)) + return TRUE + // Try to drag-equip the item. var/obj/screen/inventory/inv = over if(user.client && istype(inv) && inv.slot_id && (over in user.client.screen)) @@ -282,6 +293,7 @@ user.equip_to_slot_if_possible(src, inv.slot_id) return TRUE + . = ..() /obj/item/proc/dragged_onto(var/mob/user) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index f8141b84b1e..1febbfd8949 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -75,7 +75,7 @@ . = new item_path(get_turf(src)) qdel(src) -/obj/structure/closet/body_bag/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/structure/closet/body_bag/handle_mouse_drop(atom/over, mob/user, params) if(over == user && (in_range(src, user) || (src in user.contents))) fold(user) return TRUE diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 450c8e243c0..e129fe78d4e 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -351,7 +351,7 @@ /obj/item/crowbar ) -/obj/item/storage/backpack/satchel/flat/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/item/storage/backpack/satchel/flat/handle_mouse_drop(atom/over, mob/user, params) var/turf/T = get_turf(src) if(hides_under_flooring() && isturf(T) && !T.is_plating()) return TRUE diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index 66b7810fcd9..63702e3fbf9 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -36,7 +36,7 @@ //items that use internal storage have the option of calling this to emulate default storage handle_mouse_drop behaviour. //returns 1 if the master item's parent's handle_mouse_drop() should be called, 0 otherwise. It's strange, but no other way of //doing it without the ability to call another proc's parent, really. -/obj/item/storage/internal/proc/handle_storage_internal_mouse_drop(mob/user, obj/over_object) +/obj/item/storage/internal/proc/handle_storage_internal_mouse_drop(mob/user, obj/over_object, params) if (ishuman(user) || issmall(user)) //so monkeys can take off their backpacks -- Urist if(over_object == user && Adjacent(user)) // this must come before the screen objects only block diff --git a/code/game/objects/items/weapons/storage/laundry_basket.dm b/code/game/objects/items/weapons/storage/laundry_basket.dm index c9f00adce4c..3d23489d23d 100644 --- a/code/game/objects/items/weapons/storage/laundry_basket.dm +++ b/code/game/objects/items/weapons/storage/laundry_basket.dm @@ -56,7 +56,7 @@ else icon_state = "laundry-empty" -/obj/item/storage/laundry_basket/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/item/storage/laundry_basket/handle_mouse_drop(atom/over, mob/user, params) if(over == user) return TRUE . = ..() diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index c028bec0466..616f994091c 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -34,7 +34,7 @@ . = ..() -/obj/item/storage/secure/handle_mouse_drop(atom/over, mob/user) +/obj/item/storage/secure/handle_mouse_drop(atom/over, mob/user, params) var/datum/extension/lockable/lock = get_extension(src, /datum/extension/lockable) if(lock.locked) add_fingerprint(user) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 260f1e776da..2f070bc69e9 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -33,7 +33,7 @@ QDEL_NULL(storage_ui) . = ..() -/obj/item/storage/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/item/storage/handle_mouse_drop(atom/over, mob/user, params) if(canremove && (ishuman(user) || isrobot(user) || isanimal(user)) && !user.incapacitated(INCAPACITATION_DISRUPTED) && over == user) open(user) return TRUE @@ -318,7 +318,7 @@ remove_from_storage(I, T, 1) finish_bulk_removal() -/obj/item/storage/receive_mouse_drop(atom/dropping, mob/living/user) +/obj/item/storage/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && scoop_inside(dropping, user)) return TRUE diff --git a/code/game/objects/items/weapons/storage/wall_mirror.dm b/code/game/objects/items/weapons/storage/wall_mirror.dm index 35ca2379ea4..960a91c3010 100644 --- a/code/game/objects/items/weapons/storage/wall_mirror.dm +++ b/code/game/objects/items/weapons/storage/wall_mirror.dm @@ -45,8 +45,8 @@ clear_ui_users(ui_users) . = ..() -/obj/structure/mirror/handle_mouse_drop(atom/over, mob/user) - if(!(. = mirror_storage?.handle_storage_internal_mouse_drop(user, over))) +/obj/structure/mirror/handle_mouse_drop(atom/over, mob/user, params) + if(!(. = mirror_storage?.handle_storage_internal_mouse_drop(user, over, params))) flick("mirror_open",src) return if((. = ..())) diff --git a/code/game/objects/structures/__structure.dm b/code/game/objects/structures/__structure.dm index 3367f9f096f..25d9e6a3bac 100644 --- a/code/game/objects/structures/__structure.dm +++ b/code/game/objects/structures/__structure.dm @@ -4,6 +4,7 @@ layer = STRUCTURE_LAYER abstract_type = /obj/structure + var/structure_flags var/last_damage_message var/health = 0 var/maxhealth = 50 diff --git a/code/game/objects/structures/crates_lockers/closets/__closet.dm b/code/game/objects/structures/crates_lockers/closets/__closet.dm index a57ef2228f0..c0ce1fe5219 100644 --- a/code/game/objects/structures/crates_lockers/closets/__closet.dm +++ b/code/game/objects/structures/crates_lockers/closets/__closet.dm @@ -313,7 +313,7 @@ var/global/list/closets = list() ) physically_destroyed() -/obj/structure/closet/receive_mouse_drop(atom/dropping, mob/user) +/obj/structure/closet/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() var/atom/movable/AM = dropping if(!. && istype(AM) && opened && !istype(AM, /obj/structure/closet) && AM.simulated && !AM.anchored && (large || !ismob(AM))) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 548a0f3fc3f..92c7880b785 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -104,7 +104,7 @@ visible_message("[user] strikes [src] with [I].") check_health() -/obj/structure/closet/statue/receive_mouse_drop(atom/dropping, var/mob/user) +/obj/structure/closet/statue/receive_mouse_drop(atom/dropping, mob/user, params) return TRUE /obj/structure/closet/statue/relaymove() diff --git a/code/game/objects/structures/crematorium.dm b/code/game/objects/structures/crematorium.dm index d8240222d2a..cd170f82f0c 100644 --- a/code/game/objects/structures/crematorium.dm +++ b/code/game/objects/structures/crematorium.dm @@ -210,7 +210,7 @@ /obj/structure/crematorium_tray/attack_robot(mob/user) return attack_hand_with_interaction_checks(user) -/obj/structure/crematorium_tray/receive_mouse_drop(atom/dropping, mob/user) +/obj/structure/crematorium_tray/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && (ismob(dropping) || istype(dropping, /obj/structure/closet/body_bag))) var/atom/movable/AM = dropping diff --git a/code/game/objects/structures/fireaxe_cabinet.dm b/code/game/objects/structures/fireaxe_cabinet.dm index c3d6311309b..d2049e48568 100644 --- a/code/game/objects/structures/fireaxe_cabinet.dm +++ b/code/game/objects/structures/fireaxe_cabinet.dm @@ -40,7 +40,7 @@ toggle_open(user) return TRUE -/obj/structure/fireaxecabinet/handle_mouse_drop(atom/over, mob/user) +/obj/structure/fireaxecabinet/handle_mouse_drop(atom/over, mob/user, params) if(over == user) if(!open) to_chat(user, SPAN_WARNING("\The [src] is closed.")) diff --git a/code/game/objects/structures/iv_drip.dm b/code/game/objects/structures/iv_drip.dm index e97d7d3fc86..596c9f0b506 100644 --- a/code/game/objects/structures/iv_drip.dm +++ b/code/game/objects/structures/iv_drip.dm @@ -75,7 +75,7 @@ add_overlay(light) -/obj/structure/iv_drip/handle_mouse_drop(atom/over, mob/user) +/obj/structure/iv_drip/handle_mouse_drop(atom/over, mob/user, params) if(attached) drip_detach() return TRUE diff --git a/code/game/objects/structures/mineral_bath.dm b/code/game/objects/structures/mineral_bath.dm index 845d32402a6..14bb3ef3f23 100644 --- a/code/game/objects/structures/mineral_bath.dm +++ b/code/game/objects/structures/mineral_bath.dm @@ -83,7 +83,7 @@ occupant = null STOP_PROCESSING(SSobj, src) -/obj/structure/mineral_bath/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/structure/mineral_bath/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && ismob(dropping)) enter_bath(dropping, user) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 6a3c583affd..39d74c931f5 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -114,7 +114,7 @@ /obj/structure/morgue_tray/attack_robot(mob/user) return attack_hand_with_interaction_checks(user) -/obj/structure/morgue_tray/receive_mouse_drop(atom/dropping, mob/user) +/obj/structure/morgue_tray/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && (ismob(dropping) || istype(dropping, /obj/structure/closet/body_bag))) var/atom/movable/AM = dropping diff --git a/code/game/objects/structures/racks.dm b/code/game/objects/structures/racks.dm index 1f8828f5b74..90c6a3fd51a 100644 --- a/code/game/objects/structures/racks.dm +++ b/code/game/objects/structures/racks.dm @@ -13,6 +13,7 @@ parts_type = /obj/item/stack/material/strut density = TRUE anchored = TRUE + structure_flags = STRUCTURE_FLAG_SURFACE /obj/structure/rack/Initialize() ..() diff --git a/code/game/objects/structures/stasis_cage.dm b/code/game/objects/structures/stasis_cage.dm index 99e28d423d4..fd144cae909 100644 --- a/code/game/objects/structures/stasis_cage.dm +++ b/code/game/objects/structures/stasis_cage.dm @@ -74,7 +74,7 @@ release() return ..() -/mob/living/simple_animal/handle_mouse_drop(atom/over, mob/user) +/mob/living/simple_animal/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/structure/stasis_cage)) var/obj/structure/stasis_cage/cage = over if(!stat && !istype(buckled, /obj/effect/energy_net)) diff --git a/code/game/objects/structures/stool_bed_chair_nest_sofa/bed.dm b/code/game/objects/structures/stool_bed_chair_nest_sofa/bed.dm index b6aef499f55..95fb9712f41 100644 --- a/code/game/objects/structures/stool_bed_chair_nest_sofa/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest_sofa/bed.dm @@ -25,7 +25,7 @@ parts_type = /obj/item/stack/material/strut var/base_icon = "bed" -/obj/structure/bed/user_can_mousedrop_onto(var/mob/user, var/atom/being_dropped, var/incapacitation_flags) +/obj/structure/bed/user_can_mousedrop_onto(mob/user, atom/being_dropped, incapacitation_flags, params) if(user == being_dropped) return user.Adjacent(src) && !user.incapacitated(INCAPACITATION_STUNNED|INCAPACITATION_KNOCKOUT) return ..() @@ -237,7 +237,7 @@ queue_icon_update() STOP_PROCESSING(SSobj,src) -/obj/structure/bed/roller/handle_mouse_drop(atom/over, mob/user) +/obj/structure/bed/roller/handle_mouse_drop(atom/over, mob/user, params) if(ishuman(user) || isrobot(user)) if(over == buckled_mob && beaker) if(iv_attached) diff --git a/code/game/objects/structures/tables.dm b/code/game/objects/structures/tables.dm index a0d4fa6b182..aa81ad48efd 100644 --- a/code/game/objects/structures/tables.dm +++ b/code/game/objects/structures/tables.dm @@ -20,6 +20,7 @@ material_alteration = MAT_FLAG_ALTERATION_NAME | MAT_FLAG_ALTERATION_DESC parts_amount = 2 parts_type = /obj/item/stack/material/strut + structure_flags = STRUCTURE_FLAG_SURFACE var/can_flip = TRUE var/is_flipped = FALSE @@ -464,7 +465,7 @@ return TRUE return TRUE -/obj/structure/table/receive_mouse_drop(atom/dropping, mob/user) +/obj/structure/table/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && !isrobot(user) && isitem(dropping) && user.get_active_hand() == dropping && user.try_unequip(dropping)) var/obj/item/I = dropping diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 1c466ff083d..12509e09c74 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -354,7 +354,7 @@ var/global/list/hygiene_props = list() anchored = TRUE var/busy = 0 //Something's being washed at the moment -/obj/structure/hygiene/sink/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/structure/hygiene/sink/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && isitem(dropping) && ATOM_IS_OPEN_CONTAINER(dropping)) var/obj/item/thing = dropping diff --git a/code/modules/admin/spam_prevention.dm b/code/modules/admin/spam_prevention.dm index 98875e57cee..69eb5783d62 100644 --- a/code/modules/admin/spam_prevention.dm +++ b/code/modules/admin/spam_prevention.dm @@ -41,5 +41,5 @@ var/global/list/ckey_punished_for_spam = list() // this round; to avoid redundan return return ..() -/client/MouseDrop() +/client/MouseDrop(src_object, over_object, src_location, over_location, src_control, over_control, params) . = user_acted(src) && ..() diff --git a/code/modules/augment/active/cyberbrain.dm b/code/modules/augment/active/cyberbrain.dm index 70abdcb0494..c2b2cd63964 100644 --- a/code/modules/augment/active/cyberbrain.dm +++ b/code/modules/augment/active/cyberbrain.dm @@ -60,7 +60,7 @@ return return ..() -/obj/item/organ/internal/augment/active/cyberbrain/handle_mouse_drop(atom/over, mob/user) +/obj/item/organ/internal/augment/active/cyberbrain/handle_mouse_drop(atom/over, mob/user, params) if(!istype(over, /obj/screen)) attack_self(user) return TRUE diff --git a/code/modules/butchery/butchery.dm b/code/modules/butchery/butchery.dm index 50bc8e95120..b06d0ed83c5 100644 --- a/code/modules/butchery/butchery.dm +++ b/code/modules/butchery/butchery.dm @@ -104,7 +104,7 @@ to_chat(user, SPAN_WARNING("\The [occupant] is so badly mangled that removing them from \the [src] would be pointless.")) return TRUE -/obj/structure/kitchenspike/receive_mouse_drop(var/atom/dropping, var/mob/user) +/obj/structure/kitchenspike/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && ismob(dropping)) try_spike(dropping, user) diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index 2a23761a6fd..5e3fff9233b 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -15,7 +15,7 @@ return ..(user) return TRUE -/obj/item/clothing/suit/storage/handle_mouse_drop(atom/over, mob/user) +/obj/item/clothing/suit/storage/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/screen/inventory)) return ..() return pockets?.handle_storage_internal_mouse_drop(user, over) && ..() diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index 221f35d7a32..907dd272430 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -31,7 +31,7 @@ return ..(user) return TRUE -/obj/item/clothing/accessory/storage/handle_mouse_drop(atom/over, mob/user) +/obj/item/clothing/accessory/storage/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/screen/inventory)) return ..() if(!istype(loc, /obj/item/clothing) && hold?.handle_storage_internal_mouse_drop(user, over)) diff --git a/code/modules/clothing/underwear/base.dm b/code/modules/clothing/underwear/base.dm index 8219d976153..b1d20666476 100644 --- a/code/modules/clothing/underwear/base.dm +++ b/code/modules/clothing/underwear/base.dm @@ -10,7 +10,7 @@ return // Might as well check DelayedEquipUnderwear(user, target) -/obj/item/underwear/handle_mouse_drop(atom/over, mob/user) +/obj/item/underwear/handle_mouse_drop(atom/over, mob/user, params) SHOULD_CALL_PARENT(FALSE) DelayedEquipUnderwear(user, over) return TRUE diff --git a/code/modules/detectivework/microscope/_forensic_machine.dm b/code/modules/detectivework/microscope/_forensic_machine.dm index b82eb930fe2..fab07b75720 100644 --- a/code/modules/detectivework/microscope/_forensic_machine.dm +++ b/code/modules/detectivework/microscope/_forensic_machine.dm @@ -107,7 +107,7 @@ remover.put_in_hands(sample) clear_sample() -/obj/machinery/forensic/handle_mouse_drop(var/atom/over, var/mob/user) +/obj/machinery/forensic/handle_mouse_drop(atom/over, mob/user, params) if(user == over) remove_sample(usr) return TRUE diff --git a/code/modules/detectivework/tools/evidencebag.dm b/code/modules/detectivework/tools/evidencebag.dm index f644e35e2c1..44b31951521 100644 --- a/code/modules/detectivework/tools/evidencebag.dm +++ b/code/modules/detectivework/tools/evidencebag.dm @@ -11,7 +11,7 @@ obj_flags = OBJ_FLAG_HOLLOW var/obj/item/stored_item = null -/obj/item/evidencebag/handle_mouse_drop(atom/over, mob/user) +/obj/item/evidencebag/handle_mouse_drop(atom/over, mob/user, params) if(user.get_empty_hand_slot() && isitem(over)) var/obj/item/I = over diff --git a/code/modules/detectivework/tools/sample_kits/_sample_kit.dm b/code/modules/detectivework/tools/sample_kits/_sample_kit.dm index 8fa87b124bd..07bc721c4ce 100644 --- a/code/modules/detectivework/tools/sample_kits/_sample_kit.dm +++ b/code/modules/detectivework/tools/sample_kits/_sample_kit.dm @@ -40,7 +40,7 @@ to_chat(user, SPAN_WARNING("You are unable to locate any [evidence_type]s on \the [A].")) . = ..() -/obj/item/forensics/sample_kit/handle_mouse_drop(atom/over, mob/user) +/obj/item/forensics/sample_kit/handle_mouse_drop(atom/over, mob/user, params) if(ismob(loc)) afterattack(over, user, TRUE) return TRUE diff --git a/code/modules/fabrication/fabricator_pipe.dm b/code/modules/fabrication/fabricator_pipe.dm index c3cd5055a16..a552ff4f1ac 100644 --- a/code/modules/fabrication/fabricator_pipe.dm +++ b/code/modules/fabrication/fabricator_pipe.dm @@ -50,7 +50,7 @@ base_type = /obj/machinery/fabricator/pipe/disposal //Allow you to drag-drop disposal pipes into it -/obj/machinery/fabricator/pipe/disposal/receive_mouse_drop(var/atom/dropping, mob/user) +/obj/machinery/fabricator/pipe/disposal/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && istype(dropping, /obj/structure/disposalconstruct)) qdel(dropping) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 679c23c61d5..b25438de00d 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -264,7 +264,7 @@ var/global/list/card_decks = list() cards = shuffle(cards) user.visible_message("\The [user] shuffles [src].") -/obj/item/deck/handle_mouse_drop(atom/over, mob/user) +/obj/item/deck/handle_mouse_drop(atom/over, mob/user, params) if(over == user && (loc == user || in_range(src, user)) && user.get_empty_hand_slot()) user.put_in_hands(src) return TRUE diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 2a344335261..70bf4641b9e 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -119,7 +119,7 @@ if(power_failure || !draw_power(IC.power_draw_idle)) IC.power_fail() -/obj/item/electronic_assembly/receive_mouse_drop(atom/dropping, mob/user) +/obj/item/electronic_assembly/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && user == dropping) interact(user) diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index ad13fe6fc90..5f072a7392e 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -162,7 +162,7 @@ else return ..() -/obj/item/mech_component/chassis/receive_mouse_drop(atom/dropping, mob/user) +/obj/item/mech_component/chassis/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && istype(dropping, /obj/machinery/portable_atmospherics/canister)) var/obj/machinery/portable_atmospherics/canister/C = dropping @@ -180,9 +180,9 @@ update_components() return TRUE -/obj/item/mech_component/chassis/handle_mouse_drop(atom/over, mob/user) +/obj/item/mech_component/chassis/handle_mouse_drop(atom/over, mob/user, params) if(storage_compartment) - return storage_compartment.handle_mouse_drop(over, user) + return storage_compartment.handle_mouse_drop(over, user, params) . = ..() /obj/item/mech_component/chassis/return_diagnostics(mob/user) diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index f8b87ba090e..94892c42dcd 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -44,7 +44,7 @@ maptext_y = 3 maptext_width = 72 -/obj/screen/exosuit/hardpoint/handle_mouse_drop(atom/over, mob/user) +/obj/screen/exosuit/hardpoint/handle_mouse_drop(atom/over, mob/user, params) if(holding) holding.screen_loc = screen_loc return TRUE diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 2268f62713d..0c13060d39a 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -1,11 +1,11 @@ -/mob/living/exosuit/receive_mouse_drop(atom/dropping, mob/user) +/mob/living/exosuit/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && istype(dropping, /obj/machinery/portable_atmospherics/canister)) - body.receive_mouse_drop(dropping, user) + body.receive_mouse_drop(dropping, user, params) return TRUE -/mob/living/exosuit/handle_mouse_drop(atom/over, mob/user) - if(body?.handle_mouse_drop(over, user)) +/mob/living/exosuit/handle_mouse_drop(atom/over, mob/user, params) + if(body?.handle_mouse_drop(over, user, params)) return TRUE . = ..() diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index 818d8a95f59..e8c985ea706 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -52,7 +52,7 @@ suffix = num2text(++amount) name = "Mulebot #[suffix]" -/mob/living/bot/mulebot/receive_mouse_drop(var/atom/dropping, var/mob/user) +/mob/living/bot/mulebot/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!.) load(dropping) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 45c8d879873..8e6fb56de1d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -948,7 +948,7 @@ default behaviour is: /mob/living/get_admin_job_string() return "Living" -/mob/living/handle_mouse_drop(atom/over, mob/user) +/mob/living/handle_mouse_drop(atom/over, mob/user, params) if(!anchored && user == src && user != over) if(isturf(over)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7bc019c0877..25a0c5f2f26 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -593,7 +593,7 @@ return TRUE return FALSE -/mob/handle_mouse_drop(atom/over, mob/user) +/mob/handle_mouse_drop(atom/over, mob/user, params) if(over == user && user != src && !isAI(user)) show_stripping_window(user) return TRUE diff --git a/code/modules/mob/observer/ghost/ghost.dm b/code/modules/mob/observer/ghost/ghost.dm index a8a3766c85a..a82cdc09ad0 100644 --- a/code/modules/mob/observer/ghost/ghost.dm +++ b/code/modules/mob/observer/ghost/ghost.dm @@ -418,8 +418,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp show_browser(src, dat, "window=manifest;size=370x420;can_close=1") //This is called when a ghost is drag clicked to something. -/mob/observer/ghost/MouseDrop(atom/over) +/mob/observer/ghost/MouseDrop(over_object, src_location, over_location, src_control, over_control, params) SHOULD_CALL_PARENT(FALSE) + var/atom/over = over_object if(!usr || !over) return if(isghost(usr) && usr.client && isliving(over)) diff --git a/code/modules/multiz/hoist.dm b/code/modules/multiz/hoist.dm index 06e24f6513d..838b64e9dc2 100644 --- a/code/modules/multiz/hoist.dm +++ b/code/modules/multiz/hoist.dm @@ -46,7 +46,7 @@ source_hoist.release_hoistee() return TRUE -/obj/effect/hoist_hook/receive_mouse_drop(atom/dropping, mob/user) +/obj/effect/hoist_hook/receive_mouse_drop(atom/dropping, mob/user, params) // skip the parent buckle logic, handle climbing directly var/mob/living/H = user if(istype(H) && !H.anchored && can_climb(H) && dropping == user) @@ -85,7 +85,7 @@ events_repository.register(/decl/observ/destroyed, AM, src, .proc/release_hoistee) -/obj/effect/hoist_hook/handle_mouse_drop(atom/over, mob/user) +/obj/effect/hoist_hook/handle_mouse_drop(atom/over, mob/user, params) if(source_hoist.hoistee && isturf(over) && over.Adjacent(source_hoist.hoistee)) if(!user.check_dexterity(DEXTERITY_HOLD_ITEM)) return TRUE diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index a5a861b830d..97f80cf22dd 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -21,7 +21,7 @@ LAZYCLEARLIST(papers) //Gets rid of any refs return ..() -/obj/item/paper_bin/handle_mouse_drop(atom/over, mob/user) +/obj/item/paper_bin/handle_mouse_drop(atom/over, mob/user, params) if((loc == user || in_range(src, user)) && user.get_empty_hand_slot()) user.put_in_hands(src) return TRUE diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c479ecaa378..1eef36d4a0d 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -185,7 +185,7 @@ can_hold = list(/obj/item/photo) material = /decl/material/solid/organic/plastic -/obj/item/storage/photo_album/handle_mouse_drop(atom/over, mob/user) +/obj/item/storage/photo_album/handle_mouse_drop(atom/over, mob/user, params) if(over == user && in_range(src, user) || loc == user) if(user.active_storage) user.active_storage.close(user) diff --git a/code/modules/power/fuel_assembly/fuel_compressor.dm b/code/modules/power/fuel_assembly/fuel_compressor.dm index 09d8f49f561..6df9b9a8a0b 100644 --- a/code/modules/power/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fuel_assembly/fuel_compressor.dm @@ -111,7 +111,7 @@ rod_makeup[mat_type] = amt return TOPIC_REFRESH -/obj/machinery/fuel_compressor/receive_mouse_drop(var/atom/movable/dropping, var/mob/user) +/obj/machinery/fuel_compressor/receive_mouse_drop(atom/dropping, mob/user, params) if(user.incapacitated() || !user.Adjacent(src)) return return !add_material(dropping, user) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 4c54b7882dd..84026bdcafa 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -38,7 +38,7 @@ add_overlay(overlay_image(icon, "[round(percent,25)]", reagents.get_color())) add_overlay(attached? "dongle" : "top") -/obj/item/chems/ivbag/handle_mouse_drop(atom/over, mob/user) +/obj/item/chems/ivbag/handle_mouse_drop(atom/over, mob/user, params) if(ismob(loc)) if(attached) visible_message(SPAN_NOTICE("\The [attached] is taken off \the [src].")) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 4aea8101f63..7c48c84bb5b 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -112,7 +112,7 @@ var/global/list/diversion_junctions = list() update_icon() -/obj/machinery/disposal/receive_mouse_drop(atom/dropping, mob/user) +/obj/machinery/disposal/receive_mouse_drop(atom/dropping, mob/user, params) . = (user?.a_intent != I_HURT && ..()) @@ -124,7 +124,7 @@ var/global/list/diversion_junctions = list() var/incapacitation_flags = INCAPACITATION_DEFAULT if(dropping == user) incapacitation_flags &= ~INCAPACITATION_RESTRAINED - if(!dropping.can_mouse_drop(src, user, incapacitation_flags)) + if(!dropping.can_mouse_drop(src, user, incapacitation_flags, params)) return FALSE // Todo rewrite all of this. diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index 9c4398a49ea..21cdeff40c0 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -124,7 +124,7 @@ return 1 return ..() -/obj/vehicle/bike/receive_mouse_drop(var/atom/dropping, mob/user) +/obj/vehicle/bike/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && istype(dropping, /atom/movable)) if(!load(dropping)) diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 61e579a188e..5703c3ff0d0 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -103,14 +103,14 @@ to_chat(user, "You climb down from [src].") return 1 -/obj/vehicle/train/handle_mouse_drop(atom/over, mob/user) +/obj/vehicle/train/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/vehicle/train)) var/obj/vehicle/train/beep = over beep.latch(src, user) return TRUE . = ..() -/obj/vehicle/train/receive_mouse_drop(var/atom/dropping, mob/user) +/obj/vehicle/train/receive_mouse_drop(atom/dropping, mob/user, params) . = ..() if(!. && istype(dropping, /atom/movable)) if(!load(dropping)) diff --git a/code/modules/xenoarcheaology/tools/anomaly_container.dm b/code/modules/xenoarcheaology/tools/anomaly_container.dm index 3ad102b8aeb..19f0e781d94 100644 --- a/code/modules/xenoarcheaology/tools/anomaly_container.dm +++ b/code/modules/xenoarcheaology/tools/anomaly_container.dm @@ -37,7 +37,7 @@ underlays.Cut() desc = initial(desc) -/obj/structure/artifact/handle_mouse_drop(atom/over, mob/user) +/obj/structure/artifact/handle_mouse_drop(atom/over, mob/user, params) if(istype(over, /obj/structure/anomaly_container)) Bumped(user) var/obj/structure/anomaly_container/box = over diff --git a/nebula.dme b/nebula.dme index 93c4ad4743f..b474034b898 100644 --- a/nebula.dme +++ b/nebula.dme @@ -88,6 +88,7 @@ #include "code\__defines\species.dm" #include "code\__defines\status.dm" #include "code\__defines\stress.dm" +#include "code\__defines\structures.dm" #include "code\__defines\subsystem-priority.dm" #include "code\__defines\subsystems.dm" #include "code\__defines\targeting.dm"