From 79ba27e6ce79fa282d2deda5906638af40b58eed Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Sun, 2 Feb 2025 00:14:31 +0000 Subject: [PATCH 01/20] Automatic changelog compile [ci skip] --- html/changelog.html | 10 ++++++++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/AutoChangeLog-pr-12203.yml | 9 --------- 3 files changed, 18 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12203.yml diff --git a/html/changelog.html b/html/changelog.html index 7d1fa4801b909..bc4ad63b6d080 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,16 @@ -->
+

02 February 2025

+

Tsar-Salat updated:

+ +

01 February 2025

PowerfulBacon updated:

+

grimm-hollowknight, tralezab, therealdoooc213 updated:

+
    +
  • New mediborg skin, the Qualified doctor. Who may or may not be, 3 medibots in a trenchcoat.
  • +

01 February 2025

PowerfulBacon updated:

diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index dd84524456379..778a9a2b80774 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -45574,3 +45574,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: cyborgs now have a exp_requirement of 180 minutes, up from 120 - tweak: chemists need explicitly medical experience, and atmosians need explicitly engineering experience. + grimm-hollowknight, tralezab, therealdoooc213: + - rscadd: New mediborg skin, the Qualified doctor. Who may or may not be, 3 medibots + in a trenchcoat. diff --git a/html/changelogs/AutoChangeLog-pr-12162.yml b/html/changelogs/AutoChangeLog-pr-12162.yml deleted file mode 100644 index 0c7a6634e0660..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12162.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: grimm-hollowknight, tralezab, therealdoooc213 -delete-after: true -changes: - - rscadd: New mediborg skin, the Qualified doctor. Who may or may not be, 3 medibots - in a trenchcoat. From 923cca30ad0c5e19f3a195d484720fd9f7c2eea5 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 00:14:01 +0000 Subject: [PATCH 05/20] Automatic changelog compile [ci skip] --- html/changelog.html | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 22f7657ec0ecb..4164517b82600 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -709,26 +709,6 @@

XeonMations updated:

  • Eating the chef's food now provides small buffs to you.
- -

02 December 2024

-

Dejaku51 updated:

-
    -
  • Added NTNet relay to runtime station
  • -
-

Programs-The-Station updated:

-
    -
  • Budget Constraints Clarified in the RBMK Fuel Rod Crate
  • -
-

Therealdoooc213 updated:

-
    -
  • alien weeds no longer hover above openspace tiles
  • -
  • hand teleporters are no longer available via science lootdrop spawners, now replaced with a portal gun
  • -
  • ninja dojo now has newfood oven & griddle
  • -
-

Tsar-Salat updated:

-
    -
  • removes references to obsolete polycrystals
  • -
