update
This commit is contained in:
@@ -28,6 +28,21 @@ const ROLE_STATS := {
|
||||
Role.HEILER: {"hp": 520.0, "atk": 38.0, "armor": 0.22, "aspd": 0.70, "range": 3, "mana": 90.0},
|
||||
}
|
||||
|
||||
# Das Hauptelement prägt die Werte: Feuer schlägt hart, Erde hält aus, Wind ist
|
||||
# schnell, Blitz trifft kritisch, Wasser zaubert öfter, Eis ist zäh und langsam.
|
||||
const ELEMENT_PROFILE := {
|
||||
Element.FEUER: {"hp": 0.90, "atk": 1.18, "armor": 0.0, "aspd": 1.0, "mana": 1.0, "crit": 0.0},
|
||||
Element.WASSER: {"hp": 1.0, "atk": 0.95, "armor": 0.0, "aspd": 1.0, "mana": 0.75, "crit": 0.0},
|
||||
Element.WIND: {"hp": 0.92, "atk": 0.95, "armor": 0.0, "aspd": 1.20, "mana": 1.0, "crit": 0.0},
|
||||
Element.BLITZ: {"hp": 0.95, "atk": 1.0, "armor": 0.0, "aspd": 1.05, "mana": 1.0, "crit": 0.15},
|
||||
Element.ERDE: {"hp": 1.22, "atk": 0.92, "armor": 0.08, "aspd": 0.90, "mana": 1.0, "crit": 0.0},
|
||||
Element.EIS: {"hp": 1.08, "atk": 0.95, "armor": 0.05, "aspd": 0.95, "mana": 0.9, "crit": 0.0},
|
||||
}
|
||||
const PROFILE_HINT := {
|
||||
Element.FEUER: "hart, aber weich", Element.WASSER: "zaubert oft", Element.WIND: "schnell",
|
||||
Element.BLITZ: "kritisch", Element.ERDE: "zäh und langsam", Element.EIS: "robust",
|
||||
}
|
||||
|
||||
# Multiplikator pro Sternstufe (Index = star - 1).
|
||||
const STAR_MULT := [1.0, 1.8, 3.24]
|
||||
const MAX_STAR := 3
|
||||
@@ -55,13 +70,29 @@ const START_GOLD := 4
|
||||
# --- Geteilter Pool --------------------------------------------------------
|
||||
## Alle 8 Spieler teilen sich diesen Vorrat pro Element. Ein 3-Star bindet
|
||||
## allein 9 Stück, dazu kommt was auf Bänken und Brettern liegt.
|
||||
## Bei 180 hält der Vorrat eine ganze Partie und kann im Endspiel trotzdem knapp werden.
|
||||
const POOL_PER_ELEMENT := 180
|
||||
## Bei 100 hält der Vorrat eine ganze Partie, geht im Endspiel aber auf rund ein Fünftel.
|
||||
const POOL_PER_ELEMENT := 100
|
||||
|
||||
# --- Board -----------------------------------------------------------------
|
||||
const BOARD_COLS := 7
|
||||
const BOARD_ROWS := 4
|
||||
const MAX_TEAM_SLOTS := 9
|
||||
|
||||
# --- Level und Erfahrung ---------------------------------------------------
|
||||
## Das Spielerlevel ist die Anzahl der Kaderplätze. Jede Runde gibt XP,
|
||||
## weitere XP kauft man. Level gegen Würfeln ist die TFT-Kernentscheidung.
|
||||
const START_LEVEL := 3
|
||||
const MAX_LEVEL := 9
|
||||
const XP_PER_ROUND := 2
|
||||
const XP_BUY_COST := 4
|
||||
const XP_BUY_AMOUNT := 4
|
||||
const XP_TABLE := {3: 4, 4: 8, 5: 12, 6: 20, 7: 32, 8: 48}
|
||||
|
||||
# --- Planung ---------------------------------------------------------------
|
||||
const PLAN_SECONDS := 30.0
|
||||
|
||||
# --- Kampf -----------------------------------------------------------------
|
||||
## Heiler heilen nur Verbündete in dieser Hex-Reichweite.
|
||||
const HEAL_RANGE := 2
|
||||
|
||||
# --- Element-Traits --------------------------------------------------------
|
||||
# steps = Anzahl aufgestellter Einheiten mit diesem Element.
|
||||
@@ -133,9 +164,14 @@ static func trait_tier(element: int, count: int) -> int:
|
||||
return tier
|
||||
|
||||
|
||||
## Teamgröße wächst mit der Runde.
|
||||
static func team_slots(round_no: int) -> int:
|
||||
return mini(3 + int(float(round_no - 1) / 2.0), MAX_TEAM_SLOTS)
|
||||
## XP bis zum nächsten Level, 0 auf Maximalstufe.
|
||||
static func xp_needed(level: int) -> int:
|
||||
return XP_TABLE.get(level, 0)
|
||||
|
||||
|
||||
## Grundschaden einer verlorenen Runde, steigt alle vier Runden.
|
||||
static func round_base_damage(round_no: int) -> int:
|
||||
return 2 + int(float(round_no - 1) / 4.0)
|
||||
|
||||
|
||||
## Wahrscheinlichkeit, dass ein Shop-Platz einen neutralen Avatar zeigt.
|
||||
|
||||
Reference in New Issue
Block a user