A sixth century post-Roman kingdom called Urland is being terrorized by a 400 year old androgynous dragon named Vermithrax Pejorative. An expedition led by a young man called Valerian comes to the house of the sorcerer Ulrich of Craggenmoor, the last of his kind. They explain that their king, Casiodorus, who is desperate to appease the dragon, offers it a virgin chosen in a lottery twice a year. The wizard foresaw their arrival and his own death but agrees to help. Before he can do so, a brutish centurion from Urland named Tyrian, who has followed the expedition under orders from the king, turns up to intimidate him. Ulrich invites Tyrian to stab him to prove his magical powers. He dies instantly, to the horror of his young apprentice Galen Bradwarden and elderly servant Hodge. They burn Ulrich's body and place the ashes in a leather pouch.
Galen decides to take the job himself when the wizard's magical amulet begins to obey his Latin incantations, and travels to Urland with the villagers and Hodge in tow. On the way, he accidentally discovers Valerian to be a female when he catches her bathing in the nude: her father passed her as a man to spare her the lottery. The poorer villagers suspect that the daughters of wealthy or powerful people are secretly kept out of it as well. In an effort to discourage the expedition, Tyrian kills Hodge. Galen witnesses the murder through a vision in water but is not fast enough to intervene.
Arriving in Urland, Galen inspects the dragon's lair and attempts to seal its entrance by causing rocks to fall from the cliff. Manipulating the amulet inexpertly he nearly kills the whole delegation and himself but apparently succeeds in entombing the monster. The village celebrates in the evening, and Valerian abandons her manly disguise. The feast is interrupted by Tyrian who drags Galen to the court of King Casiodorus. After seeing Galen's clumsy efforts at magic tricks, King Casiodorus guesses that he is not a real wizard and complains that his attack may have angered the dragon instead of killing it, as his own brother and predecessor once did. The king then confiscates the amulet and has Galen locked away. His daughter Elspeth comes to taunt Galen, but is shocked when he informs her of rumours the lottery is rigged. Casiodorus is unable to lie convincingly when she confronts him.
Meanwhile the dragon has stormed its way through the rubble and emerges from its lair with a vengeance. An earthquake ensues, and Elspeth releases Galen in the confusion. Galen narrowly escapes on horseback, but without the amulet. The village priest, Brother Jacopus, leads his congregation to confront the dragon, denouncing it as the Devil, but the dragon incinerates him and then heads for the village. When Galen returns to the village, he finds that Vermithrax has already begun to retaliate by setting it on fire. Valerian and her father, Simon the blacksmith, conceal Galen from the king's soldiers. Galen still wants to kill the dragon, but must steal back the amulet from the king to do so.
When the lottery begins anew, Princess Elspeth rigs the draw so that only her name can be chosen, in reparation. The King is appalled but unable to oppose her decision. When shortly afterwards Galen is caught searching the king's quarters for the amulet, the monarch returns it to him so that he might save Elspeth. Then, with Simon's help, Galen uses the amulet to enchant a heavy spear (dubbed Sicarious Dracorum, or "Dragonslayer") that the blacksmith has forged strong enough to pierce the dragon's armored hide. Meanwhile, Valerian gathers some molted dragon scales and uses them to make Galen a shield. She discovers that Vermithrax has a brood of dragonets.
Galen sets out to kill the dragon and rescue the princess. Valerian tries to discourage him, but gives him the shield. They admit to having feelings for each other. As Galen attempts to rescue Princess Elspeth, he is confronted by Tyrian, who demands that the sacrifice be made to save the kingdom. Although Tyrian is more skilled, Galen uses the supernaturally sharp spear to impale him through a wooden post. The Princess however, instead of fleeing, has descended into the dragon's cave to her death. Galen follows her and finds the young dragons feasting upon her corpse. He kills them and then finds Vermithrax nesting by an underground lake of fire. He manages to wound the monster but the spear is broken and only Valerian's shield saves him from incineration. Vermithrax loses Galen but finds her children's bodies and flies away to rampage.
After his failure to kill Vermithrax, Valerian convinces Galen to leave the village with her, with her father's blessing. Simon believes the time for magic and dragons is over; like other villagers he is turning to the newly arrived religion of Christianity. As the two lovers prepare to leave, the amulet gives Galen a vision that explains his teacher's final wishes. Ulrich had asked that his ashes be spread over "burning water", and Galen realizes that the wizard had planned the whole thing. He was too frail to make the hundred-league journey himself, so had his servants make the trip for him by carrying his ashes. Galen returns to the cave, spreads the ashes and speaks an incantation, and the wizard is resurrected from the flames of the burning lake.
Despite the disappointment of realizing he had no powers after all, but was merely channeling those of his master via the amulet, Galen is overjoyed to have him returned. Ulrich however reveals that he is only back for a short time and that Galen must destroy the amulet when the time is right. The wizard then transports himself to a mountaintop and attracts the dragon's attention. The sun is eclipsed. After a brief battle, the monster grabs the old man and flies away with him. Galen crushes the amulet with a rock, causing the wizard to explode and obliterate the dragon.
Inspecting the wreckage, the villagers credit God with the victory, while the king arrives and drives a sword into the dragon's broken carcass to claim the glory for himself. As Galen and Valerian leave Urland together, he confesses that he misses both Ulrich and the amulet. But when he says, out loud, "I just wish we had a horse", as if on cue, a white horse appears to take the incredulous lovers away.
- Peter MacNicol - Galen Bradwarden
- Caitlin Clarke - Valerian
- Ralph Richardson - Ulrich of Craggenmoor
- John Hallam - Tyrian
- Peter Eyre - King Casiodorus
- Albert Salmi - Greil
- Sydney Bromley - Hodge
- Chloe Salaman - Princess Elspeth
- Emrys James - Simon (Valerian's Father)
- Roger Kemp - Horsrick
- Ian McDiarmid - Brother Jacopus
- This film was one of Ian McDiarmid's earlier roles. He would later play, and become well known as, Palpatine from the Star Wars saga.
- While dressed as a boy, Valerian's appearance seems to reference that of Joan of Arc. However, Valerian wears boy's clothing eight centuries before her, and does so to disguise her gender (whereas Joan always made it clear that she was a girl).