Actually, to make TP's even better, do this:
Event 1
-every-time-argument
--any-of
---Ship 1
---Ship 2
---Ship 3
--is-destroyed-delay
---< argument >
---0
--modify-variable
---convoyships(0)
---+
----convoyships(0)
----1
--do-nothing
Event 2 (chained)
+--and
|--not
|---is-event-true-delay
|----Event 5
|----0
+--is-destroyed-delay
|---Ship 1
|---1
+Send message
|-#command
|-Med
|-Message
Event 3
+every-time
+--and
|--not
|---is-event-true-delay
|----Event 5
|----0
+---is-event-true-delay
|----Event 1
|----1
+---is-destroyed-delay
|-----Ship 2
|-----0
+-Send message
|-#command
|-Med
|-Message
Event 4
+every-time
+--and
+--not
|----is-event-true-delay
|-----Event 1
|-----1
+---is-destroyed-delay
|-----Ship 3
|-----0
+-Send message
|-#command
|-Med
|-Message
ad infinium
But wait! There's more!
Event 5
+when
|--=
|---Variable(0)
|---2
-+send-message
|-#command
|-[b]High[/b]
|-2 freighters down message
So basically, each of the middle 3 events checks to see that the variable event (probably still there so that one can get debreifs done better) is true, and then checks to see that the events respective transport has been destroyed, BUT that the event triggered when 2 are destroyed is NOT true, so that the messages don't overlap, and sends the appropriate single ship message.
EDIT: the high and mediums are there, just so that should it backfire, you won't hear them at the same time...