Scriptname SuH_Fun extends Quest  

SuH_Status property _s auto

;ent/ Delete after 4.6
SexLabFramework property SexLab auto
DialogueFollowerScript Property DialogueFollower Auto
Quest Property pDialogueFollower  Auto
Actor property PlayerRef auto

;ent/ Object References
;Location
	ObjectReference Property SuH_sd_returnpointcell Auto 
	WorldSpace property SuH_worldspace auto
	cell property SuH_realm auto
;Portals
	ObjectReference Property SuH_sdr_spawnpoint Auto
	ObjectReference Property SuH_sevaspawn Auto
	ObjectReference Property SuH_sdr_portalpoint Auto 
	ObjectReference Property SuH_sd_returnpoint Auto 
;Chests
	ObjectReference Property SuH_sdr_lostchest Auto 
	ObjectReference Property SuH_sd_goldchest Auto
;Pets
	ObjectReference Property SuH_realm_petreturnbear Auto 
	ObjectReference Property SuH_realm_petreturnbristle Auto 
	ObjectReference Property SuH_realm_petreturndog Auto 
	ObjectReference Property SuH_realm_petreturndraugr Auto 
	ObjectReference Property SuH_realm_petreturnfalmer Auto 
	ObjectReference Property SuH_realm_petreturnfamiliar Auto 
	ObjectReference Property SuH_realm_petreturngargoyle Auto 
	ObjectReference Property SuH_realm_petreturnhorker Auto 
	ObjectReference Property SuH_realm_petreturnhorse Auto 
	ObjectReference Property SuH_realm_petreturnhusky Auto 
	ObjectReference Property SuH_realm_petreturnnetch Auto 
	ObjectReference Property SuH_realm_petreturnriekling Auto 
	ObjectReference Property SuH_realm_petreturnsabrecat Auto 
	ObjectReference Property SuH_realm_petreturnseeker Auto 
	ObjectReference Property SuH_realm_petreturnskeever Auto 
	ObjectReference Property SuH_realm_petreturnspider Auto 
	ObjectReference Property SuH_realm_petreturnspriggan Auto 
	ObjectReference Property SuH_realm_petreturntroll Auto 
	ObjectReference Property SuH_realm_petreturnwolf Auto 
;end/
;ent/ Global Variables
;ent/ Game Data Variables
	GlobalVariable Property SuH_MODversion auto
	GlobalVariable Property SuH_MCMversion auto
;end/
;ent/ PCS - Player Character Status
	GlobalVariable property SuH_PCSabsorbhealth auto
	GlobalVariable property SuH_PCSabsorbmagicka auto
	GlobalVariable property SuH_PCSabsorbstamina auto
	GlobalVariable property SuH_PCScaphealth auto
	GlobalVariable property SuH_PCScapmagicka auto
	GlobalVariable property SuH_PCScapstamina auto
	GlobalVariable property SuH_PCScaphealthitem auto
	GlobalVariable property SuH_PCScapmagickaitem auto
	GlobalVariable property SuH_PCScapstaminaitem 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_PCSxp auto
	GlobalVariable property SuH_PCSxpearn auto
	GlobalVariable property SuH_PCSxpgain auto
	GlobalVariable property SuH_PCSxpgainitem auto
	GlobalVariable property SuH_PCSforce auto
	GlobalVariable property SuH_PCSdesire auto
	GlobalVariable property SuH_PCSeffectmulti auto
	GlobalVariable property SuH_PCSbpoint auto
	GlobalVariable property SuH_PCSdpoint auto
	GlobalVariable property SuH_PCSspoint auto
	GlobalVariable property SuH_PCSmpoint auto
	GlobalVariable property SuH_PCSbdsm auto
	GlobalVariable property SuH_PCSbdsmspecial auto
	GlobalVariable property SuH_PCSstackmaxsex auto
	GlobalVariable property SuH_PCSstackmaxsperm auto
	GlobalVariable property SuH_PCSstackmaxmilk auto
	GlobalVariable property SuH_PCScaphealthdown auto
	GlobalVariable property SuH_PCScapmagickadown auto
	GlobalVariable property SuH_PCScapstaminadown 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_PCSdesiregain auto
	GlobalVariable property SuH_PCSalchemy auto
	GlobalVariable property SuH_PCSalteration auto
	GlobalVariable property SuH_PCSblock auto
	GlobalVariable property SuH_PCSconjuration auto
	GlobalVariable property SuH_PCSdestruction auto
	GlobalVariable property SuH_PCSenchanting auto
	GlobalVariable property SuH_PCSheavyarmor auto
	GlobalVariable property SuH_PCSillusion auto
	GlobalVariable property SuH_PCSlightarmor auto
	GlobalVariable property SuH_PCSlockpicking auto
	GlobalVariable property SuH_PCSmarksman auto
	GlobalVariable property SuH_PCSonehanded auto
	GlobalVariable property SuH_PCSpickpocket auto
	GlobalVariable property SuH_PCSrestoration auto
	GlobalVariable property SuH_PCSsmithing auto
	GlobalVariable property SuH_PCSsneak auto
	GlobalVariable property SuH_PCSspeechcraft auto
	GlobalVariable property SuH_PCStwohanded auto
;end/
;ent/ CHK - Checking / State variables
	GlobalVariable property SuH_CHKsdinact auto
	GlobalVariable property SuH_CHKdied auto
	GlobalVariable property SuH_CHKcsprocessing auto
;end/
;ent/ SET - Setting Variables
	GlobalVariable property SuH_SETallowmalehomo auto
	GlobalVariable property SuH_SETallowfemalehomo auto
	GlobalVariable property SuH_SETdrainally auto
	GlobalVariable property SuH_SETrestrictact auto
	GlobalVariable property SuH_SETsdloseitems auto
	GlobalVariable property SuH_SETsdlosegold auto
	GlobalVariable property SuH_SETsdloseequip auto
	GlobalVariable property SuH_SETnpcabsorb auto
	GlobalVariable property SuH_SETfreepassivereset auto
	GlobalVariable Property SuH_SETallowdrainkill auto
	GlobalVariable Property SuH_SETcombatseduction auto
	GlobalVariable Property SuH_SETnpc2npchealth auto
	GlobalVariable Property SuH_SETnpc2npchealthmin auto
	GlobalVariable Property SuH_SETnpc2pchealth auto
	GlobalVariable Property SuH_SETnpc2pchealthmin auto
	GlobalVariable Property SuH_SETpc2npchealth auto
	GlobalVariable Property SuH_SETpc2npchealthmin auto
	GlobalVariable Property SuH_SETpc2npcstamina 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_SETdesirecap auto
	GlobalVariable Property SuH_SETrandomdeathspawn auto
	GlobalVariable property SuH_SETclearactor auto
	GlobalVariable property SuH_SETcalmaura auto
	GlobalVariable property SuH_SETcsbleedoutdelay auto
	GlobalVariable property SuH_SETdisablehealthrecovery auto
	GlobalVariable property SuH_SETdisablemagickarecovery auto
	GlobalVariable property SuH_SETdisablestaminarecovery auto
	GlobalVariable property SuH_SETadvancedchecking auto
	GlobalVariable property SuH_SETinvactmale auto
	GlobalVariable property SuH_SETinvactfemale auto
	GlobalVariable property SuH_SETinvactmalecreature auto
	GlobalVariable property SuH_SETinvactfemalecreature auto
;end/
;ent/ OR - Override
	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
;end/
;ent/ PET - Pet Variables
	GlobalVariable property SuH_PETsummonlevel auto
	GlobalVariable property SuH_PETsummonxp auto
	GlobalVariable property SuH_PETdogxp auto
	GlobalVariable property SuH_PETdoglevel auto
	GlobalVariable property SuH_PETdogeffect auto
	GlobalVariable property SuH_PETwolfxp auto
	GlobalVariable property SuH_PETwolflevel auto
	GlobalVariable property SuH_PETwolfeffect auto
	GlobalVariable property SuH_PEThorsexp auto
	GlobalVariable property SuH_PEThorselevel auto
	GlobalVariable property SuH_PEThorseeffect auto
	GlobalVariable property SuH_PETskeeverxp auto
	GlobalVariable property SuH_PETskeeverlevel auto
	GlobalVariable property SuH_PETskeevereffect auto
	GlobalVariable property SuH_PETfamiliarxp auto
	GlobalVariable property SuH_PETfamiliarlevel auto
	GlobalVariable property SuH_PETfamiliareffect auto
	GlobalVariable property SuH_PETbearxp auto
	GlobalVariable property SuH_PETbearlevel auto
	GlobalVariable property SuH_PETbeareffect auto
	GlobalVariable property SuH_PETsabrecatxp auto
	GlobalVariable property SuH_PETsabrecatlevel auto
	GlobalVariable property SuH_PETsabrecateffect auto
	GlobalVariable property SuH_PETdraugrxp auto
	GlobalVariable property SuH_PETdraugrlevel auto
	GlobalVariable property SuH_PETdraugreffect auto
	GlobalVariable property SuH_PETtrollxp auto
	GlobalVariable property SuH_PETtrolllevel auto
	GlobalVariable property SuH_PETtrolleffect auto
	GlobalVariable property SuH_PETsprigganxp auto
	GlobalVariable property SuH_PETsprigganlevel auto
	GlobalVariable property SuH_PETsprigganeffect auto
	GlobalVariable property SuH_PEThorkerxp auto
	GlobalVariable property SuH_PEThorkerlevel auto
	GlobalVariable property SuH_PEThorkereffect auto
	GlobalVariable property SuH_PETfalmerxp auto
	GlobalVariable property SuH_PETfalmerlevel auto
	GlobalVariable property SuH_PETfalmereffect auto
	GlobalVariable property SuH_PETdogunlock auto
	GlobalVariable property SuH_PETwolfunlock auto
	GlobalVariable property SuH_PEThorseunlock auto
	GlobalVariable property SuH_PETskeeverunlock auto
	GlobalVariable property SuH_PETfamiliarunlock auto
	GlobalVariable property SuH_PETbearunlock auto
	GlobalVariable property SuH_PETsabrecatunlock auto
	GlobalVariable property SuH_PETdraugrunlock auto
	GlobalVariable property SuH_PETtrollunlock auto
	GlobalVariable property SuH_PETsprigganunlock auto
	GlobalVariable property SuH_PEThorkerunlock auto
	GlobalVariable property SuH_PETfalmerunlock auto
	GlobalVariable property SuH_PETeffect auto
	GlobalVariable property SuH_PETeffectstrength auto
	GlobalVariable property SuH_PEThuskyxp auto
	GlobalVariable property SuH_PEThuskylevel auto
	GlobalVariable property SuH_PEThuskyeffect auto
	GlobalVariable property SuH_PEThuskyunlock auto
	GlobalVariable property SuH_PETbristlexp auto
	GlobalVariable property SuH_PETbristlelevel auto
	GlobalVariable property SuH_PETbristleeffect auto
	GlobalVariable property SuH_PETbristleunlock auto
	GlobalVariable property SuH_PETseekerxp auto
	GlobalVariable property SuH_PETseekerlevel auto
	GlobalVariable property SuH_PETseekereffect auto
	GlobalVariable property SuH_PETseekerunlock auto
	GlobalVariable property SuH_PETgargoylexp auto
	GlobalVariable property SuH_PETgargoylelevel auto
	GlobalVariable property SuH_PETgargoyleeffect auto
	GlobalVariable property SuH_PETgargoyleunlock auto
	GlobalVariable property SuH_PETnetchxp auto
	GlobalVariable property SuH_PETnetchlevel auto
	GlobalVariable property SuH_PETnetcheffect auto
	GlobalVariable property SuH_PETnetchunlock auto
	GlobalVariable property SuH_PETrieklingxp auto
	GlobalVariable property SuH_PETrieklinglevel auto
	GlobalVariable property SuH_PETrieklingeffect auto
	GlobalVariable property SuH_PETrieklingunlock auto
	GlobalVariable property SuH_PETspiderlevel auto
	GlobalVariable property SuH_PETspiderxp auto
	GlobalVariable property SuH_PETspiderunlock auto
	GlobalVariable property SuH_PETspidereffect auto
;end/
;ent/ PERK - Perk Variables
	GlobalVariable property SuH_perk_orgasm auto
	GlobalVariable property SuH_perk_orgasml auto
	GlobalVariable property SuH_perk_allyorgasm auto
	GlobalVariable property SuH_perk_allyorgasml auto
	GlobalVariable property SuH_perk_absorb auto
	GlobalVariable property SuH_perk_absorbl auto
	GlobalVariable property SuH_perk_sperm auto
	GlobalVariable property SuH_perk_sperml auto
	GlobalVariable property SuH_perk_milk auto
	GlobalVariable property SuH_perk_milkl auto
	GlobalVariable property SuH_perk_killdrain auto
	GlobalVariable property SuH_perk_killdrainl auto
