mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
+37






![tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>](/assets/img/avatar_default.png)


Alexis
GitHub
tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
ArcaneMusic
MrMelbert
Rhials
rageguy505
LemonInTheDark
John Willard
Aliceee2ch
Time-Green
Tsar-Salat
SmArtKar
Maxipat
SyncIt21
deltanedas
SimplyLogan
loganuk
Leland Kemble
FalloutFalcon
Roxy
Lucy
siliconOpossum
Isratosh
TheRyeGuyWhoWillNowDie
Neocloudy
Alexander V.
ElGitificador
Twaticus
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bloop
Cameron Lennox
Tim
Iamgoofball
Layzu666
Arturlang
_0Steven
mrmanlikesbt
Ben10Omintrix
John F. Kennedy
Cursor
Josh
Josh Powell
Yobrocharlie
Hardly3D
shayoki
LT3
21b4095dfd
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
212 lines
8.3 KiB
Plaintext
212 lines
8.3 KiB
Plaintext
//////////////////////////
|
|
/////Initial Building/////
|
|
//////////////////////////
|
|
|
|
/// Legacy procs that really should be replaced with proper _INIT macros
|
|
/proc/make_datum_reference_lists()
|
|
// I tried to eliminate this proc but I couldn't untangle their init-order interdependencies -Dominion/Cyberboss
|
|
init_keybindings()
|
|
make_skyrat_datum_references() //SKYRAT EDIT ADDITION - CUSTOMIZATION
|
|
GLOB.emote_list = init_emote_list() // WHY DOES THIS NEED TO GO HERE? IT JUST INITS DATUMS
|
|
init_skyrat_stack_recipes() //SKYRAT EDIT ADDITION - More sheet recipes
|
|
init_crafting_recipes()
|
|
init_crafting_recipes_atoms()
|
|
|
|
/// Inits crafting recipe lists
|
|
/proc/init_crafting_recipes()
|
|
for(var/datum/crafting_recipe_path as anything in valid_subtypesof(/datum/crafting_recipe))
|
|
var/datum/crafting_recipe/recipe = new crafting_recipe_path()
|
|
var/is_cooking = ((recipe.category in GLOB.crafting_category_food) || (recipe.category in GLOB.crafting_category_food_skyrat)) // SKYRAT EDIT CHANGE - ORIGINAL: var/is_cooking = (recipe.category in GLOB.crafting_category_food)
|
|
recipe.reqs = sort_list(recipe.reqs, GLOBAL_PROC_REF(cmp_crafting_req_priority))
|
|
if(recipe.name != "" && recipe.result)
|
|
if(is_cooking)
|
|
GLOB.cooking_recipes += recipe
|
|
else
|
|
GLOB.crafting_recipes += recipe
|
|
|
|
var/list/global_stack_recipes = list(
|
|
/obj/item/stack/sheet/glass = GLOB.glass_recipes,
|
|
/obj/item/stack/sheet/plasmaglass = GLOB.pglass_recipes,
|
|
/obj/item/stack/sheet/rglass = GLOB.reinforced_glass_recipes,
|
|
/obj/item/stack/sheet/plasmarglass = GLOB.prglass_recipes,
|
|
/obj/item/stack/sheet/animalhide/gondola = GLOB.gondola_recipes,
|
|
/obj/item/stack/sheet/animalhide/corgi = GLOB.corgi_recipes,
|
|
/obj/item/stack/sheet/animalhide/carbon/monkey = GLOB.monkey_recipes,
|
|
/obj/item/stack/sheet/animalhide/xeno = GLOB.xeno_recipes,
|
|
/obj/item/stack/sheet/leather = GLOB.leather_recipes,
|
|
/obj/item/stack/sheet/sinew = GLOB.sinew_recipes,
|
|
/obj/item/stack/sheet/animalhide/carp = GLOB.carp_recipes,
|
|
/obj/item/stack/sheet/mineral/sandstone = GLOB.sandstone_recipes,
|
|
/obj/item/stack/sheet/mineral/sandbags = GLOB.sandbag_recipes,
|
|
/obj/item/stack/sheet/mineral/diamond = GLOB.diamond_recipes,
|
|
/obj/item/stack/sheet/mineral/uranium = GLOB.uranium_recipes,
|
|
/obj/item/stack/sheet/mineral/plasma = GLOB.plasma_recipes,
|
|
/obj/item/stack/sheet/mineral/gold = GLOB.gold_recipes,
|
|
/obj/item/stack/sheet/mineral/silver = GLOB.silver_recipes,
|
|
/obj/item/stack/sheet/mineral/bananium = GLOB.bananium_recipes,
|
|
/obj/item/stack/sheet/mineral/titanium = GLOB.titanium_recipes,
|
|
/obj/item/stack/sheet/mineral/plastitanium = GLOB.plastitanium_recipes,
|
|
/obj/item/stack/sheet/mineral/snow = GLOB.snow_recipes,
|
|
/obj/item/stack/sheet/mineral/adamantine = GLOB.adamantine_recipes,
|
|
/obj/item/stack/sheet/mineral/abductor = GLOB.abductor_recipes,
|
|
/obj/item/stack/sheet/iron = GLOB.metal_recipes,
|
|
/obj/item/stack/sheet/plasteel = GLOB.plasteel_recipes,
|
|
/obj/item/stack/sheet/mineral/wood = GLOB.wood_recipes,
|
|
/obj/item/stack/sheet/mineral/bamboo = GLOB.bamboo_recipes,
|
|
/obj/item/stack/sheet/cloth = GLOB.cloth_recipes,
|
|
/obj/item/stack/sheet/durathread = GLOB.durathread_recipes,
|
|
/obj/item/stack/sheet/cardboard = GLOB.cardboard_recipes,
|
|
/obj/item/stack/sheet/bronze = GLOB.bronze_recipes,
|
|
/obj/item/stack/sheet/plastic = GLOB.plastic_recipes,
|
|
/obj/item/stack/ore/glass = GLOB.sand_recipes,
|
|
/obj/item/stack/rods = GLOB.rod_recipes,
|
|
/obj/item/stack/sheet/runed_metal = GLOB.runed_metal_recipes,
|
|
)
|
|
|
|
for(var/stack in global_stack_recipes)
|
|
for(var/stack_recipe in global_stack_recipes[stack])
|
|
if(istype(stack_recipe, /datum/stack_recipe_list))
|
|
var/datum/stack_recipe_list/stack_recipe_list = stack_recipe
|
|
for(var/nested_recipe in stack_recipe_list.recipes)
|
|
if(!nested_recipe)
|
|
continue
|
|
var/datum/crafting_recipe/stack/recipe = new/datum/crafting_recipe/stack(stack, nested_recipe)
|
|
if(recipe.name != "" && recipe.result)
|
|
GLOB.crafting_recipes += recipe
|
|
else
|
|
if(!stack_recipe)
|
|
continue
|
|
var/datum/crafting_recipe/stack/recipe = new/datum/crafting_recipe/stack(stack, stack_recipe)
|
|
if(recipe.name != "" && recipe.result)
|
|
GLOB.crafting_recipes += recipe
|
|
|
|
var/list/material_stack_recipes = list(
|
|
SSmaterials.base_stack_recipes,
|
|
SSmaterials.rigid_stack_recipes,
|
|
)
|
|
|
|
for(var/list/recipe_list in material_stack_recipes)
|
|
for(var/stack_recipe in recipe_list)
|
|
var/datum/crafting_recipe/stack/recipe = new/datum/crafting_recipe/stack(/obj/item/stack/sheet/iron, stack_recipe)
|
|
recipe.steps = list("Use different materials in hand to make an item of that material")
|
|
GLOB.crafting_recipes += recipe
|
|
|
|
/// Inits atoms used in crafting recipes
|
|
/proc/init_crafting_recipes_atoms()
|
|
var/list/recipe_lists = list(
|
|
GLOB.crafting_recipes,
|
|
GLOB.cooking_recipes,
|
|
)
|
|
var/list/atom_lists = list(
|
|
GLOB.crafting_recipes_atoms,
|
|
GLOB.cooking_recipes_atoms,
|
|
)
|
|
|
|
for(var/list_index in 1 to length(recipe_lists))
|
|
var/list/recipe_list = recipe_lists[list_index]
|
|
var/list/atom_list = atom_lists[list_index]
|
|
for(var/datum/crafting_recipe/recipe as anything in recipe_list)
|
|
// Result
|
|
atom_list |= recipe.result
|
|
// Ingredients
|
|
for(var/atom/req_atom as anything in recipe.reqs)
|
|
atom_list |= req_atom
|
|
// Catalysts
|
|
for(var/atom/req_atom as anything in recipe.chem_catalysts)
|
|
atom_list |= req_atom
|
|
// Reaction data - required container
|
|
if(recipe.reaction)
|
|
var/required_container = initial(recipe.reaction.required_container)
|
|
if(required_container)
|
|
atom_list |= required_container
|
|
// Tools
|
|
for(var/atom/req_atom as anything in recipe.tool_paths)
|
|
atom_list |= req_atom
|
|
// Machinery
|
|
for(var/atom/req_atom as anything in recipe.machinery)
|
|
atom_list |= req_atom
|
|
// Structures
|
|
for(var/atom/req_atom as anything in recipe.structures)
|
|
atom_list |= req_atom
|
|
|
|
/// Creates every subtype of prototype (excluding prototype and abstract types) and adds it to list L.
|
|
/// If no list/L is provided, one is created.
|
|
/proc/init_subtypes(prototype, list/L)
|
|
if(!istype(L))
|
|
L = list()
|
|
for(var/path in valid_subtypesof(prototype))
|
|
L += new path()
|
|
return L
|
|
|
|
/// Functions like init_subtypes, but uses the subtype's path as a key for easy access
|
|
/// If no list/L is provided, one is created.
|
|
/proc/init_subtypes_w_path_keys(prototype, list/L)
|
|
if(!istype(L))
|
|
L = list()
|
|
for(var/path in valid_subtypesof(prototype))
|
|
L[path] = new path()
|
|
return L
|
|
|
|
/**
|
|
* Checks if that loc and dir has an item on the wall
|
|
**/
|
|
// Wall mounted machinery which are visually on the wall.
|
|
GLOBAL_LIST_INIT(WALLITEMS_INTERIOR, typecacheof(list(
|
|
/obj/item/radio/intercom,
|
|
/obj/structure/secure_safe,
|
|
/obj/machinery/airalarm,
|
|
/obj/machinery/button,
|
|
/obj/machinery/computer/security/telescreen,
|
|
/obj/machinery/computer/security/telescreen/entertainment,
|
|
/obj/machinery/defibrillator_mount,
|
|
/obj/machinery/firealarm,
|
|
/obj/machinery/flasher,
|
|
/obj/machinery/keycard_auth/wall_mounted,
|
|
/obj/machinery/light_switch,
|
|
/obj/machinery/newscaster,
|
|
/obj/machinery/power/apc,
|
|
/obj/machinery/requests_console,
|
|
/obj/machinery/status_display,
|
|
/obj/machinery/ticket_machine,
|
|
/obj/machinery/turretid,
|
|
/obj/machinery/modular_computer/preset/time_clock, // BUBBER EDIT ADDITION - Punch Clock
|
|
/obj/machinery/barsign,
|
|
/obj/structure/extinguisher_cabinet,
|
|
/obj/structure/fish_mount,
|
|
/obj/structure/fireaxecabinet,
|
|
/obj/structure/mirror,
|
|
/obj/structure/noticeboard,
|
|
/obj/structure/reagent_dispensers/wall,
|
|
/obj/structure/sign,
|
|
/obj/structure/sign/picture_frame,
|
|
/obj/structure/sign/poster/contraband/random,
|
|
/obj/structure/sign/poster/official/random,
|
|
/obj/structure/sign/poster/random,
|
|
/obj/structure/urinal,
|
|
/obj/structure/lewd_portal, //BUBBER EDIT ADDITION - Lewd Portals
|
|
)))
|
|
|
|
// Wall mounted machinery which are visually coming out of the wall.
|
|
// These do not conflict with machinery which are visually placed on the wall.
|
|
GLOBAL_LIST_INIT(WALLITEMS_EXTERIOR, typecacheof(list(
|
|
/obj/machinery/camera,
|
|
/obj/machinery/light,
|
|
/obj/structure/light_construct,
|
|
/obj/structure/sink,
|
|
)))
|
|
|
|
/// A static typecache of all the money-based items that can be actively used as currency.
|
|
GLOBAL_LIST_INIT(allowed_money, typecacheof(list(
|
|
/obj/item/coin,
|
|
/obj/item/holochip,
|
|
/obj/item/stack/spacecash,
|
|
)))
|
|
|
|
/// Inits GLOB.plant_traits
|
|
/proc/init_plant_traits()
|
|
var/traits = list()
|
|
for(var/trait_path in subtypesof(/datum/plant_gene))
|
|
traits += new trait_path
|
|
sort_list(traits, GLOBAL_PROC_REF(cmp_typepaths_asc))
|
|
return traits
|