PDA

View Full Version : Polymorphism Extension (.ext file) [Fantasy Grounds Unity 5E ruleset]



SilentRuin
August 18th, 2020, 04:08
Polymorphism Extension (Fantasy Grounds Unity)] (https://www.dmsguild.com/product/324556/Polymorphism-Extension-ext-file-Fantasy-Grounds-Unity-5E-ruleset)

This stand-alone extension for Fantasy Grounds allows you to manage polymorphing effects right on your character sheet! Adding new forms you can change into is as simple as dragging and dropping an NPC sheet onto your character sheet and clicking the "Active" button. No additional modules are required —simply add this extension to Fantasy Grounds, and you are set!

NOTE: Things keep changing so read the versions and the .txt files for details - its too long to place on page 1.

This extension unlocks the following functions:


Easily manage polymorph, true polymorph, animals shapes, shapechange, NPC shapechanger, and wild shape all from your character sheet with the click of a button

When activated, a new character sheet is opened automatically with your new shape's features & abilities

The combat tracker updates in real-time with your new form and statistics

Damage is carried back to your true form (as per RAW), and you revert to your true form automatically



Additional perks included in this extension:


Concentration effects are properly coded: casting a polymorphism supported concentration spell ends a previous concentration spell (and ends its effects)

NPC Inventories are customizable when using our Map Parcel extension (https://www.dmsguild.com/product/329296/Map-Parcel?affiliate_rem=1549348)



Updates:

[See .txt file for early updates and features]

V1.6 - Bug fixes for Wild Shape when using circle forms druid level checks and also for elemental wild shape feature allowing fire,air,earth, or water elemental as special non beast wild shape option.

V1.7 - Was not returning true for some of my OnDoubleClick new window creation operations. When clicking on the a polymorphed NPC sheet (Use this sheet) to get to the original sheet it was polymorphed from it would always put the new window behind the one you just double clicked on. Now it will appear in front as it should.

V1.8 - Added ability for PC to get unlimited Shapechanger feature added into it. Simply edit PC's features list and add the word "Shapechanger" then save it. You can then edit the link to have some meaningful description. This will allow PC's to have ability to change into anything though DM will have to regulate it for common sense (some special PC's have abilities to be Shapechanger like their NPC counterparts).

V1.9 - Shapechanger was my super power anything goes polymorph which pretty much acted like an unlimited Shapechange spell more or less. Which is an NPC trait/ PC feature. Unfortunately in my own game I found that NPC shapechanger's should really never use it as they have all the data in the sheet already. Also it currently switches back when 0 HP following the rules like other polymorph things. Which is dead wrong for an NPC trait one. They are dead dead when they are killed in their changed form and switch back to their dead form. To properly apply shapechanger (if ever used) I've changed it to basically preserve the HP data when you change and if you die switch back to original form but still dead. Ideally the only way it should ever be used is if you make a copy of the shapechanger and just change the token and nothing else. Or have a specially crafted NPC that matches the exact stats/abilities/everything and removing the attacks that don't apply to new form (probably easier just to never use it - but as I will - I'm changing it to this). Now I added it to PC's also - but really that was for a shapeshifter which is now a new supported polymorph type that basically behaves like the old shapechanger one. So if you want changed thing to drop dead you use "Shapechanger" and if you want it to do the normal transfer of exceeded HP like a normal polymorph you now use "Shapeshifter". This gives the most flexibility while fixing things that were not correct.

V1.10 - Fixed sharing NPC ability to update the map token so the ownership was set properly. The problem was that if you shared the NPC to a player while it was on the map the map would not have the owner updated so that the player could move it. Now it will work whether on the map or not at time of sharing control to player.

V1.11 - Fixed when polymorphing with an NPC (NPCowner set for NPC controlled by player) was not preserving that NPCowner and the addholder ownership of the record. It would be lost after conversion meaning you no longer could move on map or select active button.

V1.12 - FGU update required extension code to change.

V1.13 - THE most important version change I've made for this extension - ever. Message is now sent to player when they try to hit the Polymorphism Active button telling them when its not their turn that it won't work unless it is. Tired of being burned by this and forgetting myself.

V1.14 - Preserve Combat Group Extension data in combat tracker when switching polymorph states. Only matters if using Combat Group Extension so that it does not lose the group when switching polymorph states.

V1.15 - Bug - Fixed changes made to applyDamage in 5E code that I missed. Also removed some "legal warnings" in my console logs which I felt were spam.

V1.16 - Bug - Fixed effects for different polymorph spells that are applied to be GMONLY visible as it was displaying an icon on token giving away fact that the token was not what it seemed. Always been this way - shocked it was I who first noticed it just now.

V1.17 - Bug - Fixed problem where NPC casting polymorphism spell on themselves caused an error. Also fixed an error when spells/powers or the spellcasting trait for an NPC was missing - now will format and report proper chat message error.

V1.18 - Bug - Fixed a problem where multi class characters were not calculating their CR (for spell rule applications) properly. Fixed. Also added new option to allow automatic concentration clearing before casting a spell to be turned off. This will not effect the stop concentration button or anything that requires concentration to be removed. Turn on this new option when you want to leave the removal of previous concentration spells to the GM. This will allow things like the spell twinning to have a workaround where the GM can turn on this option do more than one polymorph on different targets one at a time - then turn it back off to allow normal behavior. Best I can do for that sort of stuff.

V1.19- FGU update required extension code to change. As long as FGU has bug with exceeded hit points I have to override the 5E\scripts\manager_action_damage.lua:applyDamage code. And when it changes I'm often broken by the changes. This fixes the most recent update changes.

V1.20 - FGU update fixed 5E\scripts\manager_action_damage.lua:applyDamage code so that polymorphism no longer risks instability of overriding that function. WOOT! Less work for me on updates and less RISK for users!

V1.21 - Bug - Non Circle Form PC druids for wild shape were not applying level limits on what they could transform into properly. Fixed. The PC druid wildshape was not applying the limits properly for beasts that could swim (level 4) or fly (level 8). It now checks "speed" attribute for keyword swim or fly to enforce this limitation. Fixed. All NPCs that use wildshape still (as they always have) depend on DM to apply any limits themselves (as there is no druid level data to apply in NPC data set).

V1.22 - Feature - added new option "Validate Wildshape Rules (if off limited by DM)" which will be "on" by default (original behavior). If you turn it off it means any wildshape restrictions will no longer be applied and host can put in any NPC they choose for transformation. Turning it back on will immediately start applying the rules again.

Grim Press overview video from DMsG.

https://www.youtube.com/watch?v=RMeERlioZ0g&feature=emb_logo

Long boring silent technical video showing test runs of this.
https://www.youtube.com/watch?v=a0OAZL2nUbc

Watch the video before you even contemplate buying it.

Grim Press will be handling the sales and promotion of this extension.
If you'd like to engage with us, please feel free to join the Grim Press discord: https://discord.gg/N7MM93a

Extensions = RISK: This note is added to all the extensions I maintain. I want users to understand that extensions are code that is added to or overrides portions of code in the Fantasy Grounds Unity (FGU) application. When the underlying code in FGU changes it can break an extension. When you run with other extensions they can conflict by trying to overwrite the same parts of the FGU code. I will keep my extensions working with FGU changes, and the extensions I use (listed in my FGU signature) as I have direct control over those things. I cannot make the same promise with other extensions. If I am notified of an incompatibility I will attempt to resolve it - but if I cannot I will list what the known extension incompatibilities are. Understand before you get any extensions that it comes with RISK. Not just my extensions - any extension.

Included is original text used for describing this extension - has a lot of details but really provided for reference if needed. This also lists the caveats (things I noticed but cannot solve - notably stop concentration button timing issue not always updating - need to switch from action tab and back to it again to get it to be in proper state (shown/not shown)).

eriktedesco
August 18th, 2020, 09:06
Just to be sure...is this one complementary to one-click druid or a replacement?

Trenloe
August 18th, 2020, 11:37
Moved to the 5E ruleset forum.

Please don't post paid for extensions in the community Armory/Extensions sub-forums - these are for people sharing their community extensions with the community.


RISK WITH ALL EXTENSIONS IN FGU - ITS BETA CODE - THIS CODE IS PROVIDED AS IS - FGU CAN BREAK ME ANYTIME WITH AN UPDATE.
Understood that FGU could break your code, but saying that the code is provided as is, when it costs $12.95 to buy, isn't giving confidence that you're going to provide your customers with support for something they paid for. You're charging people to purchase your work on a commercial website - which I don't have a problem with by-the-way, as long as the products released are treated as paid-for products, with support and maintenance. As this is a paid for product on a commercial site, best effort fixing for something given to the community isn't really appropriate. This is now someone buying a product - which you should support, even if the platform you're building it for is still in testing.

eriktedesco
August 18th, 2020, 12:04
I think SilentRuin, while not stating it directly in DMSGUILD or in the forum, will support and mantain this extension. My question is fairly simple...I have some experience with One-Click druid from DiabloBob and Rob Twohy. How this extension fares compared to their? Is it easier, more flexible, more complete?

SilentRuin
August 18th, 2020, 15:16
Moved to the 5E ruleset forum.

Please don't post paid for extensions in the community Armory/Extensions sub-forums - these are for people sharing their community extensions with the community.


Understood that FGU could break your code, but saying that the code is provided as is, when it costs $12.95 to buy, isn't giving confidence that you're going to provide your customers with support for something they paid for. You're charging people to purchase your work on a commercial website - which I don't have a problem with by-the-way, as long as the products released are treated as paid-for products, with support and maintenance. As this is a paid for product on a commercial site, best effort fixing for something given to the community isn't really appropriate. This is now someone buying a product - which you should support, even if the platform you're building it for is still in testing.

Did not know, thanks for the info. You can leave my community extension I provided for death indicator modifications (which still has issues I'm looking at) but you will probably want to move my other two extensions in my signature out of here also.

I always support what I write, but I will NOT put out false information. What I state is a plain unvarnished warning that every extension - free or for sale - should put out when dealing with a BETA product. Especially, if its an extension which can be broken by any other extension by its very nature (hence, "code is provided as is", with a ton of compatibility data at the bottom in DMsG). So - even if I don't sell a single copy - that warning will stay in all my extensions that I provide for a BETA product - including this one.

If it's not appropriate to post at all in these forums for paid extensions, please let me know and I'll request the 3 I have out there to be removed.

SilentRuin
August 18th, 2020, 15:26
I think SilentRuin, while not stating it directly in DMSGUILD or in the forum, will support and mantain this extension. My question is fairly simple...I have some experience with One-Click druid from DiabloBob and Rob Twohy. How this extension fares compared to their? Is it easier, more flexible, more complete?

True on the support - explained why my description in DMsG will remain as is in my last reply here.

The reason I explicitly state that I can only guarantee it works with the extensions in my signature, is because those are the only extensions I run with. I have no idea what "one click druid" is so can't answer your question.

I completely understand if the price and commentary makes people not want to get this. If you read the DMsG text for this - at the bottom you will see a list of caveats - and a number of programming details which should give an idea to other programmers if it will interfere with their stuff. For sure, I don't want anyone to buy this if they don't think it will run with what they use.

It was 350 hours of many rewrites and complexity and it still has caveats I could not completely get around given what I was trying to do. Plus, its shown me that Death Indicators (a community modified extension I use) has two hard to duplicate issue I'll look into further in the next week or two. Having not written that extension, only modified it, its a learning curve to try and figure out and solve hard to duplicate issues. That's full disclosure on this extension. For sure I have tried to err on too much information in DMsG.

eriktedesco
August 18th, 2020, 15:33
Ok, thanks a lot for the clear explanation. I'm quite curious about this extension, so I will probably buy it and test it out. Maybe not now, but soon.

SilentRuin
August 18th, 2020, 15:56
Ok, thanks a lot for the clear explanation. I'm quite curious about this extension, so I will probably buy it and test it out. Maybe not now, but soon.

Well my big fear is that I and my testers have missed something critical, so there is that also :) For sure last time I put out extensions I tried pay what you want for a few weeks but literally 200 people swooped in and took it for free, another 80 or so paid, with about 80% of those paying almost nothing, all with little to no comments. It's the average price of going out to eat once, and for me? Sometimes I get a really crappy meal, so its a risk. I will support it as you pointed out - but extensions have so much RISK by their very nature I'm not willing to pretend in my description its anything other than that. A risk. Judge by my past extensions if you wish to figure the level of risk.

eriktedesco
August 18th, 2020, 16:09
No problem, SilentRuin. Everyone of you, and by you I mean programmers, are dealing with a program (FGU) that is changing at a fast pace. As such, a lot of twicking is needed for both extensions and modules. So, a bit of risk must be considered when buying an extension or a module.

Trenloe
August 18th, 2020, 16:16
...but you will probably want to move my other two extensions in my signature out of here also.
I've relocated them. Thanks for the heads up.

SilentRuin
August 18th, 2020, 16:17
I've relocated them. Thanks for the heads up.

No worries. You were an inspiration and help in my first extension I ever wrote so you can do no wrong in my eyes :)

Trenloe
August 18th, 2020, 22:09
Moved to the new "Paid Creations" thread. Hopefully it's finally found a home! :)

SilentRuin
August 18th, 2020, 22:21
Moved to the new "Paid Creations" thread. Hopefully it's finally found a home! :)

That's probably a good idea to separate them out like that. Keeps people who want to support just community content not have to guess what is and isn't free.

SilentRuin
August 25th, 2020, 16:23
Ok, thanks a lot for the clear explanation. I'm quite curious about this extension, so I will probably buy it and test it out. Maybe not now, but soon.

Let me know if you do - I've had absolutely 0 feedback from the couple who got it. I suppose that's good in one way - but I'd still like to know it is actually functioning satisfactorily - I mean besides my Monday night players opinions - which are jaded and not to be trusted as they are friends :)

eriktedesco
August 25th, 2020, 17:11
Let me know if you do - I've had absolutely 0 feedback from the couple who got it. I suppose that's good in one way - but I'd still like to know it is actually functioning satisfactorily - I mean besides my Monday night players opinions - which are jaded and not to be trusted as they are friends :)

I'm waiting for the update of some extensions that were broken with the last FGU update. Once my FGU setup will be stable again, I'll buy and try your extension and provide the first feedback and indications. :)

SilentRuin
August 25th, 2020, 17:57
I'm waiting for the update of some extensions that were broken with the last FGU update. Once my FGU setup will be stable again, I'll buy and try your extension and provide the first feedback and indications. :)

I had every one of my extensions but one broken by the last update due to the fact I compressed my zip files via powershell (windows 10). Turns out something in the update made the .ext (zip) files no longer readable and I got a raft of errors at startup. Fortunately, they are all my extensions so I was able to figure it out and fix them all. The thread I used to figure it out has been closed but if that is your issue also with those other extensions - you can unzip them - then rezip them yourself with 7zip or compress files in windows 10 or pretty much anything else but powershell. As only me and a person who used one of my extensions complained about it - I figured it was only me who used powershell to create .ext files. So unlikely its your extensions issues - but just in case it was - that's a workaround.

SilentRuin
August 25th, 2020, 21:31
I'm waiting for the update of some extensions that were broken with the last FGU update. Once my FGU setup will be stable again, I'll buy and try your extension and provide the first feedback and indications. :)

When you do test make sure any comparisons are done with the other extension your comparing against off. I say this as some of the fixes (like when instant death does not generate an exceeded damage message with the damage over "death" to be transferred) I've made would actually be in place for the other extension and it would appear its was "working" if they did not have the fix in it for their own extension. Usually when that happens you can get more damage transferred than you have left if your already damaged in your normal form - so make sure it stops at 1 HP also.

SilentRuin
August 30th, 2020, 15:37
I'm waiting for the update of some extensions that were broken with the last FGU update. Once my FGU setup will be stable again, I'll buy and try your extension and provide the first feedback and indications. :)

Thanks for testing and personal feedback - appreciated it :)

SilentRuin
August 30th, 2020, 16:50
Had my first personal use of all my extensions in my signature in one battle last week so I figured I'd share it as an example:

SPOILER ALERT FOR OLDBONEGRINDER IN CURSE OF STRAHD - CEASE READING AT THIS POINT:

The group I host (that spurred my creation and use of my extensions in signature) was finally entering OldBoneGrinder windmill in Curse of Strahd adventure having just reached level 4. Our "I'm going to charge it" dragonborn paladin entered the windmill first and began exploring - followed by our druid and cleric. They could hear cackles upstairs as the searched the ground floor. They rapidly deduced this was the home of the person who was selling dream pastries in Borovia where they had rescued a child by paying gold for him. Morgantha (a hag) eventually came down the stairs to entice them to come up and have some pastries. Her two daughters had also come down to the top of the stairs, one of whom was visible to the characters down below. Having already detected the presence of evil, the paladin with no preamble, negotiation, or anything immediately challenged them and started the initiative rolls. The rest of the party heaved a mighty sigh, not having had a chance to converse with a seemingly non hostile, and prepared to attack. One of Morgantha's daughters got the top init and began the round. As the three hags were within 30ft of each other they formed a coven which gave them access to a great number of spells they would not normally have access too. One of which, was polymorph. I had set up each of the NPC hags to have a rat and a giant ape for their targets as I was using the polymorphism extension, and was prepared to add more if needed. The first thing Morgantha's daughter did was turn her into a giant killer ape, which the extension accomplished immediately with one click. Her icon on the map immediately switched to the great ape and a sheet appeared for me to use for it. Morgantha's turn was next, and she took two swipes (multiattack) at the paladin in front of her. Both hit, with huge damage, and the paladins map icon switched to have blood on it (the death indicator extension) as he went to 0 HP and was down. I was pretty sure this was going to be a quick and deadly battle. An NPC the characters controlled (with additional help from polymorphism extensions allowing player controlling it to target and use end turn) had the next initiative and rushed into the building to stand at the base of the stairs blocking the way down - he was a bit of a tank. The other daughter went next and attempted to turn the NPC into a rat - the automatic saving throw for the target was successful so it failed. The cleric then fired a spell at the daughter who cast polymorph - and even though it did little damage - the hag failed her automatic concentration save and Morgantha automatically switched back into her original form. What luck I thought. Another NPC controlled by the characters rushed in and grappled (auto success - the generic actions extension) the downed paladin and moved half speed dragging him out of the building (very tight quarters in this windmill door was right next to him). The druid went next and cast a sphere of fire which he was able to move over Morgantha who took damage from it. The stairs also caught on fire along with part of the floor where the sphere started. The cleric then got a turn again and went out and healed the paladin. Morgantha disappeared out of the fire from the players perspective on her turn, she had used her heartstone to go ethereal and exited the building outside. The cleric got another turn and cast silence on the building so the hags could throw no more spells. The druid began moving the sphere (already cast now just concentration) of fire up the stairs and all along the inner first floor of the windmill igniting it all. The other two hags also disappeared and joined their mother on the way outside in the etherreal plane via their heartstones and moved away from the now burning windmill. The players had no idea where they went. The druid exited the building and told the NPC to get out of there also. At this point children's screams could be heard coming from upstairs. The player controlling the NPC at the base of the stairs had him run through the fire taking the damage and running two floors up to where the sounds were coming from - the smoke was getting bad. The other characters meanwhile came up with 3 different plans to rescue them from the upper floor. The cleric and the other NPC ran under a window with a blanket spread out between them to catch anyone dropping the 20ft from a window. The mage had his familiar hawk pull a rope (just barely due to weight as it unwound) to the second floor window. The druid turned into a giant vulture (polymorph extension with one click), the sheet appearing for him to use, and flew up to another window. When the NPC's turn came he pulled the children out of the boxes and opened all the windows to get some of the smoke thinned out (it was still bad). Next turn he passed a child to the vulture and took the rope from the familiar, which had flown in through the window on his turn, to use in getting out with the other child out on his next turn. At this point, about 80 ft away from the burning windmill, the mage still waiting outside noticed the hags reappearing and Morgantha changed back into a gorilla (yes I'm marking the NPC spell slots off at this point). The characters were, to say the least, not happy about this. The gorilla charged - but mysteriously stopped his charge about 30 ft from his daughters, looking anxious to continue but not going further. This was because the polymorph spell was only available to the coven and they could not break it without losing the spell ability causing the concentration loss to revert her back to her original form. The hags moved up during their turn and the characters outside advanced to do battle - while the NPC upstairs used the rope to swing out to one of the windmill blades and down to the ground with the child. The ape continued its charge into the characters but this time missed the paladin with both swings. The other characters all fired at the daughters- and while the one daughter made her concentration save from one attack - she failed on another and Morgantha switched back to her original form (all automatic - no action required by players or DM). The vulture rolled to grapple one of the daughters (generic actions extension) and succeeded. They used half their remaining movement to drag her off. She started clawing and damaging the vulture but could not use any spell requiring S (semantics) while grappled. This DM is merciless in things he considers not possible under certain conditions. 2 players and an NPC surrounded morgantha and began to battle her. The cleric grappled her and held her in place while she raked him with claws - his icon getting blood splatter as he went down to 0 HP. Another NPC went out to engage the other daughter. At this point the coven was broken as the giant vulture had dragged the other daughter more than 30 ft away from the others and they were down to minor spells, a lot of HP, and some pretty serious clawing damage. The mage was doing almost no damage during all this time due to hags magic resistance and was trying to just help the druid with the daughter he had. Eventually with flanking Morgantha started taking serious damage but so were the characters and NPCs. The giant vulture at this point took the hag he had 20 ft into the air (I guessed how much he could go with grapple limits and weight being dragged upward) and released the hag who took the required falling damage. The vulture had close to no HP at this point due to her clawing damage. She in turn fired magic missles up at him basically exceeding the HP of the giant vulture, which with polymorphism extension automatically turned him back into a druid transferring the excess damage to the druid and dropping him the 20ft taking the falling damage for himself now. It was looking close at this point. The druid had one more wild shape so turned into a dire wolf and started mangling the hag (these hags are tough with all their resistances) and the mage tried to help also. At this point some lucky critical hits (nat 20) killed Morgantha. The hag by the wolf plane shifted away and was gone from the encounter. The paladin ran over to the other daughter and grappled her. She could not plane shift out as that had a S (semantics) component and this DM is not going to let that happen while you're grappled. Voice only spell or material - sure. Semantics? Not happening. At this point she could not plane shift out. The others surrounded her and started doing serious flanking damage. She managed to break the grapple (generic extensions) and took off running (that's an action she could only do movement) in order to get distance and plane shift out next turn. The paladin followed and successfully grappled again preventing that. Long story short they all eventually killed her and were pretty much all beat down to almost no HP. Except the mage who had a cloak of protection (testing my last extension Equipped Effects).