;end/
;ent/ RANK - Passive Variables
	GlobalVariable property SuH_rank_healthyabsorber auto
	GlobalVariable property SuH_rank_seducer auto
	GlobalVariable property SuH_rank_masochist auto
	GlobalVariable property SuH_rank_masochist2 auto
	GlobalVariable property SuH_rank_masochistCD auto
	GlobalVariable property SuH_rank_perfectorgasm auto
	GlobalVariable property SuH_rank_perfectorgasm2 auto
	GlobalVariable property SuH_rank_giftedconsent auto
	GlobalVariable property SuH_rank_lusciousliquids auto
	GlobalVariable property SuH_rank_lusciousliquids2 auto
	GlobalVariable property SuH_rank_forcemaster auto
	GlobalVariable property SuH_rank_savingessence auto
	GlobalVariable property SuH_rank_savingessence2 auto
	GlobalVariable property SuH_rank_savingessenceCD auto
	GlobalVariable property SuH_rank_valuestacker auto
	GlobalVariable property SuH_rank_selfstacker auto
	GlobalVariable property SuH_rank_deviouspartner auto
	GlobalVariable property SuH_rank_deviouspartner2 auto
	GlobalVariable property SuH_rank_regalglow auto
	GlobalVariable property SuH_rank_formalbeauty auto
	GlobalVariable property SuH_rank_formalbeauty2 auto
	GlobalVariable property SuH_rank_violence auto
	GlobalVariable property SuH_rank_violence2 auto
	GlobalVariable property SuH_rank_violence3 auto
	GlobalVariable property SuH_rank_violenceCD auto
	GlobalVariable property SuH_rank_bdsm auto
;end/
;end/
;ent/ Spells
	Spell property SuH_sex_inact auto
	Spell property SuH_sex_petspell auto
	Spell property SuH_CHAinvact auto
	Spell Property SuH_spell_petself Auto
	Spell Property SuH_spell_pettarget Auto
	Spell Property SuH_dyna_ability auto
	Spell Property SuH_dyna_player auto
;end/
;ent/ Actors
;Player
;Pets
	Actor property SuH_actor_dog auto
	Actor Property SuH_actor_wolf auto
	Actor Property SuH_actor_horse auto
	Actor Property SuH_actor_skeever auto
	Actor Property SuH_actor_familiar auto
	Actor Property SuH_actor_bear auto
	Actor Property SuH_actor_sabrecat auto
	Actor Property SuH_actor_draugr auto
	Actor Property SuH_actor_troll auto
	Actor Property SuH_actor_spriggan auto
	Actor Property SuH_actor_horker auto
	Actor Property SuH_actor_falmer auto
	Actor Property SuH_actor_husky auto
	Actor Property SuH_actor_bristle auto
	Actor Property SuH_actor_seeker auto
	Actor Property SuH_actor_gargoyle auto
	Actor Property SuH_actor_netch auto
	Actor Property SuH_actor_riekling auto
	Actor Property SuH_actor_spider auto
;end/
;ent/ Faction
	Faction property SuH_petfaction auto
	Faction property CurrentFollowerFaction auto
	Faction property SuH_ignoreabsorb auto
;end/
;ent/ Ingredient
	Ingredient Property SuH_ing_milk auto
	Ingredient Property SuH_ing_sperm auto
	Ingredient Property SuH_ing_vitalitystone auto
	Ingredient Property SuH_ing_empowermentstone auto
	Ingredient Property SuH_ing_specialtystone auto
	Ingredient Property SuH_ing_soulofdesire auto
	Ingredient Property SuH_ing_soulofexperience auto
	Ingredient Property SuH_ing_soulofforce auto
	Ingredient Property SuH_ing_souloflife auto
	Ingredient Property SuH_ing_soulofmagic auto
	Ingredient Property SuH_ing_soulofpower auto
;end/
;ent/ MiscObject
	MiscObject property Gold001 auto
	MiscObject property Lockpick auto
	MiscObject property SuH_misc_bloodchip auto
;end/
;ent/ Armor
	Armor property SuH_armor_regalglow auto
;end/
GlobalVariable property SuH_CHKcsplayerattack auto
GlobalVariable property SuH_CHKcsplayersubmit auto

;ent/ Properties
;ent/ PCS - Player Character Status
	int property _PCSxp = 0 auto
;end/ 
;ent/ Craft
	int property _craftmemmax = 5 auto
	int property _craftmemcount = 0 auto
	int property _craftanareq = 0 auto
	int property _craftanaxp = 0 auto
	form property _craftanaitem auto
;end/ 
;end/ 
;end/

;ent/ Script Variables
int trackConfirm
int trackValue
int proccraft
string trackString
actor seducedNPC
string seducedType
actor activesoulpet
string activesoulpetid
;end/

