# stat_sklattrib

!!********************  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 (i.e. stren_exp +=1 instead of pcs_stren += 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
$att_name[0] = 'stren'
$att_name[1] = 'agil'
$att_name[2] = 'vital'
$att_name[3] = 'intel'
$att_name[4] = 'react'
$att_name[5] = 'sprt'
$att_name[6] = 'chrsm'
$att_name[7] = 'prcptn'
$att_name[8] = 'magik'

!!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
$skl_name[0] = 'jab'
$skl_name[1] = 'punch'
$skl_name[2] = 'kick'
$skl_name[3] = 'def'
$skl_name[4] = 'shoot'
$skl_name[5] = 'vokal'
$skl_name[6] = 'sewng'
$skl_name[7] = 'instrmusic'
$skl_name[8] = 'photoskl'
$skl_name[9] = 'artskls'
$skl_name[10] = 'danc'
$skl_name[11] = 'dancero'
$skl_name[12] = 'dancpol'
$skl_name[13] = 'chess'
$skl_name[14] = 'ttgmng'
$skl_name[15] = 'humint'
$skl_name[16] = 'persuas'
$skl_name[17] = 'run'
$skl_name[18] = 'vball'
$skl_name[19] = 'icesktng'
$skl_name[20] = 'wrstlng'
$skl_name[21] = 'ftbll'
$skl_name[22] = 'splcstng'
$skl_name[23] = 'observ'
$skl_name[24] = 'makupskl'
$skl_name[25] = 'compskl'
$skl_name[26] = 'comphckng'
$skl_name[27] = 'hndiwrk'
$skl_name[28] = 'servng'
$skl_name[29] = 'mdlng'
$skl_name[30] = 'medcn'


!!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

!!Natrual Dancer; Provides a 10% reduction in xp required to level dance skills
nat_dancer[1] = 2 & nat_dancer[2] = 10 & nat_dancer[3] = -6 & nat_dancer[4] = 0
nat_dancer[11] = 2 & nat_dancer[12] = 11 & nat_dancer[13] = -6 & nat_dancer[14] = 0
nat_dancer[21] = 2 & nat_dancer[22] = 12 & nat_dancer[23] = -6 & nat_dancer[24] = 0

!!Natrual Athlete; Provides a 10% reduction in xp required to level sports skills
nat_athlete[1] = 2 & nat_athlete[2] = 17 & nat_athlete[3] = -6 & nat_athlete[4] = 0
nat_athlete[11] = 2 & nat_athlete[12] = 18 & nat_athlete[13] = -6 & nat_athlete[14] = 0
nat_athlete[21] = 2 & nat_athlete[22] = 19 & nat_athlete[23] = -6 & nat_athlete[24] = 0
nat_athlete[31] = 2 & nat_athlete[32] = 20 & nat_athlete[33] = -6 & nat_athlete[34] = 0
nat_athlete[41] = 2 & nat_athlete[42] = 21 & nat_athlete[43] = -6 & 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
schlrly[1] = 1 & schlrly[2] = 3 & schlrly[3] = -6 & schlrly[4] = 0


!!Trait variable list; only traits that can affect attribute or skill advancement or degradation goes here
$traitattskl[0] = 'nat_dancer'
$traitattskl[1] = 'nat_athlete'
$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.
if attsklupdate = 0:
	i = 0 & x = 1
	:rstloop
	expadj = 60
	tl = 0
	:trtrstloop
	tltp = 0
	:trtrstinsdlp
!!	Note this loop is done with a flag set in the dynamic that is checked outside; this is because testing showed inconsistent results when jumping from inside the dynamic and with the whole loop in the dynamic.
	dynamic "
		if <<$traitattskl[tl]>> > 0 and <<$traitattskl[tl]>>[tltp + 1] = x and <<$traitattskl[tl]>>[tltp + 2] = i and <<$traitattskl[tl]>>[tltp + 3] ! 0: expadj += <<$traitattskl[tl]>>[tltp + 3]
		if <<$traitattskl[tl]>>[tltp + 11] ! 0: insdlpflag = 1
		"
	if insdlpflag = 1: tltp += 10 & insdlpflag = 0 & jump 'trtrstinsdlp'
	tl += 1
	if tl < arrsize ('$traitattskl'): jump 'trtrstloop'
	killvar 'tl' & killvar 'tltp' & killvar 'insdlpflag'

	if x = 1:
		$attskltmp = $att_name[i]
	else
		$attskltmp = $skl_name[i]
	end

	dynamic "
		if pcs_<<$attskltmp>> > 0 and <<$attskltmp>>_lvl = 0:
			<<$attskltmp>>_exp = (expadj * (pcs_<<$attskltmp>> - 1) * (pcs_<<$attskltmp>> - 1) / 180) + 1
			<<$attskltmp>>_lvl = pcs_<<$attskltmp>>
			<<$attskltmp>>_lvlst = <<$attskltmp>>_lvl
		end
	"
	killvar 'expadj' & killvar '$attskltmp'
	i += 1
	if (x = 1 and i < arrsize ('$att_name')) or (x = 2 and i < arrsize ('$skl_name')): jump 'rstloop'
	i = 0 & x += 1
	if x < 3: jump 'rstloop'
	killvar 'i' & killvar 'x'

	attsklupdate = 1
end

!!This is the section that runs when the call is from cikl
if $ARGS[0] = 'daycall':
!!	Attribute XP with Skill XP gain
	x = 0
	:sklxploop
	y = 1
	:persklloop
	dynamic "$attnamtmp = $att_name[<<$skl_name[x]>>[y]]"
	dynamic "
		if <<$skl_name[x]>>_exp > <<$skl_name[x]>>_mem: <<$attnamtmp>>_exp += (<<$skl_name[x]>>_exp - <<$skl_name[x]>>_mem) / 5
		if <<$skl_name[x]>>[y + 1] = -1 or y >= 9: lpstopflg = 1
		"
	killvar '$attnamtmp'
	if lpstopflg = 0: y += 1 & jump 'persklloop'
	killvar 'lpstopflg'
	x += 1
	if x < arrsize ('$skl_name'): jump 'sklxploop'
	killvar 'x' & killvar 'y' & killvar '$attnamtmp'

!!	Degradation Loop
	i = 0 & x = 1
	:degloop
	degadj = 60
	if x = 2: degadj += 30
	expadj = 60
	tl = 0
	:trtdegloop
	tltp = 0
	:trtdeginsdlp
!!	Note this loop is done with a flag set in the dynamic that is checked outside; this is because testing showed inconsistent results when jumping from inside the dynamic and with the whole loop in the dynamic.
	dynamic "
		if <<$traitattskl[tl]>> > 0 and <<$traitattskl[tl]>>[tltp + 1] = x and <<$traitattskl[tl]>>[tltp + 2] = i and <<$traitattskl[tl]>>[tltp + 3] ! 0: expadj += <<$traitattskl[tl]>>[tltp + 3]
		if <<$traitattskl[tl]>> > 0 and <<$traitattskl[tl]>>[tltp + 1] = x and <<$traitattskl[tl]>>[tltp + 2] = i and <<$traitattskl[tl]>>[tltp + 4] ! 0: degadj += <<$traitattskl[tl]>>[tltp + 4]
		if <<$traitattskl[tl]>>[tltp + 11] ! 0: insdlpflag = 1
		"
	if insdlpflag = 1: tltp += 10 & insdlpflag = 0 & jump 'trtdeginsdlp'
	tl += 1
	if tl < arrsize ('$traitattskl'): jump 'trtdegloop'
	killvar 'tl' & killvar 'tltp' & killvar 'insdlpflag'

	if x = 1:
		$attskltmp = $att_name[i]
	else
		$attskltmp = $skl_name[i]
	end

	dynamic "
		if <<$attskltmp>>_lvl ! <<$attskltmp>>_lvlst: <<$attskltmp>>_lvl = <<$attskltmp>>_lvlst
		if <<$attskltmp>>_lvl < 100:
			degtmp = (102 - <<$attskltmp>>_lvl + <<$attskltmp>>_muta)
		else
			degtmp = 2 + <<$attskltmp>>_muta
		end
	
		degtmp = degadj * degtmp / 60
		if degtmp < 2: degtmp = 2
		
		if <<$attskltmp>>_exp < <<$attskltmp>>_mem: <<$attskltmp>>_exp = <<$attskltmp>>_mem

		if <<$attskltmp>>_exp = <<$attskltmp>>_mem:
			<<$attskltmp>>_deg -= 1
		else
			<<$attskltmp>>_deg = degtmp
		end

		if <<$attskltmp>>_deg <= 0 and <<$attskltmp>>_lvl > <<$attskltmp>>_flr:
			exptmp = <<$attskltmp>>_exp - (expadj * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 180)
			if exptmp < 0: exptmp = 0
			<<$attskltmp>>_lvl -= 1
			<<$attskltmp>>_deg = degtmp
			<<$attskltmp>>_exp = (expadj * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 180) + exptmp
!!			This will only do anything if the PC builds exp well in excess of what is needed to level
			if <<$attskltmp>>_exp > (expadj * (<<$attskltmp>>_lvl) * (<<$attskltmp>>_lvl) / 180): <<$attskltmp>>_exp -= (2 * <<$attskltmp>> - 1) / 10
		end
		<<$attskltmp>>_lvlst = <<$attskltmp>>_lvl
		<<$attskltmp>>_mem = <<$attskltmp>>_exp
		"
	killvar 'degtmp' & killvar 'exptmp'
	killvar 'degadj' & killvar 'expadj' & killvar '$attskltmp'
	i += 1
	if (x = 1 and i < arrsize ('$att_name')) or (x = 2 and i < arrsize ('$skl_name')): jump 'degloop'
	i = 0 & x += 1
	if x < 3: jump 'degloop'
	killvar 'i' & killvar 'x'
end

!!Advancement Loop
i = 0 & x = 1
:advloop
expadj = 60
tl = 0
:trtadvloop
tltp = 0
:trtadvinsdlp
!!Note this loop is done with a flag set in the dynamic that is checked outside; this is because testing showed inconsistent results when jumping from inside the dynamic and with the whole loop in the dynamic.
dynamic "
	if <<$traitattskl[tl]>> > 0 and <<$traitattskl[tl]>>[tltp + 1] = x and <<$traitattskl[tl]>>[tltp + 2] = i and <<$traitattskl[tl]>>[tltp + 3] ! 0: expadj += <<$traitattskl[tl]>>[tltp + 3]
	if <<$traitattskl[tl]>>[tltp + 11] ! 0: insdlpflag = 1
	"
if insdlpflag = 1: tltp += 10 & insdlpflag = 0 & jump 'trtadvinsdlp'
tl += 1
if tl < arrsize ('$traitattskl'): jump 'trtadvloop'
killvar 'tl' & killvar 'tltp' & killvar 'insdlpflag'

if x = 1:
	$attskltmp = $att_name[i]
else
	$attskltmp = $skl_name[i]
end

dynamic "
	if <<$attskltmp>>_lvl ! <<$attskltmp>>_lvlst: <<$attskltmp>>_lvl = <<$attskltmp>>_lvlst
	if <<$attskltmp>>_exp > (expadj * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 180): <<$attskltmp>>_lvl += 1
	<<$attskltmp>>_lvlst = <<$attskltmp>>_lvl
	<<$attskltmp>>_xpnxt = (expadj * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 180) + 1
	if <<$attskltmp>>_lvl / 5 > <<$attskltmp>>_flr: <<$attskltmp>>_flr = <<$attskltmp>>_lvl / 5
	if <<$attskltmp>>_lvl > (100 + (<<$attskltmp>>_muta * 50)): <<$attskltmp>>_lvl = (100 + (<<$attskltmp>>_muta * 50))
	if <<$attskltmp>>_exp > (expadj * (<<$attskltmp>>_lvl + 1) * (<<$attskltmp>>_lvl + 1) / 180) - 1:
		<<$attskltmp>>_exp = (expadj * (<<$attskltmp>>_lvl + 1) * (<<$attskltmp>>_lvl + 1) / 180) - 1
		<<$attskltmp>>_mem = <<$attskltmp>>_exp
	end
	"
killvar 'expadj' & killvar '$attskltmp'
i += 1
if (x = 1 and i < arrsize ('$att_name')) or (x = 2 and i < arrsize ('$skl_name')): jump 'advloop'
i = 0 & x += 1
if x < 3: jump 'advloop'
killvar 'i' & killvar 'x'

!!Attribute set section
!!This is where an attribute pcs_"name" is set by "name"_lvl and any adjustments are added
!!Even though most of these could be done without doing a _lvl to pcs_ convertion, doing so is future proofing

pcs_stren = stren_lvl
if pcs_stren < 1: pcs_stren = 1

pcs_agil = agil_lvl
if pcs_agil < 1: pcs_agil = 1

pcs_vital = vital_lvl
if pcs_vital < 1: pcs_vital = 1

pcs_intel = intel_lvl - bimbostupidity - (5 * noorgasm)
if pcs_intel < 1: pcs_intel = 1

pcs_react = react_lvl
if pcs_react < 1: pcs_react = 1

pcs_sprt = sprt_lvl
if pcs_sprt < 1: pcs_sprt = 1

pcs_chrsm = chrsm_lvl
if pcs_chrsm < 1: pcs_chrsm = 1

pcs_prcptn = prcptn_lvl
if pcs_prcptn < 1: pcs_prcptn = 1

pcs_magik = magik_lvl
if pcs_magik < 0: pcs_magik = 0

!!Skill set Section
!!Each skill has three lines, the first is the comment that says what the skill is, the next that sets pcs_"name", and the finial which sets "name"[1] to [x] with the attribute index of the attribute(s) ending with a -1 to show end.

!!Jabs; Quick strikes that do not have much power
pcs_jab = (jab_lvl + (pcs_agil * 2 + pcs_stren) / 3) / 2 - notfem
jab[1] = 0 & jab[2] = 1 & jab[3] = -1

!!Power Strikes; Hard strikes that are harder to land
pcs_punch = (punch_lvl + (pcs_stren * 2 + pcs_agil) / 3) / 2 - notfem
punch[1] = 0 & punch[2] = 1 & punch[3] = -1

!!Kicks; Kicking, enough said
pcs_kick = (kick_lvl + (pcs_stren * 3 + pcs_agil) / 4) / 2 - notfem
kick[1] = 0 & kick[2] = 1 & kick[3] = -1

!!Defence; Covers both blocking and dodging
pcs_def = (def_lvl + (pcs_agil + pcs_stren + pcs_react) / 3) / 2 - notfem
def[1] = 0 & def[2] = 1 & def[3] = 4 & def[4] = -1

!!Marksmanship; Could be guns, bows, or spells
pcs_shoot = (shoot_lvl + (pcs_agil + pcs_react) / 2) / 2
shoot[1] = 1 & shoot[2] = 4 & shoot[3] = -1

!!Singing; Should be self-explanatory
pcs_vokal = (vokal_lvl + (pcs_intel + pcs_chrsm) / 2) / 2
vokal[1] = 3 & vokal[2] = 6 & vokal[3] = -1

!!Tailoring; Should be self-explanatory
pcs_sewng = (sewng_lvl + (pcs_agil + pcs_intel) / 2) / 2
sewng[1] = 1 & sewng[2] = 3 & sewng[3] = -1

!!Instrumental Music; Skill at playing an instrument(s)
pcs_instrmusic = (instrmusic_lvl + (2 * pcs_agil + pcs_intel) / 3) / 2
instrmusic[1] = 1 & instrmusic[2] = 3 & instrmusic[3] = -1

!!Photography; Should be self-explanatory
pcs_photoskl = (photoskl_lvl + (2 * pcs_intel + pcs_react) / 3) / 2
photoskl[1] = 3 & photoskl[2] = 4 & photoskl[3] = -1

!!Artistic Skills; painting, drawing etc.
pcs_artskls = (artskls_lvl + (pcs_intel + pcs_react + pcs_agil) / 3) / 2
artskls[1] = 1 & artskls[2] = 3 & artskls[3] = 4 & artskls[4] = -1

!!Modern Dancing; This is the basic dance skill and replaces 'dance'
pcs_danc = (danc_lvl + (pcs_agil + pcs_react + pcs_vital) / 3) / 2 - notfem
danc[1] = 1 & danc[2] = 2 & danc[3] = 4 & danc[4] = -1

!!Erotic Dancing; This is used when individual eroticism is being displayed, also covers & replaces strip tease
pcs_dancero = (dancero_lvl + (pcs_agil + pcs_chrsm + pcs_vital) / 3) / 2 - notfem + (3 * flxibt)
dancero[1] = 1 & dancero[2] = 2 & dancero[3] = 6 & dancero[4] = -1

!!Pole Dancing; Should be self-explanatory
pcs_dancpol = (dancpol_lvl + (pcs_agil + pcs_stren + pcs_chrsm) / 3) / 2 - notfem + (3 * flxibt)
dancpol[1] = 0 & dancpol[2] = 1 & dancpol[3] = 6 & dancpol[4] = -1

!!Chess; Should be self-explanatory
pcs_chess = (chess_lvl + pcs_intel) / 2 + (5 * logictrt)
chess[1] = 3 & chess[2] = -1

!!Gaming; Abstracts skills at all types of Table Top games
pcs_ttgmng = (ttgmng_lvl + (2 * pcs_intel + pcs_react) / 3) / 2
ttgmng[1] = 3 & ttgmng[2] = 4 & ttgmng[3] = -1

!!People skills; basic human interaction skill set
pcs_humint = (humint_lvl + (pcs_prcptn + pcs_chrsm + pcs_react)/3) / 2 + (5 * chrmng) - (5 * meantrt)
humint[1] = 4 & humint[2] = 6 & humint[3] = 7 & humint[4] = -1

!!Persuasion; Trained skill at getting people to agree with you or like you
pcs_persuas = (persuas_lvl + (pcs_prcptn + pcs_chrsm) / 2) / 2 + (5 * chrmng) - (5 * meantrt)
persuas[1] = 6 & persuas[2] = 7 & persuas[3] = -1

!!Running; Should be self-explanatory
pcs_run = (run_lvl + (2 * (pcs_agil + pcs_stren) + pcs_vital) / 5) / 2 - notfem
run[1] = 0 & run[2] = 1 & run[3] = 2 & run[4] = -1

!!Volleyball; Should be self-explanatory
pcs_vball = (vball_lvl + (2 * pcs_agil + pcs_react + pcs_stren + pcs_vital) / 5) / 2 - notfem
vball[1] = 0 & vball[2] = 1 & vball[3] = 2 & vball[4] = 4 & vball[5] = -1

!!Ice Skating; Should be self-explanatory
pcs_icesktng = (icesktng_lvl + (2 * pcs_agil + pcs_stren) / 3) / 2 - notfem
icesktng[1] = 0 & icesktng[2] = 1 & icesktng[3] = -1

!!Wrestling; Should be self-explanatory
pcs_wrstlng = (wrstlng_lvl + (2 * pcs_stren + pcs_vital + pcs_agil) / 4) / 2 - notfem
wrstlng[1] = 0 & wrstlng[2] = 1 & wrstlng[3] = 2 & wrstlng[4] = -1

!!Football; Should be self-explanatory
pcs_ftbll = (ftbll_lvl + (pcs_vital + pcs_agil + pcs_stren) / 3) / 2 - notfem
ftbll[1] = 0 & ftbll[2] = 1 & ftbll[3] = 2 & ftbll[4] = -1

!!Spell Casting; The ability to Successfully cast spells
pcs_splcstng = (splcstng_lvl + (pcs_intel + pcs_react) / 2) / 2
splcstng[1] = 3 & splcstng[2] = 4 & splcstng[3] = -1

!!Observation; trained skill in noticing one''s surroundings and events (nothing but surface detail)
pcs_observ = (observ_lvl + (pcs_prcptn + pcs_react + pcs_intel)/3) / 2
observ[1] = 3 & observ[2] = 4 & observ[3] = 7 & observ[4] = -1

!!Makeup; Skill at applying makeup, goes into the vnesh calc as makupskl/5
pcs_makupskl = (makupskl_lvl + (pcs_intel + pcs_agil) / 2) / 2
makupskl[1] = 1 & makupskl[2] = 3 & makupskl[3] = -1

!!Computer Skill; Skill at using and repairing computers
pcs_compskl = (compskl_lvl + pcs_intel) / 2 + (5 * logictrt)
compskl[1] = 3 & compskl[2] = -1

!!Hacking; Skill at hacking computer systems
pcs_comphckng = (comphckng_lvl + (pcs_intel + pcs_react) / 2) / 2 + (5 * logictrt)
comphckng[1] = 3 & comphckng[2] = 4 & comphckng[3] = -1

!!Handy-work; Used for non-mechanic work, i.e. plumbing
pcs_hndiwrk = (hndiwrk_lvl + (2 * pcs_agil + pcs_intel) / 3) / 2
hndiwrk[1] = 1 & hndiwrk[2] = 3 & hndiwrk[3] = -1

!!Serving; Covers all aspects of waitressing and bartending
pcs_servng = (servng_lvl + (pcs_intel + pcs_vital) / 2) / 2
servng[1] = 2 & servng[2] = 3 & servng[3] = -1

!!Modelling; Knowing how to pose and hold poses for long periods of time
pcs_mdlng = (mdlng_lvl + (pcs_agil + pcs_vital) / 2) / 2 - notfem
mdlng[1] = 1 & mdlng[2] = 2 & mdlng[3] = -1

!!Medicine; Basic medical knowledge up to the level of Nursing
pcs_medcn = (medcn_lvl + (pcs_intel + pcs_react + pcs_prcptn) / 3) / 2
medcn[1] = 3 & medcn[2] = 4 & medcn[3] = 7 & medcn[4] = -1

!!Skiing; Should be self-explanatory
!!To add this skill, copy this "$skl_name[x] = 'skng'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_skng = (skng_lvl + (2 * pcs_agil + pcs_stren) / 3) / 2
!!{skng[1] = 0 & skng[2] = 1 & skng[3] = -1}

!!Larceny; picking locks, hotwire cars etc.; basic thief/stealing skills
!!To add this skill, copy this "$skl_name[x] = 'thiefskls'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_thiefskls = (thiefskls_lvl + (2 * pcs_agil + pcs_react) / 3) / 2
!!{thiefskls[1] = 1 & thiefskls[2] = 4 & thiefskls[3] = -1}

!!Mechanic; Auto mechanic skill, can work on your own car
!!To add this skill, copy this "$skl_name[x] = 'mchanc'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_mchanc = (mchanc_lvl + (2 * pcs_agil + pcs_intel) / 3) / 2
!!{mchanc[1] = 1 & mchanc[2] = 3 & mchanc[3] = -1}

!!Gambling; Should be self-explanatory
!!To add this skill, copy this "$skl_name[x] = 'gmbling'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_gmbling = (gmbling_lvl + (2 * pcs_prcptn + pcs_intel + pcs_react) / 4) / 2
!!{gmbling[1] = 3 & gmbling[2] = 4 & gmbling[3] = 7 & gmbling[4] = -1}

!!Seduction; Trained art of making yourself sexually desired, by words, body language, tone etc.; should be checked with either a +hotcat or on a 300point scale with +vnesh (set elsewhere so not added here)
!!To add this skill, copy this "$skl_name[x] = 'sdctn'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_sdctn = (sdctn_lvl + (pcs_prcptn + pcs_chrsm) / 2) / 2
!!{sdctn[1] = 6 & sdctn[2] = 7 & sdctn[3] = -1}

!!Computer Gaming; Skill at playing assorted computer and console games.
!!To add this skill, copy this "$skl_name[x] = 'compgame'" to the end of the skils list above and replace the x with the next index number, then remove the comment and bracket marks on the next two lines and delete this line
!!pcs_compgame = (compgame_lvl + (pcs_agil + pcs_react) / 2) / 2
!!{compgame[1] = 1 & compgame[2] = 4 & compgame[3] = -1}

--- stat_sklattrib ---------------------------------

