Miloch Posted March 25, 2011 Share Posted March 25, 2011 So Ascension (even erebusant's latest edit) looks like it uses rather an older version of DS than what SCS(2) uses. I suppose I may as well standardise/update it as long as I'm in there. What all do I need to include? Seems to be something like this: INCLUDE ~ascension/ds/ds.tph~ INCLUDE ~ascension/ds/detectcloud.tph~ INCLUDE ~ascension/ds/detecttrap.tph~ OUTER_SPRINT ~detectfile~ ~ascension/ds/cddetect.2da~ OUTER_SPRINT ~statsfile~ ~ascension/ds/stats.2da~ OUTER_SPRINT ~khelbenfile~ ~ascension/ds/spwi705.spl~ LAUNCH_ACTION_MACRO ~detectable_spells~ INCLUDE ~ascension/ds/ds_oldscript.tph~ OUTER_SPRINT ~oldswapfile~ ~ascension/ds/oldds_swap.2da~ OUTER_SPRINT ~marker~ ~dw#fixasc.mrk~ OUTER_SPRINT ~oldfiles~ ~ascension/ds/oldfiles_asc.2da~ LAUNCH_ACTION_MACRO ~fix_old_DS_scripts~ OUTER_SPRINT ~marker~ ~dw#fixkelsey.mrk~ OUTER_SPRINT ~oldfiles~ ~ascension/ds/oldfiles_kelsey.2da~ LAUNCH_ACTION_MACRO ~fix_old_DS_scripts~ APPEND ~stats.ids~ ~109 WEAPON_ENCHANTMENT~ UNLESS ~109 WEAPON_ENCHANTMENT~ // for the moment, we use "CLERIC_HALLOW" for enchanted weapons But I'm not sure if it's all necessary. What are detectcloud.tph and detecttrap.tph - part of DS or specific to SCS(2)? Also, what is label_weapons.tph? If it's something separate, no worries. But if it's supposed to be part of DS, it looks like it should go toward the *end* of an install, as it appears to operate on all existing items (or weapons at least). Ascension probably gets installed fairly early (at least that's how it is currently). Finally, there seems to be a list of Ascension files (oldfiles_asc.2da) the new DS "breaks" that it has to rebuild or something. Would it make sense to fix these up front so that retrofixing isn't necessary? Link to comment
ScuD Posted March 25, 2011 Share Posted March 25, 2011 In my installation it (the version I've sent you) goes after the SCS and before the Longer Road (basing on BWP guide and "Ascension-related mods" there). I believe that's the correct place in the install order for the updated mod. Link to comment
Ardanis Posted March 25, 2011 Share Posted March 25, 2011 What are detectcloud.tph and detecttrap.tph - part of DS or specific to SCS(2)?SCS-only. Also, what is label_weapons.tph?SCS- and RR-only, allows for detection of equipped weapon enchantment (for the purpose of attacking Mantled/PFMWed creatures). Finally, there seems to be a list of Ascension files (oldfiles_asc.2da) the new DS "breaks" that it has to rebuild or something. Would it make sense to fix these up front so that retrofixing isn't necessary?Certainly so. Although dw#fixasc.mrk should then be shipped along with Ascension, at least for some time. I suppose I may as well standardise/update it as long as I'm in there.Sounds good, I wanted to say the same thing I've done some updates to DS's code for RTW, in particular fixing a bug/oversight which resulted in DS being unable to deal with 146 shells. There're another improper thing in there - the detection of level drain isn't working as it's been expected by whoever has coded it. Can only be fixed by utilizing a custom sectype, I believe, some unpretty work to do. I'm unsure if it's even used anywhere, perhaps just kill it off? Lastly, since we now have ToBEx, I guess support for it can be added as well. I'm claiming several stats for potions, any objections? PS Some mods (SR in particular) may utilize a heavy use of 146 shells, making it almost impossible to track down automatically. I think it's fine for those mods to DS such changes themselves, without having to update the database in AI mods. Link to comment
Ardanis Posted March 25, 2011 Share Posted March 25, 2011 While I'm here, check it out. I've tested it fairly extensively, but one can never be sure. Also, some optimization, etc. may be needed. ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// // This is mostly a copypaste from DavidW's version // // I've only fixed two typos in cleaning global effects; remove, rather than nullify, // effects from Lathander Boon and Melissan's Blade Barrier; ship vanilla Khelben, rather // than already patched DEFINE_ACTION_MACRO setup BEGIN ACTION_IF NOT FILE_EXISTS_IN_GAME ~cddetect.spl~ BEGIN COPY_EXISTING ~SPWI103.SPL~ ~override/cddetect.spl~ // check if Khelben's Warding Whip is broken COPY_EXISTING ~spwi705.spl~ ~override~ READ_SHORT 0x68 ~num_ab~ READ_LONG 0x64 ~ab_off~ READ_LONG 0x6a ~eff_off~ SET ~efftotal~=0 FOR (i=0;i<~%num_ab%~;i=i+1) BEGIN READ_SHORT 0x90+~%i%~*0x28 ~num_eff_here~ SET ~efftotal~=~%efftotal%~+~%num_eff_here%~ END PATCH_IF !(~%SOURCE_SIZE%~=0x30*~%efftotal%~+~%eff_off%~) THEN BEGIN SET ~khelben_broken~=1 END BUT_ONLY_IF_IT_CHANGES ACTION_IF (~%khelben_broken%~=1) THEN BEGIN COPY ~%path%/spwi705.spl~ ~override~ END //first, special patches. We need to remove melis02's existing script state modifier ACTION_FOR_EACH ~spellfile~ IN ~melis02.spl~ ~spcl741.spl~ BEGIN ACTION_IF FILE_EXISTS_IN_GAME ~%spellfile%~ BEGIN COPY_EXISTING ~%spellfile%~ ~override~ LPF DELETE_SPELL_EFFECT INT_VAR opcode_to_delete=282 END BUT_ONLY_IF_IT_CHANGES END END // clean up old versions COPY_EXISTING_REGEXP ~^.+\.itm$~ ~override~ // deliberately "regexp", not "regexp glob". BP uses the same .IDS and ~^.+\.spl$~ ~override~ // has lots of custom spells; we don't want to break them PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files READ_LONG 0x64 "ab_off" READ_SHORT 0x68 "abil_num" READ_LONG 0x6a "fx_off" // 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 END // clean out any previous versions; while I'm at it, try to look out for major corruption issues READ_SHORT 0x70 ~eff_num~ // <----- should have been 0x70, not 0x6e // start with global effects SET ~totalnumdeleted~=0 SET ~isbroken~=0 SET ~i~=0 WHILE (~%i%~<~%eff_num%~ AND ~%isbroken%~=0) BEGIN READ_SHORT ~%fx_off%~+~%i%~*0x30 ~efftype~ ELSE 999999 READ_LONG ~%fx_off%~+~%i%~*0x30+0x8 ~effcode~ ELSE 999999 PATCH_IF ~%efftype%~=999999 OR ~%effcode%~=999999 THEN BEGIN SET ~isbroken~=1 END ELSE BEGIN PATCH_IF ((~%efftype%~=233 AND ~%effcode%~>115) OR (~%efftype%~=282 AND ~%effcode%~>6)) THEN BEGIN DELETE_BYTES ~%fx_off%~+~%i%~*0x30 0x30 SET ~eff_num~=~%eff_num%~-1 SET ~totalnumdeleted~=~%totalnumdeleted%~+1 END ELSE BEGIN SET ~i~=~%i%~+1 END END END WRITE_SHORT 0x70 ~eff_num~ // <----- this line was missing, but fortunately nothing came wrong so far // now do ability-specific effects PATCH_IF ~%isbroken%~=0 THEN BEGIN FOR (j=0;j<~%abil_num%~;j=j+1) BEGIN READ_SHORT ~%ab_off%~+ 0x20 +~%extended_size%~*~%j%~ ~ind_here~ ELSE 999999 SET ~ind_here~=~%ind_here%~-~%totalnumdeleted%~ PATCH_IF ~%ind_here%~=999999 THEN BEGIN SET ~isbroken~=1 END ELSE BEGIN WRITE_SHORT ~%ab_off%~+ 0x20 +~%extended_size%~*~%j%~ ~%ind_here%~ READ_SHORT ~%ab_off%~ + 0x1e+~%extended_size%~*~%j%~ ~num_here~ END SET ~i~=0 WHILE (~%i%~<~%num_here%~ AND ~isbroken~=0) BEGIN READ_SHORT ~%fx_off%~+~%ind_here%~*0x30+~%i%~*0x30 ~efftype~ ELSE 999999 READ_LONG ~%fx_off%~+~%ind_here%~*0x30+~%i%~*0x30+0x8 ~effcode~ ELSE 999999 PATCH_IF ~%efftype%~=999999 OR ~%effcode%~=999999 THEN BEGIN SET ~isbroken~=1 END ELSE BEGIN PATCH_IF ((~%efftype%~=233 AND ~%effcode%~>115) OR (~%efftype%~=282 AND ~%effcode%~>6)) THEN BEGIN DELETE_BYTES ~%fx_off%~+~%ind_here%~*0x30+~%i%~*0x30 0x30 SET ~num_here~=~%num_here%~-1 SET ~totalnumdeleted~=~%totalnumdeleted%~+1 END ELSE BEGIN SET ~i~=~%i%~+1 END END END PATCH_IF ~%isbroken%~=0 THEN BEGIN WRITE_SHORT ~%ab_off%~ + 0x1e+~%extended_size%~*~%j%~ ~%num_here%~ END END END END BUT_ONLY_IF_IT_CHANGES END // ag#DS_x1.mrk END // end of macro ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// // Last edition by Ardanis // // Now using intelligent compatibility-friendly check: // we start by looking for existing 233/282 (with parameters matching CDDETECT.2DA) and opcode-to-be-detected // - if both are present, we check if 233/282 has correct settings (timing, power, etc.) // -- if yes, we do nothing // -- if not, we delete 233/282 and generate new effect via cloning o-t-b-d // - if o-t-b-d is present and 233/282 is not, we generate new effect via cloning o-t-b-d // - if 233/282 is present and o-t-b-d is not, we delete 233/282 // - if neither is present, we do nothing // - if both are present and 233/282s are greater in number than corresponding o-t-b-d then excessive 233/282s are deleted DEFINE_ACTION_MACRO detectable_spells BEGIN COPY - ~%path%/cddetect.2da~ ~override~ COUNT_2DA_ROWS 8 rows FOR (table=0;table<rows;table+=1) BEGIN READ_2DA_ENTRY table 0 8 file READ_2DA_ENTRY table 1 8 new_op READ_2DA_ENTRY table 2 8 value READ_2DA_ENTRY table 3 8 prof READ_2DA_ENTRY table 4 8 clone_op READ_2DA_ENTRY table 5 8 type INNER_ACTION BEGIN ACTION_IF FILE_EXISTS_IN_GAME EVAL ~%file%~ BEGIN COPY_EXISTING ~%file%~ ~override~ PATCH_IF SOURCE_SIZE > 0x71 BEGIN PATCH_INCLUDE ~%path%/fj_spl_itm_reindex_v2.tph~ // run Nythrun's reindexing code, it will save us time READ_LONG 0x64 ab_off READ_SHORT 0x68 ab_num READ_LONG 0x6a ef_off READ_SHORT 0x70 global PATCH_IF ~%SOURCE_EXT%~ STRING_EQUAL_CASE ~spl~ BEGIN size=0x28 END // if spell ELSE BEGIN size=0x38 END // if not spell, then it's item delta=0 // run through global effects PATCH_IF ~%type%~ STRING_EQUAL_CASE ~g~ BEGIN CLEAR_ARRAY clonable CLEAR_ARRAY detectable CLEAR_ARRAY auxil // look for existing effects FOR (i=0;i<global;i+=1) BEGIN offset=ef_off+(i+delta)*0x30 READ_SHORT offset opcode PATCH_IF opcode=clone_op BEGIN // if clonable opcode exists READ_ASCII offset cloned_effect (0x30) INNER_PATCH_SAVE $clonable("%i%") ~%cloned_effect%~ BEGIN WRITE_SHORT 0 new_op WRITE_LONG 4 value WRITE_LONG 8 prof END END PATCH_IF opcode=new_op BEGIN // if detectable stat exists READ_LONG offset+4 par1 READ_LONG offset+8 par2 PATCH_IF (par1=value) && (par2=prof) BEGIN READ_ASCII offset $detectable("%i%") (0x30) END END END // evaluate the gathered data PHP_EACH detectable AS i2 => r2 BEGIN SET $auxil("%i2%") = 0 END exists1=0 // *** PHP_EACH clonable AS i1 => r1 BEGIN // exists1=0 // *** exists2=0 PHP_EACH detectable AS i2 => r2 BEGIN PATCH_IF (~%r2%~ STRING_EQUAL ~%r1%~) && (exists2=0) BEGIN SET $auxil("%i2%") = 1 exists1=1 exists2=1 END END PATCH_IF exists1=0 BEGIN SPRINT $auxil("%i%") ~%r1%~ i+=1 exists1=1 END END // insert or delete PHP_EACH auxil AS ind => res BEGIN // 0 = delete, 1 = ignore, anything else = insert PATCH_IF ~%res%~ STRING_EQUAL ~0~ BEGIN DELETE_BYTES ef_off+(ind+delta)*0x30 0x30 delta -= 1 END PATCH_IF !(~%res%~ STRING_EQUAL ~0~) && !(~%res%~ STRING_EQUAL ~1~) BEGIN INSERT_BYTES ef_off+(global+delta)*0x30 0x30 WRITE_ASCIIE ef_off+(global+delta)*0x30 ~%res%~ (0x30) delta += 1 END END // finally, adjust the header info WRITE_SHORT 0x70 global+delta END // run through ability headers PATCH_IF ~%type%~ STRING_EQUAL_CASE ~a~ BEGIN FOR (j=0;j<ab_num;j+=1) BEGIN READ_SHORT ab_off+j*size+0x1e ef_num READ_SHORT ab_off+j*size+0x20 ef_ind WRITE_SHORT ab_off+j*size+0x20 ef_ind+delta CLEAR_ARRAY clonable CLEAR_ARRAY detectable CLEAR_ARRAY auxil // look for existing effects FOR (i=0;i<ef_num;i+=1) BEGIN offset=ef_off+(ef_ind+i+delta)*0x30 READ_SHORT offset opcode PATCH_IF opcode=clone_op BEGIN // if clonable opcode exists READ_ASCII offset cloned_effect (0x30) INNER_PATCH_SAVE $clonable("%i%") ~%cloned_effect%~ BEGIN WRITE_SHORT 0 new_op WRITE_LONG 4 value WRITE_LONG 8 prof END END PATCH_IF opcode=new_op BEGIN // if detectable stat exists READ_LONG offset+4 par1 READ_LONG offset+8 par2 PATCH_IF (par1=value) && (par2=prof) BEGIN READ_ASCII offset $detectable("%i%") (0x30) END END END // evaluate the gathered data PHP_EACH detectable AS i2 => r2 BEGIN SET $auxil("%i2%") = 0 END exists1=0 // *** PHP_EACH clonable AS i1 => r1 BEGIN // exists1=0 // *** exists2=0 PHP_EACH detectable AS i2 => r2 BEGIN PATCH_IF (~%r2%~ STRING_EQUAL ~%r1%~) && (exists2=0) BEGIN SET $auxil("%i2%") = 1 exists1=1 exists2=1 END END PATCH_IF exists1=0 BEGIN SPRINT $auxil("%i%") ~%r1%~ i+=1 exists1=1 END END // insert or delete local_delta=0 PHP_EACH auxil AS ind => res BEGIN // 0 = delete, 1 = ignore, anything else = insert PATCH_IF ~%res%~ STRING_EQUAL ~0~ BEGIN DELETE_BYTES ef_off+(ef_ind+ind+delta)*0x30 0x30 delta -= 1 local_delta -= 1 END PATCH_IF !(~%res%~ STRING_EQUAL ~0~) && !(~%res%~ STRING_EQUAL ~1~) BEGIN INSERT_BYTES ef_off+(ef_ind+ef_num+delta)*0x30 0x30 WRITE_ASCIIE ef_off+(ef_ind+ef_num+delta)*0x30 ~%res%~ (0x30) delta += 1 local_delta += 1 END END // finally, adjust the header info WRITE_SHORT ab_off+j*size+0x1e ef_num+local_delta END END END BUT_ONLY // PATCH_IF SOURCE_SIZE END END // INNER_ACTION, FILE_EXISTS_IN_GAME END BUT_ONLY // *** - if you feel, in case several instances of o-t-b-d are present (with different timing, etc.), that // each one of them should be copied over as 233/282 then reverse the code commenting in these lines END // end of macro ////////////////////////////////////////////////////////////////////////////////////// Link to comment
Miloch Posted March 25, 2011 Author Share Posted March 25, 2011 In my installation it (the version I've sent you) goes after the SCS and before the Longer Road (basing on BWP guide and "Ascension-related mods" there). I believe that's the correct place in the install order for the updated mod.So after SCS but before SCS2 and LR? I guess that should be ok. The current version I'm working on still overwrites a few scripts (finsol04, itfpool1-3). But on BWP only the Fixpack and SCS2 touch the first, and only Wheels of Prophecy the last three (which I'm assuming gets installed later) and LR the last itfpool3. The reason it overwrites is because the Ascension scripts are totally different, so it's kind of hard to patch a script when you're replacing all the content. Still there is reason to do that to avoid overwriting another mod's content if it makes sense (maybe rcmp will make that easier). Incidentally, the version you have uses REPLACE_BCS_BLOCK which will not work (in most cases it will do nothing at all, which might make bits of the mod nonfunctional). Sounds good, I wanted to say the same thingOh, I didn't mean I was going to update the DS code, just the Ascension code that references it. But if you've got bits you've updated, feel free to share (here I suppose if there's not a better place). I know very little about this code (i.e. nothing really). Edit: I see you ninja-posted it... I wouldn't plan on "optimising" or gods-forbid "testing" it (except that it installs) so if it does need anything, feel free to comment. So what would be involved in updating the oldfiles_asc.2da files - just let DS do it and then backport them? Might involve some diffing since we've already updated a lot of scripts, but probably won't be tougher than anything else. Link to comment
phordicus Posted March 25, 2011 Share Posted March 25, 2011 SCS- and RR-only, allows for detection of equipped weapon enchantment (for the purpose of attacking Mantled/PFMWed creatures). DS and this should be in the Fixpack, or Tweaks at least. i don't how people can stand vanilla A(un-)I. Link to comment
DavidW Posted March 25, 2011 Share Posted March 25, 2011 Finally, there seems to be a list of Ascension files (oldfiles_asc.2da) the new DS "breaks" that it has to rebuild or something. Would it make sense to fix these up front so that retrofixing isn't necessary?Certainly so. Although dw#fixasc.mrk should then be shipped along with Ascension, at least for some time. For reference, what this stuff actually does is rewire Ascension's DS to use the same codes as the "new" DS. And yes, "dw#fixasc.mrk" is a marker to tell versions of DS in other mods that this has already been done, so no need to do it twice. Lastly, since we now have ToBEx, I guess support for it can be added as well. I'm claiming several stats for potions, any objections? This isn't something that needs to be centralised (well, choice of particular stats does, possibly, but not actual inclusion of the code into DS). DS is codes so that it can be run multiple times with multiple control files. Just ship and install an extra control file with whatever mod you write needs potion detection. (I don't need it, so I don't really want to take on the burden of maintaining it inside SCS's DS.) PS Some mods (SR in particular) may utilize a heavy use of 146 shells, making it almost impossible to track down automatically. I think it's fine for those mods to DS such changes themselves, without having to update the database in AI mods. Agreed. (I've been telling Demi for a while that he needs to manage his own DS in SR.) In my installation it (the version I've sent you) goes after the SCS and before the Longer Road (basing on BWP guide and "Ascension-related mods" there). I believe that's the correct place in the install order for the updated mod.So after SCS but before SCS2 and LR? I guess that should be ok. The current version I'm working on still overwrites a few scripts (finsol04, itfpool1-3). But on BWP only the Fixpack and SCS2 touch the first, and only Wheels of Prophecy the last three (which I'm assuming gets installed later) and LR the last itfpool3. The reason it overwrites is because the Ascension scripts are totally different, so it's kind of hard to patch a script when you're replacing all the content. Still there is reason to do that to avoid overwriting another mod's content if it makes sense (maybe rcmp will make that easier). I really strongly recommend holding on to Ascension's traditional position at or near the beginning of an install order. By virtue of both its age and its nature as a self-contained rewrite of chapter 10, it doesn't need to make many allowances for other mods. By contrast, the space near the end of the install order is crowded. (SCS, for instance, likes going quite late so as to detect newly added items.) In particular, nothing in DS requires it to be anything other than first. (label_weapons.tph is SCS-specific, and doesn't have anything to do with DS proper.) And there is a very longstanding tradition of other mods assuming Ascension will be installed first or nearly so, which shouldn't be upset without a very good reason. So what would be involved in updating the oldfiles_asc.2da files - just let DS do it and then backport them? Might involve some diffing since we've already updated a lot of scripts, but probably won't be tougher than anything else. Nothing. If you compile Ascension's existing BAF scripts in a new-DS environment, they work fine. They only need to be corrected because they're originally compiled in an old-DS environment, so the stat descriptions end up pointing to the wrong stacks. SCS- and RR-only, allows for detection of equipped weapon enchantment (for the purpose of attacking Mantled/PFMWed creatures). DS and this should be in the Fixpack, or Tweaks at least. i don't how people can stand vanilla A(un-)I. No point, it only does anything in the context of an AI mod. (Unless you're saying that the Fixpack should improve AI?!) Link to comment
Miloch Posted March 25, 2011 Author Share Posted March 25, 2011 So basically I would just need this then? INCLUDE ~ascension/ds/ds.tph~ OUTER_SPRINT ~detectfile~ ~ascension/ds/cddetect.2da~ OUTER_SPRINT ~statsfile~ ~ascension/ds/stats.2da~ OUTER_SPRINT ~khelbenfile~ ~ascension/ds/spwi705.spl~ LAUNCH_ACTION_MACRO ~detectable_spells~ 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~ APPEND ~stats.ids~ ~109 WEAPON_ENCHANTMENT~ UNLESS ~109 WEAPON_ENCHANTMENT~ // for the moment, we use "CLERIC_HALLOW" for enchanted weapons Do I need that last bit for weapon enchantment, or is that just for SCS/RR? Also, do you see any immediate problems with using GeN1e's (er Ardanis's) revision? Link to comment
Ardanis Posted March 25, 2011 Share Posted March 25, 2011 Looks fine. Also, do you see any immediate problems with using GeN1e's (er Ardanis's) revision?Caution - just don't go blindly copypasting it It only shows the change in main patching code. I'd want to investigate the level drain stuff first, before calling it a day. Lastly, since we now have ToBEx, I guess support for it can be added as well.In fact, the answer is yes - the latest DS crops stats.ids at 200, killing new stuff. Link to comment
Miloch Posted March 26, 2011 Author Share Posted March 26, 2011 Caution - just don't go blindly copypasting itEh, you seem to be labouring under the misapprehension that I might actually test your code . Believe me, I've got enough on my hands with validating Ascension to go doing that. So use DavidW's version then until your code is validated? I guess TobEx support would be good, as long as it still also supports "Luddites" as the bigg would say (i.e. non-TobEx users). Link to comment
DavidW Posted March 26, 2011 Share Posted March 26, 2011 Caution - just don't go blindly copypasting itEh, you seem to be labouring under the misapprehension that I might actually test your code . Believe me, I've got enough on my hands with validating Ascension to go doing that. So use DavidW's version then until your code is validated? I guess TobEx support would be good, as long as it still also supports "Luddites" as the bigg would say (i.e. non-TobEx users). Let's keep this modular. Existing DS works fine. So Ascension can be updated using existing DS. If at some subsequent point we want to update DS itself, also fine. Link to comment
Galactygon Posted March 26, 2011 Share Posted March 26, 2011 If Asc is willing to code opcode checks like ImmuneToOpcode(O:Object*,I:OpcodeNum) ReflectsOpcode(O:Object*,I:OpcodeNum) ReflectsSpellLevel(O:Object*,I:SpellLevel) ImmuneToSpell(O:Object*,I:Spell*Spell) ImmuneToSpellRES(O:Object*,S:ResRef*) SpellIsActive(O:Object*,I:Spell*Spell) SpellRESIsActive(O:Object*,S:ResRef*) ItemIsActive(O:Object*,S:ResRef*) ImmuneToSectype(O:Object*,I:Sectype) ImmuneToSchool(O:Object*,I:Sectype) ImmuneToWeaponType(O:Object*,I:Type) ImmuneToMyWeaponType(O:Object*) // and so on then it'd be unnecessary to worry about nesting ToBEx support for DS, or even worrying about DS for non ToBEx users. The expanded stats could be reserved for hardcoded stats or special cases. -Galactygon Link to comment
Ardanis Posted March 26, 2011 Share Posted March 26, 2011 Wait! If Ascension goes the first with updated DS, it should then NOT leave cddetect.spl marker - if Kelsey or else is installed afterwards, they'll break it, but RR/SCS will think it's okay. 1) Update all mods shipping DS. Is there a list anywhere? I know of SCS/RR (the latest version), Questpack/Oversight (with broken Khelben), Ascension/Kelsey/Kiara-Zaiya (ancient version), BP (new, but with hardcoded settings), RTW (unreleased yet). 2) Until then, include erasing of the old version into the main 'multiple run' code. Seeing how the difference between old and new is the moving of twenty stats from scripting states to proficiencies (and two 282 swaps), that should be rather easy. I'd be inclined to combine both, on the occasion that somebody will manage to install outdated DS. Link to comment
the bigg Posted March 26, 2011 Share Posted March 26, 2011 RtW uses DS, although I can't recall if it still uses Ascension DS or I actually finished and uploaded the update to BP DS. Link to comment
Ardanis Posted March 26, 2011 Share Posted March 26, 2011 RtW uses DS, although I can't recall if it still uses Ascension DS or I actually finished and uploaded the update to BP DS.It was Ascension. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.