Overtime (ala TF2)
Have you ever been playing a team objective game where you have to do something like push a cart, and then had the time run down to ~ a minute and see that it is impossible for your team to reach the goal within the time limit? It’s always super lame when that happens. It makes games really anticlimactic when the defenders can reach a point where they can all just go jump off a cliff and win the game regardless.
My suggestion is to implement an overtime system, similar to the one that Team Fortress 2 uses. How this system works is that if the objective is in progress when time runs out the game goes into overtime. Overtime ends when the objective is no longer being progressed. So for the case of the cart, the game would not end until the defenders completely stopped the motion of the cart.
This could work for many objectives, such as burning the pyre, killing the king (~3 second timer on him taking damage, so if he isn’t hurt for 3 seconds the game ends), destroying trebuchets (only going into overtime if every treb that needs to be destroyed is in progress), destroying walls (if someone is on the battering ram, or if someone hit the wall within 3 seconds on citadel), freeing slaves (3 second timer after each freed slave, maybe less for this), killing villagers, lifting the sluice gates…
The main point here is to add excitement to the end of a match, so the game isn’t over until the last second actually ticks away.