From 7ef8b36324b6bedcdf2dd22b9b10a3a074029009 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Tue, 4 Feb 2020 18:45:31 -0600 Subject: [PATCH 01/74] golems have gpses now --- .../RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 2c6eda9f90..08c756b15f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -18,6 +18,9 @@ /obj/item/mining_scanner, /obj/item/flashlight/lantern, /obj/item/card/id/mining, +/obj/item/gps/mining{ + tracking = 0 + }, /turf/open/floor/plating, /area/ruin/powered/golem_ship) "d" = ( @@ -31,6 +34,9 @@ /obj/item/mining_scanner, /obj/item/flashlight/lantern, /obj/item/card/id/mining, +/obj/item/gps/mining{ + tracking = 0 + }, /turf/open/floor/plating, /area/ruin/powered/golem_ship) "e" = ( @@ -150,6 +156,7 @@ "x" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder, +/obj/item/gps/mining, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) "z" = ( From 16fbdd905464b40725dbb2b593b92b8786a9f07e Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Wed, 5 Feb 2020 06:45:24 +0100 Subject: [PATCH 02/74] Update Sleeper.dm --- code/game/machinery/Sleeper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index b6dc09eb59..a83c3add9f 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -264,7 +264,7 @@ if(blood_id) data["occupant"]["blood"] = list() // We can start populating this list. var/blood_type = C.dna.blood_type - if(blood_id != "blood") // special blood substance + if(!(blood_id in GLOB.blood_reagent_types)) // special blood substance var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id] if(R) blood_type = R.name From 7362b89aeb0cbe9449637a5f72f6563928883226 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 7 Feb 2020 07:52:41 +0100 Subject: [PATCH 03/74] More stuff. --- code/game/turfs/turf.dm | 2 ++ .../reagents/chemistry/reagents/toxin_reagents.dm | 2 +- strings/spurdo_replacement.json | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 strings/spurdo_replacement.json diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 688e03def3..9adc813c6c 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -554,6 +554,8 @@ //if the vomit combined, apply toxicity and reagents to the old vomit if (QDELETED(V)) V = locate() in src + if(!V) //the decal was spawned on a wall or groundless turf and promptly qdeleted. + return // Make toxins and blazaam vomit look different if(toxvomit == VOMIT_PURPLE) V.icon_state = "vomitpurp_[pick(1,4)]" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a32cb94401..a9762cfe1c 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -504,7 +504,7 @@ toxpwr = 0 /datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) + if((method == TOUCH || method == VAPOR) && M.reagents) M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume) /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) diff --git a/strings/spurdo_replacement.json b/strings/spurdo_replacement.json new file mode 100644 index 0000000000..71c7c8d356 --- /dev/null +++ b/strings/spurdo_replacement.json @@ -0,0 +1,14 @@ +{ + + "spurdo": { + "epic": "ebin", + "c": "g", + "ck": "gg", + "k": "g", + "t": "d", + "p": "b", + "x": "gs" + } + + +} \ No newline at end of file From e5236eebb187db0dba4e82694c9d8f0c528bd9b0 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Sat, 8 Feb 2020 17:39:00 -0500 Subject: [PATCH 04/74] hey lets do corrections --- .../game/objects/items/stacks/sheets/glass.dm | 3 +++ .../objects/items/stacks/sheets/mineral.dm | 3 +++ .../crates_lockers/crates/secure.dm | 5 +++++ code/modules/cargo/exports/materials.dm | 5 ----- code/modules/cargo/exports/sheets.dm | 10 ++++++++++ code/modules/cargo/packs/armory.dm | 8 ++++---- code/modules/cargo/packs/emergency.dm | 2 +- code/modules/cargo/packs/materials.dm | 16 ++++++++++++++++ code/modules/cargo/packs/medical.dm | 3 ++- code/modules/cargo/packs/organic.dm | 11 ++++++----- code/modules/cargo/packs/security.dm | 2 +- icons/obj/crates.dmi | Bin 22382 -> 22621 bytes 12 files changed, 51 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 21de34faa1..72904a80ed 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -254,6 +254,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( merge_type = /obj/item/stack/sheet/plastitaniumglass shard_type = /obj/item/shard +/obj/item/stack/sheet/plastitaniumglass/fifty + amount = 50 + /obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.plastitaniumglass_recipes return ..() diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 53b78b2ecf..8541b539c9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -323,6 +323,9 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ point_value = 45 merge_type = /obj/item/stack/sheet/mineral/plastitanium +/obj/item/stack/sheet/mineral/plastitanium/fifty + amount = 50 + GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \ )) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 290e69370b..602adfb367 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -70,3 +70,8 @@ name = "secure science crate" desc = "A crate with a lock on it, painted in the scheme of the station's scientists." icon_state = "scisecurecrate" + +/obj/structure/closet/crate/secure/medical + desc = "A secure medical crate." + name = "medical crate" + icon_state = "medical_secure_crate" \ No newline at end of file diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index d8fc5f22ab..1b38a809cf 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -65,11 +65,6 @@ material_id = MAT_TITANIUM message = "cm3 of titanium" -/datum/export/material/plastitanium - cost = 165 // plasma + titanium costs - material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium - message = "cm3 of plastitanium" - /datum/export/material/plastic cost = 5 material_id = MAT_PLASTIC diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index f784083097..df1704d660 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -67,6 +67,16 @@ message = "of plasteel" export_types = list(/obj/item/stack/sheet/plasteel) +/datum/export/material/plastitanium + cost = 165 // plasma + titanium costs + export_types = list(/obj/item/stack/sheet/mineral/plastitanium) + message = "of plastitanium" + +/datum/export/material/plastitanium_glass + cost = 168 // plasma + titanium + glass costs + export_types = list(/obj/item/stack/sheet/plastitaniumglass) + message = "of plastitanium glass" + // 1 glass + 0.5 metal, cost is rounded up. /datum/export/stack/rglass cost = 6 diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index ea8ef8ba0f..4c500a0162 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -178,7 +178,7 @@ /datum/supply_pack/security/armory/russian name = "Russian Surplus Crate" desc = "Hello Comrade, we have the most modern russian military equipment the black market can offer, for the right price of course. Sadly we couldnt remove the lock so it requires Armory access to open." - cost = 5000 + cost = 7500 contraband = TRUE contains = list(/obj/item/reagent_containers/food/snacks/rationpack, /obj/item/ammo_box/a762, @@ -193,11 +193,11 @@ /obj/item/clothing/head/helmet/rus_ushanka, /obj/item/clothing/suit/armor/vest/russian_coat, /obj/item/gun/ballistic/shotgun/boltaction, - /obj/item/gun/ballistic/shotgun/boltaction) + /obj/item/staff/broom) //Its... A real thing that was done in the Russian army crate_name = "surplus military crate" /datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C) - for(var/i in 1 to 10) + for(var/i in 1 to 5) var/item = pick(contains) new item(C) @@ -218,7 +218,7 @@ crate_name = "swat crate" /datum/supply_pack/security/armory/swattasers //Lesser AEG tbh - name = "SWAT tatical tasers Crate" + name = "SWAT tactical tasers Crate" desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open." cost = 7000 contains = list(/obj/item/gun/energy/e_gun/stun, diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index e32811f2d0..e5036c34a5 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -130,7 +130,7 @@ /datum/supply_pack/emergency/bomb name = "Explosive Emergency Crate" - desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station des... I mean needs! (Time not included.)" + desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station kills-... I mean needs! Time not included, but what is a full bomb suit and hood, gas mask with the tools you need to defuse a none-nuclear bomb." cost = 1500 contains = list(/obj/item/clothing/head/bomb_hood, /obj/item/clothing/suit/bomb_suit, diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 6c1742896f..ea7df06bda 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -48,6 +48,22 @@ contains = list(/obj/item/stack/sheet/plasteel/fifty) crate_name = "plasteel sheets crate" +/datum/supply_pack/materials/plastitanium50 + name = "50 Plastitanium Sheets" + desc = "Build an evil empire with fifty plastitanium sheets." + cost = 9250 + contraband = TRUE + contains = list(/obj/item/stack/sheet/mineral/plastitanium/fifty) + crate_name = "plastitanium sheets crate" + +/datum/supply_pack/materials/plastitanium_glass50 + name = "50 Plastitanium Glass Sheets" + desc = "Look out from your evil empire with fifty plastitanium glass sheets." + cost = 9500 + contraband = TRUE + contains = list(/obj/item/stack/sheet/plastitaniumglass/fifty) + crate_name = "plastitanium glass sheets crate" + /datum/supply_pack/materials/plastic50 name = "50 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index ea327ae820..5d02bbe60f 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -88,6 +88,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/suit/space/hardsuit/medical) crate_name = "medical hardsuit" + crate_type = /obj/structure/closet/crate/secure/medical /datum/supply_pack/medical/supplies name = "Medical Supplies Crate" @@ -125,7 +126,7 @@ /obj/item/reagent_containers/medspray/synthflesh, /obj/item/reagent_containers/medspray/sterilizine) crate_name = "medco surgery tools" - crate_type = /obj/structure/closet/crate/medical + crate_type = /obj/structure/closet/crate/secure/medical /datum/supply_pack/medical/surgery name = "Surgical Supplies Crate" diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 4aa991fc3f..7d28ceefef 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -193,6 +193,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/bear, /obj/item/reagent_containers/food/snacks/meat/slab/xeno, /obj/item/reagent_containers/food/snacks/meat/slab/spider, + /obj/item/reagent_containers/food/snacks/meat/rawcrab, /obj/item/reagent_containers/food/snacks/meat/rawbacon, /obj/item/reagent_containers/food/snacks/spiderleg, /obj/item/reagent_containers/food/snacks/carpmeat, @@ -213,7 +214,7 @@ /datum/supply_pack/organic/fakemeat name = "Meat Crate 'Synthetic'" - desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 12 slabs of meat product, and 4 slabs of *carp*." + desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 9 slabs of meat product, 3 carb meat and 4 slabs of *carp*." cost = 1200 // Buying 3 food crates nets you 9 meat for 900 points, plus like, 6 bags of rice, flour, and egg boxes. This is 12 for 500, but you -only- get meat and carp. contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, @@ -224,9 +225,9 @@ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/rawcrab, + /obj/item/reagent_containers/food/snacks/meat/rawcrab, + /obj/item/reagent_containers/food/snacks/meat/rawcrab, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, @@ -327,7 +328,7 @@ /datum/supply_pack/organic/seeds name = "Seeds Crate" - desc = "Big things have small beginnings. Contains thirteen different seeds." + desc = "Big things have small beginnings. Contains fourteen different seeds." cost = 1250 contains = list(/obj/item/seeds/chili, /obj/item/seeds/berry, diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index fd7e07a66c..90bc837767 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -103,7 +103,7 @@ desc = "An old russian Minutemen crate, comes with a full russian outfit, a mosin and a stripper clip." contraband = TRUE access = FALSE - cost = 5500 // + cost = 6500 // contains = list(/obj/item/clothing/suit/armor/navyblue/russian, /obj/item/clothing/shoes/combat, /obj/item/clothing/head/ushanka, diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index ca81686e942e0c2973dacff3450a0d3214d4df33..ecb66d0119b504f18f5309f07896199483565a1d 100644 GIT binary patch literal 22621 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 R0o!1ZHdJ4uLftmv{{YB;Je>dl literal 22382 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 Gul@s1egnP$ From 1e2562ed0206c567273bfc86eccdd31d4abcfb57 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 8 Feb 2020 18:59:00 -0500 Subject: [PATCH 05/74] Update organic.dm --- code/modules/cargo/packs/organic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 7d28ceefef..79853e1aaf 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -214,7 +214,7 @@ /datum/supply_pack/organic/fakemeat name = "Meat Crate 'Synthetic'" - desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 9 slabs of meat product, 3 carb meat and 4 slabs of *carp*." + desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 9 slabs of meat product, 3 crab meat and 4 slabs of *carp*." cost = 1200 // Buying 3 food crates nets you 9 meat for 900 points, plus like, 6 bags of rice, flour, and egg boxes. This is 12 for 500, but you -only- get meat and carp. contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, From d49a53e19388920e915784eb9ceeca8f9739daca Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 8 Feb 2020 22:17:58 -0500 Subject: [PATCH 06/74] Update costumes_toys.dm --- code/modules/cargo/packs/costumes_toys.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 4a64979502..c559e7925a 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -63,6 +63,7 @@ /obj/item/toy/cards/deck/syndicate, /obj/item/reagent_containers/food/drinks/bottle/absinthe, /obj/item/clothing/under/syndicate/tacticool, + /obj/item/clothing/under/syndicate/skirt, /obj/item/clothing/under/syndicate, /obj/item/suppressor, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, From 4b880276d891c604e3bfbbd0d8fe7c99ce28c171 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Wed, 12 Feb 2020 14:41:38 -0500 Subject: [PATCH 07/74] Update emergency.dm --- code/modules/cargo/packs/emergency.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index e5036c34a5..b06561a1c2 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -130,7 +130,7 @@ /datum/supply_pack/emergency/bomb name = "Explosive Emergency Crate" - desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station kills-... I mean needs! Time not included, but what is a full bomb suit and hood, gas mask with the tools you need to defuse a none-nuclear bomb." + desc = "Science gone bonkers? Beeping behind the airlock? Buy now and become the hero the station ki-... I mean needs! Time not included, but a full bomb suit and hood, as well as a mask and defusal kit are! Non-Nuclear ordinance only." cost = 1500 contains = list(/obj/item/clothing/head/bomb_hood, /obj/item/clothing/suit/bomb_suit, From 1276453dc4a4dccee4cbb979da5dc205555ccb54 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Thu, 13 Feb 2020 21:01:28 -0600 Subject: [PATCH 08/74] initial commit - preservahyde --- code/modules/mob/living/carbon/life.dm | 6 +++--- .../reagents/chemistry/reagents/medicine_reagents.dm | 5 ++--- code/modules/reagents/chemistry/reagents/other_reagents.dm | 7 +++++++ code/modules/reagents/reagent_containers/hypospray.dm | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 534509523a..15b50fbeed 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -357,8 +357,8 @@ if(istype(loc, /obj/structure/closet/crate/coffin)|| istype(loc, /obj/structure/closet/body_bag) || istype(loc, /obj/structure/bodycontainer)) return - // No decay if formaldehyde in corpse or when the corpse is charred - if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || HAS_TRAIT(src, TRAIT_HUSK)) + // No decay if formaldehyde/preservahyde in corpse or when the corpse is charred + if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || HAS_TRAIT(src, TRAIT_HUSK) || reagents.has_reagent(/datum/reagent/preservahyde, 1)) return // Also no decay if corpse chilled or not organic/undead @@ -397,7 +397,7 @@ if(O) O.on_life() else - if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1)) // No organ decay if the body contains formaldehyde. + if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || reagents.has_reagent(/datum/reagent/preservahyde, 1)) // No organ decay if the body contains formaldehyde. Or preservahyde. return for(var/V in internal_organs) var/obj/item/organ/O = V diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 6d37f30884..0a040a4f17 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1482,14 +1482,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems. name = "Polypyrylium Oligomers" - description = "A�purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals." + description = "A purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals." reagent_state = SOLID color = "#9423FF" metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 50 taste_description = "numbing bitterness" -/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I w�nted a collection of small positive effects, this is as hard to obtain as coniine after all. +/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I wanted a collection of small positive effects, this is as hard to obtain as coniine after all. M.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25) M.adjustBruteLoss(-0.35, 0) if(prob(50)) @@ -1511,4 +1511,3 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5) ..() . = 1 - diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index c7e574594b..81cfabb1ef 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2139,3 +2139,10 @@ to_chat(M, "You feel like playing with your [G.name]!") ..() + +/datum/reagent/preservahyde + name = "Preservahyde" + description = "A powerful preservation agent, utilizing the preservative effects of formaldehyde with significantly less of the histamine." + reagent_state = LIQUID + color = "#f7685e" + metabolization_rate = REAGENTS_METABOLISM * 0.25 diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index eac8edcbc8..fba0bad809 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -95,7 +95,7 @@ ignore_flags = 1 //so you can medipen through hardsuits reagent_flags = DRAWABLE flags_1 = null - list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/toxin/formaldehyde = 3) + list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/preservahyde = 3) /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") From c8d0cacf51217c0e5a47ba987600dd30bac2fa0d Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Thu, 13 Feb 2020 21:08:38 -0600 Subject: [PATCH 09/74] bad recipe --- code/modules/reagents/chemistry/recipes/others.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index b463b5758b..347313cceb 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -47,6 +47,12 @@ results = list(/datum/reagent/consumable/sodiumchloride = 3) required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) +/datum/chemical_reaction/preservahyde + name = "Preservahyde" + id = "preservahyde" + results = list(/datum/reagent/preservahyde = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/bromine = 1) + /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" id = "solidplasma" From b2e3243760a8c43e993321e3fe7812842206f391 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Thu, 13 Feb 2020 21:32:27 -0600 Subject: [PATCH 10/74] there's no way this should have worked --- code/game/objects/items/storage/book.dm | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 2762be8edf..157d88e725 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -173,22 +173,24 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) A.reagents.del_reagent(/datum/reagent/fuel/unholywater) A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) - if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user)) - var/obj/item/twohanded/required/cult_bastard/sword = A + if(istype(A, /obj/item/twohanded/required/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user)) + var/isbastardsword = FALSE + var/obj/item/sword = A to_chat(user, "You begin to exorcise [sword].") playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1) if(do_after(user, 40, target = sword)) playsound(src,'sound/effects/pray_chaplain.ogg',60,1) - for(var/obj/item/soulstone/SS in sword.contents) - SS.usability = TRUE - for(var/mob/living/simple_animal/shade/EX in SS) - SSticker.mode.remove_cultist(EX.mind, 1, 0) - EX.icon_state = "ghost1" - EX.name = "Purified [EX.name]" - SS.release_shades(user) - qdel(SS) + if(isbastardsword) + for(var/obj/item/soulstone/SS in sword.contents) + SS.usability = TRUE + for(var/mob/living/simple_animal/shade/EX in SS) + SSticker.mode.remove_cultist(EX.mind, 1, 0) + EX.icon_state = "ghost1" + EX.name = "Purified [EX.name]" + SS.release_shades(user) + qdel(SS) new /obj/item/nullrod/claymore(get_turf(sword)) - user.visible_message("[user] has purified the [sword]!") + user.visible_message("[user] has purified [sword]!") qdel(sword) else if(istype(A, /obj/item/soulstone) && !iscultist(user)) From e0537218200fa2ff0664975ebb028583219255c0 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 14 Feb 2020 07:15:13 +0100 Subject: [PATCH 11/74] Fix for solar panels/trackers being wonky. --- code/modules/power/solar.dm | 27 +++++++++++++-------------- code/modules/power/tracker.dm | 20 +++++++++----------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index e6d44de194..a0eeae1ea9 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -24,7 +24,16 @@ /obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S) . = ..() - Make(S) + if(!S) + assembly = new /obj/item/solar_assembly + assembly.glass_type = new /obj/item/stack/sheet/glass(null, 2) + assembly.anchored = TRUE + else + S.moveToNullspace() + assembly = S + assembly.glass_type.on_solar_construction(src) + obj_integrity = max_integrity + update_icon() connect_to_network() /obj/machinery/power/solar/Destroy() @@ -45,17 +54,6 @@ control.connected_panels.Remove(src) control = null -/obj/machinery/power/solar/proc/Make(obj/item/solar_assembly/S) - if(!S) - S = new /obj/item/solar_assembly - S.glass_type = new /obj/item/stack/sheet/glass(null, 2) - S.anchored = TRUE - else - S.moveToNullspace() - S.glass_type.on_solar_construction(src) - obj_integrity = max_integrity - update_icon() - /obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] begins to take the glass off [src].", "You begin to take the glass off [src]...") @@ -201,7 +199,7 @@ new shard(Tsec) new shard(Tsec) else if(glass_type) - forceMove(glass_type, Tsec) + glass_type.forceMove(Tsec) glass_type = null /obj/item/solar_assembly/attackby(obj/item/W, mob/user, params) @@ -226,7 +224,8 @@ var/obj/item/stack/sheet/G = S.change_stack(null, 2) if(G) glass_type = G - playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + G.moveToNullspace() + playsound(loc, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.") if(tracker) new /obj/machinery/power/tracker(get_turf(src), src) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index c25ece3594..8701dfea7f 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -20,7 +20,15 @@ /obj/machinery/power/tracker/Initialize(mapload, obj/item/solar_assembly/S) . = ..() - Make(S) + if(!S) + assembly = new /obj/item/solar_assembly + assembly.glass_type = new /obj/item/stack/sheet/glass(null, 2) + assembly.tracker = TRUE + assembly.anchored = TRUE + else + S.moveToNullspace() + assembly = S + update_icon() connect_to_network() /obj/machinery/power/tracker/Destroy() @@ -41,16 +49,6 @@ control.connected_tracker = null control = null -/obj/machinery/power/tracker/proc/Make(obj/item/solar_assembly/S) - if(!S) - S = new /obj/item/solar_assembly - S.glass_type = new /obj/item/stack/sheet/glass(null, 2) - S.tracker = TRUE - S.anchored = TRUE - else - S.moveToNullspace() - update_icon() - //updates the tracker icon and the facing angle for the control computer /obj/machinery/power/tracker/proc/set_angle(angle) sun_angle = angle From d45a20c19b0a8d2249a731eaa46ce384ff575dcb Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Fri, 14 Feb 2020 05:12:50 -0700 Subject: [PATCH 12/74] Podpeople tweaks - Podpeople can wag tails now - Moved a few features into the podperson race itself instead of its weaker, roundstart variant; this in theory, will allow pod-grown hydroponics podpeople to have hair now, as well as all those anthropomorphic features, should they be revived through this method. - Fixed the lifebringers having no name somehow but... currently lifebringers under this change will turn them into animal anthropomorphic hairy mutants of some kind until I figure out how to make them the bald podpeople that they once were, could use some help with this. --- .../objects/structures/ghost_role_spawners.dm | 24 +++++++++---- .../carbon/human/species_types/podpeople.dm | 35 ++++++++++++++++--- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index e9d9e4ce77..3b1b20d46a 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -20,13 +20,7 @@ assignedrole = "Lifebringer" /obj/effect/mob_spawn/human/seed_vault/special(mob/living/new_spawn) - var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \ - "Venus", "Sprout","Cocoa", "Strawberry", "Citrus", "Oak", "Cactus", "Pepper", "Juniper") - new_spawn.real_name = plant_name - if(ishuman(new_spawn)) - var/mob/living/carbon/human/H = new_spawn - H.underwear = "Nude" //You're a plant, partner - H.update_body() + /obj/effect/mob_spawn/human/seed_vault/Destroy() new/obj/structure/fluff/empty_terrarium(get_turf(src)) @@ -34,6 +28,22 @@ /obj/effect/mob_spawn/human/seed_vault/special(mob/living/carbon/human/new_spawn) ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) + var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \ + "Venus", "Sprout","Cocoa", "Strawberry", "Citrus", "Oak", "Cactus", "Pepper", "Juniper") + new_spawn.real_name = plant_name + new_spawn.underwear = "Nude" //You're a plant, partner + new_spawn.undershirt = "Nude" + new_spawn.socks = "Nude" + new_spawn.dna.features["snout"] = "None" + new_spawn.dna.features["body_markings"] = "Plain" + new_spawn.dna.features["mam_tail"] = "None" + new_spawn.dna.features["taur"] = "None" + new_spawn.dna.features["ears"] = "None" + new_spawn.dna.features["legs"] = "Plantigrade" + new_spawn.facial_hair_style = "Shaved" + new_spawn.hair_style = "Bald" + new_spawn.regenerate_icons() + //Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers. /obj/effect/mob_spawn/human/ash_walker diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 66eb207670..4fcf1eebec 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -3,7 +3,9 @@ name = "Anthromorphic Plant" id = "pod" default_color = "59CE00" - species_traits = list(MUTCOLORS,EYECOLOR) + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") attack_verb = "slash" attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -70,13 +72,38 @@ if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +/datum/species/pod/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/pod/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/pod/can_wag_tail(mob/living/carbon/human/H) + return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/is_wagging_tail(mob/living/carbon/human/H) + return ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/start_wagging_tail(mob/living/carbon/human/H) + if("mam_tail" in mutant_bodyparts) + mutant_bodyparts -= "mam_tail" + mutant_bodyparts |= "mam_waggingtail" + H.update_body() + +/datum/species/pod/stop_wagging_tail(mob/living/carbon/human/H) + if("mam_waggingtail" in mutant_bodyparts) + mutant_bodyparts -= "mam_waggingtail" + mutant_bodyparts |= "mam_tail" + H.update_body() + + /datum/species/pod/pseudo_weak name = "Anthromorphic Plant" id = "podweak" limbs_id = "pod" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) - mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") light_nutrition_gain_factor = 7.5 light_bruteheal = 0.2 light_burnheal = 0.2 From 3b873d40007b1eb14d3493dc6df625b027e9795d Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Fri, 14 Feb 2020 16:28:39 -0600 Subject: [PATCH 13/74] thanks ghommie --- code/game/objects/items/storage/book.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 157d88e725..ed0181da55 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -174,14 +174,12 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", A.reagents.del_reagent(/datum/reagent/fuel/unholywater) A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) if(istype(A, /obj/item/twohanded/required/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user)) - var/isbastardsword = FALSE - var/obj/item/sword = A to_chat(user, "You begin to exorcise [sword].") playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1) - if(do_after(user, 40, target = sword)) + if(do_after(user, 40, target = A)) playsound(src,'sound/effects/pray_chaplain.ogg',60,1) - if(isbastardsword) - for(var/obj/item/soulstone/SS in sword.contents) + if(istype(A, /obj/item/twohanded/required/cult_bastard)) + for(var/obj/item/soulstone/SS in A.contents) SS.usability = TRUE for(var/mob/living/simple_animal/shade/EX in SS) SSticker.mode.remove_cultist(EX.mind, 1, 0) From 5a9208bc423523d2cbb71d9af1018a6a1e3b9e0b Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Fri, 14 Feb 2020 16:29:17 -0600 Subject: [PATCH 14/74] shit whoops --- code/game/objects/items/storage/book.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index ed0181da55..37f5b8d756 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -174,7 +174,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", A.reagents.del_reagent(/datum/reagent/fuel/unholywater) A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) if(istype(A, /obj/item/twohanded/required/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user)) - to_chat(user, "You begin to exorcise [sword].") + to_chat(user, "You begin to exorcise [A].") playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1) if(do_after(user, 40, target = A)) playsound(src,'sound/effects/pray_chaplain.ogg',60,1) @@ -187,9 +187,9 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", EX.name = "Purified [EX.name]" SS.release_shades(user) qdel(SS) - new /obj/item/nullrod/claymore(get_turf(sword)) - user.visible_message("[user] has purified [sword]!") - qdel(sword) + new /obj/item/nullrod/claymore(get_turf(A)) + user.visible_message("[user] has purified [A]!") + qdel(A) else if(istype(A, /obj/item/soulstone) && !iscultist(user)) var/obj/item/soulstone/SS = A From bbe1ddc0cfadc126997774c58b819c69b15c7769 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Fri, 14 Feb 2020 23:04:02 -0500 Subject: [PATCH 15/74] silk, bows, and graytide! --- .../datums/components/crafting/guncrafting.dm | 6 +++ .../crafting/recipes/recipes_primal.dm | 18 ++++++++ .../recipes/recipes_weapon_and_ammo.dm | 41 ++++++++++++++++++ code/game/objects/items/granters.dm | 8 +++- .../items/stacks/sheets/sheet_types.dm | 16 +++++-- .../objects/structures/ghost_role_spawners.dm | 7 +++ code/modules/cargo/exports/weapons.dm | 20 +++++++++ .../projectiles/ammunition/caseless/arrow.dm | 20 ++++++++- .../modules/projectiles/guns/ballistic/bow.dm | 17 +++++++- .../projectiles/projectile/reusable/arrow.dm | 21 ++++++++- icons/obj/ammo.dmi | Bin 25386 -> 26146 bytes icons/obj/guns/projectile.dmi | Bin 41577 -> 44010 bytes icons/obj/improvised.dmi | Bin 681 -> 742 bytes icons/obj/library.dmi | Bin 27469 -> 27618 bytes 14 files changed, 166 insertions(+), 8 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index d96be9be10..eeaa75ba6b 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -13,3 +13,9 @@ desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood." icon = 'icons/obj/improvised.dmi' icon_state = "riflestock" + +/obj/item/weaponcrafting/silkstrink + name = "silkstring" + desc = "A long pice of silk looks like cable coil." + icon = 'icons/obj/improvised.dmi' + icon_state = "silkstring" \ No newline at end of file diff --git a/code/datums/components/crafting/recipes/recipes_primal.dm b/code/datums/components/crafting/recipes/recipes_primal.dm index 1fc684eddc..696df5cf76 100644 --- a/code/datums/components/crafting/recipes/recipes_primal.dm +++ b/code/datums/components/crafting/recipes/recipes_primal.dm @@ -89,4 +89,22 @@ parts = list(/obj/item/bodypart/head = 1, /obj/item/twohanded/bonespear = 1) result = /obj/structure/headpike/bone + category = CAT_PRIMAL + +/datum/crafting_recipe/bone_bow + name = "Bone Bow" + result = /obj/item/gun/ballistic/bow/ashen + time = 200 + always_availible = FALSE + reqs = list(/obj/item/stack/sheet/bone = 8, + /obj/item/stack/sheet/sinew = 4) + category = CAT_PRIMAL + +/datum/crafting_recipe/bow_tablet + name = "Sandstone Bow Making Manual" + result = /obj/item/book/granter/crafting_recipe/bone_bow + time = 600 //Scribing + always_availible = FALSE + reqs = list(/obj/item/stack/rods = 1, + /obj/item/stack/sheet/mineral/sandstone = 4) category = CAT_PRIMAL \ No newline at end of file diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 104b58ca28..c03f69e16a 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -199,6 +199,16 @@ ////////////////// +/datum/crafting_recipe/pipebow + name = "Pipe Bow" + result = /obj/item/gun/ballistic/bow/pipe + reqs = list(/obj/item/pipe = 5, + /obj/item/stack/sheet/plastic = 15, + /obj/item/weaponcrafting/silkstrink = 10) + time = 450 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + /datum/crafting_recipe/smartdartgun name = "Smart dartgun" result = /obj/item/gun/syringe/dart @@ -278,6 +288,37 @@ ///AMMO CRAFTING// ////////////////// +/datum/crafting_recipe/arrow + name = "Arrow" + result = /obj/item/ammo_casing/caseless/arrow + time = 40 + reqs = list(/obj/item/stack/sheet/mineral/wood = 1, + /obj/item/weaponcrafting/silkstrink = 1, + /obj/item/stack/rods = 3) // 1 metal sheet is worth 1.5 arrows + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/bone_arrow + name = "Bone Arrow" + result = /obj/item/ammo_casing/caseless/arrow/bone + time = 40 + always_availible = FALSE + reqs = list(/obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew = 1, + /obj/item/ammo_casing/caseless/arrow/ashen = 1) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/ashen_arrow + name = "Harden Arrow" + result = /obj/item/ammo_casing/caseless/arrow/ashen + tools = list(/obj/structure/bonfire) + time = 20 + always_availible = FALSE + reqs = list(/obj/item/ammo_casing/caseless/arrow = 1) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + /datum/crafting_recipe/smartdart name = "Medical smartdart" result = /obj/item/reagent_containers/syringe/dart diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 70cd503ef4..20982893d2 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -490,7 +490,13 @@ oneuse = FALSE remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and cherry on top?") -//Later content when I have free time - Trilby Date:24-Aug-2019 +/obj/item/book/granter/crafting_recipe/bone_bow //Bow crafting for non-ashwalkers + name = "Standstone manual on bows" + desc = "A standstone slab with everything you need to know for making bows and arrows just like an ashwalker would." + crafting_recipe_types = list(/datum/crafting_recipe/bone_arrow, /datum/crafting_recipe/bone_bow, /datum/crafting_recipe/ashen_arrow, /datum/crafting_recipe/bow_tablet) + icon_state = "stone_tablet" + oneuse = FALSE + remarks = list("Sticking burning arrows into the sand makes them stronger?", "Braking the bone apart to get shards, not sharpening the bone.", "Sinew is just like rope?") /obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book name = "Under The Oven" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 45911afc73..dedc6cd2e2 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -376,6 +376,14 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ /* * Silk */ + + GLOBAL_LIST_INIT(silk_recipes, list ( \ + new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 4, time = 40), \ + new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 2, time = 40), \ + null, \ + new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstrink, 2, time = 40), \ + )) + /obj/item/stack/sheet/silk name = "silk" desc = "A long soft material. This one is just made out of cotton rather then any spiders or wyrms" @@ -385,14 +393,14 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ novariants = TRUE merge_type = /obj/item/stack/sheet/silk -//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE) -// recipes = GLOB.silk_recipes -// return ..() +/obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.silk_recipes + return ..() /* * Durathread */ - GLOBAL_LIST_INIT(durathread_recipes, list ( \ +GLOBAL_LIST_INIT(durathread_recipes, list ( \ new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/durathread, 4, time = 40), new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \ new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \ diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index e9d9e4ce77..c11d5f4e97 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -64,6 +64,13 @@ var/datum/language_holder/holder = new_spawn.get_language_holder() holder.selected_default_language = /datum/language/draconic +//Ash walkers on birth understand how to make bone bows, bone arrows and ashen arrows + + new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bone_arrow) + new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bone_bow) + new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/ashen_arrow) + new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bow_tablet) + if(ishuman(new_spawn)) var/mob/living/carbon/human/H = new_spawn H.underwear = "Nude" diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index 5b78a5d630..9e2bd16e65 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -199,6 +199,26 @@ unit_name = "advanced shotgun shell" export_types = list(/obj/item/ammo_casing/shotgun/dragonsbreath, /obj/item/ammo_casing/shotgun/meteorslug, /obj/item/ammo_casing/shotgun/pulseslug, /obj/item/ammo_casing/shotgun/frag12, /obj/item/ammo_casing/shotgun/ion, /obj/item/ammo_casing/shotgun/laserslug) +///////////////////////// +//Bow and Arrows///////// +///////////////////////// + +/datum/export/weapon/techslug + cost = 450 + unit_name = "bow" + export_types = list(/obj/item/gun/ballistic/bow) + +/datum/export/weapon/techslug + cost = 150 + unit_name = "arrow" + export_types = list(/obj/item/ammo_casing/caseless/arrow, /obj/item/ammo_casing/caseless/arrow/bone, /obj/item/ammo_casing/caseless/arrow/ashen) + +/datum/export/weapon/bow_teaching + cost = 500 + unit_name = "stone tablets" + export_types = list(/obj/item/book/granter/crafting_recipe/bone_bow) + + ///////////////////////// //The Traitor Sell Outs// ///////////////////////// diff --git a/code/modules/projectiles/ammunition/caseless/arrow.dm b/code/modules/projectiles/ammunition/caseless/arrow.dm index e0ca637a8b..e0c65b1451 100644 --- a/code/modules/projectiles/ammunition/caseless/arrow.dm +++ b/code/modules/projectiles/ammunition/caseless/arrow.dm @@ -5,4 +5,22 @@ caliber = "arrow" icon_state = "arrow" throwforce = 3 //good luck hitting someone with the pointy end of the arrow - throw_speed = 3 \ No newline at end of file + throw_speed = 3 + +/obj/item/ammo_casing/caseless/arrow/ashen + name = "ashen arrow" + desc = "Fire harderned wooden arrow." + icon_state = "asharrow" + projectile_type = /obj/item/projectile/bullet/reusable/arrow/ashen + +/obj/item/ammo_casing/caseless/arrow/bone + name = "bone arrow" + desc = "Arrow made of bone and sinew. The tip is sharp enough to price into a golathin plate." + icon_state = "bonearrow" + projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone + +/obj/item/ammo_casing/caseless/arrow/bronze + name = "bronze arrow" + desc = "Bronze tipped arrow." + icon_state = "bronzearrow" + projectile_type = /obj/item/projectile/bullet/reusable/arrow/bronze diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm index 448e2915d9..540ea722b9 100644 --- a/code/modules/projectiles/guns/ballistic/bow.dm +++ b/code/modules/projectiles/guns/ballistic/bow.dm @@ -50,4 +50,19 @@ icon_state = "bow_[get_ammo() ? (chambered ? "firing" : "loaded") : "unloaded"]" /obj/item/gun/ballistic/bow/can_shoot() - return chambered \ No newline at end of file + return chambered + +/obj/item/gun/ballistic/bow/ashen + name = "bone bow" + desc = "Some sort of primitive projectile weapon made of bone and sinew. Used to fire arrows." + icon_state = "ashenbow" + item_state = "ashenbow" + force = 8 + +/obj/item/gun/ballistic/bow/pipe + name = "pipe bow" + desc = "Some sort of pipe made projectile weapon made of a silk string and lots of bending. Used to fire arrows." + icon_state = "pipebow" + item_state = "pipebow" + inaccuracy_modifier = 1.1 //Made of pipe and in a rush + force = 0 \ No newline at end of file diff --git a/code/modules/projectiles/projectile/reusable/arrow.dm b/code/modules/projectiles/projectile/reusable/arrow.dm index f1c9638fd9..207ce37eb4 100644 --- a/code/modules/projectiles/projectile/reusable/arrow.dm +++ b/code/modules/projectiles/projectile/reusable/arrow.dm @@ -3,4 +3,23 @@ desc = "Woosh!" damage = 15 icon_state = "arrow" - ammo_type = /obj/item/ammo_casing/caseless/arrow \ No newline at end of file + ammo_type = /obj/item/ammo_casing/caseless/arrow + +/obj/item/projectile/bullet/reusable/arrow/ashen + name = "ashen arrow" + desc = "Fire harderned arrow." + damage = 25 + ammo_type = /obj/item/ammo_casing/caseless/arrow/ashen + +/obj/item/projectile/bullet/reusable/arrow/bone //AP for ashwalkers + name = "bone arrow" + desc = "Arrow made of bone and sinew." + damage = 35 + armour_penetration = 40 + ammo_type = /obj/item/ammo_casing/caseless/arrow/ashen + +/obj/item/projectile/bullet/reusable/arrow/bronze //Just some AP shots + name = "bronze arrow" + desc = "Bronze tipped arrow." + armour_penetration = 10 + ammo_type = /obj/item/ammo_casing/caseless/arrow/bronze diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 55cbcc66e00f9a3970ebff7513b1f75be68074c8..a26b01883ede06b86fe93f0d405230d2f3c39aa0 100644 GIT binary patch delta 5190 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%0D5TB4TC6s` ziNW0QYT5x;JpDnW=Ddj-D2My=bbWF)PL6Fs#-?xdqNCkz;g!LM*vd+hWw8?i4G$}i zJOu)Ih**nU)(C=qZHg}FEc!!R$E5R7LdSSiT-rf#c)U>Fm?U_dhzXN7PIjFMfaH~r zuhB!b1fVAdCkNsaXcpwxq@+Sojr1QsqP~B>0Ss9{N(JnE+XB+wzCF|2;uuBY;o&hj zK5lDHTR|W6zwSY7F(JAD_6&v;x%C*+He9GW-d6;m1(Db+5{{c)y(buZsXYp#U(M>a zG}0k^>@*Tc2eH`;@YlNe4c>GW3RzcCSkEiR<*(+WJJV@%hg_XrpyDS}v*7X{Nl8Mq zGZS31@2@-@VI%vH`=sqqzj!W^rK~!pThI4!y406kmTsFZ=sr%L{6$mA zH*f9E^u2pEG|HQfh@wjn#SJtkl<`^i zW`K3j3<;>m)bRC{QFeb;YaQ(-U zE5P2Ael!H1aAW5;o-_?WWBm-onVF8g(hq5M zv2kjbW}T5DKAs8&-xn)nIQj#e0a%*2JydW&Tmzsvxo>Wm&E+Yt*R&`)#$54^&x0DU z(I=Ums&*S59rjU&fDP9@@SGtay#>}II>tJAreEAXos=!>IIdTfsKUj^Kj(K_PcH9+ zr8^l0-4mVdl{&g>L4iJAr6iV-ROR6fL@Qt97KB8uu9Y7m0vc+5SDHV!@Rb$5a0eaR zU<6IcIzYM|^3r!FE422}eqwd1HSgxn*|uleZ}3`L^jLD=Sb&ji&6OMk5+g{oxt1n8 z7pjv`Po^#Ja=7%(giaJif$jX`oAhyU%sGIu21%_asXewO-+2PTzTc_Kr6pVgKYiVSF(2T+p(0_V%PLnhcs z_RSW-p(&mh|L#yHXPK8QqXat6`e2qY)PI(-78D3`e4Ai!kTgSb%y+J~15sP%5G4DS z7Q!o?88NOlp@_1{wvZdbI9^JjWh`^ZuHc5i%3dCo^D8J7sjR74Ci`t~YIJKp@_SrB z&IvtpFE$KnSmbXYrl_sqLZY3GpJm21(XXFolbW0BPicNXDgvJG6`bqpDmR{*z|@F6 z$M88Zv8T>^*Rae*8`-&Om0TxBCF$`oE$9dfxOrJbg<3wHG4`H6#2Iv1&zSU zhpbqB{d)qS$w^>c$YBBX#{0nvcyiQ=Rw+V}U^lz(ld zDE5`QqP-@)Z!rLBZ^*OI#R&_dh$jc0rn{rL9YDr^0F!9WS59f1f;i|hJZ=c zM=kl|pYmrBOA(22yAFOqX%a|y2z<{Bd)R)AZ=H}4iDp0AN1XtN%%aiTxzV-?%`-pWqK!scnK5eH z)V@fPYRqcdV#eoer)Y>@oUt?A?uLpVw8ND5xQ>>R5e;Yoh%`R-R(~Qo?{OhE9-`1k zM*^ggVNIx`DpQ_dqzn?- zqEHv5MZ@7&WRpMsq^gooJmOkv$8a1`De&OiW@#Tj_8!cdg@0knZ2~3t;w__>`q4L1 z;8cN8i2Jot4vIZT7@GG1i0eLdIR2u#!J=D`-lI6Os$I&L%u4m-Dez_dCIlE~R7C!y zwcf&XVK6WJbj^zr?bcG#sz(SShPOOOCDSQSEZIyC+)wDBclg*LS*w%N4K$oHUvsi4 z3UbHkU+yPcT(U#x==9xFy3TndWK#C<_3a~U3$Yt2A1*x^J#>*p|K+5*;LZrf^3(LO z#Ap~%5KwUr=o0^a|ENFsLv-KjNFM%0A;IrM$`5oFnF8%Hz-~`K5c4Oz*rzA`^AkRE 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 literal 41577 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 JPDHLkV1g8t3Nruz delta 509 zcmVfFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+DJL;6TZxM^C9|j)$T#HTOe;#vO@*-Gs){nxa#D*+@_&;F zE6ps<$S+AR%_}ZREifcWwGm-wq$a0k0)2=}p|XOjp9?q`0C|K?)81`+;s5{vAxT6* zR9J=Wm%&oQAQVMoViO{PYFkpBwpc6FV%4hu|8WKbDkd}LC3T_m&J0WLfsn<0QG_4} z@`pHyD}FOSsfa)6u;mmkcxPn!W`9VtEF&b%^E^Exgk*#kMFGl>7)t_0Xh=C9pI=P) zl=In)b6Vw7puj2^i(_vH1)?nHb5ROm*QGuF6@^~GIci1Y8wC^&xWFo$;m2q074H=t z{-fUcQT-TfzjH*~eRRZ4GR=W1{5_DQpV zYJIoct&K7FQi25S-QLXsUkqAnxqo=vZ=a-GfD8e?+q+345QxJ;DfRsFs#JeLZSf=1 zs9DmLF$2?mx3_aZ(i9va-_tq<95Ek35afe5aH146VoK8P00000NkvXXu0mjfBzxa- diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 45181b7c8d96c1e6b3e66b796aa0343900fc60f5..be12ab5f8be7f38d005b51fd8b59e58c95303e0e 100644 GIT binary patch delta 7087 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 delta 6921 zcmZ{Ic|25Y`1c@;EtEYB;X%m0$5@gmgb=cnCHs`#+cvedEV`h_k7Mj=iK*wooo4C%l9l!kPVKLy%YqDL+?NEzv<-X@YL1E-__d- z1Paa_%=qFpBSjxK^xG7Sl^0u-!vyv{vQCumv|?GOxInKn6C*T|{+cQT&qH4KgG=$k z^jG@}K9Q+%AMH*)-q~BiO>BG--?8YC?diTW&^1u;Pmc>yLDBh9MM+O7e??CCQM!zy z44q#ZlU9B(V4N(DbYv?Qzh!p8DE^S$OW-FgYrV=O-XLJI{$dWMs+m>*wbGvWupmYw z(+)l5s-#u5IB_M7jX&+$G1bN%_k{p)G+kSXd)Hr|VC?@KXy`Z)7E~LCHsL71l zniAu2f9-?Hk6ExD80dV~(#Z_*d9v@r;@Y=y(83^3{h?R$Q7^L15U$#3 zo)fN@B?au&dd1z~7B}lr*BVGp=@58T0Jik^Z4ZPijagHt?VZtFGcg>28%7lqTzkK2w8~lyj)#_Y2n*^-rXj;s@%f17FxWYGNMvCSj^6E-L4=;Z&NlQ;AD< z#HVcKAHotIMnCyQrInVU-5z)$O}pJt^+UNV62`F=^7pbsjY8% zCT4B`L8?wqYJ3UF6Ie9N0 z0*zNpX+IgX*3?L;t0YPzpf$WJV`F1OCUccpOo|yXUR_VC3n=_*YtzzmlFF6+9<$H+ zH#6mCcTM(!zahU#L7@<=1Vu2WTk)=4lKK7nf_39&Vf`S(ypt4H1agU4C9kdB3A8pu z?5so7)v>gcpZtAXYTOw{xO7)yx?>tfV(*pAg^18FRlL@3BTgs&K zT2TQDKL-VcK9;$?3^ht!LPF%~#Aylpqu%Xy7N9xA2IH3@a|?%Xf0kxS%HA9(#ME~) zx>>50%gsKRBci=Mcn#a=d$bPCvSsXZ1&T+fj*s(uL;XSbOdZ12TFT1e?46v1+H5Od z%D$_qkpVGiwtH)xU`kND2xrjT-bXu1I^f2g-4%Ab?j1=R{owY;3rjSfA)t=?G;MW( z*j;o1IqT-WShEveHgA1bR6@d_Y0uf%IBlb2aBy{pQ?}`8(MN)sghcH$!f}u*mzTq5 zfVdY;UG0rhM{_xb6Aum!y5xJ0jw?m3vsGx0@4#IcWB{U$+wdQE)T^+kPxrT`fZFE6 z1Ki`YD9YXNWr56Ou86jc=EU-H@uLWJ`nxDemyVeiUz;c`{RW42h4v5|&9tD56WP4^ zdE3_+8ModcQEXaR1?D7n$qe(ah0pMv4>XJMmeIBH-Ky9M%|78zRD(wA?ga&zP(b}V zXko*QbPpI$R=Au%K+C95v3Vd^?fJ+0gvQ?riKAzn3UmVr`VUfUCnbm4|D;$~Z}<`O z!|=lJaFYx!kd&gu$>+iKCk(a4als{X@*>BMzw$XXV(HjA^WdrOR4RFP55V?JGAWOh zv8lx^EmnsO$P}J*kBObPSTE(7l&Gkv!cosh;p*^x>szXXx8CQP0=4pv`(T&twh(a3 zYhtGQ?;oQNB1Ri8PYbhpJrLBFA&xYBE^YQKDT2w!l3O)+WUV&v@bGYx6=lKYm8`XI zrA9`XnrcY-iu=}iikYMKJ$snI$k;nVO35z=?EGd7`w9AjR~~V23iaWvR|212aK!O# zcpL^P%70nP2dr&)0FaWoc97}i26=g9^XQTy%DG4f`51thTgHEKh)U!VSJsE{0?DZ_ zgyw!++uEgO)fy@5H2qL}p!^#3TOOn_F$I0(+7sIU&@d&E>k8xJ1Gj~4n*4?auann5 zINNL` zAB{%$noR=r^#P-H+LfXhj44D*( zOySM@-D;lyPq5X&aSG-28{6r{$R!<(gX%At4OKg(?mBnz)mLu^Bqc|NtN$iHDUlS( zNJvx1l)zzOr(I+$Py(yL(e7zxtT36?N(}XQb|5So^L1#0N&mn> zBj)8)!Z7$Yh9mjXo?S>0=;%XmK-8I0`$2|3aY=oF=;r3kRi>t~zo(Rg(&XK$3orj%t$(FUhnMiCmOCz00O$zVO-(GoaWSJWGAw0%>!`da<)9aOx9C zS(;qNk6w>zf7A$Z0M4T^Jl8|*xf6WC$GrzQri;p*W5p{BM64*4ijr`u5_6t{L$Y>1B4X0&!<6 zLCbOQUP9zeZ?plpk6Vty#Zk_GiTeNB52){vFR(k)`A@@DlrBdW6%|=4op#-c!(p)4 z9@H65(PJhs`eSx$OUuBP7uUHDtmG)xv5c@5jlv}qdF0XOEz@ssjJVB7qW$w(`|s|K z-#ckZFoA9QTKbkpF=>HEy0TY3(D27FF>q+4`?~T1&&Y0q`Ma4pG-8;vxHSWWV#>;> z2zQ{H3rD}H8ElM6nR0G@D4vy~w5*K(fu$u)<%F1yt+_c>K7Z*U^cjq#1^jIP(7l3E zvFWMPz#eN)PibW(vLgcT6RHtbEpK!u>6uAA;g)+%J5$$T$3BGqf~i{R%l2_;b zZ-wTvVB9)a?rwkimjONQxnk_9(c=*<*+?$n|1Ezl|9AP5Gvhn=Gn9bAOvqD~#7=p? z`q!}odv|E~#4cz4=jQ#^NHv-l{cm?JUbn32_J1_u9~87SkQEuLxI2_>fL zU@#czI<^0_!CElz!H1q$xlx^m8Fn%{GbE}+no?5omB_O*Gc~NObLQ%Y|AGXr3F`rE zY;Mk=16v_tl9KVL9bFi#bQeE?$cC-G}1oj5bt2e#<2-Gc)ab#p@)D+T3dRYe@;T zosdX&-|QDtd3kxv#O9l;l44>M!%Sm%xW@nTO#1a(w4i7)i|kinR#tbh-ro=(nmFbR z3{s9PSlA0XI(TO`NX;*P4v)ju67Z>ka9)n8gEhzw)fS#$`gCT+!fys`v})BbUAfZm zvl8j~#;$UP7Qx(jJ}!}UF0Yrq8x)T|o5H*`YrGAWAr2+ugz#%lg-|h=#XipU*Urax zu+QPCE(e|mcv(wgV7Nl5vSU*KJ4G#Z^}yqAC~Q9BN~c1)FzES-Q?t(L zh*#<$Y|2XjCN>*NFmFCM`t0w1{5eo~Zw76?H?v~?r$5l0>Yl@rX1Ogxt`gbU__zVw zL@|0|6X+Qpez|cL8yj0p`yYVR2rb16by9eP^TxS93J-yak~un&pW~JE^bW>eCH&s^ z_|M!Ip*tCw*Tu89x4m+e_o^zyeE))mgfhe;xDV`0kiS6(2$-EUEC-lBMk#6oTv}Lo^LMp~nwnbN|A})M+4A1;-8+N-1vV6~ zOsRX0VHRDD%a<>^xVzW3vi*x!+1^SHjfjW{)mg7Yhn1C;T|A+8Xo!8|Mw_>V1v~k( z&Wr8%^GSka#u?1;3$qs3S0bkH&Ts#KfGIQTzxoh3S4l}ApsgU5|8F{xaOQr#li&QS z!+8zm019WB-!NTGEej(my67N~c7&FSE3cRzv(xiwnYBF;wN1#p! z;sNXE*$V`((KPB1(W>`2Af}g8g>TdTnXRS1no3s#r2=vA0*b{1hp8!0WDpYRFin#s zAr%SM(;WAn1cQQIiC#T8=r-!pWW~3H%YA_E?HHwJZXh!=`P+H%>abHy?Y$wAMG0rq z)9g`@ePlz#VhT5?b85n2#&5exV1MDDiT&07++;8$l_Kr6rgUUk8CTSsH*a=B+f4+W zoSZ;hQK6_9l7zmq;2#|@<7&c(9}Cih#e+DNHJn)fFgy&;B-^y@OD4D|Ob zSz-4rNwOQ0_5^l@rrB$?{;N7iOne6Ja_J623x+ zS#IyjYt$TLmY@m~nu`NQS1kraUn>D;;mg10f>57Z=FUYL8#B*m!6GWCCqN)@y53FA z`@CGSnec4?Y2s{GY#P#<;#uJgOlD)d2yOh5Wo&KX5-`GhbaMgh!bZ~gZew|p?q^!L zRy`b=5%h$l>NN!r>y>v}o3$u9`3!HvD+u$Wo8FCnDs_d)k&Bb_%|h?72}P|jCqL=) z*P~14KqRISJ00u)jRv3RQ<8`hRRsAf$}6u@MS2DVq%=PpKHPbI1?1JdVouM<_&z`X z-ufocy3--{IYS$w#f*DE8^*eGVX+ufJCef9R-%hNPZ}*{{QEddrzH|o3EAV!2 z{OU}&tl{Z7w=Y^G8{BS7&%p3;+wQ>wmnJ}jRBTX_y-q$pOha-v@|d)s$Bfm8yT5`L zo{d+u>bOLUzjdLStYgCvF zKGg|+7$En(0O9y7F-u0l?8`62{#bO^EQ+JlNF)WvJ} z>O+}m;p@W*KnKZlItWPKPhe1X8HIv~xQeyj zwj;}@{{6%?H8pkV+m$y%mtF?wAGRD$ptX>c;?@n~==zkDi{)XcY)oTtxH{=;M@%(Q z>${eCmvxV%+}SWGg-{uEfNH`;NNW>jJSz(%o8Fd4CU@focQY-}cFrf=*X4^oeXXB& zw5^;N&WVJb$WBRiee=$0p4WzAvDieivH5wgB;xxrqq2?$V$+{Q<{FxKMo{_j2s~1^ z^5!kAkKe||UJDUm3O=HLjs(Ymf2>5P?g0S8q*gR}Uk^&i+9K`{jPwrs3kwPa{)tgh zQMuGWV|yS}2lOp;ZeOYXjXq>Sq=rG0_>9WRh4ic}6!4<&I?j9&A%&)cJw+UY) z!!e)MF&MoT>|)RRl}Gy?hkufQTYh`m#q3vY4$o8o?ymQlAUALCM$Z$5U>@pXc5o_@ zwg>!b=mW5IVZKcm*E}ewO64d-g0sCJ+KV2Z=Q{JS>B>5bDr-)o1D{|lP5i*OY{Ww6 zNafAxC2iq0n;TYWLH*#d0=bjwSKsD>KHwe|1ulpYU9r-cM1UUr2W-R^GY(}c|CPkq z`n2gvJBtVj>wGAwyUX;8i0|9GxJbR1uu0&ZTBpfcU3H!f-y6(0D$u@#(Yh~oivGp$ zL61#Ebh6k~}&>bwSR$gF5rVg!M#fHxicY>`)gQX9y2MLX=No&_4y{59GD} zlFW0C8G3jgbXW~Q<(7%HSn(VPj7qaMau#C9 zCox*-TEX=as3}1bar9)+Q)S+y$+|cJ%Oa|=UQtTr>dgsyHzg20XH4pGp<#oSE2rop zva#^ZD6~p0jzYr$$31$MLzbLOG~ZpTqUpj=EUdW$spO@48|DmrB_;HKMGp=#HkW<6 z5~V27ObLXC?hu?$PQEoN@`RM&CAd{_`IGU(w$)6{o1FaCF-3Rmq$5T=o~u47vb!Po z*tn&j5r)eyLodMHRm3IfdCCz@C!x|FgitO`^HFx1WhN4H~kaa~v|If5*hX%$Ec3&!cRF z5$vMZe&k)glnW(N*gi8L{eLAJ1kuJ1?F~U0Q<2f-<&&DGkKUg|+|H1+^XkwdO?|Ej z&Y(Qipo@(tm@03`GP5=hM9D{^Nrbe7N!_M1w)kvS)H*t08)i_-L3)=J{r(M;dHI9) z&4aFfo4{o)a351l#$w1Z(3=+1AUW&p_A8jQjWZ4n3O(*+7JpC&cHeFl`#HYf^%2q$ zzT7LxsYRmZ`;V0(JA8lo`)L#56#s{PW_o#CD zLN3}v;!SM zoS%}4p*SDBoq0$rGW2LrqHRXW&QBrE`twD;7;=$tX}A6Jzt!E~E&;x{izGE~CV|t(XV^#jTnzOfsD*%=@!g(P{>p<7SLZ%=`P+MDq_v;C v>{UqgB?Z+j;TWdH3lC|YrNd0w*}I4oZ18f4MNeoch;-@c7~ZVVvXA;7g#^;q From a1f1a01a814b6c0c4af8c02cb9dd0e4a81694540 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Sat, 15 Feb 2020 00:52:19 -0500 Subject: [PATCH 16/74] grammer and quiver --- code/datums/components/crafting/guncrafting.dm | 2 +- .../datums/components/crafting/recipes/recipes_primal.dm | 9 +++++++++ .../crafting/recipes/recipes_weapon_and_ammo.dm | 4 ++-- code/game/objects/items/granters.dm | 6 +++--- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- code/game/objects/structures/ghost_role_spawners.dm | 1 + code/modules/cargo/exports/weapons.dm | 9 +++++++-- 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index eeaa75ba6b..d421a6e42a 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -14,7 +14,7 @@ icon = 'icons/obj/improvised.dmi' icon_state = "riflestock" -/obj/item/weaponcrafting/silkstrink +/obj/item/weaponcrafting/silkstring name = "silkstring" desc = "A long pice of silk looks like cable coil." icon = 'icons/obj/improvised.dmi' diff --git a/code/datums/components/crafting/recipes/recipes_primal.dm b/code/datums/components/crafting/recipes/recipes_primal.dm index 696df5cf76..ae611e5855 100644 --- a/code/datums/components/crafting/recipes/recipes_primal.dm +++ b/code/datums/components/crafting/recipes/recipes_primal.dm @@ -91,6 +91,15 @@ result = /obj/structure/headpike/bone category = CAT_PRIMAL +/datum/crafting_recipe/quiver + name = "Quiver" + always_availible = FALSE + result = /obj/item/storage/belt/quiver + time = 80 + reqs = list(/obj/item/stack/sheet/leather = 3, + /obj/item/stack/sheet/sinew = 4) + category = CAT_PRIMAL + /datum/crafting_recipe/bone_bow name = "Bone Bow" result = /obj/item/gun/ballistic/bow/ashen diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index c03f69e16a..76f8f119e0 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -204,7 +204,7 @@ result = /obj/item/gun/ballistic/bow/pipe reqs = list(/obj/item/pipe = 5, /obj/item/stack/sheet/plastic = 15, - /obj/item/weaponcrafting/silkstrink = 10) + /obj/item/weaponcrafting/silkstring = 10) time = 450 category = CAT_WEAPONRY subcategory = CAT_WEAPON @@ -293,7 +293,7 @@ result = /obj/item/ammo_casing/caseless/arrow time = 40 reqs = list(/obj/item/stack/sheet/mineral/wood = 1, - /obj/item/weaponcrafting/silkstrink = 1, + /obj/item/weaponcrafting/silkstring = 1, /obj/item/stack/rods = 3) // 1 metal sheet is worth 1.5 arrows category = CAT_WEAPONRY subcategory = CAT_AMMO diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 20982893d2..986090212e 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -491,12 +491,12 @@ remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and cherry on top?") /obj/item/book/granter/crafting_recipe/bone_bow //Bow crafting for non-ashwalkers - name = "Standstone manual on bows" + name = "Sandstone manual on bows" desc = "A standstone slab with everything you need to know for making bows and arrows just like an ashwalker would." - crafting_recipe_types = list(/datum/crafting_recipe/bone_arrow, /datum/crafting_recipe/bone_bow, /datum/crafting_recipe/ashen_arrow, /datum/crafting_recipe/bow_tablet) + crafting_recipe_types = list(/datum/crafting_recipe/bone_arrow, /datum/crafting_recipe/bone_bow, /datum/crafting_recipe/ashen_arrow, /datum/crafting_recipe/quiver, /datum/crafting_recipe/bow_tablet) icon_state = "stone_tablet" oneuse = FALSE - remarks = list("Sticking burning arrows into the sand makes them stronger?", "Braking the bone apart to get shards, not sharpening the bone.", "Sinew is just like rope?") + remarks = list("Sticking burning arrows into the sand makes them stronger?", "Breaking the bone apart to get shards, not sharpening the bone.", "Sinew is just like rope?") /obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book name = "Under The Oven" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index dedc6cd2e2..64875a4cc3 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -381,7 +381,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 4, time = 40), \ new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 2, time = 40), \ null, \ - new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstrink, 2, time = 40), \ + new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstring, 2, time = 40), \ )) /obj/item/stack/sheet/silk diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index c11d5f4e97..79afd7695a 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -69,6 +69,7 @@ new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bone_arrow) new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bone_bow) new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/ashen_arrow) + new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/quiver) new_spawn.mind.teach_crafting_recipe(/datum/crafting_recipe/bow_tablet) if(ishuman(new_spawn)) diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index 9e2bd16e65..c75a1c0bff 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -203,12 +203,12 @@ //Bow and Arrows///////// ///////////////////////// -/datum/export/weapon/techslug +/datum/export/weapon/bows cost = 450 unit_name = "bow" export_types = list(/obj/item/gun/ballistic/bow) -/datum/export/weapon/techslug +/datum/export/weapon/arrows cost = 150 unit_name = "arrow" export_types = list(/obj/item/ammo_casing/caseless/arrow, /obj/item/ammo_casing/caseless/arrow/bone, /obj/item/ammo_casing/caseless/arrow/ashen) @@ -218,6 +218,11 @@ unit_name = "stone tablets" export_types = list(/obj/item/book/granter/crafting_recipe/bone_bow) +/datum/export/weapon/quiver + cost = 100 + unit_name = "quiver" + export_types = list(/obj/item/storage/belt/quiver) + ///////////////////////// //The Traitor Sell Outs// From 46e97b3cdc123b7a57c8e7f55d2aecbfbc6f8506 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 15 Feb 2020 01:15:09 -0500 Subject: [PATCH 17/74] Update arrow.dm --- code/modules/projectiles/ammunition/caseless/arrow.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/ammunition/caseless/arrow.dm b/code/modules/projectiles/ammunition/caseless/arrow.dm index e0c65b1451..57f47e2ad9 100644 --- a/code/modules/projectiles/ammunition/caseless/arrow.dm +++ b/code/modules/projectiles/ammunition/caseless/arrow.dm @@ -15,7 +15,7 @@ /obj/item/ammo_casing/caseless/arrow/bone name = "bone arrow" - desc = "Arrow made of bone and sinew. The tip is sharp enough to price into a golathin plate." + desc = "Arrow made of bone and sinew. The tip is sharp enough to pierce into a goliath plate." icon_state = "bonearrow" projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone From 168a71546243d9bbe5806b6543f3786b11d8b19c Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 15 Feb 2020 01:15:46 -0500 Subject: [PATCH 18/74] well it takes a lot to make after all... --- code/modules/projectiles/projectile/reusable/arrow.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile/reusable/arrow.dm b/code/modules/projectiles/projectile/reusable/arrow.dm index 207ce37eb4..d00de79eb1 100644 --- a/code/modules/projectiles/projectile/reusable/arrow.dm +++ b/code/modules/projectiles/projectile/reusable/arrow.dm @@ -16,7 +16,7 @@ desc = "Arrow made of bone and sinew." damage = 35 armour_penetration = 40 - ammo_type = /obj/item/ammo_casing/caseless/arrow/ashen + ammo_type = /obj/item/ammo_casing/caseless/arrow/bone /obj/item/projectile/bullet/reusable/arrow/bronze //Just some AP shots name = "bronze arrow" From 0c9244f6694edd3c5ae7a56ae7ea57daf318b8ce Mon Sep 17 00:00:00 2001 From: Persi Date: Sat, 15 Feb 2020 14:17:22 -0500 Subject: [PATCH 19/74] Clarifies comments and locks defusal kits behind an emag --- code/modules/cargo/packs.dm | 2 +- code/modules/cargo/packs/science.dm | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 4c9ddfe3bc..07a75bbfaf 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -2,7 +2,7 @@ var/name = "Crate" var/group = "" var/hidden = FALSE //Aka emag only - var/contraband = FALSE //Hacking the console with a multitool + var/contraband = FALSE //Requires a hacked console UNLESS DropPodOnly = TRUE, in which case it requires an emag var/cost = 700 // Minimum cost, or infinite points are possible. var/access = FALSE //What access does the Crate itself need? var/access_any = FALSE //Do we care about access? diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index 8852a7e945..7a56e6d29b 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -84,7 +84,7 @@ /datum/supply_pack/science/glasswork name = "Glass Blower Kit Crate" - desc = "Learn and make glassworks of usefull things for a profit! Contains glassworking tools and blowing rods. Glass not included." + desc = "Learn and make glassworks of useful things for a profit! Contains glassworking tools and blowing rods. Glass not included." cost = 1000 contains = list(/obj/item/glasswork/glasskit, /obj/item/glasswork/glasskit, @@ -111,8 +111,9 @@ /datum/supply_pack/science/nuke_b_gone name = "Nuke Defusal Kit" desc = "Contains set of tools to defuse a nuke." - cost = 7500 //Usefull for traitors/nukies that fucked up + cost = 7500 //Useful for traitors/nukies that fucked up dangerous = TRUE + contraband = TRUE DropPodOnly = TRUE contains = list(/obj/item/nuke_core_container/nt, /obj/item/screwdriver/nuke/nt, @@ -194,7 +195,7 @@ /datum/supply_pack/science/supermater name = "Supermatter Extraction Tools Crate" desc = "Contains a set of tools to extract a sliver of supermatter. Consult your CE today!" - cost = 7500 //Usefull for traitors that fucked up + cost = 7500 //Useful for traitors that fucked up hidden = TRUE contains = list(/obj/item/nuke_core_container/supermatter, /obj/item/scalpel/supermatter, From c9af8dc71358854b98bce12d9577a088eb0f112d Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sat, 15 Feb 2020 14:05:27 -0600 Subject: [PATCH 20/74] perhaps --- code/game/objects/items/storage/book.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 37f5b8d756..21749eea56 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -187,7 +187,10 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", EX.name = "Purified [EX.name]" SS.release_shades(user) qdel(SS) - new /obj/item/nullrod/claymore(get_turf(A)) + new /obj/item/nullrod/claymore(get_turf(A)) + user.visible_message("[user] has purified [A]!") + qdel(A) + new /obj/item/claymore(get_turf(A)) user.visible_message("[user] has purified [A]!") qdel(A) From 0f5ea361e70d373b20094768a7c2eba57a366137 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sat, 15 Feb 2020 14:07:35 -0600 Subject: [PATCH 21/74] bada bing bada boom --- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/items/weaponry.dm | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 21749eea56..a0b1a25078 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -190,7 +190,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", new /obj/item/nullrod/claymore(get_turf(A)) user.visible_message("[user] has purified [A]!") qdel(A) - new /obj/item/claymore(get_turf(A)) + new /obj/item/claymore/purified(get_turf(A)) user.visible_message("[user] has purified [A]!") qdel(A) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index cd6cc5f520..ea9899b2c2 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -79,6 +79,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) +/obj/item/claymore/purified + name = "purified longsword" + desc = "A hastily-purified longsword. While not as holy as it could be, it's still a formidable weapon against those who would rather see you dead." + force = 25 + /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." flags_1 = CONDUCT_1 From 18feba7fddcfc425fc8f89ae74e14764b5f10b58 Mon Sep 17 00:00:00 2001 From: Persi Date: Sun, 16 Feb 2020 00:14:15 -0500 Subject: [PATCH 22/74] Defusal kits are now emag only and don't require a drop pod console. --- code/modules/cargo/packs/science.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index 7a56e6d29b..e6671a02ea 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -113,8 +113,7 @@ desc = "Contains set of tools to defuse a nuke." cost = 7500 //Useful for traitors/nukies that fucked up dangerous = TRUE - contraband = TRUE - DropPodOnly = TRUE + hidden = TRUE contains = list(/obj/item/nuke_core_container/nt, /obj/item/screwdriver/nuke/nt, /obj/item/paper/guides/nt/nuke_instructions) From b60b0a95aaa8cb27144244a56487c2e50540a4f2 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sun, 16 Feb 2020 02:28:12 -0600 Subject: [PATCH 23/74] you ever just forget that if statements exist --- code/game/objects/items/storage/book.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index a0b1a25078..311657aba9 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -188,9 +188,8 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", SS.release_shades(user) qdel(SS) new /obj/item/nullrod/claymore(get_turf(A)) - user.visible_message("[user] has purified [A]!") - qdel(A) - new /obj/item/claymore/purified(get_turf(A)) + else + new /obj/item/claymore/purified(get_turf(A)) user.visible_message("[user] has purified [A]!") qdel(A) From aedd8b87f663a20d5b05f9389aca9c9e6a0f4ca4 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sun, 16 Feb 2020 02:33:14 -0600 Subject: [PATCH 24/74] maybe giving them an active gps is a bad idea --- _maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 08c756b15f..d01e4f8da1 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -156,7 +156,9 @@ "x" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder, -/obj/item/gps/mining, +/obj/item/gps/mining{ + tracking = 0 + }, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) "z" = ( From 14e41e8d68af6f93fe8c8bf3a2c63bb5305167c3 Mon Sep 17 00:00:00 2001 From: CameronWoof Date: Sun, 16 Feb 2020 03:52:07 -0800 Subject: [PATCH 25/74] adds diethylamine and saltpetre to the biogenerator --- code/modules/hydroponics/hydroponics.dm | 2 +- .../reagents/reagent_containers/bottle.dm | 5 +++++ .../research/designs/biogenerator_designs.dm | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 1cd63db6da..d37c5af6c2 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -664,7 +664,7 @@ adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1)) adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.034)) adjustPests(-rand(1,2)) // Nutriment Compost, effectively diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index c05f4f3e78..e27ff37c5b 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -112,6 +112,11 @@ desc = "A small bottle of diethylamine." list_reagents = list(/datum/reagent/diethylamine = 30) +/obj/item/reagent_containers/glass/bottle/saltpetre + name = "saltpetre bottle" + desc = "A small bottle of saltpetre." + list_reagents = list(/datum/reagent/saltpetre = 30) + /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" desc = "A small bottle. Contains a small amount of fluorosulfuric acid." diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index dd55697bee..5fff7dc3c4 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -107,6 +107,22 @@ build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh category = list("initial","Botany Chemicals") +/datum/design/diethylamine + name = "Diethylamine" + id = "diethylamine_biogen" + build_type = BIOGENERATOR + materials = list(MAT_BIOMASS = 75) + build_path = /obj/item/reagent_containers/glass/bottle/diethylamine + category = list("initial","Botany Chemicals") + +/datum/design/saltpetre + name = "Saltpetre" + id = "saltpetre_biogen" + build_type = BIOGENERATOR + materials = list(MAT_BIOMASS = 125) + build_path = /obj/item/reagent_containers/glass/bottle/saltpetre + category = list("initial","Botany Chemicals") + /datum/design/weed_killer name = "Weed Killer" id = "weed_killer" From 206e546254ed4705d768c82049f7b0812c9bf5b4 Mon Sep 17 00:00:00 2001 From: CameronWoof Date: Sun, 16 Feb 2020 04:15:50 -0800 Subject: [PATCH 26/74] reordering these designs --- .../research/designs/biogenerator_designs.dm | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 5fff7dc3c4..7f0203ecdd 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -107,22 +107,6 @@ build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh category = list("initial","Botany Chemicals") -/datum/design/diethylamine - name = "Diethylamine" - id = "diethylamine_biogen" - build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 75) - build_path = /obj/item/reagent_containers/glass/bottle/diethylamine - category = list("initial","Botany Chemicals") - -/datum/design/saltpetre - name = "Saltpetre" - id = "saltpetre_biogen" - build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 125) - build_path = /obj/item/reagent_containers/glass/bottle/saltpetre - category = list("initial","Botany Chemicals") - /datum/design/weed_killer name = "Weed Killer" id = "weed_killer" @@ -139,6 +123,22 @@ build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller category = list("initial","Botany Chemicals") +/datum/design/diethylamine + name = "Diethylamine" + id = "diethylamine_biogen" + build_type = BIOGENERATOR + materials = list(MAT_BIOMASS = 75) + build_path = /obj/item/reagent_containers/glass/bottle/diethylamine + category = list("initial","Botany Chemicals") + +/datum/design/saltpetre + name = "Saltpetre" + id = "saltpetre_biogen" + build_type = BIOGENERATOR + materials = list(MAT_BIOMASS = 125) + build_path = /obj/item/reagent_containers/glass/bottle/saltpetre + category = list("initial","Botany Chemicals") + /datum/design/botany_bottle name = "Empty Bottle" id = "botany_bottle" From 23ae9996d29cba585bca42f6a80693ccd8005616 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 16 Feb 2020 15:24:15 +0100 Subject: [PATCH 27/74] Something more about runtime errors. --- code/game/objects/items/implants/implant_hijack.dm | 10 +++++----- code/modules/antagonists/clockcult/clockcult.dm | 11 +++++++---- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/carbon/inventory.dm | 2 +- code/modules/mob/living/simple_animal/bot/bot.dm | 9 ++++++--- code/modules/mob/living/simple_animal/bot/mulebot.dm | 4 ++-- .../xenobiology/crossbreeding/_status_effects.dm | 4 ++-- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/code/game/objects/items/implants/implant_hijack.dm b/code/game/objects/items/implants/implant_hijack.dm index 8a08232859..64da439bdc 100644 --- a/code/game/objects/items/implants/implant_hijack.dm +++ b/code/game/objects/items/implants/implant_hijack.dm @@ -37,18 +37,18 @@ eye_color = H.eye_color return TRUE -/obj/item/implant/hijack/removed(mob/target, silent = FALSE, special = 0) +/obj/item/implant/hijack/removed(mob/living/source, silent = FALSE, special = 0) if(..()) REMOVE_TRAIT(target, TRAIT_HIJACKER, "implant") - for (var/area/area in imp_in.siliconaccessareas) - imp_in.toggleSiliconAccessArea(area) + for (var/area/area in source.siliconaccessareas) + source.toggleSiliconAccessArea(area) var/obj/machinery/power/apc/apc = area.get_apc() if (apc) apc.hijacker = null apc.set_hijacked_lighting() apc.update_icon() - if (ishuman(target)) - var/mob/living/carbon/human/H = target + if (ishuman(source)) + var/mob/living/carbon/human/H = source H.eye_color = eye_color return TRUE diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm index d68e9b594d..1869414ab6 100644 --- a/code/modules/antagonists/clockcult/clockcult.dm +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -120,7 +120,7 @@ hierophant_network.Grant(current) current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar - if(G.active && ishuman(current)) + if(G && G.active && ishuman(current)) current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) /datum/antagonist/clockcult/remove_innate_effects(mob/living/mob_override) @@ -174,9 +174,12 @@ log_admin("[key_name(admin)] has made [new_owner.current] into a servant of Ratvar.") /datum/antagonist/clockcult/admin_remove(mob/user) - remove_servant_of_ratvar(owner.current, TRUE) - message_admins("[key_name_admin(user)] has removed clockwork servant status from [owner.current].") - log_admin("[key_name(user)] has removed clockwork servant status from [owner.current].") + var/mob/target = owner.current + if(!target) + return + remove_servant_of_ratvar(target, TRUE) + message_admins("[key_name_admin(user)] has removed clockwork servant status from [target].") + log_admin("[key_name(user)] has removed clockwork servant status from [target].") /datum/antagonist/clockcult/get_admin_commands() . = ..() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ef3d4cbb98..e2317354df 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -834,7 +834,7 @@ ..() /mob/living/carbon/human/vomit(lost_nutrition = 10, blood = 0, stun = 1, distance = 0, message = 1, toxic = 0) - if(blood && (NOBLOOD in dna.species.species_traits)) + if(blood && dna?.species && (NOBLOOD in dna.species.species_traits)) if(message) visible_message("[src] dry heaves!", \ "You try to throw up, but there's nothing in your stomach!") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index accaab3ac1..57b8f59780 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -20,7 +20,7 @@ /mob/living/carbon/human/proc/checkarmor(obj/item/bodypart/def_zone, d_type) - if(!d_type) + if(!d_type || !def_zone) return 0 var/protection = 0 var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id, wear_neck) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor) diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index bbae050bba..24acccdd2e 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -72,7 +72,7 @@ put_in_hands(I) update_inv_hands() if(SLOT_IN_BACKPACK) - if(!SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) + if(!back || !SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE)) not_handled = TRUE else not_handled = TRUE diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 7da0ad13da..8515aa4534 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -194,10 +194,12 @@ if(locked) //First emag application unlocks the bot's interface. Apply a screwdriver to use the emag again. locked = FALSE emagged = 1 - to_chat(user, "You bypass [src]'s controls.") + if(user) + to_chat(user, "You bypass [src]'s controls.") return TRUE if(!open) - to_chat(user, "You need to open maintenance panel first!") + if(user) + to_chat(user, "You need to open maintenance panel first!") return emagged = 2 remote_disabled = 1 //Manually emagging the bot locks out the AI built in panel. @@ -205,7 +207,8 @@ bot_reset() turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP. to_chat(src, "(#$*#$^^( OVERRIDE DETECTED") - log_combat(user, src, "emagged") + if(user) + log_combat(user, src, "emagged") return TRUE /mob/living/simple_animal/bot/examine(mob/user) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index b23f3f2baa..bc8a5e07d5 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -123,7 +123,8 @@ emagged = TRUE if(!open) locked = !locked - to_chat(user, "You [locked ? "lock" : "unlock"] [src]'s controls!") + if(user) + to_chat(user, "You [locked ? "lock" : "unlock"] [src]'s controls!") flick("mulebot-emagged", src) playsound(src, "sparks", 100, FALSE) @@ -766,4 +767,3 @@ /obj/machinery/bot_core/mulebot req_access = list(ACCESS_CARGO) - \ No newline at end of file diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 0838e70bfd..9efbe58a29 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -890,8 +890,8 @@ datum/status_effect/stabilized/blue/on_remove() healing_types += TOX if(owner.getCloneLoss() > 0) healing_types += CLONE - - owner.apply_damage_type(-heal_amount, damagetype=pick(healing_types)) + if(length(healing_types)) + owner.apply_damage_type(-heal_amount, damagetype=pick(healing_types)) owner.nutrition += 3 M.adjustCloneLoss(heal_amount * 1.2) //This way, two people can't just convert each other's damage away. else From eaa45d4b35f1507fd80524de45163ac0f39454e7 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sun, 16 Feb 2020 15:48:38 +0100 Subject: [PATCH 28/74] Update implant_hijack.dm --- code/game/objects/items/implants/implant_hijack.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/implants/implant_hijack.dm b/code/game/objects/items/implants/implant_hijack.dm index 64da439bdc..5dd610059c 100644 --- a/code/game/objects/items/implants/implant_hijack.dm +++ b/code/game/objects/items/implants/implant_hijack.dm @@ -39,7 +39,7 @@ /obj/item/implant/hijack/removed(mob/living/source, silent = FALSE, special = 0) if(..()) - REMOVE_TRAIT(target, TRAIT_HIJACKER, "implant") + REMOVE_TRAIT(source, TRAIT_HIJACKER, "implant") for (var/area/area in source.siliconaccessareas) source.toggleSiliconAccessArea(area) var/obj/machinery/power/apc/apc = area.get_apc() @@ -118,4 +118,4 @@ imp_in.light_range = 0 imp_in.light_color = COLOR_YELLOW imp_in.update_light() - return TRUE \ No newline at end of file + return TRUE From 3703110dda881e224c188f72b38dff7f256178ea Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sun, 16 Feb 2020 16:10:20 +0100 Subject: [PATCH 29/74] Makes the mob holder examine less dumb. --- code/datums/elements/mob_holder.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm index e33c430198..50cd93ff29 100644 --- a/code/datums/elements/mob_holder.dm +++ b/code/datums/elements/mob_holder.dm @@ -114,16 +114,14 @@ w_class = WEIGHT_CLASS_NORMAL if(MOB_SIZE_LARGE) w_class = WEIGHT_CLASS_HUGE - RegisterSignal(src, COMSIG_CLICK_SHIFT, .proc/examine_held_mob) /obj/item/clothing/head/mob_holder/Destroy() if(held_mob) release() return ..() -/obj/item/clothing/head/mob_holder/proc/examine_held_mob(datum/source, mob/user) - held_mob.ShiftClick(user) - return COMPONENT_DENY_EXAMINATE +/obj/item/clothing/head/mob_holder/examine(mob/user) + return held_mob?.examine(user) || ..() /obj/item/clothing/head/mob_holder/Exited(atom/movable/AM, atom/newloc) . = ..() From 0f7618b348adf38ede943d0e5cb3cfb5edf8b5a4 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 16 Feb 2020 14:07:00 -0500 Subject: [PATCH 30/74] Update organic.dm --- code/modules/cargo/packs/organic.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 79853e1aaf..cdac6f49f2 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -214,7 +214,7 @@ /datum/supply_pack/organic/fakemeat name = "Meat Crate 'Synthetic'" - desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 9 slabs of meat product, 3 crab meat and 4 slabs of *carp*." + desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 12 slabs of meat product, and 4 slabs of *carp*." cost = 1200 // Buying 3 food crates nets you 9 meat for 900 points, plus like, 6 bags of rice, flour, and egg boxes. This is 12 for 500, but you -only- get meat and carp. contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, @@ -225,9 +225,9 @@ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, - /obj/item/reagent_containers/food/snacks/meat/rawcrab, - /obj/item/reagent_containers/food/snacks/meat/rawcrab, - /obj/item/reagent_containers/food/snacks/meat/rawcrab, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, + /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, /obj/item/reagent_containers/food/snacks/carpmeat/imitation, From aba636a44c4dd4c92242dfd65b4d5fb636d6ea29 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 17 Feb 2020 00:13:16 +0100 Subject: [PATCH 31/74] ok --- code/modules/projectiles/guns/energy.dm | 3 ++- code/modules/surgery/organs/eyes.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index be43bc48fd..d98878bb67 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -67,7 +67,8 @@ /obj/item/gun/energy/Destroy() if(flags_1 & INITIALIZED_1) QDEL_NULL(cell) - QDEL_LIST(ammo_type) + if(!(O.flags_1 & HOLOGRAM_1)) //holodeck stuff. + QDEL_LIST(ammo_type) STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 44e92e464b..bdd1a444bb 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -56,7 +56,7 @@ var/mob/living/carbon/human/H = C H.eye_color = old_eye_color if(!special) - H.dna.species.handle_body() + H.dna.species.handle_body(H) if(!special) C.update_tint() C.update_sight() From 031580233096ff1e22e8b89badda7d097934b52c Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 16 Feb 2020 18:25:54 -0500 Subject: [PATCH 32/74] Update armory.dm --- code/modules/cargo/packs/armory.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 4c500a0162..fc95b05007 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -192,8 +192,7 @@ /obj/item/clothing/mask/russian_balaclava, /obj/item/clothing/head/helmet/rus_ushanka, /obj/item/clothing/suit/armor/vest/russian_coat, - /obj/item/gun/ballistic/shotgun/boltaction, - /obj/item/staff/broom) //Its... A real thing that was done in the Russian army + /obj/item/gun/ballistic/shotgun/boltaction) crate_name = "surplus military crate" /datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C) From c5eaac62bdbed49c0abeec29f493ec7fe2bccaba Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 16 Feb 2020 18:26:22 -0500 Subject: [PATCH 33/74] Update materials.dm --- code/modules/cargo/packs/materials.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index ea7df06bda..556c3175d2 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -47,7 +47,7 @@ cost = 9050 contains = list(/obj/item/stack/sheet/plasteel/fifty) crate_name = "plasteel sheets crate" - +/* /datum/supply_pack/materials/plastitanium50 name = "50 Plastitanium Sheets" desc = "Build an evil empire with fifty plastitanium sheets." @@ -63,7 +63,7 @@ contraband = TRUE contains = list(/obj/item/stack/sheet/plastitaniumglass/fifty) crate_name = "plastitanium glass sheets crate" - +*/ /datum/supply_pack/materials/plastic50 name = "50 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" From 3ecd1b75d444b6898c64a30d8828628eecf7101f Mon Sep 17 00:00:00 2001 From: Cameron! Date: Sun, 16 Feb 2020 15:32:05 -0800 Subject: [PATCH 34/74] ghommald's changes --- code/modules/research/designs/biogenerator_designs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 7f0203ecdd..c2f505a93a 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -127,7 +127,7 @@ name = "Diethylamine" id = "diethylamine_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 75) + materials = list(MAT_BIOMASS = 150) build_path = /obj/item/reagent_containers/glass/bottle/diethylamine category = list("initial","Botany Chemicals") @@ -135,7 +135,7 @@ name = "Saltpetre" id = "saltpetre_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 125) + materials = list(MAT_BIOMASS = 225) build_path = /obj/item/reagent_containers/glass/bottle/saltpetre category = list("initial","Botany Chemicals") From 262b4d95fbdbc7af3e211c5e6fd34dbed94abe9d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 16 Feb 2020 16:44:29 -0700 Subject: [PATCH 35/74] Update projectile.dm --- code/modules/projectiles/projectile.dm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4521e4ea13..139f5a051c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -52,7 +52,6 @@ var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored. var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation. var/datum/point/beam_index - var/turf/hitscan_last //last turf touched during hitscanning. var/tracer_type var/muzzle_type var/impact_type @@ -492,8 +491,6 @@ process_homing() var/forcemoved = FALSE for(var/i in 1 to SSprojectiles.global_iterations_per_move) - if(QDELETED(src)) - return trajectory.increment(trajectory_multiplier) var/turf/T = trajectory.return_turf() if(!istype(T)) @@ -506,14 +503,16 @@ forceMove(T) trajectory_ignore_forcemove = FALSE after_z_change(old, loc) + forcemoved = TRUE + if(QDELETED(src)) + return if(!hitscanning) pixel_x = trajectory.return_px() pixel_y = trajectory.return_py() - forcemoved = TRUE - hitscan_last = loc else if(T != loc) step_towards(src, T) - hitscan_last = loc + if(QDELETED(src)) + return if(!hitscanning && !forcemoved) pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move From a4a5efbc11ff2bd1b548cf3bb7bc363024414d87 Mon Sep 17 00:00:00 2001 From: Cameron! Date: Sun, 16 Feb 2020 15:48:22 -0800 Subject: [PATCH 36/74] ghommble's other changes --- .../research/designs/biogenerator_designs.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index c2f505a93a..43562a7e12 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -3,7 +3,7 @@ /////////////////////////////////// /datum/design/milk - name = "10 Milk" + name = "10u Milk" id = "milk" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 20) @@ -11,7 +11,7 @@ category = list("initial","Food") /datum/design/cream - name = "10 Cream" + name = "10u Cream" id = "cream" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 30) @@ -124,19 +124,19 @@ category = list("initial","Botany Chemicals") /datum/design/diethylamine - name = "Diethylamine" + name = "10u Diethylamine" id = "diethylamine_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 150) - build_path = /obj/item/reagent_containers/glass/bottle/diethylamine + materials = list(MAT_BIOMASS = 50) + make_reagents = list(/datum/reagent/diethylamine = 10) category = list("initial","Botany Chemicals") /datum/design/saltpetre - name = "Saltpetre" + name = "10u Saltpetre" id = "saltpetre_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 225) - build_path = /obj/item/reagent_containers/glass/bottle/saltpetre + materials = list(MAT_BIOMASS = 75) + make_reagents = list(/datum/reagent/saltpetre = 10) category = list("initial","Botany Chemicals") /datum/design/botany_bottle From 78fad64d5661ee591190fd1875aeaeb777734eed Mon Sep 17 00:00:00 2001 From: Cameron! Date: Sun, 16 Feb 2020 15:54:41 -0800 Subject: [PATCH 37/74] this is no longer necessary --- code/modules/hydroponics/hydroponics.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index d37c5af6c2..1cd63db6da 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -664,7 +664,7 @@ adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1)) adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.034)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02)) adjustPests(-rand(1,2)) // Nutriment Compost, effectively From b028b296f57dbfe6eebf2c68c34d0d11c1bb1a70 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 17 Feb 2020 12:17:33 +0100 Subject: [PATCH 38/74] Update mob_holder.dm --- code/datums/elements/mob_holder.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm index 50cd93ff29..8687d89b2f 100644 --- a/code/datums/elements/mob_holder.dm +++ b/code/datums/elements/mob_holder.dm @@ -93,7 +93,7 @@ lefthand_file = left_hand if(right_hand) righthand_file = right_hand - slot_flags = slots + slot_flags = slots /obj/item/clothing/head/mob_holder/proc/assimilate(mob/living/target) target.setDir(SOUTH) From 28a589d2d1b57d23fe993f6a12625881fed4c43d Mon Sep 17 00:00:00 2001 From: Cameron! Date: Mon, 17 Feb 2020 04:32:39 -0800 Subject: [PATCH 39/74] diethylamine > ammonia --- code/modules/research/designs/biogenerator_designs.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 43562a7e12..ab0460974c 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -123,12 +123,12 @@ build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller category = list("initial","Botany Chemicals") -/datum/design/diethylamine - name = "10u Diethylamine" - id = "diethylamine_biogen" +/datum/design/ammonia + name = "10u Ammonia" + id = "ammonia_biogen" build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 50) - make_reagents = list(/datum/reagent/diethylamine = 10) + materials = list(MAT_BIOMASS = 25) + make_reagents = list(/datum/reagent/ammonia = 10) category = list("initial","Botany Chemicals") /datum/design/saltpetre From 5e10f822e6aecf5830d109464fdea1568610241f Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 17 Feb 2020 13:40:37 +0100 Subject: [PATCH 40/74] Update energy.dm --- code/modules/projectiles/guns/energy.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index d98878bb67..401678512b 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -67,7 +67,7 @@ /obj/item/gun/energy/Destroy() if(flags_1 & INITIALIZED_1) QDEL_NULL(cell) - if(!(O.flags_1 & HOLOGRAM_1)) //holodeck stuff. + if(!(flags_1 & HOLOGRAM_1)) //holodeck stuff. QDEL_LIST(ammo_type) STOP_PROCESSING(SSobj, src) return ..() From 5dc271124aa06e355cb71ac013780ff748b19ab2 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 17 Feb 2020 14:29:14 +0100 Subject: [PATCH 41/74] Something about tesla revolvers and tk. --- code/modules/projectiles/projectile/energy/tesla.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index 43c31816cd..2439cee429 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -7,10 +7,11 @@ var/zap_range = 3 var/power = 10000 -/obj/item/projectile/energy/tesla/fire(setAngle) - if(firer) - chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY) - ..() +/obj/item/projectile/energy/tesla/fire(setAngle, atom/direct_target) + var/atom/source = fired_from || firer + if(source) + chain = source.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY) + return ..() /obj/item/projectile/energy/tesla/on_hit(atom/target) . = ..() From 217661184d951e221fd2e2572cdc1b4842d2ffa8 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 17 Feb 2020 21:29:34 +0800 Subject: [PATCH 42/74] nerf'd --- code/modules/spells/spell_types/bloodcrawl.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/spells/spell_types/bloodcrawl.dm b/code/modules/spells/spell_types/bloodcrawl.dm index e4c33380b2..49d73b445b 100644 --- a/code/modules/spells/spell_types/bloodcrawl.dm +++ b/code/modules/spells/spell_types/bloodcrawl.dm @@ -13,6 +13,7 @@ action_icon_state = "bloodcrawl" action_background_icon_state = "bg_demon" var/phased = 0 + charge_max = 6 /obj/effect/proc_holder/spell/bloodcrawl/choose_targets(mob/user = usr) for(var/obj/effect/decal/cleanable/target in range(range, get_turf(user))) From eddefd4d25a1829476dcd97575a5ced12af1543c Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 17 Feb 2020 15:07:17 +0100 Subject: [PATCH 43/74] Update large_objects.dm --- code/modules/cargo/exports/large_objects.dm | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index bf67286f11..b7bdcb1f59 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -24,13 +24,13 @@ export_types = list(/obj/structure/ore_box) /datum/export/large/crate/wood - cost = 140 // + cost = 140 unit_name = "wooden crate" export_types = list(/obj/structure/closet/crate/wooden) exclude_types = list() /datum/export/large/barrel - cost = 500 //150 to make meaning proffit of 350 + cost = 300 //double the wooden cost of a coffin. unit_name = "wooden barrel" export_types = list(/obj/structure/fermenting_barrel) @@ -40,19 +40,11 @@ export_types = list(/obj/structure/closet/crate/coffin) /datum/export/large/reagent_dispenser - cost = 100 // +0-400 depending on amount of reagents left - var/contents_cost = 400 - -/datum/export/large/reagent_dispenser/get_cost(obj/O) - var/obj/structure/reagent_dispensers/D = O - var/ratio = D.reagents.total_volume / D.reagents.maximum_volume - - return ..() + round(contents_cost * ratio) + cost = 100 /datum/export/large/reagent_dispenser/water unit_name = "watertank" export_types = list(/obj/structure/reagent_dispensers/watertank) - contents_cost = 200 /datum/export/large/reagent_dispenser/fuel unit_name = "fueltank" @@ -60,7 +52,6 @@ /datum/export/large/reagent_dispenser/beer unit_name = "beer keg" - contents_cost = 700 export_types = list(/obj/structure/reagent_dispensers/beerkeg) /datum/export/large/pipedispenser From cc685b813cf48b72e0cef37119dfc1d18859d25b Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 17 Feb 2020 14:35:37 -0600 Subject: [PATCH 44/74] ignore the branch name i just needed icons --- icons/mecha/mech_construction.dmi | Bin 17377 -> 19228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi index 42cc8eeb57416a14af3e1daaf2096d6a751ca160..d7f0f3e05487beaa68496e7dd3a8bdcbaba78297 100644 GIT binary patch literal 19228 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 Cf{L*K literal 17377 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�*Z{Z32vdL*!U789U=BJIYpXqX)v`yFvI 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 From 3b82e34db6e88727e8f08b552f4920234c8dd066 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 17 Feb 2020 15:48:02 -0500 Subject: [PATCH 45/74] Update code/modules/cargo/packs/emergency.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/cargo/packs/emergency.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index b06561a1c2..be81da3b92 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -130,7 +130,7 @@ /datum/supply_pack/emergency/bomb name = "Explosive Emergency Crate" - desc = "Science gone bonkers? Beeping behind the airlock? Buy now and become the hero the station ki-... I mean needs! Time not included, but a full bomb suit and hood, as well as a mask and defusal kit are! Non-Nuclear ordinance only." + desc = "Science gone bonkers? Beeping behind the airlock? Buy now and become the hero the station des... I mean needs! Time not included, but a full bomb suit and hood, as well as a mask and defusal kit are! Non-Nuclear ordnances only." cost = 1500 contains = list(/obj/item/clothing/head/bomb_hood, /obj/item/clothing/suit/bomb_suit, From 8f653b4dd6809beb312bb99f49bda701bca48b85 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 17 Feb 2020 15:48:31 -0500 Subject: [PATCH 46/74] Update materials.dm --- code/modules/cargo/packs/materials.dm | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 556c3175d2..6c1742896f 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -47,23 +47,7 @@ cost = 9050 contains = list(/obj/item/stack/sheet/plasteel/fifty) crate_name = "plasteel sheets crate" -/* -/datum/supply_pack/materials/plastitanium50 - name = "50 Plastitanium Sheets" - desc = "Build an evil empire with fifty plastitanium sheets." - cost = 9250 - contraband = TRUE - contains = list(/obj/item/stack/sheet/mineral/plastitanium/fifty) - crate_name = "plastitanium sheets crate" -/datum/supply_pack/materials/plastitanium_glass50 - name = "50 Plastitanium Glass Sheets" - desc = "Look out from your evil empire with fifty plastitanium glass sheets." - cost = 9500 - contraband = TRUE - contains = list(/obj/item/stack/sheet/plastitaniumglass/fifty) - crate_name = "plastitanium glass sheets crate" -*/ /datum/supply_pack/materials/plastic50 name = "50 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" From a9f103fb34e4bde51b51b18e3ecf164b45ad2867 Mon Sep 17 00:00:00 2001 From: Cameron! Date: Mon, 17 Feb 2020 15:28:10 -0800 Subject: [PATCH 47/74] removes unused bottle, kicks travis? --- code/modules/reagents/reagent_containers/bottle.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index e27ff37c5b..e4741bb858 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -112,11 +112,6 @@ desc = "A small bottle of diethylamine." list_reagents = list(/datum/reagent/diethylamine = 30) -/obj/item/reagent_containers/glass/bottle/saltpetre - name = "saltpetre bottle" - desc = "A small bottle of saltpetre." - list_reagents = list(/datum/reagent/saltpetre = 30) - /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" desc = "A small bottle. Contains a small amount of fluorosulfuric acid." @@ -436,4 +431,4 @@ /obj/item/reagent_containers/glass/bottle/hexacamphor name = "Hexacamphor bottle" desc = "A bottle of strong anaphrodisiac. Reduces libido." - list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) \ No newline at end of file + list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) From 78fcd706b3fa4a5b689f5076ebc05921a2bba0cd Mon Sep 17 00:00:00 2001 From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com> Date: Mon, 17 Feb 2020 19:41:30 -0700 Subject: [PATCH 49/74] Requested changes, podpeople.dm --- .../carbon/human/species_types/podpeople.dm | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 4fcf1eebec..05bca6653a 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -3,9 +3,7 @@ name = "Anthromorphic Plant" id = "pod" default_color = "59CE00" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) - mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") + species_traits = list(MUTCOLORS,EYECOLOR) attack_verb = "slash" attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -72,39 +70,42 @@ if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) -/datum/species/pod/spec_death(gibbed, mob/living/carbon/human/H) - if(H) - stop_wagging_tail(H) - -/datum/species/pod/spec_stun(mob/living/carbon/human/H,amount) - if(H) - stop_wagging_tail(H) - . = ..() - -/datum/species/pod/can_wag_tail(mob/living/carbon/human/H) - return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) - -/datum/species/pod/is_wagging_tail(mob/living/carbon/human/H) - return ("mam_waggingtail" in mutant_bodyparts) - -/datum/species/pod/start_wagging_tail(mob/living/carbon/human/H) - if("mam_tail" in mutant_bodyparts) - mutant_bodyparts -= "mam_tail" - mutant_bodyparts |= "mam_waggingtail" - H.update_body() - -/datum/species/pod/stop_wagging_tail(mob/living/carbon/human/H) - if("mam_waggingtail" in mutant_bodyparts) - mutant_bodyparts -= "mam_waggingtail" - mutant_bodyparts |= "mam_tail" - H.update_body() - /datum/species/pod/pseudo_weak name = "Anthromorphic Plant" id = "podweak" + species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "legs") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") limbs_id = "pod" light_nutrition_gain_factor = 7.5 light_bruteheal = 0.2 light_burnheal = 0.2 light_toxheal = 0.7 + +/datum/species/pod/pseudo_weak/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/pod/pseudo_weak/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/pod/pseudo_weak/can_wag_tail(mob/living/carbon/human/H) + return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/pseudo_weak/is_wagging_tail(mob/living/carbon/human/H) + return ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/pod/pseudo_weak/start_wagging_tail(mob/living/carbon/human/H) + if("mam_tail" in mutant_bodyparts) + mutant_bodyparts -= "mam_tail" + mutant_bodyparts |= "mam_waggingtail" + H.update_body() + +/datum/species/pod/pseudo_weak/stop_wagging_tail(mob/living/carbon/human/H) + if("mam_waggingtail" in mutant_bodyparts) + mutant_bodyparts -= "mam_waggingtail" + mutant_bodyparts |= "mam_tail" + H.update_body() From 930e6f98767b4833e953cfc45c283626f5d0b711 Mon Sep 17 00:00:00 2001 From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com> Date: Mon, 17 Feb 2020 19:47:48 -0700 Subject: [PATCH 50/74] Requested changes, ghost_role_spawner.dm --- .../objects/structures/ghost_role_spawners.dm | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 3b1b20d46a..724c921d07 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -19,9 +19,6 @@ Estimated time of last contact: Deployment, 5000 millennia ago." assignedrole = "Lifebringer" -/obj/effect/mob_spawn/human/seed_vault/special(mob/living/new_spawn) - - /obj/effect/mob_spawn/human/seed_vault/Destroy() new/obj/structure/fluff/empty_terrarium(get_turf(src)) return ..() @@ -30,18 +27,10 @@ ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \ "Venus", "Sprout","Cocoa", "Strawberry", "Citrus", "Oak", "Cactus", "Pepper", "Juniper") - new_spawn.real_name = plant_name + new_spawn.real_name = plant_name //why this works when moving it from one function to another is beyond me new_spawn.underwear = "Nude" //You're a plant, partner - new_spawn.undershirt = "Nude" + new_spawn.undershirt = "Nude" //changing underwear/shirt/socks doesn't seem to function correctly right now because of some bug elsewhere? new_spawn.socks = "Nude" - new_spawn.dna.features["snout"] = "None" - new_spawn.dna.features["body_markings"] = "Plain" - new_spawn.dna.features["mam_tail"] = "None" - new_spawn.dna.features["taur"] = "None" - new_spawn.dna.features["ears"] = "None" - new_spawn.dna.features["legs"] = "Plantigrade" - new_spawn.facial_hair_style = "Shaved" - new_spawn.hair_style = "Bald" new_spawn.regenerate_icons() //Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers. From cfca197fbb5a487f9e570aac3eb360aedffaf674 Mon Sep 17 00:00:00 2001 From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com> Date: Mon, 17 Feb 2020 19:55:32 -0700 Subject: [PATCH 51/74] forgot one last change that I made out of frustration because making things bald wasn't working for some reason --- code/game/objects/structures/ghost_role_spawners.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 724c921d07..54c44330fc 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -31,7 +31,7 @@ new_spawn.underwear = "Nude" //You're a plant, partner new_spawn.undershirt = "Nude" //changing underwear/shirt/socks doesn't seem to function correctly right now because of some bug elsewhere? new_spawn.socks = "Nude" - new_spawn.regenerate_icons() + new_spawn.update_body() //Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers. From 139508a9a4357f79490caf03e7056c6b9d77ae6a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 17 Feb 2020 22:36:57 -0700 Subject: [PATCH 52/74] Update drag_drop.dm --- code/_onclick/drag_drop.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index dc18107a95..9638b040f9 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -42,7 +42,7 @@ selected_target[1] = object selected_target[2] = params while(selected_target[1]) - Click(selected_target[1], location, control, selected_target[2]) + Click(selected_target[1], location, control, selected_target[2], TRUE) sleep(delay) active_mousedown_item = mob.canMobMousedown(object, location, params) if(active_mousedown_item) @@ -145,4 +145,4 @@ if (middragatom == src_object) middragtime = 0 middragatom = null - ..() \ No newline at end of file + ..() From 9dbc6ca18355e225900042f2241a5ce6e1e755c7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 17 Feb 2020 22:37:58 -0700 Subject: [PATCH 53/74] Update client_procs.dm --- code/modules/client/client_procs.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index e05cee3487..dc550179f8 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -737,13 +737,13 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) message_admins("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a Proxy/VPN.") ip_intel = res.intel -/client/Click(atom/object, atom/location, control, params) +/client/Click(atom/object, atom/location, control, params, ignore_spam = FALSE) var/ab = FALSE var/list/L = params2list(params) if (object && object == middragatom && L["left"]) ab = max(0, 5 SECONDS-(world.time-middragtime)*0.1) var/mcl = CONFIG_GET(number/minute_click_limit) - if (!holder && mcl) + if (!holder && !ignore_spam && mcl) var/minute = round(world.time, 600) if (!clicklimiter) clicklimiter = new(LIMITER_SIZE) @@ -768,7 +768,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) return var/scl = CONFIG_GET(number/second_click_limit) - if (!holder && scl) + if (!holder && !ignore_spam && scl) var/second = round(world.time, 10) if (!clicklimiter) clicklimiter = new(LIMITER_SIZE) From 47adcaa5c59de7c39df3bba6b89b516720d0e8d0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 03:21:19 -0600 Subject: [PATCH 54/74] Automatic changelog generation for PR #11087 [ci skip] --- html/changelogs/AutoChangeLog-pr-11087.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11087.yml diff --git a/html/changelogs/AutoChangeLog-pr-11087.yml b/html/changelogs/AutoChangeLog-pr-11087.yml new file mode 100644 index 0000000000..179ef6a2b7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11087.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed solar panels/trackers (de)construction being a bit wonky." From 1c156996f4a2995372b2964c575fb2436e1864eb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 03:21:39 -0600 Subject: [PATCH 55/74] Automatic changelog generation for PR #11082 [ci skip] --- html/changelogs/AutoChangeLog-pr-11082.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11082.yml diff --git a/html/changelogs/AutoChangeLog-pr-11082.yml b/html/changelogs/AutoChangeLog-pr-11082.yml new file mode 100644 index 0000000000..89d9b4ca52 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11082.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay into histamine. Instead, it just prevents your organs from rotting into nothing." From 541ecffa1aa3f1eefc4d9e2fb3a2d83b623963cd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 08:52:20 -0600 Subject: [PATCH 56/74] Automatic changelog generation for PR #11134 [ci skip] --- html/changelogs/AutoChangeLog-pr-11134.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11134.yml diff --git a/html/changelogs/AutoChangeLog-pr-11134.yml b/html/changelogs/AutoChangeLog-pr-11134.yml new file mode 100644 index 0000000000..8ec6c97164 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11134.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - bugfix: "mechs with stock parts now have icons" From 698f0b8177c7c17019b8b25582f2a6499b5fd898 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 18 Feb 2020 16:20:44 +0100 Subject: [PATCH 57/74] Something about pAIs and silicon access priviledges. --- code/__DEFINES/robots.dm | 8 +++++++- code/game/machinery/bloodbankgen.dm | 16 ++++++++-------- code/game/machinery/computer/camera_advanced.dm | 2 +- code/game/machinery/cryopod.dm | 2 +- code/game/machinery/iv_drip.dm | 2 +- code/game/objects/items/RCD.dm | 2 +- code/modules/admin/admin_verbs.dm | 2 +- .../antagonists/bloodsucker/powers/bs_feed.dm | 2 +- .../antagonists/bloodsucker/powers/bs_gohome.dm | 16 ++++++++-------- code/modules/atmospherics/machinery/airalarm.dm | 12 +++++++----- code/modules/cargo/expressconsole.dm | 2 +- .../kitchen_machinery/icecream_vat.dm | 2 +- code/modules/mob/dead/observer/login.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 3 +++ code/modules/mob/living/carbon/human/human.dm | 3 --- code/modules/mob/living/silicon/pai/pai.dm | 1 + code/modules/mob/living/silicon/silicon.dm | 2 +- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- .../mob/living/simple_animal/bot/mulebot.dm | 8 ++++---- .../simple_animal/friendly/drone/_drone.dm | 2 +- .../mob/living/simple_animal/hostile/statue.dm | 2 +- code/modules/mob/mob_defines.dm | 2 +- code/modules/mob/mob_helpers.dm | 6 +++--- code/modules/oracle_ui/hookup_procs.dm | 4 ++-- code/modules/power/apc.dm | 14 +++++++------- .../chemistry/machinery/chem_dispenser.dm | 2 +- .../reagents/chemistry/machinery/chem_heater.dm | 2 +- .../reagents/chemistry/machinery/chem_master.dm | 4 ++-- .../reagents/chemistry/machinery/pandemic.dm | 8 ++++---- .../chemistry/machinery/reagentgrinder.dm | 2 +- 30 files changed, 73 insertions(+), 64 deletions(-) diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index a05e6f6160..affa23d30a 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -53,4 +53,10 @@ //Checks to determine borg availability depending on the server's config. These are defines in the interest of reducing copypasta -#define BORG_SEC_AVAILABLE (!CONFIG_GET(flag/disable_secborg) && GLOB.security_level >= CONFIG_GET(number/minimum_secborg_alert)) \ No newline at end of file +#define BORG_SEC_AVAILABLE (!CONFIG_GET(flag/disable_secborg) && GLOB.security_level >= CONFIG_GET(number/minimum_secborg_alert)) + +//silicon_priviledges flags +#define PRIVILEDGES_SILICON (1<<0) +#define PRIVILEDGES_PAI (1<<1) +#define PRIVILEDGES_BOT (1<<2) +#define PRIVILEDGES_DRONE (1<<3) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index cb25adc126..19632711fc 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -274,20 +274,20 @@ return TRUE -/obj/machinery/bloodbankgen/proc/detachinput() +/obj/machinery/bloodbankgen/proc/detachinput(mob/user) if(bag) bag.forceMove(drop_location()) - if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) - usr.put_in_hands(bag) + if(user && Adjacent(usr) && user.can_hold_items()) + user.put_in_hands(bag) bag = null draining = null update_icon() -/obj/machinery/bloodbankgen/proc/detachoutput() +/obj/machinery/bloodbankgen/proc/detachoutput(mob/user) if(outbag) outbag.forceMove(drop_location()) - if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) - usr.put_in_hands(outbag) + if(user && Adjacent(user) && user.can_hold_items()) + user.put_in_hands(outbag) outbag = null filling = null update_icon() @@ -325,12 +325,12 @@ activateinput() else if(href_list["detachinput"]) - detachinput() + detachinput(usr) else if(href_list["activateoutput"]) activateoutput() else if(href_list["detachoutput"]) - detachoutput() + detachoutput(usr) updateUsrDialog() diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index e5ac9a0f78..5fe62ebb76 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -72,7 +72,7 @@ playsound(src, 'sound/machines/terminal_off.ogg', 25, 0) /obj/machinery/computer/camera_advanced/check_eye(mob/user) - if( (stat & (NOPOWER|BROKEN)) || (!Adjacent(user) && !user.has_unlimited_silicon_privilege) || user.eye_blind || user.incapacitated() ) + if( (stat & (NOPOWER|BROKEN)) || (!Adjacent(user) && hasSiliconAccessInArea(user)) || user.eye_blind || user.incapacitated() ) user.unset_machine() /obj/machinery/computer/camera_advanced/Destroy() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index b33b87f8b1..92927d047d 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -116,7 +116,7 @@ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) I.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(I) frozen_items -= I updateUsrDialog() diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 6d19776d86..b3f0ce9693 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -184,7 +184,7 @@ if(usr.incapacitated()) return if(beaker) - if(usr && Adjacent(usr) && !issiliconoradminghost(usr)) + if(usr && Adjacent(usr) && usr.can_hold_items()) if(!usr.put_in_hands(beaker)) beaker.forceMove(drop_location()) beaker = null diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 3f57fa7cdf..3fad8cc53d 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -196,7 +196,7 @@ RLD /obj/item/construction/rcd/verb/change_airlock_access(mob/user) - if (!ishuman(user) && !user.has_unlimited_silicon_privilege) + if (!ishuman(user) && !user.silicon_privileges) return var/t1 = "" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f23fc5c070..3ccd113864 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -714,7 +714,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) AI_Interact = !AI_Interact if(mob && IsAdminGhost(mob)) - mob.has_unlimited_silicon_privilege = AI_Interact + mob.silicon_privileges = AI_Interact ? ALL : NONE log_admin("[key_name(usr)] has [AI_Interact ? "activated" : "deactivated"] Admin AI Interact") message_admins("[key_name_admin(usr)] has [AI_Interact ? "activated" : "deactivated"] their AI interaction") diff --git a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm index 2da84b6075..f9ff31d94a 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm @@ -170,7 +170,7 @@ // Warn Feeder about Witnesses... var/was_unnoticed = TRUE for(var/mob/living/M in viewers(notice_range, owner)) - if(M != owner && M != target && iscarbon(M) && M.mind && !M.has_unlimited_silicon_privilege && !M.eye_blind && !M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) + if(M != owner && M != target && iscarbon(M) && M.mind && !M.silicon_privileges && !M.eye_blind && !M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) was_unnoticed = FALSE break if(was_unnoticed) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm b/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm index 476f8ae012..3fa8a07299 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm @@ -28,9 +28,9 @@ to_chat(owner, "Your coffin has been destroyed!") return FALSE return TRUE - + /datum/action/bloodsucker/gohome/proc/flicker_lights(var/flicker_range, var/beat_volume) - for(var/obj/machinery/light/L in view(flicker_range, get_turf(owner))) + for(var/obj/machinery/light/L in view(flicker_range, get_turf(owner))) playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', beat_volume, 1) @@ -45,7 +45,7 @@ flicker_lights(4, 40) sleep(50) flicker_lights(4, 60) - for(var/obj/machinery/light/L in view(6, get_turf(owner))) + for(var/obj/machinery/light/L in view(6, get_turf(owner))) L.flicker(5) playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', 60, 1) // ( STEP TWO: Lights OFF? ) @@ -56,7 +56,7 @@ if(!owner) return // SEEN?: (effects ONLY if there are witnesses! Otherwise you just POOF) - + var/am_seen = FALSE // Do Effects (seen by anyone) var/drop_item = FALSE // Drop Stuff (seen by non-vamp) if(isturf(owner.loc)) // Only check if I'm not in a Locker or something. @@ -65,7 +65,7 @@ if(T && T.lighting_object && T.get_lumcount()>= 0.1) // B) Check for Viewers for(var/mob/living/M in viewers(get_turf(owner))) - if(M != owner && isliving(M) && M.mind && !M.has_unlimited_silicon_privilege && !M.eye_blind) // M.client <--- add this in after testing! + if(M != owner && isliving(M) && M.mind && !M.silicon_privileges && !M.eye_blind) // M.client <--- add this in after testing! am_seen = TRUE if (!M.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) drop_item = TRUE @@ -95,12 +95,12 @@ puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke puff.set_up(3, 0, get_turf(owner)) puff.start() - + //STEP FIVE: Create animal at prev location var/mob/living/simple_animal/SA = pick(/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse, /mob/living/simple_animal/hostile/retaliate/bat) //prob(300) /mob/living/simple_animal/mouse, new SA (owner.loc) // TELEPORT: Move to Coffin & Close it! - do_teleport(owner, bloodsuckerdatum.coffin, no_effects = TRUE, forced = TRUE, channel = TELEPORT_CHANNEL_QUANTUM) + do_teleport(owner, bloodsuckerdatum.coffin, no_effects = TRUE, forced = TRUE, channel = TELEPORT_CHANNEL_QUANTUM) user.resting = TRUE user.Stun(30,1) // CLOSE LID: If fail, force me in. @@ -112,4 +112,4 @@ bloodsuckerdatum.coffin.update_icon() // Lock Coffin bloodsuckerdatum.coffin.LockMe(owner) - + diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index e85cf1efa6..36a128f2eb 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -229,7 +229,7 @@ . += "Alt-click to [locked ? "unlock" : "lock"] the interface." /obj/machinery/airalarm/ui_status(mob/user) - if(user.has_unlimited_silicon_privilege && aidisabled) + if(hasSiliconAccessInArea(user) && aidisabled) to_chat(user, "AI control has been disabled.") else if(!shorted) return ..() @@ -245,7 +245,7 @@ /obj/machinery/airalarm/ui_data(mob/user) var/data = list( "locked" = locked, - "siliconUser" = user.has_unlimited_silicon_privilege || hasSiliconAccessInArea(user), + "siliconUser" = hasSiliconAccessInArea(user), "emagged" = (obj_flags & EMAGGED ? 1 : 0), "danger_level" = danger_level, ) @@ -288,7 +288,7 @@ "danger_level" = cur_tlv.get_danger_level(environment.gases[gas_id] * partial_pressure) )) - if(!locked || user.has_unlimited_silicon_privilege || hasSiliconAccessInArea(user)) + if(!locked || hasSiliconAccessInArea(user, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE)) data["vents"] = list() for(var/id_tag in A.air_vent_names) var/long_name = A.air_vent_names[id_tag] @@ -368,12 +368,14 @@ /obj/machinery/airalarm/ui_act(action, params) if(..() || buildstage != 2) return - if((locked && !usr.has_unlimited_silicon_privilege && !hasSiliconAccessInArea(usr)) || (usr.has_unlimited_silicon_privilege && aidisabled)) + var/silicon_access = hasSiliconAccessInArea(usr) + var/bot_priviledges = silicon_access || (usr.silicon_privileges & PRIVILEDGES_DRONE) + if((locked && !bot_priviledges) || (silicon_access && aidisabled)) return var/device_id = params["id_tag"] switch(action) if("lock") - if(usr.has_unlimited_silicon_privilege && !wires.is_cut(WIRE_IDSCAN)) + if(bot_priviledges && !wires.is_cut(WIRE_IDSCAN)) locked = !locked . = TRUE if("power", "toggle_filter", "widenet", "scrubbing") diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 20dc724707..dbf10e837f 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -97,7 +97,7 @@ var/canBeacon = beacon && (isturf(beacon.loc) || ismob(beacon.loc))//is the beacon in a valid location? var/list/data = list() data["locked"] = locked//swipe an ID to unlock - data["siliconUser"] = user.has_unlimited_silicon_privilege + data["siliconUser"] = hasSiliconAccessInArea(user) data["beaconzone"] = beacon ? get_area(beacon) : ""//where is the beacon located? outputs in the tgui data["usingBeacon"] = usingBeacon //is the mode set to deliver to the beacon or the cargobay? data["canBeacon"] = !usingBeacon || canBeacon //is the mode set to beacon delivery, and is the beacon in a valid location? diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 71becf0542..4fc55ba4c3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -319,7 +319,7 @@ /obj/machinery/icecream_vat/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) beaker.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(beaker) if(new_beaker) beaker = new_beaker diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index 1b328dbc69..8daf8ec052 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -6,7 +6,7 @@ var/preferred_form = null if(IsAdminGhost(src)) - has_unlimited_silicon_privilege = 1 + silicon_privileges = ALL if(client.prefs.unlock_content) preferred_form = client.prefs.ghost_form diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6460d8331d..b5e9e4f1d7 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -987,3 +987,6 @@ return TRUE if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS)) return TRUE + +/mob/living/carbon/can_hold_items() + return TRUE diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ef3d4cbb98..f41b19aa83 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -823,9 +823,6 @@ . += dna.species.check_weakness(weapon, attacker) /mob/living/carbon/human/is_literate() - return 1 - -/mob/living/carbon/human/can_hold_items() return TRUE /mob/living/carbon/human/update_gravity(has_gravity,override = 0) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 409665f792..ee78a8a5d6 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -11,6 +11,7 @@ health = 500 maxHealth = 500 layer = BELOW_MOB_LAYER + silicon_privileges = PRIVILEDGES_PAI var/datum/element/mob_holder/current_mob_holder //because only a few of their chassis can be actually held. var/network = "ss13" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 72e98e348c..531faff056 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -1,6 +1,6 @@ /mob/living/silicon gender = NEUTER - has_unlimited_silicon_privilege = 1 + silicon_privileges = PRIVILEDGES_SILICON verb_say = "states" verb_ask = "queries" verb_exclaim = "declares" diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 7da0ad13da..3a28a32f9c 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -15,7 +15,7 @@ maxbodytemp = INFINITY minbodytemp = 0 blood_volume = 0 - has_unlimited_silicon_privilege = 1 + silicon_privileges = PRIVILEDGES_BOT sentience_type = SENTIENCE_ARTIFICIAL status_flags = NONE //no default canpush verb_say = "states" diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index b23f3f2baa..be9ffb7479 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -180,7 +180,7 @@ var/list/data = list() data["on"] = on data["locked"] = locked - data["siliconUser"] = user.has_unlimited_silicon_privilege + data["siliconUser"] = hasSiliconAccessInArea(usr) data["mode"] = mode ? mode_name[mode] : "Ready" data["modeStatus"] = "" switch(mode) @@ -205,11 +205,12 @@ return data /mob/living/simple_animal/bot/mulebot/ui_act(action, params) - if(..() || (locked && !usr.has_unlimited_silicon_privilege)) + var/silicon_access = hasSiliconAccessInArea(usr) + if(..() || (locked && silicon_access)) return switch(action) if("lock") - if(usr.has_unlimited_silicon_privilege) + if(silicon_access) locked = !locked . = TRUE if("power") @@ -766,4 +767,3 @@ /obj/machinery/bot_core/mulebot req_access = list(ACCESS_CARGO) - \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 7dd373b49f..43149e6ba7 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -41,7 +41,7 @@ bubble_icon = "machine" initial_language_holder = /datum/language_holder/drone mob_size = MOB_SIZE_SMALL - has_unlimited_silicon_privilege = 1 + silicon_privileges = PRIVILEDGES_DRONE damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) unique_name = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 5ad787b143..2bab332cd0 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -126,7 +126,7 @@ // This loop will, at most, loop twice. for(var/atom/check in check_list) for(var/mob/living/M in viewers(world.view + 1, check) - src) - if(M.client && CanAttack(M) && !M.has_unlimited_silicon_privilege) + if(M.client && CanAttack(M) && !M.silicon_privileges) if(!M.eye_blind) return M for(var/obj/mecha/M in view(world.view + 1, check)) //assuming if you can see them they can see you diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6d5ae72e77..c45f6eec13 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -95,7 +95,7 @@ var/digitalinvis = 0 //Are they ivisible to the AI? var/image/digitaldisguise = null //what does the AI see instead of them? - var/has_unlimited_silicon_privilege = 0 // Can they interact with station electronics + var/silicon_privileges = NONE // Can they interact with station electronics var/obj/control_object //Used by admins to possess objects. All mobs should have this var var/atom/movable/remote_control //Calls relaymove() to whatever it is diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index b25531f0e0..12d74d2f8f 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -406,8 +406,8 @@ It's fairly easy to fix if dealing with single letters but not so much with comp return return TRUE -/atom/proc/hasSiliconAccessInArea(mob/user) - return user && (issilicon(user) || (user.siliconaccesstoggle && (get_area(src) in user.siliconaccessareas))) +/atom/proc/hasSiliconAccessInArea(mob/user, flags = PRIVILEDGES_SILICON) + return user.silicon_privileges & (flags) || (user.siliconaccesstoggle && (get_area(src) in user.siliconaccessareas)) /mob/proc/toggleSiliconAccessArea(area/area) if (area in siliconaccessareas) @@ -555,4 +555,4 @@ It's fairly easy to fix if dealing with single letters but not so much with comp //Can the mob see reagents inside of containers? /mob/proc/can_see_reagents() - return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents + return stat == DEAD || silicon_privileges //Dead guys and silicons can always see reagents diff --git a/code/modules/oracle_ui/hookup_procs.dm b/code/modules/oracle_ui/hookup_procs.dm index 18d7bbfd8c..30db9d92b9 100644 --- a/code/modules/oracle_ui/hookup_procs.dm +++ b/code/modules/oracle_ui/hookup_procs.dm @@ -5,7 +5,7 @@ return "Default Implementation" /datum/proc/oui_canuse(mob/user) - if(isobserver(user) && !user.has_unlimited_silicon_privilege) + if(isobserver(user) && !user.silicon_privileges) return FALSE return oui_canview(user) @@ -35,7 +35,7 @@ return ..() /obj/machinery/oui_canview(mob/user) - if(user.has_unlimited_silicon_privilege || hasSiliconAccessInArea(user)) + if(hasSiliconAccessInArea(user, ALL)) return TRUE if(!can_interact(user)) return FALSE diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 982afa49c8..db3e3c83c6 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -846,7 +846,7 @@ return /obj/machinery/power/apc/oui_canview(mob/user) - if(user.has_unlimited_silicon_privilege || area.hasSiliconAccessInArea(user)) + if(area.hasSiliconAccessInArea(user)) //some APCs are mapped outside their assigned area, so this is required. return TRUE return ..() @@ -864,7 +864,7 @@ if (H && !H.stealthmode && H.toggled) abilitiesavail = TRUE var/list/data = list( - "locked" = locked && !(integration_cog && is_servant_of_ratvar(user)) && !area.hasSiliconAccessInArea(user), + "locked" = locked && !(integration_cog && is_servant_of_ratvar(user)) && !area.hasSiliconAccessInArea(user, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE), "lock_nightshift" = nightshift_requires_auth, "failTime" = failure_timer, "isOperating" = operating, @@ -874,7 +874,7 @@ "chargingStatus" = charging, "totalLoad" = DisplayPower(lastused_total), "coverLocked" = coverlocked, - "siliconUser" = user.has_unlimited_silicon_privilege || user.using_power_flow_console() || area.hasSiliconAccessInArea(user), + "siliconUser" = user.using_power_flow_console() || area.hasSiliconAccessInArea(user), "malfStatus" = get_malf_status(user), "emergencyLights" = !emergency_lights, "nightshiftLights" = nightshift_lights, @@ -951,7 +951,7 @@ return TRUE if (user == hijacker || (area.hasSiliconAccessInArea(user) && !aidisabled)) return TRUE - if(user.has_unlimited_silicon_privilege) + if(user.silicon_privileges & PRIVILEDGES_SILICON) var/mob/living/silicon/ai/AI = user var/mob/living/silicon/robot/robot = user if (src.aidisabled || malfhack && istype(malfai) && ((istype(AI) && (malfai!=AI && malfai != AI.parent)) || (istype(robot) && (robot in malfai.connected_robots)))) @@ -985,7 +985,7 @@ if (action == "hijack" && can_use(usr, 1)) //don't need auth for hijack button hijack(usr) return - var/authorized = (!locked || usr.has_unlimited_silicon_privilege || area.hasSiliconAccessInArea(usr) || (integration_cog && (is_servant_of_ratvar(usr)))) + var/authorized = (!locked || area.hasSiliconAccessInArea(usr, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE) || (integration_cog && (is_servant_of_ratvar(usr)))) if((action == "toggle_nightshift") && (!nightshift_requires_auth || authorized)) toggle_nightshift_lights() return TRUE @@ -993,7 +993,7 @@ return switch(action) if("lock") - if(usr.has_unlimited_silicon_privilege || area.hasSiliconAccessInArea(usr)) + if(area.hasSiliconAccessInArea(usr)) if((obj_flags & EMAGGED) || (stat & (BROKEN|MAINT))) to_chat(usr, "The APC does not respond to the command.") else @@ -1027,7 +1027,7 @@ update() return TRUE if("overload") - if(usr.has_unlimited_silicon_privilege || area.hasSiliconAccessInArea(usr)) + if(area.hasSiliconAccessInArea(usr)) overload_lighting() return TRUE if("hack") diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index ed68c25cb6..be15bb70cf 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -408,7 +408,7 @@ if(beaker) var/obj/item/reagent_containers/B = beaker B.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(B) if(new_beaker) beaker = new_beaker diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 189d09b06f..4c4d0fdb6e 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -38,7 +38,7 @@ /obj/machinery/chem_heater/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) beaker.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(beaker) if(new_beaker) beaker = new_beaker diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 66c663e2e4..abfd00ed90 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -129,7 +129,7 @@ if(beaker) var/obj/item/reagent_containers/B = beaker B.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(B) if(new_beaker) beaker = new_beaker @@ -139,7 +139,7 @@ if(bottle) var/obj/item/storage/pill_bottle/B = bottle B.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(B) else adjust_item_drop_location(B) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 3dea44cf40..7b25aa769d 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -192,7 +192,7 @@ update_icon() var/turf/source_turf = get_turf(src) log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]") - + . = TRUE if("create_vaccine_bottle") wait = TRUE @@ -202,9 +202,9 @@ var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[D.name] vaccine bottle" B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id)) - + update_icon() - + . = TRUE /obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params) @@ -229,7 +229,7 @@ /obj/machinery/computer/pandemic/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) if(!user.put_in_hands(beaker)) beaker.forceMove(drop_location()) if(new_beaker) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index b17c2dfb37..85cdc33e72 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -75,7 +75,7 @@ /obj/machinery/reagentgrinder/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) beaker.forceMove(drop_location()) - if(user && Adjacent(user) && !issiliconoradminghost(user)) + if(user && Adjacent(user) && user.can_hold_items()) user.put_in_hands(beaker) if(new_beaker) beaker = new_beaker From e860a36c3d928bd7b4fc1bd64797205b4fad3936 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 10:02:20 -0600 Subject: [PATCH 58/74] Automatic changelog generation for PR #11131 [ci skip] --- html/changelogs/AutoChangeLog-pr-11131.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11131.yml diff --git a/html/changelogs/AutoChangeLog-pr-11131.yml b/html/changelogs/AutoChangeLog-pr-11131.yml new file mode 100644 index 0000000000..9a14049c2f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11131.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - balance: "bloodcrawl's cooldown" From 33c0422453b3aa81cb7c2d2feedbf92e82bd4887 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 10:11:52 -0600 Subject: [PATCH 59/74] Automatic changelog generation for PR #11091 [ci skip] --- html/changelogs/AutoChangeLog-pr-11091.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11091.yml diff --git a/html/changelogs/AutoChangeLog-pr-11091.yml b/html/changelogs/AutoChangeLog-pr-11091.yml new file mode 100644 index 0000000000..5d43d7dbdf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11091.yml @@ -0,0 +1,5 @@ +author: "BlueWildrose" +delete-after: True +changes: + - bugfix: "podpeople tail wagging" + - tweak: "lifebringer ghost role fixes" From 19ca51a6395c6d9b67459d1ec0670e35ed0ccfaa Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 12:02:37 -0600 Subject: [PATCH 60/74] Automatic changelog generation for PR #11083 [ci skip] --- html/changelogs/AutoChangeLog-pr-11083.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11083.yml diff --git a/html/changelogs/AutoChangeLog-pr-11083.yml b/html/changelogs/AutoChangeLog-pr-11083.yml new file mode 100644 index 0000000000..757d9fcb63 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11083.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "You can now purify eldritch longswords with a bible. This creates purified longswords, which do not have anti-magic properties, but are still good for swinging at cultists." From a9edff6e561dbd726fd3c8b7db367078a76766c1 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 18 Feb 2020 11:51:03 -0800 Subject: [PATCH 61/74] Supermatter sabotage no longer shows up with no supermatter --- code/game/gamemodes/objective.dm | 2 +- code/game/gamemodes/objective_sabotage.dm | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 459ff2f3d6..20a45b2102 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -1096,7 +1096,7 @@ GLOBAL_LIST_EMPTY(possible_sabotages) var/approved_targets = list() check_sabotages: for(var/datum/sabotage_objective/possible_sabotage in GLOB.possible_sabotages) - if(!is_unique_objective(possible_sabotage.sabotage_type) || possible_sabotage.check_conditions()) + if(!is_unique_objective(possible_sabotage.sabotage_type) || possible_sabotage.check_conditions() || !possible_sabotage.can_run()) continue for(var/datum/mind/M in owners) if(M.current.mind.assigned_role in possible_sabotage.excludefromjob) diff --git a/code/game/gamemodes/objective_sabotage.dm b/code/game/gamemodes/objective_sabotage.dm index 248524f1d2..1094dd2f36 100644 --- a/code/game/gamemodes/objective_sabotage.dm +++ b/code/game/gamemodes/objective_sabotage.dm @@ -12,6 +12,9 @@ /datum/sabotage_objective/proc/check_conditions() return TRUE +/datum/sabotage_objective/proc/can_run() + return TRUE + /datum/sabotage_objective/processing var/won = FALSE @@ -79,6 +82,9 @@ won = max(1-((S.get_integrity()-50)/50),won) return FALSE +/datum/sabotage_objective/processing/supermatter/can_run() + return (locate(/obj/machinery/power/supermatter_crystal) in GLOB.machines) + /datum/sabotage_objective/station_integrity name = "Make sure the station is at less than 80% integrity by the end. Smash walls, windows etc. to reach this goal." sabotage_type = "integrity" From 4f13765f3ccce96546f1223c1fc70f0b8ee3d800 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 19:09:04 -0600 Subject: [PATCH 62/74] Automatic changelog generation for PR #11103 [ci skip] --- html/changelogs/AutoChangeLog-pr-11103.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11103.yml diff --git a/html/changelogs/AutoChangeLog-pr-11103.yml b/html/changelogs/AutoChangeLog-pr-11103.yml new file mode 100644 index 0000000000..f38e23f76e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11103.yml @@ -0,0 +1,5 @@ +author: "PersianXerxes" +delete-after: True +changes: + - rscadd: "Better clarified the comment explaining the contraband tag." + - tweak: "Cargo nuclear defusal kits now require an emag'd drop pod console to be purchased." From 9a51caf834309dfcc62b4b803af8cb2fa0bc210c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 19:10:28 -0600 Subject: [PATCH 63/74] Automatic changelog generation for PR #10980 [ci skip] --- html/changelogs/AutoChangeLog-pr-10980.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10980.yml diff --git a/html/changelogs/AutoChangeLog-pr-10980.yml b/html/changelogs/AutoChangeLog-pr-10980.yml new file mode 100644 index 0000000000..3701aea6e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10980.yml @@ -0,0 +1,7 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "Medical locked crates" + - balance: "Russian gear crates have less gear in some cases but all will cost more" + - bugfix: "Medical locked crates that were not locked" + - spellcheck: "Crates that were out of date are corrected" From fef9cc83ac05c32d46c25dc108c61e1af18fefd8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Feb 2020 19:12:44 -0600 Subject: [PATCH 64/74] Automatic changelog generation for PR #11138 [ci skip] --- html/changelogs/AutoChangeLog-pr-11138.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11138.yml diff --git a/html/changelogs/AutoChangeLog-pr-11138.yml b/html/changelogs/AutoChangeLog-pr-11138.yml new file mode 100644 index 0000000000..fd0e53bb73 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11138.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - tweak: "the game's built in autoclicker aka CanMobAutoclick no longer triggers client/Click()'s anti clickspam guard." From 6aec971b4e6f834b7f28988682b3d8e2178042bd Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 18 Feb 2020 21:41:00 -0800 Subject: [PATCH 65/74] haha i'm dumb --- code/controllers/subsystem/ticker.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index fe994facdc..9d87568de6 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -480,12 +480,16 @@ SUBSYSTEM_DEF(ticker) switch(vote_type) if("PLURALITY") SSvote.initiate_vote("map","server",hideresults=TRUE) + return if("APPROVAL") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = APPROVAL_VOTING) + return if("IRV") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = INSTANT_RUNOFF_VOTING) + return if("SCORE") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = MAJORITY_JUDGEMENT_VOTING) + return // fallback SSvote.initiate_vote("map","server",hideresults=TRUE) From dd3520896a5cd82ba1297020aec55cdef189dace Mon Sep 17 00:00:00 2001 From: Putnam Date: Wed, 19 Feb 2020 11:45:37 -0800 Subject: [PATCH 66/74] wow there's an else --- code/controllers/subsystem/ticker.dm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 9d87568de6..606aca2d3a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -480,18 +480,15 @@ SUBSYSTEM_DEF(ticker) switch(vote_type) if("PLURALITY") SSvote.initiate_vote("map","server",hideresults=TRUE) - return if("APPROVAL") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = APPROVAL_VOTING) - return if("IRV") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = INSTANT_RUNOFF_VOTING) - return if("SCORE") SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = MAJORITY_JUDGEMENT_VOTING) - return + else + SSvote.initiate_vote("map","server",hideresults=TRUE) // fallback - SSvote.initiate_vote("map","server",hideresults=TRUE) /datum/controller/subsystem/ticker/proc/HasRoundStarted() return current_state >= GAME_STATE_PLAYING From 8be22278e478ab16f397662266794b06b17d2587 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 19:59:13 -0600 Subject: [PATCH 67/74] Automatic changelog generation for PR #11145 [ci skip] --- html/changelogs/AutoChangeLog-pr-11145.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11145.yml diff --git a/html/changelogs/AutoChangeLog-pr-11145.yml b/html/changelogs/AutoChangeLog-pr-11145.yml new file mode 100644 index 0000000000..2ad26003fb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11145.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "pAIs are yet again unable to perform certain silicon interactions with machineries yet again." From a7cf5b63eef2a8def61cfb91750fd06d1e18f358 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 19:59:31 -0600 Subject: [PATCH 68/74] Automatic changelog generation for PR #11147 [ci skip] --- html/changelogs/AutoChangeLog-pr-11147.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11147.yml diff --git a/html/changelogs/AutoChangeLog-pr-11147.yml b/html/changelogs/AutoChangeLog-pr-11147.yml new file mode 100644 index 0000000000..0978b2b184 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11147.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - tweak: "Supermatter sabotage objective no longer shows up with no supermatter" From 548baf14b610723cad5e86ce56cf91ee1dde3cbd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:00:05 -0600 Subject: [PATCH 69/74] Automatic changelog generation for PR #11133 [ci skip] --- html/changelogs/AutoChangeLog-pr-11133.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11133.yml diff --git a/html/changelogs/AutoChangeLog-pr-11133.yml b/html/changelogs/AutoChangeLog-pr-11133.yml new file mode 100644 index 0000000000..8cedc300c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11133.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Nerfed the fermenting barrel export industry." + - tweak: "Reagent dispensers selling price no longer takes in account the reagents volume. It's already handled by reagents export." From 36579229905a98be889da9053b3678219f636831 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:00:26 -0600 Subject: [PATCH 70/74] Automatic changelog generation for PR #10904 [ci skip] --- html/changelogs/AutoChangeLog-pr-10904.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10904.yml diff --git a/html/changelogs/AutoChangeLog-pr-10904.yml b/html/changelogs/AutoChangeLog-pr-10904.yml new file mode 100644 index 0000000000..112c0bc593 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10904.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "The ships often crashed by Free Golems on Lavaland now have GPSes. They're off, by default, but an awakening Golem could easily turn one on." From 7c3308d59384c12a4fed013d482d364be5ade87f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:00:35 -0600 Subject: [PATCH 71/74] Automatic changelog generation for PR #10910 [ci skip] --- html/changelogs/AutoChangeLog-pr-10910.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10910.yml diff --git a/html/changelogs/AutoChangeLog-pr-10910.yml b/html/changelogs/AutoChangeLog-pr-10910.yml new file mode 100644 index 0000000000..2b11650c80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10910.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a little issue with sleeper UI and blood types." From 36f9edbfefc3ba0f3f7a6a714cc27abb7776014c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:00:55 -0600 Subject: [PATCH 72/74] Automatic changelog generation for PR #10953 [ci skip] --- html/changelogs/AutoChangeLog-pr-10953.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10953.yml diff --git a/html/changelogs/AutoChangeLog-pr-10953.yml b/html/changelogs/AutoChangeLog-pr-10953.yml new file mode 100644 index 0000000000..67c2c915ad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10953.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Missing words replacement file for the gondola mask." From e47d7c0ddfe2c84beb60edebfffb4c0b61f5ecba Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:03:37 -0600 Subject: [PATCH 73/74] Automatic changelog generation for PR #11113 [ci skip] --- html/changelogs/AutoChangeLog-pr-11113.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11113.yml diff --git a/html/changelogs/AutoChangeLog-pr-11113.yml b/html/changelogs/AutoChangeLog-pr-11113.yml new file mode 100644 index 0000000000..b3c0bb34a8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11113.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - rscadd: "Ammonia and saltpetre can now be made at the biogenerator." From 7151f3d2ea11c3a7481a1d3d8f0d0602ef0fcfed Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 19 Feb 2020 20:05:52 -0600 Subject: [PATCH 74/74] Automatic changelog generation for PR #11098 [ci skip] --- html/changelogs/AutoChangeLog-pr-11098.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11098.yml diff --git a/html/changelogs/AutoChangeLog-pr-11098.yml b/html/changelogs/AutoChangeLog-pr-11098.yml new file mode 100644 index 0000000000..5ca7b7dd1e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11098.yml @@ -0,0 +1,4 @@ +author: "Raiq & Linzolle" +delete-after: True +changes: + - rscadd: "Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting, silk string used in bow crafting, harden arrows - Ash walkers crafting, ash walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers for ash walkers as well, just to hold some arrows well out on the hunt!"