• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Editor help: Recreating the Ephemeral Echo from "Tears at Bitter Manor"

Paris.Crenshaw

Well-known member
Hi, All.

I'm trying to help out a friend who wants to use the subject creature for a different game.

First: Is there a helper that will force Hero Lab to ignore any strength bonuses on a melee attack's damage? If not, what script or tag could I use?

I'm trying to set up a monster with an incorporeal touch ability that deals 1d6 Cold damage plus 1d6 Charisma damage. I can get the incorporeal touch to show up, but the incorporeal creature curiously has a +3 strength bonus. And when I select 1d6 for the damage and use the wDamExtra tag to apply the " cold plus 1d6 Charisma damage" description, it applies that bonus to the 1d6. If I select "None" for the "incorporeal touch" damage, then the wDamExtra info doesn't even show up.

Second: The creature becomes corporeal after dealing Charisma damage to a creature. It gains a Strength score equal to its Charisma score, its deflection bonus to AC becomes a natural armor bonus, and its incorporeal touch attack is replaced with two slam attacks. It loses its fly speed and replaces it with a land speed. I had planned on doing this with an In-Play check box similar to the hybrid form modifications applied for a lycanthrope. I'd appreciate any suggestions you might have for the scripting to change the relevant aspects of the creature when the box is checked.

Thanks for your help.
 
Hi, All.

I'm trying to help out a friend who wants to use the subject creature for a different game.

First: Is there a helper that will force Hero Lab to ignore any strength bonuses on a melee attack's damage? If not, what script or tag could I use?

I'm trying to set up a monster with an incorporeal touch ability that deals 1d6 Cold damage plus 1d6 Charisma damage. I can get the incorporeal touch to show up, but the incorporeal creature curiously has a +3 strength bonus. And when I select 1d6 for the damage and use the wDamExtra tag to apply the " cold plus 1d6 Charisma damage" description, it applies that bonus to the 1d6. If I select "None" for the "incorporeal touch" damage, then the wDamExtra info doesn't even show up.

Second: The creature becomes corporeal after dealing Charisma damage to a creature. It gains a Strength score equal to its Charisma score, its deflection bonus to AC becomes a natural armor bonus, and its incorporeal touch attack is replaced with two slam attacks. It loses its fly speed and replaces it with a land speed. I had planned on doing this with an In-Play check box similar to the hybrid form modifications applied for a lycanthrope. I'd appreciate any suggestions you might have for the scripting to change the relevant aspects of the creature when the box is checked.

Thanks for your help.

Off the top of my head, I think there is a "wOverDMG" tag that can be used to override the ability used for Attacks.
So in this case wOverDMG.CHA would use charisma, instead of Strength.
 
Off the top of my head, I think there is a "wOverDMG" tag that can be used to override the ability used for Attacks.
So in this case wOverDMG.CHA would use charisma, instead of Strength.

Cool. So, is there an option to use the wOverDMG tag and not apply any ability score at all?
 
Cool. So, is there an option to use the wOverDMG tag and not apply any ability score at all?

So, this was actually pretty easy. I was able to use the wMaxStrBon.0 tag to eliminate the strength bonus on that attack. Since the creature won't have this attack when it's corporeal, there's no reason to remove the bonus from other attacks.

I was going to use the following code:

Code:
hero.child[Damage].field[tDamStr].value = 0

But that turned out to be unnecessary.
 
Last edited:
So, this was actually pretty easy. I was able to use the wMaxStrBon.0 tag to eliminate the strength bonus on that attack. Since the creature won't have this attack when it's corporeal, there's no reason to remove the bonus from other attacks.

I was going to use the following code:

Code:
hero.child[Damage].field[tDamStr].value = 0

But that turned out to be unnecessary.

Sorry I didn't reply sooner, real life work took over again!

Glad you got it sorted:cool:
 
Paris.Crenshaw said:
These abilities are based on the creature dealing Charisma damage to another creature. When it does, it's Corporeal Form ability kicks in for 1d4 rounds (or longer). It loses the incorporeal subtype, changes its deflection bonus to a natural armor bonus, trades its fly speed for a land speed of equal value, gains a Strength score equal to its Charisma score, and replaces its incorporeal touch with 2 slam attacks.
So the main thing you need to do is disable the incorporeal subtype. Lucky Aaron added easy logic for this. Though I would also make this ability activatable on the In-Play tab so the DM can turn it on/off as needed.

