:: stat_sklattrib
<<set $here = 'stat_sklattrib'>>
<<set $ARGS = $location_var[$here]>>
<!-- !!********************  Warning!  ********************-->
<!-- !!The code in this location is both complex and very fundamental to most systems!-->
<!-- !!Use EXTREME caution if modifying!-->
<!-- !!Ask if understanding is required-->
<!-- !!****************************************************-->
<!-- !!For Users;-->
<!-- !! For any Attribute or Skill, outside of "stat_sklattrib", the only things that get used are;-->
<!-- !! the variables themselves, pcs_"name", for checks-->
<!-- !! "name"_exp to replace straight adds (but the proper way to add exp is to use the gs 'exp_gain', '"name"' since that will modify the gain for the player charcters conditions, i.e. gs 'exp_gain', 'stren',1 instead of stren_exp += 1.)-->
<!-- !! "name"_deg to replace losses (i.e. stren_deg -= 1 instead of pcs_stren -= 1)-->
<!-- !! "name"_muta if setting higher attribute limits due to "mutations" ("name"_muta replaces the "mutagen" variables)-->
<!-- !! And checking "name"_lvl if and only if it's being used to check if an NPC/Item can still train the PC. That is also the only time there should be a gate on "name"_exp += x and should be a minimum of += rand(3,5). No other gates should be used.-->
<!-- !! The others are used in the code as controllers and modifying anything except "name"_exp, "name"_deg, and "name"_muta outside of this routine can break things-->
<!-- !! Attributes & Skills-->
<!-- !! $att_name[$x] and $skl_name[$x]; an array that stores the name of each attribute variable-->
<!-- !! For each attribute and skill variable, there are the following sub-variables-->
<!-- !! _lvl, is the base level of an attribute/skill before adjustment-->
<!-- !! _lvlst, level yesterday, used for error checking-->
<!-- !! _deg is the days to attribute/skill loss and is reset on XP gain-->
<!-- !! _exp is the amount of total XP gained so far for each and will replace all the gains in the rest of the code-->
<!-- !! _mem is the amount of XP yesterday-->
<!-- !! _muta replaces the assorted mutagen variables for attributes, this is to replace the 30 lines of code with 1-->
<!-- !! _flr, this is the floor through which an attribute/skill cannot fall-->
<!-- !! _xpnxt is the XP required to reach the next level-->
<!-- !! Traits-->
<!-- !! $traitattskl[$x], this stores a list of all traits that can affect attribute or skill advancement or degradation, if a trait does not, it does not go in this array-->
<!-- !! For each trait that can affect attribute or skill advancement or degradation;-->
<!-- !! "trait"[$y1] = 1 if affecting an attribute or = 2 if affecting a skill;-->
<!-- !! "trait"[$y2] = the index number in $att_name or $skl_name that corresponds to the skill/attribute to be effected;-->
<!-- !! "trait"[$y3] = indicates if it effects XP required to level by adjusting the base rate as a plus to the default of 60-->
<!-- !! "trait"[$y4] = indicates if it effects degradation rate by adjusting the base rate as a plus to the default of 60 for attributes or 90 (3/2) for skills-->
<!-- !! the 'y' in the above is for traits that affect more than 1 skill or attribute, note they must be contiguous 0x, 1x, 2x, etc. there can be no gaps-->
<!-- !! Note, the effects of multiple traits on a single skill or attribute stack-->
<!-- !!Attribute variable list-->
<<setinit $att_name[0] = 'stren'>>
<<setinit $att_name[1] = 'agil'>>
<<setinit $att_name[2] = 'vital'>>
<<setinit $att_name[3] = 'intel'>>
<<setinit $att_name[4] = 'react'>>
<<setinit $att_name[5] = 'sprt'>>
<<setinit $att_name[6] = 'chrsm'>>
<<setinit $att_name[7] = 'prcptn'>>
<<setinit $att_name[8] = 'magik'>>
<!-- !! The following two are hidden attributes. The first for exceptional strength that can be trained separately to develop strength above 100 and get the body of a bodybuilder. The second for training to get a big round butt.-->
<<setinit $att_name[9] = 'stren_plus'>>
<<setinit $att_name[10] = 'butt_tr'>>
<!-- !!Skill variable list-->
<!-- !!Add new skills to the end; if removing a skill, move the rest up and then edit the Traits so that the index numbers are correct-->
<<setinit $skl_name[0] = 'jab'>>
<<setinit $skl_name[1] = 'punch'>>
<<setinit $skl_name[2] = 'kick'>>
<<setinit $skl_name[3] = 'def'>>
<<setinit $skl_name[4] = 'shoot'>>
<<setinit $skl_name[5] = 'vokal'>>
<<setinit $skl_name[6] = 'sewng'>>
<<setinit $skl_name[7] = 'instrmusic'>>
<<setinit $skl_name[8] = 'photoskl'>>
<<setinit $skl_name[9] = 'artskls'>>
<<setinit $skl_name[10] = 'danc'>>
<<setinit $skl_name[11] = 'dancero'>>
<<setinit $skl_name[12] = 'dancpol'>>
<<setinit $skl_name[13] = 'chess'>>
<<setinit $skl_name[14] = 'gaming'>>
<<setinit $skl_name[15] = 'humint'>>
<<setinit $skl_name[16] = 'persuas'>>
<<setinit $skl_name[17] = 'run'>>
<<setinit $skl_name[18] = 'vball'>>
<<setinit $skl_name[19] = 'icesktng'>>
<<setinit $skl_name[20] = 'wrstlng'>>
<<setinit $skl_name[21] = 'ftbll'>>
<<setinit $skl_name[22] = 'splcstng'>>
<<setinit $skl_name[23] = 'observ'>>
<<setinit $skl_name[24] = 'makupskl'>>
<<setinit $skl_name[25] = 'compskl'>>
<<setinit $skl_name[26] = 'comphckng'>>
<<setinit $skl_name[27] = 'hndiwrk'>>
<<setinit $skl_name[28] = 'servng'>>
<<setinit $skl_name[29] = 'mdlng'>>
<<setinit $skl_name[30] = 'medcn'>>
<<setinit $skl_name[31] = 'heels'>>
<<setinit $skl_name[32] = 'pool'>>
<<setinit $skl_name[33] = 'inhib'>>
<<setinit $skl_name[34] = 'perform'>>
<<setinit $skl_name[35] = 'bushcraft'>>
<<setinit $skl_name[36] = 'cleaning'>>
<<setinit $skl_name[37] = 'bkbll'>>
<<setinit $skl_name[38] = 'cheer'>>
<<setinit $skl_name[39] = 'musicprod'>>
<!-- !!Trait Section-->
<!-- !!This is where Traits that will affect attribute or skill advancement or degradation have those aspects defined.-->
<!-- !!Always put the trait name, variable name, and skill or attribute variable in a comment-->
<!-- !!Natural Dancer; Provides a 10% reduction in xp required to level dance skills-->
<<setinit $nat_dancer[1] = 2>> <<set $nat_dancer[2] = 10>> <<set $nat_dancer[3] = -6>> <<set $nat_dancer[4] = 0>>
<<setinit $nat_dancer[11] = 2>> <<set $nat_dancer[12] = 11>> <<set $nat_dancer[13] = -6>> <<set $nat_dancer[14] = 0>>
<<setinit $nat_dancer[21] = 2>> <<set $nat_dancer[22] = 12>> <<set $nat_dancer[23] = -6>> <<set $nat_dancer[24] = 0>>
<!-- !!Natural Athlete; Provides a 10% reduction in xp required to level sports skills-->
<<setinit $nat_athlete[1] = 2>> <<set $nat_athlete[2] = 17>> <<set $nat_athlete[3] = -6>> <<set $nat_athlete[4] = 0>>
<<setinit $nat_athlete[11] = 2>> <<set $nat_athlete[12] = 18>> <<set $nat_athlete[13] = -6>> <<set $nat_athlete[14] = 0>>
<<setinit $nat_athlete[21] = 2>> <<set $nat_athlete[22] = 19>> <<set $nat_athlete[23] = -6>> <<set $nat_athlete[24] = 0>>
<<setinit $nat_athlete[31] = 2>> <<set $nat_athlete[32] = 20>> <<set $nat_athlete[33] = -6>> <<set $nat_athlete[34] = 0>>
<<setinit $nat_athlete[41] = 2>> <<set $nat_athlete[42] = 21>> <<set $nat_athlete[43] = -6>> <<set $nat_athlete[44] = 0>>
<!-- !!Scholarly; Provides a 10% reduction in xp required to level Intelligence, easier to get good notes at school, faster studying in the university-->
<<setinit $schlrly[1] = 1>> <<set $schlrly[2] = 3>> <<set $schlrly[3] = -6>> <<set $schlrly[4] = 0>>
<!-- !!Trait variable list; only traits that can affect attribute or skill advancement or degradation goes here-->
<<setinit $traitattskl[0] = 'nat_dancer'>>
<<setinit $traitattskl[1] = 'nat_athlete'>>
<<setinit $traitattskl[2] = 'schlrly'>>
<!-- !!This is sets _lvl and _exp based on the value of pcs_"name" the first time so that _lvl and _exp do not need to set on start.-->
<!-- !!Theoretically this can be eventually deleted.-->
