Welcome to Elsinore, Denmark, land of a recently deceased King who likes to chill out in ghost form at night on the castle battlements. He has reason to be upset, though, since the new King Claudius, husband of Queen Gertrude, happens to be his own brother. (Must make family holidays complicated.) Claudius has problems, too: Norway's Prince Fortinbras has war on the brain, and his new stepson, Hamlet, is being a bit of a PITA about things, mostly because his mother (Gertrude) waited about two seconds to get married after his father died.
Hamlet's bud Horatio tells Hamlet about the ghost and arranges a meeting. The ghost claims to be his father's spirit, proving it by telling Hamlet that Claudius is the man who murdered his father by pouring poison in his ear while he (Old Hamlet) was snoozing in his garden—and then ordering his son to take revenge. Great, Dad.
Game on. Hamlet's master plan involves him putting on an "antic disposition" (acting like a madman or, a clown). Sure enough, the next time we hear about Hamlet, his girlfriend Ophelia declares that Hamlet is crazy. Polonius brings the news to the King, and they decide to spy on the youngsters to figure out if Ophelia is the source of Hamlet's "madness." Meanwhile, some Danish ambassadors return from Norway with the good news that there isn't going to be a war, after all.
Enter Rosencrantz and Guildenstern, two childhood pals of Hamlet and Horatio. The King and Queen have called them to Elsinore to spy on Hamlet and find out why he's gone mad. While the duo fails to do this, some players (actors) come into town. Hamlet commissions them to perform a play in which a king is murdered in the same way Claudius murdered Hamlet's father. Hamlet plans to watch Claudius's reaction to see if the ghost is telling the truth.
The plan's in motion, and Hamlet delivers the big "to be or not to be" speech about suicide. Instead, he decides to act all creepy and gross with Ophelia before watching Claudius all but stand up and shout that he's guilty. Hamlet decides to kill him, obviously, but then … doesn't. Instead, he ends up accidentally killing Polonius, Ophelia's dad. In front of his mom. Claudius sends Hamlet off to England, but on, the way, Hamlet sees Prince Fortinbras of Norway marching across the land to fight for some lost territories. That's all the inspiration he needs to head back to Denmark to kill Claudius.
Back at the castle, Ophelia has cracked. Meanwhile, her bro Laertes is super pissed at Hamlet (crazy sister; dead father), so Claudius convinces him to stage a "friendly" duel and kill the Prince by using a sharpened rather than a blunt sword. With some poison as backup.
The next thing we know, Ophelia is dead, possibly by suicide, which means she doesn't even get a nice burial. There's a big scene between Hamlet and Laertes when Hamlet randomly stumbles on this funeral, and then Hamlet gets Horatio up to speed on his return: on the boat to England, Hamlet opened the letter that his companions Rosencrantz and Guildenstern were carrying and found that it carried instructions to have him (Hamlet) killed. Naturally, Hamlet altered the letter to say "Please kill Rosencrantz and Guildenstern, thanks," and escaped on a pirate ship back to Denmark.
Hope you brought your rain gear, because this last scene is going to be a bloodbath. During the friendly duel between Hamlet and Laertes, everything goes according to Claudius's evil plan until, uh oh, Gertrude drinks the poisoned wine. Meanwhile, Laertes cuts Hamlet with the poisoned sword, and Hamlet, ending up with Laertes's sword, wounds him back. Dying, Laertes yells out, "It's all Claudius's fault!" So, Hamlet stabs Claudius with the poisoned sword and makes him drink the poisoned wine. Bloodbath complete.
Well, except that Horatio's feeling left out and wants to kill himself too but Hamlet says that it's his job to tell Hamlet's story. Just then, Fortinbras of Norway walks in, steps over the blood and guts and bodies strewn out all over the floor, and then helps himself to the Danish throne. At least someone gets a happy ending!