mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 13:05:44 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user