Add alchemy tower README

This commit is contained in:
2026-04-25 12:26:07 +02:00
parent b8a5e153c1
commit 9bdbc45983

View File

@@ -0,0 +1,55 @@
# Alchemy Tower
The Alchemy Tower is a building that passively produces **magic gold** and allows **crafting** other currencies through alchemical recipes.
## Passive Production
The tower runs a continuous production cycle. Once a cycle completes, magic gold is added to your balance and the next cycle begins with a slightly longer duration.
| Data field | Default | Description |
|---|---|---|
| `base_production_time_seconds` | 5.0 | Duration of the first cycle (seconds) |
| `production_time_growth_multiplier` | 1.2 | Each completed cycle multiplies the next cycle's duration by this amount |
| `magic_gold_per_cycle` | 1.0 | Base magic gold produced per cycle |
Production is only active when at least one worker is assigned and the tower is available in the game state.
## Workers
Workers are assigned by spending 1 **worker** currency per worker. Each assigned worker provides a **+10% speed bonus** to production (configurable via `base_worker_speed_bonus`).
- Max workers: `max_workers` (default 10)
- The speed multiplier formula: `1.0 + (worker_count * base_worker_speed_bonus)`
- This multiplier affects both the rate time advances and the final cycle output
The UI panel includes a worker counter and an "Assign Worker" button. The button is disabled when you have no workers available or have reached the max.
## Crafting
The crafting panel shows recipes from an `AlchemyCraftCatalogue` resource. Each recipe (`AlchemyCraftRecipe`) defines:
- `id` — unique recipe identifier
- `output_currency` / `output_amount` — what you get
- `cost_entries` — array of `CurrencyCostEntry` resources, each specifying a currency and an amount
To craft, click the recipe's button. The tower deducts all costs from your balance via `game_state.spend_currency()`. If any cost can't be covered, the craft fails silently and nothing is deducted. On success, the output currency is added to your balance.
## Signals
| Signal | Emitted when |
|---|---|
| `production_progress_updated(progress: float)` | Every frame during production; 0.01.0 |
| `production_completed(amount: BigNumber)` | A production cycle finishes |
| `magic_gold_balance_updated(amount: BigNumber)` | Magic gold balance changes |
## Key Files
| File | Purpose |
|---|---|
| `alchemy_tower.gd` | Main tower logic: production loop, worker management, crafting |
| `alchemy_tower_data.gd` | Configuration resource (`AlchemyTowerData`) |
| `alchemy_craftable_panel.gd` | UI panel (`AlchemyCurrenciesPanel`) for progress bar, balance, workers, and recipe list |
| `alchemy_craftable_panel_tile.gd` | Individual recipe tile in the crafting list |
| `recipes/alchemy_craft_catalogue.gd` | Catalogue resource holding all available recipes |
| `recipes/alchemy_craft_recipe.gd` | Single recipe resource |
| `recipes/currency_cost_entry.gd` | Cost entry for a single currency in a recipe |