It is because there is another resource being tracked. You need to change the total number of Major Hindrances as well as the total number of Hindrances.
There is a Simple for Hindrances. I made mine replace ThingID valHinders, but you might be able to have the timing be 8005 or something and effectively override it. You can make a copy of valHinders and modify what you want.
I will show my code, which has two effects:
1) It grants a total of 4 Hindrance points, but does not care if you select 4 Minors, 2 Majors, 3 Minors, 1 Major or 2 Minors, or whatever.
2) It allows me to change the total number of possible Hindrance points based on an option as chosen in the Configure Hero, where I created a radio button between a range, 3, 4, 5, or 6.
3) It allows an exception that grants a higher amount, in this case a Racial Property called Variable Mutation (It is technically a Hindrance but has no cost as the Hindrances chosen because of it create the points themselves).
It sounds like you want to do something like this. How are you making it grant the free Edge for the Major Hindrance? Your chosen method will determine the "hows". My personal preference is to let the player spend the points, but maybe you do not want them to possibly get an attribute point. So if you want to go by your initial plan, my recommendation for this is to have a mechanic that watches for it. It would look for the total Hindrance points and then reduce the total rewards points by 2 while granting an edge point. Then inside the simple have it allow for a higher value of total hindrance points (my limitation value) and increase the major by 1. You would not need to play the balancing game that I am doing as it would not affect the total for Minor. Again, just use a copy of the original to steer your correctly.
Validation 8000
Code:
var major as number
var minor as number
var limitation as number
limitation = 4
~ Take into account the options in Configure Hero
if (hero.tagis[source.Hinder3] = 1) then
limitation -= 1
endif
if (hero.tagis[source.Hinder5] = 1) then
limitation += 1
endif
if (hero.tagis[source.Hinder6] = 1) then
limitation += 2
endif
if (hero.tagis[source.Hinder8] = 1) then
limitation += 4
endif
~ Variable Mutation
if (hero.tagis[RacialProp.rpVarMutnt] = 1) then
limitation += 4
endif
~iterate through all hindrances and tally up the number of majors and minors
~Note: We must only tally hindrances that are user added and not an advance.
foreach pick in hero from Hindrance
if (eachpick.isuser + !eachpick.tagis[Advance.?] >= 2) then
if (eachpick.field[hinMajor].value = 0) then
minor += 1
else
major += 2
endif
endif
nexteach
~determine our maximum number of major and minor hindrances
var max_major as number
var max_minor as number
~RDS SWD Max Major and Max Minor are now dynamic values
max_major = minimum(major, limitation)
max_minor = minimum(minor, limitation - max_major)
~if we have no more than our maximum major and minor hindrances, we're good
if (major <= max_major) then
validif (minor <= max_minor)
endif
~synthesize our validation message appropriately
@message="Maximum of " & max_major & " points worth of major and " & max_minor & " points worth of minor hindrances allowed"
~mark associated tabs as invalid
container.panelvalid[edges] = 0
~assign a tag to the hero to indicate the invalid state
~Note: This is used to color highlight the title above hindrances on the tab.
perform hero.assign[Hero.BadHinders]
There are two eval scripts in the simple. I left the second one alone.