Scriptname SuH_MCM extends SKI_ConfigBase

SuH_Fun Property _Fun auto
DialogueFollowerScript Property DialogueFollower Auto
Quest Property pDialogueFollower  Auto

;ent/ Variables / Objects
Actor Property PlayerAlias auto
Actor Property PlayerRef Auto
Actor Property SuH_actor_dog Auto
Actor Property SuH_actor_wolf Auto
Actor Property SuH_actor_horse Auto
ActorBase Property PlayerBase Auto

ObjectReference Property SuH_sdr_spawnpoint Auto 
ObjectReference Property SuH_realm_portalpoint Auto 

GlobalVariable Property SuH_SETallowdrainkill auto
GlobalVariable Property SuH_PCScaphealth auto
GlobalVariable Property SuH_PCScapmagicka auto
GlobalVariable Property SuH_PCScapstamina auto
GlobalVariable Property SuH_PCSdesire auto
GlobalVariable Property SuH_PCSxp auto
GlobalVariable Property SuH_PCSxpgain auto
GlobalVariable Property SuH_PCSabsorbhealth auto
GlobalVariable Property SuH_PCSabsorbmagicka auto
GlobalVariable Property SuH_PCSabsorbstamina auto
GlobalVariable Property SuH_PCSspermhealth auto
GlobalVariable Property SuH_PCSspermmagicka auto
GlobalVariable Property SuH_PCSspermstamina auto
GlobalVariable Property SuH_PCSmilkhealth auto
GlobalVariable Property SuH_PCSmilkmagicka auto
GlobalVariable Property SuH_PCSmilkstamina auto
GlobalVariable Property SuH_PCSstackmaxsex auto
GlobalVariable Property SuH_PCSstackmaxsperm auto
GlobalVariable Property SuH_PCSstackmaxmilk auto
GlobalVariable Property SuH_PCSstacksex auto
GlobalVariable Property SuH_PCSstacksperm auto
GlobalVariable Property SuH_PCSstackmilk auto
GlobalVariable Property SuH_PCSsp auto
GlobalVariable Property SuH_PCSspearned auto
GlobalVariable Property SuH_PCSforce auto
GlobalVariable Property SuH_PCSeffectmulti auto
GlobalVariable Property SuH_PCSdesiregain auto
GlobalVariable Property SuH_SETcombatseduction auto
GlobalVariable Property SuH_SETnpc2npchealth auto
GlobalVariable Property SuH_SETnpc2pchealth auto
GlobalVariable Property SuH_SETpc2npchealth auto
GlobalVariable Property SuH_SETallowmalehomo auto
GlobalVariable Property SuH_SETallowfemalehomo auto
GlobalVariable Property SuH_SETessentialacts auto
GlobalVariable Property SuH_SETconsentdrain auto
GlobalVariable Property SuH_SETdesiredrain auto
GlobalVariable Property SuH_SETdeathdrops auto
GlobalVariable Property SuH_SETalwaysdrainkill auto
GlobalVariable Property SuH_SETspecialdeath auto
GlobalVariable Property SuH_SETsdloseitems auto
GlobalVariable Property SuH_SETrestrictact auto
GlobalVariable Property SuH_SETdesirecap auto
GlobalVariable Property SuH_MODversion auto
GlobalVariable Property SuH_MCMversion auto
GlobalVariable Property SuH_rank_perfectorgasm auto
GlobalVariable Property SuH_rank_lusciousliquids auto
GlobalVariable Property SuH_rank_masochist auto
GlobalVariable Property SuH_rank_selfstacker auto
GlobalVariable Property SuH_rank_valuestacker auto
GlobalVariable Property SuH_rank_savingessence auto
GlobalVariable Property SuH_rank_giftedconsent auto
GlobalVariable Property SuH_rank_forcemaster auto
GlobalVariable Property SuH_ORcaphealth auto
GlobalVariable Property SuH_ORcapmagicka auto
GlobalVariable Property SuH_ORcapstamina auto
GlobalVariable Property SuH_ORabsorbhealth auto
GlobalVariable Property SuH_ORabsorbmagicka auto
GlobalVariable Property SuH_ORabsorbstamina auto
GlobalVariable Property SuH_PETsummonlevel auto
GlobalVariable Property SuH_PETsummonxp auto
GlobalVariable Property SuH_PETactive auto
GlobalVariable Property SuH_PETactivedog auto
GlobalVariable Property SuH_PETdoglevel auto
GlobalVariable Property SuH_PETdogdesire auto
GlobalVariable Property SuH_PETactivewolf auto
GlobalVariable Property SuH_PETwolflevel auto
GlobalVariable Property SuH_PETwolfdesire auto
GlobalVariable Property SuH_PETactivehorse auto
GlobalVariable Property SuH_PEThorselevel auto
GlobalVariable Property SuH_PEThorsedesire auto

Spell Property SuH_spell_focusshot_base auto
Spell Property SuH_spell_focusshot_love auto
Spell Property SuH_spell_focusshot_drain auto
Spell Property SuH_spell_cursedblood_base auto
Spell Property SuH_spell_cursedblood_love auto
Spell Property SuH_spell_cursedblood_hate auto
Spell Property SuH_spell_vitaldrain_base auto
Spell Property SuH_spell_vitaldrain_love auto
Spell Property SuH_spell_vitaldrain_hate auto
Spell Property SuH_spell_spiritmend_base auto
Spell Property SuH_spell_spiritmend_love auto
Spell Property SuH_spell_spiritmend_hate auto
Spell Property SuH_spell_soulbend_base auto
Spell Property SuH_spell_soulbend_love auto
Spell Property SuH_spell_soulbend_hate auto
Spell Property SuH_spell_intimatetouch_base auto
Spell Property SuH_spell_intimatetouch_love auto
Spell Property SuH_spell_intimatetouch_hate auto

;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_SETnpc2pchealth
int status_SETpc2npchealth
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_SETrestrictact
int status_SETdesirecap
int status_sdsetspawn
int status_ORcaphealth
int status_ORcapmagicka
int status_ORcapstamina
int status_ORabsorbhealth
int status_ORabsorbmagicka
int status_ORabsorbstamina

;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

;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

;spell
int spell_xp
int spell_focusshotbase
int spell_focusshotlove
int spell_focusshothate
int spell_cursedbloodbase
int spell_cursedbloodlove
int spell_cursedbloodhate
int spell_vitaldrainbase
int spell_vitaldrainlove
int spell_vitaldrainhate
int spell_spiritmendbase
int spell_spiritmendlove
int spell_spiritmendhate
int spell_soulbendbase
int spell_soulbendlove
int spell_soulbendhate
int spell_intimatetouchbase
int spell_intimatetouchlove
int spell_intimatetouchhate

int spell_perfectorgasm
int spell_perfectorgasmrank
int spell_perfectorgasmdown
int spell_lusciousliquids
int spell_lusciousliquidsrank
int spell_lusciousliquidsdown
int spell_masochist
int spell_masochistrank
int spell_masochistdown
int spell_selfstacker
int spell_selfstackerrank
int spell_selfstackerdown
int spell_valuestacker
int spell_valuestackerrank
int spell_valuestackerdown
int spell_savingessence
int spell_savingessencerank
int spell_savingessencedown
int spell_giftedconsent
int spell_giftedconsentrank
int spell_giftedconsentdown
int spell_forcemaster
int spell_forcemasterrank
int spell_forcemasterdown

;Pets
int pet_summonxp
int pet_summonlevel
int pet_currentleader
int pet_leaderdesire
int pet_dog
int pet_doglevel
int pet_dogdesire
int pet_wolf
int pet_wolflevel
int pet_wolfdesire
int pet_horse
int pet_horselevel
int pet_horsedesire

;help
int help_credit
int help_version
int help1
int help2
int help3
int help4
int help5
int help6
int help7
int help8
int help9
int help10
int help11
int help12
int help13
int help14
int help15
int help16
int help17
int help18
int help19
int help20

int r1
int r2
int r3
int r4
int r5
int r6
int r7
int r8
int r9
int r10
int r11
int r12
int r13
int r14
int r15
int r16
int r17
int r18
int r19
int r20
int r21
int r22
int r23
int r24
int r25
int r26
int r27
int r28
int r29
int r30
int r31
int r32
int r33
;end/

;ent/ Init
Event OnConfigInit()
	ModName = "_Succubus Heart"
	Pages = new string[6]
		Pages[0] = "Status / Settings"
		Pages[1] = "Skill Levels"
		Pages[2] = "Heart Levels"
		Pages[3] = "Spells / Passives"
		Pages[4] = "Soul Pets"
		Pages[5] = "Help"
endEvent
;end/

;ent/ MCMupdate
Function MCMupdate()
	float MCMversion = SuH_MCMversion.GetValue()
	If MCMversion < 3.32
		ModName = "_Succubus Heart"
		Pages = new string[6]
			Pages[0] = "Status / Settings"
			Pages[1] = "Skill Levels"
			Pages[2] = "Heart Levels"
			Pages[3] = "Spells / Passives"
			Pages[4] = "Soul Pets"
			Pages[5] = "Help"
		SuH_MCMversion.SetValue(3.32)
	endIf
endFunction
;end/

