Help me to think like a [better] coder

Maybe have a look at Planning and Implementing a Program

I think, for your project, I would create a 2D array (boatNoises[][]) holding the sound sequences and then a single makeNoise() function could be used - something like this (very rough pseudo code)

void makeNoise(byte boatState) {
   byte numSounds = boatNoises[boatState][0];
   for (byte n = 1; n <= numSounds; n++;) {
      tone(boatNoises[boatState][n]);
   }
}

I know that is very crude because I have not studied the exact nature of the sound sequences but I hope it gives a glimpse of the idea

The idea is to avoid the need for a separate function for each state

...R