Anyway, the whole battle took about 3 hours (with breaks) as those hags really were tough. Hope that gives an example of how these things are used. We had a blast :) Oh and strahd made a brief appearance to give them a polite golf clap having seen the flaming windmill and wanting to see what happened - then (using polymorph extension) turned into mist and left them.

Conspiracy
August 30th, 2020, 23:35
Having a play with Polymorphism (https://www.dmsguild.com/product/324556/Polymorphism-Extension-ext-file-Fantasy-Grounds-Unity-5E-ruleset) extension and noticed that if I use rob2e's coding for spells it won't enable the spell or power in effect.

Polymorph (60) (C) = instead of Polymorph

SilentRuin
August 30th, 2020, 23:49
Having a play with Polymorphism (https://www.dmsguild.com/product/324556/Polymorphism-Extension-ext-file-Fantasy-Grounds-Unity-5E-ruleset) extension and noticed that if I use rob2e's coding for spells it won't enable the spell or power in effect.

Polymorph (60) (C) = instead of Polymorph

As specifically described in DMsG text description of the extension - it expects the spell or power as normally defined in FGU to be defined in order to enable the pull down in polymorphism. It must find that exact keyword in there. Nor will it work with that spell once enabled - only the polymorphism subwindow functions will do that. That’s why I specifically mentioned it and showed it in video.

No idea what the extension your talking about is, but it’s not polymorphism and if not adding the expected keyword in spell power area of actions tab as described in text and shown in video it obviously will not do anything with my stuff.

That’s all guessing based on your short explanation as I’ve only used and verified this extension under the ones in my signature. And while I’ve seen someone say it worked with other extensions - which is great and I’m happy for them - you will never hear me claim it does unless I personally run with it.

Pretty sure other extension developers will tell you same thing about their extensions and unknown (like mine) running with there stuff.

Conspiracy
August 31st, 2020, 00:50
Sorry it's not an extension, it's a module. The Polymorph (60) (C) = spell lets you know the range is 60 feet and it is a concentration spell, = means it works with Kent McCullough's extensions, without the need to open the spell up.

SilentRuin
August 31st, 2020, 02:07
Sorry it's not an extension, it's a module. The Polymorph (60) (C) = spell lets you know the range is 60 feet and it is a concentration spell, = means it works with Kent McCullough's extensions, without the need to open the spell up.

Then it’s a completely separate thing which will not effect my stuff one way or the other and neither will my stuff effect it. Just like the normal polymorph spell execution will not effect my stuff nor I it.

You choose to use the one you want but don’t expect any of them to have knowledge of the other as they are not aware of each others existence.

Conspiracy
August 31st, 2020, 03:01
That's no problem at all.
If it's ok with you can I modify the extension for my own use?
It's a brilliant extension. Thanks for spending the time to make it.

SilentRuin
August 31st, 2020, 03:36
That's no problem at all.
If it's ok with you can I modify the extension for my own use?
It's a brilliant extension. Thanks for spending the time to make it.

Per the license I stuck in all the code modifying it for yourself is absolutely ok :)

shezingzh
September 1st, 2020, 16:58
Is there anything I can do to get the Polymorphism to show up on the PC sheet. From all the forum chat this extension is supposed to be currently functioning. I do have one click druid and one click more installed which is mainly a mod with some extensions to work with druid wild shape.

I have uninstalled and reinstalled. I have watched your video and still the PC sheet shows nothing.

SilentRuin
September 1st, 2020, 17:11
Is there anything I can do to get the Polymorphism to show up on the PC sheet. From all the forum chat this extension is supposed to be currently functioning. I do have one click druid and one click more installed which is mainly a mod with some extensions to work with druid wild shape.

I have uninstalled and reinstalled. I have watched your video and still the PC sheet shows nothing.


But, if you read the text in DMsG and watched the video - you should realize that a character sheet will show nothing unless its in combat tracker.

shezingzh
September 3rd, 2020, 11:42
Recently downloaded the Polymorphism from SilentRuin and found out how powerful it was tested it out with over 50 mods and 18 extensions including one click druid and one click more. I was more than ecstatic having been given a personal walk through of how the extension worked and what was required to set it up. My players who play a changeling were stunned at how easy it was to turn themselves into other people. Using Polymorphism and one click Druid and One click more made it doubly easier for my Players to do disguises and transform on the fly.

Polymorphism was incredible and all of my players mainly the changelings and the warlocks were more than happy with the results.

SilentRuin
September 3rd, 2020, 17:58
Recently downloaded the Polymorphism from SilentRuin and found out how powerful it was tested it out with over 50 mods and 18 extensions including one click druid and one click more. I was more than ecstatic having been given a personal walk through of how the extension worked and what was required to set it up. My players who play a changeling were stunned at how easy it was to turn themselves into other people. Using Polymorphism and one click Druid and One click more made it doubly easier for my Players to do disguises and transform on the fly.

Polymorphism was incredible and all of my players mainly the changelings and the warlocks were more than happy with the results.

Sounds like you got inventive with the feature/spells to support some homebrew sort of things. Which is fine as this is pretty flexible. Also, happy to see its not damaging any other extensions (as far as you can tell). I tried to leave a minimal footprint where I "could" achieve it. But for obvious reasons - I will never claim it works with anything but what I run with - still glad to hear it currently is working without hurting other things.

I figure I'll put out the section of code that decides how my stuff actually decides if I display a supported feature/spell as that had a direct impact on what you were trying to do. Here is the code - for those who care - that decides for NPC and PC where I determine if I show up on the sheet with my polymorphism and what shows up in it...



-- Determine if PC or NPC sheet support polymorph spells/powers that would require sub_polymorphism to be displayed for casting.
if bNPC then
-- NPC's have things in actions, traits, or spells DB entries
for _,nodeAction in pairs(DB.getChildren(node, "actions")) do
local sName = DB.getValue(nodeAction, "name", "");
if sName == Interface.getString("polymorph_filter_Wild_Shape") then
bDisplay = true;
-- filter has this.
if not window.polymorphism_filter.hasValue(sName) then
window.polymorphism_filter.add(sName);
end
if sFilter == sName then
bFoundFilter = true;
end
end
end
for _,nodeTrait in pairs(DB.getChildren(node, "traits")) do
local sName = DB.getValue(nodeTrait, "name", "");
if sName == Interface.getString("polymorph_filter_Shapechanger") then
bDisplay = true;
-- filter has this.
if not window.polymorphism_filter.hasValue(sName) then
window.polymorphism_filter.add(sName);
end
if sFilter == sName then
bFoundFilter = true;
end
end
end
for _,nodeSpell in pairs(DB.getChildren(node, "spells")) do
local sFoundName = nil;
local sName = DB.getValue(nodeSpell, "name", "");
-- dropping spells in NPC's include the level so we have to specifically check the text.
local nStartOf, nnEndOf, sFound = sName:find(Interface.getString("polymorph_filter_TruePolymorphSpell"));
if nStartOf == 1 then
sFoundName = Interface.getString("polymorph_filter_TruePolymorphSpell");
else
nStartOf, nnEndOf, sFound = sName:find(Interface.getString("polymorph_filter_PolymorphSpell"));
if nStartOf == 1 then
sFoundName = Interface.getString("polymorph_filter_PolymorphSpell");
else
nStartOf, nnEndOf, sFound = sName:find(Interface.getString("polymorph_filter_AnimalShapesSpell"));
if nStartOf == 1 then
sFoundName = Interface.getString("polymorph_filter_AnimalShapesSpell");
else
nStartOf, nnEndOf, sFound = sName:find(Interface.getString("polymorph_filter_ShapechangeSpell"));
if nStartOf == 1 then
sFoundName = Interface.getString("polymorph_filter_ShapechangeSpell");
end
end
end
end
if sFoundName then
bDisplay = true;
-- filter has this.
if not window.polymorphism_filter.hasValue(sFoundName) then
window.polymorphism_filter.add(sFoundName);
end
if sFilter == sFoundName then
bFoundFilter = true;
end
end
end
else
-- PC's have things in traits or powers DB entries
bDisplay = CharManager.hasFeature(node, Interface.getString("polymorph_filter_Wild_Shape"));
if bDisplay then
-- filter has this.
window.polymorphism_filter.add(Interface.getString ("polymorph_filter_Wild_Shape"));
if sFilter == Interface.getString("polymorph_filter_Wild_Shape") then
bFoundFilter = true;
end
end
for _,nodePower in pairs(DB.getChildren(node, "powers")) do
local sName = DB.getValue(nodePower, "name", "");
if sName == Interface.getString("polymorph_filter_PolymorphSpell") or
sName == Interface.getString("polymorph_filter_TruePolymorphSpell") or
sName == Interface.getString("polymorph_filter_AnimalShapesSpell") or
sName == Interface.getString("polymorph_filter_ShapechangeSpell")
then
bDisplay = true;
-- filter has this.
if not window.polymorphism_filter.hasValue(sName) then
window.polymorphism_filter.add(sName);
end
if sFilter == sName then
bFoundFilter = true;
end
end
end
end



If you don't understand it don't worry about it - but it shows exactly what would need to be in a PC or NPC db.xml definition in order for me to come alive on the sheet. In user terms - that is what feature/spell/trait needs to be dropped into your PC abilities or actions page and into your NPC main page. You can watch video to try and grok that :)

vaughnlannister
September 3rd, 2020, 23:15
Hi, here are a few images that demonstrate what I'm seeing.
When using it with MadNomads Character Tweaks.

The polymorph change, is only visible in Inventory tab, instead it should be present in the action tab to activate?

I tried to DM you but.. couldn't figure out how to add images so I posted it to your thread instead.

SilentRuin
September 3rd, 2020, 23:34
Hi, here are a few images that demonstrate what I'm seeing.
When using it with MadNomads Character Tweaks.

The polymorph change, is only visible in Inventory tab, instead it should be present in the action tab to activate?

I tried to DM you but.. couldn't figure out how to add images so I posted it to your thread instead.

As I wrote in DMsG the low level code that I had to use I overwrite (even the original version of it) only uses indexes to reference the tabs. There is nothing else the way they've implemented it. In fact if you look at any code manipulating tabs (say char_wizard) you'd see they all do it via indexes. For 5E you can see that when the tabs are defined they are stored purely by index - not name. You can reference the code behind the tab by name - but not the tab itself. That is index based.

Currently in 5E that is mapped out per comment in my code as follows for the PC and NPC sheets...



-- window.parentcontrol.window.tabs.getIndex()
-- charsheet
-- 0 - none
-- 1 - main
-- 2 - skills
-- 3 - abilities
-- 4 - inventory
-- 5 - notes
-- 6 - logs
-- 7 - actions
-- npc
-- 0 - none
-- 1 - main_creature
-- 2 - text


If someone has messed with that core order by changing that order rather than modifying the code the tab points to - or adding a new tab at the end (new index higher than 7) - then for sure my stuff would be displaying what your seeing.

There is no Index to name map - that is something that does not currently exist in tab controls to my knowledge (could be wrong) - I'd have to write it myself. It would have to be a map of what the original numbers were verses the name of the class window code behind the tab (which is not actually the tab - just what it points too).

I'm going to have to think on this as there is limited code that deals with the tabs themselves but mine is one of them. I think the new char_wizard is another - though it is its own tabs in that case. I did not consider that the 5E default tabs would actually be changed by someone (inserting things in between things rather than adding them to end) based on how the low level code is set up to function (not mine - well it is now as I had to add more intelligence to it for my stuff to work).

Gist being - yeah - mess with the low level tab indexing for 5E and my extension is not going to display properly as the wrong tabs are going to be extended/contracted and have the char_polymorphism sub window added in.

Only solution I can think of is I'd have to literally somehow determine the window name to tab index and make a map that I could use (if one does not already exist that I'm unaware of). I'll think on it though. Test my theory - turn off the extension messing with tab ordering in 5E and let me know if my stuff then appears correctly.

SilentRuin
September 3rd, 2020, 23:52
As I wrote in DMsG the low level code that I had to use I overwrite (even the original version of it) only uses indexes to reference the tabs. There is nothing else the way they've implemented it. In fact if you look at any code manipulating tabs (say char_wizard) you'd see they all do it via indexes. For 5E you can see that when the tabs are defined they are stored purely by index - not name. You can reference the code behind the tab by name - but not the tab itself. That is index based.

Currently in 5E that is mapped out per comment in my code as follows for the PC and NPC sheets...



-- window.parentcontrol.window.tabs.getIndex()
-- charsheet
-- 0 - none
-- 1 - main
-- 2 - skills
-- 3 - abilities
-- 4 - inventory
-- 5 - notes
-- 6 - logs
-- 7 - actions
-- npc
-- 0 - none
-- 1 - main_creature
-- 2 - text


If someone has messed with that core order by changing that order rather than modifying the code the tab points to - or adding a new tab at the end (new index higher than 7) - then for sure my stuff would be displaying what your seeing.

There is no Index to name map - that is something that does not currently exist in tab controls to my knowledge (could be wrong) - I'd have to write it myself. It would have to be a map of what the original numbers were verses the name of the class window code behind the tab (which is not actually the tab - just what it points too).

I'm going to have to think on this as there is limited code that deals with the tabs themselves but mine is one of them. I think the new char_wizard is another - though it is its own tabs in that case. I did not consider that the 5E default tabs would actually be changed by someone (inserting things in between things rather than adding them to end) based on how the low level code is set up to function (not mine - well it is now as I had to add more intelligence to it for my stuff to work).

Gist being - yeah - mess with the low level tab indexing for 5E and my extension is not going to display properly as the wrong tabs are going to be extended/contracted and have the char_polymorphism sub window added in.

Only solution I can think of is I'd have to literally somehow determine the window name to tab index and make a map that I could use (if one does not already exist that I'm unaware of). I'll think on it though. Test my theory - turn off the extension messing with tab ordering in 5E and let me know if my stuff then appears correctly.

Just checked buttongroup_tabs.lua again - there is no name access. The name can be derived from it as it does have it - it just does not present any way to do it outside of the indexing. I can use the getTab(index) to pull out a name but man... this is why I stopped working on this thing after 350 hours and put in a caveats section. This is just one more of many specialized changes I need to do to get things to work generically when unexpected things happen.

I'll play with it tonight and tomorrow. If you see a new version pop up that means I decided to once again shoulder the responsibility in my expansion. If not - it means "caveat" time as it was more trouble than it was worth and unexpected stuff cropped up preventing it from happening in my end.

SilentRuin
September 4th, 2020, 00:47
Just checked buttongroup_tabs.lua again - there is no name access. The name can be derived from it as it does have it - it just does not present any way to do it outside of the indexing. I can use the getTab(index) to pull out a name but man... this is why I stopped working on this thing after 350 hours and put in a caveats section. This is just one more of many specialized changes I need to do to get things to work generically when unexpected things happen.

I'll play with it tonight and tomorrow. If you see a new version pop up that means I decided to once again shoulder the responsibility in my expansion. If not - it means "caveat" time as it was more trouble than it was worth and unexpected stuff cropped up preventing it from happening in my end.

I'm just now noticing in your pictures and they are really confusing me. As I pointed out - the index to name order in 5E are what I expect. I do checks against the index I'm given by the tabs low level code - and also do direct windows manipulation by the class name of that window in 5E. If your picture is correct - not only have the indexes changed (as in inventory is now index 7 instead of actions) the names of the classes have changed in some cases?

For absolute sure if a window class name I'm accessing in 5E is now "gone" then bad things will happen when I try to access them. I'm still pretty confused how this is even working in inventory as in order to make space for my sub_window I have to push down the named window to make space.



-- PC sheet has seven tabs we need to push down to make room for sub_polymorphism (we won't try and display on tabs that aren't known to us)
window.parentcontrol.window.main.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.skills.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.abilities.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.inventory.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.notes.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.logs.setAnchor("top", "name", "bottom", "relative", 128);
window.parentcontrol.window.actions.setAnchor("top", "name", "bottom", "relative", 128);


Yet if those names have changed then bad things can happen. The only reason you're even seeing the things work in inventory is because it's name has not changed and I happen to prepare all 7 tabs for my sub window (as it will put it in all of them when polymorphism is in effect). Point being - nobody really has to understand that - but the fact I reference 5E window class names mean I expect to find them - not have them "removed" or "renamed". You access a null window and things can explode. Gist being - your working by pure luck that inventory is index 7 and its name has not changed. I admit I am surprised I did not get console errors if some of the windows are missing from the charsheet that I expect to be there.

Gist being - I'm not sure if I create a brand new set of mapping logic to try and figure out what name goes with what index for my checks - this will not "fix" the fact that windows I expect in 5E are now missing.

We'll have to talk about it tomorrow as I'm now not sure this can be "fixed" short of now going back in and trying to verify that windows I expect to be in 5E - that are part of 5E - are actually still there. Seems this could be "pandora's box" to try to fix this for you - and while I'm not against trying if it turns out not be something I'd rather not open up - I no longer am confident there is not more going on here than appears.

This expansion is for FGU and 5E. If the windows of 5E begin to change out from under me - I no longer know if I can support something that does that. Maybe I can - but not so sure now. Will wait to talk to you about it tomorrow after I see your test when you turn the other extension off.

vaughnlannister
September 4th, 2020, 00:51
Hi, Thanks! SilentRuin, here is a link to MadNomad's discord, I would post this comment there.. he could maybe give you some pointers, where to look?

Look for #MadNomad in the channels (if you want of course) :https://discord.gg/ufVUFZ

SilentRuin
September 4th, 2020, 01:12
Hi, Thanks! SilentRuin, here is a link to MadNomad's discord, I would post this comment there.. he could maybe give you some pointers, where to look?

Look for #MadNomad in the channels (if you want of course) :https://discord.gg/ufVUFZ

Pretty sure he's just changing things at a much higher level in the code for pure display purposes. The issue for me is I'm doing a lot of very low level things to be able to work the magic I have going on and have made assumptions that the tab class window index and names are going to be out there. Your picture clearly shows me this assumption is only true as long as nobody rewrites the tabs for their own purposes. The trick for me is how will I generically (not just for this guy) handle making my window appear in actions tab (which has changed here) and also appear in all the standard 5E windows when polymorph is in effect (which also changed here).

The only generic solution I can think of (not getting into game of compensating for every extension out there) is to verify that every named window call I make that I verify it exist first - if not then I simply don't use it. This will mean that when I try to display the polymorph status in every tab (default 5E) that it will not be doing some of them now. Which is fine I suppose.

