diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm index fddfa5bdc00f..ae5728bc008a 100644 --- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm @@ -400,6 +400,7 @@ /obj/effect/turf_decal/weather/sand{ dir = 6 }, +/obj/effect/landmark/mission_poi/main/kill, /turf/open/floor/plating/asteroid/sand, /area/overmap_encounter/planetoid/cave/explored) "jZ" = ( diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index fbf9bf8ed4eb..7acdf76b5089 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -1297,6 +1297,11 @@ dir = 8 }, /mob/living/simple_animal/hostile/human/frontier/ranged/officer/neutured, +/obj/effect/landmark/mission_poi/main/kill{ + already_spawned = 1; + type_to_spawn = /mob/living/simple_animal/hostile/human/frontier/ranged/officer/neutured; + mission_index = 1 + }, /turf/open/floor/carpet/red, /area/ruin/beach/treasure_cove) "SX" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index 294dd1056431..7cd88c1e647c 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -196,6 +196,7 @@ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/mission_poi/main, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/crashed_holemaker) "cS" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm b/_maps/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm index 67613238e83d..9391e7e05f6c 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm @@ -2195,6 +2195,11 @@ }, /turf/open/floor/plasteel/tech, /area/ruin/powered/hydroponicslab) +"Xb" = ( +/obj/structure/table/wood, +/obj/effect/landmark/mission_poi/main, +/turf/open/floor/wood/walnut, +/area/ruin/powered/hydroponicslab) "Xt" = ( /obj/structure/table/wood, /obj/item/folder{ @@ -2912,7 +2917,7 @@ pj da ic We -vH +Xb vH vH aJ diff --git a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm index a698cf49ea18..92423c3b05e9 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm @@ -103,7 +103,6 @@ dir = 6 }, /obj/structure/destructible/tribal_torch/lit{ - pixel_y = 0; pixel_x = 10 }, /turf/open/floor/wood/ebony, @@ -122,7 +121,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/backdoor_xeno_babes_6{ - pixel_y = 0; pixel_x = 30 }, /obj/item/reagent_containers/food/drinks/bottle/absinthe{ @@ -1724,7 +1722,6 @@ pixel_x = 5 }, /obj/item/storage/box/ammo/c38{ - pixel_y = 0; pixel_x = -11 }, /obj/item/storage/box/ammo/c38{ @@ -2355,7 +2352,6 @@ pixel_x = 4 }, /obj/item/candle/infinite{ - pixel_y = 0; pixel_x = 10 }, /obj/item/candle/infinite{ @@ -3408,6 +3404,10 @@ range_light = 5 }, /obj/effect/mob_spawn/human/corpse/srm/montagne, +/obj/effect/landmark/mission_poi/main{ + mission_index = 1; + already_spawned = 1 + }, /turf/open/floor/wood/maple, /area/ruin/powered/icemoon/lodge/cellar) "Yo" = ( @@ -3426,7 +3426,6 @@ pixel_x = 1 }, /obj/item/toy/cards/deck{ - pixel_y = 0; pixel_x = -4 }, /obj/item/storage/pill_bottle/dice{ diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index f4db9fa9d9f7..3fc89a22eeb9 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -23,9 +23,7 @@ /obj/effect/turf_decal/corner/opaque/black{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 2 - }, +/obj/effect/turf_decal/corner/opaque/black, /turf/open/floor/plasteel, /area/ruin/powered) "cB" = ( @@ -79,6 +77,16 @@ /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating/ice/icemoon, /area/overmap_encounter/planetoid/cave/explored) +"hY" = ( +/obj/structure/vein/ice/classthree{ + vein_class = 4; + mining_charges = 30 + }, +/obj/effect/landmark/mission_poi/main/drill{ + mission_index = 2 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) "iz" = ( /obj/structure/fence/door/opened{ dir = 8 @@ -138,6 +146,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/mission_poi/main{ + mission_index = 1 + }, /turf/open/floor/wood, /area/ruin/powered) "mI" = ( @@ -204,9 +215,7 @@ /obj/effect/turf_decal/corner/opaque/black{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 2 - }, +/obj/effect/turf_decal/corner/opaque/black, /turf/open/floor/plasteel, /area/ruin/powered) "tg" = ( @@ -248,9 +257,7 @@ /obj/effect/turf_decal/corner/opaque/black{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 2 - }, +/obj/effect/turf_decal/corner/opaque/black, /turf/open/floor/plasteel, /area/ruin/powered) "us" = ( @@ -476,6 +483,13 @@ /obj/structure/chair/comfy/orange/directional/east, /turf/open/floor/carpet, /area/ruin/powered) +"OI" = ( +/obj/effect/landmark/mission_poi/guard{ + type_to_spawn = /mob/living/simple_animal/hostile/human/frontier/ranged/trooper/internals; + mission_index = 2 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/overmap_encounter/planetoid/cave/explored) "Pp" = ( /obj/effect/spawner/random/vending/snack, /turf/open/floor/holofloor/wood, @@ -981,7 +995,7 @@ Og Og Og zT -Og +OI Og zT Og @@ -1070,10 +1084,10 @@ Vn Og zT Og -Og -Og Bq Og +hY +Og Og Og Gy diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index 1a52405a3ec0..c1af911e1926 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -1007,6 +1007,7 @@ pixel_y = 10 }, /obj/structure/table/wood/fancy/blue, +/obj/effect/landmark/mission_poi, /turf/open/floor/carpet/orange{ initial_gas_mix = "ICEMOON_ATMOS" }, diff --git a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm index 1afed51826aa..f99c1a040e64 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm @@ -7415,6 +7415,7 @@ /area/overmap_encounter/planetoid/jungle/explored) "YA" = ( /obj/machinery/blackbox_recorder, +/obj/effect/landmark/mission_poi/main/blackbox, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) "YC" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index 1159123d30f1..0e0b6f0e5792 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -668,6 +668,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/mission_poi/main/kill{ + mission_index = 1 + }, /turf/open/floor/plasteel/tech, /area/ruin/jungle/cavecrew/bridge) "iN" = ( @@ -2176,6 +2179,9 @@ pixel_x = -5; pixel_y = -3 }, +/obj/effect/landmark/mission_poi/main{ + mission_index = 2 + }, /turf/open/floor/plasteel/tech, /area/ruin/jungle/cavecrew/bridge) "Al" = ( @@ -2733,6 +2739,10 @@ dir = 10 }, /obj/machinery/light/directional/south, +/obj/effect/landmark/mission_poi/guard{ + type_to_spawn = /mob/living/simple_animal/hostile/human/frontier/ranged/neutered; + mission_index = 2 + }, /turf/open/floor/plasteel/dark, /area/ruin/jungle/cavecrew/bridge) "Ir" = ( @@ -3219,7 +3229,7 @@ /obj/effect/turf_decal/industrial/hatch/yellow, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/secure/loot, -/obj/item/wallframe/bounty_board, +/obj/item/wallframe/bounty_viewer, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/jungle/cavecrew/cargo) "Nf" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm b/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm index 4d17f130e1ae..3d371042eb85 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm @@ -2634,9 +2634,7 @@ /area/overmap_encounter/planetoid/jungle/explored) "wI" = ( /obj/machinery/power/terminal, -/obj/structure/cable/orange{ - icon_state = "0-1" - }, +/obj/structure/cable/orange, /obj/structure/cable/orange{ icon_state = "1-5" }, @@ -3251,9 +3249,7 @@ icon_state = "1-2" }, /obj/machinery/door/airlock/security, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only{ dir = 1 }, @@ -3650,9 +3646,7 @@ dir = 4 }, /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "FQ" = ( @@ -4769,9 +4763,7 @@ /area/overmap_encounter/planetoid/jungle/explored) "OL" = ( /obj/machinery/power/terminal, -/obj/structure/cable/orange{ - icon_state = "0-1" - }, +/obj/structure/cable/orange, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, @@ -4812,9 +4804,7 @@ /area/overmap_encounter/planetoid/jungle/explored) "OW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/item/stack/cable_coil/cut/orange, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) @@ -5274,9 +5264,7 @@ /area/ruin/jungle/interceptor/starhall) "ST" = ( /obj/machinery/power/terminal, -/obj/structure/cable/orange{ - icon_state = "0-1" - }, +/obj/structure/cable/orange, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, @@ -5437,9 +5425,7 @@ /turf/open/floor/plating, /area/ruin/jungle/interceptor/starhall) "Up" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/item/stack/cable_coil/cut/orange, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm index 60d24171ad0f..e3600dde0bb7 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm @@ -56,6 +56,10 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table, /obj/item/storage/cans/sixbeer, +/obj/effect/landmark/mission_poi/main{ + blocks_emissive = 1; + mission_index = 1 + }, /turf/open/floor/plating, /area/ruin/jungle/syndifort) "bS" = ( @@ -128,6 +132,10 @@ name = "Jerry"; unsuitable_atmos_damage = 0 }, +/obj/effect/landmark/mission_poi/main/kill{ + already_spawned = 1; + mission_index = 2 + }, /turf/open/floor/plating, /area/ruin/jungle/syndifort/jerry) "es" = ( @@ -154,6 +162,10 @@ /area/ruin/jungle/syndifort) "eU" = ( /obj/structure/chair/plastic, +/obj/effect/landmark/mission_poi/guard{ + mission_index = 1; + type_to_spawn = /mob/living/simple_animal/hostile/human/syndicate/ranged + }, /turf/open/floor/plating, /area/ruin/jungle/syndifort) "eW" = ( @@ -762,6 +774,10 @@ /obj/structure/sign/poster/contraband/peacemaker{ pixel_x = 32 }, +/obj/effect/landmark/mission_poi/guard{ + mission_index = 1; + type_to_spawn = /mob/living/simple_animal/hostile/human/syndicate + }, /turf/open/floor/plating, /area/ruin/jungle/syndifort) "xm" = ( @@ -941,6 +957,10 @@ "BC" = ( /obj/structure/chair/plastic, /obj/machinery/light/small/directional/north, +/obj/effect/landmark/mission_poi/guard{ + mission_index = 1; + type_to_spawn = /mob/living/simple_animal/hostile/human/syndicate + }, /turf/open/floor/plating/rust, /area/ruin/jungle/syndifort) "BH" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm index dd98807a4958..a70342230207 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm @@ -151,6 +151,7 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, +/obj/effect/landmark/mission_poi/main/blackbox, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/listening_post/operations) "db" = ( @@ -186,9 +187,7 @@ "dJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood{ - dir = 2 - }, +/obj/effect/turf_decal/siding/wood, /turf/open/floor/carpet/nanoweave/red, /area/ruin/unpowered/listening_post/commons) "dM" = ( @@ -298,9 +297,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -464,9 +461,7 @@ /turf/open/floor/carpet/nanoweave/red, /area/ruin/unpowered/listening_post/commons) "hA" = ( -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/power/terminal{ dir = 1 }, @@ -1763,9 +1758,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/unpowered/listening_post/operations) "FW" = ( -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/machinery/power/smes/engineering, /turf/open/floor/plating, /area/ruin/unpowered/listening_post/engineering) @@ -2199,9 +2192,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 @@ -2471,9 +2462,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index e0a98de791fc..f2d5738e71d8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -34,9 +34,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 2 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable/orange{ icon_state = "5-8" @@ -2541,6 +2539,7 @@ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/mission_poi/main/blackbox, /turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, /area/ruin/unpowered/crashed_starwalker) "PH" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm index 17094a2d2bff..80dd1309bc1f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -1250,6 +1250,9 @@ "EE" = ( /obj/structure/stone_tile/center/burnt, /obj/structure/stone_tile/surrounding/burnt, +/obj/effect/landmark/mission_poi/main{ + mission_index = 1 + }, /turf/open/lava/smooth/lava_land_surface, /area/ruin/unpowered/buried_shrine) "Fo" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 3a6b545859b7..b66031e998be 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -71,12 +71,15 @@ /turf/open/floor/plating/moss, /area/overmap_encounter/planetoid/lava/explored) "aM" = ( -/obj/item/documents/nanotrasen, /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, /obj/item/stock_parts/cell/gun/upgraded, /obj/structure/safe, +/obj/effect/landmark/mission_poi/main{ + mission_index = 1; + type_to_spawn = /obj/item/documents/nanotrasen + }, /turf/open/floor/carpet/blue, /area/ruin/lavaland/factory/manager_office) "aW" = ( @@ -229,6 +232,11 @@ /obj/effect/decal/cleanable/blood{ icon_state = "bubblegumfoot" }, +/obj/effect/landmark/mission_poi/main/implanted{ + mission_index = 3; + type_to_spawn = /mob/living/carbon/human; + already_spawned = 1 + }, /turf/open/floor/concrete/pavement/lava, /area/overmap_encounter/planetoid/lava/explored) "cx" = ( @@ -4834,8 +4842,7 @@ icon_state = "gibmid2" }, /obj/effect/decal/cleanable/blood{ - icon_state = "trails_2"; - dir = 2 + icon_state = "trails_2" }, /turf/open/floor/plasteel/dark, /area/ruin/lavaland/factory/dorms) @@ -5105,6 +5112,11 @@ /obj/structure/sign/poster/official/enlist{ pixel_y = 32 }, +/obj/effect/landmark/mission_poi/main{ + mission_index = 2; + type_to_spawn = /obj/item/clothing/accessory/medal/gold/captain; + already_spawned = 1 + }, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) "YU" = ( diff --git a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm index 6d6f81ffd5a0..1daae4437db2 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm @@ -746,9 +746,7 @@ /turf/open/floor/wood, /area/ruin/rockplanet/distillery/office) "ir" = ( -/obj/structure/cable/yellow{ - icon_state = "0-1" - }, +/obj/structure/cable/yellow, /obj/machinery/porta_turret/ship/weak, /turf/open/floor/plating/asteroid/rockplanet/cracked/lit, /area/ruin/rockplanet/distillery/office) @@ -778,9 +776,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/power/smes/shuttle/micro/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/micro/precharged, /obj/machinery/door/poddoor/shutters/preopen{ id = "pod_window" }, @@ -1100,9 +1096,7 @@ /turf/open/floor/pod/rockplanet, /area/ruin/rockplanet/distillery/shuttle) "mK" = ( -/turf/open/floor/plasteel/stairs/wood{ - color = "#5B3E1D" - }, +/turf/open/floor/plasteel/stairs/wood, /area/ruin/rockplanet/distillery/saloon) "mX" = ( /obj/effect/turf_decal/siding/wood{ @@ -2422,9 +2416,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/white{ dir = 9 }, -/obj/effect/turf_decal/trimline/opaque/neutral/filled/corner{ - dir = 2 - }, +/obj/effect/turf_decal/trimline/opaque/neutral/filled/corner, /turf/open/floor/plasteel/patterned/rockplanet/lit, /area/overmap_encounter/planetoid/rockplanet/explored) "Bn" = ( @@ -2652,9 +2644,7 @@ /turf/open/floor/pod, /area/ruin/rockplanet/distillery/crew) "DX" = ( -/obj/structure/cable{ - icon_state = "0-1" - }, +/obj/structure/cable, /obj/structure/cable/yellow{ icon_state = "1-10" }, @@ -3592,9 +3582,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable/yellow{ - icon_state = "0-1" - }, +/obj/structure/cable/yellow, /obj/machinery/light/small/directional/south, /turf/open/floor/pod/rockplanet, /area/ruin/rockplanet/distillery) @@ -3668,9 +3656,7 @@ /turf/open/floor/plasteel/patterned/brushed, /area/ruin/rockplanet/distillery/engineering) "PI" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, +/obj/machinery/power/shuttle/engine/electric, /obj/structure/cable/yellow{ icon_state = "0-4" }, @@ -4404,6 +4390,10 @@ id = "frontier_armory" }, /mob/living/simple_animal/hostile/human/frontier/ranged/officer/internals, +/obj/effect/landmark/mission_poi{ + already_spawned = 1; + type_to_spawn = /mob/living/simple_animal/hostile/human/frontier/ranged/officer/internals + }, /turf/open/floor/wood, /area/ruin/rockplanet/distillery/office) "XD" = ( @@ -4544,9 +4534,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/power/smes/shuttle/micro/precharged{ - dir = 4 - }, +/obj/machinery/power/smes/shuttle/micro/precharged, /obj/machinery/door/poddoor/shutters/preopen{ id = "pod_window" }, diff --git a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm index 956466fc4be0..6dccfd7345fc 100644 --- a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm +++ b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm @@ -179,6 +179,14 @@ }, /turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/corporatemine/bridge) +"fd" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/landmark/mission_poi/guard{ + mission_index = 1; + type_to_spawn = /mob/living/simple_animal/hostile/asteroid/hivelord + }, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space) "fi" = ( /obj/structure/chair/office/light{ dir = 4 @@ -1093,6 +1101,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/corporatemine) +"zQ" = ( +/obj/effect/landmark/mission_poi/guard{ + mission_index = 1; + type_to_spawn = /mob/living/simple_animal/hostile/asteroid/hivelord + }, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space) +"Aa" = ( +/obj/effect/landmark/mission_poi{ + mission_index = 1; + type_to_spawn = /obj/structure/spawner/burrow/asteroid + }, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space) "Ac" = ( /obj/structure/railing, /obj/structure/cable{ @@ -2100,6 +2122,14 @@ "UA" = ( /turf/closed/wall/rust, /area/ruin/space/has_grav/corporatemine/crewquarters) +"Vj" = ( +/obj/structure/vein/asteroid{ + vein_class = 4; + mining_charges = 30 + }, +/obj/effect/landmark/mission_poi/main/drill, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space) "Vr" = ( /obj/structure/grille/broken, /obj/item/shard, @@ -3719,9 +3749,9 @@ Al Al VM VM +Vj VM -VM -kp +fd bl VM Pn @@ -3822,7 +3852,7 @@ Al Al Iv VM -VM +zQ VM rG Bp @@ -3929,7 +3959,7 @@ VM VM bl VM -VM +Aa VM VM VM diff --git a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm index c052a6f0cd04..f28ba5aa67a8 100644 --- a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm +++ b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm @@ -1216,7 +1216,7 @@ /obj/structure/chair/office{ dir = 8 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel, /area/ruin/space/has_grav/powerpuzzle/secure) "jy" = ( @@ -3506,9 +3506,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle/secure) "UV" = ( -/obj/structure/salvageable/computer{ - dir = 1 - }, +/obj/effect/landmark/mission_poi/main, /obj/machinery/door/poddoor/shutters{ id = "vaultshutters2" }, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm index 50d9986ea756..541bbf1569e6 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm @@ -1772,6 +1772,7 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, +/obj/effect/landmark/mission_poi/guard, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/commandcontrol) "uD" = ( @@ -1931,6 +1932,7 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 10 }, +/obj/effect/landmark/mission_poi/main, /turf/open/floor/plasteel/mono/dark, /area/ruin/wasteplanet/abandoned_mechbay/commandcontrol) "wc" = ( @@ -2779,6 +2781,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/obj/effect/landmark/mission_poi/guard, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/commandcontrol) "Hm" = ( @@ -3081,6 +3084,7 @@ pixel_y = 29; pixel_x = 28 }, +/obj/effect/landmark/mission_poi/guard, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/commandcontrol) "Kj" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 229134b7eac7..dc3ae26b3e20 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -3964,34 +3964,34 @@ /area/centcom/evac) "aLV" = ( /turf/closed/indestructible/riveted, -/area/awaymission/errorroom) +/area/errorroom) "aLW" = ( /turf/closed/mineral/ash_rock, -/area/awaymission/errorroom) +/area/errorroom) "aLX" = ( /obj/structure/speaking_tile, /turf/closed/mineral/ash_rock, -/area/awaymission/errorroom) +/area/errorroom) "aLY" = ( /obj/item/rupee, /turf/open/floor/plating/ashplanet/wateryrock{ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "aLZ" = ( /turf/open/floor/plating/ashplanet/wateryrock{ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "aMa" = ( /obj/effect/landmark/error, /turf/open/floor/plating/ashplanet/wateryrock{ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "aMb" = ( /obj/structure/signpost/salvation{ icon = 'icons/obj/structures.dmi'; @@ -4002,7 +4002,7 @@ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "aMc" = ( /obj/structure/lattice, /turf/open/space, diff --git a/_maps/map_files/generic/blank.dmm b/_maps/map_files/generic/blank.dmm index b918e3fcaead..522ed46ce706 100644 --- a/_maps/map_files/generic/blank.dmm +++ b/_maps/map_files/generic/blank.dmm @@ -4,17 +4,17 @@ /area/space) "b" = ( /turf/closed/indestructible/riveted, -/area/awaymission/errorroom) +/area/errorroom) "p" = ( /turf/closed/mineral/ash_rock, -/area/awaymission/errorroom) +/area/errorroom) "t" = ( /obj/effect/landmark/error, /turf/open/floor/plating/ashplanet/wateryrock{ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "D" = ( /turf/closed/indestructible/riveted, /area/start) @@ -24,7 +24,7 @@ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "I" = ( /turf/open/floor/holofloor/hyperspace, /area/space) @@ -49,17 +49,17 @@ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "R" = ( /obj/structure/speaking_tile, /turf/closed/mineral/ash_rock, -/area/awaymission/errorroom) +/area/errorroom) "T" = ( /turf/open/floor/plating/ashplanet/wateryrock{ initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; planetary_atmos = 0 }, -/area/awaymission/errorroom) +/area/errorroom) "U" = ( /obj/effect/landmark/start/new_player, /turf/open/floor/plating, diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index b10b86822c8c..3e5ff1cab6e5 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -659,6 +659,11 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"ej" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/machinery/computer/mission, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "em" = ( /turf/closed/indestructible/reinforced, /area/outpost/external) @@ -5803,6 +5808,11 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"Jy" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/machinery/mission_pad, +/turf/open/floor/plasteel/patterned, +/area/outpost/cargo) "JA" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/disposal/bin, @@ -17203,7 +17213,7 @@ HD Uw uw qN -UB +Jy UB gT FE @@ -17326,7 +17336,7 @@ HD Uw PI js -UB +ej yv Sl gO diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index 179aa234e780..eae76fe0a0b8 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -6155,7 +6155,6 @@ /obj/effect/turf_decal/techfloor{ dir = 5 }, -/obj/machinery/computer/bounty, /turf/open/floor/plasteel/tech, /area/outpost/hallway/fore) "vO" = ( @@ -7393,7 +7392,6 @@ /obj/effect/turf_decal/techfloor{ dir = 9 }, -/obj/machinery/computer/bounty, /turf/open/floor/plasteel/tech, /area/outpost/hallway/fore) "Aa" = ( @@ -10716,9 +10714,6 @@ /turf/open/floor/wood, /area/outpost/crew/library) "LE" = ( -/obj/machinery/computer/bounty{ - dir = 8 - }, /obj/effect/turf_decal/techfloor{ dir = 4 }, @@ -14878,7 +14873,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/computer/bounty, /turf/open/floor/plasteel/tech, /area/outpost/hallway/fore) "ZV" = ( diff --git a/_maps/outpost/nanotrasen_ice.dmm b/_maps/outpost/nanotrasen_ice.dmm index cfd32ad951ae..a6c142d66238 100644 --- a/_maps/outpost/nanotrasen_ice.dmm +++ b/_maps/outpost/nanotrasen_ice.dmm @@ -898,13 +898,14 @@ /obj/effect/turf_decal/siding/white{ dir = 10 }, -/obj/structure/table/reinforced, /obj/machinery/newscaster/directional/south, -/obj/item/newspaper, /obj/machinery/camera{ dir = 4 }, /obj/machinery/firealarm/directional/west, +/obj/machinery/computer/mission{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/outpost/cargo/smeltery) "gG" = ( @@ -3048,9 +3049,7 @@ /obj/effect/turf_decal/siding/white{ dir = 6 }, -/obj/structure/chair{ - dir = 1 - }, +/obj/machinery/mission_pad, /turf/open/floor/plasteel/dark, /area/outpost/cargo/smeltery) "us" = ( @@ -7419,9 +7418,6 @@ /obj/effect/turf_decal/siding/white{ dir = 8 }, -/obj/structure/chair{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 5 }, diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm index 2293c5bf8fd5..7cc3f5e2c484 100644 --- a/code/__DEFINES/dcs/signals/signals.dm +++ b/code/__DEFINES/dcs/signals/signals.dm @@ -690,6 +690,10 @@ // Called by parent when pausing spawning, returns bool: (datum/source, spawning_started) #define COMSIG_SPAWNER_TOGGLE_SPAWNING "spawner_toggle" +// Drill signals +// Called when a mission drill finishes sampling +#define COMSIG_DRILL_SAMPLES_DONE "drill_done" + ///Beam Signals /// Called before beam is redrawn #define COMSIG_BEAM_BEFORE_DRAW "beam_before_draw" diff --git a/code/__DEFINES/dcs/signals/signals_ship.dm b/code/__DEFINES/dcs/signals/signals_overmap.dm similarity index 63% rename from code/__DEFINES/dcs/signals/signals_ship.dm rename to code/__DEFINES/dcs/signals/signals_overmap.dm index c18a26c5089d..9c9981960ad1 100644 --- a/code/__DEFINES/dcs/signals/signals_ship.dm +++ b/code/__DEFINES/dcs/signals/signals_overmap.dm @@ -1,2 +1,5 @@ ///Sent when a shuttle finishes loading to allow for any machinery that requires a late connection to fire that connection #define COMSIG_SHIP_DONE_CONNECTING "late_connect" + +///Send when a dynamic datum completes load level. +#define COMSIG_OVERMAP_LOADED "overmap_loaded" diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index c31bffa08bf3..7ff2cb1b984f 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -14,3 +14,7 @@ #define ACCOUNT_SEC_NAME "Defense Budget" #define NO_FREEBIES "commies go home" + +#define MISSION_REWARD_CASH "cash" +#define MISSION_REWARD_ITEMS "items" +#define MISSION_REWARD_REP "rep" diff --git a/code/__DEFINES/mission.dm b/code/__DEFINES/mission.dm new file mode 100644 index 000000000000..302da340edd8 --- /dev/null +++ b/code/__DEFINES/mission.dm @@ -0,0 +1,6 @@ +/// If this is deleted, so is the mission +#define MISSION_IMPORTANCE_CRITICAL "mission_critical" +/// If this and all other important missiosn are deleted, the mission is deleted +#define MISSION_IMPORTANCE_IMPORTANT "misison_important" +/// Relevent for the mission but can be deleted for free. +#define MISSION_IMPORTANCE_RELEVENT "mission_relevent" diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 1155ea88bed9..2a0d5e650387 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -188,6 +188,7 @@ #define FIRE_PRIORITY_CALLBACKS 600 #define FIRE_PRIORITY_EXPLOSIONS 666 #define FIRE_PRIORITY_TIMER 700 +#define FIRE_PRIORITY_MISSIONS 750 #define FIRE_PRIORITY_SOUND_LOOPS 800 #define FIRE_PRIORITY_OVERMAP_MOVEMENT 850 #define FIRE_PRIORITY_SPEECH_CONTROLLER 900 diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 7bd6f72771cc..ab45be40343b 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -681,7 +681,7 @@ GLOBAL_LIST_INIT(WALLITEMS, typecacheof(list( /obj/machinery/computer/security/telescreen, /obj/machinery/embedded_controller/radio/simple_vent_controller, /obj/item/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth, /obj/structure/mirror, /obj/structure/cabinet, /obj/machinery/computer/security/telescreen/entertainment, - /obj/structure/sign/picture_frame, /obj/machinery/bounty_board + /obj/structure/sign/picture_frame, /obj/machinery/bounty_viewer ))) GLOBAL_LIST_INIT(WALLITEMS_EXTERNAL, typecacheof(list( diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 37256f9ce833..b8ff6e1664e3 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -432,6 +432,14 @@ config_entry_value = 127 min_val = 127 +/datum/config_entry/number/max_simple_missions + config_entry_value = 6 + min_val = 0 + +/datum/config_entry/number/max_dynamic_missions + config_entry_value = 6 + min_val = 0 + /** * A config that skews with the random spawners weights * If the value is lower than 1, it'll tend to even out the odds @@ -439,5 +447,5 @@ */ /datum/config_entry/number/random_loot_weight_modifier integer = FALSE - default = 1 + config_entry_value = 1 min_val = 0.05 diff --git a/code/controllers/subsystem/faction.dm b/code/controllers/subsystem/faction.dm index 106fb4687b83..258ee273e9ae 100644 --- a/code/controllers/subsystem/faction.dm +++ b/code/controllers/subsystem/faction.dm @@ -30,3 +30,13 @@ SUBSYSTEM_DEF(factions) if(faction.type == path) return faction stack_trace("we did not return any faction with path [path]") + +/datum/controller/subsystem/factions/proc/faction_name(path_or_type) + var/datum/faction/faction + if(istype(path_or_type, /datum/faction)) + faction = path_or_type + else if(ispath(path_or_type)) + faction = faction_path_to_datum(path_or_type) + else + return "Unknown Faction" + return faction.name diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 3fecc68fbfe4..cd768d9c2062 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -16,6 +16,7 @@ SUBSYSTEM_DEF(mapping) var/list/ruin_types_probabilities = list() var/list/ruins_templates = list() var/list/planet_types = list() + var/list/mission_pois = list() var/list/maplist var/list/ship_purchase_list diff --git a/code/controllers/subsystem/missions.dm b/code/controllers/subsystem/missions.dm new file mode 100644 index 000000000000..c90cfb65058b --- /dev/null +++ b/code/controllers/subsystem/missions.dm @@ -0,0 +1,49 @@ +SUBSYSTEM_DEF(missions) + name = "Missions" + flags = SS_NO_INIT + priority = FIRE_PRIORITY_MISSIONS + var/list/obj/effect/landmark/mission_poi/unallocated_pois = list() + var/list/datum/mission/dynamic/inactive_missions = list() + var/list/datum/mission/dynamic/active_missions = list() + +/datum/controller/subsystem/missions/stat_entry(msg) + var/unallocated = unallocated_pois.len + var/inactive_count = inactive_missions.len + var/active_count = active_missions.len + msg = "missions:A[active_count]|I:[inactive_count]|pois:[unallocated]" + return ..() + +/datum/controller/subsystem/missions/fire(resumed) + if(active_missions.len < CONFIG_GET(number/max_dynamic_missions)) + for(var/i in 1 to inactive_missions.len) + //Make sure we dont ONLY take the one of the top. + if(prob(50)) + //Has the pleasnt result of grabbing the most recent mission, idealy this means a freshly created planet + var/datum/mission/dynamic/mission_to_start = inactive_missions[inactive_missions.len - (i - 1)] + mission_to_start.start_mission() + break + + +// should probably come up with a better solution for this +// hierarchical weighting? would need to distinguish between "real" and "fake" missions +/datum/controller/subsystem/missions/proc/get_weighted_mission_type() + var/static/list/weighted_missions + if(!weighted_missions) + weighted_missions = list() + var/list/mission_types = subtypesof(/datum/mission) + for(var/datum/mission/mis_type as anything in mission_types) + if(initial(mis_type.weight) > 0) + weighted_missions[mis_type] = initial(mis_type.weight) + return pickweight_float(weighted_missions) + +/datum/controller/subsystem/missions/proc/get_researcher_name() + var/group = pick(list( + "Cybersun Industries", + "CMM-GOLD", + "Nanotrasen Anomalous Studies Division", + "The Naturalienwissenschaftlicher Studentenverbindungs-Verband", + "The Central Solarian Anomaly Research Agency", + "DeForest Medical R&D", + "A strange sarathi on the outpost" + )) + return group diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm index dd5515397277..0f713c80eae5 100644 --- a/code/controllers/subsystem/overmap.dm +++ b/code/controllers/subsystem/overmap.dm @@ -17,6 +17,8 @@ SUBSYSTEM_DEF(overmap) ///List of all events var/list/events + ///List of dynamic encounters, just planets rn. + var/list/dynamic_encounters ///Map of tiles at each radius (represented by index) around the sun var/list/list/radius_positions @@ -49,6 +51,7 @@ SUBSYSTEM_DEF(overmap) controlled_ships = list() outposts = list() events = list() + dynamic_encounters = list() generator_type = CONFIG_GET(string/overmap_generator_type) size = CONFIG_GET(number/overmap_size) @@ -79,6 +82,8 @@ SUBSYSTEM_DEF(overmap) return ..() /datum/controller/subsystem/overmap/fire() + if(length(dynamic_encounters) < CONFIG_GET(number/max_overmap_dynamic_events)) + spawn_ruin_level() if(events_enabled) for(var/datum/overmap/event/E as anything in events) if(E.get_nearby_overmap_objects()) @@ -127,10 +132,10 @@ SUBSYSTEM_DEF(overmap) /datum/controller/subsystem/overmap/proc/create_map() if (generator_type == OVERMAP_GENERATOR_SOLAR) spawn_events_in_orbits() - spawn_ruin_levels_in_orbits() else spawn_events() - spawn_ruin_levels() + + spawn_ruin_levels() spawn_outpost() //spawn_initial_ships() @@ -250,11 +255,10 @@ SUBSYSTEM_DEF(overmap) */ /datum/controller/subsystem/overmap/proc/spawn_ruin_levels() for(var/i in 1 to CONFIG_GET(number/max_overmap_dynamic_events)) - new /datum/overmap/dynamic() + spawn_ruin_level() -/datum/controller/subsystem/overmap/proc/spawn_ruin_levels_in_orbits() - for(var/i in 1 to CONFIG_GET(number/max_overmap_dynamic_events)) - new /datum/overmap/dynamic() +/datum/controller/subsystem/overmap/proc/spawn_ruin_level() + new /datum/overmap/dynamic() /** * Reserves a square dynamic encounter area, generates it, and spawns a ruin in it if one is supplied. @@ -378,7 +382,16 @@ SUBSYSTEM_DEF(overmap) quaternary_dock.dwidth = 0 docking_ports += quaternary_dock - return list(mapzone, docking_ports, ruin_turfs, ruin_templates) + var/list/spawned_mission_pois = list() + for(var/obj/effect/landmark/mission_poi/mission_poi in SSmissions.unallocated_pois) + if(!vlevel.is_in_bounds(mission_poi)) + continue + + spawned_mission_pois += mission_poi + SSmissions.unallocated_pois -= mission_poi + + + return list(mapzone, docking_ports, ruin_turfs, ruin_templates, spawned_mission_pois) /** * Returns a random, usually empty turf in the overmap @@ -494,6 +507,7 @@ SUBSYSTEM_DEF(overmap) overmap_objects = SSovermap.overmap_objects controlled_ships = SSovermap.controlled_ships events = SSovermap.events + dynamic_encounters = SSovermap.dynamic_encounters outposts = SSovermap.outposts radius_positions = SSovermap.radius_positions overmap_vlevel = SSovermap.overmap_vlevel diff --git a/code/datums/ruins.dm b/code/datums/ruins.dm index 3554faf3e2ca..3a4e85857a03 100644 --- a/code/datums/ruins.dm +++ b/code/datums/ruins.dm @@ -18,10 +18,11 @@ var/ruin_type var/ruin_tags = list() + var/dynamic_mission_types + /datum/map_template/ruin/New() if(!name && id) name = id mappath = prefix + suffix ..(path = mappath) - diff --git a/code/datums/ruins/beachplanet.dm b/code/datums/ruins/beachplanet.dm index 3b048ab940c1..ce4e7cd0c04d 100644 --- a/code/datums/ruins/beachplanet.dm +++ b/code/datums/ruins/beachplanet.dm @@ -31,6 +31,7 @@ description = "A small pirate outpost formed from the remains of a wrecked shuttle." suffix = "beach_pirate_crash.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_LIVEABLE) + dynamic_mission_types = list(/datum/mission/dynamic/signaled/kill/frontiersmen) /datum/map_template/ruin/beachplanet/treasurecove name = "Treasure Cove" @@ -38,6 +39,7 @@ description = "A abandoned colony. It seems that this colony was abandoned, for a reason or another" suffix = "beach_treasure_cove.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_LIVEABLE) + dynamic_mission_types = list(/datum/mission/dynamic/signaled/kill/frontiersmen) /datum/map_template/ruin/beachplanet/crashedengie name = "Crashed Engineer Ship" diff --git a/code/datums/ruins/icemoon.dm b/code/datums/ruins/icemoon.dm index 30b231c385c2..458370243f1d 100644 --- a/code/datums/ruins/icemoon.dm +++ b/code/datums/ruins/icemoon.dm @@ -10,6 +10,7 @@ description = "An abandoned hydroponics research facility containing hostile plant fauna." suffix = "icemoon_hydroponics_lab.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_SHELTER) + dynamic_mission_types = list(/datum/mission/dynamic/data_reterival) /datum/map_template/ruin/icemoon/abandonedvillage name = "Abandoned Village" @@ -17,6 +18,10 @@ description = "Who knows what lies within?" suffix = "icemoon_underground_abandoned_village.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_INHOSPITABLE) + dynamic_mission_types = list( + /datum/mission/dynamic/data_reterival, + /datum/mission/dynamic/signaled/drill + ) /datum/map_template/ruin/icemoon/brazillian_lab name = "Barricaded Compound" @@ -24,6 +29,7 @@ description = "A conspicuous compound in the middle of the cold wasteland. What goodies are inside?" suffix = "icemoon_underground_brazillianlab.dmm" ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_INHOSPITABLE) + dynamic_mission_types = list(/datum/mission/dynamic/data_reterival) /datum/map_template/ruin/icemoon/crashed_holemaker name = "Crashed Holemaker" @@ -31,6 +37,7 @@ description = "Safety records for early Nanotrasen Spaceworks vessels were, and always have been, top of their class. Absolutely no multi-billion credit projects have been painstakingly erased from history. (Citation Needed)" suffix = "icemoon_crashed_holemaker.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_SHELTER) + dynamic_mission_types = list(/datum/mission/dynamic/data_reterival) /datum/map_template/ruin/icemoon/ice_lodge name = "Ice Lodge" @@ -38,4 +45,11 @@ description = "Records show this settlement as belonging to the SRM, but no one has heard from them as of late. I wonder what happened?" suffix = "icemoon_ice_lodge.dmm" ruin_tags = list(RUIN_TAG_HARD_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + dynamic_mission_types = list(/datum/mission/dynamic/fallen_montagne) +/datum/mission/dynamic/fallen_montagne + name = "dark signal investigation" + desc = "We've lost contact with one of our lodges but there signal has gone dark. We suspect they may have been assulted by a hostile faction. If they are KIA please retrive the Montagne's body." + mission_reward = /obj/structure/fermenting_barrel/trickwine + faction = /datum/faction/srm + setpiece_item = /mob/living/carbon/human diff --git a/code/datums/ruins/jungle.dm b/code/datums/ruins/jungle.dm index faaefea4fd8b..c6ffbb3f8c49 100644 --- a/code/datums/ruins/jungle.dm +++ b/code/datums/ruins/jungle.dm @@ -10,6 +10,26 @@ description = "A small bunker owned by the Syndicate." suffix = "jungle_syndicate.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_LIVEABLE) + dynamic_mission_types = list( + /datum/mission/dynamic/nt_files, + /datum/mission/dynamic/signaled/kill/jerry + ) + +/datum/mission/dynamic/signaled/kill/jerry + name = "FUCKING KIL JERRY THAT SUNOFA BITCH STOLE BY GODDAMN RELINA PLUSHIE!!" + desc = "I WANT MY FUCKIN PUSHIE BACK KILL HIM AND ILL PAY!" + author = "I FUCKING WANT HIM HUNG." + mission_reward = /obj/item/poster/random_rilena + registered_type = /mob/living/simple_animal/hostile/human/syndicate + setpiece_item = list( + /obj/item/toy/plush/rilena, + /obj/item/toy/plush/tali, + /obj/item/toy/plush/sharai, + /obj/item/toy/plush/xader, + /obj/item/toy/plush/mora, + /obj/item/toy/plush/kari + ) + /datum/map_template/ruin/jungle/interceptor name = "Old Crashed Interceptor" @@ -31,6 +51,7 @@ description = "A bombed out airbase from the ICW, taken back over by nature" suffix = "jungle_bombed_starport.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_HAZARDOUS, RUIN_TAG_LIVEABLE) + dynamic_mission_types = list(/datum/mission/dynamic/blackbox) /datum/map_template/ruin/jungle/medtech name = "MedTech facility" @@ -45,6 +66,10 @@ description = "A frontiersmen base, hidden within a cave. They don't seem friendly" suffix = "jungle_cavecrew.dmm" ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_HAZARDOUS, RUIN_TAG_LIVEABLE, RUIN_TAG_MAJOR_LOOT) + dynamic_mission_types = list( + /datum/mission/dynamic/signaled/kill/frontiersmen, + /datum/mission/dynamic/data_reterival + ) /datum/map_template/ruin/jungle/library name = "Abandoned Library" diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index f94d75bd71f9..aaac437efd7b 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -17,6 +17,7 @@ id = "buried_shrine" description = "An ancient temple belonging to some long-gone inhabitants, wrecked and buried by the volcanic activity of it's home planet." suffix = "lavaland_surface_buried_shrine.dmm" + dynamic_mission_types = list(/datum/mission/dynamic/signaled/kill/elite) /datum/map_template/ruin/lavaland/lava_canyon name = "Lava Canyon" @@ -29,15 +30,46 @@ id = "wreck_factory" description = "A Nanotrasen processing facility, assaulted by a pirate raid that has killed most of the staff. The offices however, remain unbreached for now." suffix = "lavaland_surface_wrecked_factory.dmm" + dynamic_mission_types = list( + /datum/mission/dynamic/nanotrasen_docs, + /datum/mission/dynamic/captain_medal, + /datum/mission/dynamic/brainchip + ) + +/datum/mission/dynamic/nanotrasen_docs + name = "recover some nanotrasen files." + value = 2500 + setpiece_item = /obj/item/documents/nanotrasen + +/datum/mission/dynamic/captain_medal + name = "recover my lost medal." + value = 1250 + setpiece_item = /obj/item/documents/nanotrasen + +/datum/mission/dynamic/brainchip + name = "one of our cargo techs died with some important tech in his head. get it back" + setpiece_item = /mob/living/carbon/human + +/obj/effect/landmark/mission_poi/main/implanted + var/implant_type = /obj/item/organ/cyberimp/brain/datachip + +/obj/effect/landmark/mission_poi/main/implanted/use_poi(_type_to_spawn) + var/mob/living/carbon/human/implanted = ..() + if(istype(implanted, /mob/living/carbon/human)) + var/obj/item/organ/implant = new implant_type() + implant.Insert(implanted) + return implant /datum/map_template/ruin/lavaland/fallenstar name = "Crashed Starwalker" id = "crashed_star" description = "A crashed pirate ship. It would seem that it's crew died a while ago." suffix = "lavaland_crashed_starwalker.dmm" + dynamic_mission_types = list(/datum/mission/dynamic/blackbox) /datum/map_template/ruin/lavaland/abandonedlisteningpost name = "Abandoned Listening Post" id = "abandonedlistening" description = "An abandoned Cybersun listening post. Seems like the Ramzi Clique has an interest in the site." suffix = "lavaland_abandonedlisteningpost.dmm" + dynamic_mission_types = list(/datum/mission/dynamic/blackbox) diff --git a/code/datums/ruins/rockplanet.dm b/code/datums/ruins/rockplanet.dm index 7382b2c5768a..3d879c3eb202 100644 --- a/code/datums/ruins/rockplanet.dm +++ b/code/datums/ruins/rockplanet.dm @@ -36,3 +36,4 @@ description = "A former pre-ICW era Nanotrasen outpost converted into a moonshine distillery by Frontiersman bootleggers." id = "rockplanet_distillery" suffix = "rockplanet_distillery.dmm" + dynamic_mission_types = list(/datum/mission/dynamic/signaled/kill/frontiersmen) diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index f8cda3a84426..7a56e1587919 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -12,6 +12,7 @@ name = "Corporate Mining Module" description = "An old and rusty mining facility, with big ore potential." ruin_tags = list(RUIN_TAG_NO_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_SHELTER) + dynamic_mission_types = list(/datum/mission/dynamic/signaled/drill) /datum/map_template/ruin/space/bigderelict1 id = "bigderelict1" @@ -35,6 +36,7 @@ description = "an abandoned secure storage location. there is no power left in the batteries and the former ocupants locked it pretty tight before leaving.\ You will have to power areas to raise the bolts on the doors. look out for secrets." ruin_tags = list(RUIN_TAG_MINOR_COMBAT, RUIN_TAG_MAJOR_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + dynamic_mission_types = list(/datum/mission/dynamic/data_reterival) /datum/map_template/ruin/space/astraeus id = "astraeus" diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index 53ccc590c72a..04b9b3badcbc 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -1,33 +1,7 @@ -/* -Unused icons for new areas are "awaycontent1" ~ "awaycontent30" -*/ - - -// Away Missions -/area/awaymission - name = "Strange Location" +/area/errorroom + name = "Super Secret Room" icon_state = "away" has_gravity = STANDARD_GRAVITY ambientsounds = AWAY_MISSION sound_environment = SOUND_ENVIRONMENT_ROOM - -/area/awaymission/beach - name = "Beach" - icon_state = "away" - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - requires_power = FALSE - has_gravity = STANDARD_GRAVITY - ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg','sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg') - -/area/awaymission/errorroom - name = "Super Secret Room" - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = STANDARD_GRAVITY - -/area/awaymission/vr - name = "Virtual Reality" - icon_state = "awaycontent1" - requires_power = FALSE dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - var/pacifist = TRUE // if when you enter this zone, you become a pacifist or not - var/death = FALSE // if when you enter this zone, you die diff --git a/code/game/machinery/bounty_board.dm b/code/game/machinery/bounty_board.dm deleted file mode 100644 index 4cc3413fe9d9..000000000000 --- a/code/game/machinery/bounty_board.dm +++ /dev/null @@ -1,191 +0,0 @@ -GLOBAL_LIST_EMPTY(allbountyboards) -GLOBAL_LIST_EMPTY(request_list) -/** - * A machine that acts basically like a quest board. - * Enables crew to create requests, crew can sign up to perform the request, and the requester can chose who to pay-out. - */ -/obj/machinery/bounty_board - name = "bounty board" - desc = "Alows you to place requests for goods and services across the sector, as well as pay those who actually did it." - icon = 'icons/obj/terminals.dmi' - icon_state = "request_kiosk" - light_color = LIGHT_COLOR_GREEN - ///Reference to the currently logged in user. - var/datum/bank_account/current_user - ///The station request datum being affected by UI actions. - var/datum/station_request/active_request - ///Value of the currently bounty input - var/bounty_value = 1 - ///Text of the currently written bounty - var/bounty_text = "" - -/obj/machinery/bounty_board/Initialize(mapload, ndir, building) - . = ..() - GLOB.allbountyboards += src - if(building) - setDir(ndir) - pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32) - pixel_y = (dir & 3)? (dir ==1 ? -32 : 32) : 0 - -/obj/machinery/bounty_board/Destroy() - GLOB.allbountyboards -= src - . = ..() - -/obj/machinery/bounty_board/attackby(obj/item/I, mob/living/user, params) - . = ..() - if(istype(I,/obj/item/card/bank)) - var/obj/item/card/bank/current_card = I - if(current_card.registered_account) - current_user = current_card.registered_account - return TRUE - to_chat(user, "There's no account assigned with this ID.") - return TRUE - if(I.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") - I.play_tool_sound(src) - if(I.use_tool(src, user, 30)) - playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) - if(machine_stat & BROKEN) - to_chat(user, "The broken remains of [src] fall on the ground.") - new /obj/item/stack/sheet/metal(loc, 3) - new /obj/item/shard(loc) - else - to_chat(user, "You [anchored ? "un" : ""]secure [name].") - new /obj/item/wallframe/bounty_board(loc) - qdel(src) - -/obj/machinery/bounty_board/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "RequestKiosk", name) - ui.open() - -/obj/machinery/bounty_board/ui_data(mob/user) - var/list/data = list() - var/list/formatted_requests = list() - var/list/formatted_applicants = list() - for(var/i in GLOB.request_list) - if(!i) - continue - var/datum/station_request/request = i - formatted_requests += list(list("owner" = request.owner, "value" = request.value, "description" = request.description, "acc_number" = request.req_number)) - if(request.applicants) - for(var/datum/bank_account/j in request.applicants) - formatted_applicants += list(list("name" = j.account_holder, "request_id" = request.owner_account.account_id, "requestee_id" = j.account_id)) - var/obj/item/card/bank/bank_card = user.get_bankcard() - if(bank_card?.registered_account) - current_user = bank_card.registered_account - if(current_user) - data["accountName"] = current_user.account_holder - data["requests"] = formatted_requests - data["applicants"] = formatted_applicants - data["bountyValue"] = bounty_value - data["bountyText"] = bounty_text - return data - -/obj/machinery/bounty_board/ui_act(action, list/params) - . = ..() - if(.) - return - - var/current_ref_num = params["request"] - var/current_app_num = params["applicant"] - var/datum/bank_account/request_target - if(current_ref_num) - for(var/datum/station_request/i in GLOB.request_list) - if("[i.req_number]" == "[current_ref_num]") - active_request = i - break - if(active_request) - for(var/datum/bank_account/j in active_request.applicants) - if("[j.account_id]" == "[current_app_num]") - request_target = j - break - switch(action) - if("createBounty") - if(!current_user || !bounty_text) - playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE) - return TRUE - for(var/datum/station_request/i in GLOB.request_list) - if("[i.req_number]" == "[current_user.account_id]") - say("Account already has active bounty.") - return - var/datum/station_request/curr_request = new /datum/station_request(current_user.account_holder, bounty_value,bounty_text,current_user.account_id, current_user) - GLOB.request_list += list(curr_request) - for(var/obj/i in GLOB.allbountyboards) - i.say("New bounty has been added!") - playsound(i.loc, 'sound/effects/cashregister.ogg', 30, TRUE) - if("apply") - if(!current_user) - say("Please swipe a valid ID first.") - return TRUE - if(current_user.account_holder == active_request.owner) - playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE) - return TRUE - active_request.applicants += list(current_user) - if("payApplicant") - if(!current_user) - return - if(!current_user.has_money(active_request.value) || (current_user.account_holder != active_request.owner)) - playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE) - return - request_target.transfer_money(current_user, active_request.value) - say("Paid out [active_request.value] credits.") - return TRUE - if("clear") - if(current_user) - current_user = null - say("Account Reset.") - return TRUE - if("deleteRequest") - if(!active_request || !current_user) - playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE) - return FALSE - if(active_request?.owner != current_user?.account_holder) - playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE) - return TRUE - say("Deleted current request.") - GLOB.request_list.Remove(active_request) - return TRUE - if("bountyVal") - bounty_value = text2num(params["bountyval"]) - if(!bounty_value) - bounty_value = 1 - if("bountyText") - bounty_text = (params["bountytext"]) - . = TRUE - -/obj/item/wallframe/bounty_board - name = "disassembled bounty board" - desc = "Used to build a new bounty board, just secure to the wall." - icon_state = "request_kiosk" - custom_materials = list(/datum/material/iron=14000, /datum/material/glass=8000) - result_path = /obj/machinery/bounty_board - inverse = FALSE - -/** - * A combined all in one datum that stores everything about the request, the requester's account, as well as the requestee's account - * All of this is passed to the Request Console UI in order to present in organized way. - */ -/datum/station_request - ///Name of the Request Owner. - var/owner - ///Value of the request. - var/value - ///Text description of the request to be shown within the UI. - var/description - ///Internal number of the request for organizing. Id card number. - var/req_number - ///The account of the request owner. - var/datum/bank_account/owner_account - ///the account of the request fulfiller. - var/list/applicants = list() - -/datum/station_request/New(owned, newvalue, newdescription, reqnum, own_account) - . = ..() - owner = owned - value = newvalue - description = newdescription - req_number = reqnum - if(istype(own_account, /datum/bank_account)) - owner_account = own_account diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 5e82266f186c..15aeebdd819c 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -352,9 +352,14 @@ //Supply /obj/item/circuitboard/computer/bounty - name = "\improper Nanotrasen Bounty Console (Computer Board)" + name = "\improper Outpost Bounty Console (Computer Board)" icon_state = "supply" - build_path = /obj/machinery/computer/bounty + build_path = /obj/machinery/computer/mission + +/obj/item/circuitboard/computer/mission + name = "\improper Outpost Mission Console" + icon_state = "supply" + build_path = /obj/machinery/computer/mission /obj/item/circuitboard/computer/cargo name = "Outpost Comms Console (Computer Board)" diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index e7e78abb4abc..da7885742c24 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -59,7 +59,7 @@ var/forgedseal = 0 var/copy_type = null -/obj/item/documents/photocopy/New(loc, obj/item/documents/copy=null) +/obj/item/documents/photocopy/New(loc, obj/item/documents/copy = null) ..() if(copy) copy_type = copy.type diff --git a/code/game/turfs/open/dirtystation.dm b/code/game/turfs/open/dirtystation.dm index 29e13585bb7d..ad0110abeb80 100644 --- a/code/game/turfs/open/dirtystation.dm +++ b/code/game/turfs/open/dirtystation.dm @@ -53,8 +53,7 @@ return //Bathrooms. Blood, vomit, and shavings in the sinks. - var/static/list/bathroom_dirt_areas = typecacheof(list( /area/ship/crew/toilet, - /area/awaymission/research/interior/bathroom)) + var/static/list/bathroom_dirt_areas = typecacheof(list(/area/ship/crew/toilet)) if(is_type_in_typecache(A, bathroom_dirt_areas)) if(prob(40)) if(prob(90)) diff --git a/code/modules/admin/verbs/outpost.dm b/code/modules/admin/verbs/outpost.dm index 25632838f45f..acace102e9b8 100644 --- a/code/modules/admin/verbs/outpost.dm +++ b/code/modules/admin/verbs/outpost.dm @@ -19,7 +19,7 @@ /client/proc/spawn_outpost() set name = "Spawn Outpost" - set category = "Event.Spawning" + set category = "Event.Overmap" set desc = "Spawns the selected /datum/overmap/outpost subtype." if(!holder) diff --git a/code/modules/admin/verbs/overmap_token_manager.dm b/code/modules/admin/verbs/overmap_token_manager.dm index 1dc57b17b05e..1555d38531ea 100644 --- a/code/modules/admin/verbs/overmap_token_manager.dm +++ b/code/modules/admin/verbs/overmap_token_manager.dm @@ -1,6 +1,6 @@ /client/proc/overmap_datum_token_manager() set name = "Overmap Datum Token Manager" - set category = "Admin.Game" + set category = "Event.Overmap" set desc = "Manage the tokens of the overmap datum." var/static/datum/overmap_datum_token_manager/manager diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 68a2f4675bdb..e08c15c373fd 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -832,7 +832,7 @@ /client/proc/spawn_ruin() set name = "Spawn Planet/Ruin" - set category = "Event.Spawning" + set category = "Event.Overmap" if(!check_rights(R_ADMIN) || !check_rights(R_SPAWN)) return @@ -882,14 +882,7 @@ encounter.choose_level_type(FALSE) if(!ruin_target) encounter.ruin_type = null - encounter.preserve_level = TRUE - encounter.load_level() - - message_admins(span_big("Click here to jump to the overmap token: " + ADMIN_JMP(encounter.token))) - message_admins(span_big("Click here to jump to the overmap dock: " + ADMIN_JMP(encounter.reserve_docks[1]))) - for(var/ruin in encounter.ruin_turfs) - var/turf/ruin_turf = encounter.ruin_turfs[ruin] - message_admins(span_big("Click here to jump to \"[ruin]\": " + ADMIN_JMP(ruin_turf))) + encounter.admin_load() /client/proc/smite(mob/living/target as mob) set name = "Smite" diff --git a/code/modules/admin/verbs/shuttlepanel.dm b/code/modules/admin/verbs/shuttlepanel.dm index bb3bd11b7f42..33bb0aba8c5f 100644 --- a/code/modules/admin/verbs/shuttlepanel.dm +++ b/code/modules/admin/verbs/shuttlepanel.dm @@ -1,5 +1,5 @@ /datum/admins/proc/open_shuttlepanel() - set category = "Event" + set category = "Event.Overmap" set name = "Shuttle Manipulator" set desc = "Opens the shuttle manipulator UI." diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 850d0e91ba09..58c25bf0bf64 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -1,34 +1,3 @@ - -//Academy Areas - -/area/awaymission/academy - name = "Academy Asteroids" - icon_state = "away" - -/area/awaymission/academy/headmaster - name = "Academy Fore Block" - icon_state = "away1" - -/area/awaymission/academy/classrooms - name = "Academy Classroom Block" - icon_state = "away2" - -/area/awaymission/academy/academyaft - name = "Academy Ship Aft Block" - icon_state = "away3" - -/area/awaymission/academy/academygate - name = "Academy Gateway" - icon_state = "away4" - -/area/awaymission/academy/academycellar - name = "Academy Cellar" - icon_state = "away4" - -/area/awaymission/academy/academyengine - name = "Academy Engine" - icon_state = "away4" - //Academy Items /obj/item/paper/fluff/awaymissions/academy/console_maint diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index bfbb8bbf52ea..2e289579be1a 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -1,40 +1,3 @@ - -/*Cabin areas*/ -/area/awaymission/cabin - name = "Cabin" - icon_state = "away2" - requires_power = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - -/area/awaymission/cabin/snowforest - name = "Snow Forest" - icon_state = "away" - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - -/area/awaymission/cabin/snowforest/sovietsurface - name = "Snow Forest" - icon_state = "awaycontent29" - requires_power = FALSE - -/area/awaymission/cabin/lumbermill - name = "Lumbermill" - icon_state = "away3" - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - -/area/awaymission/cabin/caves/sovietcave - name = "Soviet Bunker" - icon_state = "awaycontent4" - -/area/awaymission/cabin/caves - name = "North Snowdin Caves" - icon_state = "awaycontent15" - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - -/area/awaymission/cabin/caves/mountain - name = "North Snowdin Mountains" - icon_state = "awaycontent24" - /obj/structure/firepit name = "firepit" desc = "Warm and toasty." diff --git a/code/modules/awaymissions/mission_code/caves.dm b/code/modules/awaymissions/mission_code/caves.dm index abaaceefd604..8ace0c86bb0c 100644 --- a/code/modules/awaymissions/mission_code/caves.dm +++ b/code/modules/awaymissions/mission_code/caves.dm @@ -1,33 +1,3 @@ -//Areas - -/area/awaymission/caves/BMP_asteroid - name = "\improper BMP Asteroid Level 1" - icon_state = "awaycontent1" - -/area/awaymission/caves/BMP_asteroid/level_two - name = "\improper BMP Asteroid Level 2" - icon_state = "awaycontent2" - -/area/awaymission/caves/BMP_asteroid/level_three - name = "\improper BMP Asteroid Level 3" - icon_state = "awaycontent3" - -/area/awaymission/caves/BMP_asteroid/level_four - name = "\improper BMP Asteroid Level 4" - icon_state = "awaycontent4" - -/area/awaymission/caves/research - name = "Research Outpost" - icon_state = "awaycontent5" - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - -/area/awaymission/caves/northblock //engineering, bridge (not really north but it doesnt really need its own APC) - -/area/awaymission/caves/listeningpost - name = "Listening Post" - icon_state = "awaycontent6" - requires_power = FALSE - //caves papers /obj/item/paper/crumpled/awaymissions/caves/unsafe_area diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm index 60741701b4d8..7bcafb0d1345 100644 --- a/code/modules/awaymissions/mission_code/centcomAway.dm +++ b/code/modules/awaymissions/mission_code/centcomAway.dm @@ -1,39 +1,3 @@ -//centcomAway areas - -/area/awaymission/centcomAway - name = "XCC-P5831" - icon_state = "away" - requires_power = FALSE - -/area/awaymission/centcomAway/general - name = "XCC-P5831" - ambientsounds = list('sound/ambience/ambigen3.ogg') - -/area/awaymission/centcomAway/maint - name = "XCC-P5831 Maintenance" - icon_state = "away1" - ambientsounds = list('sound/ambience/ambisin1.ogg') - -/area/awaymission/centcomAway/thunderdome - name = "XCC-P5831 Thunderdome" - icon_state = "away2" - ambientsounds = list('sound/ambience/ambisin2.ogg') - -/area/awaymission/centcomAway/cafe - name = "XCC-P5831 Kitchen Arena" - icon_state = "away3" - ambientsounds = list('sound/ambience/ambisin3.ogg') - -/area/awaymission/centcomAway/courtroom - name = "XCC-P5831 Courtroom" - icon_state = "away4" - ambientsounds = list('sound/ambience/ambisin4.ogg') - -/area/awaymission/centcomAway/hangar - name = "XCC-P5831 Hangars" - icon_state = "away4" - ambientsounds = list('sound/ambience/ambigen5.ogg') - //centcomAway items /obj/item/paper/pamphlet/centcom/visitor_info diff --git a/code/modules/awaymissions/mission_code/challenge.dm b/code/modules/awaymissions/mission_code/challenge.dm index 6f8bb473b77a..9e8abe6356b6 100644 --- a/code/modules/awaymissions/mission_code/challenge.dm +++ b/code/modules/awaymissions/mission_code/challenge.dm @@ -1,20 +1,3 @@ -//Challenge Areas - -/area/awaymission/challenge/start - name = "Where Am I?" - icon_state = "away" - -/area/awaymission/challenge/main - name = "Danger Room" - icon_state = "away1" - requires_power = FALSE - -/area/awaymission/challenge/end - name = "Administration" - icon_state = "away2" - requires_power = FALSE - - /obj/machinery/power/emitter/energycannon name = "Energy Cannon" desc = "A heavy duty industrial laser." diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index 914a1f2828c7..10bb96c12baa 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -1,8 +1,3 @@ -/area/awaymission/vr/murderdome - name = "Murderdome" - icon_state = "awaycontent8" - pacifist = FALSE - /obj/structure/window/reinforced/fulltile/indestructable name = "robust window" flags_1 = PREVENT_CLICK_UNDER_1 | NODECONSTRUCT_1 diff --git a/code/modules/awaymissions/mission_code/research.dm b/code/modules/awaymissions/mission_code/research.dm index b3e4ff8b863b..de1a8c88e574 100644 --- a/code/modules/awaymissions/mission_code/research.dm +++ b/code/modules/awaymissions/mission_code/research.dm @@ -1,67 +1,3 @@ -//Research Base Areas//-- - -/area/awaymission/research - name = "Research Outpost" - icon_state = "away" - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - -/area/awaymission/research/interior - name = "Research Inside" - requires_power = TRUE - icon_state = "away2" - -/area/awaymission/research/interior/cryo - name = "Research Cryostasis Room" - icon_state = "medbay" - -/area/awaymission/research/interior/clonestorage - name = "Research Clone Storage" - icon_state = "cloning" - -/area/awaymission/research/interior/genetics - name = "Research Genetics Research" - icon_state = "genetics" - -/area/awaymission/research/interior/engineering - name = "Research Engineering" - icon_state = "engine" - -/area/awaymission/research/interior/security - name = "Research Security" - icon_state = "security" - -/area/awaymission/research/interior/secure - name = "Research Secure Vault" - -/area/awaymission/research/interior/maint - name = "Research Maintenance" - icon_state = "maintcentral" - -/area/awaymission/research/interior/dorm - name = "Research Dorms" - icon_state = "Sleep" - -/area/awaymission/research/interior/escapepods - name = "Research Escape Wing" - icon_state = "exit" - -/area/awaymission/research/interior/gateway - name = "Research Gateway" - icon_state = "start" - -/area/awaymission/research/interior/bathroom - name = "Research Bathrooms" - icon_state = "restrooms" - -/area/awaymission/research/interior/medbay - name = "Research Medbay" - icon_state = "medbay" - -/area/awaymission/research/exterior - name = "Research Exterior" - icon_state = "unknown" - - //research papers /obj/item/paper/crumpled/awaymissions/research/sensitive_info diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 210a5cec7a47..fcd10c7c48d1 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -1,134 +1,3 @@ -//Snow Valley Areas//-- - -/area/awaymission/snowdin - name = "Snowdin" - icon_state = "awaycontent1" - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - -/area/awaymission/snowdin/outside - name = "Snowdin Tundra Plains" - icon_state = "awaycontent25" - -/area/awaymission/snowdin/post - name = "Snowdin Outpost" - icon_state = "awaycontent2" - requires_power = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - -/area/awaymission/snowdin/post/medbay - name = "Snowdin Outpost - Medbay" - icon_state = "awaycontent3" - -/area/awaymission/snowdin/post/secpost - name = "Snowdin Outpost - Security Checkpoint" - icon_state = "awaycontent4" - -/area/awaymission/snowdin/post/hydro - name = "Snowdin Outpost - Hydroponics" - icon_state = "awaycontent5" - -/area/awaymission/snowdin/post/messhall - name = "Snowdin Outpost - Mess Hall" - icon_state = "awaycontent6" - -/area/awaymission/snowdin/post/gateway - name = "Snowdin Outpost - Gateway" - icon_state = "awaycontent7" - -/area/awaymission/snowdin/post/dorm - name = "Snowdin Outpost - Dorms" - icon_state = "awaycontent8" - -/area/awaymission/snowdin/post/kitchen - name = "Snowdin Outpost - Kitchen" - icon_state = "awaycontent9" - -/area/awaymission/snowdin/post/engineering - name = "Snowdin Outpost - Engineering" - icon_state = "awaycontent10" - -/area/awaymission/snowdin/post/custodials - name = "Snowdin Outpost - Custodials" - icon_state = "awaycontent11" - -/area/awaymission/snowdin/post/research - name = "Snowdin Outpost - Research Area" - icon_state = "awaycontent12" - -/area/awaymission/snowdin/post/garage - name = "Snowdin Outpost - Garage" - icon_state = "awaycontent13" - -/area/awaymission/snowdin/post/minipost - name = "Snowdin Outpost - Recon Post" - icon_state = "awaycontent19" - -/area/awaymission/snowdin/post/mining_main - name = "Snowdin Outpost - Mining Post" - icon_state = "awaycontent21" - -/area/awaymission/snowdin/post/mining_main/mechbay - name = "Snowdin Outpost - Mining Post Mechbay" - icon_state = "awaycontent25" - -/area/awaymission/snowdin/post/mining_main/robotics - name = "Snowdin Outpost - Mining Post Robotics" - icon_state = "awaycontent26" - -/area/awaymission/snowdin/post/cavern1 - name = "Snowdin Outpost - Cavern Outpost 1" - icon_state = "awaycontent27" - -/area/awaymission/snowdin/post/cavern2 - name = "Snowdin Outpost - Cavern Outpost 2" - icon_state = "awaycontent28" - -/area/awaymission/snowdin/post/mining_dock - name = "Snowdin Outpost - Underground Mine Post" - icon_state = "awaycontent22" - -/area/awaymission/snowdin/post/broken_shuttle - name = "Snowdin Outpost - Broken Transit Shuttle" - icon_state = "awaycontent20" - requires_power = FALSE - -/area/awaymission/snowdin/igloo - name = "Snowdin Igloos" - icon_state = "awaycontent14" - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - -/area/awaymission/snowdin/cave - name = "Snowdin Caves" - icon_state = "awaycontent15" - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - -/area/awaymission/snowdin/cave/cavern - name = "Snowdin Depths" - icon_state = "awaycontent23" - -/area/awaymission/snowdin/cave/mountain - name = "Snowdin Mountains" - icon_state = "awaycontent24" - - -/area/awaymission/snowdin/base - name = "Snowdin Main Base" - icon_state = "awaycontent16" - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - requires_power = TRUE - -/area/awaymission/snowdin/dungeon1 - name = "Snowdin Depths" - icon_state = "awaycontent17" - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - -/area/awaymission/snowdin/sekret - name = "Snowdin Operations" - icon_state = "awaycontent18" - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - requires_power = TRUE - //liquid plasma!!!!!!// /turf/open/floor/plasteel/dark/snowdin diff --git a/code/modules/awaymissions/mission_code/spacebattle.dm b/code/modules/awaymissions/mission_code/spacebattle.dm index f0131d830cd0..9a63a6fdbfa9 100644 --- a/code/modules/awaymissions/mission_code/spacebattle.dm +++ b/code/modules/awaymissions/mission_code/spacebattle.dm @@ -1,46 +1,3 @@ -//Spacebattle Areas - -/area/awaymission/spacebattle - name = "Space Battle" - icon_state = "awaycontent1" - requires_power = FALSE - -/area/awaymission/spacebattle/cruiser - name = "\improper Nanotrasen Cruiser" - icon_state = "awaycontent2" - -/area/awaymission/spacebattle/syndicate1 - name = "Syndicate Assault Ship 1" - icon_state = "awaycontent3" - -/area/awaymission/spacebattle/syndicate2 - name = "Syndicate Assault Ship 2" - icon_state = "awaycontent4" - -/area/awaymission/spacebattle/syndicate3 - name = "Syndicate Assault Ship 3" - icon_state = "awaycontent5" - -/area/awaymission/spacebattle/syndicate4 - name = "Syndicate War Sphere 1" - icon_state = "awaycontent6" - -/area/awaymission/spacebattle/syndicate5 - name = "Syndicate War Sphere 2" - icon_state = "awaycontent7" - -/area/awaymission/spacebattle/syndicate6 - name = "Syndicate War Sphere 3" - icon_state = "awaycontent8" - -/area/awaymission/spacebattle/syndicate7 - name = "Syndicate Fighter" - icon_state = "awaycontent9" - -/area/awaymission/spacebattle/secret - name = "Hidden Chamber" - icon_state = "awaycontent10" - /mob/living/simple_animal/hostile/human/syndicate/ranged/spacebattle loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier, /obj/item/gun/ballistic/automatic/smg/cobra, diff --git a/code/modules/awaymissions/mission_code/undergroundoutpost45.dm b/code/modules/awaymissions/mission_code/undergroundoutpost45.dm deleted file mode 100644 index 415303202430..000000000000 --- a/code/modules/awaymissions/mission_code/undergroundoutpost45.dm +++ /dev/null @@ -1,39 +0,0 @@ -// undergroundoutpost45 - -//Areas -/area/awaymission/undergroundoutpost45 - name = "space" - icon_state = "awaycontent1" - -/area/awaymission/undergroundoutpost45/central - name = "UO45 Central Hall" - icon_state = "awaycontent2" - -/area/awaymission/undergroundoutpost45/crew_quarters - name = "UO45 Crew Quarters" - icon_state = "awaycontent3" - -/area/awaymission/undergroundoutpost45/engineering - name = "UO45 Engineering" - icon_state = "awaycontent4" - -/area/awaymission/undergroundoutpost45/mining - name = "UO45 Mining" - icon_state = "awaycontent5" - -/area/awaymission/undergroundoutpost45/research - name = "UO45 Research" - icon_state = "awaycontent6" - -/area/awaymission/undergroundoutpost45/gateway - name = "UO45 Gateway" - icon_state = "awaycontent7" - -/area/awaymission/undergroundoutpost45/caves - name = "UO45 Caves" - icon_state = "awaycontent8" - always_unpowered = TRUE - power_environ = FALSE - power_equip = FALSE - power_light = FALSE - poweralm = FALSE diff --git a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm index 65a72290bf07..6e8c37e46813 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm @@ -76,12 +76,14 @@ availability_prob = 40 /datum/blackmarket_item/consumable/trickwine/spawn_item(loc) - var/trickwine = pick(list(/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine, - /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine)) + var/trickwine = pick(list( + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine, + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine, + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine, + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine, + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine, + /obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine + )) return new trickwine(loc) /datum/blackmarket_item/consumable/stimpack diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm deleted file mode 100644 index 37507132a865..000000000000 --- a/code/modules/cargo/bounties/assistant.dm +++ /dev/null @@ -1,219 +0,0 @@ -/datum/bounty/item/assistant/strange_object - name = "Strange Object" - description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away." - reward = 1200 - wanted_types = list(/obj/item/relic) - -/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 = 1080 // the mat hoffman - wanted_types = list(/obj/vehicle/ridden/scooter) - 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 = 900 // the tony hawk - wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/skateboard) - -/datum/bounty/item/assistant/stunprod - name = "Stunprod" - description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it." - reward = 1300 - wanted_types = list(/obj/item/melee/baton/cattleprod) - -/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 = 2000 - required_count = 3 - wanted_types = list(/obj/item/soap) - -/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 = 2000 - required_count = 5 - wanted_types = list(/obj/item/melee/spear) - -/datum/bounty/item/assistant/toolbox - name = "Toolboxes" - description = "There's an absence of robustness at Central Command. Hurry up and ship some toolboxes as a solution." - reward = 2000 - required_count = 6 - wanted_types = list(/obj/item/storage/toolbox) - -/datum/bounty/item/assistant/statue - name = "Statue" - description = "Central Command would like to commision an artsy statue for the lobby. Ship one out, when possible." - reward = 2000 - wanted_types = list(/obj/structure/statue) - -/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 = 1500 - wanted_types = list(/obj/item/storage/box/clown) - -/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 = 1200 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/cheesiehonkers) - -/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 = 2000 - required_count = 5 - wanted_types = list(/obj/item/melee/baseball_bat) - -/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 = 2500 - wanted_types = list(/obj/item/extendohand) - -/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 = 3000 - required_count = 10 - wanted_types = list(/obj/item/reagent_containers/food/snacks/donut) - -/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 = 3000 - required_count = 10 - wanted_types = list(/obj/item/reagent_containers/food/snacks/donkpocket) - -/datum/bounty/item/assistant/briefcase - name = "Briefcase" - description = "Central Command will be holding a business convention this year. Ship a few briefcases in support." - reward = 2500 - required_count = 5 - wanted_types = list(/obj/item/storage/briefcase, /obj/item/storage/secure/briefcase) - -/datum/bounty/item/assistant/sunglasses - name = "Sunglasses" - description = "A famous blues duo is passing through the sector, but they've lost their shades and they can't perform. Ship new sunglasses to CentCom to rectify this." - reward = 3000 - required_count = 2 - wanted_types = list(/obj/item/clothing/glasses/sunglasses) - -/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 = 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." - reward = 1500 - required_count = 5 - wanted_types = list(/obj/structure/chair/comfy) - -/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 = 4000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium) - -/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 = 1000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy) - 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 = 2000 - required_count = 8 - wanted_types = list(/obj/item/kirbyplants) - -/datum/bounty/item/assistant/earmuffs - name = "Earmuffs" - description = "Central Command is getting tired of your station's messages. They've ordered that you ship some earmuffs to lessen the annoyance." - reward = 1000 - wanted_types = list(/obj/item/clothing/ears/earmuffs) - -/datum/bounty/item/assistant/handcuffs - name = "Handcuffs" - description = "A large influx of escaped convicts have arrived at Central Command. Now is the perfect time to ship out spare handcuffs (or restraints)." - reward = 1000 - required_count = 5 - wanted_types = list(/obj/item/restraints/handcuffs) - -/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 = 2000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube) - -/datum/bounty/item/assistant/chainsaw - name = "Chainsaw" - description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please." - reward = 2500 - wanted_types = list(/obj/item/chainsaw) - -/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 = 2000 - required_count = 3 - wanted_types = list(/obj/item/grenade/iedcasing) - -/datum/bounty/item/assistant/bonfire - name = "Lit Bonfire" - description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up." - reward = 5000 - wanted_types = list(/obj/structure/bonfire) - -/datum/bounty/item/assistant/bonfire/applies_to(obj/O) - if(!..()) - return FALSE - var/obj/structure/bonfire/B = O - return !!B.burning - -/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 = 3000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi) - -/datum/bounty/item/assistant/corgifarming - name = "Corgi Hides" - description = "Admiral Weinstein's space yacht needs new upholstery. A dozen Corgi furs should do just fine." - reward = 30000 //that's a lot of dead dogs - required_count = 12 - wanted_types = list(/obj/item/stack/sheet/animalhide/corgi) - -/datum/bounty/item/assistant/action_figures - name = "Action Figures" - description = "The vice president's son saw an ad for action figures on the telescreen and now he won't shut up about them. Ship some to ease his complaints." - reward = 4000 - required_count = 5 - wanted_types = list(/obj/item/toy/figure) - -/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 = 5000 - required_count = 5 - wanted_types = list(/obj/item/reagent_containers/food/snacks/deadmouse) diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm deleted file mode 100644 index 183d601c61d8..000000000000 --- a/code/modules/cargo/bounties/botany.dm +++ /dev/null @@ -1,201 +0,0 @@ -/datum/bounty/item/botany - reward = 5000 - var/datum/bounty/item/botany/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations - var/datum/bounty/item/botany/bonus_desc //for adding extra flavor text to bounty descriptions - var/datum/bounty/item/botany/foodtype = "meal" //same here - -/datum/bounty/item/botany/New() - ..() - description = "Central Command's head chef is looking to prepare a fine [foodtype] with [name]. [bonus_desc]" - reward += multiplier * 1000 - required_count = rand(5, 10) - -/datum/bounty/item/botany/ambrosia_vulgaris - name = "Ambrosia Vulgaris Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris) - foodtype = "stew" - -/datum/bounty/item/botany/ambrosia_gaia - name = "Ambrosia Gaia Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia) - multiplier = 4 - foodtype = "stew" - -/datum/bounty/item/botany/apple_golden - name = "Golden Apples" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold) - multiplier = 4 - foodtype = "dessert" - -/datum/bounty/item/botany/banana - name = "Bananas" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace) - foodtype = "banana split" - -/datum/bounty/item/botany/banana_bluespace - name = "Bluespace Bananas" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace) - multiplier = 2 - foodtype = "banana split" - -/datum/bounty/item/botany/beans_koi - name = "Koi Beans" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/koibeans) - multiplier = 2 - -/datum/bounty/item/botany/berries_death - name = "Death Berries" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/death) - multiplier = 2 - bonus_desc = "He insists that \"he knows what he's doing\"." - foodtype = "sorbet" - -/datum/bounty/item/botany/berries_glow - name = "Glow-Berries" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/glow) - multiplier = 2 - foodtype = "sorbet" - -/datum/bounty/item/botany/cannabis - name = "Cannabis Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white, /obj/item/reagent_containers/food/snacks/grown/cannabis/death, /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate) - multiplier = 4 //hush money - bonus_desc = "Do not mention this shipment to security." - foodtype = "batch of \"muffins\"" - -/datum/bounty/item/botany/cannabis_white - name = "Lifeweed Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white) - multiplier = 6 - bonus_desc = "Do not mention this shipment to security." - foodtype = "\"meal\"" - -/datum/bounty/item/botany/cannabis_death - name = "Deathweed Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/death) - multiplier = 6 - bonus_desc = "Do not mention this shipment to security." - foodtype = "\"meal\"" - -/datum/bounty/item/botany/cannabis_ultimate - name = "Omega Weed Leaves" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate) - multiplier = 6 - bonus_desc = "Under no circumstances mention this shipment to security." - foodtype = "batch of \"brownies\"" - -/datum/bounty/item/botany/wheat - name = "Wheat Grains" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/wheat) - -/datum/bounty/item/botany/rice - name = "Rice Grains" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/rice) - -/datum/bounty/item/botany/chili - name = "Chili Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/chili) - -/datum/bounty/item/botany/ice_chili - name = "Chilly Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper) - multiplier = 2 - -/datum/bounty/item/botany/ghost_chili - name = "Ghost Chili Peppers" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili) - multiplier = 2 - -/datum/bounty/item/botany/citrus_lime - name = "Limes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime) - foodtype = "sorbet" - -/datum/bounty/item/botany/citrus_lemon - name = "Lemons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lemon) - foodtype = "sorbet" - -/datum/bounty/item/botany/citrus_oranges - name = "Oranges" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/orange) - bonus_desc = "Do not ship lemons or limes." //I vanted orahnge! - foodtype = "sorbet" - -/datum/bounty/item/botany/eggplant - name = "Eggplants" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/eggplant) - bonus_desc = "Not to be confused with egg-plants." - -/datum/bounty/item/botany/eggplant_eggy - name = "Egg-plants" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy) - bonus_desc = "Not to be confused with eggplants." - multiplier = 2 - -/datum/bounty/item/botany/kudzu - name = "Kudzu Pods" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod) - bonus_desc = "Store in a dry, dark place." - multiplier = 4 - -/datum/bounty/item/botany/watermelon - name = "Watermelons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/watermelon) - foodtype = "dessert" - -/datum/bounty/item/botany/watermelon_holy - name = "Holy Melons" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon) - multiplier = 2 - foodtype = "dessert" - -/datum/bounty/item/botany/glowshroom - name = "Glowshrooms" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap, /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) - foodtype = "omelet" - -/datum/bounty/item/botany/glowshroom_cap - name = "Glowcaps" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap) - multiplier = 2 - foodtype = "omelet" - -/datum/bounty/item/botany/glowshroom_shadow - name = "Shadowshrooms" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom) - multiplier = 2 - foodtype = "omelet" - -/datum/bounty/item/botany/nettles_death - name = "Death Nettles" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/nettle/death) - multiplier = 2 - bonus_desc = "Wear protection when handling them." - foodtype = "cheese" - -/datum/bounty/item/botany/pineapples - name = "Pineapples" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple) - bonus_desc = "Not for human consumption." - foodtype = "ashtray" - -/datum/bounty/item/botany/tomato - name = "Tomatoes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato) - exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue) - -/datum/bounty/item/botany/tomato_bluespace - name = "Bluespace Tomatoes" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace) - multiplier = 4 - -/datum/bounty/item/botany/oatz - name = "Oats" - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/oat) - multiplier = 2 - foodtype = "batch of oatmeal" - bonus_desc = "Squats and oats. We're all out of oats." diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm deleted file mode 100644 index 969a41601fbb..000000000000 --- a/code/modules/cargo/bounties/chef.dm +++ /dev/null @@ -1,138 +0,0 @@ -/datum/bounty/item/chef/birthday_cake - name = "Birthday Cake" - description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!" - reward = 4000 - wanted_types = list(/obj/item/food/cake/birthday, /obj/item/food/cakeslice/birthday) - -/datum/bounty/item/chef/soup - name = "Soup" - description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup." - reward = 3000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/soup) - -/datum/bounty/item/chef/popcorn - name = "Popcorn Bags" - description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion." - reward = 3000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn) - -/datum/bounty/item/chef/onionrings - name = "Onion Rings" - description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support." - reward = 3000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings) - -/datum/bounty/item/chef/icecreamsandwich - name = "Ice Cream Sandwiches" - description = "Upper management has been screaming non-stop for ice cream. Please send some." - reward = 4000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich) - -/datum/bounty/item/chef/strawberryicecreamsandwich - name = " Strawberry Ice Cream Sandwiches" - description = "Upper management has been screaming non-stop for more flavourful ice cream. Please send some." - reward = 5000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/strawberryicecreamsandwich) - -/datum/bounty/item/chef/bread - name = "Bread" - description = "Problems with central planning have led to bread prices skyrocketing. Ship some bread to ease tensions." - reward = 1000 - wanted_types = list(/obj/item/food/bread, /obj/item/food/breadslice, /obj/item/reagent_containers/food/snacks/bun, /obj/item/reagent_containers/food/snacks/pizzabread, /obj/item/reagent_containers/food/snacks/rawpastrybase) - -/datum/bounty/item/chef/pie - name = "Pie" - description = "3.14159? No! CentCom management wants edible pie! Ship a whole one." - reward = 3142 - wanted_types = list(/obj/item/reagent_containers/food/snacks/pie) - -/datum/bounty/item/chef/salad - name = "Salad or Rice Bowls" - description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls." - reward = 3000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/salad) - -/datum/bounty/item/chef/carrotfries - name = "Carrot Fries" - description = "Night sight can mean life or death! A shipment of carrot fries is the order." - reward = 3500 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/carrotfries) - -/datum/bounty/item/chef/superbite - name = "Super Bite Burger" - description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him." - reward = 12000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite) - -/datum/bounty/item/chef/poppypretzel - name = "Poppy Pretzel" - description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test." - reward = 3000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel) - -/datum/bounty/item/chef/cubancarp - name = "Cuban Carp" - description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom." - reward = 8000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/cubancarp) - -/datum/bounty/item/chef/hotdog - name = "Hot Dog" - description = "Nanotrasen is conducting taste tests to determine the best hot dog recipe. Ship your station's version to participate." - reward = 8000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/hotdog) - -/datum/bounty/item/chef/eggplantparm - name = "Eggplant Parmigianas" - description = "A famous singer will be arriving at CentCom, and their contract demands that they only be served Eggplant Parmigiana. Ship some, please!" - reward = 3500 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/eggplantparm) - -/datum/bounty/item/chef/muffin - name = "Muffins" - description = "The Muffin Man is visiting CentCom, but he's forgotten his muffins! Your order is to rectify this." - reward = 3000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/muffin) - -/datum/bounty/item/chef/chawanmushi - name = "Chawanmushi" - description = "Nanotrasen wants to improve relations with its sister company, Japanotrasen. Ship Chawanmushi immediately." - reward = 8000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/chawanmushi) - -/datum/bounty/item/chef/kebab - name = "Kebabs" - description = "Remove all kebab from station you are best food. Ship to CentCom to remove from the premises." - reward = 3500 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab) - -/datum/bounty/item/chef/soylentgreen - name = "Soylent Green" - description = "CentCom has heard wonderful things about the product 'Soylent Green', and would love to try some. If you endulge them, expect a pleasant bonus." - reward = 5000 - wanted_types = list(/obj/item/reagent_containers/food/snacks/soylentgreen) - -/datum/bounty/item/chef/pancakes - name = "Pancakes" - description = "Here at Nanotrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen." - reward = 5000 - required_count = 13 - wanted_types = list(/obj/item/reagent_containers/food/snacks/pancakes) - -/datum/bounty/item/chef/nuggies - name = "Chicken Nuggets" - description = "The vice president's son won't shut up about chicken nuggies. Would you mind shipping some?" - reward = 4000 - required_count = 6 - wanted_types = list(/obj/item/reagent_containers/food/snacks/nugget) - diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm deleted file mode 100644 index d4832a460fbc..000000000000 --- a/code/modules/cargo/bounties/engineering.dm +++ /dev/null @@ -1,40 +0,0 @@ -/datum/bounty/item/engineering/gas - name = "Full Tank of Pluoxium" - description = "CentCom RnD is researching extra compact internals. Ship us a tank full of Pluoxium and you'll be compensated." - reward = 7500 - wanted_types = list(/obj/item/tank) - var/moles_required = 20 // A full tank is 28 moles, but CentCom ignores that fact. - var/gas_type = GAS_PLUOXIUM - -/datum/bounty/item/engineering/gas/applies_to(obj/O) - if(!..()) - return FALSE - var/obj/item/tank/T = O - return T.air_contents.get_moles(gas_type) >= moles_required - -/datum/bounty/item/engineering/gas/nitryl_tank - name = "Full Tank of Nitryl" - description = "The non-human staff of Station 88 has been volunteered to test performance enhancing drugs. Ship them a tank full of Nitryl so they can get started." - gas_type = GAS_NITRYL - -/datum/bounty/item/engineering/gas/freon_tank - name = "Full Tank of Freon" - description = "The Supermatter of station 33 has started the delamination process. Deliver a tank of Freon gas to help them stop it!" - gas_type = GAS_FREON - -/datum/bounty/item/engineering/gas/tritium_tank - name = "Full Tank of Tritium" - description = "Station 49 is looking to kickstart their research program. Ship them a tank full of Tritium." - gas_type = GAS_TRITIUM - -/datum/bounty/item/engineering/energy_ball - name = "Contained Tesla Ball" - description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper." - reward = 75000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle - wanted_types = list(/obj/singularity/energy_ball) - -/datum/bounty/item/engineering/energy_ball/applies_to(obj/O) - if(!..()) - return FALSE - var/obj/singularity/energy_ball/T = O - return !T.miniball diff --git a/code/modules/cargo/bounties/item.dm b/code/modules/cargo/bounties/item.dm deleted file mode 100644 index b2586d7c5bad..000000000000 --- a/code/modules/cargo/bounties/item.dm +++ /dev/null @@ -1,39 +0,0 @@ -/datum/bounty/item - var/required_count = 1 - var/shipped_count = 0 - var/list/wanted_types // Types accepted for the bounty. - var/include_subtypes = TRUE // Set to FALSE to make the datum apply only to a strict type. - var/list/exclude_types // Types excluded. - -/datum/bounty/item/New() - ..() - wanted_types = typecacheof(wanted_types) - exclude_types = typecacheof(exclude_types) - -/datum/bounty/item/completion_string() - return {"[shipped_count]/[required_count]"} - -/datum/bounty/item/can_claim() - return ..() && shipped_count >= required_count - -/datum/bounty/item/applies_to(obj/O) - if(!include_subtypes && !(O.type in wanted_types)) - return FALSE - if(include_subtypes && (!is_type_in_typecache(O, wanted_types) || is_type_in_typecache(O, exclude_types))) - return FALSE - if(O.flags_1 & HOLOGRAM_1) - return FALSE - return shipped_count < required_count - -/datum/bounty/item/ship(obj/O) - if(!applies_to(O)) - return - if(istype(O,/obj/item/stack)) - var/obj/item/stack/O_is_a_stack = O - shipped_count += O_is_a_stack.amount - else - shipped_count += 1 - -/datum/bounty/item/compatible_with(datum/other_bounty) - return type != other_bounty.type - diff --git a/code/modules/cargo/bounties/mech.dm b/code/modules/cargo/bounties/mech.dm deleted file mode 100644 index 62c846ea96a3..000000000000 --- a/code/modules/cargo/bounties/mech.dm +++ /dev/null @@ -1,44 +0,0 @@ -/datum/bounty/item/mech/New() - ..() - description = "Upper management has requested one [name] mech be sent as soon as possible. Ship it to receive a large payment." - -/datum/bounty/item/mech/ship(obj/O) - if(!applies_to(O)) - return - if(istype(O, /obj/mecha)) - var/obj/mecha/M = O - M.wreckage = null // So the mech doesn't explode. - ..() - -/datum/bounty/item/mech/mark_high_priority(scale_reward) - return ..(max(scale_reward * 0.7, 1.2)) - -/datum/bounty/item/mech/ripleymkii - name = "APLU MK-II \"Ripley\"" - reward = 13000 - wanted_types = list(/obj/mecha/working/ripley/mkii) - -/datum/bounty/item/mech/firefighter - name = "APLU \"Firefighter\"" - reward = 18000 - wanted_types = list(/obj/mecha/working/ripley/firefighter) - -/datum/bounty/item/mech/odysseus - name = "Odysseus" - reward = 11000 - wanted_types = list(/obj/mecha/medical/odysseus) - -/datum/bounty/item/mech/gygax - name = "Gygax" - reward = 28000 - wanted_types = list(/obj/mecha/combat/gygax) - -/datum/bounty/item/mech/durand - name = "Durand" - reward = 20000 - wanted_types = list(/obj/mecha/combat/durand) - -/datum/bounty/item/mech/phazon - name = "Phazon" - reward = 50000 - wanted_types = list(/obj/mecha/combat/phazon) diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm deleted file mode 100644 index c0bcb1bd6f69..000000000000 --- a/code/modules/cargo/bounties/medical.dm +++ /dev/null @@ -1,47 +0,0 @@ -/datum/bounty/item/medical/heart - name = "Heart" - description = "Commander Johnson is in critical condition after suffering yet another heart attack. Doctors say he needs a new heart fast. Ship one, pronto!" - reward = 3000 - wanted_types = list(/obj/item/organ/heart) - -/datum/bounty/item/medical/lung - name = "Lungs" - description = "A recent explosion at Central Command has left multiple staff with punctured lungs. Ship spare lungs to be rewarded." - reward = 10000 - required_count = 3 - wanted_types = list(/obj/item/organ/lungs) - -/datum/bounty/item/medical/appendix - name = "Appendix" - description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay." - reward = 5000 //there are no synthetic appendixes - wanted_types = list(/obj/item/organ/appendix) - -/datum/bounty/item/medical/ears - name = "Ears" - description = "Multiple staff at Station 12 have been left deaf due to unauthorized clowning. Ship them new ears." - reward = 10000 - required_count = 3 - wanted_types = list(/obj/item/organ/ears) - -/datum/bounty/item/medical/liver - name = "Livers" - description = "Multiple high-ranking CentCom diplomats have been hospitalized with liver failure after a recent meeting. Help us out, will you?" - reward = 10000 - required_count = 3 - wanted_types = list(/obj/item/organ/liver) - -/datum/bounty/item/medical/eye - name = "Organic Eyes" - description = "Station 5's Research Director Willem is requesting a few pairs of non-robotic eyes. Don't ask questions, just ship them." - reward = 10000 - required_count = 3 - wanted_types = list(/obj/item/organ/eyes) - exclude_types = list(/obj/item/organ/eyes/robotic) - -/datum/bounty/item/medical/tongue - name = "Tongues" - description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues." - reward = 10000 - required_count = 3 - wanted_types = list(/obj/item/organ/tongue) diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm deleted file mode 100644 index 6527228f31ec..000000000000 --- a/code/modules/cargo/bounties/mining.dm +++ /dev/null @@ -1,71 +0,0 @@ -/datum/bounty/item/mining/goliath_steaks - name = "Lava-Cooked Goliath Steaks" - description = "Admiral Pavlov has gone on hunger strike ever since the canteen started serving only monkey and monkey byproducts. She is demanding lava-cooked Goliath steaks." - reward = 5000 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/steak/goliath) - -/datum/bounty/item/mining/goliath_boat - name = "Goliath Hide Boat" - description = "Commander Menkov wants to participate in the annual Lavaland Regatta. He is asking your shipwrights to build the swiftest boat known to man." - reward = 10000 - wanted_types = list(/obj/vehicle/ridden/lavaboat) - -/datum/bounty/item/mining/bone_oar - name = "Bone Oars" - description = "Commander Menkov requires oars to participate in the annual Lavaland Regatta. Ship a pair over." - reward = 4000 - required_count = 2 - wanted_types = list(/obj/item/oar) - -/datum/bounty/item/mining/bone_axe - name = "Bone Axe" - description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement." - reward = 7500 - wanted_types = list(/obj/item/melee/axe/bone) - -/datum/bounty/item/mining/bone_armor - name = "Bone Armor" - description = "Station 14 has volunteered their lizard crew for ballistic armor testing. Ship over some bone armor." - reward = 5000 - wanted_types = list(/obj/item/clothing/suit/armor/bone) - -/datum/bounty/item/mining/skull_helmet - name = "Skull Helmet" - description = "Station 42's Head of Security has her birthday tomorrow! We want to suprise her with a fashionable skull helmet." - reward = 4000 - wanted_types = list(/obj/item/clothing/head/helmet/skull) - -/datum/bounty/item/mining/bone_talisman - name = "Bone Talismans" - description = "Station 14's Research Director claims that pagan bone talismans protect their wearer. Ship them a few so they can start testing." - reward = 7500 - required_count = 3 - wanted_types = list(/obj/item/clothing/accessory/bonearmlet) - -/datum/bounty/item/mining/bone_dagger - name = "Bone Daggers" - description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working." - reward = 5000 - required_count = 3 - wanted_types = list(/obj/item/melee/knife/bone) - -/datum/bounty/item/mining/polypore_mushroom - name = "Mushroom Bowl" - description = "Lieutenant Jeb dropped his favorite mushroom bowl. Cheer him up by shipping a new one, will you?" - reward = 7500 //5x mushroom shavings - wanted_types = list(/obj/item/reagent_containers/glass/bowl/mushroom_bowl) - -/datum/bounty/item/mining/inocybe_mushroom - name = "Mushroom Caps" - description = "Our botanist claims that he can distill tasty liquor from absolutely any plant. Let's see what he'll do with Inocybe mushroom caps." - reward = 4500 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap) - -/datum/bounty/item/mining/porcini_mushroom - name = "Mushroom Leaves" - description = "Porcini mushroom leaves are rumored to have healing properties. Our researchers want to put that claim to the test." - reward = 4500 - required_count = 3 - wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm deleted file mode 100644 index 0fcbbf4f1794..000000000000 --- a/code/modules/cargo/bounties/reagent.dm +++ /dev/null @@ -1,253 +0,0 @@ -/datum/bounty/reagent - var/required_volume = 10 - var/shipped_volume = 0 - var/datum/reagent/wanted_reagent - -/datum/bounty/reagent/completion_string() - return {"[round(shipped_volume)]/[required_volume] Units"} - -/datum/bounty/reagent/can_claim() - return ..() && shipped_volume >= required_volume - -/datum/bounty/reagent/applies_to(obj/O) - if(!istype(O, /obj/item/reagent_containers)) - return FALSE - if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) - return FALSE - if(O.flags_1 & HOLOGRAM_1) - return FALSE - return shipped_volume < required_volume - -/datum/bounty/reagent/ship(obj/O) - if(!applies_to(O)) - return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) - if(shipped_volume > required_volume) - shipped_volume = required_volume - -/datum/bounty/reagent/compatible_with(other_bounty) - if(!istype(other_bounty, /datum/bounty/reagent)) - return TRUE - var/datum/bounty/reagent/R = other_bounty - return wanted_reagent.type != R.wanted_reagent.type - -/datum/bounty/reagent/simple_drink - name = "Simple Drink" - reward = 1500 - -/datum/bounty/reagent/simple_drink/New() - // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. - var/static/list/possible_reagents = list(\ - /datum/reagent/consumable/ethanol/antifreeze,\ - /datum/reagent/consumable/ethanol/andalusia,\ - /datum/reagent/consumable/tea/arnold_palmer,\ - /datum/reagent/consumable/ethanol/b52,\ - /datum/reagent/consumable/ethanol/bananahonk,\ - /datum/reagent/consumable/ethanol/beepsky_smash,\ - /datum/reagent/consumable/ethanol/between_the_sheets,\ - /datum/reagent/consumable/ethanol/bilk,\ - /datum/reagent/consumable/ethanol/black_russian,\ - /datum/reagent/consumable/ethanol/bloody_mary,\ - /datum/reagent/consumable/ethanol/brave_bull,\ - /datum/reagent/consumable/ethanol/martini,\ - /datum/reagent/consumable/ethanol/cuba_libre,\ - /datum/reagent/consumable/ethanol/eggnog,\ - /datum/reagent/consumable/ethanol/erikasurprise,\ - /datum/reagent/consumable/ethanol/ginfizz,\ - /datum/reagent/consumable/ethanol/gintonic,\ - /datum/reagent/consumable/ethanol/grappa,\ - /datum/reagent/consumable/ethanol/grog,\ - /datum/reagent/consumable/ethanol/hooch,\ - /datum/reagent/consumable/ethanol/iced_beer,\ - /datum/reagent/consumable/ethanol/irishcarbomb,\ - /datum/reagent/consumable/ethanol/manhattan,\ - /datum/reagent/consumable/ethanol/margarita,\ - /datum/reagent/consumable/ethanol/gargle_blaster,\ - /datum/reagent/consumable/ethanol/rum_coke,\ - /datum/reagent/consumable/ethanol/screwdrivercocktail,\ - /datum/reagent/consumable/ethanol/snowwhite,\ - /datum/reagent/consumable/soy_latte,\ - /datum/reagent/consumable/cafe_latte,\ - /datum/reagent/consumable/ethanol/syndicatebomb,\ - /datum/reagent/consumable/ethanol/tequila_sunrise,\ - /datum/reagent/consumable/ethanol/manly_dorf,\ - /datum/reagent/consumable/ethanol/vimukti,\ - /datum/reagent/consumable/triple_citrus,\ - /datum/reagent/consumable/ethanol/vodkamartini,\ - /datum/reagent/consumable/ethanol/whiskeysoda,\ - /datum/reagent/consumable/ethanol/beer/green,\ - /datum/reagent/consumable/ethanol/demonsblood,\ - /datum/reagent/consumable/ethanol/crevice_spike,\ - /datum/reagent/consumable/ethanol/singulo,\ - /datum/reagent/consumable/ethanol/whiskey_sour) - - var/reagent_type = pick(possible_reagents) - wanted_reagent = new reagent_type - name = wanted_reagent.name - description = "CentCom is thirsty! Send a shipment of [name] to CentCom to quench the company's thirst." - reward += rand(0, 2) * 500 - -/datum/bounty/reagent/complex_drink - name = "Complex Drink" - reward = 4000 - -/datum/bounty/reagent/complex_drink/New() - // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. - var/static/list/possible_reagents = list(\ - /datum/reagent/consumable/ethanol/atomicbomb,\ - /datum/reagent/consumable/ethanol/bacchus_blessing,\ - /datum/reagent/consumable/ethanol/bastion_bourbon,\ - /datum/reagent/consumable/ethanol/booger,\ - /datum/reagent/consumable/ethanol/hippies_delight,\ - /datum/reagent/consumable/ethanol/drunkenblumpkin,\ - /datum/reagent/consumable/ethanol/goldschlager,\ - /datum/reagent/consumable/ethanol/neurotoxin,\ - /datum/reagent/consumable/ethanol/patron,\ - /datum/reagent/consumable/ethanol/quadruple_sec,\ - /datum/reagent/consumable/bluecherryshake,\ - /datum/reagent/consumable/doctor_delight,\ - /datum/reagent/consumable/ethanol/silencer,\ - /datum/reagent/consumable/ethanol/peppermint_patty,\ - /datum/reagent/consumable/ethanol/aloe,\ - /datum/reagent/consumable/pumpkin_latte) - - var/reagent_type = pick(possible_reagents) - wanted_reagent = new reagent_type - name = wanted_reagent.name - description = "CentCom is offering a reward for talented mixologists. Ship a container of [name] to claim the prize." - reward += rand(0, 4) * 500 - -/datum/bounty/reagent/chemical_simple - name = "Simple Chemical" - reward = 4000 - required_volume = 30 - -/datum/bounty/reagent/chemical_simple/New() - // Chemicals that can be mixed by a single skilled Chemist. - var/static/list/possible_reagents = list(\ - /datum/reagent/medicine/leporazine,\ - /datum/reagent/medicine/clonexadone,\ - /datum/reagent/medicine/mine_salve,\ - /datum/reagent/medicine/perfluorodecalin,\ - /datum/reagent/medicine/ephedrine,\ - /datum/reagent/medicine/diphenhydramine,\ - /datum/reagent/drug/space_drugs,\ - /datum/reagent/drug/crank,\ - /datum/reagent/gunpowder,\ - /datum/reagent/napalm,\ - /datum/reagent/firefighting_foam,\ - /datum/reagent/consumable/mayonnaise,\ - /datum/reagent/toxin/itching_powder,\ - /datum/reagent/toxin/cyanide,\ - /datum/reagent/toxin/heparin,\ - /datum/reagent/medicine/pen_acid,\ - /datum/reagent/medicine/atropine,\ - /datum/reagent/drug/aranesp,\ - /datum/reagent/drug/krokodil,\ - /datum/reagent/drug/methamphetamine,\ - /datum/reagent/teslium,\ - /datum/reagent/toxin/anacea,\ - /datum/reagent/pax) - - var/reagent_type = pick(possible_reagents) - wanted_reagent = new reagent_type - name = wanted_reagent.name - description = "CentCom is in desperate need of the chemical [name]. Ship a container of it to be rewarded." - reward += rand(0, 4) * 500 //4000 to 6000 credits - -/datum/bounty/reagent/chemical_complex - name = "Rare Chemical" - reward = 6000 - required_volume = 20 - -/datum/bounty/reagent/chemical_complex/New() - // Reagents that require interaction with multiple departments or are a pain to mix. Lower required_volume since acquiring 30u of some is unrealistic - var/static/list/possible_reagents = list(\ - /datum/reagent/medicine/pyroxadone,\ - /datum/reagent/medicine/rezadone,\ - /datum/reagent/medicine/regen_jelly,\ - /datum/reagent/drug/bath_salts,\ - /datum/reagent/hair_dye,\ - /datum/reagent/consumable/honey,\ - /datum/reagent/consumable/frostoil,\ - /datum/reagent/toxin/slimejelly,\ - /datum/reagent/teslium/energized_jelly,\ - /datum/reagent/toxin/mimesbane,\ - /datum/reagent/medicine/strange_reagent,\ - /datum/reagent/nitroglycerin,\ - /datum/reagent/medicine/rezadone,\ - /datum/reagent/toxin/zombiepowder,\ - /datum/reagent/toxin/ghoulpowder,\ - /datum/reagent/mulligan) - - var/reagent_type = pick(possible_reagents) - wanted_reagent = new reagent_type - name = wanted_reagent.name - description = "CentCom is paying premium for the chemical [name]. Ship a container of it to be rewarded." - reward += rand(0, 5) * 750 //6000 to 9750 credits - -/datum/bounty/pill - /// quantity of the pills needed, this value acts as minimum, gets randomized on new() - var/required_ammount = 80 - /// counter for pills sent - var/shipped_ammount = 0 - /// reagent requested - var/datum/reagent/wanted_reagent - /// minimum volume of chemical needed, gets randomized on new() - var/wanted_vol = 30 - -/datum/bounty/pill/completion_string() - return {"[shipped_ammount]/[required_ammount] pills"} - -/datum/bounty/pill/can_claim() - return ..() && shipped_ammount >= required_ammount - -/datum/bounty/pill/applies_to(obj/O) - if(!istype(O, /obj/item/reagent_containers/pill)) - return FALSE - if(O?.reagents.get_reagent_amount(wanted_reagent.type) >= wanted_vol) - return TRUE - return FALSE - -/datum/bounty/pill/ship(obj/O) - if(!applies_to(O)) - return - shipped_ammount += 1 - if(shipped_ammount > required_ammount) - shipped_ammount = required_ammount - -/datum/bounty/pill/compatible_with(other_bounty) - if(!istype(other_bounty, /datum/bounty/pill/simple_pill)) - return TRUE - var/datum/bounty/pill/simple_pill/P = other_bounty - return (wanted_reagent.type == P.wanted_reagent.type) && (wanted_vol == P.wanted_vol) - -/datum/bounty/pill/simple_pill - name = "Simple Pill" - reward = 10000 - -/datum/bounty/pill/simple_pill/New() - //reagent that are possible to be chem factory'd - var/static/list/possible_reagents = list(\ - /datum/reagent/medicine/spaceacillin,\ - /datum/reagent/medicine/synthflesh,\ - /datum/reagent/medicine/pen_acid,\ - /datum/reagent/medicine/atropine,\ - /datum/reagent/medicine/cryoxadone,\ - /datum/reagent/medicine/salbutamol,\ - /datum/reagent/drug/methamphetamine,\ - /datum/reagent/drug/crank,\ - /datum/reagent/nitrous_oxide,\ - /datum/reagent/barbers_aid,\ - /datum/reagent/pax,\ - /datum/reagent/flash_powder,\ - /datum/reagent/phlogiston,\ - /datum/reagent/firefighting_foam) - - var/datum/reagent/reagent_type = pick(possible_reagents) - wanted_reagent = new reagent_type - name = "[wanted_reagent.name] pills" - required_ammount += rand(1,60) - wanted_vol += rand(1,20) - description = "CentCom requires [required_ammount] of [name] containing at least [wanted_vol] each. Ship a container of it to be rewarded." - reward += rand(1, 5) * 3000 diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm deleted file mode 100644 index 0849efb6ede4..000000000000 --- a/code/modules/cargo/bounties/science.dm +++ /dev/null @@ -1,66 +0,0 @@ -/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/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) diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm deleted file mode 100644 index 26711f560922..000000000000 --- a/code/modules/cargo/bounties/security.dm +++ /dev/null @@ -1,13 +0,0 @@ -/datum/bounty/item/security/riotshotgun - name = "Riot Shotguns" - description = "Hooligans have boarded CentCom! Ship riot shotguns quick, or things are going to get dirty." - reward = 5000 - required_count = 2 - wanted_types = list(/obj/item/gun/ballistic/shotgun/hellfire) - -/datum/bounty/item/security/recharger - name = "Rechargers" - description = "Nanotrasen military academy is conducting marksmanship exercises. They request that rechargers be shipped." - reward = 2000 - required_count = 3 - wanted_types = list(/obj/machinery/recharger) diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm deleted file mode 100644 index fa581504ca89..000000000000 --- a/code/modules/cargo/bounties/special.dm +++ /dev/null @@ -1,55 +0,0 @@ -/datum/bounty/item/alien_organs - name = "Alien Organs" - description = "Nanotrasen is interested in studying Xenomorph biology. Ship a set of organs to be thoroughly compensated." - reward = 25000 - required_count = 3 - wanted_types = list(/obj/item/organ/brain/alien, /obj/item/organ/alien, /obj/item/organ/body_egg/alien_embryo, /obj/item/organ/liver/alien, /obj/item/organ/tongue/alien, /obj/item/organ/eyes/night_vision/alien) - -/datum/bounty/item/syndicate_documents - name = "Syndicate Documents" - description = "Intel regarding the syndicate is highly prized at CentCom. If you find syndicate documents, ship them. You could save lives." - reward = 15000 - wanted_types = list(/obj/item/documents/syndicate, /obj/item/documents/photocopy) - -/datum/bounty/item/syndicate_documents/applies_to(obj/O) - if(!..()) - return FALSE - if(istype(O, /obj/item/documents/photocopy)) - var/obj/item/documents/photocopy/Copy = O - return (Copy.copy_type && ispath(Copy.copy_type, /obj/item/documents/syndicate)) - return TRUE - -/datum/bounty/item/hellstone - name = "Hellstone" - description = "Nanotrasen's anomalous materials division is in desparate need for Hellstone. Send them a large shipment and we'll make it worth your while." - reward = 35000 - required_count = 10 - wanted_types = list(/obj/item/stack/sheet/mineral/hidden/hellstone) - -/datum/bounty/item/trash - name = "Trash" - description = "Recently a group of janitors have run out of trash to clean up, without any trash CentCom wants to fire them to cut costs. Send a shipment of trash to keep them employed, and they'll give you a small compensation." - reward = 1000 - required_count = 10 - wanted_types = list(/obj/item/trash) - -/datum/bounty/more_bounties - name = "More Bounties" - description = "Complete enough bounties and CentCom will issue new ones!" - reward = 5 // number of bounties - var/required_bounties = 5 - -/datum/bounty/more_bounties/can_claim() - return ..() && completed_bounty_count() >= required_bounties - -/datum/bounty/more_bounties/completion_string() - return "[min(required_bounties, completed_bounty_count())]/[required_bounties] Bounties" - -/datum/bounty/more_bounties/reward_string() - return "Up to [reward] new bounties" - -/datum/bounty/more_bounties/claim() - if(can_claim()) - claimed = TRUE - for(var/i = 0; i < reward; ++i) - try_add_bounty(random_bounty()) diff --git a/code/modules/cargo/bounties/virus.dm b/code/modules/cargo/bounties/virus.dm deleted file mode 100644 index 8f078a2668bd..000000000000 --- a/code/modules/cargo/bounties/virus.dm +++ /dev/null @@ -1,81 +0,0 @@ -/datum/bounty/virus - reward = 5000 - var/shipped = FALSE - var/stat_value = 0 - var/stat_name = "" - -/datum/bounty/virus/New() - ..() - stat_value = rand(4, 11) - if(rand(3) == 1) - stat_value *= -1 - name = "Virus ([stat_name] of [stat_value])" - description = "Nanotrasen is interested in a virus with a [stat_name] stat of exactly [stat_value]. Central Command will pay handsomely for such a virus." - reward += rand(0, 4) * 500 - -/datum/bounty/virus/completion_string() - return shipped ? "Shipped" : "Not Shipped" - -/datum/bounty/virus/can_claim() - return ..() && shipped - -/datum/bounty/virus/applies_to(obj/O) - if(shipped) - return FALSE - if(O.flags_1 & HOLOGRAM_1) - return FALSE - if(!istype(O, /obj/item/reagent_containers || !O.reagents || !O.reagents.reagent_list)) - return FALSE - var/datum/reagent/blood/B = locate() in O.reagents.reagent_list - if(!B) - return FALSE - for(var/V in B.get_diseases()) - if(!istype(V, /datum/disease/advance)) - continue - if(accepts_virus(V)) - return TRUE - return FALSE - -/datum/bounty/virus/ship(obj/O) - if(!applies_to(O)) - return - shipped = TRUE - -/datum/bounty/virus/compatible_with(datum/other_bounty) - if(!istype(other_bounty, /datum/bounty/virus)) - return TRUE - var/datum/bounty/virus/V = other_bounty - return type != V.type || stat_value != V.stat_value - - -/datum/bounty/virus/proc/accepts_virus(V) - return TRUE - -/datum/bounty/virus/resistance - stat_name = "resistance" - -/datum/bounty/virus/resistance/accepts_virus(V) - var/datum/disease/advance/A = V - return A.totalResistance() == stat_value - -/datum/bounty/virus/stage_speed - stat_name = "stage speed" - -/datum/bounty/virus/stage_speed/accepts_virus(V) - var/datum/disease/advance/A = V - return A.totalStageSpeed() == stat_value - -/datum/bounty/virus/stealth - stat_name = "stealth" - -/datum/bounty/virus/stealth/accepts_virus(V) - var/datum/disease/advance/A = V - return A.totalStealth() == stat_value - -/datum/bounty/virus/transmit - stat_name = "transmissible" - -/datum/bounty/virus/transmit/accepts_virus(V) - var/datum/disease/advance/A = V - return A.totalTransmittable() == stat_value - diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm deleted file mode 100644 index 96d5218e551e..000000000000 --- a/code/modules/cargo/bounty.dm +++ /dev/null @@ -1,176 +0,0 @@ -GLOBAL_LIST_EMPTY(bounties_list) - -/datum/bounty - var/name - var/description - var/reward = 1000 // In credits. - var/claimed = FALSE - var/high_priority = FALSE - -// Displayed on bounty UI screen. -/datum/bounty/proc/completion_string() - return "" - -// Displayed on bounty UI screen. -/datum/bounty/proc/reward_string() - return "[reward] Credits" - -/datum/bounty/proc/can_claim() - return !claimed - -// Called when the claim button is clicked. Override to provide fancy rewards. -/datum/bounty/proc/claim(datum/bank_account/claimer_account) - if(can_claim() && claimer_account) - claimer_account.adjust_money(reward, "bounty") - claimed = TRUE - -// If an item sent in the cargo shuttle can satisfy the bounty. -/datum/bounty/proc/applies_to(obj/O) - return FALSE - -// Called when an object is shipped on the cargo shuttle. -/datum/bounty/proc/ship(obj/O) - return - -// When randomly generating the bounty list, duplicate bounties must be avoided. -// This proc is used to determine if two bounties are duplicates, or incompatible in general. -/datum/bounty/proc/compatible_with(other_bounty) - return TRUE - -/datum/bounty/proc/mark_high_priority(scale_reward = 2) - if(high_priority) - return - high_priority = TRUE - reward = round(reward * scale_reward) - -// This proc is called when the shuttle docks at CentCom. -// It handles items shipped for bounties. -/proc/bounty_ship_item_and_contents(atom/movable/AM, dry_run=FALSE) - if(!GLOB.bounties_list.len) - setup_bounties() - - var/list/matched_one = FALSE - for(var/thing in reverseRange(AM.GetAllContents())) - var/matched_this = FALSE - for(var/datum/bounty/B in GLOB.bounties_list) - if(B.applies_to(thing)) - matched_one = TRUE - matched_this = TRUE - if(!dry_run) - B.ship(thing) - if(!dry_run && matched_this) - qdel(thing) - return matched_one - -// Returns FALSE if the bounty is incompatible with the current bounties. -/proc/try_add_bounty(datum/bounty/new_bounty) - if(!new_bounty || !new_bounty.name || !new_bounty.description) - return FALSE - for(var/i in GLOB.bounties_list) - var/datum/bounty/B = i - if(!B.compatible_with(new_bounty) || !new_bounty.compatible_with(B)) - return FALSE - GLOB.bounties_list += new_bounty - return TRUE - -// Returns a new bounty of random type, but does not add it to GLOB.bounties_list. -/proc/random_bounty() - switch(rand(1, 12)) - if(1) - var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) - return new subtype - if(2) - var/subtype = pick(subtypesof(/datum/bounty/item/mech)) - return new subtype - if(3) - var/subtype = pick(subtypesof(/datum/bounty/item/chef)) - return new subtype - if(4) - var/subtype = pick(subtypesof(/datum/bounty/item/security)) - return new subtype - if(5) - if(rand(2) == 1) - return new /datum/bounty/reagent/simple_drink - return new /datum/bounty/reagent/complex_drink - if(6) - if(rand(2) == 1) - return new /datum/bounty/reagent/chemical_simple - return new /datum/bounty/reagent/chemical_complex - if(7) - var/subtype = pick(subtypesof(/datum/bounty/virus)) - return new subtype - if(8) - var/subtype = pick(subtypesof(/datum/bounty/item/science)) - return new subtype - if(9) - var/subtype = pick(subtypesof(/datum/bounty/item/engineering)) - return new subtype - if(10) - var/subtype = pick(subtypesof(/datum/bounty/item/mining)) - return new subtype - if(11) - var/subtype = pick(subtypesof(/datum/bounty/item/medical)) - return new subtype - if(12) - var/subtype = pick(subtypesof(/datum/bounty/item/botany)) - return new subtype - -// Called lazily at startup to populate GLOB.bounties_list with random bounties. -/proc/setup_bounties() - - var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes! - - /********************************Subtype Gens********************************/ - var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 2, - /datum/bounty/item/mech = 1, - /datum/bounty/item/chef = 2, - /datum/bounty/item/security = 1, - /datum/bounty/virus = 1, - /datum/bounty/item/engineering = 1, - /datum/bounty/item/mining = 2, - /datum/bounty/item/medical = 2, - /datum/bounty/item/botany = 2) - - for(var/the_type in easy_add_list_subtypes) - for(var/i in 1 to easy_add_list_subtypes[the_type]) - pick = pick(subtypesof(the_type)) - try_add_bounty(new pick) - - /********************************Strict Type Gens********************************/ - var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 1, - /datum/bounty/reagent/complex_drink = 1, - /datum/bounty/reagent/chemical_simple = 1, - /datum/bounty/reagent/chemical_complex = 1, - /datum/bounty/pill/simple_pill = 1) - - for(var/the_strict_type in easy_add_list_strict_types) - for(var/i in 1 to easy_add_list_strict_types[the_strict_type]) - try_add_bounty(new the_strict_type) - - /********************************Dynamic Gens********************************/ - - for(var/i in 0 to 1) - pick = pick(subtypesof(/datum/bounty/item/science)) - try_add_bounty(new pick) - - /********************************Cutoff for Non-Low Priority Bounties********************************/ - var/datum/bounty/B = pick(GLOB.bounties_list) - B.mark_high_priority() - - /********************************Low Priority Gens********************************/ - var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs, - /datum/bounty/item/syndicate_documents, - /datum/bounty/item/hellstone, - /datum/bounty/item/trash, - /datum/bounty/more_bounties) - - for(var/low_priority_bounty in low_priority_strict_type_list) - try_add_bounty(new low_priority_bounty) - -/proc/completed_bounty_count() - var/count = 0 - for(var/i in GLOB.bounties_list) - var/datum/bounty/B = i - if(B.claimed) - ++count - return count diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm deleted file mode 100644 index f8017122b040..000000000000 --- a/code/modules/cargo/bounty_console.dm +++ /dev/null @@ -1,69 +0,0 @@ -#define PRINTER_TIMEOUT 10 - -/obj/machinery/computer/bounty - name = "\improper Nanotrasen bounty console" - desc = "Used to check and claim bounties offered by Nanotrasen" - icon_screen = "bounty" - circuit = /obj/item/circuitboard/computer/bounty - light_color = COLOR_BRIGHT_ORANGE - COOLDOWN_DECLARE(printer_ready) - var/datum/bank_account/cargocash - -/obj/machinery/computer/bounty/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) - . = ..() - cargocash = port.current_ship.ship_account - -/obj/machinery/computer/bounty/Initialize() - . = ..() - COOLDOWN_START(src, printer_ready, PRINTER_TIMEOUT) - -/obj/machinery/computer/bounty/proc/print_paper() - new /obj/item/paper/bounty_printout(loc) - -/obj/item/paper/bounty_printout - name = "paper - Bounties" - -/obj/item/paper/bounty_printout/Initialize() - . = ..() - default_raw_text = "