;ent/ 4.6 Exclusive Function (Update new references)
Function UpdateNewRefSys()
	_s = Game.GetFormFromFile(0x16E496, "Succubus Heart.esp") as SuH_Status
	_s.SuH_PCSabsorbhealth = SuH_PCSabsorbhealth.GetValue() as int
	_s.SuH_PCSabsorbmagicka = SuH_PCSabsorbmagicka.GetValue() as int
	_s.SuH_PCSabsorbstamina = SuH_PCSabsorbstamina.GetValue() as int
	_s.SuH_PCSbdsm = SuH_PCSbdsm.GetValue() as int
	_s.SuH_PCSbdsmspecial = SuH_PCSbdsmspecial.GetValue() as int
	_s.SuH_PCSbpoint = SuH_PCSbpoint.GetValue() as int
	_s.SuH_PCScaphealth = SuH_PCScaphealth.GetValue() as int
	_s.SuH_PCScaphealthdown = SuH_PCScaphealthdown.GetValue() as int
	_s.SuH_PCScaphealthitem = SuH_PCScaphealthitem.GetValue() as int
	_s.SuH_PCScapmagicka = SuH_PCScapmagicka.GetValue() as int
	_s.SuH_PCScapmagickadown = SuH_PCScapmagickadown.GetValue() as int
	_s.SuH_PCScapmagickaitem = SuH_PCScapmagickaitem.GetValue() as int
	_s.SuH_PCScapstamina = SuH_PCScapstamina.GetValue() as int
	_s.SuH_PCScapstaminadown = SuH_PCScapstaminadown.GetValue() as int
	_s.SuH_PCScapstaminaitem = SuH_PCScapstaminaitem.GetValue() as int
	_s.SuH_PCSdesire = SuH_PCSdesire.GetValue() as int
	_s.SuH_PCSdesiregain = SuH_PCSdesiregain.GetValue() as int
	_s.SuH_PCSdpoint = SuH_PCSdpoint.GetValue() as int
	_s.SuH_PCSforce = SuH_PCSforce.GetValue() as int
	_s.SuH_PCSmilkhealth = SuH_PCSmilkhealth.GetValue() as int
	_s.SuH_PCSmilkmagicka = SuH_PCSmilkmagicka.GetValue() as int
	_s.SuH_PCSmilkstamina = SuH_PCSmilkstamina.GetValue() as int
	_s.SuH_PCSmpoint = SuH_PCSmpoint.GetValue() as int
	_s.SuH_PCSsp = SuH_PCSsp.GetValue() as int
	_s.SuH_PCSspearned = SuH_PCSspearned.GetValue() as int
	_s.SuH_PCSspermhealth = SuH_PCSspermhealth.GetValue() as int
	_s.SuH_PCSspermmagicka = SuH_PCSspermmagicka.GetValue() as int
	_s.SuH_PCSspermstamina = SuH_PCSspermstamina.GetValue() as int
	_s.SuH_PCSspoint = SuH_PCSspoint.GetValue() as int
	_s.SuH_PCSstackmaxmilk = SuH_PCSstackmaxmilk.GetValue() as int
	_s.SuH_PCSstackmaxsex = SuH_PCSstackmaxsex.GetValue() as int
	_s.SuH_PCSstackmaxsperm = SuH_PCSstackmaxsperm.GetValue() as int
	_s.SuH_PCSstackmilk = SuH_PCSstackmilk.GetValue() as int
	_s.SuH_PCSstacksex = SuH_PCSstacksex.GetValue() as int
	_s.SuH_PCSstacksperm = SuH_PCSstacksperm.GetValue() as int
	_s.SuH_PCSxp = SuH_PCSxp.GetValue() as int
	_s.SuH_PCSxpearn = SuH_PCSxpearn.GetValue() as int
	_s.SuH_PCSxpgain = SuH_PCSxpgain.GetValue() as int
	_s.SuH_PCSxpgainitem = SuH_PCSxpgainitem.GetValue() as int
	
	_s.SuH_PCSalchemy = SuH_PCSalchemy.GetValue() as int
	_s.SuH_PCSalteration = SuH_PCSalteration.GetValue() as int
	_s.SuH_PCSblock = SuH_PCSblock.GetValue() as int
	_s.SuH_PCSconjuration = SuH_PCSconjuration.GetValue() as int
	_s.SuH_PCSdestruction = SuH_PCSdestruction.GetValue() as int
	_s.SuH_PCSenchanting = SuH_PCSenchanting.GetValue() as int
	_s.SuH_PCSheavyarmor = SuH_PCSheavyarmor.GetValue() as int
	_s.SuH_PCSillusion = SuH_PCSillusion.GetValue() as int
	_s.SuH_PCSlightarmor = SuH_PCSlightarmor.GetValue() as int
	_s.SuH_PCSlockpicking = SuH_PCSlockpicking.GetValue() as int
	_s.SuH_PCSmarksman = SuH_PCSmarksman.GetValue() as int
	_s.SuH_PCSonehanded = SuH_PCSonehanded.GetValue() as int
	_s.SuH_PCSpickpocket = SuH_PCSpickpocket.GetValue() as int
	_s.SuH_PCSrestoration = SuH_PCSrestoration.GetValue() as int
	_s.SuH_PCSsmithing = SuH_PCSsmithing.GetValue() as int
	_s.SuH_PCSsneak = SuH_PCSsneak.GetValue() as int
	_s.SuH_PCSspeechcraft = SuH_PCSspeechcraft.GetValue() as int
	_s.SuH_PCStwohanded = SuH_PCStwohanded.GetValue() as int
	
	_s.SuH_PCSeffectmulti = SuH_PCSeffectmulti.GetValue() as float
	
	_s.SuH_rank_bdsm = SuH_rank_bdsm.GetValue() as int
	_s.SuH_rank_deviouspartner = SuH_rank_deviouspartner.GetValue() as int
	_s.SuH_rank_deviouspartner2 = SuH_rank_deviouspartner2.GetValue() as int
	_s.SuH_rank_forcemaster = SuH_rank_forcemaster.GetValue() as int
	_s.SuH_rank_formalbeauty = SuH_rank_formalbeauty.GetValue() as int
	_s.SuH_rank_formalbeauty2 = SuH_rank_formalbeauty2.GetValue() as int
	_s.SuH_rank_giftedconsent = SuH_rank_giftedconsent.GetValue() as int
	_s.SuH_rank_healthyabsorber = SuH_rank_healthyabsorber.GetValue() as int
	_s.SuH_rank_lusciousliquids = SuH_rank_lusciousliquids.GetValue() as int
	_s.SuH_rank_lusciousliquids2 = SuH_rank_lusciousliquids2.GetValue() as int
	_s.SuH_rank_masochist = SuH_rank_masochist.GetValue() as int
	_s.SuH_rank_masochist2 = SuH_rank_masochist2.GetValue() as int
	_s.SuH_rank_masochistCD = SuH_rank_masochistCD.GetValue() as int
	_s.SuH_rank_perfectorgasm = SuH_rank_perfectorgasm.GetValue() as int
	_s.SuH_rank_perfectorgasm2 = SuH_rank_perfectorgasm2.GetValue() as int
	_s.SuH_rank_regalglow = SuH_rank_regalglow.GetValue() as int
	_s.SuH_rank_savingessence = SuH_rank_savingessence.GetValue() as int
	_s.SuH_rank_savingessence2 = SuH_rank_savingessence2.GetValue() as int
	_s.SuH_rank_savingessenceCD = SuH_rank_savingessenceCD.GetValue() as int
	_s.SuH_rank_seducer = SuH_rank_seducer.GetValue() as int
	_s.SuH_rank_selfstacker = SuH_rank_selfstacker.GetValue() as int
	_s.SuH_rank_valuestacker = SuH_rank_valuestacker.GetValue() as int
	_s.SuH_rank_violence = SuH_rank_violence.GetValue() as int
	_s.SuH_rank_violence2 = SuH_rank_violence2.GetValue() as int
	_s.SuH_rank_violence3 = SuH_rank_violence3.GetValue() as int
	_s.SuH_rank_violenceCD = SuH_rank_violenceCD.GetValue() as int
	
	_s.SuH_perk_absorb = SuH_perk_absorb.GetValue() as int
	_s.SuH_perk_absorbl = SuH_perk_absorbl.GetValue() as int
	_s.SuH_perk_allyorgasm = SuH_perk_allyorgasm.GetValue() as int
	_s.SuH_perk_allyorgasml = SuH_perk_allyorgasml.GetValue() as int
	_s.SuH_perk_killdrain = SuH_perk_killdrain.GetValue() as int
	_s.SuH_perk_killdrainl = SuH_perk_killdrainl.GetValue() as int
	_s.SuH_perk_milk = SuH_perk_milk.GetValue() as int
	_s.SuH_perk_milkl = SuH_perk_milkl.GetValue() as int
	_s.SuH_perk_orgasm = SuH_perk_orgasm.GetValue() as int
	_s.SuH_perk_orgasml = SuH_perk_orgasml.GetValue() as int
	_s.SuH_perk_sperm = SuH_perk_sperm.GetValue() as int
	_s.SuH_perk_sperml = SuH_perk_sperml.GetValue() as int
	
	_s.SuH_SETadvancedchecking = SuH_SETadvancedchecking.GetValue() as int
	_s.SuH_SETallowdrainkill = SuH_SETallowdrainkill.GetValue() as int
	_s.SuH_SETallowfemalehomo = SuH_SETallowfemalehomo.GetValue() as int
	_s.SuH_SETallowmalehomo = SuH_SETallowmalehomo.GetValue() as int
	_s.SuH_SETalwaysdrainkill = SuH_SETalwaysdrainkill.GetValue() as int
	_s.SuH_SETcalmaura = SuH_SETcalmaura.GetValue() as int
	_s.SuH_SETclearactor = SuH_SETclearactor.GetValue() as int
	_s.SuH_SETcsbleedoutdelay = SuH_SETcsbleedoutdelay.GetValue() as int
	_s.SuH_SETcombatseduction = SuH_SETcombatseduction.GetValue() as int
	_s.SuH_SETconsentdrain = SuH_SETconsentdrain.GetValue() as int
	_s.SuH_SETdeathdrops = SuH_SETdeathdrops.GetValue() as int
	_s.SuH_SETdesirecap = SuH_SETdesirecap.GetValue() as int
	_s.SuH_SETdesiredrain = SuH_SETdesiredrain.GetValue() as int
	_s.SuH_SETdrainally = SuH_SETdrainally.GetValue() as int
	_s.SuH_SETessentialacts = SuH_SETessentialacts.GetValue() as int
	_s.SuH_SETfreepassivereset = SuH_SETfreepassivereset.GetValue() as int
	_s.SuH_SETinvactfemale = SuH_SETinvactfemale.GetValue() as int
	_s.SuH_SETinvactfemalecreature = SuH_SETinvactfemalecreature.GetValue() as int
	_s.SuH_SETinvactmale = SuH_SETinvactmale.GetValue() as int
	_s.SuH_SETinvactmalecreature = SuH_SETinvactmalecreature.GetValue() as int
	_s.SuH_SETnpcabsorb = SuH_SETnpcabsorb.GetValue() as int
	_s.SuH_SETrestrictact = SuH_SETrestrictact.GetValue() as int
	
	_s.SuH_SETsdloseequip = SuH_SETsdloseequip.GetValue() as int
	_s.SuH_SETsdloseitems = SuH_SETsdloseitems.GetValue() as int
	_s.SuH_SETsdlosegold = SuH_SETsdlosegold.GetValue() as int
	_s.SuH_SETspecialdeath = SuH_SETspecialdeath.GetValue() as int
	_s.SuH_SETrandomdeathspawn = SuH_SETrandomdeathspawn.GetValue() as int
	
	_s.SuH_SETnpc2npchealthmin = SuH_SETnpc2npchealthmin.GetValue() as int
	_s.SuH_SETnpc2pchealthmin = SuH_SETnpc2pchealthmin.GetValue() as int
	_s.SuH_SETpc2npchealthmin = SuH_SETpc2npchealthmin.GetValue() as int

	_s.SuH_SETdisablehealthrecovery = SuH_SETdisablehealthrecovery.GetValue() as float
	_s.SuH_SETdisablemagickarecovery = SuH_SETdisablemagickarecovery.GetValue() as float
	_s.SuH_SETdisablestaminarecovery = SuH_SETdisablestaminarecovery.GetValue() as float
	_s.SuH_SETnpc2npchealth = SuH_SETnpc2npchealth.GetValue() as float
	_s.SuH_SETnpc2pchealth = SuH_SETnpc2pchealth.GetValue() as float
	_s.SuH_SETpc2npchealth = SuH_SETpc2npchealth.GetValue() as float
	_s.SuH_SETpc2npcstamina = SuH_SETpc2npcstamina.GetValue() as float
	
	_s.SuH_ORabsorbhealth = SuH_ORabsorbhealth.GetValue() as int
	_s.SuH_ORabsorbmagicka = SuH_ORabsorbmagicka.GetValue() as int
	_s.SuH_ORabsorbstamina = SuH_ORabsorbstamina.GetValue() as int
	_s.SuH_ORcaphealth = SuH_ORcaphealth.GetValue() as int
	_s.SuH_ORcapmagicka = SuH_ORcapmagicka.GetValue() as int
	_s.SuH_ORcapstamina = SuH_ORcapstamina.GetValue() as int

	_s.SuH_CHKcsplayerattack = SuH_CHKcsplayerattack.GetValue() as int
	_s.SuH_CHKcsplayersubmit = SuH_CHKcsplayersubmit.GetValue() as int
	_s.SuH_CHKcsprocessing = SuH_CHKcsprocessing.GetValue() as int
	_s.SuH_CHKdied = SuH_CHKdied.GetValue() as int
	_s.SuH_CHKsdinact = SuH_CHKsdinact.GetValue() as int

	_s.SuH_PETeffect = SuH_PETeffect.GetValue() as int
	_s.SuH_PETeffectstrength = SuH_PETeffectstrength.GetValue() as int
	_s.SuH_PETsummonlevel = SuH_PETsummonlevel.GetValue() as int
	_s.SuH_PETsummonxp = SuH_PETsummonxp.GetValue() as int
	_s.SuH_PETbeareffect = SuH_PETbeareffect.GetValue() as int
	_s.SuH_PETbearlevel = SuH_PETbearlevel.GetValue() as int
	_s.SuH_PETbearunlock = SuH_PETbearunlock.GetValue() as int
	_s.SuH_PETbearxp = SuH_PETbearxp.GetValue() as int
	_s.SuH_PETbristleeffect = SuH_PETbristleeffect.GetValue() as int
	_s.SuH_PETbristlelevel = SuH_PETbristlelevel.GetValue() as int
	_s.SuH_PETbristlexp = SuH_PETbristlexp.GetValue() as int
	_s.SuH_PETdogeffect = SuH_PETdogeffect.GetValue() as int
	_s.SuH_PETdoglevel = SuH_PETdoglevel.GetValue() as int
	_s.SuH_PETdogunlock = SuH_PETdogunlock.GetValue() as int
	_s.SuH_PETdogxp = SuH_PETdogxp.GetValue() as int
	_s.SuH_PETdraugreffect = SuH_PETdraugreffect.GetValue() as int
	_s.SuH_PETdraugrlevel = SuH_PETdraugrlevel.GetValue() as int
	_s.SuH_PETdraugrunlock = SuH_PETdraugrunlock.GetValue() as int
	_s.SuH_PETdraugrxp = SuH_PETdraugrxp.GetValue() as int
	_s.SuH_PETfalmereffect = SuH_PETfalmereffect.GetValue() as int
	_s.SuH_PETfalmerlevel = SuH_PETfalmerlevel.GetValue() as int
	_s.SuH_PETfalmerunlock = SuH_PETfalmerunlock.GetValue() as int
	_s.SuH_PETfalmerxp = SuH_PETfalmerxp.GetValue() as int
	_s.SuH_PETfamiliareffect = SuH_PETfamiliareffect.GetValue() as int
	_s.SuH_PETfamiliarlevel = SuH_PETfamiliarlevel.GetValue() as int
	_s.SuH_PETfamiliarunlock = SuH_PETfamiliarunlock.GetValue() as int
	_s.SuH_PETfamiliarxp = SuH_PETfamiliarxp.GetValue() as int
	_s.SuH_PETgargoyleeffect = SuH_PETgargoyleeffect.GetValue() as int
	_s.SuH_PETgargoylelevel = SuH_PETgargoylelevel.GetValue() as int
	_s.SuH_PETgargoyleunlock = SuH_PETgargoyleunlock.GetValue() as int
	_s.SuH_PETgargoylexp = SuH_PETgargoylexp.GetValue() as int
	_s.SuH_PEThorkereffect = SuH_PEThorkereffect.GetValue() as int
	_s.SuH_PEThorkerlevel = SuH_PEThorkerlevel.GetValue() as int
	_s.SuH_PEThorkerunlock = SuH_PEThorkerunlock.GetValue() as int
	_s.SuH_PEThorkerxp = SuH_PEThorkerxp.GetValue() as int
	_s.SuH_PEThorseeffect = SuH_PEThorseeffect.GetValue() as int
	_s.SuH_PEThorselevel = SuH_PEThorselevel.GetValue() as int
	_s.SuH_PEThorseunlock = SuH_PEThorseunlock.GetValue() as int
	_s.SuH_PEThorsexp = SuH_PEThorsexp.GetValue() as int
	_s.SuH_PEThuskyeffect = SuH_PEThuskyeffect.GetValue() as int
	_s.SuH_PEThuskylevel = SuH_PEThuskylevel.GetValue() as int
	_s.SuH_PEThuskyunlock = SuH_PEThuskyunlock.GetValue() as int
	_s.SuH_PEThuskyxp = SuH_PEThuskyxp.GetValue() as int
	_s.SuH_PETnetcheffect = SuH_PETnetcheffect.GetValue() as int
	_s.SuH_PETnetchlevel = SuH_PETnetchlevel.GetValue() as int
	_s.SuH_PETnetchunlock = SuH_PETnetchunlock.GetValue() as int
	_s.SuH_PETnetchxp = SuH_PETnetchxp.GetValue() as int
	_s.SuH_PETrieklingeffect = SuH_PETrieklingeffect.GetValue() as int
	_s.SuH_PETrieklinglevel = SuH_PETrieklinglevel.GetValue() as int
	_s.SuH_PETrieklingunlock = SuH_PETrieklingunlock.GetValue() as int
	_s.SuH_PETrieklingxp = SuH_PETrieklingxp.GetValue() as int
	_s.SuH_PETsabrecateffect = SuH_PETsabrecateffect.GetValue() as int
	_s.SuH_PETsabrecatlevel = SuH_PETsabrecatlevel.GetValue() as int
	_s.SuH_PETsabrecatunlock = SuH_PETsabrecatunlock.GetValue() as int
	_s.SuH_PETsabrecatxp = SuH_PETsabrecatxp.GetValue() as int
	_s.SuH_PETseekereffect = SuH_PETseekereffect.GetValue() as int
	_s.SuH_PETseekerlevel = SuH_PETseekerlevel.GetValue() as int
	_s.SuH_PETseekerunlock = SuH_PETseekerunlock.GetValue() as int
	_s.SuH_PETseekerxp = SuH_PETseekerxp.GetValue() as int
	_s.SuH_PETskeevereffect = SuH_PETskeevereffect.GetValue() as int
	_s.SuH_PETskeeverlevel = SuH_PETskeeverlevel.GetValue() as int
	_s.SuH_PETskeeverunlock = SuH_PETskeeverunlock.GetValue() as int
	_s.SuH_PETskeeverxp = SuH_PETskeeverxp.GetValue() as int
	_s.SuH_PETspidereffect = SuH_PETspidereffect.GetValue() as int
	_s.SuH_PETspiderlevel = SuH_PETspiderlevel.GetValue() as int
	_s.SuH_PETspiderunlock = SuH_PETspiderunlock.GetValue() as int
	_s.SuH_PETspiderxp = SuH_PETspiderxp.GetValue() as int
	_s.SuH_PETsprigganeffect = SuH_PETsprigganeffect.GetValue() as int
	_s.SuH_PETsprigganlevel = SuH_PETsprigganlevel.GetValue() as int
	_s.SuH_PETsprigganunlock = SuH_PETsprigganunlock.GetValue() as int
	_s.SuH_PETsprigganxp = SuH_PETsprigganxp.GetValue() as int
	_s.SuH_PETtrolleffect = SuH_PETtrolleffect.GetValue() as int
	_s.SuH_PETtrolllevel = SuH_PETtrolllevel.GetValue() as int
	_s.SuH_PETtrollunlock = SuH_PETtrollunlock.GetValue() as int
	_s.SuH_PETtrollxp = SuH_PETtrollxp.GetValue() as int
	_s.SuH_PETwolfeffect = SuH_PETwolfeffect.GetValue() as int
	_s.SuH_PETwolflevel = SuH_PETwolflevel.GetValue() as int
	_s.SuH_PETwolfunlock = SuH_PETwolfunlock.GetValue() as int
	_s.SuH_PETwolfxp = SuH_PETwolfxp.GetValue() as int
endFunction
;end/

;ent/ OnInit
Event OnInit()
	InitProperties()
endEvent
;end/

;ent/ Set Properties
Function InitProperties()
	_s = Game.GetFormFromFile(0x16E496, "Succubus Heart.esp") as SuH_Status
endFunction
;end/




;ent/ Tracking
Function trackSet(int trackCost, string trackName)
	trackValue = trackCost
	trackString = trackName
	trackConfirm = 1
endFunction
;end/
;ent/ Perk
		;Perk List
			;orgasm = Have Orgasm +12 BDSM
			;absorb = Absorb status in a sex act +1% XP Gain
			;sperm/milk = Consume sperm/milk +5 Health Cap
			;x Saving Essence = Trigger Saving Essence +5 Health/Stamina Cap