The other generic solution will be that I need to find the few tab index checks I make to determine display (this is all that low level code will pass me) now actually calls getTab on the index to verify that the name expected (actions for PC and main_creature for NPC sheets) is there or basically error and declare it incompatible as I 100% have to have those tabs. Also have to have main (PC) or it will 100% not work. Change any names for those and it will not work period.

I'll try to do this but I give no promises it will fully fix your issue. That's about as far as I'm willing to bend over to accommodate this sort of thing. Should that be enough to fix your issue? Maybe. No promises. And as I said if doing this opens pandora's box - then it may be a listed caveat that it simply does not work with that extension.

SilentRuin
September 4th, 2020, 01:59
Hi, Thanks! SilentRuin,...

Did what I could. V 1.3 is out there. It will work or it won't. All I'm sure is that it does not effect me with the changes I made.

Let me know what happens.

It's working off the tab sub window name not the display name (thus I don't care if you change main or actions or main_creature display to user name as long as you leave sub window class name alone).

vaughnlannister
September 4th, 2020, 09:19
Hi you did it :) !!! Amazing!! Really appreciate your help, I will give you a good review on dmsguild, where I include all the extension that it is compatible with!
whatever you did also solved a conflict between, One-Click-Druid applying disguises on PCs.

Again thanks again man!!!

eriktedesco
September 4th, 2020, 09:39
You are pretty much a coding beast, SilentRuin 👍

vaughnlannister
September 4th, 2020, 11:42
Hi SilentRuin, I don't know why, but the Token that I see in the "Action Tab", does not match the token I see on the NPC, which matches to the token on the battle map.
It's not a big issue, but wondering if that might be something you would like to improve in the future.

Again many thanks for all your help, can't wait to use your extension in tomorrow's game!

vaughnlannister
September 4th, 2020, 14:05
Hi, I have another question, from reading DMSguild, description I got the idea that Polymorphing NPCs would be possible, but I haven't gotten it to work? Could you confirm if this is possible and help me where I can find out how to apply it to my NPC?

I have a druid NPC from Lost mine of Phandelver (Ruins of Thundertree), would like to give the Wildshape to his squirrel form if possible.

Many Thanks!!

SilentRuin
September 4th, 2020, 14:50
Hi SilentRuin, I don't know why, but the Token that I see in the "Action Tab", does not match the token I see on the NPC, which matches to the token on the battle map.
It's not a big issue, but wondering if that might be something you would like to improve in the future.

Again many thanks for all your help, can't wait to use your extension in tomorrow's game!

Per DMsG text and video - I inform you that tokens are taken from the source you use - what you originally drop into the field. This can be a reference.* from some read only module - in which case your stuck with what you get - or from npc.* from some custom NPC which is then what you have defined in token. You can for sure get it confused, but it has absolutely zero to do with my code. I use what you initially drop into the token field - and that will be grabbing the token out of that thing (and I've seen tokens not defined in FGU). Just because you have some token defined in combat tracker - or later define one in your source - its when you drop it in there that matters as that is stored in PC/NPC sheet. And if you use death indicator its always going to default to letter if it can't find a token - but that is a whole other thing.

SilentRuin
September 4th, 2020, 14:55
Hi, I have another question, from reading DMSguild, description I got the idea that Polymorphing NPCs would be possible, but I haven't gotten it to work? Could you confirm if this is possible and help me where I can find out how to apply it to my NPC?

I have a druid NPC from Lost mine of Phandelver (Ruins of Thundertree), would like to give the Wildshape to his squirrel form if possible.

Many Thanks!!

It's absolutely done by everyone including me that has told me they used this. You even showed me a picture of an NPC with the char_polymorphism window up in an NPC. I even show you in the video a subgroup of custom NPC's called polytester (one of which is even a chair demonstrating the special object/item types for true polymorph). I specifically state in this thread right before your comments what the rules are to get things to show in PC and NPC sheets. I even have the text describing it in detail. Even the video has a PugUgly custom NPC where I drop every thing I support into it - including wild shape. At the risk of repeating myself in this very thread - look up a few posts to see where I describe what has to be an NPC to play.

vaughnlannister
September 4th, 2020, 15:00
Amazing thanks :) I'm so glad that its possible, yes but that NPC sheet was linked to a PC that's why it had the polymorph in there. Just wanted to be sure, that it was even possible no point in trying to make it work otherwise.

SilentRuin
September 4th, 2020, 15:07
Amazing thanks :) I'm so glad that its possible, yes but that NPC sheet was linked to a PC that's why it had the polymorph in there. Just wanted to be sure, that it was even possible no point in trying to make it work otherwise.

NPC was linked to a PC? That's not even possible FYI. I only support polymorphing things that are NPC's. In other words, if you want to have an NPC turn into a PC - you'd have to create that PC as a custom NPC. I was pretty sure it would not even accept a PC or would not actually convert it if it did.

vaughnlannister
September 4th, 2020, 15:15
By linking I meant that in the Action Tab of the PC, I added the NPC in which the PC could polymorph into.

I got it working for my NPC druid :)

I added the trait: Shapechanger --> added him to CT --> voila magic :D!!

SilentRuin
September 4th, 2020, 15:18
By linking I meant that in the Action Tab of the PC, I added the NPC in which the PC could polymorph into.

I got it working for my NPC druid :)

I added the trait: Shapechanger --> added him to CT --> voila magic :D!!

Yep - part of the horror of writing this was that PC and NPC are pretty much completely different on how they store things in db.xml. The code I actually use to drag these things out is what I was referencing earlier in this thread - looks like you found it. Wild Shape in a PC would need to be a feature - go figure.

Actually ShapeChanger is wide open and is NOT going to follow the rules of Wild Shape. I thought you wanted to use Wild Shape in the NPC? Dropping Wild Shape link into the main page of the NPC drops it where I indicated in thread earlier in my code. Shapechanger has no rules or conversions and will NOT be what you want for a druid - as they have all sorts of rules and conversions on that NPC sheet they turn into.

vaughnlannister
September 4th, 2020, 15:21
Yes they did not make it very easy for you to implement wildshape, but how you managed to do it in your extension is very elegant :) !

SilentRuin
September 4th, 2020, 15:26
Yes they did not make it very easy for you to implement wildshape, but how you managed to do it in your extension is very elegant :) !

You got my last message edit right? Shapechanger is not what you want for a druid. You want to drop in Wild Shape so all the NPC conversion rules for a druid get applied. Shapechanger has no rules because creatures with it have all sorts of their own rules - I don't even use it in my campaign when it shows as an option as most sheets already have everything you need - and when I do use it I end up making a hardcoded custom NPC for it because its sheet conversion rules are usually unique (think Curse of Strahd vampire polymorph rules and making custom NPC specifically for him).

The whole point of this extension is that it is a royal pain to handle all the rules involving the sheet data you actually apply - but you only get the benefit of polymorphism handling all that for you if you use something that does that. Shapechanger leaves all that up to you - wild shape and other spells will do all that complexity for you.

vaughnlannister
September 4th, 2020, 15:36
Hi, sorry I don't understand how I can drop in Wild Shape to an NPC sheet.
I am not so familiar how to customise NPCs. I tried adding Wild Shape to traits.
Or drag and drop it from a druid PCs Abilities Tab onto the NPC, traits or spells, but it doesn't parse them.

Do you know how I could add wildshape to an NPC?
Thanks again!

SilentRuin
September 4th, 2020, 15:44
Hi, sorry I don't understand how I can drop in Wild Shape to an NPC sheet.
I am not so familiar how to customise NPCs. I tried adding Wild Shape to traits.
Or drag and drop it from a druid PCs Abilities Tab onto the NPC, traits or spells, but it doesn't parse them.

Do you know how I could add wildshape to an NPC?
Thanks again!
?

Its no different than any other custom NPC you create in pure FGU.

Create your custom NPC druid (ie. not some read only version from a module - your own copy of it as you want to write new stuff into it). I usually drop it in some group I've created so I know where it is but you can use uncategorized if you like or whatever NPC group you want. You then open that up (unlock it) and go to classes -> Druid and grab the Wild shape link - and drag it over and drop it on NPC sheet. I think it gets added to actions. Re-lock the custom NPC sheet. Poof done. Same for any spells (only you'd drag the links out of SPELLS). I basically created PugUgly in video where I dropped everything I support into it. Shapechanger just requires you to have that exact text present as a trait - as you know - but will do nothing in terms of rule applications because it has none.

SilentRuin
September 4th, 2020, 15:54
Also, I feel it necessary to restate I will never publicly "certify" that ANY extension I don't use (in my signature) works with my stuff. As I've said plenty of other places, even if you say it "works" - I will not - as I don't run with it. As you saw if you give me details and I can think of something I can do "generically" to handle some issue then I "might" do it. But rule of thumb for all my extensions - I will NEVER admit it works with anything I don't use :)

Nature of extensions.

vaughnlannister
September 4th, 2020, 15:56
Hi Silentruin, thank you so much for explaining that to me, I was able to parse the wild-shape into actions of my druid NPC :D !

It's working now, I'm getting the Wildshape option available!

SilentRuin
September 4th, 2020, 16:03
Hi Silentruin, thank you so much for explaining that to me, I was able to parse the wild-shape into actions of my druid NPC :D !

Just a caveat on that - it is treated slightly differently than a PC (which respects features like circle forms etc. which don't exist for an NPC). While a PC will limit what CR and druid level based on rules for wild shape - an NPC wild shape will leave it up to DM to limit (be reasonable) because NPC does not have a "druid level" but instead is a CR rating type of thing. You'll have to experiment - but just realize there was no way to apply some of those rules to an NPC for limiting what you can turn into - that is left to DM in this case.

vaughnlannister
September 4th, 2020, 16:14
Gotcha, yes I noticed indeed that I wasn't able to add all the wildshapes to my PC Druid at lvl2. I thought wow, this really thorough coding you did, to have those rules incorporated!!

Would be great if one day in FGs.. the features present on NPCs could also be implemented on PCs sheet. Creating a hybrid character sheet with both features.
Then you could more easily lvl up NPCs, also perhaps have a tool to determine NPCs CR rating based on its lvl.

But yes I fully understand that there are limitation to what FGs allows you to do!

Thanks for explaining!

shezingzh
September 4th, 2020, 19:48
I use polymorphism and the once click druid and one click more separately. They are 2 separate codes, they were not mean to function together. Thats why I use them separately. One is a programmed extension of the actual programming code the other is a top layer program that any player can modify on the fly.

Simply put Polymorphism is the cake, one click druid and one click more is the icing. There is no comparison. Both programs do exactly what they are meant to do. They were not built to function together. My players have an easier time using both separately as Polymorphism doesnt do Disguises, you can code in a disguise for One click druid on the fly.

SilentRuin, you are correct as far as I know there is no conflict with the 53 mods and 18 extensions I have installed. The log file shows no errors and conflicts as FG loads up. Even with this last update I have not seen any errors and I run 3 campaigns. Only 3 players play characters that require wildshape, shape change, and polymorph. They have not ran into any problems as of yet. That includes the Smiteworks update 9/03/2020.

I will let you know if I see any errors in the compiled log or from any of my 18 players.

vaughnlannister
September 6th, 2020, 14:46
Although its not a major issue One-Click Druid disguise does not work if your PCs has Wild shape --> Polymorph Window added to action tab.

Will you perhaps add a disguise feature to your extension or maybe.. try to find out if it could be easily resolved with One-Click-Druid disguises?

But yeah.. like you said on dmsguild its just a token-swap.. so not really a big issue. I just use them when I move my players from a 2D map to an isometric map. To give them an isometric token.

SilentRuin
September 6th, 2020, 15:32
Although its not a major issue One-Click Druid disguise does not work if your PCs has Wild shape --> Polymorph Window added to action tab.

Will you perhaps add a disguise feature to your extension or maybe.. try to find out if it could be easily resolved with One-Click-Druid disguises?

But yeah.. like you said on dmsguild its just a token-swap.. so not really a big issue. I just use them when I move my players from a 2D map to an isometric map. To give them an isometric token.

No idea why that would be - maybe talk to others in here who say they use it separately. But as I've said elsewhere and to others, disguise, dopplegangers (some types of shapechanger), etc. are beneath my dignity to write code just to switch out a token. You can do that yourself, I'm not creating a paying extension to do that for you. Or adding it to this one. Per DMsG text and posts in here.

vaughnlannister
September 6th, 2020, 15:54
Ok np, just thought that it could be something small that was causing it, so in your terms might be an easy fix.
But yes I don't know how it could interfere, maybe I'll ask diablobob creator of one-click druid, if he has an idea where the issue could be.
And your not using One-Click so can't run a debug on it, so its a little difficult, but I could run it. Cause I own both?

Do you have any advice on how I could tackle this, I have little coding experience though.

SilentRuin
September 6th, 2020, 22:53
Ok np, just thought that it could be something small that was causing it, so in your terms might be an easy fix.
But yes I don't know how it could interfere, maybe I'll ask diablobob creator of one-click druid, if he has an idea where the issue could be.
And your not using One-Click so can't run a debug on it, so its a little difficult, but I could run it. Cause I own both?

Do you have any advice on how I could tackle this, I have little coding experience though.

Don't know how to "tackle" it as I don't really know what it is. But several posters in here seem to be familiar and use both separately. You can ask shezingzh above what he does. I really don't know anything about it. Personally when I do a disguise or take off disguise I'm just swapping tokens in CT entry. Nothing fancy - simple. Hence why I don't bother with it in code.

vaughnlannister
September 7th, 2020, 12:36
True, true I will just have to live with it, or start to learn how to code in lua :p.
But indeed a token swap is not that big of a deal. I just thought it was neat that the players could switch it themselves.
I could send them their tokens and if they would put it in their token folder, they would be able to do that by themselves?
Could they switch their token on the CT or at least in their portrait, mmhm but yeah I guess it would be less of a hustle in all if I'd just do it straightway.

shezingzh
September 14th, 2020, 17:16
lol, I know this for a fact, as I have tested your polymorph clean with no other extensions or mods installed. I do this on my test machine. I then add the other extensions and mods one by one. I then do it all again when they update their mod or extension. Here is a prime example: Last night, I discovered an issue with one click an one click more by diablobob, not more than a few days his mod was working fine as I actually and thoroughly tested it out after he fixed something. I then posted to all 15 of my players that it was working, then last night on 9/13/2020 his program ceased to function at 100%. I went into rob2es discord and posted, diablobob contacted me and he logged into my game an tested it out himself and found it was broke.

So today 9/14/2020 I am going to remove all the mods and extensions and reload them one by one to see if there are any script errors or other issues.

SilentRuin
September 14th, 2020, 20:06
lol, I know this for a fact, as I have tested your polymorph clean with no other extensions or mods installed. I do this on my test machine. I then add the other extensions and mods one by one. I then do it all again when they update their mod or extension. Here is a prime example: Last night, I discovered an issue with one click an one click more by diablobob, not more than a few days his mod was working fine as I actually and thoroughly tested it out after he fixed something. I then posted to all 15 of my players that it was working, then last night on 9/13/2020 his program ceased to function at 100%. I went into rob2es discord and posted, diablobob contacted me and he logged into my game an tested it out himself and found it was broke.

So today 9/14/2020 I am going to remove all the mods and extensions and reload them one by one to see if there are any script errors or other issues.

I'm not sure of the context here - as far as I know (just tested it now per your warning? as I have a game I'm hosting tonight where they use it) it is all still working. No issues.

Were you just warning me here it might have trouble because of the other guys stuff failing?

Also I recently put in a new version of this as I wanted uber powerful full control of NPC's for my players. Which also works as far as I know. For sure it will be hammered tonight my group runs 2 NPCs as part of their travels at the moment. Will also have full inventory support for them in the new extension I'm working on (which made me add this new version to this one so I could take get full advantage of it).

As you are one of my 6 glorious customers - you get the benefit of it ;)

vaughnlannister
September 16th, 2020, 19:22
Curious about your new extension in the making SilentRuin :) !!

Good to know that Polymorph still works with One-Click Druid.

eriktedesco
September 16th, 2020, 19:30
I'm not sure of the context here - as far as I know (just tested it now per your warning? as I have a game I'm hosting tonight where they use it) it is all still working. No issues.

Were you just warning me here it might have trouble because of the other guys stuff failing?

Also I recently put in a new version of this as I wanted uber powerful full control of NPC's for my players. Which also works as far as I know. For sure it will be hammered tonight my group runs 2 NPCs as part of their travels at the moment. Will also have full inventory support for them in the new extension I'm working on (which made me add this new version to this one so I could take get full advantage of it).

As you are one of my 6 glorious customers - you get the benefit of it ;)

����

SilentRuin
September 16th, 2020, 20:44
Curious about your new extension in the making SilentRuin :) !!

Good to know that Polymorph still works with One-Click Druid.

From the last I heard from shezingzh there was some update last week made (not by me) that made it NOT work with that thing. Again - I don't use it so I don't know - you'd have to ask shezingzh.

The next extension will take much LESS time than polymorphism did so will be much cheaper. Would expect it to be out sometime in next two weeks. And no - I will never make polymorphism cheaper just to sell :) Work put in - is price put out. Even if it is only a select clientele ;)

vaughnlannister
September 17th, 2020, 13:28
Well I already own Polymorphism so :) so I don't need to see price drop :P

Cool.. always excited about new extensions :) !!

vaughnlannister
September 18th, 2020, 11:52
I just did a test with One-Click Druid updated.. and Both extension still work together.

So I think was a false alarm by @shezingh

vaughnlannister
September 19th, 2020, 20:00
Hey Silentruin,

When copying a Druid Character Sheet with wildshape, the copied version won't have your Polymorph extension option visible in the action tab.
Also adding and removing the Wild Shape Class trait does not make it pop up.

Could your latest update be related to this or have I missed something?

Thanks!

vaughnlannister
September 19th, 2020, 20:09
Allas.. false alarm all works!

SilentRuin
September 19th, 2020, 20:13
Ah allas I found an extension conflict was causing it, so it has been solved.

Thanks for updating was just about to try to duplicate it.

vaughnlannister
September 26th, 2020, 19:21
Hi Silentruin,

Since the recent FGU update, I've been getting a error from your Polymorph Extension :(

To reproduce this error:
1) PC must have the wildhsape class feature added
2) PC must not be on the Combat Tracker
3) Press the action tab --> triggers console error

The error I'm seeing is quite long though, if you would not be able reproduce the error I have the console logs that I could send you in a PM?

It does not hamper it from working, and the error doesn't pop up when you put the PC in the combat tracker. But might be something you would want to look into?

Thanks!

Update
I just tried it in a new campaign and the error doesn't pop up I have added a few new extension recently, I will try to figure out if there is a conflict... sorry I was quite convinced it was due to the new FGU update.

SilentRuin
September 26th, 2020, 19:30
Hi Silentruin,

Since the recent FGU update, I've been getting a error from your Polymorph Extension :(

To reproduce this error:
1) PC must have the wildhsape class feature added
2) PC must not be on the Combat Tracker
3) Press the action tab --> triggers console error

The error I'm seeing is quite long though, if you would not be able reproduce the error I have the console logs that I could send you in a PM?

It does not hamper it from working, and the error doesn't pop up when you put the PC in the combat tracker. But might be something you would want to look into?

Thanks!

Just tried what you suggested. I had a test PC already with that ability - made sure it worked - then removed it from combat tracker - hit action tab - and no error in console. Just the usual warning about must be in combat tracker to work. You can PM me and we can look at it - but you must have some other step involved here that I'm missing. For this test this should be the only extension (just to rule anything else out) running.

SilentRuin
September 26th, 2020, 19:39
Hi Silentruin,

Since the recent FGU update, I've been getting a error from your Polymorph Extension :(

To reproduce this error:
1) PC must have the wildhsape class feature added
2) PC must not be on the Combat Tracker
3) Press the action tab --> triggers console error

The error I'm seeing is quite long though, if you would not be able reproduce the error I have the console logs that I could send you in a PM?

It does not hamper it from working, and the error doesn't pop up when you put the PC in the combat tracker. But might be something you would want to look into?

Thanks!

Update
I just tried it in a new campaign and the error doesn't pop up I have added a few new extension recently, I will try to figure out if there is a conflict... sorry I was quite convinced it was due to the new FGU update.

No worries. Glad it wasn't me :)

vaughnlannister
September 26th, 2020, 19:55
Ok :)

Found it, was due to the new Character Sheet effects extension, so indeed it was not you lol :P

SilentRuin
September 28th, 2020, 17:17
shez found an issue with Wild Shape and in the course of trying to figure out what it was I found a few bugs involving feature "Elemental Wild Shape" and getting it to properly allow air,water,fire, or earth elemental wild shape transformation. This also lead to finding a spelling error in a druid level check name that would cause an ERROR in the console (and failure) if it ever reached that far into the check.

