From 7ef8b36324b6bedcdf2dd22b9b10a3a074029009 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Tue, 4 Feb 2020 18:45:31 -0600 Subject: [PATCH 01/36] 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/36] 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/36] 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 bbe1ddc0cfadc126997774c58b819c69b15c7769 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Fri, 14 Feb 2020 23:04:02 -0500 Subject: [PATCH 04/36] 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 05/36] 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 06/36] 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 07/36] 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 aedd8b87f663a20d5b05f9389aca9c9e6a0f4ca4 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Sun, 16 Feb 2020 02:33:14 -0600 Subject: [PATCH 08/36] 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 09/36] 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 10/36] 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 11/36] 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 12/36] 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 13/36] 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 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 14/36] 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 3ecd1b75d444b6898c64a30d8828628eecf7101f Mon Sep 17 00:00:00 2001 From: Cameron! Date: Sun, 16 Feb 2020 15:32:05 -0800 Subject: [PATCH 15/36] 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 a4a5efbc11ff2bd1b548cf3bb7bc363024414d87 Mon Sep 17 00:00:00 2001 From: Cameron! Date: Sun, 16 Feb 2020 15:48:22 -0800 Subject: [PATCH 16/36] 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 17/36] 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 18/36] 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 19/36] 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 20/36] 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 21/36] 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 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 22/36] 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 a9f103fb34e4bde51b51b18e3ecf164b45ad2867 Mon Sep 17 00:00:00 2001 From: Cameron! Date: Mon, 17 Feb 2020 15:28:10 -0800 Subject: [PATCH 23/36] 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 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 25/36] 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 a9edff6e561dbd726fd3c8b7db367078a76766c1 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 18 Feb 2020 11:51:03 -0800 Subject: [PATCH 26/36] 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 6aec971b4e6f834b7f28988682b3d8e2178042bd Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 18 Feb 2020 21:41:00 -0800 Subject: [PATCH 27/36] 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 28/36] 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 29/36] 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 30/36] 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 31/36] 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 32/36] 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 33/36] 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 34/36] 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 35/36] 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 36/36] 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!"