So, I guess we have all gotten the message now - that ships with pods sometimes have propulsion problems. Just as trains, cars and planes also sometimes have mechical problems.
The cruise lines have carefully crafted contracts that tell the guests they are not responsible for missed ports. In fact, even the US government has limited their status as carriers in the sense that they restrict cruise lines from doing one-way trips between US ports, for example, by requiring a visit to a distant foreign port during the voyage. The time on the ship is the vacation you are paying for, not the destinations they visit.
However, the US Congress has put cruise lines into the category of "common carrier" at times when it comes to liability for injuries at sea and crimes commited on ships. Just because something is in a contract does not mean it cannot be challenged.
But it isn't an easy challenge. I personally think arguments about what is "legally right" are secondary to the normal expectations people have in terms of that a cruise line will deliver.
Yes - a cruise ship would be crazy to go to Bermuda during a hurricane. No one would really want to go there if the captain said "well, that is what we promised so here we go."
But to cite a contract as an excuse for failure to deliver when the fault is purely due to mechanical difficulty by the cruise ship is a different story, but human expectations also have to be kept in check.
Yes, you have a right to be upset, but by the same token businesses under-delivering on a full promise is not that unusual. They are not going to close Disneyland or even give refunds just because one of the most popular rides is broken. Restaurants don't give away meals just because they run out the special. You still get to eat, you still have a good experience, etc.
If they offer you some compensation I don't know what else a person could expect from a cruise line. Especially if it is a discount on a future cruise. They are basically offering you a "make up" for what you missed. You got part of your vacation, but missed part of what you expected.
The best thing to do if you are still not happy is to have your travel agent negotiate something for you for a future cruise. This is one area where experienced, influential, high volume cruise agents can come in really handy. In addition to things like explaining the terms of the passenger contract to the client.
Before a passenger buys a cruise they ARE given a copy of that contract. Admittedly, no one wants to read all the fine print, but you still have to keep in mind the contract exists if you want to challenge the cruise line when something goes wrong. That means finesse in negotiations is probably going to go a lot farther than threats.