Merge branch 'master' of github.com:tgstation/tgstation into upstream-2026-06-23

This commit is contained in:
Roxy
2026-06-23 15:51:55 -04:00
1007 changed files with 40287 additions and 33507 deletions
+1 -3
View File
@@ -715,10 +715,8 @@ ADMIN_VERB(centcom_podlauncher, R_ADMIN, "Config/Launch Supplypod", "Configure a
/datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started
if (isnull(target_turf))
return
var/obj/structure/closet/supplypod/centcompod/toLaunch = duplicate_object(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
var/obj/structure/closet/supplypod/centcompod/toLaunch = duplicate_object(temp_pod, GLOB.areas_by_type[/area/centcom/central_command_areas/supplypod/supplypod_temp_holding]) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
toLaunch.update_appearance()//we update_appearance() here so that the door doesnt "flicker on" right after it lands
var/shippingLane = GLOB.areas_by_type[/area/centcom/central_command_areas/supplypod/supplypod_temp_holding]
toLaunch.forceMove(shippingLane)
if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those
if(launchRandomItem)
var/launch_candidate = pick_n_take(launchList)
+1
View File
@@ -45,6 +45,7 @@
/obj/item/jacobs_ladder,
/obj/item/borg/upgrade/modkit/lifesteal,
/obj/item/clockwork_alloy,
/obj/item/gun/energy/recharge/kinetic_accelerator/bdm,
)
/datum/export/lavaland/major //valuable chest/ruin loot, minor megafauna loot
+1
View File
@@ -31,6 +31,7 @@
available_items[item.category] -= item.identifier
if(!length(available_items[item.category]))
available_items -= item.category
categories -= item.category
/**
* Handles buying the item for a market.
@@ -78,7 +78,7 @@
var/obj/item/clothing/under/misc/syndicate_souvenir/souvenir = new(loc)
humie.equip_to_slot_if_possible(souvenir, ITEM_SLOT_ICLOTHING, indirect_action = TRUE)
var/obj/item/clothing/accessory/anti_sec_pin/pin = new(loc)
pin.attach(souvenir)
pin.try_attach(souvenir)
if(isnull(humie.w_uniform))
//FUCKING SLAVES, GET YOUR CLOTHES BACK ON!
+4 -1
View File
@@ -159,10 +159,13 @@
for(var/pack_id in SSshuttle.supply_packs)
var/datum/supply_pack/pack = SSshuttle.supply_packs[pack_id]
var/list/available_packs = get_packs_data(pack.group)
if(!length(available_packs)) //No available packs, hide category
continue
if(!data["supplies"][pack.group])
data["supplies"][pack.group] = list(
"name" = pack.group,
"packs" = get_packs_data(pack.group),
"packs" = available_packs,
)
data["displayed_currency_full_name"] = " [MONEY_NAME]"
+3 -2
View File
@@ -68,7 +68,7 @@
var/obj/structure/closet/crate/C
if(paying_account)
C = new /obj/structure/closet/crate/secure/owned(A, paying_account)
C.name = "[crate_name] - Purchased by [paying_account.account_holder]"
C.name = "[crate_name || C.name] - Purchased by [paying_account.account_holder]"
else if(!crate_type && !crate_override)
CRASH("tried to generate a supply pack without a valid crate type")
else if(crate_override)
@@ -78,7 +78,8 @@
else
C = new crate_type(A)
C.name = crate_name
if(crate_name)
C.name = crate_name
if(access)
C.req_access = list(access)
if(access_any)
+1 -5
View File
@@ -34,9 +34,5 @@
name = "Shrubbery Crate"
desc = "Crate full of hedge shrubs."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/grown/shrub = 8)
crate_name = "shrubbery crate"
var/shrub_amount = 8
/datum/supply_pack/exploration/shrubbery/fill(obj/container)
for(var/i in 1 to shrub_amount)
new /obj/item/grown/shrub(container)
+11 -2
View File
@@ -2,6 +2,15 @@
group = "Livestock"
crate_type = /obj/structure/closet/crate/critter
/datum/supply_pack/critter/stasis
group = "Livestock (Stasis)"
crate_type = /obj/structure/closet/crate/critter/stasis
/datum/supply_pack/critter/stasis/fill(obj/container)
. = ..()
for(var/mob/living/stasis_mob in container)
stasis_mob.apply_status_effect(/datum/status_effect/grouped/stasis, STASIS_CRATE_EFFECT)
/datum/supply_pack/critter/parrot
name = "Bird Crate"
desc = "Contains five expert telecommunication birds."
@@ -260,9 +269,9 @@
contains = list(/obj/item/storage/fish_case/tiziran = 2)
crate_name = "tiziran fish crate"
/datum/supply_pack/critter/turtle
/datum/supply_pack/critter/stasis/turtle
name = "Turtle Crate"
desc = "Cute flora turtles that'll emit good vibes to nearby plants!"
cost = CARGO_CRATE_VALUE * 2
contains = list(/mob/living/basic/turtle)
crate_name = "flora-turtle crate"
crate_name = "flora-turtle stasis crate"
+84 -70
View File
@@ -30,7 +30,7 @@
contains = list(/obj/item/reagent_containers/hypospray/medipen = 2,
/obj/item/reagent_containers/hypospray/medipen/ekit = 3,
/obj/item/reagent_containers/hypospray/medipen/blood_loss = 3)
crate_name = "medipen crate"
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
/datum/supply_pack/medical/coroner_crate
@@ -48,23 +48,24 @@
name = "Chemical Starter Kit Crate"
desc = "Contains thirteen different chemicals, for all the fun experiments you can make."
cost = CARGO_CRATE_VALUE * 2.6
contains = list(/obj/item/reagent_containers/cup/bottle/hydrogen,
/obj/item/reagent_containers/cup/bottle/carbon,
/obj/item/reagent_containers/cup/bottle/nitrogen,
/obj/item/reagent_containers/cup/bottle/oxygen,
/obj/item/reagent_containers/cup/bottle/fluorine,
/obj/item/reagent_containers/cup/bottle/phosphorus,
/obj/item/reagent_containers/cup/bottle/silicon,
/obj/item/reagent_containers/cup/bottle/chlorine,
/obj/item/reagent_containers/cup/bottle/radium,
/obj/item/reagent_containers/cup/bottle/sacid,
/obj/item/reagent_containers/cup/bottle/ethanol,
/obj/item/reagent_containers/cup/bottle/potassium,
/obj/item/reagent_containers/cup/bottle/sugar,
/obj/item/clothing/glasses/science,
/obj/item/reagent_containers/dropper,
/obj/item/storage/box/beakers,
)
contains = list(
/obj/item/reagent_containers/cup/bottle/hydrogen,
/obj/item/reagent_containers/cup/bottle/carbon,
/obj/item/reagent_containers/cup/bottle/nitrogen,
/obj/item/reagent_containers/cup/bottle/oxygen,
/obj/item/reagent_containers/cup/bottle/fluorine,
/obj/item/reagent_containers/cup/bottle/phosphorus,
/obj/item/reagent_containers/cup/bottle/silicon,
/obj/item/reagent_containers/cup/bottle/chlorine,
/obj/item/reagent_containers/cup/bottle/radium,
/obj/item/reagent_containers/cup/bottle/sacid,
/obj/item/reagent_containers/cup/bottle/ethanol,
/obj/item/reagent_containers/cup/bottle/potassium,
/obj/item/reagent_containers/cup/bottle/sugar,
/obj/item/clothing/glasses/science,
/obj/item/reagent_containers/dropper,
/obj/item/storage/box/beakers,
)
crate_name = "chemical crate"
/datum/supply_pack/medical/defibs
@@ -72,48 +73,49 @@
desc = "Contains two defibrillators for bringing the recently deceased back to life."
cost = CARGO_CRATE_VALUE * 5
contains = list(/obj/item/defibrillator/loaded = 2)
crate_name = "defibrillator crate"
crate_type = /obj/structure/closet/crate/medical
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
/datum/supply_pack/medical/iv_drip
name = "IV Drip Crate"
desc = "Contains a single IV drip for administering blood to patients."
cost = CARGO_CRATE_VALUE * 2
contains = list(/obj/machinery/iv_drip)
crate_name = "iv drip crate"
crate_type = /obj/structure/closet/crate/medical
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
/datum/supply_pack/medical/supplies
name = "Medical Supplies Crate"
desc = "Contains a random assortment of medical supplies. German doctor not included."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/reagent_containers/cup/bottle/multiver,
/obj/item/reagent_containers/cup/bottle/epinephrine,
/obj/item/reagent_containers/cup/bottle/morphine,
/obj/item/reagent_containers/cup/bottle/toxin,
/obj/item/reagent_containers/cup/beaker/large,
/obj/item/reagent_containers/applicator/pill/insulin,
/obj/item/stack/medical/wrap/gauze,
/obj/item/storage/box/bandages,
/obj/item/storage/box/beakers,
/obj/item/storage/box/medigels,
/obj/item/storage/box/syringes,
/obj/item/storage/box/bodybags,
/obj/item/storage/medkit/regular,
/obj/item/storage/medkit/o2,
/obj/item/storage/medkit/toxin,
/obj/item/storage/medkit/brute,
/obj/item/storage/medkit/fire,
/obj/item/defibrillator/loaded,
/obj/item/reagent_containers/blood/o_minus,
/obj/item/storage/pill_bottle/mining,
/obj/item/reagent_containers/applicator/pill/neurine,
/obj/item/stack/medical/bone_gel = 2,
/obj/item/vending_refill/medical,
/obj/item/vending_refill/drugs,
)
crate_name = "medical supplies crate"
crate_type = /obj/structure/closet/crate/medical
contains = list(
/obj/item/reagent_containers/cup/bottle/multiver,
/obj/item/reagent_containers/cup/bottle/epinephrine,
/obj/item/reagent_containers/cup/bottle/morphine,
/obj/item/reagent_containers/cup/bottle/toxin,
/obj/item/reagent_containers/cup/beaker/large,
/obj/item/reagent_containers/applicator/pill/insulin,
/obj/item/stack/medical/wrap/gauze,
/obj/item/storage/box/bandages,
/obj/item/storage/box/beakers,
/obj/item/storage/box/medigels,
/obj/item/storage/box/syringes,
/obj/item/storage/box/bodybags,
/obj/item/storage/medkit/regular,
/obj/item/storage/medkit/o2,
/obj/item/storage/medkit/toxin,
/obj/item/storage/medkit/brute,
/obj/item/storage/medkit/fire,
/obj/item/defibrillator/loaded,
/obj/item/reagent_containers/blood/o_minus,
/obj/item/storage/pill_bottle/mining,
/obj/item/reagent_containers/applicator/pill/neurine,
/obj/item/stack/medical/bone_gel = 2,
/obj/item/vending_refill/medical,
/obj/item/vending_refill/drugs,
)
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
test_ignored = TRUE
/datum/supply_pack/medical/supplies/fill(obj/container)
@@ -126,8 +128,8 @@
desc = "A crate containing the medication required for living with Hereditary Manifold Sickness, Sansufentanyl."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/storage/pill_bottle/sansufentanyl = 2)
crate_name = "experimental medicine crate"
crate_type = /obj/structure/closet/crate/medical
crate_name = null
crate_type = /obj/structure/closet/crate/interdyne_normal
/datum/supply_pack/medical/surgery
name = "Surgical Supplies Crate"
@@ -140,7 +142,7 @@
/obj/item/reagent_containers/medigel/sterilizine,
/obj/item/emergency_bed,
)
crate_name = "surgical supplies crate"
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
/datum/supply_pack/medical/salglucanister
@@ -161,19 +163,20 @@
cost = CARGO_CRATE_VALUE * 5
access = ACCESS_CMO
access_view = ACCESS_VIROLOGY
contains = list(/obj/item/reagent_containers/cup/bottle/flu_virion,
/obj/item/reagent_containers/cup/bottle/cold,
/obj/item/reagent_containers/cup/bottle/random_virus = 4,
/obj/item/reagent_containers/cup/bottle/fake_gbs,
/obj/item/reagent_containers/cup/bottle/magnitis,
/obj/item/reagent_containers/cup/bottle/pierrot_throat,
/obj/item/reagent_containers/cup/bottle/brainrot,
/obj/item/reagent_containers/cup/bottle/anxiety,
/obj/item/reagent_containers/cup/bottle/beesease,
/obj/item/storage/box/syringes,
/obj/item/storage/box/beakers,
/obj/item/reagent_containers/cup/bottle/mutagen,
)
contains = list(
/obj/item/reagent_containers/cup/bottle/flu_virion,
/obj/item/reagent_containers/cup/bottle/cold,
/obj/item/reagent_containers/cup/bottle/random_virus = 4,
/obj/item/reagent_containers/cup/bottle/fake_gbs,
/obj/item/reagent_containers/cup/bottle/magnitis,
/obj/item/reagent_containers/cup/bottle/pierrot_throat,
/obj/item/reagent_containers/cup/bottle/brainrot,
/obj/item/reagent_containers/cup/bottle/anxiety,
/obj/item/reagent_containers/cup/bottle/beesease,
/obj/item/storage/box/syringes,
/obj/item/storage/box/beakers,
/obj/item/reagent_containers/cup/bottle/mutagen,
)
crate_name = "virus crate"
crate_type = /obj/structure/closet/crate/secure/plasma
order_flags = ORDER_DANGEROUS
@@ -183,16 +186,17 @@
desc = "Contains the CMO's turtleneck and turtleneck skirt."
cost = CARGO_CRATE_VALUE * 2
access = ACCESS_CMO
contains = list(/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck,
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck/skirt,
)
contains = list(
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck,
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck/skirt,
)
/datum/supply_pack/medical/arm_implants
name = "Strong-Arm Implant Set"
desc = "A crate containing two implants, which can be surgically implanted to empower the strength of human arms. Warranty void if exposed to electromagnetic pulses."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/organ/cyberimp/arm/strongarm = 2)
crate_name = "Strong-Arm implant crate"
crate_name = "\improper Strong-Arm implant crate"
discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
/datum/supply_pack/medical/paperwork_implants
@@ -244,4 +248,14 @@
/obj/item/sensor_device,
/obj/item/sensor_device,
)
crate_name = "handheld crew monitor crate"
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
/datum/supply_pack/medical/first_aid_board
name = "DeForest First Aid Station"
desc = "A crate containing a circuit board used to construct a DeForest First Aid Station - \
a machine designed to treat minor injuries and ailments. Components not included."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/circuitboard/machine/wall_healer)
crate_name = null
crate_type = /obj/structure/closet/crate/deforest
+1 -1
View File
@@ -68,7 +68,7 @@
desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today! \
Contains one MULEbot."
cost = CARGO_CRATE_VALUE * 4
contains = list(/mob/living/simple_animal/bot/mulebot)
contains = list(/mob/living/basic/bot/mulebot)
crate_name = "\improper MULEbot Crate"
crate_type = /obj/structure/closet/crate/large