New version is out there.

V1.6 - Bug fixes for Wild Shape when using circle forms druid level checks and also for elemental wild shape feature allowing fire,air,earth, or water elemental as special non beast wild shape option.

vaughnlannister
September 28th, 2020, 18:49
Great thanks appreciate how thorough you are with keeping your extension working perfect :)!!!

shezingzh
October 4th, 2020, 14:44
Months ago, Polymorphism and one click+One click druid were compatible at one time as I had been using both together for some time. I then wrote Silentruin and rob2e. Silentruin responded out of respect while rob2e for some unknown reason got upset when in fact there was issue with both codes (rob2e did respond to me in his discord and not very kindly at that). only in the past 2 months (June/July time frame 2020) has both programs become non compatible. They will for some reason cancel either out. So to resolve the problem I asked my 15-18 players which one they prefer to use. They chose polymorphism, its easier to use, its way more powerful, and there are several other functions that polymorphism allows players to do that currently no other mod or extension does.

1. Polymorphism allows players full control over an NPC such as ending the NPCs turn whereas before I had to end all NPC turns, do you know what thats like when you have 6 players dropping constructs, polymorphing, shapechanging, calling forth spirits.
2. More than 1 NPC can now be controlled by players, i.e. ranger can use a pack mule, as well as have a pet, a wizard can have a horse as well as a familiar and call forth an elemental. (Before, FGU only allowed for control of one PC/NPC).
3. Yes, only the GM can add the NPC from the NPC tab, but thats ok since some players have a tendency to fudge. This is the best thing of all because it is a simple drop and drag, no typing code, no recreating a monster from the monster database
4. The poly can also be used for disguise, shapechange (works great for shapeshifters), and polymorph of course.

There is more that can be done with polymorphism but have not got that far. Best of all when an issue or a problem arises Silentruin is on top of it, just like when I sent him a confusing message message about why the druid could not shapechange into an elemental wild shape. Silentruin fixed that issue that night and logged into my game and fully tested it out on the players character. He then updated his Poly ext to version 1.6 and now the players druid "Riptide" is happier than a lark.

In my personal humble opinion and those of my players Polymorphism does what it says it does and more. Thus to resolve the conflict between the 2 programs, one click druid and one click more cannot be used together.

SilentRuin
October 4th, 2020, 15:18
Months ago, Polymorphism and one click+One click druid were compatible at one time as I had been using both together for some time. I then wrote Silentruin and rob2e. Silentruin responded out of respect while rob2e for some unknown reason got upset when in fact there was issue with both codes (rob2e did respond to me in his discord and not very kindly at that). only in the past 2 months (June/July time frame 2020) has both programs become non compatible. They will for some reason cancel either out. So to resolve the problem I asked my 15-18 players which one they prefer to use. They chose polymorphism, its easier to use, its way more powerful, and there are several other functions that polymorphism allows players to do that currently no other mod or extension does.

1. Polymorphism allows players full control over an NPC such as ending the NPCs turn whereas before I had to end all NPC turns, do you know what thats like when you have 6 players dropping constructs, polymorphing, shapechanging, calling forth spirits.
2. More than 1 NPC can now be controlled by players, i.e. ranger can use a pack mule, as well as have a pet, a wizard can have a horse as well as a familiar and call forth an elemental. (Before, FGU only allowed for control of one PC/NPC).
3. Yes, only the GM can add the NPC from the NPC tab, but thats ok since some players have a tendency to fudge. This is the best thing of all because it is a simple drop and drag, no typing code, no recreating a monster from the monster database
4. The poly can also be used for disguise, shapechange (works great for shapeshifters), and polymorph of course.

There is more that can be done with polymorphism but have not got that far. Best of all when an issue or a problem arises Silentruin is on top of it, just like when I sent him a confusing message message about why the druid could not shapechange into an elemental wild shape. Silentruin fixed that issue that night and logged into my game and fully tested it out on the players character. He then updated his Poly ext to version 1.6 and now the players druid "Riptide" is happier than a lark.

In my personal humble opinion and those of my players Polymorphism does what it says it does and more. Thus to resolve the conflict between the 2 programs, one click druid and one click more cannot be used together.

In defense of the other extension programmer - there is no guarantee we can make an extension compatible with someone else's extension. As I keep saying in all my extensions and pretty much wherever I can (it's a thing with me), FGU and any other extension can break any other extension at any time. The best any of us can do is make sure we can run with the extensions we run with. It's why even though many of you tell me its compatible with other things - I'm never going to personally admit that unless I run with those things also.

So don't be too hard on other extension programmers - its the nature of the beast we ride when writing extensions. As long as you understand that when talking to an extension developer going in - I think you can have a good conversation with them. Don't expect them to drop everything to fix some incompatibility with something that they don't use.

EXTENSIONS = RISK

My mantra when I put any of these for sale to the public.

SilentRuin
November 3rd, 2020, 21:35
I have partnered with Grim Press (https://discord.gg/N7MM93a) to handle sales and promo of this extension. I'm just to lazy to bother :)

vaughnlannister
November 4th, 2020, 08:41
Congrats :D !!

SilentRuin
November 6th, 2020, 17:51
New grim press video updated on DMsG - old one is still available here.

SilentRuin
November 8th, 2020, 16:02
Fix thanks to revelation in conversion in discord with Simpe :)

V1.7 - Was not returning true for some of my OnDoubleClick new window creation operations. When clicking on the a polymorphed NPC sheet (Use this sheet) to get to the original sheet it was polymorphed from it would always put the new window behind the one you just double clicked on. Now it will appear in front as it should.

SilentRuin
November 12th, 2020, 17:46
Based on a discussion some others were having that I saw - I decided I wanted this feature - and that is the true litmus test of anything new I add in my extensions :)

