Недельный PvE-предел синих кристаллов: 6 за 7 реальных суток, сверх -- золото (регламент валют 05.11, ответ 06.11)

- CrystalQuota (без Unity) + 6 тестов из раздела 12
- Задания, события, бои: в пределах квоты -- кристаллы, сверх -- 1000 золота за кристалл (ТЕСТ)
- Ждущие места кристаллы квоту второй раз не тратят; письмо «ждут места» -- вне квоты
- Окно Ратуши: «Новых кристаллов за 7 дней: N / 6»; DEV: «+1 PvE-кристалл», «Сбросить квоту»

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alexander
2026-11-06 16:24:16 +01:00
co-authored by Claude Opus 5.5
parent e05cf87173
commit 277afdf84e
9 changed files with 267 additions and 12 deletions
+9
View File
@@ -336,6 +336,15 @@ public static class BuildingWindow
float have = GameServices.TryGet(out IEconomy e) ? e.Get(ResourceType.Gems) : 0f;
return $"Кристаллов {have:0} / {EconomyConfig.CrystalStorageNow().Capacity}";
}, 24, UIKit.Theme.Text);
// Недельный PvE-предел (регламент валют 05.11, ответ 06.11): сколько новых кристаллов из заданий, событий и боёв
Live(card, () =>
{
var gp = GameProgress.Instance;
if (gp == null) return "";
string text = $"Новых кристаллов из заданий, событий и боёв за 7 дней: {gp.CrystalQuotaUsed} / {gp.CrystalQuotaLimit}";
if (gp.CrystalQuotaLeft <= 0) text += $". Квота освободится через {GameData.FormatTime(gp.CrystalQuotaSecondsToFree)}, до тех пор -- золото";
return text;
}, 22, UIKit.Theme.TextDim);
var next = storage.Next;
string why = storage.WhyNot(townHallLevel);