Function perkcalc(string perkName, int value=0)
	if perkName == "orgasm"
		_s.SuH_perk_orgasm += 1
		int y = Math.Floor((((_s.SuH_perk_orgasml * 0.3) * 200) * 0.2) + 5)
		if _s.SuH_perk_orgasm > y
			_s.SuH_PCScapstamina += 2
			_s.SuH_PCScapstaminaitem += 2
			_s.SuH_perk_orgasml += 1
			debug.Notification("Succubus Heart : 'Have Orgasm' Perk Level-up! +2 Stamina Cap")
		endIf
	elseif perkName == "absorb"
		_s.SuH_perk_absorb += 1
		int y = Math.Floor((((_s.SuH_perk_absorbl * 0.35) * 800) * 0.3) + 20)
		if _s.SuH_perk_absorb > y
			_s.SuH_PCScapmagicka += 2
			_s.SuH_PCScapmagickaitem += 2
			_s.SuH_perk_absorbl += 1
			debug.Notification("Succubus Heart : 'Absorb Status' Perk Level-up! +2 Magicka Cap")
		endIf
	elseif perkName == "sperm"
		_s.SuH_perk_sperm += 1
		int y = Math.Floor((((_s.SuH_perk_sperml * 0.3) * 400) * 0.22) + 10)
		if _s.SuH_perk_sperm > y
			_s.SuH_PCSxp += 500
			_s.SuH_perk_sperml += 1
			debug.Notification("Succubus Heart : 'Consume Sperm' Perk Level-up! +500 HeartXP")
		endIf
	elseif perkName == "milk"
		_s.SuH_perk_milk += 1
		int y = Math.Floor((((_s.SuH_perk_milkl * 0.3) * 400) * 0.22) + 10)
		if _s.SuH_perk_milk > y
			_s.SuH_PCSxp += 500
			_s.SuH_perk_milkl += 1
			debug.Notification("Succubus Heart : 'Consume Milk' Perk Level-up! +500 HeartXP")
		endIf
	elseif perkName == "allyorgasm"
		_s.SuH_perk_allyorgasm += 1
		int y = Math.Floor((((_s.SuH_perk_allyorgasml * 0.3) * 140) * 0.18) + 5)
		if _s.SuH_perk_allyorgasm > y
			_s.SuH_PCSxp += 1000
			_s.SuH_perk_allyorgasml += 1
			debug.Notification("Succubus Heart : 'Bring Ally To Orgasm' Perk Level-up! +1000 HeartXP")
		endIf
	elseif perkName == "killdrain"
		_s.SuH_perk_killdrain += 1
		int y = Math.Floor((((_s.SuH_perk_killdrainl * 0.3) * 140) * 0.14) + 3)
		if _s.SuH_perk_killdrain > y
			_s.SuH_PCScaphealth += 2
			_s.SuH_PCScaphealthitem += 2
			_s.SuH_perk_killdrainl += 1
			debug.Notification("Succubus Heart : 'Drain Them To Death' Perk Level-up! +2 Health Cap")
		endIf
	endIf
endFunction
;end/
;ent/ Passive Reset
Function PassiveReset(int freereset=0)
	int passiveresetcost = Math.Floor(500 * _s.playerRef.GetLevel())
	if freereset != 0 || _s.SuH_SETfreepassivereset
		passiveresetcost = 0
	endIf
	if _s.SuH_PCSxp >= passiveresetcost
		_s.SuH_PCSxp -= passiveresetcost
		_s.SuH_PCSbpoint = Math.Floor((_s.SuH_PCScaphealth - 100)+((_s.SuH_PCSabsorbhealth - 1)*5)+((_s.SuH_PCSspermhealth - 1)*2)+((_s.SuH_PCSmilkhealth - 1)*2)+(_s.SuH_rank_bdsm * 5))
		_s.SuH_PCSdpoint = Math.Floor(((_s.SuH_PCSstackmaxsex+_s.SuH_PCSstackmaxsperm+_s.SuH_PCSstackmaxmilk+(_s.SuH_PCSxpgain- 100) - 3)*5)+(_s.SuH_rank_bdsm * 5))
		_s.SuH_PCSspoint = Math.Floor((_s.SuH_PCScapstamina - 100)+((_s.SuH_PCSabsorbstamina - 1)*5)+((_s.SuH_PCSspermstamina - 1)*2)+((_s.SuH_PCSmilkstamina - 1)*2)+(_s.SuH_rank_bdsm * 5))
		_s.SuH_PCSmpoint = Math.Floor((_s.SuH_PCScapmagicka - 100)+((_s.SuH_PCSabsorbmagicka - 1)*5)+((_s.SuH_PCSspermmagicka - 1)*2)+((_s.SuH_PCSmilkmagicka - 1)*2)+(_s.SuH_rank_bdsm * 5))
		_s.SuH_PCSbdsm = (_s.SuH_PCSbpoint+_s.SuH_PCSdpoint+_s.SuH_PCSspoint+_s.SuH_PCSmpoint)
		_s.SuH_rank_masochist = 0
		_s.SuH_rank_masochist2 = 0
		_s.SuH_rank_perfectorgasm = 0
		_s.SuH_rank_perfectorgasm2 = 0
		_s.SuH_rank_giftedconsent = 0
		_s.SuH_rank_lusciousliquids = 0
		_s.SuH_rank_lusciousliquids2 = 0
		_s.SuH_rank_forcemaster = 0
		_s.SuH_rank_savingessence = 0
		_s.SuH_rank_savingessence2 = 0
		_s.SuH_rank_valuestacker = 0
		_s.SuH_rank_selfstacker = 0
		_s.SuH_rank_deviouspartner = 0
		_s.SuH_rank_deviouspartner2 = 0
		_s.SuH_rank_regalglow = 0
		_s.SuH_rank_formalbeauty = 0
		_s.SuH_rank_formalbeauty2 = 0
		_s.SuH_rank_violence = 0
		_s.SuH_rank_violence2 = 0
		_s.SuH_rank_violence3 = 0
		_s.SuH_rank_seducer = 0
		_s.SuH_rank_healthyabsorber = 0
		_s.SuH_PCScaphealthdown = 0
		_s.SuH_PCScapmagickadown = 0
		_s.SuH_PCScapstaminadown = 0
		_s.playerRef.UnequipItem(_s.SuH_armor_regalglow, abSilent=true)
		debug.MessageBox("Passives have been reset to Level 0 and BDSM Rating has been re-calculated.")
	else
		
	endIf
endFunction
;end/
;ent/ Pet Sex Effects
		; Spell Effects
			; 0 = no effect
			; 1 = damage target stamina ( petLVL+sumLVL * 2 )
			; 2 = heal target health ( petLVL+sumLVL * 1 )
			; 3 = damage target magicka ( petLVL+sumLVL * 2 )
			; 4 = Gain HeartXP ( petLVL+sumLVL * 1 )
			; 5 = Damage Health ( petLVL+sumLVL * 1 )
Function spellPET(string petID, Actor petTarget)
	int petL = 0 ; Pet Level
	int petE = 0 ; Spell Effect
	int sumL = _s.SuH_PETsummonlevel
	if petID == "dog"
		petL = _s.SuH_PETdoglevel
		petE = _s.SuH_PETdogeffect
	elseif petID == "wolf"
		petL = _s.SuH_PETwolflevel
		petE = _s.SuH_PETwolfeffect
	elseif petID == "horse"
		petL = _s.SuH_PEThorselevel
		petE = _s.SuH_PEThorseeffect
	elseif petID == "skeever"
		petL = _s.SuH_PETskeeverlevel
		petE = _s.SuH_PETskeevereffect
	elseif petID == "familiar"
		petL = _s.SuH_PETfamiliarlevel
		petE = _s.SuH_PETfamiliareffect
	elseif petID == "bear"
		petL = _s.SuH_PETbearlevel
		petE = _s.SuH_PETbeareffect
	elseif petID == "sabrecat"
		petL = _s.SuH_PETsabrecatlevel
		petE = _s.SuH_PETsabrecateffect
	elseif petID == "draugr"
		petL = _s.SuH_PETdraugrlevel
		petE = _s.SuH_PETdraugreffect
	elseif petID == "troll"
		petL = _s.SuH_PETtrolllevel
		petE = _s.SuH_PETtrolleffect
	elseif petID == "spriggan"
		petL = _s.SuH_PETsprigganlevel
		petE = _s.SuH_PETsprigganeffect
	elseif petID == "horker"
		petL = _s.SuH_PEThorkerlevel
		petE = _s.SuH_PEThorkereffect
	elseif petID == "falmer"
		petL = _s.SuH_PETfalmerlevel
		petE = _s.SuH_PETfalmereffect
	elseif petID == "husky"
		petL = _s.SuH_PEThuskylevel
		petE = _s.SuH_PEThuskyeffect
	elseif petID == "bristle"
		petL = _s.SuH_PETbristlelevel
		petE = _s.SuH_PETbristleeffect
	elseif petID == "seeker"
		petL = _s.SuH_PETseekerlevel
		petE = _s.SuH_PETseekereffect
	elseif petID == "gargoyle"
		petL = _s.SuH_PETgargoylelevel
		petE = _s.SuH_PETgargoyleeffect
	elseif petID == "netch"
		petL = _s.SuH_PETnetchlevel
		petE = _s.SuH_PETnetcheffect
	elseif petID == "riekling"
		petL = _s.SuH_PETrieklinglevel
		petE = _s.SuH_PETrieklingeffect
	elseif petID == "spider"
		petL = _s.SuH_PETspiderlevel
		petE = _s.SuH_PETspidereffect
	endIf
	if petE == 1 ; damage target stamina
		if petTarget.IsInFaction(_s.SuH_petfaction)
		else
			_s.SuH_PETeffect = 1
			_s.SuH_PETeffectstrength = Math.Floor((petL+sumL) * 2)
			petTarget.AddSpell(_s.SuH_sex_petspell)
		endIf
	elseif petE == 2 ; heal target health
		if petTarget.IsInFaction(_s.SuH_petfaction)
		else
			_s.SuH_PETeffect = 2
			_s.SuH_PETeffectstrength = Math.Floor((petL+sumL) * 1)
			petTarget.AddSpell(_s.SuH_sex_petspell)
		endIf
	elseif petE == 3 ; damage target magicka
		if petTarget.IsInFaction(_s.SuH_petfaction)
		else
			_s.SuH_PETeffect = 3
			_s.SuH_PETeffectstrength = Math.Floor((petL+sumL) * 2)
			petTarget.AddSpell(_s.SuH_sex_petspell)
		endIf
	elseif petE == 4 ; gain heartxp
		if petTarget.IsInFaction(_s.SuH_petfaction)
		_s.SuH_PETeffect = 4
		_s.SuH_PETeffectstrength = Math.Floor((petL+sumL) * 1)
		petTarget.AddSpell(_s.SuH_sex_petspell)
		endIf
	elseif petE == 5 ; damage target health
		if petTarget.IsInFaction(_s.SuH_petfaction)
		else
			_s.SuH_PETeffect = 5
			_s.SuH_PETeffectstrength = Math.Floor((petL+sumL) * 1)
			petTarget.AddSpell(_s.SuH_sex_petspell)
		endIf
	endIf
endFunction
;end/
;ent/ Make Essential
Function INVact(actor char)
	int charG = SexLab.GetGender(char)
	if char.GetActorBase().IsEssential()
		;do nothing
	elseif charG == 0
		if _s.SuH_SETinvactmale > 0
			char.AddSpell(_s.SuH_CHAinvact)
			char.GetActorBase().SetEssential(true)
		endIf
	elseif charG == 1
		if _s.SuH_SETinvactfemale > 0
			char.AddSpell(_s.SuH_CHAinvact)
			char.GetActorBase().SetEssential(true)
		endIf
	elseif charG == 2
		if _s.SuH_SETinvactmalecreature > 0
			char.AddSpell(_s.SuH_CHAinvact)
			char.GetActorBase().SetEssential(true)
		endIf
	elseif charG == 3
		if _s.SuH_SETinvactfemalecreature > 0
			char.AddSpell(_s.SuH_CHAinvact)
			char.GetActorBase().SetEssential(true)
		endIf
	endIf
endFunction
;end/
;ent/ Set Seduced / apply seduction cost
		;charNPC : Set the reference/target actor
		;actType : Set aggressive or consent
		; setNPC : 0=proc effect 1=setting npc for future use
Function seducedNPCSet(actor charNPC, string actType, int setNPC)
	if setNPC == 1
		seducedNPC = charNPC
		seducedType = actType
	elseif setNPC == 0
		if seducedNPC == charNPC && seducedNPC != _s.PlayerRef
			if seducedType == actType
				int seducecost = Math.Floor(90 - (_s.SuH_rank_seducer*10))
				if seducecost > 0
					int phealth = _s.PlayerRef.GetBaseActorValue("Health") as int
					int pmagicka = _s.PlayerRef.GetBaseActorValue("Magicka") as int
					int pstamina = _s.PlayerRef.GetBaseActorValue("Stamina") as int
					int nphealth = Math.Floor(phealth - (phealth * (seducecost * 0.01)))
					int npmagicka = Math.Floor(pmagicka - (pmagicka * (seducecost * 0.01)))
					int npstamina = Math.Floor(pstamina - (pstamina * (seducecost * 0.01)))
					_s.PlayerRef.SetActorValue("health", nphealth)
					_s.PlayerRef.SetActorValue("magicka", npmagicka)
					_s.PlayerRef.SetActorValue("stamina", npstamina)
				endIf
			else
				seducedNPC = _s.PlayerRef
			endIf
		else
			seducedNPC = _s.PlayerRef
		endIf
	endIf