;ent/ OnPageReset
Event OnPageReset(string page)
	;ent/ Initial Page
	if (page == "")
        LoadCustomContent("SuH/SuH_cover.swf")
        return
    else
        UnloadCustomContent()
    endIf
	;end/
	;ent/ Status / Settings
	if (page == "Status / Settings")
		SetCursorFillMode(TOP_TO_BOTTOM)
		
		;ent/ Menu Layout
		;      OUTDATED                                  
		;  [ Status ]                  [ Status ]           
		;  Player Health            N  Desire                   N
		;  Player Magicka           N  XP                       N
		;  Player Stamina           N  XP Gain                  N
		;  Sex Stacks               N  _                        
		;  Sperm Stacks             N  _                        
		;  Milk Stacks              N  _                        
		;  _                           _                        
		;  [ Gameplay Options ]         [ Mechanic Options ]      
		;  Allow Drain to Kill      O  Combat Seduction         O
		;  Allow Consensual Drain   O  NPC to PC                O
		;  Allow Desire Drain       O  PC to NPC                O
		;  Allow Male Homosexuals   O  NPC to NPC               O
		;  Allow Female Homosexuals O  _                       
		;  Effect Multiplier        N  Death Override           O
		;  Drain Always Kills       O  Lose Items on Death      O
		;  Death Drops              O  (Debug) SETsdspawn_here  _
		;  Desire Generation        N  _             
		;  Restrict Act             O  _                        
		;  _                           _                        
		;  [ Overrides ]               _                         
		;  Health Cap Override         Health Ab Override          
		;  Magicka Cap Override        Magicka Ab Override         
		;  Stamina Cap Override        Stamina AB Override           
		;                                                       
		;
		;end/
		
		;ent/ Variables
		int playerHealth = PlayerRef.GetBaseActorValue("health") as int
		int playerMagicka = PlayerRef.GetBaseActorValue("magicka") as int
		int playerStamina = PlayerRef.GetBaseActorValue("stamina") as int
		int plvl = PlayerRef.GetLevel() as int
		int healthCap = Math.Floor(SuH_PCScaphealth.GetValue()+plvl*2)
		int magickaCap = Math.Floor(SuH_PCScapmagicka.GetValue()+plvl*2)
		int staminaCap = Math.Floor(SuH_PCScapstamina.GetValue()+plvl*2)
		int desireV = SuH_PCSdesire.GetValue() as int
		int XP = SuH_PCSxp.GetValue() as int
		float XPgain = SuH_PCSxpgain.GetValue()
		int XPgainV = Math.Floor(XPgain*100)
		int stacksex = SuH_PCSstacksex.GetValue() as int
		int stacksperm = SuH_PCSstacksperm.GetValue() as int
		int stackmilk = SuH_PCSstackmilk.GetValue() as int
		int stackmaxsex = SuH_PCSstackmaxsex.GetValue() as int
		int stackmaxsperm = SuH_PCSstackmaxsperm.GetValue() as int
		int stackmaxmilk = SuH_PCSstackmaxmilk.GetValue() as int
		bool SETdrainkill = SuH_SETallowdrainkill.GetValue() as bool
		bool SETcombatseduction = SuH_SETcombatseduction.GetValue() as bool
		int SETnpc2pchealth = Math.Floor(SuH_SETnpc2pchealth.GetValue()*100)
		int SETpc2npchealth = Math.Floor(SuH_SETpc2npchealth.GetValue()*100)
		int SETnpc2npchealth = Math.Floor(SuH_SETnpc2npchealth.GetValue()*100)
		int SETallowmalehomo = SuH_SETallowmalehomo.GetValue() as int
		int SETallowfemalehomo = SuH_SETallowfemalehomo.GetValue() as int
		bool SETessentialacts = SuH_SETessentialacts.GetValue() as bool
		bool SETconsentdrain = SuH_SETconsentdrain.GetValue() as bool
		bool SETdesiredrain = SuH_SETdesiredrain.GetValue() as bool
		bool SETdeathdrops = SuH_SETdeathdrops.GetValue() as bool
		int ORcaphealth = SuH_ORcaphealth.GetValue() as int
		int ORcapmagicka = SuH_ORcapmagicka.GetValue() as int
		int ORcapstamina = SuH_ORcapstamina.GetValue() as int
		int ORabsorbhealth = SuH_ORcaphealth.GetValue() as int
		int ORabsorbmagicka = SuH_ORcapmagicka.GetValue() as int
		int ORabsorbstamina = SuH_ORcapstamina.GetValue() as int
		int effectmulti = Math.Floor(100 * SuH_PCSeffectmulti.GetValue())
		float SETdesiregain = SuH_PCSdesiregain.GetValue()
		bool SETalwaysdrainkill = SuH_SETalwaysdrainkill.GetValue() as bool
		bool SETspecialdeath = SuH_SETspecialdeath.GetValue() as bool
		bool SETsdloseitems = SuH_SETsdloseitems.GetValue() as bool
		bool SETrestrictact = SuH_SETrestrictact.GetValue() as bool
		int SETdesirecap = SuH_SETdesirecap.GetValue() as int
		;end/
		;ent/ Left Side
		SetCursorPosition(0)
		; Status
		AddHeaderOption("Status ")
		if ORcaphealth == 0
			status_health = AddTextOption("Health ", playerHealth+"/"+healthCap)
		else
			status_health = AddTextOption("Health ", playerHealth+"/overwritten")
		endIf
		if ORcapmagicka == 0
			status_magicka = AddTextOption("Magicka ", playerMagicka+"/"+magickaCap)
		else
			status_magicka = AddTextOption("Magicka ", playerMagicka+"/overwritten")
		endIf
		if ORcapstamina == 0
			status_stamina = AddTextOption("Stamina ", playerStamina+"/"+staminaCap)
		else
			status_stamina = AddTextOption("Stamina ", playerStamina+"/overwritten")
		endIf
		status_stacksex = AddTextOption("Sex Stacks", stacksex+"/"+stackmaxsex)
		status_stacksperm = AddTextOption("Sperm Stacks", stacksperm+"/"+stackmaxsperm)
		status_stackmilk = AddTextOption("Milk Stacks", stackmilk+"/"+stackmaxmilk)
		AddEmptyOption()
		; Gameplay Options
		AddHeaderOption("Gameplay Options")
		status_SETdrainkill = AddToggleOption("Allow Drain to Kill", SETdrainkill)
		status_SETconsentdrain = AddToggleOption("Allow Consensual Drain", SETconsentdrain)
		status_SETdesiredrain = AddToggleOption("Allow Desire Drain", SETdesiredrain)
		status_SETeffectmulti = AddSliderOption("Effect Multiplier",effectmulti, "{0}%")
		status_SETalwaysdrainkill = AddToggleOption("Drain Always Kills ", SETalwaysdrainkill)
		status_SETdeathdrops = AddToggleOption("Death Drops ", SETdeathdrops)
		status_SETdesiregain = AddSliderOption("Desire Generation ", SETdesiregain)
		status_SETdesirecap = AddSliderOption("Desire Drain Trigger ", SETdesirecap, "{0}")
		AddEmptyOption()
		; Animation Options
		AddHeaderOption("Animation Options")
		status_SETallowmalehomo = AddToggleOption("Allow Male Homosexuals", SETallowmalehomo)
		status_SETallowfemalehomo = AddToggleOption("Allow Female Homosexuals", SETallowfemalehomo)
		status_SETrestrictact = AddToggleOption("Restrict Act ", SETrestrictact)
		status_SETessentialacts = AddToggleOption("NPCs Essential in Acts", SETessentialacts)
		AddEmptyOption()
		; Overrides
		AddHeaderOption("Status Overrides")
		status_ORcaphealth = AddSliderOption("Health Cap",ORcaphealth,"{0}")
		status_ORcapmagicka = AddSliderOption("Magicka Cap",ORcapmagicka,"{0}")
		status_ORcapstamina = AddSliderOption("Stamina Cap",ORcapstamina,"{0}")
		status_ORabsorbhealth = AddSliderOption("Health Absorption",ORabsorbhealth,"{0}")
		status_ORabsorbmagicka = AddSliderOption("Magicka Absorption",ORabsorbhealth,"{0}")
		status_ORabsorbstamina = AddSliderOption("Stamina Absorption",ORabsorbhealth,"{0}")
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		; Status
		AddHeaderOption("Status ")
		status_desire = AddTextOption("Desire ", desireV)
		status_xp = AddTextOption("XP ", XP)
		status_xpgain = AddTextOption("XP Gain ", XPgainV+"%")
		AddEmptyOption()
		AddEmptyOption()
		AddEmptyOption()
		AddEmptyOption()
		; Mechanic Options
		AddHeaderOption("Mechanic Options ")
		status_SETcombatseduction = AddToggleOption("Combat Seduction", SETcombatseduction)
		status_SETnpc2pchealth = AddSliderOption("NPC to PC", SETnpc2pchealth, "{0}% Health")
		status_SETpc2npchealth = AddSliderOption("PC to NPC", SETpc2npchealth, "{0}% Health")
		status_SETnpc2npchealth = AddSliderOption("NPC to NPC", SETnpc2npchealth, "{0}% Health")
		AddEmptyOption()
		status_SETspecialdeath = AddToggleOption("Death Override", SETspecialdeath)
		status_SETsdloseitems = AddToggleOption("Lose Items on Death", SETsdloseitems)
		status_sdsetspawn = AddTextOption("(Debug) SETsdspawn_here", " ")
		AddEmptyOption()
		;end/
	;end/
	;ent/ Skill Levels
	elseIf (page == "Skill Levels")
		;ent/ Variables
			int alchemylvl = playerRef.GetBaseActorValue("alchemy") as int
			int alchemycost = Math.Ceiling(alchemylvl*0.1)
			int alterationlvl = playerRef.GetBaseActorValue("alteration") as int
			int alterationcost = Math.Ceiling(alterationlvl*0.1)
			int blocklvl = playerRef.GetBaseActorValue("block") as int
			int blockcost = Math.Ceiling(blocklvl*0.1)
			int conjurationlvl = playerRef.GetBaseActorValue("conjuration") as int
			int conjurationcost = Math.Ceiling(conjurationlvl*0.1)
			int destructionlvl = playerRef.GetBaseActorValue("destruction") as int
			int destructioncost = Math.Ceiling(destructionlvl*0.1)
			int enchantinglvl = playerRef.GetBaseActorValue("enchanting") as int
			int enchantingcost = Math.Ceiling(enchantinglvl*0.1)
			int heavyarmorlvl = playerRef.GetBaseActorValue("heavyarmor") as int
			int heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
			int illusionlvl = playerRef.GetBaseActorValue("illusion") as int
			int illusioncost = Math.Ceiling(illusionlvl*0.1)
			int lightarmorlvl = playerRef.GetBaseActorValue("lightarmor") as int
			int lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
			int lockpickinglvl = playerRef.GetBaseActorValue("lockpicking") as int
			int lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
			int marksmanlvl = playerRef.GetBaseActorValue("marksman") as int
			int marksmancost = Math.Ceiling(marksmanlvl*0.1)
			int onehandedlvl = playerRef.GetBaseActorValue("onehanded") as int
			int onehandedcost = Math.Ceiling(onehandedlvl*0.1)
			int pickpocketlvl = playerRef.GetBaseActorValue("pickpocket") as int
			int pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
			int restorationlvl = playerRef.GetBaseActorValue("restoration") as int
			int restorationcost = Math.Ceiling(restorationlvl*0.1)
			int smithinglvl = playerRef.GetBaseActorValue("smithing") as int
			int smithingcost = Math.Ceiling(smithinglvl*0.1)
			int sneaklvl = playerRef.GetBaseActorValue("sneak") as int
			int sneakcost = Math.Ceiling(sneaklvl*0.1)
			int speechcraftlvl = playerRef.GetBaseActorValue("speechcraft") as int
			int speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
			int twohandedlvl = playerRef.GetBaseActorValue("twohanded") as int
			int twohandedcost = Math.Ceiling(twohandedlvl*0.1)
		;end/
		;ent/ SP calculation
			int plvl = 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 xp = SuH_PCSxp.GetValue() as int
			int force = SuH_PCSforce.GetValue() as int
			int sp = SuH_PCSsp.GetValue() as int
			int spearned = SuH_PCSspearned.GetValue() as int
			float fmaster = 1 - (SuH_rank_forcemaster.GetValue() * 0.02)
			int spcost = Math.Floor((spearned*0.2*60)*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*60)*plvlmod*fmaster)
					if x >= newcost
						forceSpent += newcost
						spgained += 1
					else
						z = sp + spgained
						SuH_PCSforce.SetValue(x)
						SuH_PCSspearned.SetValue(y)
						SuH_PCSsp.SetValue(z)
						debug.MessageBox(spgained+" SP was earned")
						i = 1
					endIf
				endWhile
				xp = SuH_PCSxp.GetValue() as int
				force = SuH_PCSforce.GetValue() as int
				sp = SuH_PCSsp.GetValue() as int
				spearned = SuH_PCSspearned.GetValue() as int
				spcost = Math.Floor((spearned*0.2*60)*plvlmod*fmaster)
			endIf
			int spnext = Math.Floor(spcost-force)
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Menu Layout
		; Skill Points         XP
		; Force (To Next SP)   Convert XP to Force
		; [Level Skills]       [Level Skills]
		; Alchemy              Alteration
		; Block                Conjuration
		; Destruction          Enchanting
		; Heavy Armor          Illusion
		; Light Armor          Lockpicking
		; Marksman             One-Handed
		; Pickpocket           Restoration
		; Smithing             Sneak
		; Speechcraft          Two-Handed
		;end/
		;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", xp)
		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")
		
		;ent/ Menu Layout
		;      OUTDATED                                  
		;  [ Status ]                  [ Status ]           
		;  Player Health            N  Desire                   N
		; 
		;                                                       
		;
		;end/
		;ent/ Variables
		int caphealth = SuH_PCScaphealth.GetValue() as int
		int caphealthcost = Math.Floor((caphealth*0.1)*15+20)
		int caphealthdisplay = Math.Floor(caphealth + (PlayerRef.GetLevel()*2))
		int capmagicka = SuH_PCScapmagicka.GetValue() as int
		int capmagickacost = Math.Floor((capmagicka *0.1)*15+20)
		int capmagickadisplay = Math.Floor(capmagicka + (PlayerRef.GetLevel()*2))
		int capstamina = SuH_PCScapstamina.GetValue() as int
		int capstaminacost = Math.Floor((capstamina*0.1)*15+20)
		int capstaminadisplay = Math.Floor(capstamina + (PlayerRef.GetLevel()*2))
		int absorbhealth = SuH_PCSabsorbhealth.GetValue() as int
		int absorbhealthcost = Math.Floor(absorbhealth*2.2*280)
		int absorbmagicka = SuH_PCSabsorbmagicka.GetValue() as int
		int absorbmagickacost = Math.Floor(absorbmagicka*2.2*280)
		int absorbstamina = SuH_PCSabsorbstamina.GetValue() as int
		int absorbstaminacost = Math.Floor(absorbstamina*2.2*280)
		int stacksex = SuH_PCSstackmaxsex.GetValue() as int
		int stacksexcost = Math.Floor(stacksex*2.8*240)
		int stacksperm = SuH_PCSstackmaxsperm.GetValue() as int
		int stackspermcost = Math.Floor(stacksperm*2.8*240)
		int stackmilk = SuH_PCSstackmaxmilk.GetValue() as int
		int stackmilkcost = Math.Floor(stackmilk*2.8*240)
		int spermhealth = SuH_PCSspermhealth.GetValue() as int
		int spermhealthcost = Math.Floor(spermhealth*1.8*200)
		int spermmagicka = SuH_PCSspermmagicka.GetValue() as int
		int spermmagickacost = Math.Floor(spermmagicka*1.8*200)
		int spermstamina = SuH_PCSspermstamina.GetValue() as int
		int spermstaminacost = Math.Floor(spermstamina*1.8*200)
		int milkhealth = SuH_PCSmilkhealth.GetValue() as int
		int milkhealthcost = Math.Floor(milkhealth*1.8*200)
		int milkmagicka = SuH_PCSmilkmagicka.GetValue() as int
		int milkmagickacost = Math.Floor(milkmagicka*1.8*200)
		int milkstamina = SuH_PCSmilkstamina.GetValue() as int
		int milkstaminacost = Math.Floor(milkstamina*1.8*200)
		int xp = SuH_PCSxp.GetValue() as int
		float xpgain = SuH_PCSxpgain.GetValue()
		int xpgaindisplay = Math.Floor(xpgain*100)
		int xpgaincost = Math.Floor((((xpgain*100) - 99)*2.0*350)*0.5)
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		heart_xp = AddTextOption("XP available", xp)
		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("Max Sex Stacks", stacksex+" ["+stacksexcost+" XP]")
		heart_stacksperm = AddTextOption("Max Sperm Stacks", stacksperm+" ["+stackspermcost+" XP]")
		heart_stackmilk = AddTextOption("Max Milk Stacks", stackmilk+" ["+stackmilkcost+" XP]")
		AddEmptyOption()
		heart_xpgain = AddTextOption("XP Gain", xpgaindisplay+"% ["+xpgaincost+"XP]")
		AddEmptyOption()
		AddEmptyOption()
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddEmptyOption()
		AddHeaderOption("Heart Levels")
		heart_absorbhealth = AddTextOption("Health Absorption", absorbhealth+" ["+absorbhealthcost+" XP]")
		heart_absorbmagicka = AddTextOption("Magicka Absorption", absorbmagicka+" ["+absorbmagickacost+" XP]")
		heart_absorbstamina = AddTextOption("Stamina Absorption", absorbstamina+" ["+absorbstaminacost+" XP]")
		AddEmptyOption()
		heart_spermhealth = AddTextOption("Sperm Health Bonus", spermhealth+" ["+spermhealthcost+" XP]")
		heart_spermmagicka = AddTextOption("Sperm Magicka Bonus", spermmagicka+" ["+spermmagickacost+" XP]")
		heart_spermstamina = AddTextOption("Sperm Stamina Bonus", spermstamina+" ["+spermstaminacost+" XP]")
		AddEmptyOption()
		heart_milkhealth = AddTextOption("Milk Health Bonus", milkhealth+" ["+milkhealthcost+" XP]")
		heart_milkmagicka = AddTextOption("Milk Magicka Bonus", milkmagicka+" ["+milkmagickacost+" XP]")
		heart_milkstamina = AddTextOption("Milk Stamina Bonus", milkstamina+" ["+milkstaminacost+" XP]")
		;end/
	;end/
	;ent/ Spells / Passives
	elseIf (page == "Spells / Passives")
		SetCursorFillMode(TOP_TO_BOTTOM)
		
		;ent/ Menu Layout
		;      OUTDATED                                  
		;  [ Status ]                  [ Status ]           
		;  Player Health            N  Desire                   N    
		;                                                       
		;
		;end/
		;ent/ Variables
		int xp = SuH_PCSxp.GetValue() as int
		
		string Lfocusshotbase
		string Lfocusshotlove
		string Lfocusshothate
		if playerRef.HasSpell(SuH_spell_focusshot_base)
			Lfocusshotbase = "Learned"
			Lfocusshotlove = "5000 XP"
			Lfocusshothate = "5000 XP"
		elseif playerRef.HasSpell(SuH_spell_focusshot_drain)
			Lfocusshotbase = "500 XP"
			Lfocusshotlove = "5000 XP"
			Lfocusshothate = "Learned"
		elseif playerRef.HasSpell(SuH_spell_focusshot_love)
			Lfocusshotbase = "500 XP"
			Lfocusshotlove = "Learned"
			Lfocusshothate = "5000 XP"
		else
			Lfocusshotbase = "500 XP"
			Lfocusshotlove = "5000 XP"
			Lfocusshothate = "5000 XP"
		endIf
		
		string Lcursedbloodbase
		string Lcursedbloodlove
		string Lcursedbloodhate
		if playerRef.HasSpell(SuH_spell_cursedblood_base)
			Lcursedbloodbase = "Learned"
			Lcursedbloodlove = "8000 XP"
			Lcursedbloodhate = "8000 XP"
		elseIf playerRef.HasSpell(SuH_spell_cursedblood_love)
			Lcursedbloodbase = "800 XP"
			Lcursedbloodlove = "Learned"
			Lcursedbloodhate = "8000 XP"
		elseIf playerRef.HasSpell(SuH_spell_cursedblood_hate)
			Lcursedbloodbase = "800 XP"
			Lcursedbloodlove = "8000 XP"
			Lcursedbloodhate = "Learned"
		else
			Lcursedbloodbase = "800 XP"
			Lcursedbloodlove = "8000 XP"
			Lcursedbloodhate = "8000 XP"
		endIf
		
		string Lvitaldrainbase
		string Lvitaldrainlove
		string Lvitaldrainhate
		if playerRef.HasSpell(SuH_spell_vitaldrain_base)
			Lvitaldrainbase = "Learned"
			Lvitaldrainlove = "9500 XP"
			Lvitaldrainhate = "9500 XP"
		elseif playerRef.HasSpell(SuH_spell_vitaldrain_love)
			Lvitaldrainbase = "950 XP"
			Lvitaldrainlove = "Learned"
			Lvitaldrainhate = "9500 XP"
		elseif playerRef.HasSpell(SuH_spell_vitaldrain_hate)
			Lvitaldrainbase = "950 XP"
			Lvitaldrainlove = "9500 XP"
			Lvitaldrainhate = "Learned"
		else
			Lvitaldrainbase = "950 XP"
			Lvitaldrainlove = "9500 XP"
			Lvitaldrainhate = "9500 XP"
		endIf
		
		string Lspiritmendbase
		string Lspiritmendlove
		string Lspiritmendhate
		if PlayerRef.HasSpell(SuH_spell_spiritmend_base)
			Lspiritmendbase = "Learned"
			Lspiritmendlove = "5500 XP"
			Lspiritmendhate = "5500 XP"
		elseIf PlayerRef.HasSpell(SuH_spell_spiritmend_love)
			Lspiritmendbase = "550 XP"
			Lspiritmendlove = "Learned"
			Lspiritmendhate = "5500 XP"
		elseIf PlayerRef.HasSpell(SuH_spell_spiritmend_hate)
			Lspiritmendbase = "550 XP"
			Lspiritmendlove = "5500 XP"
			Lspiritmendhate = "Learned"
		else
			Lspiritmendbase = "550 XP"
			Lspiritmendlove = "5500 XP"
			Lspiritmendhate = "5500 XP"
		endIf
		
		string Lsoulbendbase
		string Lsoulbendlove
		string Lsoulbendhate
		if PlayerRef.HasSpell(SuH_spell_soulbend_base)
			Lsoulbendbase = "Learned"
			Lsoulbendlove = "7000 XP"
			Lsoulbendhate = "7000 XP"
		elseIf PlayerRef.HasSpell(SuH_spell_soulbend_love)
			Lsoulbendbase = "700 XP"
			Lsoulbendlove = "Learned"
			Lsoulbendhate = "7000 XP"
		elseIf PlayerRef.HasSpell(SuH_spell_soulbend_hate)
			Lsoulbendbase = "700 XP"
			Lsoulbendlove = "7000 XP"
			Lsoulbendhate = "Learned"
		else
			Lsoulbendbase = "700 XP"
			Lsoulbendlove = "7000 XP"
			Lsoulbendhate = "7000 XP"
		endIf
		
		string Lintimatetouchbase
		string Lintimatetouchlove
		string Lintimatetouchhate
		if PlayerRef.HasSpell(SuH_spell_intimatetouch_base)
			Lintimatetouchbase = "Learned"
			Lintimatetouchlove = "6000 XP"
			Lintimatetouchhate = "6000 XP"
		elseif PlayerRef.HasSpell(SuH_spell_intimatetouch_love)
			Lintimatetouchbase = "600 XP"
			Lintimatetouchlove = "Learned"
			Lintimatetouchhate = "6000 XP"
		elseif PlayerRef.HasSpell(SuH_spell_intimatetouch_hate)
			Lintimatetouchbase = "600 XP"
			Lintimatetouchlove = "6000 XP"
			Lintimatetouchhate = "Learned"
		else
			Lintimatetouchbase = "600 XP"
			Lintimatetouchlove = "6000 XP"
			Lintimatetouchhate = "6000 XP"
		endIf
		
		int perfectorgasmrank = SuH_rank_perfectorgasm.GetValue() as int
		int perfectorgasmcost = Math.Floor((1000*perfectorgasmrank)*1.8+3500)
		int lusciousliquidsrank = SuH_rank_lusciousliquids.GetValue() as int
		int lusciousliquidscost = Math.Floor((1000*lusciousliquidsrank)*1.4+2000)
		int masochistrank = SuH_rank_masochist.GetValue() as int
		int masochistcost = Math.Floor((1000*masochistrank)*1.35+1000)
		int selfstackerrank = SuH_rank_selfstacker.GetValue() as int
		int selfstackercost = Math.Floor((1000*selfstackerrank)*1.95+3000)
		int valuestackerrank = SuH_rank_valuestacker.GetValue() as int
		int valuestackercost = Math.Floor((1000*valuestackerrank)*1.95+6200)
		int savingessencerank = SuH_rank_savingessence.GetValue() as int
		int savingessencecost = Math.Floor((1000*savingessencerank)*1.2+4000)
		int giftedconsentrank = SuH_rank_giftedconsent.GetValue() as int
		int giftedconsentcost = Math.Floor((1000*giftedconsentrank)*1.6+1400)
		int forcemasterrank = SuH_rank_forcemaster.GetValue() as int
		int forcemastercost = Math.Floor((1000*forcemasterrank)*1.7+2000)
		;end/
		;ent/ Left Side
		SetCursorPosition(0)
			spell_xp = AddTextOption("XP available", xp)
			AddEmptyOption()
			; Combat Passives
			AddHeaderOption("Combat Passives")
			; Masochist
			spell_masochist = AddTextOption("Masochist", "rank "+masochistrank)
			spell_masochistrank = AddTextOption(" - - Rank Up", masochistcost+" XP")
			spell_masochistdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Saving Essence
			spell_savingessence = AddTextOption("Saving Essence", "rank "+savingessencerank)
			spell_savingessencerank = AddTextOption(" - - Rank Up", savingessencecost+" XP")
			spell_savingessencedown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Progression Assists
			AddHeaderOption("Progression Assists")
			; Force Master
			spell_forcemaster = AddTextOption("Force Master", "rank "+forcemasterrank)
			spell_forcemasterrank = AddTextOption(" - - Rank Up", forcemastercost+" XP")
			spell_forcemasterdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Perfect Orgasm
			spell_perfectorgasm = AddTextOption("Perfect Orgasm", "rank "+perfectorgasmrank)
			spell_perfectorgasmrank = AddTextOption(" - - Rank Up", perfectorgasmcost+" XP")
			spell_perfectorgasmdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			AddEmptyOption()
			AddEmptyOption()
			AddEmptyOption()
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
			AddEmptyOption()
			AddEmptyOption()
			; Supportive Passives
			AddHeaderOption("Supportive Passives")
			; Luscious Liquids
			spell_lusciousliquids = AddTextOption("Luscious Liquids", "rank "+lusciousliquidsrank)
			spell_lusciousliquidsrank = AddTextOption(" - - Rank Up", lusciousliquidscost+" XP")
			spell_lusciousliquidsdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Value Stacker
			spell_valuestacker = AddTextOption("Value Stacker", "rank "+valuestackerrank)
			spell_valuestackerrank = AddTextOption(" - - Rank Up", valuestackercost+" XP")
			spell_valuestackerdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Self Stacker
			spell_selfstacker = AddTextOption("Self Stacker", "rank "+selfstackerrank)
			spell_selfstackerrank = AddTextOption(" - - Rank Up", selfstackercost+" XP")
			spell_selfstackerdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			; Gifted Consent
			spell_giftedconsent = AddTextOption("Gifted Consent", "rank "+giftedconsentrank)
			spell_giftedconsentrank = AddTextOption(" - - Rank Up", giftedconsentcost+" XP")
			spell_giftedconsentdown = AddTextOption(" - - Rank Down", " ")
			AddEmptyOption()
			AddEmptyOption()
			AddEmptyOption()
			AddEmptyOption()
			AddEmptyOption()
			
			
			; LEGACY
			AddHeaderOption("Spells (Legacy)")
			spell_focusshotbase = AddTextOption("Focus Shot [Base]", Lfocusshotbase)
			spell_focusshotlove = AddTextOption("Focus Shot [Love]", Lfocusshotlove)
			spell_focusshothate = AddTextOption("Focus Shot [Hate]", Lfocusshothate)
			AddEmptyOption()
			spell_spiritmendbase = AddTextOption("Spirit Mend [Base]", Lspiritmendbase)
			spell_spiritmendlove = AddTextOption("Spirit Mend [Love]", Lspiritmendlove)
			spell_spiritmendhate = AddTextOption("Spirit Mend [Hate]", Lspiritmendhate)
			AddEmptyOption()
			spell_intimatetouchbase = AddTextOption("Intimate Touch [Base]", Lintimatetouchbase)
			spell_intimatetouchlove = AddTextOption("Intimate Touch [Love]", Lintimatetouchlove)
			spell_intimatetouchhate = AddTextOption("Intimate Touch [Hate]", Lintimatetouchhate)
			AddEmptyOption()
			spell_soulbendbase = AddTextOption("Soul Bend [Base]", Lsoulbendbase)
			spell_soulbendlove = AddTextOption("Soul Bend [Love]", Lsoulbendlove)
			spell_soulbendhate = AddTextOption("Soul Bend [Hate]", Lsoulbendhate)
			AddEmptyOption()
			spell_cursedbloodbase = AddTextOption("Cursed Blood [Base]", Lcursedbloodbase)
			spell_cursedbloodlove = AddTextOption("Cursed Blood [Love]", Lcursedbloodlove)
			spell_cursedbloodhate = AddTextOption("Cursed Blood [Hate]", Lcursedbloodhate)
			AddEmptyOption()
			spell_vitaldrainbase = AddTextOption("Vital Drain [Base]", Lvitaldrainbase)
			spell_vitaldrainlove = AddTextOption("Vital Drain [Love]", Lvitaldrainlove)
			spell_vitaldrainhate = AddTextOption("Vital Drain [Hate]", Lvitaldrainhate)
		;end/
	;end/
	;ent/ Pets
	elseIf (page == "Soul Pets")
		;ent/ Variables
			int summonlevel = SuH_PETsummonlevel.GetValue() as int
			int summonxp = SuH_PETsummonxp.GetValue() as int
			int summontill = Math.Floor((summonlevel*1.8) * 50 + 20)
			int summonnext = summontill - summonxp
			int leaderdesire = 0 ;NEEDS FILLED
			int doglevel = SuH_PETdoglevel.GetValue() as int
			int dogdesire = SuH_PETdogdesire.GetValue() as int
			int wolflevel = SuH_PETwolflevel.GetValue() as int
			int wolfdesire = SuH_PETwolfdesire.GetValue() as int
			int horselevel = SuH_PEThorselevel.GetValue() as int
			int horsedesire = SuH_PEThorsedesire.GetValue() as int
			string lpetleader = " "
			string ldog
			string lwolf
			string lhorse
			if SuH_PETactivedog.GetValue()
				ldog = "Active"
			else
				ldog = "Idle"
			endIf
			if SuH_PETactivewolf.GetValue()
				lwolf = "Active"
			elseif doglevel >= 4
				lwolf = "Idle"
			else
				lwolf = "Locked"
			endIf
			if SuH_PETactivehorse.GetValue()
				lhorse = "Active"
			elseif summonlevel >= 2
				lhorse = "Idle"
			else
				lhorse = "Locked"
			endIf
		;end/
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		AddHeaderOption("Pet Status")
		pet_summonlevel = AddTextOption("Summoner Level", summonlevel)
		pet_summonxp = AddTextOption("XP to next...", summonnext)
		AddEmptyOption()
		AddHeaderOption("Pet Selection")
		pet_dog = AddTextOption("Dog [Incubus]", ldog)
		pet_doglevel = AddTextOption(" - - Level "+doglevel, " ")
		pet_dogdesire = AddTextOption(" - - Desire "+dogdesire, " ")
		AddEmptyOption()
		pet_wolf = AddTextOption("Wolf [Incubus]", lwolf)
		pet_wolflevel = AddTextOption(" - - Level "+wolflevel, " ")
		pet_wolfdesire = AddTextOption(" - - Desire "+wolfdesire, " ")
		AddEmptyOption()
		pet_horse = AddTextOption("Horse [Incubus]", lhorse)
		pet_horselevel = AddTextOption(" - - Level "+horselevel, " ")
		pet_horsedesire = AddTextOption(" - - Desire "+horsedesire, " ")
		AddEmptyOption()
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddHeaderOption("Pet Status")
		pet_currentleader = AddTextOption("Selected Leader", Lpetleader)
		pet_leaderdesire = AddTextOption("Leader Desire", leaderdesire)
		AddEmptyOption()
		AddEmptyOption()
		
		AddEmptyOption()
		;end/
	;end/
	;ent/ Help
	elseIf (page == "Help")
		SetCursorFillMode(TOP_TO_BOTTOM)
		;ent/ Left Side
		SetCursorPosition(0)
		AddHeaderOption("Basic Mechanics")
		help1 = AddTextOption("Earning XP", " ")
		help2 = AddTextOption("Spending XP", " ")
		help4 = AddTextOption("Earning SP", " ")
		help5 = AddTextOption("Absorption", " ")
		help10 = AddTextOption("Status Caps", " ")
		help8 = AddTextOption("Sex Drops", " ")
		help9 = AddTextOption("Death Drops", " ")
		help12 = AddTextOption("Combat Seduction", " ")
		help19 = AddTextOption("Death Override", " ")
		help20 = AddTextOption("Succubus Pets", " ")
		AddEmptyOption()
		AddHeaderOption("Vocabulary")
		help15 = AddTextOption("Act ", " ")
		help16 = AddTextOption("Status ", " ")
		help17 = AddTextOption("XP ", " ")
		help18 = AddTextOption("Tick ", " ")
		AddEmptyOption()
		AddHeaderOption("Item Reference (Mod Items)")
		r31 = AddTextOption("Dog [Incubus]", "Soul Pet")
		r32 = AddTextOption("Wolf [Incubus]", "Soul Pet")
		r33 = AddTextOption("Horse [Incubus]", "Soul Pet")
		;end/
		;ent/ Right Side
		SetCursorPosition(1)
		AddHeaderOption("Advanced Mechanics")
		help3 = AddTextOption("Desire ", " ")
		help14 = AddTextOption("Desire Drain", " ")
		help6 = AddTextOption("Spells ", " ")
		help7 = AddTextOption("Passives ", " ")
		help11 = AddTextOption("Stacks ", " ")
		help13 = AddTextOption("Managing Drain", " ")
		AddEmptyOption()
		AddHeaderOption("Item Reference (Mod Items)")
		r1 = AddTextOption("Sexual Enrage ", "[Desire] Spell")
		r2 = AddTextOption("Sexual Entice ", "[Desire] Spell")
		r3 = AddTextOption("Self Pleasure ", "[Auto-Learned] Spell")
		r4 = AddTextOption("Night's Embrace ", "[Auto-Learned] Spell")
		r30 = AddTextOption("Train Pet ", "[Pet] Spell")
		r11 = AddTextOption("Perfect Orgasm ", "[Heart] Passive")
		r12 = AddTextOption("Luscious Liquids ", "[Heart] Passive")
		r13 = AddTextOption("Masochist ", "[Heart] Passive")
		r14 = AddTextOption("Self Stacker ", "[Heart] Passive")
		r15 = AddTextOption("Value Stacker ", "[Heart] Passive")
		r16 = AddTextOption("Saving Essence ", "[Heart] Passive")
		r17 = AddTextOption("Gifted Consent ", "[Heart] Passive")
		r29 = AddTextOption("Force Master ", "[Heart] Passive")
		r18 = AddTextOption("Sperm ", "[Sex Drop] Item")
		r19= AddTextOption("Breast Milk ", "[Sex Drop] Item")
		r20= AddTextOption("Vitality Stone ", "[Sex Drop] Item")
		r21 = AddTextOption("Empower Stone ", "[Sex Drop] Item")
		r22 = AddTextOption("Specialty Stone ", "[Sex Drop] Item")
		r23 = AddTextOption("Soul of Force ", "[Death Drop] Item")
		r24 = AddTextOption("Soul of Experience ", "[Death Drop] Item")
		r25 = AddTextOption("Soul of Life ", "[Death Drop] Item")
		r26 = AddTextOption("Soul of Magic ", "[Death Drop] Item")
		r27 = AddTextOption("Soul of Power ", "[Death Drop] Item")
		r28 = AddTextOption("Soul of Desire ", "[Death Drop] Item")
		AddHeaderOption("Legacy Reference")
		r5 = AddTextOption("Focus Shot [3] ", "[Heart] Spell")
		r6 = AddTextOption("Soul Bend [3] ", "[Heart] Spell")
		r7 = AddTextOption("Intimate Touch [3] ", "[Heart] Spell")
		r8 = AddTextOption("Vital Drain [3] ", "[Heart] Spell")
		r9 = AddTextOption("Cursed Blood [3] ", "[Heart] Spell")
		r10 = AddTextOption("Spirit Mend [3] ", "[Heart] Spell")
		;end/
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSelect
Event OnOptionSelect(int option)
	;ent/ Status / Settings
	if(CurrentPage == "Status / Settings")
		if(option == status_SETdrainkill)
			if SuH_SETallowdrainkill.GetValue()
				SuH_SETallowdrainkill.SetValue(0)
				SetToggleOptionValue(status_SETdrainkill, FALSE)
			else
				SuH_SETallowdrainkill.SetValue(1)
				SetToggleOptionValue(status_SETdrainkill, TRUE)
			endIf
		elseif(option == status_SETcombatseduction)
			if SuH_SETcombatseduction.GetValue()
				SuH_SETcombatseduction.SetValue(0)
				SetToggleOptionValue(status_SETcombatseduction, FALSE)
			else
				SuH_SETcombatseduction.SetValue(1)
				SetToggleOptionValue(status_SETcombatseduction, TRUE)
			endIf
		elseif(option == status_SETallowmalehomo)
			if SuH_SETallowmalehomo.GetValue()
				SuH_SETallowmalehomo.SetValue(0)
				SetToggleOptionValue(status_SETallowmalehomo, FALSE)
			else
				SuH_SETallowmalehomo.SetValue(1)
				SetToggleOptionValue(status_SETallowmalehomo, TRUE)
			endIf
		elseif(option == status_SETallowfemalehomo)
			if SuH_SETallowfemalehomo.GetValue()
				SuH_SETallowfemalehomo.SetValue(0)
				SetToggleOptionValue(status_SETallowfemalehomo, FALSE)
			else
				SuH_SETallowfemalehomo.SetValue(1)
				SetToggleOptionValue(status_SETallowfemalehomo, TRUE)
			endIf
		elseif(option == status_SETessentialacts)
			if SuH_SETessentialacts.GetValue()
				SuH_SETessentialacts.SetValue(0)
				SetToggleOptionValue(status_SETessentialacts, FALSE)
			else
				SuH_SETessentialacts.SetValue(1)
				SetToggleOptionValue(status_SETessentialacts, TRUE)
			endIf
		elseif(option == status_SETconsentdrain)
			if SuH_SETconsentdrain.GetValue()
				SuH_SETconsentdrain.SetValue(0)
				SetToggleOptionValue(status_SETconsentdrain, FALSE)
			else
				SuH_SETconsentdrain.SetValue(1)
				SetToggleOptionValue(status_SETconsentdrain, TRUE)
			endIf
		elseif(option == status_SETdesiredrain)
			if SuH_SETdesiredrain.GetValue()
				SuH_SETdesiredrain.SetValue(0)
				SetToggleOptionValue(status_SETdesiredrain, FALSE)
			else
				SuH_SETdesiredrain.SetValue(1)
				SetToggleOptionValue(status_SETdesiredrain, TRUE)
			endIf
		elseif(option == status_SETdeathdrops)
			if SuH_SETdeathdrops.GetValue()
				SuH_SETdeathdrops.SetValue(0)
				SetToggleOptionValue(status_SETdeathdrops, FALSE)
			else
				SuH_SETdeathdrops.SetValue(1)
				SetToggleOptionValue(status_SETdeathdrops, TRUE)
			endIf
		elseif(option == status_SETalwaysdrainkill)
			if SuH_SETalwaysdrainkill.GetValue()
				SuH_SETalwaysdrainkill.SetValue(0)
				SetToggleOptionValue(status_SETalwaysdrainkill, FALSE)
			else
				SuH_SETalwaysdrainkill.SetValue(1)
				SetToggleOptionValue(status_SETalwaysdrainkill, TRUE)
			endIf
		elseif(option == status_SETspecialdeath)
			if SuH_SETspecialdeath.GetValue()
				PlayerBase.SetEssential(False)
				;PlayerRef.SetNoBleedoutRecovery(True)
				SuH_SETspecialdeath.SetValue(0)
				SetToggleOptionValue(status_SETspecialdeath, FALSE)
			else
				PlayerBase.SetEssential(True)
				SuH_SETspecialdeath.SetValue(1)
				SetToggleOptionValue(status_SETspecialdeath, TRUE)
			endIf
		elseif(option == status_SETsdloseitems)
			if SuH_SETsdloseitems.GetValue()
				SuH_SETsdloseitems.SetValue(0)
				SetToggleOptionValue(status_SETsdloseitems, FALSE)
			else
				SuH_SETsdloseitems.SetValue(1)
				SetToggleOptionValue(status_SETsdloseitems, TRUE)
			endIf
		elseif(option == status_sdsetspawn)
			if SuH_SETspecialdeath.GetValue()
				SuH_sdr_spawnpoint.MoveTo(playerRef)
			else
				debug.MessageBox("sd_disabled")
			endIf
		elseif(option == status_SETrestrictact)
			if SuH_SETrestrictact.GetValue()
				SuH_SETrestrictact.SetValue(0)
				SetToggleOptionValue(status_SETrestrictact, FALSE)
			else
				SuH_SETrestrictact.SetValue(1)
				SetToggleOptionValue(status_SETrestrictact, TRUE)
			endIf
		endIf
	;end/
	;ent/ Skill Levels
	elseIf(CurrentPage == "Skill Levels")
		if(option == skill_alchemy)
			int sp = SuH_PCSsp.GetValue() as int
			int alchemylvl = playerRef.GetBaseActorValue("alchemy") as int
			int alchemycost = Math.Ceiling(alchemylvl*0.1)
			if sp >= alchemycost
				sp -= alchemycost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("Alchemy")
				alchemylvl = playerRef.GetBaseActorValue("alchemy") as int
				alchemycost = Math.Ceiling(alchemylvl*0.1)
				SetTextOptionValue(skill_alchemy, alchemylvl+" ["+alchemycost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_alteration)
			int sp = SuH_PCSsp.GetValue() as int
			int alterationlvl = playerRef.GetBaseActorValue("alteration") as int
			int alterationcost = Math.Ceiling(alterationlvl*0.1)
			if sp >= alterationcost
				sp -= alterationcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("alteration")
				alterationlvl = playerRef.GetBaseActorValue("alteration") as int
				alterationcost = Math.Ceiling(alterationlvl*0.1)
				SetTextOptionValue(skill_alteration, alterationlvl+" ["+alterationcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_block)
			int sp = SuH_PCSsp.GetValue() as int
			int blocklvl = playerRef.GetBaseActorValue("block") as int
			int blockcost = Math.Ceiling(blocklvl*0.1)
			if sp >= blockcost
				sp -= blockcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("block")
				blocklvl = playerRef.GetBaseActorValue("block") as int
				blockcost = Math.Ceiling(blocklvl*0.1)
				SetTextOptionValue(skill_block, blocklvl+" ["+blockcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_conjuration)
			int sp = SuH_PCSsp.GetValue() as int
			int conjurationlvl = playerRef.GetBaseActorValue("conjuration") as int
			int conjurationcost = Math.Ceiling(conjurationlvl*0.1)
			if sp >= conjurationcost
				sp -= conjurationcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("conjuration")
				conjurationlvl = playerRef.GetBaseActorValue("conjuration") as int
				conjurationcost = Math.Ceiling(conjurationlvl*0.1)
				SetTextOptionValue(skill_conjuration, conjurationlvl+" ["+conjurationcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_destruction)
			int sp = SuH_PCSsp.GetValue() as int
			int destructionlvl = playerRef.GetBaseActorValue("destruction") as int
			int destructioncost = Math.Ceiling(destructionlvl*0.1)
			if sp >= destructioncost
				sp -= destructioncost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("destruction")
				destructionlvl = playerRef.GetBaseActorValue("destruction") as int
				destructioncost = Math.Ceiling(destructionlvl*0.1)
				SetTextOptionValue(skill_destruction, destructionlvl+" ["+destructioncost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_enchanting)
			int sp = SuH_PCSsp.GetValue() as int
			int enchantinglvl = playerRef.GetBaseActorValue("enchanting") as int
			int enchantingcost = Math.Ceiling(enchantinglvl*0.1)
			if sp >= enchantingcost
				sp -= enchantingcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("enchanting")
				enchantinglvl = playerRef.GetBaseActorValue("enchanting") as int
				enchantingcost = Math.Ceiling(enchantinglvl*0.1)
				SetTextOptionValue(skill_enchanting, enchantinglvl+" ["+enchantingcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_heavyarmor)
			int sp = SuH_PCSsp.GetValue() as int
			int heavyarmorlvl = playerRef.GetBaseActorValue("heavyarmor") as int
			int heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
			if sp >= heavyarmorcost
				sp -= heavyarmorcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("heavyarmor")
				heavyarmorlvl = playerRef.GetBaseActorValue("heavyarmor") as int
				heavyarmorcost = Math.Ceiling(heavyarmorlvl*0.1)
				SetTextOptionValue(skill_heavyarmor, heavyarmorlvl+" ["+heavyarmorcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_illusion)
			int sp = SuH_PCSsp.GetValue() as int
			int illusionlvl = playerRef.GetBaseActorValue("illusion") as int
			int illusioncost = Math.Ceiling(illusionlvl*0.1)
			if sp >= illusioncost
				sp -= illusioncost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("illusion")
				illusionlvl = playerRef.GetBaseActorValue("illusion") as int
				illusioncost = Math.Ceiling(illusionlvl*0.1)
				SetTextOptionValue(skill_illusion, illusionlvl+" ["+illusioncost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_lightarmor)
			int sp = SuH_PCSsp.GetValue() as int
			int lightarmorlvl = playerRef.GetBaseActorValue("lightarmor") as int
			int lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
			if sp >= lightarmorcost
				sp -= lightarmorcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("lightarmor")
				lightarmorlvl = playerRef.GetBaseActorValue("lightarmor") as int
				lightarmorcost = Math.Ceiling(lightarmorlvl*0.1)
				SetTextOptionValue(skill_lightarmor, lightarmorlvl+" ["+lightarmorcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_lockpicking)
			int sp = SuH_PCSsp.GetValue() as int
			int lockpickinglvl = playerRef.GetBaseActorValue("lockpicking") as int
			int lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
			if sp >= lockpickingcost
				sp -= lockpickingcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("lockpicking")
				lockpickinglvl = playerRef.GetBaseActorValue("lockpicking") as int
				lockpickingcost = Math.Ceiling(lockpickinglvl*0.1)
				SetTextOptionValue(skill_lockpicking, lockpickinglvl+" ["+lockpickingcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_marksman)
			int sp = SuH_PCSsp.GetValue() as int
			int marksmanlvl = playerRef.GetBaseActorValue("marksman") as int
			int marksmancost = Math.Ceiling(marksmanlvl*0.1)
			if sp >= marksmancost
				sp -= marksmancost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("marksman")
				marksmanlvl = playerRef.GetBaseActorValue("marksman") as int
				marksmancost = Math.Ceiling(marksmanlvl*0.1)
				SetTextOptionValue(skill_marksman, marksmanlvl+" ["+marksmancost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_onehanded)
			int sp = SuH_PCSsp.GetValue() as int
			int onehandedlvl = playerRef.GetBaseActorValue("onehanded") as int
			int onehandedcost = Math.Ceiling(onehandedlvl*0.1)
			if sp >= onehandedcost
				sp -= onehandedcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("onehanded")
				onehandedlvl = playerRef.GetBaseActorValue("onehanded") as int
				onehandedcost = Math.Ceiling(onehandedlvl*0.1)
				SetTextOptionValue(skill_onehanded, onehandedlvl+" ["+onehandedcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_pickpocket)
			int sp = SuH_PCSsp.GetValue() as int
			int pickpocketlvl = playerRef.GetBaseActorValue("pickpocket") as int
			int pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
			if sp >= pickpocketcost
				sp -= pickpocketcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("pickpocket")
				pickpocketlvl = playerRef.GetBaseActorValue("pickpocket") as int
				pickpocketcost = Math.Ceiling(pickpocketlvl*0.1)
				SetTextOptionValue(skill_pickpocket, pickpocketlvl+" ["+pickpocketcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_restoration)
			int sp = SuH_PCSsp.GetValue() as int
			int restorationlvl = playerRef.GetBaseActorValue("restoration") as int
			int restorationcost = Math.Ceiling(restorationlvl*0.1)
			if sp >= restorationcost
				sp -= restorationcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("restoration")
				restorationlvl = playerRef.GetBaseActorValue("restoration") as int
				restorationcost = Math.Ceiling(restorationlvl*0.1)
				SetTextOptionValue(skill_restoration, restorationlvl+" ["+restorationcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_smithing)
			int sp = SuH_PCSsp.GetValue() as int
			int smithinglvl = playerRef.GetBaseActorValue("smithing") as int
			int smithingcost = Math.Ceiling(smithinglvl*0.1)
			if sp >= smithingcost
				sp -= smithingcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("smithing")
				smithinglvl = playerRef.GetBaseActorValue("smithing") as int
				smithingcost = Math.Ceiling(smithinglvl*0.1)
				SetTextOptionValue(skill_smithing, smithinglvl+" ["+smithingcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_sneak)
			int sp = SuH_PCSsp.GetValue() as int
			int sneaklvl = playerRef.GetBaseActorValue("sneak") as int
			int sneakcost = Math.Ceiling(sneaklvl*0.1)
			if sp >= sneakcost
				sp -= sneakcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("sneak")
				sneaklvl = playerRef.GetBaseActorValue("sneak") as int
				sneakcost = Math.Ceiling(sneaklvl*0.1)
				SetTextOptionValue(skill_sneak, sneaklvl+" ["+sneakcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_speechcraft)
			int sp = SuH_PCSsp.GetValue() as int
			int speechcraftlvl = playerRef.GetBaseActorValue("speechcraft") as int
			int speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
			if sp >= speechcraftcost
				sp -= speechcraftcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("speechcraft")
				speechcraftlvl = playerRef.GetBaseActorValue("speechcraft") as int
				speechcraftcost = Math.Ceiling(speechcraftlvl*0.1)
				SetTextOptionValue(skill_speechcraft, speechcraftlvl+" ["+speechcraftcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		elseif(option == skill_twohanded)
			int sp = SuH_PCSsp.GetValue() as int
			int twohandedlvl = playerRef.GetBaseActorValue("twohanded") as int
			int twohandedcost = Math.Ceiling(twohandedlvl*0.1)
			if sp >= twohandedcost
				sp -= twohandedcost
				SuH_PCSsp.SetValue(sp)
				Game.IncrementSkill("twohanded")
				twohandedlvl = playerRef.GetBaseActorValue("twohanded") as int
				twohandedcost = Math.Ceiling(twohandedlvl*0.1)
				SetTextOptionValue(skill_twohanded, twohandedlvl+" ["+twohandedcost+" SP]")
				SetTextOptionValue(skill_sp, SuH_PCSsp.GetValue() as int)
			endIf
		endIf
	;end/
	;ent/ Heart Levels
	elseIf(CurrentPage == "Heart Levels")
		if(option == heart_caphealth)
			int xp = SuH_PCSxp.GetValue() as int
			int caphealth = SuH_PCScaphealth.GetValue() as int
			int caphealthcost = Math.Floor((caphealth*0.1)*15+20)
			if xp >= caphealthcost
				xp -= caphealthcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCScaphealth.SetValue(caphealth+1)
				caphealth = SuH_PCScaphealth.GetValue() as int
				caphealthcost = Math.Floor((caphealth*0.1)*15+20)
				int plvl = PlayerRef.GetLevel() as int
				int caphealthdisplay = Math.Floor(SuH_PCScaphealth.GetValue()+plvl*2)
				SetTextOptionValue(heart_caphealth, caphealthdisplay+" ["+caphealthcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_capmagicka)
			int xp = SuH_PCSxp.GetValue() as int
			int capmagicka = SuH_PCScapmagicka.GetValue() as int
			int capmagickacost = Math.Floor((capmagicka*0.1)*15+20)
			if xp >= capmagickacost
				xp -= capmagickacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCScapmagicka.SetValue(capmagicka+1)
				capmagicka = SuH_PCScapmagicka.GetValue() as int
				capmagickacost = Math.Floor((capmagicka*0.1)*15+20)
				int plvl = PlayerRef.GetLevel() as int
				int capmagickadisplay = Math.Floor(SuH_PCScapmagicka.GetValue()+plvl*2)
				SetTextOptionValue(heart_capmagicka, capmagickadisplay+" ["+capmagickacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_capstamina)
			int xp = SuH_PCSxp.GetValue() as int
			int capstamina = SuH_PCScapstamina.GetValue() as int
			int capstaminacost = Math.Floor((capstamina*0.1)*15+20)
			if xp >= capstaminacost
				xp -= capstaminacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCScapstamina.SetValue(capstamina+1)
				capstamina = SuH_PCScapstamina.GetValue() as int
				capstaminacost = Math.Floor((capstamina*0.1)*15+20)
				int plvl = PlayerRef.GetLevel() as int
				int capstaminadisplay = Math.Floor(SuH_PCScapstamina.GetValue()+plvl*2)
				SetTextOptionValue(heart_capstamina, capstaminadisplay+" ["+capstaminacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_stacksex)
			int xp = SuH_PCSxp.GetValue() as int
			int stacksex = SuH_PCSstackmaxsex.GetValue() as int
			int stacksexcost = Math.Floor(stacksex*2.8*240)
			if xp >= stacksexcost
				xp -= stacksexcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSstackmaxsex.SetValue(stacksex+1)
				stacksex = SuH_PCSstackmaxsex.GetValue() as int
				stacksexcost = Math.Floor(stacksex*2.8*240)
				SetTextOptionValue(heart_stacksex, stacksex+" ["+stacksexcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_stacksperm)
			int xp = SuH_PCSxp.GetValue() as int
			int stacksperm = SuH_PCSstackmaxsperm.GetValue() as int
			int stackspermcost = Math.Floor(stacksperm*2.8*240)
			if xp >= stackspermcost
				xp -= stackspermcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSstackmaxsperm.SetValue(stacksperm+1)
				stacksperm = SuH_PCSstackmaxsperm.GetValue() as int
				stackspermcost = Math.Floor(stacksperm*2.8*240)
				SetTextOptionValue(heart_stacksperm, stacksperm+" ["+stackspermcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_stackmilk)
			int xp = SuH_PCSxp.GetValue() as int
			int stackmilk = SuH_PCSstackmaxmilk.GetValue() as int
			int stackmilkcost = Math.Floor(stackmilk*2.8*240)
			if xp >= stackmilkcost
				xp -= stackmilkcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSstackmaxmilk.SetValue(stackmilk+1)
				stackmilk = SuH_PCSstackmaxmilk.GetValue() as int
				stackmilkcost = Math.Floor(stackmilk*2.8*240)
				SetTextOptionValue(heart_stackmilk, stackmilk+" ["+stackmilkcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_absorbhealth)
			int xp = SuH_PCSxp.GetValue() as int
			int absorbhealth = SuH_PCSabsorbhealth.GetValue() as int
			int absorbhealthcost = Math.Floor(absorbhealth*2.2*280)
			if xp >= absorbhealthcost
				xp -= absorbhealthcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSabsorbhealth.SetValue(absorbhealth+1)
				absorbhealth = SuH_PCSabsorbhealth.GetValue() as int
				absorbhealthcost = Math.Floor(absorbhealth*2.2*280)
				SetTextOptionValue(heart_absorbhealth, absorbhealth+" ["+absorbhealthcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_absorbmagicka)
			int xp = SuH_PCSxp.GetValue() as int
			int absorbmagicka = SuH_PCSabsorbmagicka.GetValue() as int
			int absorbmagickacost = Math.Floor(absorbmagicka*2.2*280)
			if xp >= absorbmagickacost
				xp -= absorbmagickacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSabsorbmagicka.SetValue(absorbmagicka+1)
				absorbmagicka = SuH_PCSabsorbmagicka.GetValue() as int
				absorbmagickacost = Math.Floor(absorbmagicka*2.2*280)
				SetTextOptionValue(heart_absorbmagicka, absorbmagicka+" ["+absorbmagickacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_absorbstamina)
			int xp = SuH_PCSxp.GetValue() as int
			int absorbstamina = SuH_PCSabsorbstamina.GetValue() as int
			int absorbstaminacost = Math.Floor(absorbstamina*2.2*280)
			if xp >= absorbstaminacost
				xp -= absorbstaminacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSabsorbstamina.SetValue(absorbstamina+1)
				absorbstamina = SuH_PCSabsorbstamina.GetValue() as int
				absorbstaminacost = Math.Floor(absorbstamina*2.2*280)
				SetTextOptionValue(heart_absorbstamina, absorbstamina+" ["+absorbstaminacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_spermhealth)
			int xp = SuH_PCSxp.GetValue() as int
			int spermhealth = SuH_PCSspermhealth.GetValue() as int
			int spermhealthcost = Math.Floor(spermhealth*1.8*200)
			if xp >= spermhealthcost
				xp -= spermhealthcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSspermhealth.SetValue(spermhealth+1)
				spermhealth = SuH_PCSspermhealth.GetValue() as int
				spermhealthcost = Math.Floor(spermhealth*1.8*200)
				SetTextOptionValue(heart_spermhealth, spermhealth+" ["+spermhealthcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_spermmagicka)
			int xp = SuH_PCSxp.GetValue() as int
			int spermmagicka = SuH_PCSspermmagicka.GetValue() as int
			int spermmagickacost = Math.Floor(spermmagicka*1.8*200)
			if xp >= spermmagickacost
				xp -= spermmagickacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSspermmagicka.SetValue(spermmagicka+1)
				spermmagicka = SuH_PCSspermmagicka.GetValue() as int
				spermmagickacost = Math.Floor(spermmagicka*1.8*200)
				SetTextOptionValue(heart_spermmagicka, spermmagicka+" ["+spermmagickacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_spermstamina)
			int xp = SuH_PCSxp.GetValue() as int
			int spermstamina = SuH_PCSspermstamina.GetValue() as int
			int spermstaminacost = Math.Floor(spermstamina*1.8*200)
			if xp >= spermstaminacost
				xp -= spermstaminacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSspermstamina.SetValue(spermstamina+1)
				spermstamina = SuH_PCSspermstamina.GetValue() as int
				spermstaminacost = Math.Floor(spermstamina*1.8*200)
				SetTextOptionValue(heart_spermstamina, spermstamina+" ["+spermstaminacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_milkhealth)
			int xp = SuH_PCSxp.GetValue() as int
			int milkhealth = SuH_PCSmilkhealth.GetValue() as int
			int milkhealthcost = Math.Floor(milkhealth*1.8*200)
			if xp >= milkhealthcost
				xp -= milkhealthcost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSmilkhealth.SetValue(milkhealth+1)
				milkhealth = SuH_PCSmilkhealth.GetValue() as int
				milkhealthcost = Math.Floor(milkhealth*1.8*200)
				SetTextOptionValue(heart_milkhealth, milkhealth+" ["+milkhealthcost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_milkmagicka)
			int xp = SuH_PCSxp.GetValue() as int
			int milkmagicka = SuH_PCSmilkmagicka.GetValue() as int
			int milkmagickacost = Math.Floor(milkmagicka*1.8*200)
			if xp >= milkmagickacost
				xp -= milkmagickacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSmilkmagicka.SetValue(milkmagicka+1)
				milkmagicka = SuH_PCSmilkmagicka.GetValue() as int
				milkmagickacost = Math.Floor(milkmagicka*1.8*200)
				SetTextOptionValue(heart_milkmagicka, milkmagicka+" ["+milkmagickacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_milkstamina)
			int xp = SuH_PCSxp.GetValue() as int
			int milkstamina = SuH_PCSmilkstamina.GetValue() as int
			int milkstaminacost = Math.Floor(milkstamina*1.8*200)
			if xp >= milkstaminacost
				xp -= milkstaminacost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSmilkstamina.SetValue(milkstamina+1)
				milkstamina = SuH_PCSmilkstamina.GetValue() as int
				milkstaminacost = Math.Floor(milkstamina*1.8*200)
				SetTextOptionValue(heart_milkstamina, milkstamina+" ["+milkstaminacost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		elseif(option == heart_xpgain)
			int xp = SuH_PCSxp.GetValue() as int
			float xpgain = SuH_PCSxpgain.GetValue()
			int xpgaincost = Math.Floor((((xpgain*100) - 99)*2.0*350)*0.5)
			if xp >= xpgaincost
				xp -= xpgaincost
				SuH_PCSxp.SetValue(xp)
				SuH_PCSxpgain.SetValue(xpgain+0.02)
				xpgain = SuH_PCSxpgain.GetValue()
				int xpgaindisplay = Math.Floor(xpgain*100)
				xpgaincost = Math.Floor((((xpgain*100) - 99)*2.0*350)*0.5)
				SetTextOptionValue(heart_xpgain, xpgaindisplay+"% ["+xpgaincost+" XP]")
				SetTextOptionValue(heart_xp, xp)
			endIf
		endIf
	;end/
	;ent/ Spells
	elseIf(CurrentPage == "Spells / Passives")
		if(option == spell_focusshotbase)
			if PlayerRef.HasSpell(SuH_spell_focusshot_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 500
					xp -= 500
					SuH_PCSxp.SetValue(xp)
					PlayerRef.AddSpell(SuH_spell_focusshot_base)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_love)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_drain)
					SetTextOptionValue(spell_focusshotbase, "Learned")
					SetTextOptionValue(spell_focusshotlove, "5000 XP")
					SetTextOptionValue(spell_focusshothate, "5000 XP")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_focusshotlove)
			if PlayerRef.HasSpell(SuH_spell_focusshot_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 5000
					xp -= 5000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_base)
					PlayerRef.AddSpell(SuH_spell_focusshot_love)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_drain)
					SetTextOptionValue(spell_focusshotbase, "500 XP")
					SetTextOptionValue(spell_focusshotlove, "Learned")
					SetTextOptionValue(spell_focusshothate, "5000 XP")
				endIf
			endIf
		elseif(option == spell_focusshothate)
			if PlayerRef.HasSpell(SuH_spell_focusshot_drain)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 5000
					xp -= 5000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_base)
					PlayerRef.RemoveSpell(SuH_spell_focusshot_love)
					PlayerRef.AddSpell(SuH_spell_focusshot_drain)
					SetTextOptionValue(spell_focusshotbase, "500 XP")
					SetTextOptionValue(spell_focusshotlove, "5000 XP")
					SetTextOptionValue(spell_focusshothate, "Learned")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_spiritmendbase)
			if PlayerRef.HasSpell(SuH_spell_spiritmend_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 550
					xp -= 550
					SuH_PCSxp.SetValue(xp)
					PlayerRef.AddSpell(SuH_spell_spiritmend_base)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_love)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_hate)
					SetTextOptionValue(spell_spiritmendbase, "Learned")
					SetTextOptionValue(spell_spiritmendlove, "5500 XP")
					SetTextOptionValue(spell_spiritmendhate, "5500 XP")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_spiritmendlove)
			if PlayerRef.HasSpell(SuH_spell_spiritmend_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 5500
					xp -= 5500
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_base)
					PlayerRef.AddSpell(SuH_spell_spiritmend_love)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_hate)
					SetTextOptionValue(spell_spiritmendbase, "550 XP")
					SetTextOptionValue(spell_spiritmendlove, "Learned")
					SetTextOptionValue(spell_spiritmendhate, "5500 XP")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_spiritmendhate)
			if PlayerRef.HasSpell(SuH_spell_spiritmend_hate)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 5500
					xp -= 5500
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_base)
					PlayerRef.RemoveSpell(SuH_spell_spiritmend_love)
					PlayerRef.AddSpell(SuH_spell_spiritmend_hate)
					SetTextOptionValue(spell_spiritmendbase, "550 XP")
					SetTextOptionValue(spell_spiritmendlove, "5500 XP")
					SetTextOptionValue(spell_spiritmendhate, "Learned")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_soulbendbase)
			if PlayerRef.HasSpell(SuH_spell_soulbend_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 700
					xp -= 700
					SuH_PCSxp.SetValue(xp)
					PlayerRef.AddSpell(SuH_spell_soulbend_base)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_love)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_hate)
					SetTextOptionValue(spell_soulbendbase, "Learned")
					SetTextOptionValue(spell_soulbendlove, "7000 XP")
					SetTextOptionValue(spell_soulbendhate, "7000 XP")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_soulbendlove)
			if PlayerRef.HasSpell(SuH_spell_soulbend_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 7000
					xp -= 7000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_base)
					PlayerRef.AddSpell(SuH_spell_soulbend_love)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_hate)
					SetTextOptionValue(spell_soulbendbase, "700 XP")
					SetTextOptionValue(spell_soulbendlove, "Learned")
					SetTextOptionValue(spell_soulbendhate, "7000 XP")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_soulbendhate)
			if PlayerRef.HasSpell(SuH_spell_soulbend_hate)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 7000
					xp -= 7000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_base)
					PlayerRef.RemoveSpell(SuH_spell_soulbend_love)
					PlayerRef.AddSpell(SuH_spell_soulbend_hate)
					SetTextOptionValue(spell_soulbendbase, "700 XP")
					SetTextOptionValue(spell_soulbendlove, "7000 XP")
					SetTextOptionValue(spell_soulbendhate, "Learned")
					SetTextOptionValue(spell_xp, xp)
				endIf
			endIf
		elseif(option == spell_cursedbloodbase)
			if playerRef.HasSpell(SuH_spell_cursedblood_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 800
					xp -= 800
					SuH_PCSxp.SetValue(xp)
					PlayerRef.AddSpell(SuH_spell_cursedblood_base)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_love)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_hate)
					SetTextOptionValue(spell_cursedbloodbase, "Learned")
					SetTextOptionValue(spell_cursedbloodlove, "8000 XP")
					SetTextOptionValue(spell_cursedbloodhate, "8000 XP")
				endIf
			endIf
		elseif(option == spell_cursedbloodlove)
			if playerRef.HasSpell(SuH_spell_cursedblood_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 8000
					xp -= 8000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_base)
					PlayerRef.AddSpell(SuH_spell_cursedblood_love)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_hate)
					SetTextOptionValue(spell_cursedbloodbase, "800 XP")
					SetTextOptionValue(spell_cursedbloodlove, "Learned")
					SetTextOptionValue(spell_cursedbloodhate, "8000 XP")
				endIf
			endIf
		elseif(option == spell_cursedbloodhate)
			if playerRef.HasSpell(SuH_spell_cursedblood_hate)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 8000
					xp -= 8000
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_base)
					PlayerRef.RemoveSpell(SuH_spell_cursedblood_love)
					PlayerRef.AddSpell(SuH_spell_cursedblood_hate)
					SetTextOptionValue(spell_cursedbloodbase, "800 XP")
					SetTextOptionValue(spell_cursedbloodlove, "8000 XP")
					SetTextOptionValue(spell_cursedbloodhate, "Learned")
				endIf
			endIf
		elseIf(option == spell_vitaldrainbase)
			if playerRef.HasSpell(SuH_spell_vitaldrain_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 950
					xp -= 950
					SuH_PCSxp.SetValue(xp)
					PlayerRef.AddSpell(SuH_spell_vitaldrain_base)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_love)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_hate)
					SetTextOptionValue(spell_vitaldrainbase, "Learned")
					SetTextOptionValue(spell_vitaldrainlove, "9500 XP")
					SetTextOptionValue(spell_vitaldrainhate, "9500 XP")
				endIf
			endIf
		elseIf(option == spell_vitaldrainlove)
			if playerRef.HasSpell(SuH_spell_vitaldrain_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 9500
					xp -= 9500
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_base)
					PlayerRef.AddSpell(SuH_spell_vitaldrain_love)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_hate)
					SetTextOptionValue(spell_vitaldrainbase, "950 XP")
					SetTextOptionValue(spell_vitaldrainlove, "Learned")
					SetTextOptionValue(spell_vitaldrainhate, "9500 XP")
				endIf
			endIf
		elseIf(option == spell_vitaldrainhate)
			if playerRef.HasSpell(SuH_spell_vitaldrain_hate)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 9500
					xp -= 9500
					SuH_PCSxp.SetValue(xp)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_base)
					PlayerRef.RemoveSpell(SuH_spell_vitaldrain_love)
					PlayerRef.AddSpell(SuH_spell_vitaldrain_hate)
					SetTextOptionValue(spell_vitaldrainbase, "950 XP")
					SetTextOptionValue(spell_vitaldrainlove, "9500 XP")
					SetTextOptionValue(spell_vitaldrainhate, "Learned")
				endIf
			endIf
		elseIf(option == spell_intimatetouchbase)
			if playerRef.HasSpell(SuH_spell_intimatetouch_base)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 600
					xp -= 600
					SuH_PCSxp.SetValue(xp)
					playerRef.AddSpell(SuH_spell_intimatetouch_base)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_love)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_hate)
					SetTextOptionValue(spell_intimatetouchbase, "Learned")
					SetTextOptionValue(spell_intimatetouchlove, "6000 XP")
					SetTextOptionValue(spell_intimatetouchhate, "6000 XP")
				endIf
			endIf
		elseIf(option == spell_intimatetouchlove)
			if playerRef.HasSpell(SuH_spell_intimatetouch_love)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 6000
					xp -= 6000
					SuH_PCSxp.SetValue(xp)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_base)
					playerRef.AddSpell(SuH_spell_intimatetouch_love)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_hate)
					SetTextOptionValue(spell_intimatetouchbase, "600 XP")
					SetTextOptionValue(spell_intimatetouchlove, "Learned")
					SetTextOptionValue(spell_intimatetouchhate, "6000 XP")
				endIf
			endIf
		elseIf(option == spell_intimatetouchhate)
			if playerRef.HasSpell(SuH_spell_intimatetouch_hate)
				;do nothing
			else
				int xp = SuH_PCSxp.GetValue() as int
				if xp >= 6000
					xp -= 6000
					SuH_PCSxp.SetValue(xp)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_base)
					playerRef.RemoveSpell(SuH_spell_intimatetouch_love)
					playerRef.AddSpell(SuH_spell_intimatetouch_hate)
					SetTextOptionValue(spell_intimatetouchbase, "600 XP")
					SetTextOptionValue(spell_intimatetouchlove, "6000 XP")
					SetTextOptionValue(spell_intimatetouchhate, "Learned")
				endIf
			endIf
			
		elseif(option == spell_perfectorgasmrank)
				int xp = SuH_PCSxp.GetValue() as int
				int perfectorgasmrank = SuH_rank_perfectorgasm.GetValue() as int
				int perfectorgasmcost = Math.Floor((1000*perfectorgasmrank)*1.8+3500)
			if	perfectorgasmrank >= 95
				debug.MessageBox("Perfect Orgasm has reached its max rank!")
			elseif xp >= perfectorgasmcost
				xp -= perfectorgasmcost
				SuH_PCSxp.SetValue(xp)
				int x = perfectorgasmrank + 1
				int y = Math.Floor((1500*x)*1.8+3500)
				SuH_rank_perfectorgasm.SetValue(x)
				SetTextOptionValue(spell_perfectorgasm, "rank "+ x)
				SetTextOptionValue(spell_perfectorgasmrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endIf
		elseif(option == spell_perfectorgasmdown)
				int perfectorgasmrank = SuH_rank_perfectorgasm.GetValue() as int
			if	perfectorgasmrank > 0
				int x = perfectorgasmrank - 1
				int y = Math.Floor((1500*x)*1.8+3500)
				SuH_rank_perfectorgasm.SetValue(x)
				SetTextOptionValue(spell_perfectorgasm, "rank "+ x)
				SetTextOptionValue(spell_perfectorgasmrank, y+" XP")
			endIf
		elseif(option == spell_lusciousliquidsrank)
				int xp = SuH_PCSxp.GetValue() as int
				int lusciousliquidsrank = SuH_rank_lusciousliquids.GetValue() as int
				int lusciousliquidscost = Math.Floor((1000*lusciousliquidsrank)*1.4+2000)
			if xp >= lusciousliquidscost
				xp -= lusciousliquidscost
				SuH_PCSxp.SetValue(xp)
				int x = lusciousliquidsrank + 1
				int y = Math.Floor((1000*x)*1.4+2000)
				SuH_rank_lusciousliquids.SetValue(x)
				SetTextOptionValue(spell_lusciousliquids, "rank "+ x)
				SetTextOptionValue(spell_lusciousliquidsrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endIf
		elseif(option == spell_lusciousliquidsdown)
				int lusciousliquidsrank = SuH_rank_lusciousliquids.GetValue() as int
			if	lusciousliquidsrank > 0
				int x = lusciousliquidsrank - 1
				int y = Math.Floor((1000*x)*1.4+2000)
				SuH_rank_lusciousliquids.SetValue(x)
				SetTextOptionValue(spell_lusciousliquids, "rank "+ x)
				SetTextOptionValue(spell_lusciousliquidsrank, y+" XP")
			endIf
		elseif(option == spell_masochistrank)
				int xp = SuH_PCSxp.GetValue() as int
				int masochistrank = SuH_rank_masochist.GetValue() as int
				int masochistcost = Math.Floor((1000*masochistrank)*1.35+1000)
			if xp >= masochistcost
				xp -= masochistcost
				SuH_PCSxp.SetValue(xp)
				int x = masochistrank +1
				int y = Math.Floor((1000*x)*1.35+1000)
				SuH_rank_masochist.SetValue(x)
				SetTextOptionValue(spell_masochist, "rank "+x)
				SetTextOptionValue(spell_masochistrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_masochistdown)
				int masochistrank = SuH_rank_masochist.GetValue() as int
			if	masochistrank > 0
				int x = masochistrank - 1
				int y = Math.Floor((1000*x)*1.35+1000)
				SuH_rank_masochist.SetValue(x)
				SetTextOptionValue(spell_masochist, "rank "+ x)
				SetTextOptionValue(spell_masochistrank, y+" XP")
			endIf
		elseif(option == spell_selfstackerrank)
				int xp = SuH_PCSxp.GetValue() as int
				int selfstackerrank = SuH_rank_selfstacker.GetValue() as int
				int selfstackercost = Math.Floor((1000*selfstackerrank)*1.95+3000)
			if xp >= selfstackercost
				xp -= selfstackercost
				SuH_PCSxp.SetValue(xp)
				int x = selfstackerrank +1
				int y = Math.Floor((1000*x)*1.95+3000)
				SuH_rank_selfstacker.SetValue(x)
				SetTextOptionValue(spell_selfstacker, "rank "+x)
				SetTextOptionValue(spell_selfstackerrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_selfstackerdown)
				int selfstackerrank = SuH_rank_selfstacker.GetValue() as int
			if	selfstackerrank > 0
				int x = selfstackerrank - 1
				int y = Math.Floor((1000*x)*1.95+3000)
				SuH_rank_selfstacker.SetValue(x)
				SetTextOptionValue(spell_selfstacker, "rank "+ x)
				SetTextOptionValue(spell_selfstackerrank, y+" XP")
			endIf
		elseif(option == spell_valuestackerrank)
				int xp = SuH_PCSxp.GetValue() as int
				int valuestackerrank = SuH_rank_valuestacker.GetValue() as int
				int valuestackercost = Math.Floor((1000*valuestackerrank)*1.95+6200)
			if xp >= valuestackercost
				xp -= valuestackercost
				SuH_PCSxp.SetValue(xp)
				int x = valuestackerrank +1
				int y = Math.Floor((1000*x)*1.95+6200)
				SuH_rank_valuestacker.SetValue(x)
				SetTextOptionValue(spell_valuestacker, "rank "+x)
				SetTextOptionValue(spell_valuestackerrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_valuestackerdown)
				int valuestackerrank = SuH_rank_valuestacker.GetValue() as int
			if	valuestackerrank > 0
				int x = valuestackerrank - 1
				int y = Math.Floor((1000*x)*1.95+6200)
				SuH_rank_valuestacker.SetValue(x)
				SetTextOptionValue(spell_valuestacker, "rank "+ x)
				SetTextOptionValue(spell_valuestackerrank, y+" XP")
			endIf
		elseif(option == spell_savingessencerank)
				int xp = SuH_PCSxp.GetValue() as int
				int savingessencerank = SuH_rank_savingessence.GetValue() as int
				int savingessencecost = Math.Floor((1000*savingessencerank)*1.2+4000)
			if xp >= savingessencecost
				xp -= savingessencecost
				SuH_PCSxp.SetValue(xp)
				int x = savingessencerank +1
				int y = Math.Floor((1000*x)*1.2+4000)
				SuH_rank_savingessence.SetValue(x)
				SetTextOptionValue(spell_savingessence, "rank "+x)
				SetTextOptionValue(spell_savingessencerank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_savingessencedown)
				int savingessencerank = SuH_rank_savingessence.GetValue() as int
			if	savingessencerank > 0
				int x = savingessencerank - 1
				int y = Math.Floor((1000*x)*1.2+4000)
				SuH_rank_savingessence.SetValue(x)
				SetTextOptionValue(spell_savingessence, "rank "+ x)
				SetTextOptionValue(spell_savingessencerank, y+" XP")
			endIf
		elseif(option == spell_giftedconsentrank)
				int xp = SuH_PCSxp.GetValue() as int
				int giftedconsentrank = SuH_rank_giftedconsent.GetValue() as int
				int giftedconsentcost = Math.Floor((1000*giftedconsentrank)*1.6+1400)
			if xp >= giftedconsentcost
				xp -= giftedconsentcost
				SuH_PCSxp.SetValue(xp)
				int x = giftedconsentrank +1
				int y = Math.Floor((1000*x)*1.6+1400)
				SuH_rank_giftedconsent.SetValue(x)
				SetTextOptionValue(spell_giftedconsent, "rank "+x)
				SetTextOptionValue(spell_giftedconsentrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_giftedconsentdown)
				int giftedconsentrank = SuH_rank_giftedconsent.GetValue() as int
			if	giftedconsentrank > 0
				int x = giftedconsentrank - 1
				int y = Math.Floor((1000*x)*1.6+1400)
				SuH_rank_giftedconsent.SetValue(x)
				SetTextOptionValue(spell_giftedconsent, "rank "+ x)
				SetTextOptionValue(spell_giftedconsentrank, y+" XP")
			endIf
		elseif(option == spell_forcemasterrank)
				int xp = SuH_PCSxp.GetValue() as int
				int forcemasterrank = SuH_rank_forcemaster.GetValue() as int
				int forcemastercost = Math.Floor((1000*forcemasterrank)*1.7+2000)
			if forcemasterrank >= 99
				debug.MessageBox("Force Master has reached its max rank!")
			elseif xp >= forcemastercost
				xp -= forcemastercost
				SuH_PCSxp.SetValue(xp)
				int x = forcemasterrank +1
				int y = Math.Floor((1000*x)*1.7+2000)
				SuH_rank_forcemaster.SetValue(x)
				SetTextOptionValue(spell_forcemaster, "rank "+x)
				SetTextOptionValue(spell_forcemasterrank, y+" XP")
				SetTextOptionValue(spell_xp, xp)
			endif
		elseif(option == spell_forcemasterdown)
				int forcemasterrank = SuH_rank_forcemaster.GetValue() as int
			if	forcemasterrank > 0
				int x = forcemasterrank - 1
				int y = Math.Floor((1000*x)*1.7+2000)
				SuH_rank_forcemaster.SetValue(x)
				SetTextOptionValue(spell_forcemaster, "rank "+ x)
				SetTextOptionValue(spell_forcemasterrank, y+" XP")
			endIf
		endIf
	;end/
	;ent/
	elseif(CurrentPage == "Soul Pets")
		if(option == pet_dog)
				int x = SuH_PETactive.GetValue() as int
			if SuH_PETactivedog.GetValue()
				(pDialogueFollower as DialogueFollowerScript).DismissAnimal()
				SuH_actor_dog.MoveTo(SuH_realm_portalpoint)
				SuH_PETactivedog.SetValue(0)
				x -= 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Dog [Incubus] has been returned to the Succubus Realm")
				ForcePageReset()
			elseif x > 0
				debug.MessageBox("Too many summons are currently following you! Return some home to summon more.")
			else
				SuH_actor_dog.MoveTo(PlayerRef)
				(DialogueFollower as DialogueFollowerScript).SetAnimal(SuH_actor_dog)
				SuH_PETactivedog.SetValue(1)
				x += 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Dog [Incubus] has been summoned!")
				ForcePageReset()
			endIf
		elseif(option == pet_wolf)
				int x = SuH_PETactive.GetValue() as int
			if SuH_PETactivewolf.GetValue()
				(pDialogueFollower as DialogueFollowerScript).DismissAnimal()
				SuH_actor_wolf.MoveTo(SuH_realm_portalpoint)
				SuH_PETactivewolf.SetValue(0)
				x -= 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Wolf [Incubus] has been returned to the Succubus Realm")
				ForcePageReset()
			elseif x > 0
				debug.MessageBox("Too many summons are currently following you! Return some home to summon more.")
			elseif SuH_PETdoglevel.GetValue() > 3.0
				SuH_actor_wolf.MoveTo(PlayerRef)
				(DialogueFollower as DialogueFollowerScript).SetAnimal(SuH_actor_wolf)
				SuH_PETactivewolf.SetValue(1)
				x += 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Wolf [Incubus] has been summoned!")
				ForcePageReset()
			else
				debug.MessageBox("Wolf [Incubus] is still uncontrollable! Train more to strengthen your abilities!")
			endIf
		elseif(option == pet_horse)
				int x = SuH_PETactive.GetValue() as int
			if SuH_PETactivehorse.GetValue()
				(pDialogueFollower as DialogueFollowerScript).DismissAnimal()
				SuH_actor_horse.MoveTo(SuH_realm_portalpoint)
				SuH_PETactivehorse.SetValue(0)
				x -= 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Horse [Incubus] has been returned to the Succubus Realm")
				ForcePageReset()
			elseif x > 0
				debug.MessageBox("Too many summons are currently following you! Return some home to summon more.")
			elseif SuH_PETsummonlevel.GetValue() > 1.0
				SuH_actor_horse.MoveTo(PlayerRef)
				(DialogueFollower as DialogueFollowerScript).SetAnimal(SuH_actor_horse)
				SuH_PETactivehorse.SetValue(1)
				x += 1
				SuH_PETactive.SetValue(x)
				debug.MessageBox("Horse [Incubus] has been summoned!")
				ForcePageReset()
			else
				debug.MessageBox("Horse [Incubus] is still uncontrollable! Train more to strengthen your abilities!")
			endIf
		endIf
	;end/
	endIf
endEvent
;end/
;ent/ OnOptionSliderOpen
Event OnOptionSliderOpen(int option)
	if(CurrentPage == "Status / Settings")
		if(option == status_SETnpc2pchealth)
			SetSliderDialogStartValue(SuH_SETnpc2pchealth.GetValue()*100)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(5)
		elseIf(option == status_SETpc2npchealth)
			SetSliderDialogStartValue(SuH_SETpc2npchealth.GetValue()*100)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(5)
		elseIf(option == status_SETnpc2npchealth)
			SetSliderDialogStartValue(SuH_SETnpc2npchealth.GetValue()*100)
			SetSliderDialogDefaultValue(20)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(5)
		elseIf(option == status_ORcaphealth)
			SetSliderDialogStartValue(SuH_ORcaphealth.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10)
		elseIf(option == status_ORcapmagicka)
			SetSliderDialogStartValue(SuH_ORcapmagicka.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10)
		elseIf(option == status_ORcapstamina)
			SetSliderDialogStartValue(SuH_ORcapstamina.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10)
		elseIf(option == status_ORabsorbhealth)
			SetSliderDialogStartValue(SuH_ORabsorbhealth.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,1000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORabsorbmagicka)
			SetSliderDialogStartValue(SuH_ORabsorbmagicka.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,1000)
			SetSliderDialogInterval(1)
		elseIf(option == status_ORabsorbstamina)
			SetSliderDialogStartValue(SuH_ORabsorbstamina.GetValue())
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,1000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETeffectmulti)
			SetSliderDialogStartValue(SuH_PCSeffectmulti.GetValue()*100)
			SetSliderDialogDefaultValue(0)
			SetSliderDialogRange(0,1000)
			SetSliderDialogInterval(1)
		elseIf(option == status_SETdesiregain)
			SetSliderDialogStartValue(SuH_PCSdesiregain.GetValue())
			SetSliderDialogDefaultValue(1)
			SetSliderDialogRange(0,100)
			SetSliderDialogInterval(0.2)
		elseIf(option == status_SETdesirecap)
			SetSliderDialogStartValue(SuH_SETdesirecap.GetValue())
			SetSliderDialogDefaultValue(1200)
			SetSliderDialogRange(0,100000)
			SetSliderDialogInterval(10.0)
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == skill_convert)
			int x = SuH_PCSxp.GetValue() as int
			int y = Math.Floor(x/10)
			int z = y*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_SETnpc2pchealth)
			SuH_SETnpc2pchealth.SetValue(value/100)
			SetSliderOptionValue(status_SETnpc2pchealth, value, "{0}% Health")
		elseif(option == status_SETpc2npchealth)
			SuH_SETpc2npchealth.SetValue(value/100)
			SetSliderOptionValue(status_SETpc2npchealth, value, "{0}% Health")
		elseif(option == status_SETnpc2npchealth)
			SuH_SETnpc2npchealth.SetValue(value/100)
			SetSliderOptionValue(status_SETnpc2npchealth, value, "{0}% Health")
		elseif(option == status_ORcaphealth)
			SuH_ORcaphealth.SetValue(value)
			SetSliderOptionValue(status_ORcaphealth, value, "{0}")
			if value > 0
				int playerHealth = PlayerRef.GetBaseActorValue("health") as int
				SetTextOptionValue(status_health, playerHealth+"/overwritten")
			else
				int playerHealth = PlayerRef.GetBaseActorValue("health") as int
				int healthCap = SuH_PCScaphealth.GetValue() as int
				SetTextOptionValue(status_health, playerHealth+"/"+healthCap)
			endIf
		elseif(option == status_ORcapmagicka)
			SuH_ORcapmagicka.SetValue(value)
			SetSliderOptionValue(status_ORcapmagicka, value, "{0}")
			if value > 0
				int playerMagicka = PlayerRef.GetBaseActorValue("magicka") as int
				SetTextOptionValue(status_magicka, playerMagicka+"/overwritten")
			else
				int playerMagicka = PlayerRef.GetBaseActorValue("magicka") as int
				int magickaCap = SuH_PCScapmagicka.GetValue() as int
				SetTextOptionValue(status_magicka, playerMagicka+"/"+magickaCap)
			endIf
		elseif(option == status_ORcapstamina)
			SuH_ORcapstamina.SetValue(value)
			SetSliderOptionValue(status_ORcapstamina, value, "{0}")
			if value > 0
				int playerStamina = PlayerRef.GetBaseActorValue("stamina") as int
				SetTextOptionValue(status_stamina, playerStamina+"/overwritten")
			else
				int playerStamina = PlayerRef.GetBaseActorValue("stamina") as int
				int staminaCap = SuH_PCScapstamina.GetValue() as int
				SetTextOptionValue(status_stamina, playerStamina+"/"+staminaCap)
			endIf
		elseif(option == status_ORabsorbhealth)
			SuH_ORcaphealth.SetValue(value)
			SetSliderOptionValue(status_ORabsorbhealth, value, "{0}")
		elseif(option == status_ORabsorbmagicka)
			SuH_ORcapmagicka.SetValue(value)
			SetSliderOptionValue(status_ORabsorbmagicka, value, "{0}")
		elseif(option == status_ORabsorbstamina)
			SuH_ORcapstamina.SetValue(value)
			SetSliderOptionValue(status_ORabsorbstamina, value, "{0}")
		elseif(option == status_SETeffectmulti)
			SuH_PCSeffectmulti.SetValue(value/100)
			SetSliderOptionValue(status_SETeffectmulti, value, "{0}%")
		elseif(option == status_SETdesiregain)
			SuH_PCSdesiregain.SetValue(value)
			SetSliderOptionValue(status_SETdesiregain, value, "{0}")
		elseif(option == status_SETdesirecap)
			SuH_SETdesirecap.SetValue(value)
			SetSliderOptionValue(status_SETdesirecap, value, "{0}")
		endIf
	elseIf(CurrentPage == "Skill Levels")
		if(option == skill_convert)
			int x = Math.Floor(value/10)
			int y = SuH_PCSforce.GetValue() as int
			int z = SuH_PCSxp.GetValue() as int
			SuH_PCSxp.SetValue(z-value)
			SuH_PCSforce.SetValue(y+x)
			ForcePageReset()
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionDefault
Event OnOptionDefault(int option)
	if(CurrentPage == "Status / Settings")
		if(option == status_SETdrainkill)
			SuH_SETallowdrainkill.SetValue(1)
			SetToggleOptionValue(status_SETdrainkill, TRUE)
		endIf
	endIf
