Honestly, if recompilation isn't much of an option and all you're trying to do is change some numbers, I'd rather take a hex editor to the damn thing. Disassemblies are harder to read, to be sure, especially when all the decimal numbers are shown as unmarked hex and the comments have red-herring selectors, but SCI Companion's "disassemble" output does include both offsets and the actual bytecode.
Feel free to ignore what follows, I'm just bored and rambly.
Say I made a mistake in my game and though I have source code, I can't compile it for the sake of this example. So I can't just edit this:(iMouth view: 501 loop: 1 nsLeft: 207 nsTop: 35)But it turns out 207 is like a pixel off. Decompiling the script resource that's from, I can find the instance and method this is from and cross-reference it with the .sc file: 00f2:7a push2
00f3:78 push1
00f4:38 01f5 pushi 1f5 // $1f5 isMemberOf
00f7:39 03 pushi 3 // $3 loop
00f9:78 push1
00fa:78 push1
00fb:39 07 pushi 7 // $7 nsLeft
00fd:78 push1
00fe:38 00cf pushi cf // $cf curPos
0101:39 06 pushi 6 // $6 nsTop
0103:78 push1
0104:39 23 pushi 23 // $23 mark
0106:72 0120 lofsa $0120 // iMouth
0109:4a 18 send 18 View 501 would be 0x1F5 (so not isMemberOf), and nsLeft 207 would be 0xCF (not curPos). Ignoring some extra bits involving how a send works, we can see that for each selector, we push its number (note that 2 is somehow not described as view but it is), followed by the number of arguments (because there's little distinction between methods and property setters), and the value we want to set it to. So view: 501 becomes 2 1 501. Continue that train of thought and we know that to move Ilira's mouth one more pixel to the side, we need to find the byte sequence 38 00 CF. The disassembly says it's at offset 0x00FE. Add two to account for the resource file header, open the .scr file in a hex editor, go to 0x0100, and what do we see? 38 CF 00. If your hex editor has a data inspector, you may be able to select the two argument bytes and confirm it's 207. (If your hex editor is set to big endian/motorola byte order it'll say 52992 or -12544 instead.) And if your hex editor is particularly nice, you can just enter the new value right there, in decimal, and save.
You now have a patched script resource.