endFunction
;end/
;ent/ XPcalc : Calculate XP gained
		; *aPreset : Defines defaults for common actions
		; *aMOD : Active Modifier that adds to XPgain percentage
		; *XPearn : Set XP earned (aPreset overwrites this value) 0=use default
		; *lvlS : Level Scaling, Bonus XP earned per-level [lvlS * playerLevel]
Function XPcalc(string aPreset="none", float aMOD=0.0, int XPearn=0, float lvlS=0.0) 
	If aPreset != "none"
		if aPreset == "PCmastery" ; Mastery Sex Act (Player as aggressor)
			int desireCost = Math.Floor(_s.SuH_PCSdesire * 0.05)
			_s.SuH_PCSdesire -= desireCost
			XPearn = (XPearn + desireCost + _s.SuH_PCSxpearn)
			aMOD = 0.2
			lvlS = 5.0
		elseIf aPreset == "PCtraining" ; Consent Sex Act (Player with consent)
			int desireCost = Math.Floor(_s.SuH_PCSdesire * 0.05)
			_s.SuH_PCSdesire -= desireCost
			XPearn = (XPearn + desireCost + _s.SuH_PCSxpearn)
			aMOD = 0.0
			lvlS = 5.0
		elseIf aPreset == "PCsubmit" ; Submit Sex Act (Player as victim)
			int desireCost = Math.Floor(_s.SuH_PCSdesire * 0.05)
			_s.SuH_PCSdesire -= desireCost
			XPearn = (XPearn + desireCost + _s.SuH_PCSxpearn)
			aMOD = -0.2
			lvlS = 5.0
		elseIf aPreset == "PCsperm" ; Consume Sperm
			aMOD = 0.0
			XPearn = (XPearn + _s.SuH_PCSxpearn)
			lvlS = 5.0
		elseIf aPreset == "PCmilk" ; Consume Milk
			aMOD = 0.0
			XPearn = (XPearn + _s.SuH_PCSxpearn)
			lvlS = 5.0
		elseIf aPreset == "PCorgasm"
			aMOD = 0.0
			lvlS = 0.0
			int desireCost = Math.Floor(_s.SuH_PCSdesire * 0.8)
			_s.SuH_PCSdesire -= desireCost
			XPearn = (XPearn + desireCost + _s.SuH_PCSxpearn)
		else
			debug.trace("SuH ERROR : XPcalc aPreset was invalid", 2)
		endIf
	endIf
		if XPearn == 0
			XPearn = _s.SuH_PCSxpearn
		endIf
		float eMOD = aMOD + (_s.SuH_PCSxpgain*0.01)
		float effectMulti = _s.SuH_PCSeffectmulti
		int PClevel = PlayerRef.GetLevel()
		int x = Math.Floor(((XPearn+(PClevel*lvlS))*(eMOD*effectMulti)))
		int z = x+_s.SuH_PCSxp
		If z < 2000000000 || z > -1
			_s.SuH_PCSxp += x
		elseif z > 2000000000
			_s.SuH_PCSxp = 2000000000
		endIf
		if trackConfirm == 1
			if z > trackValue
				debug.Notification(trackString+" can now be increased!")
				trackConfirm = 0
			endIf
		endIf
endFunction
;end/
;ent/ STATcalc : Calculate Absorption
	; eChar : effected Character
	; *aPreset : defaults for common values [PCmastery PCtraining PCsubmit PCsperm PCmilk]
	; *Stat : Stat to effect "All"=health/magicka/stamina "Health" "Magicka" "Stamina"
	; *aMOD : Active Modifier, Percentage added to the effect
	; *aEffect : Override default absorption values [set to anything that isn't 0.0 to ignore Absorption Stats]
Function STATcalc(Actor eChar, string aPreset="none",string stat="All", float aMOD=0.0,float aEffect=0.0)
		If aPreset != "none"
			if aPreset == "PCmastery" ; Mastery Sex Act
				aMOD = 0.2
				aEffect = 0.0
				perkcalc("absorb")
			elseif aPreset == "PCtraining" ; Consent Sex Act
				aMOD = 0.0
				aEffect = 0.0
				perkcalc("absorb")
			elseif aPreset == "PCsubmit" ; Submit Sex Act
				aMOD = -0.2
				aEffect = 0
				perkcalc("absorb")
			elseif aPreset == "PCsperm" ; Consume Sperm
				aMOD = 0.0
				aEffect = 0.0
				perkcalc("sperm")
			elseif aPreset == "PCmilk" ; Consume Milk
				aMOD = 0.0
				aEffect = 0.0
				perkcalc("milk")
			else
				debug.trace("SuH ERROR : STATcalc aPreset was invalid", 2)
			endIf
		endIf
		if eChar == PlayerRef ; if character is the player
			; Absorb Heal Rate (Recovery per-drained point, defaults to 1.0 [100%])
			float perkabsorbheal = (1.0 + (_s.SuH_rank_healthyabsorber *0.25))
			if Stat == "All" || Stat == "Health" ; Earn Health 
				float effectMulti = _s.SuH_PCSeffectmulti
				float eMOD = (1.0+aMOD)*effectMulti ; Set Multiplier
				float cS = eChar.GetBaseActorValue("health") ; Get Base Stat
				float cScap = 0
				if _s.SuH_ORcaphealth > 0
					cScap = _s.SuH_ORcaphealth
				else
					int plvl = PlayerRef.GetLevel() as int
					cScap = Math.Floor((_s.SuH_PCScaphealth+(plvl*4)) - _s.SuH_PCScaphealthdown) ; Get Stat Cap
				endIf
				float k = 0.0 ; Set-up Absorption Variable
				if aEffect == 0 ; if aEffect is set to default
					if aPreset == "PCsperm" ; Check if preset is PCsperm
						k = _s.SuH_PCSspermhealth ; set to default
					elseIf aPreset == "PCmilk" ; Check if preset is PCmilk
						k = _s.SuH_PCSmilkhealth ; set to default
					else ; Set to general absorption stat
						if _s.SuH_ORabsorbhealth > 0
							k = _s.SuH_ORabsorbhealth
						else
							k = _s.SuH_PCSabsorbhealth
						endIf
					endIf
				else ; If aEffect isn't default
					k = aEffect ; Set absorption calculation to k
				endIf
				if cS >= cScap ; Check if Stat is capped
					int x = Math.Floor(k*eMOD) ; Find total absorption
					_s.playerRef.RestoreActorValue("Health", x * perkabsorbheal)
					if _s.playerRef.GetActorValue("Health") >= cScap
						_s.SuH_PCSforce += x ; Set Force
					endIf
				else ; If stat wasn't capped
					int x = Math.Floor(k*eMOD) ; Find total absorption
					int y = Math.Floor(x+cS) ; Find result stat
					_s.playerRef.RestoreActorValue("Health", x * perkabsorbheal)
					if y <= cScap ; If result is below cap
						eChar.SetActorValue("health", y) ; Set Stat
					else ; If result was above cap
						eChar.SetActorValue("health", cScap) ; Set Stat to cap
						int j = Math.Floor(x-cScap) ; Find absorbed value
						if _s.playerRef.GetActorValue("Health") >= cScap
							_s.SuH_PCSforce += y ; Set Force
						endIf
					endIf
				endIf
			endIf
			if Stat == "All" || Stat == "Magicka" ; Earn Magicka
				float effectMulti = _s.SuH_PCSeffectmulti
				float eMOD = (1.0+aMOD)*effectMulti
				float cS = eChar.GetBaseActorValue("magicka")
				float cScap = 0
				if _s.SuH_ORcapmagicka > 0
					cScap = _s.SuH_ORcapmagicka
				else
					int plvl = _s.PlayerRef.GetLevel()
					cScap = Math.Floor((_s.SuH_PCScapmagicka+(plvl*3)) - _s.SuH_PCScapmagickadown) ; Get Stat Cap
				endIf
				float k = 0.0
				if aEffect == 0
					if aPreset == "PCsperm"
						k = _s.SuH_PCSspermmagicka
					elseIf aPreset == "PCmilk"
						k = _s.SuH_PCSmilkmagicka
					else
						if _s.SuH_ORabsorbmagicka > 0
							k = _s.SuH_ORabsorbmagicka
						else
							k = _s.SuH_PCSabsorbmagicka
						endIf
					endIf
				else
					k = aEffect
				endIf
				if cS >= cScap
					int x = Math.Floor(k*eMOD)
					_s.playerRef.RestoreActorValue("magicka", x * perkabsorbheal)
						if _s.playerRef.GetActorValue("Magicka") >= cScap
							_s.SuH_PCSforce += x
						endIf
				else
					int x = Math.Floor(k*eMOD)
					int y = Math.Floor(x+cS)
					if y <= cScap
						eChar.SetActorValue("magicka", y)
					else
						eChar.SetActorValue("magicka", cScap)
						int j = Math.Floor(x-cScap)
						if _s.playerRef.GetActorValue("Magicka") >= cScap
							_s.SuH_PCSforce += y
						endIf
					endIf
					playerRef.RestoreActorValue("magicka", x * perkabsorbheal)
				endIf
			endIf
			if Stat == "All" || Stat == "Stamina" ; Earn Stamina
				float effectMulti = _s.SuH_PCSeffectmulti
				float eMOD = (1.0+aMOD)*effectMulti
				float cS = eChar.GetBaseActorValue("Stamina")
				float cScap = 0
				if _s.SuH_ORcapstamina > 0
					cScap = _s.SuH_ORcapstamina
				else
					int plvl = PlayerRef.GetLevel() as int
					cScap = Math.Floor((_s.SuH_PCScapstamina+(plvl*3)) - _s.SuH_PCScapstaminadown) ; Get Stat Cap
				endIf
				float k = 0
				if aEffect == 0
					if aPreset == "PCsperm"
						k = _s.SuH_PCSspermstamina
					elseIf aPreset == "PCmilk"
						k = _s.SuH_PCSmilkstamina
					else
						if _s.SuH_ORabsorbstamina > 0
							k = _s.SuH_ORabsorbstamina
						else
							k = _s.SuH_PCSabsorbstamina
						endIf
					endIf
				else
					k = aEffect
				endIf
				if cS >= cScap
					int x = Math.Floor(k*eMOD)
					playerRef.RestoreActorValue("stamina", x)
						if playerRef.GetActorValue("Stamina") >= cScap
							_s.SuH_PCSforce += x
						endIf
				else
					int x = Math.Floor(k*eMOD)
					int y = Math.Floor(x+cS)
					playerRef.RestoreActorValue("stamina", x * perkabsorbheal)
					if y <= cScap
						eChar.SetActorValue("stamina", y)
					else
						eChar.SetActorValue("stamina", cScap)
						int j = Math.Floor(x-cScap)
						if playerRef.GetActorValue("Stamina") >= cScap
							_s.SuH_PCSforce += y
						endIf
					endIf
				endIf
			endIf
		elseif _s.SuH_SETnpcabsorb ; if character isn't the player
			int confirmdrain = 0
			if eChar.GetFactionRank(CurrentFollowerFaction) >= 0
				if _s.SuH_SETdrainally
					confirmdrain = 1
				else
					confirmdrain = 0
				endIf
			else
				confirmdrain = 1
			endIf				
			if confirmdrain == 1
				if Stat == "All" || Stat == "Health"
					if aEffect == 0
						if _s.SuH_ORabsorbhealth > 0
							aEffect = _s.SuH_ORabsorbhealth
						else
							aEffect = _s.SuH_PCSabsorbhealth
						endIf
					endIf
					float effectMulti = _s.SuH_PCSeffectmulti
					float eMOD = (1.0+aMOD)*effectMulti
					float cS = eChar.GetBaseActorValue("health")
					int x = Math.Floor(aEffect*eMOD)
					if x >= cS
						eChar.SetActorValue("health",0)
					else
						int y = Math.Floor(cS-x)
						eChar.SetActorValue("health",y)
					endIf
				endIf
				if Stat == "All" || Stat == "Magicka"
					if aEffect == 0
						if _s.SuH_ORabsorbmagicka > 0
							aEffect = _s.SuH_ORabsorbmagicka
						else
							aEffect = _s.SuH_PCSabsorbmagicka
						endIf
					endIf
					float effectMulti = _s.SuH_PCSeffectmulti
					float eMOD = (1.0+aMOD)*effectMulti
					float cS = eChar.GetBaseActorValue("magicka")
					int x = Math.Floor(aEffect*eMOD)
					if x >= cS
						eChar.SetActorValue("magicka",0)
					else
						int y = Math.Floor(cS-x)
						eChar.SetActorValue("magicka",y)
					endIf
				endIf
				if Stat == "All" || Stat == "Stamina"
					if aEffect == 0
						if _s.SuH_ORabsorbstamina > 0
							aEffect = _s.SuH_ORabsorbstamina
						else
							aEffect = _s.SuH_PCSabsorbstamina
						endIf
					endIf
					float effectMulti = _s.SuH_PCSeffectmulti
					float eMOD = (1.0+aMOD)*effectMulti
					float cS = eChar.GetBaseActorValue("stamina")
					int x = Math.Floor(aEffect*eMOD)
					if x >= cS
						eChar.SetActorValue("stamina",0)
					else
						int y = Math.Floor(cS-x)
						eChar.SetActorValue("stamina",y)
					endIf
				endIf
			endIf
		endIf
endFunction
;end/
;ent/ BDSMcalc : Add BDSM Rating... easily
	; BDSMtype : Which value to increase [b d s m]
	; value : Value to add
Function BDSMcalc(string BDSMtype, int value)
	if BDSMtype == "b"
		_s.SuH_PCSbpoint += value
		_s.SuH_PCSbdsm += value
	elseif BDSMtype == "d"
		_s.SuH_PCSdpoint += value
		_s.SuH_PCSbdsm += value
	elseif BDSMtype == "s"
		_s.SuH_PCSspoint += value
		_s.SuH_PCSbdsm += value
	elseif BDSMtype == "m"
		_s.SuH_PCSmpoint += value
		_s.SuH_PCSbdsm += value
	endIf			
endFunction
;end/
;ent/ ANIMcalc : Calculate animations to start using Succubus Heart's variables
	; sentActor : Actors to animate [only supports an array of 1-2 actors]
	; *victimActor : Set victim Actor, and flags act as aggressive [defaults to no victim]
Function ANIMcalc(actor[] sentActor, actor victimActor=none)
	if sentActor.Length == 2
		actor a0 = sentActor[0]
		actor a1 = sentActor[1]
		int a0g = _s.SexLab.GetGender(a0)
		int a1g = _s.SexLab.GetGender(a1)
		if a0g == 1 ; 0 female
			if a1g == 0 ; 1 male
				bool a0v = True
				bool a1v = True
				if a0.HasSpell(_s.SuH_sex_inact)
					a0v = false
				else
					a0v = _s.SexLab.IsValidActor(a0)
				endIf
				if a1.HasSpell(_s.SuH_sex_inact)
					a1v = false
				else
					a1v = _s.SexLab.IsValidActor(a1)
				endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a0
					animActor[1] = a1
					if victimActor != none ; if aggressive
						if victimActor == a0 ; if female victim
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if male victim
							if _s.SuH_SETrestrictact > 0
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"Cowgirl", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							else
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							endIf
						endIf
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseIf a1g == 2 ; 1 male creature
				bool a0v = True
				bool a1v = True
				if a0.HasSpell(_s.SuH_sex_inact)
					a0v = false
				else
					a0v = _s.SexLab.IsValidActor(a0)
				endIf
				if a1.HasSpell(_s.SuH_sex_inact)
					a1v = false
				else
					a1v = _s.SexLab.IsValidActor(a1)
				endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a0
					animActor[1] = a1
					if victimActor != none ; if aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseif _s.SuH_SETallowfemalehomo > 0
				if a1g == 1 ; 1 female
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a0
						animActor[1] = a1
						if victimActor != none ; if aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"Lesbian", "", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				elseIf a1g == 3 ; 1 female creature
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a0
						animActor[1] = a1
						if victimActor != none ; if aggressive
							if _s.SuH_SETrestrictact > 0
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"Cowgirl", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							else
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							endIf
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				endIf
			endIf
		elseIf a0g == 0 ; 0 male
			if a1g == 1 ; 1 female
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a1
					animActor[1] = a0
					if victimActor != none ; if aggressive
							if victimActor == a1 ; if female victim
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if male attacker
							if _s.SuH_SETrestrictact > 0
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"Cowgirl", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							else
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							endIf
						endIf
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseif a1g == 3 ; 1 female creature
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a1
					animActor[1] = a0
					if victimActor != none ; if aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseIf _s.SuH_SETallowmalehomo > 0
				if a1g == 0 ; 1 male
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a1
						animActor[1] = a0
						if victimActor != none ; if aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				elseif a1g == 2 ; male creature
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a1
						animActor[1] = a0
						if victimActor != none ; if aggressive
							if _s.SuH_SETrestrictact > 0
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"Cowgirl", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							else
								sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
								_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
							endIf
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				endIf
			endIf
		elseIf a0g == 2 ; 0 male creature
			if a1g == 1 ; 1 female
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a1
					animActor[1] = a0
					if victimActor != none ; if aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseIf _s.SuH_SETallowmalehomo > 0
				if a1g == 0 ; 1 male
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a1
						animActor[1] = a0
						if victimActor != none ; if aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				endIf
			endIf
		elseIf a0g == 3 ; 0 female creature
			if a1g == 0 ; 1 male
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
				if a0v == TRUE && a1v == TRUE ; if valid
					actor[] animActor = new actor[2]
					animActor[0] = a0
					animActor[1] = a1
					if victimActor != none ; if aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
					else ; if non-aggressive
						sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
						_s.SexLab.StartSex(animActor, animSET)
					endIf
				endIf
			elseIf _s.SuH_SETallowfemalehomo > 0
				if a1g == 1 ; 1 female
					bool a0v = True
					bool a1v = True
					if a0.HasSpell(_s.SuH_sex_inact)
						a0v = false
					else
						a0v = _s.SexLab.IsValidActor(a0)
					endIf
					if a1.HasSpell(_s.SuH_sex_inact)
						a1v = false
					else
						a1v = _s.SexLab.IsValidActor(a1)
					endIf
					if a0v == TRUE && a1v == TRUE ; if valid
						actor[] animActor = new actor[2]
						animActor[0] = a0
						animActor[1] = a1
						if victimActor != none ; if aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET, victim=victimActor)
						else ; if non-aggressive
							sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByTags(2,"", "Lesbian", requireAll=true)
							_s.SexLab.StartSex(animActor, animSET)
						endIf
					endIf
				endIf
			endIf
		endIf
		if a0 == playerRef || a1 == playerRef
			_s.SuH_CHKcsprocessing = 0
		endIf
	elseif sentActor.Length == 1
		bool c0valid = _s.SexLab.IsValidActor(sentActor[0])
		if c0valid == TRUE ; If actor is valid
			int c0g = _s.SexLab.GetGender(sentActor[0])
			if c0g == 1 ;female
				sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByType(1, 0, 1)
				_s.SexLab.StartSex(sentActor, animSET)
			elseif c0g == 0 ;male
				sslBaseAnimation[] animSET = _s.SexLab.GetAnimationsByType(1, 1, 0)
				_s.SexLab.StartSex(sentActor, animSET)
			endIf
		endIf
	endIf
