Scriptname SuH_MCM extends SKI_ConfigBase

SuH_Fun Property _f auto
SuH_Status Property _s auto

;ent/ Initiate
int init_startmod
;end/
;ent/ status
int status_health
int status_magicka
int status_stamina
int status_desire
int status_xp
int status_xpgain
int status_stacksex
int status_stacksperm
int status_stackmilk
int status_SETdrainkill
int status_SETcombatseduction
int status_SETnpc2npchealth
int status_SETnpc2npchealthmin
int status_SETnpc2pchealth
int status_SETnpc2pchealthmin
int status_SETpc2npchealth
int status_SETpc2npchealthmin
int status_SETpc2npcstamina
int status_SETallowmalehomo
int status_SETallowfemalehomo
int status_SETessentialacts
int status_SETconsentdrain
int status_SETdesiredrain
int status_SETdeathdrops
int status_SETeffectmulti
int status_SETdesiregain
int status_SETalwaysdrainkill
int status_SETspecialdeath
int status_SETsdloseitems
int status_SETsdlosegold
int status_SETsdloseequip
int status_SETrestrictact
int status_SETdesirecap
int status_SETrandomdeathspawn
int status_sdsetspawn
int status_ORcaphealth
int status_ORcapmagicka
int status_ORcapstamina
int status_ORabsorbhealth
int status_ORabsorbmagicka
int status_ORabsorbstamina
int status_SETinvact
int status_SETinvactmale
int status_SETinvactfemale
int status_SETinvactmalecreature
int status_SETinvactfemalecreature
int status_version
int status_SETpetspells
int status_SETnpcabsorb
int status_SETdrainally
int status_SETclearactor
int status_SETcalmaura
int status_SETcsbleedoutdelay
int status_SETdisablehealthrecovery
int status_SETdisablemagickarecovery
int status_SETdisablestaminarecovery
int status_SETadvancedchecking
;end/
;ent/ skill
int skill_sp
int skill_spnext
int skill_xp
int skill_convert
int skill_alchemy
int skill_alteration
int skill_block
int skill_conjuration
int skill_destruction
int skill_enchanting
int skill_heavyarmor
int skill_illusion
int skill_lightarmor
int skill_lockpicking
int skill_marksman
int skill_onehanded
int skill_pickpocket
int skill_restoration
int skill_smithing
int skill_sneak
int skill_speechcraft
int skill_twohanded
;end/
;ent/ heart
int heart_caphealth
int heart_capmagicka
int heart_capstamina
int heart_absorbhealth
int heart_absorbmagicka
int heart_absorbstamina
int heart_spermhealth
int heart_spermmagicka
int heart_spermstamina
int heart_milkhealth
int heart_milkmagicka
int heart_milkstamina
int heart_stacksex
int heart_stacksperm
int heart_stackmilk
int heart_xp
int heart_xpgain
;end/
;ent/ spell
int spell_xp
int spell_point
int spell_reset
int spell_perfectorgasm
int spell_perfectorgasmrank
int spell_perfectorgasmrank2
int spell_lusciousliquids
int spell_lusciousliquidsrank
int spell_lusciousliquidsrank2
int spell_masochist
int spell_masochistrank
int spell_masochistrank2
int spell_selfstacker
int spell_selfstackerrank
int spell_valuestacker
int spell_valuestackerrank
int spell_savingessence
int spell_savingessencerank
int spell_savingessencerank2
int spell_giftedconsent
int spell_giftedconsentrank
int spell_forcemaster
int spell_forcemasterrank
int spell_deviouspartner
int spell_deviouspartnerrank
int spell_deviouspartnerrank2
int spell_formalbeauty
int spell_formalbeautyrank
int spell_formalbeautyrank2
int spell_seducer
int spell_seducerrank
int spell_regalglow
int spell_regalglowrank
int spell_violence
int spell_violencerank
int spell_violencerank2
int spell_violencerank3
int spell_healthyabsorber
int spell_healthyabsorberrank
int spell_values
;end/
;ent/ perk
int perk_orgasm
int perk_allyorgasm
int perk_absorb
int perk_sperm
int perk_milk
int perk_killdrain
;end/
;ent/ Pets
int pet_skilllevel
int pet_activepet
int pet_slot0
int pet_slot1
int pet_slot2
int pet_slot3
int pet_slot4
int pet_slot5
int pet_slot6
int pet_slot7
int pet_slot8
int pet_slot9
int pet_slot10
int pet_slot11
int pet_slot12
int pet_slot13
int pet_slot14
int pet_slot15
int pet_slot16
int pet_slot17
int pet_slot18
int pet_slot19
int pet_slot20
int pet_slot21
int pet_slot22
int pet_slot23
int pet_slot24
;end/
;ent/ Forge
int craft_anaitem
int craft_anasel
int craft_memcount
int craft_meminc
;end/
;ent/ help
int help_credit
int help_version
int help_drain
int help_drops
int help_realm
int help_xp
int help_sp
int help_bdsm
int help_perks
int help_pets
int help_cs
int help_dom
int help_desire
int help_tracking
int help_craft
;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
;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 < 4006001
		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"
		_s.SuH_MCMversion = 4006001
	endIf
