Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - d20 System
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 6th, 2012, 03:36 PM
I've nearly got shapechanging abilities to work in HL, such that you can select the creature you are shapechanging into and it will appropriately adjust the hero. I've still got alot to do, with all the variations, but I'm pretty close with the basic Alternate Form and Change Shape abilities of most creatures. I've got a few stumbling blocks, calling out to the community for some brainstorming.

First issue, getting the natural attack of the assumed form to appear. Since these are bootstraps, I'm not sure what the best way to do this is. I can pull the name of the natural attack just fine, and I can pull the damage, does this seem like enough to do the job? I wouldn't be able to list it in the attack portion of the hero though, but as an addendum to the shapechanging ability's custom description. Just wonder if anyone has a better idea?

Second issue, getting the movement modes of flying, swimming, climbing, and burrowing moved over. Somehow I've got to check both the natural form and the assumed form for crossover, and be able to tell from that how to proceed. Unfortunately, the way I'm currently experimenting with doesn't seem too ideal, mainly because of the timing of things. I can see if the ability is on both forms, and if so, just pull the tags and possibly the Value field over. The various manipulations needed when one has it, and the other doesn't, requires a bootstrap if I want the actual ability to show up, but doing so means bootstrapping the ability, which then means it does have the movement mode (I'm assuming childlives doesn't care if the Value tag is 0, just looks for the pick). So, my current situation has me just taking the flying livename and adding it as an addendum to the shapechanging ability's custom description. Anyone have a better idea?

When I get these working, and I will, I will post them for those who would like to use them. I've meticulously worked out timing issues in my files pretty well, but can't say for sure that the same timings will work in other files. Chances are, when I do post, and the code doesn't work for you, it will probably just be a timing issue that needs resolved in your files.
Kendall-DM is offline   #1 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old May 6th, 2012, 04:41 PM
Quote:
Originally Posted by Kendall-DM View Post
First issue, getting the natural attack of the assumed form to appear. Since these are bootstraps, I'm not sure what the best way to do this is. I can pull the name of the natural attack just fine, and I can pull the damage, does this seem like enough to do the job? I wouldn't be able to list it in the attack portion of the hero though, but as an addendum to the shapechanging ability's custom description. Just wonder if anyone has a better idea?
What I did for my Wild Shape work was to create a special ability that bootstrapped the natural attack. I then bootstrapped the special to the wild shape and set the damage in an eval script. Don't know if that will help you, but it did show up in the weapons tab for me.
Sendric is offline   #2 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 6th, 2012, 07:41 PM
I'm using a chooser to chose the race. So I would have to know beforehand what attack each race had, which is really anything at that point. So I can't really bootstrap an unknown and then set it. Plus there may be more than one attack. I'm assuming in wild shape the selection is for a specific animal/elemental/whatever, whereas I'm trying to allow selection from anything allowed. Or maybe I didn't understand what you were getting at...
Kendall-DM is offline   #3 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old May 7th, 2012, 05:18 AM
Quote:
Originally Posted by Kendall-DM View Post
I'm using a chooser to chose the race. So I would have to know beforehand what attack each race had, which is really anything at that point. So I can't really bootstrap an unknown and then set it. Plus there may be more than one attack. I'm assuming in wild shape the selection is for a specific animal/elemental/whatever, whereas I'm trying to allow selection from anything allowed. Or maybe I didn't understand what you were getting at...
No, you're right. I am not using a chooser so this method probably wouldn't work for you. Sorry.
Sendric is offline   #4 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 7th, 2012, 12:17 PM
Having a minor problem here, with pushtags and pulltags. Here is the code that is bugging me.

Code:
foreach bootstrap in field[fChosen].chosen where "thingid.xFly"
  perform eachthing.pulltags[Value.?]
  perform hero.child[xFly].pushtags[Value.?]
  perform eachthing.pulltags[Maneuver.?]
  perform hero.child[xFly].pushtags[Maneuver.?]
nexteach
I'm having a problem with the highlighted line. Is this because the eachthing is a "thing" and not a "pick" or a "container"? If so, why does pushtags work fine with it, and not pulltags? Perplexed...

What I'm trying to do is pull the tags from the chosen thing's fly ability, and assign them to the current thing's fly ability. Anyone have a better idea how this could be done?
Kendall-DM is offline   #5 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 7th, 2012, 04:48 PM
Think I've got if figured out. Since the race pick in my chooser isn't running it's scripts and isn't live, the Maneuver and Value tags aren't being assigned at all. Now if I assign those to the Fly pick in the race I'm choosing, shouldn't it still show up as on the pick, even if it isn't live? I mean, other things on the pick do, like the rSTR field, rAC field, and the size tag of the race pick are able to be found, so why can't I find the assigned tags on the xFly pick of the race pick?

Last edited by Kendall-DM; May 7th, 2012 at 05:15 PM.
Kendall-DM is offline   #6 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,213

Old May 7th, 2012, 04:56 PM
This is most likely the same limitation that keeps us from being able to display the fly speed of a race while you're choosing a race - in that case, HL can tell that fly is present, but the tags and fields that are specifically assigned to that particular bootstrap aren't accesible - only the tags and fields that are always present on xFly (those you'd see on xFly's entry on the Special tab).
Mathias is offline   #7 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 7th, 2012, 05:21 PM
Right, on to plan B!

Or plan C if plan B doesn't work!

Luckily, I know plan C will work, it's just not the most ideal solution, but it will work, since I've already tested the idea.
Kendall-DM is offline   #8 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 7th, 2012, 07:52 PM
Well, I got it working. I had to go with the less than ideal solution, which means there are lots of gaps, so you will still need the book to look at the creature form you changed to for certain effects and damages. Again, less than ideal, but it works well enough to get by with. One thing you have to be sure about, to get the extraordinary special attack forms to be moved to the hero in HL, you have to be sure that the Special Ability Type area has a checkmark in the Attack box (located right under the Ability Classification) for each special that is Extraordinary (which also has to be active). Another thing I had to do was to create these on the Feat tab of the Editor, because I wanted to have the ability to select a race.

