diff --git a/code/datums/spells/spacetime_dist.dm b/code/datums/spells/spacetime_dist.dm index 9d7b09c1629..da95d214f68 100644 --- a/code/datums/spells/spacetime_dist.dm +++ b/code/datums/spells/spacetime_dist.dm @@ -122,11 +122,12 @@ if(!cant_teleport) walk_link(entered) -/obj/effect/cross_action/spacetime_dist/attackby__legacy__attackchain(obj/item/W, mob/user, params) - if(user.drop_item(W)) - walk_link(W) +/obj/effect/cross_action/spacetime_dist/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(user.drop_item(used)) + walk_link(used) else walk_link(user) + return ITEM_INTERACT_COMPLETE //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/effect/cross_action/spacetime_dist/attack_hand(mob/user, list/modifiers) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 2c51ad4dd04..573938a4076 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -811,13 +811,12 @@ if(target) exit = new /obj/effect/cult_portal_exit(target) -/obj/effect/portal/cult/attackby__legacy__attackchain(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user) || istype(I, /obj/item/nullrod) && HAS_MIND_TRAIT(user, TRAIT_HOLY)) - to_chat(user, "You close the portal with your [I].") +/obj/effect/portal/cult/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if((istype(used, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user)) || (istype(used, /obj/item/nullrod) && HAS_MIND_TRAIT(user, TRAIT_HOLY))) + to_chat(user, "You close the portal with your [used].") playsound(src, 'sound/magic/magic_missile.ogg', 100, TRUE) qdel(src) - return - return ..() + return ITEM_INTERACT_COMPLETE /obj/effect/portal/cult/Destroy() QDEL_NULL(exit) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 6639c11dcc1..8f3d4fb3395 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -75,27 +75,28 @@ To draw a rune, use a ritual dagger. if(req_keyword && keyword) . += "Keyword: [keyword]" -/obj/effect/rune/attackby__legacy__attackchain(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user)) +/obj/effect/rune/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user)) if(!can_dagger_erase_rune(user)) - return + return ITEM_INTERACT_COMPLETE - var/obj/item/melee/cultblade/dagger/D = I - user.visible_message("[user] begins to erase [src] with [I].") - if(do_after(user, initial(scribe_delay) * D.scribe_multiplier, target = src)) + var/obj/item/melee/cultblade/dagger/dagger = used + user.visible_message("[user] begins to erase [src] with [dagger].") + if(do_after(user, initial(scribe_delay) * dagger.scribe_multiplier, target = src)) to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") qdel(src) - return - if(istype(I, /obj/item/nullrod)) - if(IS_CULTIST(user))//cultist..what are doing..cultist..staph... + return ITEM_INTERACT_COMPLETE + + if(istype(used, /obj/item/nullrod)) + var/obj/item/nullrod/nullrod = used + if(IS_CULTIST(user)) // cultist..what are doing..cultist..staph... user.drop_item() - user.visible_message("[I] suddenly glows with a white light, forcing [user] to drop it in pain!", \ - "[I] suddenly glows with a white light that sears your hand, forcing you to drop it!") // TODO: Make this actually burn your hand - return - to_chat(user,"You disrupt the magic of [src] with [I].") + user.visible_message("[nullrod] suddenly glows with a white light, forcing [user] to drop it in pain!", \ + "[nullrod] suddenly glows with a white light that sears your hand, forcing you to drop it!") // TODO: Make this actually burn your hand + return ITEM_INTERACT_COMPLETE + to_chat(user,"You disrupt the magic of [src] with [nullrod].") qdel(src) - return - return ..() + return ITEM_INTERACT_COMPLETE /obj/effect/rune/proc/can_dagger_erase_rune(mob/user) return TRUE @@ -1097,11 +1098,11 @@ structure_check() searches for nearby cultist structures required for the invoca sleep(40) new /obj/singularity/narsie/large(T) //Causes Nar'Sie to spawn even if the rune has been removed -/obj/effect/rune/narsie/attackby__legacy__attackchain(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. - if((istype(I, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user))) +/obj/effect/rune/narsie/item_interaction(mob/living/user, obj/item/used, list/modifiers) + . = ..() + if((istype(used, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user))) log_game("Summon Narsie rune erased by [key_name(user)] with a cult dagger") message_admins("[key_name_admin(user)] erased a Narsie rune with a cult dagger") - if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. + if(istype(used, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. log_game("Summon Narsie rune erased by [key_name(user)] using a null rod") message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod") - return ..() diff --git a/code/game/gamemodes/miniantags/guardian/types/protector.dm b/code/game/gamemodes/miniantags/guardian/types/protector.dm index 756b4489bde..09bc1a9fd3b 100644 --- a/code/game/gamemodes/miniantags/guardian/types/protector.dm +++ b/code/game/gamemodes/miniantags/guardian/types/protector.dm @@ -137,10 +137,13 @@ P.on_hit(src, 0) return FALSE -/obj/effect/guardianshield/attacked_by__legacy__attackchain(obj/item/I, mob/living/user) - if(I.force) - user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") - linked_guardian.apply_damage(I.force, I.damtype) +/obj/effect/guardianshield/attack_by(obj/item/attacking, mob/user, params) + if(..() || !attacking.force) + return FINISH_ATTACK + + user.visible_message("[user] has hit [src] with [attacking]!", "You hit [src] with [attacking]!") + linked_guardian.apply_damage(attacking.force, attacking.damtype) + return FINISH_ATTACK /obj/effect/guardianshield/Destroy() linked_guardian = null diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index e4f6698fe30..74512ccd272 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -128,12 +128,11 @@ if(spawn_amt_left <= 0) qdel(src) -/obj/effect/rend/attackby__legacy__attackchain(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/nullrod)) - user.visible_message("[user] seals \the [src] with \the [I].") +/obj/effect/rend/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/nullrod)) + user.visible_message("[user] seals \the [src] with \the [used].") qdel(src) - return - return ..() + return ITEM_INTERACT_COMPLETE /obj/effect/rend/singularity_pull() return diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 47df4e68266..1fd8b980ca0 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -94,9 +94,10 @@ // Else, anomaly core gets deleted by qdel(src). qdel(src) -/obj/effect/anomaly/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/analyzer)) +/obj/effect/anomaly/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/analyzer)) to_chat(user, "Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].") + return ITEM_INTERACT_COMPLETE /obj/effect/anomaly/grav name = "gravitational anomaly" diff --git a/code/game/objects/effects/decals/Cleanable/tar.dm b/code/game/objects/effects/decals/Cleanable/tar.dm index 0b76030ca1d..9b2e0c2ee9f 100644 --- a/code/game/objects/effects/decals/Cleanable/tar.dm +++ b/code/game/objects/effects/decals/Cleanable/tar.dm @@ -38,11 +38,13 @@ playsound(L, 'sound/effects/attackblob.ogg', 50, TRUE) to_chat(L, "[src] sticks to you!") -/obj/effect/decal/cleanable/tar/attackby__legacy__attackchain(obj/item/welder, mob/living/user, params) - if(!welder.get_heat() || !Adjacent(user)) - return - playsound(welder, 'sound/items/welder.ogg', 50, TRUE) +/obj/effect/decal/cleanable/tar/item_interaction(mob/living/user, obj/item/used, list/modifiers) + var/obj/item/weldingtool/fire_tool = used + if(!fire_tool.get_heat() || !Adjacent(user)) + return ITEM_INTERACT_COMPLETE + playsound(fire_tool, 'sound/items/welder.ogg', 50, TRUE) if(do_after(user, 3 SECONDS, FALSE, user)) - if(welder.get_heat() && Adjacent(user)) - user.visible_message("[user] burns away [src] with [welder]!", "You burn away [src]!") + if(fire_tool.get_heat() && Adjacent(user)) + user.visible_message("[user] burns away [src] with [fire_tool]!", "You burn away [src]!") qdel(src) + return ITEM_INTERACT_COMPLETE diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 369f892c511..9d19c02bfc4 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -8,6 +8,7 @@ move_resist = INFINITY anchored = TRUE can_be_hit = FALSE + new_attack_chain = TRUE /obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) return @@ -103,11 +104,12 @@ if(desc) . += desc -/obj/effect/decal/attackby__legacy__attackchain(obj/item/I, mob/user) - if(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/drinks)) - scoop(I, user) +/obj/effect/decal/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/reagent_containers/glass) || istype(used, /obj/item/reagent_containers/drinks)) + scoop(used, user) else if(issimulatedturf(loc)) - I.melee_attack_chain(user, loc) + used.melee_attack_chain(user, loc) + return ITEM_INTERACT_COMPLETE /obj/effect/decal/attack_animal(mob/living/simple_animal/M) if(issimulatedturf(loc)) diff --git a/code/game/objects/effects/meteors.dm b/code/game/objects/effects/meteors.dm index de1020d61ce..7ed085c78ad 100644 --- a/code/game/objects/effects/meteors.dm +++ b/code/game/objects/effects/meteors.dm @@ -146,12 +146,11 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me /obj/effect/meteor/ex_act() return -/obj/effect/meteor/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/pickaxe)) +/obj/effect/meteor/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/pickaxe)) make_debris() qdel(src) - return - return ..() + return ITEM_INTERACT_COMPLETE /obj/effect/meteor/proc/make_debris() for(var/throws = dropamt, throws > 0, throws--) diff --git a/code/game/objects/effects/snowcloud.dm b/code/game/objects/effects/snowcloud.dm index b7e6d94769b..15e97223482 100644 --- a/code/game/objects/effects/snowcloud.dm +++ b/code/game/objects/effects/snowcloud.dm @@ -97,17 +97,15 @@ user.put_in_hands(SB) to_chat(user, "You scoop up some snow and make \a [SB]!") -/obj/effect/snow/attackby__legacy__attackchain(obj/item/I, mob/user) - if(istype(I, /obj/item/shovel)) - var/obj/item/shovel/S = I +/obj/effect/snow/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/shovel)) + var/obj/item/shovel/shovel = used user.visible_message("[user] is clearing away [src]...", "You begin clearing away [src]...", "You hear a wettish digging sound.") - playsound(loc, S.usesound, 50, TRUE) - if(!do_after(user, 50 * S.toolspeed, target = src)) - return - user.visible_message("[user] clears away [src]!", "You clear away [src]!") - qdel(src) - else - return ..() + playsound(loc, shovel.usesound, 50, TRUE) + if(do_after(user, 50 * shovel.toolspeed, target = src)) + user.visible_message("[user] clears away [src]!", "You clear away [src]!") + qdel(src) + return ITEM_INTERACT_COMPLETE /obj/effect/snow/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) ..() diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index e10e4ed94a3..e11097b5c77 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -117,8 +117,10 @@ master = C master.active_dummy = src -/obj/effect/dummy/chameleon/attackby__legacy__attackchain() - for(var/mob/M in src) +/obj/effect/dummy/chameleon/attack_by(obj/item/attacking, mob/user, params) + if(..()) + return FINISH_ATTACK + for(var/mob/M in src) to_chat(M, "Your [src] deactivates.") master.disrupt() @@ -186,8 +188,8 @@ item_state = "electronic" w_class = WEIGHT_CLASS_SMALL var/active = FALSE - var/activationCost = 300 - var/activationUpkeep = 50 + var/activation_cost = 300 + var/activation_upkeep = 50 var/image/disguise var/mob/living/silicon/robot/syndicate/saboteur/S @@ -205,13 +207,13 @@ disrupt(user) /obj/item/borg_chameleon/attack_self__legacy__attackchain(mob/living/silicon/robot/syndicate/saboteur/user) - if(user && user.cell && user.cell.charge > activationCost) + if(user && user.cell && user.cell.charge > activation_cost) if(isturf(user.loc)) toggle(user) else to_chat(user, "You can't use [src] while inside something!") else - to_chat(user, "You need at least [activationCost] charge in your cell to use [src]!") + to_chat(user, "You need at least [activation_cost] charge in your cell to use [src]!") /obj/item/borg_chameleon/proc/toggle(mob/living/silicon/robot/syndicate/saboteur/user) if(active) @@ -220,7 +222,7 @@ return to_chat(user, "You activate [src].") apply_wibbly_filters(user) - if(do_after(user, 5 SECONDS, target = user) && user.cell.use(activationCost)) + if(do_after(user, 5 SECONDS, target = user) && user.cell.use(activation_cost)) activate(user) else to_chat(user, "The chameleon field fizzles.") @@ -229,7 +231,7 @@ /obj/item/borg_chameleon/process() if(S) - if(!S.cell || !S.cell.use(activationUpkeep)) + if(!S.cell || !S.cell.use(activation_upkeep)) disrupt(S) return return PROCESS_KILL diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 39f65ff0512..2b5d141bb57 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -39,19 +39,16 @@ return to_chat(user, "You can't move.") -/obj/effect/spresent/attackby__legacy__attackchain(obj/item/W as obj, mob/user as mob, params) - ..() - - if(!istype(W, /obj/item/wirecutters)) +/obj/effect/spresent/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(!istype(used, /obj/item/wirecutters)) to_chat(user, "I need wirecutters for that.") - return + return ITEM_INTERACT_COMPLETE to_chat(user, "You cut open the present.") - for(var/mob/M in src) //Should only be one but whatever. M.forceMove(loc) - qdel(src) + return ITEM_INTERACT_COMPLETE /obj/item/a_gift/attack_self__legacy__attackchain(mob/M as mob) var/gift_type = pick( diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 2f6fa9e2a2b..7d6a684df85 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -43,7 +43,7 @@ return if(istype(O, /obj/structure/janitorialcart)) - var/obj/structure/janitorialcart/janicart = O + var/obj/structure/janitorialcart/janicart = O if(!janicart.my_mop) janicart.my_mop = src janicart.put_in_cart(user, src) @@ -104,7 +104,7 @@ /// Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_enabled = TRUE /// Rate per process() tick mop refills itself - var/refill_rate = 1 + var/refill_rate = 1 /// Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING var/refill_reagent = "water" @@ -115,7 +115,7 @@ /obj/item/mop/advanced/activate_self(mob/user) if(..()) return - + refill_enabled = !refill_enabled if(refill_enabled) START_PROCESSING(SSobj, src) diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm index 7d69d469a3a..c77e7fb2e03 100644 --- a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm +++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm @@ -166,16 +166,13 @@ create(ckey = user.ckey, name = user.real_name) user.death() -/obj/effect/mob_spawn/human/alive/golem/attackby__legacy__attackchain(obj/item/I, mob/living/carbon/user, params) - if(!istype(I, /obj/item/slimepotion/transference)) - return ..() - if(iscarbon(user) && can_transfer) +/obj/effect/mob_spawn/human/alive/golem/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/slimepotion/transference) && iscarbon(user) && can_transfer) var/human_transfer_choice = tgui_alert(user, "Transfer your soul to [src]? (Warning, your old body will die!)", "Respawn", list("Yes", "No")) - if(human_transfer_choice != "Yes") - return - if(QDELETED(src) || uses <= 0 || user.stat >= 1 || QDELETED(I)) - return - handle_becoming_golem(I, user) + if(human_transfer_choice != "Yes" || QDELETED(src) || uses <= 0 || user.stat >= 1 || QDELETED(used)) + return ITEM_INTERACT_COMPLETE + handle_becoming_golem(used, user) + return ITEM_INTERACT_COMPLETE /obj/effect/mob_spawn/human/alive/golem/proc/handle_becoming_golem(obj/item/I, mob/living/carbon/user) if(isgolem(user) && can_transfer) diff --git a/code/modules/hallucinations/effects/common.dm b/code/modules/hallucinations/effects/common.dm index cecbe2c1686..dafdc3cf139 100644 --- a/code/modules/hallucinations/effects/common.dm +++ b/code/modules/hallucinations/effects/common.dm @@ -101,7 +101,7 @@ if(was_weakened && !should_attack_weakened) return - attack__legacy__attackchain(was_weakened) + attacker_attack(was_weakened) /** * Called every Think when we are attacking the target. @@ -109,7 +109,7 @@ * Arguments: * * was_weakened - Whether the target was already knocked down prior to this attack. */ -/obj/effect/hallucination/chaser/attacker/proc/attack__legacy__attackchain(was_weakened) +/obj/effect/hallucination/chaser/attacker/proc/attacker_attack(was_weakened) dir = get_dir(src, target) attack_effects() target.apply_damage(damage, STAMINA) diff --git a/code/modules/hallucinations/effects/major.dm b/code/modules/hallucinations/effects/major.dm index 8dda88c3ff4..8e59e6aa4bd 100644 --- a/code/modules/hallucinations/effects/major.dm +++ b/code/modules/hallucinations/effects/major.dm @@ -68,15 +68,15 @@ target.visible_message("[target] trips over nothing.", "You get stuck in [src]!") -/obj/effect/hallucination/tripper/spider_web/attackby__legacy__attackchain(obj/item/I, mob/user, params) +/obj/effect/hallucination/tripper/spider_web/item_interaction(mob/living/user, obj/item/used, list/modifiers) if(user != target) - return - + return ITEM_INTERACT_COMPLETE step_towards(target, get_turf(src)) target.Weaken(4 SECONDS) - target.visible_message("[target] flails [target.p_their()] [I.name] as if striking something, only to trip!", - "[src] vanishes as you strike it with [I], causing you to stumble forward!") + target.visible_message("[target] flails [target.p_their()] [used.name] as if striking something, only to trip!", + "[src] vanishes as you strike it with [used], causing you to stumble forward!") qdel(src) + return ITEM_INTERACT_COMPLETE /** * # Hallucination - Abduction diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 35eba5b0727..47ad887ff74 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -449,9 +449,6 @@ . = ..() ADD_TRAIT(src, TRAIT_EFFECT_CAN_TELEPORT, ROUNDSTART_TRAIT) -/obj/effect/immortality_talisman/attackby__legacy__attackchain() - return - /obj/effect/immortality_talisman/ex_act() return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 1e08fbd0655..5e74023c4e5 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -809,29 +809,28 @@ Difficulty: Hard /obj/effect/hierophant/ex_act() return -/obj/effect/hierophant/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/hierophant_club)) - var/obj/item/hierophant_club/H = I - if(H.timer > world.time) - return - if(H.beacon == src) +/obj/effect/hierophant/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/hierophant_club)) + var/obj/item/hierophant_club/club = used + if(club.timer > world.time) + return ITEM_INTERACT_COMPLETE + if(club.beacon == src) to_chat(user, "You start removing your hierophant beacon...") - H.timer = world.time + 51 - INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) + club.timer = world.time + 51 + INVOKE_ASYNC(club, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) if(do_after(user, 50, target = src)) playsound(src,'sound/magic/blind.ogg', 200, TRUE, -4) new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user) to_chat(user, "You collect [src], reattaching it to the club!") - H.beacon = null + club.beacon = null user.update_action_buttons_icon() qdel(src) else - H.timer = world.time - INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) + club.timer = world.time + INVOKE_ASYNC(club, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) else to_chat(user, "You touch the beacon with the club, but nothing happens.") - else - return ..() + return ITEM_INTERACT_COMPLETE /obj/item/gps/internal/hierophant icon_state = null