Run this script at First/510:
Code:
~ If ability not active get out now!
doneif (field[abilActive].value = 0)

~ Remove the incorporeal subtype
perform hero.assign[NoTypeAbil.stIncorpor]
Then we need to set Str to be same as Cha:
Pre-Attributes/100:
Code:
~ If ability not active get out now!
doneif (field[abilActive].value = 0)

~ Set the starting Str modifier to the same as the Cha score
hero.child[aSTR].field[aStartMod].value = hero.child[aCHA].field[aStartMod].value

Now then we have a tag on the "hero" that now tells us if we are incorporeal or not. So lets use that to our advantage.

I assume you set the Incorporeal Touch Attack as an "Other Melee Weapon" on the race. So add a bootstrap condition to it:
First/600
Code:
!NoTypeAbil.stIncorpor
Add the above logic to the "xFly" helper also so we lose fly when not incorporeal.

Then add Two Slam Attacks with the following bootstrap condition:
First/600
Code:
NoTypeAbil.stIncorpor

Paris.Crenshaw said:
Additionally, its Stolen Power ability grants it a +2 profane bonus on attack attack rolls, damage rolls, saving throws, skill checks, and ability checks until the end of its next turn. The echo also gains 5 temporary hit points that last for 1 hour.
So these can be added to the same Racial Special of "Stolen Power". You can now easily add typed bonuses to the character for attack and damage:
Code:
      ~ If ability not active get out now!
      doneif (field[abilActive].value = 0)

      hero.child[Attack].field[BonProfane].value += field[abValue].value
      hero.child[Damage].field[BonProfane].value += field[abValue].value
In this example I preset the field abValue to be 2. This way if ever needed its easy to adjust this value up or down using an Adjustment. :)

I had to write a little of this so if I can I will finish out this module to be added to the GM Pack. Or happy to take other stuff you have done. Attached is an example source of this monster.
 

Attachments

Wow. Amazing. I don't have my laptop handy (and I'm at work ;) ), so I can't try this out, right now, but I can't wait to sit down and get back to work.

Thank you very much for your help, Shadow! I'll let you know how it works out!
 
Hey, ShadowChemosh. Thanks, again, for the help. I'm attaching the version of Ephemeral Echo that I finally developed. The one thing I'm not as happy about is the way the stat block output works. Setting up the race so that the slam attacks are only present when the monster is corporeal means that when the Corporeal Form ability is not active, the slam attack isn't included in the stat block; and conversely, when the ability is active, the incorporeal touch is left out. So, the monster works great within the program, but isn't complete when printed out for use elsewhere. I'd almost rather just have the slam attacks always show up, but always use the character's Charisma bonus as the damage bonus on the attack. Other than that, this ended up working perfectly.

Now, looking further into the module, there's a piece of magical equipment that modifies a character based on its corporeality. I think I can figure out how to modify the item's behavior based on the presence or absence of the incorporeal subtype. But I'm unclear on how to implement the actual modifications.

1) If the character is corporeal, it applies a special property to "her
natural attacks and weapons she wields (even thrown weapons and projectiles)."

I can figure out how to assign the special property in question to a single item, but I'm not sure what I would use to apply it to every type of attack a corporeal creature would have.

2) If the character is incorporeal, "it can interact with [its] surroundings. Any item in its possession becomes incorporeal."

Similarly, for incorporeal creatures, I would effectively have to have the item make the weight of each carried item equal to 0 and give all items the ghost touch special ability. Is there a single field or tag that encompasses every piece of gear that a character possesses?
 

Attachments

Back again. So, I've managed to get the basics of the amulet working. When equipped, the amulet applies the ghost touch property to everything the creature is carrying. My problem is that I only want it to reduce the equipment's weight to zero when the wearer is incorporeal. I'm having problems with the requirement in the if/then statement. What I have so far is as follows:

