Podczas meksykańsko-amerykańskiej wojny roku 1840, amerykański oficer John Riley (Tom Berenger), musi wybierać między lojalnością wobec ojczyzny a swoimi irlandzkimi, katolickimi korzeniami. Bigoteria i zakłamanie protestanckich oficerów zmusza Rileya i jego oddział do dezercji do Meksyku. Pojmany przez meksykańskich partyzantów, dochodzi do zdrowia po odniesionych ranach pod opieką pięknej Marty, a potem przyłącza się do walki o powszechną wolność. Pokonany przez amerykańskie wojsko, zostaje oskarżony o zdradę. Zbliżający się koniec wojny przyniesie wiele zmian w stosunkach meksykańsko-amerykańskich, jak również w życiu kapitana Rileya