Once upon a time, in a German kingdom that never existed, a king and his men found a count's son and villagers dealing with a witch. He refused to let the woman just burn to death in her burning hut, but had her dragged out and officially condemned and then burnt -- which is when they learned that is was actually her daughter Ilse who had done what had alerted them. She curses three of them, one the king, to die.
Another one was his Armsmaster, leaving his daughter, Sofia, orphaned with a stepmother and two stepsisters. Her stepmother drags her back from court, where she was one of the Queen's ladies, on the excuse that she's in mourning, but she offers to send her own daughters instead.
Meanwhile, the queen sends for the prince, Conrad, who was in France at the time. By the terms of his father's will, he must marry a woman from his own kingdom. So they stage a ball -- and Sofia's stepmother will not let her go -- and Ilse comes to offer to help. . . .
The rest of it involves roses, fire, accusations of witchcraft, a sorcerer's attempts to ingratiate himself with the prince, the queen's match-making, dreams, traps, and much more.