From 1c6c0bd51ad6394b2216ad8eaa01299b13faf883 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Sat, 5 Oct 2024 17:28:06 +0300 Subject: [PATCH 01/11] Fix some Locales Seemingly Made Using Google Translate (#1006) # Description How did this pass code review? # Media
![image](https://github.com/user-attachments/assets/1161cc1e-3f61-4b2d-95e1-ab120fd3a1e1) ![image](https://github.com/user-attachments/assets/3bc1c945-98db-403e-94b1-351d13574aaf)
# Changelog N/A --------- Signed-off-by: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Co-authored-by: stellar-novas --- .../Locale/en-US/ghost/ghost-respawn.ftl | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Resources/Locale/en-US/ghost/ghost-respawn.ftl b/Resources/Locale/en-US/ghost/ghost-respawn.ftl index 7c5d6f75a8..a97fc68952 100644 --- a/Resources/Locale/en-US/ghost/ghost-respawn.ftl +++ b/Resources/Locale/en-US/ghost/ghost-respawn.ftl @@ -1,15 +1,15 @@ -ghost-respawn-time-left = Before the opportunity to return to the round { $time } - { $time -> - [one] minute - *[other] minutes - } -ghost-respawn-max-players = The function is not available, there should be fewer players on the server { $players }. -ghost-respawn-window-title = Rules for returning to the round -ghost-respawn-window-rules-footer = By using this feature, you [color=#ff7700]agree[/color] [color=#ff0000]not to transfer[/color] the knowledge of your past character to a new one. For violation of the clause specified here, [color=#ff0000]a ban in the amount of 3 days or more follows[/color]. -ghost-respawn-same-character = You cannot enter the round for the same character. Change it in the character settings. +ghost-respawn-time-left = Please wait {$time} {$time -> + [one] minute + *[other] minutes +} before trying to respawn. -ghost-respawn-log-character-almost-same = Player { $player } { $try -> - [true] join +ghost-respawn-max-players = Cannot respawn right now. There should be fewer than {$players} players. +ghost-respawn-window-title = Respawn rules +ghost-respawn-window-rules-footer = By respawning, you [color=#ff7700]agree[/color] [color=#ff0000]not to use any knowledge gained as your previous charactrer[/color]. Violation of this rule may constitute a server ban. Please, read the server rules for more details. +ghost-respawn-same-character = You cannot respawn as the same character. Please select a different one in character preferences. + +ghost-respawn-log-character-almost-same = Player {$player} { $try -> + [true] joined *[false] tried to join -} in the round after the respawn with a similar name. Past name: { $oldName }, current: { $newName }. -ghost-respawn-log-return-to-lobby = { $userName } returned to the lobby. \ No newline at end of file +} the round after respawning with a similar name. Previous name: { $oldName }, current: { $newName }. +ghost-respawn-log-return-to-lobby = { $userName } returned to the lobby. From 9c589ce7e7475c817051b5cec10aeef3eb97845c Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Sat, 5 Oct 2024 17:28:14 +0300 Subject: [PATCH 02/11] Blood Regeneration Affects Hunger/Thirst (#1007) # Description Makes natural blood regeneration use up some hunger and thirst, and halt completely when you are starving/dying of thirst. This is necessary to fix two issues: 1. It being possible to feed off of your own blood, by repeatedly drawing your blood and injecting it back with a syringe. (I actually know a few people on floof who do that on a daily basis) 2. Hunger and thirst having no real impact on gameplay, besides giving you a mildly annoying depression overlay when low. This PR also slightly refactors the blood deficiency trait so that it's no longer completely hardcoded in the bloodstream system.

Media

https://github.com/user-attachments/assets/f8634de5-19bd-44a5-ada2-62f4504bf3d4

# Changelog :cl: - add: Blood regeneration now uses up hunger and thirst, and comes to a halt when you are very hungry or thirst. - fix: It is no longer feasible to drink your own blood to satiate your own hunger. --- .../Body/Components/BloodstreamComponent.cs | 21 +++----- .../NaturalBloodRegenerationAttemptEvent.cs | 15 ++++++ .../Body/Systems/BloodstreamSystem.cs | 50 +++++++++++++++---- .../Traits/BloodDeficiencyComponent.cs | 6 +++ .../Traits/BloodDeficiencySystem.cs | 17 ++++--- .../Entities/Mobs/Species/arachne.yml | 1 + .../Entities/Mobs/Species/diona.yml | 2 + .../Entities/Mobs/Species/slime.yml | 2 + Resources/Prototypes/Entities/Mobs/base.yml | 2 + Resources/Prototypes/Reagents/biological.yml | 16 +++--- 10 files changed, 94 insertions(+), 38 deletions(-) create mode 100644 Content.Server/Body/Events/NaturalBloodRegenerationAttemptEvent.cs diff --git a/Content.Server/Body/Components/BloodstreamComponent.cs b/Content.Server/Body/Components/BloodstreamComponent.cs index a272d5f365..65d30e3432 100644 --- a/Content.Server/Body/Components/BloodstreamComponent.cs +++ b/Content.Server/Body/Components/BloodstreamComponent.cs @@ -1,5 +1,6 @@ using Content.Server.Body.Systems; using Content.Server.Chemistry.EntitySystems; +using Content.Server.Traits; using Content.Server.Traits.Assorted; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; @@ -83,6 +84,13 @@ public sealed partial class BloodstreamComponent : Component [DataField] public FixedPoint2 BloodRefreshAmount = 1.0f; + /// + /// How much hunger/thirst is used to regenerate one unit of blood. Set to zero to disable. + /// The actual thirst/hunger rate will scale with . + /// + /// Those will have no effect if the entity has no hunger/thirst components. + public float BloodRegenerationHunger = 1f, BloodRegenerationThirst = 1f; + /// /// How much blood needs to be in the temporary solution in order to create a puddle? /// @@ -172,18 +180,5 @@ public sealed partial class BloodstreamComponent : Component /// [ViewVariables(VVAccess.ReadWrite)] public TimeSpan StatusTime; - - /// - /// If this is true, the entity will not passively regenerate blood, - /// and instead will slowly lose blood. - /// - [DataField] - public bool HasBloodDeficiency = false; - - /// - /// How much percentage of max blood volume should be removed with blood deficiency in each update interval? - /// - [DataField] - public float BloodDeficiencyLossPercentage; } } diff --git a/Content.Server/Body/Events/NaturalBloodRegenerationAttemptEvent.cs b/Content.Server/Body/Events/NaturalBloodRegenerationAttemptEvent.cs new file mode 100644 index 0000000000..8ad2b88efe --- /dev/null +++ b/Content.Server/Body/Events/NaturalBloodRegenerationAttemptEvent.cs @@ -0,0 +1,15 @@ +using Content.Shared.FixedPoint; + +namespace Content.Server.Body.Events; + +/// +/// Raised on a mob when its bloodstream tries to perform natural blood regeneration. +/// +[ByRefEvent] +public sealed class NaturalBloodRegenerationAttemptEvent : CancellableEntityEventArgs +{ + /// + /// How much blood the mob will regenerate on this tick. Can be negative. + /// + public FixedPoint2 Amount; +} diff --git a/Content.Server/Body/Systems/BloodstreamSystem.cs b/Content.Server/Body/Systems/BloodstreamSystem.cs index 91ed7a2480..163e0bf33c 100644 --- a/Content.Server/Body/Systems/BloodstreamSystem.cs +++ b/Content.Server/Body/Systems/BloodstreamSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Body.Components; +using Content.Server.Body.Events; using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Chemistry.ReactionEffects; using Content.Server.Fluids.EntitySystems; @@ -14,6 +15,8 @@ using Content.Shared.Drunk; using Content.Shared.FixedPoint; using Content.Shared.Mobs.Systems; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Popups; using Content.Shared.Rejuvenate; using Content.Shared.Speech.EntitySystems; @@ -39,6 +42,8 @@ public sealed class BloodstreamSystem : EntitySystem [Dependency] private readonly SharedStutteringSystem _stutteringSystem = default!; [Dependency] private readonly AlertsSystem _alertsSystem = default!; [Dependency] private readonly ForensicsSystem _forensicsSystem = default!; + [Dependency] private readonly HungerSystem _hunger = default!; + [Dependency] private readonly ThirstSystem _thirst = default!; public override void Initialize() { @@ -118,17 +123,9 @@ public override void Update(float frameTime) if (!_solutionContainerSystem.ResolveSolution(uid, bloodstream.BloodSolutionName, ref bloodstream.BloodSolution, out var bloodSolution)) continue; - // Removes blood for Blood Deficiency constantly. - if (bloodstream.HasBloodDeficiency) - { - if (!_mobStateSystem.IsDead(uid)) - RemoveBlood(uid, bloodstream.BloodMaxVolume * bloodstream.BloodDeficiencyLossPercentage, bloodstream); - } - // Adds blood to their blood level if it is below the maximum. - else if (bloodSolution.Volume < bloodSolution.MaxVolume && !_mobStateSystem.IsDead(uid)) - { - TryModifyBloodLevel(uid, bloodstream.BloodRefreshAmount, bloodstream); - } + // Try to apply natural blood regeneration/bloodloss + if (!_mobStateSystem.IsDead(uid)) + TryDoNaturalRegeneration((uid, bloodstream), bloodSolution); // Removes blood from the bloodstream based on bleed amount (bleed rate) // as well as stop their bleeding to a certain extent. @@ -498,4 +495,35 @@ private void RemoveBlood(EntityUid uid, FixedPoint2 amount, BloodstreamComponent bloodSolution.RemoveReagent(component.BloodReagent, amount); } + + /// + /// Tries to apply natural blood regeneration/loss to the entity. Returns true if succesful. + /// + private bool TryDoNaturalRegeneration(Entity ent, Solution bloodSolution) + { + var ev = new NaturalBloodRegenerationAttemptEvent { Amount = ent.Comp.BloodRefreshAmount }; + RaiseLocalEvent(ent, ref ev); + + if (ev.Cancelled || (ev.Amount > 0 && bloodSolution.Volume >= bloodSolution.MaxVolume)) + return false; + + var usedHunger = ev.Amount * ent.Comp.BloodRegenerationHunger; + var usedThirst = ev.Amount * ent.Comp.BloodRegenerationThirst; + + // First, check if the entity has enough hunger/thirst + var hungerComp = CompOrNull(ent); + var thirstComp = CompOrNull(ent); + if (usedHunger > 0 && hungerComp is not null && (hungerComp.CurrentHunger < usedHunger || hungerComp.CurrentThreshold <= HungerThreshold.Starving) + || usedThirst > 0 && thirstComp is not null && (thirstComp.CurrentThirst < usedThirst || thirstComp.CurrentThirstThreshold <= ThirstThreshold.Parched)) + return false; + + // Then actually expend hunger and thirst (if necessary) and regenerate blood. + if (usedHunger > 0 && hungerComp is not null) + _hunger.ModifyHunger(ent, (float) -usedHunger, hungerComp); + + if (usedThirst > 0 && thirstComp is not null) + _thirst.ModifyThirst(ent, thirstComp, (float) -usedThirst); + + return TryModifyBloodLevel(ent, ev.Amount, ent.Comp); + } } diff --git a/Content.Server/Traits/BloodDeficiencyComponent.cs b/Content.Server/Traits/BloodDeficiencyComponent.cs index c6219d3e02..ce438278f7 100644 --- a/Content.Server/Traits/BloodDeficiencyComponent.cs +++ b/Content.Server/Traits/BloodDeficiencyComponent.cs @@ -11,4 +11,10 @@ public sealed partial class BloodDeficiencyComponent : Component // [DataField(required: true)] public float BloodLossPercentage; + + /// + /// Whether the effects of this trait should be active. + /// + [DataField] + public bool Active = true; } diff --git a/Content.Server/Traits/BloodDeficiencySystem.cs b/Content.Server/Traits/BloodDeficiencySystem.cs index ee7a39e46e..8928bc57a1 100644 --- a/Content.Server/Traits/BloodDeficiencySystem.cs +++ b/Content.Server/Traits/BloodDeficiencySystem.cs @@ -1,23 +1,24 @@ -using Content.Server.Body.Systems; using Content.Server.Body.Components; -using Content.Shared.Damage; +using Content.Server.Body.Events; +using Content.Server.Traits.Assorted; +using Content.Shared.FixedPoint; -namespace Content.Server.Traits.Assorted; +namespace Content.Server.Traits; public sealed class BloodDeficiencySystem : EntitySystem { public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnBloodRegen); } - private void OnStartup(EntityUid uid, BloodDeficiencyComponent component, ComponentStartup args) + private void OnBloodRegen(Entity ent, ref NaturalBloodRegenerationAttemptEvent args) { - if (!TryComp(uid, out var bloodstream)) + if (!ent.Comp.Active || !TryComp(ent.Owner, out var bloodstream)) return; - bloodstream.HasBloodDeficiency = true; - bloodstream.BloodDeficiencyLossPercentage = component.BloodLossPercentage; + args.Amount = FixedPoint2.Min(args.Amount, 0) // If the blood regen amount already was negative, we keep it. + - bloodstream.BloodMaxVolume * ent.Comp.BloodLossPercentage; } } diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml index 2f6437dc14..c57bccb4f5 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml @@ -108,6 +108,7 @@ - DoorBumpOpener - type: Bloodstream bloodReagent: DemonsBlood + bloodRegenerationThirst: 4 # 1 unit of demon's blood satiates 4 thirst - type: BloodSucker webRequired: true - type: Arachne diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 9a26d0ec90..113151ad08 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -33,6 +33,8 @@ amount: 5 - type: Bloodstream bloodReagent: Sap + bloodRegenerationHunger: 1 + bloodRegenerationThirst: 1 # 1 unit of sap satiates 1 hunger and thirst - type: Reactive groups: Flammable: [ Touch ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index 2982cdb5b2..4633df07d8 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -35,6 +35,8 @@ color: "#2cf274" - type: Bloodstream bloodReagent: Slime # TODO Color slime blood based on their slime color or smth + bloodRegenerationHunger: 2 + bloodRegenerationThirst: 2 # 1 of slime satiates 2 hunger - type: Barotrauma damage: types: diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index 6f25841f50..7665a1bfa1 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -233,3 +233,5 @@ bloodlossHealDamage: types: Bloodloss: -1 + bloodRegenerationHunger: 1 + bloodRegenerationThirst: 1.5 # 1 unit of normal blood satiates 1t, 0.3t for vampires, 0.75h, and restores 0.25 blood for non-humans... diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 5c0cef314c..4c1341ea7d 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -18,7 +18,7 @@ Drink: effects: - !type:SatiateThirst - factor: 1.5 + factor: 0.5 conditions: - !type:OrganType type: Human @@ -39,7 +39,7 @@ - !type:OrganType type: Vampiric reagent: Protein - amount: 0.15 + amount: 0.125 # See below - !type:AdjustReagent conditions: - !type:OrganType @@ -50,7 +50,11 @@ effects: - !type:AdjustReagent reagent: UncookedAnimalProteins - amount: 0.5 + amount: 0.125 # 0.25 proteins for 1u of blood - restores 0.75 hunger, adds 0.25 blood per unit + conditions: + - !type:OrganType + type: Vampiric + shouldHave: false Medicine: effects: - !type:HealthChange @@ -99,7 +103,7 @@ # Delicious! effects: - !type:SatiateHunger - factor: 1.5 + factor: 1 footstepSound: collection: FootstepBlood params: @@ -123,9 +127,9 @@ # Sweet! effects: - !type:SatiateHunger - factor: 1 + factor: 0.5 - !type:SatiateThirst - factor: 1 + factor: 0.5 footstepSound: collection: FootstepBlood params: From e8a06128794a3462aa2be67b5aa0808bc72b3e31 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 10:28:24 -0400 Subject: [PATCH 03/11] Unathi Lore Update (#1008) # Description This PR updates the Localizations relevant to the Reptilian species by significantly expanding upon them as Unathi, which is how they are typically referred to as in both /tg/station and Baystation12 derived codebases in SS13. I have added a new "Rare" language taken from Aurora, called Azaziba, which can only be taken by Unathi as a bonus language trait. Translators for this new language Azaziba are intentionally not obtainable ingame except as spawned by Admins. This is a "Rare" language, and shouldn't be accessible to players outside of Unathi obtaining the trait. The biggest change in this update however is a massive expansion upon the Unathi Guidebook entry, providing a significant volume of Lore, which is largely taken(with slight modifications) from https://wiki.aurorastation.org/index.php?title=Unathi (Which, I can do this since their wiki has a Creative Commons license). This is probably the best way to get good quality lore for them, other than by writing it myself.

Media

![image](https://github.com/user-attachments/assets/842d9c40-3cf3-41ab-a9fe-f0aac81c1bce) ![image](https://github.com/user-attachments/assets/f1ef8090-97a4-46f9-8548-9389606d4e3b) ![image](https://github.com/user-attachments/assets/870ab41c-fe00-45cf-8440-51cfe3f0b164) ![image](https://github.com/user-attachments/assets/09a8548a-cb98-4158-b0a8-e641078ecf80)

# Changelog :cl: - add: Localizations for Reptilians that acknowledge them now as Unathi. - add: Azaziba has been added as a new "Rare" language that can only be taken by Unathi. Translators between Azaziba and Tau-Ceti Basic do not exist, please do not make them. - add: SIGNIFICANTLY expanded upon the Guidebook for Unathi by including a large volume of lore taken from the Aurora Station Wiki. --- Resources/Locale/en-US/language/languages.ftl | 10 +- Resources/Locale/en-US/species/species.ftl | 2 +- Resources/Locale/en-US/traits/traits.ftl | 7 +- .../CharacterItemGroups/languageGroups.yml | 2 + .../Objects/Devices/translator_implants.yml | 15 ++ .../Entities/Objects/Devices/translators.yml | 17 +++ .../Objects/Misc/translator_implanters.yml | 12 +- .../Language/Species-Specific/reptilian.yml | 28 +++- Resources/Prototypes/Traits/languages.yml | 15 ++ Resources/ServerInfo/Guidebook/Mobs/Harpy.xml | 1 + .../ServerInfo/Guidebook/Mobs/Reptilian.xml | 129 +++++++++++++++++- 11 files changed, 222 insertions(+), 16 deletions(-) diff --git a/Resources/Locale/en-US/language/languages.ftl b/Resources/Locale/en-US/language/languages.ftl index e44175da99..65729aa623 100644 --- a/Resources/Locale/en-US/language/languages.ftl +++ b/Resources/Locale/en-US/language/languages.ftl @@ -10,8 +10,14 @@ language-RootSpeak-description = The strange whistling-style language spoken by language-Nekomimetic-name = Nekomimetic language-Nekomimetic-description = To the casual observer, this language is an incomprehensible mess of broken Japanese. To the Felinids and Oni, it's somehow comprehensible. -language-Draconic-name = Draconic -language-Draconic-description = The common language of lizard-people, composed of sibilant hisses and rattles. +language-Draconic-name = Sinta'Unathi +language-Draconic-description = + The common language of Moghes - composed of sibilant hisses and rattles. Spoken natively by Unathi. + +language-Draconic-name = Sinta'Azaziba +language-Draconic-description = + A language of Moghes consisting of a combination of spoken word and gesticulation. + While waning since Moghes entered the galactic stage - it enjoys popular use by Unathi that never fell to the Hegemony's cultural dominance. language-SolCommon-name = Sol common language-SolCommon-description = diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index f492959a43..6c40c45404 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -2,7 +2,7 @@ species-name-human = Human species-name-dwarf = Dwarf -species-name-reptilian = Reptilian +species-name-reptilian = Unathi species-name-slime = Slime Person species-name-diona = Diona species-name-arachnid = Arachnid diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index ef649a481d..31770a33e4 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -347,4 +347,9 @@ trait-description-LowDampening = trait-name-HighDampening = kδ Proficient trait-description-HighDampening = - You are skilled in the art of subtly manipulating the noösphere. Your powers are less likely to show unintended effects. \ No newline at end of file + You are skilled in the art of subtly manipulating the noösphere. Your powers are less likely to show unintended effects. + +trait-name-Azaziba = Sinta'Azaziba +trait-description-Azaziba = + A language of Moghes consisting of a combination of spoken word and gesticulation. + While waning since Moghes entered the galactic stage - it enjoys popular use by Unathi that never fell to the Hegemony's cultural dominance. \ No newline at end of file diff --git a/Resources/Prototypes/CharacterItemGroups/languageGroups.yml b/Resources/Prototypes/CharacterItemGroups/languageGroups.yml index d2f4223d3e..a884992a23 100644 --- a/Resources/Prototypes/CharacterItemGroups/languageGroups.yml +++ b/Resources/Prototypes/CharacterItemGroups/languageGroups.yml @@ -14,6 +14,8 @@ id: Elyran - type: trait id: ValyrianStandard + - type: trait + id: Azaziba - type: characterItemGroup id: TraitsAccents diff --git a/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml b/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml index 88c9b19d24..0e7fce9568 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translator_implants.yml @@ -141,3 +141,18 @@ - ValyrianStandard requires: - TauCetiBasic + +- type: entity + parent: BaseSubdermalImplant + id: AzazibaTranslatorImplant + name: azaziba translator implant + description: An implant giving the ability to understand and speak Azaziba. # Intended for Admins Only, this item is for lore reasons not obtainable. + noSpawn: true + components: + - type: TranslatorImplant + understood: + - Azaziba + spoken: + - Azaziba + requires: + - Draconic diff --git a/Resources/Prototypes/Entities/Objects/Devices/translators.yml b/Resources/Prototypes/Entities/Objects/Devices/translators.yml index c4cb038037..5543d003bf 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translators.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translators.yml @@ -236,3 +236,20 @@ requires: - TauCetiBasic - ValyrianStandard + +- type: entity + id: AzazibaTranslator + parent: [ TranslatorPoweredBase ] + name: Azaziba translator + description: Translates speech between Unathi and Azaziba. For Unathi to speak the Archaic form of their native tongue! # Intended for Admins Only, this item is for lore reasons not obtainable. + components: + - type: HandheldTranslator + spoken: + - Draconic + - Azaziba + understood: + - Draconic + - Azaziba + requires: + - Draconic + - Azaziba \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml index 34c5a55a55..53da8e72a5 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/translator_implanters.yml @@ -37,9 +37,9 @@ implant: NekomimeticTranslatorImplant - type: entity - id: DraconicTranslatorImplanter + id: DraconicTranslatorImplanter # Intended for Admins Only, this item is for lore reasons not obtainable. parent: [ BaseTranslatorImplanter ] - name: draconic translator implant + name: unathi translator implant components: - type: Implanter implant: DraconicTranslatorImplant @@ -83,3 +83,11 @@ components: - type: Implanter implant: ValyrianStandardTranslatorImplant + +- type: entity + id: AzazibaTranslatorImplanter + parent: [ BaseTranslatorImplanter ] + name: azaziba translator implant + components: + - type: Implanter + implant: AzazibaTranslatorImplant \ No newline at end of file diff --git a/Resources/Prototypes/Language/Species-Specific/reptilian.yml b/Resources/Prototypes/Language/Species-Specific/reptilian.yml index b22a62ee0e..6f9a10efa6 100644 --- a/Resources/Prototypes/Language/Species-Specific/reptilian.yml +++ b/Resources/Prototypes/Language/Species-Specific/reptilian.yml @@ -1,5 +1,4 @@ -# Spoken by the Lizard race. -# TODO: Replace this with a much better language. +# Spoken by Unathi. - type: language id: Draconic speech: @@ -92,4 +91,27 @@ - u - u - s - - s \ No newline at end of file + - s + +# Reptilian-Specific "Rare" Language +# !Do Not Make A Translator For This Language. +- type: language + id: Azaziba + speech: + color: "#2aca2add" + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 + maxSyllables: 4 + replacement: + - azs + - zis + - zau + - azua + - skiu + - zuakz + - izo + - aei + - ki + - kut + - zo diff --git a/Resources/Prototypes/Traits/languages.yml b/Resources/Prototypes/Traits/languages.yml index 09c72c5e30..06b4890c11 100644 --- a/Resources/Prototypes/Traits/languages.yml +++ b/Resources/Prototypes/Traits/languages.yml @@ -77,3 +77,18 @@ - ValyrianStandard languagesUnderstood: - ValyrianStandard + +- type: trait + id: Azaziba + category: TraitsSpeechLanguages + points: 1 + requirements: + - !type:CharacterSpeciesRequirement + species: + - Reptilian + - !type:CharacterItemGroupRequirement + group: TraitsLanguagesBasic + languagesSpoken: + - Azaziba + languagesUnderstood: + - Azaziba \ No newline at end of file diff --git a/Resources/ServerInfo/Guidebook/Mobs/Harpy.xml b/Resources/ServerInfo/Guidebook/Mobs/Harpy.xml index 534923d5c0..0b27e31473 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Harpy.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Harpy.xml @@ -1,5 +1,6 @@ # Harpy (Homo-Aves sapiens) + All Information included in this document is licensed under CC BY-SA 4.0, and is written by VMSolidus(Github), also known as raistlin_jag(Discord) diff --git a/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml b/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml index 936cd9f5e2..8acdab3e51 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml @@ -1,16 +1,131 @@ - # Reptilians - + # Unathi +All Information included in this document is licensed under CC BY-SA 4.0, and is taken from https://wiki.aurorastation.org/index.php?title=Unathi with some modifications by VMSolidus(Github). - They can ONLY eat fruits and meat, but can eat raw meat and drink blood without any ill effects. - They prefer a somewhat higher temperature range than humans. - They can drag objects with their tail, keeping both their hands free. + The Unathi (direct plural: Unathi – You-NAWH-thee both singular and multiple) (adjective: Unathite - You-NAWH-thit) are a race of tall humanoid reptiles standing from six to seven feet tall on average, with females slightly smaller in stature. They possess a mixture of snake-like and crocodile-like features, resulting in hard and plate-like scales. + Unathi live in their home system of Uueoa-Esa with their homeworld being Moghes. The planet's history can be summarized as being divided up between various Hegemonies, names they give the most powerful Clans on Moghes throughout time. + The Clan system is deeply entrenched in Unathi society with everything else revolving around it. It forms a major part of their code of honor, which stresses the importance of martial abilities and loyalty to the Clan. + + Religion and spirituality play a major role in a Unathi society, and religious differences are the main dividing factor. + Conflict between the Sk'akh Church and the various Th'akh faiths of Moghes, as well as the various communes and cults, have caused conflict and wars between the Izweski Hegemony and the kingdoms that eventually comprised the Traditionalist Coalition. + This conflict hit a peak when they entered the intergalactic stage, which is now known as the Contact War. After this conflict, some Unathi fled the planet through Hephaestus or NanoTrasen shuttle ports. + Unathi fleeing to megacorporations like NanoTrasen find themselves working in security and engineering roles, but recently many have been proving themselves as competent surgeons and brilliant scientists, earning opportunities that Moghes would deny them because of its strict feudal hierarchy. + However, others are slipping through the cracks and becoming slavers, raiders, or pirates. As the ability for spaceship construction increases in the Unathi home system, so too does space piracy and smuggling. + + Moghes has two different biomes after the Contact War. The fertile Untouched Lands with its great jungles, vast swamps, and lush forests; all of which are protected by massive terraforming equipment kept secure by the Hegemony's wealth and power. + Contrast to that are the bombarded Wasteland kingdoms in the ashes of plains and forests, burnt into a massive planet-spanning desert rampant with punished kingdoms raiding to survive and part scavengers living in cities on treads. + + ## Megacorporate Relations + + Prior to 2465, Moghean Unathi that were not members of trade guilds were almost exclusively employed with Hephaestus Industries. + Unathi with guild memberships would primarily take contracts with NanoTrasen or Orion Express, depending on their career choice. Unathi living in Dominia, like most of their countrymen, seek employment with Zavodskoi Interstellar. + + After the Merchant's Guild declared bankruptcy, Hephaestus Industries bailed out all Hegemonic guilds and reorganised them under the banner of the company. + Since then, nearly all residents of Moghes are employed by Hephaestus in some way. + + # Biology + + Their average life expectancy is around sixty years for most Unathi. However, they tend to live for well past sixty years when given advanced medical care available to the other space-faring species. + As a cold-blooded species, they suffer fatigue and even short comas when exposed to extremely low temperatures. + + Humans and Unathi share a lot of similar internal biology with some notable exceptions. + Since they are a carnivorous species, their diet mostly consists of meat and animal products, though they do have a tolerance to some plants and fruits. + While Unathi do receive minor benefits for eating certain fruits, they do not get any nutrition from plants. + Due to their carnivorous nature, they also have an increased stomach capacity to help eat larger meals at a time. + The typical Unathi usually only eats one meal a day, and for the poorer sinta, perhaps once every two days. + They tend towards lethargic and sluggish movements more often than not because of their evolutionary history, so they move slower than most organic species. + However, the cyclical period of work for Unathi compared to other species is much faster. Unathi are polyphasic sleepers: creatures that sleep in shorter naps rather than at one time during the night. + While they tend towards sluggishness, sinta are often capable of incredible bursts of energy and speed, and their ability to work in three or four hour periods of time compensates for their more sporadic schedules. + + The reproductive system of a Sinta'Unathi is very similar to that of Earth reptiles. Females lay eggs, with the average clutch being somewhere between one and three. + They have a six-month gestation period, after which they are laid in a humid, warm area. After two months, the fetus is fully developed and hatches from the egg. + Unathi are born with their claws and the ability to walk within hours of hatching. A Sinta'Unathi is considered an adult when they are 16 years old. + + # Physical Appearance + + The Unathi as a species show a great deal of variation within body types as well as clusters of smaller physical traits passed down through clans. + Facial and body features range in size and shape with some having raptor-like aesthetics, serpentine looks, or a more draconic body. + Tail length is often genetic; conversely, tail girth is defined by a Unathi's diet as it stores most of the body's fat— nobles grow some of the largest tails. + + Unathi scales are somewhat tougher than human skin, though they shed off sporadically rather than all at once. + More vulnerable and hidden spots, such as the stomach and waist, the backs of joints, and inner thighs are all leathery skin and aren't covered in scales. + + The typical healthy adult male Unathi weighs roughly 280 pounds. Female sinta differ from males as they generally have a shorter and more rounded snout. + The typical healthy Unathi female weighs roughly 250 pounds. Female Unathi grow to about 5'9" to 6'8, while male Unathi grow to about 6'0" to 7'0". + Unusual heights tend to be smaller in scale, as the taller a Unathi is, the more likely it will be marred with health problems and not live as long as others. + + Both sexes stand on digitigrade legs, with three toes on each foot and a hooked dewclaw, and have clawed feet and hands. + They also have very long tongues, typically black or extremely dark red in color, which may stretch up to a foot and a half long and are forked just like a serpent's. + In much the same manner as snakes, Unathi can sample the air around them using their tongue. They blink and have tear ducts similar to humans. + + Unathi horns do not naturally regrow, and serious damage tends to remain permanent. + Ancient recipes using native herbs known as "horn paste" are commonly made and sold by herbalists and can counter cosmetic scratches or minor chipping. + More modern synthetic Horn Gel (based on Bone Gel), developed largely by Zeng-Hu Pharmaceuticals, can regenerate an entire lost horn, but it tends to be stratified to the upper classes and noblemen due to cost. + + ## Coloration + + Unathi are also often born into one of four major scale colour categories: red, black, orange-brown and "sand-colored", and green. + Alternative colours are rare, with dark blue and even albino Unathi being reported in very small numbers. Albinos are sometimes slightly tinted in colour while remaining predominantly white. Traditionally these off-coloured Unathi are met with prejudice, though some clans outside the Izweski may feel different. + + It has been noticed that scale colourations were more represented in some areas than other, and thus, many shades of these colours were, in Unathi culture, named after the places they tend to be seen in more often, in many cases. + + Modern red-coloured Unathi are thought to originate from a large nomadic clan that settled South of the Moghresian Sea around modern Skalamar. Nowadays, red-scaled Sinta tend to be seen on the entire Southern coast of the Moghresian Sea and the mountain ranges near it. + Today’s green-coloured Unathi hail from the Southern side of the Moghresian sea, and they are seen more often throughout this side of the coast and down to the colder lands even further South. Surprisingly, there is also a large batch of green-coloured Unathi located around Sahl lake, indicating that an old nomadic clan of mostly green Sinta settled there centuries ago. + Orange-brown and sand-yellow Unathi comprises a wide range of colours. They are a more common colour to be seen in a large area, and it is believed that their origins come from displacement in ancient conflicts that forced them to migrate and find new homelands. More precisely, Unathi harbouring such colours tend to be more represented in a large area defined between Darakath, Bahard, Mudki, and Yu’kal. + Black or “dark-scaled’ Unathi do not seem to originate from any precise area, and instead, tend to be more often seen around colder areas of Moghes, both North and South. A popular theory is that black scales are actually a consequence of exposure to the cold for generations— something that has yet to be proven. + All colours, barring albino, do not mix; if a brown Unathi and a light red Unathi have a child, the red scales the child has might be a little darker, but the colours do not blend to make something new. + + ## Genetic Variety + + Besides scale colouration, many other physical aspects of Unathi bodies can vary widely. + From horns and frills, to even extra scale crests and different structures in a Unathi’s very skeleton (namely, the skull). + While anatomical differences within a species are natural, Unathi are noteworthy for how wide these differences can get and how fast they come to be. + The exact science behind this has been lost after the Contact War, and most of the research behind such a phenomena is idly handled by Nanotrasen and Zeng-Hu specialists. + However it is assumed that Sinta simply evolve and adapt to their surroundings much faster than most of the other sentient species of the Spur, leading to such large physical discrepancies between Unathi alone. + From this, it is also assumed that, with Unathi populations moving between planets, and Moghes on its way to changing considerably (may the consequences of the of the Contact War be the of the Sinta homeworld, or may terraforming efforts save it), said biological differences between different groups will only get larger and more exotic in the next few centuries. + + # History + + The history of the Unathi is predominately a history of each Hegemony that has existed throughout their history. There have only been three clans that have managed to create an empire worthy of the title 'Hegemon.' + + The Kres’ha’nor Hegemony lasted from roughly 920 CE - 1500 CE. It is most famous for being the first empire to dominate Moghes and creating what was then a modern feudal state. + Their empire saw rise of walled cities, steel weapons, centralized taxation, and other innovations. It ended in a brutal succession war, with Moghes once again being shattered into hundreds of individual Kingdoms with no true global power. + + In the 16th century the power of Guilds began to grow, forming an early form of mercantilism. Guilds formed for bakers, butchers, grocers, millers, smiths, carpenters, weavers, mason, shoemakers, in fact, nearly every trade had its own guild. + Standards such as just weights and measures evolved from the guilds, and guild inspectors would inspect shops to ensure rules were being followed. + Guilds would help members that were sick, or in trouble, and would sometimes take care of families after the member died. + This time also saw Guilds building the first major universities. While incredibly exclusive, these universities began to create a new era of specialized labor and intellectuals. + + The 19th century saw rise of the Second Hegemony, ruled by the Sarakus Clan. + Their clan ruled harshly, and forced technological advances into the cities and towns. + In the 1930's they ruthlessly modernized their empire in The Great Endeavor, spreading electricity, radio, paved roads, modern plumbing, and other modern innovations. + + In 1994 the Izweski Clan violently deposed the Sarakus and slaughtered the entire surviving dynasty, declaring the Third Hegemony. + After they won an incredibly destructive global war to defend their claim, the Izweski have ruled Moghes until modern times. + + In 2403, a human exploration team discovered Moghes. Shortly after, first contact with the Izweski Hegemony was made. + Sol Alliance merchants and scientists flocked to Moghes, living under very careful observation and guard in Izweski cities. + Skalamar, the second largest city in Izweski, became the first Unathite city to have a shuttle port constructed. Owned by NanoTrasen, it served to transport people to and from the planet’s surface. + + The Contact War, which has more information here, was a cataclysmic global war that lasted from 2438 to 2449. + The fighting was between two global powers, the Izweski Hegemony, and the Traditionalist Coalition. + The war was fought over the very future of the Unathi and their relationship with the rest of the galaxy. + The Izweski demanded Moghes submit to a one-world government ran by themselves and embrace the influence of humanity. + The Traditionalist Coalition rejected this. The war went nuclear on September 5th, 2439, causing immense suffering across Moghes and directly leading to the creation of The Wasteland, which is set to engulf Moghes within a hundred years. + + # Species Traits + + - [color=#1e90ff]Reptilian Diet[/color]: Unathi can ONLY eat fruits and meat, but can eat raw meat and drink blood without any ill effects. + + - [color=#1e90ff]High Temperature Tolerance[/color]: Unathi prefer a somewhat higher temperature range than humans. + + - [color=#1e90ff]Grasping Tail[/color]: Unathi can drag objects with their tail, keeping both their hands free. - Their unarmed claw attacks deal Slash damage instead of Blunt. + - [color=#1e90ff]Claws[/color]: Unath unarmed claw attacks deal Slash damage instead of Blunt. - They take [color=#ffa500]30% more Cold damage.[/color] + - [color=#ffa500]Cold Intolerance[/color]: Unathi take [color=#ffa500]30% more Cold damage.[/color] From 99cde5dec01ce5e3ca1f9b099a9b3b0ef1c3bc02 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 10:28:32 -0400 Subject: [PATCH 04/11] Update CloningSystem.Utility.cs (#1009) # Description Fixes a bug with CloningSystem. It now correctly spills blood upon cloning fail. # Changelog :cl: - fix: Fixed a bug with CloningSystem. It now correctly spills blood upon cloning fail. --- Content.Server/Cloning/CloningSystem.Utility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Cloning/CloningSystem.Utility.cs b/Content.Server/Cloning/CloningSystem.Utility.cs index aa2ce27902..3c924d9dc2 100644 --- a/Content.Server/Cloning/CloningSystem.Utility.cs +++ b/Content.Server/Cloning/CloningSystem.Utility.cs @@ -253,7 +253,7 @@ private void MakeAHugeMess(EntityUid uid, PhysicsComponent? physics = null, Bloo ? physics.Mass : 71)); - bloodSolution.AddReagent("blood", 0.8f + bloodSolution.AddReagent("Blood", 0.8f * ((blood is not null) ? blood.BloodMaxVolume : 300)); From 6cb456270737db05e6b8d8db0865ba1f18867fa0 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 10:28:46 -0400 Subject: [PATCH 05/11] MoodSystem Crit Threshold CVar (#1010) # Description This PR adds a CVar that allows server hosts (such as N14 who need it) to optionally disable the Crit Threshold modification part of the MoodSystem. This is useful if a server has some other system that frequently messes with Thresholds, and that a server host wishes their system to not have to fight with Mood for it. # Changelog No changelog because this isn't playerfacing. --- Content.Server/Mood/MoodSystem.cs | 6 ++++-- Content.Shared/CCVar/CCVars.cs | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Content.Server/Mood/MoodSystem.cs b/Content.Server/Mood/MoodSystem.cs index 079a12d927..4ec4709ea7 100644 --- a/Content.Server/Mood/MoodSystem.cs +++ b/Content.Server/Mood/MoodSystem.cs @@ -252,7 +252,8 @@ private void OnInit(EntityUid uid, MoodComponent component, ComponentStartup arg if (_debugMode) return; - if (TryComp(uid, out var mobThresholdsComponent) + if (_config.GetCVar(CCVars.MoodModifiesThresholds) + && TryComp(uid, out var mobThresholdsComponent) && _mobThreshold.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold, mobThresholdsComponent)) component.CritThresholdBeforeModify = critThreshold.Value; @@ -345,7 +346,8 @@ private void RefreshShaders(EntityUid uid, int modifier) private void SetCritThreshold(EntityUid uid, MoodComponent component, int modifier) { - if (!TryComp(uid, out var mobThresholds) + if (!_config.GetCVar(CCVars.MoodModifiesThresholds) + || !TryComp(uid, out var mobThresholds) || !_mobThreshold.TryGetThresholdForState(uid, MobState.Critical, out var key)) return; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index e661af837e..901c028472 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2461,6 +2461,9 @@ public static readonly CVarDef public static readonly CVarDef MoodDecreasesSpeed = CVarDef.Create("mood.decreases_speed", true, CVar.SERVER); + public static readonly CVarDef MoodModifiesThresholds = + CVarDef.Create("mood.modify_thresholds", false, CVar.SERVER); + #endregion #region Lying Down System From 8ba95f3db631f1c656a93b373a3b81e5ffa84ac6 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 5 Oct 2024 14:30:55 +0000 Subject: [PATCH 06/11] Automatic Changelog Update (#1009) --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fdfe2b70c5..d646110161 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -6963,3 +6963,12 @@ Entries: id: 6420 time: '2024-10-04T00:52:11.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1004 +- author: VMSolidus + changes: + - type: Fix + message: >- + Fixed a bug with CloningSystem. It now correctly spills blood upon + cloning fail. + id: 6421 + time: '2024-10-05T14:28:32.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1009 From a405b7fc2f3521a7861bdfa00e1e26434fb4caa2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 16:50:24 -0400 Subject: [PATCH 07/11] Update psionics.yml --- Resources/Prototypes/Actions/psionics.yml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/Resources/Prototypes/Actions/psionics.yml b/Resources/Prototypes/Actions/psionics.yml index c2b3b98666..138823313a 100644 --- a/Resources/Prototypes/Actions/psionics.yml +++ b/Resources/Prototypes/Actions/psionics.yml @@ -235,16 +235,10 @@ event: !type:AnomalyPowerActionEvent settings: powerName: "Shadeskip" - overchargeFeedback: "shadeskip-overcharge-feedback" - overchargeCooldown: 120 - overchargeRecoil: - groups: - Burn: -100 #This will be divided by the caster's Dampening. minGlimmer: 6 maxGlimmer: 8 - supercriticalGlimmerMultiplier: 3 glimmerSoundThreshold: 50 - supercriticalThreshold: 500 + doSupercritical: false entitySpawnEntries: - settings: spawnOnPulse: true @@ -254,13 +248,6 @@ maxRange: 1.5 spawns: - ShadowKudzuWeak - - settings: - spawnOnSuperCritical: true - minAmount: 30 - maxAmount: 50 - maxRange: 50 - spawns: - - ShadowKudzu - settings: spawnOnPulse: true spawnOnSuperCritical: true From 6f83a057fbc89c30edc68bc9d78ff09f27f5fb88 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 16:56:18 -0400 Subject: [PATCH 08/11] Update drugs.yml --- Resources/Prototypes/Mood/drugs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Mood/drugs.yml b/Resources/Prototypes/Mood/drugs.yml index 470abc5e3d..73befa8746 100644 --- a/Resources/Prototypes/Mood/drugs.yml +++ b/Resources/Prototypes/Mood/drugs.yml @@ -4,14 +4,14 @@ - type: moodEffect id: LotoTranscendence moodChange: 30 - timeout: 900 #15 minutes + timeout: 600 #10 minutes moodletOnEnd: LotoEnthrallment category: "LotophagoiAddiction" - type: moodEffect id: LotoEnthrallment moodChange: -30 - timeout: 7200 #2 hours + timeout: 600 #10 minutes category: "LotophagoiAddiction" - type: moodCategory From 1cc130a91f55ccb578b1be5a3d33e4ca30bf5da3 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 17:09:52 -0400 Subject: [PATCH 09/11] More Drug Moodlets --- Resources/Locale/en-US/mood/mood.ftl | 8 +++++++- Resources/Prototypes/Mood/drugs.yml | 13 ++++++++++++- .../Reagents/Consumable/Drink/alcohol.yml | 6 ++++++ Resources/Prototypes/Reagents/narcotics.yml | 6 ++++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/en-US/mood/mood.ftl b/Resources/Locale/en-US/mood/mood.ftl index a931a30fb3..5c31af0a4d 100644 --- a/Resources/Locale/en-US/mood/mood.ftl +++ b/Resources/Locale/en-US/mood/mood.ftl @@ -66,4 +66,10 @@ mood-effect-LotoEnthrallment = mood-effect-NicotineBenefit = I feel as if I have been standing my entire life and I just sat down. mood-effect-NicotineWithdrawal = - I could really go for a smoke right now. \ No newline at end of file + I could really go for a smoke right now. + +# Drugs +mood-effect-EthanolBenefit = + I feel so relaxed from drinking. +mood-effect-SpaceDrugsBenefit = + Woaaaah, such pretty colors maaaaan. It's like I can hear color and taste sound maaan. \ No newline at end of file diff --git a/Resources/Prototypes/Mood/drugs.yml b/Resources/Prototypes/Mood/drugs.yml index 73befa8746..a9818d2021 100644 --- a/Resources/Prototypes/Mood/drugs.yml +++ b/Resources/Prototypes/Mood/drugs.yml @@ -31,4 +31,15 @@ category: "NicotineAddiction" - type: moodCategory - id: NicotineAddiction \ No newline at end of file + id: NicotineAddiction + +# Non-Addictive Drugs +- type: moodEffect + id: EthanolBenefit + moodChange: 7 + timeout: 300 #5 minutes + +- type: moodEffect + id: SpaceDrugsBenefit + moodChange: 7 + timeout: 300 #5 minutes \ No newline at end of file diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index d9e57d5b80..d1a404804a 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -255,6 +255,12 @@ Cold: -1.60 - !type:Drunk boozePower: 2 + - !type:ChemAddMoodlet + moodPrototype: EthanolBenefit + conditions: + - !type:ReagentThreshold + reagent: Ethanol + min: 5 - type: reagent id: Gin diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index ca85fd15b3..f9ed58f3b1 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -270,6 +270,12 @@ - !type:ReagentThreshold reagent: SpaceDrugs min: 15 + - !type:ChemAddMoodlet + moodPrototype: SpaceDrugsBenefit + conditions: + - !type:ReagentThreshold + reagent: SpaceDrugs + min: 5 - type: reagent id: Bananadine From 147687346797e58908afcbef84befcafd192e818 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 19:23:19 -0400 Subject: [PATCH 10/11] Respawn System CVar --- Content.Server/GameTicking/GameTicker.Spawning.cs | 2 +- Content.Shared/CCVar/CCVars.cs | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index c0643d5476..7bbb602457 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -157,7 +157,7 @@ private void SpawnPlayer(ICommonSession player, HumanoidCharacterProfile charact } //Ghost system return to round, check for whether the character isn't the same. - if (lateJoin && !_adminManager.IsAdmin(player) && !CheckGhostReturnToRound(player, character, out var checkAvoid)) + if (!_cfg.GetCVar(CCVars.GhostAllowSameCharacter) && lateJoin && !_adminManager.IsAdmin(player) && !CheckGhostReturnToRound(player, character, out var checkAvoid)) { var message = checkAvoid ? Loc.GetString("ghost-respawn-same-character-slightly-changed-name") diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 901c028472..7714122d9f 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2509,14 +2509,17 @@ public static readonly CVarDef #endregion - #region GhostRespawn + #region GhostRespawn - public static readonly CVarDef GhostRespawnTime = - CVarDef.Create("ghost.respawn_time", 15d, CVar.SERVERONLY); + public static readonly CVarDef GhostRespawnTime = + CVarDef.Create("ghost.respawn_time", 15d, CVar.SERVERONLY); - public static readonly CVarDef GhostRespawnMaxPlayers = - CVarDef.Create("ghost.respawn_max_players", 40, CVar.SERVERONLY); + public static readonly CVarDef GhostRespawnMaxPlayers = + CVarDef.Create("ghost.respawn_max_players", 40, CVar.SERVERONLY); - #endregion + public static readonly CVarDef GhostAllowSameCharacter = + CVarDef.Create("ghost.allow_same_character", false, CVar.SERVERONLY); + + #endregion } } From d0d4e83b0c8adaef24cf4149ca5cda988cfad83d Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 5 Oct 2024 19:26:37 -0400 Subject: [PATCH 11/11] Update CCVars.cs --- Content.Shared/CCVar/CCVars.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 7714122d9f..034ad1db77 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2518,7 +2518,7 @@ public static readonly CVarDef CVarDef.Create("ghost.respawn_max_players", 40, CVar.SERVERONLY); public static readonly CVarDef GhostAllowSameCharacter = - CVarDef.Create("ghost.allow_same_character", false, CVar.SERVERONLY); + CVarDef.Create("ghost.allow_same_character", true, CVar.SERVERONLY); #endregion }