AWK -vRS=-(.), 4837 bytes
RT~/+/{gsub(x++}RT~/[^+]-/,"");x+=length;printf("%c"{printf"%c",x--%256)}
Attempt This Online!Attempt This Online!
Uses a regex as a record seperator to split the input into seperate characters and matches them one-by-one.