As we discussed earlier, Monster DR Cold is actually Cold Iron (there is no such thing as DR/Cold, we just have to fix frost weapons to not grant this). I'd be in favor of a generic DR condition (which could be specified with OR or And logic), but I’d also like the history to reflect it, which I'm not sure can be easily made generic. Regarding bonus types, certainly adding them to constants.py would be good. Should also do a thorough search in the decompilation for every instance of bonus_add and its variants to make sure we haven't missed anything.
OK will add the bonus types to constants.py then Will look into the DR Condition as well, if I find a good solution I will create a generic one, if not I will simply do normal ones.
Also there is issue with tagging a weapon with Cold Iron. For example there is condition "Weapon Silver". Now we need to add new condition of "Weapon Cold Iron". Another point is - there are around 57 non magical base weapons. I guess we would have to create protos for cold iron weapons. And these should not interfere with SGoS or other ZMOD modules preferably.
No new protos are necessary at the Temple+ infrastructure level. If someone wants to add them in the module they can easily do so.
This might be a dumb question, but why does Monster DR like https://github.com/GrognardsFromHel...onditions-(List)-page-2-M-Z#monster-dr-silver also have a hook for dealing damage (0x100f7840). Just because I have a DR that gets broken by silver I do not automatically break silver DR? I am bit confused about this part right now. EDIT: If it is possible in protos to pass a second arg to the Monster DR a generic Monster DR would be doable without much troubles. The Monster DR all use the same Callback (0x100f7800) and if you pass the the desired DR as the second arg this would be easy and the history wouldn't be a concern, the callback handles this anyways. EDIT2: protos entry 14132 in protos.tab has a dr entry than looks like: Code: Monster DR Slashing 5 0 so if the 0 represents a 2nd argument field that is not currently used as MOnster DR only takes 1 arg, this could be used for the 2nd arg.
Cool. About the DealingDamage part: the rules do state this explicitly for DR/alignment. I suppose it also makes sense for werewolves to be able to kill each other, and so on.
So, I hadn't mentioned this before, but it occurred to me that there might be already enough in the game to handle both OR and AND conditions, although I don't know exactly how it works. Specifically, if you do Code: D20DAP_HOLY | D20DAP_SILVER does that count as 'holy OR silver'? If so, then that might be fine, because 'holy AND silver' is, I think, rules wise identical to two damage reductions, one which is holy and one which is silver. They don't stack in most cases, you just get the best one. So if you have 10/holy and 10/silver, that's the same as 10/(holy and silver), as long as the engine implements it correctly. The only difference might be the information displayed. As far as I know, D&D doesn't have more complicated nesting of bypass conditions (like (W and X) or (Y and Z)).
Nope. The weapon has to be both holy and silver to overcome damage reduction. MM p308 "A few creatures are harmed by more than one kind of weapon. The babau demon, for example, has damage reduction 10/cold iron or good. Either kind of weapon—cold iron or good—overcomes its damage reduction. A few other creatures require combinations of different types of attacks to overcome their damage reduction. The ghaele eladrin has damage reduction 10/evil and cold iron, meaning that a weapon must be made of cold-forged iron and be evil-aligned in order to overcome the ghaele’s damage reduction. A lich has damage reduction 15/bludg- eoning and magic, meaning that only bludgeoning weapons with at least a +1 enhancement bonus deal full damage to it. A weapon that falls into one category but not the other is of no help in overcoming the creature’s damage reduction—a magic sword or a nonmagical mace is no better at harming a lich than any other weapon."
@anatoliy could you test if the arg2 in protos.tab is useable for the condition. My generic_moster_dr.py misses the Verify_Obj_Conditions signal/query handling atm, I don't know it is needed, btu for testing purpose this could be good enough I think.
If you have 15/bludgeoning and 15/magic, then a magic sword gets reduced by the 15/bludgeoning, and a non-magical mace gets reduced by the 15/magic, and a non-magical spear gets reduced by one or the other, but not both (because you only take the most advantageous DR, not add them all up). At least, that's how the pen and paper rules work. If you can only give a monster a single DR condition in a proto, then that's a barrier, but I think at least with spell conditions you could have multiple DRs like this.
I am pretty sure it does the or thing the way you expect it, see: https://github.com/GrognardsFromHel...itions-(List)-page-2-M-Z#monster-dr-cold-holy it passes 1008 as data1
I'm not going to test as I know that it will. I myself did quite a few conditions, so no worries. Arg2 is passed correctly from protos. Overall looks good! Btw, you can use this: https://www.moddb.com/mods/toeezprotoed