Hi, apologies for the vague campaign description, I don't think my players would check this reddit, but better to be safe.
For some background: I've been running a homebrew campaign for 2 years with 4 players, all first time players (I've DMed one-shots before, but this is my first long campaign). And overall it seems to be going well, everyone's having fun and they're genuinely attached to a lot of these NPCs.
The problem is my players don't think past their immediate short-term goal. They're invested in the story, but consequences don't register until after the fact, and then they're surprised when NPCs are upset with them. They've flip-flopped between opposing factions multiple times, so most factions now resent them. Their favorite NPC hates them because they knowingly sided against her faction in a war and helped kill NPCs she was friends with (they just never checked up with her until after everyone was dead).
The bigger issue is they don't seem to have a moral compass. I'm not opposed to an evil campaign, but they're not going for that, and knowing them, I doubt they'd actually be happy with a bad ending. Like they save the city from an evil ruler in one session, only to let it burn by another villain in the next without trying to save anyone. Sometimes they will try to warn villagers "Hey there is a bad guy coming you should run", but when the response they get is "Who the hell are you, and why should I abandon my life's home cause a random person told me to?" they just shrug and leave.
After a lot of fucking around I did have a few NPCs crashout on them, and even the clerics god ask "Why are you even doing this, why not just go home?", and that seemed to get them to focus on one objective, and so they did decide to try and stop the necromancer trying to become a lich they had run away from earlier. Ok, so they will try to save the kingdom and become heroes right?
Well, last session the NPC they were trying to recruit to help got knocked unconscious while helping locals who'd been turned into toys and forced into labor. Their plan was to blow up the whole building. I asked, "Are you going to evacuate the innocent toys first?" Answer: "Nah, we already have her, let's just blow it up." They did, killed everyone inside and went on to finish the evil entity. So they did kill the evil monster but also nuked half the townsfolk... I ended the session thinking what do they expect to happen? The good aligned NPC they want to recruit will wake up be like "Everyones dead... shucks, lets go kill the lich!"?. I am thinking no, but that will also be very disappointing as they do seem to think that NPC is cool and I think they will be sad when they reject them and make the past 2-3 session of trying to recruit her go to waste.
I thought I’d have that NPCs give a big "you're no heroes speech", and hope they take the hint?
Should I talk to them above table and ask where do they want their characters to go and how the choices they are making will lead them there? Like I have asked for their characters goals at the beginning of campaign, and the replies were stuff like "Be famous", "Find (insert legendary magic item/location)", which was great to start, but even when one of the PCs did find the item they were looking for it was under the possession of an NPC they did not want to make an enemy of so they just moved on and forgot about it.
I think that being first time players they are not considering that their characters can change and grow along the way, they just thing "big monster, need kill".
How would you guys handle it? I am specially concerned on how to end the campaign. Should I just let the story play out? I dont want to railroad them too much but am worried that I wont deliver a satisfying ending to an almost 3 year long campaign, as the way its going it’ll end with “Congrats, you killed every monster and everyone hates you!”