Twice, during near-death experiences, Percival has a vision of the Holy Grail and is given a chance to solve its riddle. The first time, he fails, but the second time, he succeeds. He brings the Grail to Arthur (Nigel Terry), who drinks from it, and is reinspired.
Arthur gathers his few remaining loyal knights and leads them to battle against the huge army assembled by Morganna (Helen Mirren) and her son Mordred. On the way, Arthur stops at the convent where his former wife Guinevere (Cherie Lunghi) has been living as a nun, ever since Arthur discovered her adulterous affair with Lancelot. Arthur forgives her for all her sins, and begs her to forgive him. She gives him the magical sword Excalibur, which she has had in her possession all these years.
Arthur and his knights spot Mordred's army at dusk, near Stonehenge. They make camp, planning to attack at dawn. Arthur sadly calls out to Merlin (Nicol Williamson), the wizard who was once his greatest friend and ally. Though Morganna killed Merlin long ago, Merlin retains the power to appear and communicate in people's dreams. He appears to Arthur and his knights in their dreams to encourage them- but more importantly, he appears to Morganna in her dreams, where he tricks her into reciting the magical spell to create the Dragon's Breath (a thick, impenatrable fog) in her sleep. When Mordred sees the fog, he runs to his mother's tent. When he sees that SHE has caused the fog, and that in doing so she has been transformed into an ugly old woman, Mordred stangles her to death.
The fog gives Arthur and his men a huge advantage, since Mordred's men cannot see them coming and can't see how few they are. ARthur and his forces fight well, but are outnumbered and are soon down to just three men- Arthur, his brother Kay, and Percival. At the last minute, Lancelot returns to join the knights of the Round Table. Though an old man, Lancelot is still the mightiest warrior in the loand, and with his help, Mordred's army is killed off. Lancelot himself collapses, because the old wound he inflicted upon himself has never fully healed, and he is now dying. Arthur and Lancelot are reconciled, just before Lancelot dies.
When the fog lifts, Percival and Arthur see Mordred. Mordred impales Arthur with a long spear. Arthur, knowing his is mortally wounded, forces himself forward and kills Mordred with Excalibur (Mordred's armor was magical, and no sword made by man could penetrate it... but Excalibur was not made by man, and COULD pierce Mordred's armor).
Arthur, knowing he will die soon, gives Excalibur to Percival and tells him to throw it into the first calm pool of water he finds, then come back and tell Arthur what he saw. Percival can't bear to see Excalibur lost, so he tries to deceive Arthur. He keeps Excalibur, then lies and tells Arthur he saw nothing but the wind on the water when he threw away Excalibur. Arthur is not fooled- he tells Percival to throw the sword into a pool, and assures him that one day, a new, great king will come to England and that Excalibur will return.
Percival does as he is told, and when he throws Excalibur into the water, he sees the Lady of the Lake (who first gave the sword to Arthur's father Uther) reach out to take it. Percival rides back to tell Arthur what he saw, but Arthur is gone. Arthur's body is on a boat sailing away, accompanied by three ladies in white.
Perhaps this means Arthur is dead and being taken to the next world... but some Arthurian legends say that Arthur sailed away to the island of Avalon to recover from his wounds, which leaves open the possibility that Arthur, "the once and future king," will return some day.
Thanks John L!