From 96b8045defa3771caa4bb6efe3cc5bec75b295a9 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 1 Oct 2024 01:08:21 +0000 Subject: [PATCH 1/9] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3366.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3378.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3445.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3455.yml | 5 ----- html/changelogs/archive/2024-10.yml | 10 ++++++++++ 5 files changed, 10 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3366.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3378.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3445.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3455.yml create mode 100644 html/changelogs/archive/2024-10.yml diff --git a/html/changelogs/AutoChangeLog-pr-3366.yml b/html/changelogs/AutoChangeLog-pr-3366.yml deleted file mode 100644 index f1b353bf3387..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3366.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Erika Fox -changes: - - {rscadd: Anti-Radiation Foam is now available at the outpost} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3378.yml b/html/changelogs/AutoChangeLog-pr-3378.yml deleted file mode 100644 index 7ed5af71b205..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3378.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Erika Fox -changes: - - {code_imp: 'Fireaxe cabinets have been repathed, and now function as a more general - cabinet object. please report any inconsistencies with behavior'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3445.yml b/html/changelogs/AutoChangeLog-pr-3445.yml deleted file mode 100644 index 3199030bea7f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3445.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: SomeguyManperson -changes: - - {bugfix: hallucinations can no longer be permanent unless treated} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3455.yml b/html/changelogs/AutoChangeLog-pr-3455.yml deleted file mode 100644 index 0351ddf280b1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3455.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Sadhorizon -changes: - - {tweak: You can now put knives in secbelts and the subtypes of secbelts.} - - {bugfix: You can now fit all knives in mining webbings.} -delete-after: true diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml new file mode 100644 index 000000000000..546d4d7ab402 --- /dev/null +++ b/html/changelogs/archive/2024-10.yml @@ -0,0 +1,10 @@ +2024-10-01: + Erika Fox: + - rscadd: Anti-Radiation Foam is now available at the outpost + - code_imp: Fireaxe cabinets have been repathed, and now function as a more general + cabinet object. please report any inconsistencies with behavior + Sadhorizon: + - tweak: You can now put knives in secbelts and the subtypes of secbelts. + - bugfix: You can now fit all knives in mining webbings. + SomeguyManperson: + - bugfix: hallucinations can no longer be permanent unless treated From 180c9b216ab142495afd77f7e9b17390602fd33b Mon Sep 17 00:00:00 2001 From: tmtmtl30 <53132901+tmtmtl30@users.noreply.github.com> Date: Tue, 1 Oct 2024 01:10:36 -0700 Subject: [PATCH 2/9] a bedtime update for beddy-bye boys (Bunk beds!) (#3345) ## About The Pull Request Adds bunk beds, in the form of two objects, a "bottom bunk" structure and a "top bunk" structure, each with appropriate layering and sprite-shifting, including for bedsheets. Sprites are courtesy of @thgvr . They can be crafted with metal or placed by mappers as a single object using a spawner effect. Additionally, beds, double beds, and bunk beds have had their alternate-direction behavior fixed. These beds have a flipped set of sprites on the NORTH and EAST directions, but neither bedsheets nor buckled players correctly respected the alternate sprites. This has been fixed. oh also i fixed a random rendering error with tank storage units that imaginos notified me of. they weren't showing the final 5-tank overlay state correctly. they do now ![image](https://github.com/user-attachments/assets/bbebeb5e-27db-4703-a7db-c639b8ec1502) ## Why It's Good For The Game 1. bunkbeds give mappers another tool to make ships and ruins feel appropriately-decorated 2. mappers being effectively locked to a single bed rotation is dumb currently, there's one bug: when crafting a bunk bed, you need to make the bottom one first. if you make the top one first, you won't be able to place the bottom bunk there without just deconstructing the top bunk. i know exactly what causes this, it's mostly just annoying and i've got a few ideas for (slightly hacky) fixes. but i'm also lazy ## Changelog :cl: tmtmtl30, Thgvr add: Added bunkbeds, which can now be crafted with metal or placed by mappers. fix: Beds facing alternate directions now correctly support people buckling to them and bedsheets being placed on top of them. /:cl: --- code/datums/elements/bed_tucking.dm | 23 +++- code/game/objects/items/plushes.dm | 2 +- .../stacks/sheets/recipes/recipes_metal.dm | 8 +- code/game/objects/items/stacks/stack.dm | 2 +- .../structures/beds_chairs/alien_nest.dm | 1 + .../objects/structures/beds_chairs/bed.dm | 130 +++++++++++++++++- code/game/objects/structures/bedsheet_bin.dm | 2 +- .../game/objects/structures/tank_dispenser.dm | 6 +- .../abductor/equipment/abduction_gear.dm | 1 + .../nukeop/equipment/nuclearbomb.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- icons/effects/effects.dmi | Bin 901728 -> 903017 bytes icons/obj/objects.dmi | Bin 102051 -> 103649 bytes 13 files changed, 163 insertions(+), 16 deletions(-) diff --git a/code/datums/elements/bed_tucking.dm b/code/datums/elements/bed_tucking.dm index c094e5a5b108..e505e6efdb5a 100644 --- a/code/datums/elements/bed_tucking.dm +++ b/code/datums/elements/bed_tucking.dm @@ -8,8 +8,13 @@ var/y_offset = 0 /// our rotation degree - how much the item turns when in bed (+degrees turns it more parallel) var/rotation_degree = 0 + /// Whether the item changes its dir to match the desired lying direction of the bed that it's tucked into. + var/change_dir = FALSE + /// Whether the item changes its layer to the layer suggested by the bed for tucked-in item. + /// When the item is untucked, it is returned to its initial() layer. + var/change_layer = FALSE -/datum/element/bed_tuckable/Attach(obj/target, x = 0, y = 0, rotation = 0) +/datum/element/bed_tuckable/Attach(obj/target, x = 0, y = 0, rotation = 0, _change_dir = FALSE, _change_layer = FALSE) . = ..() if(!isitem(target)) return ELEMENT_INCOMPATIBLE @@ -17,6 +22,8 @@ x_offset = x y_offset = y rotation_degree = rotation + change_dir = _change_dir + change_layer = _change_layer RegisterSignal(target, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(tuck_into_bed)) /datum/element/bed_tuckable/Detach(obj/target) @@ -40,11 +47,20 @@ return to_chat(tucker, "You lay [tucked] out on [target_bed].") - tucked.pixel_x = x_offset - tucked.pixel_y = y_offset + tucked.pixel_x = x_offset + target_bed.tucked_x_shift + tucked.pixel_y = y_offset + target_bed.tucked_y_shift if(rotation_degree) tucked.transform = turn(tucked.transform, rotation_degree) RegisterSignal(tucked, COMSIG_ITEM_PICKUP, PROC_REF(untuck)) + // the buckle_lying value on the bed controls the direction that mobs lay down in when they're buckled into bed. + // some items (bedsheets) have different states to reflect those directions. + if(change_dir) + if(target_bed.buckle_lying == 270) + tucked.setDir(NORTH) + else + tucked.setDir(SOUTH) + if(target_bed.suggested_tuck_layer != null) + tucked.layer = target_bed.suggested_tuck_layer return COMPONENT_NO_AFTERATTACK @@ -57,4 +73,5 @@ SIGNAL_HANDLER tucked.transform = turn(tucked.transform, -rotation_degree) + tucked.layer = initial(tucked.layer) UnregisterSignal(tucked, COMSIG_ITEM_PICKUP) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 63e4ffc5e6c3..4b16ee60942d 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -38,7 +38,7 @@ . = ..() if(should_squeak) AddComponent(/datum/component/squeak, squeak_override) - AddElement(/datum/element/bed_tuckable, 6, -5, 90) + AddElement(/datum/element/bed_tuckable, 6, -5, 90, FALSE, FALSE) //have we decided if Pinocchio goes in the blue or pink aisle yet? if(gender == NEUTER) diff --git a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm index 6860f34be5c7..9819a941e5f8 100644 --- a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm +++ b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm @@ -1,9 +1,13 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ null, \ + new/datum/stack_recipe_list("beds", list( \ + new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bottom bunk", /obj/structure/bed/bunk, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("top bunk", /obj/structure/bed/bunk/top, 2, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ new/datum/stack_recipe_list("office chairs", list( \ new/datum/stack_recipe("gray office chair", /obj/structure/chair/office, 5, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("light office chair", /obj/structure/chair/office/light, 5, one_per_turf = TRUE, on_floor = TRUE), \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5653b641c99d..f34836de156f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -305,7 +305,7 @@ if(!window_structure.fulltile) continue if(object.density) - to_chat(usr, "There is \a [object.name] here. You cant make \a [recipe.title] here!") + to_chat(usr, "There is \a [object.name] here. You can't make \a [recipe.title] here!") return FALSE if(recipe.placement_checks) switch(recipe.placement_checks) diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index 4f132b11af99..ecc050aa8f77 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -14,6 +14,7 @@ buildstacktype = null flags_1 = NODECONSTRUCT_1 bolts = FALSE + swap_lying_with_dir = FALSE var/static/mutable_appearance/nest_overlay = mutable_appearance('icons/mob/alien.dmi', "nestoverlay", LYING_MOB_LAYER) /obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 6c5f46e94a3b..ec7132a67cdd 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -18,10 +18,44 @@ resistance_flags = FLAMMABLE max_integrity = 100 integrity_failure = 0.35 + var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 2 var/bolts = TRUE + /// Whether the bed changes its buckle_lying direction + /// (and accordingly the direction in which mobs lie down) based on its current direction. + var/swap_lying_with_dir = TRUE + /// If non-null, some items (bedsheets) which can be tucked into beds + /// will set their layer to this value when they are tucked in, until they are picked up again. + var/suggested_tuck_layer = null + /// The amount added to the pixel_x value of a tucked-in item. + var/tucked_x_shift = 0 + /// The amount added to the pixel_y value of a tucked-in item. + var/tucked_y_shift = 0 + +/obj/structure/bed/Initialize(...) + . = ..() + if(swap_lying_with_dir) + buckle_lying = get_buckle_angle_from_dir(dir) + +/obj/structure/bed/setDir(newdir) + . = ..() + if(swap_lying_with_dir) + buckle_lying = get_buckle_angle_from_dir(newdir) + // shuttle rotation etc... ugh. + if(has_buckled_mobs()) + for(var/mob/living/M as anything in buckled_mobs) + // this proc already checks to see if the new angle is different from the old one, + // so this shouldn't cause any duplicate work or unnecessary animations. + M.set_lying_angle(buckle_lying) + +/obj/structure/bed/proc/get_buckle_angle_from_dir(some_dir) + if(some_dir & (SOUTH|WEST)) + return 90 + else + return 270 + /obj/structure/bed/examine(mob/user) . = ..() if(bolts) @@ -52,6 +86,9 @@ icon_state = "down" anchored = FALSE resistance_flags = NONE + + // no dir states + swap_lying_with_dir = FALSE var/foldabletype = /obj/item/roller /obj/structure/bed/roller/attackby(obj/item/W, mob/user, params) @@ -161,8 +198,9 @@ else to_chat(user, "The dock is empty!") -//Dog bed - +/* + * "Dog" beds + */ /obj/structure/bed/dogbed name = "dog bed" icon_state = "dogbed" @@ -170,6 +208,9 @@ anchored = TRUE buildstacktype = /obj/item/stack/sheet/mineral/wood buildstackamount = 10 + + // no dir states + swap_lying_with_dir = FALSE var/mob/living/owner = null /obj/structure/bed/dogbed/ian @@ -206,7 +247,9 @@ . = ..() update_owner(M) -//Double Beds, for luxurious sleeping, i.e. the captain and maybe heads - no quirky refrence here. Move along +/* + * Double beds, for luxurious sleeping, i.e. the captain and maybe heads - no quirky refrence here. Move along + */ /obj/structure/bed/double name = "double bed" desc = "A luxurious double bed, for those too important for small dreams." @@ -232,3 +275,84 @@ name = "double dirty mattress" desc = "An old grubby king sized mattress. You really try to not think about what could be the cause of those stains." icon_state = "dirty_mattress_double" + +/* + * Bunk beds. Comes with an /obj/effect spawner that lets mappers place them down easily. + * The base type is the bottom bunk, with the top bunk as a derived type. + * Like other beds, the pillow may be on the left or right depending on the direction. + */ +/obj/structure/bed/bunk + name = "bottom bunk" + desc = "The oft-maligned bottom bunk of a compact bunk bed. Heavy sleepers only." + icon_state = "bottom_bunk" + // just below the top bunk's main layer + suggested_tuck_layer = LYING_MOB_LAYER + 0.005 + /// The amount added to the pixel_y value of mobs lying down, relative to the default shift for that position. + var/mob_y_shift = -1 + // i think it looks best without shifting the bedsheet down, even though the mob gets shifted down some + +// alter their pixel offset when they lie down... +/obj/structure/bed/bunk/post_buckle_mob(mob/living/M) + // we shift the lying mob a little so that they line up better with the pillow, but the shift direction changes + // depending on the direction they lie down in, controlled by buckle_lying + // (which is in turn based on our direction, but we don't need to worry about that directly) + var/horz_offset + if(buckle_lying == 90) + horz_offset = 2 + else + horz_offset = -2 + + M.pixel_x = M.get_standard_pixel_x_offset(M.body_position == LYING_DOWN) + horz_offset + M.pixel_y = M.get_standard_pixel_y_offset(M.body_position == LYING_DOWN) + mob_y_shift + +// ...and reset it when they get off +/obj/structure/bed/bunk/post_unbuckle_mob(mob/living/M) + M.pixel_x = M.get_standard_pixel_x_offset(M.body_position == LYING_DOWN) + M.pixel_y = M.get_standard_pixel_y_offset(M.body_position == LYING_DOWN) + + +/obj/structure/bed/bunk/top + name = "top bunk" + desc = "The top bunk of a compact bunk bed. Few other sleeping accommodations can match its luxury." + icon_state = "top_bunk" + + // higher layer, so that it renders on top of people on the bottom bunk + layer = LYING_MOB_LAYER + 0.01 + mob_y_shift = 13 + + // above the lying mob, but below the ladder + suggested_tuck_layer = LYING_MOB_LAYER + 0.025 + tucked_y_shift = 14 + +/obj/structure/bed/bunk/top/Initialize(...) + . = ..() + // the ladder needs to render above the mob + overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "top_bunk_ladder", layer = LYING_MOB_LAYER + 0.03) + // and the posts need to render below the bottom bunk + overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "top_bunk_posts", layer = TABLE_LAYER) + +/obj/structure/bed/bunk/top/post_buckle_mob(mob/living/M) + . = ..() + M.layer = LYING_MOB_LAYER + 0.02 + +/obj/structure/bed/bunk/top/post_unbuckle_mob(mob/living/M) + . = ..() + // honestly not really confident in this, but since standing up takes a do_after + // (and thus happens afterwards, resetting the layer), it should be fine... + // i'm more worried about altering layers via + and -, since if you figured out ways + // of stacking those you could layer yourself under, like, the floor. + M.layer = LYING_MOB_LAYER + + +// the spawner +/obj/effect/spawner/bunk_bed + name = "bunk bed spawner" + icon_state = "bunk_bed_spawner" + +/obj/effect/spawner/bunk_bed/Initialize(...) + . = ..() + var/obj/structure/bed/bunk/bottom_bunk = new(loc) + var/obj/structure/bed/bunk/top/top_bunk = new(loc) + + bottom_bunk.setDir(dir) + top_bunk.setDir(dir) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 1a89195c646a..31e9d9a0b8fc 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -28,7 +28,7 @@ LINEN BINS /obj/item/bedsheet/Initialize(mapload) . = ..() - AddElement(/datum/element/bed_tuckable, 0, 0, 0) + AddElement(/datum/element/bed_tuckable, 0, 0, 0, TRUE, TRUE) /obj/item/bedsheet/attack_self(mob/user) if(!user.CanReach(src)) //No telekenetic grabbing. diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 1be5f857e155..c0604dd5e09b 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -28,10 +28,10 @@ /obj/structure/tank_dispenser/update_overlays() . = ..() switch(oxygentanks) - if(1 to 3) + if(1 to 4) . += "oxygen-[oxygentanks]" - if(4 to TANK_DISPENSER_CAPACITY) - . += "oxygen-4" + if(5 to TANK_DISPENSER_CAPACITY) + . += "oxygen-5" switch(plasmatanks) if(1 to 4) . += "plasma-[plasmatanks]" diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 5bce8014babe..abc69300c9c6 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -761,6 +761,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon = 'icons/obj/abductor.dmi' buildstacktype = /obj/item/stack/sheet/mineral/abductor icon_state = "bed" + swap_lying_with_dir = FALSE /obj/structure/table_frame/abductor name = "alien table frame" diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 9c65e50130cf..c073a7c3521c 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -608,7 +608,7 @@ This is here to make the tiles around the station mininuke change when it's arme /obj/item/disk/nuclear/Initialize() . = ..() - AddElement(/datum/element/bed_tuckable, 6, -6, 0) + AddElement(/datum/element/bed_tuckable, 6, -6, 0, FALSE, FALSE) if(!fake) SSpoints_of_interest.make_point_of_interest(src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3ed2b86816ac..9a19e198a555 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -386,7 +386,7 @@ /mob/living/carbon/get_standard_pixel_y_offset(lying = 0) if(lying) - return -6 + return PIXEL_Y_OFFSET_LYING else return initial(pixel_y) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 0aa256c631e428148e97de7cb47668ff901b7abc..bb63eb2b7f0ed5f486bf924e7fc009cfb034276b 100644 GIT binary patch delta 15274 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 F{a^HXrM>_F delta 13975 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 A*8l(j diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 1b156b9294f9f7f3339ceff03486df17204f65c5..8479c100f1b0a25f9ca2e2cb61b391e86f03899e 100644 GIT binary patch delta 11309 zcmYj%bzD?Y*Y1I#8&Nt1Lq!EsIX z`+fJ``D5n%=InjeUa|Ljp0!R+I@Z!RtXK-L1qTZN00Gt-R{%io^3i(jCi~9S+{N0- z&Dzlc0KC%D6Z;)zxCy!k&tBo|3ecsLWQ(ryR#5s_nMh^YPm`Oe(02;=&+LG__n|5Zt8X!-K)0e)>?Rq-SZ6>MkPds9RW&u%f-!=^S_jKbCg z_Q04Reyq54OsvWnb7l4_vbopvm9Qv-i|Yd(HJq3(^3g&1hJ?K2McszT_2K=b@b8_M zQv}W5zj!eT<-9DS*m*(b_v{?_h+htVvE(?RlHU89v$+=p?^(NqaXCsd-y}x4<__M7 zH8gVGcr;C!o4BkJ#pINMM5=O@J*5M*noQ@|;RNx9muLhDF1~&#=(wp>tZaiAiFx1D zhg;sO6xBl3De3zi>Vs!uJt@Kgf%qrX1Oz<-H4&KA4>#c&52nN4 zVri;d0BisI!^cG0dY)Y`a!*js3G~#^wbVcr8%r&FErPTAZ8%LQ0Poq~)qoZM4gB(*o%brEHc0~s| z*>ZQ{Dk(1;Dl*x7oLj403tFqpu{5 zLmEnY*rNvJ!9^S_FtppWZbdXGl$`luFh-10!3?;a8NK^(iFwSbkp6^;9&fF&xrN66 z^xi52X$QdE&1YJ{MtUQ zv3@qxkdLL2(J<`WTy9{-@;MnP{_yYJci)A2Q#t>?dLDspAHdEPyZFE2uWW-Q+nuv0 zf&6lfQEP5>O9t`>-xeqaRpR9|_1O1FbUfhh?Y9w3>W;AnE`QU<8_sgLuB;-;*0@^o zRQlUKjGHuE`2I>O_3GSjh3%u`_=mqzxh>Gckin_I!8$O)7$v%;KSW<+m&zeM^lu;6 zIX&Qf%V0K7Yyh%elf2i2{~QdsLq#xWFR7aSSoJmpeKS;)lotojkq6{x{)(^6E*1rn zmGZ%UR#xA0fV5=D^+ZA>Jk$uqMD+fTTj$IZ@t?1K3M0JQ#ngxzPRSiOxhTX+^vW%= z*6%SOxzbz%Tu|;icID%7d&)~^kf(>*8Q-BdP zM%#8AQ!D~}F)R(ocsa*3d%8=&vQ{{lPgK(1@@?hjw)vCxhLemE+Vt~!=Yt;;ugCKJ zIqVYH6n>=tc)15u!)pnN{jHga?*86a)Vh#n2OkUSNmwl`MEwn#YOBqx=6cf7nc&86 z0*{#hJ+z-vXE%~%QAK1OO<;M>9aHi9-6&~d1vI1%2|72bd4R{daAF{(;gSA#N!(_y z!}Hf#6`EGqJdTaNw5Nm&D%%{6ufQ!+g0C4LO@lIEH&?GDqObd17gmUWRyEU(JWLic z@ki6Ry}{(D0r5xvB6^~&ghF%|jxlJ_F&pGT&A)VoR5ksx0|j zoN(kpL$OJ7^i;W}LdV5cUUP2C2A2BD(_nS0)8f=qbT7c-5Md`H5m0qA!MFXJvi za6w!=WDK_#Hn_kFB-sqMCTBe2IMtv)68pSgK$ldHIPA`rrZJw;{zcP@(hWe(XQ*q#oT5pvO8X1 z`fFX{?EGBAmUsNfv_`+I{}lsj1_equdc{Zwds4dbLgs_xhHAR6lO@bGVLIcE0uvBLW9 zYN+O4)(?$htSi;tu^_hN%^%%>LT|Gm($s_T)r_oWzrgnIO;q_7B$eO*EdGt=Wtqjk zC!0!@bhx<0{&G?eA&7pnZ-zi1mO~g9#C=v)R^Ft;(jwtg!SdOHBtcuRM>vizZ+=>K zbS*A_hTn5kccEt$!Ta0x1;6bVr%gu6z14zpl}g7H zO=s`Wi`tJdI3+Gk`5ig0^e~?eu+u-%ZC_|GWFbXjFss9|o&~+&^Opo*iVZDK?OvwC z?mODY4x+_xfV|Fs^`?G%FLG=2kQI?I<9Jb&h7&UJ1U=L6jXeit7P8dJmYDbPbCp7Q zI%QJ-873^}?pMUdiQ>G3pBaMsfEs?d{USgpdX-*JQ6^LoJG47C+Zjhoj6#theMFN@ z?_&9{hy3gXS_?(f0cK(T!Dg0*G!3cFx6W{w7GWL&#=9s0+-3umqoc7F+&D6ymzkO* zPfmR>h&AmN!JgBxcfFW0*=NQt$K~D&GHusN=oIPYPh*+IM0(i-P6zbu%(=%@r$Jlo zno_J*-oR4m%16A7UfCP<%NI6=OdCJG`d)(TUe;VA$5TT4?9zDVl!yGmbVK{!_7N^~ zOATb}2W@uecEZaPeztb#uoU*aA`rB%F*%1~JV3gddVgl$;ogqpyV0RH6bj;Fl~Lhh8kMzFCxTkt6LivsHO@gi*r?-(lk2 zvnf%WO;;BJo)G0BUc@Nc;S=sS={>ag2eCkDUF7-WphNUAM$*a7{i2#?;6NBrjKt;FLnjv%zfavZGKVj}HSY?i^a+iSU- z<7)aBe@5N{XeFe_)!ylSXzG~l;6-B(TXNeu)=ws&;Izb6DN&nHU?xUIM|J zM{IcVnhk*b4Z)NSlQBz9=Zg7IV2BL5m!mv5$VH|wxYgGuxnX7Fx8BNSf5H~hPcOB8_=kKD$D1uw^RrGOZ#MS5enw5O zbmUj8#g`blr{_fUUb-#?r%?XN-h6S#6j?#i=WAVswtK}+XvA)WA7Z>8fz{)IbA!rW z9R5YoIty4+vUum>fL+8mZLqf&_rBExM^2hf6iYb!_`)%k(S8xPkuyhs%zt8>E+6F0 z)i0Q-cPAdE?i}D5{jw?kv*Gdin&d7>m1m1AsgVaF>C@dv}+35q*B z!M(|Qr6Q95rgX6M!QO^ou8VV1Mp}h=2Smme{P=O7V74oYhPf#>WlO^ZL~UgFM&t9( zs?^^`ZlUo75U7QV(gFnq1(JGtRE33wPMbqnrJmBN$gR;omZ}=bXm2rcfBuZ0sdHzC z?wVH5yeXf8zF!y^;4|JVw0wb&63dxzoG;1@@=)2Qs%w5Ylb!d%k|X($uYc9 zB=yzOQG?Y4k_R<}pcG_2)7-a)n zUs(<5fihP^@`&SF6AhUf|9*nnG!p*GU_S`vnB4Wy($ZQSD48eaL3J~LX@$^i zVzC22+i&_bM$WJ6gqel--%Pra!q0{V20G}TgYUx;WFOs8ivMJ4YiYGORJVhs+%2Zu znLmCIgb~r*Yl;YS<-vfA!+%OOnxsV4Qu&S*0FFdPupaB2GUHPDpkFvHD%Z?8XlZM| z&m%LtQk9s!GS4^*kDh1AeaD{o$wS0yYxIYZ0Y*Cx&X$+|?J;uYu$!U#aHYGq<)404B|@N=oJgD35I3*d^?BEA3WOo4>EYkK_C41kv;ZjQeU<7}ToFcJN zJ(SKZGAs93Tt4b#*XKN-ay@RO-t|Z>zqF^BOE>bm-mMm4U2)w=_k7r%vUN-VxK#@< zGqY0^5n9F?H0Td$v6DS1Z}vfLCvmx~r#)=N86Lt0Qg#_eXiYCuz=uG?hD<2>uS!Ld zovXMYJ4vj7pFerUZZB4VfP{qmTDrRUmpwuU@$vVxbaY$>6d2ahV&G2^-&IsqSJTuj zhZc^Kp^&R?dg4vs&d^90%&Kq^p`jSm8V@sLwDKv$%g zQhJZZoPuL}f|$G!(&IYpEl@3C62aC~PHNk$Tw3)5Ljz&STqR*b_4~W@!|_vVO>J#V zprE+8%XAl)U_66lkBR^bavf9S{T6ax8b!80tOrJ2I@Zi!pcsi`Sw zsR~6+HKUOls;w720KoX9Gla=AOvB%|pNEp~h+B};PbcCqE-=8m!yA@VP6JtP(l)wP z$ERE)BlrF%j^^_P$^HC1jU1Fr2FwsN6sA6Jjld!T$QMKJ7KB6e=8T~=3;O) zp2R!Zm!4sCi4f_9-hVx6nN#kGV{~?0P=>^|tS1FbEAXb<6RFEhv&diVJWjCrLM*M`gO9<~(DZ0n@VAPAgHYOjNMxt8_X# zLxp@>>1L+KC}_M0(DO6JwEuU?&#qWExXMw#boZ#c`_P8|dfMB4nP?lg*(yr+T~4us z%}<{SMWK@uTHlo)u0AMFG?E3GmdROR|}Oi zer@83?}D#u>eW%7*$Iv6TU!g)Pz|g<#+y~gUM7o|7L<(}$sfM;r)Yhvr&ju!qx5xy ziu$jH32e4A+=(7b7vg{e!^AOBa$1gxQ_<%}PS4XB<%KEzj%ax@U&Rd!sGkrKFhdqR zi1J-(H0g{-@PWJ=EGuTNF|pOfb8E+ZQv)$ud?=@#7`Eg^kLQcd?&yG6v3g_-VY`kG zAHg^}6SC$Qv%ysz<@dYYG547Doa|M9%8uGmyye()7Z($U%#L>guklUU8>v>z+vA_t zr4vQ6JwA_$`;$L+>n|>826Wt~_{Mcku|Ota+5h{9jSQ^3Qto>79nLfTiKm5ss>azo zO$^6c{t^XkT={KT%Ri#rk@JCXfMhqz?td;teff&0N$+)HVkF^GvR5D2 zbpvtS)2x4E579ih;-6V4K}%EJC<;T%EGl^$P?;Tu_LXn}H}Jb{ZO9jIq0F*EJe}_k zqHw1u?Q2&@w{G5bYY2;rN<#t9oX54-L$fpReSWZZ$C%)>o^`@tMkrz9!BDkJeQjdx9y8(IqYeNynkzPtwBdM(KFan0DTuU=ASbzcl&fWiy7{re_S4&@;~&p+mC!_@ezg7L-k9 zna({#>@e6@2Hg+eFbA>uYFtqX?7ZzBWc4J(o*`7o8DL!&vALm-#{k z^RTuJXekQ|BzBCbtwl6m%F*=ouk4EPr$G!t{H9soP2%Z&%o!4YG;5#2k?R!8CvF0n zbFV|rMlBy43keyuw&jh8M;y6;iby5$d0b#OfAH!F%;_+lIoUq-yN}5?+KLl2O?$AP z-jrLx?=y4|nB4s+!B&(pu@eg(lkoBK@d_a5a{F5U9e;MSbalFAkz|{5OnKyqYf+m3 z@*0MMU!wBTIfclv9xG&eUW}%ROyHes-@S`Z3QmLrg}eJg)FGX3mu*0sOYC}a?*dz^ z7KQ!hNR6VI>}2FDJLgmBt`J{C{g>$Zy$?o)WPj|i^Xy;WgIG;1P|&AtR!GGE&3 z?-=#$MmMNJc%F&aZOsVz$sIas8AdxLN&Q>Cbyc$o?Be&w5@&MP=Rl^@B`p5kEwHcz zJK(|Tl#{DL>~R4AXsN-~bhwKxvz?G5g+v&a`>SYPF*F_jj3v@WLYR|ssePYhvs;Z2 zxX5bW$;PA)SXvG=E!=lp6)F-_?ySuwfkLkO*yII#V^EB#F)(Y9ti7p*xvUXU^iAv!yF&lgJ`*5X# z*t4^<*wK#H4YyZ2uPbdn4_%_S%+|UN4-W^Poq4D`ARu|QX=${bH-vI1^hv%9u9o(a)sJ(tA=Q@UW`cGnThjl=}UN z-7EDW_lr@JvqJff=ma<*D|5|9S*F;t6ni7p7X9{#orGrH`aXT_`1tsvt-f|Nd%s4U zuPC)&=9F}stwRA)HS!NRzvqP+5)l}Jry1?ZcE981_dQ_~goV~%>^X){_vV3s5*1+j zSlgFQ9@|HY*-SxSB4rxc8qV5g22hQDluCllAq`^GEa}D0+y6l^J}qxs|;Mf z%DMi84}V8VA{V9p#k}k9pP}b|(^oDJ=WYq)e~<{mdYrG+Y&S29zZEdx`9S(F+Qj6x z+uIh#&BkabzKkMJ!})sr8F|hYMjOD+)joTfCtY`Xq-P}oO4OaK$=0E$B44*U3g`YJ zq3G7&3D4oSjp+H2fNWsDH#9!+QFF#5x~4ovLsbf4h8O=*wapSxRF1f@7Lt8cq}uUV z)g5JJ4`P`=ht`1u(9zLB@fX(4t{)m-yMU zpEVkSG$SJ;_mLtlt2lo>>R0uRjg4zQP`Y3F+*7`0k29!&GUw&1vEb8(C$GIo`$Rj| zXc%Y``%={)09 zi1%_m`Mr9w+xGH+SI=Bl4ImRUpu0uKa*v;P<0|2O0^hr6J&KaBD){c1CHGgpH#`A{ zhc|z+`z_i#KT@!sCvxazU#02$N3Vo;SY3%H;LM6+0&6 zGY1;-Wzc-K!`7s6(fV%Azp0UTW(g313i#*ax2T%ydEdBH<~e4>Ri9p(s4JGq!ckFa zQD#n&1Rc(I?AL~dk;}_wz)dWz-WNskf*3s02mbe1| zNadAerL+{!*o^Qp-KJJg^F<-!K&3JucLuw{j+N0n;VAz9*(8oQtC9hpE&M}JR7899 z`maEDEZkAM1r!SubiW==NaC4%BRPF#W>p~(97dV(%-}-Pa-!G>2GkgGHXQ9x)Q(iB zR~WBX=W8LVRJ{gv|8~b$erwy%pxJ93qB5xwWNmN%IoH+I zRof*r(Zmt*cT~pdi=DntY9c8a$YGZU$@xq%p-+?r!2VwYzQg0^3M|m}ra>ZaPx2w` zEoWpz=i}pZ|CsJ}D0&Tl1Tc&PbO}`<7+Qa@PGpyKUc@05CXZfgUX{td zCN#CRWf!!YWQ>q6bzFeY9sPGBdHPlKdnprD zwbAgw%8^Ts?JwkQHo)g>(jWSjc=;MgqNjID?P2YDeFei4sixB=_Ma*d!b8Tc1XRa~ z=m+WL+t#%#9OH}^Gcpu7c>_kpOaovJKjNDXS1@bo#C;`{mEGOzM{HqtC|U`BS^#6^ zc!O>R4Zw$=Q_l*N0Dz$pXYLnX=fexCCGVMRxr3Uz1F1o?G+z`p(Bg;s#$ZbyN|1Zk zQeN_Ark%JDt`WI>^g+#Qt#dnuAc8KAGUKuGWtCBq5%<|VA!j}1nByApr7-B}E z3MKVlir=y%G#}{|#Jjpf-}Lpsx}&Z`?r-mGMNF`f^GMJhg=8D~f`^q9|k@R+nSV5DInM_Yl#d&W?<#9T)U^8zkujDOG zlCGV!jt=?!m7mpB8Tv=8)_`F+QYn+ z=*1Si$C+!nhOPbRkng6xVV_@bgQ>WB#_$=h=8YkxH$J6Rb-x{_ZVz2OZ3}~SIE|MyRP7w>t*@ z`$-(focdEHQ&(0Oi@aV+p;^K&dBKKHYJMS)|A$8jN5g--Z~8UK>mQ4ee@oq=YgA>$grkK7=JH94kl}0 zq6&f%FJHcljf)G6j3nq3+Zae|J^IWZm<9sWCUR=_6hLPAKDAx7SV#`Izl(0c^3O*$ zDM9S)_I~33DkfjmQnmKUV6yODQku58de0qWI281xa#ucNc7BTaqGF5EJ8MLg93tEh z*&EPXb$yB}lKaI=>ULg;3f=pS-`umFXNG}GaXd>YD~tZgy}hJRfy8s;K}|YQ2OGTPeCTnfTd_d=iHOs@RuYKokkoMZvp#KFc4Dr+G0@Q=h= z)=>*ua!Ec~wHV86HJaDXIoDEIL~S*6IBSmn$?+zNO}zd2t`{R`bas}On^2NR?WmCO zO}yo_L9P_`jW?K!SoJ<~h&Rbdw0)8n;Xg@`Ic78Vj5-8t{+#0@ZD68NQFZ4PgzLZt zM!!t?g%|Uk3?i^_`Y;5UAP?UE$95}`y1zE;WkD06mr+!ObRyo>h;PlpH?ghyKyc;1 zTG2tx^Y{Pdy~+1sX7Vo?B(*9*VX@L5eJ-uAj~;#jcQnqmh9BBvfMy)b8b&a8SHa{n zfmF(;PZ%pO!1J!e@y*77QA)3h0g{pzwD$JTYpD0!Poz}$_Wy|^-+v(>B&0&{2g~vyQg$hFUkJ!4_;`x|j#?oX zAuN=mjTt?e_4r*U1SjY2U=GAX`8F`_FwNwD;`+@s9I6Xg;OyVG?IFZGjQ_K~I;$S0 z*$t6yVEfZm+@F}QXE7nz>tua0=SX}tbc$^J#K)$l6lH`mqan*}^d zB{#uFG%DWuq#bxq{d@=<2)!Tl|LCXi*elkCA3>io^a9qbDduI=usjQmYMJJ7Fzu4<~2$ z_sn*;-2ttT= z-&qh1v$uUO&^zrnJFnGFFH?KW(VHHwyI$f06A54P)CuC{*}3$Ha)7L_sG{t?Zd@W^FEnGHyx&dDS-bWppTfR(iIc z#J%-@^MW=YJR~rV4-SvU{P-b98rqS3l#!Dx;5wnHxgVWwsT=0)?i5m1>--M2sKjq9 z+=~W`=I3ifatF7Di<`{@_r{A1=*9zLmk~Bszzsa#QnJVD4^-NR)HyT7(hM;UYt_-! zy(Yx@Hjc~w{uF3HW9r;T+Ue!I_#aV0&w{>4?(wKTDq8nb#R8#wyxz(y1mLDxyJ zcfcFjCtaWQ``88cRi1e02xk^C5CvI-Siz*e+{Cf}wB%9hqiIR85K6hD&k)Jl-nJR@ z(t=`FUaj09yCgx#@K}4ephQT2+GLu!HIQ&N%)Vd^H7GWMyQhy}<^FmyIC|)Q5r)T*= z{O$UQ)y}8`X!9}^2{qlh>SjkIs#RfO z3eCq{OpOaBvSuPa^0M=XH-qW~KV^Ez1HA6vDoyb_ZafT|Xv-#)%;rK8&0= zchdS`UkZo*cR6&B$IuZ9itN<9!y9)|Mt&)~To(Ho=ZJ>3e~VNO^Mb|0iL2uVKHJ zRxcov;=h3U;|8K5HcMFGAL0%(e8kFW?0k7s#$!fPIp9%m>XN7hG}z6bZP4nJntO7%O&KK`}}B3TCf>+Xjgi(U4>$a^F=sY~&kV;K=SX z59Ikr4Sd`L@@9>+N8Yf`v`gx`xqh~tYtcEdt5<40aQO3zQ z53^KyemvfrZ=7+Q`lJ5#O^4uUCoIc|cpZ&5o30h6^<2TZj`y?qEKl2@+m;h(Jpsl3 zzf~S^QpXXq77{XlAQmDLc!u=+vy!fiWhf@bE{M2sufj`M>UBGmwEFLGh1VE4th7T)Jae$4wW!t^_S{Bxm-VCf&`^mf3 z&AC7LJ~0PIdrWA<=gbt6M2Ut^0t z0kX(+o}O4fBQcWc(_}n)#(sFf38;$9Xc~NB=Ts-i7Du iqyOivgU5$=XvbQj`tpE}2lP@fpd_a*TP$rF^nUqcgM3o`^<7NG&da@O$KIRK>+{|8>?djfCpus@3fs|KYjk_Wa;2+ zX>SJr?%&fBhwXADae85g#JT5+TEkkCVr$h_H9OfpK{03$P2=D*B?XTgu|PXx$l0%z zXu3O_)u^i|`^kz;1gHJZ_Sw_@Xlk9@bE}(G@kr(P8^ygzGirGfb)Bn|u#+V(+>P<{li=Uhv?l&Gb zU71Ds^vCFlM)ce}et4#9ax7fa-Y`#V%xv0l45?QgSU9uPRY*<^E)ylvCVqF`(IJ;e z;*zXe@kk*l_M4UUoMm%N0-j(ye*ZI_r}!sqo=cBgTxsxFr_LaF7|1}-|9Iv}`*S4) zfsP-p6k2qv3Dy*z`lE@2=^vpr_oQV<2K<%lvf<(_?any7hp+Y#pTvdrHM95!SHLo#+UY--G*l7BMv?kM<2s#nq+v9zRwf2X@#9EnXN!MyL}R8Pa9t%^ec%FFs1pVGyF9O}kd8>r|3~$e8%E`{tIc{Fb3- zwjlyD;N(Hw$pbV@OR&;(W;(H>r>7^`;fT3_+==b$AIXOvX+Gz#2VB#B<=ZYTG_U)d z&*0iBD(GFCHl^`4y_SjNw`_`TT`(1JtVe%LhyK7Zw4tJdw8Pc3zxu^Ybu?!mf5t`B z5yf!0ne&MPW9f+pjfBOyg)5FWcohHJQVWV%A*?v*_83ZR@FBNV|d}H>Z8z91?z8 zW#94ba{6bp$udYB);q&I?Zpg-b_B07a0ANbph97XVEUc5Ds$#YW)f3amQ&KgVAw|mq-=>V(j^#VPbAjCl9T0gSP@;=M@xERM zT?VTb3wmgT{t+`xu37R(anwDq4KZq!fPWx;PEUG21U{P%=?gk0^npG&P1mi*KaQN&=?G}H!s_GmT;S({G$ zwuVfilYwm?4Bz54BgHi*r<^k2;S@Zh&M6TvvSA^~s{3@eMT$h(QRa!X@2Tvye?;g<qb}M&g{mqCHB6%KAxLuPm6OY0u(!o4YoLtwU9F@dQj7Ghwn{dYvfIl zh(`B`NSI~c?c2D3?=BTU5DU+ndZzlj!sv>TG=6w<_6zJrUOA`xHfSlm+m>=m_(?$V z8bfmBCeYTjNA|jH?&{+?o%LV|;R}C{%}KJOi4)G8wd}Wj)s^%jD+>gM$UY)xEaF27 zDX`Uz)qIH`&-MfF1;9DjJG2%a=RWxC=+gP(p0)pM`BAuF+x*YlY?Zc#b^@GC@>cp= z=L`G8x*$gKt4sK06rN@Rc>D;V`lF+_H;U2Y_erD23A5SAcM77_!g$~JRf(IEF4vDA z=F2?x_|DAnPyjh6hTu6Coby|0msgLu1VQA4V7Q2SA~dt@4H}1$5a!g!#l63eE zQZu)H8JXmd%kD#emq?Ont>^yG7SBs4F2XXW^6BZ`w!!Jw4hvWg{#LBudwQ^d^aKap zh$+20v*L8niOyeh1qSmNrAu zv5&T||3}#c+cqrCpyXqx&Nr{q4rYEwdx%uguX%m-=2RKDw0&YSXdIDw`%qO#C7j2E zXfbt~2j>^(sNUTjlTZNpjwl^S0VSceKCfals3h?}xVj>3>$1BfGDdRt^!BnSV;v)M z1;oW^CWYGjx8lSsn5-c5-y@&Ck%$`R^bEGg;ix%}bN}pr!rHH9Oa{|mQ+ACxnaHD) zPd8{C{{}wB^LDsEBKF;~)6+>N$R9JZMt<%KY0FNZE^J_+;A{7)=QF}s6ZhRpU zdlT55kY5@+bjZQYz@ow@T>(eEpknyW`#DdyejqyK0+WOg8cSpSr4QCO*YV>92`vmc z5)W1UmyIAXFZ^S8d?g7W3eD|Mo9J}Nn!POn3@vsO6mtBlGknaz#kz9b#omSWpcUh} zw~Ru#aqk}*VpRBp7IF5M3LYK2{annT#h-t|JVCkzOBBi<-><*f`{M^YJkpAKQ0mBJ zX-bbv!9aZ)Nzd3tuX?Xf$L*{xlWw{k_GdY~;RxaO^E`q6DbW zkGF-i%FBt?7~4v2ob7|{S}@WRGGC}l>DbJkB$yd8C&T6os@qjwuoRv(UtLqpH)$Kr zFr{cIv0g1spJ1T;)w}br;c`;d&j|C%QcodLj_*{l8>aQ%4bk!KEc>u5N(y*iLeGg z_eWc*!-5i&<0YhFGQoK7VNY-G@cG|Z1(^b9nS_sid87}aEj|o>q2Co;d1$Uf2d!MS zbj|U88H|6phw1Ed`GApTpBU#uL7|gebQ=(i#F^3TFk&M5)+?`u`4|t|xP{_rn^GXC zUfWQUu#A7SfNa-N)6^H;77o-XPqocDzX`*Qo=8dQ7#YJkOX+QGScCyRjL6#EPX(T8 zBxF};SglxcPagNLY{l^TN|G-}hpNS$Y+QO2Fmx5gWUC#HFs7F-GZH|an%`c|G4_dO z%&$;z9CQ)5u3yp_zMK!2nuOi>MWRQ?=5{{^p`2arxEn8e(^nI*vkm4Xu3<>smt&= z_mFFDQ^5h%!slBhxF-O0R^o?G>9G%zA3h9{&Q>kJ`ge)2`t#;Ua{2eL8k(S&liASd zm!CpwzD(EJ>M3oinUu-na(wzBvk9;fKMabER>hBgOj2|qnXS4)y@RICkki_l!Q-$C zuZX&ewfZ69a^|)_-w&cw?Z3adW7B|G0c`Xg2M$11c{v^*AD@MVMSHePNX{a*n$M4l z0`X5)(ztX_SI06eU5AV}uR^m8 zVqvH_dpk^lWoJm} zt4$3fBN)ib$Cq7RuFU6ie}lZgXp{f+Dc|bastwH9)+k^m97eOMCgV|;P}GXt=_R9# zfFiC&+yHUk@XpvU}V5ojcZ93nsIpL zVE^eY#(WFe$K$up$Id>!_3;tY(9*(0$rm990VCuBQd23P2s?+~Fw+co6THjZDJfP- zX;c~j%1es@AR1Q1FZuNc?VG+)qIO?M((gUj-0W=nXQ(|FUXM-Do=krf_Kb^7V9`;j z+09ODO+9!^)}iVzEu68L3DW4**>(5Fu~a#&D@t9X>{j)$7mt}To$lXn#}8^!Qa~1d zB*BY9e1!te`a85!SG^e9=S%w@*Xe!ZI}N+bR07lPt=Y_+3E*3BYxO)#M00-yV&S*WLSAz==^zfNxGBN2q<4g`>Mi;KhmY~$SM(fmgPcz#s&)d_yq*yd-6em2X|t&?m% z;+*wUw9^?~F43)JU%3_mbokU@ud(etj_^l9=z?-Mju+R~&dRtwh||yj>xlL=8=dS< z+;){Vf9_v%#iPwh`$)S`Td6|2r zt)uZJfsf>}m$t0;Gv|c7`a4;s##TyRUS0qg$&`r7W-sJ&UMEf}7_(S%ZED!<2KaS^ zrG&FbMwI7W;0B>!9#P))JBiurSsTV`=hn<$IMmh7a;8?etgHr5pprK|x-=<&8-1Kl zXp|x>`g`h^wFw+x=^n$6-c4otU=R#8GIO$mI`=T-Svx(L!Ui5HCedqH6EqWDjhRuc z${7uxM_FJwt8H71qgKZ=Y{mmDnaWU*CPenw+_R6JO@e;js~c{jh4;5qTm^HL7Gn&6 zq>&LVu#~L^Jy24SW^Q+thKUA9Ag^G3gM+!KrP`fcrT?3=M;?j>SW*b%G&S8G>!m77 zTC;Xd*B|Pzp>70hEN|i(s$l*Kmex*HZhzM>z^S4etQ?QHu&+Fx9M{UdW6Xf)zY|V9 z1^d}}AVApENSMcF=GOIC0V+uq7ZtUa8#L8>$!IBm`2Hcfq~Fi+T*>(YH@DXb?QP;C zW2HJYAY6`dF=d3mmk}^bb9cQuUf=rr7o{XJaTFiA?afmIJ-rYzJ&95FwpoL!%kcVr zWE7}3hq(Mr(S>M{$&9V2me5>WXJ>)$ZbEDTc)3^d)tbi7r3^y^)X#vVzs;yA2j}LZ zrL0Iz!P$q84pG!!xBp#dTfg_ug23~7x8l18X=Lr7{e0+EliMl-+g6JC=+zL<=u^g|JZ@x8>y*DsOidip3|R62!NiTLL(=D_pC>UWRw~jTixQ z9d~_g;ESZXEN6;REtnH%sG4=mEW^cFiWvLiKmO@3@{;t|G~T|vtL=+e4W6ZayP!Es z87D>Eu3%QpYpY*i`zx*nIqFkSu~Sb(tj5cOv;JbAd9mY^JhY{ZLB8uA|ISyocjb0u z-<4TH3Gw7JMdfj}$`st(1g@bieJKeeKC2mR=W|7=X%Q$n>nFg)!FAi(rdwa;xhvE` zLu-3?L`*%eOeI=w2l(|)MjUZ-qV&t+CjESMna;VC_L*`kiN=>Po%6NI@DScr%WK2q zQhj;l@owlhBdv%k@`8c)Gn1%LTX|pU4O;yim z00{Z^7^-bMt&FAgx%ZP2r+%n4E-n{kM15jx$XMi{Z~Dj_=UuE?HRHe3p?Q59d8>PZ zF>`u*12=JRe^GC5D-^LGS>k_du=kdn>Wsl4Eo$s2tvUV(s39oGw>}v=*lL%QXbLwf zrOyD#7!6}lWoA|+z$I);syJZ3TE3S~?U-Moc@wgS#-BF)y>Qhz6_WR=7lP6<{s`wi zQu6}9{@YKvo3DPm&$@@9iZUC!k8jBQrUQdd;=!!vaJYZ$%Nc90C`^o}pDG2w2SB|I zb?0w?;Zb8#o7hexmIF z`oi8gJa0dn{>k6TP80{;&qLv>xGTAuq>@m(kQ&H7Mj& z@RQXlmKK*rxl%ce2=&c}xScL;$1yQ)k1-ov8|Ra0^JqE-u=0d_A_@0*zw9!Vhv;4d z?`)BNV|1s&)PJ0Vd`6eqWPgG);V=nb63}Inx&M}_thp2?82h5WI_H6M5_?YeS6O&c z&K3(Y$ zG~6ZYisp{3pXLxiF-iQn_6B|>wKyOVplYZYT(Y?c1q8ir4qIr&NkO&3C-~QEC*Sze zevczh4@>4<@~%M4bzx(*#xG|H{-Hd08~aPN@ob)L})sviXnLs{}b)pZpZ71DR~q_>Y5$FRZkr z-m3$2LPA2%2t7`Y!Q)ErE2p89&J1k$%*bGd3_;ZaeK zPf@C7wKda?4oq6&z=u_HdxS~k6$Q+K`5j7Po; zZSCy%FW8xP^{@yDrS!vKNkjJhX-8YRQ4jni&8uA&o7_0TP627FEr?(09>SW32Ru0p zKx5>1^U90H^-9@xbS+Uq&LXi9kB`AM>!m{ayaBv^H>L5m60yu_e~=InO3m&Agod0K zsy>bh?WD)>52Wr-nD(V}K^dw6wH>ytq1-RC*NTM7H@oA#T*A{~%Tl;*QL_4pO*F1E zTE>Pk^5t=k5jE69Etkja(?>Hi)AZKa zYZH@&dt${L0zOC|*T7qAR-LJ`B3f+4DUUvzUG<#Q={a4+Ny^E(TRjNf9ygF^wUGt>L<@uYfvK;OHSa>0nRQiXn+kr6$rnI z_4;z`=IZ*}>?g)>1+UdE``h|GSg)&t#6^m8<+AhE3c1NL`s(+gpLvnqx$R(*o|Mt8 zQt4c#^lRcAVaz_RaH9|^3k#0 zI}RF#?Y48yy=!>5${0Z8VusD1M*-SjuTe<}LyCl^oB}E!ud#~DrYAd+;epek zp$MtshDwVqgyLQ%>)*LLnEkl-LL=z%y3Nal>|}o9;e1WQgOEipqR!fF{p$wnzuD*s zI_(FB3*AaRSQz7odQ&W_B%rb-=)>4{HPaaYJfeRsEA=kZ`KjN)(>QqM4k|h#qoN=L zcC=WZ*wOkK6O!U7-cC$ueN&h-3U|jE_B~BrtDGG=9f}_K$(!E(H)kiy!ymNW!OLSS z|5)GYXSI8xmV3wcyz9_rwkue;$#E45w68lY*C1MdzcX{`^h{XDP`@~%+!w0*47_LO zX@D7x%}2o*xTHHy1vn^HaBS)L)fvg7i!#wa*63ouQM~z5h;i^gE*%kjzz9z%+&z}@ z^wsTk$zlx@rB_lLuv7+J7vI?4Np|Jjv6UWOO;-2@wYG}$3JB!Z)oHy%jH$fP){Vu; zdhdW3AOGzm?p8*Km^&p3{Fx|9e5V>t+kesWRwXz;Q$cnT&@Iy})vHq`h%iR9`g~j0 zqO3VfV4gi78t|qBtK{zQthu?ko^Z9f_i@G_C+M$K)cOj_=H7v9&yzR|{CiiI!&SVz zL^ej!2lF{!^h-|;tOLOAq^9Y%Q`Xqe3?r%HiYErj>~^wJnJOA{p@^0N58fReR@A(T zuNaHU%jG_P{HT2uMI%NzY}FIdIv)7v-YKoLyYow80TCDR3+R%B`Q)5qie9M{)~^r_ za`p5k?SM>qt4mOQzlHaD$x!3@*=p4tQOd3NIdXHYKMrW8$V7T?3jvb-NKeRq0UQ9z zX~?Rbh3cJ;aW0xIJ07^}i(Tfq5stK6X#mEpsIE6Xz6|sacsV0bx%#!&G?PWn(Q*OW zT+8EqCrfVyKgTUp6=}==N+TB=9iy#!e4Fe)rX^eyIdK)wQ8%T#@Ku4 zQCT(t4$nTBdQn@Qh~4SG&7`+@U96zar!G{eGYMoQN8CX?@+CQUhh>ZgrtfJ{`vj_drI%GYscp= zJRVi--Lm133?6k!+>!!ZUHN3WN2i;DZd(R6`f6F_5e`6vSg!O~o*qT+w26j&5J zBA{W7>g3As(}LSwy>fPRe6kQhey0F0e%0QLVm=2K`V$kytXf}I)`fe|7CcmoR1H~B z2;W_DZe%(rDTbLlI}_`ck@A=gNrGUT(X~|^S@9?QrFlt?YFm3WU|**rqke7Y!=Sj^ zaKJ){*O-VcezkpYtqG6eDbd#=yf3aUF7yHdWc+Cn;BIultAM`Y;aBG7EOm||Q)6@! z6I!VbbD8*vH%EAl(z8@#oXO9$I%b_H{g7&(>c07w&PlwHzz0-ovz{~vUDGvm7MAp4 ze}2PLeR{%#8$EmN4TVCZV`9((I)H!o=EfgonF^y81de$Xyvwcl{~H~pa$zAo+Tnk1F?8#mEG)vag zmdPVVeb8xfA0_((hlh-fsSSb2+?||dZn~rZXYJiv`W^fylIO$Ejn7u~8?oDO!1*8+ zmW{>4MAPizGJ#Sd!J0FaeiV|qV@2A$p_1(K39|o!x#q4{!`VS(=5su%cjB(UfFi(a zk0&c{r@L5jPT%0S#f&876`BS68a_?CphU4*-vp(ph?9D)doilAxsC48#zB!IDp4KQ zH#WFAi`bH@jJ<|-h3AX=)mtGg+>INAYQAHV9$W)A0xM1pOd+&ru7nRAVw!57fCgOX zDd`zK6tuwQEaDDmay!6oXtmm9d923chw_k2@Vf!}b*&aG}xV^+C%8%}E!L3Myq9wmef{2~%wj%ZFn)pGQ7078uBE+W2C5 zwmRJ+a_S*i1D+8@5VwPd7S(V?`GBP)%epy|;@k=SWZmnd(fj|BrL&_0>M)vIpud&b zv$Fp^T|~A$>m446Sj$Hj)_9+sSUxP@mJ5O05uH#m;0kfRwyK!l`lZ9l))vuJ>!w)t zO+y9MhjJ4(P)iRW@-kleXU6=kt*v&{6IxJJS9d3=c6P0M43Dw3_FV1s0m@4qPc;yI zYUPCUJA*8?_RIZE8dWzA?k<{o5^77L?HYy3+4c40iUv{P;jE;%zjx0b9J-vAm6fq_ zaAcgih;E}wuv@$a*s|>Pb41NqDg_EdtKsJ~_$bOWw!cRQ9A<=rgD}|o*ekk0R>0be zifb4YmkHnWq!oqhRP@c-NlCq?C_ou%@fKT)89-s{Z{Oi?OPy@E+O6_Y0jdM&_1#wT zXuQbFn5OXb8&1txcl5IS5!V{x9+9~saet;`qt6rgxz|WOt~a!z%xC`KYN6?33AGK! z{Z!1iwv1R8#H1)!4kB&>7a|$uBLP4;Q~ZUt3-63|NGH9An4ln5u3A0Yv|Zim_1SJU z>{o5=!}7V=S!SQ%ivM!td97yNSLp9Ht~720A6-3-uQlzDsrjdABZh?#z|(7}(t6O? zUX(qht)-0QglrR=_y02Q|BJlff0@^>-U2NA6Es<3rBrw4c2%WmW?%I->2 zD4c#dZXWC_Cg>L)J`{Z-VqjOQeGAcoya316Flyvs7dKVtxkMuY+Y0 zx>jw7aD0M~%e@)VD@%CLTxrBOVOWD-FJi1sjVG$1KbkTZBxXOSQ#;x1tH{?XQ#q>6 zYH!)kR6mXV0luYB7jF8_O_nhJu8GEKwp%~=>y}u8Ga`-B|DOwHPyyAD9L>5JyQ!TB+qH@E7*U*4v^FMO-w|Up#h}YPk1<0EdjQQ{4tDB17l&D&c zh%~Nj`?xoDKR4gQA~o*`5@hOdi0vrt+i~Pu>O> zW_n7r08#SX&QGczq4iry=lo*Ss=ry{DmF2$b<@H|tY{Lu1wBMU6uos>H2=QnL;aHr PzzD0 From ea15b40ba8a113123dacb8f8e582aa928c43d587 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 1 Oct 2024 03:20:54 -0500 Subject: [PATCH 3/9] Automatic changelog generation for PR #3345 [ci skip] --- html/changelogs/AutoChangeLog-pr-3345.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3345.yml diff --git a/html/changelogs/AutoChangeLog-pr-3345.yml b/html/changelogs/AutoChangeLog-pr-3345.yml new file mode 100644 index 000000000000..3da650007188 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3345.yml @@ -0,0 +1,6 @@ +author: tmtmtl30, Thgvr +changes: + - {rscadd: 'Added bunkbeds, which can now be crafted with metal or placed by mappers.'} + - {bugfix: Beds facing alternate directions now correctly support people buckling + to them and bedsheets being placed on top of them.} +delete-after: true From bb2ab5591e5b045e637fb991137c52566e7a6d54 Mon Sep 17 00:00:00 2001 From: Erika Fox <94164348+Bjarl@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:29:27 -0400 Subject: [PATCH 4/9] One Shot RPG (#3433) ## About The Pull Request Adds a one-shot rocket launcher to the code. Adjusts the code in some places to support it being truly one shot. Also adds being able to draw on rocket launchers for mild entertainment. Rye did the sprite. ## Why It's Good For The Game A disposable anti-armor tool is good for people who are poor and or frontiersmen. ## Changelog Rye, Erika :cl: add: One-Shot Rocket Launcher. A quick solution to an armored problem. add: You can now scribble profane things onto the tube of your rocket launcher. Use this power wisely. imageadd: Rye: A sprite for a one-shot rocket launcher /:cl: --- code/modules/projectiles/gun.dm | 3 ++ code/modules/projectiles/guns/ballistic.dm | 3 ++ .../projectiles/guns/ballistic/launchers.dm | 50 ++++++++++++++++-- .../frontier_import/ballistics.dm | 42 +++++++++++++++ .../manufacturer/frontier_import/48x32.dmi | Bin 4302 -> 9192 bytes .../manufacturer/frontier_import/lefthand.dmi | Bin 2747 -> 3015 bytes .../manufacturer/frontier_import/onmob.dmi | Bin 2399 -> 2721 bytes .../frontier_import/righthand.dmi | Bin 2685 -> 2934 bytes 8 files changed, 94 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 7fe0a5b07c3a..f848018a6115 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -70,6 +70,9 @@ var/casing_ejector = TRUE ///Whether the gun has an internal magazine or a detatchable one. Overridden by BOLT_TYPE_NO_BOLT. var/internal_magazine = FALSE + ///Whether the gun *can* be reloaded + var/sealed_magazine = FALSE + ///Phrasing of the magazine in examine and notification messages; ex: magazine, box, etx var/magazine_wording = "magazine" diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index ccc399906365..f64586871ccf 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -205,6 +205,9 @@ . = ..() if (.) return + if(sealed_magazine) + to_chat(user, span_warning("The magazine on [src] is sealed and cannot be reloaded!")) + return if (!internal_magazine && istype(A, /obj/item/ammo_box/magazine)) var/obj/item/ammo_box/magazine/AM = A if (!magazine) diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index e3e821c72db1..2044fae60ee2 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -40,30 +40,69 @@ actions_types = list() casing_ejector = FALSE +GLOBAL_LIST_INIT(rpg_scrawlings, list( + "\"FRONT TOWARDS ENEMY\"", + "\"MY WIFE LEFT ME\"", + "A Kepori inset in a stylized crimson heart", + "\"Eat lead psychohazard!\"", + "\"Portable Demotion\"", + "A drawing of the Rilena character 'T4L1' smoking a boof", + "\"Eat it corpo!\"", + "A Sarathi woman in a suggestive pose", + "\"Arm this!\"" +)) + + /obj/item/gun/ballistic/rocketlauncher name = "\improper PML-9" - desc = "A reusable rocket-propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." + desc = "A reusable rocket-propelled grenade launcher." icon_state = "rocketlauncher" item_state = "rocketlauncher" mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' load_sound = 'sound/weapons/gun/general/rocket_load.ogg' - w_class = WEIGHT_CLASS_BULKY + gun_firemodes = list(FIREMODE_SEMIAUTO) burst_size = 1 fire_delay = 0.4 SECONDS - casing_ejector = FALSE + weapon_weight = WEAPON_HEAVY + w_class = WEIGHT_CLASS_BULKY + + //Bolt bolt_type = BOLT_TYPE_NO_BOLT - internal_magazine = TRUE + + ///Magazine stuff cartridge_wording = "rocket" + internal_magazine = TRUE empty_indicator = TRUE tac_reloads = FALSE + casing_ejector = FALSE + manufacturer = MANUFACTURER_SCARBOROUGH + attack_verb = list("bludgeoned", "hit", "slammed", "whacked") + valid_attachments = list() slot_available = list() + var/rpg_scribble = null + +/obj/item/gun/ballistic/rocketlauncher/Initialize() + . = ..() + rpg_scribble = pick(GLOB.rpg_scrawlings) + desc += " [rpg_scribble] is scrawled on the tube" + +/obj/item/gun/ballistic/rocketlauncher/attackby(obj/item/A, mob/user, params) + . = ..() + if(istype(A, /obj/item/pen)) + rpg_scribble = stripped_input(user, "What are you putting on [src]?", "Rocket Launcher Doodle") + if(!rpg_scribble || !length(rpg_scribble)) + desc = "[src::desc]" + return + desc = "[src::desc] [rpg_scribble] is scribbled on the body." + + /obj/item/gun/ballistic/rocketlauncher/afterattack() . = ..() magazine.get_round(FALSE) //Hack to clear the mag after it's fired @@ -80,6 +119,9 @@ righthand_file = 'icons/obj/guns/manufacturer/solararmories/righthand.dmi' mob_overlay_icon = 'icons/obj/guns/manufacturer/solararmories/onmob.dmi' + //recoiless rifles use shells + cartridge_wording = "shell" + icon_state = "panzerfaust" item_state = "panzerfaust" manufacturer = MANUFACTURER_SOLARARMORIES diff --git a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm index 90355db145dd..224712438b90 100644 --- a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm @@ -227,3 +227,45 @@ caliber = "12ga" max_ammo = 40 w_class = WEIGHT_CLASS_NORMAL + + +/obj/item/gun/ballistic/rocketlauncher/oneshot + name = "\improper Hammer" + desc = "A disposable rocket-propelled grenade launcher loaded with a HEDP shell." + + icon = 'icons/obj/guns/manufacturer/frontier_import/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/frontier_import/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/frontier_import/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/frontier_import/onmob.dmi' + base_icon_state = "rpg" + icon_state = "rpg" + item_state = "rpg" + + mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher/oneshot + fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' + load_sound = 'sound/weapons/gun/general/rocket_load.ogg' + weapon_weight = WEAPON_HEAVY + bolt_type = BOLT_TYPE_NO_BOLT + + cartridge_wording = "rocket" + empty_indicator = FALSE + sealed_magazine = TRUE + manufacturer = MANUFACTURER_IMPORT + slot_flags = ITEM_SLOT_BACK + + +/obj/item/gun/ballistic/rocketlauncher/oneshot/Initialize() + . = ..() + if(prob(1)) + name = "\improper Mallet" + +/obj/item/gun/ballistic/rocketlauncher/oneshot/examine(mob/user) + . = ..() + if(!chambered) + . += span_warning("It has been spent, and is now useless.") + +/obj/item/ammo_box/magazine/internal/rocketlauncher/oneshot + name = "oneshot rocket launcher magazine" + ammo_type = /obj/item/ammo_casing/caseless/rocket/hedp + caliber = "84mm" + max_ammo = 1 diff --git a/icons/obj/guns/manufacturer/frontier_import/48x32.dmi b/icons/obj/guns/manufacturer/frontier_import/48x32.dmi index 2f2db3d07ad53178648564e1ffabf81691ebf57d..be95cfa90c14fe5b1763ae8e11da0c600ce28dab 100644 GIT binary patch literal 9192 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 literal 4302 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 diff --git a/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi b/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi index eb6c552627eeca7d582ad8b7e4509b3c19fa27da..e34bf3995dfd7516faed4e759cccd31eac540391 100644 GIT binary patch delta 2871 zcmY+`dpOez0|)S#&25zX<)D#kCOJgNWl0VxGS}QM$tfv9Ib-`RDv~?7?Z94DseBkD~Ll>l%Fo@>!0zY*{QzA z&4}MmHWvEJRFoSf2#1t^goR?H51S4?yC1rBj*+i8(m+}stc}pA`!*3>(3tRT?k9z_W_0a#P@V_>tBFmP&R9i+ z(0H##-ZKOJ{}}^sDUod<3CUfFy-tsxB=jyxFsj1-KG7J~Bp09|;vHBfZ=Np|_g=yw z@P5(jyQZD2wZtskxR7{4AObOdL;Xp6at?EL=CD=v5P+Q+ej3XPl@dj2y?P@_gGOe^ zf{@@{!eSwQBl^zClx$+`8q2O7ir=^aBir-{FfCONP}d`FLC08QgNpw9M?Bvv<5`qX z&|pXKd>&f#sE5q}Pmua8%uUbY=0EZ&O7FeB8AGEaspW}ajCv=dTQFMt?yrTM{UepE zp4uzGA)(8*0f^_axOeEEJ$OuWT8cvPsTK91OlFL=8ef2I_&QuPXBR^Gad@7;KZ(oa z`_cO+L$j;XB=;pUL}^++H=-8!;W-V)Vx<#TX6hcX8m3bI-%n9ru1OTnb_@0i{{029 zm_t<>;?Y%tiBaw?a)8>YU2m7xr_{*VB+no+Tv@EwBD_3p*A~V!{)`&H=LKJwVa7ck zQdB{|4A&%kFf@HY8Qgr%-AhngExPLJWO{uFRe7&L(}BRc-(EAXS8dS7*mT!_u)v>n zu(X81@xo=*3M%Lr_o7PKmlD=nx_VhbmuZ!%+Uqu%-r?VYq&k-B?Op69m%FX4Atcn` zmV1uCiko*7_x;t4oMFQLaQjueSWSCU7;VAGOWtqkqDS`^vB>6PIFf;$C%_6HY+)Wt zGZhu5r0J-Oi&EIzS2kUcKx)Ka7M`YsA8jFWkB;%x&j$NiF?sbXldik}15YqLb@Sr!-owXUc= z%w_q%uk=~qo0QD#Y@4)*%q^Iu7BTqYKMn#VxvUx4;^$nAOU#oMl?^ue`sdGy%DQfOr;rClG=|N z@Ir)3U!=oH-@JMXwrXVe&gIW@BJY_k1d80E$pe(;eKR4K_WIMdp?|@%8Gv#ggP7kc zqz>s;)@bD@s~XNUcz@0Tv8s)6r23eSh8_q3UD6q&kg-CH?-*zo>E0e~%aMD^&Z?hR zMt=@Y<#9ik0E*IOGOC8mU?sbheV{fMB_tQMvCx`{fvXzM1}gwDEn6~=&f}>Jn>_&f zFF%dFm-wUYju-%WEUsk`^DKe%bed21W=f$X|;V14-H;Yd%q+jovQ2Iz;}Eg0B3nEF>!BS+BoiB5 z&0V*YC-EiIBe|=G26#O&{cF}Z>qpSw0L0+0~JzYuuU-nGdWiJa1Kb(>1qi-lJwbRZ5ngUTI!s#@_+(bGn zqBT9fQ>zR|B}bQd@4Pr=|5K=6HXo%QPV37AXPShgtVl}A%kOl=56kXK01px%M&`szswG&r(b5=GzTn=E#Hfi2xi;jhxx|}P1*4K> z3RY0v;#z;Jez5h??}1no$k>G`i2cXvQ>x~R%$()*aitgluUQ3L+fY1|JLJ|J!;BOIJWNceV}5g$$)0K^}GhnPa-w!K!qC+kY-?-(Fa zc}-_3h`RYa5^aWxADVW$`=-%jdK+rwRPeXW_a_t4E=@2Ig>2LLN)CdgJ$E4huX7)@eEG?%( zrl-F(JJx^$BvPmR-<~5QsOwj3FP27_?g6edDmyj?m4llNV)A?J=r=u`ECuJ;u^8R$ zv2bCZyVC}uc=OIqma(XgZE?!__l`i`sEF$doq`=`@p^}z$c269yI_(76iIjTpT(-k zJPGkgKNwX-Cnh&+NAF?Q#k6TjS<~X|gBG!7D~j=}5N#UK#0|K6$5Lo|kr&i*(`|%5 z336tW_Ep_M>rs;g)1ACpG@#lqYu&YB0k)Q9I8%7*m}k>;5fLy(gX%A^Eo3!}f3ZH7 z(gYTWomoYaDN+Q;warx--_7G*tZTwYj}+;|6qq`N`w{TPESNXb&V0SDN@dQ(`PUBy NIiGTMsJ9PE`46b}n{xmF delta 2601 zcmV+^3fA?<7rPaZBmr!ZC2cLhz`$N^7{dSn00DGTPE!Ct=GbNc005kNR9JLGWpiV4 zX>fFDZ*Bkpc$|&Uk-{T?BkpFTH_g=Q++Mm~HP=o)kdh5voz!u&mEviEO)iJM6b7v} z{4I$`#vCg>`$`J1l$MDUHyRx-dG|Bv?n=xME#+23C#Or@02rt6LRcR}%Z#+@VwgP? zxMT?753E(&H=ozv@*!>;+6|CL000S9NklK@M(x`_A)gWMYKtg@r8DYA4_7s6*?WF}MFF6Z*jkBDTFHSD06+rvr0s_|=R1Kzf{u%E_WO@{#mBncO7BRs z-`6j6#uzntUVj7JY~EomME) zcUBrk1->GG-=p#x{lGvgsiagY)%Rr@M@m_W{*wGMix^)aowcaYgPlz2g8~n^0#Kwk zQnk`5@D=&qY2QwC1p_JJe*+;BeP2I4pPuC)1_{R}Jq(4uPfnCmu!!*$uvuDNp$C`2 z(^CRofydrdq|qBI*ei!ZzK79jy?k%=eTP)v7thasPtO_>&~SW)gc5yU1vg5-Tg3RP ziWpx9dV*KrF*6HgjOo$=&*Xc^*#!CCGr)PK@9PtEk$?mQ98cQSMnvaek;M0uReBl$ zNAIVQldutw9;ah9 z1CsCQ%&nn_WB@RNH>mdY;VG-_O~oROZ&HhlUWli2@I=q=!|^d(fzzZ-#5t& zug5p}J#dNMGFSd!C){L3YCcU_6!vIX@i+dq?(^K+`DUTeChs_{6&+1ekyzUjlGA%m$$NT=NFg=oc4i2~2MB zB)p~}!ix=LvLSxrig&dt+FwfWb4gz1-zDB)3>hQ_=lH{Y2q$afr#{55$$L6~g8#H2 z!DltogbrF(43Ob?%njD?i;eL!z^5q;Ag(J+^|hG-e|D&tL;U_1XmxyVSh+GUGVr1}phD#h;b8z9Mwd zCoy;pKZC(wFc=I5gTY|@!`P^Q@82F*>iaXg3+0XO=Pq2S@7FP0H)6}~axTzasqfbt z&=ljjEuWctDS_(Z3 z^fHiuPl92fdthw>nR|fakqaG>>-&iSzfQj|T0kMxU{lw2!y~x6R%Vd92VCGO_5B$x z>H8}hwl0HvJby9f!nZHy&P9FM8>E8fWK^in}BLmT7HH?Zr3G`tbB-}Zv&k~@= z5R|h!iW}$Km< z_WsPqz){B{4n73$ml6mT5q;YggBuL%93-DqlK%FXP4Jd|v3TedU-C??At(LNiQbU&Xmd|tV*w0E9h;i{5a zHv|5o@3}@PIpA_w_BAtTTrmqpN%oD_^)30{7r6ZzHV3}qa0*fH!;e`4jcsgLqyZm! z?(ev~D{TLND;xnh!hL`n0~QHL`#Y9heUdZ=H)(4XFlp>}+^^q&U-8@2BUb$OMfq00 z7+!@JOyEVp^e&z#2sOWN(X91&`2%>tjr@u=*--Q6Chb~{kU;t3VW_zG1PEs>-m57L z27|$1Fc=I5gYlkNzjpFA%PdzT?i5~;-?Qp-y8aD+fr1}uEnQ817bKBm!=+YBuMON7 zcB>qG+oUGH3o#gcF9qexg{SUs4V>6NfBc|*t7_M2LoSr>)m`2LxP{Wt;4&gg!LAZT z)FM@%PCykOUt!`XIpTq!6yid(gEDkOYs)JpCCK83g#C-$(hrRPXNtB*Ei4 zh!yH=g8(1(`yk(!>ivDdO7JMp;|QosfG7Pv%J-#ue;=3$^oaoP_4`!5zhztNKndOp z^b2rTXX^cZ03~>@Z!f^B-=%tgAE0@$E`ht8K^Er)`pfb?V>A8(r`mj({$KwC00000 LNkvXXu0mjfz^M*C diff --git a/icons/obj/guns/manufacturer/frontier_import/onmob.dmi b/icons/obj/guns/manufacturer/frontier_import/onmob.dmi index 274aa3a15036a258a2983f672199b1bd6e9a063c..e0b05e0ec63f8b1da3fcab2b5443aebd71ef58b2 100644 GIT binary patch delta 2524 zcmV<22_yF35}_547Y?8Z0{{R3yb+fl00015ktJ0gz`($=EFgjk7D5cNT>t<80d!JM zQvg8b*k%9#0E>~2dw&q4u&4m1rOFDfelFm^0RX;4Q!Xs$FKhq+30_G=K~#90?OSVi z<0uR@4`U~#og|$$>73dB|2J2{O&XgENO3yb-K{=!&Ipih#7kUo*Zq6MShJ#@v~{_1 z(}HnUWZgPs2x~R2n*NOwn#WLd0B`YctQXk!&V#PN+L|kuIe#<05y8HfSr4!x))rlb zdD|{@y=lc~5LzD%s)@BFS7yBaZy3W!1{#feF+e|nU}0^^m0tiHhR_5UhOtrO3}qaG zR9kd42guUw;;@K&8K8jxp;qI{uC?-4+#ExGatV7b9&v#plTr4NDXZZ{jC zm5B-SXf*wAwto-XO{IJ;*7%sWu+3HCO1zmZc`g5&2MxaN@reME&4MN7%IuMeQc#fbUh`Xg$Zi6Ct-J!c~-+utOQ{{3r2CX%_-BK&J;oU5I z-0cnxfW}hDg;BKD$7mSgQY!}-y}j<^oq0ag{c|*eG~Mb`-ZBs1St}FDX673|8;h-B z8HCwZN4XM!g0&@AV-^iC?-tTa0aEIR5+AHBxXOLC11QZ`*JrHDd^JhjHzo@DRRtMg zu&}n^Du4I&e5eD2zp5Yu4AuY!R=Itq-0z>Ojd~@(JXq@h?i&%LQ?2}1+mC&p=l84? zw(s-75L?T95U&xbE~w60VSCWLy~=#cN_wwZ;ST)YDtfP3;U4^-uyxbZUHL!b+ zKD7ABlc$#GWI(wj;{TAg4A5Vvhm?wW&;2fJ&41&ATG<4xl0Lar4`ZM z73$2y*kxKNKCcXuPPh!kN~PF z=6~%&VHBD)JeT-Qbz&h4@3Pr$5;G*uM$Xyh!=^yl+?oGlfZIyl9NLhA&LL{xqsi^k^j>P?!hbL%>Nzshdc6rI>8L?RXOv2 z`@{1+`M-3k6hg)f?hH$`G3Wm#tq`A`b5%QLNTnxV!vV?|+-spw0b^K;@x=vE!1#=m zAhk?|W(@8OitRwKuoeTPs`CNM(Gc^GL!!yb0qp$qVGjU8Ee1#cA{&^4XEwC20r>dDU$mzYlMR#+oau4ewILHBx46r(*Xg+{N zkF_!nemO@NpoRjcoVp4yvOulO1FEUuADJE1(3M|B*3)aBEbHmD&z9BC>poj9XKl#J zu^4y8r8%G6O>|=r=v;J?z&fgzyMMyknJiyoR0N*zIE$88urN8t+J#pcx&#JAP(E+4 zt15uiPdr2DZfcz@%0k}QU? zZ!P{~;|I(HKJk=_H;6g#Edm$L{E`ImgV$VW#{lUtYwPVEb^PCByHcqw1nB<&z$am2 z7oR{EleXUMNe2*ElLpns$C!^N($<@;dO;~)LX#^K!A{beBx^Ei@QS12$Wv;S?If&i z0lb+(4T@JwUAm}_`A*UTxPOL0ecu(NTb(6TG?FhV)t5>6o>+H-+`65XQhm9UvtAvmZClBq#@MW7@xgYv1c-0s zZVD!CA@1^G6_seLRDUbn4$u_uqm1~XDqU4oBUq&R+MQI7p!BY<6~S?Ew?3_}M^JIs z*BFDo`2kNs93)=OB~mNiw8m?btSbq{sQ}PuI;9ms+G^AQ`w)%cS4|oDcPUW-^p2Xu zatcQ=)(*nJIXrCu`2(O!iQJg=ysn4xA<3(#q$G)JvCi4-r+-~a6aZ803gz=urwO2| z-g+Mqz)Oh=VD#RWlk`V4i(lGyBi{+WzP`LH>!uPpK(1Z=J(}F@3WZAmkH_Qb1(oOk zRwM3IL;5WKjSQOz08S-xOSBHgx7sWa?@IGlZ-!Q54**Uja!WKx&09S)1_3-a0sbPp z4gyRia)4CX{C}#{NBQ*iz{jzmwTlz`m`{>(i4*u40K4rx)18Q;F0L*VWwX$i<&Zvv?|z zSvhgtTa$%)KgA-zs0Day02>3T2(Z%v)B-!pH^6Qsz~-l8wNsrY<<|l`OXFl#KNo9K mejzQeOXF7gKgle7N%c`#wFk)39paGXy$;Yo zfKaOmWy*E4w~~&~>_-F;YHOi90$4X#mQ%BRFJlPQ_p~fPD-#p;+33b!P7kN0(Y_aJ ze|#)0YtCXt=xxqyXx_LzIFf_ODPv-(OMs)VT8F> z4lsJV9pkfkzP96YHiER=8dKe}PvD1ECREMr4}NwQd($!qtF3`*B>)9$YoX>M8(`gK zGD-nb>4yp*tgVD9WAzg#tyhm%ta-hfBwjiT1^udu%rIG4TM1RhdcL*+!e3R9e+edQ z0u!rlUnnn^=cdu91Xw2P7{E&>gLJEvUu(yC9LxHiwL<%`oD8wI%?I%wk@|w}tQFb= z^ZqXLzZ|6Zx*hJo{~e8Ry;$G4Z9vuaP`iqMHHLl8FC9+B!hL zEf1*_^Pb0DXwCD3ENrd6@h0(gf1%V0Wi;~U^E0JOj8EX=m6fF6SnsyEd%&TCVyJyU1%^9V^?UU0BMN9a2}(Ww@~1E z#oCJOhIn}=Ar$;$`ftvkeR_xM6>Dn%H=T`nNC4Fo^XZ{73r(7yIeybze^|)FyDX(79#yRtUf7i?Pj{KiaFoU~kXa4VUeZD9Emu{6p$e6+1VTm@D{NJh- z;dXwO^yX_gK?Q@m6-pIwhP4=9%!mTUXQTwFWh%5_aCcDb0Fs5Z7$9}sPgu@| zn17rSO;%6f;GeG-01#?1K$^kDiV7-%v|ajKuU9~YVJ(v9D`2V=e+22&qe3sw7x3Kz zYoR@LEtEk{?~OgWn{!o0IF`Xl4sd3G%@sxK0c?7#l|}IR8exDM3Y=={Ccwx7wXz7P zr-FZEc2q-G{!`>Qz4py=oL>8GIsCltyXAJ*hO8WmaUZxe_mjJcZVm#Si%ybQNBzoB zSi6(_B}PNw4Uem6e~AYRi*u~aqRP-EFeroab%R4S0UUnf8Nw)EIBrB6v1_w#N1k{N z(>Tp4fb&$6T^)c&o_LOYzEAR%?YSl`zSsHoaed&4XBgA@F3n(!ZeoM|C?stY;Mbpc z2CgvW4+3oT;~es;l(kK>L$7#8O|{~U=S7lDW8d5S=gtqF?H+af-($a1%@zXme*oZ<(AdQ%FvO&7n?30O0&mi!+V~jD`9#{b z*`XJd@+~xlG7+34y+v}Qq6V)x8i72OR>eue+8)3!GpIrFYH3Ixs$+SQ^Z*`VP~T4l z=}~71U?@+Le-6OJ%1QCXxG&E5B$=bQn&Autkt)cNct!dR|#yvsukLfLT4r09A94#yF4Gf0-q-JVYwkcL3?erJRE!DDT=X zMr48|faj393K55r|54Qc@*kG<6;@UF#g(?@3t`&QstKH{J^!hQvXh@ z`-0s2IxVI8N~u@9I#%2EibIXFon`gGcD)6N@6>JzCM^?pd$EdIG+vq=z7Eh-zegGI zhpP0cf2x_mD%IB?q;>|S-}-tPoG16yr}ga&D!%n~=AiHX0Z&C7BwjvRq+Yz~&DSnj zR};!p1)$LkN-u+S)TjZDAsWN4nhNso)}jFD9ht;>2}e2BPQt)7JRJb#1E5=r+?n;f zuZQ|2$*ZWOB#CRW&e`Ip-C7g?Q||`l^VFsZe_*K5dLI$MTZ;-{^xoEs^hdOcU;2I{ ze-r%m>*Xcyn_A=mxp(vTXll0&3YP%BzP|qTf?9L{n;CbiDg7b-jU1Z@0In@^PqYul zx7I2UpGteHH$%Iz2LRU=xhGnr=B-^Bg9N^I0sbbx4gyRqa)8v?{BHC|_4Ib)<6O|* zf5nA;EEmZ~ixgkvlD|<@&#|*e@cgv=yCdR3>n#``b>)m#mjUKLR`}|wPOf&g^?}SO^XJg4FQBn(xUp>F--O5QEve;_)hZYpVxg+ Z{ssVfKOIZR;M)KI002ovPDHLkV1mLDMt1-J diff --git a/icons/obj/guns/manufacturer/frontier_import/righthand.dmi b/icons/obj/guns/manufacturer/frontier_import/righthand.dmi index 406c40e66ac6295fe5c07e5efd37189a6df90c4b..30eeaa12d4e94922dc83c649db731c19ecdb65b5 100644 GIT binary patch delta 2790 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 delta 2539 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 Date: Tue, 1 Oct 2024 16:40:38 -0500 Subject: [PATCH 5/9] Automatic changelog generation for PR #3433 [ci skip] --- html/changelogs/AutoChangeLog-pr-3433.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3433.yml diff --git a/html/changelogs/AutoChangeLog-pr-3433.yml b/html/changelogs/AutoChangeLog-pr-3433.yml new file mode 100644 index 000000000000..147aa4c2b29c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3433.yml @@ -0,0 +1,7 @@ +author: Bjarl +changes: + - {rscadd: One-Shot Rocket Launcher. A quick solution to an armored problem.} + - {rscadd: You can now scribble profane things onto the tube of your rocket launcher. + Use this power wisely.} + - {imageadd: 'Rye: A sprite for a one-shot rocket launcher'} +delete-after: true From 5cbc595c982b142a4da0902f38ec96d2b2744f0a Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Tue, 1 Oct 2024 16:42:55 -0500 Subject: [PATCH 6/9] The Frontier Ablaze: Ramzi's Molotov Cookbook (#3432) ## About The Pull Request **The World Aflame** ![theworldaflame](https://github.com/user-attachments/assets/75b4f565-ab87-48c2-9526-3ef9f7163204) Molotovs now create turf fires on its own turf and adjacent ones. As Hearthwine does something similar with a trickier conditional (contact), it creates turf fires beyond adjacent turfs now. ## Why It's Good For The Game Molotov's are exceedingly Nothing, and this should ignite An Inferno within every spacer's heart. Burns much less fiercely and causes less firestacks than hearthwine in absence of combustible material, but should be enough to deny people access to chokepoints or to cause a panic. ## Changelog :cl: balance: Molotov cocktails now create turf fires balance: Hearthwine now create turf fires in a 3x3 area /:cl: --- code/modules/food_and_drinks/drinks/drinks/bottle.dm | 8 +++++++- .../reagents/chemistry/reagents/trickwine_reagents.dm | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 49de009448f2..0aa4ac7fad38 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -479,7 +479,13 @@ break if(firestarter && active) hit_atom.fire_act() - new /obj/effect/hotspot(get_turf(hit_atom)) + var/turf/T = get_turf(hit_atom) + T.IgniteTurf(30) + var/turf/otherT + for(var/direction in GLOB.cardinals) + otherT = get_step(T, direction) + otherT.IgniteTurf(30) + new /obj/effect/hotspot(otherT) ..() /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm index 9f907a33b022..ff82cd185fb2 100644 --- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @@ -126,7 +126,7 @@ T.IgniteTurf(reac_volume) new /obj/effect/hotspot(T, reac_volume * 1, FIRE_MINIMUM_TEMPERATURE_TO_EXIST + reac_volume * 10) var/turf/otherT - for(var/direction in GLOB.cardinals) + for(var/direction in GLOB.alldirs) otherT = get_step(T, direction) otherT.IgniteTurf(reac_volume) new /obj/effect/hotspot(otherT, reac_volume * 1, FIRE_MINIMUM_TEMPERATURE_TO_EXIST + reac_volume * 10) From 89b8f3084cfd1684e116b4b33927b62bddeeab07 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 1 Oct 2024 16:53:41 -0500 Subject: [PATCH 7/9] Automatic changelog generation for PR #3432 [ci skip] --- html/changelogs/AutoChangeLog-pr-3432.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3432.yml diff --git a/html/changelogs/AutoChangeLog-pr-3432.yml b/html/changelogs/AutoChangeLog-pr-3432.yml new file mode 100644 index 000000000000..dc99f431c6d9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3432.yml @@ -0,0 +1,5 @@ +author: generalthrax +changes: + - {balance: Molotov cocktails now create turf fires} + - {balance: Hearthwine now create turf fires in a 3x3 area} +delete-after: true From 67894b957967fdaa11ad5d845bcbda5bc30655b1 Mon Sep 17 00:00:00 2001 From: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Date: Tue, 1 Oct 2024 16:13:16 -0700 Subject: [PATCH 8/9] fixes lints (#3463) --- .github/workflows/ci_suite.yml | 9 +++++---- code/modules/power/apc.dm | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 47f8b1df9941..915b6021e98c 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -11,7 +11,7 @@ on: - master jobs: run_linters: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Run Linters runs-on: ubuntu-22.04 steps: @@ -70,6 +70,7 @@ jobs: ~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1 - name: Annotate Lints + if: always() uses: yogstation13/DreamAnnotate@v2 with: outputFile: output-annotations.txt @@ -83,7 +84,7 @@ jobs: cat check_regex_output.txt compile_all_maps: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Compile Maps runs-on: ubuntu-latest steps: @@ -105,7 +106,7 @@ jobs: tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS -DFULL_INIT run_all_tests: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Integration Tests strategy: fail-fast: false @@ -135,7 +136,7 @@ jobs: # minor: ${{ matrix.minor }} test_windows: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Windows Build runs-on: windows-latest steps: diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 75cf85513236..4f2d70b680ad 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -217,7 +217,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) // this allows the APC to be embedded in a wall, yet still inside an area if (building) setDir(ndir) - tdir = dir// to fix Vars bug + tdir = dir switch(tdir) if(NORTH) From e78e0072f1f26510d70c36c76a4a3140a98f6bd0 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 2 Oct 2024 01:02:17 +0000 Subject: [PATCH 9/9] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3345.yml | 6 ------ html/changelogs/AutoChangeLog-pr-3432.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3433.yml | 7 ------- html/changelogs/archive/2024-10.yml | 13 +++++++++++++ 4 files changed, 13 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3345.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3432.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3433.yml diff --git a/html/changelogs/AutoChangeLog-pr-3345.yml b/html/changelogs/AutoChangeLog-pr-3345.yml deleted file mode 100644 index 3da650007188..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3345.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: tmtmtl30, Thgvr -changes: - - {rscadd: 'Added bunkbeds, which can now be crafted with metal or placed by mappers.'} - - {bugfix: Beds facing alternate directions now correctly support people buckling - to them and bedsheets being placed on top of them.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3432.yml b/html/changelogs/AutoChangeLog-pr-3432.yml deleted file mode 100644 index dc99f431c6d9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3432.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: generalthrax -changes: - - {balance: Molotov cocktails now create turf fires} - - {balance: Hearthwine now create turf fires in a 3x3 area} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3433.yml b/html/changelogs/AutoChangeLog-pr-3433.yml deleted file mode 100644 index 147aa4c2b29c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3433.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Bjarl -changes: - - {rscadd: One-Shot Rocket Launcher. A quick solution to an armored problem.} - - {rscadd: You can now scribble profane things onto the tube of your rocket launcher. - Use this power wisely.} - - {imageadd: 'Rye: A sprite for a one-shot rocket launcher'} -delete-after: true diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml index 546d4d7ab402..93a916504a34 100644 --- a/html/changelogs/archive/2024-10.yml +++ b/html/changelogs/archive/2024-10.yml @@ -8,3 +8,16 @@ - bugfix: You can now fit all knives in mining webbings. SomeguyManperson: - bugfix: hallucinations can no longer be permanent unless treated +2024-10-02: + Bjarl: + - rscadd: One-Shot Rocket Launcher. A quick solution to an armored problem. + - rscadd: You can now scribble profane things onto the tube of your rocket launcher. + Use this power wisely. + - imageadd: 'Rye: A sprite for a one-shot rocket launcher' + generalthrax: + - balance: Molotov cocktails now create turf fires + - balance: Hearthwine now create turf fires in a 3x3 area + tmtmtl30, Thgvr: + - rscadd: Added bunkbeds, which can now be crafted with metal or placed by mappers. + - bugfix: Beds facing alternate directions now correctly support people buckling + to them and bedsheets being placed on top of them.