its okay Surf, math is anyone's game
and we can't all be uber-mathletes
(you might enjoy Bartlett's "The Essential Exponential!" - a wonderful pedagogical text for most kinds of math hehe)
I'm not much better when it comes to math or programming -
basically, you could solve it with nested ifs
(as there are a limited discontinuous range of values, and hence nPr, finite combos of inputs).
For HP, you can do a simple 1pt per 10HP rule,
with if(a2<=|intrange|, quotient[a2/10],iff(a2/>=(rangeMax300, "not a possible input")))
and anything you put in A2 will translate into B2 as the proper points.
For a different sequence past 100HP, i've found you can't subnest simultaneous operators in Excel (I'm used to AIXGL and AIXML)
so, you have to specify the b2 field as a scalar, and then you can multi-op on it for
as limit |user input| approaches infinite hp, |points increment| = A000001 from OEIS
(you could even use a 'get.that' command if you wanted to be super lazy and unsecure...)
So, you can make it exponentially prohibitive per 10HP increment over 100HP...
same for DEF, you can make defense higher than 25 be exponentially prohibitive in cost.
You could also solve each of those boxes as an array, but that will make your spreadsheet look a little messier
have the array be say
100HP = no penalty.
110HP = 1pt,
120HP = 3 points
130HP = 5 points...
I am working on having the read command
actually read a CE verbatim and convert it weighted on what it does...
this is annoying in Excel though, as its a powerful framework - I'm just a sh1te programmer in it hehehe
for DEF,
nested ifs...
if(b3=14,0,if(b3=15,1,if(b3=16,2 etc...
you could do a sum.that range, and make it proportional to whatever input is +1 etc,
but nested ifs are quick n easy.
if user input anything outside a defense range in 0-25, then "not a SWMinis defense" is displayed
same with ATK:
ATK ranges from 0 to +18 as an unmodified base attack,
so thats only 19 combos for nested ifs.
Damage is easy.
damage is 0,10,20,30,40.
if(b|damagecell|=0,-3pts,if(b|dmgcell|=10,0pts,if(b|dmgcell|=20,+5pts,if(b|dmgcell=30,+8pts,if(b|dmgcell|=40,+15pts))))
then, checkIfXor|number.of.SpecialAbilities > 5, +1pt per 1 whole integer over |5|
same for force powers,
checkIfXor|number.of.ForcePowers > 3, +1,3,5... per 1 whole integer over |3|
this way, it becomes infinitely expensive to have a number of special abilities or force powers which approach infinity...
CE costing will simply be a "read.that.|textstring|",
and if it says "6 squares" say, 1pts,
boardwide is +5pts,
per 1pt of increase to ATK or DEF will be 1pt,
and per 10dmg increase, +5pts.
Costing the sum of the whole piece relative to what it does for the meta synergies will be harder to code for -
thats why SWMPlay's ideas were so awesome to count for those... it was a Conway manifold approach,
so it'd look up the others and do an average...
then, at Bx'th cell,
its the simple ol' beauty
=sum(B|O'|:B|x-1th|)
bob's your uncle.
If only someone could integrate that counting program with
Bloomilk's database, so we could then also have an additional line
which compares the price of your generated mini,
with the average of similarly-abilitied' actual figures from the database,
and told you how close the average cost was to the cost your figure has,
whether your custom was overcosted or undercosted relative to that average,
and if so, by how much --- that would be an awesome ability to have,
even as a guesstimation to help narrow down the playtesting time.
How close do you think your Spreadsheet generator/that WotC generator's costs are to WotC stats or to VSets?
where do you suspect the 'discounts' are coming from, to explain the 'competitive costing' of VSet figures?
I think most of the discounts come from the removal of penalty of SAs over 5, force powers greater than a certain magnitude etc,
and the removal of CEs costing, as well as more of the SAs being negative abilities (like single shot blaster) etc,
so that's how VSet figures are slightly cheaper than WotC figures with otherwise similar
HP
DEF
ATK
and DMG breakdowns.