Multi-class combinations are extremely difficult to externalise. This is because they have specific CLASS.IDS identifiers. I think DUALCLAS.2DA already handles dual-class combinations.Is externalizing multi/dual-class combinations much of a hassle?
So you want something like:ITEMANIM.2da specifies (in a single column) what character sequence plays when activating an item's special ability. Right now that sequence plays whenever activating any ability for some item (for items with multiple abilities), and does not allow for attack animations to be overridden. Perhaps this could be fine-tuned (by adding more columns) to allow variations between extension headers, and allow attack animations to be overridden.
2DA V1.0
-1
SEQUENCE SEQUENCE1 SEQUENCE2 OVERRIDE
A 1 2 3 4
?
What do you mean about attack animations not being overriden? Doesn't an item use usually have no animation?
The way that CDerivedStats is structured, no. What I would need to do is to make a second struct that would store extra stats, duplicate the current, prev, and diff states, and have their pointers store in each CCreatureObject. Certainly not easy by any means.I thought as according to Nythrun, STATS.IDS is not expandable.
This is more complicated than a single effect, because the damage opcode (or the creation of the effect) would need to be adjusted (and everything else that codes a damage-style reduction in HP) to multiply damage - which would either need to check for an existing effect opcode on the character (plus stacking) or introduce an extra element in CCreatureObject that would store the damage multiplier. I had a thought that the difficulty multiplier could be used, but this is a global feature.An effect to grant a percentage increase to all damage dealt of a selected type would be nice. Ex: Aqua Mortis and the like from IWD2.
Opcode #250 could help us out (with expanded parameters to account for damage dealt through spells/items, modifier type, etc).
Yep, I have had already written down Sim's request.* Simulacra use male casting voices, this could be fixed if spellcasting uses 0x0237 (sex) instead of 0x0275 (gender)
Could you explain this further? I don't understand.* Spell Immunity-type menus (.2das) could be linked with spells (.spls) in an external .2da table so that the menu will expand to replace the spell when selecting contingencies/triggers.
This should be possible.* Flags for spells/item abilities to allow targeting of invisible characters
I think this is an animation limitation, in that certain actions must only be performed a certain number of times per round, governed by the RNDBASE.BMP files., ignore the 1-spell/round limit
I can have a look at this., and (for item abilities) to be affected by aura cleansing
I would have thought this is the desired behaviour, otherwise the target could save against some effects in the same extended header and not to others, whereas we would want one save for the entire extended header. Imagine a charm spell going 'off' because the target saved against the Charm opcode but not the Display Portrait Icon opcode...Here's one I'm keen on:
The engine rolls saving throws and calculates luck bonuses before the first feature block of the extended header is applied, rather than before the first feature block where the saving throw or damage reduction is calculated. This prevents us from applying effects that give bonuses to saving throws and luck bonuses on the fly (ie. in the same extended header). This is not the case with damage/magic resistances, where they are calculated when first looked for, so this is some engine inconsistency.
If the engine could take saving throw modifiers/luck modifiers into account when placed in the same feature block, but right before the order in which the rest of the effects are applied, then it would be possible to implement AD&D saving throws vs. damage types / wisdom modifiers to saving throws against charm-related effects.
Sure, I think it's doable, will need to find the code itself.I don't understand the question; I think having a component in ToBExConfig asking if you want that tweak or not (like the rest of the stuff) is fine with me (I doubt this would cause compatibility issues, since sane modders wouldn't pillage the BH/Assassin unusability bit for their kit).
I think it is probably much less work to just make a mod that operates via dialogue to 'configure' your sub-race at the start of the game.Yeah, I know but that would be better to include that kind of options in creating a character. As far as I remember that kind of mods add subrace via dialogue.
However, probably it's just me who would like to see it so...
I did write this down, but I think it is tricky, because the interruption occurs if the character is 'hit' in the code, not when the character is damaged.Some time ago I've asked in PM for no casting interruption if no damage (100% res) is taken.
Thinking more about it, could the concentration check be implemented, using creature's level as a base?
if ((level + 1d20) < damage) then interrupted=1
else interrupted=0
Would it work if you made a permanent stat change at the start of the feature block and reverted that change at the end of the feature block?I've almost wrote a "no, not possible" post, but I decided to test it once again (I've been trying to get this to work using external .effs for years), and it sort of worked. I'm giving you credit for giving me the idea to delay the external damage-applying .eff. I would have to:
1.) externalize all damage feature blocks into .effs
2.) make sure that .eff fires away with a delay of 0 (set in the extended header)
3.) make sure the saving throw modifier is placed before the external .eff with a duration of 1 (0 doesn't work, bc it expires before the .eff is fired).
It's still not optimal, because many things can happen within that one second when the saving throw/luck roll is penalized. Furthermore, I would have to externalize every single opcode in the game, which is a pain.
I'm also giving you credit because this made me test opcode 133 [Luck Non-Cumulative] instead of 22 [Luck modifier]. Opcode 133 is applied right when the game reads through that feature block, as opposed to opcode 22 (which is applied when the game reaches the end of the feature block list). You are now my friend, GeN1e.
In summary: I'd like opcodes 22, and 33-37 to behave like opcode 133 in terms of when they are applied.
This can be tricky, because the button state depends on an array value in CDerivedStats, which I described earlier, needs 'tagging' with a CDerivedStatsEx or something-or-other onto the CCreatureObject. If I can get something like this sorted, it may well be doable.You could restore opcode #144 / #279, param 2 = 10 (i.e. ability to enable/disable the Find Traps button)
So, it does look like extending STATS.IDS seems to a want that has come up a few times. I might investigate this first (after the engine bugs).