GoonStation 13 Development Team From 4e04bfd0d6f1d58c29a9654138558e5be5e81955 Mon Sep 17 00:00:00 2001 From: PowerfulBacon <26465327+PowerfulBacon@users.noreply.github.com> Date: Mon, 3 Feb 2025 05:54:20 +0000 Subject: [PATCH 06/20] Update xenoartifact_minors.dm (#12226) --- code/modules/xenoarchaeology/traits/xenoartifact_minors.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm index c9891260279aa..49804432c61cd 100644 --- a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm +++ b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm @@ -173,7 +173,7 @@ /datum/action/xeno_senitent_action/New(master) . = ..() - if (istype(master, /obj/item/xenoartifact)) + if (!istype(master, /obj/item/xenoartifact)) CRASH("Xeno artifact action assigned to a non-xeno artifact") /datum/action/xeno_senitent_action/on_activate(mob/user, atom/target) @@ -201,7 +201,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/effect/mob_spawn/sentient_artifact) -/obj/effect/mob_spawn/sentient_artifact/Initialize(mapload, var/obj/item/xenoartifact/Z) +/obj/effect/mob_spawn/sentient_artifact/Initialize(mapload, obj/item/xenoartifact/Z) if(!Z) qdel(src) return FALSE From 5df7d993d816b6e582ad28b8d43b266027145f09 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:59:10 -0600 Subject: [PATCH 07/20] Automatic changelog generation for PR #12226 [ci skip] --- html/changelogs/AutoChangeLog-pr-12226.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12226.yml diff --git a/html/changelogs/AutoChangeLog-pr-12226.yml b/html/changelogs/AutoChangeLog-pr-12226.yml new file mode 100644 index 0000000000000..2c5c8a9fc5630 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12226.yml @@ -0,0 +1,4 @@ +author: PowerfulBacon +delete-after: true +changes: + - bugfix: Fixes a bug causing crashes on xenoartifacts that failed CI From ec9bebb44c08e9efbb057ff141320858ea645af7 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 06:04:42 +0000 Subject: [PATCH 08/20] Automatic changelog compile [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-12226.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12226.yml diff --git a/html/changelog.html b/html/changelog.html index 4164517b82600..b80f28d382a06 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
+

03 February 2025

+

PowerfulBacon updated:

+
    +
  • Fixes a bug causing crashes on xenoartifacts that failed CI
  • +
+

02 February 2025

Tsar-Salat updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 778a9a2b80774..31661a6126c9d 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -45577,3 +45577,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. grimm-hollowknight, tralezab, therealdoooc213: - rscadd: New mediborg skin, the Qualified doctor. Who may or may not be, 3 medibots in a trenchcoat. +2025-02-03: + PowerfulBacon: + - bugfix: Fixes a bug causing crashes on xenoartifacts that failed CI diff --git a/html/changelogs/AutoChangeLog-pr-12226.yml b/html/changelogs/AutoChangeLog-pr-12226.yml deleted file mode 100644 index 2c5c8a9fc5630..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12226.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: PowerfulBacon -delete-after: true -changes: - - bugfix: Fixes a bug causing crashes on xenoartifacts that failed CI From 774bff990f01f65693ead5795db1e2ed97d16624 Mon Sep 17 00:00:00 2001 From: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Date: Mon, 3 Feb 2025 05:40:34 -0600 Subject: [PATCH 09/20] GET OUT (#12207) --- code/modules/mob/living/living.dm | 2 +- code/modules/research/xenobiology/crossbreeding/warping.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 719db65bf8766..dd7feeab4f982 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -63,7 +63,7 @@ return if(buckled || now_pushing) return - if(confused && stat == CONSCIOUS && body_position == STANDING_UP && m_intent == "run" && !ismovable(A) && !HAS_MOB_PROPERTY(src, PROP_CANTBUMPSLAM)) // ported from VORE, sue me //Suing you rn + if(confused && stat == CONSCIOUS && body_position == STANDING_UP && m_intent == "run" && !ismovable(A) && !HAS_MOB_PROPERTY(src, PROP_CANTBUMPSLAM)) APPLY_MOB_PROPERTY(src, PROP_CANTBUMPSLAM, src.type) //Bump() is called continuously so ratelimit the check to 20 seconds if it passes or 5 if it doesn't if(prob(10)) playsound(get_turf(src), "punch", 25, 1, -1) diff --git a/code/modules/research/xenobiology/crossbreeding/warping.dm b/code/modules/research/xenobiology/crossbreeding/warping.dm index 6b2489523d468..0dea11969428a 100644 --- a/code/modules/research/xenobiology/crossbreeding/warping.dm +++ b/code/modules/research/xenobiology/crossbreeding/warping.dm @@ -180,7 +180,7 @@ put up a rune with bluespace effects, lots of those runes are fluff or act as a for(var/obj/item/slime_extract/extract in rune_turf) if(extract.color_slime == extracttype || !extracttype) //check if the extract is the first one or of the right color. extracttype = extract.color_slime - qdel(extract) //vores the slime extract + qdel(extract) //destroy the slime extract req_extracts-- if(req_extracts <= 0) switch(extracttype) diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 2895f562fd877..ae594f829500c 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -48,8 +48,8 @@ . = ..() if(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED).len >= 30) for(var/i in return_drivers()) - var/mob/voreman = i - voreman.client.give_award(/datum/award/achievement/misc/round_and_full, voreman) + var/mob/kidnapped = i + kidnapped.client.give_award(/datum/award/achievement/misc/round_and_full, kidnapped) /obj/vehicle/sealed/car/clowncar/attack_animal(mob/living/simple_animal/M) if((M.loc != src) || M.environment_smash & (ENVIRONMENT_SMASH_WALLS|ENVIRONMENT_SMASH_RWALLS)) From 60fe366b89cbe88a5b9bc81b6c8eed1d3e37f025 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 05:45:01 -0600 Subject: [PATCH 10/20] Automatic changelog generation for PR #12207 [ci skip] --- html/changelogs/AutoChangeLog-pr-12207.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12207.yml diff --git a/html/changelogs/AutoChangeLog-pr-12207.yml b/html/changelogs/AutoChangeLog-pr-12207.yml new file mode 100644 index 0000000000000..b5b6c2a1b9397 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12207.yml @@ -0,0 +1,4 @@ +author: mrmanlikesbt +delete-after: true +changes: + - code_imp: NO MORE VORE From 893b9e0c3a31e492dcb8752c7f37e98b64288c4e Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:05:25 +0000 Subject: [PATCH 11/20] Automatic changelog compile [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-12207.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12207.yml diff --git a/html/changelog.html b/html/changelog.html index b80f28d382a06..c092f53e2cb62 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,10 @@

    PowerfulBacon updated:

    • Fixes a bug causing crashes on xenoartifacts that failed CI
    +

    mrmanlikesbt updated:

    +
      +
    • NO MORE VORE
    • +

    02 February 2025

    Tsar-Salat updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 31661a6126c9d..962c2f7902958 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -45580,3 +45580,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2025-02-03: PowerfulBacon: - bugfix: Fixes a bug causing crashes on xenoartifacts that failed CI + mrmanlikesbt: + - code_imp: NO MORE VORE diff --git a/html/changelogs/AutoChangeLog-pr-12207.yml b/html/changelogs/AutoChangeLog-pr-12207.yml deleted file mode 100644 index b5b6c2a1b9397..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12207.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: mrmanlikesbt -delete-after: true -changes: - - code_imp: NO MORE VORE From 552a8aa59aacc2af59aba2f3b1f078e4a6f4e03f Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:17:45 +0200 Subject: [PATCH 12/20] Update RPD.dm (#12230) --- code/game/objects/items/RPD.dm | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index aafc37b361224..e93bef619e7ea 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -440,7 +440,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if((mode & DESTROY_MODE) && istype(attack_target, /obj/item/pipe) || istype(attack_target, /obj/structure/disposalconstruct) || istype(attack_target, /obj/structure/c_transit_tube) || istype(attack_target, /obj/structure/c_transit_tube_pod) || istype(attack_target, /obj/item/pipe_meter) || istype(attack_target, /obj/structure/disposalpipe/broken)) activate() qdel(attack_target) - return + return TRUE if(mode & REPROGRAM_MODE) // If this is a placed smart pipe, try to reprogram it @@ -448,16 +448,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(istype(target_smart_pipe)) if(target_smart_pipe.dir == ALL_CARDINALS) balloon_alert(user, "has no unconnected directions!") - return + return TRUE var/old_init_dir = target_smart_pipe.get_init_directions() if(old_init_dir == p_init_dir) balloon_alert(user, "already configured!") - return + return TRUE // Check for differences in unconnected directions var/target_differences = (p_init_dir ^ old_init_dir) & ~target_smart_pipe.connections if(!target_differences) balloon_alert(user, "already configured for its directions!") - return + return TRUE activate() @@ -467,7 +467,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Double check to make sure that nothing has changed. If anything we were about to change was connected during do_after, abort if(target_differences & target_smart_pipe.connections) balloon_alert(user, "can't configure for its direction!") - return + return TRUE // Grab the current initializable directions, which may differ from old_init_dir if someone else was working on the same pipe at the same time var/current_init_dir = target_smart_pipe.get_init_directions() // Access p_init_dir directly. The RPD can change target layer and initializable directions (though not pipe type or dir) while working to dispense and connect a component, @@ -476,7 +476,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Don't make a smart pipe with only one connection if(ISSTUB(new_init_dir)) balloon_alert(user, "no one directional pipes allowed!") - return + return TRUE target_smart_pipe.set_init_directions(new_init_dir) // We're now reconfigured. // We can never disconnect from existing connections, but we can connect to previously unconnected directions, and should immediately do so @@ -502,20 +502,21 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Finally, update our internal state - update_pipe_icon also updates dir and connections target_smart_pipe.update_pipe_icon() user.visible_message(span_notice("[user] reprograms the [target_smart_pipe]."), span_notice("You reprogram the [target_smart_pipe].")) - return + return TRUE // If this is an unplaced smart pipe, try to reprogram it var/obj/item/pipe/quaternary/target_unsecured_pipe = attack_target if(istype(target_unsecured_pipe) && ispath(target_unsecured_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart)) // An unplaced pipe never has any existing connections, so just directly assign the new configuration target_unsecured_pipe.p_init_dir = p_init_dir target_unsecured_pipe.update() - return + return TRUE if(mode & BUILD_MODE) switch(category) //if we've gotten this var, the target is valid if(ATMOS_CATEGORY) //Making pipes if(!do_pipe_build(attack_target, user, params)) return ..() + return TRUE if(DISPOSALS_CATEGORY) //Making disposals pipes if(!can_make_pipe) @@ -523,7 +524,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( attack_target = get_turf(attack_target) if(isclosedturf(attack_target)) balloon_alert(user, "target is blocked!") - return + return TRUE activate() if(do_after(user, disposal_build_speed, target = attack_target)) var/obj/structure/disposalconstruct/new_disposals_segment = new (attack_target, queued_pipe_type, queued_pipe_dir, queued_pipe_flipped) @@ -531,7 +532,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(!new_disposals_segment.can_place()) balloon_alert(user, "not enough room!") qdel(new_disposals_segment) - return + return TRUE activate() @@ -539,7 +540,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( new_disposals_segment.update_appearance() if(mode & WRENCH_MODE) new_disposals_segment.wrench_act(user, src) - return + return TRUE if(TRANSIT_CATEGORY) //Making transit tubes if(!can_make_pipe) @@ -547,12 +548,12 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( attack_target = get_turf(attack_target) if(isclosedturf(attack_target)) balloon_alert(user, "something in the way!") - return + return TRUE var/turf/target_turf = get_turf(attack_target) if(target_turf.is_blocked_turf(exclude_mobs = TRUE)) balloon_alert(user, "something in the way!") - return + return TRUE activate() if(do_after(user, transit_build_speed, target = attack_target)) @@ -574,7 +575,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( tube.add_fingerprint(usr) if(mode & WRENCH_MODE) tube.wrench_act(user, src) - return + return TRUE else return ..() From cfb58380ba31082386bf251f3a94ac17baea5b7a Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 07:22:31 -0600 Subject: [PATCH 13/20] Automatic changelog generation for PR #12230 [ci skip] --- html/changelogs/AutoChangeLog-pr-12230.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12230.yml diff --git a/html/changelogs/AutoChangeLog-pr-12230.yml b/html/changelogs/AutoChangeLog-pr-12230.yml new file mode 100644 index 0000000000000..ea710fce01067 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12230.yml @@ -0,0 +1,4 @@ +author: XeonMations +delete-after: true +changes: + - bugfix: RPDs no longer hit pipes on the ground when placing down pipes. From e711c933d31c1b21633a478ad780e14d73ccca60 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 3 Feb 2025 14:03:44 +0000 Subject: [PATCH 14/20] Automatic changelog compile [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-12230.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12230.yml diff --git a/html/changelog.html b/html/changelog.html index c092f53e2cb62..58f4c6a931e0d 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,10 @@

    PowerfulBacon updated:

    • Fixes a bug causing crashes on xenoartifacts that failed CI
    +

    XeonMations updated:

    +
      +
    • RPDs no longer hit pipes on the ground when placing down pipes.
    • +

    mrmanlikesbt updated:

    • NO MORE VORE
    • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 962c2f7902958..87b2bafe24227 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -45580,5 +45580,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2025-02-03: PowerfulBacon: - bugfix: Fixes a bug causing crashes on xenoartifacts that failed CI + XeonMations: + - bugfix: RPDs no longer hit pipes on the ground when placing down pipes. mrmanlikesbt: - code_imp: NO MORE VORE diff --git a/html/changelogs/AutoChangeLog-pr-12230.yml b/html/changelogs/AutoChangeLog-pr-12230.yml deleted file mode 100644 index ea710fce01067..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12230.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: XeonMations -delete-after: true -changes: - - bugfix: RPDs no longer hit pipes on the ground when placing down pipes. From d73b592061c7fa868c4b6a3f1f8774426050d9cf Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 4 Feb 2025 00:13:28 +0000 Subject: [PATCH 15/20] Automatic changelog compile [ci skip] --- html/changelog.html | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 58f4c6a931e0d..d54ddd7e5b48d 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -701,28 +701,6 @@

      XeonMations updated:

      • Fixed food buff durations being way too long.
      - -

      03 December 2024

      -

      AnturK, Mooshimi, nikothedude, lebedev, kawoppi, RunKitenzRComing, DrDiasyl, larentoun, Mothblocks, jlsnow301, MrMelbert, Sadboysuss, XeonMations updated:

      -
        -
      • Fixed custom emotes not showing up when a person is deaf.
      • -
      • Refactored some emote code.
      • -
      • People wearing a security mask now have a special deathgasp.
      • -
      • Added *smirk emote.
      • -
      • Added *sweat, which is the same as *sweatdrop.
      • -
      -

      ClownMoff updated:

      -
        -
      • Updates the sprites for the following drinks when poured on a glass: Beer, Between the sheets, Margarita, Manly Dorf, Syndicate Bomb
      • -
      -

      PowerfulBacon updated:

      -
        -
      • Moved a cable on deltastation supermatter's APC so that 2 wires don't overlap at the terminal.
      • -
      -

      XeonMations updated:

      -
        -
      • Eating the chef's food now provides small buffs to you.
      • -
GoonStation 13 Development Team From ed20a11cfee296f166d3fb5dd8bb9dbdbb993c64 Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Tue, 4 Feb 2025 19:53:44 +0200 Subject: [PATCH 16/20] Resolves the fullscreen warning issue before we forget (#12215) * Update fullscreen.dm * Update fullscreen.dm * Update fullscreen.dm * Update fullscreen.dm * Update fullscreen.dm * Update fullscreen.dm --- .../preferences/entries/player/fullscreen.dm | 74 ++++++++++--------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/code/modules/client/preferences/entries/player/fullscreen.dm b/code/modules/client/preferences/entries/player/fullscreen.dm index 061f6c1769405..6a6d6e75c56a7 100644 --- a/code/modules/client/preferences/entries/player/fullscreen.dm +++ b/code/modules/client/preferences/entries/player/fullscreen.dm @@ -1,7 +1,3 @@ -#if (MIN_COMPILER_VERSION > 515 && MIN_COMPILER_BUILD > 1630) -#warn ATTENTION!! ONCE 515.1631 IS REQUIRED REPLACE WITH winset(client, "mainwindow", "menu=;is-fullscreen=true"). This means no double maximise calls to make sure window fits, and supresses titlebar, can-resize and is-maximized here making those redundant both implementations are functionally "windowed borderless" -#endif - /datum/preference/toggle/fullscreen db_key = "fullscreen" category = PREFERENCE_CATEGORY_GAME_PREFERENCES @@ -9,36 +5,48 @@ default_value = FALSE /datum/preference/toggle/fullscreen/apply_to_client(client/client, value) - if (value) - // Delete the menu - winset(client, "mainwindow", "menu=\"\"") - // Switch to the cool status bar - winset(client, "mainwindow", "on-status=\".winset \\\"\[\[*]]=\\\"\\\" ? status_bar.text=\[\[*]] status_bar.is-visible=true : status_bar.is-visible=false\\\"\"") - winset(client, "status_bar_wide", "is-visible=false") - // Switch to fullscreen mode - winset(client, "mainwindow","titlebar=false") - winset(client, "mainwindow","can-resize=false") - // Set it to minimized first because otherwise it doesn't enter fullscreen properly - // This line is important, and the game won't properly enter fullscreen mode otherwise - winset(client, "mainwindow","is-minimized=true") - winset(client, "mainwindow","is-maximized=true") - // Set the main window's size - winset(client, null, "split.size=mainwindow.size") - // Fit the viewport - INVOKE_ASYNC(client, TYPE_VERB_REF(/client, fit_viewport)) + if(client.byond_version <= 515 || client.byond_build <= 1630) + if (value) + // Delete the menu + winset(client, "mainwindow", "menu=\"\"") + // Switch to the cool status bar + winset(client, "mainwindow", "on-status=\".winset \\\"\[\[*]]=\\\"\\\" ? status_bar.text=\[\[*]] status_bar.is-visible=true : status_bar.is-visible=false\\\"\"") + winset(client, "status_bar_wide", "is-visible=false") + // Switch to fullscreen mode + winset(client, "mainwindow","titlebar=false") + winset(client, "mainwindow","can-resize=false") + // Set it to minimized first because otherwise it doesn't enter fullscreen properly + // This line is important, and the game won't properly enter fullscreen mode otherwise + winset(client, "mainwindow","is-minimized=true") + winset(client, "mainwindow","is-maximized=true") + // Set the main window's size + winset(client, null, "split.size=mainwindow.size") + // Fit the viewport + INVOKE_ASYNC(client, TYPE_VERB_REF(/client, fit_viewport)) + else + // Restore the menu + winset(client, "mainwindow", "menu=\"menu\"") + // Switch to the lame status bar + winset(client, "mainwindow", "on-status=\".winset \\\"status_bar_wide.text = \[\[*]]\\\"\"") + winset(client, "status_bar", "is-visible=false") + winset(client, "status_bar_wide", "is-visible=true") + // Exit fullscreen mode + winset(client, "mainwindow","titlebar=true") + winset(client, "mainwindow","can-resize=true") + winset(client, "mainwindow","is-maximized=true") + // Fix the mapsize, turning off statusbar doesn't update scaling + INVOKE_ASYNC(src, PROC_REF(fix_mapsize), client) else - // Restore the menu - winset(client, "mainwindow", "menu=\"menu\"") - // Switch to the lame status bar - winset(client, "mainwindow", "on-status=\".winset \\\"status_bar_wide.text = \[\[*]]\\\"\"") - winset(client, "status_bar", "is-visible=false") - winset(client, "status_bar_wide", "is-visible=true") - // Exit fullscreen mode - winset(client, "mainwindow","titlebar=true") - winset(client, "mainwindow","can-resize=true") - winset(client, "mainwindow","is-maximized=true") - // Fix the mapsize, turning off statusbar doesn't update scaling - INVOKE_ASYNC(src, PROC_REF(fix_mapsize), client) + if(value) + winset(client, "mainwindow", "menu=;is-fullscreen=true") + winset(client, "status_bar_wide", "is-visible=false") + winset(client, "mainwindow", "on-status=\".winset \\\"\[\[*]]=\\\"\\\" ? status_bar.text=\[\[*]] status_bar.is-visible=true : status_bar.is-visible=false\\\"\"") + else + winset(client, "mainwindow", "menu=;is-fullscreen=false") + winset(client, "status_bar_wide", "is-visible=true") + winset(client, "mainwindow", "on-status=\".winset \\\"status_bar_wide.text = \[\[*]]\\\"\"") + winset(client, "status_bar", "is-visible=false") + INVOKE_ASYNC(client, TYPE_VERB_REF(/client, fit_viewport)) /datum/preference/toggle/fullscreen/proc/fix_mapsize(client/client) var/windowsize = winget(client, "split", "size") From ddcfd200e2f92cfcb9987eb0bcdaf6e95a073429 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:59:20 -0600 Subject: [PATCH 17/20] Automatic changelog generation for PR #12215 [ci skip] --- html/changelogs/AutoChangeLog-pr-12215.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12215.yml diff --git a/html/changelogs/AutoChangeLog-pr-12215.yml b/html/changelogs/AutoChangeLog-pr-12215.yml new file mode 100644 index 0000000000000..645037e8ca1cf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12215.yml @@ -0,0 +1,5 @@ +author: XeonMations +delete-after: true +changes: + - code_imp: Changed some more fullscreen code, should work better on 515 clients + now. From 50060618cd35c871002bda0074350ad60417a3f1 Mon Sep 17 00:00:00 2001 From: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:01:27 -0600 Subject: [PATCH 18/20] [PORT] Heretics dream of objects around unused influences (#12150) * initial * Update Dreaming.dm * Update Dreaming.dm * begone * if(dreamer.client.key == "powerfulbacon") dreamer.client.ban() * ok this should actually be ready now --- .../antagonists/heretic/heretic_antag.dm | 3 +- code/modules/flufftext/Dreaming.dm | 203 ++++++++++++++++-- strings/dreamstrings.txt | 145 ++++++++++--- strings/tips.txt | 1 + .../tgui/interfaces/AntagInfoHeretic.tsx | 3 +- 5 files changed, 303 insertions(+), 52 deletions(-) diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm index 72d590d5c90ba..921b24ea4eaf9 100644 --- a/code/modules/antagonists/heretic/heretic_antag.dm +++ b/code/modules/antagonists/heretic/heretic_antag.dm @@ -154,8 +154,8 @@ return ..() /datum/antagonist/heretic/on_gain() + var/mob/living/carbon/C = owner.current //only carbons have dna now, so we have to typecast if(isipc(owner.current))//Due to IPCs having a mechanical heart it messes with the living heart, so no IPC heretics for now - var/mob/living/carbon/C = owner.current //only carbons have dna now, so we have to typecast C.set_species(/datum/species/human) var/prefs_name = C.client?.prefs?.read_character_preference(/datum/preference/name/backup_human) if(prefs_name) @@ -170,6 +170,7 @@ GLOB.reality_smash_track.add_tracked_mind(owner) addtimer(CALLBACK(src, PROC_REF(passive_influence_gain)), passive_gain_timer) // Gain +1 knowledge every 20 minutes. + addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, finish_manus_dream_cooldown)), 1 MINUTES) return ..() /datum/antagonist/heretic/on_removal() diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 4ef3e49a0fd69..02d3aaa937315 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -1,17 +1,124 @@ +/** + * Begins the dreaming process on a sleeping carbon. + * + * Checks a 10% chance and whether or not the carbon this is called on is already dreaming. If + * the prob() passes and there are no dream images left to display, a new dream is constructed. + */ + /mob/living/carbon/proc/handle_dreams() if(prob(10) && !dreaming) dream() +/** + * Generates a dream sequence to be displayed to the sleeper. + * + * Generates the "dream" to display to the sleeper. A dream consists of a subject, a verb, and (most of the time) an object, displayed in sequence to the sleeper. + * Dreams are generated as a list of strings stored inside dream_fragments, which is passed to and displayed in dream_sequence(). + * Bedsheets on the sleeper will provide a custom subject for the dream, pulled from the dream_messages on each bedsheet. + */ + +/mob/living/carbon/ + var/manus_dream_allowed = FALSE + +/mob/living/carbon/proc/finish_manus_dream_cooldown() + to_chat(src, span_hypnophrase("You feel ready to walk the forest of the manus again..")) + balloon_alert(src, "You are ready to dream again") + manus_dream_allowed = TRUE + /mob/living/carbon/proc/dream() set waitfor = FALSE - var/list/dream_fragments = list() + var/datum/dream/chosen_dream + + if (IS_HERETIC(src) && manus_dream_allowed && GLOB.reality_smash_track.smashes.len) + chosen_dream = new /datum/dream/heretic(pick(GLOB.reality_smash_track.smashes)) + else + chosen_dream = pick_weight(GLOB.dreams) + + dreaming = TRUE + dream_sequence(chosen_dream.GenerateDream(src), chosen_dream) + +/** + * Displays the passed list of dream fragments to a sleeping carbon. + * + * Displays the first string of the passed dream fragments, then either ends the dream sequence + * or performs a callback on itself depending on if there are any remaining dream fragments to display. + * + * Arguments: + * * dream_fragments - A list of strings, in the order they will be displayed. + * * current_dream - The dream datum used for the current dream + */ + +/mob/living/carbon/proc/dream_sequence(list/dream_fragments, datum/dream/current_dream) + if(stat != UNCONSCIOUS || HAS_TRAIT(src, TRAIT_CRITICAL_CONDITION)) + dreaming = FALSE + current_dream.OnDreamEnd(src) + return + var/next_message = dream_fragments[1] + dream_fragments.Cut(1,2) + + if(istype(next_message, /datum/callback)) + var/datum/callback/something_happens = next_message + next_message = something_happens.InvokeAsync(src) + + to_chat(src, span_notice("... [next_message] ...")) + + if(LAZYLEN(dream_fragments)) + var/next_wait = rand(10, 30) + if(current_dream.sleep_until_finished) + AdjustSleeping(next_wait) + addtimer(CALLBACK(src, PROC_REF(dream_sequence), dream_fragments, current_dream), next_wait) + else + dreaming = FALSE + current_dream.OnDreamEnd(src) + +//------------------------- +// DREAM DATUMS + +GLOBAL_LIST_INIT(dreams, populate_dream_list()) + +/proc/populate_dream_list() + var/list/output = list() + for(var/datum/dream/dream_type as anything in subtypesof(/datum/dream)) + output[new dream_type] = initial(dream_type.weight) + return output + +/** + * Contains all the behavior needed to play a kind of dream. + * All dream types get randomly selected from based on weight when an appropriate mobs dreams. + */ +/datum/dream + /// The relative chance this dream will be randomly selected + var/weight = 0 + + /// Causes the mob to sleep long enough for the dream to finish if begun + var/sleep_until_finished = FALSE + +/** + * Called when beginning a new dream for the dreamer. + * Gives back a list of dream events. Events can be text or callbacks that return text. + */ +/datum/dream/proc/GenerateDream(mob/living/carbon/dreamer) + return list() + +/** + * Called when the dream ends or is interrupted. + */ +/datum/dream/proc/OnDreamEnd(mob/living/carbon/dreamer) + return + +/// The classic random dream of various words that might form a cohesive narrative, but usually wont +/datum/dream/random + weight = 100 + +/datum/dream/random/GenerateDream(mob/living/carbon/dreamer) var/list/custom_dream_nouns = list() var/fragment = "" - for(var/obj/item/bedsheet/sheet in loc) + for(var/obj/item/bedsheet/sheet in dreamer.loc) custom_dream_nouns += sheet.dream_messages - dream_fragments += "you see" + . = list() + . += "you see" //Subject if(custom_dream_nouns.len && prob(90)) @@ -19,13 +126,13 @@ else fragment += pick(GLOB.dream_strings) - if(prob(50)) + if(prob(50)) //Replace the adjective space with an adjective, or just get rid of it fragment = replacetext(fragment, "%ADJECTIVE%", pick(GLOB.adjectives)) else fragment = replacetext(fragment, "%ADJECTIVE% ", "") if(findtext(fragment, "%A% ")) fragment = "\a [replacetext(fragment, "%A% ", "")]" - dream_fragments += fragment + . += fragment //Verb fragment = "" @@ -36,10 +143,9 @@ else fragment += "will " fragment += pick(GLOB.verbs) - dream_fragments += fragment + . += fragment if(prob(25)) - dream_sequence(dream_fragments) return //Object @@ -51,19 +157,76 @@ fragment = replacetext(fragment, "%ADJECTIVE% ", "") if(findtext(fragment, "%A% ")) fragment = "\a [replacetext(fragment, "%A% ", "")]" - dream_fragments += fragment + . += fragment - dreaming = TRUE - dream_sequence(dream_fragments) +/// Heretics can see dreams about random machinery from the perspective of a random unused influence +/datum/dream/heretic + sleep_until_finished = TRUE + /// The influence we will be dreaming about + var/obj/effect/heretic_influence/influence + /// The distance to the objects visible from the influence during the dream + var/dream_view_range = 5 + var/list/what_you_can_see = list( + /obj/item, + /obj/structure, + /obj/machinery, + ) + var/static/list/what_you_cant_see = typecacheof(list( + // Underfloor stuff and default wallmounts + /obj/item/radio/intercom, + /obj/structure/cable, + /obj/structure/disposalpipe/segment, + /obj/machinery/atmospherics/pipe, + /obj/machinery/atmospherics/components/unary/vent_scrubber, + /obj/machinery/atmospherics/components/unary/vent_pump, + /obj/machinery/duct, + /obj/machinery/navbeacon, + /obj/machinery/power/terminal, + /obj/machinery/power/apc, + /obj/machinery/light_switch, + /obj/machinery/light, + /obj/machinery/camera, + /obj/machinery/door/firedoor, + /obj/machinery/firealarm, + /obj/machinery/airalarm, + /obj/structure/window/fulltile, + /obj/structure/window/reinforced/fulltile, + )) + /// Cached list of allowed typecaches for each type in what_you_can_see + var/static/list/allowed_typecaches_by_root_type = null -/mob/living/carbon/proc/dream_sequence(list/dream_fragments) - if(stat != UNCONSCIOUS || HAS_TRAIT(src, TRAIT_CRITICAL_CONDITION)) - dreaming = FALSE - return - var/next_message = dream_fragments[1] - dream_fragments.Cut(1,2) - to_chat(src, span_notice("... [next_message] ...")) - if(LAZYLEN(dream_fragments)) - addtimer(CALLBACK(src, PROC_REF(dream_sequence), dream_fragments), rand(10,30)) +/datum/dream/heretic/New(obj/effect/heretic_influence/found_influence) + influence = found_influence + +/datum/dream/heretic/GenerateDream(mob/living/carbon/dreamer) + // how + if (!IS_HERETIC(dreamer) || !dreamer.manus_dream_allowed || !GLOB.reality_smash_track.smashes.len) + return CALLBACK(pick_weight(GLOB.dreams), PROC_REF(GenerateDream), dreamer) + + dreamer.manus_dream_allowed = FALSE; + addtimer(CALLBACK(dreamer, TYPE_PROC_REF(/mob/living/carbon, finish_manus_dream_cooldown)), 5 MINUTES) + + . = list() + . += "You wander through the forest of Mansus" + . += "There is a " + pick("pond", "well", "lake", "puddle", "stream", "spring", "brook", "marsh") + + if(isnull(allowed_typecaches_by_root_type)) + allowed_typecaches_by_root_type = list() + for(var/type in what_you_can_see) + allowed_typecaches_by_root_type[type] = typecacheof(type) - what_you_cant_see + + var/list/all_objects = oview(dream_view_range, influence) + var/something_found = FALSE + for(var/object_type in allowed_typecaches_by_root_type) + var/list/filtered_objects = typecache_filter_list(all_objects, allowed_typecaches_by_root_type[object_type]) + if(filtered_objects.len) + if (!something_found) + . += "Its waters reflect" + something_found = TRUE + var/obj/found_object = pick(filtered_objects) + . += initial(found_object.name) + if(!something_found) + . += pick("It's pitch black", "The reflections are vague", "You stroll aimlessly") else - dreaming = FALSE + . += "The images fade in the ripples" + . += "You feel exhausted" diff --git a/strings/dreamstrings.txt b/strings/dreamstrings.txt index 287425e7a4d7c..4f11ea378885b 100644 --- a/strings/dreamstrings.txt +++ b/strings/dreamstrings.txt @@ -1,44 +1,129 @@ -%A% %ADJECTIVE% familiar face +%A% %ADJECTIVE% admiral +%A% %ADJECTIVE% army +%A% %ADJECTIVE% airlock +%A% %ADJECTIVE% alien +%A% %ADJECTIVE% ally +%A% %ADJECTIVE% angel +%A% %ADJECTIVE% armblade +%A% %ADJECTIVE% bear +%A% %ADJECTIVE% bee +%A% %ADJECTIVE% blob +%A% %ADJECTIVE% bottle +%A% %ADJECTIVE% chemist +%A% %ADJECTIVE% corgi %A% %ADJECTIVE% crewmember -%A% %ADJECTIVE% security officer +%A% %ADJECTIVE% crowd +%A% %ADJECTIVE% cyborg +%A% %ADJECTIVE% demon +%A% %ADJECTIVE% disguise %A% %ADJECTIVE% doctor +%A% %ADJECTIVE% drone +%A% %ADJECTIVE% ending +%A% %ADJECTIVE% enemy %A% %ADJECTIVE% engineer +%A% %ADJECTIVE% ethereal +%A% %ADJECTIVE% explosion +%A% %ADJECTIVE% familiar face +%A% %ADJECTIVE% felinid +%A% %ADJECTIVE% foe +%A% %ADJECTIVE% friend +%A% %ADJECTIVE% ghost +%A% %ADJECTIVE% gun +%A% %ADJECTIVE% geneticist +%A% %ADJECTIVE% hat +%A% %ADJECTIVE% heretic +%A% %ADJECTIVE% hideout +%A% %ADJECTIVE% ID card +%A% %ADJECTIVE% imposter +%A% %ADJECTIVE% inspector +%A% %ADJECTIVE% laboratory +%A% %ADJECTIVE% lizard +%A% %ADJECTIVE% loved one +%A% %ADJECTIVE% meat grinder +%A% %ADJECTIVE% memory +%A% %ADJECTIVE% meteor %A% %ADJECTIVE% miner -%A% %ADJECTIVE% slime -%A% %ADJECTIVE% alien -%A% %ADJECTIVE% traitor -%A% %ADJECTIVE% ally -%A% %ADJECTIVE% scientist %A% %ADJECTIVE% monkey -%A% %ADJECTIVE% loved one %A% %ADJECTIVE% monster -the %ADJECTIVE% captain -%A% %ADJECTIVE% hat -%A% %ADJECTIVE% ID card -%A% %ADJECTIVE% bottle -%A% %ADJECTIVE% toolbox -%A% %ADJECTIVE% gun -the sun -the engine -the station +%A% %ADJECTIVE% moth +%A% %ADJECTIVE% nightmare +%A% %ADJECTIVE% ninja +%A% %ADJECTIVE% ocean +%A% %ADJECTIVE% pill %A% %ADJECTIVE% planet -the medical bay -the %ADJECTIVE% bridge -the %ADJECTIVE% brig +%A% %ADJECTIVE% plasmaman +%A% %ADJECTIVE% pool +%A% %ADJECTIVE% rat +%A% %ADJECTIVE% scientist +%A% %ADJECTIVE% security officer +%A% %ADJECTIVE% shrine %A% %ADJECTIVE% shuttle -%A% %ADJECTIVE% laboratory -Nanotrasen -the Syndicate -the Wizard Federation +%A% %ADJECTIVE% singularity +%A% %ADJECTIVE% slime +%A% %ADJECTIVE% task +%A% %ADJECTIVE% toolbox +%A% %ADJECTIVE% traitor +%A% %ADJECTIVE% universe +%A% %ADJECTIVE% vent +%A% %ADJECTIVE% virologist +%A% %ADJECTIVE% virus +%A% %ADJECTIVE% voice in your head +%A% %ADJECTIVE% wheelchair +%ADJECTIVE% blinking lights %ADJECTIVE% blood -%ADJECTIVE% plasma -%ADJECTIVE% wind +%ADJECTIVE% credits %ADJECTIVE% darkness -%ADJECTIVE% light %ADJECTIVE% death -%ADJECTIVE% blinking lights +%ADJECTIVE% evidence +%ADJECTIVE% evil +%ADJECTIVE% flames +%ADJECTIVE% handcuffs +%ADJECTIVE% horror +%ADJECTIVE% light +%ADJECTIVE% operatives +%ADJECTIVE% paperwork +%ADJECTIVE% plasma %ADJECTIVE% power %ADJECTIVE% riches -water -%ADJECTIVE% flames +%ADJECTIVE% waves +%ADJECTIVE% wind +cigarettes +Ian +mutiny +Nanotrasen +Poly +Runtime +some %ADJECTIVE% cultists +some %ADJECTIVE% lovers some %ADJECTIVE% melons +some %ADJECTIVE% strangers +some %ADJECTIVE% Xenomorphs +the %ADJECTIVE% bartender +the %ADJECTIVE% bridge +the %ADJECTIVE% brig +the %ADJECTIVE% captain +the %ADJECTIVE% clown +the %ADJECTIVE% depths +the %ADJECTIVE% gods +the %ADJECTIVE% Icemoon wastes +the %ADJECTIVE% maintenance tunnels +the %ADJECTIVE% recycler +the %ADJECTIVE% sun +the %ADJECTIVE% Supermatter +the %ADJECTIVE% void of space +the bar +the bottom of a chasm +the chapel +the curator's back room +the departure lounge +the engine +the emergency shuttle +the library +the medical bay +the station +the sun +the Syndicate +the tram +the Wizard Federation +time itself +water diff --git a/strings/tips.txt b/strings/tips.txt index bd673a2b76251..8b184f5446792 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -260,6 +260,7 @@ As a Morph, you can talk while disguised, but your words have a chance of being As a Drone, you can ping other drones to alert them of areas in the station in need of repair. As a Ghost, you can see the inside of a container on the ground by clicking on it. As a Ghost, you can double click on just about anything to follow it. Or just warp around! +As a Heretic, you can locate an influence by dreaming about random objects around it when you sleep. You can swap floor tiles by holding a crowbar in one hand and a stack of tiles in the other. When hacking doors, cutting and mending a "test light wire" will restore power to the door. When crafting most items, you can either manually combine parts or use the crafting menu. diff --git a/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx b/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx index fe59a143156b5..68d8d9f0da627 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx @@ -112,7 +112,8 @@ const GuideSection = () => { influences  around the station invisible to the normal eye and  left click on them to harvest them for  - knowledge points. Tapping them makes them visible to all after a short time. + knowledge points. Tapping them visible to all after a short time. + You can dream to discover influences with a 5 minute delay - Use your  From 6622632e48dbd36acd600217fb8f87b2b09f27fc Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:06:19 -0600 Subject: [PATCH 19/20] Automatic changelog generation for PR #12150 [ci skip] --- html/changelogs/AutoChangeLog-pr-12150.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12150.yml diff --git a/html/changelogs/AutoChangeLog-pr-12150.yml b/html/changelogs/AutoChangeLog-pr-12150.yml new file mode 100644 index 0000000000000..7f951cbc7d9a7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12150.yml @@ -0,0 +1,6 @@ +author: mrmanlikesbt, MTandi, ninjanomnom +delete-after: true +changes: + - balance: heretics can sleep to find unused influences. this has a 5-minute delay + between each dream + - refactor: slightly refactor dream code From 318bb4345bb1078ee65402d268d594b8f1e5b5ac Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 4 Feb 2025 19:03:16 +0000 Subject: [PATCH 20/20] Automatic changelog compile [ci skip] --- html/changelog.html | 11 +++++++++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/AutoChangeLog-pr-12150.yml | 6 ------ html/changelogs/AutoChangeLog-pr-12215.yml | 5 ----- 4 files changed, 19 insertions(+), 11 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12150.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12215.yml diff --git a/html/changelog.html b/html/changelog.html index d54ddd7e5b48d..d17a22c082bb7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,17 @@ -->
+

04 February 2025

+

XeonMations updated:

+
    +
  • Changed some more fullscreen code, should work better on 515 clients now.
  • +
+

mrmanlikesbt, MTandi, ninjanomnom updated:

+
    +
  • heretics can sleep to find unused influences. this has a 5-minute delay between each dream
  • +
  • slightly refactor dream code
  • +
+

03 February 2025

PowerfulBacon updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 87b2bafe24227..a3076c0e1d193 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -45584,3 +45584,11 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: RPDs no longer hit pipes on the ground when placing down pipes. mrmanlikesbt: - code_imp: NO MORE VORE +2025-02-04: + XeonMations: + - code_imp: Changed some more fullscreen code, should work better on 515 clients + now. + mrmanlikesbt, MTandi, ninjanomnom: + - balance: heretics can sleep to find unused influences. this has a 5-minute delay + between each dream + - refactor: slightly refactor dream code diff --git a/html/changelogs/AutoChangeLog-pr-12150.yml b/html/changelogs/AutoChangeLog-pr-12150.yml deleted file mode 100644 index 7f951cbc7d9a7..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12150.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: mrmanlikesbt, MTandi, ninjanomnom -delete-after: true -changes: - - balance: heretics can sleep to find unused influences. this has a 5-minute delay - between each dream - - refactor: slightly refactor dream code diff --git a/html/changelogs/AutoChangeLog-pr-12215.yml b/html/changelogs/AutoChangeLog-pr-12215.yml deleted file mode 100644 index 645037e8ca1cf..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-12215.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: XeonMations -delete-after: true -changes: - - code_imp: Changed some more fullscreen code, should work better on 515 clients - now.