-18 - Dawnhold Dark Magic 0.16.0 Sahrab Android Apr 2026

@Delete suspend fun delete(spell: SpellEntity)

@Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insert(spell: SpellEntity) -18 - dawnhold Dark Magic 0.16.0 sahrab Android

val description = comps.joinToString("\n") "- $it.name: $itLore[it.id] ?: "…"" | | Mana Cost = (Rarity × 10)

| Rule | Explanation | |------|-------------| | Rarity Sum ≤ 10 | Prevent “over‑powered” spells. | | At least one RUNE | Guarantees a magical core. | | No duplicate component IDs | Each slot must be unique. | | Mana Cost = (Rarity × 10) + (type‑bonus) | Runes × 5, Reagents × 3, Gestures × 2. | | Name Generation | <Rune.name> + “ of ” + <Gesture.name> (fallback to generic). | | Description | Auto‑generated from component lore strings. | description = description

// 3️⃣ Converters ------------------------------------------------------------ class Converters ")

return SpellEntity( name = name, description = description, manaCost = mana, componentIds = comps.map it.id )