Deterministic output slots for smartfridges (#32225)

* a spooky commit

* It is too late, the skeleton is already inside you

* mexican river dolphins for halloween 2018

* Compiler warnings for halloween 2018
This commit is contained in:
vuonojenmustaturska
2017-10-30 21:34:28 +02:00
committed by CitadelStationBot
parent 241d2d88e6
commit 5bd7184d9c
3 changed files with 53 additions and 16 deletions
+11
View File
@@ -506,3 +506,14 @@ Class Procs:
. = ..()
if (AM == occupant)
occupant = null
/obj/machinery/proc/adjust_item_drop_location(atom/movable/AM) // Adjust item drop location to a 3x3 grid inside the tile, returns slot id from 0 to 8
var/md5 = md5(AM.name) // Oh, and it's deterministic too. A specific item will always drop from the same slot.
#if DM_VERSION > 511
#warn Refactor the loop in /obj/machinery/proc/adjust_item_drop_location() to make use of 512's list-like access to characters in a string
#endif
for (var/i in 1 to 32)
. += hex2num(copytext(md5,i,i+1))
. = . % 9
AM.pixel_x = -8 + ((.%3)*8)
AM.pixel_y = -8 + (round( . / 3)*8)