The following line is taken from Sin City 2005,

> 
> Bad guy: John Hartigan, Mr. "Law and Order", Mr. "By-The-Book", Mr.
>  High and Mighty.  
> 
>  I got to give you credit. Being such a straight arrow
>  for so damn many years without it catching up with you. It's catching up with you now, friend of mine. It's catching up with you **but
>  good**.
> 
> 
> 

Is **but** here an adverb, meaning 'only'? And is **good** here also an adverb, meaning 'well'?

I think **straight arrow** is a metaphor. What does it stand for?