diff --git a/.vscode/settings.json b/.vscode/settings.json index 849a5165e1..bfce9bda7c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,12 +12,9 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, - "workbench.editorAssociations": [ - { - "filenamePattern": "*.dmi", - "viewType": "imagePreview.previewEditor" - } - ], + "workbench.editorAssociations": { + "*.dmi": "imagePreview.previewEditor" + }, "files.eol": "\n", "gitlens.advanced.blame.customArguments": ["-w"], "tgstationTestExplorer.project.resultsType": "json", diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 64b950a417..9953b593d9 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -18,8 +18,6 @@ GLOBAL_LIST_INIT(meteorsB, list(/obj/effect/meteor/meaty=5, /obj/effect/meteor/m GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event -GLOBAL_LIST_INIT(meteorsCat, list(/obj/effect/meteor/cat)) //for cat meteors - /////////////////////////////// //Meteor spawning global procs @@ -347,17 +345,6 @@ GLOBAL_LIST_INIT(meteorsCat, list(/obj/effect/meteor/cat)) //for cat meteors ..() if(prob(20)) explosion(src.loc,2,4,6,8) - -/obj/effect/meteor/cat - name = "space cat" - icon_state = "catmeteor" - desc = "Meow." - hits = 1 - heavy = FALSE - meteorsound = 'sound/effects/meow1.ogg' - meteordrop = list(/mob/living/simple_animal/pet/cat/space) - threat = 0 - dropamt = 1 ////////////////////////// //Spookoween meteors diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 882d0b989c..79fff2a76a 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -1,7 +1,10 @@ /obj/machinery/computer/bank_machine name = "bank machine" desc = "A machine used to deposit and withdraw station funds." - icon = 'goon/icons/obj/goon_terminals.dmi' + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + icon_screen = "vault" + icon_keyboard = "security_key" idle_power_usage = 100 var/siphoning = FALSE diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index 3cfd8fdfc4..869d583037 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -3,7 +3,7 @@ desc = "A culinary marvel that uses matter-to-energy conversion to store dishes and shards. Convenient! \ Additional features include a vacuum function to suck in nearby dishes, and an automatic transfer beam that empties its contents into nearby disposal bins every now and then. \ Or you can just drop your plates on the floor, like civilized folk." - icon = 'goon/icons/obj/kitchen.dmi' + icon = 'icons/obj/kitchen.dmi' icon_state = "synthesizer" idle_power_usage = 8 //5 with default parts active_power_usage = 13 //10 with default parts diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index 7a6c159160..e58dbc23ce 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -1,7 +1,7 @@ /obj/item/singularityhammer name = "singularity hammer" desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." - icon_state = "mjollnir0" + icon_state = "singularity_hammer0" lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' flags_1 = CONDUCT_1 @@ -25,7 +25,7 @@ /obj/item/singularityhammer/ComponentInitialize() . = ..() - AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="mjollnir1") + AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="singularity_hammer1") /// triggered on wield of two handed item /obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user) @@ -36,7 +36,7 @@ wielded = FALSE /obj/item/singularityhammer/update_icon_state() - icon_state = "mjollnir0" + icon_state = "singularity_hammer0" /obj/item/singularityhammer/Destroy() STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 5b78ca323c..4266f006ec 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -13,15 +13,16 @@ return 0 . = ..() -// Exists to work around the minimum 700 cr price for goodies / small items -/obj/structure/closet/secure_closet/goodies +// Exists to work around the minimum 700 cr price for goodies / small items / materials +/obj/structure/closet/secure_closet/cargo + name = "cargo locker" icon_state = "goodies" desc = "A sturdier card-locked storage unit used for bulky shipments." max_integrity = 500 // Same as crates. melee_min_damage = 25 // Idem. -/obj/structure/closet/secure_closet/goodies/owned - name = "private locker" +/obj/structure/closet/secure_closet/cargo/owned + name = "private cargo locker" desc = "A locker designed to only open for who purchased its contents." ///Account of the person buying the crate if private purchasing. var/datum/bank_account/buyer_account @@ -32,18 +33,18 @@ ///Is the crate being bought by a person, or a budget card? var/department_purchase = FALSE -/obj/structure/closet/secure_closet/goodies/owned/examine(mob/user) +/obj/structure/closet/secure_closet/cargo/owned/examine(mob/user) . = ..() . += "It's locked with a privacy lock, and can only be unlocked by the buyer's ID." -/obj/structure/closet/secure_closet/goodies/owned/Initialize(mapload, datum/bank_account/_buyer_account) +/obj/structure/closet/secure_closet/cargo/owned/Initialize(mapload, datum/bank_account/_buyer_account) . = ..() buyer_account = _buyer_account if(istype(buyer_account, /datum/bank_account/department)) department_purchase = TRUE department_account = buyer_account -/obj/structure/closet/secure_closet/goodies/owned/togglelock(mob/living/user, silent) +/obj/structure/closet/secure_closet/cargo/owned/togglelock(mob/living/user, silent) if(privacy_lock) if(!broken) var/obj/item/card/id/id_card = user.get_idcard(TRUE) diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index ad9fa2018e..c2c7897f0f 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -96,7 +96,7 @@ var/static/list/blacklisted_error = typecacheof(list( /obj/structure/closet/crate/secure, /obj/structure/closet/crate/large, - /obj/structure/closet/secure_closet/goodies + /obj/structure/closet/secure_closet/cargo )) if(is_type_in_list(container, blacklisted_error)) P.errors &= ~MANIFEST_ERROR_ITEM diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 3e3aeff592..13f1e77441 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -22,8 +22,8 @@ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) - if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) // lets ensure private orders don't come in crates when the original one comes in lockers - C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) // that would lead to infinite money exploits + if(ispath(crate_type, /obj/structure/closet/secure_closet/cargo)) // lets ensure private orders don't come in crates when the original one comes in lockers + C = new /obj/structure/closet/secure_closet/cargo/owned(A, paying_account) // that would lead to infinite money exploits else C = new /obj/structure/closet/crate/secure/owned(A, paying_account) C.name = "[crate_name] - Purchased by [paying_account.account_holder]" diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 94f14fb503..90629706b5 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -14,56 +14,56 @@ ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/materials/cardboard50 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "50 Cardboard Sheets" desc = "Create a bunch of boxes." cost = 300 //thrice their export value contains = list(/obj/item/stack/sheet/cardboard/fifty) /datum/supply_pack/materials/glass50 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "50 Glass Sheets" desc = "Let some nice light in with fifty glass sheets!" cost = 300 //double their export value contains = list(/obj/item/stack/sheet/glass/fifty) /datum/supply_pack/materials/metal50 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "50 Metal Sheets" desc = "Any construction project begins with a good stack of fifty metal sheets!" cost = 300 //double their export value contains = list(/obj/item/stack/sheet/metal/fifty) /datum/supply_pack/materials/plasteel20 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "20 Plasteel Sheets" desc = "Reinforce the station's integrity with twenty plasteel sheets!" cost = 4000 contains = list(/obj/item/stack/sheet/plasteel/twenty) -/datum/supply_pack/materials/plastic50 - crate_type = /obj/structure/closet/secure_closet/goodies - name = "50 Plastic Sheets" +/datum/supply_pack/materials/plastic20 + crate_type = /obj/structure/closet/secure_closet/cargo + name = "20 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" cost = 200 // double their export contains = list(/obj/item/stack/sheet/plastic/twenty) /datum/supply_pack/materials/sandstone30 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "30 Sandstone Blocks" desc = "Neither sandy nor stoney, these thirty blocks will still get the job done." cost = 150 // five times their export contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty) /datum/supply_pack/materials/wood20 - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "20 Wood Planks" desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with twenty wooden planks!" cost = 400 // 6-7 planks shy from having equal import/export prices contains = list(/obj/item/stack/sheet/mineral/wood/twenty) /datum/supply_pack/materials/rcdammo - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "Large RCD ammo Single-Pack" desc = "A single large compressed RCD matter pack, to help with any holes or projects people might be working on." cost = 600 diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index d72ee231a8..91663dbe0f 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -370,7 +370,7 @@ ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/misc/carpet - crate_type = /obj/structure/closet/secure_closet/goodies + crate_type = /obj/structure/closet/secure_closet/cargo name = "Classic Carpet Single-Pack" desc = "Plasteel floor tiles getting on your nerves? This 50 units stack of extra soft carpet will tie any room together." cost = 200 diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index d7ee4de62c..58d5d26e86 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -56,7 +56,7 @@ desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." icon_state = "tactifool" item_state = "bl_suit" - has_sensor = TRUE + has_sensor = HAS_SENSORS armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 5) /obj/item/clothing/under/syndicate/cosmetic/skirt @@ -64,6 +64,7 @@ icon_state = "tactifool_skirt" fitted = FEMALE_UNIFORM_TOP mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON + can_adjust = FALSE /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" diff --git a/code/modules/events/cat_wave.dm b/code/modules/events/cat_wave.dm deleted file mode 100644 index 155da8ca08..0000000000 --- a/code/modules/events/cat_wave.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/round_event_control/meteor_wave/cat - name = "Meteor Wave: CATastrophic" - typepath = /datum/round_event/meteor_wave/cat - weight = 10 - max_occurrences = 1 - -/datum/round_event/meteor_wave/cat - wave_name = "cat" - -/datum/round_event/meteor_wave/cat/announce(fake) - priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert", "meteors") diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 9aa9cac258..e69af1df13 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -56,8 +56,6 @@ wave_type = GLOB.meteorsC if("halloween") wave_type = GLOB.meteorsSPOOKY - if("cat") - wave_type = GLOB.meteorsCat else WARNING("Wave name of [wave_name] not recognised.") kill() diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 769bf1dc19..edd30ab1a9 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -213,7 +213,7 @@ ) result = /obj/item/reagent_containers/food/snacks/salad/gumbo subcategory = CAT_MEAT - + /datum/crafting_recipe/food/goliathcalamari name = "Goliath Calamari" reqs = list( @@ -221,4 +221,4 @@ /datum/reagent/consumable/cooking_oil = 10 ) result = /obj/item/reagent_containers/food/snacks/goliathcalamari - + subcategory = CAT_MEAT diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 6044e8131d..bfda6c453c 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -126,7 +126,8 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( var/value = 0 var/purchases = 0 var/list/goodies_by_buyer = list() // if someone orders more than GOODY_FREE_SHIPPING_MAX goodies, we upcharge to a normal crate so they can't carry around 20 combat shotties - // var/list/lockers_by_buyer = list() // TODO, combine orders that come in lockers into a single locker to not crowd the shuttle + var/list/lockers_by_buyer = list() // used to combine orders that come in lockers into a single locker to not crowd the shuttle + for(var/datum/supply_order/SO in SSshuttle.shoppinglist) if(!empty_turfs.len) break @@ -147,11 +148,15 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( D.bank_card_talk("Goody order size exceeds free shipping limit: Assessing [CRATE_TAX] credit S&H fee.") else D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) if(!D.adjust_money(-price)) if(SO.paying_account) D.bank_card_talk("Cargo order #[SO.id] rejected due to lack of funds. Credits required: [price]") continue + else if(ispath(SO.pack.crate_type, /obj/structure/closet/secure_closet/cargo)) + LAZYADD(lockers_by_buyer[D], SO) + if(SO.paying_account) if(SO.pack.goody) @@ -164,7 +169,7 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( SSshuttle.orderhistory += SO QDEL_NULL(SO.applied_coupon) - if(!SO.pack.goody) //we handle goody crates below + if(!SO.pack.goody && !ispath(SO.pack.crate_type, /obj/structure/closet/secure_closet/cargo)) //we handle goody crates and material closets below SO.generate(pick_n_take(empty_turfs)) SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) @@ -198,6 +203,33 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( misc_contents[buyer] += item misc_order_num[buyer] = "[misc_order_num[buyer]]#[our_order.id] " + + // handling locker bundles + for(var/D in lockers_by_buyer) + var/list/buying_account_orders = lockers_by_buyer[D] + + var/buyer + + if(!istype(D, /datum/bank_account/department)) // department accounts break the secure closet for some reason + var/obj/structure/closet/secure_closet/cargo/owned/our_closet = new /obj/structure/closet/secure_closet/cargo/owned(pick_n_take(empty_turfs)) + var/datum/bank_account/buying_account = D + buyer = buying_account.account_holder + our_closet.buyer_account = buying_account + our_closet.name = "private cargo locker - purchased by [buyer]" + miscboxes[buyer] = our_closet + else + var/obj/structure/closet/secure_closet/cargo/our_closet = new /obj/structure/closet/secure_closet/cargo(pick_n_take(empty_turfs)) + buyer = "Cargo" + miscboxes[buyer] = our_closet + + misc_contents[buyer] = list() + for(var/O in buying_account_orders) + var/datum/supply_order/our_order = O + for(var/item in our_order.pack.contains) + misc_contents[buyer] += item + misc_order_num[buyer] = "[misc_order_num[buyer]]#[our_order.id] " + + for(var/I in miscboxes) var/datum/supply_order/SO = new/datum/supply_order() SO.id = misc_order_num[I] diff --git a/code/modules/unit_tests/crafting_recipes.dm b/code/modules/unit_tests/crafting_recipes.dm new file mode 100644 index 0000000000..33803bd111 --- /dev/null +++ b/code/modules/unit_tests/crafting_recipes.dm @@ -0,0 +1,7 @@ +/datum/unit_test/crafting_recipes/Run() + for(var/i in GLOB.crafting_recipes) + var/datum/crafting_recipe/R = i + if(!R.subcategory) + Fail("Invalid subcategory on [R] ([R.type]).") + if(!R.category && (R.cateogry != CAT_NONE)) + Fail("Invalid category on [R] ([R.type])") diff --git a/goon/icons/obj/closet.dmi b/goon/icons/obj/closet.dmi deleted file mode 100644 index 6083923033..0000000000 Binary files a/goon/icons/obj/closet.dmi and /dev/null differ diff --git a/goon/icons/obj/goon_terminals.dmi b/goon/icons/obj/goon_terminals.dmi deleted file mode 100644 index 6452c9fc09..0000000000 Binary files a/goon/icons/obj/goon_terminals.dmi and /dev/null differ diff --git a/goon/icons/obj/kitchen.dmi b/goon/icons/obj/kitchen.dmi deleted file mode 100644 index b45307a647..0000000000 Binary files a/goon/icons/obj/kitchen.dmi and /dev/null differ diff --git a/html/changelog.html b/html/changelog.html index fe3a0fe1b5..5537637776 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,12 @@ -->