Firstly, I am not sure why you have a speech portrait character. If you want a character to have a speech portrait, you need to assign their speech view to be the portrait's view number. Having a seperate character set up as your speech portrait is kinda pointless (unless I've misunderstood you). If you just meant that you wanted a portrait in the death room, then that's a fine way of going about it.
Secondly, the character is saying what you've asked them to say, but you never see it because you have specified the event to occur before the room fades in. If you actually want to be able to see the speech, you need to trigger the event after the room fades in. Use function room_AfterFadeIn rather than function room_Load to fix this.
As for your last issue, once again there could be a whole number of reasons why this is happening. Without seeing some code, we're powerless to help you. Have you checked that you've not used "First time player enters room" to set things up, thereby negating the script the second time you visit? Have you remembered to reset everything such as player view, transparency and coordinates when they enter the room?
Also, unless you really need it, and as much as I like the number, I advise against using room 304 for anything. Unless it's been changed and I am unaware of this, AGS doesn't save room states beyond room 300, so you're best to use rooms below this number unless you really need more than that.