V1.8 - Added ability for PC to get unlimited Shapechanger feature added into it. Simply edit PC's features list and add the word "Shapechanger" then save it. You can then edit the link to have some meaningful description. This will allow PC's to have ability to change into anything though DM will have to regulate it for common sense (some special PC's have abilities to be Shapechanger like their NPC counterparts).

SilentRuin
November 20th, 2020, 04:14
V1.8 had 3 debug console log entries left turned on from testing. Whenever the next patch occurs they will be turned off - don't think its worth making a patch just for those unless someone besides me is annoyed by them in their console logs.

Also a reminder as I forgot - while the host can use the active button at any time the player can only when its his turn. I forgot and spent 15 minutes trying to figure out why my player was busted during some testing after a FGU release - turned out I forgot to make it his turn.

SilentRuin
November 25th, 2020, 19:03
Note some features are only documented in the version updates on page 1 and will not be shown in any of the videos. Just FYI.

CHoppopotomus
November 27th, 2020, 15:49
@SilentRuin
I purchased the full pack, trying out polymorph.
I'm sure I'm doing something wrong... But I can't find what.
I can't figure out how to make polymorph options work on an NPC.
I added polymorph to inherent spellcasting and spellcasting. Still the options don't show up in the sheet.

SilentRuin
November 27th, 2020, 16:45
@SilentRuin
I purchased the full pack, trying out polymorph.
I'm sure I'm doing something wrong... But I can't find what.
I can't figure out how to make polymorph options work on an NPC.
I added polymorph to inherent spellcasting and spellcasting. Still the options don't show up in the sheet.

I'll contact you via PM shortly to see what is going on. But for sure these spells are not "inherent". For an NPC - ShapeChanger (not Shapechange that is a spell) is a trait you just add in as that text. Dropping Wildshape link (goes into actions?) or one of the spell links I support (goes into spells) into an opened (unlocked) NPC main sheet will put them automatically in the right place. Spell links are from SPELLS button in FGU. WildShape link is from Druid class somewhere (I forget). If you manually enter any of these but ShapeChanger - it will be a royal pain to enter all the details (though exact name match is all that I will require to work) - and I would not recommend the wasted effort at it.

CHoppopotomus
November 27th, 2020, 19:05
I'll contact you via PM shortly to see what is going on. But for sure these spells are not "inherent". For an NPC - ShapeChanger (not Shapechange that is a spell) is a trait you just add in as that text. Dropping Wildshape link (goes into actions?) or one of the spell links I support (goes into spells) into an opened (unlocked) NPC main sheet will put them automatically in the right place. Spell links are from SPELLS button in FGU. WildShape link is from Druid class somewhere (I forget). If you manually enter any of these but ShapeChanger - it will be a royal pain to enter all the details (though exact name match is all that I will require to work) - and I would not recommend the wasted effort at it.

Definitely user error.
Thanks for re-explaining the easy to follow directions. :D
Also thanks for the quick follow up.

I can't wait to see my party's reactions!

SilentRuin
November 27th, 2020, 20:03
Definitely user error.
Thanks for re-explaining the easy to follow directions. :D
Also thanks for the quick follow up.

I can't wait to see my party's reactions!

Well for your particular case, wizard poisoned polymorph tea, your solution with the wizard having polymorph works fine. But don't limit your imagination. Creating a new (appropriate level for your polymorph targets) NPC called "Teapot" and giving it polymorph powers and setting it to invisible (or visible) on you combat tracker would give the same powers.

jhathawaytn
December 12th, 2020, 03:08
I have a question about using Polymorph as a PC. I have a Druid that was set up via Game Master, level 2 Moon Druid with wildshape. I'm able to add beast per SilentRuin's video and can change between NPC as the GM no problem. However when I log into the game as PC, I'm unable to click the ACTIVATE button on the character sheet. Is this intended to only be changed via GM? If not, any suggestions? I'm running only the Polymorph extension.
Thanks for the help.

SilentRuin
December 12th, 2020, 03:16
I have a question about using Polymorph as a PC. I have a Druid that was set up via Game Master, level 2 Moon Druid with wildshape. I'm able to add beast per SilentRuin's video and can change between NPC as the GM no problem. However when I log into the game as PC, I'm unable to click the ACTIVATE button on the character sheet. Is this intended to only be changed via GM? If not, any suggestions? I'm running only the Polymorph extension.
Thanks for the help.

It must be the turn of the PC or NPC under control of the player. As in Combat Tracker MUST have the turn icon on that NPC/PC in order to do any activation. This was to prevent nuts from just playing with it outside of the DM's notice - your turn - spotlight on you. As long as the ownership for the NPC has been done correctly (dropping NPC link in combat tracker on player portrait while default option to do full ownership for NPCs is on) then the button will be clickable by player during the NPC's turn.

[Wait I think I get it - yes your character sheet is active if you login with it already polymorphed - the text at top should be saying DO NOT USE THIS SHEET - meaning you need to double click on the polymorph token to bring back up the NPC sheet - sorry I think I misunderstood].

SilentRuin
December 12th, 2020, 03:21
I have a question about using Polymorph as a PC. I have a Druid that was set up via Game Master, level 2 Moon Druid with wildshape. I'm able to add beast per SilentRuin's video and can change between NPC as the GM no problem. However when I log into the game as PC, I'm unable to click the ACTIVATE button on the character sheet. Is this intended to only be changed via GM? If not, any suggestions? I'm running only the Polymorph extension.
Thanks for the help.

IN case you missed my addendum to last message - there are always two sheets (the PC and the blended NPC it polymorphed into). When you polymorph the blended NPC sheet pops up - you can get to either the PC or blended NPC sheet by double clicking on that sheets polymorph token field.

When you come up in application with a polymorph in effect - you will have the PC sheet and it will state DO NOT USE THIS SHEET up near the top - double click on the map/combat tracker/ or PC polymorph token field to get the polymorph blended NPC sheet back up.

wudrow
December 12th, 2020, 04:28
It must be the turn of the PC or NPC under control of the player. As in Combat Tracker MUST have the turn icon on that NPC/PC in order to do any activation. .

First of all, love the extension, etc, etc!

It took me a LONG time to find the answer for why the Druid I was controlling was not able to make the 'Active' work for the wild shape. Finally read through the 9 pages and found a reference there, then found this thread on page 10.

Some suggestions:
- Add a note about this "must be the turn of the PC / NPC" to the *first* overview post in this thread. Similarly, add a note that only the host can add beasts to the list of available polymorphs.
- When it's not the turn of the PC or NPC, and they try to click the 'Active' button, add an error message in the chat window, "While the GM can activate at any time, the players may only activate on their turn".
- As the host, the graphic of 'PC'->'?'->'NPC'... what is that supposed to mean?
- When my druid, 'Peaeye' changes to a Brown bear, I wish the CT automatically showed the name "Peaeye - Brown Bear" just to clarify whose turn it is.
- In Options, consider renaming the section header, 'Shared NPC (GM)' to include the label Polymorphism somewhere. It took me awhile to figure out it's your setting! And full disclosure, I've read your descriptions and still get confused on what the label, 'Fully Own Shared CT NPC' is supposed to represent. When I read the description for v1.5 I got closer to understanding, but likely some rephrasing in that paragraph could help.
- The header on the character sheet, "USE THIS SHEET. No Poly currently in effect." Consider only showing either, 'Polymorph currently active' or 'Polymorph NOT currently active', and then use a tooltip to explain which sheet to use. At a minimum, flip the order so it says, "No polymorph currently in effect, so use this sheet." and "Polymorph currently in effect, so use the reference sheet of the beast."
- To deactivate the Wild Shape, consider a similar safety check you do with another of your options where they have to double-click to confirm? And/or, consider when the red 'Active' button is visible, include an 'X' button to cancel the shape (instead of clicking the 'Active' label.

Again, very impressed with the extension. I happen to have a career in trying to make UI more usable, so please know these suggestions come from a place of respect.

SilentRuin
December 12th, 2020, 04:52
First of all, love the extension, etc, etc!

It took me a LONG time to find the answer for why the Druid I was controlling was not able to make the 'Active' work for the wild shape. Finally read through the 9 pages and found a reference there, then found this thread on page 10.

Some suggestions:
- Add a note about this "must be the turn of the PC / NPC" to the *first* overview post in this thread. Similarly, add a note that only the host can add beasts to the list of available polymorphs.
- When it's not the turn of the PC or NPC, and they try to click the 'Active' button, add an error message in the chat window, "While the GM can activate at any time, the players may only activate on their turn".
- As the host, the graphic of 'PC'->'?'->'NPC'... what is that supposed to mean?
- When my druid, 'Peaeye' changes to a Brown bear, I wish the CT automatically showed the name "Peaeye - Brown Bear" just to clarify whose turn it is.
- In Options, consider renaming the section header, 'Shared NPC (GM)' to include the label Polymorphism somewhere. It took me awhile to figure out it's your setting! And full disclosure, I've read your descriptions and still get confused on what the label, 'Fully Own Shared CT NPC' is supposed to represent. When I read the description for v1.5 I got closer to understanding, but likely some rephrasing in that paragraph could help.
- The header on the character sheet, "USE THIS SHEET. No Poly currently in effect." Consider only showing either, 'Polymorph currently active' or 'Polymorph NOT currently active', and then use a tooltip to explain which sheet to use. At a minimum, flip the order so it says, "No polymorph currently in effect, so use this sheet." and "Polymorph currently in effect, so use the reference sheet of the beast."
- To deactivate the Wild Shape, consider a similar safety check you do with another of your options where they have to double-click to confirm? And/or, consider when the red 'Active' button is visible, include an 'X' button to cancel the shape (instead of clicking the 'Active' label.

Again, very impressed with the extension. I happen to have a career in trying to make UI more usable, so please know these suggestions come from a place of respect.

I admit that stupid "Turn" thing has burned myself in my games when I'm testing things (which I try to do weekly after the FGU updates) and can't figure out why its broken - then realize I did not have the test players turn set (something that normally would not be an issue in my live games as it would be their turn). I did have a chat message end turn - but I actually annoyed myself by the number of times it showed up when I was testing (yeah I'm that dumb) and did not want it as a source of player spam in the chat window (I hate that kind of stuff that scrolls off important info). As far as the notes - I had them all in DMsG - but when I went with Grim Press they convinced me I had way to much information (hence the old page is buried in the FG forum post in the .txt file now). I tend to give way to much information including potential compatibility code replacements. The PC->?->NPC icon - could not figure out how to show the true polymorph turning into inanimate objects (like my chair demo) and while I map it as an NPC - well - just that was the point confusing as it is.

As far as the ID of the NPC - litmus test of changes I make is if they are what I want in my game. I had one of the first campaigns I ran with this with a gladiatorial arena where the prisoners had to fight a succession of matches against different creatures. There were high level mages as the referees for the empire and each had polymorph. I had the players facing polymorphed creatures which they did not KNOW were polymorphed - until they knocked their HP to 0 at which point POOF - bigger meaner creature suddenly appeared - they were surprised. Also have players turned into furniture (or NPCs) that I DO NOT WANT ANY indication of what they are (this only really works with my combat groups to keep them from seeing those items in combat tracker though). But the gist being - no I don't want people to know the thing is polymorphed by having its name appear giving it away.

The sheet messages are specific because there is one of the spells where the sheet is partially usable (they are all usable obviously as I don't limit thing like FGU does not limit them because you never know when someone will do something crazy that I don't handle).

In general if the function takes more than one click I don't like it - I'm very lazy and wrote these to do as little clicking management as I can get away with. I try to make my interfaces as simple and multiple uses for the least real estate possible.

And with the current question hovering over all DMsG extensions - I'm kind of taking a hiatus on any superficial changes that are not directly related to bugs or the functionality of the extensions.

So for now if its not a bug fix or a feature that I'd actually want in my game I'm going to hold off on them.

SilentRuin
December 15th, 2020, 04:21
Based on something I encountered in my own campaign today I'm going to put out a warning on shapechanger NPC trait/PC feature. Shapechanger was treated as the unrestricted shapechange/polymorph spell by me. Most NPC shapechanger's have one sheet that has all their abilities on it and they do not need to use the shapechanger option in this extension. All you need to do is change the token icon and use the appropriate attacks. And if you use the shapechanger option you'd have to essentially use a special sheet you made yourself that had only that forms abilities but same HP and such as the original form (hence why use my shapechanger to do anything for that). Also, if you switch to some NPC (even if you made one specially matching) - if it died it would revert back like the shapechange spell with the HP carried over. This is NOT what an NPC shapechanger does in most cases. However, a shapeshifter PC class does - which is what I used shapechanger feature to do in PC's - homebrew type of thing.

I think shapechanger trait is pretty much you die when 0 HP you revert back dead without the shapechange spell rules. This caused me confusion with some werewolves I foolishly shapeshifted to NPC wolf form today - which one - was wrong because it was not a matching set of HP etc. as the original form - and two it reverted back with carried over damage when it went to 0 HP. I should have NEVER used the shapechanger option with that type of thing as it had all the options on the sheet.

So I'm warning others of this NPC shapechanger trait that I tried to make an all purpose unlimited polymorph type of thing for DM discretion usage. Which is also true for use in PC shapechanger feature - which is really to cover shapeshifter homebrew type of things (again giving DM unlimited power to allow what they want them to change into with the 0 HP revert rules in play).

I'm going to have to think on this for a bit, because trying to cram what I wanted into this one keyword NPC trait/PC feature is even confusing to me.

I'm not sure what I'll do here but I'll think on it awhile. My gut instinct is to make a shapechanger pass on its stats to whatever NPC it turns into and drops dead when it hits 0HP. Then make a new keyword called shapeshifter for the unlimited polymorph type of power I originally was shooting for.

But I'll have to think on it and am in no rush to make this change as it will make campaigns have to change NPC's they have created with the unlimited NPC selected for polymorph that respects those rules (the shapechanger trait would need to change to shapeshifter in both NPC and PC uses like that). Which could cause even more confusion - hence - not sure what I'll end up doing.

SilentRuin
December 16th, 2020, 18:08
All right DMsG has been updated with the new version. I've decided what I'm going to do to handle all this stuff while still leaving it super flexible. Nothing has changed except Shapechanger behavior and new Shapeshifter behavior (which was old shapechanger behavior). Will be testing this out over the next day or so but its out there now. As nobody probably used this feature but me I'm not to worried about it. Also the .txt file on page 1 has been updated.

V1.9 - Shapechanger was my super power anything goes polymorph which pretty much acted like an unlimited Shapechange spell more or less. Which is an NPC trait/ PC feature. Unfortunately in my own game I found that NPC shapechanger's should really never use it as they have all the data in the sheet already. Also it currently switches back when 0 HP following the rules like other polymorph things. Which is dead wrong for an NPC trait one. They are dead dead when they are killed in their changed form and switch back to their dead form. To properly apply shapechanger (if ever used) I've changed it to basically preserve the HP data when you change and if you die switch back to original form but still dead. Ideally the only way it should ever be used is if you make a copy of the shapechanger and just change the token and nothing else. Or have a specially crafted NPC that matches the exact stats/abilities/everything and removing the attacks that don't apply to new form (probably easier just to never use it - but as I will - I'm changing it to this). Now I added it to PC's also - but really that was for a shapeshifter which is now a new supported polymorph type that basically behaves like the old shapechanger one. So if you want changed thing to drop dead you use "Shapechanger" and if you want it to do the normal transfer of exceeded HP like a normal polymorph you now use "Shapeshifter". This gives the most flexibility while fixing things that were not correct.

SilentRuin
January 1st, 2021, 17:37
While working on another extension I realized the map token must be updated after an NPC is shared or the ownership will not be passed into the map if the token is already out there. Fixed.

V1.10 - Fixed sharing NPC ability to update the map token so the ownership was set properly. The problem was that if you shared the NPC to a player while it was on the map the map would not have the owner updated so that the player could move it. Now it will work whether on the map or not at time of sharing control to player.

SilentRuin
January 1st, 2021, 23:49
While still working on my new extension I discovered that when polymorphing a shared NPC that the NPCowner data and addholder ownership data was lost in the new record. Fixed.

V1.11 - Fixed when polymorphing with an NPC (NPCowner set for NPC controlled by player) was not preserving that NPCowner and the addholder ownership of the record. It would be lost after conversion meaning you no longer could move on map or select active button.

Norgewalk
January 21st, 2021, 19:53
Great extension. (Running V1.11)

I found that when our druid WildShapes into a beast and pick up an item and put it in the beast's inventory when they revert back to Druid form everything in the beast's inventory is lost and not transferred to their inventory. (Bear was holding a bag of stuff)
I thought I would mention it here in case you had a way of fixing that in an update.
I know that not all inventory items would want to be transferred back to the host, like any that are added by default to the NPCs inventory list. New items would be nice not to lose. I don't know if it is possible to tag items as (Do not transfer, by default) so that all new items could come over or something. I just thought I would let you know.

Thank you for your work.

Norge

SilentRuin
January 21st, 2021, 20:21
Great extension. (Running V1.11)

I found that when our druid WildShapes into a beast and pick up an item and put it in the beast's inventory when they revert back to Druid form everything in the beast's inventory is lost and not transferred to their inventory. (Bear was holding a bag of stuff)
I thought I would mention it here in case you had a way of fixing that in an update.
I know that not all inventory items would want to be transferred back to the host, like any that are added by default to the NPCs inventory list. New items would be nice not to lose. I don't know if it is possible to tag items as (Do not transfer, by default) so that all new items could come over or something. I just thought I would let you know.

Thank you for your work.

Norge

As NPC's cannot have inventory - without my map parcel extension - I assume you have that.

You bring up a very weird situation. Some of the polymorphed things will simply drop items on the ground, others will have the items actually transform into the shape itself - the rules vary (see descriptions). I suppose I cannot see them realistically transforming back and magically have everything back in the characters inventory (best would be on the ground as parcel).

This gets into the realm of "I make up the rules" type of things. I'll have to think on it - but really - I added NPC inventory to give the DM the ability to play all sorts of scenarios. A beast inventory would be in its stomach - so you have to exercise some common sense when allowing them to put anything IN the inventory to start with. I give the code architectural tools to do what you want - I do not provide the common sense on what you SHOULD use them to do. But really that is up to you. Gist is - I don't see a clean way to allow a beast to transfer items when they polymorph. At best I could see them drop the things as a parcel. But really - it may be up to you to regulate this how you want (maybe transfer items before you polymorph manually).

In the end, this is one of those "damned if I do, damned if I don't" situations which are all over the place in D&D gaming. I tend to stay away from those and leave those decisions to the DM (manual). Could I transfer inventory? Absolutely. Can I simply drop a parcel of any inventory an NPC has when they transform? Also, absolutely. It's just this enters the realm of me making up the rules as I go. For now - unless convinced otherwise - I think I'll leave it as a manual (do what you want before they transform back manually or lose the gear in the "transformation" as it would be incorporated into you (as some polymorph operations do now when changing into the NPC). Deep grey areas here.

SilentRuin
February 16th, 2021, 22:58
you must update extensions - they will have issues with latest fgu update - if you don't update fgu then keep your old extension

Kingfish
February 19th, 2021, 01:04
So, a question, I hope you can smack me around a little because this is such an easy fix...

I am running a group through a Rod of Seven Parts epic story. One of the later parts gives the wielder Shape Change as the 9th level spell. First off, I've been successful using this extension on a 17th level wizard to cast the spell no problems...and boy is it GREAT!!! However, nothing I can do will make it work for a 14th level. I tried making sure the item is equipped-nothing. I added a 9th level spell slot to her character sheet-notta. Will it work with a potion of polymorph? Or a scroll of Shape Change?

I'm sure I'm missing something OBVIOUS but...for the life of me I can't cypher-it-out. Any help or guidance?

SilentRuin
February 19th, 2021, 01:15
So, a question, I hope you can smack me around a little because this is such an easy fix...

I am running a group through a Rod of Seven Parts epic story. One of the later parts gives the wielder Shape Change as the 9th level spell. First off, I've been successful using this extension on a 17th level wizard to cast the spell no problems...and boy is it GREAT!!! However, nothing I can do will make it work for a 14th level. I tried making sure the item is equipped-nothing. I added a 9th level spell slot to her character sheet-notta. Will it work with a potion of polymorph? Or a scroll of Shape Change?

I'm sure I'm missing something OBVIOUS but...for the life of me I can't cypher-it-out. Any help or guidance?

Polymorph works on the spells and powers I've listed in page 1 and the .txt file for dirt level details. That is for PC or NPC as stated. An item is not an NPC or a PC. Its not the spell itself that triggers my stuff but is the PC/NPC spell/power/trait that triggers it. If you read this tome of a thread (not likely as even I don't reread it - only per reply) I believe we had a discussion of how to make polymorph spell work for a cup of poisoned tea. Really the trick is whatever you want to do the polymorph you make an NPC for and give it the spell/power you want per whatever I said worked for an NPC. In his case he made an NPC that was called teakettle or something I think if memory serves and had the token of a teakettle sitting in his map and on the CT. Then he triggered the spell from it. But really any hidden PC/NPC dummy thing you make equipped with the proper spell/power/trait could be used to target something and cast it. You just have to get inventive. But always remember this is for PC's and NPC's. For example if you want some PC to have unlimited change into anything you'd give it the feature keyword of Shapechanger ( who cares what you use for description ) if you want them to drop dead when they are killed in their altered form (think lycanthrope) or Shapeshifter if you want them to turn back with transferred HP data. Those two have no "limits" on what PC(feature)/NPC(trait) you choose for your polymorph token - unlike the specific spell/power/traits you can assign. Now you'd have to read on the details for where those things get defined but I give you the leeway to do what you want. But its got to be a PC/NPC doing the targeting and having the spell/power/trait to work. Nobody says a PC or NPC can't be named "teakettle" after all with that as it token and only controllable or even visible by the host :)

SilentRuin
February 19th, 2021, 01:28
<posted wrong answer will need to look this up again - memory is failing me>

The following is too long to put in page 1 - hence the .txt file.

Right - these are the spell/powers I support - check the .txt file in page 1 for details on these and where they go in a PC/NPC.


Polymorph Spell - This will support the full RAW 5E rules for this spell in the newly created sheet after the spell takes effect. Labels in the sheet will inform you that this new sheet is the one you use. If you go over to the original sheet (PC) or reference sheet (NPC) the label will be different and tell you DO NOT USE that sheet. The list of NPCs will be limited where it can be based on the RAW 5E rules. This is a targeted spell. If the target is of the same faction as the caster then it will not require the saving throw to take effect. Otherwise, it will.

True Polymorph Spell - This will support the full RAW 5E rules for this spell in the newly created sheet after the spell takes effect. Labels in the sheet will inform you that this new sheet is the one you use. If you go over to the original sheet (PC) or reference sheet (NPC) the label will be different and tell you DO NOT USE that sheet. The list of NPCs will be limited where it can be based on the RAW 5E rules. This is a targeted spell. If the target is of the same faction as the caster then it will not require the saving throw to take effect. Otherwise, it will. This supports special custom NPC types of "object" or "item". If you make a custom NPC that has a type of one of these it will be treated as an object by this and that other spells in polymorphism (won't be considered a creature). For example, making a chair NPC with whatever structural HP it would have or anything else with a chair token and a type of "object" or "item" would be respected as an object in this spell.

Animal Shapes Spell - This will support the full RAW 5E rules for this spell in the newly created sheet after the spell takes effect. Labels in the sheet will inform you that this new sheet is the one you use. If you go over to the original sheet (PC) or reference sheet (NPC) the label will be different and tell you DO NOT USE that sheet. The list of NPCs will be limited where it can be based on the RAW 5E rules. This is a targeted spell. If the target is self or not of the same faction as the caster that target will be ignored. A special feature that supports the ability to change shapes while a current animal shapes spell concentration is in effect requires that the target list be an exact subset of the current Animal Shapes concentration effects in play. If it is, then only that subset will change without breaking the concentration and losing the others in that active spell. Otherwise, any deviation from the target subset will result in breaking the concentration of the others (reverting them back) and casting this new target list as a new animal shapes spell transformation.

Shapechange Spell - This will support the almost the full RAW 5E rules for this spell in the newly created sheet after the spell takes effect. Because of the nature of this spell and that you can still use your character features and spells at DM's discretion based on shape you took - this new sheet will have everything you need according to RAW 5E rules except those DM discretion things. When you go back to the original sheet it will also have a different label stating this sheet is for LIMTTED use at DM's discretion (unlike other reference sheets which state DO NOT USE). This is a self only spell and the special case allowing you to change shape while active is handled by going back to your source sheet where the NPC selection in this case will allow you to select a new NPC and hit the active button again (even though its highlighted already). If the NPC selection was different than the current one it will delete the Shapechange effect (reverting you back) and then transform you into the new NPC shape.

Shapechanger - this is an NPC trait/ PC feature which I've left completely up to the DM on what NPC's it can turn into. There are no changes to the resulting sheet - this is simply going to turn them into the pure NPC. If you want special conditions for this (like a vampire turning into mist) you make your own custom NPC. Or in some cases the shape changed attack/damage features are already on the NPC sheet and you can do nothing at all and don't even trigger polyrmorphism. This will pass in the HP data to the NPC and is really only valid to use if you copy the NPC into different versions where you add different tokens and keep all the stats etc. the same (optionally editing out attacks to the relevant ones for that token shape). Also if you die in changed shape you revert and are still dead.

Shapeshifter - this is an NPC trait/ PC feature which I've left completely up to the DM on what NPC's it can turn into. There are no changes to the resulting sheet - this is simply going to turn them into the pure NPC. It will follow most polymorph spell rules on death where it will carry over the exceeded HP when it reverts back to its shape. Used more for allowing the DM to have unrestricted polymorph (some homebrew NPC/PC have this death revert behavior).

Wild Shape - This is an NPC trait/ PC feature. This will support the full RAW 5E rules for this in the newly created sheet after the wild shape takes effect. This is a self only thing so simply supports the active button switching back and forth.

Kingfish
February 19th, 2021, 01:28
Nice!!! Subtle...I like! So I guess the Rod of Seven Parts just became a REAL part of our game. This is gonna take some tinkering and lots of thought. Thanks for being so quick on the responses...much much appreciated!

SilentRuin
February 19th, 2021, 01:43
Nice!!! Subtle...I like! So I guess the Rod of Seven Parts just became a REAL part of our game. This is gonna take some tinkering and lots of thought. Thanks for being so quick on the responses...much much appreciated!

Had to edit that last post a bunch sorry there. Just finished editing it.

Kingfish
February 19th, 2021, 12:24
Had to edit that last post a bunch sorry there. Just finished editing it.

Wow...yeah, because that spell is self and appears to be 'hard-coded' at 9th level, I don't think I can make it work how I need/want. Oh well, it is awesome powerful tho and so freakin kewl. Pretty sure my next group may be an all druid affair...

SilentRuin
February 19th, 2021, 12:41
Wow...yeah, because that spell is self and appears to be 'hard-coded' at 9th level, I don't think I can make it work how I need/want. Oh well, it is awesome powerful tho and so freakin kewl. Pretty sure my next group may be an all druid affair...

I guess I’m not sure what your saying here. Is some spell not following rules per Raw 5E?

As I said if you don’t want “rules” you define shapechanger or shapeshifter.

If there is some bug your trying to describe I’m not understanding.

Kingfish
February 19th, 2021, 13:09
If there is some bug your trying to describe I’m not understanding.

No I don't think so, I think the problem I am having is two-fold, old and lack of understanding the limits of the incredible tool you've supplied. As I explained (horribly) earlier, I am trying to give my player the ability to use the 9th level spell Shapechange as exactly how you have it coded. Shapechanger or shift is just giving them an NPC to control...if I understand you correctly...without the modified character sheet. That sheet and the elegance of how you have built this is what I wanted for my player to experience.

Her character is only 14th level but has a powerful magic item that grants her the 9th level spell Shapechange. I think the problem arises from the under-leveled character. Here is what I mean.

I've created a new character exactly like her character. With her at level 14, i drop the 9th level spell on her, i manually give her a 9th spell slot but it won't work. As soon as I added three more levels and she naturally got her 9th level spell slot at 17 level, BOOM, Shapechange worked exactly as it is expected.

Per our earlier conversation, I crafted an NPC, (lets call him teakettle for the purposes of this) but in that example the limitation of the SELF only tag on the spell. I place it, gave control to the player and "Teakettle" could turn itself into a blue dragon at the players request BUT it couldn't use this ability on the controlling character holding. Pretty sure I am just not understanding how to get past or through the SELF limitations. I KNOW i can just do the old switcheroo tokens way to handle this but, I was basically doing that without an extension.

Then I tried duplicating the Shapechange spell. I changed self to targets, didn't work. It still couldn't transfer the effect onto anyone but the caster. I tried leaving it like it was but changing the spell level to a level the character could cast...that made no difference.

I know its a limitation created from of my own lack of skill/knowledge and/or imagination. It is not your work that is in anyway flawed here, its me and my end...its just frustrating cause its as simple as changing the SELF out to anything else and I can't figure it out.

As I said earlier, I know I can change out the tokens, I could use shapechanger and give her the RAW NPC to control but its the 'magic' of how you have this coded for the player that I want her to see and have on her sheet.

Thanks for your time and attention to this, I am totally pleased with my purchase and even this one is gonna make player really happy when they get to use it...

SilentRuin
February 19th, 2021, 13:20
You keep saying shape change spell which is limited. Are you getting that Shapechanger PC feature/NPC trait is NOT the same thing? Shapeshifter and shapechanger are not spells. See the list of things I support a few posts above and read them carefully.

Kingfish
February 19th, 2021, 13:48
You keep saying shape change spell which is limited. Are you getting that Shapechanger PC feature/NPC trait is NOT the same thing? Shapeshifter and shapechanger are not spells. See the list of things I support a few posts above and read them carefully.

I guess I am either blind or I shouldn't try to read before I totally wake up. I swear I read your earlier post as if the Shapechanger option was DIFFERENT than the spell...like the PC sheet would be different some way...let me try reading again after my coffee and see if I can make sense of it now. Sorry for confusion AND irritations...

SilentRuin
February 19th, 2021, 14:29
I guess I am either blind or I shouldn't try to read before I totally wake up. I swear I read your earlier post as if the Shapechanger option was DIFFERENT than the spell...like the PC sheet would be different some way...let me try reading again after my coffee and see if I can make sense of it now. Sorry for confusion AND irritations...

No worries. There are 4 spells - with limits per RAW 5E rules. There is one PC(feature)/NPC(trait) that is wild shape - with limits per RAW 5E rules. And two PC(feature)/NPC(trait) called shapechanger and shapeshifter that have no limits on what you can do but still have some sheet transfer things going on per descriptions I made.

SilentRuin
February 19th, 2021, 14:31
To be clear spells get dropped in action tab (PC) or main tab (NPC) - and appear there - then are picked up by my code as something you can do in that polymorphism subwindow dropdown list.

The PC feature is just a text keyword you create in the features tab - who cares what description you give it.

The NPC trait is just a text keyword you create in main tab - who cares what description you give it.

Just to be clear. I'd test each to see what happens.

You will know if you did it right because it will appear in the polymorph drop down list as something you can do.

Really - think "what is the absolute least effort way to do this - I bet that SR lazy DM that he is chose that way"... You'd be right. Minimal interaction by me as DM. That is what I wanted.

Kingfish
February 19th, 2021, 14:51
Just to be clear. I'd test each to see what happens.

Ok, I was HONESTLY just gonna slink away and try not to make a bigger fool of myself but...this info MIGHT help you AND maybe someone else.

It appears that you MUST have the token/portrait of the character in the correct folder for the extension to work. I ported over all my files (thought I got all) when I changed from FGC to FGU...as soon as I added the portraits back into the folder on FGU, damned if the spell popped right onto the character! As simple as that! I had added the spell onto her sheet, gave her a 9th level slot and PRESTO, CHANGEO!!! I don't know if thats it or if the gremlins in the program finally went, "Chit, he ain't gonna give up..." and let it work.

Doesn't matter...it is working perfectly sir and Sunday's game is going to be insane!

Thank you much and I am sorry for testing your patience in this matter.

SilentRuin
February 19th, 2021, 14:57
Ok, I was HONESTLY just gonna slink away and try not to make a bigger fool of myself but...this info MIGHT help you AND maybe someone else.

It appears that you MUST have the token/portrait of the character in the correct folder for the extension to work. I ported over all my files (thought I got all) when I changed from FGC to FGU...as soon as I added the portraits back into the folder on FGU, damned if the spell popped right onto the character! As simple as that! I had added the spell onto her sheet, gave her a 9th level slot and PRESTO, CHANGEO!!! I don't know if thats it or if the gremlins in the program finally went, "Chit, he ain't gonna give up..." and let it work.

Doesn't matter...it is working perfectly sir and Sunday's game is going to be insane!

Thank you much and I am sorry for testing your patience in this matter.

Telling me that you took an extension purely designed for FGU - and had some sort of campaign porting issue from an unsupported FGC - is not something I can - or ever would - help you figure out :) Because I would not know. That is something completely outside of the scope of this extension. But glad you figured out your porting issue. Not really a "polymorphism" issue though :)

Kingfish
February 19th, 2021, 15:08
Telling me that you took an extension purely designed for FGU - and had some sort of campaign porting issue from an unsupported FGC - is not something I can - or ever would - help you figure out :) Because I would not know. That is something completely outside of the scope of this extension. But glad you figured out your porting issue. Not really a "polymorphism" issue though :)

No man, I have been using FGU for months...bought your bundle pack knowing it was only for FGU...clearly I've had a stroke overnight and am not explaining myself clearly. This "issue" could have happened if I was moving characters from one campaign to another inside my FGU folder! The issue was a missing picture/portrait, that's all it was. I put that back in place and when the extension called on it, it was there now. Just like that, done.

Sorry I bothered you and I thank you for all you did to "help" anyway.

SilentRuin
February 19th, 2021, 15:18
No man, I have been using FGU for months...bought your bundle pack knowing it was only for FGU...clearly I've had a stroke overnight and am not explaining myself clearly. This "issue" could have happened if I was moving characters from one campaign to another inside my FGU folder! The issue was a missing picture/portrait, that's all it was. I put that back in place and when the extension called on it, it was there now. Just like that, done.

Sorry I bothered you and I thank you for all you did to "help" anyway.

Ah my bad then. No bother - putting all this info in the thread is probably helpful for someone in the future. No Worries.

