No doubt I'm getting deep into the weeds here but I may as well see if anyone here might have some ideas on this one.
In 50 Fathoms a character is allowed at character creation time to ignore the "Seasoned" Rank requirement on any 1, and only 1, Edge. I've got it figured out how to check for character creation and how to set the Seasoned rank outside of the Minimum Rank drop-box (just set that to novice). What I can't figure out is the syntax for checking that only 1 of those ranks was picked.
Since I'm not using MinRank I can't refer to that tag (it's set to Novice for the rest of this to work) but I noticed in the tags.1st file that the Helper group is set to be "dynamic", which means I can create a tag under that group on the fly. So for my Seasoned edges I set a Tag with a Group of Helper, an ID of 1, and I set Name and Abberviation to Seasoned, so it looks just like the MinRank tag does (why not.)
So, my setup is that MinRank is set to Novice, and I have a new Helper.1 tag to denote Seasoned edges. Then in Pre-reqs I set a message of "Seasoned rank required.", which is the same message that MinRank would normally generate if the character is novice and I set the following:
Now I also want to say that this is valid if we are at character creation. Normally I would just add to the above the following line if it's always valid during character creation:
But, I want to check first to see if the character has already picked any other Edge where the Helper.1 tag is already set on it, so I think I need to encase my validif statement in a foreach loop something like this:
So we create a variable called "scount" search through the hero for a Helper.1 tag and if we find any add 1 to scount. Then we check for the character creation state and if we are not in that state add 1. Finally we check the scount variable and if it's equal to 0 then everything here is valid, so we won't show the "Seasoned rank required." warning and it won't be greyed out.
Of course my only problem is it doesn't seem to work (and maybe I'm overcoding it anyway). Specifically it does work to show valid at character creation (and not afterwards) but it doesn't seem to be counting my Helper.1 tagged Edges. Anyone have any ideas on what else I could try or a better way to do this?
There is also one other "gotcha" with this method, in that everything is valid when you go to pick it at character creation, but as soon as you have picked it the Seasoned edge instantly become invalid where it shows up on the list. However if I remove the Helper.1 Tag entry I made then it stays valid (so apparently it was counting itself against itself once picked, so presumably just changing my validif scount=0 line to scount >=2 would fix that) but then goes invalid as soon as you switch to character Advance mode. There is a tag for Helper.IgnoreRank that is supposed to ignore the MinRank field and maybe that is what I would need to try and work with instead (although I can't get that to work either) so I'm not really sure how to handle this and it's driving me crazy!
In 50 Fathoms a character is allowed at character creation time to ignore the "Seasoned" Rank requirement on any 1, and only 1, Edge. I've got it figured out how to check for character creation and how to set the Seasoned rank outside of the Minimum Rank drop-box (just set that to novice). What I can't figure out is the syntax for checking that only 1 of those ranks was picked.
Since I'm not using MinRank I can't refer to that tag (it's set to Novice for the rest of this to work) but I noticed in the tags.1st file that the Helper group is set to be "dynamic", which means I can create a tag under that group on the fly. So for my Seasoned edges I set a Tag with a Group of Helper, an ID of 1, and I set Name and Abberviation to Seasoned, so it looks just like the MinRank tag does (why not.)
So, my setup is that MinRank is set to Novice, and I have a new Helper.1 tag to denote Seasoned edges. Then in Pre-reqs I set a message of "Seasoned rank required.", which is the same message that MinRank would normally generate if the character is novice and I set the following:
Code:
~Checking for Rank Seasoned (or higher), this is how to do it outside
~of the "Minimum Rank Required" drop-down box
validif (herofield[acRank].value > 0)
Now I also want to say that this is valid if we are at character creation. Normally I would just add to the above the following line if it's always valid during character creation:
Code:
validif (state.iscreate <> 0)
But, I want to check first to see if the character has already picked any other Edge where the Helper.1 tag is already set on it, so I think I need to encase my validif statement in a foreach loop something like this:
Code:
var scount as number
scount = 0
foreach pick in hero where "Helper.1"
scount += 1
nexteach
if (state.iscreate = 0) then
scount +=1
endif
validif (scount = 0)
So we create a variable called "scount" search through the hero for a Helper.1 tag and if we find any add 1 to scount. Then we check for the character creation state and if we are not in that state add 1. Finally we check the scount variable and if it's equal to 0 then everything here is valid, so we won't show the "Seasoned rank required." warning and it won't be greyed out.
Of course my only problem is it doesn't seem to work (and maybe I'm overcoding it anyway). Specifically it does work to show valid at character creation (and not afterwards) but it doesn't seem to be counting my Helper.1 tagged Edges. Anyone have any ideas on what else I could try or a better way to do this?
There is also one other "gotcha" with this method, in that everything is valid when you go to pick it at character creation, but as soon as you have picked it the Seasoned edge instantly become invalid where it shows up on the list. However if I remove the Helper.1 Tag entry I made then it stays valid (so apparently it was counting itself against itself once picked, so presumably just changing my validif scount=0 line to scount >=2 would fix that) but then goes invalid as soon as you switch to character Advance mode. There is a tag for Helper.IgnoreRank that is supposed to ignore the MinRank field and maybe that is what I would need to try and work with instead (although I can't get that to work either) so I'm not really sure how to handle this and it's driving me crazy!
Last edited: