diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm new file mode 100644 index 0000000000..17c66cac10 --- /dev/null +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -0,0 +1,108 @@ +/obj/item/weapon/cartridge/virus + name = "Generic Virus PDA cart" + var/charges = 5 + +/obj/item/weapon/cartridge/virus/proc/send_virus(obj/item/device/pda/target, mob/living/U) + return + +/obj/item/weapon/cartridge/virus/message_header() + return "[charges] viral files left.
" + +/obj/item/weapon/cartridge/virus/message_special(obj/item/device/pda/target) + if (!istype(loc, /obj/item/device/pda)) + return "" //Sanity check, this shouldn't be possible. + return " (*Send Virus*)" + +/obj/item/weapon/cartridge/virus/special(mob/living/user, list/params) + var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. + send_virus(P,user) + +/obj/item/weapon/cartridge/virus/clown + name = "\improper Honkworks 5.0 cartridge" + icon_state = "cart-clown" + desc = "A data cartridge for portable microcomputers. It smells vaguely of banannas" + access_clown = 1 + +/obj/item/weapon/cartridge/virus/clown/send_virus(obj/item/device/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, "Out of charges.") + return + if(!isnull(target) && !target.toff) + charges-- + to_chat(U, "Virus Sent!") + target.honkamt = (rand(15,20)) + else + to_chat(U, "PDA not found.") + +/obj/item/weapon/cartridge/virus/mime + name = "\improper Gestur-O 1000 cartridge" + icon_state = "cart-mi" + access_mime = 1 + +/obj/item/weapon/cartridge/virus/mime/send_virus(obj/item/device/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, "Out of charges.") + return + if(!isnull(target) && !target.toff) + charges-- + to_chat(U, "Virus Sent!") + target.silent = 1 + target.ttone = "silence" + else + to_chat(U, "PDA not found.") + +/obj/item/weapon/cartridge/virus/syndicate + name = "\improper Detomatix cartridge" + icon_state = "cart" + access_remote_door = 1 + remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing. + charges = 4 + +/obj/item/weapon/cartridge/virus/syndicate/send_virus(obj/item/device/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, "Out of charges.") + return + if(!isnull(target) && !target.toff) + charges-- + var/difficulty = 0 + if(target.cartridge) + difficulty += target.cartridge.access_medical + difficulty += target.cartridge.access_security + difficulty += target.cartridge.access_engine + difficulty += target.cartridge.access_clown + difficulty += target.cartridge.access_janitor + difficulty += target.cartridge.access_manifest * 2 + else + difficulty += 2 + if(prob(difficulty * 15) || (target.hidden_uplink)) + U.show_message("An error flashes on your [src].", 1) + else + U.show_message("Success!", 1) + target.explode() + else + to_chat(U, "PDA not found.") + +/obj/item/weapon/cartridge/virus/frame + name = "\improper F.R.A.M.E. cartridge" + icon_state = "cart" + var/telecrystals = 0 + +/obj/item/weapon/cartridge/virus/frame/send_virus(obj/item/device/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, "Out of charges.") + return + if(!isnull(target) && !target.toff) + charges-- + var/lock_code = "[rand(100,999)] [pick("Alpha","Bravo","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliet","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whiskey","X-ray","Yankee","Zulu")]" + to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") + if(!target.hidden_uplink) + var/obj/item/device/uplink/uplink = new(target) + target.hidden_uplink = uplink + target.lock_code = lock_code + else + target.hidden_uplink.hidden_crystals += target.hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. + target.hidden_uplink.telecrystals = telecrystals + telecrystals = 0 + target.hidden_uplink.active = TRUE + else + to_chat(U, "PDA not found.") diff --git a/icons/effects/throw_target.dmi b/icons/effects/throw_target.dmi new file mode 100644 index 0000000000..660eafbf2b Binary files /dev/null and b/icons/effects/throw_target.dmi differ diff --git a/sound/voice/ApproachingTG.ogg b/sound/voice/ApproachingTG.ogg new file mode 100644 index 0000000000..bc4b6f5f21 Binary files /dev/null and b/sound/voice/ApproachingTG.ogg differ