Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - D&D 5th Edition SRD (http://forums.wolflair.com/forumdisplay.php?f=89)
-   -   Using an ability uses a Hit Die (http://forums.wolflair.com/showthread.php?t=63757)

Fenris447 January 29th, 2020 12:09 PM

Using an ability uses a Hit Die
 
One of the things not yet programmed is the release version of the Aberrant Dragonmark. I have a decent amount of it covered, but my first snag is how it allows you to choose to spend a Hit Die. Here's the details
  1. You have a spell you can cast 1/short rest
  2. When you cast the spell, you can choose to also spend a Hit Die
  3. The hit die either gives you a small temporary HP pool or deals damage to someone

So programming #1 on its own is pretty easy. Adding the temp HP pool in #3 is also easy enough, except we'll have to have the user indicate whether they got the pool or they did the damage, as it's based on the die roll.

The real tricky part is #2. We need to be able to deduct one HD from the overall pool (which will probably be even more complicated if they have multiple HD pools from multiclassing). It can't be an activated ability that just reduces the HD tracker (which I also don't know how to get at) by 1, since multiple hit dice can be used for this between long rests. It basically has to be something that, when clicked, "permanently" reduces the HD tracker, until that tracker is added to as part of a regular long rest.

So I guess what I'm asking is this:
  • Can an effect be instantaneous (IE not a constantly-running eval script or bootstrap)?
  • Does anyone know how to tell Hero Lab to deduct one Hit Die?
  • How do we combine the answers to these questions?

Mergon January 30th, 2020 03:20 PM

The way I'd do it is set it up to manually remove the amount of hp. You need to be able to somehow select the appropriate number of hit points, then reduce Current and Max hp by that amount.

Maybe set it up to select the HD value you want to use in the case of multiclass. Youd proably have to associate an amount of hp to each type of HD. (ie. selecting d12 set Value = 12). this would be used to restrict the max hp you could lose.

I may be making it more complicated then you want . . . not sure.

dungeonguru January 31st, 2020 04:59 AM

I played with this once. The fields on the hit die are tricky and timing has to be done after final/10000 but before render steps. Some of the fields can't be manipulated at all.

Each of the hit die types are stored on the hero in containers named hd4, hd6, hd8, hd10, hd12 and hd20.

You can see the fields on these objects if you have debugging enabled and right-click on the hit die on the In-Play tab.

You can do something like the following:

Check to see if a hero has a d8 hit die.

if (hero.childfound[hd8].field[trkMax].value <> 0) then
... code based on fact you found that you had at least 1d8 to play with

Remove one of the hit die left in the d8 pool.

hero.childfound[hd8].field[trkLeft].value -= 1

The problem in your scenario is that I don't think you can add a button to press that just removes 1 hit die per click. You could probably create an adjustment that you could use pAdjust values on the slider but you would need to create a way to limit it to the proper hd pool and set a maximum to the slider.

Return on investment effort might make this one a tough one to justify.

Fenris447 January 31st, 2020 07:16 AM

Thanks for the help, guys. I'm inclined to agree it's a bit too much work for little return. The new Aberrant Dragonmark may have to be more up to the user to track, unfortunately. I'm not giving up yet, but it doesn't look good.

Fenris447 May 27th, 2020 07:00 AM

So I've made a little progress. Permanently removing an HD is easy enough. The feat itself does not specify which HD should be reduced. It doesn't matter in a single-classed Hero, but multiclassing means you must pick from a Wizard's D6, a fighter's D10, etc. I can either write a script to find the smallest one and remove it, or allow the player to pick which one.

Dungeonguru, you're correct about how we manipulate the amount of HD used. I found it relatively simple with your guidance. I tried it two ways. With a tracked resource, we can have the ability to roll the HD reset on a short/long rest. On a long rest, however, Hero Lab properly grants the 1/2 of spent HD back to the character but also adds back an additional hit die when it resets this tracked resource.

So a level 8 fighter with 2 HD remaining (5 were used to heal, 1 was used for the feat) will get his 4 HD back + another for resetting the feat, as opposed to the 4 total he should receive from the long rest.

The alternative is to make the tracking an Activation amount. This will persist through short and long rests, and will require the user to manually manipulate it. It's better than nothing, and it's probably going to have to be what we do.

Permanently reducing the HP should also be easy enough. Since the player has to roll to determine the amount, it will have to be a number they enter into a field manually. Unless I'm really dumb, we should be able to pull that number into a script that then takes that HP away from the max.

So I think I'll be able to have some version of this, ugly as it might be, done in time for 2.5.

RavenX May 27th, 2020 12:47 PM

Set it to allow the player to pick which HD is removed. If the feat doesn't specify, there really are no rules per SRD covering this kind of thing... it's best to allow the user to decide.

You can create "Adjustments" for things as well, you might want to try creating an adjustment and bootstrap it to the feat so it automatically shows up when the feat is added by the user as a means of lowering hit points too. You'd want to make this adjustment not user selectable since it would be bootstrapped to the feat.

Fenris447 May 27th, 2020 01:37 PM

I think I've achieved all of that. There's a tag expression that allows the user to pick which sized hit die they want to reduce, limited to those on the Hero. They can choose the amount of HP for the permanent reduction, as well.

The only part I'm stuck on is resetting the HD on a long rest. I've got it working to where the player can indicate they've used an HD, pick which one they used, and the trkLeft for that HD pool will be reduced accordingly. But when they Hero takes a long rest, the total tracker for that HD pool still carries the reduction.

So hero with 8 HD uses 3 of those HD to heal himself, and another 1 HD for this feature. They have 4 left. They take a long rest. Normally they recover half their spent HD, which would put them back to 8. But the tracker for this feat still indicates that 1 HD has been used, so the HD shows as 7/8 available.

Conversely, let's say the same Hero used 4 HD to heal itself and another 2 HD for this feature, leaving 2 remaining. If it long rests, it should get 4 back. And let's say we set up the tracker to reset on a long rest. In that case, the long rest will give the Hero 4 HD back, then reset the tracker, which eliminates the other 2 reduction, and the hero will have a full 8 HD.

The only way it could work perfectly is if, when the player adds a number to the tracker, it reduces the HD's trkLeft and then immediately resets itself. Without resetting the reduction to the HD. This is where we go back to the idea of a button, which I don't think is doable without getting into Authoring Kit territory. And since the goal is to work within the bounds of LWD's 5e product, I think we're stuck.

Brolthemighty September 12th, 2020 06:56 PM

So, I'm making an ability that uses this same mechanic, costing a HD on activation. Pulling up the feat to check out what code ended up getting used...and for the life of me, I can't find it. I see the coding to add spells...but I'm not finding anything dealing with HD. Did this get nixed in the final version?

Fenris447 October 12th, 2020 07:27 AM

The version that uses an HD was never added to the Community Pack, because I didn't get it working perfectly before I took a break mid-June. I never figured out a way to get it to operate perfectly.

The problem is that anything that reduces HD is constantly being applied to the Hero. Whenever you activate an ability, it is constantly activated. So the reduction to the HD is constantly activated, constantly reducing the HD by 1. Resetting the ability on a rest restores that one HD, even if that HD was not actually recovered by the Hero as part of a long rest.

Brolthemighty October 16th, 2020 08:01 PM

I see. I appreciate the update thank you.


All times are GMT -8. The time now is 11:50 PM.

Powered by vBulletin® - Copyright ©2000 - 2024, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.