Spell Compendium Mod

Discussion in 'General Modification' started by Sagenlicht, Feb 28, 2021.

Remove all ads!
  1. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,627
    Likes Received:
    538
    Sagenlicht mostly used the Temple+ extender files so there's no conflict with those.
    Note that Bucket O' Spells and Domain Spells Mod themselves conflict with each other, though - you should make sure to install Bucket first, Domain second.
     
  2. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    338
    Likes Received:
    119
    Thanks Sitra for pointing this out to me :)
     
  3. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,627
    Likes Received:
    538
    Oh, on that note. I now see your python is basically trying to re-create SneakAttackDamage from condition.cpp. As pygmy pointed out this nullifies Craven and Deadly Precision, since it is oblivious to all the changes made to that central function. Not to meniton other things like Crippling Strike etc.

    I'm afraid a proper implementation here would need to be made on the C++ code by adding a query, e.g. D20PythonQuery("Sniper Shot").
     
  4. Endarire

    Endarire Ronald Rynnwrathi

    Joined:
    Jan 7, 2004
    Messages:
    987
    Likes Received:
    122
    @Sagenlicht
    For critical strike, what about just giving the subject keen edge for the duration of critical strike and preventing keen edge from self-stacking?
     
  5. _doug_

    _doug_ Established Member

    Joined:
    Jul 9, 2009
    Messages:
    318
    Likes Received:
    143
    For sniper shot, I could add a query that will disable the range requirement for sneak attack when it is set. Would that be helpful?
     
  6. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    338
    Likes Received:
    119
    Ok here we go:
    @_doug_
    Yeah this is basically what sniper shot does, I have thought about that as well. if its possible to only hook the sneak callback for its range requirement it would be perfect. If you could do that it would be great.
    @Sitra Achara
    Thanks, the ET_OnDealingDamageWeaponlikeSpell works like a charm. I have temporarily added the feats Craven and Deadly Precision to the Sniper's Shot script manually as a workaround for both feats.But yeah, I will downgrade Sniper's Shot to WIP, this is not the best solution at all.
    @Pygmy
    Here we go, Sniper's Shot v3. I've tested it with both Craven and Deadly Precision (boy is Deadly Precision a bad feat and it is already stronger in ToEE as it negates the possibilty of a reroll of a 1) and tested it with the spells Melfs, Scorching Ray and Disintegrate. I have noticed that only two of the three Scorching Rays actually sneak, no clue why but it is already better than it should, as normally only the first attack should be precise damage. I have disabled that flag atm, as the game lets me do precise damage with a bow all day.

    On the plus side I learned while fumbling around with Snipers Shot that if I use D20DT_UNSPECIFIED in the add_dice modifier, it automatically uses the damage type of the main source which solves a problem in other scripts :)

    Edit: I've updated the first post including the Sniper's Shot fix
     
    Last edited: Mar 2, 2021
  7. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    338
    Likes Received:
    119
    I've updated the first post with updates to the spells Critical Strike, Sniper's Shot, Fell the Greatest Foe and War Cry to use D20DT_UNSPECIFIED and removed the weapon check. Should now work with unarmed/Natural weapons.

    Also added the spells Curse of Imp. Blades, Mass, Dissonant Chord, Haunting, Love's Lament, Ray of Dizziness, Wounding Whispers. I plan to add 2 or 3 more bard level 3 spells.
     
    Pygmy likes this.
  8. Pygmy

    Pygmy Established Member Supporter

    Joined:
    Oct 8, 2010
    Messages:
    766
    Likes Received:
    83
    Great! I am sure it is a consequence of the temporary workaround you referred to above and will disappear when Doug provides you with the means to disable Sneak Attack range but I have noticed that Sneak Attack damage is being added to Melf's Acid Arrow repeat damage with Sniper's Shot but not with normal sneak attack. Still much better than Sniper's Shot not working at all. Thanks
     
    Sagenlicht likes this.
  9. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    338
    Likes Received:
    119
    Ouch thanks for reporting it, I did not think of that possibility. Will look into it.
     
  10. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,627
    Likes Received:
    538
    You shouldn't sweat this one out - doug will add the hook, should solve everything.

    Although, on that note - are you uncomfortable with c++? I think it could serve you well to dip into that where needed.
     
  11. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    338
    Likes Received:
    119
    If it can be done in python, I will stick to it. If something can't be done without c++ and no one has time to help, I will postpone it. It will cost me a lot more time to do things in c++ and I prefer to add more things than to get stuck at one.

    If I know the hooks I need for a certain spells, I need less than an hour to add a spell including testing (or at least the cases I can think of) and adding the help entries. That't s the reason why I decided to skip the partsys.tab when possible, I noticed doing new particles at least doubles the time I need for a spell. This doesn't matter for one spell, but in the end I will likely add more than 200 spells and then it will sum up.

    Of course, when I have to search for a hook or have to learn new things like how to do persistent AoE spells it takes me longer for a new spell, but I have to learn everything only once :)

    Yeah and when I have to start to debug things go time intense as well, if I am not mistaken I can only debug via prints right now in python.

    Once I've added the ones, that could be done with python I will revisit all the ones that could not be done. Inspirational Boost is a great example, I really like to add the spell, but it requires a c++ modification. If you or doug don't have the time to add the c++ part, I will look into that at the end.

    Maybe that's not the correct approach but that's what I am doing right now. Do you think I should do it differently and stop when I get stuck on a spell and finish it or is skipping and doing it later ok with you?
     
  12. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,627
    Likes Received:
    538
    I can't deny that you're pumping those spells out ;) amazing work!

    I'd say it depends on the complexity of the effect you want - Sniper's Shot is one example where python alone doesn't quite cut it. If you want to blaze thru what you can do with python only at first, perhaps stick to the simpler effects first and then make a second pass for more complicated effects.

    But that's up to you really, whatever you're comfortable with! I was just suggesting it since you seem very technically proficient. In the end we're all doing this for fun.
     
  13. _doug_

    _doug_ Established Member

    Joined:
    Jul 9, 2009
    Messages:
    318
    Likes Received:
    143
    Just added a "Disable Sneak Attack Range Requirement" python query to my pull request. That should hopefully do what you want. The progress you are making on the mod is great!
     
  14. Endarire

    Endarire Ronald Rynnwrathi

    Joined:
    Jan 7, 2004
    Messages:
    987
    Likes Received:
    122
    @_doug_
    May we have a house rule that disables the requirement for SA range?
     
  15. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,627
    Likes Received:
    538
    What's the reasoning here?
     
Our Host!