diff --git a/code/game/objects/items/weapons/agent_id.dm b/code/game/objects/items/weapons/agent_id.dm index 31de21cca64a6..5eea728393b59 100644 --- a/code/game/objects/items/weapons/agent_id.dm +++ b/code/game/objects/items/weapons/agent_id.dm @@ -50,16 +50,16 @@ icon_state = "syndie" assignment = "Syndicate Overlord" untrackable = TRUE + can_id_flash = FALSE //This can ID flash, this just prevents it from always flashing. access = list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER, ACCESS_SYNDICATE_COMMAND, ACCESS_EXTERNAL_AIRLOCKS) -/obj/item/card/id/syndicate/afterattack__legacy__attackchain(atom/target, mob/user, proximity_flag, params) - if(!proximity_flag) - return +/obj/item/card/id/syndicate/interact_with_atom(atom/target, mob/living/user, list/modifiers) if(istype(target, /obj/item/card/id)) var/obj/item/card/id/I = target if(isliving(user) && user?.mind?.special_role) to_chat(usr, "The card's microscanners activate as you pass it over [I], copying its access.") access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming + return ITEM_INTERACT_SUCCESS /obj/item/card/id/syndicate/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) @@ -127,8 +127,8 @@ ui = new(user, src, "AgentCard", name) ui.open() -/obj/item/card/id/syndicate/attack_self__legacy__attackchain(mob/user) - if(!ishuman(user)) +/obj/item/card/id/syndicate/activate_self(mob/user) + if(..() || !ishuman(user)) return if(!registered_human) registered_human = user @@ -289,12 +289,11 @@ if(isAntag(user)) . += "Similar to an agent ID, this ID card can be used to copy accesses, but it lacks the customization and anti-tracking capabilities of an agent ID." -/obj/item/card/id/syndi_scan_only/afterattack__legacy__attackchain(atom/O, mob/user, proximity_flag, params) - if(!proximity_flag) - return - if(istype(O, /obj/item/card/id)) - var/obj/item/card/id/I = O +/obj/item/card/id/syndi_scan_only/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(istype(target, /obj/item/card/id)) + var/obj/item/card/id/I = target if(isliving(user) && user.mind) if(user.mind.special_role) to_chat(user, "The card's microscanners activate as you pass it over [I], copying its access.") access |= I.access // Don't copy access if user isn't an antag -- to prevent metagaming + return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 716ed73ca8350..264c12bdad4ea 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -11,6 +11,7 @@ desc = "A card." icon = 'icons/obj/card.dmi' w_class = WEIGHT_CLASS_TINY + new_attack_chain = TRUE var/associated_account_number = 0 var/list/files = list() @@ -38,14 +39,10 @@ flags = NOBLUDGEON flags_2 = NO_MAT_REDEMPTION_2 -/obj/item/card/emag/attack__legacy__attackchain() - return -/obj/item/card/emag/afterattack__legacy__attackchain(atom/target, mob/user, proximity) - var/atom/A = target - if(!proximity) - return - A.emag_act(user) +/obj/item/card/emag/interact_with_atom(atom/target, mob/living/user, list/modifiers) + target.emag_act(user) + return ITEM_INTERACT_SUCCESS /obj/item/card/emag/magic_key name = "magic key" @@ -53,14 +50,15 @@ icon_state = "magic_key" origin_tech = "magnets=2" -/obj/item/card/emag/magic_key/afterattack__legacy__attackchain(atom/target, mob/user, proximity) +/obj/item/card/emag/magic_key/interact_with_atom(atom/target, mob/living/user, list/modifiers) if(!isairlock(target)) - return + return ITEM_INTERACT_BLOCKING var/obj/machinery/door/D = target D.locked = FALSE - update_icon() - . = ..() + D.update_icon() + D.emag_act(user) qdel(src) + return ITEM_INTERACT_SUCCESS /obj/item/card/cmag desc = "It's a card coated in a slurry of electromagnetic bananium." @@ -75,13 +73,9 @@ . = ..() AddComponent(/datum/component/slippery, src, 16 SECONDS, 100) -/obj/item/card/cmag/attack__legacy__attackchain() - return - -/obj/item/card/cmag/afterattack__legacy__attackchain(atom/target, mob/user, proximity) - if(!proximity) - return +/obj/item/card/cmag/interact_with_atom(atom/target, mob/living/user, list/modifiers) target.cmag_act(user) + return ITEM_INTERACT_SUCCESS /obj/item/card/id name = "identification card" @@ -117,6 +111,9 @@ var/dat var/stamped = 0 + /// Can we flash the ID? + var/can_id_flash = TRUE + var/obj/item/card/id/guest/guest_pass = null // Guest pass attached to the ID /obj/item/card/id/New() @@ -151,13 +148,11 @@ popup.set_content(dat) popup.open() -/obj/item/card/id/attack_self__legacy__attackchain(mob/user as mob) - user.visible_message("[user] shows you: [bicon(src)] [name]. The assignment on the card: [assignment]",\ - "You flash your ID card: [bicon(src)] [name]. The assignment on the card: [assignment]") - if(mining_points) - to_chat(user, "There's [mining_points] Mining Points loaded onto this card. This card has earned [total_mining_points] Mining Points this Shift!") - add_fingerprint(user) - return +/obj/item/card/id/activate_self/activate_self(mob/user) + if(..()) + return + if(can_id_flash) + flash_card(user) /obj/item/card/id/proc/UpdateName() name = "[registered_name]'s ID Card ([assignment])" @@ -751,7 +746,9 @@ access = list(ACCESS_FREE_GOLEMS, ACCESS_ROBOTICS, ACCESS_CLOWN, ACCESS_MIME, ACCESS_XENOBIOLOGY) //access to robots/mechs var/registered = FALSE -/obj/item/card/id/golem/attack_self__legacy__attackchain(mob/user as mob) +/obj/item/card/id/golem/activate_self(mob/user) + if(..()) + return if(!registered && ishuman(user)) registered_name = user.real_name SetOwnerInfo(user) @@ -760,9 +757,8 @@ UpdateName() desc = "A card used to claim mining points and buy gear." registered = TRUE + can_id_flash = TRUE to_chat(user, "The ID is now registered as yours.") - else - ..() /obj/item/card/id/data icon_state = "data" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 660934f55a128..ba96626bb6184 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -501,16 +501,17 @@ icon_state = "data" var/points = 500 -/obj/item/card/mining_point_card/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id)) +/obj/item/card/mining_point_card/attack_by(obj/item/attacking, mob/user, params) + if(..()) + return FINISH_ATTACK + if(istype(attacking, /obj/item/card/id)) if(points) - var/obj/item/card/id/C = I + var/obj/item/card/id/C = attacking C.mining_points += points to_chat(user, "You transfer [points] points to [C].") points = 0 else to_chat(user, "There's no points left on [src].") - ..() /obj/item/card/mining_point_card/examine(mob/user) . = ..()