From c557d74ffe4d97af4148ae36b22c54080ccd558c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 20 Oct 2024 17:34:05 -0400 Subject: [PATCH 01/10] Port Sacrificing (#1110) # Description This PR rebases the Sacrificing mechanic from Nyanotrasen, while updating it to newer standards for the Reworked Psionics System. This does not rebase Golemancy, or Items Of Power, so the system for now exists solely to spike glimmer DOWN in the event of a code white, and merely produces brains to be placed inside cyborgs. Notably different from DeltaV's implementation of it, this system does not reduce a random amount of glimmer, and instead reduces glimmer by a base of 25, multiplied by the victim's Psionic Amplification(which is itself semi-random). Which means that certain individuals(Especially people with lots of powers, and/or the Power Overwhelming trait) are inherently more useful to sacrifice than other, weaker psionics. When I bring back Items Of Power, the chances of obtaining an Artifact are based on the victim's Dampening stat. https://github.com/user-attachments/assets/23e52f20-ac3e-4bd9-8122-cadec96cbdf3 # Changelog :cl: - add: Sacrificing Psions has been added. Psions can be sacrificed by Epistemics upon an altar in order to dramatically reduce glimmer. The more powerful the Psion to be sacrificed, the more glimmer is reduced. --------- Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> --- .../Chapel/SacrificialAltarSystem.cs | 5 + .../Chapel/SacrificialAltarSystem.cs | 129 ++++++++++++++++++ .../Chapel/SacrificeDoAfterEvent.cs | 6 +- .../Chapel/SacrificialAltarComponent.cs | 48 +++++++ .../Chapel/SharedSacrificialAltarSystem.cs | 61 +++++++++ Resources/Locale/en-US/chapel/altar.ftl | 11 ++ .../Entities/Structures/Furniture/altar.yml | 8 +- Resources/Prototypes/Guidebook/science.yml | 4 +- .../Nyanotrasen/Guidebook/epistemics.yml | 8 +- .../Nyanotrasen/psionicArtifacts.yml | 21 --- .../Guidebook/Epistemics/Altar.xml | 17 +-- 11 files changed, 274 insertions(+), 44 deletions(-) create mode 100644 Content.Client/Chapel/SacrificialAltarSystem.cs create mode 100644 Content.Server/Chapel/SacrificialAltarSystem.cs create mode 100644 Content.Shared/Chapel/SacrificialAltarComponent.cs create mode 100644 Content.Shared/Chapel/SharedSacrificialAltarSystem.cs create mode 100644 Resources/Locale/en-US/chapel/altar.ftl delete mode 100644 Resources/Prototypes/Nyanotrasen/psionicArtifacts.yml diff --git a/Content.Client/Chapel/SacrificialAltarSystem.cs b/Content.Client/Chapel/SacrificialAltarSystem.cs new file mode 100644 index 00000000000..5b694e4b4e2 --- /dev/null +++ b/Content.Client/Chapel/SacrificialAltarSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Chapel; + +namespace Content.Client.Chapel; + +public sealed class SacrificialAltarSystem : SharedSacrificialAltarSystem; diff --git a/Content.Server/Chapel/SacrificialAltarSystem.cs b/Content.Server/Chapel/SacrificialAltarSystem.cs new file mode 100644 index 00000000000..e7144e1185b --- /dev/null +++ b/Content.Server/Chapel/SacrificialAltarSystem.cs @@ -0,0 +1,129 @@ +using Content.Server.Bible.Components; +using Content.Shared.Abilities.Psionics; +using Content.Shared.Administration.Logs; +using Content.Shared.Body.Components; +using Content.Shared.Body.Systems; +using Content.Shared.Database; +using Content.Shared.Chapel; +using Content.Shared.DoAfter; +using Content.Shared.Humanoid; +using Content.Shared.Mind; +using Content.Shared.Popups; +using Content.Shared.Psionics.Glimmer; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Chapel; + +public sealed class SacrificialAltarSystem : SharedSacrificialAltarSystem +{ + [Dependency] private readonly GlimmerSystem _glimmer = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedBodySystem _body = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDoAfter); + } + + private void OnDoAfter(Entity ent, ref SacrificeDoAfterEvent args) + { + ent.Comp.SacrificeStream = _audio.Stop(ent.Comp.SacrificeStream); + ent.Comp.DoAfter = null; + + if (args.Cancelled || args.Handled || args.Args.Target is not { } target + || !TryComp(target, out var psionic) + || !_mind.TryGetMind(target, out var _, out var _)) + return; + + _adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Args.User):player} sacrificed {ToPrettyString(target):target} on {ToPrettyString(ent):altar}"); + + // lower glimmer by a random amount + _glimmer.Glimmer -= (int) (ent.Comp.GlimmerReduction * psionic.CurrentAmplification); + + if (ent.Comp.RewardPool is not null && _random.Prob(ent.Comp.BaseItemChance * psionic.CurrentDampening)) + { + var proto = _proto.Index(_random.Pick(ent.Comp.RewardPool)); + Spawn(proto.ToString(), Transform(ent).Coordinates); + } + // TODO GOLEMS: create a soul crystal and transfer mind into it + + // finally gib the targets old body + if (TryComp(target, out var body)) + _body.GibBody(target, gibOrgans: false, body, launchGibs: true); + else + QueueDel(target); + } + + protected override void AttemptSacrifice(Entity ent, EntityUid user, EntityUid target) + { + if (ent.Comp.DoAfter != null) + return; + + // can't sacrifice yourself + if (user == target) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-self"), ent, user, PopupType.SmallCaution); + return; + } + + // you need to be psionic OR bible user + if (!HasComp(user) && !HasComp(user)) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-user"), ent, user, PopupType.SmallCaution); + return; + } + + // and no golems or familiars or whatever should be sacrificing + if (!HasComp(user)) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-user-humanoid"), ent, user, PopupType.SmallCaution); + return; + } + + // prevent psichecking SSD people... + // notably there is no check in OnDoAfter so you can't alt f4 to survive being sacrificed + if (!HasComp(target) || _mind.GetMind(target) == null) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-target-catatonic", ("target", target)), ent, user, PopupType.SmallCaution); + return; + } + + // TODO: there should be a penalty to the user for psichecking like this + if (!HasComp(target)) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-target", ("target", target)), ent, user, PopupType.SmallCaution); + return; + } + + if (!HasComp(target)) + { + _popup.PopupEntity(Loc.GetString("altar-failure-reason-target-humanoid", ("target", target)), ent, user, PopupType.SmallCaution); + return; + } + + _popup.PopupEntity(Loc.GetString("altar-sacrifice-popup", ("user", user), ("target", target)), ent, PopupType.LargeCaution); + + ent.Comp.SacrificeStream = _audio.PlayPvs(ent.Comp.SacrificeSound, ent)?.Entity; + + var ev = new SacrificeDoAfterEvent(); + var args = new DoAfterArgs(EntityManager, user, ent.Comp.SacrificeTime, ev, target: target, eventTarget: ent) + { + BreakOnDamage = true, + BreakOnUserMove = true, + BreakOnTargetMove = true, + BreakOnWeightlessMove = true, + NeedHand = true + }; + DoAfter.TryStartDoAfter(args, out ent.Comp.DoAfter); + } +} diff --git a/Content.Shared/Chapel/SacrificeDoAfterEvent.cs b/Content.Shared/Chapel/SacrificeDoAfterEvent.cs index 444871a2fc0..f730bab883c 100644 --- a/Content.Shared/Chapel/SacrificeDoAfterEvent.cs +++ b/Content.Shared/Chapel/SacrificeDoAfterEvent.cs @@ -2,8 +2,6 @@ using Content.Shared.DoAfter; namespace Content.Shared.Chapel; -[Serializable, NetSerializable] -public sealed partial class SacrificeDoAfterEvent : SimpleDoAfterEvent -{ -} +[Serializable, NetSerializable] +public sealed partial class SacrificeDoAfterEvent : SimpleDoAfterEvent { } diff --git a/Content.Shared/Chapel/SacrificialAltarComponent.cs b/Content.Shared/Chapel/SacrificialAltarComponent.cs new file mode 100644 index 00000000000..c3db338861d --- /dev/null +++ b/Content.Shared/Chapel/SacrificialAltarComponent.cs @@ -0,0 +1,48 @@ +using Content.Shared.Random; +using Content.Shared.DoAfter; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Chapel; + +/// +/// Altar that lets you sacrifice psionics to lower glimmer by a large amount. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedSacrificialAltarSystem))] +public sealed partial class SacrificialAltarComponent : Component +{ + /// + /// DoAfter for an active sacrifice. + /// + [DataField] + public DoAfterId? DoAfter; + + /// + /// How long it takes to sacrifice someone once they die. + /// This is the window to interrupt a sacrifice if you want glimmer to stay high, or need the psionic to be revived. + /// + [DataField] + public TimeSpan SacrificeTime = TimeSpan.FromSeconds(8.35); + + [DataField] + public SoundSpecifier SacrificeSound = new SoundPathSpecifier("/Audio/Psionics/heartbeat_fast.ogg"); + + [DataField] + public EntityUid? SacrificeStream; + + /// + /// Base amount to reduce glimmer by, multiplied by the victim's Amplification stat. + /// + [DataField] + public float GlimmerReduction = 25; + + [DataField] + public List>? RewardPool; + + /// + /// The base chance to generate an item of power, multiplied by the victim's Dampening stat. + /// + [DataField] + public float BaseItemChance = 0.1f; +} diff --git a/Content.Shared/Chapel/SharedSacrificialAltarSystem.cs b/Content.Shared/Chapel/SharedSacrificialAltarSystem.cs new file mode 100644 index 00000000000..92df7e0f6bf --- /dev/null +++ b/Content.Shared/Chapel/SharedSacrificialAltarSystem.cs @@ -0,0 +1,61 @@ +using System.Linq; +using Content.Shared.Buckle.Components; +using Content.Shared.DoAfter; +using Content.Shared.Examine; +using Content.Shared.Verbs; + +namespace Content.Shared.Chapel; + +public abstract partial class SharedSacrificialAltarSystem : EntitySystem +{ + [Dependency] protected readonly SharedDoAfterSystem DoAfter = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnUnstrapped); + SubscribeLocalEvent>(OnGetVerbs); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("altar-examine")); + } + + private void OnUnstrapped(Entity ent, ref BuckleChangeEvent args) + { + if (ent.Comp.DoAfter is not { } id) + return; + + DoAfter.Cancel(id); + ent.Comp.DoAfter = null; + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || ent.Comp.DoAfter != null + || !TryComp(ent, out var strap) + || GetFirstBuckled(strap) is not { } target) + return; + + var user = args.User; + args.Verbs.Add(new AlternativeVerb() + { + Act = () => AttemptSacrifice(ent, user, target), + Text = Loc.GetString("altar-sacrifice-verb"), + Priority = 2 + }); + } + + private EntityUid? GetFirstBuckled(StrapComponent strap) + { + if (strap.BuckledEntities.Count <= 0) + return null; + + return strap.BuckledEntities.First(); + } + + protected virtual void AttemptSacrifice(Entity ent, EntityUid user, EntityUid target) { } +} diff --git a/Resources/Locale/en-US/chapel/altar.ftl b/Resources/Locale/en-US/chapel/altar.ftl new file mode 100644 index 00000000000..ed031d638ac --- /dev/null +++ b/Resources/Locale/en-US/chapel/altar.ftl @@ -0,0 +1,11 @@ +altar-examine = [color=purple]This altar can be used to sacrifice Psionics.[/color] +altar-sacrifice-verb = Sacrifice + +altar-failure-reason-self = You can't sacrifice yourself! +altar-failure-reason-user = You are not psionic or clerically trained! +altar-failure-reason-user-humanoid = You are not a humanoid! +altar-failure-reason-target = {CAPITALIZE(THE($target))} {CONJUGATE-BE($target)} not psionic! +altar-failure-reason-target-humanoid = {CAPITALIZE(THE($target))} {CONJUGATE-BE($target)} not a humanoid! +altar-failure-reason-target-catatonic = {CAPITALIZE(THE($target))} {CONJUGATE-BE($target)} braindead! + +altar-sacrifice-popup = {$user} starts to sacrifice {$target}! diff --git a/Resources/Prototypes/Entities/Structures/Furniture/altar.yml b/Resources/Prototypes/Entities/Structures/Furniture/altar.yml index 117967ef301..1153d5b7cc9 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/altar.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/altar.yml @@ -25,8 +25,14 @@ - TableLayer - type: Sprite snapCardinals: true - - type: Climbable - type: Clickable + - type: SacrificialAltar + - type: Strap + position: Down + rotation: -90 + - type: GuideHelp + guides: + - AltarsGolemancy - type: entity id: AltarNanotrasen diff --git a/Resources/Prototypes/Guidebook/science.yml b/Resources/Prototypes/Guidebook/science.yml index a3f3f71ec3e..bceaaa6b0c9 100644 --- a/Resources/Prototypes/Guidebook/science.yml +++ b/Resources/Prototypes/Guidebook/science.yml @@ -8,8 +8,8 @@ - Xenoarchaeology - Robotics - MachineUpgrading - # - AltarsGolemancy # When it's added # Nyanotrasen - Golemancy guidebook - - ReverseEngineering # Nyanotrasen - Reverse Engineering guidebook + - AltarsGolemancy + - ReverseEngineering - type: guideEntry id: Technologies diff --git a/Resources/Prototypes/Nyanotrasen/Guidebook/epistemics.yml b/Resources/Prototypes/Nyanotrasen/Guidebook/epistemics.yml index adfbc8ce727..2ae051100bb 100644 --- a/Resources/Prototypes/Nyanotrasen/Guidebook/epistemics.yml +++ b/Resources/Prototypes/Nyanotrasen/Guidebook/epistemics.yml @@ -1,7 +1,7 @@ -# - type: guideEntry # When it's added -# id: AltarsGolemancy -# name: guide-entry-altars-golemancy -# text: "/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml" +- type: guideEntry + id: AltarsGolemancy + name: guide-entry-altars-golemancy + text: "/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml" - type: guideEntry id: ReverseEngineering diff --git a/Resources/Prototypes/Nyanotrasen/psionicArtifacts.yml b/Resources/Prototypes/Nyanotrasen/psionicArtifacts.yml deleted file mode 100644 index 8f952b39057..00000000000 --- a/Resources/Prototypes/Nyanotrasen/psionicArtifacts.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: weightedRandom - id: PsionicArtifactPool - weights: - ClothingHandsDispelGloves: 1 - ClothingEyesTelegnosisSpectacles: 1 - ClothingHandsGlovesColorYellowUnsulated: 1 - PonderingOrbTelepathic: 1 - ClothingShoesBootsMagBlinding: 0.5 - LidOSaws: 0.25 - BedsheetInvisibilityCloak: 0.15 - # WeaponWandPolymorphCarp: 0.05 - # WeaponWandPolymorphMonkey: 0.05 - # WeaponWandFireball: 0.025 - # WeaponWandDeath: 0.001 - # WeaponWandPolymorphDoor: 0.05 - SpawnSpellbook: 0.025 - ForceWallSpellbook: 0.025 - BlinkBook: 0.025 - SmiteBook: 0.00025 - KnockSpellbook: 0.025 - FireballSpellbook: 0.01 diff --git a/Resources/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml b/Resources/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml index c3b211d2964..540e15a7245 100644 --- a/Resources/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml +++ b/Resources/ServerInfo/Nyanotrasen/Guidebook/Epistemics/Altar.xml @@ -5,18 +5,11 @@ The chapel has a [color=#a4885c]sacrificial altar[/color]. To use it, a psionic humanoid must be placed on it, and someone with either psionics or clerical training must initiate the sacrifice. It appears in the context menu on the altar, which can be opened with the right mouse button by default. - -Once sacrificed, the psionic humanoid's soul is trapped inside a [color=#a4885c]soul crystal[/color]. This is not the end for them; they can still talk both vocally and telepathically, and this form is much harder to destroy. - - -10% of the time, the altar will spawn a powerful psionic item along with the soul crystal. This chance increases to 50% if the sacrifice was performed by someone with clerical training, such as the [color=#a4885c]chaplain[/color] or [color=#a4885c]mystagogue[/color]. + + +As a reward for sacrificing a psionic, glimmer will be lowered substantially and you will be given some loot. +Usually this is a few bluespace crystals, but you can also get a powerful psionic item. ## Golemancy - - - - -Soul crystals can be installed into [color=#a4885c]golems[/color] to give the soul a new body. Golems are bound to serve their master. As constructs, they do not need to eat, drink, or breathe. -Note that for wood golems, if plants are planted on top of their head, the plants will still need those things. - +[color=red]Note: Golemancy is not implemented yet. Once you sacrifice a psionic you can borg them with an MMI.[/color] From 20fbf7982c302846fbaa44efb733a117c176c079 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 20 Oct 2024 21:34:31 +0000 Subject: [PATCH 02/10] Automatic Changelog Update (#1110) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2238e154758..46b6270ab74 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -7492,3 +7492,13 @@ Entries: id: 6477 time: '2024-10-20T19:28:35.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1113 +- author: VMSolidus + changes: + - type: Add + message: >- + Sacrificing Psions has been added. Psions can be sacrificed by + Epistemics upon an altar in order to dramatically reduce glimmer. The + more powerful the Psion to be sacrificed, the more glimmer is reduced. + id: 6478 + time: '2024-10-20T21:34:05.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1110 From 0ac07aa08b5cb2b1b6ccf11339c9647cda7a1c44 Mon Sep 17 00:00:00 2001 From: Aiden Date: Sun, 20 Oct 2024 19:24:18 -0500 Subject: [PATCH 03/10] Fix Flavor Text Not Updating (#1119) # Description Title ---

Media

https://gyazo.com/6814d0306c06b66d845ec2991b79bd82.mp4

--- # Changelog :cl: - fix: Flavor text can be updated again. --- Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs index 7b02f1591e2..2eddea10145 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs @@ -639,6 +639,7 @@ public void SetProfile(HumanoidCharacterProfile? profile, int? slot) UpdateGenderControls(); UpdateSkinColor(); UpdateSpawnPriorityControls(); + UpdateFlavorTextEdit(); UpdateAgeEdit(); UpdateEyePickers(); UpdateSaveButton(); From 809bb9da791dbe52dfc498fb03e2b115ca0fc43b Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 21 Oct 2024 00:24:43 +0000 Subject: [PATCH 04/10] Automatic Changelog Update (#1119) --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 46b6270ab74..b7035584f43 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -7502,3 +7502,10 @@ Entries: id: 6478 time: '2024-10-20T21:34:05.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1110 +- author: Aidenkrz + changes: + - type: Fix + message: Flavor text can be updated again. + id: 6479 + time: '2024-10-21T00:24:18.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1119 From 235c2752e48fab63d98b49706377da8790a834c6 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 20 Oct 2024 20:41:01 -0400 Subject: [PATCH 05/10] Glacier Pseudo Planet (#1115) # Description This PR changes Glacier so that instead of spawning in a no-gravity Nukieworld, it instead spawns in a frozen wasteland that people can actually walk on, AND ships will work on it too.

Media

![image](https://github.com/user-attachments/assets/d7c00fd5-4053-4939-be30-81bb72cca865)

# Changelog :cl: - add: Glacier is now on a planetary surface --- Resources/Maps/glacier.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Maps/glacier.yml b/Resources/Maps/glacier.yml index 572aca85823..5cf75182121 100644 --- a/Resources/Maps/glacier.yml +++ b/Resources/Maps/glacier.yml @@ -72,7 +72,10 @@ entities: - type: GridTree - type: MovedGrids - type: Parallax - parallax: Sky + parallax: Snow + - type: Gravity + enabled: true + inherent: true - type: MapAtmosphere space: False mixture: @@ -100,6 +103,9 @@ entities: - type: MetaData - type: Transform parent: 1 + - type: PassiveDampening + linearDampening: 1 + angularDampening: 1 - type: MapGrid chunks: -1,-1: @@ -69877,13 +69883,6 @@ entities: - type: Transform pos: 63.191357,-49.411076 parent: 2 -- proto: GravityGenerator - entities: - - uid: 9482 - components: - - type: Transform - pos: 27.5,54.5 - parent: 2 - proto: GravityGeneratorMini entities: - uid: 9483 From 4893b4aec75b7bc016b463b874e8a31649ce1244 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 20 Oct 2024 20:41:17 -0400 Subject: [PATCH 06/10] Fix Asterisk (#1118) # Description This fixes Asterisk so that it works like the new Glacier, with a pseudoplanet instead of the currently non-functional planet biome. We can return to proper planet biomes whenever they're better supported. # Changelog :cl: - fix: Asterisk Station no longer spawns entombed in snow, and is now on top of an ice sheet. --- Resources/Maps/asterisk.yml | 27 +++++++++++++++++++++++++- Resources/Prototypes/Maps/asterisk.yml | 2 -- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Resources/Maps/asterisk.yml b/Resources/Maps/asterisk.yml index 156fb2de6ec..bfd8a71261d 100644 --- a/Resources/Maps/asterisk.yml +++ b/Resources/Maps/asterisk.yml @@ -63,7 +63,29 @@ entities: - type: Broadphase - type: OccluderTree - type: Parallax - parallax: AngleStation + parallax: Snow + - type: MapAtmosphere + space: False + mixture: + volume: 2500 + immutable: True + temperature: 213.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: Gravity + enabled: true + inherent: true - type: LoadedMap - uid: 2 components: @@ -71,6 +93,9 @@ entities: - type: Transform pos: -0.5104167,-0.4739367 parent: 1 + - type: PassiveDampening + linearDampening: 1 + angularDampening: 1 - type: MapGrid chunks: 0,0: diff --git a/Resources/Prototypes/Maps/asterisk.yml b/Resources/Prototypes/Maps/asterisk.yml index cf57fa27256..3ef57dd4903 100644 --- a/Resources/Prototypes/Maps/asterisk.yml +++ b/Resources/Prototypes/Maps/asterisk.yml @@ -8,8 +8,6 @@ Asterisk: stationProto: StandardNanotrasenStation components: - - type: StationBiome - biome: Snow - type: StationRandomTransform enableStationRotation: false maxStationOffset: null From 1a3d95475e39c1db6af97cf9d9eae64cd98a05ab Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 21 Oct 2024 00:41:28 +0000 Subject: [PATCH 07/10] Automatic Changelog Update (#1115) --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b7035584f43..0abeabe9daa 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -7509,3 +7509,10 @@ Entries: id: 6479 time: '2024-10-21T00:24:18.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1119 +- author: VMSolidus + changes: + - type: Add + message: Glacier is now on a planetary surface + id: 6480 + time: '2024-10-21T00:41:02.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1115 From 05a1301856ab970500d723b9b108fd6171854eff Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 21 Oct 2024 00:41:54 +0000 Subject: [PATCH 08/10] Automatic Changelog Update (#1118) --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0abeabe9daa..1c2fb5e088c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -7516,3 +7516,12 @@ Entries: id: 6480 time: '2024-10-21T00:41:02.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1115 +- author: VMSolidus + changes: + - type: Fix + message: >- + Asterisk Station no longer spawns entombed in snow, and is now on top of + an ice sheet. + id: 6481 + time: '2024-10-21T00:41:18.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1118 From ec31b113b8b49d708d3f6dfdcaf01216b5bc6db2 Mon Sep 17 00:00:00 2001 From: Aiden Date: Mon, 21 Oct 2024 20:42:11 -0500 Subject: [PATCH 09/10] Fix Custom Specie Name (#1120) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description Custom specie name wouldn't properly update when a different race was selected, or when you changed profiles. This fixes that. Also makes it so the text field is automatically filled with the default name instead of an empty space. (and makes the species check less bad 😺 ) Solves #1101 ---

Media

https://gyazo.com/63ba2d8a3456c19c70f25164ae42078d

--- # Changelog :cl: - fix: Custom specie name doesn't disappear in the editor anymore. --- .../Lobby/UI/HumanoidProfileEditor.xaml.cs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs index 2eddea10145..3f526981a4e 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs @@ -640,6 +640,7 @@ public void SetProfile(HumanoidCharacterProfile? profile, int? slot) UpdateSkinColor(); UpdateSpawnPriorityControls(); UpdateFlavorTextEdit(); + UpdateCustomSpecieNameEdit(); UpdateAgeEdit(); UpdateEyePickers(); UpdateSaveButton(); @@ -1206,15 +1207,9 @@ private void UpdateNameEdit() private void UpdateCustomSpecieNameEdit() { - if (Profile == null) - return; - - _customspecienameEdit.Text = Profile.Customspeciename ?? ""; - - if (!_prototypeManager.TryIndex(Profile.Species, out var speciesProto)) - return; - - _ccustomspecienamecontainerEdit.Visible = speciesProto.CustomName; + var species = _species.Find(x => x.ID == Profile?.Species) ?? _species.First(); + _customspecienameEdit.Text = string.IsNullOrEmpty(Profile?.Customspeciename) ? Loc.GetString(species.Name) : Profile.Customspeciename; + _ccustomspecienamecontainerEdit.Visible = species.CustomName; } private void UpdateFlavorTextEdit() From b8fddba662a66cd16e92b39cae944e3228e9a41d Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 22 Oct 2024 01:42:39 +0000 Subject: [PATCH 10/10] Automatic Changelog Update (#1120) --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1c2fb5e088c..67caeb12998 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -7525,3 +7525,10 @@ Entries: id: 6481 time: '2024-10-21T00:41:18.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1118 +- author: Aidenkrz + changes: + - type: Fix + message: Custom specie name doesn't disappear in the editor anymore. + id: 6482 + time: '2024-10-22T01:42:11.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1120