August 2005, New Orleans, Louisiana. Terence McDonagh (Nicolas Cage) is a New Orleans Police Sergeant. While cleaning out a locker after Hurricane Katrina, he notices that a prisoner may not have been transferred. When he finds the prisoner about to drown, he mocks him before eventually jumping in the water to save him. He is promoted to lieutenant and given a medal for his work, but has suffered a serious back injury because of the rescue. As a result, he is prescribed Vicodin which he will most likely need to take for the rest of his life to manage the pain.
Six months later, McDonagh is now not only addicted to painkillers, but is habitually using several other drugs including cocaine and cannabis. He has convinced a person that works in the police department to bring him drugs sent to the evidence room. His girlfriend Frankie Donnenfeld (Eva Mendes), a prostitute, also does cocaine and they often share drugs. He has also become estranged from his father Pat (Tom Bower), a recovering alcoholic who can only bring himself to attend to his Alcoholics Anonymous meetings and nothing else, and his alcoholic stepmother, Genevieve (Jennifer Coolidge). Over the course of the film, he uses his position as an officer to bully people and steal more drugs.
McDonagh has been assigned to investigate a murder scene, where five illegal immigrants from Senegal were executed. Information comes in that leads them to a delivery boy who was an auditory witness, and through his details and evidence they deduce the people were killed for selling drugs in a gang leader’s neighborhood. The gang leader Big Fate (Alvin ‘Xzibit’ Joiner) has two associates: Midget (Lucius Baston) and G (Tim Bellow). They are both arrested, leading to Big Fate willingly coming to the police station with his lawyer. As they try to get enough evidence to convict Big Fate, McDonagh goes back to a hotel room where he finds Frankie beaten by one of her clients, a seemingly well-connected man named Justin (Shea Whigham). McDonagh threatens Justin and takes $10,000 from him. Later on, the auditory witness of the murder scene goes missing. McDonagh finds the witness’s grandmother, who works at a nursing home, and threatens to kill an old woman who is the grandmother’s patient to get the grandmother to tell where the witness has gone. The old woman has sent him to stay with her family in England, to prevent him from getting involved in gang affairs.
In addition to dealing with the murder investigation, McDonagh gets in trouble with his bookie Ned (Brad Dourif) for not paying his debts. What little money McDonagh has is given to a gangster who works for Justin. The gangster now requests five times the amount stolen from Justin, $50,000, as compensation, and gives McDonagh two days to get it. As a result of his treatment of the old woman, McDonagh is on modified duty and his gun placed in the evidence room. Now angry, McDonagh goes to Big Fate and they become partners, with McDonagh supplying Big Fate with police information. McDonagh now has enough money to pay off his debts to his bookie and uses his surplus earnings to place a new bet. During a celebration of the successful partnership between McDonagh and Big Fate, the gangster shows up, demanding his money. McDonagh offers him a cut worth more than $50,000 from a bag filled with pure heroin, but the gangster wants to take it all. Big Fate and his crew end up killing the gangsters.
To further celebrate their partnership, McDonagh implores Big Fate to smoke crack cocaine with his “lucky crack pipe”. He does, and McDonagh later plants the pipe at the murder scene of the Senegal family. The department uses this new evidence to arrest Big Fate and his cronies, but when he and McDonagh are alone with Big Fate, McDonagh’s partner, Stevie Pruit (Val Kilmer), threatens to kill Big Fate, as he doesn’t want him to have the chance to escape conviction. McDonagh is outraged at this idea and arrests Big Fate, showing that despite his addictions he still performs his duties as an officer. McDonagh is later promoted to Captain.
One year later, McDonagh appears to be sober, as do Frankie (who is pregnant with McDonagh’s child) and McDonagh’s parents, but it turns out that McDonagh is still taking heroin. He encounters the prisoner whom he saved at the beginning of the film, and the man, recognizing McDonagh, exclaims that McDonagh saved his life. The man has been sober for almost a year and offers to help McDonagh finally escape his own addiction. McDonagh simply asks, “Do fish have dreams?” The film ends with the two men in an aquarium, sitting on the floor with their backs against a wall-sized fish tank.