Files
VOREStation/code/game/objects/items/stacks/stack_vr.dm
Will ae718f07e3 Forensics Datum (#17796)
* forensics datum initial work

* typo fix

* glove recursion fix

* missing bloodtype on organ data

* removed frustrating and unneeded b_type var from humans

* no leaky

* listcheck

* documenting

* documentation
2025-06-05 23:30:11 -07:00

37 lines
1.0 KiB
Plaintext

// Porting stack dragging/auto stacking from TG.
/obj/item/stack/proc/merge(obj/item/stack/S) //Merge src into S, as much as possible
var/transfer = get_amount()
transfer = min(transfer, S.max_amount - S.amount)
if(pulledby)
pulledby.start_pulling(S)
transfer_fingerprints_to(S)
S.init_forensic_data().merge_blooddna(forensic_data)
use(transfer)
S.add(transfer)
/obj/item/stack/proc/can_merge(obj/item/stack/S)
if(uses_charge || S.uses_charge) // This should realistically never happen, but in case it does lets avoid breaking things.
return
if(S.stacktype != stacktype)
return
if(S.amount >= S.max_amount)
return
if(!isturf(loc) || !isturf(S.loc))
return FALSE
if(src == S)
return FALSE
if(ismob(S.loc) || ismob(loc))
return FALSE
if(S.throwing || throwing)
return FALSE
if(S.amount < 1 || amount < 1)
return FALSE
return TRUE
/obj/item/stack/Crossed(var/atom/movable/AM)
if(istype(AM, src.type)) // Sanity so we don't try to merge non-stacks.
if(can_merge(AM))
merge(AM)
return ..()