So I ran your code, GeN1e, but it didn't appear to patch any spells. Maybe I'm not doing something right... this is what I used:
OUTER_SPRINT path ~ascension/ds~ OUTER_SET khelben_broken = 0 //This you can include in the setup macro //(otherwise not initialising it will raise an error) INCLUDE ~ascension/ds/ds.tph~ LAUNCH_ACTION_MACRO ~setup~ //This you could probably call from the main DS macro rather than the tp2 LAUNCH_ACTION_MACRO ~detectable_spells~ //Fixes Kelsey if installed (also could be called from the DS macro) ACTION_IF FILE_EXISTS_IN_GAME ~j#ceara.bcs~ BEGIN INCLUDE ~ascension/ds/ds_oldscript.tph~ OUTER_SPRINT ~oldswapfile~ ~ascension/ds/oldds_swap.2da~ OUTER_SPRINT ~marker~ ~dw#fixkelsey.mrk~ OUTER_SPRINT ~oldfiles~ ~ascension/ds/oldfiles_kelsey.2da~ LAUNCH_ACTION_MACRO ~fix_old_DS_scripts~ ENDThe only file it modified was Ascension's spdetect.spl, by stripping all but three of the #282 opcodes out of it. The original Ascension has a huge host of files with these opcodes added - I can generate a list if you want, though you could probably do so even quicker. Also, I had to include a fj_spl_itm_eff_v2.tph to get it to run, which I swiped from Level1NPCs (it is defined as a function there, but that's the most recent version I know of).
Some comments:
What about other such spells, like the balth* series? Even before Ascension, I think these have a load of script state modifiers.//first, special patches. We need to remove melis02's existing script state modifier
// set the only difference between ITM and SPL files. READ_ASCII 0 first_chars (3) PATCH_IF ~%first_chars%~ STRING_COMPARE_CASE ~SPL~ BEGIN // if it's an ITM (_not_ a SPL) SET extended_size = 0x38 END ELSE BEGIN SET extended_size = 0x28 ENDWhy not use (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~itm~) instead?