# Story of the Life of the Avengers in the Endgame ```:javascript= let allies = ["The Avengers"] let joiningAllies= [ "Captain Marvel", "Doctor Strange", "Guardians of the Galaxy", "Black Panther", "Asgard" ]; let year = 2023; let infinityStones = { mind: {name: "Mind", isRetrieved: false}, power: {name: "Power", isRetrieved: false}, reality: {name: "Reality", isRetrieved: false}, soul: {name: "Soul", isRetrieved: false}, space: {name: "Space", isRetrieved: false}, time: {name: "Time", isRetrieved: false} } let enemy = "Thanos"; let mission = { statement: "Retrieve Infinity Stones and reverse the damage caused by Thanos in Infinity War!", result: { enemyDefeated: false, worldPopulationRestored: false } } function timeTravel(toYear) { console.log("Travelling to the year " + toYear + "..."); year = toYear; } function retrieveStone(members, stone, year) { timeTravel(year); console.log(members + " successfully retrieved " + infinityStones[stone].name + " Stone!"); infinityStones[stone].isRetrieved = true; } function checkStoneStatus() { for (let stone in infinityStones) { if (infinityStones[stone].isRetrieved == false) { console.log("Battle can not start, " + infinityStones[stone].name + " Stone has not been retrieved yet!"); break; } } } function joinBattle(who) { console.log(who + " joining the battle!"); allies.push(who); } function battle() { console.log("Starting the battle!"); for (let i=0; i<joiningAllies.length; i++) { joinBattle(joiningAllies[i]); } } function endOfBattle(allies, enemy) { console.log(allies + " defeated " + enemy); mission.result.enemyDefeated = true; mission.result.worldPopulationRestored = true; } // Five years after the Infinity War, // The Avengers is going on a new mission... console.log(mission.statement); retrieveStone("Guardians of the Galaxy", "power", 2014); retrieveStone("Iron Man, Captain America and Ant-Man", "space", 1970); retrieveStone("The Avengers", "mind", 2012); retrieveStone("Thor and Rocket", "reality", 2013); retrieveStone("Black Widow and Hawkeye", "soul", 2014); checkStoneStatus(); retrieveStone("Hulk", "time", 2012); battle(); endOfBattle(allies, enemy); ```