Jedes Glied einer Liste kostet, auch in einem Gruppen-CC

Bisher zahlte nur, wer neu einstieg: wer in einer Kette mitgezogen
wurde oder einen Gruppen-CC mitbenutzte, stand darin ohne eigene
Buchung. Damit ging die Rechnung nicht auf - verbrauchte Redesigns sind
alle Glieder aller Listen minus die Anzahl der Listen, und das gilt fuer
jeden Nutzer einzeln.

Jetzt bucht jedes Glied: das unterste einen Platz, jedes weitere ein
Redesign. Wo eine Buchung fehlt, traegt der Abgleich sie nach, und das
Redesign eines Gruppen-CCs kostet jeden Nutzer sein eigenes.

Am Pfeil stehen alle offenen Buchungen eines Eintrags, nicht nur die
juengste - sonst bleibt eine zweite unsichtbar.
This commit is contained in:
2026-09-22 13:01:52 +02:00
parent fee4a4f73a
commit 367f1aace4
5 changed files with 613 additions and 305 deletions
+11 -4
View File
@@ -409,16 +409,23 @@ const UEBERGANG: Record<string, { zeichen: string; titel: string; klasse: string
* Eintrag.
*/
function Uebergang({ character }: { character: Character | undefined }) {
const art = character?.fundedWith ? UEBERGANG[character.fundedWith] : undefined;
const arten = (character?.fundedWith ?? [])
.map((art) => UEBERGANG[art])
.filter((art): art is (typeof UEBERGANG)[string] => art !== undefined);
return (
<div className="chain-arrow">
<span aria-hidden="true">⬆</span>
{art && (
<span className={`chain-step ${art.klasse}`} title={art.titel}>
{arten.map((art, i) => (
<span
key={`${art.zeichen}-${i}`}
className={`chain-step ${art.klasse}`}
style={i > 0 ? { transform: `translate(${0.75 + i * 1.6}rem, -50%)` } : undefined}
title={art.titel}
>
{art.zeichen}
</span>
)}
))}
</div>
);
}
+2 -1
View File
@@ -151,7 +151,8 @@ export interface Character {
forumThreads?: ThreadRef[];
links?: CharacterLink[];
/// Womit dieser Eintrag bezahlt wurde, aus Sicht des betrachteten Spielers.
fundedWith?: CreditKind | null;
/// Mehrere, wenn zusätzlich gebucht wurde - etwa bei einer Rückkehr.
fundedWith?: CreditKind[];
members?: CharacterMember[];
createdAt: string;
}