/obj/item/melee/touch_attack name = "outstretched hand" desc = "High Five?" var/catchphrase = "High Five!" var/on_use_sound = null var/datum/spell/touch/attached_spell icon = 'icons/obj/weapons/magical_weapons.dmi' icon_state = "disintegrate" item_state = null flags = ABSTRACT | NODROP | DROPDEL w_class = WEIGHT_CLASS_HUGE force = 0 throwforce = 0 throw_range = 0 throw_speed = 0 /obj/item/melee/touch_attack/New(spell) attached_spell = spell ..() /obj/item/melee/touch_attack/Destroy() if(attached_spell) attached_spell.attached_hand = null attached_spell.UnregisterSignal(attached_spell.action.owner, COMSIG_MOB_WILLINGLY_DROP) return ..() /obj/item/melee/touch_attack/customised_abstract_text(mob/living/carbon/owner) return "[owner.p_their(TRUE)] [owner.l_hand == src ? "left hand" : "right hand"] is burning in magic fire." /obj/item/melee/touch_attack/attack(mob/target, mob/living/carbon/user) if(!iscarbon(user)) //Look ma, no hands return if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) to_chat(user, "You can't reach out!") return ..() /obj/item/melee/touch_attack/afterattack(atom/target, mob/user, proximity) if(catchphrase) user.say(catchphrase) playsound(get_turf(user), on_use_sound, 50, 1) if(attached_spell) attached_spell.perform(list()) qdel(src) /obj/item/melee/touch_attack/disintegrate name = "disintegrating touch" desc = "This hand of mine glows with an awesome power!" catchphrase = "EI NATH!!" on_use_sound = 'sound/magic/disintegrate.ogg' icon_state = "disintegrate" item_state = "disintegrate" /obj/item/melee/touch_attack/disintegrate/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //exploding after touching yourself would be bad return var/mob/M = target do_sparks(4, 0, M.loc) //no idea what the 0 is M.gib() ..() /obj/item/melee/touch_attack/fleshtostone name = "petrifying touch" desc = "That's the bottom line, because flesh to stone said so!" catchphrase = "STAUN EI!!" on_use_sound = 'sound/magic/fleshtostone.ogg' icon_state = "fleshtostone" item_state = "fleshtostone" /obj/item/melee/touch_attack/fleshtostone/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !isliving(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //getting hard after touching yourself would also be bad return var/mob/living/L = target L.Stun(4 SECONDS) new /obj/structure/closet/statue(L.loc, L) ..() /obj/item/melee/touch_attack/fake_disintegrate name = "toy plastic hand" desc = "This hand of mine glows with an awesome power! Ok, maybe just batteries." catchphrase = "EI NATH!!" on_use_sound = 'sound/magic/disintegrate.ogg' icon_state = "disintegrate" item_state = "disintegrate" needs_permit = FALSE /obj/item/melee/touch_attack/fake_disintegrate/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !ismob(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //not exploding after touching yourself would be bad return do_sparks(4, 0, target.loc) playsound(target.loc, 'sound/goonstation/effects/gib.ogg', 50, 1) ..() /obj/item/melee/touch_attack/cluwne name = "cluwne touch" desc = "It's time to start clowning around." catchphrase = "NWOLC EGNEVER" on_use_sound = 'sound/misc/sadtrombone.ogg' icon_state = "cluwnecurse" item_state = "cluwnecurse" /obj/item/melee/touch_attack/cluwne/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !ishuman(target) || !iscarbon(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //clowning around after touching yourself would unsurprisingly, be bad return if(iswizard(target)) to_chat(user, "The spell has no effect on [target].") return var/datum/effect_system/smoke_spread/s = new s.set_up(5, FALSE, target) s.start() var/mob/living/carbon/human/H = target if(H.mind) if(H.mind.assigned_role != "Cluwne") H.makeCluwne() else H.makeAntiCluwne() ..()