mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
Fix buckling and probably a lot more mousedrop interactions (#93352)
This commit is contained in:
@@ -11,7 +11,8 @@
|
|||||||
if(!usr || !over)
|
if(!usr || !over)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/proximity_check = usr.client.check_drag_proximity(src, over, src_location, over_location, src_control, over_control, params)
|
var/client/usrclient = GET_CLIENT(usr)
|
||||||
|
var/proximity_check = usrclient.check_drag_proximity(src, over, src_location, over_location, src_control, over_control, params)
|
||||||
if(proximity_check)
|
if(proximity_check)
|
||||||
return proximity_check
|
return proximity_check
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@
|
|||||||
var/combined_atom_flags = interaction_flags_atom | over.interaction_flags_atom
|
var/combined_atom_flags = interaction_flags_atom | over.interaction_flags_atom
|
||||||
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS))
|
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS))
|
||||||
//Check for adjacency
|
//Check for adjacency
|
||||||
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT) && (!user.IsReachableBy(src) || user.IsReachableBy(src) || !user.IsReachableBy(over)))
|
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT) && (!IsReachableBy(user) || !over.IsReachableBy(user)))
|
||||||
return // should stop you from dragging through windows
|
return // should stop you from dragging through windows
|
||||||
|
|
||||||
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY))
|
if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY))
|
||||||
|
|||||||
@@ -85,3 +85,6 @@
|
|||||||
|
|
||||||
/datum/client_interface/proc/set_fullscreen(logging_in = FALSE)
|
/datum/client_interface/proc/set_fullscreen(logging_in = FALSE)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
/datum/client_interface/proc/check_drag_proximity(atom/dragging, atom/over, src_location, over_location, src_control, over_control, params)
|
||||||
|
return FALSE
|
||||||
|
|||||||
@@ -110,6 +110,7 @@
|
|||||||
#include "blindness.dm"
|
#include "blindness.dm"
|
||||||
#include "bloody_footprints.dm"
|
#include "bloody_footprints.dm"
|
||||||
#include "breath.dm"
|
#include "breath.dm"
|
||||||
|
#include "buckle.dm"
|
||||||
#include "burning.dm"
|
#include "burning.dm"
|
||||||
#include "cable_powernets.dm"
|
#include "cable_powernets.dm"
|
||||||
#include "can_see.dm"
|
#include "can_see.dm"
|
||||||
|
|||||||
36
code/modules/unit_tests/buckle.dm
Normal file
36
code/modules/unit_tests/buckle.dm
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/// Test you can buckle yourself to a chair
|
||||||
|
/datum/unit_test/buckling_self
|
||||||
|
|
||||||
|
/datum/unit_test/buckling_self/Run()
|
||||||
|
var/mob/living/carbon/human/consistent/dummy = EASY_ALLOCATE()
|
||||||
|
dummy.mock_client = new()
|
||||||
|
var/obj/structure/chair/chair = EASY_ALLOCATE()
|
||||||
|
|
||||||
|
var/old_usr = usr
|
||||||
|
|
||||||
|
usr = dummy // mouse drop still uses usr
|
||||||
|
|
||||||
|
dummy.MouseDrop(chair)
|
||||||
|
if(dummy.buckled != chair)
|
||||||
|
TEST_FAIL("The dummy failed to buckle themselves to a chair via mouse drop.")
|
||||||
|
|
||||||
|
usr = old_usr
|
||||||
|
|
||||||
|
/// Test you can buckle someone else to a chair
|
||||||
|
/datum/unit_test/buckling_others
|
||||||
|
|
||||||
|
/datum/unit_test/buckling_others/Run()
|
||||||
|
var/mob/living/carbon/human/consistent/dummy = EASY_ALLOCATE()
|
||||||
|
dummy.mock_client = new()
|
||||||
|
var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE()
|
||||||
|
var/obj/structure/chair/chair = EASY_ALLOCATE()
|
||||||
|
|
||||||
|
var/old_usr = usr
|
||||||
|
|
||||||
|
usr = dummy // mouse drop still uses usr
|
||||||
|
|
||||||
|
victim.MouseDrop(chair)
|
||||||
|
if(victim.buckled != chair)
|
||||||
|
TEST_FAIL("The dummy failed to buckle the victim to a chair via mouse drop.")
|
||||||
|
|
||||||
|
usr = old_usr
|
||||||
Reference in New Issue
Block a user