The trip to Walmart was supposed to be fun: an excuse for David Johnson and his wife, Kathy, to take their 9-year-old granddaughter, Katie Melendez, to pick out some new outfits she had her eye on.
Instead, Saturday's outing ended in horror when a gunman opened fire at the El Paso, Texas, store, killing at least 22 people. Johnson — who relatives say was always willing to do anything for his family — was among those killed.
The gunshots rang out as the three were checking out at the cash register. Johnson, 63, immediately moved to protect his wife and granddaughter, according to his daughter, Stephanie Melendez, who said Johnson died using his body as a shield against the bullets.
Kathy Johnson and Katie, who is Melendez's daughter, escaped unscathed.
"He pushed them down underneath to hide," Melendez, 31, told NBC News. "That's something he would have done without a thought. That's just him."
Johnson, of El Paso, worked in lighting installation, and often put in long days, said Melendez, who also lives in El Paso. But that never kept him from helping out Melendez — a stepdaughter who he officially adopted after he married her mother 26 years ago.
A day before the shooting, Melendez reached out to Johnson because her car had a flat tire. She said although Johnson had just finished a long shift, he drove her "all over El Paso, picking up my girls even though he was tired. That was just the kind of guy he was."
Dominic Patridge, a nephew of Johnson's, said the family is traumatized and heartbroken, and in awe of the sacrifice Johnson made. He said Johnson was shot three times.
"He always put everyone before him, till the day he died."
"He's a hero," Patridge said. "He always put everyone before him, till the day he died."
Other victims of the massacre included Jordan Anchondo, a 24-year-old woman killed while shielding her 2-month-old baby. Anchondo's husband, Andre Anchondo, was also killed.
Details were still emerging about the other victims at the shopping center close to the U.S.-Mexican border.
At least seven of the victims were Mexican citizens; Mexico's secretary of foreign affairs identified them as Sara Esther Regalado of Ciudad Juarez; Adolfo Cerros Hernández of Aguascalientes; Jorge Calvillo García of Torreon, Coahuila; Elsa Mendoza de la Mora of Yepomera, Chihuahua; Gloria Irma Márquez Juárez of Ciudad Juarez; María Eugenia Legarreta Rothe of the city of Chihuahua; and Ivan Filiberto Manzano of Ciudad Juarez.
Among the American citizens killed was a 15-year-old boy, Javier Amir Rodriguez. The teen had played soccer through the co-ed Express Futbol Club since 2011, according to the club's president, Jaime Carrasco.
"He was a happy boy always smiling and funny," Carrasco wrote in a statement. "He was a boy that every coach would like to have on his team. He never missed a practice or a game. He was always the first one on the field and also the last one. He just enjoyed playing the sport. He is a player that I would never forget."
Another victim, Angelina Englisbee, 86, was a "no nonsense woman," according to a statement from her family. Widowed when her husband died at 38 years old, Englisbee, who went by Angie, raised seven children on her own and loved watching sports and "General Hospital," the family added.
Also killed was Arturo Benavides, who served in the Army and Texas Army National Guard from 1978 to 2001 and worked as a Sun Metro transit operator and coin sorter operator until he retired in 2013; and a married couple, Leonardo Campos and Maribel Hernandez.
Hernandez's brother, Al, told CNN affiliate KFOX-TV that the couple had just dropped their dog off at a groomer before going to Walmart. He said their family did not realize anything was amiss until the groomer called them, saying the couple had not returned for the dog.
Others fatally wounded in the shooting were included in a list released late Monday by El Paso authorities: Maria Flores, 77, Raul Flores, 77, Alexander Gerhard Hoffman, 66, Luis Alfonzo Juarez, 90, Teresa Sanchez, 82, and Juan Velazquez, 77.