Wireless Mining ID (#10827)

Mining ore processors and Mining Vendors now find IDs wirelessly, allowing mining stationbounds to redeem points as well. Mining drones cannot utilize this system.
This commit is contained in:
Geeves
2020-12-28 12:31:02 +02:00
committed by GitHub
parent 2970e33bc8
commit 397563c0b8
3 changed files with 68 additions and 52 deletions
+31 -26
View File
@@ -15,7 +15,7 @@
var/obj/machinery/mineral/processing_unit/machine
var/show_all_ores = FALSE
var/points = 0
var/obj/item/card/id/inserted_id
var/datum/weakref/scanned_id
var/list/ore/input_mats = list()
var/list/material/output_mats = list()
@@ -46,17 +46,25 @@
/obj/machinery/mineral/processing_unit_console/attack_hand(mob/user)
add_fingerprint(user)
if(!scanned_id)
get_user_id(user)
else
var/obj/item/card/id/ID = scanned_id.resolve()
if(!ID)
scanned_id = null
get_user_id(user)
else
var/turf/id_turf = get_turf(ID)
if(!id_turf.Adjacent(loc))
scanned_id = null
get_user_id(user)
interact(user)
/obj/machinery/mineral/processing_unit_console/attackby(obj/item/I, mob/user)
if(istype(I,/obj/item/card/id))
var/obj/item/card/id/C = user.get_active_hand()
if(istype(C) && !istype(inserted_id))
user.drop_from_inventory(C, src)
inserted_id = C
interact(user)
else
..()
/obj/machinery/mineral/processing_unit_console/proc/get_user_id(var/mob/user)
if(!scanned_id && !isDrone(user))
var/obj/item/card/id/ID = user.GetIdCard()
if(ID)
scanned_id = WEAKREF(ID)
/obj/machinery/mineral/processing_unit_console/interact(mob/user)
if(..())
@@ -75,8 +83,9 @@
dat += "Current unclaimed points: [points]<br>"
if(istype(inserted_id))
dat += "You have [inserted_id.mining_points] mining points collected. <A href='?src=\ref[src];choice=eject'>Eject ID.</A><br>"
var/obj/item/card/id/ID = scanned_id.resolve()
if(ID)
dat += "You have [ID.mining_points] mining points collected. <A href='?src=\ref[src];choice=eject'>Eject ID.</A><br>"
dat += "<A href='?src=\ref[src];choice=claim'>Claim points.</A><br>"
dat += "<A href='?src=\ref[src];choice=print_report'>Print yield declaration.</A><br>"
else
@@ -121,15 +130,14 @@
src.add_fingerprint(usr)
if(href_list["choice"])
if(istype(inserted_id))
var/obj/item/card/id/ID = scanned_id.resolve()
if(ID)
if(href_list["choice"] == "eject")
inserted_id.forceMove(loc)
usr.put_in_hands(inserted_id)
inserted_id = null
scanned_id = null
if(href_list["choice"] == "claim")
if(access_mining_station in inserted_id.access)
if(access_mining_station in ID.access)
if(points >= 0)
inserted_id.mining_points += points
ID.mining_points += points
if(points != 0)
ping("\The [src] pings, \"Point transfer complete! Transaction total: [points] points!\"")
points = 0
@@ -138,7 +146,7 @@
else
to_chat(usr, SPAN_WARNING("Required access not found."))
if(href_list["choice"] == "print_report")
if(access_mining_station in inserted_id.access)
if(access_mining_station in ID.access)
print_report(usr)
else
to_chat(usr, SPAN_WARNING("Required access not found."))
@@ -146,10 +154,7 @@
else if(href_list["choice"] == "insert")
var/obj/item/card/id/I = usr.get_active_hand()
if(istype(I))
usr.drop_from_inventory(I,src)
inserted_id = I
else
to_chat(usr, SPAN_WARNING("No valid ID."))
scanned_id = WEAKREF(I)
if(href_list["toggle_smelting"])
var/choice = input("What setting do you wish to use for processing [href_list["toggle_smelting"]]?") as null|anything in list("Smelting","Compressing","Alloying","Nothing")
@@ -183,7 +188,8 @@
return
/obj/machinery/mineral/processing_unit_console/proc/print_report(var/mob/living/user)
if(!inserted_id)
var/obj/item/card/id/ID = scanned_id.resolve()
if(!ID)
to_chat(user, SPAN_WARNING("No ID inserted. Cannot digitally sign."))
return
if(!input_mats.len && !output_mats.len && !alloy_mats)
@@ -270,8 +276,7 @@
input_mats = list()
waste = 0
if(ishuman(user) && !(user.l_hand && user.r_hand))
user.put_in_hands(P)
user.put_in_hands(P)
printing = FALSE
return