endFunction
;end/
;ent/ Passive Reset Cost Calc
int Function passiveresetcostcalc()
	int passiveresetcost = Math.Floor(500 * _s.playerRef.GetLevel())
	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
        LoadCustomContent("SuH/SuH_cover.swf")
        return
    else
        UnloadCustomContent()
    endIf
	;end/
	;ent/ Initiate
	if (page == "Initiate")
		init_startmod = AddTextOption("Initiate ", "Start Succubus Heart ")
	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
		;end/
		;ent/ Left Side
		SetCursorPosition(0)
		; Status
		AddHeaderOption("Status ")
		if _s.SuH_ORcaphealth == 0
			status_health = AddTextOption("Health ", playerHealth+"/"+healthCap)
		else
			status_health = AddTextOption("Health ", playerHealth+"/overwritten")
		endIf
		if _s.SuH_ORcapmagicka == 0
			status_magicka = AddTextOption("Magicka ", playerMagicka+"/"+magickaCap)
		else
			status_magicka = AddTextOption("Magicka ", playerMagicka+"/overwritten")
		endIf
		if _s.SuH_ORcapstamina == 0
			status_stamina = AddTextOption("Stamina ", playerStamina+"/"+staminaCap)
		else
			status_stamina = AddTextOption("Stamina ", playerStamina+"/overwritten")
		endIf
		status_stacksex = AddTextOption("Sex Stacks", _s.SuH_PCSstacksex+" ("+_s.SuH_PCSstackmaxsex+")")
		status_stacksperm = AddTextOption("Sperm Stacks", _s.SuH_PCSstacksperm+" ("+_s.SuH_PCSstackmaxsperm+")")
		status_stackmilk = AddTextOption("Milk Stacks", _s.SuH_PCSstackmilk+" ("+_s.SuH_PCSstackmaxmilk+")")
		AddEmptyOption()
		; Drain Options
		AddHeaderOption("Drain Options")
		status_SETeffectmulti = AddSliderOption("Drain/XP Multiplier",effectmulti, "{0}%")
		status_SETnpcabsorb = AddToggleOption("Absorb From NPCs", _s.SuH_SETnpcabsorb)
		status_SETdrainkill = AddToggleOption("Allow Drain to Kill", _s.SuH_SETallowdrainkill)
		status_SETconsentdrain = AddToggleOption("Allow Consensual Drain", _s.SuH_SETconsentdrain)
		status_SETdrainally = AddToggleOption("Drain Followers", _s.SuH_SETdrainally)
		status_SETalwaysdrainkill = AddToggleOption("Drain Always Kills ", _s.SuH_SETalwaysdrainkill)
		; General Options
		AddHeaderOption("General Options")
		status_SETadvancedchecking = AddToggleOption("Advanced Checking ", _s.SuH_SETadvancedchecking)
		status_SETcalmaura = AddToggleOption("Calm Enemies During Acts", _s.SuH_SETcalmaura)
		status_SETdeathdrops = AddToggleOption("Death Drops ", _s.SuH_SETdeathdrops)
		status_SETdesiredrain = AddToggleOption("Allow Desire Drain", _s.SuH_SETdesiredrain)
		status_SETdesiregain = AddSliderOption("Desire Generation ", _s.SuH_PCSdesiregain)
		status_SETdesirecap = AddSliderOption("Desire Drain Trigger ", _s.SuH_SETdesirecap, "{0}")
		; Animation Options
		AddHeaderOption("Animation Options")
		status_SETclearactor = AddToggleOption("Clean Arrows off PC", _s.SuH_SETclearactor)
		status_SETallowmalehomo = AddToggleOption("Allow Male Homosexuals", _s.SuH_SETallowmalehomo)
		status_SETallowfemalehomo = AddToggleOption("Allow Female Homosexuals", _s.SuH_SETallowfemalehomo)
		status_SETrestrictact = AddToggleOption("Restrict Act ", _s.SuH_SETrestrictact)
		status_SETessentialacts = AddToggleOption("NPCs Essential in Acts", _s.SuH_SETessentialacts)
		; Overrides
		AddHeaderOption("Status Overrides")
		status_ORcaphealth = AddSliderOption("Health Cap",_s.SuH_ORcaphealth,"{0}")
		status_ORcapmagicka = AddSliderOption("Magicka Cap",_s.SuH_ORcapmagicka,"{0}")
		status_ORcapstamina = AddSliderOption("Stamina Cap",_s.SuH_ORcapstamina,"{0}")
		status_ORabsorbhealth = AddSliderOption("Health Absorption",_s.SuH_ORabsorbhealth,"{0}")
		status_ORabsorbmagicka = AddSliderOption("Magicka Absorption",_s.SuH_ORabsorbmagicka,"{0}")
		status_ORabsorbstamina = AddSliderOption("Stamina Absorption",_s.SuH_ORabsorbstamina,"{0}")
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		; Status
		AddHeaderOption("Status ")
		status_desire = AddTextOption("Desire ", _s.SuH_PCSdesire)
		status_xp = AddTextOption("XP ", _s.SuH_PCSxp)
		status_xpgain = AddTextOption("XP Gain ", _s.SuH_PCSxpgain+"%")
		AddEmptyOption()
		AddEmptyOption()
		status_version = AddTextOption("Succubus Heart Version "+modv, " ")
		AddEmptyOption()
		; Mechanic Options
		AddHeaderOption("Mechanic Options ")
		status_SETdisablehealthrecovery = AddToggleOption("Disable Health Regen ", SETdisablehealthrecovery)
		status_SETdisablemagickarecovery = AddToggleOption("Disable Magicka Regen ", SETdisablemagickarecovery)
		status_SETdisablestaminarecovery = AddToggleOption("Disable Stamina Regen ", SETdisablestaminarecovery)
		status_SETpetspells = AddToggleOption("Display Pet Spells", SETpetspells)
		AddHeaderOption("Combat Seduction Options")
		status_SETcombatseduction = AddToggleOption("Combat Seduction", _s.SuH_SETcombatseduction)
		status_SETpc2npchealth = AddSliderOption("PC to NPC", SETpc2npchealth, "{0}% Health")
		status_SETpc2npchealthmin = AddSliderOption("PC to NPC", SETpc2npchealthmin, "{0} Health")
		status_SETpc2npcstamina = AddSliderOption("PC to NPC", SETpc2npcstamina, "{0}% Stamina")
		status_SETnpc2pchealth = AddSliderOption("NPC to PC", SETnpc2pchealth, "{0}% Health")
		status_SETnpc2pchealthmin = AddSliderOption("NPC to PC", SETnpc2pchealthmin, "{0} Health")
		status_SETnpc2npchealth = AddSliderOption("NPC to NPC", SETnpc2npchealth, "{0}% Health")
		status_SETnpc2npchealthmin = AddSliderOption("NPC to NPC", SETnpc2npchealthmin, "{0} Health")
		AddHeaderOption("Death Override Mode Options")
		status_SETspecialdeath = AddToggleOption("Death Override Mode", _s.SuH_SETspecialdeath)
		status_SETrandomdeathspawn = AddToggleOption("Force Random Death Respawn", _s.SuH_SETrandomdeathspawn)
		status_SETsdloseitems = AddToggleOption("Lose Items on Death", _s.SuH_SETsdloseitems)
		status_SETsdlosegold = AddToggleOption("Lose Gold on Death", _s.SuH_SETsdlosegold)
		status_SETsdloseequip = AddToggleOption("Destroy Equipped on Death", _s.SuH_SETsdloseequip)
		status_SETcsbleedoutdelay = AddSliderOption("Bleed Out Delay", _s.SuH_SETcsbleedoutdelay, "{0} Sec")
		;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)
		skill_sp = AddTextOption("Skill Points", sp)
		skill_spnext = AddTextOption("Till Next Skill Point", spnext+" Force")
		AddHeaderOption("Level Skills")
		skill_alchemy = AddTextOption("Alchemy ", alchemylvl+" ["+alchemycost+" SP]")
		skill_block = AddTextOption("Block ", blocklvl+" ["+blockcost+" SP]")
		skill_destruction = AddTextOption("Destruction ", destructionlvl+" ["+destructioncost+" SP]")
		skill_heavyarmor = AddTextOption("Heavy Armor ", heavyarmorlvl+" ["+heavyarmorcost+" SP]")
		skill_lightarmor = AddTextOption("Light Armor ", lightarmorlvl+" ["+lightarmorcost+" SP]")
		skill_marksman = AddTextOption("Marksman ", marksmanlvl+" ["+marksmancost+" SP]")
		skill_pickpocket = AddTextOption("Pickpocket ", pickpocketlvl+" ["+pickpocketcost+" SP]")
		skill_smithing = AddTextOption("Smithing ", smithinglvl+" ["+smithingcost+" SP]")
		skill_speechcraft = AddTextOption("Speechcraft ", speechcraftlvl+" ["+speechcraftcost+" SP]")
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		skill_xp = AddTextOption("XP available", _s.SuH_PCSxp)
		skill_convert = AddSliderOption("XP to Force (10->1)",0,"{0}")
		AddHeaderOption("Level Skills")
		skill_alteration = AddTextOption("Alteration ", alterationlvl+" ["+alterationcost+" SP]")
		skill_conjuration = AddTextOption("Conjuration ", conjurationlvl+" ["+conjurationcost+" SP]")
		skill_enchanting = AddTextOption("Enchanting ", enchantinglvl+" ["+enchantingcost+" SP]")
		skill_illusion = AddTextOption("Illusion ", illusionlvl+" ["+illusioncost+" SP]")
		skill_lockpicking = AddTextOption("Lockpicking ", lockpickinglvl+" ["+lockpickingcost+" SP]")
		skill_onehanded = AddTextOption("One-Handed ", onehandedlvl+" ["+onehandedcost+" SP]")
		skill_restoration = AddTextOption("Restoration ", restorationlvl+" ["+restorationcost+" SP]")
		skill_sneak = AddTextOption("Sneak ", sneaklvl+" ["+sneakcost+" SP]")
		skill_twohanded = AddTextOption("Two-Handed ", twohandedlvl+" ["+twohandedcost+" SP]")
		;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)
		heart_xp = AddTextOption("XP available", _s.SuH_PCSxp)
		AddHeaderOption("Heart Levels")
		heart_caphealth = AddTextOption("Health Cap", caphealthdisplay+" ["+caphealthcost+" XP]")
		heart_capmagicka = AddTextOption("Magicka Cap", capmagickadisplay+" ["+capmagickacost+" XP]")
		heart_capstamina = AddTextOption("Stamina Cap", capstaminadisplay+" ["+capstaminacost+" XP]")
		AddEmptyOption()
		heart_stacksex = AddTextOption("Consumable Sex Stacks", _s.SuH_PCSstackmaxsex+" ["+stacksexcost+" XP]")
		heart_stacksperm = AddTextOption("Consumable Sperm Stacks", _s.SuH_PCSstackmaxsperm+" ["+stackspermcost+" XP]")
		heart_stackmilk = AddTextOption("Consumable Milk Stacks", _s.SuH_PCSstackmaxmilk+" ["+stackmilkcost+" XP]")
		AddEmptyOption()
		heart_xpgain = AddTextOption("XP Gain", _s.SuH_PCSxpgain+"% ["+xpgaincost+" XP]")
		AddEmptyOption()
		AddEmptyOption()
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddEmptyOption()
		AddHeaderOption("Heart Levels")
		heart_absorbhealth = AddTextOption("Health Absorption", _s.SuH_PCSabsorbhealth+" ["+absorbhealthcost+" XP]")
		heart_absorbmagicka = AddTextOption("Magicka Absorption", _s.SuH_PCSabsorbmagicka+" ["+absorbmagickacost+" XP]")
		heart_absorbstamina = AddTextOption("Stamina Absorption", _s.SuH_PCSabsorbstamina+" ["+absorbstaminacost+" XP]")
		AddEmptyOption()
		heart_spermhealth = AddTextOption("Sperm Health Bonus", _s.SuH_PCSspermhealth+" ["+spermhealthcost+" XP]")
		heart_spermmagicka = AddTextOption("Sperm Magicka Bonus", _s.SuH_PCSspermmagicka+" ["+spermmagickacost+" XP]")
		heart_spermstamina = AddTextOption("Sperm Stamina Bonus", _s.SuH_PCSspermstamina+" ["+spermstaminacost+" XP]")
		AddEmptyOption()
		heart_milkhealth = AddTextOption("Milk Health Bonus", _s.SuH_PCSmilkhealth+" ["+milkhealthcost+" XP]")
		heart_milkmagicka = AddTextOption("Milk Magicka Bonus", _s.SuH_PCSmilkmagicka+" ["+milkmagickacost+" XP]")
		heart_milkstamina = AddTextOption("Milk Stamina Bonus", _s.SuH_PCSmilkstamina+" ["+milkstaminacost+" XP]")
		;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 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_seducer*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)
			spell_point = AddTextOption("BDSM Rating", _s.SuH_PCSbdsm)
			spell_values = AddTextOption("Body "+_s.SuH_PCSbpoint+" : Desire "+_s.SuH_PCSdpoint+" : Soul "+_s.SuH_PCSspoint+" : Mind "+_s.SuH_PCSmpoint, " ")
			; Combat Passives
			AddHeaderOption("Combat Passives")
			spell_masochist = AddTextOption("Masochist", "rank "+masochistrankall)
			spell_masochistrank = AddTextOption(" - - Desire Up", masochistcost)
			spell_masochistrank2 = AddTextOption(" - - Stamina Up", masochistcost)
			spell_violence = AddTextOption("Violence", "rank "+violencerankall)
			spell_violencerank = AddTextOption(" - - Health Up", violencecost)
			spell_violencerank2 = AddTextOption(" - - Magicka Up", violencecost)
			spell_violencerank3 = AddTextOption(" - - Stamina Up", violencecost)
			spell_regalglow = AddTextOption("Regal Glow", "rank "+_s.SuH_rank_seducer)
			spell_regalglowrank = AddTextOption(" - - Armor Up", regalglowcost)
			spell_savingessence = AddTextOption("Saving Essence", "rank "+savingessencerankall)
			spell_savingessencerank = AddTextOption(" - - Recover Up", savingessencecost)
			spell_savingessencerank2 = AddTextOption(" - - Reduce Cooldown", savingessencecost)
			; Sex Passives
			AddHeaderOption("Sex Passives")
			spell_seducer = AddTextOption("Seducer ", "rank "+_s.SuH_rank_seducer)
			spell_seducerrank = AddTextOption(" - - Cost Down ", seducercost)
			spell_deviouspartner = AddTextOption("Devious Partner ", "rank "+deviouspartnerrankall)
			spell_deviouspartnerrank = AddTextOption(" - - Gold Up ", deviouspartnercost)
			spell_deviouspartnerrank2 = AddTextOption(" - - Conversion Up ", deviouspartnercost)
			spell_giftedconsent = AddTextOption("Gifted Consent", "rank "+_s.SuH_rank_giftedconsent)
			spell_giftedconsentrank = AddTextOption(" - - Status Up", giftedconsentcost)
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
			spell_xp = AddTextOption("Increase Rating", bdsmrankcost+" XP")
			spell_reset = AddTextOption(" - - Reset Passives and BDSM ", passiveresetcost+" XP")
			; Supportive Passives
			AddHeaderOption("Supportive Passives")
			spell_lusciousliquids = AddTextOption("Luscious Liquids", "rank "+lusciousliquidsrankall)
			spell_lusciousliquidsrank = AddTextOption(" - - Heal Up", lusciousliquidscost)
			spell_lusciousliquidsrank2 = AddTextOption(" - - Recovery Up", lusciousliquidscost)
			spell_formalbeauty = AddTextOption("Formal Beauty", "rank "+formalbeautyrankall)
			spell_formalbeautyrank = AddTextOption(" - - Effect Up", formalbeautycost)
			spell_formalbeautyrank2 = AddTextOption(" - - Cost Down", formalbeautycost)
			spell_forcemaster = AddTextOption("Force Master", "rank "+_s.SuH_rank_forcemaster)
			spell_forcemasterrank = AddTextOption(" - - Cost Down", forcemastercost)
			spell_valuestacker = AddTextOption("Value Stacker", "rank "+_s.SuH_rank_valuestacker)
			spell_valuestackerrank = AddTextOption(" - - Value Up", valuestackercost)
			spell_selfstacker = AddTextOption("Self Stacker", "rank "+_s.SuH_rank_selfstacker)
			spell_selfstackerrank = AddTextOption(" - - Stack Up", selfstackercost)
			AddHeaderOption("Sex Passives")
			spell_healthyabsorber = AddTextOption("Healthy Absorber ", "rank "+_s.SuH_rank_healthyabsorber)
			spell_healthyabsorberrank = AddTextOption(" - - Rate Up", healthyabsorbercost)
			spell_perfectorgasm = AddTextOption("Perfect Orgasm", "rank "+perfectorgasmrankall)
			spell_perfectorgasmrank = AddTextOption(" - - Rare Up", perfectorgasmcost)
			spell_perfectorgasmrank2 = AddTextOption(" - - Drop Up", perfectorgasmcost)
			;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")
		perk_orgasm = AddTextOption("Have Orgasm : Rank "+orgasml, orgasms) ;+12 BDSM
		perk_allyorgasm = AddTextOption("Bring Ally To Orgasm : Rank "+allyorgasml, allyorgasms) ;+1000 XP
		perk_absorb = AddTextOption("Absorb Status In Acts : Rank "+absorbl, absorbs) ;+2 BDSM
		perk_sperm = AddTextOption("Consume Sperm : Rank "+sperml, sperms) ;+500 XP
		perk_milk = AddTextOption("Consume Breast Milk : Rank "+milkl, milks) ;+500 XP
		perk_killdrain = AddTextOption("Drain Them To Death : Rank "+killdrainl, killdrains) ;+2 Max Health
		;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, a separate mod fully integrated into Succubus Heart! This MCM allows the summoning of various pets which level through sex acts and combat. If a Soul Pet dies they will de-summmon and lose XP. Check the highlight info and Help MCM for more.")
			ftsoul = 1
		endIf
		;ent/ Variables
			
		;end/
		
		SetCursorFillMode(LEFT_TO_RIGHT)
		;ent/ Left Side
		SetCursorPosition(0)
		pet_skilllevel = AddTextOption("Skill Level ", _s.SuH_petskill)
		pet_activepet = AddTextOption("Active Pet ", _s.SuH_actor_activepet.GetBaseObject().GetName())
		AddHeaderOption("Souls ")
		AddHeaderOption("Souls ")
		pet_slot0 = AddMenuOption("Slot 1 : "+(_s.SuH_petactorbases[0].GetName())+" "+_s.SuH_petlevels[0], "  ")
		pet_slot1 = AddMenuOption("Slot 2 : "+(_s.SuH_petactorbases[1].GetName())+" "+_s.SuH_petlevels[1], "  ")
		pet_slot2 = AddMenuOption("Slot 3 : "+(_s.SuH_petactorbases[2].GetName())+" "+_s.SuH_petlevels[2], "  ")
		pet_slot3 = AddMenuOption("Slot 4 : "+(_s.SuH_petactorbases[3].GetName())+" "+_s.SuH_petlevels[3], "  ")
		pet_slot4 = AddMenuOption("Slot 5 : "+(_s.SuH_petactorbases[4].GetName())+" "+_s.SuH_petlevels[4], "  ")
		pet_slot5 = AddMenuOption("Slot 6 : "+(_s.SuH_petactorbases[5].GetName())+" "+_s.SuH_petlevels[5], "  ")
		pet_slot6 = AddMenuOption("Slot 7 : "+(_s.SuH_petactorbases[6].GetName())+" "+_s.SuH_petlevels[6], "  ")
		pet_slot7 = AddMenuOption("Slot 8 : "+(_s.SuH_petactorbases[7].GetName())+" "+_s.SuH_petlevels[7], "  ")
		pet_slot8 = AddMenuOption("Slot 9 : "+(_s.SuH_petactorbases[8].GetName())+" "+_s.SuH_petlevels[8], "  ")
		pet_slot9 = AddMenuOption("Slot 10 : "+(_s.SuH_petactorbases[9].GetName())+" "+_s.SuH_petlevels[9], "  ")
		pet_slot10 = AddMenuOption("Slot 11 : "+(_s.SuH_petactorbases[10].GetName())+" "+_s.SuH_petlevels[10], "  ")
		pet_slot11 = AddMenuOption("Slot 12 : "+(_s.SuH_petactorbases[11].GetName())+" "+_s.SuH_petlevels[11], "  ")
		pet_slot12 = AddMenuOption("Slot 13 : "+(_s.SuH_petactorbases[12].GetName())+" "+_s.SuH_petlevels[12], "  ")
		pet_slot13 = AddMenuOption("Slot 14 : "+(_s.SuH_petactorbases[13].GetName())+" "+_s.SuH_petlevels[13], "  ")
		pet_slot14 = AddMenuOption("Slot 15 : "+(_s.SuH_petactorbases[14].GetName())+" "+_s.SuH_petlevels[14], "  ")
		pet_slot15 = AddMenuOption("Slot 16 : "+(_s.SuH_petactorbases[15].GetName())+" "+_s.SuH_petlevels[15], "  ")
		pet_slot16 = AddMenuOption("Slot 17 : "+(_s.SuH_petactorbases[16].GetName())+" "+_s.SuH_petlevels[16], "  ")
		pet_slot17 = AddMenuOption("Slot 18 : "+(_s.SuH_petactorbases[17].GetName())+" "+_s.SuH_petlevels[17], "  ")
		pet_slot18 = AddMenuOption("Slot 19 : "+(_s.SuH_petactorbases[18].GetName())+" "+_s.SuH_petlevels[18], "  ")
		pet_slot19 = AddMenuOption("Slot 20 : "+(_s.SuH_petactorbases[19].GetName())+" "+_s.SuH_petlevels[19], "  ")
		pet_slot20 = AddMenuOption("Slot 21 : "+(_s.SuH_petactorbases[20].GetName())+" "+_s.SuH_petlevels[20], "  ")
		pet_slot21 = AddMenuOption("Slot 22 : "+(_s.SuH_petactorbases[21].GetName())+" "+_s.SuH_petlevels[21], "  ")
		pet_slot22 = AddMenuOption("Slot 23 : "+(_s.SuH_petactorbases[22].GetName())+" "+_s.SuH_petlevels[22], "  ")
		pet_slot23 = AddMenuOption("Slot 24 : "+(_s.SuH_petactorbases[23].GetName())+" "+_s.SuH_petlevels[23], "  ")
		pet_slot24 = AddMenuOption("Slot 25 : "+(_s.SuH_petactorbases[24].GetName())+" "+_s.SuH_petlevels[24], "  ")
		;end/
		;ent/ Right Side
		;SetCursorPosition(1)
		;AddHeaderOption("Edit Soul")
		;end/
	;end/
	;ent/ Craft
	elseIf (page == "Soul Forge")
		if ftcraft != 1
			debug.MessageBox("Soul Forge Description Space")
			;ftcraft = 1
		endIf
		;ent/ Variables
			string memcost = (Math.Floor((_s.SuH_craftmemmax * 0.2) * 1000)) as string
			if _s.SuH_craftmemmax >= 50
				memcost = "Memory Maxed"
			endIf
			string anastring = ""
			if _s.SuH_craftanaitem != none
				anastring = ("Analyzing "+_s.SuH_craftanaitem.GetName())
			else
				anastring = "No analysis in progress..."
			endIf
			int anaperc = 0
			if _s.SuH_craftanaxp > 0
				anaperc = Math.Floor((_s.SuH_craftanaxp / _s.SuH_craftanareq) * 100)
			endIf
		;end/
		;ent/ Display
			;Analysis Item	.n%				.Forge Memory	.count/max
			;Sel.New AnaItem.InvList		.Improve Memory	.Hxp Cost
		;end/ 
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		craft_anaitem = AddTextOption(anastring, anaperc+"%")
		AddEmptyOption()
		AddEmptyOption()
		
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		craft_memcount = AddTextOption("Forge Memory ", _s.SuH_craftmemcount+"/"+_s.SuH_craftmemmax)
		craft_meminc = AddTextOption("Improve Memory ", memcost)
		AddEmptyOption()
		;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")
		help_drain = AddTextOption("Drain and it's Effects", " ")
		help_drops = AddTextOption("Sex/Death Drops", " ")
		help_realm = AddTextOption("The Succubus Realm", " ")
		help_xp = AddTextOption("Earning and Spending HeartXP", " ")
		help_sp = AddTextOption("Earning and Spending HeartSP", " ")
		help_bdsm = AddTextOption("BDSM Rating and Passives", " ")
		help_perks = AddTextOption("Upgrading Perks", " ")
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddHeaderOption("Optional Mechanics")
		help_pets = AddTextOption("Soul Pets", " ")
		help_craft = AddTextOption("Soul Forge ", " ")
		help_cs = AddTextOption("Combat Seduction", " ")
		help_dom = AddTextOption("Death Override Mode", " ")
		AddEmptyOption()
		AddHeaderOption("Advanced Mechanics")
		help_desire = AddTextOption("Desire", " ")
		help_tracking = AddTextOption("Tracking", " ")
		;end/
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSelect
Event OnOptionSelect(int option)
	;ent/ Initiate
	if(CurrentPage == "Initiate")
		if(option == init_startmod)
			SetTextOptionValue(init_startmod, "Starting : Please Exit MCM ")
			_s.InitProperties(true)
			_s.SuH_MCMversion = 5
			MCMupdate()
		endIf
	;end/
	;ent/ Status / Settings
	elseif(CurrentPage == "Status / Settings")
		if(option == status_SETnpcabsorb)
			if _s.SuH_SETnpcabsorb > 0
				_s.SuH_SETnpcabsorb = 0
				SetToggleOptionValue(status_SETnpcabsorb, FALSE)
			else
				_s.SuH_SETnpcabsorb = 1
				SetToggleOptionValue(status_SETnpcabsorb, TRUE)
			endIf
		elseif(option == status_SETdisablehealthrecovery)
			if _s.SuH_SETdisablehealthrecovery == 0
				_s.SuH_SETdisablehealthrecovery = _s.playerRef.GetBaseActorValue("HealRate")
				_s.playerRef.SetActorValue("HealRate", 0.0)
				SetToggleOptionValue(status_SETdisablehealthrecovery, True)
			else
				_s.playerRef.SetActorValue("HealRate", _s.SuH_SETdisablehealthrecovery)
				_s.SuH_SETdisablehealthrecovery = 0
				SetToggleOptionValue(status_SETdisablehealthrecovery, False)
			endIf
		elseif(option == status_SETdisablemagickarecovery)
			if _s.SuH_SETdisablemagickarecovery == 0
				_s.SuH_SETdisablemagickarecovery = _s.playerRef.GetBaseActorValue("MagickaRate")
				_s.playerRef.SetActorValue("MagickaRate", 0.0)
				SetToggleOptionValue(status_SETdisablemagickarecovery, true)
			else
				_s.playerRef.SetActorValue("MagickaRate", _s.SuH_SETdisablemagickarecovery)
				_s.SuH_SETdisablemagickarecovery = 0
				SetToggleOptionValue(status_SETdisablemagickarecovery, false)
			endIf
		elseif(option == status_SETdisablestaminarecovery)
			if _s.SuH_SETdisablestaminarecovery == 0
				_s.SuH_SETdisablestaminarecovery = _s.playerRef.GetBaseActorValue("StaminaRate")
				_s.playerRef.SetActorValue("StaminaRate", 0.0)
				SetToggleOptionValue(status_SETdisablestaminarecovery, true)
			else
				_s.playerRef.SetActorValue("StaminaRate", _s.SuH_SETdisablestaminarecovery)
				_s.SuH_SETdisablestaminarecovery = 0
				SetToggleOptionValue(status_SETdisablestaminarecovery, false)
			endIf
		elseif(option == status_SETdrainally)
			if _s.SuH_SETdrainally > 0
				_s.SuH_SETdrainally = 0
				SetToggleOptionValue(status_SETdrainally, FALSE)
			else
				_s.SuH_SETdrainally = 1
				SetToggleOptionValue(status_SETdrainally, TRUE)
			endIf
		elseif(option == status_SETdrainkill)
			if _s.SuH_SETallowdrainkill > 0
				_s.SuH_SETallowdrainkill = 0
				SetToggleOptionValue(status_SETdrainkill, FALSE)
			else
				_s.SuH_SETallowdrainkill = 1
				SetToggleOptionValue(status_SETdrainkill, TRUE)
			endIf
		elseif(option == status_SETcombatseduction)
			if _s.SuH_SETcombatseduction > 0
				_s.SuH_SETcombatseduction = 0
				SetToggleOptionValue(status_SETcombatseduction, FALSE)
			else
				_s.SuH_SETcombatseduction = 1
				SetToggleOptionValue(status_SETcombatseduction, TRUE)
			endIf
		elseif(option == status_SETpetspells)
			if _s.playerRef.HasSpell(_s.SuH_spell_petself)
				_s.playerRef.RemoveSpell(_s.SuH_spell_petself)
				_s.playerRef.RemoveSpell(_s.SuH_spell_pettarget)
				SetToggleOptionValue(status_SETpetspells, FALSE)
			else
				_s.playerRef.AddSpell(_s.SuH_spell_petself)
				_s.playerRef.AddSpell(_s.SuH_spell_pettarget)
				SetToggleOptionValue(status_SETpetspells, TRUE)
			endIf
		elseif(option == status_SETallowmalehomo)
			if _s.SuH_SETallowmalehomo > 0
				_s.SuH_SETallowmalehomo = 0
				SetToggleOptionValue(status_SETallowmalehomo, FALSE)
			else
				_s.SuH_SETallowmalehomo = 1
				SetToggleOptionValue(status_SETallowmalehomo, TRUE)
			endIf
		elseif(option == status_SETallowfemalehomo)
			if _s.SuH_SETallowfemalehomo > 0
				_s.SuH_SETallowfemalehomo = 0
				SetToggleOptionValue(status_SETallowfemalehomo, FALSE)
			else
				_s.SuH_SETallowfemalehomo = 1
				SetToggleOptionValue(status_SETallowfemalehomo, TRUE)
			endIf
		elseif(option == status_SETessentialacts)
			if _s.SuH_SETessentialacts > 0
				_s.SuH_SETessentialacts = 0
				SetToggleOptionValue(status_SETessentialacts, FALSE)
			else
				_s.SuH_SETessentialacts = 1
				SetToggleOptionValue(status_SETessentialacts, TRUE)
			endIf
		elseif(option == status_SETconsentdrain)
			if _s.SuH_SETconsentdrain > 0
				_s.SuH_SETconsentdrain = 0
				SetToggleOptionValue(status_SETconsentdrain, FALSE)
			else
				_s.SuH_SETconsentdrain = 1
				SetToggleOptionValue(status_SETconsentdrain, TRUE)
			endIf
		elseif(option == status_SETdesiredrain)
			if _s.SuH_SETdesiredrain > 0
				_s.SuH_SETdesiredrain = 0
				SetToggleOptionValue(status_SETdesiredrain, FALSE)
			else
				_s.SuH_SETdesiredrain = 1
				SetToggleOptionValue(status_SETdesiredrain, TRUE)
			endIf
		elseif(option == status_SETdeathdrops)
			if _s.SuH_SETdeathdrops > 0
				_s.SuH_SETdeathdrops = 0
				SetToggleOptionValue(status_SETdeathdrops, FALSE)
			else
				_s.SuH_SETdeathdrops = 1
				SetToggleOptionValue(status_SETdeathdrops, TRUE)
			endIf
		elseif(option == status_SETalwaysdrainkill)
			if _s.SuH_SETalwaysdrainkill > 0
				_s.SuH_SETalwaysdrainkill = 0
				SetToggleOptionValue(status_SETalwaysdrainkill, FALSE)
			else
				_s.SuH_SETalwaysdrainkill = 1
				SetToggleOptionValue(status_SETalwaysdrainkill, TRUE)
			endIf
		elseif(option == status_SETspecialdeath)
			if _s.SuH_SETspecialdeath > 0
				_s.PlayerBase.SetEssential(False)
				;_s.playerRef.SetNoBleedoutRecovery(True)
				_s.SuH_SETspecialdeath = 0
				SetToggleOptionValue(status_SETspecialdeath, FALSE)
			else
				_s.PlayerBase.SetEssential(True)
				_s.SuH_SETspecialdeath = 1
				SetToggleOptionValue(status_SETspecialdeath, TRUE)
			endIf
		elseif(option == status_SETsdloseitems)
			if _s.SuH_SETsdloseitems > 0
				_s.SuH_SETsdloseitems = 0
				SetToggleOptionValue(status_SETsdloseitems, FALSE)
			else
				_s.SuH_SETsdloseitems = 1
				SetToggleOptionValue(status_SETsdloseitems, TRUE)
			endIf
		elseif(option == status_SETsdlosegold)
			if _s.SuH_SETsdlosegold > 0
				_s.SuH_SETsdlosegold = 0
				SetToggleOptionValue(status_SETsdlosegold, FALSE)
			else
				_s.SuH_SETsdlosegold = 1
				SetToggleOptionValue(status_SETsdlosegold, TRUE)
			endIf
		elseif(option == status_SETsdloseequip)
			if _s.SuH_SETsdloseequip > 0
				_s.SuH_SETsdloseequip = 0
				SetToggleOptionValue(status_SETsdloseequip, FALSE)
			else
				_s.SuH_SETsdloseequip = 1
				SetToggleOptionValue(status_SETsdloseequip, TRUE)
			endIf
		elseif(option == status_SETrestrictact)
			if _s.SuH_SETrestrictact > 0
				_s.SuH_SETrestrictact = 0
				SetToggleOptionValue(status_SETrestrictact, FALSE)
			else
				_s.SuH_SETrestrictact = 1
				SetToggleOptionValue(status_SETrestrictact, TRUE)
			endIf
		elseif(option == status_SETrandomdeathspawn)
			if _s.SuH_SETrandomdeathspawn > 0
				_s.SuH_SETrandomdeathspawn = 0
				SetToggleOptionValue(status_SETrandomdeathspawn, FALSE)
			else
				_s.SuH_SETrandomdeathspawn = 1
				SetToggleOptionValue(status_SETrandomdeathspawn, TRUE)
			endIf
		elseif(option == status_SETinvactmale)
			if _s.SuH_SETinvactmale > 0
				_s.SuH_SETinvactmale = 0
				SetToggleOptionValue(status_SETinvactmale, FALSE)
			else
				_s.SuH_SETinvactmale = 1
				SetToggleOptionValue(status_SETinvactmale, TRUE)
			endIf
		elseif(option == status_SETinvactfemale)
			if _s.SuH_SETinvactfemale > 0
				_s.SuH_SETinvactfemale = 0
				SetToggleOptionValue(status_SETinvactfemale, FALSE)
			else
				_s.SuH_SETinvactfemale = 1
				SetToggleOptionValue(status_SETinvactfemale, TRUE)
			endIf
		elseif(option == status_SETinvactmalecreature)
			if _s.SuH_SETinvactmalecreature > 0
				_s.SuH_SETinvactmalecreature = 0
				SetToggleOptionValue(status_SETinvactmalecreature, FALSE)
			else
				_s.SuH_SETinvactmalecreature = 1
				SetToggleOptionValue(status_SETinvactmalecreature, TRUE)
			endIf
		elseif(option == status_SETinvactfemalecreature)
			if _s.SuH_SETinvactfemalecreature > 0
				_s.SuH_SETinvactfemalecreature = 0
				SetToggleOptionValue(status_SETinvactfemalecreature, FALSE)
			else
				_s.SuH_SETinvactfemalecreature = 1
				SetToggleOptionValue(status_SETinvactfemalecreature, TRUE)
			endIf
		elseif(option == status_SETclearactor)
			if _s.SuH_SETclearactor > 0
				_s.SuH_SETclearactor = 0
				SetToggleOptionValue(status_SETclearactor, FALSE)
			else
				_s.SuH_SETclearactor = 1
				SetToggleOptionValue(status_SETclearactor, TRUE)
			endIf
		elseif(option == status_SETcalmaura)
			if _s.SuH_SETcalmaura > 0
				_s.SuH_SETcalmaura = 0
				SetToggleOptionValue(status_SETcalmaura, FALSE)
			else
				_s.SuH_SETcalmaura = 1
				SetToggleOptionValue(status_SETcalmaura, TRUE)
			endIf
		elseif(option == status_SETadvancedchecking)
			if _s.SuH_SETadvancedchecking > 0
				_s.SuH_SETadvancedchecking = 0
				SetToggleOptionValue(status_SETadvancedchecking, FALSE)
			else
				_s.SuH_SETadvancedchecking = 1
				SetToggleOptionValue(status_SETadvancedchecking, TRUE)
			endIf
		endIf
	;end/
	;ent/ Skill Levels
	elseIf(CurrentPage == "Skill Levels")
		if(option == 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(skill_alchemy, alchemylvl+" ["+alchemycost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_alteration, alterationlvl+" ["+alterationcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_block, blocklvl+" ["+blockcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_conjuration, conjurationlvl+" ["+conjurationcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_destruction, destructionlvl+" ["+destructioncost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_enchanting, enchantinglvl+" ["+enchantingcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_heavyarmor, heavyarmorlvl+" ["+heavyarmorcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_illusion, illusionlvl+" ["+illusioncost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_lightarmor, lightarmorlvl+" ["+lightarmorcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_lockpicking, lockpickinglvl+" ["+lockpickingcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_marksman, marksmanlvl+" ["+marksmancost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_onehanded, onehandedlvl+" ["+onehandedcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_pickpocket, pickpocketlvl+" ["+pickpocketcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_restoration, restorationlvl+" ["+restorationcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_smithing, smithinglvl+" ["+smithingcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_sneak, sneaklvl+" ["+sneakcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_speechcraft, speechcraftlvl+" ["+speechcraftcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				endIf
			else
				debug.MessageBox("Skill Trainer Bug Detected, no SP spent. Level Skill normally to fix.")
			endIf
		elseif(option == 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(skill_twohanded, twohandedlvl+" ["+twohandedcost+" SP]")
					SetTextOptionValue(skill_sp, _s.SuH_PCSsp)
				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 == heart_caphealth)
			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(heart_caphealth, caphealthdisplay+" ["+caphealthcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == heart_capmagicka)
			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(heart_capmagicka, capmagickadisplay+" ["+capmagickacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == heart_capstamina)
			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(heart_capstamina, capstaminadisplay+" ["+capstaminacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_stacksex, _s.SuH_PCSstackmaxsex+" ["+stacksexcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_stacksperm, _s.SuH_PCSstackmaxsperm+" ["+stackspermcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_stackmilk, _s.SuH_PCSstackmaxmilk+" ["+stackmilkcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_absorbhealth, _s.SuH_PCSabsorbhealth+" ["+absorbhealthcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_absorbmagicka, _s.SuH_PCSabsorbmagicka+" ["+absorbmagickacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_absorbstamina, _s.SuH_PCSabsorbstamina+" ["+absorbstaminacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_spermhealth, _s.SuH_PCSspermhealth+" ["+spermhealthcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_spermmagicka, _s.SuH_PCSspermmagicka+" ["+spermmagickacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_spermstamina, _s.SuH_PCSspermstamina+" ["+spermstaminacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_milkhealth, _s.SuH_PCSmilkhealth+" ["+milkhealthcost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_milkmagicka, _s.SuH_PCSmilkmagicka+" ["+milkmagickacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_milkstamina, _s.SuH_PCSmilkstamina+" ["+milkstaminacost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		elseif(option == 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(heart_xpgain, _s.SuH_PCSxpgain+"% ["+xpgaincost+" XP]")
				SetTextOptionValue(heart_xp, _s.SuH_PCSxp)
			endIf
		endIf
	;end/
	;ent/ Passives
	elseIf(CurrentPage == "Passives") ; NOTE T1=12 T2=24 T3=30
		if(option == 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(spell_xp, bdsmrankcost+" XP")
				SetTextOptionValue(spell_point, _s.SuH_PCSbdsm)
			endIf
		elseif(option == spell_reset)
			_f.PassiveReset()
			;Utility.wait(0.01)
			ForcePageReset()
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_perfectorgasm += 1
				perfectorgasmrankall = _s.SuH_rank_perfectorgasm + _s.SuH_rank_perfectorgasm2
				perfectorgasmcost = Math.Floor(30+(perfectorgasmrankall*0.1*30))
				SetTextOptionValue(spell_perfectorgasm, "rank "+ perfectorgasmrankall)
				SetTextOptionValue(spell_perfectorgasmrank, perfectorgasmcost)
				SetTextOptionValue(spell_perfectorgasmrank2, perfectorgasmcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_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(spell_perfectorgasm, "rank "+ perfectorgasmrankall)
				SetTextOptionValue(spell_perfectorgasmrank, perfectorgasmcost)
				SetTextOptionValue(spell_perfectorgasmrank2, perfectorgasmcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_lusciousliquids += 1
				lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
				SetTextOptionValue(spell_lusciousliquids, "rank "+ lusciousliquidsrankall)
				SetTextOptionValue(spell_lusciousliquidsrank, lusciousliquidscost)
				SetTextOptionValue(spell_lusciousliquidsrank2, lusciousliquidscost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_lusciousliquids2 += 1
				lusciousliquidsrankall = _s.SuH_rank_lusciousliquids + _s.SuH_rank_lusciousliquids2
				lusciousliquidscost = Math.Floor(30+(lusciousliquidsrankall*0.1*30))
				SetTextOptionValue(spell_lusciousliquids, "rank "+ lusciousliquidsrankall)
				SetTextOptionValue(spell_lusciousliquidsrank, lusciousliquidscost)
				SetTextOptionValue(spell_lusciousliquidsrank2, lusciousliquidscost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_masochist += 1
				masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
				SetTextOptionValue(spell_masochist, "rank "+masochistrankall)
				SetTextOptionValue(spell_masochistrank, masochistcost)
				SetTextOptionValue(spell_masochistrank2, masochistcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_masochist2 += 1
				masochistrankall = _s.SuH_rank_masochist + _s.SuH_rank_masochist2
				masochistcost = Math.Floor(30+(masochistrankall*0.1*30))
				SetTextOptionValue(spell_masochist, "rank "+masochistrankall)
				SetTextOptionValue(spell_masochistrank, masochistcost)
				SetTextOptionValue(spell_masochistrank2, masochistcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == spell_selfstackerrank)
				int selfstackercost = Math.Floor(30+(_s.SuH_rank_selfstacker*0.1*30))
			if _s.SuH_PCSbdsm >= selfstackercost
				_s.SuH_PCSbdsm -= selfstackercost
				SetTextOptionValue(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_selfstacker += 1
				selfstackercost = Math.Floor(30+(_s.SuH_rank_selfstacker*0.1*30))
				SetTextOptionValue(spell_selfstacker, "rank "+_s.SuH_rank_selfstacker)
				SetTextOptionValue(spell_selfstackerrank, selfstackercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == spell_valuestackerrank)
				int valuestackercost = Math.Floor(30+(_s.SuH_rank_valuestacker*0.1*30))
			if _s.SuH_PCSbdsm >= valuestackercost
				_s.SuH_PCSbdsm -= valuestackercost
				SetTextOptionValue(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_valuestacker += 1
				valuestackercost = Math.Floor(30+(_s.SuH_rank_valuestacker*0.1*30))
				SetTextOptionValue(spell_valuestacker, "rank "+_s.SuH_rank_valuestacker)
				SetTextOptionValue(spell_valuestackerrank, valuestackercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_savingessence += 1
				savingessencerankall += 1
				savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
				SetTextOptionValue(spell_savingessence, "rank "+savingessencerankall)
				SetTextOptionValue(spell_savingessencerank, savingessencecost)
				SetTextOptionValue(spell_savingessencerank2, savingessencecost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_savingessence2 += 1
				savingessencerankall += 1
				savingessencecost = Math.Floor(30+(savingessencerankall*0.1*30))
				SetTextOptionValue(spell_savingessence, "rank "+savingessencerankall)
				SetTextOptionValue(spell_savingessencerank, savingessencecost)
				SetTextOptionValue(spell_savingessencerank2, savingessencecost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == spell_giftedconsentrank)
				int giftedconsentcost = Math.Floor(30+(_s.SuH_rank_giftedconsent*0.1*30))
			if _s.SuH_PCSbdsm >= giftedconsentcost
				_s.SuH_PCSbdsm -= giftedconsentcost
				SetTextOptionValue(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_giftedconsent += 1
				giftedconsentcost = Math.Floor(30+(_s.SuH_rank_giftedconsent*0.1*30))
				SetTextOptionValue(spell_giftedconsent, "rank "+_s.SuH_rank_giftedconsent)
				SetTextOptionValue(spell_giftedconsentrank, giftedconsentcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_forcemaster += 1
				forcemastercost = Math.Floor(30+(_s.SuH_rank_forcemaster*0.1*30))
				SetTextOptionValue(spell_forcemaster, "rank "+_s.SuH_rank_forcemaster)
				SetTextOptionValue(spell_forcemasterrank, forcemastercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_deviouspartner += 1
				deviouspartnerrankall += 1
				deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
				SetTextOptionValue(spell_deviouspartner, "rank "+deviouspartnerrankall)
				SetTextOptionValue(spell_deviouspartnerrank, deviouspartnercost)
				SetTextOptionValue(spell_deviouspartnerrank2, deviouspartnercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_deviouspartner2 += 1
				deviouspartnerrankall += 1
				deviouspartnercost = Math.Floor(30+(deviouspartnerrankall*0.1*30))
				SetTextOptionValue(spell_deviouspartner, "rank "+deviouspartnerrankall)
				SetTextOptionValue(spell_deviouspartnerrank, deviouspartnercost)
				SetTextOptionValue(spell_deviouspartnerrank2, deviouspartnercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_formalbeauty += 1
				formalbeautyrankall += 1
				formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
				SetTextOptionValue(spell_formalbeauty, "rank "+formalbeautyrankall)
				SetTextOptionValue(spell_formalbeautyrank, formalbeautycost)
				SetTextOptionValue(spell_formalbeautyrank2, formalbeautycost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_formalbeauty2 += 1
				formalbeautyrankall += 1
				formalbeautycost = Math.Floor(30+(formalbeautyrankall*0.1*30))
				SetTextOptionValue(spell_formalbeauty, "rank "+formalbeautyrankall)
				SetTextOptionValue(spell_formalbeautyrank, formalbeautycost)
				SetTextOptionValue(spell_formalbeautyrank2, formalbeautycost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == spell_seducerrank)
				int seducercost = Math.Floor(30+(_s.SuH_rank_seducer*0.1*30))
			if _s.SuH_rank_seducer >= 9
				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 += 20
				_s.SuH_PCScapmagickadown += 20
				_s.SuH_PCScapstaminadown += 20
				SetTextOptionValue(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_seducer += 1
				seducercost = Math.Floor(30+(_s.SuH_rank_seducer*0.1*30))
				SetTextOptionValue(spell_seducer, "rank "+_s.SuH_rank_seducer)
				SetTextOptionValue(spell_seducerrank, seducercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_regalglow += 1
				regalglowcost = Math.Floor(30+(_s.SuH_rank_regalglow*0.1*30))
				SetTextOptionValue(spell_regalglow, "rank "+ _s.SuH_rank_regalglow)
				SetTextOptionValue(spell_regalglowrank, regalglowcost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_violence += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(spell_violence, "rank "+violencerankall)
				SetTextOptionValue(spell_violencerank, violencecost)
				SetTextOptionValue(spell_violencerank2, violencecost)
				SetTextOptionValue(spell_violencerank3, violencecost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_violence2 += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(spell_violence, "rank "+violencerankall)
				SetTextOptionValue(spell_violencerank, violencecost)
				SetTextOptionValue(spell_violencerank2, violencecost)
				SetTextOptionValue(spell_violencerank3, violencecost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_violence3 += 1
				violencerankall += 1
				violencecost = Math.Floor(30+(violencerankall*0.1*30))
				SetTextOptionValue(spell_violence, "rank "+violencerankall)
				SetTextOptionValue(spell_violencerank, violencecost)
				SetTextOptionValue(spell_violencerank2, violencecost)
				SetTextOptionValue(spell_violencerank3, violencecost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endif
		elseif(option == 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(spell_point, _s.SuH_PCSbdsm)
				_s.SuH_rank_healthyabsorber += 1
				healthyabsorbercost = Math.Floor(30+(_s.SuH_rank_healthyabsorber*0.1*30))
				SetTextOptionValue(spell_healthyabsorber, "rank "+ _s.SuH_rank_healthyabsorber)
				SetTextOptionValue(spell_healthyabsorberrank, healthyabsorbercost)
				int passiveresetcost = passiveresetcostcalc()
				SetTextOptionValue(spell_reset, passiveresetcost)
			endIf
		endIf
	;end/
	;ent/ Soul Pets
	;elseif(CurrentPage == "Soul Pets")
		;if(option == pet_)
	;endIf
	;end/
	;ent/ Soul Forge
	elseif(CurrentPage == "Soul Forge")
		;if(option == craft_craftlevel)
		if(option == craft_meminc)
			if _s.SuH_craftmemmax > 50
				debug.MessageBox("Memory Already Maxed")
			else
				int memcost = Math.Floor((_s.SuH_craftmemmax * 0.2) * 3500)
				if _s.SuH_PCSxp >= memcost
					_s.SuH_PCSxp -= memcost
					_s.SuH_craftmemmax += 5
					SetTextOptionValue(craft_memcount, _s.SuH_craftmemcount+"/"+_s.SuH_craftmemmax)
					memcost = Math.Floor((_s.SuH_craftmemmax * 0.2) * 1000)
					SetTextOptionValue(craft_meminc, memcost)
				else
					debug.MessageBox("Not Enough HeartXP!")
				endIf
			endIf
		;elseif(option == craft_utilitycraft)
			
		endif
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionMenuOpen
event OnOptionMenuOpen(int option)
	if(CurrentPage == "Soul Pets")
		;ent/ Pets
		if (option == pet_slot0)
			petaction = 0
		elseif (option == pet_slot1)
			petaction = 1
		elseif (option == pet_slot2)
			petaction = 2
		elseif (option == pet_slot3)
			petaction = 3
		elseif (option == pet_slot4)
			petaction = 4
		elseif (option == pet_slot5)
			petaction = 5
		elseif (option == pet_slot6)
			petaction = 6
		elseif (option == pet_slot7)
			petaction = 7
		elseif (option == pet_slot8)
			petaction = 8
		elseif (option == pet_slot9)
			petaction = 9
		elseif (option == pet_slot10)
			petaction = 10
		elseif (option == pet_slot11)
			petaction = 11
		elseif (option == pet_slot12)
			petaction = 12
		elseif (option == pet_slot13)
			petaction = 13
		elseif (option == pet_slot14)
			petaction = 14
		elseif (option == pet_slot15)
			petaction = 15
		elseif (option == pet_slot16)
			petaction = 16
		elseif (option == pet_slot17)
			petaction = 17
		elseif (option == pet_slot18)
			petaction = 18
		elseif (option == pet_slot19)
			petaction = 19 
		elseif (option == pet_slot20)
			petaction = 20
		elseif (option == pet_slot21)
			petaction = 21
		elseif (option == pet_slot22)
			petaction = 22
		elseif (option == pet_slot23)
			petaction = 23
		elseif (option == pet_slot24)
			petaction = 24
		endIf
			SetMenuDialogOptions(petactionlist)
			SetMenuDialogStartIndex(0)
			SetMenuDialogDefaultIndex(0)
		;end/
	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)
			elseif index == 1 ; Return Pet
				_f.SoulPetDeSummon(petaction)
			elseif index == 2 ; Remove Pet
				_f.SoulPetRemove(petaction)
			endIf
			ForcePageReset()
		;endIf
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSliderOpen
Event OnOptionSliderOpen(int option)
	if(CurrentPage == "Status / Settings")
		If(option == status_SETpc2npchealth)
			SetSliderDialogStartValue(_s.SuH_SETpc2npchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETpc2npchealthmin)
			SetSliderDialogStartValue(_s.SuH_SETpc2npchealthmin)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETpc2npcstamina)
			SetSliderDialogStartValue(_s.SuH_SETpc2npcstamina*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseif(option == status_SETnpc2pchealth)
			SetSliderDialogStartValue(_s.SuH_SETnpc2pchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseif(option == status_SETnpc2pchealthmin)
			SetSliderDialogStartValue(_s.SuH_SETnpc2pchealth)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETnpc2npchealth)
			SetSliderDialogStartValue(_s.SuH_SETnpc2npchealth*100)
			SetSliderDialogDefaultValue(30)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETnpc2npchealthmin)
			SetSliderDialogStartValue(_s.SuH_SETnpc2npchealth)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORcaphealth)
			SetSliderDialogStartValue(_s.SuH_ORcaphealth)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORcapmagicka)
			SetSliderDialogStartValue(_s.SuH_ORcapmagicka)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORcapstamina)
			SetSliderDialogStartValue(_s.SuH_ORcapstamina)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORabsorbhealth)
			SetSliderDialogStartValue(_s.SuH_ORabsorbhealth)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORabsorbmagicka)
			SetSliderDialogStartValue(_s.SuH_ORabsorbmagicka)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORabsorbstamina)
			SetSliderDialogStartValue(_s.SuH_ORabsorbstamina)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETeffectmulti)
			SetSliderDialogStartValue(_s.SuH_PCSeffectmulti*100)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETdesiregain)
			SetSliderDialogStartValue(_s.SuH_PCSdesiregain)
			SetSliderDialogDefaultValue(1)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(0.2)
		elseIf(option == status_SETdesirecap)
			SetSliderDialogStartValue(_s.SuH_SETdesirecap)
			SetSliderDialogDefaultValue(1200)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10.0)
		elseIf(option == status_SETcsbleedoutdelay)
			SetSliderDialogStartValue(_s.SuH_SETcsbleedoutdelay)
			SetSliderDialogDefaultValue(5)
			SetSliderDialogRange(0,20)
			SetSliderDialogInterval(1.0)
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == 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 == status_SETpc2npchealth)
			_s.SuH_SETpc2npchealth = (value/100)
			SetSliderOptionValue(status_SETpc2npchealth, value, "{0}% Health")
		elseif(option == status_SETpc2npchealthmin)
			_s.SuH_SETpc2npchealthmin = Math.Floor(value)
			SetSliderOptionValue(status_SETpc2npchealthmin, value, "{0} Health")
		elseif(option == status_SETpc2npcstamina)
			_s.SuH_SETpc2npcstamina = (value/100)
			SetSliderOptionValue(status_SETpc2npcstamina, value, "{0}% Stamina")
		elseif(option == status_SETnpc2pchealth)
			_s.SuH_SETnpc2pchealth = (value/100)
			SetSliderOptionValue(status_SETnpc2pchealth, value, "{0}% Health")
		elseif(option == status_SETnpc2pchealthmin)
			_s.SuH_SETnpc2pchealthmin = Math.Floor(value)
			SetSliderOptionValue(status_SETnpc2pchealthmin, value, "{0} Health")
		elseif(option == status_SETnpc2npchealth)
			_s.SuH_SETnpc2npchealth = (value/100)
			SetSliderOptionValue(status_SETnpc2npchealth, value, "{0}% Health")
		elseif(option == status_SETnpc2npchealthmin)
			_s.SuH_SETnpc2npchealthmin = Math.Floor(value)
			SetSliderOptionValue(status_SETnpc2npchealthmin, value, "{0} Health")
		elseif(option == status_ORcaphealth)
			_s.SuH_ORcaphealth = Math.Floor(value)
			SetSliderOptionValue(status_ORcaphealth, value, "{0}")
			if value > 0
				int playerHealth = _s.playerRef.GetBaseActorValue("health") as int
				SetTextOptionValue(status_health, playerHealth+"/overwritten")
			else
				int playerHealth = _s.playerRef.GetBaseActorValue("health") as int
				SetTextOptionValue(status_health, playerHealth+"/"+_s.SuH_PCScaphealth)
			endIf
		elseif(option == status_ORcapmagicka)
			_s.SuH_ORcapmagicka = Math.Floor(value)
			SetSliderOptionValue(status_ORcapmagicka, value, "{0}")
			if value > 0
				int playerMagicka = _s.playerRef.GetBaseActorValue("magicka") as int
				SetTextOptionValue(status_magicka, playerMagicka+"/overwritten")
			else
				int playerMagicka = _s.playerRef.GetBaseActorValue("magicka") as int
				SetTextOptionValue(status_magicka, playerMagicka+"/"+_s.SuH_PCScapmagicka)
			endIf
		elseif(option == status_ORcapstamina)
			_s.SuH_ORcapstamina = Math.Floor(value)
			SetSliderOptionValue(status_ORcapstamina, value, "{0}")
			if value > 0
				int playerStamina = _s.playerRef.GetBaseActorValue("stamina") as int
				SetTextOptionValue(status_stamina, playerStamina+"/overwritten")
			else
				int playerStamina = _s.playerRef.GetBaseActorValue("stamina") as int
				SetTextOptionValue(status_stamina, playerStamina+"/"+_s.SuH_PCScapstamina)
			endIf
		elseif(option == status_ORabsorbhealth)
			_s.SuH_ORcaphealth = Math.Floor(value)
			SetSliderOptionValue(status_ORabsorbhealth, value, "{0}")
		elseif(option == status_ORabsorbmagicka)
			_s.SuH_ORcapmagicka = Math.Floor(value)
			SetSliderOptionValue(status_ORabsorbmagicka, value, "{0}")
		elseif(option == status_ORabsorbstamina)
			_s.SuH_ORcapstamina = Math.Floor(value)
			SetSliderOptionValue(status_ORabsorbstamina, value, "{0}")
		elseif(option == status_SETeffectmulti)
			_s.SuH_PCSeffectmulti = Math.Floor(value/100)
			SetSliderOptionValue(status_SETeffectmulti, value, "{0}%")
		elseif(option == status_SETdesiregain)
			_s.SuH_PCSdesiregain = Math.Floor(value)
			SetSliderOptionValue(status_SETdesiregain, value, "{0}")
		elseif(option == status_SETdesirecap)
			_s.SuH_SETdesirecap = Math.Floor(value)
			SetSliderOptionValue(status_SETdesirecap, value, "{0}")
		elseif(option == status_SETcsbleedoutdelay)
			_s.SuH_SETcsbleedoutdelay = Math.Floor(value)
			SetSliderOptionValue(status_SETcsbleedoutdelay, value, "{0} Sec")
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == skill_convert)
			_s.SuH_PCSxp -= Math.Floor(value)
			_s.SuH_PCSforce += Math.Floor(value/10)
			ForcePageReset()
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionDefault
Event OnOptionDefault(int option)
	;ent/ Heart Levels
	if(CurrentPage == "Heart Levels")
		if(option == heart_caphealth)
			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 == heart_capmagicka)
			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 == heart_capstamina)
			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 == heart_stacksex)
			int stacksexcost = Math.Floor(_s.SuH_PCSstackmaxsex*2.8*240)
			_f.trackSet(stacksexcost, "Max Sex Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_stacksperm)
			int stackspermcost = Math.Floor(_s.SuH_PCSstackmaxsperm*2.8*240)
			_f.trackSet(stackspermcost, "Max Sperm Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_stackmilk)
			int stackmilkcost = Math.Floor(_s.SuH_PCSstackmaxmilk*2.8*240)
			_f.trackSet(stackmilkcost, "Max Milk Stacks")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_absorbhealth)
			int absorbhealthcost = Math.Floor(_s.SuH_PCSabsorbhealth*2.2*280)
			_f.trackSet(absorbhealthcost, "Health Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_absorbmagicka)
			int absorbmagickacost = Math.Floor(_s.SuH_PCSabsorbmagicka*2.2*280)
			_f.trackSet(absorbmagickacost, "Magicka Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_absorbstamina)
			int absorbstaminacost = Math.Floor(_s.SuH_PCSabsorbstamina*2.2*280)
			_f.trackSet(absorbstaminacost, "Stamina Absorption")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_spermhealth)
			int spermhealthcost = Math.Floor(_s.SuH_PCSspermhealth*1.8*200)
			_f.trackSet(spermhealthcost, "Sperm Health Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_spermmagicka)
			int spermmagickacost = Math.Floor(_s.SuH_PCSspermmagicka*1.8*200)
			_f.trackSet(spermmagickacost, "Sperm Magicka Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_spermstamina)
			int spermstaminacost = Math.Floor(_s.SuH_PCSspermstamina*1.8*200)
			_f.trackSet(spermstaminacost, "Sperm Stamina Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_milkhealth)
			int milkhealthcost = Math.Floor(_s.SuH_PCSmilkhealth*1.8*200)
			_f.trackSet(milkhealthcost, "Milk Health Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_milkmagicka)
			int milkmagickacost = Math.Floor(_s.SuH_PCSmilkmagicka*1.8*200)
			_f.trackSet(milkmagickacost, "Milk Magicka Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == heart_milkstamina)
			int milkstaminacost = Math.Floor(_s.SuH_PCSmilkstamina*1.8*200)
			_f.trackSet(milkstaminacost, "Milk Stamina Bonus")
			debug.MessageBox("Tracking Set")
		elseif(option == 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 == 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 == init_startmod)
			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 == status_health)
			SetInfoText("Current Base Health / Cap [Gain Health through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == status_magicka)
			SetInfoText("Current Base Magicka / Cap [Gain Magicka through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == status_SETadvancedchecking)
			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 == status_SETdisablehealthrecovery)
			SetInfoText("Disables the player charater's base Health Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == status_SETdisablemagickarecovery)
			SetInfoText("Disables the player charater's base Magicka Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == status_SETdisableStaminarecovery)
			SetInfoText("Disables the player charater's base Stamina Regeneration. (Addative regen buffs/items should still work) [Default : Disabled]")
		elseif(option == status_SETcsbleedoutdelay)
			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 == status_SETdrainally)
			SetInfoText("Allows Followers to be drained of their status. When disabled they will ignore most absorb effects. [Default : Enabled]")
		elseif(option == status_SETpetspells)
			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 == status_stamina)
			SetInfoText("Current Base Stamina / Cap [Gain Stamina through absorption. Cap can be increased through Heart Levels and Items.]")
		elseif(option == 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 == status_xp)
			SetInfoText("Current XP Value. [Gain XP through Sexual Acts and Items.]")
		elseif(option == 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 == status_stacksex)
			SetInfoText("Sex Stacks / Consumable [Gain Sex Stacks after a Act.]")
		elseif(option == status_stacksperm)
			SetInfoText("Sperm Stacks / Consumable [Gain Sperm Stacks by consuming Sperm.]")
		elseif(option == status_stackmilk)
			SetInfoText("Milk Stacks / Consumable [Gain Milk Stacks by consuming Breast Milk.]")
		elseif(option == status_SETdrainkill)
			SetInfoText("When enabled characters can be killed by sex drain when their Health reduces below 1. [Default : Enabled]")
		elseif(option == status_SETallowmalehomo)
			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 == status_SETallowfemalehomo)
			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 == status_SETessentialacts)
			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 == status_SETcombatseduction)
			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 == status_SETnpc2pchealth)
			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 == status_SETnpc2pchealthmin)
			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 == status_SETnpc2npchealth)
			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 == status_SETnpc2npchealthmin)
			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 == status_SETpc2npchealth)
			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 == status_SETpc2npchealthmin)
			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 == status_SETpc2npcstamina)
			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 == status_SETconsentdrain)
			SetInfoText("When enabled consensual partners will be effected by absorption. [Will prevent drain on consensual partners if disabled] [Default : Disabled]")
		elseif(option == status_SETdesiredrain)
			SetInfoText("When enabled once Desire reaches high enough Status will slowly convert into Force [Disabling will prevent this feature] [Default : Disabled]")
		elseif(option == status_ORcaphealth)
			SetInfoText("Overrides the leveled Health Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_ORcapmagicka)
			SetInfoText("Overrides the leveled Magicka Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_ORcapstamina)
			SetInfoText("Overrides the leveled Stamina Cap and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_ORabsorbhealth)
			SetInfoText("Overrides the leveled Health Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_ORabsorbmagicka)
			SetInfoText("Overrides the leveled Magicka Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_ORabsorbstamina)
			SetInfoText("Overrides the leveled Stamina Absorption and replaces it with the fixed value selected [Set to 0 to disable] [Default : 0/Disabled]")
		elseif(option == status_SETdeathdrops)
			SetInfoText("When enabled characters will have a soul in their inventory after death. [Will be prevented if disabled] [Default : Enabled]")
		elseIf(option == status_SETeffectmulti)
			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 == status_SETdesiregain)
			SetInfoText("Sets Desire gained per second [Updated every 5 seconds] [Default : 1]")
		elseIf(option == status_SETalwaysdrainkill)
			SetInfoText("When enabled status drain from acts will always kill the target. [Default : Disabled]")
		elseIf(option == status_SETspecialdeath)
			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 == status_SETsdloseitems)
			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 == status_SETsdlosegold)
			SetInfoText("(Death Override Mode) Upon death the player will lose all gold they currently hold. [Default : Disabled]")
		elseIf(option == status_SETsdloseequip)
			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 == status_SETrestrictact)
			SetInfoText("When enabled will restrict female aggressors to using cowgirl animations (only effects Succubus Heart animations) [Default : Enabled]")
		elseIf(option == status_SETdesirecap)
			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 == status_SETrandomdeathspawn)
			SetInfoText("When enabled, after 'dieing' Succubus Realm -Disconnect- will force a random respawn when leaving the realm. [Default : Disabled]")
		elseIf(option == status_SETinvact)
			SetInfoText("'Virgin' Protection makes characters un-killable until they participate in an act. [Has no effect on NPCs that are already essential][This applies when loading a character, so you may need to access a new location, save/quit/load for all NPCs to be effected]")
		elseIf(option == status_SETinvactmale)
			SetInfoText("Makes Males 'virgin' protected [Default : Disabled]")
		elseIf(option == status_SETinvactfemale)
			SetInfoText("Makes Females 'virgin' protected [Default : Disabled]")
		elseIf(option == status_SETinvactmalecreature)
			SetInfoText("Makes Male Creatures 'virgin' protected [Default : Disabled]")
		elseIf(option == status_SETinvactfemalecreature)
			SetInfoText("Makes Females Creatures 'virgin' protected [Default : Disabled]")
		elseIf(option == status_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 == status_SETclearactor)
			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 == status_SETcalmaura)
			SetInfoText("Attempts to stop combat via-calm spell when the Player Character enters an act. (NOTE : May not work in all situations) [Default : Disabled]")
		endIf
	;end/
	;ent/ Skill Levels
	elseif(CurrentPage == "Skill Levels")
		if(option == skill_sp)
			SetInfoText("Current SP Available. [Gain SP through Force or Items. SP can be spent on leveling Skills.]")
		elseif(option == 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 == skill_xp)
			SetInfoText("Current XP Available. [Can be converted to Force for SP at a 10 to 1 ratio]")
		elseif(option == skill_convert)
			SetInfoText("Convert XP to Force at a 10 to 1 ration. [ex. 100 XP will give 10 Force]")
		elseif(option == skill_alchemy)
			SetInfoText("Level-up Alchemy")
		elseif(option == skill_alteration)
			SetInfoText("Level-up Alteration")
		elseif(option == skill_block)
			SetInfoText("Level-up Block")
		elseif(option == skill_conjuration)
			SetInfoText("Level-up Conjuration")
		elseif(option == skill_destruction)
			SetInfoText("Level-up Destruction")
		elseif(option == skill_enchanting)
			SetInfoText("Level-up Enchanting")
		elseif(option == skill_heavyarmor)
			SetInfoText("Level-up Heavy Armor")
		elseif(option == skill_illusion)
			SetInfoText("Level-up Illusion")
		elseif(option == skill_lightarmor)
			SetInfoText("Level-up Light Armor")
		elseif(option == skill_illusion)
			SetInfoText("Level-up Illusion")
		elseif(option == skill_lockpicking)
			SetInfoText("Level-up Lockpicking")
		elseif(option == skill_marksman)
			SetInfoText("Level-up Marksman")
		elseif(option == skill_onehanded)
			SetInfoText("Level-up One-Handed")
		elseif(option == skill_pickpocket)
			SetInfoText("Level-up Pickpocket")
		elseif(option == skill_restoration)
			SetInfoText("Level-up Restoration")
		elseif(option == skill_smithing)
			SetInfoText("Level-up Smithing")
		elseif(option == skill_sneak)
			SetInfoText("Level-up Sneak")
		elseif(option == skill_speechcraft)
			SetInfoText("Level-up speechcraft")
		elseif(option == skill_twohanded)
			SetInfoText("Level-up Two-Handed")
		endIf
	;end/
	;ent/ Heart Levels
	elseif(CurrentPage == "heart Levels")
		if(option == heart_xp)
			SetInfoText("Current XP Available. [Can spend XP to level Abilities.]")
		elseif(option == heart_caphealth)
			SetInfoText("Increases the Max Health Absorption can reach.[Increases by 1 per level] + 1 Body Rating")
		elseif(option == heart_capmagicka)
			SetInfoText("Increases the Max Magicka Absorption can reach.[Increases by 1 per level] + 1 Mind Rating")
		elseif(option == heart_capstamina)
			SetInfoText("Increases the Max Stamina Absorption can reach.[Increases by 1 per level] + 1 Soul Rating")
		elseif(option == 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 == 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 == 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 == heart_xpgain)
			SetInfoText("Increases the XP gain multiplier. [Increases by 2% when leveled] + 5 Desire Rating")
		elseif(option == heart_absorbhealth)
			SetInfoText("Increases Health absorbed in acts per-tick. [Increases by 1 per level] + 5 Body Rating")
		elseif(option == heart_absorbmagicka)
			SetInfoText("Increases Magicka absorbed in acts per-tick. [Increases by 1 per level] + 5 Mind Rating")
		elseif(option == heart_absorbstamina)
			SetInfoText("Increases Stamina absorbed in acts per-tick. [Increases by 1 per level] + 5 Soul Rating")
		elseif(option == heart_spermhealth)
			SetInfoText("Increases Health earned when consuming Sperm. [Increases by 1 per level] + 2 Body Rating")
		elseif(option == heart_spermmagicka)
			SetInfoText("Increases Magicka earned when consuming Sperm. [Increases by 1 per level] + 2 Mind Rating")
		elseif(option == heart_spermstamina)
			SetInfoText("Increases Stamina earned when consuming Sperm. [Increases by 1 per level] + 2 Soul Rating")
		elseif(option == heart_milkhealth)
			SetInfoText("Increases Health earned when consuming Milk. [Increases by 1 per level] + 2 Body Rating")
		elseif(option == heart_milkmagicka)
			SetInfoText("Increases Magicka earned when consuming Milk. [Increases by 1 per level] + 2 Mind Rating")
		elseif(option == 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 == spell_xp)
			SetInfoText("Use XP to increase the BodyDesireSoulMind Rating by 20 (5 of each trait).")
		elseif(option == spell_point)
			SetInfoText("Current BodyDesireSoulMind Rating.")
		elseif(option == spell_point)
			SetInfoText("BDSM True Values (Used by passives)")
		elseif(option == 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. [Note : Individual BDSM ratings can go into the negative and be considered normal, however BDSM itself should never drop below zero]")
		elseIf(option == 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 == spell_perfectorgasmrank)
			SetInfoText("Adds 1% to Perfect Orgasm's Rare Drop Boost.")
		elseIf(option == spell_perfectorgasmrank2)
			SetInfoText("Decrease Status Caps by 15 for 5% extra chance at a Death Drop.")
		elseIf(option == spell_lusciousliquids)
			int r1 = _s.SuH_rank_lusciousliquids
			int r2 = _s.SuH_rank_lusciousliquids
			int x = 0
			if r1 > 0
				x = Math.Floor( 1 + (r1 * (_s.SuH_PCSdpoint * 0.1)))
			endIf
			int y = 0
			if r2 > 0
				y = Math.Floor( 1 + (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 == spell_lusciousliquidsrank)
			SetInfoText("Decrease Health Cap by 15, Sperm and Milk restores more Health. [+10% Desire Rating]")
		elseIf(option == spell_lusciousliquidsrank2)
			SetInfoText("Decrease Magicka Cap by 15, Sperm and Milk restores more Magicka and Stamina. [+10% Desire Rating]")
		elseIf(option == 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(1 + (r1 * (bpoint * 0.1)))
			endIf
			int y = 0
			if r2 != 0
				y = Math.Floor(1 + (r2 * (bpoint * 0.1)))
			endIf
			SetInfoText("Pain is just extra excitement! When hit, generate "+x+" Desire and recover "+y+" Stamina. [Scales with Body Rating]")
		elseIf(option == spell_masochistrank)
			SetInfoText("Decrease Health Cap by 15, Generate more Desire when hit. [10% of Body Rating per-rank]")
		elseIf(option == spell_masochistrank2)
			SetInfoText("Decrease Health Cap by 15, Recover more Stamina when hit. [10% of Body Rating per-rank]")
		elseIf(option == 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 == spell_selfstackerrank)
			SetInfoText("Adds 1 to Self Stacker's effect.")
		elseIf(option == spell_valuestacker)
			int x = _s.SuH_rank_valuestacker
			SetInfoText("Savoring every last drop... Increases number of stacks earned by "+x+".")
		elseIf(option == spell_valuestackerrank)
			SetInfoText("Adds 1 to Value Stacker's effect.")
		elseIf(option == spell_savingessence)
			int r1 = Math.Floor(2 * _s.SuH_rank_savingessence)
			int x = 0
			if r1 > 0
				x = Math.Floor(1 + (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 == spell_savingessencerank)
			SetInfoText("Recover more Health per stack. [+5% Body Rating per-rank]")
		elseIf(option == spell_savingessencerank2)
			SetInfoText("Decrease cooldown by 1 minute.")
		elseIf(option == 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 == spell_giftedconsentrank)
			SetInfoText("Adds 1 to Gifted Consent's effect.")
		elseIf(option == 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 == spell_forcemasterrank)
			SetInfoText("Decrease all Status Caps by 25, Adds 10% to Force Master's effect. [Caps at 90%]")
		elseIf(option == spell_deviouspartner)
			int x = _s.SuH_rank_deviouspartner
			int r2 = _s.SuH_rank_deviouspartner2
			int y = 0
			if r2 > 0
				y = Math.Floor(1 + (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 to "+y+" gold.")
		elseIf(option == spell_deviouspartnerrank)
			SetInfoText("Steal 1 more gold every tick.")
		elseIf(option == spell_deviouspartnerrank2)
			SetInfoText("Reduce Stamina Cap by 20 and gain more gold on orgasm. [20% of Mind Rating]")
		elseIf(option == 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(1 + (r1 * (_s.SuH_PCSdpoint * 0.05)))
			endIf
			int y = 0
			if r2 > 0
				y = Math.Floor(1 + (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 ammount 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 == spell_formalbeautyrank)
			SetInfoText("Recover more status per-stack. [5% Desire Rating per-rank]")
		elseIf(option == 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 == spell_seducer)
			int x = _s.SuH_rank_seducer
			int y = Math.Floor(90 - (x*10))
			SetInfoText("Influence has a price, and it's worth it. Seduction Spells consume "+y+"% Health/Magicka/Stamina when successful.")
		elseIf(option == spell_seducerrank)
			SetInfoText("Decrease All Status Caps by 20, Reduce Successful Seduction cost by 10%.")
		elseIf(option == spell_regalglow)
			int r1 = _s.SuH_rank_regalglow
			int y = 0
			if r1 > 0
				y = Math.Floor(1 + (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 == spell_regalglowrank)
			SetInfoText("Decrease Magicka Cap by 20, Increase Armor rating of Regal Glow. [5% of Mind Rating per-rank]")
		elseIf(option == spell_violence)
			int spoint = _s.SuH_PCSspoint
			int r1 = _s.SuH_rank_violence
			int x = 0
			if r1 != 0
				x = Math.Floor(1 + (r1 * (spoint * 0.05)))
			endif
			int r2 = _s.SuH_rank_violence2
			int y = 0
			if r2 != 0
				y = Math.Floor(1 + (r2 * (spoint * 0.05)))
			endif
			int r3 = _s.SuH_rank_violence3
			int z = 0
			if r3 != 0
				z = Math.Floor(1 + (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 per second.")
		elseIf(option == spell_violencerank)
			SetInfoText("Decrease Health Cap by 60, Increase Health Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == spell_violencerank2)
			SetInfoText("Decrease Magicka Cap by 60, Increase Magicka Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == spell_violencerank3)
			SetInfoText("Decrease Stamina Cap by 60, Increase Stamina Absorption on hit. [5% of Soul Rating per-rank]")
		elseIf(option == 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 == spell_healthyabsorberrank)
			SetInfoText("Decrease All Status Caps by 5, Increases Health/Magicka/Stamina Recovered when Absorbing Status by 25%. (Doesn't effect cap increase)")
		endIf
	;end/
	;ent/ Perks
	elseif(CurrentPage == "Perks")
		if(option == 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 == perk_allyorgasm)
				int x = _s.SuH_perk_allyorgasm
			SetInfoText("(Total Count = "+x+") Bring allies to orgasm. +1000 HeartXP per-rank")
		elseif(option == 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 == perk_sperm)
				int x = _s.SuH_perk_sperm
			SetInfoText("(Total Count = "+x+") Consume Sperm. +500 HeartXP per rank")
		elseif(option == perk_milk)
				int x = _s.SuH_perk_milk
			SetInfoText("(Total Count = "+x+") Consume Milk. +500 HeartXP per rank")
		elseif(option == 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 == pet_skilllevel)
			SetInfoText("Current Pet Skill Level (Increase by leveling up pets. Increasing the Pet Skill increases XP gained by pets overall)")
		elseif(option == pet_activepet)
			SetInfoText("Currently Active Pet")
		endIf
	;end/
	;ent/ Soul Forge
	elseif(CurrentPage == "Soul Forge")
		;if(option == craft_level)
		;endIf
	;end/
	;ent/ Help
	elseif(CurrentPage == "Help")
		if(option == help_craft)
			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 == 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 == 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 == 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 == 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 == 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 == 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 == 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 == 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 == 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 == 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 == help_Craft)
			SetInfoText("Crafting allows you to create items based on Crafting Points earned from either draining status or using special items/passives. As more items are crafted XP is gained, upon leveling up crafting all costs are decreased. (Note : Items have a min-cost and can't go below this point)")
		elseif(option == 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 == 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/