Scriptname SuH_MCM extends SKI_ConfigBase

SuH_Fun Property _f auto
SuH_Status Property _s auto

;ent/ Menu Option IDs
int id0
int id1
int id2
int id3
int id4
int id5
int id6
int id7
int id8
int id9
int id10
int id11
int id12
int id13
int id14
int id15
int id16
int id17
int id18
int id19
int id20
int id21
int id22
int id23
int id24
int id25
int id26
int id27
int id28
int id29
int id30
int id31
int id32
int id33
int id34
int id35
int id36
int id37
int id38
int id39
int id40
int id41
int id42
int id43
int id44
int id45
int id46
int id47
int id48
int id49
int id50
int id51
int id52
int id53
int id54
int id55
int id56
;...up-to 127 (128 array cap)
;end/
;ent/ Scrip Variables
int ftMCM
int ftstatus
int ftskill
int ftheart
int ftpassives
int ftsoul
int ftperk
int fthelp
int ftcraft
string[] petactionlist
int petaction
int craftmempage
int craftaddpage
int craftaction
int craftselected
string[] craftaddlist
string[] craftmemlist
;end/

;ent/ OnInit
Event OnInit()
	parent.OnInit()
	InitProperties()
	MCMupdate()
endEvent
;end/
;ent/ Init Properties
Function InitProperties()
	_f = Game.GetFormFromFile(0x814, "Succubus Heart.esp") as SuH_Fun
	_s = Game.GetFormFromFile(0x16E496, "Succubus Heart.esp") as SuH_Status
endFunction
;end/
;ent/ Init
Event OnConfigInit()
	ModName = "_Succubus Heart"
	Pages = new string[1]
		Pages[0] = "Initiate"
		Pages[1] = "Help"
endEvent
;end/
;ent/ MCMupdate
Function MCMupdate()
	if _s.SuH_MCMversion == 0
		ModName = "_Succubus Heart"
		Pages = new string[1]
			Pages[0] = "Initiate"
			Pages[1] = "Help"
	elseIf _s.SuH_MCMversion < 4007002
		ModName = "_Succubus Heart"
		Pages = new string[8]
			Pages[0] = "Status / Settings"
			Pages[1] = "Skill Levels"
			Pages[2] = "Heart Levels"
			Pages[3] = "Passives"
			Pages[4] = "Soul Forge"
			Pages[5] = "Soul Pets"
			Pages[6] = "Perks"
			Pages[7] = "Help"
		petactionlist = new string[4]
			petactionlist[0] = "Summon Pet"
			petactionlist[1] = "Return Pet"
			petactionlist[2] = "Remove Pet"
			petactionlist[3] = "Cancel"
		craftaddlist = new string[2]
			craftaddlist[0] = "Analyze Item"
			craftaddlist[1] = "Cancel"
		craftmemlist = new string[3]
			craftmemlist[0] = "Forge Item"
			craftmemlist[1] = "Remove Item"
			craftmemlist[2] = "Cancel"
		_s.SuH_MCMversion = 4007002
	endIf
endFunction
;end/
;ent/ Passive Reset Cost Calc
int Function passiveresetcostcalc()
	int passiveresetcost = Math.Floor(((_s.SuH_PCSbpoint + _s.SuH_PCSdpoint + _s.SuH_PCSspoint + _s.SuH_PCSmpoint) - _s.SuH_PCSbdsm) * 25)
	if _s.SuH_SETfreepassivereset > 0
		passiveresetcost = 0
	endIf
	return passiveresetcost
endFunction
;end/

