2.4 KiB
14 — Kampfformeln und Rundenablauf
Type: grilling Status: open Blocked by: 01
Question
Wie läuft ein Kampf ab, und mit welchen Formeln?
Der Attributkatalog aus 01 liefert die Zutaten (damage, hit_chance, critical_chance,
critical_factor, resistance, dexterity, luck). Wie sie zusammenwirken, ist offen:
- Reihenfolge: Was bestimmt, wer zuerst handelt —
dexterity, ein Initiativwurf, oder immer der Spieler zuerst? Ändert sich das während des Kampfes? - Trefferformel: Wie berechnet sich, ob ein Angriff trifft? Ist
hit_chancegegen Ausweichen gerechnet, oder trifft immer unddexteritymindert nur den Schaden? - Schadensformel: In welcher Reihenfolge greifen Waffe,
damage-Modifikatoren, Krit undresistance? Ist Resistenz prozentual oder flach, und gibt es eine Ober- oder Untergrenze? - Kritische Treffer: Wie speist
luckincritical_chance? Multipliziertcritical_factorden Rohschaden oder den geminderten? - Aktionen pro Zug: Genau eine, oder gibt es Ausdauer als Budget? Wozu dient
max_staminasonst? - Fähigkeiten (nachgetragen aus Ticket 02): Was kostet eine Fähigkeit — Ausdauer, ein eigener Ressourcenpool, Ladungen? Gibt es Abklingzeiten, und werden sie in Zügen gezählt? Wann ist eine Fähigkeit gesperrt, und woran sieht der Spieler das? Ticket 02 hat Fähigkeiten als Registry festgelegt, ihre Kampfsemantik aber ausdrücklich hierher delegiert.
- Flucht: Möglich, mit welcher Chance, mit welchen Kosten?
- Zufall: Schadensstreuung ja oder nein, und woher kommt der Zufallsgenerator — braucht es einen Seed im Speicherstand?
Ergebnis: die Formeln als Pseudocode plus der Ablauf eines Zuges von Eingabe bis Ergebnis.
Vorgabe aus Ticket 07
Der Aktionskatalog und die Ziel-Auflösung (self / target / all_enemies aus 01) gehören hierher.
Alles läuft durch Game::apply(action, source: CreatureRef, target: CreatureRef, reg), gelesen wird
über Game::attribute(who, attr, reg).
Eine Frage fällt zusätzlich an, die 07 nur benennen konnte: Wann werden tote Gegner aufgeräumt?
CreatureRef::Enemy(i) ist ein Index in Game.enemies und überlebt das Entfernen aus der Vec
nicht — eine Aktion, die mitten im Zug einen Gegner tötet, verschiebt die Adressen aller
nachfolgenden. Der Rundenablauf muss festlegen, ob am Zugende, am Rundenende oder gar nicht
kompaktiert wird (Alternative: Tote bleiben mit einem Flag stehen).