From a historical point of view, sieges were actually a complicated and long business. Most cities took a long time to fall when there was no treachery involved. With his powerful army, Hannibal could only take Capua because the city wanted so. And forget about anything else with serious walls.
Which brings me to a modest suggestion: siege events based on the besieger's general's attributes. What I think of, for example, is the following:
- diplo-based event: "some factions within the besieged city are ready to open the gates for us as they are opposed to the current ruler. Shall we try to negotiate with them?" if succesful, immediate surrender; if not, something bad like an enemy army spawn (maybe rebel even, like an independent faction - don't know if it is feasible)
- martial-based event: "our general has an idea to take down a strategic part of the enemy's fortifications, but our men. Shall we try?" if successful, % of the siege increases, but in any case, attrition increases for one month. If general himself goes, increased chance of success, with probabilities to get specific traits, wounded and/or killed.
- intrigue-based event: "our general has identified a weak point where a small party could penetrate the enemy fortification to attempt an night assault. Shall we try?" - I don't know how it could be different from one of the above in practice.
Negative events are also possible: if low martial: "the besieged city could smuggle supplies through a weak point of the besiegers' installations" - siege percentage goes down, negative impact on the general.
I doubt it is feasible, though, but that is one aspect of warfare which I find unrealistic compared to my readings. Also along the same line there should be more contrast between small city walls and really important fortifications like Rome's or Carthage, with only huge cities able to build the later.