1. Create a new feat calling it Alternate Form (I didn't give it the fXXX, but the standard xXXX for abilities as the id, called mine xAltForm).
2. In the Custom Expression box type in "component.BaseRace" (without the quotes).
3. Check the Show in Specials box.
4. Add the following scripts.

First/5000
Code:
perform delete[SpecSource.Feat]
First/101
Code:
~ If we haven't chosen anything, get out now.
doneif (field[fChosen].ischosen = 0)

~ Determine new size.
var newsize as number
if (field[fChosen].chosen.tagis[RaceSize.Fine?] <> 0) then
  newsize = -4
elseif (field[fChosen].chosen.tagis[RaceSize.Dimin?] <> 0) then
  newsize = -3
elseif (field[fChosen].chosen.tagis[RaceSize.Tiny?] <> 0) then
  newsize = -2
elseif (field[fChosen].chosen.tagis[RaceSize.Small?] <> 0) then
  newsize = -1
elseif (field[fChosen].chosen.tagis[RaceSize.Medium?] <> 0) then
  newsize = 0
elseif (field[fChosen].chosen.tagis[RaceSize.Large?] <> 0) then
  newsize = 1
elseif (field[fChosen].chosen.tagis[RaceSize.Huge?] <> 0) then
  newsize = 2
elseif (field[fChosen].chosen.tagis[RaceSize.Gargant?] <> 0) then
  newsize = 3
elseif (field[fChosen].chosen.tagis[RaceSize.Colossal?] <> 0) then
  newsize = 4
endif

~ Set all our physical changes.
herofield[tSize].value -= newsize
foreach pick in hero from BaseRace where "thingid.r?"
  each.field[rSTR].value = field[fChosen].chosen.field[rSTR].value
  each.field[rDEX].value = field[fChosen].chosen.field[rDEX].value
  each.field[rCON].value = field[fChosen].chosen.field[rCON].value
  each.field[rAC].value = field[fChosen].chosen.field[rAC].value
  each.field[rSpeed].value = field[fChosen].chosen.field[rSpeed].value
nexteach

~ Change our extraordinary special attacks.
foreach pick in hero from BaseSpec where "((thingid.x? | thingid.r?) & AbilType.Extra & SpecType.Attack) | thingid.xBrthWpn | thingid.xGaze | thingid.xFly | thingid.xBurrow | thingid.xClimb | thingid.xSwim"
  perform each.assign[Helper.SpcDisable]
nexteach

~ List of new extraordinary special attacks.
var counter as number
counter = 0
foreach bootstrap in field[fChosen].chosen where "(thingid.x? | thingid.r?) & AbilType.Extra & SpecType.Attack"
  if (counter <> 0) then
    hero.child[xAltForm].field[CustDesc].text &= ", " & eachthing.field[name].text
  else
    hero.child[xAltForm].field[CustDesc].text = hero.child[xAltForm].field[descript].text & "{br}{vert 7}Extraordinary Special Attacks: " & eachthing.field[name].text
  endif
  counter += 1
nexteach
if (counter <> 0) then
  hero.child[xAltForm].field[CustDesc].text &= "."
endif

~ List our movement modes.
counter = 0
foreach bootstrap in field[fChosen].chosen where "thingid.xBurrow | thingid.xClimb | thingid.xFly | thingid.xSwim"
  if (counter <> 0) then
    hero.child[xAltForm].field[CustDesc].text &= ", " & eachthing.field[name].text
  else
    hero.child[xAltForm].field[CustDesc].text = hero.child[xAltForm].field[CustDesc].text & "{br}{vert 7}Movement Types: " & eachthing.field[name].text
  endif
  counter += 1
nexteach
if (counter <> 0) then
  hero.child[xAltForm].field[CustDesc].text &= "."
endif

~ List our attacks available.
counter = 0
foreach bootstrap in field[fChosen].chosen where "component.BaseNatWep"
  if (counter <> 0) then
    hero.child[xAltForm].field[CustDesc].text &= ", " & eachthing.field[name].text
  else
    hero.child[xAltForm].field[CustDesc].text = hero.child[xAltForm].field[CustDesc].text & "{br}{vert 7}Natural Attacks: " & eachthing.field[name].text
  endif
  counter += 1
nexteach
if (counter <> 0) then
  hero.child[xAltForm].field[CustDesc].text &= "."
endif
5. Do the same routine for the ability Change Shape, but remove the highlighted text from the script. You also need to change the xAltForm id of your ability (whatever that is for you) to the id for your Change Shape (xChgShape for my files).

From this it's not hard to figure out most the other special cases of shapechanging and code them. It's a starting point. I'm going to make improvement on this as well, as at the moment, with the current script, there is no way to deactivate the new form back to the original form, but that should be easy to fix. I just wanted to get it working first before worrying about the easy to fix stuff.

Last edited by Kendall-DM; May 8th, 2012 at 01:44 PM.
Kendall-DM is offline   #9 Reply With Quote
Kendall-DM
Spy
 
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220

Old May 8th, 2012, 07:28 AM
I should explain what this is actually doing. Outside of making the physical changes to the characters ability scores and size, it is listing the Extraordinary Special Abilities, Movement Modes, and Natural Attacks under the Alternate Form (or Change Shape) description. So to see those, you actually have to hover the mouse cursor over the ability to see what these are. Again, not and ideal solution, but the only one I could come up with given the limitations of HL.
Kendall-DM is offline   #10 Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 07:22 AM.


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