SilentRuin
February 21st, 2021, 15:03
Wasted a lot of time last night trying to add in debug prints to figure out why the player could no longer hit active button - only to realize - once again - it was not their turn. Annoyance achieved - modification made :(

V1.13 - THE most important version change I've made for this extension - ever. Message is now sent to player when they try to hit the Polymorphism Active button telling them when its not their turn that it won't work unless it is. Tired of being burned by this and forgetting myself.

SirMotte
February 23rd, 2021, 20:40
Annoyance achieved - modification made :(

I just love your pragmatic nature!

On that note, I hope you get annoyed a lot more in the future, so you bestow even more of your awesome extensions upon us :p *rollsforstealth* (don't hit me!).

SilentRuin
March 4th, 2021, 15:25
V1.14 - Preserve Combat Group Extension data in combat tracker when switching polymorph states. Only matters if using Combat Group Extension so that it does not lose the group when switching polymorph states.

Added support to preserve Combat Group Extensions settings.

Milmoor
March 14th, 2021, 12:59
I get an error with some of my new characters, the cause is an interaction with an other extension:

[3/14/2021 12:49:23 PM] s'Milmoor(false) -> manager_polymorphism:DisplayPolymorphism: Polymorphism requires sheet to be in combat tracker.'

It will only give the error once per character per session, and it doesn't do so with an older character of mine. The message is incorrect, as in it really needs/complains about something else. It doesn't disappear when I put the character on the Combat Tracker. Steps to reproduce from client:
- enable Polymorphism
- enable Mad Nomad's Character Sheet Effect Display
- import attached character Test Poly.xml from client
- exit game
- open character

See attachment for a character with which I did my reproduction. It doesn't like this part of the code.


<MNMChecks>
<charEffects>
<setup type="string">1.13</setup>
</charEffects>
</MNMChecks>

SilentRuin
March 14th, 2021, 15:13
I get an error with some of my new characters, the cause is an interaction with an other extension:

[3/14/2021 12:49:23 PM] s'Milmoor(false) -> manager_polymorphism:DisplayPolymorphism: Polymorphism requires sheet to be in combat tracker.'

It will only give the error once per character per session, and it doesn't do so with an older character of mine. The message is a lie, as in it really needs/complains about something else. It doesn't disappear when I put the character on the Combat Tracker. Steps to reproduce from client:
- enable Polymorphism
- enable Mad Nomad's Character Sheet Effect Display
- import attached character Test Poly.xml from client
- exit game
- open character

See attachment for a character with which I did my reproduction.

I'm a firm believer of not spamming chat with obvious issues. I only even put the warning in console in case some weird attempt was made that there would be a record of it. This in case other code did it or a user did it there was a record of why it did not work. Its a conscious decision I made to record it in case why something was trying to do something it should never try to do.

As I write these things for me - how they behave is at my preference for my usage. Your welcome to try and convince me otherwise, some have for various things and I change them. But its rare they succeed if its behavior I want. Just FYI :)

And the key to your testing is turning off other extensions. As I say many places - EXTENSIONS = RISK and I can only guarantee my extensions work with my stuff. Incompatibilities can happen. Though this warning is not really an incompatibility - but might be something weird going on - hence the warning.

Milmoor
March 14th, 2021, 15:36
Found the issue, it's a block of code which somehow hinders Polymorphism. Removing this part solves it. See my edited post. And I totally get you won't change your extension for every extension in existence. Hopefully this will help others who have the same set of extensions.

SilentRuin
March 14th, 2021, 15:38
Found the issue, it's a block of code which somehow hinders Polymorphism. Removing this part solves it. See my edited post. And I totally get you won't change your extension for every extension in existence. Hopefully this will help others who have the same set of extensions.

Well I just edited my post while you were editing yours - but all is good then :)

SilentRuin
March 16th, 2021, 22:12
V1.15 - Bug - Fixed changes made to applyDamage in 5E code that I missed. Also removed some "legal warnings" in my console logs which I felt were spam.

Thanks to MeAndUnique for spotting this! Would effect FGU code where they originally had the new PC calls to process it then changed it back after it went LIVE some time. So would keep whatever reason they changed it from working in FGU. Fixed now.

mordkhaan
March 20th, 2021, 00:48
So just confirming that with only Polymorphism loaded
if character is not in CT, every time you change tabs on their open character sheet, you get the below line appearing in console.log
[3/20/2021 12:46:39 PM] s'GM(true) -> manager_polymorphism:DisplayPolymorphism: Polymorphism requires sheet to be in combat tracker.'
Not an issue per se but just in case you werent aware

SilentRuin
March 20th, 2021, 01:09
So just confirming that with only Polymorphism loaded
if character is not in CT, every time you change tabs on their open character sheet, you get the below line appearing in console.log
[3/20/2021 12:46:39 PM] s'GM(true) -> manager_polymorphism:DisplayPolymorphism: Polymorphism requires sheet to be in combat tracker.'
Not an issue per se but just in case you werent aware

I think that will only happen if they have a polymorph ability will it not? If its happening everytime though I can remove it. Let me know. It was intended to make sure that a character was in CT if it had polymorphism window active - so that a pesky player trying to do stuff with it outside of CT would not spam chat - but there would be a record of it going wrong. During game time no character should be operated on outside of the CT after all - the active ones should all be in it. Still, if its happening when polymorphism window is not active I can see that being console spam.

mordkhaan
March 20th, 2021, 01:14
I think that will only happen if they have a polymorph ability will it not? If its happening everytime though I can remove it. Let me know. It was intended to make sure that a character was in CT if it had polymorphism window active - so that a pesky player trying to do stuff with it outside of CT would not spam chat - but there would be a record of it going wrong. During game time no character should be operated on outside of the CT after all - the active ones should all be in it. Still, if its happening when polymorphism window is not active I can see that being console spam.

With or without Polymorph ability it would seem
Also see this on first open of character sheet, not sure if part of yours?
[3/20/2021 1:13:03 PM] [WARNING] Frame tabs contains out-of-range values in BottomLeft.

SilentRuin
March 20th, 2021, 01:21
Well I'll take that out - not worth a version number update though so I'll just update DMsG with a comment for those who want it. I've seen that from normal FGU - but I assume its a generic error also - best way to EVER tell if an extension is at fault is have all extensions off. Then come up and see if the issue occurs - then come back up with the one extension your testing and see if the issue occurs. If it only does with the suspect extension then that is causing it.

mordkhaan
March 20th, 2021, 01:28
Funny you say that as was just doing that as only ext was Polymorphism so thought, hmm, will remove and retry
And yep, error still there

SilentRuin
March 20th, 2021, 01:31
Funny you say that as was just doing that as only ext was Polymorphism so thought, hmm, will remove and retry
And yep, error still there

Yeah not me - its a one time charsheet thing at initialization.

Your removed console log is in DMsG - give it a try and let me know if it fixed it. Only messages left on that should be the ones that go to system chat when they really are an issue (trying to do something with it) - not in the log simply due to display of it. Also let me know it still works in general ;)

mordkhaan
March 20th, 2021, 03:24
Yeah not me - its a one time charsheet thing at initialization.

Your removed console log is in DMsG - give it a try and let me know if it fixed it. Only messages left on that should be the ones that go to system chat when they really are an issue (trying to do something with it) - not in the log simply due to display of it. Also let me know it still works in general ;)

Sorry, dragged away from this important business!
Updated and messages are gone from console log!
Speedy service as always :)

SilentRuin
March 23rd, 2021, 23:35
V1.16 - Bug - Fixed effects for different polymorph spells that are applied to be GMONLY visible as it was displaying an icon on token giving away fact that the token was not what it seemed. Always been this way - shocked it was I who first noticed it just now.

I sell this so other people can debug this for me! What's the point if I'm the one finding all the bugs! ;)

This has been there always. While I thought I was being sneaky sending in a critter that was not what it appeared - little did I know their was an effect widget on the token declaring to all (I am shapeshifter or shapechanger or polymorph or etc.).

drempel
March 25th, 2021, 20:41
So I've put together a little campaign with werewolves, that I made three copies of, set them up as the "humanoid" version, "hybrid" version, and "wolf" version, the stat blocks reflected what the form could and could not do, and custom tokens for each form. I set each of them up to have the other two shapes in them so I could drop whatever initial shape I wanted into an encounter and then have them shapeshift as needed.

All works great in the campaign!

Then I export it as a module and import it into another campaign....and the shape shifting (while looking right in the sheet) turns into something else....like It'll say "werewolf (hybrid)" as to what it will turn into when I hit activate, but it turns into a swarm or some other creature instead. Am I pushing this extension beyond it's intention? Are exports expected to not work?

SilentRuin
March 25th, 2021, 20:54
So I've put together a little campaign with werewolves, that I made three copies of, set them up as the "humanoid" version, "hybrid" version, and "wolf" version, the stat blocks reflected what the form could and could not do, and custom tokens for each form. I set each of them up to have the other two shapes in them so I could drop whatever initial shape I wanted into an encounter and then have them shapeshift as needed.

All works great in the campaign!

Then I export it as a module and import it into another campaign....and the shape shifting (while looking right in the sheet) turns into something else....like It'll say "werewolf (hybrid)" as to what it will turn into when I hit activate, but it turns into a swarm or some other creature instead. Am I pushing this extension beyond it's intention? Are exports expected to not work?

I've done that with werewolves also as you just did - just have to be careful to remember to use the right keyword (shapechanger(dead when killed)/shapeshifter(shifts back to original form with carry over damage)) - pretty sure its shapechanger for those guys but like I said I never remember without looking.

Export of an NPC will do whatever the (not my extension) FGU stuff does. And while it will be able to be imported to another campaign I doubt it can be smart enough to know what indexes are in the new campaign and translate them. Think of it this way - forget my extension - you have some data that has an index (child) reference accessing local data. That index will not be the same anywhere but in the campaign you assigned it in. Yes, you might get lucky - and it will work if you've literally copied the campaign (I make seed campaigns for things I plan to run more than once and copy them completely when I start a new campaign of it) because all the indexes will naturally remain the same. But import something? Either with an xml or a .mod file? Then the indexes recorded in that data will very likely not match the local campaign you dropped them in because they are randomly generated by the database. So NPC (or whatever DB node your dealing with) child index 0001 in original campaign pointed to "wolf" version but in new campaign the new index for it was 0005. You run the stuff and it looks up 0001 in your new DB and comes back with "butterflies". A dangerous transformation. But it is what it is in the world of child indexes not being compatible between different DB's.

My advice is never stick something in a .mod that has any predefined polymorphism selections. But if you do - remember to clear them and reset them (which will set new indexes of local DB).

Oh and if you had referenced those critters from a manual - or another .mod - then it would have a different reference into the .mod (which does not use indexes of local DB copies) and would work in your exported .mod.

So rule of thumb - if you export something make sure it only references other .mod data - never the local DB data - or else you will suffer the fate of local child indexes not being the same in the new DB.

drempel
March 25th, 2021, 21:01
I've done that with werewolves also as you just did - just have to be careful to remember to use the right keyword (shapechanger(dead when killed)/shapeshifter(shifts back to original form with carry over damage)) - pretty sure its shapechanger for those guys but like I said I never remember without looking.

Export of an NPC will do whatever the (not my extension) FGU stuff does. And while it will be able to be imported to another campaign I doubt it can be smart enough to know what indexes are in the new campaign and translate them. Think of it this way - forget my extension - you have some data that has an index (child) reference accessing local data. That index will not be the same anywhere but in the campaign you assigned it in. Yes, you might get lucky - and it will work if you've literally copied the campaign (I make seed campaigns for things I plan to run more than once and copy them completely when I start a new campaign of it) because all the indexes will naturally remain the same. But import something? Either with an xml or a .mod file? Then the indexes recorded in that data will very likely not match the local campaign you dropped them in because they are randomly generated by the database. So NPC (or whatever DB node your dealing with) child index 0001 in original campaign pointed to "wolf" version but in new campaign the new index for it was 0005. You run the stuff and it looks up 0001 in your new DB and comes back with "butterflies". A dangerous transformation. But it is what it is in the world of child indexes not being compatible between different DB's.

My advice is never stick something in a .mod that has any predefined polymorphism selections. But if you do - remember to clear them and reset them (which will set new indexes of local DB).

Yeah I wondered if they were indexed by some sort of local ID instead of GUID (I haven't tried to do any extension programming so I'm not sure what the capbilities are). Be nice if there were GUID's you could use for NPC indexing but sounds like that's way beyond the scope of what your extension is capable of and instead would need Smiteworks to make some changes.

It's fine, it's for a one shot I'm planning on running so I'll copy the campaign and import characters for when I run it. I'll have to make the "master" file for the module just not have any of the polymorph stuff in it and if I plan to run it again in an ongoing campaign I'll load it and set up the shapeshift linkage each time I need to.

SilentRuin
March 25th, 2021, 21:04
Edited my response quite a bit so you'll probably want to reread it.

SilentRuin
March 25th, 2021, 21:06
Yeah I wondered if they were indexed by some sort of local ID instead of GUID (I haven't tried to do any extension programming so I'm not sure what the capbilities are). Be nice if there were GUID's you could use for NPC indexing but sounds like that's way beyond the scope of what your extension is capable of and instead would need Smiteworks to make some changes.

It's fine, it's for a one shot I'm planning on running so I'll copy the campaign and import characters for when I run it. I'll have to make the "master" file for the module just not have any of the polymorph stuff in it and if I plan to run it again in an ongoing campaign I'll load it and set up the shapeshift linkage each time I need to.

I'm going to ask you what happens if you do the following...

Export the garbage links as you have into a .mod file.
Bring up in new DB.
Change them to reference what NOW should be .mod file references of the the critters you made.
Export it all again.
Bring up in new DB.
Does it just work fine now? (because using .mod references not local DB references)

This is all a guess. I'm not a .mod expert as I've probably only ever experimented making one ever.

drempel
March 25th, 2021, 21:12
Edited my response quite a bit so you'll probably want to reread it.

So are you saying if I export all the NPC's without shapechange linkage into a module. Then create a campaign, create a new "initial" NPC and setup the linkage there, then export the adventure module, and then loaded both the "NPC's" module and the "Adventure" module into a campaign the shapechange linkage would work? Or am I reading your edits wrong...

SilentRuin
March 25th, 2021, 21:13
I'm going to ask you what happens if you do the following...

Export the garbage links as you have into a .mod file.
Bring up in new DB.
Change them to reference what NOW should be .mod file references of the the critters you made.
Export it all again.
Bring up in new DB.
Does it just work fine now? (because using .mod references not local DB references)

This is all a guess. I'm not a .mod expert as I've probably only ever experimented making one ever.

Actually as I think on it you may have to get trickier as each one would have to be a copy to get you to be able to write into it. Hmmm... Maybe if your really persistent and careful you can get all 3 versions to have links to the other .mod references (which are probably read only). You just have to experiment. Let me know if it works or fails.

drempel
March 25th, 2021, 21:17
Can't check at the moment, when I get a chance I'll let you know what happens :)

SilentRuin
March 25th, 2021, 21:18
So are you saying if I export all the NPC's without shapechange linkage into a module. Then create a campaign, create a new "initial" NPC and setup the linkage there, then export the adventure module, and then loaded both the "NPC's" module and the "Adventure" module into a campaign the shapechange linkage would work? Or am I reading your edits wrong...

I'm theorizing here - but the idea is how do we trick it to reference .mod read only critters.

1) Export all 3 NPCs.
2) Import them in new DB.
3) Have each NPC (new copy) choose the .mod read only version of the others for transformation.
4) Export them.
5) Import them.
6) Here is where I'm confused. Because when you attached the .mod versions they still did not have the right info in their poly data. But will they all now? Or do you have to do this again one more time?

Worth a try though.

drempel
March 25th, 2021, 21:42
I'm theorizing here - but the idea is how do we trick it to reference .mod read only critters.

1) Export all 3 NPCs.
2) Import them in new DB.
3) Have each NPC (new copy) choose the .mod read only version of the others for transformation.
4) Export them.
5) Import them.
6) Here is where I'm confused. Because when you attached the .mod versions they still did not have the right info in their poly data. But will they all now? Or do you have to do this again one more time?

Worth a try though.

For the NPC module I wouldn't bother setting up the links. Then in the adventure module I'd copy the NPC I needed for the encounter so it made a version in the adventure module and when setting up the linkage I'd have it link to the NPC Module instances. Then the adventure module NPC is what would go into the encounter.

So say I had a Werewolf named Fred who is first encountered in human form.

1. Make three versions of Fred, one for each form in the "NPC campaign".
2. I export the NPC module from the NPC Campaign
3. Load the NPC module into the Adventure Campaign.
4. Copy NPCs:Fred (Human) making an Adventure Campaign version of Fred (Human).
5. Set the linkage up so that Adventure:Fred (Human) points to NPCs:Fred (Hybrid) and NPCs:Fred (Wolf).
6. Add Adventure:Fred (Human) to the Encounter.
7. Export Adventure module
8. Load Adventure module into ongoing campaign and run encounter, hopefully the links will be preserved properly at that point since they are pointing to NPC:Fred (Hybrid) and NPC:Fred (Wolf). Since NPC:Fred(X)'s id's should be the same in both the Adventure Campaign and the Live Campaign?

At least that's what I was thinking based on your previous answers. Am I missing something that would make that not work?

SilentRuin
March 25th, 2021, 22:01
For the NPC module I wouldn't bother setting up the links. Then in the adventure module I'd copy the NPC I needed for the encounter so it made a version in the adventure module and when setting up the linkage I'd have it link to the NPC Module instances. Then the adventure module NPC is what would go into the encounter.

So say I had a Werewolf named Fred who is first encountered in human form.

1. Make three versions of Fred, one for each form in the "NPC campaign".
2. I export the NPC module from the NPC Campaign
3. Load the NPC module into the Adventure Campaign.
4. Copy NPCs:Fred (Human) making an Adventure Campaign version of Fred (Human).
5. Set the linkage up so that Adventure:Fred (Human) points to NPCs:Fred (Hybrid) and NPCs:Fred (Wolf).
6. Add Adventure:Fred (Human) to the Encounter.
7. Export Adventure module
8. Load Adventure module into ongoing campaign and run encounter, hopefully the links will be preserved properly at that point since they are pointing to NPC:Fred (Hybrid) and NPC:Fred (Wolf). Since NPC:Fred(X)'s id's should be the same in both the Adventure Campaign and the Live Campaign?

At least that's what I was thinking based on your previous answers. Am I missing something that would make that not work?

Your more an expert at this stuff than me - but sounds worth a try for sure.

drempel
March 26th, 2021, 00:07
It seemed to work. Again, I don't really know much about fantasy grounds api's and what they have available for extensions to use. When I had it link to a readonly NPC module for the shape shifting it worked. What was exported was:

<polymorphism>
<id-00001>
<class type="string">npc</class>
<DisplayText type="string">Foo (wolf) (beast (shapechanger))</DisplayText>
<Record type="string">[email protected] (NPCs)</Record>
<token type="token">tokens/[email protected] (NPCs)</token>
<valid type="number">1</valid>
</id-00001>
</polymorphism>

So it created an ID that included the module and everything was happy, once both the NPC module and Adventure module was loaded into a campaign, shape shifting worked fine. (at least for one...I didn't make a bunch to see if I just got lucky yet.)

I'm sure you already know this but for anyone else reading this: when the polymorph entry is exported and it's referencing an NPC in the same module you'd see:

<Record type="string">npc.id-00010</Record>

why that doesn't work I'm not sure, since the Encounters (battle record I believe) also can reference the same NPC in a similar way, and find it. So I wonder if there's something wrong with the extensions method of doing a lookup that doesn't work when it's an exported module doing a self reference vs external reference? Again I don't know how the API works, and maybe encounters are "special" and that's why it works.

example from an encounter:
<id-00003>
<count type="number">1</count>
<faction type="string">friend</faction>
<link type="windowreference">
<class>npc</class>
<recordname>npc.id-00010</recordname>
</link>


Anyways, if this information helps anyone at all in setting it up (two modules is kind of a kludge), or help you (SilentRuin) figure out a way of doing the lookup in a way that works for this use case then great :) If not, I learned something anyways...

SilentRuin
March 26th, 2021, 00:26
It seemed to work. Again, I don't really know much about fantasy grounds api's and what they have available for extensions to use. When I had it link to a readonly NPC module for the shape shifting it worked. What was exported was:

<polymorphism>
<id-00001>
<class type="string">npc</class>
<DisplayText type="string">Foo (wolf) (beast (shapechanger))</DisplayText>
<Record type="string">[email protected] (NPCs)</Record>
<token type="token">tokens/[email protected] (NPCs)</token>
<valid type="number">1</valid>
</id-00001>
</polymorphism>

So it created an ID that included the module and everything was happy, once both the NPC module and Adventure module was loaded into a campaign, shape shifting worked fine. (at least for one...I didn't make a bunch to see if I just got lucky yet.)

I'm sure you already know this but for anyone else reading this: when the polymorph entry is exported and it's referencing an NPC in the same module you'd see:

<Record type="string">npc.id-00010</Record>

why that doesn't work I'm not sure, since the Encounters (battle record I believe) also can reference the same NPC in a similar way, and find it. So I wonder if there's something wrong with the extensions method of doing a lookup that doesn't work when it's an exported module doing a self reference vs external reference? Again I don't know how the API works, and maybe encounters are "special" and that's why it works.

example from an encounter:
<id-00003>
<count type="number">1</count>
<faction type="string">friend</faction>
<link type="windowreference">
<class>npc</class>
<recordname>npc.id-00010</recordname>
</link>


Anyways, if this information helps anyone at all in setting it up (two modules is kind of a kludge), or help you (SilentRuin) figure out a way of doing the lookup in a way that works for this use case then great :) If not, I learned something anyways...

