diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm
index 5129d969539..17c88401fdc 100644
--- a/code/modules/cargo/bounties/assistant.dm
+++ b/code/modules/cargo/bounties/assistant.dm
@@ -110,13 +110,6 @@
reward = 1500
wanted_types = list(/obj/item/stack/sheet/animalhide/monkey)
-/datum/bounty/item/assistant/shard
- name = "Shards"
- description = "A killer clown has been stalking CentCom, and staff have been unable to catch her because she's not wearing shoes. Please ship some shards so that a booby trap can be constructed."
- reward = 1500
- required_count = 15
- wanted_types = list(/obj/item/shard)
-
/datum/bounty/item/assistant/comfy_chair
name = "Comfy Chairs"
description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him."
diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm
index c1287d130f8..4c79d3c3c62 100644
--- a/code/modules/cargo/bounties/science.dm
+++ b/code/modules/cargo/bounties/science.dm
@@ -1,72 +1,86 @@
-/datum/bounty/item/science/boh
- name = "Bag of Holding"
- description = "Nanotrasen would make good use of high-capacity backpacks. If you have any, please ship them."
- reward = 10000
- wanted_types = list(/obj/item/storage/backpack/holding)
-/datum/bounty/item/science/tboh
- name = "Trash Bag of Holding"
- description = "Nanotrasen would make good use of high-capacity trash bags. If you have any, please ship them."
- reward = 10000
- wanted_types = list(/obj/item/storage/bag/trash/bluespace)
+/datum/bounty/item/science/relic
+ name = "E.X.P.E.R.I-MENTORially Discovered Devices"
+ description = "Psst, hey. Don't tell the assistants, but we're undercutting them on the value of those 'strange objects' they've been finding. Fish one up and send us a discovered one by using the E.X.P.E.R.I-MENTOR."
+ reward = 4000
+ wanted_types = list(/obj/item/relic)
-/datum/bounty/item/science/bluespace_syringe
- name = "Bluespace Syringe"
- description = "Nanotrasen would make good use of high-capacity syringes. If you have any, please ship them."
- reward = 10000
- wanted_types = list(/obj/item/reagent_containers/syringe/bluespace)
-
-/datum/bounty/item/science/bluespace_body_bag
- name = "Bluespace Body Bag"
- description = "Nanotrasen would make good use of high-capacity body bags. If you have any, please ship them."
- reward = 10000
- wanted_types = list(/obj/item/bodybag/bluespace)
-
-/datum/bounty/item/science/nightvision_goggles
- name = "Night Vision Goggles"
- description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?"
- reward = 10000
- wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night)
-
-/datum/bounty/item/science/experimental_welding_tool
- name = "Experimental Welding Tool"
- description = "A recent accident has left most of CentCom's welding tools exploded. Ship replacements to be rewarded."
- reward = 10000
- required_count = 3
- wanted_types = list(/obj/item/weldingtool/experimental)
-
-/datum/bounty/item/science/cryostasis_beaker
- name = "Cryostasis Beaker"
- description = "Chemists at Central Command have discovered a new chemical that can only be held in cryostasis beakers. The only problem is they don't have any! Rectify this to receive payment."
- reward = 10000
- wanted_types = list(/obj/item/reagent_containers/glass/beaker/noreact)
-
-/datum/bounty/item/science/diamond_drill
- name = "Diamond Mining Drill"
- description = "Central Command is willing to pay three months salary in exchange for one diamond mining drill."
- reward = 15000
- wanted_types = list(/obj/item/pickaxe/drill/diamonddrill, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill)
-
-/datum/bounty/item/science/floor_buffer
- name = "Floor Buffer Upgrade"
- description = "One of CentCom's janitors made a small fortune betting on carp races. Now they'd like to commission an upgrade to their floor buffer."
- reward = 10000
- wanted_types = list(/obj/item/janiupgrade)
-
-/datum/bounty/item/science/advanced_mop
- name = "Advanced Mop"
- description = "Excuse me. I'd like to request 17 cr for a push broom rebristling. Either that, or an advanced mop."
- reward = 10000
- wanted_types = list(/obj/item/mop/advanced)
-
-/datum/bounty/item/science/advanced_egun
- name = "Advanced Energy Gun"
- description = "With the price of rechargers on the rise, upper management is interested in purchasing guns that are self-powered. If you ship one, they'll pay."
- reward = 10000
- wanted_types = list(/obj/item/gun/energy/e_gun/nuclear)
+/datum/bounty/item/science/relic/applies_to(obj/O)
+ if(!..())
+ return FALSE
+ var/obj/item/relic/experiment = O
+ if(experiment.revealed)
+ return TRUE
+ return
/datum/bounty/item/science/bepis_disc
name = "Reformatted Tech Disk"
description = "It turns out the diskettes the BEPIS prints experimental nodes on are extremely space-efficient. Send us one of your spares when you're done with it."
reward = 4000
- wanted_types = list(/obj/item/disk/tech_disk/major)
+ wanted_types = list(/obj/item/disk/tech_disk/major, /obj/item/disk/tech_disk/spaceloot)
+
+/datum/bounty/item/science/genetics
+ name = "Genetics Disability Mutator"
+ description = "Understanding the humanoid genome is the first step to curing many spaceborn genetic defects, and exceeding our basest limits."
+ reward = 1000
+ wanted_types = list(/obj/item/dnainjector)
+ ///What's the instability
+ var/desired_instability = 0
+
+/datum/bounty/item/science/genetics/New()
+ . = ..()
+ desired_instability = rand(10,40)
+ reward += desired_instability * 100
+ description += " We want a DNA injector whose total instability is higher than [desired_instability] points."
+
+/datum/bounty/item/science/genetics/applies_to(obj/O)
+ if(!..())
+ return FALSE
+ var/obj/item/dnainjector/mutator = O
+ if(mutator.used)
+ return FALSE
+ var/inst_total = 0
+ for(var/pot_mut in mutator.add_mutations)
+ var/datum/mutation/human/mutation = pot_mut
+ if(initial(mutation.quality) != POSITIVE)
+ continue
+ inst_total += mutation.instability
+ if(inst_total >= desired_instability)
+ return TRUE
+ return FALSE
+
+//******Modular Computer Bounties******
+/datum/bounty/item/science/NTNet
+ name = "Modular Tablets"
+ description = "Turns out that NTNet wasn't actually a fad afterall, who knew. Ship us some fully constructed tablets and send it turned on."
+ reward = 3000
+ required_count = 4
+ wanted_types = list(/obj/item/modular_computer/tablet)
+
+/datum/bounty/item/science/NTNet/laptops
+ name = "Modular Laptops"
+ description = "Central command brass need something more powerful than a tablet, but more portable than a console. Help these old fogeys out by shipping us some working laptops. Send it turned on."
+ reward = 1500
+ required_count = 2
+ wanted_types = list(/obj/item/modular_computer/laptop)
+
+/datum/bounty/item/science/NTNet/console
+ name = "Modular Computer Console"
+ description = "Our big data devision needs more powerful hardware to play 'Outbomb Cuban Pe-', err, to closely monitor threats in your sector. Send us a working modular computer console."
+ reward = 3000
+ required_count = 1
+ wanted_types = list(/obj/machinery/modular_computer/console)
+
+/datum/bounty/item/science/NTnet/applies_to(obj/O)
+ . = ..()
+ var/obj/item/modular_computer/computer = O
+ if(computer.enabled)
+ return TRUE
+ return TRUE
+
+/datum/bounty/item/science/NTnet/console/applies_to(obj/O)
+ var/obj/machinery/modular_computer/console/computer = O
+ if(computer.cpu)
+ return TRUE
+ return FALSE
+
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 3ee4d456bcc..0095adbf791 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -195,7 +195,7 @@
to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.")
else
to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.")
- return
+ return FALSE
// If we have a recharger, enable it automatically. Lets computer without a battery work.
var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE]
@@ -210,11 +210,13 @@
enabled = 1
update_icon()
ui_interact(user)
+ return TRUE
else // Unpowered
if(issynth)
to_chat(user, "You send an activation signal to \the [src] but it does not respond.")
else
to_chat(user, "You press the power button but \the [src] does not respond.")
+ return FALSE
// Process currently calls handle_power(), may be expanded in future if more things are added.
/obj/item/modular_computer/process(delta_time)