Several years after the previous film, Alyan is set to marry Liya's friend and elf queen Mayre. With Mayre's reluctant permission, Liya invites her human boyfriend, Fish, who has been apprenticing under Berlin the blacksmith, to the wedding. However, Meyla, Mayre's sister who has long lingered in darkness, schemes to seize power over all Elves by taking the Gem of Life's counterpart—the dark gem—and summons Elven ghosts from an ancient battlefield to form her army.
Seeing the rising darkness, Mayre entrusts the Gem of Life to Liya, but warns not to reveal it to Fish, lest it be corrupted by human desire and greed.
Accompanied by Berlin, Barnac and his dogs Bow and Arrow, Fish visits Liya's home, where he is greeted warmly by Liya but faces a frosty reception from the Elves, including Alyan. In the midst of the wedding ceremony, Meyla attacks and, failing to find the Life Gem on Mayre, kidnaps her; when Fish tries to help, Meyla infects him with dark magic. Meyla demands that Alyan bring the Gem of Life to the ancient battlefield in return for his bride. Alyan pursues with Liya and a force of guards; despite being forbidden to intervene, Fish and his companions follow them. Using a hoverboard invented by Berlin, Fish fetches Liya and they catch up with Meyla's flying ship. But while trying to free Mayre, Meyla ambushes them, forcing them to retreat, but not before she intrudes into Fish's mind, trying to control him.
Meyla leaves Mayre imprisoned in her fortress, the Dark Valley, a black mountain surrounded by lava furnaces, and travels to the north to join the soul of a great dragon frozen in the ice with her gem. After dropping Liya off on her brother's ship, Fish follows Meyla's mental call and she tries to exert her control over him. Fish resists and rejoins Alyan's party just as they reach the battlegrounds; the Elven ghosts ambush them, leaving only Alyan, Liya and a guard captain alive to be rescued by Fish and his companions.
Later, Meyla forces Fish to bring her magical map Alyan has taken along in order to track the Gem of Life. Finding it in Liya's possession, Meyla orders Fish to seize the Gem from her. The fight culminates in Fish and Liya shooting each other with arrows, but with his love for Liya enabling Fish to resist the mind control, he hits Meyla with an arrow whose head he has broken off, sparing her, while Liya's arrow mortally wounds him. Desperate, Liya uses the Gem of Life on him, healing his injury.
Finally joining forces, the humans and Elves set course for the Dark Valley. They are ambushed and grounded by Meyla, but Liya uses an arrow to convey the Gem to Mayre, who uses its power to assist her saviors. Meyla taps into the dark gem's power to assume a demonic form, overpowering the Gem of Life. Fish uses the Gem as bait to lure Meyla to one of the furnaces and plunges himself into the lava, taking Meyla with him and therefore killing both of them. Just as the others are beginning to take in their loss, the Gem of Life activates, releasing the ghosts, turning the furnace into a tree, and bringing Fish back to life, therefore convincing an awestruck Alyan that humans can be capable of virtue and self-sacrifice. As the companions leave, they miss the likewise resurrected Meyla lying amidst the tree's foliage, purged of the darkness that had consumed her.