endFunction
;end/
;ent/ Death Override
Function SDrespawn()
	bool notinact = _s.SexLab.IsValidActor(playerRef)
	if notinact == True
			_s.SuH_CHKsdinact = 0
			_s.SuH_CHKdied = 1
			PlayerRef.SetNoBleedoutRecovery(false)
			float cstat = (playerRef.GetActorValue("Health") / playerRef.GetBaseActorValue("Health")) * playerRef.GetBaseActorValue("Health")
			float statrec =(PlayerRef.GetBaseActorValue("Health") * 0.3) - cstat
			if statrec > 0
				playerRef.RestoreActorValue("Health", statrec)
			else
				playerRef.DamageActorValue("Health", statrec)
			endIf
			cstat = (playerRef.GetActorValue("Magicka") / playerRef.GetBaseActorValue("Magicka")) * playerRef.GetBaseActorValue("Magicka")
			statrec = (PlayerRef.GetBaseActorValue("Magicka") * 0.3) - cstat
			if statrec > 0
				playerRef.RestoreActorValue("Magicka", statrec)
			else
				playerRef.DamageActorValue("Magicka", statrec)
			endIf
			cstat = (playerRef.GetActorValue("Stamina") / playerRef.GetBaseActorValue("Stamina")) * playerRef.GetBaseActorValue("Stamina")
			statrec = (PlayerRef.GetBaseActorValue("Stamina") * 0.3) - cstat
			if statrec > 0
				playerRef.RestoreActorValue("Stamina", statrec)
			else
				playerRef.DamageActorValue("Stamina", statrec)
			endIf
			_s.SuH_sd_returnpoint.MoveTo(PlayerRef)
			PlayerRef.MoveTo(SuH_sevaspawn)
			_s.SuH_sd_lostchest.RemoveItem(Gold001, 999999)
			if _s.SuH_SETsdloseequip > 0
				;Destroy Equipped
				Form leftHand = PlayerRef.GetEquippedObject(0)
				Form rightHand = PlayerRef.GetEquippedObject(1)
				if (leftHand)
					PlayerRef.RemoveItem(leftHand, 1, true, _s.SuH_sd_goldchest)
				endIf
				if (rightHand)
					PlayerRef.RemoveItem(rightHand, 1, true, _s.SuH_sd_goldchest)
				endIf
				int slotsChecked
				slotsChecked += 0x00100000
				slotsChecked += 0x00200000 ;ignore reserved slots
				slotsChecked += 0x80000000
				int thisSlot = 0x01
				while (thisSlot < 0x80000000)
					if(Math.LogicalAnd(slotsChecked, thisSlot) != thisSlot) ;Only check un-checked lots
						Armor thisArmor = PlayerRef.GetWornForm(thisSlot) as Armor
						if (thisArmor)
							slotsChecked += thisArmor.GetSlotMask() ;add slots to slotsChecked
							PlayerRef.RemoveItem(thisArmor, 1, true, _s.SuH_sd_goldchest)
						else ; No armor found
							slotsChecked += thisSlot
						endIf
					endIf
					thisSlot *= 2;double number and move to the next slot
				endWhile
			endIf
			if _s.SuH_SETsdloseitems > 0
				if _s.SuH_SETsdlosegold > 0
					PlayerRef.RemoveItem(Gold001, 999999, true)
					PlayerRef.RemoveAllItems(_s.SuH_sd_lostchest, true)
				else
					PlayerRef.RemoveItem(Gold001, 999999, true, _s.SuH_sd_goldchest)
					PlayerRef.RemoveAllItems(_s.SuH_sd_lostchest, true)
					_s.SuH_sd_goldchest.RemoveItem(Gold001, 999999, true, PlayerRef)
				endIf
			elseif _s.SuH_SETsdlosegold
				PlayerRef.RemoveItem(Gold001, 999999, true)
			endIf
		PlayerRef.SetNoBleedoutRecovery(true)
	else
		_s.SuH_CHKsdinact = 4
	endIf
endFunction
;end/
;ent/ Pet Stat
; [petID - Which actor is being modified]
	; dog = SuH_actor_dog
	; so on....
; Level calculation Guide
	; When summoning actors give them their bonus effects
	; Pets gain bonuses every 3 levels