Again anything with a child reference will fail. That id-000xxx is a child ID reference. The refernce.npcdata.id-0010&Foo is a .mod reference. Which will be the same for different campaigns. Now - if you shift the .mod around and it stores a different name in it then the old name will no longer be referencable by those that used it. But that would require you to redefine that reference in the .mod to have that happen.

And an encounter that references something by a child ID in the database that does not exist in that database will not work.

So just remember there is no way to reference a child id From one DB in another - I mean you can - its just no guarantee its going to be the correct one unless someone does some magic translation for that data under the hood. You can look in db.xml if you like - you will see an <npc> node and children number under it. That is what that will match when you reference things like that.

drempel
March 26th, 2021, 01:33
Again anything with a child reference will fail. That id-000xxx is a child ID reference. The refernce.npcdata.id-0010&Foo is a .mod reference. Which will be the same for different campaigns. Now - if you shift the .mod around and it stores a different name in it then the old name will no longer be referencable by those that used it. But that would require you to redefine that reference in the .mod to have that happen.

And an encounter that references something by a child ID in the database that does not exist in that database will not work.

So just remember there is no way to reference a child id From one DB in another - I mean you can - its just no guarantee its going to be the correct one unless someone does some magic translation for that data under the hood. You can look in db.xml if you like - you will see an <npc> node and children number under it. That is what that will match when you reference things like that.

No I get that, hence why I was confused....but it turns out I was looking at the wrong encounter record lol. The ones that work when doing an export are prefixed with reference.npcdata. which maybe tells it to look in the module only for the id instead of the campaigns db? For a lark I tried adding that by hand to to the original module's xml that was busted but it never found the entries so no joy there. *shrugs*.

anyways got the double module workaround. How one gets the lookups to scope themselves to the module's records when a module is recording the entry during export and then finding them again is a mystery to me ATM (there's obviously some massaging of the data going on when you click the export button, for refrences to mastiff's in the MM it seems to be searching by name rather than ID in the XML).

SilentRuin
March 26th, 2021, 04:17
No I get that, hence why I was confused....but it turns out I was looking at the wrong encounter record lol. The ones that work when doing an export are prefixed with reference.npcdata. which maybe tells it to look in the module only for the id instead of the campaigns db? For a lark I tried adding that by hand to to the original module's xml that was busted but it never found the entries so no joy there. *shrugs*.

anyways got the double module workaround. How one gets the lookups to scope themselves to the module's records when a module is recording the entry during export and then finding them again is a mystery to me ATM (there's obviously some massaging of the data going on when you click the export button, for refrences to mastiff's in the MM it seems to be searching by name rather than ID in the XML).

The reference data is the .mod data - with fixed names. Usually take from whatever you loaded it up from. The local DB records have child ID's. As you started with a child ID in your original name you saved to a .mod - that will be part of its name. At least I assume that is what is happening based on the reference.npcdata.<child ID> you got in there.

webdove
April 8th, 2021, 20:40
Hi Silent, It appears from my testing today that the names in Rob2E spell coding like: "Polymorph (60) (C) =" vs the standard name like "Polymorph" are not recognized as valid enablers of your polymorphism extension.
Even though you might not see why some player would use the Rob2E spell coding for polymorph type spells, I have observed that players universally use the Rob2E versions since in virtually all cases they are better.

You might consider matching the spell name up to, but not including the first "(" as a way or removing the current incompatibility with Rob2E effects mods.
Cheers
Web

BTW, so far I have not seen the Polymorphism extension wipe any LOS memory (yay) and it enables players to select, move and see through owned NPCs just like I wanted. I actually bought it hoping it would permit perfect vision without "Party Vision and Movement" enabled and it appears to do that for me. Thanks for that!

SilentRuin
April 8th, 2021, 21:20
Hi Silent, It appears from my testing today that the names in Rob2E spell coding like: "Polymorph (60) (C) =" vs the standard name like "Polymorph" are not recognized as valid enablers of your polymorphism extension.
Even though you might not see why some player would use the Rob2E spell coding for polymorph type spells, I have observed that players universally use the Rob2E versions since in virtually all cases they are better.

You might consider matching the spell name up to, but not including the first "(" as a way or removing the current incompatibility with Rob2E effects mods.
Cheers
Web

BTW, so far I have not seen the Polymorphism extension wipe any LOS memory (yay) and it enables players to select, move and see through owned NPCs just like I wanted. I actually bought it hoping it would permit perfect vision without "Party Vision and Movement" enabled and it appears to do that for me. Thanks for that!

Correct - the keywords that trigger this are the standard WOTC standard names. NPC's have keywords in actions, traits, or spells DB entries while PC's have keywords in traits or powers DB entries. From the user perspective that means you just drop the polymorph, true polymorph, animal shapes, shape change spells in the action tab or wild shape, shapechanger, or shapeshifter in the Abilities tab for PC's - for NPC's that would be dropping all of them in the main page tab. Neither require the acual link to be dropped in - all they are looking for is the keyword - the code literally could care less what the data for that "name" is.

But no - I don't really use anything but my stuff (and now Aridhro's and in one special case - to prove my rolls truly are Will Wheaton quality type of rolls - MadNomad's stats one for one campaign). No reason except I like to be in control of the code running in my campaigns.

So no plans to support every other potential extension naming conventions out there. Just create an empty power of the of the matching expected name and you'll be fine. Or rename the one you have.

nephranka
April 15th, 2021, 03:21
I am not sure if this is a known issue or not but an error in polymorphism.lua happens when an NPC uses polymorph on itself. This was under the 5e ruleset in a clean build.

[4/14/2021 9:59:30 PM] RULESET: Dungeons and Dragons (5E) ruleset (v2021-04-13) for Fantasy Grounds
Copyright 2021 Smiteworks USA, LLC
[4/14/2021 9:59:30 PM] RULESET: Core RPG ruleset (v2021-04-14) for Fantasy Grounds
Copyright 2021 Smiteworks USA, LLC
[4/14/2021 9:59:30 PM] EXTENSION: Roboto Font Extension v1.1
[4/14/2021 9:59:30 PM] EXTENSION: Polymorphism v1.16 for Fantasy Grounds Unity \rCopyright 2021 SilentRuin \rAllow PC/NPC sheet to turn into another NPC and back again following the various polymorph spell requirements.
[4/14/2021 9:59:30 PM] MEASURE: LOAD - PART 2 - 17.399213
[4/14/2021 9:59:37 PM] [WARNING] buttoncontrol: Could not find normal icon () in control (toggle_unmask) in class (imagewindow_toolbar)
[4/14/2021 9:59:48 PM] [WARNING] Frame tabs contains out-of-range values in BottomLeft.
[4/14/2021 10:00:01 PM] [ERROR] Handler error: [string "scripts/manager_polymorphism.lua"]:2099: getValue: Invalid parameter 1

Thanks.

SilentRuin
April 15th, 2021, 04:01
I am not sure if this is a known issue or not but an error in polymorphism.lua happens when an NPC uses polymorph on itself. This was under the 5e ruleset in a clean build.

[4/14/2021 9:59:30 PM] RULESET: Dungeons and Dragons (5E) ruleset (v2021-04-13) for Fantasy Grounds
Copyright 2021 Smiteworks USA, LLC
[4/14/2021 9:59:30 PM] RULESET: Core RPG ruleset (v2021-04-14) for Fantasy Grounds
Copyright 2021 Smiteworks USA, LLC
[4/14/2021 9:59:30 PM] EXTENSION: Roboto Font Extension v1.1
[4/14/2021 9:59:30 PM] EXTENSION: Polymorphism v1.16 for Fantasy Grounds Unity \rCopyright 2021 SilentRuin \rAllow PC/NPC sheet to turn into another NPC and back again following the various polymorph spell requirements.
[4/14/2021 9:59:30 PM] MEASURE: LOAD - PART 2 - 17.399213
[4/14/2021 9:59:37 PM] [WARNING] buttoncontrol: Could not find normal icon () in control (toggle_unmask) in class (imagewindow_toolbar)
[4/14/2021 9:59:48 PM] [WARNING] Frame tabs contains out-of-range values in BottomLeft.
[4/14/2021 10:00:01 PM] [ERROR] Handler error: [string "scripts/manager_polymorphism.lua"]:2099: getValue: Invalid parameter 1

Thanks.

Never mind - duplicated it -when I did exactly what you said. Will fix it shortly.

SilentRuin
April 15th, 2021, 06:13
V1.17 - Bug - Fixed problem where NPC casting polymorphism spell on themselves caused an error. Also fixed an error when spells/powers or the spellcasting trait for an NPC was missing - now will format and report proper chat message error.

Problems have always been there and none noticed till now - good find nephranka.

nephranka
April 15th, 2021, 10:42
No problem but I cannot take credit for the find. This extension has an error with the auras extension and @randomnumber46 posted in that thread about both errors. I tested, reproduced and posted the one error that is specific to only this extension. Thank you for the quick fix. Now I am off to try to fix the conflict between this and auras.

bmos
April 15th, 2021, 13:55
I've recently taken over maintaining the 5E Aura Effects (https://github.com/bmos/FG-Aura-Effect) extension (at least until the original author has time to do so).
I've gotten reports (https://www.fantasygrounds.com/forums/showthread.php?57417-5E-Aura-Effects&p=593991&viewfull=1#post593991) that it's not compatible with this extension.

Since I don't play 5E, I'm not buying your extension so I can't really diagnose the cause myself.

That being said, it appears CoreRPG's onDeleteCombatantEffectEvent(nodeEffectList) function is being called but nodeEffectList has an invalid 'userdata' value.
This may be due to the line 2099 getValue call error (although it appears after this in the console). I'm assuming this is a result of your combatant replacement process.

SilentRuin
April 15th, 2021, 16:46
I've recently taken over maintaining the 5E Aura Effects (https://github.com/bmos/FG-Aura-Effect) extension (at least until the original author has time to do so).
I've gotten reports (https://www.fantasygrounds.com/forums/showthread.php?57417-5E-Aura-Effects&p=593991&viewfull=1#post593991) that it's not compatible with this extension.

Since I don't play 5E, I'm not buying your extension so I can't really diagnose the cause myself.

That being said, it appears CoreRPG's onDeleteCombatantEffectEvent(nodeEffectList) function is being called but nodeEffectList has an invalid 'userdata' value.
This may be due to the line 2099 getValue call error (although it appears after this in the console). I'm assuming this is a result of your combatant replacement process.

I only tend to use my stuff (I like to have direct control/knowledge of code running with FGU), but anything that I override (listed in my .txt file of page 1) I try to call the original code where possible. Obviously, this is not always possible (logic buried in middle of code you're trying to override - or anything with a template doing lua code). So as long as this extension is always calling the original code before it tries to call something it needs (if possible) we should be good. But sometimes extensions are simply not compatible (see comment above on things I can't override without replacing).

I can say for sure I do nothing with the code you mentioned. However, FGU does tend to have timing issues and other things that occur and I assume your extension, like mine, has to guard against stuff in combat tracker "disappearing" due to timing event triggers. For example,

if ActorManager.resolveActor(node) then

is a good way to prevent CT entries that have been deleted from screwing you up. Typically if you use debug prints you can see this because one minute the address pointer will be a combat tracker node - and the next it will be userdata (usually meaning something has removed it from DB and there is some sequence event triggering that held it in some list that still got sent out).

Not anything I can do if your code is not checking that. I found out early on that different extensions can whack my data - or even sequential stuff in the FGU engine can whack data I would have thought would never be sent to me if it was bad - but that is not the case. Especially in those delete triggers.

Anyway - that's just a guess. You can test it easy enough with the example I gave you gaurding for bogus nodes coming in at the point you say your seeing it (just skip it and do nothing).

bmos
April 15th, 2021, 19:40
I only tend to use my stuff (I like to have direct control/knowledge of code running with FGU), but anything that I override (listed in my .txt file of page 1) I try to call the original code where possible. Obviously, this is not always possible (logic buried in middle of code you're trying to override - or anything with a template doing lua code). So as long as this extension is always calling the original code before it tries to call something it needs (if possible) we should be good. But sometimes extensions are simply not compatible (see comment above on things I can't override without replacing).

I can say for sure I do nothing with the code you mentioned. However, FGU does tend to have timing issues and other things that occur and I assume your extension, like mine, has to guard against stuff in combat tracker "disappearing" due to timing event triggers. For example,

if ActorManager.resolveActor(node) then

is a good way to prevent CT entries that have been deleted from screwing you up. Typically if you use debug prints you can see this because one minute the address pointer will be a combat tracker node - and the next it will be userdata (usually meaning something has removed it from DB and there is some sequence event triggering that held it in some list that still got sent out).

Not anything I can do if your code is not checking that. I found out early on that different extensions can whack my data - or even sequential stuff in the FGU engine can whack data I would have thought would never be sent to me if it was bad - but that is not the case. Especially in those delete triggers.

Anyway - that's just a guess. You can test it easy enough with the example I gave you gaurding for bogus nodes coming in at the point you say your seeing it (just skip it and do nothing).I don't know enough about this extension to say for sure what is happening (since I didn't write it), but it doesn't modify those functions either. Anyway, the answer that you aren't modifying it is what I was looking for. Thanks :)

SilentRuin
April 15th, 2021, 19:52
I don't know enough about this extension to say for sure what is happening (since I didn't write it), but it doesn't modify those functions either. Anyway, the answer that you aren't modifying it is what I was looking for. Thanks :)

No problem. Pretty sure based on what was said in your thread about the error display being only problem (everything still works) that simply verifying the node before you use it is all that is required to fix it.

iceforge
April 24th, 2021, 14:28
Got this mod from DMsGuild, so far, decently satisfied with it, I do however have 2 issues that are bugging me.

#1: It gives players a "CR" thats different from their total level, but instead at their highest class level
For instance when my party's level 9 sorcerer tries to apply a CR8 beast to one of her 2 allies in a game, it gives an error, one is a Barbarian 7 / Fighter 2, where the error is "challenge rating (or level) of 8 is greater than <character name> value of 7 and is not valid for Polymorph", and on the other, who is Ranger 6 / Rogue3, it gives same error except it claims his value is 6, meaning its looking at their highest class level, rather than their total character level

#2 It doesn't appear to have a way to allow twinning; my player who plays a sorcerer is planning to use twin spell to Polymorph two targets at once, as allowed by the rules, but even if I select two targets, its apply it only to one of them. If I then apply it to the other afterwards, it disappears from the first, due to breaking concentration, which would be true for a seperate casting of the spell, but as twin metamagic allows for 1 concentration on 2 targets, that would be a neat feature to add

SilentRuin
April 24th, 2021, 14:46
Got this mod from DMsGuild, so far, decently satisfied with it, I do however have 2 issues that are bugging me.

#1: It gives players a "CR" thats different from their total level, but instead at their highest class level
For instance when my party's level 9 sorcerer tries to apply a CR8 beast to one of her 2 allies in a game, it gives an error, one is a Barbarian 7 / Fighter 2, where the error is "challenge rating (or level) of 8 is greater than <character name> value of 7 and is not valid for Polymorph", and on the other, who is Ranger 6 / Rogue3, it gives same error except it claims his value is 6, meaning its looking at their highest class level, rather than their total character level

#2 It doesn't appear to have a way to allow twinning; my player who plays a sorcerer is planning to use twin spell to Polymorph two targets at once, as allowed by the rules, but even if I select two targets, its apply it only to one of them. If I then apply it to the other afterwards, it disappears from the first, due to breaking concentration, which would be true for a seperate casting of the spell, but as twin metamagic allows for 1 concentration on 2 targets, that would be a neat feature to add

#1 is a bug and I'll fix that shortly.

#2 - had never heard of twinning before - but it does appear to be one of those very weird D&D things that can't readily be supported with automated things. I'll have to think on this one and get back to you.

SilentRuin
April 24th, 2021, 16:43
V1.18 - Bug - Fixed a problem where multi class characters were not calculating their CR (for spell rule applications) properly. Fixed. Also added new option to allow automatic concentration clearing before casting a spell to be turned off. This will not effect the stop concentration button or anything that requires concentration to be removed. Turn on this new option when you want to leave the removal of previous concentration spells to the GM. This will allow things like the spell twinning to have a workaround where the GM can turn on this option do more than one polymorph on different targets one at a time - then turn it back off to allow normal behavior. Best I can do for that sort of stuff.

Best I can do for the twinning issue - there is no easy solution - turning on/off option is best I can offer.

Milmoor
April 24th, 2021, 17:31
Could you trigger the on/off via an effect? Enable twinning effect, do stuff, end effect? Still something which must be done by hand, but more accessible.

SilentRuin
April 24th, 2021, 17:55
Could you trigger the on/off via an effect? Enable twinning effect, do stuff, end effect? Still something which must be done by hand, but more accessible.

I actually looked at that as my first thing in case it was something standard, it's not. I checked Aridhro's data, which is what I use as I'm too lazy to define effects and powers anymore, and it had no effect for that one. And there are probably other "unknown" homebrew or RAW rules that make someone want to do more than they should and this option will allow that.

For sure, even with an effect, I'm not going to track sorcerer points or go down that whole rabbit hole. As I saw a potential use in my games I was willing to implement this - that by no means implies I'm willing to add all the logic in that would be required to properly track this type of thing. And as I can't - I leave that completely to the DM to do. Not everything can/should be automated. It can lead to more problems than it solves. Without putting in a whole sorcerer point tracker validating set of logic this would just lead to problems. And I'm not going to do that unless it sometime in the future annoys me personally. That is how these extensions and features I put in get made - something annoyed me in game and I wanted something to ease the annoyance ;)

SilentRuin
April 24th, 2021, 20:48
Crap screwed something up - another fix inbound will let you know when.

Wow that was stupid - I had something highlighted in code right before I saved that I must have hit ctrl v on and stomped that one line completely - total idiot move will be fixed shortly

SilentRuin
April 24th, 2021, 20:58
STUPID cut/paste error stomping a line of code - no version update - but broke last version of this - FIXED.

You will see this error if you have the corrupted version by my fumble fingers...

"scripts/manager_polymorphism.lua":4455: attempt to compare number with nil.

Milmoor
April 24th, 2021, 21:41
Custom effects are easily defined in the player side, but I totally get you want to limit the amount of supported configurations. We'll see how things work out in the field. Paper is patient, the proof of the pudding is in the eating.

viviolay
April 26th, 2021, 00:48
Hello! Thanks for your module. I wanted to bring up a concern with a use case I had when testing with a group last night.

Our druid was able to wildshape just fine, but since they did not have access to their original actions, they couldn't do things like use their "combat wildshape" ability to heal themselves when wildshaped.

The concern also came up about how they would be able to cast spells as a late game druid since they don't have access to their original actions sheet.

Based off how the extension works (swapping chars) I can see why they wouldn't have access. We did a slight workaround using the "Floating Tabs" extension to pop our their action sheet prior to wildshaping for now.

SilentRuin
April 26th, 2021, 01:22
Hello! Thanks for your module. I wanted to bring up a concern with a use case I had when testing with a group last night.

Our druid was able to wildshape just fine, but since they did not have access to their original actions, they couldn't do things like use their "combat wildshape" ability to heal themselves when wildshaped.

The concern also came up about how they would be able to cast spells as a late game druid since they don't have access to their original actions sheet.

Based off how the extension works (swapping chars) I can see why they wouldn't have access. We did a slight workaround using the "Floating Tabs" extension to pop our their action sheet prior to wildshaping for now.

I'm not sure why they would not have access to their spells. You do realize just double clicking on the tokenfield next to the Active button will bring up the sheet shown there? For example, if you are in original form that will show as an NPC - double clicking on it will bring up the NPC sheet. If in transformed sheet - then it will show the PC/NPC that was your original shape and you can double click on it and bring up the original sheet - which will have their stuff all in it. Granted I state at top of the sheet that you should not use that sheet as it is only for reference purposes - but I gave that ability in case someone needed to access something. As we know D&D is not the clearest on all the zillions of rules and variances so that was why I provide it. You don't "change" from your current form but you should be able to click on your original spells - though you should not - there are some cases where you might need to. As in yours.

I have not tried it for targeting purposes myself - so if there is a problem let me know and I'll look into it.

SilentRuin
April 26th, 2021, 01:31
Hello! Thanks for your module. I wanted to bring up a concern with a use case I had when testing with a group last night.

