diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index d30cc76b0a7..79c6466235b 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -107,6 +107,8 @@ var/icon/side var/dat var/stamped = 0 + + var/obj/item/weapon/card/id/guest/guest_pass = null // Guest pass attached to the ID /obj/item/weapon/card/id/New() ..() @@ -120,6 +122,16 @@ show(usr) else to_chat(user, "It is too far away.") + if(guest_pass) + to_chat(user, "There is a guest pass attached to this ID card") + if (world.time < guest_pass.expiration_time) + to_chat(user, "It expires at [worldtime2text(guest_pass.expiration_time)].") + else + to_chat(user, "It expired at [worldtime2text(guest_pass.expiration_time)].") + to_chat(user, "It grants access to following areas:") + for (var/A in guest_pass.temp_access) + to_chat(user, "[get_access_desc(A)].") + to_chat(user, "Issuing reason: [guest_pass.reason].") /obj/item/weapon/card/id/proc/show(mob/user as mob) var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper) @@ -170,7 +182,9 @@ " /obj/item/weapon/card/id/GetAccess() - return access + if(!guest_pass) + return access + return access | guest_pass.GetAccess() /obj/item/weapon/card/id/GetID() return src @@ -204,9 +218,42 @@ if(!stamped) dat+="" stamped = 1 - to_chat(usr, "You stamp the ID card!") + to_chat(user, "You stamp the ID card!") else - to_chat(usr, "This ID has already been stamped!") + to_chat(user, "This ID has already been stamped!") + + else if(istype(W, /obj/item/weapon/card/id/guest)) + if(istype(src, /obj/item/weapon/card/id/guest)) + return + var/obj/item/weapon/card/id/guest/G = W + if(world.time > G.expiration_time) + to_chat(user, "There's no point, the guest pass has expired.") + return + if(guest_pass) + to_chat(user, "There's already a guest pass attached to this ID.") + return + if(G.registered_name != registered_name && G.registered_name != "NOT SPECIFIED") + to_chat(user, "The guest pass cannot be attached to this ID") + return + if(!user.unEquip(G)) + return + G.loc = src + guest_pass = G + +/obj/item/weapon/card/id/verb/remove_guest_pass() + set name = "Remove Guest Pass" + set category = "Object" + set src in range(0) + + if(usr.stat || !usr.canmove || usr.restrained()) + return + + if(guest_pass) + to_chat(usr, "You remove the guest pass from this ID.") + guest_pass.forceMove(get_turf(src)) + guest_pass = null + else + to_chat(usr, "There is no guest pass attached to this ID") /obj/item/weapon/card/id/silver name = "identification card"