mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-31 20:53:34 +00:00
* refactor: Attack chain, initial setup. * migrate curtain to make dreamchecker happy * update thurible * don't call attacked_by separately for legacy attack chain * remove duplicate proc * condense similar code, put allowances for legacy code in new procs * update docs, include diagram source * add comment on how to update diagram * fix admonition * mindflayer updates * remove commented out code * clarify all steps * after_attack should be overridable * whoops * retrofit recent changes * duh, can't restrict this yet because of tool_acts * i hate ore bags with the fire of a thousand suns * return correct value for object attack logic * Various cleanups. We don't want to attempt to pull stuff out of `/obj/item/attackby`, because those pieces are part of the related objects' migrations, not `/obj/item` itself. Attempting to do this causes knockon effects where things expected to call e.g. `/obj/item/storage/attackby` in the call chain were not ferried over to the new item interaction code, because the related objects hadn't actually been migrated over yet. I've used refactoring /obj/vehicle as the example for migrating `attackby` methods instead. * simplify some argument names * fuck it * make it do the thing * Rename CI module call * Prove that CI works * improve test output * aaand fix it again * fix curtain tool interactions * fix compile error * fix compile error * Better docs, introduce migration plan tool.
52 lines
2.2 KiB
Plaintext
52 lines
2.2 KiB
Plaintext
/obj/item/scissors
|
|
name = "Scissors"
|
|
desc = "Those are scissors. Don't run with them!"
|
|
icon_state = "scissor"
|
|
item_state = "scissor"
|
|
force = 5
|
|
sharp = TRUE
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
attack_verb = list("slices", "cuts", "stabs", "jabs")
|
|
toolspeed = 1
|
|
|
|
/obj/item/scissors/barber
|
|
name = "Barber's Scissors"
|
|
desc = "A pair of scissors used by a barber."
|
|
icon_state = "bscissor"
|
|
item_state = "scissor"
|
|
attack_verb = list("beautifully sliced", "artistically cut", "smoothly stabbed", "quickly jabbed")
|
|
toolspeed = 0.75
|
|
|
|
/obj/item/scissors/attack__legacy__attackchain(mob/living/carbon/M as mob, mob/user as mob)
|
|
if(user.a_intent != INTENT_HELP)
|
|
..()
|
|
return
|
|
if(!(M in view(1))) //Adjacency test
|
|
..()
|
|
return
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
var/obj/item/organ/external/head/C = H.get_organ("head")
|
|
if(!C)
|
|
to_chat(user, "<span class='warning'>[M] doesn't have a head!</span>")
|
|
return
|
|
//facial hair
|
|
var/f_new_style = tgui_input_list(user, "Select a facial hair style", "Grooming", H.generate_valid_facial_hairstyles())
|
|
//handle normal hair
|
|
var/h_new_style = tgui_input_list(user, "Select a hair style", "Grooming", H.generate_valid_hairstyles())
|
|
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo)
|
|
playsound(loc, 'sound/goonstation/misc/scissor.ogg', 100, 1)
|
|
if(do_after(user, 50 * toolspeed, target = H)) //this is the part that adds a delay. delay is in deciseconds. --Made it 5 seconds, because hair isn't cut in one second in real life, and I want at least a little bit longer time, (TGameCo)
|
|
if(!(M in view(1))) //Adjacency test
|
|
user.visible_message("<span class='notice'>[user] stops cutting [M]'s hair.</span>", "<span class='notice'>You stop cutting [M]'s hair.</span>")
|
|
return
|
|
if(f_new_style)
|
|
C.f_style = f_new_style
|
|
if(h_new_style)
|
|
C.h_style = h_new_style
|
|
|
|
H.update_hair()
|
|
H.update_fhair()
|
|
user.visible_message("<span class='notice'>[user] finishes cutting [M]'s hair!</span>")
|