I've been thinking about defence mechanisms. Please point out if I have overlooked something in my plan. I call this kitten arrow slits.
W = Wall
. = Floor
X = Floodgate
_ = channel
F = Fortifications
m = Marksdwarves
k = kitten on top of pressure plate which opens floodgates and hatches when inactive
H = hatches with kittens on top
z=0
Your defences against melee soldiers
^
|
|
WWWWWW.WWW
Entrance-->......._kW
WXXXXXXWWW
W______W
W......W
WFFFFFFW
WmmmmmmW
z=1
WWWWWWWW
WHHHHHHW
WWWWWWWW
So essentially, when an enemy archer enters the corridor, he shoots the kitten, which causes the fortifications with marksdwarves behind them to come in to play, but because half decent enemy archers will shoot through fortifications fairly easily, a number of kittens are dropped in front to absorb the enemy arrows. This allows your marksdwarves to quickly and efficiently deal with enemy archers. Alternatively, you could have that kitten linked up to a system which takes the archers a different route, that has many corners for your melee defence to hide behind, but might not be the best system for preventing lag (so it is only used when needed).
My second idea relies upon the cowardliness of dwarven siege operators. I call it cowardly ownage.
W = Wall
. = Floor
_ = Channel
F = Fortification
B = Ballista
X = Floodgate
x = Floodgate
p = pressure plate which when stepped on by the dwarf, opens up floodgate x and closes floodgate X and when not, does the reverse.
W.W W.W
WWWWWWWXWWWWWWWWWWWWWWWWWWWWxWWWWWWW
WWBBBF_......................._FBBBWW
pDBBBF_......................._FBBBD.
WWBBBF_......................._FBBBWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
(This one would take quite a bit of extra machinery to work methinks). The basic idea is that as the enemy gets near to one end, they cause the operator to run away, causing them to repath to the other end of the hall. The operator then returns (to continue firing) and causes them to path back and forth, between the two ballistae.