It NEEEEDs to be manually recoded. Please go ahead and make a decompiler. Anything's possible. It would just require a lot of AI in the code. Second, all the scripts are linked together, so each time one is decompiled, all would need to be as well. Third, there are missing scripts in all games, so the game can never be 100% accurately decompiled/recompiled. Fourth, if it was decompiled, it would look like this:
(locals
local_0000 $12
...
local_1F3A 0
)
(procedure (proc_4E3C p1 p2 p3)
(var v1)
= v1 0
(while(< v1 12)
(send inst232:something(283 34))
)
)
There are also missing selectors and classes which cause problems, and require workarounds to be written when recoding them. Also, 123 can mean 123, $7B, aSelector, anAddress, a text index, etc. These are just the problems after all the code to accurately translate bytecode to high level.
It would be so much work to do the decompiler, I'd rather write SCI Studio VGA and such.
Please, make a decompiler yourself though, since you are in fact a programmer.