Code:
    if (field[gIsEquip].value <> 0) then
      foreach pick in hero from MyGear
      perform eachpick.assign[Ability.iGhostTch]
      nexteach
      if (#hasability[raIncorpor] <> 0) then
        foreach pick in hero from MyGear
        eachpick.field[gWeight].value = 0
        nexteach
      endif
    endif

That *should* work, but for some reason it doesn't. It should be setting the weight of equipment to 0 for an incorporeal creature, but it doesn't. I'm not sure what I did wrong in the second "if/then" statement. I don't know what the proper condition should be to tell the script to look at whether the hero has the incorporeal ability.

Thoughts? Thanks!
 
Back again. So, I've managed to get the basics of the amulet working. When equipped, the amulet applies the ghost touch property to everything the creature is carrying. My problem is that I only want it to reduce the equipment's weight to zero when the wearer is incorporeal. I'm having problems with the requirement in the if/then statement. What I have so far is as follows:
Yea I started looking at this item also to script. Pretty much you have the same concept I would go with. The big issue when dealing with weight is its a very specific set of timing to get it change the value and still affect the total weight on the hero.

Code:
    if (field[gIsEquip].value <> 0) then
      foreach pick in hero from MyGear
      perform eachpick.assign[Ability.iGhostTch]
      nexteach
      if (#hasability[raIncorpor] <> 0) then
        foreach pick in hero from MyGear
        eachpick.field[gWeight].value = 0
        nexteach
      endif
    endif
So applying Ghost Touch Weapon Item Power to all gear items is not really going to do anything. It is meant to only work if at all on magic weapons.

So timing I would need to look up from my Spellbooks equipment addon. The other thing is be careful with adding foreach loops they are CPU intensive.
Code:
~ If not equipped get out now!
doneif (field[gIsEquip].value = 0)
~ Only process if we are incorporeal
doneif (#hasability[raIncorpor] = 1)

~ Find all gear items and set weight to zero
foreach pick in hero from MyGear
   ~ Apply Ghost Touch tag to all weapons
   if (eachpick.tagis[component.BaseWep] = 1) then
     perform eachpick.assign[Ability.iGhostTch]
   endif

   ~ Set the item weight to zero
  eachpick.field[gWeight].value = 0
  eachpick.field[gearWeight].value = 0

nexteach
My spellbook stuff runs at PreLevel/10500.

The only last thing I would change is to look for the Incorporeal Subtype on the hero instead of a Racial Special. But I am not near HL and don't remember the unique id for that subtype.
 
Setting up the race so that the slam attacks are only present when the monster is corporeal means that when the Corporeal Form ability is not active, the slam attack isn't included in the stat block; and conversely, when the ability is active, the incorporeal touch is left out. So, the monster works great within the program, but isn't complete when printed out for use elsewhere. I'd almost rather just have the slam attacks always show up, but always use the character's Charisma bonus as the damage bonus on the attack. Other than that, this ended up working perfectly.
I guess my thought here would be the same for a Barbarian or a character with Rage. I would simply print the statblock twice, once while raging and once while not-raging. So just print the statblock twice. :) Otherwise your at extra coding special to support "paper" which no other ability or race in HL does.

Of course the bigger issue is why even put the monster in HL if you are not going to use HL during the game? Cause you could just print the statblock already from the Paizo PDF. So confused on why code and "script" the abilities to work if not going to use HL during the game? :confused:
 
Thanks.

I'll try that setup.

One thing I should point out, though, is that, while the Ghost Touch Weapon Item power is only supposed to be used on magic weapons, applying it to any other item allows an incorporeal creature to use it without triggering a validation error. Frumple's Adjustments from the Community GM Pack showed me that, and it actually works. Using my script, when the amulet is not equipped an item like a headband has a validation error, but when you equip it, the error goes away. I can still use the BaseWep approach for how the amulet functions if the character is corporeal.

As for the subtype, what you're looking for would be

Code:
doneif (#hassubtype[stIncorpor] = 1)
 
I guess my thought here would be the same for a Barbarian or a character with Rage. I would simply print the statblock twice, once while raging and once while not-raging. So just print the statblock twice. :) Otherwise your at extra coding special to support "paper" which no other ability or race in HL does.

Of course the bigger issue is why even put the monster in HL if you are not going to use HL during the game? Cause you could just print the statblock already from the Paizo PDF. So confused on why code and "script" the abilities to work if not going to use HL during the game? :confused:

The answer to this one is that the friend I did this for wants to use the monster in a game for characters of a much higher level. Having the monster in Hero Lab allows him to apply all sorts of nasty feats, class levels, and equipment to boost the save DC for that bewitching gaze ability from a lowly 20 to a much higher, more impactful number.

The fact that I want the script/code to do all this stuff is my OCD-like need to make it "work right." And besides...I may decide to use it at some point and I do use HL when I GM. ;)
 
Thanks.

I'll try that setup.

One thing I should point out, though, is that, while the Ghost Touch Weapon Item power is only supposed to be used on magic weapons, applying it to any other item allows an incorporeal creature to use it without triggering a validation error. Frumple's Adjustments from the Community GM Pack showed me that, and it actually works. Using my script, when the amulet is not equipped an item like a headband has a validation error, but when you equip it, the error goes away. I can still use the BaseWep approach for how the amulet functions if the character is corporeal.

As for the subtype, what you're looking for would be

Code:
doneif (#hassubtype[stIncorpor] = 1)
Yep you are correct Sir! I just figured that out as I was playing in HL. If this is the Amulet of Grasping Souls I went a different way with the weight. I actually set the Encumbrance Strength to be the "Cha" score so that it is correct to the Text.

Pre-Attributes/10000
Code:
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are incorporeal
      doneif (#hassubtype[stIncorpor] = 0)

      ~ Set our Encubrance Strength to be our Charisma
      herofield[tEncumSTR].value += 10 + hero.child[aCHA].field[aStartMod].value

      ~ Find all gear items and give the Ghost Touch ability
      ~ so that these items can be worn without errors.
      foreach pick in hero from MyGear
        perform eachpick.assign[Ability.iGhostTch]
      nexteach

I am still working on the the part for Corporeal creatures weapon gizmos are being a pain... :(
 
So the second part of the amulet is if you are corporeal then all your weapons become ghost touch. This script will do that:

Render/9999999
Code:
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are corporeal
      doneif (#hassubtype[stIncorpor] = 1)

      ~ Find all weapons and give the Ghost Touch ability
      foreach pick in hero from BaseWep
        perform eachpick.assign[Ability.iGhostTch]
        perform eachpick.assign[HasAbility.iGhostTch]

        ~ If custom/magic weapon then build full name including other
        ~ abilities.
        if (eachpick.isgizmo = 1) then
          eachpick.field[livename].text = signed(eachpick.field[BonEnhance].value) & " " & lowercase(eachpick.tagnames[Ability.?," "]) & " " & lowercase(eachpick.tagnames[IsWeapon.?])
        ~.. not a custom/magic weapon so just add ghost touch
        else
          eachpick.field[livename].text = lowercase(eachpick.tagnames[Ability.?," "]) & " " & lowercase(eachpick.field[name].text)
        endif

      nexteach
 
Yep you are correct Sir! I just figured that out as I was playing in HL. If this is the Amulet of Grasping Souls I went a different way with the weight. I actually set the Encumbrance Strength to be the "Cha" score so that it is correct to the Text.

Pre-Attributes/10000
Code:
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are incorporeal
      doneif (#hassubtype[stIncorpor] = 0)

      ~ Set our Encubrance Strength to be our Charisma
      herofield[tEncumSTR].value += 10 + hero.child[aCHA].field[aStartMod].value

      ~ Find all gear items and give the Ghost Touch ability
      ~ so that these items can be worn without errors.
      foreach pick in hero from MyGear
        perform eachpick.assign[Ability.iGhostTch]
      nexteach

I am still working on the the part for Corporeal creatures weapon gizmos are being a pain... :(

Wow. I can't believe I missed that line. Setting the encumberance to key off of Charisma makes perfect sense. Unfortunately, there's something really weird going on. When I use your script and engage the corporeal form ability, the character's encumberance limit goes WAY up, as though the character's Strength and Charisma are being added together to calculate encumbrance. Additionally, using only the aStartMod tag means that if an incorporeal creature that owns both an amulet of grasping souls and a headband of alluring charisma won't be able to benefit from the increased Charisma bonus. Similarly, other sources of increased Charisma won't be factored in, either.

I think there is also a problem with the #hasability or #hassubtype macros. They don't appear to be working.

Is it possible that these scripts are being executed too early? I'm not sure when the subtype and incorporeal abilities show up, but the scripts seem to be applying the changes whether the creature is corporeal or not.
 
Wow. I can't believe I missed that line. Setting the encumberance to key off of Charisma makes perfect sense. Unfortunately, there's something really weird going on. When I use your script and engage the corporeal form ability, the character's encumberance limit goes WAY up, as though the character's Strength and Charisma are being added together to calculate encumbrance. Additionally, using only the aStartMod tag means that if an incorporeal creature that owns both an amulet of grasping souls and a headband of alluring charisma won't be able to benefit from the increased Charisma bonus. Similarly, other sources of increased Charisma won't be factored in, either.
Yea problem is you have to set the Encumbrance value before attributes are calculated.


I think there is also a problem with the #hasability or #hassubtype macros. They don't appear to be working.

Is it possible that these scripts are being executed too early? I'm not sure when the subtype and incorporeal abilities show up, but the scripts seem to be applying the changes whether the creature is corporeal or not.
I am not seeing this. The scripts give encumbrance to incorporeal creatures and ghost touch to corporeal. I can't duplicate this issue. Usually #has macros should only be used late but seems to be working fine. You could switch to checking the Ability.? tags instead they apply much earlier.
 
Yea problem is you have to set the Encumbrance value before attributes are calculated.
So I take this back. We have a very small window to set the Encumbrance value to be equal to the just calculated Cha value.

Here are all three scripts:
Code:
    <eval phase="PostLevel" priority="10050" index="1"><![CDATA[      
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are incorporeal
      doneif (hero.tagis[Ability.raIncorpor] = 0)

      ~ Remove the Ingore Encubrance tag that incorporeal applies
      perform hero.delete[Hero.IgnoreEnc]

      ~ Find all gear items and give the Ghost Touch ability
      ~ so that these items can be worn without errors.
      foreach pick in hero from MyGear
        perform eachpick.assign[Ability.iGhostTch]
      nexteach
      ]]></eval>

    <eval phase="PostAttr" priority="1" index="2"><![CDATA[
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are incorporeal
      doneif (hero.tagis[Ability.raIncorpor] = 0)

      ~ Set our Encubrance Strength to be our Charisma
      herofield[tEncumSTR].value += hero.child[aCHA].field[aFinalVal].value
      ]]></eval>

    <eval phase="Render" priority="9999999" index="3"><![CDATA[
      ~ If not equipped get out now!
      doneif (field[gIsEquip].value = 0)
      ~ Only process if we are corporeal
      doneif (hero.tagis[Ability.raIncorpor] = 1)

      ~ Find all weapons and give the Ghost Touch ability
      foreach pick in hero from BaseWep
        perform eachpick.assign[Ability.iGhostTch]
        perform eachpick.assign[HasAbility.iGhostTch]

        ~ If custom/magic weapon then build full name including other
        ~ abilities.
        if (eachpick.isgizmo = 1) then
          eachpick.field[livename].text = signed(eachpick.field[BonEnhance].value) & " " & lowercase(eachpick.tagnames[Ability.?," "]) & " " & lowercase(eachpick.tagnames[IsWeapon.?])
        ~.. not a custom/magic weapon so just add ghost touch
        else
          eachpick.field[livename].text = lowercase(eachpick.tagnames[Ability.?," "]) & " " & lowercase(eachpick.field[name].text)
        endif

      nexteach
      ]]></eval>
 
Have you had a chance to use these, yet, Shadow?

The changes to Strength for encumbrance aren't having any effect. I can see in the fields window that the strength is set to the proper score, but the actual weights for the different encumbrance values are all set to 0. There must be some other effect from the Incorporeal subtype that affects those values.

I'm also seeing a problem with the Corporeal Form ability. I can get the ability to modify the strength score based on the final Charisma score (after spells, items, etc., have been applied, but that score isn't being used to do any real calculations. I can see that the Base Melee attack bonus changes, but that isn't applied to any of the weapons, like the slam attacks.
 
Have you had a chance to use these, yet, Shadow?
Use these? No. I have tested them some while building. But I have a few minutes here and there to work on this. So its been very quick tests.

The changes to Strength for encumbrance aren't having any effect. I can see in the fields window that the strength is set to the proper score, but the actual weights for the different encumbrance values are all set to 0. There must be some other effect from the Incorporeal subtype that affects those values.
I am not seeing this. Here is a screen shot with the Ephemeral Echo wearing the amulet. The Encumbrance values appear correct as its 3lbs in gold and I added a dagger and it increased to 4lbs of gear:
Image3.jpg


I'm also seeing a problem with the Corporeal Form ability. I can get the ability to modify the strength score based on the final Charisma score (after spells, items, etc., have been applied, but that score isn't being used to do any real calculations. I can see that the Base Melee attack bonus changes, but that isn't applied to any of the weapons, like the slam attacks.
Again can't duplicate this. I activated Corporeal Form and added Bull Strength spell adjustment. That brings Str to 26 showing +8. Here you can see the Slam attacks and dagger all appear to have the correct values:
Image4.jpg

Shrug attached are the latest files I am working with.
 

Attachments

Last edited:
Back
Top