Files
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00

288 lines
12 KiB
Plaintext

// Bounties moved to modular zubbers folder so it isn't a commented out nightmare of individual removals.
/*
/datum/bounty/item/assistant/strange_object
name = "Strange Object"
description = "Nanotrasen has taken an interest in strange objects. Find one in maintenance, and ship it off to CentCom right away."
reward = CARGO_CRATE_VALUE * 2.4
wanted_types = list(/obj/item/relic = TRUE)
/datum/bounty/item/assistant/scooter
name = "Scooter"
description = "Nanotrasen has determined walking to be wasteful. Ship a scooter to CentCom to speed operations up."
reward = CARGO_CRATE_VALUE * 2.16 // the mat hoffman
wanted_types = list(/obj/vehicle/ridden/scooter = TRUE)
include_subtypes = FALSE
/datum/bounty/item/assistant/skateboard
name = "Skateboard"
description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up."
reward = CARGO_CRATE_VALUE * 1.8 // the tony hawk
wanted_types = list(
/obj/vehicle/ridden/scooter/skateboard = TRUE,
/obj/item/melee/skateboard = TRUE,
)
/datum/bounty/item/assistant/stunprod
name = "Stunprod"
description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it."
reward = CARGO_CRATE_VALUE * 2.6
wanted_types = list(/obj/item/melee/baton/security/cattleprod = TRUE)
/datum/bounty/item/assistant/soap
name = "Soap"
description = "Soap has gone missing from CentCom's bathrooms and nobody knows who took it. Replace it and be the hero CentCom needs."
reward = CARGO_CRATE_VALUE * 4
required_count = 3
wanted_types = list(/obj/item/soap = TRUE)
/datum/bounty/item/assistant/spear
name = "Spears"
description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears."
reward = CARGO_CRATE_VALUE * 4
required_count = 5
wanted_types = list(/obj/item/spear = TRUE)
/datum/bounty/item/assistant/toolbox
name = "Stocked Toolbox"
description = "There's an absence of robustness at Central Command. Ship them a fully packed toolbox as a solution, containing a screwdriver, wrench, welding tool, crowbar, analyzer, and wirecutters."
reward = CARGO_CRATE_VALUE * 4
wanted_types = list(/obj/item/storage/toolbox = TRUE)
/// List of tools that we want to see sorted into a toolbox
var/static/list/static_packing_list = list(
/obj/item/screwdriver,
/obj/item/wrench,
/obj/item/weldingtool,
/obj/item/crowbar,
/obj/item/analyzer,
/obj/item/wirecutters,
)
/datum/bounty/item/assistant/toolbox/applies_to(obj/shipped)
var/list/packing_list = static_packing_list.Copy()
for(var/obj/item_contents as anything in shipped.contents)
for(var/match_type in packing_list)
if(istype(item_contents, match_type))
packing_list -= match_type
break
if(!length(packing_list))
return ..()
return FALSE
/datum/bounty/item/assistant/toolbox/ship(obj/shipped)
. = ..()
for(var/obj/object as anything in shipped.contents)
if(!is_type_in_list(object, static_packing_list))
object.forceMove(shipped.drop_location())
/datum/bounty/item/assistant/statue
name = "Statue"
description = "Central Command would like to commission an artsy statue for the lobby. Ship one out, when possible."
reward = CARGO_CRATE_VALUE * 4
wanted_types = list(/obj/structure/statue = TRUE)
/datum/bounty/item/assistant/clown_box
name = "Clown Box"
description = "The universe needs laughter. Stamp cardboard with a clown stamp and ship it out."
reward = CARGO_CRATE_VALUE * 3
wanted_types = list(/obj/item/storage/box/clown = TRUE)
/datum/bounty/item/assistant/cheesiehonkers
name = "Cheesie Honkers"
description = "Apparently the company that makes Cheesie Honkers is going out of business soon. CentCom wants to stock up before it happens!"
reward = CARGO_CRATE_VALUE * 2.4
required_count = 3
wanted_types = list(/obj/item/food/cheesiehonkers = TRUE)
/datum/bounty/item/assistant/baseball_bat
name = "Baseball Bat"
description = "Baseball fever is going on at CentCom! Be a dear and ship them some baseball bats, so that management can live out their childhood dream."
reward = CARGO_CRATE_VALUE * 4
required_count = 5
wanted_types = list(/obj/item/melee/baseball_bat = TRUE)
/datum/bounty/item/assistant/extendohand
name = "Extendo-Hand"
description = "Commander Betsy is getting old, and can't bend over to get the telescreen remote anymore. Management has requested an extendo-hand to help her out."
reward = CARGO_CRATE_VALUE * 5
wanted_types = list(/obj/item/extendohand = TRUE)
/datum/bounty/item/assistant/donut
name = "Donuts"
description = "CentCom's security forces are facing heavy losses against the Syndicate. Ship donuts to raise morale."
reward = CARGO_CRATE_VALUE * 6
required_count = 6
wanted_types = list(/obj/item/food/donut = TRUE)
/datum/bounty/item/assistant/donkpocket
name = "Donk-Pockets"
description = "Consumer safety recall: Warning. Donk-Pockets manufactured in the past year contain hazardous lizard biomatter. Return units to CentCom immediately."
reward = CARGO_CRATE_VALUE * 6
required_count = 10
wanted_types = list(/obj/item/food/donkpocket = TRUE)
/datum/bounty/item/assistant/monkey_hide
name = "Monkey Hide"
description = "One of the scientists at CentCom is interested in testing products on monkey skin. Your mission is to acquire monkey's hide and ship it."
reward = CARGO_CRATE_VALUE * 3
wanted_types = list(/obj/item/stack/sheet/animalhide/carbon/monkey = TRUE)
/datum/bounty/item/assistant/dead_mice
name = "Dead Mice"
description = "Station 14 ran out of freeze-dried mice. Ship some fresh ones so their janitor doesn't go on strike."
reward = CARGO_CRATE_VALUE * 10
required_count = 5
wanted_types = list(/obj/item/food/deadmouse = TRUE)
/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."
reward = CARGO_CRATE_VALUE * 3
required_count = 5
wanted_types = list(/obj/structure/chair/comfy = TRUE)
/datum/bounty/item/assistant/geranium
name = "Geraniums"
description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you."
reward = CARGO_CRATE_VALUE * 8
required_count = 3
wanted_types = list(/obj/item/food/grown/poppy/geranium = TRUE)
include_subtypes = FALSE
/datum/bounty/item/assistant/poppy
name = "Poppies"
description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you."
reward = CARGO_CRATE_VALUE * 2
required_count = 3
wanted_types = list(/obj/item/food/grown/poppy = TRUE)
include_subtypes = FALSE
/datum/bounty/item/assistant/potted_plants
name = "Potted Plants"
description = "Central Command is looking to commission a new BirdBoat-class station. You've been ordered to supply the potted plants."
reward = CARGO_CRATE_VALUE * 4
required_count = 3
wanted_types = list(
/obj/item/kirbyplants = TRUE,
/obj/item/kirbyplants/synthetic = FALSE
)
/datum/bounty/item/assistant/monkey_cubes
name = "Monkey Cubes"
description = "Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes."
reward = CARGO_CRATE_VALUE * 4
required_count = 3
wanted_types = list(/obj/item/food/monkeycube = TRUE)
/datum/bounty/item/assistant/ied
name = "IED"
description = "Nanotrasen's maximum security prison at CentCom is undergoing personnel training. Ship a handful of IEDs to serve as a training tools."
reward = CARGO_CRATE_VALUE * 4
required_count = 3
wanted_types = list(/obj/item/grenade/iedcasing = TRUE)
/datum/bounty/item/assistant/corgimeat
name = "Raw Corgi Meat"
description = "The Syndicate recently stole all of CentCom's corgi meat. Ship out a replacement immediately."
reward = CARGO_CRATE_VALUE * 6
wanted_types = list(/obj/item/food/meat/slab/corgi = TRUE)
/datum/bounty/item/assistant/toys
name = "Arcade Toys"
description = "The vice president's son saw an ad for new toys on the telescreen and now he won't shut up about them. Ship some arcade toys over to ease his complaints."
reward = CARGO_CRATE_VALUE * 8
required_count = 5
wanted_types = list(/obj/item/toy = TRUE)
/datum/bounty/item/assistant/paper_bin
name = "Paper Bins"
description = "Our accounting division is all out of paper. We need a new shipment immediately."
reward = CARGO_CRATE_VALUE * 5
required_count = 5
wanted_types = list(/obj/item/paper_bin = TRUE)
/datum/bounty/item/assistant/crayons
name = "Crayons"
description = "Dr. Jones's kid ate all of our crayons again. Please send us yours."
reward = CARGO_CRATE_VALUE * 4
required_count = 8
wanted_types = list(/obj/item/toy/crayon = TRUE)
/datum/bounty/item/assistant/water_tank
name = "Water Tank"
description = "We need more water for our hydroponics bay. Find a water tank and ship it out to us."
reward = CARGO_CRATE_VALUE * 5
wanted_types = list(/obj/structure/reagent_dispensers/watertank = TRUE)
/datum/bounty/item/assistant/pneumatic_cannon
name = "Pneumatic Cannon"
description = "We're figuring out how hard we can launch supermatter shards out of a pneumatic cannon. Send us one as soon as possible."
reward = CARGO_CRATE_VALUE * 4
wanted_types = list(/obj/item/pneumatic_cannon/ghetto = TRUE)
/datum/bounty/item/assistant/improvised_shells
name = "Junk Shells"
description = "Our assistant militia has chewed through all our iron supplies. To stop them making bullets out of station property, we need junk shells, pronto."
reward = CARGO_CRATE_VALUE * 4
required_count = 5
wanted_types = list(/obj/item/ammo_casing/junk = TRUE)
/datum/bounty/item/assistant/flamethrower
name = "Flamethrower"
description = "We have a moth infestation, send a flamethrower to help deal with the situation."
reward = CARGO_CRATE_VALUE * 4
wanted_types = list(/obj/item/flamethrower = TRUE)
/datum/bounty/item/assistant/fish
name = "Fish"
description = "We need fish to populate our aquariums with. Fishes that are dead or bought from cargo will only be paid half as much."
reward = CARGO_CRATE_VALUE * 9.5
required_count = 4
wanted_types = list(/obj/item/fish = TRUE, /obj/item/storage/fish_case = TRUE)
///the penalty for shipping dead/bought fish, which can subtract up to half the reward in total.
var/shipping_penalty
/datum/bounty/item/assistant/fish/New()
..()
shipping_penalty = reward * 0.5 / required_count
/datum/bounty/item/assistant/fish/applies_to(obj/shipped)
. = ..()
if(!.)
return
var/obj/item/fish/fishie = shipped
if(istype(shipped, /obj/item/storage/fish_case))
fishie = locate() in shipped
if(!fishie || !is_type_in_typecache(fishie, wanted_types))
return FALSE
return can_ship_fish(fishie)
/datum/bounty/item/assistant/fish/proc/can_ship_fish(obj/item/fish/fishie)
return TRUE
/datum/bounty/item/assistant/fish/ship(obj/shipped)
. = ..()
if(!.)
return
var/obj/item/fish/fishie = shipped
if(istype(shipped, /obj/item/storage/fish_case))
fishie = locate() in shipped
if(fishie.status == FISH_DEAD || HAS_TRAIT(fishie, TRAIT_FISH_LOW_PRICE))
reward -= shipping_penalty
///A subtype of the fish bounty that requires fish with a specific fluid type
/datum/bounty/item/assistant/fish/fluid
reward = CARGO_CRATE_VALUE * 12
///The required fluid type of the fish for it to be shipped
var/fluid_type
/datum/bounty/item/assistant/fish/fluid/New()
..()
fluid_type = pick(AQUARIUM_FLUID_FRESHWATER, AQUARIUM_FLUID_SALTWATER, AQUARIUM_FLUID_SULPHWATEVER)
name = "[fluid_type] Fish"
description = "We need [LOWER_TEXT(fluid_type)] fish to populate our aquariums with. Fishes that are dead or bought from cargo will only be paid half as much."
/datum/bounty/item/assistant/fish/fluid/can_ship_fish(obj/item/fish/fishie)
return (fluid_type in GLOB.fish_compatible_fluid_types[fishie.required_fluid_type])
*/