diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index b419d03b253..25cae33a914 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -67,6 +67,34 @@ return ..() +/obj/item/modular_computer/tablet/pre_attack(atom/target, mob/living/user, params) + if(!inserted_disk || !ismachinery(target)) + return ..() + + var/obj/machinery/target_machine = target + if(!target_machine.panel_open && !istype(target, /obj/machinery/computer)) + return ..() + + if(!istype(inserted_disk, /obj/item/computer_disk/virus/clown)) + return ..() + var/obj/item/computer_disk/virus/clown/installed_cartridge = inserted_disk + if(!installed_cartridge.charges) + to_chat(user, span_notice("Out of virus charges.")) + return ..() + + to_chat(user, span_notice("You upload the virus to [target]!")) + var/sig_list = list(COMSIG_ATOM_ATTACK_HAND) + if(istype(target,/obj/machinery/door/airlock)) + sig_list = list(COMSIG_AIRLOCK_OPEN, COMSIG_AIRLOCK_CLOSE) + + installed_cartridge.charges-- + target.AddComponent( + /datum/component/sound_player, \ + uses = rand(15,20), \ + signal_list = sig_list, \ + ) + return TRUE + /obj/item/modular_computer/tablet/interact(mob/user) . = ..() if(HAS_TRAIT(src, TRAIT_PDA_MESSAGE_MENU_RIGGED))