Files
Leland KembleandGitHub b3c74dca2d Moves a plethora of things from attackby() to item_interaction() (#96726)
## About The Pull Request

50 files. Sorry about that, I was faster today. Just merge without
looking, it'll be fine.

This is the end of `/machinery/` & `/stack/` `attackby()`s(that aren't
actually meant for being attacked) when these are all merged.
Like, 200 left? I think? 

Also, this one will make light replacer reloading slightly more
difficult until whichever one converted the light replacer is merged.
If, for some ungodly reason, this one gets merged first.

Changes beyond conversion:

if a `/porta_turret_construct` somehow became anchored out of sync with
its construction steps, it's no longer softlocked
you can no longer place an infinite amount of blackboxes into the
blackbox recorder
a TTV will no longer keep its ghost on your back when you cut its wires
while wearing it
RCLs will properly update their appearance when initially given their
first coil
The creator of `robot_suit/attackby()` has been cursed to spend a
thousand years in the lake of fire

## Why It's Good For The Game

Now that all of these are remade, you can find bugs in them and then get
GBP for fixing them(not that my code would ever have bugs).

## Changelog
🆑

fix: It's no longer possible to softlock building a turret(if it ever
was)
fix: you can no longer stuff the blackbox recorder full with as many
blackboxes as you've somehow collected
fix: TTVs will no longer remain on your back as a ghost when you cut
their wire straps
fix: RCLs will now properly update their appearance when given their
first coil of cleaners
code: 50 files have been converted from attackby() to item_interaction()
/🆑
2026-07-02 06:10:46 +02:00

50 lines
2.0 KiB
Plaintext

/obj/item/tail_pin
icon = 'icons/obj/poster.dmi'
icon_state = "tailpin"
name = "tail pin"
desc = "Officially branded 'pin the tail on the corgi' style party implement. Not intended to be used on people."
force = 0
w_class = WEIGHT_CLASS_SMALL
throwforce = 0
throw_speed = 1
custom_materials = list(/datum/material/iron= HALF_SHEET_MATERIAL_AMOUNT)
hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("pokes", "jabs", "pins the tail on")
attack_verb_simple = list("poke", "jab")
sharpness = SHARP_POINTY
max_integrity = 200
layer = CORGI_ASS_PIN_LAYER
embed_type = /datum/embedding/corgi_pin
/datum/embedding/corgi_pin
pain_chance = 0
jostle_pain_mult = 0
ignore_throwspeed_threshold = TRUE
/obj/item/poster/tail_board
name = "party game poster"
poster_type = /obj/structure/sign/poster/party_game
icon_state = "rolled_poster"
/obj/structure/sign/poster/party_game
name = "pin the tail on the corgi"
desc = "The rules are simple, pin the tail on the corgi, while blindfolded. Are you a bad enough dude to hit the target?"
icon_state = "pinningposter"
poster_item_name = "party game poster"
poster_item_desc = "Place it on a wall to start playing pin the tail on the corgi."
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/party_game, 32)
/obj/structure/sign/poster/party_game/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if(!istype(tool, /obj/item/tail_pin))//We're using the same trick that tables use for placing objects x and y onto the click location.
return NONE
var/x_offset = 0
var/y_offset = 0
if(LAZYACCESS(modifiers, ICON_X) && LAZYACCESS(modifiers, ICON_Y))
x_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(ICON_SIZE_X/2), ICON_SIZE_X/2)
y_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(ICON_SIZE_Y/2), ICON_SIZE_Y/2)
if(!user.transfer_item_to_turf(tool, drop_location(), x_offset, y_offset, silent = FALSE))
return ITEM_INTERACT_BLOCKING
return ITEM_INTERACT_SUCCESS