/mob/living/silicon/robot/drone/mining icon_state = "miningdrone" law_type = /datum/ai_laws/mining_drone module_type = /obj/item/weapon/robot_module/mining_drone/basic holder_type = /obj/item/weapon/holder/drone/mining maxHealth = 45 health = 45 pass_flags = PASSTABLE req_access = list(access_mining, access_robotics) idcard_type = /obj/item/weapon/card/id/minedrone speed = -1 range_limit = 0 var/health_upgrade var/ranged_upgrade var/melee_upgrade var/drill_upgrade /mob/living/silicon/robot/drone/mining/Initialize() . = ..() verbs += /mob/living/proc/hide remove_language("Robot Talk") add_language("Drone Talk", 1) //They are unable to be upgraded, so let's give them a bit of a better battery. cell.maxcharge = 10000 cell.charge = 10000 // NO BRAIN. mmi = null //We need to screw with their HP a bit. They have around one fifth as much HP as a full borg. for(var/V in components) if(V != "power cell") var/datum/robot_component/C = components[V] C.max_damage = 15 verbs -= /mob/living/silicon/robot/verb/Namepick verbs -= /mob/living/silicon/robot/drone/verb/set_mail_tag updateicon() density = 0 /mob/living/silicon/robot/drone/mining/updatename() real_name = "NT-I-[rand(100,999)]" name = real_name /mob/living/silicon/robot/drone/mining/init() aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src) additional_law_channels["Drone"] = ":d" if(!laws) laws = new law_type if(!module) module = new module_type(src) if(!jetpack) jetpack = new /obj/item/weapon/tank/jetpack/carbondioxide/synthetic(src) flavor_text = "It's a tiny little mining drone. The casing is stamped with an corporate logo and the subscript: '[current_map.company_name] Automated Pickaxe!'" playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) /mob/living/silicon/robot/drone/mining/request_player() if(too_many_active_drones()) return var/datum/ghosttrap/G = get_ghost_trap("mining drone") G.request_player(src, "Someone is attempting to reboot a mining drone.", 30 SECONDS) /mob/living/silicon/robot/drone/mining/welcome_drone() src << "You are a mining drone, a tiny-brained robotic industrial machine." src << "You have little individual will, some personality, and no drives or urges other than your laws and the art of mining." src << "Remember, you DO NOT take orders from the AI." src << "Use say ;Hello to talk to other drones and say Hello to speak silently to your nearby fellows." /mob/living/silicon/robot/drone/mining/attackby(var/obj/item/weapon/W, var/mob/user) if(istype(W, /obj/item/borg/upgrade/)) user << "\The [src] is not compatible with \the [W]." return else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) var/choice = input("Select your choice.") in list("Reboot","Recycle") if(choice=="Reboot") if(!config.allow_drone_spawn || emagged || health < -maxHealth) //It's dead, Dave. user << "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one." return if(!allowed(usr)) user << "Access denied." return user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.") request_player() return else var/obj/item/weapon/card/id/ID = W if(!allowed(usr)) user << "Access denied." return user.visible_message("\The [user] swipes \his ID card through \the [src], recycling it into points.", ">You swipe your ID card through \the [src], recycling it into points.") ID.mining_points += 800 if(health_upgrade) ID.mining_points += 600 health_upgrade = 0 if(ranged_upgrade) ID.mining_points += 600 ranged_upgrade = 0 if(melee_upgrade) ID.mining_points += 400 melee_upgrade = 0 if(drill_upgrade) ID.mining_points += 2000 drill_upgrade = 0 qdel(src) return ..() /mob/living/silicon/robot/drone/mining/verb/print_report() set name = "Print Message" set desc = "Print out a status report of your own choosing." set category = "Robot Commands" var/input = sanitize(input(usr, "Please enter a message to print out. NOTE: BBCode does not work.", "Print readout", "") as message|null) if (!input) usr << "Cancelled." return var/customname = input(usr, "Pick a title for the report", "Title") as text|null if (!customname) usr << "Cancelled." return var/status_report switch(src.health) if((maxHealth - (maxHealth/3)) to maxHealth) status_report = "All systems nominal." if((maxHealth/3) to maxHealth/2) status_report = "Systems compromised." if(0 to (maxHealth/3)) status_report = "Systems failing." else status_report = "System status unknown." // Create the reply message usr << "You begin printing the message." if(do_after(src,20)) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc) P.name = "mining report - [customname]" P.info = {"
