Implement Arch and some additional changes

This commit is contained in:
2026-07-09 18:32:52 +02:00
parent 95cebf8df0
commit 1e53968c36
31 changed files with 980 additions and 79 deletions
@@ -707,7 +707,7 @@ namespace KernelPanic.UI
private static int GetDistroStars(DistroDefinition unit)
{
return 4;
return unit != null && string.Equals(unit.Id, "arch", StringComparison.OrdinalIgnoreCase) ? 5 : 4;
}
private static Color GetLanguageColor(Language language)
@@ -2024,6 +2024,8 @@ namespace KernelPanic.UI
PackageEffectKind.JavaScriptFlatDamage => $"+{amount} JavaScript damage",
PackageEffectKind.WaveThresholdRestore => $"restore {amount} Uptime after wave {effect.Threshold}",
PackageEffectKind.DnfFedoraPassive => "Fedora passive can trigger twice",
PackageEffectKind.FirstCThisTurnDamageMultiplier => $"first C card each turn deals {amount}% damage",
PackageEffectKind.TurnStartGenerateLanguageCard => amount > 0 ? "turn start: generate C/Rust card at -1c" : "turn start: generate common C/Rust card",
_ => amount > 0 ? $"+{amount} package effect" : "package effect"
};
}
+1 -1
View File
@@ -607,7 +607,7 @@ namespace KernelPanic.UI
IReadOnlyList<string> ids = _gachaService.BeginnerState.guaranteedDistroIds;
string first = ids.Count > 0 ? ids[0] : "--";
string second = ids.Count > 1 ? ids[1] : "--";
return $"20={first}, 40={second}, 50=future standard 5-star";
return $"20={first}, 40={second}, 50=guaranteed 5-star";
}
private static VisualElement BuildInfoLine(string key, string value)
+6 -2
View File
@@ -517,12 +517,16 @@ namespace KernelPanic.UI
}
}
if (saveData.starterChosen && gacha.BannerPool.Count == 0)
if (saveData.starterChosen)
{
IReadOnlyList<DistroDefinition> distros = distroDatabase.AllDistros;
for (int i = 0; i < distros.Count; i++)
{
gacha.AddToBannerPool(distros[i]);
DistroDefinition distro = distros[i];
if (GachaService.IsBeginnerInstallMediaDistro(distro))
{
gacha.AddToBannerPool(distro);
}
}
}
}
+8 -4
View File
@@ -707,7 +707,7 @@ namespace KernelPanic.UI
if (_saveData.starterChosen)
{
AddAllFourStarDistrosToBeginnerBannerPool();
AddBeginnerInstallMediaDistrosToBannerPool();
}
if (_gachaService.BeginnerState.guaranteedDistroIds.Count == 0 && _saveData.bannerPoolIds.Count > 0)
@@ -730,7 +730,7 @@ namespace KernelPanic.UI
}
}
private void AddAllFourStarDistrosToBeginnerBannerPool()
private void AddBeginnerInstallMediaDistrosToBannerPool()
{
if (distroDatabase == null)
{
@@ -740,7 +740,11 @@ namespace KernelPanic.UI
IReadOnlyList<DistroDefinition> distros = distroDatabase.AllDistros;
for (int i = 0; i < distros.Count; i++)
{
_gachaService.AddToBannerPool(distros[i]);
DistroDefinition distro = distros[i];
if (GachaService.IsBeginnerInstallMediaDistro(distro))
{
_gachaService.AddToBannerPool(distro);
}
}
}
@@ -806,7 +810,7 @@ namespace KernelPanic.UI
private void HandleStarterConfirmed(DistroDefinition picked, IReadOnlyList<DistroDefinition> remaining)
{
_playerCollection.Add(picked, 1);
AddAllFourStarDistrosToBeginnerBannerPool();
AddBeginnerInstallMediaDistrosToBannerPool();
_gachaService.SetBeginnerGuaranteedDistros(remaining);
_saveData.starterChosen = true;
SaveCurrentState();
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using KernelPanic.Data;
using KernelPanic.Meta;
using UnityEngine;
using UnityEngine.UIElements;
@@ -196,7 +197,24 @@ namespace KernelPanic.UI
return false;
}
starters = allDistros;
List<DistroDefinition> starterDistros = new();
for (int i = 0; i < allDistros.Count; i++)
{
DistroDefinition distro = allDistros[i];
if (GachaService.IsBeginnerStarterDistro(distro))
{
starterDistros.Add(distro);
}
}
if (starterDistros.Count < StarterCount)
{
starters = Array.Empty<DistroDefinition>();
error = $"DistroDatabase needs at least {StarterCount} starter distros (found {starterDistros.Count})";
return false;
}
starters = starterDistros;
error = null;
return true;
}