diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 056ed0cae3..4c0b901b6e 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -171,8 +171,8 @@ namespace Content.Client.Entry _configManager.SetCVar("interface.resolutionAutoScaleLowerCutoffY", 240); _configManager.SetCVar("interface.resolutionAutoScaleMinimum", 0.5f); - _configManager.SetCVar(InteractionsCVars.WindowPosX, 0); // Sunrise-Edit - _configManager.SetCVar(InteractionsCVars.WindowPosY, 0); // Sunrise-Edit + _configManager.SetCVar("interactions.window_pos_x", 0); // Sunrise-Edit + _configManager.SetCVar("interactions.window_pos_y", 0); // Sunrise-Edit } public override void Shutdown() diff --git a/Content.Shared/_Sunrise/InteractionsPanel/Data/UI/BUI.cs b/Content.Shared/_Sunrise/InteractionsPanel/Data/UI/BUI.cs index 47ba130889..84d4bdd4d4 100644 --- a/Content.Shared/_Sunrise/InteractionsPanel/Data/UI/BUI.cs +++ b/Content.Shared/_Sunrise/InteractionsPanel/Data/UI/BUI.cs @@ -75,20 +75,20 @@ public sealed class CustomInteractionData public sealed class InteractionsCVars { public static readonly CVarDef EmoteVisibility = - CVarDef.Create("interactions.emote", true, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.emote", true, CVar.CLIENTONLY); public static readonly CVarDef Expand = - CVarDef.Create("interactions.expand", false, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.expand", false, CVar.CLIENTONLY); public static readonly CVarDef OpenInteractionCategories = - CVarDef.Create("interactions.open_categories", "", CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.open_categories", "", CVar.CLIENTONLY); public static readonly CVarDef FavoriteInteractions = - CVarDef.Create("interactions.favorites", "", CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.favorites", "", CVar.CLIENTONLY); public static readonly CVarDef WindowPosX = - CVarDef.Create("interactions.window_pos_x", 0, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.window_pos_x", 0, CVar.CLIENTONLY); public static readonly CVarDef WindowPosY = - CVarDef.Create("interactions.window_pos_y", 0, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); + CVarDef.Create("interactions.window_pos_y", 0, CVar.CLIENTONLY); } diff --git a/Content.YAMLLinter/Program.cs b/Content.YAMLLinter/Program.cs index f5098e1c78..32078faeef 100644 --- a/Content.YAMLLinter/Program.cs +++ b/Content.YAMLLinter/Program.cs @@ -21,8 +21,7 @@ namespace Content.YAMLLinter var stopwatch = new Stopwatch(); stopwatch.Start(); - var safeMode = true; // #Sunrise-edit: принудительно включён безопасный режим - var (errors, fieldErrors) = await RunValidation(safeMode); + var (errors, fieldErrors) = await RunValidation(); var count = errors.Count + fieldErrors.Count; @@ -83,6 +82,7 @@ namespace Content.YAMLLinter var engineErrors = protoMan.ValidateDirectory(new ResPath("/EnginePrototypes"), out var engPrototypes); yamlErrors = protoMan.ValidateDirectory(new ResPath("/Prototypes"), out var prototypes); + // Merge engine & content prototypes foreach (var (kind, instances) in engPrototypes) { if (prototypes.TryGetValue(kind, out var existing)) @@ -106,16 +106,8 @@ namespace Content.YAMLLinter } public static async Task<(Dictionary> YamlErrors, List FieldErrors)> - // #Sunrise-start - RunValidation(bool safeMode = false) + RunValidation() { - if (safeMode) - { - Console.WriteLine("::warning::Safe mode enabled. Skipping YAML validation."); - return (new Dictionary>(), new List()); - } - // #Sunrise-end - var (clientAssemblies, serverAssemblies) = await GetClientServerAssemblies(); var serverTypes = serverAssemblies.SelectMany(n => n.GetTypes()).Select(t => t.Name).ToHashSet(); var clientTypes = clientAssemblies.SelectMany(n => n.GetTypes()).Select(t => t.Name).ToHashSet(); @@ -127,15 +119,17 @@ namespace Content.YAMLLinter foreach (var (key, val) in serverErrors.YamlErrors) { + // Include all server errors marked as always relevant var newErrors = val.Where(n => n.AlwaysRelevant).ToHashSet(); + // We include sometimes-relevant errors if they exist both for the client & server if (clientErrors.YamlErrors.TryGetValue(key, out var clientVal)) newErrors.UnionWith(val.Intersect(clientVal)); + // Include any errors that relate to server-only types foreach (var errorNode in val) { - if (errorNode is FieldNotFoundErrorNode fieldNotFoundNode && - !clientTypes.Contains(fieldNotFoundNode.FieldType.Name)) + if (errorNode is FieldNotFoundErrorNode fieldNotFoundNode && !clientTypes.Contains(fieldNotFoundNode.FieldType.Name)) { newErrors.Add(errorNode); } @@ -145,6 +139,7 @@ namespace Content.YAMLLinter yamlErrors[key] = newErrors; } + // Next add any always-relevant client errors. foreach (var (key, val) in clientErrors.YamlErrors) { var newErrors = val.Where(n => n.AlwaysRelevant).ToHashSet(); @@ -152,20 +147,21 @@ namespace Content.YAMLLinter continue; if (yamlErrors.TryGetValue(key, out var errors)) - errors.UnionWith(newErrors); + errors.UnionWith(val.Where(n => n.AlwaysRelevant)); else yamlErrors[key] = newErrors; + // Include any errors that relate to client-only types foreach (var errorNode in val) { - if (errorNode is FieldNotFoundErrorNode fieldNotFoundNode && - !serverTypes.Contains(fieldNotFoundNode.FieldType.Name)) + if (errorNode is FieldNotFoundErrorNode fieldNotFoundNode && !serverTypes.Contains(fieldNotFoundNode.FieldType.Name)) { newErrors.Add(errorNode); } } } + // Finally, combine the prototype ID field errors. var fieldErrors = serverErrors.FieldErrors .Concat(clientErrors.FieldErrors) .Distinct() diff --git a/Resources/Locale/en-US/_prototypes/xenoarch/effects.ftl b/Resources/Locale/en-US/_prototypes/xenoarch/effects.ftl index 784b92113e..8c24f491e8 100644 --- a/Resources/Locale/en-US/_prototypes/xenoarch/effects.ftl +++ b/Resources/Locale/en-US/_prototypes/xenoarch/effects.ftl @@ -144,55 +144,3 @@ ent-XenoArtifactEffectCreationGasHealium = { ent-BaseXenoArtifactEffect } .desc = Creates healium ent-XenoArtifactEffectCreationGasNitrium = { ent-BaseXenoArtifactEffect } .desc = Creates nitrium - -# Sunrise Artifact Effects -ent-SunriseEffectHeal = { ent-BaseXenoArtifactEffect } - .desc = Heals nearby living beings -ent-SunriseArtifactGenerateEnergy = { ent-BaseOneTimeXenoArtifactEffect } - .desc = Generates electrical energy -ent-SunriseArtifactWandering = { ent-BaseOneTimeXenoArtifactEffect } - .desc = Forces the artifact to move randomly in the area -ent-SunriseArtifactThrowThingsAround = { ent-BaseXenoArtifactEffect } - .desc = Violently scatters nearby objects -ent-SunriseArtifactKnock = { ent-BaseXenoArtifactEffect } - .desc = Knocks down nearby beings -ent-SunriseArtifactEffectJunkSpawn = { ent-BaseXenoArtifactEffect } - .desc = Creates random junk -ent-SunriseArtifactShatterWindows = { ent-BaseXenoArtifactEffect } - .desc = Shatters nearby windows -ent-SunriseEffectBoltAirlocks = { ent-BaseXenoArtifactEffect } - .desc = Locks nearby airlocks -ent-SunriseArtifactHunger = { ent-BaseXenoArtifactEffect } - .desc = Increases hunger in nearby beings -ent-SunriseEffectThirst = { ent-BaseXenoArtifactEffect } - .desc = Increases thirst in nearby beings -ent-SunriseEffectTeslaDischarge = { ent-BaseXenoArtifactEffect } - .desc = Creates Tesla discharges -ent-SunriseEffectSpawnEvilTwin = { ent-BaseXenoArtifactEffect } - .desc = Spawns an evil twin -ent-SunriseArtifactTeleport = { ent-BaseXenoArtifactEffect } - .desc = Teleports nearby beings -ent-SunriseArtifactEmp = { ent-BaseXenoArtifactEffect } - .desc = Creates electromagnetic pulses -ent-SunriseEffectIgnite = { ent-BaseXenoArtifactEffect } - .desc = Ignites nearby objects -ent-SunriseEffectShuffleUltra = { ent-BaseXenoArtifactEffect } - .desc = Shuffles positions of nearby beings -ent-SunriseEffectPolyChair = { ent-BaseXenoArtifactEffect } - .desc = Transforms nearby objects into chairs -ent-SunriseEffectPolyWatermelon = { ent-BaseXenoArtifactEffect } - .desc = Transforms nearby objects into watermelons -ent-SunriseEffectPolyAppendix = { ent-BaseXenoArtifactEffect } - .desc = Transforms nearby objects into appendices -ent-SunriseEffectPolyDisposal = { ent-BaseXenoArtifactEffect } - .desc = Transforms nearby objects into disposals -ent-SunriseEffectPolyTable = { ent-BaseXenoArtifactEffect } - .desc = Transforms nearby objects into tables -ent-SunriseEffectSwap = { ent-BaseXenoArtifactEffect } - .desc = Swaps nearby beings -ent-SunriseEffectRandomTransformation = { ent-BaseXenoArtifactEffect } - .desc = Randomly transforms nearby objects -ent-SunriseEffectMagnetUltra = { ent-BaseXenoArtifactEffect } - .desc = Creates powerful magnetic fields -ent-SunriseEffectShiftedAsciiTableAccent = { ent-BaseXenoArtifactEffect } - .desc = Makes speech completely incoherent and incomprehensible diff --git a/Resources/Locale/en-US/_strings/_sunrise/accent/italian.ftl b/Resources/Locale/en-US/_strings/_sunrise/accent/italian.ftl index cc8641417f..56c7e78805 100644 --- a/Resources/Locale/en-US/_strings/_sunrise/accent/italian.ftl +++ b/Resources/Locale/en-US/_strings/_sunrise/accent/italian.ftl @@ -1,151 +1,82 @@ -# This should probably use the same prefix system as the mobster accent. -# For the record, these do not work right now - even when uncommented. - -# accent-italian-prefix-1 = Ravioli, ravioli, give me the formuoli! -# accent-italian-prefix-2 = Mamma-mia! -# accent-italian-prefix-3 = Mamma-mia! That's a spicy meat-ball! -# accemt-italian-prefix-4 = La la la la la funiculi funicula! - -accent-italian-words-1 = assistant -accent-italian-words-replace-1 = goombah - -accent-italian-words-2 = assistants -accent-italian-words-replace-2 = goombahs - -accent-italian-words-3 = baby -accent-italian-words-replace-3 = bambino - -accent-italian-words-4 = bad -accent-italian-words-replace-4 = molto male - -accent-italian-words-5 = bye -accent-italian-words-replace-5 = arrivederci - -accent-italian-words-6 = captain -accent-italian-words-replace-6 = capitano - -accent-italian-words-7 = cheese -accent-italian-words-replace-7 = parmesano - -accent-italian-words-8 = cook -accent-italian-words-replace-8 = cook-a - -accent-italian-words-9 = could -accent-italian-words-replace-9 = could-a - -accent-italian-words-10 = dad -accent-italian-words-replace-10 = pappa - -accent-italian-words-11 = good -accent-italian-words-replace-11 = molto bene - -accent-italian-words-12 = greytide -accent-italian-words-replace-12 = curvisti - -accent-italian-words-13 = greytider -accent-italian-words-replace-13 = curvisti - -accent-italian-words-14 = greytiders -accent-italian-words-replace-14 = curvisti - -accent-italian-words-15 = hello -accent-italian-words-replace-15 = ciao - -accent-italian-words-16 = it's -accent-italian-words-replace-16 = it's-a - -accent-italian-words-17 = make -accent-italian-words-replace-17 = make-a - -accent-italian-words-18 = meat -accent-italian-words-replace-18 = prosciutto - -accent-italian-words-19 = mom -accent-italian-words-replace-19 = mamma - -accent-italian-words-20 = my -accent-italian-words-replace-20 = my-a - -accent-italian-words-21 = nuke -accent-italian-words-replace-21 = spiciest-a meatball - -accent-italian-words-22 = op -accent-italian-words-replace-22 = greek - -accent-italian-words-23 = operative -accent-italian-words-replace-23 = greek - -accent-italian-words-24 = operatives -accent-italian-words-replace-24 = greeks - -accent-italian-words-25 = sec -accent-italian-words-replace-25 = polizia - -accent-italian-words-26 = security -accent-italian-words-replace-26 = polizia - -accent-italian-words-27 = secoff -accent-italian-words-replace-27 = polizia - -accent-italian-words-28 = shitcurity -accent-italian-words-replace-28 = carabinieri - -accent-italian-words-29 = shitsec -accent-italian-words-replace-29 = carabinieri - -accent-italian-words-30 = sing -accent-italian-words-replace-30 = sing-a - -accent-italian-words-31 = spaghetti -accent-italian-words-replace-31 = SPAGHETT - -accent-italian-words-32 = spicy -accent-italian-words-replace-32 = a-spicy - -accent-italian-words-33 = thanks -accent-italian-words-replace-33 = grazie - -accent-italian-words-34 = thing -accent-italian-words-replace-34 = thing-a - -accent-italian-words-35 = traitor -accent-italian-words-replace-35 = mafioso - -accent-italian-words-36 = traitors -accent-italian-words-replace-36 = mafioso - -accent-italian-words-37 = use -accent-italian-words-replace-37 = use-a - -accent-italian-words-38 = want -accent-italian-words-replace-38 = want-a - -accent-italian-words-39 = what's -accent-italian-words-replace-39 = what's-a - -accent-italian-words-40 = who's -accent-italian-words-replace-40 = who's-a - -accent-italian-words-41 = whose -accent-italian-words-replace-41 = whose-a - -accent-italian-words-42 = why -accent-italian-words-replace-42 = for-a what reason - -accent-italian-words-43 = wine -accent-italian-words-replace-43 = vino - -accent-italian-words-44 = passenger -accent-italian-words-replace-44 = goombah - -accent-italian-words-45 = passengers -accent-italian-words-replace-45 = goombahs - -accent-italian-words-46 = i'm -accent-italian-words-replace-46 = i'm-a - -accent-italian-words-47 = am-a -accent-italian-words-replace-47 = am-a - -accent-italian-words-48 = and-a -accent-italian-words-replace-48 = and-a +accent-italian-words-301 = малышка +accent-italian-words-replace-301 = бамбино +accent-italian-words-401 = плохая +accent-italian-words-replace-401 = молто мале +accent-italian-words-402 = плохие +accent-italian-words-replace-402 = молто мале +accent-italian-words-403 = плохое +accent-italian-words-replace-403 = молто мале +accent-italian-words-501 = досвидания +accent-italian-words-replace-501 = ариведерчи +accent-italian-words-502 = до-свидания +accent-italian-words-replace-502 = arrivederci +accent-italian-words-601 = кэп +accent-italian-words-replace-601 = капитано +accent-italian-words-701 = сыра +accent-italian-words-replace-701 = пармезано +accent-italian-words-801 = приготовить +accent-italian-words-replace-801 = кучинаре +accent-italian-words-802 = приготовлю +accent-italian-words-replace-802 = кучинаре +accent-italian-words-803 = пожарь +accent-italian-words-replace-803 = кучинаре +accent-italian-words-804 = пожарить +accent-italian-words-replace-804 = кучинаре +accent-italian-words-805 = пожарю +accent-italian-words-replace-805 = кучинаре +accent-italian-words-901 = можешь +accent-italian-words-replace-901 = потреббе +accent-italian-words-1001 = отец +accent-italian-words-replace-1001 = папа +accent-italian-words-1101 = хорошая +accent-italian-words-replace-1101 = молто бэне +accent-italian-words-1102 = хорошие +accent-italian-words-replace-1102 = молто бэне +accent-italian-words-1103 = хорошее +accent-italian-words-replace-1103 = молто бэне +accent-italian-words-1501 = приветик +accent-italian-words-replace-1501 = чао +accent-italian-words-1701 = сделаю +accent-italian-words-replace-1701 = фарэ уна +accent-italian-words-1702 = сделаем +accent-italian-words-replace-1702 = фарэ уна +accent-italian-words-1703 = сделайте +accent-italian-words-replace-1703 = фарэ уна +accent-italian-words-1801 = мяса +accent-italian-words-replace-1801 = прошутто +accent-italian-words-1901 = мать +accent-italian-words-replace-1901 = мама +accent-italian-words-2001 = моя +accent-italian-words-replace-2001 = иль мио +accent-italian-words-2002 = моё +accent-italian-words-replace-2002 = иль мио +accent-italian-words-2003 = мои +accent-italian-words-replace-2003 = иль мио +accent-italian-words-2101 = ядерка +accent-italian-words-replace-2101 = полпетта ди карне +accent-italian-words-2801 = щиткюрити +accent-italian-words-replace-2801 = карабиниери +accent-italian-words-3001 = пою +accent-italian-words-replace-3001 = кантаре +accent-italian-words-3002 = спой +accent-italian-words-replace-3002 = кантаре +accent-italian-words-3101 = макарон +accent-italian-words-replace-3101 = СПАГЕТТ +accent-italian-words-3102 = макароны +accent-italian-words-replace-3102 = СПАГЕТТИ +accent-italian-words-3201 = острая +accent-italian-words-replace-3201 = пиканте +accent-italian-words-3202 = острые +accent-italian-words-replace-3202 = пиканте +accent-italian-words-3203 = острое +accent-italian-words-replace-3203 = пиканте +accent-italian-words-3401 = штука +accent-italian-words-replace-3401 = уна коза +accent-italian-words-3402 = штук +accent-italian-words-replace-3402 = пеззи +accent-italian-words-3701 = использовать +accent-italian-words-replace-3701 = узаре +accent-italian-words-3801 = хотеть +accent-italian-words-replace-3801 = десидераре +accent-italian-words-4301 = вина +accent-italian-words-replace-4301 = вино