;ent/ OnPageReset
Event OnPageReset(string page)
	;ent/ Initial Page
	if (page == "")
		if ftMCM != 1 && _s.SuH_MCMversion != 0
			debug.MessageBox("Welcome to the Succubus Heart MCM! Upon first entering each page a short description will be displayed describing the page and its basic functions. If you want more in-depth explanations please check out the Help MCM page or read-about on the mod's forums.")
			ftMCM = 1
		endIf
		craftaddpage = 0 ;Reset Soul Forge inv-item page currently on
        LoadCustomContent("SuH/SuH_cover.swf")
        return
    else
        UnloadCustomContent()
    endIf
	;end/
	;ent/ Initiate
	if (page == "Initiate")
		id0 = AddTextOption("Initiate ", "Start Succubus Heart ") ;Initiate
	endIf
	;end/
	;ent/ Status / Settings
	if (page == "Status / Settings")
		if ftstatus != 1
			debug.MessageBox("This is the Status / Settings MCM. Here you can view an overview of some key stats within Succubus Heart as well as change various settings. I highly recommend checking down the full options list to enable/disabling anything you want/don't want in your game. Also check out Succubus Heart's Optional Features such as Combat Seduction to either fulfill gameplay needs or to ensure they're disabled for compatibility.")
			ftstatus = 1
		endIf
		SetCursorFillMode(TOP_TO_BOTTOM)		
		;ent/ Variables
		int modv = _s.SuH_MODversion
		int playerHealth = _s.playerRef.GetBaseActorValue("health") as int
		int playerMagicka = _s.playerRef.GetBaseActorValue("magicka") as int
		int playerStamina = _s.playerRef.GetBaseActorValue("stamina") as int
		int plvl = _s.playerRef.GetLevel() as int
		int healthCap = Math.Floor((_s.SuH_PCScaphealth+plvl*4) - _s.SuH_PCScaphealthdown)
		int magickaCap = Math.Floor((_s.SuH_PCScapmagicka+plvl*3) - _s.SuH_PCScapmagickadown)
		int staminaCap = Math.Floor((_s.SuH_PCScapstamina+plvl*3) - _s.SuH_PCScapstaminadown)
		int SETnpc2npchealth = Math.Floor(_s.SuH_SETnpc2npchealth*100)
		int SETnpc2npchealthmin = Math.Floor(_s.SuH_SETnpc2npchealthmin)
		int SETnpc2pchealth = Math.Floor(_s.SuH_SETnpc2pchealth*100)
		int SETnpc2pchealthmin = Math.Floor(_s.SuH_SETnpc2pchealthmin)
		int SETpc2npchealth = Math.Floor(_s.SuH_SETpc2npchealth*100)
		int SETpc2npchealthmin = Math.Floor(_s.SuH_SETpc2npchealthmin)
		int SETpc2npcstamina = Math.Floor(_s.SuH_SETpc2npcstamina*100)
		int effectmulti = Math.Floor(100 * _s.SuH_PCSeffectmulti)
		int SETpetspells = 0
		if _s.playerRef.HasSpell(_s.SuH_spell_petself)
			SETpetspells = 1
		else
			SETpetspells = 0
		endIF
		bool SETdisablehealthrecovery = False
		if _s.SuH_SETdisablehealthrecovery > 0.0
			SETdisablehealthrecovery = True
		endIf
		bool SETdisablemagickarecovery = False
		if _s.SuH_SETdisablemagickarecovery > 0.0
			SETdisablemagickarecovery = True
		endIf
		bool SETdisablestaminarecovery = False
		if _s.SuH_SETdisablestaminarecovery > 0.0
			SETdisablestaminarecovery = True
		endIf
		bool hostilevigil = false
		if _s.PlayerRef.IsInFaction(_s.SuH_Vigilhostile)
			hostilevigil = true
		endIf
		;end/
		;ent/ Left Side
		SetCursorPosition(0)
		; Status
		AddHeaderOption("Status ")
		if _s.SuH_ORcaphealth == 0
			id0 = AddTextOption("Health ", playerHealth+"/"+healthCap) ;healthcap
		else
			id0 = AddTextOption("Health ", playerHealth+"/overwritten") ;healthcap
		endIf
		if _s.SuH_ORcapmagicka == 0
			id1 = AddTextOption("Magicka ", playerMagicka+"/"+magickaCap) ;magickacap
		else
			id1 = AddTextOption("Magicka ", playerMagicka+"/overwritten") ;magickacap
		endIf
		if _s.SuH_ORcapstamina == 0
			id2 = AddTextOption("Stamina ", playerStamina+"/"+staminaCap) ;staminacap
		else
			id2 = AddTextOption("Stamina ", playerStamina+"/overwritten") ;staminacap
		endIf
		id3 = AddTextOption("Sex Stacks", _s.SuH_PCSstacksex+" ("+_s.SuH_PCSstackmaxsex+")") ;stacksex
		id4 = AddTextOption("Sperm Stacks", _s.SuH_PCSstacksperm+" ("+_s.SuH_PCSstackmaxsperm+")") ;stacksperm
		id5 = AddTextOption("Milk Stacks", _s.SuH_PCSstackmilk+" ("+_s.SuH_PCSstackmaxmilk+")") ;stackmilk
		AddEmptyOption()
		; Drain Options
		AddHeaderOption("Drain Options")
		id6 = AddSliderOption("Drain/XP Multiplier",effectmulti, "{0}%") ;effectmulti
		id7 = AddToggleOption("Absorb From NPCs", _s.SuH_SETnpcabsorb) ;setnpcabsorb
		id8 = AddToggleOption("Allow Drain to Kill", _s.SuH_SETallowdrainkill) ;drainkill
		id9 = AddToggleOption("Allow Consensual Drain", _s.SuH_SETconsentdrain) ;consentdrain
		id10 = AddToggleOption("Drain Followers", _s.SuH_SETdrainally) ;drainally
		id11 = AddToggleOption("Drain Always Kills ", _s.SuH_SETalwaysdrainkill) ;status.alwaysdrainkill
		; General Options
		AddHeaderOption("General Options")
		id12 = AddToggleOption("Advanced Checking ", _s.SuH_SETadvancedchecking) ;status.advancedchecking
		id13 = AddToggleOption("Calm Enemies During Acts", _s.SuH_SETcalmaura) ;calmaura
		id14 = AddToggleOption("Death Drops ", _s.SuH_SETdeathdrops) ;status.deathdrops
		id15 = AddToggleOption("Allow Desire Drain", _s.SuH_SETdesiredrain) ;status.desiredrain
		id16 = AddSliderOption("Desire Generation ", _s.SuH_PCSdesiregain) ;status.desiregain
		id17 = AddSliderOption("Desire Drain Trigger ", _s.SuH_SETdesirecap, "{0}") ;status.desirecap
		id53 = AddToggleOption("Hostile Vigil. of Stendarr ", hostilevigil) ;hostilevigilfaction
		; Animation Options
		AddHeaderOption("Animation Options")
		id54 = AddToggleOption("End Act When Attacked", _s.SuH_SETactendonatk) ;status.endactonatk
		id18 = AddToggleOption("Clean Arrows off PC", _s.SuH_SETclearactor) ;status.clearactor
		id19 = AddToggleOption("Allow Male Homosexuals", _s.SuH_SETallowmalehomo) ;status.malehomo
		id20 = AddToggleOption("Allow Female Homosexuals", _s.SuH_SETallowfemalehomo) ;status.femalehomo
		id21 = AddToggleOption("Restrict Act ", _s.SuH_SETrestrictact) ;status.restricact
		id22 = AddToggleOption("NPCs Essential in Acts", _s.SuH_SETessentialacts) ;status.essentialact
		; Overrides
		AddHeaderOption("Status Overrides")
		id23 = AddSliderOption("Health Cap",_s.SuH_ORcaphealth,"{0}") ;status.orhealthcap
		id24 = AddSliderOption("Magicka Cap",_s.SuH_ORcapmagicka,"{0}") ;status.ormagickacap
		id25 = AddSliderOption("Stamina Cap",_s.SuH_ORcapstamina,"{0}") ;status.orstaminacap
		id26 = AddSliderOption("Health Absorption",_s.SuH_ORabsorbhealth,"{0}") ;status.orhealthabsorb
		id27 = AddSliderOption("Magicka Absorption",_s.SuH_ORabsorbmagicka,"{0}") ;status.ormagickaabsorb
		id28 = AddSliderOption("Stamina Absorption",_s.SuH_ORabsorbstamina,"{0}") ;status.orstaminaabsorb
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		; Status
		AddHeaderOption("Status ")
		id29 = AddTextOption("Desire ", _s.SuH_PCSdesire) ;status.desire
		id30 = AddTextOption("XP ", _s.SuH_PCSxp) ;status.xp
		id31 = AddTextOption("XP Gain ", _s.SuH_PCSxpgain+"%") ;status.xpgain
		AddEmptyOption()
		AddEmptyOption()
		id32 = AddTextOption("Succubus Heart Version "+modv, " ") ;status.version
		AddEmptyOption()
		; Mechanic Options
		AddHeaderOption("Mechanic Options ")
		id33 = AddToggleOption("Disable Health Regen ", SETdisablehealthrecovery) ;statusdisablehealthrec
		id34 = AddToggleOption("Disable Magicka Regen ", SETdisablemagickarecovery) ;statusdisablemagickarec
		id35 = AddToggleOption("Disable Stamina Regen ", SETdisablestaminarecovery) ;statusdisablestaminarec
		AddHeaderOption("Soul Pet Options")
		id36 = AddToggleOption("Display Pet Spells", SETpetspells) ;status.petspells
		id37 = AddToggleOption("Remove Pets On Death ", _s.SuH_SETpetremoveondeath) ;status.removepet
		AddHeaderOption("Combat Seduction Options")
		id38 = AddToggleOption("Combat Seduction", _s.SuH_SETcombatseduction) ;status.combatseduction
		id55 = AddSliderOption("Submit Cooldown", _s.SuH_SETcscooldown, "{0} Seconds") ;status.SETcscooldown
		id39 = AddSliderOption("PC to NPC", SETpc2npchealth, "{0}% Health") ;status.pctonpchealth
		id40 = AddSliderOption("PC to NPC", SETpc2npchealthmin, "{0} Health") ;status.pctonpchealthmin
		id41 = AddSliderOption("PC to NPC", SETpc2npcstamina, "{0}% Stamina") ;status.pctonpcstamina
		id42 = AddSliderOption("NPC to PC", SETnpc2pchealth, "{0}% Health") ;status.npctopchealth
		id43 = AddSliderOption("NPC to PC", SETnpc2pchealthmin, "{0} Health") ;status.npctolchealthmin
		id44 = AddSliderOption("NPC to NPC", SETnpc2npchealth, "{0}% Health") ;status.npctonpchealth
		id45 = AddSliderOption("NPC to NPC", SETnpc2npchealthmin, "{0} Health") ;status.npctonpchealthmin
		AddHeaderOption("Death Override Mode Options")
		id46 = AddToggleOption("Death Override Mode", _s.SuH_SETspecialdeath) ;status.dom
		id47 = AddToggleOption("Force Random Death Respawn", _s.SuH_SETrandomdeathspawn) ;status.randomdeathspawm
		id48 = AddToggleOption("Lose Items on Death", _s.SuH_SETsdloseitems) ;status.loseitems
		id49 = AddToggleOption("Lose Gold on Death", _s.SuH_SETsdlosegold) ;status.losegold
		id50 = AddToggleOption("Lose Blood Chips on Death", _s.SuH_SETsdlosebloodchips) ;status.losebloodchips
		id51 = AddToggleOption("Destroy Equipped on Death", _s.SuH_SETsdloseequip) ;status.loseequip
		id52 = AddSliderOption("Bleed Out Delay", _s.SuH_SETcsbleedoutdelay, "{0} Sec") ;status.csbleedoutdelay
		;end/
	;end/
	;ent/ Skill Levels
	elseIf (page == "Skill Levels")
		if ftskill != 1
			debug.MessageBox("This is the Skill Levels Menu. Here you can spend SP to level Skyrim's usual skills, such as Heavy Armor, or maybe even a useless stat like lockpicking... (seriously, does anyone even level that?). Costs increase with skill level and SP only gets more difficult to obtain so you may want to save points for your primary skills. SP is earned by gaining Status over your Status Cap, for a more in-depth explanation check the highlight info and Help MCM.")
			ftskill = 1
		endIf
		;ent/ Variables
			int alchemylvl = _s.playerRef.GetBaseActorValue("alchemy") as int
			int alchemycost = Math.Ceiling(alchemylvl*0.1)
			int alterationlvl = _s.playerRef.GetBaseActorValue("alteration") as int
			int alterationcost = Math.Ceiling(alterationlvl*0.1)
			int blocklvl = _s.playerRef.GetBaseActorValue("block") as int
			int blockcost = Math.Ceiling(blocklvl*0.1)
			int conjurationlvl = _s.playerRef.GetBaseActorValue("conjuration") as int
			int conjurationcost = Math.Ceiling(conjurationlvl*0.1)
			int destructionlvl = _s.playerRef.GetBaseActorValue("destruction") as int
			int destructioncost = Math.Ceiling(destructionlvl*0.1)
			int enchantinglvl = _s.playerRef.GetBaseActorValue("enchanting") as int
			int enchantingcost = Math.Ceiling(enchantinglvl*0.1)
			int heavyarmorlvl = _s.playerRef.GetBaseActorValue("heavyarmor") as int
			int heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
			int illusionlvl = _s.playerRef.GetBaseActorValue("illusion") as int
			int illusioncost = Math.Ceiling(illusionlvl*0.1)
			int lightarmorlvl = _s.playerRef.GetBaseActorValue("lightarmor") as int
			int lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
			int lockpickinglvl = _s.playerRef.GetBaseActorValue("lockpicking") as int
			int lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
			int marksmanlvl = _s.playerRef.GetBaseActorValue("marksman") as int
			int marksmancost = Math.Ceiling(marksmanlvl*0.1)
			int onehandedlvl = _s.playerRef.GetBaseActorValue("onehanded") as int
			int onehandedcost = Math.Ceiling(onehandedlvl*0.1)
			int pickpocketlvl = _s.playerRef.GetBaseActorValue("pickpocket") as int
			int pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
			int restorationlvl = _s.playerRef.GetBaseActorValue("restoration") as int
			int restorationcost = Math.Ceiling(restorationlvl*0.1)
			int smithinglvl = _s.playerRef.GetBaseActorValue("smithing") as int
			int smithingcost = Math.Ceiling(smithinglvl*0.1)
			int sneaklvl = _s.playerRef.GetBaseActorValue("sneak") as int
			int sneakcost = Math.Ceiling(sneaklvl*0.1)
			int speechcraftlvl = _s.playerRef.GetBaseActorValue("speechcraft") as int
			int speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
			int twohandedlvl = _s.playerRef.GetBaseActorValue("twohanded") as int
			int twohandedcost = Math.Ceiling(twohandedlvl*0.1)
		;end/
		;ent/ SP calculation
			int plvl = _s.playerRef.GetLevel()
			float plvlmod = 1
			if plvl < 11 ; 30% cap
				plvlmod = 1 - (plvl*0.03)
			elseif plvl < 21 ; 50% cap
				plvlmod = 1 - ((plvl - 20)*0.02 + 0.3)
			elseif plvl < 31 ; 70% cap
				plvlmod = 1 - ((plvl - 30)*0.01 + 0.5)
			elseif plvl < 51 ; 75% cap
				plvlmod = 1 - ((plvl - 50)*0.005 + 0.7)
			elseif plvl > 60 ; 99.9% cap
				plvlmod = 1 - ((plvl - 60)*0.0025 + 0.75)
				if plvlmod > 1
					plvlmod = 1 - 0.999
				endIf
			endIf
			int force = _s.SuH_PCSforce
			int sp = _s.SuH_PCSsp
			int spearned = _s.SuH_PCSspearned
			float fmaster = 1 - (_s.SuH_rank_forcemaster * 0.1)
			int spcost = Math.Floor((spearned*0.2*120)*plvlmod*fmaster)
			if force >= spcost
				int x = 0
				int y = 0
				int z = 0
				int forceSpent = 0
				int spgained = 0
				int newcost = 0
				int i = 0
				while i != 1
					x = force - forceSpent
					y = spearned + spgained
					newcost = Math.Floor((y*0.2*120)*plvlmod*fmaster)
					if x >= newcost
						forceSpent += newcost
						spgained += 1
					else
						z = sp + spgained
						_s.SuH_PCSforce = x
						_s.SuH_PCSspearned = y
						_s.SuH_PCSsp = z
						debug.MessageBox(spgained+" SP was earned")
						i = 1
					endIf
				endWhile
				force = _s.SuH_PCSforce
				sp = _s.SuH_PCSsp
				spearned = _s.SuH_PCSspearned
				spcost = Math.Floor((spearned*0.2*60)*plvlmod*fmaster)
			endIf
			spearned = _s.SuH_PCSspearned
			fmaster = 1 - (_s.SuH_rank_forcemaster * 0.1)
			spcost = Math.Floor((spearned*0.2*120)*plvlmod*fmaster)
			int spnext = Math.Floor(spcost-force)
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		id0 = AddTextOption("Skill Points", sp) ;skillsp
		id1 = AddTextOption("Till Next Skill Point", spnext+" Force") ;skill.spnext
		AddHeaderOption("Level Skills")
		id4 = AddTextOption("Alchemy ", alchemylvl+" ["+alchemycost+" SP]") ;skill.alchemy
		id5 = AddTextOption("Block ", blocklvl+" ["+blockcost+" SP]") ;skill.block
		id6 = AddTextOption("Destruction ", destructionlvl+" ["+destructioncost+" SP]") ;skill.destruction
		id7 = AddTextOption("Heavy Armor ", heavyarmorlvl+" ["+heavyarmorcost+" SP]") ;skill.heavyarmor
		id8 = AddTextOption("Light Armor ", lightarmorlvl+" ["+lightarmorcost+" SP]") ;skill.lightarmor
		id9 = AddTextOption("Marksman ", marksmanlvl+" ["+marksmancost+" SP]") ;skill.marksman
		id10 = AddTextOption("Pickpocket ", pickpocketlvl+" ["+pickpocketcost+" SP]") ;skill.pickpocket
		id11 = AddTextOption("Smithing ", smithinglvl+" ["+smithingcost+" SP]") ;skill.smithing
		id12 = AddTextOption("Speechcraft ", speechcraftlvl+" ["+speechcraftcost+" SP]") ;skill.speechcraft
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		id2 = AddTextOption("XP available", _s.SuH_PCSxp) ;skill.xp
		id3 = AddSliderOption("XP to Force (10->1)",0,"{0}") ;skill.convert
		AddHeaderOption("Level Skills")
		id13 = AddTextOption("Alteration ", alterationlvl+" ["+alterationcost+" SP]") ;skill.alteration
		id14 = AddTextOption("Conjuration ", conjurationlvl+" ["+conjurationcost+" SP]") ;skill.conjuration
		id15 = AddTextOption("Enchanting ", enchantinglvl+" ["+enchantingcost+" SP]") ;skill.enchanting
		id16 = AddTextOption("Illusion ", illusionlvl+" ["+illusioncost+" SP]") ;skill.illusion
		id17 = AddTextOption("Lockpicking ", lockpickinglvl+" ["+lockpickingcost+" SP]") ;skill.lockpicking
		id18 = AddTextOption("One-Handed ", onehandedlvl+" ["+onehandedcost+" SP]") ;skill.onehanded
		id19 = AddTextOption("Restoration ", restorationlvl+" ["+restorationcost+" SP]") ;skill.restoration
		id20 = AddTextOption("Sneak ", sneaklvl+" ["+sneakcost+" SP]") ;skill.sneak
		id21 = AddTextOption("Two-Handed ", twohandedlvl+" ["+twohandedcost+" SP]") ;skill.twohanded
		;end/
	;end/
	;ent/ Heart Levels
	elseIf (page == "Heart Levels")
		if ftheart != 1
			debug.MessageBox("This is the Heart Levels Menu. Here you can level various Succubus Heart Stats, most note-ably Status Caps and Absorption. These stats will effect many of Succubus Heart's sex effects and increase the max status you can achieve using the mod. You'll probably want to check-in on this menu from time to time to increase your abilities as they'll grant a fiar amount of power and allow new passives to be learned. For more check the Help MCM. [Special Tip : Use the 'set to default' key to set tracking, you'll then receive a quick notification when the skill can be leveled!]")
			ftheart = 1
		endIf
		;ent/ Variables
		int caphealthcost = Math.Floor(((_s.SuH_PCScaphealth - _s.SuH_PCScaphealthitem)*0.12)*15+20)
		int caphealthdisplay = Math.Floor((_s.SuH_PCScaphealth + (_s.playerRef.GetLevel()*4)) - _s.SuH_PCScaphealthdown)
		int capmagickacost = Math.Floor(((_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickaitem)*0.12)*15+20)
		int capmagickadisplay = Math.Floor((_s.SuH_PCScapmagicka + (_s.playerRef.GetLevel()*3)) - _s.SuH_PCScapmagickadown)
		int capstaminacost = Math.Floor(((_s.SuH_PCScapstamina - _s.SuH_PCScapstaminaitem)*0.12)*15+20)
		int capstaminadisplay = Math.Floor((_s.SuH_PCScapstamina + (_s.playerRef.GetLevel()*3)) - _s.SuH_PCScapstaminadown)
		int absorbhealthcost = Math.Floor(_s.SuH_PCSabsorbhealth*2.2*280)
		int absorbmagickacost = Math.Floor(_s.SuH_PCSabsorbmagicka*2.2*280)
		int absorbstaminacost = Math.Floor(_s.SuH_PCSabsorbstamina*2.2*280)
		int stacksexcost = Math.Floor(_s.SuH_PCSstackmaxsex*2.8*240)
		int stackspermcost = Math.Floor(_s.SuH_PCSstackmaxsperm*2.8*240)
		int stackmilkcost = Math.Floor(_s.SuH_PCSstackmaxmilk*2.8*240)
		int spermhealthcost = Math.Floor(_s.SuH_PCSspermhealth*1.8*200)
		int spermmagickacost = Math.Floor(_s.SuH_PCSspermmagicka*1.8*200)
		int spermstaminacost = Math.Floor(_s.SuH_PCSspermstamina*1.8*200)
		int milkhealthcost = Math.Floor(_s.SuH_PCSmilkhealth*1.8*200)
		int milkmagickacost = Math.Floor(_s.SuH_PCSmilkmagicka*1.8*200)
		int milkstaminacost = Math.Floor(_s.SuH_PCSmilkstamina*1.8*200)
		int xpgaincost = Math.Floor(((_s.SuH_PCSxpgain - (99+_s.SuH_PCSxpgainitem))*2.0*350)*0.5)
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		id0 = AddTextOption("XP available", _s.SuH_PCSxp) ;heart.xp
		AddHeaderOption("Heart Levels")
		id1 = AddTextOption("Health Cap", caphealthdisplay+" ["+caphealthcost+" XP]") ;heart.healthcap
		id2 = AddTextOption("Magicka Cap", capmagickadisplay+" ["+capmagickacost+" XP]") ;heart.magickacap
		id3 = AddTextOption("Stamina Cap", capstaminadisplay+" ["+capstaminacost+" XP]") ;heart.staminacap
		AddEmptyOption()
		id4 = AddTextOption("Consumable Sex Stacks", _s.SuH_PCSstackmaxsex+" ["+stacksexcost+" XP]") ;heart.stacksex
		id5 = AddTextOption("Consumable Sperm Stacks", _s.SuH_PCSstackmaxsperm+" ["+stackspermcost+" XP]") ;heart.stacksperm
		id6 = AddTextOption("Consumable Milk Stacks", _s.SuH_PCSstackmaxmilk+" ["+stackmilkcost+" XP]") ;heart.stackmilk
		AddEmptyOption()
		id7 = AddTextOption("XP Gain", _s.SuH_PCSxpgain+"% ["+xpgaincost+" XP]") ;heart.xpgain
		AddEmptyOption()
		AddEmptyOption()
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddEmptyOption()
		AddHeaderOption("Heart Levels")
		id8 = AddTextOption("Health Absorption", _s.SuH_PCSabsorbhealth+" ["+absorbhealthcost+" XP]") ;heart.absorbhealth
		id9 = AddTextOption("Magicka Absorption", _s.SuH_PCSabsorbmagicka+" ["+absorbmagickacost+" XP]") ;heart.absorbmagicka
		id10 = AddTextOption("Stamina Absorption", _s.SuH_PCSabsorbstamina+" ["+absorbstaminacost+" XP]") ;heart.absorbstamina
		AddEmptyOption()
		id11 = AddTextOption("Sperm Health Bonus", _s.SuH_PCSspermhealth+" ["+spermhealthcost+" XP]") ;heart.spermhealth
		id12 = AddTextOption("Sperm Magicka Bonus", _s.SuH_PCSspermmagicka+" ["+spermmagickacost+" XP]") ;heart.spermmagicka
		id13 = AddTextOption("Sperm Stamina Bonus", _s.SuH_PCSspermstamina+" ["+spermstaminacost+" XP]") ;heart.spermstamina
		AddEmptyOption()
		id14 = AddTextOption("Milk Health Bonus", _s.SuH_PCSmilkhealth+" ["+milkhealthcost+" XP]") ;heart.milkhealth
		id15 = AddTextOption("Milk Magicka Bonus", _s.SuH_PCSmilkmagicka+" ["+milkmagickacost+" XP]") ;heart.milkmagicka
		id16 = AddTextOption("Milk Stamina Bonus", _s.SuH_PCSmilkstamina+" ["+milkstaminacost+" XP]") ;heart.milkstamina
		;end/
	;end/
	;ent/ Passives
	elseIf (page == "Passives")
		if ftpassives != 1
			debug.MessageBox("This is the Passives Menu. Here you can learn various extra abilities to add to your Succubus Powers. These abilities are 'always on' and add benefits with some having costs. Passives require BDSM Rating which is earned by leveling Heart Skills in the Heart Levels MCM. Different Passives and Heart Abilities will also have a BDSM Type which can have an effect on some passives. Read the Highlight info on abilities and check out the Help MCM for more.")
			ftpassives = 1
		endIf
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Variables
		int capexcelrankall = _s.SuH_rank_capexcel + _s.SuH_rank_capexcel2
		int capexcelcost = Math.Floor(30+(capexcelrankall*0.1*30))
		int perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
		int perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
		int lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
		int lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
		int masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
		int masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
		int selfstackercost = Math.Floor(30+(_s.SuH_rank_selfstacker*0.1*30))
		int valuestackercost = Math.Floor(30+(_s.SuH_rank_valuestacker*0.1*30))
		int savingessencerankall = _s.SuH_rank_savingessence + _s.SuH_rank_savingessence2
		int savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
		int giftedconsentcost = Math.Floor(30+(_s.SuH_rank_giftedconsent*0.1*30))
		int forcemastercost = Math.Floor(30+(_s.SuH_rank_forcemaster*0.1*30))
		int deviouspartnerrankall = _s.SuH_rank_deviouspartner + _s.SuH_rank_deviouspartner2
		int deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
		int formalbeautyrankall = _s.SuH_rank_formalbeauty + _s.SuH_rank_formalbeauty2
		int formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
		int violencerankall = _s.SuH_rank_violence + _s.SuH_rank_violence2 + _s.SuH_rank_violence3
		int violencecost = Math.Floor(30+(violencerankall*0.1*30))
		int seducercost = Math.Floor(30+(_s.SuH_rank_seducer*0.1*30))
		int regalglowcost = Math.Floor(30+(_s.SuH_rank_regalglow*0.1*30))
		int healthyabsorbercost = Math.Floor(30+(_s.SuH_rank_healthyabsorber*0.1*30))
		int bdsmrankcost = Math.Floor((1200*_s.SuH_rank_bdsm)*1.6+1200)
		int passiveresetcost = passiveresetcostcalc()
		;end/
		;ent/ Left Side
		SetCursorPosition(0)
			id0 = AddTextOption("BDSM Rating", _s.SuH_PCSbdsm) ;spell.bdsmrating
			id1 = AddTextOption("Body "+_s.SuH_PCSbpoint+" : Desire "+_s.SuH_PCSdpoint+" : Soul "+_s.SuH_PCSspoint+" : Mind "+_s.SuH_PCSmpoint, " ") ;spell.bdsmtrue
			; Combat Passives
			AddHeaderOption("Combat Passives")
			id4 = AddTextOption("Masochist", "rank "+masochistrankall) ;spell.masochist
			id5 = AddTextOption(" - - Desire Up", masochistcost) ;spell.masochistrank
			id6 = AddTextOption(" - - Stamina Up", masochistcost) ;spell.masochistrank2
			id7 = AddTextOption("Violence", "rank "+violencerankall) ;spell.violence
			id8 = AddTextOption(" - - Health Up", violencecost) ;spell.violencerank
			id9 = AddTextOption(" - - Magicka Up", violencecost) ;spell.violencerank2
			id10 = AddTextOption(" - - Stamina Up", violencecost) ;spell.violencerank3
			id11 = AddTextOption("Regal Glow", "rank "+_s.SuH_rank_regalglow) ;spell.regalglow
			id12 = AddTextOption(" - - Armor Up", regalglowcost) ;spell.regalglowrank
			id13 = AddTextOption("Saving Essence", "rank "+savingessencerankall) ;spell.savingessence
			id14 = AddTextOption(" - - Recover Up", savingessencecost) ;spell.savingessencerank
			id15 = AddTextOption(" - - Reduce Cooldown", savingessencecost) ;spell.savingessencerank2
			; Sex Passives
			AddHeaderOption("Sex Passives")
			id16 = AddTextOption("Seducer ", "rank "+_s.SuH_rank_seducer) ;spell.seducer
			id17 = AddTextOption(" - - Cost Down ", seducercost) ;spell.seducerrank
			id18 = AddTextOption("Devious Partner ", "rank "+deviouspartnerrankall) ;spell.deviouspartner
			id19 = AddTextOption(" - - Gold Up ", deviouspartnercost) ;spell.deviouspartnerrank
			id20 = AddTextOption(" - - Conversion Up ", deviouspartnercost) ;spell.deviouspartnerrank2
			id21 = AddTextOption("Gifted Consent", "rank "+_s.SuH_rank_giftedconsent) ;spell.giftedconsent
			id22 = AddTextOption(" - - Status Up", giftedconsentcost) ;spell.giftedconsentrank
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
			id2 = AddTextOption("Increase Rating", bdsmrankcost+" XP") ;spell.xp
			id3 = AddTextOption(" - - Reset Passives and BDSM ", passiveresetcost+" XP") ;spell.reset
			; Supportive Passives
			AddHeaderOption("Supportive Passives")
			id23 = AddTextOption("Luscious Liquids ", "rank "+lusciousliquidsrankall) ;spell.lusciousliquids
			id24 = AddTextOption(" - - Heal Up", lusciousliquidscost) ;spell.lusciousliquidsrank
			id25 = AddTextOption(" - - Recovery Up", lusciousliquidscost) ;spell.lusciousliquidsrank2
			id40 = AddTextOption("Cap Excel ", "rank "+capexcelrankall) ;spell.capexcel
			id41 = AddTextOption(" - - Increase Cap ", capexcelcost) ;spell.capexcelrank
			id42 = AddTextOption(" - - Slow Decay ", capexcelcost) ;spell.capexcelrank2
			id26 = AddTextOption("Formal Beauty", "rank "+formalbeautyrankall) ;spell.formalbeauty
			id27 = AddTextOption(" - - Effect Up", formalbeautycost) ;spell.formalbeautyrank
			id28 = AddTextOption(" - - Cost Down", formalbeautycost) ;spell.formalbeautyrank2
			id29 = AddTextOption("Force Master", "rank "+_s.SuH_rank_forcemaster) ;spell.forcemaster
			id30 = AddTextOption(" - - Cost Down", forcemastercost) ;spell.forcemasterrank
			id31 = AddTextOption("Value Stacker", "rank "+_s.SuH_rank_valuestacker) ;spell.valuestacker
			id32 = AddTextOption(" - - Value Up", valuestackercost) ;spell.valuestackerrank
			id33 = AddTextOption("Self Stacker", "rank "+_s.SuH_rank_selfstacker) ;spell.selfstacker
			id34 = AddTextOption(" - - Stack Up", selfstackercost) ;spell.selfstackerrank
			AddHeaderOption("Sex Passives")
			id35 = AddTextOption("Healthy Absorber ", "rank "+_s.SuH_rank_healthyabsorber) ;spell.healthyabsorber
			id36 = AddTextOption(" - - Rate Up", healthyabsorbercost) ;spell.healthyabsorberrank
			id37 = AddTextOption("Perfect Orgasm", "rank "+perfectorgasmrankall) ;spell.perfectorgasm
			id38 = AddTextOption(" - - Rare Up", perfectorgasmcost) ;spell.perfectorgasmrank
			id39 = AddTextOption(" - - Drop Up", perfectorgasmcost) ;spell.perfectorgasmrank2
			;end/
		;end/
	;ent/ Perks
	elseIf (page == "Perks")
		if ftperk != 1
			debug.MessageBox("This is the Perks MCM. As different actions are done within Succubus Heart perks will rank up granting additional bonuses.")
			ftperk = 1
		endIf
		;ent/ Variables
			float x = 0.0
			float k = 0.0
			string ps = "Undefined"
			
			int orgasmc = _s.SuH_perk_orgasm
			int orgasml = _s.SuH_perk_orgasml
			float orgasmnsub = 1
			if orgasml != 0
				orgasmnsub = Math.Floor(((((orgasml - 1) * 0.3) * 200) * 0.2) + 5)
			endIf
			float orgasmn = Math.Floor((((orgasml * 0.3) * 200) * 0.2) + 5)
			float orgasmndis = Math.Floor(orgasmn - orgasmnsub)
			float orgasmndos = Math.Floor(orgasmc - orgasmnsub)
			x = (orgasmndos / orgasmndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string orgasms = ps
			int absorbc = _s.SuH_perk_absorb
			int absorbl = _s.SuH_perk_absorbl
			float absorbnsub = 1
			if absorbl != 0
				absorbnsub = Math.Floor(((((absorbl - 1) * 0.35) * 800) * 0.3) + 20)
			endIf
			float absorbn = Math.Floor((((absorbl * 0.35) * 800) * 0.3) + 20)
			float absorbndis = Math.Floor(absorbn - absorbnsub)
			float absorbndos = Math.Floor(absorbc - absorbnsub)
			x = (absorbndos / absorbndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string absorbs = ps
			int spermc = _s.SuH_perk_sperm
			int sperml = _s.SuH_perk_sperml
			float spermnsub = 1
			if sperml != 0
				spermnsub = Math.Floor(((((sperml - 1) * 0.3) * 400) * 0.22) + 10)
			endIf
			float spermn = Math.Floor((((sperml * 0.3) * 400) * 0.22) + 10)
			float spermndis = Math.Floor(spermn - spermnsub)
			float spermndos = Math.Floor(spermc - spermnsub)
			x = (spermndos / spermndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string sperms = ps
			int milkc = _s.SuH_perk_milk
			int milkl = _s.SuH_perk_milkl
			float milknsub = 1
			if milkl != 0
				milknsub = Math.Floor(((((milkl - 1) * 0.3) * 400) * 0.22) + 10)
			endIf
			float milkn = Math.Floor((((milkl * 0.3) * 400) * 0.22) + 10)
			float milkndis = Math.Floor(milkn - milknsub)
			float milkndos = Math.Floor(milkc - milknsub)
			x = (milkndos / milkndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string milks = ps
			int allyorgasmc = _s.SuH_perk_allyorgasm
			int allyorgasml = _s.SuH_perk_allyorgasml
			float allyorgasmnsub = 1
			if allyorgasml != 0
				allyorgasmnsub = Math.Floor(((((allyorgasml - 1) * 0.3) * 140) * 0.18) + 5)
			endIf
			float allyorgasmn = Math.Floor((((allyorgasml * 0.3) * 140) * 0.18) + 5)
			float allyorgasmndis = Math.Floor(allyorgasmn - allyorgasmnsub)
			float allyorgasmndos = Math.Floor(allyorgasmc - allyorgasmnsub)
			x = (allyorgasmndos / allyorgasmndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string allyorgasms = ps
			int killdrainc = _s.SuH_perk_killdrain
			int killdrainl = _s.SuH_perk_killdrainl
			float killdrainnsub = 1
			if killdrainl != 0
				killdrainnsub = Math.Floor(((((killdrainl - 1) * 0.3) * 140) * 0.14) + 3)
			endIf
			float killdrainn = Math.Floor((((killdrainl * 0.3) * 140) * 0.14) + 3)
			float killdrainndis = Math.Floor(killdrainn - killdrainnsub)
			float killdrainndos = Math.Floor(killdrainc - killdrainnsub)
			x = (killdrainndos / killdrainndis)
			ps = "....."
			if x >= 0.98
				ps = "IIIIIIIIII"
			elseif x >= 0.9
				ps = "IIIIIIIII."
			elseif x >= 0.8
				ps = "IIIIIIII.."
			elseif x >= 0.7
				ps = "IIIIIII..."
			elseif x >= 0.6
				ps = "IIIIII...."
			elseif x >= 0.5
				ps = "IIIII....."
			elseif x >= 0.4
				ps = "IIII......"
			elseif x >= 0.3
				ps = "III......."
			elseif x >= 0.2
				ps = "II........"
			elseif x >= 0.1
				ps = "I........."
			else
				ps = ".........."
			endIf
			string killdrains = ps
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		AddHeaderOption("Perks")
		id0 = AddTextOption("Have Orgasm : Rank "+orgasml, orgasms) ;+12 BDSM ;perk.orgasm
		id1 = AddTextOption("Bring Ally To Orgasm : Rank "+allyorgasml, allyorgasms) ;+1000 XP ;perk.allyorgasm
		id2 = AddTextOption("Absorb Status In Acts : Rank "+absorbl, absorbs) ;+2 BDSM ;perk.absorb
		id3 = AddTextOption("Consume Sperm : Rank "+sperml, sperms) ;+500 XP ;perk.sperm
		id4 = AddTextOption("Consume Breast Milk : Rank "+milkl, milks) ;+500 XP ;perk.milk
		id5 = AddTextOption("Drain Them To Death : Rank "+killdrainl, killdrains) ;+2 Max Health ;perk.killdrain
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		;end/
	;end/
	;ent/ Pets
	elseIf (page == "Soul Pets")
		if ftsoul != 1
			debug.MessageBox("This is the Soul Pets MCM. Here you can manage your Souls replicated using either the Pet Target spell or though using special soul items. You can summon or release souls and view their levels. Pets will level up through either combat or in training (sex acts) and as they level they'll increase in power at certain intervals. When released/removed pets will also return Blood Chips based on their level. Leveling pets will also increase your Pet Skill Level which increases XP earned by pets.")
			ftsoul = 1
		endIf
		;ent/ Variables
			
		;end/
		
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		id0 = AddTextOption("Skill Level ", _s.SuH_petskill) ;pet.skill
		id1 = AddTextOption("Active Pet ", _s.SuH_petnames[_s.SuH_petactive]) ;pet.activepet
		AddHeaderOption("Pet Souls ")
		id2 = AddMenuOption((_s.SuH_petnames[0])+" "+_s.SuH_petlevels[0], "  ") ;pet.petslot0
		id3 = AddMenuOption((_s.SuH_petnames[1])+" "+_s.SuH_petlevels[1], "  ") ;pet.petslot1
		id4 = AddMenuOption((_s.SuH_petnames[2])+" "+_s.SuH_petlevels[2], "  ") ;pet.petslot2
		id5 = AddMenuOption((_s.SuH_petnames[3])+" "+_s.SuH_petlevels[3], "  ") ;pet.petslot3
		id6 = AddMenuOption((_s.SuH_petnames[4])+" "+_s.SuH_petlevels[4], "  ") ;pet.petslot4
		id7 = AddMenuOption((_s.SuH_petnames[5])+" "+_s.SuH_petlevels[5], "  ") ;pet.petslot5
		id8 = AddMenuOption((_s.SuH_petnames[6])+" "+_s.SuH_petlevels[6], "  ") ;pet.petslot6
		id9 = AddMenuOption((_s.SuH_petnames[7])+" "+_s.SuH_petlevels[7], "  ") ;pet.petslot7
		id10 = AddMenuOption((_s.SuH_petnames[8])+" "+_s.SuH_petlevels[8], "  ") ;pet.petslot8
		id11 = AddMenuOption((_s.SuH_petnames[9])+" "+_s.SuH_petlevels[9], "  ") ;pet.petslot9
		id12 = AddMenuOption((_s.SuH_petnames[10])+" "+_s.SuH_petlevels[10], "  ") ;pet.petslot10
		id13 = AddMenuOption((_s.SuH_petnames[11])+" "+_s.SuH_petlevels[11], "  ") ;pet.petslot11
		id14 = AddMenuOption((_s.SuH_petnames[12])+" "+_s.SuH_petlevels[12], "  ") ;pet.petslot12
		id15 = AddMenuOption((_s.SuH_petnames[13])+" "+_s.SuH_petlevels[13], "  ") ;pet.petslot13
		id16 = AddMenuOption((_s.SuH_petnames[14])+" "+_s.SuH_petlevels[14], "  ") ;pet.petslot14
		id17 = AddMenuOption((_s.SuH_petnames[15])+" "+_s.SuH_petlevels[15], "  ") ;pet.petslot15
		id18 = AddMenuOption((_s.SuH_petnames[16])+" "+_s.SuH_petlevels[16], "  ") ;pet.petslot16
		id19 = AddMenuOption((_s.SuH_petnames[17])+" "+_s.SuH_petlevels[17], "  ") ;pet.petslot17
		id20 = AddMenuOption((_s.SuH_petnames[18])+" "+_s.SuH_petlevels[18], "  ") ;pet.petslot18
		id21 = AddMenuOption((_s.SuH_petnames[19])+" "+_s.SuH_petlevels[19], "  ") ;pet.petslot19
		id22 = AddMenuOption((_s.SuH_petnames[20])+" "+_s.SuH_petlevels[20], "  ") ;pet.petslot20
		id23 = AddMenuOption((_s.SuH_petnames[21])+" "+_s.SuH_petlevels[21], "  ") ;pet.petslot21
		id24 = AddMenuOption((_s.SuH_petnames[22])+" "+_s.SuH_petlevels[22], "  ") ;pet.petslot22
		id25 = AddMenuOption((_s.SuH_petnames[23])+" "+_s.SuH_petlevels[23], "  ") ;pet.petslot23
		id26 = AddMenuOption((_s.SuH_petnames[24])+" "+_s.SuH_petlevels[24], "  ") ;pet.petslot24
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddEmptyOption()
		AddEmptyOption()
		AddHeaderOption("Edit Name")
		id27 = AddInputOption("Rename Pet ", " ") ;pet.nameslot0
		id28 = AddInputOption("Rename Pet ", " ") ;pet.nameslot1
		id29 = AddInputOption("Rename Pet ", " ") ;pet.nameslot2
		id30 = AddInputOption("Rename Pet ", " ") ;pet.nameslot3
		id31 = AddInputOption("Rename Pet ", " ") ;pet.nameslot4
		id32 = AddInputOption("Rename Pet ", " ") ;pet.nameslot5
		id33 = AddInputOption("Rename Pet ", " ") ;pet.nameslot6
		id34 = AddInputOption("Rename Pet ", " ") ;pet.nameslot7
		id35 = AddInputOption("Rename Pet ", " ") ;pet.nameslot8
		id36 = AddInputOption("Rename Pet ", " ") ;pet.nameslot9
		id37 = AddInputOption("Rename Pet ", " ") ;pet.nameslot10
		id38 = AddInputOption("Rename Pet ", " ") ;pet.nameslot11
		id39 = AddInputOption("Rename Pet ", " ") ;pet.nameslot12
		id40 = AddInputOption("Rename Pet ", " ") ;pet.nameslot13
		id41 = AddInputOption("Rename Pet ", " ") ;pet.nameslot14
		id42 = AddInputOption("Rename Pet ", " ") ;pet.nameslot15
		id43 = AddInputOption("Rename Pet ", " ") ;pet.nameslot16
		id44 = AddInputOption("Rename Pet ", " ") ;pet.nameslot17
		id45 = AddInputOption("Rename Pet ", " ") ;pet.nameslot18
		id46 = AddInputOption("Rename Pet ", " ") ;pet.nameslot19
		id47 = AddInputOption("Rename Pet ", " ") ;pet.nameslot20
		id48 = AddInputOption("Rename Pet ", " ") ;pet.nameslot21
		id49 = AddInputOption("Rename Pet ", " ") ;pet.nameslot22
		id50 = AddInputOption("Rename Pet ", " ") ;pet.nameslot23
		id51 = AddInputOption("Rename Pet ", " ") ;pet.nameslot24
		;end/
	;end/
	;ent/ Craft
	elseIf (page == "Soul Forge")
		if ftcraft != 1
			debug.MessageBox("This is the Soul Forge MCM. This menu displays your current Forge Memory which can be Forged on-the-fly using Blood Chips, your inventory where you can select an item to analyze so it can be added to memory, and of course your analysis progress. Analysis will natrally progress over time however forging items will also speed it up. In order to learn the analyzing item at 100% you'll need to have an open slot, so make sure to leave one open!")
			ftcraft = 1
		endIf
		;ent/ Variables
			string memcost = Math.Floor(((_s.SuH_craftmemmax + 5) * 0.2) * 2000) as string
			if _s.SuH_craftmemmax >= 50
				memcost = "Memory Maxed"
			endIf
			string anastring = ""
			if _s.SuH_craftanaform != none
				anastring = ("Analyzing "+_s.SuH_craftanaform.GetName())
			else
				anastring = "No analysis in progress..."
			endIf
			float anaxp = _s.SuH_craftanaxp as float
			float anareq = _s.SuH_craftanareq as float
			int anaperc = Math.Floor((anaxp / anareq) * 100)
			
			;ent/ Add/Mem String Calc
			int invitemscount = _s.PlayerRef.GetNumItems()
			int craftaddpagemax = Math.Floor(invitemscount * 0.04)
			int craftmempagemax = Math.Floor(_s.SuH_craftmemmax * 0.04)
			int x = (25 * craftaddpage)
			int y = (25 * craftmempage)
			;end/
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		id0 = AddTextOption("Forge Memory ", _s.SuH_craftmemmax+" Slots") ;craft.memcount
		id1 = AddTextOption("Improve Memory ", memcost) ;craft.meminc
		AddEmptyOption()
		AddEmptyOption()
		AddHeaderOption("Memory (Select to Craft)")
		id5 = AddTextOption("Page ", craftmempage+"/"+craftmempagemax) ;craft.mempage
		if _s.SuH_craftmemmax > 0 + y
			id6 = AddMenuOption(_s.SuH_craftforms[0+y].GetName(), Math.Ceiling((_s.SuH_craftforms[0+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[0+y].GetWeight() * 2))) ;craft.mem0
			id7 = AddMenuOption(_s.SuH_craftforms[1+y].GetName(), Math.Ceiling((_s.SuH_craftforms[1+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[1+y].GetWeight() * 2))) ;craft.mem1
			id8 = AddMenuOption(_s.SuH_craftforms[2+y].GetName(), Math.Ceiling((_s.SuH_craftforms[2+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[2+y].GetWeight() * 2))) ;craft.mem2
			id9 = AddMenuOption(_s.SuH_craftforms[3+y].GetName(), Math.Ceiling((_s.SuH_craftforms[3+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[3+y].GetWeight() * 2))) ;craft.mem3
			id10 = AddMenuOption(_s.SuH_craftforms[4+y].GetName(), Math.Ceiling((_s.SuH_craftforms[4+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[4+y].GetWeight() * 2))) ;craft.mem4
			endIf
			if _s.SuH_craftmemmax > 5 + y
			id11 = AddMenuOption(_s.SuH_craftforms[5+y].GetName(), Math.Ceiling((_s.SuH_craftforms[5+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[5+y].GetWeight() * 2))) ;craft.mem5
			id12 = AddMenuOption(_s.SuH_craftforms[6+y].GetName(), Math.Ceiling((_s.SuH_craftforms[6+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[6+y].GetWeight() * 2))) ;craft.mem6
			id13 = AddMenuOption(_s.SuH_craftforms[7+y].GetName(), Math.Ceiling((_s.SuH_craftforms[7+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[7+y].GetWeight() * 2))) ;craft.mem7
			id14 = AddMenuOption(_s.SuH_craftforms[8+y].GetName(), Math.Ceiling((_s.SuH_craftforms[8+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[8+y].GetWeight() * 2))) ;craft.mem8
			id15 = AddMenuOption(_s.SuH_craftforms[9+y].GetName(), Math.Ceiling((_s.SuH_craftforms[9+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[9+y].GetWeight() * 2))) ;craft.mem9
		endIf
		if _s.SuH_craftmemmax > 10 + y
			id16 = AddMenuOption(_s.SuH_craftforms[10+y].GetName(), Math.Ceiling((_s.SuH_craftforms[10+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[10+y].GetWeight() * 2))) ;craft.mem10
			id17 = AddMenuOption(_s.SuH_craftforms[11+y].GetName(), Math.Ceiling((_s.SuH_craftforms[11+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[11+y].GetWeight() * 2))) ;craft.mem11
			id18 = AddMenuOption(_s.SuH_craftforms[12+y].GetName(), Math.Ceiling((_s.SuH_craftforms[12+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[12+y].GetWeight() * 2))) ;craft.mem12
			id19 = AddMenuOption(_s.SuH_craftforms[13+y].GetName(), Math.Ceiling((_s.SuH_craftforms[13+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[13+y].GetWeight() * 2))) ;craft.mem13
			id20 = AddMenuOption(_s.SuH_craftforms[14+y].GetName(), Math.Ceiling((_s.SuH_craftforms[14+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[14+y].GetWeight() * 2))) ;craft.mem14
		endIf
		if _s.SuH_craftmemmax > 15 + y
			id21 = AddMenuOption(_s.SuH_craftforms[15+y].GetName(), Math.Ceiling((_s.SuH_craftforms[15+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[15+y].GetWeight() * 2))) ;craft.mem15
			id22 = AddMenuOption(_s.SuH_craftforms[16+y].GetName(), Math.Ceiling((_s.SuH_craftforms[16+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[16+y].GetWeight() * 2))) ;craft.mem16
			id23 = AddMenuOption(_s.SuH_craftforms[17+y].GetName(), Math.Ceiling((_s.SuH_craftforms[17+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[17+y].GetWeight() * 2))) ;craft.mem17
			id24 = AddMenuOption(_s.SuH_craftforms[18+y].GetName(), Math.Ceiling((_s.SuH_craftforms[18+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[18+y].GetWeight() * 2))) ;craft.mem18
			id25 = AddMenuOption(_s.SuH_craftforms[19+y].GetName(), Math.Ceiling((_s.SuH_craftforms[19+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[19+y].GetWeight() * 2))) ;craft.mem19
		endIf
		if _s.SuH_craftmemmax > 20 + y
			id26 = AddMenuOption(_s.SuH_craftforms[20+y].GetName(), Math.Ceiling((_s.SuH_craftforms[20+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[20+y].GetWeight() * 2))) ;craft.mem20
			id27 = AddMenuOption(_s.SuH_craftforms[21+y].GetName(), Math.Ceiling((_s.SuH_craftforms[21+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[21+y].GetWeight() * 2))) ;craft.mem21
			id28 = AddMenuOption(_s.SuH_craftforms[22+y].GetName(), Math.Ceiling((_s.SuH_craftforms[22+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[22+y].GetWeight() * 2))) ;craft.mem22
			id29 = AddMenuOption(_s.SuH_craftforms[23+y].GetName(), Math.Ceiling((_s.SuH_craftforms[23+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[23+y].GetWeight() * 2))) ;craft.mem23
			id30 = AddMenuOption(_s.SuH_craftforms[24+y].GetName(), Math.Ceiling((_s.SuH_craftforms[24+y].GetGoldValue() * 2.2) + (_s.SuH_craftforms[24+y].GetWeight() * 2))) ;craft.mem24
		endIf
		
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		id2 = AddTextOption(anastring, anaperc+"%") ;craft.anaitem
		id3 = AddTextOption("Blood Chips Available", _s.PlayerRef.GetItemCount(_s.SuH_misc_bloodchip)) ;craft.bloodchip
		id4 = AddTextOption("Create 5 Blood Chips ", "50 Health Cap") ;craft.bloodchipcreate
		AddEmptyOption()
		AddHeaderOption("Inventory (Select to analyze)")
		id31 = AddTextOption("Page ", craftaddpage+"/"+craftaddpagemax) ;craft.addpage
		id32 = AddMenuOption(_s.PlayerRef.GetNthForm(0+x).GetName(), " ") ;craft.add0
		id33 = AddMenuOption(_s.PlayerRef.GetNthForm(1+x).GetName(), " ") ;craft.add1
		id34 = AddMenuOption(_s.PlayerRef.GetNthForm(2+x).GetName(), " ") ;craft.add2
		id35 = AddMenuOption(_s.PlayerRef.GetNthForm(3+x).GetName(), " ") ;craft.add3
		id36 = AddMenuOption(_s.PlayerRef.GetNthForm(4+x).GetName(), " ") ;craft.add4
		id37 = AddMenuOption(_s.PlayerRef.GetNthForm(5+x).GetName(), " ") ;craft.add5
		id38 = AddMenuOption(_s.PlayerRef.GetNthForm(6+x).GetName(), " ") ;craft.add6
		id39 = AddMenuOption(_s.PlayerRef.GetNthForm(7+x).GetName(), " ") ;craft.add7
		id40 = AddMenuOption(_s.PlayerRef.GetNthForm(8+x).GetName(), " ") ;craft.add8
		id41 = AddMenuOption(_s.PlayerRef.GetNthForm(9+x).GetName(), " ") ;craft.add9
		id42 = AddMenuOption(_s.PlayerRef.GetNthForm(10+x).GetName(), " ") ;craft.add10
		id43 = AddMenuOption(_s.PlayerRef.GetNthForm(11+x).GetName(), " ") ;craft.add11
		id44 = AddMenuOption(_s.PlayerRef.GetNthForm(12+x).GetName(), " ") ;craft.add12
		id45 = AddMenuOption(_s.PlayerRef.GetNthForm(13+x).GetName(), " ") ;craft.add13
		id46 = AddMenuOption(_s.PlayerRef.GetNthForm(14+x).GetName(), " ") ;craft.add14
		id47 = AddMenuOption(_s.PlayerRef.GetNthForm(15+x).GetName(), " ") ;craft.add15
		id48 = AddMenuOption(_s.PlayerRef.GetNthForm(16+x).GetName(), " ") ;craft.add16
		id49 = AddMenuOption(_s.PlayerRef.GetNthForm(17+x).GetName(), " ") ;craft.add17
		id50 = AddMenuOption(_s.PlayerRef.GetNthForm(18+x).GetName(), " ") ;craft.add18
		id51 = AddMenuOption(_s.PlayerRef.GetNthForm(19+x).GetName(), " ") ;craft.add19
		id52 = AddMenuOption(_s.PlayerRef.GetNthForm(20+x).GetName(), " ") ;craft.add20
		id53 = AddMenuOption(_s.PlayerRef.GetNthForm(21+x).GetName(), " ") ;craft.add21
		id54 = AddMenuOption(_s.PlayerRef.GetNthForm(22+x).GetName(), " ") ;craft.add22
		id55 = AddMenuOption(_s.PlayerRef.GetNthForm(23+x).GetName(), " ") ;craft.add23
		id56 = AddMenuOption(_s.PlayerRef.GetNthForm(24+x).GetName(), " ") ;craft.add24
		;end/
	;end/
	;ent/ Help
	elseIf (page == "Help")
		if fthelp != 1
			debug.MessageBox("This is the Help MCM. Here you can view various bits of info about Succubus Heart and its mechanics as well as a reference list for everything included in the mod. Succubus Heart is fairly complex but no advanced understanding is required to use the mod.")
			fthelp = 1
		endIf
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		AddHeaderOption("The Basics")
		id0 = AddTextOption("Drain and it's Effects", " ") ;help.drain
		id1 = AddTextOption("Sex/Death Drops", " ") ;help.drops
		id2 = AddTextOption("The Succubus Realm", " ") ;help.realm
		id3 = AddTextOption("Earning and Spending HeartXP", " ") ;help.xp
		id4 = AddTextOption("Earning and Spending HeartSP", " ") ;help.sp
		id5 = AddTextOption("BDSM Rating and Passives", " ") ;help.bdsm
		id6 = AddTextOption("Upgrading Perks", " ") ;help.perks
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddHeaderOption("Optional Mechanics")
		id7 = AddTextOption("Soul Pets", " ") ;help.pets
		id8 = AddTextOption("Soul Forge ", " ") ;help.forge
		id9 = AddTextOption("Combat Seduction", " ") ;help.cs
		id10 = AddTextOption("Death Override Mode", " ") ;help.dom
		AddEmptyOption()
		AddHeaderOption("Advanced Mechanics")
		id11 = AddTextOption("Desire", " ") ;help.desire
		id12 = AddTextOption("Tracking", " ") ;help.tracking
		;end/
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSelect
Event OnOptionSelect(int option)
	;ent/ Initiate
	if(CurrentPage == "Initiate")
		if(option == id0) ;Initiate
			SetTextOptionValue(id0, "Starting : Please Exit MCM ") ;Initiate
			_s.InitProperties(true)
			_s.SuH_MCMversion = 5
			MCMupdate()
		endIf
	;end/
	;ent/ Status / Settings
	elseif(CurrentPage == "Status / Settings")
		if(option == id7) ;setnpcabsorb
			if _s.SuH_SETnpcabsorb > 0
				_s.SuH_SETnpcabsorb = 0
				SetToggleOptionValue(id7, FALSE) ;setnpcabsorb
			else
				_s.SuH_SETnpcabsorb = 1
				SetToggleOptionValue(id7, TRUE) ;setnpcabsorb
			endIf
		elseif(option == id53) ;hostilevigilfaction
			if _s.PlayerRef.IsInFaction(_s.SuH_Vigilhostile)
				_s.PlayerRef.RemoveFromFaction(_s.SuH_Vigilhostile)
				SetToggleOptionValue(id53, True) ;hostilevigilfaction
			else
				_s.PlayerRef.AddToFaction(_s.SuH_Vigilhostile)
				SetToggleOptionValue(id53, False) ;hostilevigilfaction
			endIf
		elseif(option == id33) ;statusdisablehealthrec
			if _s.SuH_SETdisablehealthrecovery == 0
				_s.SuH_SETdisablehealthrecovery = _s.playerRef.GetBaseActorValue("HealRate")
				_s.playerRef.SetActorValue("HealRate", 0.0)
				SetToggleOptionValue(id33, True) ;statusdisablehealthrec
			else
				_s.playerRef.SetActorValue("HealRate", _s.SuH_SETdisablehealthrecovery)
				_s.SuH_SETdisablehealthrecovery = 0
				SetToggleOptionValue(id33, False) ;statusdisablehealthrec
			endIf
		elseif(option == id34) ;statusdisablemagickarec
			if _s.SuH_SETdisablemagickarecovery == 0
				_s.SuH_SETdisablemagickarecovery = _s.playerRef.GetBaseActorValue("MagickaRate")
				_s.playerRef.SetActorValue("MagickaRate", 0.0)
				SetToggleOptionValue(id34, true) ;statusdisablemagickarec
			else
				_s.playerRef.SetActorValue("MagickaRate", _s.SuH_SETdisablemagickarecovery)
				_s.SuH_SETdisablemagickarecovery = 0
				SetToggleOptionValue(id34, false) ;statusdisablemagickarec
			endIf
		elseif(option == id35) ;statusdisablestaminarec
			if _s.SuH_SETdisablestaminarecovery == 0
				_s.SuH_SETdisablestaminarecovery = _s.playerRef.GetBaseActorValue("StaminaRate")
				_s.playerRef.SetActorValue("StaminaRate", 0.0)
				SetToggleOptionValue(id35, true) ;statusdisablestaminarec
			else
				_s.playerRef.SetActorValue("StaminaRate", _s.SuH_SETdisablestaminarecovery)
				_s.SuH_SETdisablestaminarecovery = 0
				SetToggleOptionValue(id35, false) ;statusdisablestaminarec
			endIf
		elseif(option == id10) ;drainally
			if _s.SuH_SETdrainally > 0
				_s.SuH_SETdrainally = 0
				SetToggleOptionValue(id10, FALSE) ;drainally
			else
				_s.SuH_SETdrainally = 1
				SetToggleOptionValue(id10, TRUE) ;drainally
			endIf
		elseif(option == id8) ;drainkill
			if _s.SuH_SETallowdrainkill > 0
				_s.SuH_SETallowdrainkill = 0
				SetToggleOptionValue(id8, FALSE) ;drainkill
			else
				_s.SuH_SETallowdrainkill = 1
				SetToggleOptionValue(id8, TRUE) ;drainkill
			endIf
		elseif(option == id38) ;status.combatseduction
			if _s.SuH_SETcombatseduction > 0
				_s.SuH_SETcombatseduction = 0
				SetToggleOptionValue(id38, FALSE) ;status.combatseduction
			else
				_s.SuH_SETcombatseduction = 1
				SetToggleOptionValue(id38, TRUE) ;status.combatseduction
			endIf
		elseif(option == id36) ;status.petspells
			if _s.playerRef.HasSpell(_s.SuH_spell_petself)
				_s.playerRef.RemoveSpell(_s.SuH_spell_petself)
				_s.playerRef.RemoveSpell(_s.SuH_spell_pettarget)
				SetToggleOptionValue(id36, FALSE) ;status.petspells
			else
				_s.playerRef.AddSpell(_s.SuH_spell_petself)
				_s.playerRef.AddSpell(_s.SuH_spell_pettarget)
				SetToggleOptionValue(id36, TRUE) ;status.petspells
			endIf
		elseif(option == id19) ;status.malehomo
			if _s.SuH_SETallowmalehomo > 0
				_s.SuH_SETallowmalehomo = 0
				SetToggleOptionValue(id19, FALSE) ;status.malehomo
			else
				_s.SuH_SETallowmalehomo = 1
				SetToggleOptionValue(id19, TRUE) ;status.malehomo
			endIf
		elseif(option == id20) ;status.femalehomo
			if _s.SuH_SETallowfemalehomo > 0
				_s.SuH_SETallowfemalehomo = 0
				SetToggleOptionValue(id20, FALSE) ;status.femalehomo
			else
				_s.SuH_SETallowfemalehomo = 1
				SetToggleOptionValue(id20, TRUE) ;status.femalehomo
			endIf
		elseif(option == id22) ;status.essentialact
			if _s.SuH_SETessentialacts > 0
				_s.SuH_SETessentialacts = 0
				SetToggleOptionValue(id22, FALSE) ;status.essentialact
			else
				_s.SuH_SETessentialacts = 1
				SetToggleOptionValue(id22, TRUE) ;status.essentialact
			endIf
		elseif(option == id9) ;consentdrain
			if _s.SuH_SETconsentdrain > 0
				_s.SuH_SETconsentdrain = 0
				SetToggleOptionValue(id9, FALSE) ;consentdrain
			else
				_s.SuH_SETconsentdrain = 1
				SetToggleOptionValue(id9, TRUE) ;consentdrain
			endIf
		elseif(option == id15) ;status.desiredrain
			if _s.SuH_SETdesiredrain > 0
				_s.SuH_SETdesiredrain = 0
				SetToggleOptionValue(id15, FALSE) ;status.desiredrain
			else
				_s.SuH_SETdesiredrain = 1
				SetToggleOptionValue(id15, TRUE) ;status.desiredrain
			endIf
		elseif(option == id14) ;status.deathdrops
			if _s.SuH_SETdeathdrops > 0
				_s.SuH_SETdeathdrops = 0
				SetToggleOptionValue(id14, FALSE) ;status.deathdrops
			else
				_s.SuH_SETdeathdrops = 1
				SetToggleOptionValue(id14, TRUE) ;status.deathdrops
			endIf
		elseif(option == id11) ;status.alwaysdrainkill
			if _s.SuH_SETalwaysdrainkill > 0
				_s.SuH_SETalwaysdrainkill = 0
				SetToggleOptionValue(id11, FALSE) ;status.alwaysdrainkill
			else
				_s.SuH_SETalwaysdrainkill = 1
				SetToggleOptionValue(id11, TRUE) ;status.alwaysdrainkill
			endIf
		elseif(option == id46) ;status.dom
			if _s.SuH_SETspecialdeath > 0
				_s.PlayerBase.SetEssential(False)
				;_s.playerRef.SetNoBleedoutRecovery(True)
				_s.SuH_SETspecialdeath = 0
				SetToggleOptionValue(id46, FALSE) ;status.dom
			else
				_s.PlayerBase.SetEssential(True)
				_s.SuH_SETspecialdeath = 1
				SetToggleOptionValue(id46, TRUE) ;status.dom
			endIf
		elseif(option == id48) ;status.loseitems
			if _s.SuH_SETsdloseitems > 0
				_s.SuH_SETsdloseitems = 0
				SetToggleOptionValue(id48, FALSE) ;status.loseitems
			else
				_s.SuH_SETsdloseitems = 1
				SetToggleOptionValue(id48, TRUE) ;status.loseitems
			endIf
		elseif(option == id49) ;status.losegold
			if _s.SuH_SETsdlosegold > 0
				_s.SuH_SETsdlosegold = 0
				SetToggleOptionValue(id49, FALSE) ;status.losegold
			else
				_s.SuH_SETsdlosegold = 1
				SetToggleOptionValue(id49, TRUE) ;status.losegold
			endIf
		elseif(option == id50) ;status.losebloodchips
			if _s.SuH_SETsdlosebloodchips > 0
				_s.SuH_SETsdlosebloodchips = 0
				SetToggleOptionValue(id50, FALSE) ;status.losebloodchips
			else
				_s.SuH_SETsdlosebloodchips = 1
				SetToggleOptionValue(id50, TRUE) ;status.losebloodchips
			endIf
		elseif(option == id51) ;status.loseequip
			if _s.SuH_SETsdloseequip > 0
				_s.SuH_SETsdloseequip = 0
				SetToggleOptionValue(id51, FALSE) ;status.loseequip
			else
				_s.SuH_SETsdloseequip = 1
				SetToggleOptionValue(id51, TRUE) ;status.loseequip
			endIf
		elseif(option == id21) ;status.restricact
			if _s.SuH_SETrestrictact > 0
				_s.SuH_SETrestrictact = 0
				SetToggleOptionValue(id21, FALSE) ;status.restricact
			else
				_s.SuH_SETrestrictact = 1
				SetToggleOptionValue(id21, TRUE) ;status.restricact
			endIf
		elseif(option == id37) ;status.removepet
			if _s.SuH_SETpetremoveondeath > 0
				_s.SuH_SETpetremoveondeath = 0
				SetToggleOptionValue(id37, FALSE) ;status.removepet
			else
				_s.SuH_SETpetremoveondeath = 1
				SetToggleOptionValue(id37, TRUE) ;status.removepet
			endIf
		elseif(option == id47) ;status.randomdeathspawm
			if _s.SuH_SETrandomdeathspawn > 0
				_s.SuH_SETrandomdeathspawn = 0
				SetToggleOptionValue(id47, FALSE) ;status.randomdeathspawm
			else
				_s.SuH_SETrandomdeathspawn = 1
				SetToggleOptionValue(id47, TRUE) ;status.randomdeathspawm
			endIf
		elseif(option == id18) ;status.clearactor
			if _s.SuH_SETclearactor > 0
				_s.SuH_SETclearactor = 0
				SetToggleOptionValue(id18, FALSE) ;status.clearactor
			else
				_s.SuH_SETclearactor = 1
				SetToggleOptionValue(id18, TRUE) ;status.clearactor
			endIf
		elseif(option == id13) ;calmaura
			if _s.SuH_SETcalmaura > 0
				_s.SuH_SETcalmaura = 0
				SetToggleOptionValue(id13, FALSE) ;calmaura
			else
				_s.SuH_SETcalmaura = 1
				SetToggleOptionValue(id13, TRUE) ;calmaura
			endIf
		elseif(option == id12) ;status.advancedchecking
			if _s.SuH_SETadvancedchecking > 0
				_s.SuH_SETadvancedchecking = 0
				SetToggleOptionValue(id12, FALSE) ;status.advancedchecking
			else
				_s.SuH_SETadvancedchecking = 1
				SetToggleOptionValue(id12, TRUE) ;status.advancedchecking
			endIf
		elseif(option == id54) ;status.endactonatk
			if _s.SuH_SETactendonatk > 0
				_s.SuH_SETactendonatk = 0
				SetToggleOptionValue(id54, FALSE) ;status.endactonatk
			else
				_s.SuH_SETactendonatk = 1
				SetToggleOptionValue(id54, TRUE) ;status.endactonatk
			endIf
		endIf
	;end/
	;ent/ Skill Levels
	elseIf(CurrentPage == "Skill Levels")
		if(option == id4) ;skill.alchemy
			int alchemylvl = _s.SuH_PCSalchemy
			if alchemylvl != _s.playerRef.GetBaseActorValue("alchemy")
				alchemylvl = _s.playerRef.GetBaseActorValue("alchemy") as int
				int alchemycost = Math.Ceiling(alchemylvl*0.1)
				if _s.SuH_PCSsp >= alchemycost
					_s.SuH_PCSalchemy = alchemylvl
					_s.SuH_PCSsp -= alchemycost
					Game.IncrementSkill("alchemy")
					alchemylvl = _s.playerRef.GetBaseActorValue("alchemy") as int
					alchemycost = Math.Ceiling(alchemylvl*0.1)
					SetTextOptionValue(id4, alchemylvl+" ["+alchemycost+" SP]") ;skill.alchemy
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id13) ;skill.alteration
			int alterationlvl = _s.SuH_PCSalteration
			if alterationlvl != _s.playerRef.GetBaseActorValue("alteration")
				alterationlvl = _s.playerRef.GetBaseActorValue("alteration") as int
				int alterationcost = Math.Ceiling(alterationlvl*0.1)
				if _s.SuH_PCSsp >= alterationcost
					_s.SuH_PCSalteration = alterationlvl
					_s.SuH_PCSsp -= alterationcost
					Game.IncrementSkill("alteration")
					alterationlvl = _s.playerRef.GetBaseActorValue("alteration") as int
					alterationcost = Math.Ceiling(alterationlvl*0.1)
					SetTextOptionValue(id13, alterationlvl+" ["+alterationcost+" SP]") ;skill.alteration
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id5) ;skill.block
			int blocklvl = _s.SuH_PCSblock
			if blocklvl != _s.playerRef.GetBaseActorValue("block")
				blocklvl = _s.playerRef.GetBaseActorValue("block") as int
				int blockcost = Math.Ceiling(blocklvl*0.1)
				if _s.SuH_PCSsp >= blockcost
					_s.SuH_PCSblock = blocklvl
					_s.SuH_PCSsp -= blockcost
					Game.IncrementSkill("block")
					blocklvl = _s.playerRef.GetBaseActorValue("block") as int
					blockcost = Math.Ceiling(blocklvl*0.1)
					SetTextOptionValue(id5, blocklvl+" ["+blockcost+" SP]") ;skill.block
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id14) ;skill.conjuration
			int conjurationlvl = _s.SuH_PCSconjuration
			if conjurationlvl != _s.playerRef.GetBaseActorValue("conjuration")
				conjurationlvl = _s.playerRef.GetBaseActorValue("conjuration") as int
				int conjurationcost = Math.Ceiling(conjurationlvl*0.1)
				if _s.SuH_PCSsp >= conjurationcost
					_s.SuH_PCSconjuration = conjurationlvl
					_s.SuH_PCSsp -= conjurationcost
					Game.IncrementSkill("conjuration")
					conjurationlvl = _s.playerRef.GetBaseActorValue("conjuration") as int
					conjurationcost = Math.Ceiling(conjurationlvl*0.1)
					SetTextOptionValue(id14, conjurationlvl+" ["+conjurationcost+" SP]") ;skill.conjuration
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id6) ;skill.destruction
			int destructionlvl = _s.SuH_PCSdestruction
			if destructionlvl != _s.playerRef.GetBaseActorValue("destruction")
				destructionlvl = _s.playerRef.GetBaseActorValue("destruction") as int
				int destructioncost = Math.Ceiling(destructionlvl*0.1)
				if _s.SuH_PCSsp >= destructioncost
					_s.SuH_PCSdestruction = destructionlvl
					_s.SuH_PCSsp -= destructioncost
					Game.IncrementSkill("destruction")
					destructionlvl = _s.playerRef.GetBaseActorValue("destruction") as int
					destructioncost = Math.Ceiling(destructionlvl*0.1)
					SetTextOptionValue(id6, destructionlvl+" ["+destructioncost+" SP]") ;skill.destruction
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id15) ;skill.enchanting
			int enchantinglvl = _s.SuH_PCSenchanting
			if enchantinglvl != _s.playerRef.GetBaseActorValue("enchanting")
				enchantinglvl = _s.playerRef.GetBaseActorValue("enchanting") as int
				int enchantingcost = Math.Ceiling(enchantinglvl*0.1)
				if _s.SuH_PCSsp >= enchantingcost
					_s.SuH_PCSenchanting = enchantinglvl
					_s.SuH_PCSsp -= enchantingcost
					Game.IncrementSkill("enchanting")
					enchantinglvl = _s.playerRef.GetBaseActorValue("enchanting") as int
					enchantingcost = Math.Ceiling(enchantinglvl*0.1)
					SetTextOptionValue(id15, enchantinglvl+" ["+enchantingcost+" SP]") ;skill.enchanting
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id7) ;skill.heavyarmor
			int heavyarmorlvl = _s.SuH_PCSheavyarmor
			if heavyarmorlvl != _s.playerRef.GetBaseActorValue("heavyarmor")
				heavyarmorlvl = _s.playerRef.GetBaseActorValue("heavyarmor") as int
				int heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
				if _s.SuH_PCSsp >= heavyarmorcost
					_s.SuH_PCSheavyarmor = heavyarmorlvl
					_s.SuH_PCSsp -= heavyarmorcost
					Game.IncrementSkill("heavyarmor")
					heavyarmorlvl = _s.playerRef.GetBaseActorValue("heavyarmor") as int
					heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
					SetTextOptionValue(id7, heavyarmorlvl+" ["+heavyarmorcost+" SP]") ;skill.heavyarmor
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id16) ;skill.illusion
			int illusionlvl = _s.SuH_PCSillusion
			if illusionlvl != _s.playerRef.GetBaseActorValue("illusion")
				illusionlvl = _s.playerRef.GetBaseActorValue("illusion") as int
				int illusioncost = Math.Ceiling(illusionlvl*0.1)
				if _s.SuH_PCSsp >= illusioncost
					_s.SuH_PCSillusion = illusionlvl
					_s.SuH_PCSsp -= illusioncost
					Game.IncrementSkill("illusion")
					illusionlvl = _s.playerRef.GetBaseActorValue("illusion") as int
					illusioncost = Math.Ceiling(illusionlvl*0.1)
					SetTextOptionValue(id16, illusionlvl+" ["+illusioncost+" SP]") ;skill.illusion
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id8) ;skill.lightarmor
			int lightarmorlvl = _s.SuH_PCSlightarmor
			if lightarmorlvl != _s.playerRef.GetBaseActorValue("lightarmor")
				lightarmorlvl = _s.playerRef.GetBaseActorValue("lightarmor") as int
				int lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
				if _s.SuH_PCSsp >= lightarmorcost
					_s.SuH_PCSlightarmor = lightarmorlvl
					_s.SuH_PCSsp -= lightarmorcost
					Game.IncrementSkill("lightarmor")
					lightarmorlvl = _s.playerRef.GetBaseActorValue("lightarmor") as int
					lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
					SetTextOptionValue(id8, lightarmorlvl+" ["+lightarmorcost+" SP]") ;skill.lightarmor
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id17) ;skill.lockpicking
			int lockpickinglvl = _s.SuH_PCSlockpicking
			if lockpickinglvl != _s.playerRef.GetBaseActorValue("lockpicking")
				lockpickinglvl = _s.playerRef.GetBaseActorValue("lockpicking") as int
				int lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
				if _s.SuH_PCSsp >= lockpickingcost
					_s.SuH_PCSlockpicking = lockpickinglvl
					_s.SuH_PCSsp -= lockpickingcost
					Game.IncrementSkill("lockpicking")
					lockpickinglvl = _s.playerRef.GetBaseActorValue("lockpicking") as int
					lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
					SetTextOptionValue(id17, lockpickinglvl+" ["+lockpickingcost+" SP]") ;skill.lockpicking
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id9) ;skill.marksman
			int marksmanlvl = _s.SuH_PCSmarksman
			if marksmanlvl != _s.playerRef.GetBaseActorValue("marksman")
				marksmanlvl = _s.playerRef.GetBaseActorValue("marksman") as int
				int marksmancost = Math.Ceiling(marksmanlvl*0.1)
				if _s.SuH_PCSsp >= marksmancost
					_s.SuH_PCSmarksman = marksmanlvl
					_s.SuH_PCSsp -= marksmancost
					Game.IncrementSkill("marksman")
					marksmanlvl = _s.playerRef.GetBaseActorValue("marksman") as int
					marksmancost = Math.Ceiling(marksmanlvl*0.1)
					SetTextOptionValue(id9, marksmanlvl+" ["+marksmancost+" SP]") ;skill.marksman
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id18) ;skill.onehanded
			int onehandedlvl = _s.SuH_PCSonehanded
			if onehandedlvl != _s.playerRef.GetBaseActorValue("onehanded")
				onehandedlvl = _s.playerRef.GetBaseActorValue("onehanded") as int
				int onehandedcost = Math.Ceiling(onehandedlvl*0.1)
				if _s.SuH_PCSsp >= onehandedcost
					_s.SuH_PCSonehanded = onehandedlvl
					_s.SuH_PCSsp -= onehandedcost
					Game.IncrementSkill("onehanded")
					onehandedlvl = _s.playerRef.GetBaseActorValue("onehanded") as int
					onehandedcost = Math.Ceiling(onehandedlvl*0.1)
					SetTextOptionValue(id18, onehandedlvl+" ["+onehandedcost+" SP]") ;skill.onehanded
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id10) ;skill.pickpocket
			int pickpocketlvl = _s.SuH_PCSpickpocket
			if pickpocketlvl != _s.playerRef.GetBaseActorValue("pickpocket")
				pickpocketlvl = _s.playerRef.GetBaseActorValue("pickpocket") as int
				int pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
				if _s.SuH_PCSsp >= pickpocketcost
					_s.SuH_PCSpickpocket = pickpocketlvl
					_s.SuH_PCSsp -= pickpocketcost
					Game.IncrementSkill("pickpocket")
					pickpocketlvl = _s.playerRef.GetBaseActorValue("pickpocket") as int
					pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
					SetTextOptionValue(id10, pickpocketlvl+" ["+pickpocketcost+" SP]") ;skill.pickpocket
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id19) ;skill.restoration
			int restorationlvl = _s.SuH_PCSrestoration
			if restorationlvl != _s.playerRef.GetBaseActorValue("restoration")
				restorationlvl = _s.playerRef.GetBaseActorValue("restoration") as int
				int restorationcost = Math.Ceiling(restorationlvl*0.1)
				if _s.SuH_PCSsp >= restorationcost
					_s.SuH_PCSrestoration = restorationlvl
					_s.SuH_PCSsp -= restorationcost
					Game.IncrementSkill("restoration")
					restorationlvl = _s.playerRef.GetBaseActorValue("restoration") as int
					restorationcost = Math.Ceiling(restorationlvl*0.1)
					SetTextOptionValue(id19, restorationlvl+" ["+restorationcost+" SP]") ;skill.restoration
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id11) ;skill.smithing
			int smithinglvl = _s.SuH_PCSsmithing
			if smithinglvl != _s.playerRef.GetBaseActorValue("smithing")
				smithinglvl = _s.playerRef.GetBaseActorValue("smithing") as int
				int smithingcost = Math.Ceiling(smithinglvl*0.1)
				if _s.SuH_PCSsp >= smithingcost
					_s.SuH_PCSsmithing = smithinglvl
					_s.SuH_PCSsp -= smithingcost
					Game.IncrementSkill("smithing")
					smithinglvl = _s.playerRef.GetBaseActorValue("smithing") as int
					smithingcost = Math.Ceiling(smithinglvl*0.1)
					SetTextOptionValue(id11, smithinglvl+" ["+smithingcost+" SP]") ;skill.smithing
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id20) ;skill.sneak
			int sneaklvl = _s.SuH_PCSsneak
			if sneaklvl != _s.playerRef.GetBaseActorValue("sneak")
				sneaklvl = _s.playerRef.GetBaseActorValue("sneak") as int
				int sneakcost = Math.Ceiling(sneaklvl*0.1)
				if _s.SuH_PCSsp >= sneakcost
					_s.SuH_PCSsneak = sneaklvl
					_s.SuH_PCSsp -= sneakcost
					Game.IncrementSkill("sneak")
					sneaklvl = _s.playerRef.GetBaseActorValue("sneak") as int
					sneakcost = Math.Ceiling(sneaklvl*0.1)
					SetTextOptionValue(id20, sneaklvl+" ["+sneakcost+" SP]") ;skill.sneak
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id12) ;skill.speechcraft
			int speechcraftlvl = _s.SuH_PCSspeechcraft
			if speechcraftlvl != _s.playerRef.GetBaseActorValue("speechcraft")
				speechcraftlvl = _s.playerRef.GetBaseActorValue("speechcraft") as int
				int speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
				if _s.SuH_PCSsp >= speechcraftcost
					_s.SuH_PCSspeechcraft = speechcraftlvl
					_s.SuH_PCSsp -= speechcraftcost
					Game.IncrementSkill("speechcraft")
					speechcraftlvl = _s.playerRef.GetBaseActorValue("speechcraft") as int
					speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
					SetTextOptionValue(id12, speechcraftlvl+" ["+speechcraftcost+" SP]") ;skill.speechcraft
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == id21) ;skill.twohanded
			int twohandedlvl = _s.SuH_PCStwohanded
			if twohandedlvl != _s.playerRef.GetBaseActorValue("twohanded")
				twohandedlvl = _s.playerRef.GetBaseActorValue("twohanded") as int
				int twohandedcost = Math.Ceiling(twohandedlvl*0.1)
				if _s.SuH_PCSsp >= twohandedcost
					_s.SuH_PCStwohanded = twohandedlvl
					_s.SuH_PCSsp -= twohandedcost
					Game.IncrementSkill("twohanded")
					twohandedlvl = _s.playerRef.GetBaseActorValue("twohanded") as int
					twohandedcost = Math.Ceiling(twohandedlvl*0.1)
					SetTextOptionValue(id21, twohandedlvl+" ["+twohandedcost+" SP]") ;skill.twohanded
					SetTextOptionValue(id0, _s.SuH_PCSsp) ;skillsp
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		endIf
	;end/
	;ent/ Heart Levels
	elseIf(CurrentPage == "Heart Levels")
		if(option == id1) ;heart.healthcap
			int caphealthcost = Math.Floor(((_s.SuH_PCScaphealth - _s.SuH_PCScaphealthitem)*0.12)*15+20)
			if _s.SuH_PCSxp >= caphealthcost
				_s.SuH_PCSxp -= caphealthcost
				_s.SuH_PCScaphealth += 1
				caphealthcost = Math.Floor(((_s.SuH_PCScaphealth - _s.SuH_PCScaphealthitem)*0.12)*15+20)
				int plvl = _s.playerRef.GetLevel()
				int caphealthdisplay = Math.Floor((_s.SuH_PCScaphealth + plvl * 4) - _s.SuH_PCScaphealthdown)
				_f.BDSMcalc("b", 1)
				SetTextOptionValue(id1, caphealthdisplay+" ["+caphealthcost+" XP]") ;heart.healthcap
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id2) ;heart.magickacap
			int capmagickacost = Math.Floor(((_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickaitem)*0.12)*15+20)
			if _s.SuH_PCSxp >= capmagickacost
				_s.SuH_PCSxp -= capmagickacost
				_s.SuH_PCScapmagicka += 1
				capmagickacost = Math.Floor(((_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickaitem)*0.12)*15+20)
				int plvl = _s.playerRef.GetLevel() as int
				int capmagickadisplay = Math.Floor((_s.SuH_PCScapmagicka+plvl*3) - _s.SuH_PCScapmagickadown)
				_f.BDSMcalc("m", 1)
				SetTextOptionValue(id2, capmagickadisplay+" ["+capmagickacost+" XP]") ;heart.magickacap
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id3) ;heart.staminacap
			int capstaminacost = Math.Floor(((_s.SuH_PCScapstamina - _s.SuH_PCScapstaminaitem)*0.12)*15+20)
			if _s.SuH_PCSxp >= capstaminacost
				_s.SuH_PCSxp -= capstaminacost
				_s.SuH_PCScapstamina += 1
				capstaminacost = Math.Floor(((_s.SuH_PCScapstamina - _s.SuH_PCScapstaminaitem)*0.12)*15+20)
				int plvl = _s.playerRef.GetLevel() as int
				int capstaminadisplay = Math.Floor((_s.SuH_PCScapstamina+plvl*3) - _s.SuH_PCScapstaminadown)
				_f.BDSMcalc("s", 1)
				SetTextOptionValue(id3, capstaminadisplay+" ["+capstaminacost+" XP]") ;heart.staminacap
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id4) ;heart.stacksex
			int stacksexcost = Math.Floor(_s.SuH_PCSstackmaxsex*2.8*240)
			if _s.SuH_PCSxp >= stacksexcost
				_s.SuH_PCSxp -= stacksexcost
				_s.SuH_PCSstackmaxsex += 1
				stacksexcost = Math.Floor(_s.SuH_PCSstackmaxsex*2.8*240)
				_f.BDSMcalc("d", 5)
				SetTextOptionValue(id4, _s.SuH_PCSstackmaxsex+" ["+stacksexcost+" XP]") ;heart.stacksex
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id5) ;heart.stacksperm
			int stackspermcost = Math.Floor(_s.SuH_PCSstackmaxsperm*2.8*240)
			if _s.SuH_PCSxp >= stackspermcost
				_s.SuH_PCSxp -= stackspermcost
				_s.SuH_PCSstackmaxsperm += 1
				stackspermcost = Math.Floor(_s.SuH_PCSstackmaxsperm*2.8*240)
				_f.BDSMcalc("d", 5)
				SetTextOptionValue(id5, _s.SuH_PCSstackmaxsperm+" ["+stackspermcost+" XP]") ;heart.stacksperm
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id6) ;heart.stackmilk
			int stackmilkcost = Math.Floor(_s.SuH_PCSstackmaxmilk*2.8*240)
			if _s.SuH_PCSxp >= stackmilkcost
				_s.SuH_PCSxp -= stackmilkcost
				_s.SuH_PCSstackmaxmilk += 1
				stackmilkcost = Math.Floor(_s.SuH_PCSstackmaxmilk*2.8*240)
				_f.BDSMcalc("d", 5)
				SetTextOptionValue(id6, _s.SuH_PCSstackmaxmilk+" ["+stackmilkcost+" XP]") ;heart.stackmilk
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id8) ;heart.absorbhealth
			int absorbhealthcost = Math.Floor(_s.SuH_PCSabsorbhealth*2.2*280)
			if _s.SuH_PCSxp >= absorbhealthcost
				_s.SuH_PCSxp -= absorbhealthcost
				_s.SuH_PCSabsorbhealth += 1
				absorbhealthcost = Math.Floor(_s.SuH_PCSabsorbhealth*2.2*280)
				_f.BDSMcalc("b", 5)
				SetTextOptionValue(id8, _s.SuH_PCSabsorbhealth+" ["+absorbhealthcost+" XP]") ;heart.absorbhealth
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id9) ;heart.absorbmagicka
			int absorbmagickacost = Math.Floor(_s.SuH_PCSabsorbmagicka*2.2*280)
			if _s.SuH_PCSxp >= absorbmagickacost
				_s.SuH_PCSxp -= absorbmagickacost
				_s.SuH_PCSabsorbmagicka += 1
				absorbmagickacost = Math.Floor(_s.SuH_PCSabsorbmagicka*2.2*280)
				_f.BDSMcalc("m", 5)
				SetTextOptionValue(id9, _s.SuH_PCSabsorbmagicka+" ["+absorbmagickacost+" XP]") ;heart.absorbmagicka
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id10) ;heart.absorbstamina
			int absorbstaminacost = Math.Floor(_s.SuH_PCSabsorbstamina*2.2*280)
			if _s.SuH_PCSxp >= absorbstaminacost
				_s.SuH_PCSxp -= absorbstaminacost
				_s.SuH_PCSabsorbstamina += 1
				absorbstaminacost = Math.Floor(_s.SuH_PCSabsorbstamina*2.2*280)
				_f.BDSMcalc("s", 5)
				SetTextOptionValue(id10, _s.SuH_PCSabsorbstamina+" ["+absorbstaminacost+" XP]") ;heart.absorbstamina
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id11) ;heart.spermhealth
			int spermhealthcost = Math.Floor(_s.SuH_PCSspermhealth*1.8*200)
			if _s.SuH_PCSxp >= spermhealthcost
				_s.SuH_PCSxp -= spermhealthcost
				_s.SuH_PCSspermhealth += 1
				spermhealthcost = Math.Floor(_s.SuH_PCSspermhealth*1.8*200)
				_f.BDSMcalc("b", 2)
				SetTextOptionValue(id11, _s.SuH_PCSspermhealth+" ["+spermhealthcost+" XP]") ;heart.spermhealth
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id12) ;heart.spermmagicka
			int spermmagickacost = Math.Floor(_s.SuH_PCSspermmagicka*1.8*200)
			if _s.SuH_PCSxp >= spermmagickacost
				_s.SuH_PCSxp -= spermmagickacost
				_s.SuH_PCSspermmagicka += 1
				spermmagickacost = Math.Floor(_s.SuH_PCSspermmagicka*1.8*200)
				_f.BDSMcalc("m", 2)
				SetTextOptionValue(id12, _s.SuH_PCSspermmagicka+" ["+spermmagickacost+" XP]") ;heart.spermmagicka
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id13) ;heart.spermstamina
			int spermstamina = _s.SuH_PCSspermstamina
			int spermstaminacost = Math.Floor(_s.SuH_PCSspermstamina*1.8*200)
			if _s.SuH_PCSxp >= spermstaminacost
				_s.SuH_PCSxp -= spermstaminacost
				_s.SuH_PCSspermstamina += 1
				spermstaminacost = Math.Floor(_s.SuH_PCSspermstamina*1.8*200)
				_f.BDSMcalc("s", 2)
				SetTextOptionValue(id13, _s.SuH_PCSspermstamina+" ["+spermstaminacost+" XP]") ;heart.spermstamina
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id14) ;heart.milkhealth
			int milkhealth = _s.SuH_PCSmilkhealth as int
			int milkhealthcost = Math.Floor(_s.SuH_PCSmilkhealth*1.8*200)
			if _s.SuH_PCSxp >= milkhealthcost
				_s.SuH_PCSxp -= milkhealthcost
				_s.SuH_PCSmilkhealth += 1
				milkhealthcost = Math.Floor(_s.SuH_PCSmilkhealth*1.8*200)
				_f.BDSMcalc("b", 2)
				SetTextOptionValue(id14, _s.SuH_PCSmilkhealth+" ["+milkhealthcost+" XP]") ;heart.milkhealth
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id15) ;heart.milkmagicka
			int milkmagickacost = Math.Floor(_s.SuH_PCSmilkmagicka*1.8*200)
			if _s.SuH_PCSxp >= milkmagickacost
				_s.SuH_PCSxp -= milkmagickacost
				_s.SuH_PCSmilkmagicka += 1
				milkmagickacost = Math.Floor(_s.SuH_PCSmilkmagicka*1.8*200)
				_f.BDSMcalc("m", 2)
				SetTextOptionValue(id15, _s.SuH_PCSmilkmagicka+" ["+milkmagickacost+" XP]") ;heart.milkmagicka
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id16) ;heart.milkstamina
			int milkstaminacost = Math.Floor(_s.SuH_PCSmilkstamina*1.8*200)
			if _s.SuH_PCSxp >= milkstaminacost
				_s.SuH_PCSxp -= milkstaminacost
				_s.SuH_PCSmilkstamina += 1
				milkstaminacost = Math.Floor(_s.SuH_PCSmilkstamina*1.8*200)
				_f.BDSMcalc("s", 2)
				SetTextOptionValue(id16, _s.SuH_PCSmilkstamina+" ["+milkstaminacost+" XP]") ;heart.milkstamina
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		elseif(option == id7) ;heart.xpgain
			int xpgaincost = Math.Floor(((_s.SuH_PCSxpgain - (99+_s.SuH_PCSxpgainitem))*2.0*350)*0.5)
			if _s.SuH_PCSxp >= xpgaincost
				_s.SuH_PCSxp -= xpgaincost
				_s.SuH_PCSxpgain += 2
				xpgaincost = Math.Floor(((_s.SuH_PCSxpgain - (99+_s.SuH_PCSxpgainitem))*2.0*350)*0.5)
				_f.BDSMcalc("d", 10)
				SetTextOptionValue(id7, _s.SuH_PCSxpgain+"% ["+xpgaincost+" XP]") ;heart.xpgain
				SetTextOptionValue(id0, _s.SuH_PCSxp) ;heart.xp
			endIf
		endIf
	;end/
	;ent/ Passives
	elseIf(CurrentPage == "Passives") ; NOTE T1=12 T2=24 T3=30
		if(option == id2) ;spell.xp
				int bdsmrankcost = Math.Floor((1200*_s.SuH_rank_bdsm)*1.6+1200)
			if _s.SuH_PCSxp >= bdsmrankcost
				_s.SuH_PCSbpoint += 5
				_s.SuH_PCSdpoint += 5
				_s.SuH_PCSspoint += 5
				_s.SuH_PCSmpoint += 5
				_s.SuH_PCSbdsm += 20
				_s.SuH_PCSxp -= bdsmrankcost
				_s.SuH_rank_bdsm += 1
				bdsmrankcost = Math.Floor((1200*_s.SuH_rank_bdsm)*1.6+1200)
				;debug.MessageBox("BodyDesireSoulMind Rating has been increased!")
				SetTextOptionValue(id2, bdsmrankcost+" XP") ;spell.xp
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
			endIf
		elseif(option == id3) ;spell.reset
			_f.PassiveReset()
			;Utility.wait(0.01)
			ForcePageReset()
		elseif(option == id38) ;spell.perfectorgasmrank
				int perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
				int perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
			if	_s.SuH_rank_perfectorgasm >= 95
				debug.MessageBox("Perfect Orgasm has reached its max rank on this path!")
			elseif _s.SuH_PCSbdsm >= perfectorgasmcost
				_s.SuH_PCSbdsm -= perfectorgasmcost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_perfectorgasm += 1
				perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
				perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
				SetTextOptionValue(id37, "rank "+ perfectorgasmrankall) ;spell.perfectorgasm
				SetTextOptionValue(id38, perfectorgasmcost) ;spell.perfectorgasmrank
				SetTextOptionValue(id39, perfectorgasmcost) ;spell.perfectorgasmrank2
			endIf
		elseif(option == id39) ;spell.perfectorgasmrank2
				int perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
				int perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
			if	_s.SuH_rank_perfectorgasm2 >= 20
				debug.MessageBox("Perfect Orgasm has reached its max rank on this path!")
			elseif (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 16
				debug.MessageBox("Not enough Health Cap to sustain a passive increase")
			elseif (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 16
				debug.MessageBox("Not enough Magicka Cap to sustain a passive increase")
			elseif (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 16
				debug.MessageBox("Not enough Stamina Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= perfectorgasmcost
				_s.SuH_PCSbdsm -= perfectorgasmcost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_perfectorgasm2 += 1
				_s.SuH_PCScaphealthdown += 15
				_s.SuH_PCScapmagickadown += 15
				_s.SuH_PCScapstaminadown += 15
				perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
				perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
				SetTextOptionValue(id37, "rank "+ perfectorgasmrankall) ;spell.perfectorgasm
				SetTextOptionValue(id38, perfectorgasmcost) ;spell.perfectorgasmrank
				SetTextOptionValue(id39, perfectorgasmcost) ;spell.perfectorgasmrank2
			endIf
		elseif(option == id24) ;spell.lusciousliquidsrank
				int lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				int lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 16
				debug.MessageBox("Not enough Health Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= lusciousliquidscost
				_s.SuH_PCSbdsm -= lusciousliquidscost
				_s.SuH_PCScaphealthdown += 15
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_lusciousliquids += 1
				lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
				SetTextOptionValue(id23, "rank "+ lusciousliquidsrankall) ;spell.lusciousliquids
				SetTextOptionValue(id24, lusciousliquidscost) ;spell.lusciousliquidsrank
				SetTextOptionValue(id25, lusciousliquidscost) ;spell.lusciousliquidsrank2
			endIf
		elseif(option == id25) ;spell.lusciousliquidsrank2
				int lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				int lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
			if (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 16
				debug.MessageBox("Not enough Magicka Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= lusciousliquidscost
				_s.SuH_PCSbdsm -= lusciousliquidscost
				_s.SuH_PCScapmagickadown += 15
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_lusciousliquids2 += 1
				lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
				SetTextOptionValue(id23, "rank "+ lusciousliquidsrankall) ;spell.lusciousliquids
				SetTextOptionValue(id24, lusciousliquidscost) ;spell.lusciousliquidsrank
				SetTextOptionValue(id25, lusciousliquidscost) ;spell.lusciousliquidsrank2
			endIf
		elseif(option == id5) ;spell.masochistrank
				int masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				int masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 16
				debug.MessageBox("Not enough Health Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= masochistcost
				_s.SuH_PCSbdsm -= masochistcost
				_s.SuH_PCScaphealthdown += 15
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_masochist += 1
				masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
				SetTextOptionValue(id4, "rank "+masochistrankall) ;spell.masochist
				SetTextOptionValue(id5, masochistcost) ;spell.masochistrank
				SetTextOptionValue(id6, masochistcost) ;spell.masochistrank2
			endif
		elseif(option == id6) ;spell.masochistrank2
				int masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				int masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 16
				debug.MessageBox("Not enough Health Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= masochistcost
				_s.SuH_PCSbdsm -= masochistcost
				_s.SuH_PCScaphealthdown += 15
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_masochist2 += 1
				masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
				SetTextOptionValue(id4, "rank "+masochistrankall) ;spell.masochist
				SetTextOptionValue(id5, masochistcost) ;spell.masochistrank
				SetTextOptionValue(id6, masochistcost) ;spell.masochistrank2
			endif
		elseif(option == id34) ;spell.selfstackerrank
				int selfstackercost = Math.Floor(30+(_s.SuH_rank_selfstacker*0.1*30))
			if _s.SuH_PCSbdsm >= selfstackercost
				_s.SuH_PCSbdsm -= selfstackercost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_selfstacker += 1
				selfstackercost = Math.Floor(30+(_s.SuH_rank_selfstacker*0.1*30))
				SetTextOptionValue(id33, "rank "+_s.SuH_rank_selfstacker) ;spell.selfstacker
				SetTextOptionValue(id34, selfstackercost) ;spell.selfstackerrank
			endif
		elseif(option == id32) ;spell.valuestackerrank
				int valuestackercost = Math.Floor(30+(_s.SuH_rank_valuestacker*0.1*30))
			if _s.SuH_PCSbdsm >= valuestackercost
				_s.SuH_PCSbdsm -= valuestackercost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_valuestacker += 1
				valuestackercost = Math.Floor(30+(_s.SuH_rank_valuestacker*0.1*30))
				SetTextOptionValue(id31, "rank "+_s.SuH_rank_valuestacker) ;spell.valuestacker
				SetTextOptionValue(id32, valuestackercost) ;spell.valuestackerrank
			endif
		elseif(option == id14) ;spell.savingessencerank
				int savingessencerankall = _s.SuH_rank_savingessence + _s.SuH_rank_savingessence2
				int savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
			if _s.SuH_PCSbdsm >= savingessencecost
				_s.SuH_PCSbdsm -= savingessencecost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_savingessence += 1
				savingessencerankall += 1
				savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
				SetTextOptionValue(id13, "rank "+savingessencerankall) ;spell.savingessence
				SetTextOptionValue(id14, savingessencecost) ;spell.savingessencerank
				SetTextOptionValue(id15, savingessencecost) ;spell.savingessencerank2
			endif
		elseif(option == id15) ;spell.savingessencerank2
				int savingessencerankall = _s.SuH_rank_savingessence + _s.SuH_rank_savingessence2
				int savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
			if _s.SuH_rank_savingessence2 >= 19
				debug.MessageBox("Saving Essence has reached its max rank on this path!")
			elseif _s.SuH_PCSbdsm >= savingessencecost
				_s.SuH_PCSbdsm -= savingessencecost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_savingessence2 += 1
				savingessencerankall += 1
				savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
				SetTextOptionValue(id13, "rank "+savingessencerankall) ;spell.savingessence
				SetTextOptionValue(id14, savingessencecost) ;spell.savingessencerank
				SetTextOptionValue(id15, savingessencecost) ;spell.savingessencerank2
			endif
		elseif(option == id22) ;spell.giftedconsentrank
				int giftedconsentcost = Math.Floor(30+(_s.SuH_rank_giftedconsent*0.1*30))
			if _s.SuH_PCSbdsm >= giftedconsentcost
				_s.SuH_PCSbdsm -= giftedconsentcost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_giftedconsent += 1
				giftedconsentcost = Math.Floor(30+(_s.SuH_rank_giftedconsent*0.1*30))
				SetTextOptionValue(id21, "rank "+_s.SuH_rank_giftedconsent) ;spell.giftedconsent
				SetTextOptionValue(id22, giftedconsentcost) ;spell.giftedconsentrank
			endif
		elseif(option == id30) ;spell.forcemasterrank
				int forcemastercost = Math.Floor(30+(_s.SuH_rank_forcemaster*0.1*30))
			if _s.SuH_rank_forcemaster >= 9
				debug.MessageBox("Force Master has reached its max rank!")
			elseif (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 26 || (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 26 || (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 26
				debug.MessageBox("Not enough Status Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= forcemastercost
				_s.SuH_PCSbdsm -= forcemastercost
				_s.SuH_PCScaphealthdown += 25
				_s.SuH_PCScapmagickadown += 25
				_s.SuH_PCScapstaminadown += 25
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_forcemaster += 1
				forcemastercost = Math.Floor(30+(_s.SuH_rank_forcemaster*0.1*30))
				SetTextOptionValue(id29, "rank "+_s.SuH_rank_forcemaster) ;spell.forcemaster
				SetTextOptionValue(id30, forcemastercost) ;spell.forcemasterrank
			endif
		elseif(option == id19) ;spell.deviouspartnerrank
				int deviouspartnerrankall = _s.SuH_rank_deviouspartner + _s.SuH_rank_deviouspartner2
				int deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
			if _s.SuH_PCSbdsm >= deviouspartnercost
				_s.SuH_PCSbdsm -= deviouspartnercost
				string Lbdsmrating = " "
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_deviouspartner += 1
				deviouspartnerrankall += 1
				deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
				SetTextOptionValue(id18, "rank "+deviouspartnerrankall)
				SetTextOptionValue(id19, deviouspartnercost) ;spell.deviouspartnerrank
				SetTextOptionValue(id20, deviouspartnercost) ;spell.deviouspartnerrank2
			endif
		elseif(option == id20) ;spell.deviouspartnerrank2
				int deviouspartnerrankall = _s.SuH_rank_deviouspartner + _s.SuH_rank_deviouspartner2
				int deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
			if (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 21
				debug.MessageBox("Not enough Stamina Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= deviouspartnercost
				_s.SuH_PCSbdsm -= deviouspartnercost
				_s.SuH_PCScapstaminadown += 20
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_deviouspartner2 += 1
				deviouspartnerrankall += 1
				deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
				SetTextOptionValue(id18, "rank "+deviouspartnerrankall) ;spell.deviouspartner
				SetTextOptionValue(id19, deviouspartnercost) ;spell.deviouspartnerrank
				SetTextOptionValue(id20, deviouspartnercost) ;spell.deviouspartnerrank2
			endif
		elseif(option == id27) ;spell.formalbeautyrank
				int formalbeautyrankall = _s.SuH_rank_formalbeauty + _s.SuH_rank_formalbeauty2
				int formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
			if _s.SuH_PCSbdsm >= formalbeautycost
				_s.SuH_PCSbdsm -= formalbeautycost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_formalbeauty += 1
				formalbeautyrankall += 1
				formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
				SetTextOptionValue(id26, "rank "+formalbeautyrankall) ;spell.formalbeauty
				SetTextOptionValue(id27, formalbeautycost) ;spell.formalbeautyrank
				SetTextOptionValue(id28, formalbeautycost) ;spell.formalbeautyrank2
			endif
		elseif(option == id28) ;spell.formalbeautyrank2
				int formalbeautyrankall = _s.SuH_rank_formalbeauty + _s.SuH_rank_formalbeauty2
				int formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
			if _s.SuH_rank_formalbeauty < 1
				debug.MessageBox("This would currently have no effect!")
			elseif _s.SuH_PCSbdsm >= formalbeautycost
				_s.SuH_PCSbdsm -= formalbeautycost
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_formalbeauty2 += 1
				formalbeautyrankall += 1
				formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
				SetTextOptionValue(id26, "rank "+formalbeautyrankall) ;spell.formalbeauty
				SetTextOptionValue(id27, formalbeautycost) ;spell.formalbeautyrank
				SetTextOptionValue(id28, formalbeautycost) ;spell.formalbeautyrank2
			endif
		elseif(option == id17) ;spell.seducerrank
				int seducercost = Math.Floor(30+(_s.SuH_rank_seducer*0.1*30))
			if _s.SuH_rank_seducer >= 3
				debug.MessageBox("Cost Down has reached its max rank!")
			elseif (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 21 || (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 21 || (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 21
				debug.MessageBox("Not enough Status Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= seducercost
				_s.SuH_PCSbdsm -= seducercost
				_s.SuH_PCScaphealthdown += 60
				_s.SuH_PCScapmagickadown += 60
				_s.SuH_PCScapstaminadown += 60
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_seducer += 1
				seducercost = Math.Floor(30+(_s.SuH_rank_seducer*0.1*30))
				SetTextOptionValue(id16, "rank "+_s.SuH_rank_seducer) ;spell.seducer
				SetTextOptionValue(id17, seducercost) ;spell.seducerrank
			endif
		elseif(option == id12) ;spell.regalglowrank
				int regalglowcost = Math.Floor(30+(_s.SuH_rank_regalglow*0.1*30))
			if (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 21
				debug.MessageBox("Not enough Magicka Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= regalglowcost
				_s.SuH_PCSbdsm -= regalglowcost
				_s.SuH_PCScapmagickadown += 20
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_regalglow += 1
				regalglowcost = Math.Floor(30+(_s.SuH_rank_regalglow*0.1*30))
				SetTextOptionValue(id11, "rank "+ _s.SuH_rank_regalglow) ;spell.regalglow
				SetTextOptionValue(id12, regalglowcost) ;spell.regalglowrank
			endIf
		elseif(option == id8) ;spell.violencerank
				int violencerankall = _s.SuH_rank_violence + _s.SuH_rank_violence2 + _s.SuH_rank_violence3
				int violencecost = Math.Floor(30+(violencerankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 61
				debug.MessageBox("Not enough Health Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= violencecost
				_s.SuH_PCSbdsm -= violencecost
				_s.SuH_PCScaphealthdown += 60
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_violence += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(id7, "rank "+violencerankall) ;spell.violence
				SetTextOptionValue(id8, violencecost) ;spell.violencerank
				SetTextOptionValue(id9, violencecost) ;spell.violencerank2
				SetTextOptionValue(id10, violencecost) ;spell.violencerank3
			endif
		elseif(option == id9) ;spell.violencerank2
				int violencerankall = _s.SuH_rank_violence + _s.SuH_rank_violence2 + _s.SuH_rank_violence3
				int violencecost = Math.Floor(30+(violencerankall*0.1*30))
			if (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 61
				debug.MessageBox("Not enough Magicka Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= violencecost
				_s.SuH_PCSbdsm -= violencecost
				_s.SuH_PCScapmagickadown += 60
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_violence2 += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(id7, "rank "+violencerankall) ;spell.violence
				SetTextOptionValue(id8, violencecost) ;spell.violencerank
				SetTextOptionValue(id9, violencecost) ;spell.violencerank2
				SetTextOptionValue(id10, violencecost) ;spell.violencerank3
			endif
		elseif(option == id10) ;spell.violencerank3
				int violencerankall = _s.SuH_rank_violence + _s.SuH_rank_violence2 + _s.SuH_rank_violence3
				int violencecost = Math.Floor(30+(violencerankall*0.1*30))
			if (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 61
				debug.MessageBox("Not enough Stamina Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= violencecost
				_s.SuH_PCSbdsm -= violencecost
				_s.SuH_PCScapstaminadown += 60
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_violence3 += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(id7, "rank "+violencerankall) ;spell.violence
				SetTextOptionValue(id8, violencecost) ;spell.violencerank
				SetTextOptionValue(id9, violencecost) ;spell.violencerank2
				SetTextOptionValue(id10, violencecost) ;spell.violencerank3
			endif
		elseif(option == id36) ;spell.healthyabsorberrank
				int healthyabsorbercost = Math.Floor(30+(_s.SuH_rank_healthyabsorber*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 6 || (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 6 || (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 6
				debug.MessageBox("Not enough Status Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= healthyabsorbercost
				_s.SuH_PCSbdsm -= healthyabsorbercost
				_s.SuH_PCScaphealthdown += 5
				_s.SuH_PCScapmagickadown += 5
				_s.SuH_PCScapstaminadown += 5
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_healthyabsorber += 1
				healthyabsorbercost = Math.Floor(30+(_s.SuH_rank_healthyabsorber*0.1*30))
				SetTextOptionValue(id35, "rank "+ _s.SuH_rank_healthyabsorber) ;spell.healthyabsorber
				SetTextOptionValue(id36, healthyabsorbercost) ;spell.healthyabsorberrank
			endIf
		elseif(option == id41) ;spell.capexcelrank
				int capexcelrankall = _s.SuH_rank_capexcel + _s.SuH_rank_capexcel2
				int capexcelcost = Math.Floor(30+(capexcelrankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 16 || (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 16 || (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 16
				debug.MessageBox("Not enough Status Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= capexcelcost
				_s.SuH_PCSbdsm -= capexcelcost
				_s.SuH_PCScaphealthdown += 15
				_s.SuH_PCScapmagickadown += 15
				_s.SuH_PCScapstaminadown += 15
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_capexcel += 1
				capexcelrankall += 1
				capexcelcost = Math.Floor(30+(capexcelrankall*0.1*30))
				SetTextOptionValue(id40, "rank "+capexcelrankall) ;spell.capexcel
				SetTextOptionValue(id41, capexcelcost) ;spell.capexcelrank
				SetTextOptionValue(id42, capexcelcost) ;spell.capexcelrank2
			endIf
		elseif(option == id42) ;spell.capexcelrank2
				int capexcelrankall = _s.SuH_rank_capexcel + _s.SuH_rank_capexcel2
				int capexcelcost = Math.Floor(30+(capexcelrankall*0.1*30))
			if (_s.SuH_PCScaphealth - _s.SuH_PCScaphealthdown) < 11 || (_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickadown) < 11 || (_s.SuH_PCScapstamina - _s.SuH_PCScapstaminadown) < 11
				debug.MessageBox("Not enough Status Cap to sustain a passive increase")
			elseif _s.SuH_PCSbdsm >= capexcelcost
				_s.SuH_PCSbdsm -= capexcelcost
				_s.SuH_PCScaphealthdown += 10
				_s.SuH_PCScapmagickadown += 10
				_s.SuH_PCScapstaminadown += 10
				SetTextOptionValue(id0, _s.SuH_PCSbdsm) ;spell.bdsmrating
				_s.SuH_rank_capexcel2 += 1
				capexcelrankall += 1
				capexcelcost = Math.Floor(30+(capexcelrankall*0.1*30))
				SetTextOptionValue(id40, "rank "+capexcelrankall) ;spell.capexcel
				SetTextOptionValue(id41, capexcelcost) ;spell.capexcelrank
				SetTextOptionValue(id42, capexcelcost) ;spell.capexcelrank2
			endIf
		endIf
	;end/
	;ent/ Soul Pets
	;elseif(CurrentPage == "Soul Pets")
		;if(option == pet_)
	;endIf
	;end/
	;ent/ Soul Forge
	elseif(CurrentPage == "Soul Forge")
		if(option == id1) ;craft.meminc
			if _s.SuH_craftmemmax > 50
				debug.MessageBox("Memory Already Maxed")
			else
				int memcost = Math.Floor(((_s.SuH_craftmemmax + 5) * 0.2) * 2000)
				if _s.SuH_PCSxp >= memcost
					_s.SuH_PCSxp -= memcost
					_s.SuH_craftmemmax += 5
					SetTextOptionValue(id0, _s.SuH_craftmemmax+" Slots") ;craft.memcount
					memcost = Math.Floor(((_s.SuH_craftmemmax + 5) * 0.2) * 2000)
					SetTextOptionValue(id1, memcost) ;craft.meminc
				else
					debug.MessageBox("Not Enough HeartXP!")
				endIf
			endIf
		elseif(option == id4) ;craft.bloodchipcreate
			float healthcap = _s.PlayerRef.GetBaseActorValue("Health")
			if healthcap > 51
				_s.PlayerRef.SetActorValue("Health", (_s.PlayerRef.GetBaseActorValue("Health") - 50))
				_s.PlayerRef.AddItem(_s.SuH_misc_bloodchip, 5)
				Debug.MessageBox("5 Blood Chips Created")
				SetTextOptionValue(id3, _s.PlayerRef.GetItemCount(_s.SuH_misc_bloodchip)) ;craft.bloodchip
			else
				Debug.MessageBox("Not Enough Health To Convert!")
			endIf
		elseif(option == id31) ;craft.addpage
			int pagecount = Math.Floor(_s.PlayerRef.GetNumItems() * 0.04)
			if pagecount == 0 && craftaddpage == 0
			elseif craftaddpage >= pagecount
				craftaddpage = 0
				ForcePageReset()
			else
				craftaddpage += 1
				ForcePageReset()
			endIf
		elseif(option == id5) ;craft.mempage
			int pagecount = Math.Floor(_s.SuH_craftmemmax * 0.04)
			if pagecount == 0 && craftaddpage == 0
			elseif craftmempage >= pagecount
				craftmempage = 0
				ForcePageReset()
			else
				craftmempage += 1
				ForcePageReset()
			endIf
		endif
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionMenuOpen
event OnOptionMenuOpen(int option)
		;ent/ Pets
	if(CurrentPage == "Soul Pets")
		if (option == id2) ;pet.petslot0
			petaction = 0
		elseif (option == id3) ;pet.petslot1
			petaction = 1
		elseif (option == id4) ;pet.petslot2
			petaction = 2
		elseif (option == id5) ;pet.petslot3
			petaction = 3
		elseif (option == id6) ;pet.petslot4
			petaction = 4
		elseif (option == id7) ;pet.petslot5
			petaction = 5
		elseif (option == id8) ;pet.petslot6
			petaction = 6
		elseif (option == id9) ;pet.petslot7
			petaction = 7
		elseif (option == id10) ;pet.petslot8
			petaction = 8
		elseif (option == id11) ;pet.petslot9
			petaction = 9
		elseif (option == id12) ;pet.petslot10
			petaction = 10
		elseif (option == id13) ;pet.petslot11
			petaction = 11
		elseif (option == id14) ;pet.petslot12
			petaction = 12
		elseif (option == id15) ;pet.petslot13
			petaction = 13
		elseif (option == id16) ;pet.petslot14
			petaction = 14
		elseif (option == id17) ;pet.petslot15
			petaction = 15
		elseif (option == id18) ;pet.petslot16
			petaction = 16
		elseif (option == id19) ;pet.petslot17
			petaction = 17
		elseif (option == id20) ;pet.petslot18
			petaction = 18
		elseif (option == id21) ;pet.petslot19
			petaction = 19 
		elseif (option == id22) ;pet.petslot20
			petaction = 20
		elseif (option == id23) ;pet.petslot21
			petaction = 21
		elseif (option == id24) ;pet.petslot22
			petaction = 22
		elseif (option == id25) ;pet.petslot23
			petaction = 23
		elseif (option == id26) ;pet.petslot24
			petaction = 24
		endIf
			SetMenuDialogOptions(petactionlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
	;end/
	elseif(CurrentPage == "Soul Forge")
		if (option == id6) ;craft.mem0
			craftselected = 1
			craftaction = 0 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id7) ;craft.mem1
			craftselected = 1
			craftaction = 1 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id8) ;craft.mem2
			craftselected = 1
			craftaction = 2 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id9) ;craft.mem3
			craftselected = 1
			craftaction = 3 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id10) ;craft.mem4
			craftselected = 1
			craftaction = 4 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id11) ;craft.mem5
			craftselected = 1
			craftaction = 5 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id12) ;craft.mem6
			craftselected = 1
			craftaction = 6 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id13) ;craft.mem7
			craftselected = 1
			craftaction = 7 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id14) ;craft.mem8
			craftselected = 1
			craftaction = 8 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id15) ;craft.mem9
			craftselected = 1
			craftaction = 9 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id16) ;craft.mem10
			craftselected = 1
			craftaction = 10 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id17) ;craft.mem11
			craftselected = 1
			craftaction = 11 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id18) ;craft.mem12
			craftselected = 1
			craftaction = 12 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id19) ;craft.mem13
			craftselected = 1
			craftaction = 13 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id20) ;craft.mem14
			craftselected = 1
			craftaction = 14 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id21) ;craft.mem15
			craftselected = 1
			craftaction = 15 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id22) ;craft.mem16
			craftselected = 1
			craftaction = 16 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id23) ;craft.mem17
			craftselected = 1
			craftaction = 17 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id24) ;craft.mem18
			craftselected = 1
			craftaction = 18 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id25) ;craft.mem19
			craftselected = 1
			craftaction = 19 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id26) ;craft.mem20
			craftselected = 1
			craftaction = 20 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id27) ;craft.mem21
			craftselected = 1
			craftaction = 21 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id28) ;craft.mem22
			craftselected = 1
			craftaction = 22 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id29) ;craft.mem23
			craftselected = 1
			craftaction = 23 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id30) ;craft.mem24
			craftselected = 1
			craftaction = 24 + (craftmempage * 25)
			SetMenuDialogOptions(craftmemlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id32) ;craft.add0
			craftselected = 2
			craftaction = 0 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id33) ;craft.add1
			craftselected = 2
			craftaction = 1 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id34) ;craft.add2
			craftselected = 2
			craftaction = 2 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id35) ;craft.add3
			craftselected = 2
			craftaction = 3 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id36) ;craft.add4
			craftselected = 2
			craftaction = 4 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id37) ;craft.add5
			craftselected = 2
			craftaction = 5 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id38) ;craft.add6
			craftselected = 2
			craftaction = 6 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id39) ;craft.add7
			craftselected = 2
			craftaction = 7 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id40) ;craft.add8
			craftselected = 2
			craftaction = 8 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id41) ;craft.add9
			craftselected = 2
			craftaction = 9 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id42) ;craft.add10
			craftselected = 2
			craftaction = 10 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id43) ;craft.add11
			craftselected = 2
			craftaction = 11 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id44) ;craft.add12
			craftselected = 2
			craftaction = 12 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id45) ;craft.add13
			craftselected = 2
			craftaction = 13 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id46) ;craft.add14
			craftselected = 2
			craftaction = 14 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id47) ;craft.add15
			craftselected = 2
			craftaction = 15 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id48) ;craft.add16
			craftselected = 2
			craftaction = 16 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id49) ;craft.add17
			craftselected = 2
			craftaction = 17 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id50) ;craft.add18
			craftselected = 2
			craftaction = 18 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id51) ;craft.add19
			craftselected = 2
			craftaction = 19 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id52) ;craft.add20
			craftselected = 2
			craftaction = 20 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id53) ;craft.add21
			craftselected = 2
			craftaction = 21 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id54) ;craft.add22
			craftselected = 2
			craftaction = 22 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id55) ;craft.add23
			craftselected = 2
			craftaction = 23 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		elseif (option == id56) ;craft.add24
			craftselected = 2
			craftaction = 24 + (craftaddpage * 25)
			SetMenuDialogOptions(craftaddlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionMenuAccept
event OnOptionMenuAccept(int option, int index)
	if(CurrentPage == "Soul Pets")
    ;ent/ Pets
		;if (option == pet_dogdesire)
			if index == 0 ; Summon Pet
				_f.SoulPetSummon(petaction)
				ForcePageReset()
			elseif index == 1 ; Return Pet
				_f.SoulPetDeSummon(petaction)
				ForcePageReset()
			elseif index == 2 ; Remove Pet
				_f.SoulPetRemove(petaction)
				ForcePageReset()
			elseif index == 3 ; Cancel
			endIf
		;endIf
	;end/
	;ent/ Soul Forge
	elseif(CurrentPage == "Soul Forge")
		if (craftselected == 1) ; If selected MemSlot
			if index == 0 ; Forge Item
				_f.ForgeItem(craftaction)
				ForcePageReset()
			elseif index == 1 ; Remove Item
				_f.ForgeRemove(craftaction)
				ForcePageReset()
			elseif index == 2 ; Cancel
			endif
		elseif (craftselected == 2) ;If selected AddSlot
			if index == 0 ; Analyze item
				_f.ForgeAddAna(_s.PlayerRef.GetNthForm(craftaction))
				ForcePageReset()
			elseif index == 1 ; Cancel
			endIf
		endIf
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSliderOpen
Event OnOptionSliderOpen(int option)
	if(CurrentPage == "Status / Settings")
		If(option == id55) ;status.cscooldown
			SetSliderDialogStartValue(_s.SuH_SETcscooldown)
			SetSliderDialogDefaultValue(10)
			SetSliderDialogRange(0,1800)
			SetSliderDialogInterval(1)
		elseIf(option == id39) ;status.pctonpchealth
			SetSliderDialogStartValue(_s.SuH_SETpc2npchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseIf(option == id40) ;status.pctonpchealthmin
			SetSliderDialogStartValue(_s.SuH_SETpc2npchealthmin)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id41) ;status.pctonpcstamina
			SetSliderDialogStartValue(_s.SuH_SETpc2npcstamina*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseif(option == id42) ;status.npctopchealth
			SetSliderDialogStartValue(_s.SuH_SETnpc2pchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseif(option == id43) ;status.npctolchealthmin
			SetSliderDialogStartValue(_s.SuH_SETnpc2pchealth)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id44) ;status.npctonpchealth
			SetSliderDialogStartValue(_s.SuH_SETnpc2npchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseIf(option == id45) ;status.npctonpchealthmin
			SetSliderDialogStartValue(_s.SuH_SETnpc2npchealth)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id23)
			SetSliderDialogStartValue(_s.SuH_ORcaphealth)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id24) ;status.ormagickacap
			SetSliderDialogStartValue(_s.SuH_ORcapmagicka)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id25) ;status.orstaminacap
			SetSliderDialogStartValue(_s.SuH_ORcapstamina)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id26) ;status.orhealthabsorb
			SetSliderDialogStartValue(_s.SuH_ORabsorbhealth)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id27) ;status.ormagickaabsorb
			SetSliderDialogStartValue(_s.SuH_ORabsorbmagicka)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id28) ;status.orstaminaabsorb
			SetSliderDialogStartValue(_s.SuH_ORabsorbstamina)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id6) ;effectmulti
			SetSliderDialogStartValue(_s.SuH_PCSeffectmulti*100)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == id16) ;status.desiregain
			SetSliderDialogStartValue(_s.SuH_PCSdesiregain)
			SetSliderDialogDefaultValue(1)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(0.2)
		elseIf(option == id17) ;status.desirecap
			SetSliderDialogStartValue(_s.SuH_SETdesirecap)
			SetSliderDialogDefaultValue(1200)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10.0)
		elseIf(option == id52) ;status.csbleedoutdelay
			SetSliderDialogStartValue(_s.SuH_SETcsbleedoutdelay)
			SetSliderDialogDefaultValue(5)
			SetSliderDialogRange(0,20)
			SetSliderDialogInterval(1.0)
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == id3) ;skill.convert
			int z = Math.Floor((_s.SuH_PCSxp/10)*10)
			SetSliderDialogStartValue(0)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,z)
			SetSliderDialogInterval(10)
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionSliderAccept
Event OnOptionSliderAccept(int option, float value)
	if(CurrentPage == "Status / Settings")
		if(option == id55) ;status.cscooldown
			_s.SuH_SETcscooldown = Math.Floor(value)
			SetSliderOptionValue(id55, value, "{0} Seconds") ;status.pctonpchealth
		elseif(option == id39) ;status.pctonpchealth
			_s.SuH_SETpc2npchealth = (value/100)
			SetSliderOptionValue(id39, value, "{0}% Health") ;status.pctonpchealth
		elseif(option == id40) ;status.pctonpchealthmin
			_s.SuH_SETpc2npchealthmin = Math.Floor(value)
			SetSliderOptionValue(id40, value, "{0} Health") ;status.pctonpchealthmin
		elseif(option == id41) ;status.pctonpcstamina
			_s.SuH_SETpc2npcstamina = (value/100)
			SetSliderOptionValue(id41, value, "{0}% Stamina") ;status.pctonpcstamina
		elseif(option == id42) ;status.npctopchealth
			_s.SuH_SETnpc2pchealth = (value/100)
			SetSliderOptionValue(id42, value, "{0}% Health") ;status.npctopchealth
		elseif(option == id43) ;status.npctolchealthmin
			_s.SuH_SETnpc2pchealthmin = Math.Floor(value)
			SetSliderOptionValue(id43, value, "{0} Health") ;status.npctolchealthmin
		elseif(option == id44) ;status.npctonpchealth
			_s.SuH_SETnpc2npchealth = (value/100)
			SetSliderOptionValue(id44, value, "{0}% Health") ;status.npctonpchealth
		elseif(option == id45) ;status.npctonpchealthmin
			_s.SuH_SETnpc2npchealthmin = Math.Floor(value)
			SetSliderOptionValue(id45, value, "{0} Health") ;status.npctonpchealthmin
		elseif(option == id23) ;status.orhealthcap
			_s.SuH_ORcaphealth = Math.Floor(value)
			SetSliderOptionValue(id23, value, "{0}") ;status.orhealthcap
			if value > 0
				int playerHealth = _s.playerRef.GetBaseActorValue("health") as int
				SetTextOptionValue(id0, playerHealth+"/overwritten") ;healthcap
			else
				int playerHealth = _s.playerRef.GetBaseActorValue("health") as int
				SetTextOptionValue(id0, playerHealth+"/"+_s.SuH_PCScaphealth) ;healthcap
			endIf
		elseif(option == id24) ;status.ormagickacap
			_s.SuH_ORcapmagicka = Math.Floor(value)
			SetSliderOptionValue(id24, value, "{0}") ;status.ormagickacap
			if value > 0
				int playerMagicka = _s.playerRef.GetBaseActorValue("magicka") as int
				SetTextOptionValue(id1, playerMagicka+"/overwritten") ;magickacap
			else
				int playerMagicka = _s.playerRef.GetBaseActorValue("magicka") as int
				SetTextOptionValue(id1, playerMagicka+"/"+_s.SuH_PCScapmagicka) ;magickacap
			endIf
		elseif(option == id25) ;status.orstaminacap
			_s.SuH_ORcapstamina = Math.Floor(value)
			SetSliderOptionValue(id25, value, "{0}") ;status.orstaminacap
			if value > 0
				int playerStamina = _s.playerRef.GetBaseActorValue("stamina") as int
				SetTextOptionValue(id2, playerStamina+"/overwritten") ;staminacap
			else
				int playerStamina = _s.playerRef.GetBaseActorValue("stamina") as int
				SetTextOptionValue(id2, playerStamina+"/"+_s.SuH_PCScapstamina) ;staminacap
			endIf
		elseif(option == id26) ;status.orhealthabsorb
			_s.SuH_ORcaphealth = Math.Floor(value)
			SetSliderOptionValue(id26, value, "{0}") ;status.orhealthabsorb
		elseif(option == id27) ;status.ormagickaabsorb
			_s.SuH_ORcapmagicka = Math.Floor(value)
			SetSliderOptionValue(id27, value, "{0}") ;status.ormagickaabsorb
		elseif(option == id28) ;status.orstaminaabsorb
			_s.SuH_ORcapstamina = Math.Floor(value)
			SetSliderOptionValue(id28, value, "{0}") ;status.orstaminaabsorb
		elseif(option == id6) ;effectmulti
			_s.SuH_PCSeffectmulti = Math.Floor(value/100)
			SetSliderOptionValue(id6, value, "{0}%") ;effectmulti
		elseif(option == id16) ;status.desiregain
			_s.SuH_PCSdesiregain = Math.Floor(value)
			SetSliderOptionValue(id16, value, "{0}") ;status.desiregain
		elseif(option == id17) ;status.desirecap
			_s.SuH_SETdesirecap = Math.Floor(value)
			SetSliderOptionValue(id17, value, "{0}") ;status.desirecap
		elseif(option == id52) ;status.csbleedoutdelay
			_s.SuH_SETcsbleedoutdelay = Math.Floor(value)
			SetSliderOptionValue(id52, value, "{0} Sec") ;status.csbleedoutdelay
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == id3) ;skill.convert
			_s.SuH_PCSxp -= Math.Floor(value)
			_s.SuH_PCSforce += Math.Floor(value/10)
			ForcePageReset()
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionInputOpen
Event OnOptionInputOpen(int option)
	if CurrentPage == "Soul Pets"
		if(option == id27) ;pet.nameslot0
			SetInputDialogStartText(_s.SuH_petnames[0])
		elseif(option == id28) ;pet.nameslot1
			SetInputDialogStartText(_s.SuH_petnames[1])
		elseif(option == id29) ;pet.nameslot2
			SetInputDialogStartText(_s.SuH_petnames[2])
		elseif(option == id30) ;pet.nameslot3
			SetInputDialogStartText(_s.SuH_petnames[3])
		elseif(option == id31) ;pet.nameslot4
			SetInputDialogStartText(_s.SuH_petnames[4])
		elseif(option == id32) ;pet.nameslot5
			SetInputDialogStartText(_s.SuH_petnames[5])
		elseif(option == id33) ;pet.nameslot6
			SetInputDialogStartText(_s.SuH_petnames[6])
		elseif(option == id34) ;pet.nameslot7
			SetInputDialogStartText(_s.SuH_petnames[7])
		elseif(option == id35) ;pet.nameslot8
			SetInputDialogStartText(_s.SuH_petnames[8])
		elseif(option == id36) ;pet.nameslot9
			SetInputDialogStartText(_s.SuH_petnames[9])
		elseif(option == id37) ;pet.nameslot10
			SetInputDialogStartText(_s.SuH_petnames[10])
		elseif(option == id38) ;pet.nameslot11
			SetInputDialogStartText(_s.SuH_petnames[11])
		elseif(option == id39) ;pet.nameslot12
			SetInputDialogStartText(_s.SuH_petnames[12])
		elseif(option == id40) ;pet.nameslot13
			SetInputDialogStartText(_s.SuH_petnames[13])
		elseif(option == id41) ;pet.nameslot14
			SetInputDialogStartText(_s.SuH_petnames[14])
		elseif(option == id42) ;pet.nameslot15
			SetInputDialogStartText(_s.SuH_petnames[15])
		elseif(option == id43) ;pet.nameslot16
			SetInputDialogStartText(_s.SuH_petnames[16])
		elseif(option == id44) ;pet.nameslot17
			SetInputDialogStartText(_s.SuH_petnames[17])
		elseif(option == id45) ;pet.nameslot18
			SetInputDialogStartText(_s.SuH_petnames[18])
		elseif(option == id46) ;pet.nameslot19
			SetInputDialogStartText(_s.SuH_petnames[19])
		elseif(option == id47) ;pet.nameslot20
			SetInputDialogStartText(_s.SuH_petnames[20])
		elseif(option == id48) ;pet.nameslot21
			SetInputDialogStartText(_s.SuH_petnames[21])
		elseif(option == id49) ;pet.nameslot22
			SetInputDialogStartText(_s.SuH_petnames[22])
		elseif(option == id50) ;pet.nameslot23
			SetInputDialogStartText(_s.SuH_petnames[23])
		elseif(option == id51) ;pet.nameslot24
			SetInputDialogStartText(_s.SuH_petnames[24])
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionInputAccept
Event OnOptionInputAccept(int option, string isnotavariablemyfuckingasspapyrusshutup)
	if CurrentPage == "Soul Pets"
		if(option == id27) ;pet.nameslot0
			_s.SuH_petnames[0] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id28) ;pet.nameslot1
			_s.SuH_petnames[1] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id29) ;pet.nameslot2
			_s.SuH_petnames[2] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id30) ;pet.nameslot3
			_s.SuH_petnames[3] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id31) ;pet.nameslot4
			_s.SuH_petnames[4] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id32) ;pet.nameslot5
			_s.SuH_petnames[5] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id33) ;pet.nameslot6
			_s.SuH_petnames[6] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id34) ;pet.nameslot7
			_s.SuH_petnames[7] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id35) ;pet.nameslot8
			_s.SuH_petnames[8] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id36) ;pet.nameslot9
			_s.SuH_petnames[9] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id37) ;pet.nameslot10
			_s.SuH_petnames[10] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id38) ;pet.nameslot11
			_s.SuH_petnames[11] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id39) ;pet.nameslot12
			_s.SuH_petnames[12] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id40) ;pet.nameslot13
			_s.SuH_petnames[13] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id41) ;pet.nameslot14
			_s.SuH_petnames[14] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id42) ;pet.nameslot15
			_s.SuH_petnames[15] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id43) ;pet.nameslot16
			_s.SuH_petnames[16] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id44) ;pet.nameslot17
			_s.SuH_petnames[17] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id45) ;pet.nameslot18
			_s.SuH_petnames[18] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id46) ;pet.nameslot19
			_s.SuH_petnames[19] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id47) ;pet.nameslot20
			_s.SuH_petnames[20] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id48) ;pet.nameslot21
			_s.SuH_petnames[21] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id49) ;pet.nameslot22
			_s.SuH_petnames[22] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id50) ;pet.nameslot23
			_s.SuH_petnames[23] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		elseif(option == id51) ;pet.nameslot24
			_s.SuH_petnames[24] = isnotavariablemyfuckingasspapyrusshutup
			ForcePageReset()
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionDefault
Event OnOptionDefault(int option)
	;ent/ Heart Levels
	if(CurrentPage == "Heart Levels")
		if(option == id1) ;heart.healthcap
			int caphealthcost = Math.Floor(((_s.SuH_PCScaphealth - _s.SuH_PCScaphealthitem)*0.12)*15+20)
			_f.trackSet(caphealthcost, "Health Cap")
			debug.MessageBox("Tracking Set")
		elseif(option == id2) ;heart.magickacap
			int capmagickacost = Math.Floor(((_s.SuH_PCScapmagicka - _s.SuH_PCScapmagickaitem)*0.12)*15+20)
			_f.trackSet(capmagickacost, "Magicka Cap")
			debug.MessageBox("Tracking Set")
		elseif(option == id3) ;heart.staminacap
			int capstaminacost = Math.Floor(((_s.SuH_PCScapstamina - _s.SuH_PCScapstaminaitem)*0.12)*15+20)
			_f.trackSet(capstaminacost, "Stamina Cap")
			debug.MessageBox("Tracking Set")
		elseif(option == id4) ;heart.stacksex
			int stacksexcost = Math.Floor(_s.SuH_PCSstackmaxsex*2.8*240)
			_f.trackSet(stacksexcost, "Max Sex Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == id5) ;heart.stacksperm
			int stackspermcost = Math.Floor(_s.SuH_PCSstackmaxsperm*2.8*240)
			_f.trackSet(stackspermcost, "Max Sperm Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == id6) ;heart.stackmilk
			int stackmilkcost = Math.Floor(_s.SuH_PCSstackmaxmilk*2.8*240)
			_f.trackSet(stackmilkcost, "Max Milk Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == id8) ;heart.absorbhealth
			int absorbhealthcost = Math.Floor(_s.SuH_PCSabsorbhealth*2.2*280)
			_f.trackSet(absorbhealthcost, "Health Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == id9) ;heart.absorbmagicka
			int absorbmagickacost = Math.Floor(_s.SuH_PCSabsorbmagicka*2.2*280)
			_f.trackSet(absorbmagickacost, "Magicka Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == id10) ;heart.absorbstamina
			int absorbstaminacost = Math.Floor(_s.SuH_PCSabsorbstamina*2.2*280)
			_f.trackSet(absorbstaminacost, "Stamina Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == id11) ;heart.spermhealth
			int spermhealthcost = Math.Floor(_s.SuH_PCSspermhealth*1.8*200)
			_f.trackSet(spermhealthcost, "Sperm Health Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id12) ;heart.spermmagicka
			int spermmagickacost = Math.Floor(_s.SuH_PCSspermmagicka*1.8*200)
			_f.trackSet(spermmagickacost, "Sperm Magicka Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id13) ;heart.spermstamina
			int spermstaminacost = Math.Floor(_s.SuH_PCSspermstamina*1.8*200)
			_f.trackSet(spermstaminacost, "Sperm Stamina Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id14) ;heart.milkhealth
			int milkhealthcost = Math.Floor(_s.SuH_PCSmilkhealth*1.8*200)
			_f.trackSet(milkhealthcost, "Milk Health Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id15) ;heart.milkmagicka
			int milkmagickacost = Math.Floor(_s.SuH_PCSmilkmagicka*1.8*200)
			_f.trackSet(milkmagickacost, "Milk Magicka Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id16) ;heart.milkstamina
			int milkstaminacost = Math.Floor(_s.SuH_PCSmilkstamina*1.8*200)
			_f.trackSet(milkstaminacost, "Milk Stamina Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == id7) ;heart.xpgain
			int xpgaincost = Math.Floor(((_s.SuH_PCSxpgain - (99+_s.SuH_PCSxpgainitem))*2.0*350)*0.5)
			_f.trackSet(xpgaincost, "XP Gain")
			debug.MessageBox("Tracking Set")
		endIf
	;end/
	;ent/ Passives
	elseif(CurrentPage == "Passives")
		if(option == id2) ;spell.xp
			int bdsmrankcost = Math.Floor((1200*_s.SuH_rank_bdsm)*1.6+1200)
			_f.trackSet(bdsmrankcost, "BodyDesireSoulMind Rating")
			debug.MessageBox("Tracking Set")
		endIf
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionHighlight
Event OnOptionHighlight(int option)
	;ent/ Initiate
	if(CurrentPage == "Initiate")
		if(option == id0) ;Initiate
			SetInfoText("Start Succubus Heart. Once Succubus Heart has started it can make permanent changes to your save, so keep a backup if you wish to play without it! [After selecting initiate you'll need to exit the MCM to finish the start-up]")
		endIf
	;end/
	;ent/ Status
	elseif(CurrentPage == "Status / Settings")
		if(option == id0) ;healthcap
			SetInfoText("Current Base Health / Cap [Gain Health through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == id53) ;hostilevigilfaction
			SetInfoText("When Enabled, the Vigilant of Stendarr will become hostile to the player. [Default : Disabled]")
		elseif(option == id1) ;magickacap
			SetInfoText("Current Base Magicka / Cap [Gain Magicka through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == id3) ;stacksex
			SetInfoText("Sex Stacks / Consumable [Gain Sex Stacks after a Act.]")
		elseif(option == id4);Stack Sperm
			SetInfoText("Sperm Stacks / Consumable [Gain Sperm Stacks by consuming Sperm.]")
		elseif(option == id12) ;status.advancedchecking
			SetInfoText("Enables additional polling for mechanics that usually don't need to be polled. If you're experiencing some mechanics not working properly you can try enabling this. (ex. If disabling regen isn't working enabling this 'may' fix it) [Default : Disabled]")
		elseif(option == id37) ;status.removepet
			SetInfoText("When enabled, if a Soul Pet dies they are removed from the registered summonable pets. (Same result as removing them in the MCM) [Default : Enabled]")
		elseif(option == id33) ;statusdisablehealthrec
			SetInfoText("Disables the player charater's base Health Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == id34) ;statusdisablemagickarec
			SetInfoText("Disables the player charater's base Magicka Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == id35) ;statusdisablestaminarec
			SetInfoText("Disables the player charater's base Stamina Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == id52) ;status.csbleedoutdelay
			SetInfoText("Delay before sending character back to the Succubus Realm after going into the Bleed-out state (knocked down/out). Increasing this can help with Submit Mods not having enough time to trigger their animations/effects. [Default : 5]")
		elseif(option == id10) ;drainally
			SetInfoText("Allows Followers to be drained of their status. When disabled they will ignore most absorb effects. [Default : Enabled]")
		elseif(option == id36) ;status.petspells
			SetInfoText("Toggle display of Pet Spells on the player, toggle this off if you don't wish to use the Soul Pets feature. [Default : Enabled]")
		elseif(option == id2) ;staminacap
			SetInfoText("Current Base Stamina / Cap [Gain Stamina through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == id29) ;status.desire
			SetInfoText("Current Desire Value. [Upon orgasm 80% of Desire converts to XP. When above a certain Desire level status will slowly convert to Force. Desire slowly generates over time.]")
		elseif(option == id30) ;status.xp
			SetInfoText("Current XP Value. [Gain XP through Sexual Acts and Items.]")
		elseif(option == id31) ;status.xpgain
			SetInfoText("Current XP gain percentage. [Increases all XP earned by a percentage. ex. 100 XP earned with 114% gain grants 114 XP. Increase through Heart Levels or Items.]")
		elseif(option == id5) ;stackmilk
			SetInfoText("Milk Stacks / Consumable [Gain Milk Stacks by consuming Breast Milk.]")
		elseif(option == id8) ;drainkill
			SetInfoText("When enabled characters can be killed by sex drain when their Health reduces below 1. [Default : Enabled]")
		elseif(option == id19) ;status.malehomo
			SetInfoText("When enabled Succubus Heart will trigger Male/Male act through Seduction Spells or Combat Seduction [Will prevent Male/Male when disabled]. Has no effect on other mods. [Defailt : Disabled]")
		elseif(option == id20) ;status.femalehomo
			SetInfoText("When enabled Succubus Heart will trigger Female/Female act through Seduction Spells or Combat Seduction [Will prevent Female/Female when disabled]. Has no effect on other mods. [Defailt : Enabled]")
		elseif(option == id22) ;status.essentialact
			SetInfoText("Attempts to make NPCs temporarily essential when in Acts. [WARNING: This can cause bugs with high script lag and certain quests, use with caution!] [Default : Disabled]")
		elseif(option == id38) ;status.combatseduction
			SetInfoText("When enabled characters in combat that fall below the set Health Thresholds will submit to their attacker. [This is a Light weight Submit Type mod built in, leave disabled if you use another submit mod. May cause some bugs/glitches like other submit mods, use with caution!] [Default : Disabled]")
		elseif(option == id55) ;status.cscooldown
			SetInfoText("Changes how long a character is immune to Combat Seduction after the end of an act. [Default : 10 Seconds]")
		elseif(option == id42) ;status.npctopchealth
			SetInfoText("Health Threshold for NPCs to submit to the Player. When an NPC falls below this threshold if hit by the player they will submit. [Default : 30%]")
		elseif(option == id43) ;status.npctolchealthmin
			SetInfoText("Health Threshold for NPCs to submit to the Player. When an NPC falls below this threshold if hit by the player they will submit. [Default : 20]")
		elseif(option == id44) ;status.npctonpchealth
			SetInfoText("Health Threshold for NPCs to submit to other NPCs. When an NPC falls below this threshold if hit by another NPC they will submit. [Default : 30%]")
		elseif(option == id45) ;status.npctonpchealthmin
			SetInfoText("Health Threshold for NPCs to submit to other NPCs. When an NPC falls below this threshold if hit by another NPC they will submit. [Default : 20]")
		elseif(option == id39) ;status.pctonpchealth
			SetInfoText("Health Threshold for PC to submit to NPCs. When the Player falls below this threshold and is hit by an NPC they will submit. [Default : 30%]")
		elseif(option == id40) ;status.pctonpchealthmin
			SetInfoText("Health Threshold for PC to submit to NPCs. When the Player falls below this threshold and is hit by an NPC they will submit. [Default : 20]")
		elseif(option == id41) ;status.pctonpcstamina
			SetInfoText("Stamina Threshold for PC to submit to NPCs. When the Player falls below this threshold and is hit by an NPC they will submit. [Default : 20]")
		elseif(option == id9) ;consentdrain
			SetInfoText("When enabled consensual partners will be effected by absorption. [Will prevent drain on consensual partners if disabled] [Default : Disabled]")
		elseif(option == id15) ;status.desiredrain
			SetInfoText("When enabled once Desire reaches high enough Status will slowly convert into Force [Disabling will prevent this feature] [Default : Disabled]")
		elseif(option == id23) ;status.orhealthcap
			SetInfoText("Overrides the leveled Health Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id24) ;status.ormagickacap
			SetInfoText("Overrides the leveled Magicka Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id25) ;status.orstaminacap
			SetInfoText("Overrides the leveled Stamina Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id26) ;status.orhealthabsorb
			SetInfoText("Overrides the leveled Health Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id27) ;status.ormagickaabsorb
			SetInfoText("Overrides the leveled Magicka Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id28) ;status.orstaminaabsorb
			SetInfoText("Overrides the leveled Stamina Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == id14) ;status.deathdrops
			SetInfoText("When enabled characters will have a soul in their inventory after death. [Will be prevented if disabled] [Default : Enabled]")
		elseIf(option == id6) ;effectmulti
			SetInfoText("Changes all drain and xp gain/absorption effects calculated by percentage. [Can be used to speed up/slow down progression - Example 100% with 10 drain will drain 10 points, 120% with 10 drain will drain 12 points]")
		elseIf(option == id16) ;status.desiregain
			SetInfoText("Sets Desire gained per second [Updated every 5 seconds] [Default : 1]")
		elseIf(option == id11) ;status.alwaysdrainkill
			SetInfoText("When enabled status drain from acts will always kill the target. [Default : Disabled]")
		elseIf(option == id46) ;status.dom
			SetInfoText("(Death Override Mode) With this mode enabled instead of the player dieing and being asked to re-load the character will instead respawn in the Succubus Realm [Default : Disabled] WARNING : Disable if you use any other Death Alternative mod!")
		elseIf(option == id48) ;status.loseitems
			SetInfoText("(Death Override Mode) Upon death the player will lose all lose-able items (Items can be re-purchased from Tali in the Succubus Realm) [Default : Enabled]")
		elseIf(option == id49) ;status.losegold
			SetInfoText("(Death Override Mode) Upon death the player will lose all gold they currently hold. [Default : Disabled]")
		elseIf(option == id50) ;status.losebloodchips
			SetInfoText("(Death Override Mode) Upon death the player will lose all Blood Chips they currently hold. [Default : Disabled]")
		elseIf(option == id51) ;status.loseequip
			SetInfoText("(Death Override Mode) Upon death the player's current equipment will be destroyed (These items can't be re-purchased from Tali) [Default : Enabled]")
		elseIf(option == id21) ;status.restricact
			SetInfoText("When enabled will restrict female aggressors to using cowgirl animations (only effects Succubus Heart animations) [Default : Enabled]")
		elseIf(option == id17) ;status.desirecap
			SetInfoText("Set when Desire Drain starts to take effect (When above this amount desire will convert Status into Force when Desire Drain is enabled) [Default : 1200]")
		elseIf(option == id47) ;status.randomdeathspawm
			SetInfoText("When enabled, after 'dieing' Succubus Realm -Disconnect- will force a random respawn when leaving the realm. [Default : Disabled]")
		elseIf(option == id7) ;setnpcabsorb
			SetInfoText("Allows Status Drain to effect NPCs - Dropping their Max Health/Magicka/Stamina [Note: Mod is balanced around this idea] [Default : Enabled]")
		elseIf(option == id18) ;status.clearactor
			SetInfoText("Attempts to remove arrows and other projectiles from a character before starting an act. (NOTE : This may remove mod-added effects and textures depending how they're applied) [Default : Disabled]")
		elseIf(option == id13) ;calmaura
			SetInfoText("Attempts to stop combat via-calm spell when the Player Character enters an act. (NOTE : May not work in all situations) [Default : Disabled]")
		elseIf(option == id54) ;endactonatk
			SetInfoText("If NPC or PC is attacked during an Act, this will attempt to stop end act. (can cause some animations to end improperly) [Default : Disabled]")
		endIf
	;end/
	;ent/ Skill Levels
	elseif(CurrentPage == "Skill Levels")
		if(option == id0) ;skillsp
			SetInfoText("Current SP Available. [Gain SP through Force or Items. SP can be spent on leveling Skills.]")
		elseif(option == id1) ;skill.spnext
			SetInfoText("Force till next SP. [Gain Force through absorbing past your Status Caps, Items, or converting XP. The Force required for SP increases the more SP earned this way.]")
		elseif(option == id2) ;skill.xp
			SetInfoText("Current XP Available. [Can be converted to Force for SP at a 10 to 1 ratio]")
		elseif(option == id3) ;skill.convert
			SetInfoText("Convert XP to Force at a 10 to 1 ration. [ex. 100 XP will give 10 Force]")
		elseif(option == id4) ;skill.alchemy
			SetInfoText("Level-up Alchemy")
		elseif(option == id13) ;skill.alteration
			SetInfoText("Level-up Alteration")
		elseif(option == id5) ;skill.block
			SetInfoText("Level-up Block")
		elseif(option == id14) ;skill.conjuration
			SetInfoText("Level-up Conjuration")
		elseif(option == id6) ;skill.destruction
			SetInfoText("Level-up Destruction")
		elseif(option == id15) ;skill.enchanting
			SetInfoText("Level-up Enchanting")
		elseif(option == id7) ;skill.heavyarmor
			SetInfoText("Level-up Heavy Armor")
		elseif(option == id16) ;skill.illusion
			SetInfoText("Level-up Illusion")
		elseif(option == id8) ;skill.lightarmor
			SetInfoText("Level-up Light Armor")
		elseif(option == id17) ;skill.lockpicking
			SetInfoText("Level-up Lockpicking")
		elseif(option == id9) ;skill.marksman
			SetInfoText("Level-up Marksman")
		elseif(option == id18) ;skill.onehanded
			SetInfoText("Level-up One-Handed")
		elseif(option == id10) ;skill.pickpocket
			SetInfoText("Level-up Pickpocket")
		elseif(option == id19) ;skill.restoration
			SetInfoText("Level-up Restoration")
		elseif(option == id11) ;skill.smithing
			SetInfoText("Level-up Smithing")
		elseif(option == id20) ;skill.sneak
			SetInfoText("Level-up Sneak")
		elseif(option == id12) ;skill.speechcraft
			SetInfoText("Level-up speechcraft")
		elseif(option == id21) ;skill.twohanded
			SetInfoText("Level-up Two-Handed")
		endIf
	;end/
	;ent/ Heart Levels
	elseif(CurrentPage == "heart Levels")
		if(option == id0) ;heart.xp
			SetInfoText("Current XP Available. [Can spend XP to level Abilities.]")
		elseif(option == id1) ;heart.healthcap
			SetInfoText("Increases the Max Health Absorption can reach.[Increases by 1 per level] + 1 Body Rating")
		elseif(option == id2) ;heart.magickacap
			SetInfoText("Increases the Max Magicka Absorption can reach.[Increases by 1 per level] + 1 Mind Rating")
		elseif(option == id3) ;heart.staminacap
			SetInfoText("Increases the Max Stamina Absorption can reach.[Increases by 1 per level] + 1 Soul Rating")
		elseif(option == id4) ;heart.stacksex
			SetInfoText("Increases the number of Sex Stacks which can be consumed at once.[Increases by 1 per level] + 5 Desire Rating")
		elseif(option == id5) ;heart.stacksperm
			SetInfoText("Increases the number of Sperm Stacks which can be consumed at once.[Increases by 1 per level] + 5 Desire Rating")
		elseif(option == id6) ;heart.stackmilk
			SetInfoText("Increases the number of Milk Stacks which can be consumed at once.[Increases by 1 per level] + 5 Desire Rating")
		elseif(option == id7) ;heart.xpgain
			SetInfoText("Increases the XP gain multiplier. [Increases by 2% when leveled] + 10 Desire Rating")
		elseif(option == id8) ;heart.absorbhealth
			SetInfoText("Increases Health absorbed in acts per-tick. [Increases by 1 per level] + 5 Body Rating")
		elseif(option == id9) ;heart.absorbmagicka
			SetInfoText("Increases Magicka absorbed in acts per-tick. [Increases by 1 per level] + 5 Mind Rating")
		elseif(option == id10) ;heart.absorbstamina
			SetInfoText("Increases Stamina absorbed in acts per-tick. [Increases by 1 per level] + 5 Soul Rating")
		elseif(option == id11) ;heart.spermhealth
			SetInfoText("Increases Health earned when consuming Sperm. [Increases by 1 per level] + 2 Body Rating")
		elseif(option == id12) ;heart.spermmagicka
			SetInfoText("Increases Magicka earned when consuming Sperm. [Increases by 1 per level] + 2 Mind Rating")
		elseif(option == id13) ;heart.spermstamina
			SetInfoText("Increases Stamina earned when consuming Sperm. [Increases by 1 per level] + 2 Soul Rating")
		elseif(option == id14) ;heart.milkhealth
			SetInfoText("Increases Health earned when consuming Milk. [Increases by 1 per level] + 2 Body Rating")
		elseif(option == id15) ;heart.milkmagicka
			SetInfoText("Increases Magicka earned when consuming Milk. [Increases by 1 per level] + 2 Mind Rating")
		elseif(option == id16) ;heart.milkstamina
			SetInfoText("Increases Stamina earned when consuming Milk. [Increases by 1 per level] + 2 Soul Rating")
		endIf
	;end/
	;ent/ Passives
	elseif(CurrentPage == "Passives")
		if(option == id2) ;spell.xp
			SetInfoText("Use XP to increase the BodyDesireSoulMind Rating by 20 (5 of each trait).")
		elseif(option == id0) ;spell.bdsmrating
			SetInfoText("Current BodyDesireSoulMind Rating.")
		elseif(option == id1) ;spell.bdsmtrue
			SetInfoText("BDSM True Values (Used by passives)")
		elseif(option == id3) ;spell.reset
			SetInfoText("Resets all Passives to Level 0 and re-calculates BodyDesireSoulMind Rating. Useful if you wish to change passives or find BDSM Ratings acting weird.")
		elseif(option == id40) ;spell.capexcel
			int x = Math.Floor((_s.SuH_PCSbpoint * 0.5) * _s.SuH_rank_capexcel)
			SetInfoText("Cap? What's a cap? Exceed the Status Cap by "+x+" with absorption and slow its decay by "+_s.SuH_rank_capexcel2+" seconds. [Note : Status beyond your normal cap will decay over-time (1 second + Cap Excel's Effect) and convert into Force]")
		elseif(option == id41) ;spell.capexcelrank
			SetInfoText("Decrease Status Caps by 15 and Increase Cap Excel's Status Cap Effect (50% of Body Rating)")
		elseif(option == id42) ;spell.capexcelrank2
			SetInfoText("Decrease Status Caps by 10 and Delay Decay by 1 Additional Second")
		elseIf(option == id37) ;spell.perfectorgasm
			int x = _s.SuH_rank_perfectorgasm
			int z = Math.Floor(_s.SuH_rank_perfectorgasm2*5)
			SetInfoText("Climax is often the best part! Increases the chance of a Rare Drop upon orgasms by "+x+"%. "+z+"% chance at receiving a death drop as well.")
		elseIf(option == id38) ;spell.perfectorgasmrank
			SetInfoText("Adds 1% to Perfect Orgasm's Rare Drop Boost.")
		elseIf(option == id39) ;spell.perfectorgasmrank2
			SetInfoText("Decrease Status Caps by 15 for 5% extra chance at a Death Drop.")
		elseIf(option == id23) ;spell.lusciousliquids
			int r1 = _s.SuH_rank_lusciousliquids
			int r2 = _s.SuH_rank_lusciousliquids2
			int x = 0
			if r1 > 0
				x = Math.Floor(r1 * (_s.SuH_PCSdpoint * 0.1))
			endIf
			int y = 0
			if r2 > 0
				y = Math.Floor(r2 * (_s.SuH_PCSdpoint * 0.1))
			endIf
			SetInfoText("Certain fluids are more desire-able than others. Sperm and Milk heals "+x+" Health and restores "+y+" Magicka and Stamina when consumed. [Scales with Desire Rating]")
		elseIf(option == id24) ;spell.lusciousliquidsrank
			SetInfoText("Decrease Health Cap by 15, Sperm and Milk restores more Health. [+10% Desire Rating]")
		elseIf(option == id25) ;spell.lusciousliquidsrank2
			SetInfoText("Decrease Magicka Cap by 15, Sperm and Milk restores more Magicka and Stamina. [+10% Desire Rating]")
		elseIf(option == id4) ;spell.masochist
			int bpoint = _s.SuH_PCSbpoint
			int r1 = _s.SuH_rank_masochist
			int r2 = _s.SuH_rank_masochist2
			int x = 0
			if r1 != 0
				x = Math.Floor(r1 * (bpoint * 0.1))
			endIf
			int y = 0
			if r2 != 0
				y = Math.Floor(r2 * (bpoint * 0.1))
			endIf
			SetInfoText("Pain is just extra excitement! When hit, generate "+x+" Desire and recover "+y+" Stamina. This can only trigger once every 5 seconds. [Scales with Body Rating]")
		elseIf(option == id5) ;spell.masochistrank
			SetInfoText("Decrease Health Cap by 15, Generate more Desire when hit. [10% of Body Rating per-rank]")
		elseIf(option == id6) ;spell.masochistrank2
			SetInfoText("Decrease Health Cap by 15, Recover more Stamina when hit. [10% of Body Rating per-rank]")
		elseIf(option == id33) ;spell.selfstacker
			int x = _s.SuH_rank_selfstacker
			SetInfoText("A little taste never hurt. Grants "+x+" stack upon orgasm based on gender. [m/sperm f/milk]")
		elseIf(option == id34) ;spell.selfstackerrank
			SetInfoText("Adds 1 to Self Stacker's effect.")
		elseIf(option == id31) ;spell.valuestacker
			int x = _s.SuH_rank_valuestacker
			SetInfoText("Savoring every last drop... Increases number of stacks earned by "+x+".")
		elseIf(option == id32) ;spell.valuestackerrank
			SetInfoText("Adds 1 to Value Stacker's effect.")
		elseIf(option == id13) ;spell.savingessence
			int r1 = Math.Floor(2 * _s.SuH_rank_savingessence)
			int x = 0
			if r1 > 0
				x = Math.Floor(r1 * (_s.SuH_PCSbpoint * 0.05))
			endIf
			int y = Math.Floor(20 - _s.SuH_rank_savingessence2)
			SetInfoText("Harvesting true potential. When hit below 30% Health, consume stacks, recovering "+x+" Health per sex/sperm/milk stack consumed. After activating Saving Essence goes on cooldown for "+y+" minutes.")
		elseIf(option == id14) ;spell.savingessencerank
			SetInfoText("Recover more Health per stack. [+5% Body Rating per-rank]")
		elseIf(option == id15) ;spell.savingessencerank2
			SetInfoText("Decrease cooldown by 1 minute.")
		elseIf(option == id21) ;spell.giftedconsent
			int x = _s.SuH_rank_giftedconsent
			SetInfoText("Lovers are better with health. Grants consensual parters with "+x+" Health/Magicka/Stamina per-tick. [Applies before drain if consent drain is enabled]")
		elseIf(option == id22) ;spell.giftedconsentrank
			SetInfoText("Adds 1 to Gifted Consent's effect.")
		elseIf(option == id29) ;spell.forcemaster
			int x = Math.Floor(_s.SuH_rank_forcemaster * 10)
			SetInfoText("Master of progression. Decreases the Force required to earn SP by "+x+"%.")
		elseIf(option == id30) ;spell.forcemasterrank
			SetInfoText("Decrease all Status Caps by 25, Adds 10% to Force Master's effect. [Caps at 90%]")
		elseIf(option == id18) ;spell.deviouspartner
			int x = _s.SuH_rank_deviouspartner
			int r2 = _s.SuH_rank_deviouspartner2
			int y = 0
			if r2 > 0
				y = Math.Floor(r2 * (_s.SuH_PCSmpoint * 0.2))
			endIf
			int z = y * 4
			SetInfoText("Playing by the rules is for 'normal' partners. Passively steal "+x+" gold from your partners. On orgasm, convert unseen forces into "+y+" gold.")
		elseIf(option == id19) ;spell.deviouspartnerrank
			SetInfoText("Steal 2 more gold every tick.")
		elseIf(option == id20) ;spell.deviouspartnerrank2
			SetInfoText("Reduce Stamina Cap by 20 and gain more gold on orgasm. [5% of Mind Rating]")
		elseIf(option == id26) ;spell.formalbeauty
			int r1 = _s.SuH_rank_formalbeauty as int
			int r2 = _s.SuH_rank_formalbeauty2 as int
			int x = 0
			if r1 > 0
				x = Math.Floor(r1 * (_s.SuH_PCSdpoint * 0.05))
			endIf
			int y = 0
			if r2 > 0
				y = Math.Floor(r2 * _s.SuH_PCSdpoint)
			endIf
			SetInfoText("Only those with a certain beauty enter combat with elegance. When entering combat, Consume Stacks, restoring "+x+" status per-stack. The amount of stacks actually consumed is reduced by "+y+". Sex Stacks restore Health, Sperm Stacks restore Magicka, Milk Stacks restore Stamina. (Stacks won't be used when status is fully recovered) [Scales with Desire Rating]")
		elseIf(option == id27) ;spell.formalbeautyrank
			SetInfoText("Recover more status per-stack. [5% Desire Rating per-rank]")
		elseIf(option == id28) ;spell.formalbeautyrank2
			SetInfoText("Reduce stacks consumed by 1. (Will never drop stacks consumed below 1, if stacks are at 0, no effect will be applied)")
		elseIf(option == id16) ;spell.seducer
			int x = _s.SuH_rank_seducer
			int y = Math.Floor(90 - (x*30))
			SetInfoText("Influence has a price, and it's worth it. Seduction Spells consume "+y+"% Health/Magicka/Stamina when successful.")
		elseIf(option == id17) ;spell.seducerrank
			SetInfoText("Decrease All Status Caps by 60, Reduce Successful Seduction cost by 30%.")
		elseIf(option == id11) ;spell.regalglow
			int r1 = _s.SuH_rank_regalglow
			int y = 0
			if r1 > 0
				y = Math.Floor(r1 * (_s.SuH_PCSmpoint * 0.05))
			endIf
			SetInfoText("Non-magic armor is just a bit too heavy. Equip 'Regal Glow' when not wearing any body armor, increasing Armor Rating by "+y+". [Regal Glow is effected by Mind Rating and Light Armor enhancements][Compatibility : May conflict with armor mods and equipment checkers]")
		elseIf(option == id12) ;spell.regalglowrank
			SetInfoText("Decrease Magicka Cap by 20, Increase Armor rating of Regal Glow. [5% of Mind Rating per-rank]")
		elseIf(option == id7) ;spell.violence
			int spoint = _s.SuH_PCSspoint
			int r1 = _s.SuH_rank_violence
			int x = 0
			if r1 != 0
				x = Math.Floor(r1 * (spoint * 0.05))
			endif
			int r2 = _s.SuH_rank_violence2
			int y = 0
			if r2 != 0
				y = Math.Floor(r2 * (spoint * 0.05))
			endif
			int r3 = _s.SuH_rank_violence3
			int z = 0
			if r3 != 0
				z = Math.Floor(r3 * (spoint * 0.05))
			endif
			SetInfoText("Making violence viable. When hitting an enemy absorb "+x+" Health, "+y+" Magicka, "+z+" Stamina. This effect can only happen once every 5 seconds.")
		elseIf(option == id8) ;spell.violencerank
			SetInfoText("Decrease Health Cap by 60, Increase Health Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == id9) ;spell.violencerank2
			SetInfoText("Decrease Magicka Cap by 60, Increase Magicka Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == id10) ;spell.violencerank3
			SetInfoText("Decrease Stamina Cap by 60, Increase Stamina Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == id35) ;spell.healthyabsorber
			int x = _s.SuH_rank_healthyabsorber
			int y = Math.Floor(x * 25)
			SetInfoText("A Healthy Succubus is a Happy Succubus! Increase Health/Magicka/Stamina Recovered when Absorbing Status by "+y+"%.")
		elseIf(option == id36) ;spell.healthyabsorberrank
			SetInfoText("Decrease All Status Caps by 5, Increases Health/Magicka/Stamina Recovered when Absorbing Status by 25%. (Doesn't effect cap increase, only the amount healed)")
		endIf
	;end/
	;ent/ Perks
	elseif(CurrentPage == "Perks")
		if(option == id0) ;perk.orgasm
				int x = _s.SuH_perk_orgasm
			SetInfoText("(Total Count = "+x+") Have the main character experience an orgasm. +2 Stamina Cap per-rank")
		elseif(option == id1) ;perk.allyorgasm
				int x = _s.SuH_perk_allyorgasm
			SetInfoText("(Total Count = "+x+") Bring allies to orgasm. +1000 HeartXP per-rank")
		elseif(option == id2) ;perk.absorb
				int x = _s.SuH_perk_absorb
			SetInfoText("(Total Count = "+x+") Absorb status from an NPC (or yourself... ^.-) in a sex act +2 Magicka Cap per rank")
		elseif(option == id3) ;perk.sperm
				int x = _s.SuH_perk_sperm
			SetInfoText("(Total Count = "+x+") Consume Sperm. +500 HeartXP per rank")
		elseif(option == id4) ;perk.milk
				int x = _s.SuH_perk_milk
			SetInfoText("(Total Count = "+x+") Consume Milk. +500 HeartXP per rank")
		elseif(option == id5)  ;perk.killdrain
				int x = _s.SuH_perk_killdrain
			SetInfoText("(Total Count = "+x+") Drain partners to death with absorption. +2 Health Cap per rank")
		endIF
	;end/
	;ent/ Soul Pets
	elseif(CurrentPage == "Soul Pets")
		if(option == id0) ;pet.skill
			SetInfoText("Current Pet Skill Level (Increase by leveling up pets. Increasing the Pet Skill increases XP gained by pets overall)")
		elseif(option == id1) ;pet.activepet
			SetInfoText("Currently Active Pet")
		endIf
	;end/
	;ent/ Soul Forge
	elseif(CurrentPage == "Soul Forge")
		if(option == id4) ;craft.bloodchipcreate
			SetInfoText("Convert 50 Health Cap into 5 Blood Chips")
		endIf
	;end/
	;ent/ Help
	elseif(CurrentPage == "Help")
		if(option == id8) ;help.forge
			SetInfoText("Soul Forge allows the PC to create items out of Blood Chips. In-order to forge items they must first analyze items. Analysis will complete over time but can be sped up by Soul Forging other items. Once an analysis is complete it will be added to the PC's Forge Memory. Only a limited number of items may be remembered at once.")
		elseif(option == id0) ;help.drain
			SetInfoText("With Succubus Heart the PC will drain Max Status from NPCs which will then be absorbed. This is called absorption and is permanent in most cases. Drain can also kill NPCs if enabled and provides some alternatives to combat. This can be disabled in the Status / Settings MCM in various different ways, even entirely. (Just keep in mind the mod was designed with this mechanic active)")
		elseif(option == id1) ;help.drops
			SetInfoText("Upon Orgasm all characters will provide their partners with either Sperm or Breast Milk depending on their gender, and if the act is with the PC there is a chance of a rare drop being rewarded to the PC with special effects. Upon death NPCs will also have Soul items added to their inventory. The PC can collect these 'Drops' and use them to upgrade their stats and gain additional HeartXP/SP (or just waste them in alchemy, your choice).")
		elseif(option == id2) ;help.realm
			SetInfoText("The Succubus Realm is a small location that can be access and departed by using the 'Succubus Realm -Connect-' Spell. This location offers several useful crafting stations, NPCs that offer items for sale, and more. Upon leaving with the spell you can return your PC either directly back or in another location presented in the menu. This location can act as almost a home-base of sorts, or completely ignored, up to you.")
		elseif(option == id3) ;help.xp
			SetInfoText("HeartXP is earned by the PC through Sex Acts and special interactions with other Succubus Heart mechanics. Once obtained, HeartXP can be spent on various Heart Skills to level different aspects of the PC's Succubus Abilities such as increasing drain amounts or expanding Max Health.")
		elseif(option == id4) ;help.sp
			SetInfoText("HeartSP is earned when the PC drains more than their Max Status Cap (increase with HeartXP). For every point over the cap absorbed the PC earns 1 Force which once enough have been earned they will converted into HeartSP. HeartSP is used to level Skyrim's normal skills such as Light Armor. As SP is earned the Force required for more increases.")
		elseif(option == id5) ;help.bdsm
			SetInfoText("Passives are a way to augment your PC with special abilities that activate automatically. These abilities are enabled and upgraded by using the PC's BDSM Rating. BDSM Rating is increased by increasing Heart Levels, Spending HeartXP to directly increase it, or by upgrading Perks. Passives can have multiple paths to upgrade however chosing any path will increase the cost for other paths at the same rate, however if you're ever unhappy with your choices Passives can be reset at any time and BDSM Rating will be restored to its full value.")
		elseif(option == id6) ;help.perks
			SetInfoText("Perks are small objectives that are completed automatically as you play. By doing certain actions perks will level up and give a reward at each rank-up some rewarding bonus HeartXP and others even rewarding BDSM Rating.")
		elseif(option == id7) ;help.pets
			SetInfoText("Soul Pets allows the PC to replicate souls to summon and fight alongside them. Souls are either aquired through items or through the Pet Target Spell and replicating a target's soul. Once souls are aquired they can then be summoned to fight alongside the PC and will gain XP through either combat or training. As they increase in level they will begin to summon at higher levels and will have increased rewards for the player. Only a limited number of pets can be registered at once.")
		elseif(option == id9) ;help.cs
			SetInfoText("This is a simple Combat Submit style mod built right into Succubus Heart, if you're using any other Combat Submit style mod please ensure this feature is disabled to prevent conflicts. In-combat if a character drops below the set Status they will then submit to their attacker and instantly begin an animation. [This feature was originally build for testing however has obviously been slightly expanded and actually works]")
		elseif(option == id10) ;help.dom
			SetInfoText("Death Override Mode is a Succubus Heart adapted Rogue-Light Mod. When enabled instead of the player dying when their health reaches zero they will instead return to the Succubus Realm with items removed, they can then leave the Succubus Realm as usual. By default items equiped will be destroyed and everything else will be sent to an NPC in the Succubus Realm to be re-purchased with Gold you keep between 'deaths'. What you lose can be configured, and of course disabled completely.")
		elseif(option == id11) ;help.desire
			SetInfoText("Desire automatically generates on the PC overtime and upon Orgasms a large portion will be converted into HeartXP. Optionally Desire can also have negative effects such as draining Max status. [The conversion is a way for players that don't Sex Act a lot a way to catch up in HeartXP]")
		elseif(option == id12) ;help.tracking
			SetInfoText("While in the Heart Levels menu pressing the 'Reset to Default' key for the MCM Succubus Heart will start tracking that HeartXP cost and display a notification when you've earned enough to level it.")
		endIf
	;end/
	endIf
endEvent
;end/