Print me a Tower Block
Mathematica, 301 288 258 bytes

" "~(s=If[#2==0,"",#~StringRepeat~#2]&amp;)~3&lt;&gt;{"="~s~21,"
",s[" ",12-#]&lt;&gt;{")","v "~s~#,"v(
"}&amp;/@9~Range~12,"~"~s~27,"
",s[(x=(u=": ")~s~13&lt;&gt;":
")&lt;&gt;{y=u&lt;&gt;{z=": ### ",v=u~s~5,w=z&lt;&gt;": :
"},y,y,x},#-1],v,"_"~s~7," ",v,"
",m=u&lt;&gt;{z,u,n="I     I ",w},m,m,v,n,w}&amp;


Pure function which takes a positive integer and outputs a string. The output string won't look right because Mathematica apparently doesn't display monospace fonts as monospace:



For reasons I don't quite understand, it does format as monospace if you Print the string:



Edit: Saved several bytes by not including "   " at the beginning of each line. Changed the definition of s to handle the case where there is only one floor (StringRepeat doesn't like repeating a string 0 times).

Edit 2: Thanks to LegionMammal978 and the fact that StringJoin is Listable, this is now an incomprehensible nightmare of nested lists and also 30 bytes shorter.