Function statPet(string petID)
	if petID == "dog"
		actor char = _s.SuH_actor_dog
		int z = Math.Floor(_s.SuH_PETdoglevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "wolf"
		actor char = _s.SuH_actor_wolf
		int z = Math.Floor(_s.SuH_PETwolflevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "horse"
		actor char = _s.SuH_actor_horse
		int z = Math.Floor(_s.SuH_PEThorselevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "skeever"
		actor char = _s.SuH_actor_skeever
		int z = Math.Floor(_s.SuH_PETskeeverlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "familiar"
		actor char = _s.SuH_actor_familiar
		int z = Math.Floor(_s.SuH_PETfamiliarlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "bear"
		actor char = _s.SuH_actor_bear
		int z = Math.Floor(_s.SuH_PETbearlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "sabrecat"
		actor char = _s.SuH_actor_sabrecat
		int z = Math.Floor(_s.SuH_PETsabrecatlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "draugr"
		actor char = _s.SuH_actor_draugr
		int z = Math.Floor(_s.SuH_PETdraugrlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "troll"
		actor char = _s.SuH_actor_troll
		int z = Math.Floor(_s.SuH_PETtrolllevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "spriggan"
		actor char = _s.SuH_actor_spriggan
		int z = Math.Floor(_s.SuH_PETsprigganlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "horker"
		actor char = _s.SuH_actor_horker
		int z = Math.Floor(_s.SuH_PEThorkerlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "falmer"
		actor char = _s.SuH_actor_falmer
		int z = Math.Floor(_s.SuH_PETfalmerlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "husky"
		actor char = _s.SuH_actor_husky
		int z = Math.Floor(_s.SuH_PEThuskylevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "bristle"
		actor char = _s.SuH_actor_bristle
		int z = Math.Floor(_s.SuH_PETbristlelevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "seeker"
		actor char = _s.SuH_actor_seeker
		int z = Math.Floor(_s.SuH_PETseekerlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "gargoyle"
		actor char = _s.SuH_actor_gargoyle
		int z = Math.Floor(_s.SuH_PETgargoylelevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "netch"
		actor char = _s.SuH_actor_netch
		int z = Math.Floor(_s.SuH_PETnetchlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "riekling"
		actor char = _s.SuH_actor_riekling
		int z = Math.Floor(_s.SuH_PETrieklinglevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	elseif petID == "spider"
		actor char = _s.SuH_actor_spider
		int z = Math.Floor(_s.SuH_PETspiderlevel * 20 + 50)
		char.SetActorValue("health", z)
		char.SetActorValue("magicka", z)
		char.SetActorValue("stamina", z)
	endIf
endFunction
;end/
;ent/ Pet XP
; [petID - Which actor is being leveled by ID name ]
	; summoner = PlayerRef
	; dog = SuH_actor_dog
	; so on....
; [sceneID - What scenario the XP was gained with]
	; c=consent a=aggressor v=victim / p=player n=npc
	; example c_p=consent with player
; [valueINT - amount of XP earned in a non-scene]
	; Default is 0 (used as an override for bonuses)
; [actionID - Action which gained XP (none expects default situation)]
	; Bonus scenario ID
Function xpPet(string petID, string sceneID="none", int valueINT=0, string actionID="none")
	int orgasmxp = 50
	int actxp = 10
	if petID == "summoner"
		if valueINT != 0
			_s.SuH_PETsummonxp += valueINT
			levelPet("summoner")
		else
			_s.SuH_PETsummonxp += 5
			levelPet("summoner")
		endIf
	elseif petID == "dog" ; if actor is dog
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETdogxp += orgasmxp
				levelPet("dog")
			else
				_s.SuH_PETdogxp += actxp
				levelPet("dog")
			endIf
		endIf
	elseif petID == "wolf" ; if actor is wolf
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETwolfxp += orgasmxp
				levelPet("wolf")
			else
				_s.SuH_PETwolfxp += actxp
				levelPet("wolf")
			endIf
		endIf
	elseif petID == "horse" ; if actor is horse
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PEThorsexp += orgasmxp
				levelPet("horse")
			else
				_s.SuH_PEThorsexp += actxp
				levelPet("horse")
			endIf
		endIf
	elseif petID == "skeever" ; if actor is skeever
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETskeeverxp += orgasmxp
				levelPet("skeever")
			else
				_s.SuH_PETskeeverxp += actxp
				levelPet("skeever")
			endIf
		endIf
	elseif petID == "familiar" ; if actor is familiar
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETfamiliarxp += orgasmxp
				levelPet("familiar")
			else
				_s.SuH_PETfamiliarxp += actxp
				levelPet("familiar")
			endIf
		endIf
	elseif petID == "bear" ; if actor is bear
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETbearxp += orgasmxp
				levelPet("bear")
			else
				_s.SuH_PETbearxp += actxp
				levelPet("bear")
			endIf
		endIf
	elseif petID == "sabrecat" ; if actor is sabrecat
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETsabrecatxp += orgasmxp
				levelPet("sabrecat")
			else
				_s.SuH_PETsabrecatxp += actxp
				levelPet("sabrecat")
			endIf
		endIf
	elseif petID == "draugr" ; if actor is draugr
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETdraugrxp += orgasmxp
				levelPet("draugr")
			else
				_s.SuH_PETdraugrxp += actxp
				levelPet("draugr")
			endIf
		endIf
	elseif petID == "troll" ; if actor is troll
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETtrollxp += orgasmxp
				levelPet("troll")
			else
				_s.SuH_PETtrollxp += actxp
				levelPet("troll")
			endIf
		endIf
	elseif petID == "spriggan" ; if actor is spriggan
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETsprigganxp += orgasmxp
				levelPet("spriggan")
			else
				_s.SuH_PETsprigganxp += actxp
				levelPet("spriggan")
			endIf
		endIf
	elseif petID == "horker" ; if actor is horker
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PEThorkerxp += orgasmxp
				levelPet("horker")
			else
				_s.SuH_PEThorkerxp += actxp
				levelPet("horker")
			endIf
		endIf
	elseif petID == "falmer" ; if actor is falmer
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETfalmerxp += orgasmxp
				levelPet("falmer")
			else
				_s.SuH_PETfalmerxp += actxp
				levelPet("falmer")
			endIf
		endIf
	elseif petID == "husky"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PEThuskyxp += orgasmxp
				levelPet("husky")
			else
				_s.SuH_PEThuskyxp += actxp
				levelPet("husky")
			endIf
		endIf
	elseif petID == "bristle"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETbristlexp += orgasmxp
				levelPet("bristle")
			else
				_s.SuH_PETbristlexp += actxp
				levelPet("bristle")
			endIf
		endIf
	elseif petID == "seeker"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETseekerxp += orgasmxp
				levelPet("seeker")
			else
				_s.SuH_PETseekerxp += actxp
				levelPet("seeker")
			endIf
		endIf
	elseif petID == "gargoyle"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETgargoylexp += orgasmxp
				levelPet("gargoyle")
			else
				_s.SuH_PETgargoylexp += actxp
				levelPet("gargoyle")
			endIf
		endIf
	elseif petID == "netch"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETnetchxp += orgasmxp
				levelPet("netch")
			else
				_s.SuH_PETnetchxp += actxp
				levelPet("netch")
			endIf
		endIf
	elseif petID == "riekling"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETrieklingxp += orgasmxp
				levelPet("riekling")
			else
				_s.SuH_PETrieklingxp += actxp
				levelPet("riekling")
			endIf
		endIf
	elseif petID == "spider"
		if actionID == "hit"
			;; INSERT HEALTH RETREAT CHECK ::
		elseif sceneID != "none" ; if in a scene
			if actionID == "orgasm" ; if triggered from orgasm
				_s.SuH_PETspiderxp += orgasmxp
				levelPet("spider")
			else
				_s.SuH_PETspiderxp += actxp
				levelPet("spider")
			endIf
		endIf
	endIf
endFunction
;end/
;ent/ Pet Level
	; [PetID - Which actor is being leveled by ID name]
	; SummonerXP Gain = 20 + (4 * tier)
Function levelPet(string petID)
	if petID == "summoner"
		int levelcost = Math.Floor((_s.SuH_PETsummonlevel*1.8) * 40 + 20)
		if _s.SuH_PETsummonxp >= levelcost
			_s.SuH_PETsummonxp -= levelcost
			_s.SuH_PETsummonlevel += 1
			; Display Message
			if _s.SuH_PETsummonlevel > 4
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"!")
			elseif _s.SuH_PETsummonlevel == 4
				SuH_PETfamiliarunlock.SetValue(1)
				SuH_PETsabrecatunlock.SetValue(1)
				SuH_PETfalmerunlock.SetValue(1)
				SuH_PETtrollunlock.SetValue(1)
				SuH_PETgargoyleunlock.SetValue(1)
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"! New Summons Unlocked!")
			elseif _s.SuH_PETsummonlevel == 3
				SuH_PEThorseunlock.SetValue(1)
				SuH_PEThorkerunlock.SetValue(1)
				SuH_PETsprigganunlock.SetValue(1)
				SuH_PETbearunlock.SetValue(1)
				SuH_PEThuskyunlock.SetValue(1)
				SuH_PETseekerunlock.SetValue(1)
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"! New Summons Unlocked!")
			elseif _s.SuH_PETsummonlevel == 2
				SuH_PETwolfunlock.SetValue(1)
				SuH_PETdraugrunlock.SetValue(1)
				SuH_PETbristleunlock.SetValue(1)
				SuH_PETnetchunlock.SetValue(1)
				SuH_PETrieklingunlock.SetValue(1)
				SuH_PETspiderunlock.SetValue(1)
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"! New Summons Unlocked!")
			elseif _s.SuH_PETsummonlevel == 1
				SuH_PETskeeverunlock.SetValue(1)
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"! New Summons Unlocked!")
			else
				debug.Notification("Summoner level has increased to "+_s.SuH_PETsummonlevel+"!")
			endIf
		endIf
	elseif petID == "dog"
		int levelcost = Math.Floor((_s.SuH_PETdoglevel*2) * 50 + 20)
		if _s.SuH_PETdogxp >= levelcost
			_s.SuH_PETdogxp -= levelcost
			_s.SuH_PETdoglevel += 1
			statPet("dog")
			xpPET("summoner", valueINT=20)
			; Display Message
				debug.Notification("Dog [Incubus] level has increased to "+_s.SuH_PETdoglevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "wolf"
		int levelcost = Math.Floor((_s.SuH_PETwolflevel*2) * 50 + 20)
		if _s.SuH_PETwolfxp >= levelcost
			_s.SuH_PETwolfxp -= levelcost
			_s.SuH_PETwolflevel += 1
			statPet("wolf")
			xpPET("summoner", valueINT=28)
			; Display Message
				debug.Notification("Wolf [Incubus] level has increased to "+_s.SuH_PETwolflevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "horse"
		int levelcost = Math.Floor((_s.SuH_PEThorselevel*2) * 50 + 20)
		if _s.SuH_PEThorsexp >= levelcost
			_s.SuH_PEThorsexp -= levelcost
			_s.SuH_PEThorselevel += 1
			statPet("horse")
			xpPET("summoner", valueINT=32)
			; Display Message
				debug.Notification("Horse [Incubus] level has increased to "+_s.SuH_PEThorselevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "skeever"
		int levelcost = Math.Floor((_s.SuH_PETskeeverlevel*2) * 50 + 20)
		if _s.SuH_PETskeeverxp >= levelcost
			_s.SuH_PETskeeverxp -= levelcost
			_s.SuH_PETskeeverlevel += 1
			statPet("skeever")
			xpPET("summoner", valueINT=24)
			; Display Message
				debug.Notification("Skeever [Incubus] level has increased to "+_s.SuH_PETskeeverlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "familiar"
		int levelcost = Math.Floor((_s.SuH_PETfamiliarlevel*2) * 50 + 20)
		if _s.SuH_PETfamiliarxp >= levelcost
			_s.SuH_PETfamiliarxp -= levelcost
			_s.SuH_PETfamiliarlevel += 1
			statPet("familiar")
			xpPET("summoner", valueINT=36)
			; Display Message
			debug.Notification("Flame Familiar [Incubus] level has increased to "+_s.SuH_PETfamiliarlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "bear"
		int levelcost = Math.Floor((_s.SuH_PETbearlevel*2) * 50 + 20)
		if _s.SuH_PETbearxp >= levelcost
			_s.SuH_PETbearxp -= levelcost
			_s.SuH_PETbearlevel += 1
			statPet("bear")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Bear [Incubus] level has increased to "+_s.SuH_PETbearlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "sabrecat"
		int levelcost = Math.Floor((_s.SuH_PETsabrecatlevel*2) * 50 + 20)
		if _s.SuH_PETsabrecatxp >= levelcost
			_s.SuH_PETsabrecatxp -= levelcost
			_s.SuH_PETsabrecatlevel += 1
			statPet("sabrecat")
			xpPET("summoner", valueINT=36)
			; Display Message
				debug.Notification("Sabre Cat [Incubus] level has increased to "+_s.SuH_PETsabrecatlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "draugr"
		int levelcost = Math.Floor((_s.SuH_PETdraugrlevel*2) * 50 + 20)
		if _s.SuH_PETdraugrxp >= levelcost
			_s.SuH_PETdraugrxp -= levelcost
			_s.SuH_PETdraugrlevel += 1
			statPet("draugr")
			xpPET("summoner", valueINT=28)
			; Display Message
				debug.Notification("Draugr [Incubus] level has increased to "+_s.SuH_PETdraugrlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "troll"
		int levelcost = Math.Floor((_s.SuH_PETtrolllevel*2) * 50 + 20)
		if _s.SuH_PETtrollxp >= levelcost
			_s.SuH_PETtrollxp -= levelcost
			_s.SuH_PETtrolllevel += 1
			statPet("troll")
			xpPET("summoner", valueINT=36)
			; Display Message
			debug.Notification("Troll [Incubus] level has increased to "+_s.SuH_PETtrolllevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "Spriggan"
		int levelcost = Math.Floor((_s.SuH_PETSprigganlevel*2) * 50 + 20)
		if _s.SuH_PETSprigganxp >= levelcost
			_s.SuH_PETSprigganxp -= levelcost
			_s.SuH_PETSprigganlevel += 1
			statPet("spriggan")
			xpPET("summoner", valueINT=32)
			; Display Message
				debug.Notification("Spriggan [Succubus] level has increased to "+_s.SuH_PETSprigganlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "horker"
		int levelcost = Math.Floor((_s.SuH_PEThorkerlevel*2) * 50 + 20)
		if _s.SuH_PEThorkerxp >= levelcost
			_s.SuH_PEThorkerxp -= levelcost
			_s.SuH_PEThorkerlevel += 1
			statPet("horker")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Horker [Incubus] level has increased to "+_s.SuH_PEThorkerlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "falmer"
		int levelcost = Math.Floor((_s.SuH_PETfalmerlevel*2) * 50 + 20)
		if _s.SuH_PETfalmerxp >= levelcost
			_s.SuH_PETfalmerxp -= levelcost
			_s.SuH_PETfalmerlevel += 1
			statPet("falmer'")
			xpPET("summoner", valueINT=36)
			; Display Message
			debug.Notification("Falmer [Incubus] level has increased to "+_s.SuH_PETfalmerlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "husky"
		int levelcost = Math.Floor((_s.SuH_PEThuskylevel*2) * 50 + 20)
		if _s.SuH_PEThuskyxp >= levelcost
			_s.SuH_PEThuskyxp -= levelcost
			_s.SuH_PEThuskylevel += 1
			statPet("husky")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Husky [Incubus] level has increased to "+_s.SuH_PEThuskylevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "bristle"
		int levelcost = Math.Floor((_s.SuH_PETbristlelevel*2) * 50 + 20)
		if _s.SuH_PETbristlexp >= levelcost
			_s.SuH_PETbristlexp -= levelcost
			_s.SuH_PETbristlelevel += 1
			statPet("bristle")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Bristle [Incubus] level has increased to "+_s.SuH_PETbristlelevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "seeker"
		int levelcost = Math.Floor((_s.SuH_PETseekerlevel*2) * 50 + 20)
		if _s.SuH_PETseekerxp >= levelcost
			_s.SuH_PETseekerxp -= levelcost
			_s.SuH_PETseekerlevel += 1
			statPet("seeker")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Seeker [Incubus] level has increased to "+_s.SuH_PETseekerlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "gargoyle"
		int levelcost = Math.Floor((_s.SuH_PETgargoylelevel*2) * 50 + 20)
		if _s.SuH_PETgargoylexp >= levelcost
			_s.SuH_PETgargoylexp -= levelcost
			_s.SuH_PETgargoylelevel += 1
			statPet("gargoyle")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Gargoyle [Incubus] level has increased to "+_s.SuH_PETgargoylelevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "netch"
		int levelcost = Math.Floor((_s.SuH_PETnetchlevel*2) * 50 + 20)
		if _s.SuH_PETnetchxp >= levelcost
			_s.SuH_PETnetchxp -= levelcost
			_s.SuH_PETnetchlevel += 1
			statPet("netch")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Netch [Incubus] level has increased to "+_s.SuH_PETnetchlevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "riekling"
		int levelcost = Math.Floor((_s.SuH_PETrieklinglevel*2) * 50 + 20)
		if _s.SuH_PETrieklingxp >= levelcost
			_s.SuH_PETrieklingxp -= levelcost
			_s.SuH_PETrieklinglevel += 1
			statPet("riekling")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Riekling [Incubus] level has increased to "+_s.SuH_PETrieklinglevel+"! Stats have been given a boost!")
		endIf
	elseif petID == "spider"
		int levelcost = Math.Floor((_s.SuH_PETspiderlevel*2) * 50 + 20)
		if _s.SuH_PETspiderxp >= levelcost
			_s.SuH_PETspiderxp -= levelcost
			_s.SuH_PETspiderlevel += 1
			statPet("spider")
			xpPET("summoner", valueINT=32)
			; Display Message
			debug.Notification("Spider [Incubus] level has increased to "+_s.SuH_PETspiderlevel+"! Stats have been given a boost!")
		endIf
	endIf
endFunction
;end/
;ent/ Pet Death
Function deathPet(string petID)
	activesoulpet.Resurrect()
	SoulPetSummon(none)
	debug.Notification("Soul Pet has fallen, Pet has also lost some XP")
	
	float XPdropto = 0.75
	if petID == "dog"
		_s.SuH_PETdogxp = Math.Floor(_s.SuH_PETdogxp * XPdropto)
	elseif petID == "wolf"
		_s.SuH_PETwolfxp = Math.Floor(_s.SuH_PETwolfxp * XPdropto)
	elseif petID == "horse"
		_s.SuH_PEThorsexp = Math.Floor(_s.SuH_PEThorsexp * XPdropto)
	elseif petID == "skeever"
		_s.SuH_PETskeeverxp = Math.Floor(_s.SuH_PETskeeverxp * XPdropto)
	elseif petID == "familiar"
		_s.SuH_PETfamiliarxp = Math.Floor(_s.SuH_PETfamiliarxp * XPdropto)
	elseif petID == "bear"
		_s.SuH_PETbearxp = Math.Floor(_s.SuH_PETbearxp * XPdropto)
	elseif petID == "sabrecat"
		_s.SuH_PETsabrecatxp = Math.Floor(_s.SuH_PETsabrecatxp * XPdropto)
	elseif petID == "draugr"
		_s.SuH_PETdraugrxp = Math.Floor(_s.SuH_PETdraugrxp * XPdropto)
	elseif petID == "troll"
		_s.SuH_PETtrollxp = Math.Floor(_s.SuH_PETtrollxp * XPdropto)
	elseif petID == "spriggan"
		_s.SuH_PETsprigganxp = Math.Floor(_s.SuH_PETsprigganxp * XPdropto)
	elseif petID == "horker"
		_s.SuH_PEThorkerxp = Math.Floor(_s.SuH_PEThorkerxp * XPdropto)
	elseif petID == "falmer"
		_s.SuH_PETfalmerxp = Math.Floor(_s.SuH_PETfalmerxp * XPdropto)
	elseif petID == "husky"
		_s.SuH_PEThuskyxp = Math.Floor(_s.SuH_PEThuskyxp * XPdropto)
	elseif petID == "bristle"
		_s.SuH_PETbristlexp = Math.Floor(_s.SuH_PETbristlexp * XPdropto)
	elseif petID == "seeker"
		_s.SuH_PETseekerxp = Math.Floor(_s.SuH_PETseekerxp * XPdropto)
	elseif petID == "gargoyle"
		_s.SuH_PETgargoylexp = Math.Floor(_s.SuH_PETgargoylexp * XPdropto)
	elseif petID == "netch"
		_s.SuH_PETnetchxp = Math.Floor(_s.SuH_PETnetchxp * XPdropto)
	elseif petID == "riekling"
		_s.SuH_PETrieklingxp = Math.Floor(_s.SuH_PETrieklingxp * XPdropto)
	elseif petID == "spider"
		_s.SuH_PETspiderxp = Math.Floor(_s.SuH_PETspiderxp * XPdropto)
	endIf
	
endFunction
;end/
;ent/ SoulPetPosition
Function SoulPetPosition()
	if activesoulpet != none
		if activesoulpet.HasSpell(_s.SuH_sex_inact)
		elseif (activesoulpet.GetWorldSpace() != playerRef.GetWorldSpace())
			activesoulpet.MoveTo(PlayerRef)
		endIf
	endIf
endFunction
;end/
;ent/ SoulPetActive
Function SoulPetActive(actor SoulPet)
	activesoulpet = SoulPet
	if activesoulpet == none
		activesoulpetid = "none"
	elseif activesoulpet == _s.SuH_actor_bear
		activesoulpetid = "bear"
	elseif activesoulpet == _s.SuH_actor_bristle
		activesoulpetid = "bristle"
	elseif activesoulpet == _s.SuH_actor_dog
		activesoulpetid = "dog"
	elseif activesoulpet == _s.SuH_actor_draugr
		activesoulpetid = "draugr"
	elseif activesoulpet == _s.SuH_actor_falmer
		activesoulpetid = "falmer"
	elseif activesoulpet == _s.SuH_actor_familiar
		activesoulpetid = "familiar"
	elseif activesoulpet == _s.SuH_actor_gargoyle
		activesoulpetid = "gargoyle"
	elseif activesoulpet == _s.SuH_actor_horker
		activesoulpetid = "horker"
	elseif activesoulpet == _s.SuH_actor_horse
		activesoulpetid = "horse"
	elseif activesoulpet == _s.SuH_actor_husky
		activesoulpetid = "husky"
	elseif activesoulpet == _s.SuH_actor_netch
		activesoulpetid = "netch"
	elseif activesoulpet == _s.SuH_actor_riekling
		activesoulpetid = "riekling"
	elseif activesoulpet == _s.SuH_actor_sabrecat
		activesoulpetid = "sabrecat"
	elseif activesoulpet == _s.SuH_actor_seeker
		activesoulpetid = "seeker"
	elseif activesoulpet == _s.SuH_actor_skeever
		activesoulpetid = "skeever"
	elseif activesoulpet == _s.SuH_actor_spider
		activesoulpetid = "spider"
	elseif activesoulpet == _s.SuH_actor_spriggan
		activesoulpetid = "spriggan"
	elseif activesoulpet == _s.SuH_actor_troll
		activesoulpetid = "troll"
	elseif activesoulpet == _s.SuH_actor_wolf
		activesoulpetid = "wolf"
	endif
endFunction
;end/ 
;ent/ SoulPetActiveReturn
actor Function SoulPetActiveReturn()
	return(activesoulpet)
endFunction
string Function SoulPetActiveIDReturn()
	return(activesoulpetid)
endFunction
;end/
;ent/ SoulPetSummon
Function SoulPetSummon(string petID)
	;desummon
	int skipsum = 0
	if activesoulpet != none
		if petID == activesoulpetid
			skipsum = 1
		endIf
		If activesoulpetid == "dog"
			_s.SuH_actor_dog.MoveTo(_s.SuH_realm_petreturndog)
		elseif activesoulpetid == "wolf"
			_s.SuH_actor_wolf.MoveTo(_s.SuH_realm_petreturnwolf)
		elseif activesoulpetid == "horse"
			_s.SuH_actor_horse.MoveTo(_s.SuH_realm_petreturnhorse)
		elseif activesoulpetid == "skeever"
			_s.SuH_actor_skeever.MoveTo(_s.SuH_realm_petreturnskeever)
		elseif activesoulpetid == "familiar"
			_s.SuH_actor_familiar.MoveTo(_s.SuH_realm_petreturnfamiliar)
		elseif activesoulpetid == "bear"
			_s.SuH_actor_bear.MoveTo(_s.SuH_realm_petreturnbear)
		elseif activesoulpetid == "sabrecat"
			_s.SuH_actor_sabrecat.MoveTo(_s.SuH_realm_petreturnsabrecat)
		elseif activesoulpetid == "draugr"
			_s.SuH_actor_draugr.MoveTo(_s.SuH_realm_petreturndraugr)
		elseif activesoulpetid == "troll"
			_s.SuH_actor_troll.MoveTo(_s.SuH_realm_petreturntroll)
		elseif activesoulpetid == "spriggan"
			_s.SuH_actor_spriggan.MoveTo(_s.SuH_realm_petreturnspriggan)
		elseif activesoulpetid == "horker"
			_s.SuH_actor_horker.MoveTo(_s.SuH_realm_petreturnhorker)
		elseif activesoulpetid == "falmer"
			_s.SuH_actor_falmer.MoveTo(_s.SuH_realm_petreturnfalmer)
		elseif activesoulpetid == "husky"
			_s.SuH_actor_husky.MoveTo(_s.SuH_realm_petreturnhusky)
		elseif activesoulpetid == "bristle"
			_s.SuH_actor_bristle.MoveTo(_s.SuH_realm_petreturnbristle)
		elseif activesoulpetid == "seeker"
			_s.SuH_actor_seeker.MoveTo(_s.SuH_realm_petreturnseeker)
		elseif activesoulpetid == "gargoyle"
			_s.SuH_actor_gargoyle.MoveTo(_s.SuH_realm_petreturngargoyle)
		elseif activesoulpetid == "netch"
			_s.SuH_actor_netch.MoveTo(_s.SuH_realm_petreturnnetch)
		elseif activesoulpetid == "riekling"
			_s.SuH_actor_riekling.MoveTo(_s.SuH_realm_petreturnriekling)
		elseif activesoulpetid == "spider"
			_s.SuH_actor_spider.MoveTo(_s.SuH_realm_petreturnspider)
		endIf
		(pDialogueFollower as DialogueFollowerScript).DismissAnimal()
		SoulPetActive(none)
	endIf
	;summon
	if petID != "none" || skipsum == 1
		if petID == "bear"
			SoulPetActive(_s.SuH_actor_bear)
		elseif petID == "bristle"
			SoulPetActive(_s.SuH_actor_bristle)
		elseif petID == "dog"
			SoulPetActive(_s.SuH_actor_dog)
		elseif petID == "draugr"
			SoulPetActive(_s.SuH_actor_draugr)
		elseif petID == "falmer"
			SoulPetActive(_s.SuH_actor_falmer)
		elseif petID == "familiar"
			SoulPetActive(_s.SuH_actor_familiar)
		elseif petID == "gargoyle"
			SoulPetActive(_s.SuH_actor_gargoyle)
		elseif petID == "horker"
			SoulPetActive(_s.SuH_actor_horker)
		elseif petID == "horse"
			SoulPetActive(_s.SuH_actor_horse)
		elseif petID == "husky"
			SoulPetActive(_s.SuH_actor_husky)
		elseif petID == "netch"
			SoulPetActive(_s.SuH_actor_netch)
		elseif petID == "riekling"
			SoulPetActive(_s.SuH_actor_riekling)
		elseif petID == "sabrecat"
			SoulPetActive(_s.SuH_actor_sabrecat)
		elseif petID == "seeker"
			SoulPetActive(_s.SuH_actor_seeker)
		elseif petID == "skeever"
			SoulPetActive(_s.SuH_actor_skeever)
		elseif petID == "spider"
			SoulPetActive(_s.SuH_actor_spider)
		elseif petID == "spriggan"
			SoulPetActive(_s.SuH_actor_spriggan)
		elseif petID == "troll"
			SoulPetActive(_s.SuH_actor_troll)
		elseif petID == "wolf"
			SoulPetActive(_s.SuH_actor_wolf)
		endif
		activesoulpet.MoveTo(PlayerRef)
		(DialogueFollower as DialogueFollowerScript).SetAnimal(activesoulpet)
		statPet(activesoulpetid)
		debug.Notification(activesoulpetid+" Pet has been summoned!")
	else
		debug.Notification("Pet has been returned to the Succubus Realm")
	endIf
endFunction
;end/ 
;ent/ Forge Set Analysis
Function ForgeAnaCalc(string itemtype,form itemtoana)
	if itemtype == "Misc"
		
	endif
endFunction
;end/
;ent/ Forge Item
Function ForgeItemCalc()
	
endFunction
;end/