Our druid was able to wildshape just fine, but since they did not have access to their original actions, they couldn't do things like use their "combat wildshape" ability to heal themselves when wildshaped.

The concern also came up about how they would be able to cast spells as a late game druid since they don't have access to their original actions sheet.

Based off how the extension works (swapping chars) I can see why they wouldn't have access. We did a slight workaround using the "Floating Tabs" extension to pop our their action sheet prior to wildshaping for now.

Just tested it by dragging Aridhro's "combat wild shape" into my spell list - turning into dire wolf - double clicking on original portrait in token field - dragging heal over the target I wanted it to apply to on map or CT entry (since this sheet is not technically in play did not want to risk it assuming the target which it might not recognize) and it worked fine.

Also you can always design a custom NPC specifically tailored for your polymorphism use if you wish. As long as it fits in the rules for the polymorphism spell/feature/trait your using.

As a DM designing fun encounters for my players wildshape is my least used polymorphism aspect. More a player used aspect.

SilentRuin
April 27th, 2021, 21:04
V1.19 - FGU update required extension code to change. As long as FGU has bug with exceeded hit points I have to override the 5E\scripts\manager_action_damage.lua:applyDamage code. And when it changes I'm often broken by the changes. This fixes the most recent update changes.

DO NOT GET THIS UPDATE IF YOU HAVE NOT GOTTEN THE MOST RECENT UPDATES FROM 4/27/2021 in FGU. Basically, a surprise change occurred - fortunately I watch for these things. I'm hoping they fix the bug in applydamage with intant death and exceeded hit points but as I asked for that last year I'm not holding my breath. Basically this means I have to override this entire function just to fix that bit in the middle so that I can get the exceeded damage in all cases - and when that function changes - I have to update with it. A lot of times there is simply not warning - it just goes LIVE and POW!

Let me know if this works if you get a chance.

SilentRuin
April 29th, 2021, 05:44
V1.20 - FGU update fixed 5E\scripts\manager_action_damage.lua:applyDamage code so that polymorphism no longer risks instability of overriding that function. WOOT! Less work for me on updates and less RISK for users!

An extreme THANK YOU to Smiteworks for fixing the INSTANT DEATH exceeded damage message!

Drogo210
May 11th, 2021, 17:46
Hi,

first of all, this is a very nice extension but I think the shapechanger (NPC) is bugged or I am doing something wrong because it does not change the HP in CT.

The extension does work for all the rest.

46521

SilentRuin
May 11th, 2021, 19:17
Hi,

first of all, this is a very nice extension but I think the shapechanger (NPC) is bugged or I am doing something wrong because it does not change the HP in CT.

The extension does work for all the rest.

46521

All of the polymorph spells/features/traits that I support have RAW 5E rules applied to them with the exception of feature(PC)/trait(NPC) shapechanger and shapeshifter. These two have no rules on what something can turn into and only differ in that shapechanger form will (like lyncanthropes) have same HP and wounds in its different forms and drop dead dead when killed, and shapeshifter will have whatever form HP it has and will carryover damage to original form HP when it is killed in its polymorphed form.

Those are how those function.

Drogo210
May 11th, 2021, 19:33
All of the polymorph spells/features/traits that I support have RAW 5E rules applied to them with the exception of feature(PC)/trait(NPC) shapechanger and shapeshifter. These two have no rules on what something can turn into and only differ in that shapechanger form will (like lyncanthropes) have same HP and wounds in its different forms and drop dead dead when killed, and shapeshifter will have whatever form HP it has and will carryover damage to original form HP when it is killed in its polymorphed form.

Those are how those function.

I do not see how your answer fits my question :). Maybe I did not explain myself. What I was trying to say was that if I use shapechanger on an NPC with original HP 27 to a Werewolf, for example, with HP 58, stats and power are correctly reported in both NPC panel and CT but for HP only the NPC panel is correct because the HP in the TC is unchanged (27 HP). To me it sounds strange...but if you say this is how the extension works you are the creator and I'll take your word as correct.

Polymorph, Wild shape, True Polymorph etc works just fine. I hope I explained myself

SilentRuin
May 11th, 2021, 19:54
I do not see how your answer fits my question :). Maybe I did not explain myself. What I was trying to say was that if I use shapechanger on an NPC with original HP 27 to a Werewolf, for example, with HP 58, stats and power are correctly reported in both NPC panel and CT but for HP only the NPC panel is correct because the HP in the TC is unchanged (27 HP). To me it sounds strange...but if you say this is how the extension works you are the creator and I'll take your word as correct.

Polymorph, Wild shape, True Polymorph etc works just fine. I hope I explained myself

And yet, I answered your exact question fully. I'll try to reword the same answer one more time, but please reread my last answer carefully first.

Lynchanthropes - shapechangers - have ONE HP.

Human werewolf of 27 HP 5 Wounds - turns into Werewolf of 27 HP 5 wounds. If it dies - its dead. That's how it works. You are simply telling me - it works as designed. Everything has its own rules - I explained the one you asked about and in fact explained another in addition that would do what you thought this one would do (mistakenly).

Not sure how I can explain it any more clearly.

Drogo210
May 11th, 2021, 20:05
Got it! Thanks

iceforge
May 11th, 2021, 20:20
Got it! Thanks

Also, if you missed it, he also told you that the function you are looking for, i.e. the ability to change into any custom/selected form, is called shapeshifter

So if you create a custom monster "Hafdrufi" that can change into an Orc, gained the hit points of the Orc when it does so, you give it an ability called "Shapeshifter"

If you want something that just take on another creatures apperance, but retain its original hit points, you give it the ability "Shapechanger"

Also, super kudos to SilentRuin! Your update absolutely works and fixed my twin-spell issue with the ext! Superb service!

DMMoseley23
May 12th, 2021, 03:03
I will also throw some kudos to SR for this extension. I am running Storm King's Thunder and there is a certain part where it's key that a Giant be the one to perform a certain function, yet no giants around. After the lightbulb went off in my player's head, he announced his intention to shapeshift into said giant and not having used the extension up to this point, was quite astonished to see his token vanish/morph into a Hill Giant and his character sheet gain all the abilities of the giant. I could hear the collective jaws drop of the other playersover discord. Fun was had by all.

SilentRuin
June 6th, 2021, 19:32
V1.21 - Bug - Non Circle Form PC druids for wild shape were not applying level limits on what they could transform into properly. Fixed. The PC druid wildshape was not applying the limits properly for beasts that could swim (level 4) or fly (level 8). It now checks "speed" attribute for keyword swim or fly to enforce this limitation. Fixed. All NPCs that use wildshape still (as they always have) depend on DM to apply any limits themselves (as there is no druid level data to apply in NPC data set).

I swear, I'm the only one that tests this stuff. These bugs have been here since day 1.

Arghun
June 11th, 2021, 21:20
V1.21 - Bug - Non Circle Form PC druids for wild shape were not applying level limits on what they could transform into properly. Fixed. The PC druid wildshape was not applying the limits properly for beasts that could swim (level 4) or fly (level 8). It now checks "speed" attribute for keyword swim or fly to enforce this limitation. Fixed. All NPCs that use wildshape still (as they always have) depend on DM to apply any limits themselves (as there is no druid level data to apply in NPC data set).

I swear, I'm the only one that tests this stuff. These bugs have been here since day 1.
Hello SilentRuin, is it me or the Druids can't wildshape anymore ? I'm running 1.21 and now when I drag a creature of CR1/8 on my level 5 druid I get the message: Baazrag challenge Rating (or level) of 1/8 is not valid for Druid level 0 for Wild Shape.

The druid is level 5, not zero... am I missing something ? The new version of the extension removed all three forms that were previously working (highest CR is 1/2 which should be fine with a level 5 druid but the lowest is ... CR0 is doesn't work either).

SilentRuin
June 11th, 2021, 22:39
Hello SilentRuin, is it me or the Druids can't wildshape anymore ? I'm running 1.21 and now when I drag a creature of CR1/8 on my level 5 druid I get the message: Baazrag challenge Rating (or level) of 1/8 is not valid for Druid level 0 for Wild Shape.

The druid is level 5, not zero... am I missing something ? The new version of the extension removed all three forms that were previously working (highest CR is 1/2 which should be fine with a level 5 druid but the lowest is ... CR0 is doesn't work either).

Let me check

SilentRuin
June 11th, 2021, 22:54
Hello SilentRuin, is it me or the Druids can't wildshape anymore ? I'm running 1.21 and now when I drag a creature of CR1/8 on my level 5 druid I get the message: Baazrag challenge Rating (or level) of 1/8 is not valid for Druid level 0 for Wild Shape.

The druid is level 5, not zero... am I missing something ? The new version of the extension removed all three forms that were previously working (highest CR is 1/2 which should be fine with a level 5 druid but the lowest is ... CR0 is doesn't work either).

I'm not seeing an issue on my side. The change was that previously things that could fly or swim were being allowed to be used before their proper level so that was prevented - a chat message should always state that. When I have a druid of level 10 - all things work - when I have a druid of level 3 none of those things will work. And of course NPC's don't check anything for wildshape and is left to DM to decide what can be transformed into.

And nothing has changed about it needing to be a druid of level X to do anything. That message is stating Baazrag is a level 0 druid (meaning not a druid) which should never work. If there is something I'm not understanding see if you can contact me on discord and we'll see what is what.

[Post edit]
Just had someone independently try V1.21 and its working fine. It seems there is something off with your character as those level checks look to see what level the Druid class is defined as - in multiclass of course that will be whatever the druid level is.

SilentRuin
June 11th, 2021, 23:44
V1.22 - Feature - added new option "Validate Wildshape Rules (if off limited by DM)" which will be "on" by default (original behavior). If you turn it off it means any wildshape restrictions will no longer be applied and host can put in any NPC they choose for transformation. Turning it back on will immediately start applying the rules again.

People have been asking for this for a while so decided - what the heck why not.

Arghun
June 12th, 2021, 02:55
I'm not seeing an issue on my side. The change was that previously things that could fly or swim were being allowed to be used before their proper level so that was prevented - a chat message should always state that. When I have a druid of level 10 - all things work - when I have a druid of level 3 none of those things will work. And of course NPC's don't check anything for wildshape and is left to DM to decide what can be transformed into.

And nothing has changed about it needing to be a druid of level X to do anything. That message is stating Baazrag is a level 0 druid (meaning not a druid) which should never work. If there is something I'm not understanding see if you can contact me on discord and we'll see what is what.

[Post edit]
Just had someone independently try V1.21 and its working fine. It seems there is something off with your character as those level checks look to see what level the Druid class is defined as - in multiclass of course that will be whatever the druid level is.

I understand. It was working before within the same campaign and the same character. The Baazrag and the other creatures are all beasts and the Druid is single classed. Will copy the campaign over and run some tests. Thanks!

Leprekorn
June 12th, 2021, 07:21
Are you running any other extensions

Arghun
June 12th, 2021, 14:55
V1.22 - Feature - added new option "Validate Wildshape Rules (if off limited by DM)" which will be "on" by default (original behavior). If you turn it off it means any wildshape restrictions will no longer be applied and host can put in any NPC they choose for transformation. Turning it back on will immediately start applying the rules again.

People have been asking for this for a while so decided - what the heck why not.

I was able to repro the issue on 1.21, will upgrade to 1.22 and test.

BRAND new druid PC, only extension loaded is Poly.

Leveled up druid to level 5.

I was able to drag a creature from the PHB. Worked fine.

I then clicked on the box below the "Select Polymorph" one where you list the forms that are registered for the player and clicked the only one that was there: Wild Shape.

Since then it won't accept any shape and the shape I had dragged before dissapeared ...

SilentRuin
June 12th, 2021, 15:37
I was able to repro the issue on 1.21, will upgrade to 1.22 and test.

BRAND new druid PC, only extension loaded is Poly.

Leveled up druid to level 5.

I was able to drag a creature from the PHB. Worked fine.

I then clicked on the box below the "Select Polymorph" one where you list the forms that are registered for the player and clicked the only one that was there: Wild Shape.

Since then it won't accept any shape and the shape I had dragged before dissapeared ...

We will have to get together on this as I can't duplicate it, I must be missing something key in the reproduction steps as my "Ape" and "Baboon" test NPC cases worked fine when I reselected Wild Shape.

If I pick Wild Shape - or any of the other spell/feature/traits in the lower drop down box then it will limit the selection of the upper drop down to only things that match the criteria for what you selected (its one list covering them all but only things that match the current selected box will show up).

So what happens when you pick standard WOTC NPC's like Ape and Baboon and drop them into your token field? Do they work - does selecting the Wild Shape then just leave them there and still able to transform? If so, then we are looking at a problem with the NPC's your using and if they match the relevant criteria for Wild Shape - or something else is going on that I've just not duplicated.

PM me if you want to setup a discord chat sometime this weekend - and I'll see if we can get together.

[Note: I assume this is not something crazy like unzipping things in the delivery directory which is evil incarnate ;) Mention that just in case, you never know. ]

Arghun
June 12th, 2021, 19:43
I've disabled the check and it works now. Will make time tomorrow to test things with you if you want.

BTW I've used standard PHB monsters to test (like rat and such and still same issue).

SilentRuin
June 12th, 2021, 20:41
I've disabled the check and it works now. Will make time tomorrow to test things with you if you want.

BTW I've used standard PHB monsters to test (like rat and such and still same issue).

And your sure you have nothing unzipped in your FGU ruleset/extension directory also? I'm at a loss to know how this is only happening to you.

Arghun
June 12th, 2021, 21:21
And your sure you have nothing unzipped in your FGU ruleset/extension directory also? I'm at a loss to know how this is only happening to you.

Yes I'm very sure of that I never unzip anything in my FGU folders. Will test with a brand new campaign to rule out something weird in the DB.

Will let you know tomorrow, I'm dm'ing right now

Arghun
June 13th, 2021, 17:58
Yes I'm very sure of that I never unzip anything in my FGU folders. Will test with a brand new campaign to rule out something weird in the DB.

Will let you know tomorrow, I'm dm'ing right now

Test scenario:

brand new 5E campaign, only extension loaded is Poly.
PHB loaded
FGU version up to date
Druid is level 5 (leveled up by dragging the class)

Error Message I get int the chat: "Wildshaper: Rat challenge Rating (or level) of 0 is not valid for Druid level 0 for Wild Shape"

Ok so the problem is tied to the fact that ONCE you click on a filter then you can no longer remove it. I don't know why I had to click on it on the player's sheet. Since it's a druid I clicked on Wild Shape (nothing was selected in the filter before that).

Since there is NO way to clear the filter it breaks the functionality (the druid is NOT a Circle of the Moon druid so that might explain why I SHOULDN'T select Wild Shape as a filter).

I also tested with a Circle of the Moons druid, hoping it would allow me to select Wild Shape as a filter but selecting it BREAKS the functionality.

What's the purpose of that filter if when you select it breaks the functionality ?

Please give me your feedback. If you don't run into this then I'll need to reset my brains I guess.

Leprekorn
June 13th, 2021, 18:09
Have you added them to the combat tracker?

Arghun
June 13th, 2021, 19:09
Have you added them to the combat tracker?

I have, if you don’t (as far as I remember) you dont even get the charsheet populated with the feature.

Leprekorn
June 13th, 2021, 19:10
Yeah if you add a spell like polymorph to the character does you filter let you choose between the two?

SilentRuin
June 13th, 2021, 19:34
Test scenario:

brand new 5E campaign, only extension loaded is Poly.
PHB loaded
FGU version up to date
Druid is level 5 (leveled up by dragging the class)

Error Message I get int the chat: "Wildshaper: Rat challenge Rating (or level) of 0 is not valid for Druid level 0 for Wild Shape"

Ok so the problem is tied to the fact that ONCE you click on a filter then you can no longer remove it. I don't know why I had to click on it on the player's sheet. Since it's a druid I clicked on Wild Shape (nothing was selected in the filter before that).

Since there is NO way to clear the filter it breaks the functionality (the druid is NOT a Circle of the Moon druid so that might explain why I SHOULDN'T select Wild Shape as a filter).

I also tested with a Circle of the Moons druid, hoping it would allow me to select Wild Shape as a filter but selecting it BREAKS the functionality.

What's the purpose of that filter if when you select it breaks the functionality ?

Please give me your feedback. If you don't run into this then I'll need to reset my brains I guess.

I've duplicated it - let me see what is going on - likely a new version coming out.

SilentRuin
June 13th, 2021, 20:14
I've duplicated it - let me see what is going on - likely a new version coming out.

Ok I was mistaken - the only way I "duplicated it" was to have a test character that was not a druid that I added Wildshape - then I got the 0 druid level. Once I debugged and realized my mistake I made it a mutli class level 4 druid - and then all the checks worked - it was still blank on the bat/bear/direwolf I had loaded but that was for the reasons the chat told me - bat can fly (level 4 is a no go), bear is level 1 (level 4 is a no go), dire wolf is also to high.

So... I'm stuck trying to duplicate this again. As in I cannot.

Here is my example:
1) had a sorcerer level 4 that I dropped Wild Shape in Abilities
2) Had all the other polymorph things on this PC already
3) Had bat/bear/dire wolf defined in list - which each spell would filter based on its rules (they all showed).
4) Selecting Wild Shape in filter basically gave me nothing and told me the druid level was 0 - which was correct - I was not a druid.
5) I went into main page and into level field and added in druid level 4 as multiclass by dropping the class in there.
6) Selected Wild Shape - and now it worked - and told me once AGAIN that the bat/bear/dire wolf were invalid and had no choices (per reasons I listed above).

So.... still lost on trying to duplicate what your telling me.

Arghun
June 13th, 2021, 21:35
Ok so could it be linked to the class itself ?

My class is a custom one derived from the druid class. Name is different (the character has always had that class and it was working with your extension before).

Have you introduced a class check lately ?

SilentRuin
June 13th, 2021, 22:34
Ok so could it be linked to the class itself ?

My class is a custom one derived from the druid class. Name is different (the character has always had that class and it was working with your extension before).

Have you introduced a class check lately ?

Like FGU itself its looking for the class_value_druid string table in the ruleset - which is "Druid". Anything else is NOT a druid. And that has been since day 1 - though there was a bug keeping it from working, but you'd have to check the recent versions to see when it was noticed and fixed.

Arghun
June 13th, 2021, 23:26
Like FGU itself its looking for the class_value_druid string table in the ruleset - which is "Druid". Anything else is NOT a druid. And that has been since day 1 - though there was a bug keeping it from working, but you'd have to check the recent versions to see when it was noticed and fixed.

That explains it... there definitely WAS a bug because it's always been working. Thank you for taking the time to work on this with me. At least I now understand why it's broken for me.

What I don't understand is FGU allows people to create new classes. Where in the code does FGU prevent anything ? My druid is a clean copy of the druid, the only difference is that it has some different Circles than the standard one. I gave it a slightly different name because of that reason. I's called Druid (Athasian), nothing more. Will try and rename the class 'display name on the character and see whether it changes anything.

Arghun
June 14th, 2021, 00:07
Like FGU itself its looking for the class_value_druid string table in the ruleset - which is "Druid". Anything else is NOT a druid. And that has been since day 1 - though there was a bug keeping it from working, but you'd have to check the recent versions to see when it was noticed and fixed.

Renaming the Class on the Character sheet solves it...

This line I believe is why it broke... I still don't understand why it changed.


if sClassName == Interface.getString("class_value_druid") then

Not sure if it's possible to change the class name check with 'contains' druid (like it would be valid for 'Archdruid' or 'Druid of whatever'.

If too complicated then I'll just revert to turning off the check in the options :-)

I appreciate you taking the time to get to the bottom of this. Since it was working before I assumed it wasn't linked to the class name. I should have specified it before and would have wasted less of your time.

SilentRuin
June 14th, 2021, 00:53
Renaming the Class on the Character sheet solves it...

This line I believe is why it broke... I still don't understand why it changed.



Not sure if it's possible to change the class name check with 'contains' druid (like it would be valid for 'Archdruid' or 'Druid of whatever'.

If too complicated then I'll just revert to turning off the check in the options :-)

I appreciate you taking the time to get to the bottom of this. Since it was working before I assumed it wasn't linked to the class name. I should have specified it before and would have wasted less of your time.

I go by the RAW 5E rules when those validations are in effect. Druid is the class - there is no "archdruid" class. That's more of a level. And if your homebrew - then your recourse is to turn off validation. Because for sure I'm not changing the validation to support non RAW 5E rules. You'll find lots of places in FGU look to the class name to determine certain behaviors - especially in class wizard so beware. For my stuff just turn off the validation and let the DM decide what they can turn into.