фикс линтера

This commit is contained in:
Vigers Ray 2025-08-05 05:57:15 +03:00
parent 27454c565e
commit 2b3750ab0e
5 changed files with 102 additions and 227 deletions

View file

@ -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()

View file

@ -75,20 +75,20 @@ public sealed class CustomInteractionData
public sealed class InteractionsCVars
{
public static readonly CVarDef<bool> EmoteVisibility =
CVarDef.Create("interactions.emote", true, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
CVarDef.Create("interactions.emote", true, CVar.CLIENTONLY);
public static readonly CVarDef<bool> Expand =
CVarDef.Create("interactions.expand", false, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
CVarDef.Create("interactions.expand", false, CVar.CLIENTONLY);
public static readonly CVarDef<string> OpenInteractionCategories =
CVarDef.Create("interactions.open_categories", "", CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
CVarDef.Create("interactions.open_categories", "", CVar.CLIENTONLY);
public static readonly CVarDef<string> FavoriteInteractions =
CVarDef.Create("interactions.favorites", "", CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
CVarDef.Create("interactions.favorites", "", CVar.CLIENTONLY);
public static readonly CVarDef<int> 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<int> WindowPosY =
CVarDef.Create("interactions.window_pos_y", 0, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
CVarDef.Create("interactions.window_pos_y", 0, CVar.CLIENTONLY);
}

View file

@ -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<string, HashSet<ErrorNode>> YamlErrors, List<string> FieldErrors)>
// #Sunrise-start
RunValidation(bool safeMode = false)
RunValidation()
{
if (safeMode)
{
Console.WriteLine("::warning::Safe mode enabled. Skipping YAML validation.");
return (new Dictionary<string, HashSet<ErrorNode>>(), new List<string>());
}
// #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()

View file

@ -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

View file

@ -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 = вино