endEvent
;end/
;ent/ OnOptionHighlight
Event OnOptionHighlight(int option)
	;ent/ Status
	if(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_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 / Cap [Gain Sex Stacks after a Act. Sex Stacks are used for Spells and Passive. Increase Max Stacks through Heart Levels or Items.]")
		elseif(option == status_stacksperm)
			SetInfoText("Sperm Stacks / Cap [Gain Sperm Stacks by consuming Sperm. Sperm Stacks are used for Spells and Passive. Increase Max Stacks through Heart Levels or Items.]")
		elseif(option == status_stackmilk)
			SetInfoText("Milk Stacks / Cap [Gain Milk Stacks by consuming Breast Milk. Milk Stacks are used for Spells and Passive. Increase Max Stacks through Heart Levels or Items.]")
		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_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_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_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 : Enabled]")
		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 Alternative Mode) With this mode enabled instead of the player dieing and being asked to re-load the character will instead respawn with a death penalty [Default : Disabled] WARNING : Disable if you use any other Death Alternative mod!")
		elseIf(option == status_SETsdloseitems)
			SetInfoText("(Death Alternative Mode) Upon death the player will lose all lose-able items [Default : Enabled]")
		elseIf(option == status_sdsetspawn)
			SetInfoText("(Death Alternative Mode) CURRENTLY REQUIRED FOR DEATH ALTERNATIVE MODE TO FUNCTION!!! Will spawn character at this location after death. [Debug set SuH_sd_spawnpoint for character revival]")
		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]")
		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]")
		elseif(option == heart_capmagicka)
			SetInfoText("Increases the Max Magicka Absorption can reach.[Increases by 1 per level]")
		elseif(option == heart_capstamina)
			SetInfoText("Increases the Max Stamina Absorption can reach.[Increases by 1 per level]")
		elseif(option == heart_stacksex)
			SetInfoText("Increases the number of Sex Stacks which can be stored.[Increases by 1 per level]")
		elseif(option == heart_stacksperm)
			SetInfoText("Increases the number of Sperm Stacks which can be stored.[Increases by 1 per level]")
		elseif(option == heart_stackmilk)
			SetInfoText("Increases the number of Milk Stacks which can be stored.[Increases by 1 per level]")
		elseif(option == heart_xpgain)
			SetInfoText("Increases the XP gain multiplier. [Increases by 2% when leveled]")
		elseif(option == heart_absorbhealth)
			SetInfoText("Increases Health absorbed in acts per-tick. [Increases by 1 per level]")
		elseif(option == heart_absorbmagicka)
			SetInfoText("Increases Magicka absorbed in acts per-tick. [Increases by 1 per level]")
		elseif(option == heart_absorbstamina)
			SetInfoText("Increases Stamina absorbed in acts per-tick. [Increases by 1 per level]")
		elseif(option == heart_spermhealth)
			SetInfoText("Increases Health earned when consuming Sperm. [Increases by 1 per level]")
		elseif(option == heart_spermmagicka)
			SetInfoText("Increases Magicka earned when consuming Sperm. [Increases by 1 per level]")
		elseif(option == heart_spermstamina)
			SetInfoText("Increases Stamina earned when consuming Sperm. [Increases by 1 per level]")
		elseif(option == heart_milkhealth)
			SetInfoText("Increases Health earned when consuming Milk. [Increases by 1 per level]")
		elseif(option == heart_milkmagicka)
			SetInfoText("Increases Magicka earned when consuming Milk. [Increases by 1 per level]")
		elseif(option == heart_milkstamina)
			SetInfoText("Increases Stamina earned when consuming Milk. [Increases by 1 per level]")
		endIf
	;end/
	;ent/ Spells
	elseif(CurrentPage == "Spells / Passives")
		if(option == spell_focusshotbase)
			SetInfoText("Consume 5 Max Stamina and deal 5 damage to the target")
		elseIf(option == spell_focusshotlove)
			SetInfoText("Consume 12 Max Stamina and deal 14 damage to the target")
		elseIf(option == spell_focusshothate)
			SetInfoText("Consume 12 Max Stamina and deal 6 damage to the target while absorbing 3 health")
		elseIf(option == spell_spiritmendbase)
			SetInfoText("Consume 15 Magicka and restore 50% missing Health")
		elseIf(option == spell_spiritmendlove)
			SetInfoText("Consume 20 Magicka and restore 75% Health")
		elseIf(option == spell_spiritmendhate)
			SetInfoText("Consume all Desire, distributing it into all status")
		elseIf(option == spell_cursedbloodbase)
			SetInfoText("Consume 10 Magicka and 5 Stamina and curse the target to take 3 extra damage when hit for 1 minute")
		elseIf(option == spell_cursedbloodlove)
			SetInfoText("Consume 15 Magicka and 15 Stamina and curse the target to take 8 extra damage when hit for 2 minutes")
		elseIf(option == spell_cursedbloodhate)
			SetInfoText("Consume 5 sex stacks and curse the target to die after their next sex act within 10 minutes")
		elseIf(option == spell_vitaldrainbase)
			SetInfoText("Consume lowest stack value from all stacks, draining 1% of the targets status per stack (Doesn't kill targets)")
		elseIf(option == spell_vitaldrainlove)
			SetInfoText("Consume lowest stack value from all stacks, draining 2.5% of the targets status per stack (Doesn't kill targets)")
		elseIf(option == spell_vitaldrainhate)
			SetInfoText("Take 25% of current status and convert 80% as damage to the target")
		elseIf(option == spell_soulbendbase)
			SetInfoText("Consume 10 Health and 20 Magicka to damage the target for 50 Health and reduce their Max Health by 5%")
		elseIf(option == spell_soulbendlove)
			SetInfoText("Consume 20 Health and 25 Magicka and damage the target for 80 Health and reduce their Max Health by 10%")
		elseIf(option == spell_soulbendhate)
			SetInfoText("Consume 80 Health and damage the target for 50% of their current status")
		elseIf(option == spell_intimatetouchbase)
			SetInfoText("Touch the target without aggression consuming up to 15 sex stacks, damaging them for 5% status per stack")
		elseIf(option == spell_intimatetouchlove)
			SetInfoText("Touch the target without aggression consuming up to 9 sex stacks, damaging them for 10% status per stack")
		elseIf(option == spell_intimatetouchhate)
			SetInfoText("Touch the target consume 20 Stamina and 20 Magicka to dropping the target's Stamina and Magicka to 0")
			
		elseIf(option == spell_perfectorgasm)
			int x = SuH_rank_perfectorgasm.GetValue() as int
			SetInfoText("Increases the chance of a special drop upon orgasms by "+x+"%.")
		elseIf(option == spell_perfectorgasmrank)
			SetInfoText("Increase rank by 1. [Adds 1% to Perfect Orgasm's effect.]")
		elseIf(option == spell_perfectorgasmdown)
			SetInfoText("Decrease rank by 1. [Removes 1% from Perfect Orgasm's effect.]")
		elseIf(option == spell_lusciousliquids)
			int x = Math.Floor(5 * SuH_rank_lusciousliquids.GetValue())
			SetInfoText("Sperm and Milk recovers "+x+" points of status when consumed.")
		elseIf(option == spell_lusciousliquidsrank)
			SetInfoText("Increase rank by 1. [Adds 5 to Luscious Liquids' effect.]")
		elseIf(option == spell_lusciousliquidsdown)
			SetInfoText("Decrease rank by 1. [Removes 5 from Luscious Liquids' effect.]")
		elseIf(option == spell_masochist)
			int x = Math.Floor(5 * SuH_rank_masochist.GetValue())
			SetInfoText("Grants "+x+" Desire when hit.")
		elseIf(option == spell_masochistrank)
			SetInfoText("Increase rank by 1. [Adds 5 to Masochist's effect.]")
		elseIf(option == spell_masochistdown)
			SetInfoText("Decrease rank by 1. [Removes 5 from Masochist's effect.]")
		elseIf(option == spell_selfstacker)
			int x = SuH_rank_selfstacker.GetValue() as int
			SetInfoText("Grants "+x+" stack upon orgasm based on gender. [m/sperm f/milk]")
		elseIf(option == spell_selfstackerrank)
			SetInfoText("Increase rank by 1. [Adds 1 to Self Stacker's effect.]")
		elseIf(option == spell_selfstackerdown)
			SetInfoText("Decrease rank by 1. [Removes 1 from Self Stacker's effect.]")
		elseIf(option == spell_valuestacker)
			int x = SuH_rank_valuestacker.GetValue() as int
			SetInfoText("Increases number of stacks earned by "+x+".")
		elseIf(option == spell_valuestackerrank)
			SetInfoText("Increase rank by 1. [Adds 1 to Value Stacker's effect.]")
		elseIf(option == spell_valuestackerdown)
			SetInfoText("Decrease rank by 1. [Removes 1 from Value Stacker's effect.]")
		elseIf(option == spell_savingessence)
			int x = Math.Floor(2 * SuH_rank_savingessence.GetValue())
			SetInfoText("When hit below 30% Health consume up to 10 sperm/milk stacks, recovering "+x+" Health and stack. [Attempts to uses both stacks evenly]")
		elseIf(option == spell_savingessencerank)
			SetInfoText("Increase rank by 1. [Adds 2 to Saving Essence's effect.]")
		elseIf(option == spell_savingessencedown)
			SetInfoText("Decrease rank by 1. [Removes 2 from Saving Essence's effect.]")
		elseIf(option == spell_giftedconsent)
			int x = SuH_rank_giftedconsent.GetValue() as int
			SetInfoText("Grants consensual parters with "+x+" Health/Magicka/Stamina per-tick. [Applies before drain if consent drain is enabled]")
		elseIf(option == spell_giftedconsentrank)
			SetInfoText("Increase rank by 1. [Adds 1 to Gifted Consent's effect]")
		elseIf(option == spell_giftedconsentdown)
			SetInfoText("Decrease rank by 1. [Removes 1 from Gifted Consent's effect]")
		elseIf(option == spell_forcemaster)
			int x = SuH_rank_forcemaster.GetValue() as int
			SetInfoText("Decreases the Force required to earn SP by "+x*2+"%.")
		elseIf(option == spell_forcemasterrank)
			SetInfoText("Increase rank by 1. [Adds 2% to Force Master's effect]")
		elseIf(option == spell_forcemasterdown)
			SetInfoText("Decrease rank by 1. [Removes 2% from Force Master's effect]")
		endIf
	;end/
	;ent/ Soul Pets
	elseif(CurrentPage == "Soul Pets")
		if(option == pet_summonlevel)
			SetInfoText("Current Summoner Level (Increase by leveling up pets or obtaining bonuses)")
		elseif(option == pet_summonxp)
			SetInfoText("Summoner XP needed for next Summoner Level (Gain Summoner XP by leveling up pets or obtaining bonuses)")
		elseif(option == pet_currentleader)
			SetInfoText("Currently Disabled - Leader mechanic for when pets are summoned")
		elseif(option == pet_leaderdesire)
			SetInfoText("Currently Disabled - Tracks leader's desire")
		elseif(option == pet_dog)
			SetInfoText("Common Dog Summon, makes a great travel companion if you can stand barking. -(Unlocks at Summoner Level 0)-")
		elseif(option == pet_wolf)
			SetInfoText("Black Wolf Summon, he's a bit of a fright for locals. -(Req. Dog Level 4)-")
		elseif(option == pet_horse)
			SetInfoText("Brown Horse Summon, he can be ridden, just not conventionally... =^.-= -(Req. Summoner Level 2)-")
		endIf
	;end/
	;ent/ Help
	elseif(CurrentPage == "Help")
		;ent/ Descriptions
		if(option == help1)
			SetInfoText("XP can be earned through Sex acts, consuming certain items (such as sperm and milk), and through some passives.")
		elseif(option == help2)
			SetInfoText("To spend XP just explore the MCM! XP can be spend to improve passive succubus abilities, learn new spells, or improve skill levels!")
		elseif(option == help19)
			SetInfoText("Death Override Mode has the player respawn instead of dieing when falling below 0 Health.")
		elseif(option == help20)
			SetInfoText("Succubus Pets are followers which can be summoned to fight alongside the player. When using summons both the pet and player will gain XP, improving their abilities.")
		elseif(option == help3)
			SetInfoText("Desire generate naturally over time or through special items/passives/spells. When reaching certain points of Desire seduction spells will be granted to the player which will force sex acts on targets. Upon orgasm 80% of Desire is converted to XP.")
		elseif(option == help4)
			SetInfoText("When reaching your max status you can hold overflow will be converted to Force. Once enough Force is obtained it will convert to SP which can be spent on leveling Skills. When earning SP through Force the required amount for your next SP increases however when gained through items this isn't the case. XP can also be converted to Force.")
		elseif(option == help5)
			SetInfoText("When in sex acts your character will absorb status, taking Max Health/Magicka/Stamina and claiming it for their own.")
		elseif(option == help6)
			SetInfoText("Spells will be defined by a standard name and a modifier. Only one version of each spell can be learned at a time but they may be switched. Different versions will have different effects, for example Love versions will be a stronger but more expensive version of the Base spell, while Hate will have a completely different effect with a similar approach.")
		elseif(option == help7)
			SetInfoText("Passives will give 'always on' bonuses with different effects. While some passives will start fairly weak or ineffective they can be ranked up to improve their effectiveness.")
		elseif(option == help8)
			SetInfoText("Upon orgasm characters will give their partner Sperm/Milk based on their gender. This sperm and milk can be consumed for bonuses and have similar effects to absorption. Rare Drops can also be found which have special effects and powerful alchemy traits.")
		elseif(option == help9)
			SetInfoText("Upon death characters will have a soul placed upon them. These souls can be collected and either consumed for special effects.")
		elseif(option == help10)
			SetInfoText("While absorption is always on Health/Magicka/Stamina can always go so high. After reaching your determined cap extra is converted into Forcce and SP. Status Caps can be increase with either XP or special items.")
		elseif(option == help11)
			SetInfoText("Sex, consuming Sperm, and Consuming Milk will provide their own stacks. These stacks can only be stored to a cap which is increased with XP or special items. Stacks are used by spells and passives for powerful effects.")
		elseif(option == help12)
			SetInfoText("Combat Seduction is a built in 'combat submit' mod which starts sex acts when characters fall below the Health Thresholds, which can be configured. Combat Seduction is built to be super light weight in comparison to other submit mods however it lacks any advanced features. If you already use a submit mod I recommend Disabling Combat Seduction.")
		elseif(option == help13)
			SetInfoText("When using a large amount of spells status can burn out quick. In order to keep your status high make sure to use a balance of drain spells and use a combat submit mod to keep acts going to absorb more status. Keeping plentiful Sperm/Milk can also help as they hold 'on-demand' status through their absorption properties!")
		elseif(option == help14)
			SetInfoText("When Desire reaches 1200 Health/Magicka/Stamina will begin slowly converting to Force. Lowering Desire below 1200 will stop the effect.")
		elseif(option == help15)
			SetInfoText("Act : Refers to any sex animation triggered with SexLab.")
		elseif(option == help16)
			SetInfoText("Status : Refers to Health, Magicka, and Stamina.")
		elseif(option == help17)
			SetInfoText("XP : Short for 'Heart XP'. References XP within Succubus Heart, doesn't effect outside sources.")
		elseif(option == help18)
			SetInfoText("Tick : Program term used to describe an instance of a continuous trigger. Basically a single hit of an effect that has a duration. [Example from Succubus Heart : Absorption 'ticks' every few seconds within an Act, this means its values are counted in 'ticks' and will take full effect every few seconds.]")
		;end/
		;ent/ Reference
		elseif(option == r1)
			SetInfoText("Sexual Enrage : Spell : Seduction : Obtained at 120 Desire [Removed below 120 Desire] [Forces target to aggressively act]")
		elseif(option == r2)
			SetInfoText("Sexual Entice : Spell : Seduction : Obtained at 300 Desire [Removed below 300 Desire] [Forces target into consensual act]")
		elseif(option == r3)
			SetInfoText("Self Pleasure : Spell : Seduction : Automatically learned on MOD update [Begins solo act]")
		elseif(option == r4)
			SetInfoText("Night's Embrace : Spell : Seduction : Automatically learned on MOD update [Forces a sleeping target to submit, only works if target is sleeping]")
		elseif(option == r5)
			SetInfoText("Focus Shot : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [Low Damage Spell]")
		elseif(option == r6)
			SetInfoText("Soul Bend : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [High Damage Spell]")
		elseif(option == r7)
			SetInfoText("Intimate Touch : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [Unaggressive Spell]")
		elseif(option == r8)
			SetInfoText("Vital Drain : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [Draining Spell]")
		elseif(option == r9)
			SetInfoText("Cursed Blood : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [Curse Spell]")
		elseif(option == r10)
			SetInfoText("Spirit Mend : Spell : Heart : Obtained with XP [Has Base / Love / Hate variants] [Recovery Spell]")
		elseif(option == r11)
			SetInfoText("Perfect Orgasm : Passive : Heart : Obtained with XP [Rank caps at 95%] [Increases Rare Sex Drop rate]")
		elseif(option == r12)
			SetInfoText("Luscious Liquids : Passive : Heart : Obtained with XP [Adds restorative properties to sperm and milk]")
		elseif(option == r13)
			SetInfoText("Masochist : Passive : Heart : Obtained with XP [Generates Desire when hit]")
		elseif(option == r14)
			SetInfoText("Self Stacker : Passive : Heart : Obtained with XP [Generates stacks based on gender upon orgasm]")
		elseif(option == r15)
			SetInfoText("Value Stacker : Passive : Heart : Obtained with XP [Increases stacks gained - Doesn't effect Self Stacker]")
		elseif(option == r16)
			SetInfoText("Saving Essence : Passive : Heart : Obtained with XP [Triggers recovery when low on Health]")
		elseif(option == r17)
			SetInfoText("Gifted Consent : Passive : Heart : Obtained with XP [Grants consensual targets with Status]")
		elseif(option == r29)
			SetInfoText("Force Master : Passive : Heart : Obtained with XP [Rank caps at 99%] [Decreases SP's Force requirement]")
		elseif(option == r18)
			SetInfoText("Sperm : Item : Sex Drop : Drops from male orgasms [Grants XP and Absorption Effects]")
		elseif(option == r19)
			SetInfoText("Breast Milk : Item : Sex Drop : Drops from female orgasms [Grants XP and Absorption Effects]")
		elseif(option == r20)
			SetInfoText("Vitality Stone : Item : Sex Drop : Rare drop from orgasms [Increases Health, Magicka, and Stamina caps by 5]")
		elseif(option == r21)
			SetInfoText("Empower Stone : Item : Sex Drop : Rare drop from orgasms [Increases XP gain by 1%]")
		elseif(option == r22)
			SetInfoText("Specialty Stone : Item : Sex Drop : Rare drop from orgasms [Grants 3 SP - Doesn't effect Force Requirement]")
		elseif(option == r23)
			SetInfoText("Soul of Force : Item : Death Drop : Common drop from dying characters [Grants 100 Force]")
		elseif(option == r24)
			SetInfoText("Soul of Experience : Item : Death Drop : Common drop from dying characters [Grants bonus experience with a 250 Base Value]")
		elseif(option == r25)
			SetInfoText("Soul of Life : Item : Death Drop : Uncommon drop from dying characters [Increases Health Cap by 2]")
		elseif(option == r26)
			SetInfoText("Soul of Magic : Item : Death Drop : Uncommon drop from dying characters [Increases Magicka Cap by 2]")
		elseif(option == r27)
			SetInfoText("Soul of Power : Item : Death Drop : Uncommon drop from dying characters [Increaes Stamina Cap by 2]")
		elseif(option == r28)
			SetInfoText("Soul of Desire : Item : Death Drop : Common drop from dying characters [Grants 800 Desire]")
		elseif(option == r30)
			SetInfoText("Train Pet : Spell : Pet : Trains the currently summoned pet (Prioritizes leader pet)")
		elseif(option == r31)
			SetInfoText("Dog [Incubus] : Actor : Soul Pet : Common Dog Summon")
		elseif(option == r32)
			SetInfoText("Wolf [Incubus] : Actor : Soul Pet : Black Wolf Summon")
		elseif(option == r33)
			SetInfoText("Horse [Incubus] : Actor : Soul Pet : Brown Horse Summon")
		;end/
		endIf
	;end/
	endIf
endEvent
;end/