Sagenlicht Beta: Draconic Feats and more

Discussion in 'General Modification' started by Sagenlicht, Nov 2, 2021.

Remove all ads!
  1. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    TL;DR:
    I post this to get some feedback from @Sitra Achara, @dolio and @_doug_ to improve the below work, so I can get it Temple+ ready :) But if you want to take a look and please feel free and provide feedback as well :)

    While working on the Dragon Disciple I noticed, that I wanted to generalize a few feature that the class uses, e.g. the Dragon Heritage thing and the Breath Weapon.

    So I started to implement [Draconic] Feats from the Complete Arcane and Dragon Magic Sourcebook, as well as a class that uses Breath Weapons as well, the Dragon Shaman. The Shaman I wanted to do anyways, as it uses a mechanic similar to the Marshal Class I already started to work on and while doing this I noticed that the Dragonheart Mage makes perfect uses of the Draconic Feats, so I threw him in the mix as well.

    Ofc, when I start working I stumble on alot of things I either do not know or do not work as I hoped they would, but I think I reached a point, where I want to get some feedback, so I can improve the things I've done so far. I also would like to know, if the admin files I use to get the magic working is fine: auras.mes, aura_utils and heritage_feat_utils.

    I dropped the Dragon Disciple Variety and Dragon Shaman Totem Dragon features and replaced them with the Feat Draconic Heritage, so all work the same. This means, Dragon Disciple and Dragon Shaman get that feat for free, boosting both classes, though I don't think the Dragon Disciple nor the Shaman actually to profit much of this.

    I decided to not add the dragonblood feat, you always have to take the Draconic Heritage Feat to have access to the Draconic Feats. The only feats that are actually affected by this change is the Draconic Aura Feat and some multiclass feats, I actually haven't done yet. This means, if you want to use those feats, you have to splash 1 level sorc. All "normal" Draconic feats require at least 1 level of sorc anyways.

    Dragon Disciple
    Removed atm, in the process of reworking Breath Weapons

    Draconic Heritage Feats
    A few Draconic Feats are already done and attached. After approval, I'll push them to Temple+

    Draconic Auras
    Part of the Feat Draconic Aura and of the Dragon Shaman Class. The Auras of the Dragon Shaman are done, the Auras of Dragon Magic are ToDo. This only gets merged when the EventID thing is soleved (see below)

    Fey Heritage Feats [New!]
    I added all Fey Heritage feats from the Complete Mage Sourcebook. They synergize very well with the Marshal and Dragon Shaman Class and are a nice addition for Sorcerer if they want to explore a Heritage route (though for them Draconic might be better).
    Under the hood, I prepared heritage_feat_utils to be able to add more Heritage Lines.

    Dragon Shaman
    Removed for now, due Breath Weapon reworks as well

    Dragonheart Mage
    While doing the Draconic Feats I noticed, that if you want to play a sorc that does concentrate on her/his Draconic Heritage, the Dragonheart Mage would be a perfect addition, as the prestige class trades two level of sorc spellcasting for 5 bonus draconic feats. Yes, a pure spellcasting sorc will always be better than a draconic sorc, but if you want to play something different, this prestige class would be a perfect fit. Doesn't have a help file yet. I copied the class from the Eldritch Knight and adapted it. Haven't tested it much yet. Will get pushed to T+ once the Draconic Feats get approved.

    The next beta of the Marshal Class.
    It is fully functional, only issues left are caster_level workaround and spell_end of the auras.

    Workarounds
    All workarounds in the code are marked as ### Workaround ###
    At the moment these are mainly fiddling with caster_level/classes in Python Actions.

    Feat Description

    I use feat headers for Draconic Heritage and Dragon Lineage to not utterly clutter the feat window.
    But the game does not handle the feat description properly, as it asumes all child feats have the same description.
    I can workaround this by dropping the parent/child structure.

    spell descriptors are a huge headache as well. But I will postpone that

    Please be aware, that if you actually want to start the game with the attached zip, you have to do the following:
    1. Download the https://ci.appveyor.com/project/templeplus/templeplus/builds/41566126/artifacts 3216 beta. It contains the Marshal Branch
    2. copy the unziped folder to the overrides folder.
    3. ADD FOLLOWING ENTRIES TO CONSTANTS.PY OF THE NEWLY DOWNOADED TEMPLE+ OR THE GAME WILL CRASH:

    everything can be attached to end, or if you want to do it nicely:
    Below spell_new_slot_lvl_9 = 1614:

    # Dragon Lineage Spell Like Abilities
    spell_dragon_lineage_black = 3242
    spell_dragon_lineage_blue = 3243
    spell_dragon_lineage_brass = 3244
    spell_dragon_lineage_bronze = 3245
    spell_dragon_lineage_copper = 3246
    spell_dragon_lineage_gold = 3247
    spell_dragon_lineage_green = 3248
    spell_dragon_lineage_red = 3249
    spell_dragon_lineage_silver = 3250
    spell_dragon_lineage_white = 3251

    # Dragon Breath Shapes
    dragon_breath_shape_cone = 1
    dragon_breath_shape_line = 2

    # Heritage Types
    heritage_draconic_black = 1
    heritage_draconic_blue = 2
    heritage_draconic_brass = 3
    heritage_draconic_bronze = 4
    heritage_draconic_copper = 5
    heritage_draconic_gold = 6
    heritage_draconic_green = 7
    heritage_draconic_red = 8
    heritage_draconic_silver = 9
    heritage_draconic_white = 10
    heritage_celestial_sorcerer = 11
    heritage_fey = 12
    heritage_fiendish = 13
    heritage_infernal_sorcerer = 14

    # Classes
    stat_level_dragon_shaman = 84
    stat_level_dragonheart_mage = 85


    Known Issues:
    The game can hang up when you use breath weapons, as the used turn_towards() does not function properly. Actually do not look to the left while using it :)
    Some help files are missing
    Some Feats and draconic auras are missing or are not fully working.
     

    Attached Files:

    Last edited: Nov 18, 2021
    Pygmy and August like this.
  2. August

    August Member

    Joined:
    Jun 28, 2006
    Messages:
    29
    Likes Received:
    5
    Shit. Well, there goes my Tuesday evening, I'm rolling a Marshal now.
     
  3. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,427
    Likes Received:
    379
    About eventId: have you checked out blackguard? Has aura of sespair effect.
    About constants.py: note that you can override that too, by using the same relative path.
    There might also be a way to monkey patch it, not 100% sure.
     
  4. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    I think I pretty much do the same as the Blackguard. The blackguard never needs to end the aura, so it stays active all the time. This is what I do atm with the Marshal and the Draconic Auras as well, but I guess I would prefer if I could end them, as the aura of the blackguard always does the same, Marshal and Draconic Auras can switch effects. Though if it's fine, the way I did it, that would be ok too then.
     
  5. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,427
    Likes Received:
    379
    Ah ok, i was going off your remark about destroying objects. So yeah it sounds like object_event_end API is needed. I take it no new persistent AoE spells have been added yet?
     
  6. August

    August Member

    Joined:
    Jun 28, 2006
    Messages:
    29
    Likes Received:
    5
    Sagenlicht doublecheck your copy-paste block, it's missing a # in the line "and below stat_level_marshal = 83:" :)
     
  7. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,427
    Likes Received:
    379
    BTW please no hacky workarounds for caster level / dc. If you just need something for testing, might as well use some constant value. I'll take a look why that happens. Can you provide a save with the proper setup for that?
     
  8. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    Nope, I didn't merge any AoE spells into Temple+ yet, didn't consider them simple spells.

    The line shouldn't be added but yeah sorry, will add a # to avoid crashes

    Just to be clear, what do you consider hacky?

    a) Doing this in the pythonActionFrame?
    Code:
        spellPacket.caster_level = attachee.stat_level_get(classEnum)
        spellPacket.dc = 10 + attachee.stat_level_get(classEnum) + ((attachee.stat_level_get(stat_constitution)-10)/2)
        tpactions.register_spell_cast(spellPacket, newSpellId)
        tpactions.trigger_spell_effect(newSpellId)
    
    b) or this in the spell itself?
    Code:
        if spell.caster_level < 1:
            spell.caster_level = spell.caster.stat_level_get(stat_level_marshal)
    
    c) or both?
    I personally consider b) hacky, and I didn't switch the Marshal spells to solution a) (which I should have), but it could be easily switched. Anyways, the caster_level shouldn't be a huge problem, I guess the new class enums are just out of range somewhere.

    What can't be easily changed is the DC problem. The Dragon Breath does not use the normal DC formula (10 + spell level + caster atribute modifier), but instead either uses:

    Dragon Disciple: 10 + Dragon Disciple Level + Con Modifier
    Dragon Shaman: 10 + 1/2 Dragon Shaman level + Con Modifier
    Draconic Breath: 10 + spell slot level given up + Cha Modifier

    which means I do need to set the DC manually in the pythonActionFrame before executing the spell if I want to use a single spell for it. But the DC does not carry over to the spell.

    Attached is a save, ignore the half-orc.
    The blue haired elf can cast two different breath weapons (Dragon Disciple and Draconic Breath) and the
    Human can cast the Dragon Shaman Breath Weapon as well as activate all three auras (Draconic and both Marshal auras).

    EDIT: oh and yeah, if I could get object_event_end, I would rewrite alot of the Marshal and Draconic Aura stuff. Would be awesome :)
     

    Attached Files:

    Last edited: Nov 3, 2021
  9. Pygmy

    Pygmy Established Member Supporter

    Joined:
    Oct 8, 2010
    Messages:
    564
    Likes Received:
    31
    Great work. I have encountered a small snag with the Marshal's Minor Aura Determined Caster; I cannot help noticing that the circumstance bonus is applied to every skill and every saving throw.
     
  10. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    Wow, is this the only aura behaving strange? If yes I am bit puzzled, if not I messed up somewhere else :)
    Code:
    ### Marshal Minor Aura Determined Caster ###
    marshalMinorAuraDeterminedCaster= PythonModifier("Marshal Minor Aura Determined Caster", 5) #auraSpellId, auraEnum, auraEventId, empty, empty
    marshalMinorAuraDeterminedCaster.AddHook(ET_OnSpellResistanceCheckBonus, EK_NONE, auraAddBonusList, ())
    
    This is what the hook looks like.
     
  11. Pygmy

    Pygmy Established Member Supporter

    Joined:
    Oct 8, 2010
    Messages:
    564
    Likes Received:
    31
    I have also tested Watchful eye, Over the Top, Motivate Wisdom and Motivate Strength using a 1st level Aasimar Marshal with 20 CHA and Improved Initiative but not much else. As you can see from Eberk's reflex save when using Motivate Strength, all five auras tested so far have behaved identically

    upload_2021-11-3_11-29-43.png
     
  12. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    Ok, so I messed up somewhere else, sry about that. Will look into it asap.
     
  13. Pygmy

    Pygmy Established Member Supporter

    Joined:
    Oct 8, 2010
    Messages:
    564
    Likes Received:
    31
    I haven't tested it yet but I notice that both draconic_resistance.py and draconic_toughness.py have draconicResistanceFeat at the start of their last three lines of code; might this be significant?
     
  14. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    Yup copy paste error, thanks for finding that as well :)
    Though that won't fix the Minor auras.
     
  15. Sagenlicht

    Sagenlicht Established Member

    Joined:
    Apr 14, 2004
    Messages:
    236
    Likes Received:
    51
    zip in first post has been updated, should be fixed now @Pygmy
     
Our Host!