Jump to content

The C.A.N.S. (Cooperative Algebraic Node Sizing) Framework


Recommended Posts

Posted

is there a patch for sl hormones yet?

 

i dl'ed techbanes patch from page six, but there was nothing in there for hormones

i asked over on the hormones page about this and here is the response i got

 

 

 

Caliban44, on 17 Sept 2015 - 11:01 PM, said:snapback.png

sktrimii, i don't know if this has been answered or not but are you going to make a C.A.N.S. patch for sl hormones?

 

I don't plan to make a patch for CANS (too much to do in my mods right now to invest time learning another but).

 

That said, if someone wants to make a patch between Hormones and CANS, I will be happy to add mod events or other signals in Hormones to make that patch possible.

 

 

i would do it but i know nothing about scripting, i can do small mods but i can't do mods that requires me to script, so i put it out to the LL community can someone make a cans patch for sl hormones?

Posted

 

Looking for some guidance here... I have CANS .14.1.1 installed along with milk mod economy 2015-09-19. When I set the scaling to CANS, the breasts don't seem to change scale. It does work if I set MME to NIO. So what types of debug prints (without digging through everyone's scripts) would I be looking for from CANS to tell what the issue might be?

 

And it may have already been discussed, but I'm also seeing in the CANS MCM that it's managing 2 mods, but I only have MME active and set to CANS and no mods are listed under "deactivate". So does CANS print the mods it thinks it's managing in the debug?

Can't provide serious support since I'm out of town this weekend, check to make sure things appear in the uninstall menu on CANS, check to make sure the breasts should actually be growing, since CANS is going to ignore anything that's 1.0 or below.

CANS debug logging is kinda poor right now (being redone for the 1.0) but anything it prints should be prefaced with "CANS:" or "CANS Framework:"

 

 

OK, then we're on to something. CANS says it's managing 2 mods, but neither mod shows up in uninstall menu. Nodes should definitely be growing. In MME, the breast nodes are listed as being at 2.3.

Posted

 

 

Looking for some guidance here... I have CANS .14.1.1 installed along with milk mod economy 2015-09-19. When I set the scaling to CANS, the breasts don't seem to change scale. It does work if I set MME to NIO. So what types of debug prints (without digging through everyone's scripts) would I be looking for from CANS to tell what the issue might be?

 

And it may have already been discussed, but I'm also seeing in the CANS MCM that it's managing 2 mods, but I only have MME active and set to CANS and no mods are listed under "deactivate". So does CANS print the mods it thinks it's managing in the debug?

Can't provide serious support since I'm out of town this weekend, check to make sure things appear in the uninstall menu on CANS, check to make sure the breasts should actually be growing, since CANS is going to ignore anything that's 1.0 or below.

CANS debug logging is kinda poor right now (being redone for the 1.0) but anything it prints should be prefaced with "CANS:" or "CANS Framework:"

OK, then we're on to something. CANS says it's managing 2 mods, but neither mod shows up in uninstall menu. Nodes should definitely be growing. In MME, the breast nodes are listed as being at 2.3.

Two questions: are you sure it isn't listing negative 2? Because that's what it's going to show when nothing's registered.

 

Did you install CANS on an existing save? Was MME already installed and running?

 

Is anything in the papyrus log from CANS?

Posted

 

 

 

Looking for some guidance here... I have CANS .14.1.1 installed along with milk mod economy 2015-09-19. When I set the scaling to CANS, the breasts don't seem to change scale. It does work if I set MME to NIO. So what types of debug prints (without digging through everyone's scripts) would I be looking for from CANS to tell what the issue might be?

 

And it may have already been discussed, but I'm also seeing in the CANS MCM that it's managing 2 mods, but I only have MME active and set to CANS and no mods are listed under "deactivate". So does CANS print the mods it thinks it's managing in the debug?

Can't provide serious support since I'm out of town this weekend, check to make sure things appear in the uninstall menu on CANS, check to make sure the breasts should actually be growing, since CANS is going to ignore anything that's 1.0 or below.

CANS debug logging is kinda poor right now (being redone for the 1.0) but anything it prints should be prefaced with "CANS:" or "CANS Framework:"

OK, then we're on to something. CANS says it's managing 2 mods, but neither mod shows up in uninstall menu. Nodes should definitely be growing. In MME, the breast nodes are listed as being at 2.3.

Two questions: are you sure it isn't listing negative 2? Because that's what it's going to show when nothing's registered.

 

Did you install CANS on an existing save? Was MME already installed and running?

 

Is anything in the papyrus log from CANS?

 

 

Well, it is -2, which is what threw me off since it says it's managing -1 actor. In that case, the MME implementation of CANS would appear to be broken or there's a conflict somewhere else.

 

I'll have to dig around in the debug logs. Haven't had much of a chance to do that yet.

Posted

 

 

 

 

Looking for some guidance here... I have CANS .14.1.1 installed along with milk mod economy 2015-09-19. When I set the scaling to CANS, the breasts don't seem to change scale. It does work if I set MME to NIO. So what types of debug prints (without digging through everyone's scripts) would I be looking for from CANS to tell what the issue might be?

 

And it may have already been discussed, but I'm also seeing in the CANS MCM that it's managing 2 mods, but I only have MME active and set to CANS and no mods are listed under "deactivate". So does CANS print the mods it thinks it's managing in the debug?

Can't provide serious support since I'm out of town this weekend, check to make sure things appear in the uninstall menu on CANS, check to make sure the breasts should actually be growing, since CANS is going to ignore anything that's 1.0 or below.

CANS debug logging is kinda poor right now (being redone for the 1.0) but anything it prints should be prefaced with "CANS:" or "CANS Framework:"

OK, then we're on to something. CANS says it's managing 2 mods, but neither mod shows up in uninstall menu. Nodes should definitely be growing. In MME, the breast nodes are listed as being at 2.3.
Two questions: are you sure it isn't listing negative 2? Because that's what it's going to show when nothing's registered.

 

Did you install CANS on an existing save? Was MME already installed and running?

 

Is anything in the papyrus log from CANS?

Well, it is -2, which is what threw me off since it says it's managing -1 actor. In that case, the MME implementation of CANS would appear to be broken or there's a conflict somewhere else.

 

I'll have to dig around in the debug logs. Haven't had much of a chance to do that yet.

What about my other question though? Was MME installed on this save before you installed this specific version of CANS

Posted

 

 

 

 

 

Looking for some guidance here... I have CANS .14.1.1 installed along with milk mod economy 2015-09-19. When I set the scaling to CANS, the breasts don't seem to change scale. It does work if I set MME to NIO. So what types of debug prints (without digging through everyone's scripts) would I be looking for from CANS to tell what the issue might be?

 

And it may have already been discussed, but I'm also seeing in the CANS MCM that it's managing 2 mods, but I only have MME active and set to CANS and no mods are listed under "deactivate". So does CANS print the mods it thinks it's managing in the debug?

Can't provide serious support since I'm out of town this weekend, check to make sure things appear in the uninstall menu on CANS, check to make sure the breasts should actually be growing, since CANS is going to ignore anything that's 1.0 or below.

CANS debug logging is kinda poor right now (being redone for the 1.0) but anything it prints should be prefaced with "CANS:" or "CANS Framework:"

OK, then we're on to something. CANS says it's managing 2 mods, but neither mod shows up in uninstall menu. Nodes should definitely be growing. In MME, the breast nodes are listed as being at 2.3.
Two questions: are you sure it isn't listing negative 2? Because that's what it's going to show when nothing's registered.

 

Did you install CANS on an existing save? Was MME already installed and running?

 

Is anything in the papyrus log from CANS?

Well, it is -2, which is what threw me off since it says it's managing -1 actor. In that case, the MME implementation of CANS would appear to be broken or there's a conflict somewhere else.

 

I'll have to dig around in the debug logs. Haven't had much of a chance to do that yet.

What about my other question though? Was MME installed on this save before you installed this specific version of CANS

 

 

This is a new game with both MME and CANS active at the start.

Posted

well.... there is apparently something wrong,

 

		If Plugin_CANS && BreastScale == 1
			CANS_Framework CANS = Quest.GetQuest("CANS") as CANS_Framework
			if CANS
				if !(akActor.HasMagicEffect(Game.GetFormFromFile(0x5e49, "CANS.esp") as MagicEffect)) 	;The target does not have the effect.
					if (akActor.HasSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)) 			;The target has the spell but not the effect, something was called incorrectly and the effect was dispelled but not the spell
						akActor.RemoveSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)			;Now the target neither has the spell nor the effect
					EndIf
					akActor.AddSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell, false) 			;Adds the spell, does not notify if it is added to the Player
					(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) 			;Activates the spell and applies the framework
				EndIf
				CANS.RegisterMyMod(akActor, "Milk Mod Economy", "Milking")
				CANS.Breast(akActor, "Milk Mod Economy", CurrentSize)
			else
				Debug.notification("Something is wrong with CANS, it might have been updated and is no longer working with MME")
			endif

Papyrus log:

 

 

[09/28/2015 - 07:57:49PM] Error: (CB005E48): Spell is permanent (e.g. an ability/addiction/disease) and cannot be Cast..

stack:

[ (CB005E48)].SPELL.Cast() - "<native>" Line ?

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 738

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 56

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call RegisterMod() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call BreastUpdate() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.Breast() - "CANS_Framework.psc" Line 115

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 741

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

 

 

738 line is (Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) ;Activates the spell and applies the framework

 

while it does give error, it should still work with line 737, right?

it seems problem is in ( CANS_Frames[aCount] as CANS_Core ).RegisterMod(ModName, zTarget)

Posted

well.... there is apparently something wrong,

 

		If Plugin_CANS && BreastScale == 1
			CANS_Framework CANS = Quest.GetQuest("CANS") as CANS_Framework
			if CANS
				if !(akActor.HasMagicEffect(Game.GetFormFromFile(0x5e49, "CANS.esp") as MagicEffect)) 	;The target does not have the effect.
					if (akActor.HasSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)) 			;The target has the spell but not the effect, something was called incorrectly and the effect was dispelled but not the spell
						akActor.RemoveSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)			;Now the target neither has the spell nor the effect
					EndIf
					akActor.AddSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell, false) 			;Adds the spell, does not notify if it is added to the Player
					(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) 			;Activates the spell and applies the framework
				EndIf
				CANS.RegisterMyMod(akActor, "Milk Mod Economy", "Milking")
				CANS.Breast(akActor, "Milk Mod Economy", CurrentSize)
			else
				Debug.notification("Something is wrong with CANS, it might have been updated and is no longer working with MME")
			endif

Papyrus log:

 

 

[09/28/2015 - 07:57:49PM] Error: (CB005E48): Spell is permanent (e.g. an ability/addiction/disease) and cannot be Cast..

stack:

[ (CB005E48)].SPELL.Cast() - "<native>" Line ?

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 738

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 56

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call RegisterMod() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call BreastUpdate() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.Breast() - "CANS_Framework.psc" Line 115

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 741

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

 

 

738 line is (Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) ;Activates the spell and applies the framework

 

while it does give error, it should still work with line 737, right?

it seems problem is in ( CANS_Frames[aCount] as CANS_Core ).RegisterMod(ModName, zTarget)

 

 

Few quick questions about this, when exactly is this happening? Right on startup? Or when it tries to register a new actor? I'm finishing up revisions on the framework and core script, and this part was definitely touched, I'll toss the revision up, and I'm gonna modify the implementation guide too. The guide as it stands should work, but the magic effect became a go between a few updates ago and I'm going to modify the implementation to have people just go around it. Hopefully this should prevent these problems.

 

Weird that not everyone had them.

Posted

Do I still need to look into the forun to find the patches, or they are already included in CANS? Also does it support SO3?

 

CANS doesn't provide native support for anything, that would risk breaking way too many things. Some mods (MME, Beeing Female, etc) provide native support for CANS. The patches provided in this thread should be considered broken until further testing. I believe the SGO one worked but do not report any popping witnessed while using it. I'm not sure what SO3 is so unless they've got an option for CANS somewhere, no.

Posted

 

well.... there is apparently something wrong,

 

If Plugin_CANS && BreastScale == 1			CANS_Framework CANS = Quest.GetQuest("CANS") as CANS_Framework			if CANS				if !(akActor.HasMagicEffect(Game.GetFormFromFile(0x5e49, "CANS.esp") as MagicEffect)) 	;The target does not have the effect.					if (akActor.HasSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)) 			;The target has the spell but not the effect, something was called incorrectly and the effect was dispelled but not the spell						akActor.RemoveSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell)			;Now the target neither has the spell nor the effect					EndIf					akActor.AddSpell(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell, false) 			;Adds the spell, does not notify if it is added to the Player					(Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) 			;Activates the spell and applies the framework				EndIf				CANS.RegisterMyMod(akActor, "Milk Mod Economy", "Milking")				CANS.Breast(akActor, "Milk Mod Economy", CurrentSize)			else				Debug.notification("Something is wrong with CANS, it might have been updated and is no longer working with MME")			endif
Papyrus log:

 

 

[09/28/2015 - 07:57:49PM] Error: (CB005E48): Spell is permanent (e.g. an ability/addiction/disease) and cannot be Cast..

stack:

[ (CB005E48)].SPELL.Cast() - "" Line ?

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 738

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 56

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call RegisterMod() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Array index -1 is out of range (0-127)

stack:

[CANS (CB0012CD)].cans_framework.RegisterMyMod() - "CANS_Framework.psc" Line 75

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 740

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

[09/28/2015 - 07:57:49PM] Error: Cannot call BreastUpdate() on a None object, aborting function call

stack:

[CANS (CB0012CD)].cans_framework.Breast() - "CANS_Framework.psc" Line 115

[MME_MilkQUEST (CA00E209)].milkquest.CurrentSize() - "MilkQUEST.psc" Line 741

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.UpdateSize() - "MilkPlayerLoadGame.psc" Line 275

[alias thePlayerRef on quest MME_MilkQUEST (CA00E209)].MilkPlayerLoadGame.OnPlayerLoadGame() - "MilkPlayerLoadGame.psc" Line 59

 

 

738 line is (Game.GetFormFromFile(0x5e48, "CANS.esp") as Spell).Cast(akActor, akActor) ;Activates the spell and applies the framework

 

while it does give error, it should still work with line 737, right?

it seems problem is in ( CANS_Frames[aCount] as CANS_Core ).RegisterMod(ModName, zTarget)

Few quick questions about this, when exactly is this happening? Right on startup? Or when it tries to register a new actor? I'm finishing up revisions on the framework and core script, and this part was definitely touched, I'll toss the revision up, and I'm gonna modify the implementation guide too. The guide as it stands should work, but the magic effect became a go between a few updates ago and I'm going to modify the implementation to have people just go around it. Hopefully this should prevent these problems.

 

Weird that not everyone had them.

Happens every time mod tries to update breast
Posted

Howdy y'all, here's the deal:

 

This week has been living hell. Schoolwork and other commitments have been killing me. This is what I get for trying to take a vacation for a weekend I guess.

 

CANS is getting another re-work. It should be fairly quick compared to the last one. v 0.16 will solve the current problems as well as (hopefully) removing the actor limit altogether. Work will commence in full sometime tomorrow (gods willing) and proceed in force through friday and sunday. Saturday is fucked for me, but everything else should work. Plan is to have v 0.16 ready (or at least nearly so) by monday morning, and tested by tuesday morning. 

 

Posted

Alright everyone this is the big announcement, the second to last big one in CANS lifestyle probably.

 

The CANS rewrite begins now. I'm rewriting the entire thing from scratch essentially, retooling, removing, revamping, and improving almost every single aspect of it. It's going to come with better tracelogging, easier troubleshooting, and better functioning. This means something important: Remove CANS 0.15 and lower. Maybe not just now, but you're gonna need a clean save before upgrading to the next release. 

 

See you on the other side.

Posted

Hey guys, sorry for the bump but I needed to update the OP and figured I could ask for help/feedback at the same time.

 

It's all being rewritten. All of it. I expect the MCM to take the most time just because of how long it got last time. We'll see. I'm writing the new node update functions right now, and intend to modify the way Additive works. Of course you can still allow straight additive, but I was looking at some results in testing (Just pushing things to the limit to see how they end up) and discovered that things get a tad... ridiculous real quick. 

 

I'm thinking that what I'll do is take the highest value plus 1/x * the next highest and then 1/x^2 * the third and 1/x^3 * the fourth and so on to create a descending additive type thing. x would be configurable in the mcm with a default value of 2 or 3 (a value of 1 would disable this). This way instead of 4 mods requesting a scale of 3 and returning breasts at a scale of 12 (roughly the size of the Hindenburg) it would return something in the neighborhood of 5-7 (depending on the default value and how bad my mental math was just now).

 

Any thoughts on that idea?

 

And are there any features (besides compatibility patches) you guys would like to see in the next release or so? Because now is the time to get them in.

 

 

Edit: Oh, and new features/info comin' in below the break:

 

 

Unlimited actors. Seriously.

up to (theoretically) 384 mods supported. Could be more, but since you can only load 254 (assuming you only load Skyrim.esm and CANS.esp) I figured adding support up to 512 was a tad ridiculous. If you guys want it though, I can deliver.

No more hidden items/magiceffects/questaliases/extra scripts. The magic effect will be preserved for backwards compatibility, but everything will now be handled by one script.

This "One Script" paradigm may be removed if CANS seems to slow down under stress. CANS will instead be modified to multi-thread for updates as soon as I can find a good way to dynamically attach scripts to actors/aliases without any of the issues once present.

New configuration options

Significantly improved trace-logging and therefore troubleshooting.

 

 

Posted

I'm thinking that what I'll do is take the highest value plus 1/x * the next highest and then 1/x^2 * the third and 1/x^3 * the fourth and so on to create a descending additive type thing. x would be configurable in the mcm with a default value of 2 or 3 (a value of 1 would disable this). This way instead of 4 mods requesting a scale of 3 and returning breasts at a scale of 12 (roughly the size of the Hindenburg) it would return something in the neighborhood of 5-7 (depending on the default value and how bad my mental math was just now).

 

This is similar to something I played around with. Only suggestion I have is to also include something that accumulates anything that scales a node down in a separate value and then gets combined somehow with the accumulated value of everything scaling the node up. I just subtracted the value that decreased the scale from the value that increased it. For example, if the scale increase ended up being 1.5 and the scale decrease 0.8, the final value used would be 1.5 - (1 - 0.8) = 1.3. This made it so that an increase could easily swamp a decrease but not as easily as it would have been had all of them had been combined and the decrease was say the 3rd or 4th highest value.

Posted

Oh that damn red wall of text .... you got me there...

Sorry mate, just a few more days tops.

Posted

 

Oh that damn red wall of text .... you got me there...

Sorry mate, just a few more days tops.

 

 

At least i didnt open the beer , I was like 1 sec away from opening it to congratulate the mods release.

Posted

Hey guys, sorry for the bump but I needed to update the OP and figured I could ask for help/feedback at the same time.

 

It's all being rewritten. All of it. I expect the MCM to take the most time just because of how long it got last time. We'll see. I'm writing the new node update functions right now, and intend to modify the way Additive works. Of course you can still allow straight additive, but I was looking at some results in testing (Just pushing things to the limit to see how they end up) and discovered that things get a tad... ridiculous real quick. 

 

I'm thinking that what I'll do is take the highest value plus 1/x * the next highest and then 1/x^2 * the third and 1/x^3 * the fourth and so on to create a descending additive type thing. x would be configurable in the mcm with a default value of 2 or 3 (a value of 1 would disable this). This way instead of 4 mods requesting a scale of 3 and returning breasts at a scale of 12 (roughly the size of the Hindenburg) it would return something in the neighborhood of 5-7 (depending on the default value and how bad my mental math was just now).

 

Any thoughts on that idea?

 

And are there any features (besides compatibility patches) you guys would like to see in the next release or so? Because now is the time to get them in.

 

 

Edit: Oh, and new features/info comin' in below the break:

 

 

Unlimited actors. Seriously.

up to (theoretically) 384 mods supported. Could be more, but since you can only load 254 (assuming you only load Skyrim.esm and CANS.esp) I figured adding support up to 512 was a tad ridiculous. If you guys want it though, I can deliver.

No more hidden items/magiceffects/questaliases/extra scripts. The magic effect will be preserved for backwards compatibility, but everything will now be handled by one script.

This "One Script" paradigm may be removed if CANS seems to slow down under stress. CANS will instead be modified to multi-thread for updates as soon as I can find a good way to dynamically attach scripts to actors/aliases without any of the issues once present.

New configuration options

Significantly improved trace-logging and therefore troubleshooting.

 

 

 

I like what your thinking with the values there...sounds good.

 

Posted

 

I'm thinking that what I'll do is take the highest value plus 1/x * the next highest and then 1/x^2 * the third and 1/x^3 * the fourth and so on to create a descending additive type thing. x would be configurable in the mcm with a default value of 2 or 3 (a value of 1 would disable this). This way instead of 4 mods requesting a scale of 3 and returning breasts at a scale of 12 (roughly the size of the Hindenburg) it would return something in the neighborhood of 5-7 (depending on the default value and how bad my mental math was just now).

 

This is similar to something I played around with. Only suggestion I have is to also include something that accumulates anything that scales a node down in a separate value and then gets combined somehow with the accumulated value of everything scaling the node up. I just subtracted the value that decreased the scale from the value that increased it. For example, if the scale increase ended up being 1.5 and the scale decrease 0.8, the final value used would be 1.5 - (1 - 0.8) = 1.3. This made it so that an increase could easily swamp a decrease but not as easily as it would have been had all of them had been combined and the decrease was say the 3rd or 4th highest value.

 

 

Thanks for the advice, I'd kind of forgotten that I'd have to account for decreases in this mode. 

 

On a related note, values of 1.0. Currently they're just completely ignored by the calculation, do you think they should be included in modes other than the additive? The weighted average mode (That I don't think anyone uses) specifically.

Posted

Can you please help with these I read your FAQ and i'm totally confused...

Scriptname BodyScaleRandomizerScript Extends Quest

Import StorageUtil
Import SexLabFramework

Actor Property PlayerRef Auto
Spell Property BSRKickSpell Auto
Spell Property BSRGetSetSpell Auto
Spell Property BSRLoadSpell Auto
;MagicEffect Property BSRSetScaleEffect Auto

String Property LBreastNode = "NPC L Breast" AutoReadOnly
String Property RBreastNode = "NPC R Breast" AutoReadOnly
String Property GenitalsNode = "NPC Genitals01 [Gen01]" AutoReadOnly
String Property ScrotumNode = "NPC GenitalsScrotum [GenScrot]" AutoReadOnly
String Property BellyNode = "NPC Belly" AutoReadOnly
String Property LButtNode = "NPC L Butt" AutoReadOnly
String Property RButtNode = "NPC R Butt" AutoReadOnly

Faction Property BSRInitialized Auto
Int Property GetActorKey = 49 Auto Hidden
Int Property ReRandomizeKey = 50 Auto Hidden
Int Property NeckGapModKey Auto Hidden
Float Property UpdateInterval = 10.00 Auto Hidden

Bool Property BustRandomizeEnable = True Auto Hidden
Bool Property PenisRandomizeEnable = True Auto Hidden
Bool Property ButtRandomizeEnable Auto Hidden
Bool Property BellyRandomizeEnable Auto Hidden
Bool Property HeightRandomizeEnable Auto Hidden
Bool Property WeightRandomizeEnable Auto Hidden
Float Property BustMin = 0.80 Auto Hidden
Float Property BustMax = 1.50 Auto Hidden
Float Property PenisMin = 0.80 Auto Hidden
Float Property PenisMax = 1.50 Auto Hidden
Float Property ButtMin = 0.80 Auto Hidden
Float Property ButtMax = 1.50 Auto Hidden
Float Property BellyMin = 1.00 Auto Hidden
Float Property BellyMax = 2.00 Auto Hidden
Float Property HeightMinMale = 0.97 Auto Hidden
Float Property HeightMaxMale = 1.07 Auto Hidden
Float Property HeightMinFemale = 0.94 Auto Hidden
Float Property HeightMaxFemale = 1.04 Auto Hidden
Float Property WeightMin = 0.00 Auto Hidden
Float Property WeightMax = 100.00 Auto Hidden

Float Property HeightDevArgonianMaxFemale = 0.00 Auto Hidden
Float Property HeightDevArgonianMinFemale = 0.00 Auto Hidden
Float Property HeightDevBretonMaxFemale = 0.00 Auto Hidden
Float Property HeightDevBretonMinFemale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMinFemale = 0.00 Auto Hidden
Float Property HeightDevHighElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevHighElfMinFemale = 0.00 Auto Hidden
Float Property HeightDevImperialMaxFemale = 0.00 Auto Hidden
Float Property HeightDevImperialMinFemale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMaxFemale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMinFemale = 0.00 Auto Hidden
Float Property HeightDevNordMaxFemale = 0.00 Auto Hidden
Float Property HeightDevNordMinFemale = 0.00 Auto Hidden
Float Property HeightDevOrcMaxFemale = 0.00 Auto Hidden
Float Property HeightDevOrcMinFemale = 0.00 Auto Hidden
Float Property HeightDevRedguardMaxFemale = 0.00 Auto Hidden
Float Property HeightDevRedguardMinFemale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMinFemale = 0.00 Auto Hidden

Float Property HeightDevArgonianMaxMale = 0.00 Auto Hidden
Float Property HeightDevArgonianMinMale = 0.00 Auto Hidden
Float Property HeightDevBretonMaxMale = 0.00 Auto Hidden
Float Property HeightDevBretonMinMale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMinMale = 0.00 Auto Hidden
Float Property HeightDevHighElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevHighElfMinMale = 0.00 Auto Hidden
Float Property HeightDevImperialMaxMale = 0.00 Auto Hidden
Float Property HeightDevImperialMinMale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMaxMale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMinMale = 0.00 Auto Hidden
Float Property HeightDevNordMaxMale = 0.00 Auto Hidden
Float Property HeightDevNordMinMale = 0.00 Auto Hidden
Float Property HeightDevOrcMaxMale = 0.00 Auto Hidden
Float Property HeightDevOrcMinMale = 0.00 Auto Hidden
Float Property HeightDevRedguardMaxMale = 0.00 Auto Hidden
Float Property HeightDevRedguardMinMale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMinMale = 0.00 Auto Hidden

Float Function GetRaceDev(Actor ActorRef, Int flag)
	If (ActorRef == None)
		return 0.0
	EndIf

	String sRaceName = ActorRef.GetLeveledActorBase().GetRace().GetName()
	Int iSex = ActorRef.GetLeveledActorBase().GetSex()
	
	If (sRaceName == "Argonian")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevArgonianMinMale
			Else
				return HeightDevArgonianMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevArgonianMaxMale
			Else
				return HeightDevArgonianMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Breton")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevBretonMinMale
			Else
				return HeightDevBretonMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevBretonMaxMale
			Else
				return HeightDevBretonMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Dark Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevDarkElfMinMale
			Else
				return HeightDevDarkElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevDarkElfMaxMale
			Else
				return HeightDevDarkElfMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "High Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevHighElfMinMale
			Else
				return HeightDevHighElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevHighElfMaxMale
			Else
				return HeightDevHighElfMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "IMPERIAL")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevImperialMinMale
			Else
				return HeightDevImperialMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevImperialMaxMale
			Else
				return HeightDevImperialMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Khajiit")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevKhajiitMinMale
			Else
				return HeightDevKhajiitMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevKhajiitMaxMale
			Else
				return HeightDevKhajiitMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Nord")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevNordMinMale
			Else
				return HeightDevNordMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevNordMaxMale
			Else
				return HeightDevNordMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Orc")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevOrcMinMale
			Else
				return HeightDevOrcMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevOrcMaxMale
			Else
				return HeightDevOrcMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Redguard")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevRedguardMinMale
			Else
				return HeightDevRedguardMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevRedguardMaxMale
			Else
				return HeightDevRedguardMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Wood Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevWoodElfMinMale
			Else
				return HeightDevWoodElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevWoodElfMaxMale
			Else
				return HeightDevWoodElfMaxFemale
			EndIf
		EndIf
	Else
		return 0.0
	EndIf
EndFunction

Function ReLoad()
	If PlayerRef.HasSpell(BSRKickSpell)
		BSRLoadSpell.Cast(PlayerRef)
	EndIf
EndFunction

Function GetRandomScale(Actor ActorRef)
	GetRandomBust(ActorRef)
	GetRandomPenis(ActorRef)
	GetRandomButt(ActorRef)
	GetRandomBelly(ActorRef)
	GetRandomHeight(ActorRef)
	GetRandomWeight(ActorRef)
	ActorRef.AddToFaction(BSRInitialized)
EndFunction

Function GetRandomBust(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, LBreastNode, False) && NetImmerse.HasNode(ActorRef, RBreastNode, False)
		Random = Utility.RandomFloat(BustMin, BustMax)		
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Bust", Random)
	EndIf
EndFunction

Function GetRandomPenis(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, GenitalsNode, False) && NetImmerse.HasNode(ActorRef, ScrotumNode, False)
		Random = Utility.RandomFloat(PenisMin, PenisMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Penis", Random)
	EndIf
EndFunction

Function GetRandomButt(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, LButtNode, False) && NetImmerse.HasNode(ActorRef, RButtNode, False)
		Random = Utility.RandomFloat(ButtMin, ButtMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Butt", Random)
	EndIf
EndFunction

Function GetRandomBelly(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, BellyNode, False)
		Random = Utility.RandomFloat(BellyMin, BellyMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Belly", Random)
	EndIf
EndFunction

Function GetRandomHeight(Actor ActorRef)
	Float Random = 0.0
	Float HeightMin = 0.0
	Float HeightMax = 0.0

	If ActorRef.GetLeveledActorBase().GetSex() == 0
		HeightMin = HeightMinMale + GetRaceDev(ActorRef, 0)
		HeightMax = HeightMaxMale + GetRaceDev(ActorRef, 1)
		Random = Utility.RandomFloat(HeightMin, HeightMax)
	Else
		HeightMin = HeightMinFemale + GetRaceDev(ActorRef, 0)
		HeightMax = HeightMaxFemale + GetRaceDev(ActorRef, 1)
		Random = Utility.RandomFloat(HeightMin, HeightMax)
	EndIf

	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Height", Random)
EndFunction

Function GetRandomWeight(Actor ActorRef)
	Float WeightOrg = ActorRef.GetLeveledActorBase().GetWeight()
	Float Random = Utility.RandomFloat(WeightMin, WeightMax)
	Float NeckGapCorrection = (WeightOrg-Random)/100.0

	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Weight", Random)
	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_NeckGapCorrection", NeckGapCorrection)
EndFunction

Function SetActorScale(Actor ActorRef)
	If BustRandomizeEnable
		SetScaleBust(ActorRef)
	EndIf
	If PenisRandomizeEnable
		SetScalePenis(ActorRef)
	EndIf
	If ButtRandomizeEnable
		SetScaleButt(ActorRef)
	EndIf
	If BellyRandomizeEnable
		SetScaleBelly(ActorRef)
	EndIf
	If (!ActorRef.IsDead())
		If HeightRandomizeEnable
			SetScaleHeight(ActorRef)
		EndIf
		If WeightRandomizeEnable
			SetScaleWeight(ActorRef)
		EndIf
	EndIf
EndFunction

Function SetScaleBust(Actor ActorRef)
	Float NewBust = 0.0

	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_BustNot") != 1
		If GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") != 1 || GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") == 1 && GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_BreastExclude") == 1
			NewBust = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Bust")
		EndIf
	EndIf
	
	If NetImmerse.HasNode(ActorRef, LBreastNode, False) && NetImmerse.HasNode(ActorRef, RBreastNode, False) && (NewBust > 0.0)
		NetImmerse.SetNodeScale(ActorRef, LBreastNode, NewBust, False)
		NetImmerse.SetNodeScale(ActorRef, RBreastNode, NewBust , False)
	EndIf
EndFunction

Function SetScalePenis(Actor ActorRef)
	Float NewPenis = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_PenisNot") != 1
		NewPenis = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Penis")
	EndIf
	
	If NetImmerse.HasNode(ActorRef, GenitalsNode, False) && NetImmerse.HasNode(ActorRef, ScrotumNode, False) && (NewPenis > 0.0)
		NetImmerse.SetNodeScale(ActorRef, GenitalsNode, NewPenis, False)
		NetImmerse.SetNodeScale(ActorRef, ScrotumNode, NewPenis / 1.5 , False)
	EndIf
EndFunction

Function SetScaleButt(Actor ActorRef)
	Float NewButt = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_ButtNot") != 1
		NewButt = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Butt")
	EndIf
		
	If NetImmerse.HasNode(ActorRef, LButtNode, False) && NetImmerse.HasNode(ActorRef, RButtNode, False) && (NewButt > 0.0)
		NetImmerse.SetNodeScale(ActorRef, LButtNode, NewButt, False)
		NetImmerse.SetNodeScale(ActorRef, RButtNode, NewButt, False)
	EndIf
EndFunction

Function SetScaleBelly(Actor ActorRef)
	Float NewBelly = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") != 1 || GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") == 1 && GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_BellyExclude") == 1
		If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_BellyNot") != 1
			NewBelly = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Belly")
		EndIf
	EndIf
	
	If NetImmerse.HasNode(ActorRef, BellyNode, False) && (NewBelly > 0.0)
		NetImmerse.SetNodeScale(ActorRef, BellyNode, NewBelly, False)
	EndIf
EndFunction

Function SetScaleHeight(Actor ActorRef)
	Float NewHeight = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_HeightNot") != 1
		NewHeight = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Height")
	EndIf
	
	If !ActorRef.IsOnMount() && (NewHeight > 0) && (!SexLabUtil.IsActorActive(ActorRef))
		ActorRef.GetLeveledActorBase().SetHeight(NewHeight)
		ActorRef.QueueNiNodeUpdate()
		ActorRef.SetScale(NewHeight)
	EndIf
EndFunction

Function SetScaleWeight(Actor ActorRef)
	Float NewWeight = 0.0
	Float OrgWeight = 0.0
	Float NeckDelta = 0.0
	Float NeckDeltaCorrection = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_WeightNot") != 1
		NewWeight = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Weight")
		OrgWeight = ActorRef.GetLeveledActorBase().GetWeight()
		NeckDeltaCorrection = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_NeckGapCorrection")
	EndIf
	
	If !ActorRef.IsOnMount() && (NewWeight > 0.0) && (OrgWeight > 0.0)
		NeckDelta = (OrgWeight - NewWeight ) / 100.0 + NeckDeltaCorrection
		ActorRef.GetLeveledActorBase().SetWeight(NewWeight)
		ActorRef.QueueNiNodeUpdate()
		ActorRef.UpdateWeight(NeckDelta)
	EndIf
EndFunction

Posted

 

Can you please help with these I read your FAQ and i'm totally confused...

 

Scriptname BodyScaleRandomizerScript Extends Quest

Import StorageUtil
Import SexLabFramework

Actor Property PlayerRef Auto
Spell Property BSRKickSpell Auto
Spell Property BSRGetSetSpell Auto
Spell Property BSRLoadSpell Auto
;MagicEffect Property BSRSetScaleEffect Auto

String Property LBreastNode = "NPC L Breast" AutoReadOnly
String Property RBreastNode = "NPC R Breast" AutoReadOnly
String Property GenitalsNode = "NPC Genitals01 [Gen01]" AutoReadOnly
String Property ScrotumNode = "NPC GenitalsScrotum [GenScrot]" AutoReadOnly
String Property BellyNode = "NPC Belly" AutoReadOnly
String Property LButtNode = "NPC L Butt" AutoReadOnly
String Property RButtNode = "NPC R Butt" AutoReadOnly

Faction Property BSRInitialized Auto
Int Property GetActorKey = 49 Auto Hidden
Int Property ReRandomizeKey = 50 Auto Hidden
Int Property NeckGapModKey Auto Hidden
Float Property UpdateInterval = 10.00 Auto Hidden

Bool Property BustRandomizeEnable = True Auto Hidden
Bool Property PenisRandomizeEnable = True Auto Hidden
Bool Property ButtRandomizeEnable Auto Hidden
Bool Property BellyRandomizeEnable Auto Hidden
Bool Property HeightRandomizeEnable Auto Hidden
Bool Property WeightRandomizeEnable Auto Hidden
Float Property BustMin = 0.80 Auto Hidden
Float Property BustMax = 1.50 Auto Hidden
Float Property PenisMin = 0.80 Auto Hidden
Float Property PenisMax = 1.50 Auto Hidden
Float Property ButtMin = 0.80 Auto Hidden
Float Property ButtMax = 1.50 Auto Hidden
Float Property BellyMin = 1.00 Auto Hidden
Float Property BellyMax = 2.00 Auto Hidden
Float Property HeightMinMale = 0.97 Auto Hidden
Float Property HeightMaxMale = 1.07 Auto Hidden
Float Property HeightMinFemale = 0.94 Auto Hidden
Float Property HeightMaxFemale = 1.04 Auto Hidden
Float Property WeightMin = 0.00 Auto Hidden
Float Property WeightMax = 100.00 Auto Hidden

Float Property HeightDevArgonianMaxFemale = 0.00 Auto Hidden
Float Property HeightDevArgonianMinFemale = 0.00 Auto Hidden
Float Property HeightDevBretonMaxFemale = 0.00 Auto Hidden
Float Property HeightDevBretonMinFemale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMinFemale = 0.00 Auto Hidden
Float Property HeightDevHighElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevHighElfMinFemale = 0.00 Auto Hidden
Float Property HeightDevImperialMaxFemale = 0.00 Auto Hidden
Float Property HeightDevImperialMinFemale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMaxFemale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMinFemale = 0.00 Auto Hidden
Float Property HeightDevNordMaxFemale = 0.00 Auto Hidden
Float Property HeightDevNordMinFemale = 0.00 Auto Hidden
Float Property HeightDevOrcMaxFemale = 0.00 Auto Hidden
Float Property HeightDevOrcMinFemale = 0.00 Auto Hidden
Float Property HeightDevRedguardMaxFemale = 0.00 Auto Hidden
Float Property HeightDevRedguardMinFemale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMaxFemale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMinFemale = 0.00 Auto Hidden

Float Property HeightDevArgonianMaxMale = 0.00 Auto Hidden
Float Property HeightDevArgonianMinMale = 0.00 Auto Hidden
Float Property HeightDevBretonMaxMale = 0.00 Auto Hidden
Float Property HeightDevBretonMinMale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevDarkElfMinMale = 0.00 Auto Hidden
Float Property HeightDevHighElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevHighElfMinMale = 0.00 Auto Hidden
Float Property HeightDevImperialMaxMale = 0.00 Auto Hidden
Float Property HeightDevImperialMinMale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMaxMale = 0.00 Auto Hidden
Float Property HeightDevKhajiitMinMale = 0.00 Auto Hidden
Float Property HeightDevNordMaxMale = 0.00 Auto Hidden
Float Property HeightDevNordMinMale = 0.00 Auto Hidden
Float Property HeightDevOrcMaxMale = 0.00 Auto Hidden
Float Property HeightDevOrcMinMale = 0.00 Auto Hidden
Float Property HeightDevRedguardMaxMale = 0.00 Auto Hidden
Float Property HeightDevRedguardMinMale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMaxMale = 0.00 Auto Hidden
Float Property HeightDevWoodElfMinMale = 0.00 Auto Hidden

Float Function GetRaceDev(Actor ActorRef, Int flag)
	If (ActorRef == None)
		return 0.0
	EndIf

	String sRaceName = ActorRef.GetLeveledActorBase().GetRace().GetName()
	Int iSex = ActorRef.GetLeveledActorBase().GetSex()
	
	If (sRaceName == "Argonian")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevArgonianMinMale
			Else
				return HeightDevArgonianMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevArgonianMaxMale
			Else
				return HeightDevArgonianMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Breton")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevBretonMinMale
			Else
				return HeightDevBretonMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevBretonMaxMale
			Else
				return HeightDevBretonMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Dark Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevDarkElfMinMale
			Else
				return HeightDevDarkElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevDarkElfMaxMale
			Else
				return HeightDevDarkElfMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "High Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevHighElfMinMale
			Else
				return HeightDevHighElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevHighElfMaxMale
			Else
				return HeightDevHighElfMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "IMPERIAL")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevImperialMinMale
			Else
				return HeightDevImperialMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevImperialMaxMale
			Else
				return HeightDevImperialMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Khajiit")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevKhajiitMinMale
			Else
				return HeightDevKhajiitMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevKhajiitMaxMale
			Else
				return HeightDevKhajiitMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Nord")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevNordMinMale
			Else
				return HeightDevNordMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevNordMaxMale
			Else
				return HeightDevNordMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Orc")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevOrcMinMale
			Else
				return HeightDevOrcMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevOrcMaxMale
			Else
				return HeightDevOrcMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Redguard")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevRedguardMinMale
			Else
				return HeightDevRedguardMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevRedguardMaxMale
			Else
				return HeightDevRedguardMaxFemale
			EndIf
		EndIf
	ElseIf (sRaceName == "Wood Elf")
		If (flag == 0)
			If (iSex == 0)
				return HeightDevWoodElfMinMale
			Else
				return HeightDevWoodElfMinFemale
			EndIf
		Else
			If (iSex == 0)
				return HeightDevWoodElfMaxMale
			Else
				return HeightDevWoodElfMaxFemale
			EndIf
		EndIf
	Else
		return 0.0
	EndIf
EndFunction

Function ReLoad()
	If PlayerRef.HasSpell(BSRKickSpell)
		BSRLoadSpell.Cast(PlayerRef)
	EndIf
EndFunction

Function GetRandomScale(Actor ActorRef)
	GetRandomBust(ActorRef)
	GetRandomPenis(ActorRef)
	GetRandomButt(ActorRef)
	GetRandomBelly(ActorRef)
	GetRandomHeight(ActorRef)
	GetRandomWeight(ActorRef)
	ActorRef.AddToFaction(BSRInitialized)
EndFunction

Function GetRandomBust(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, LBreastNode, False) && NetImmerse.HasNode(ActorRef, RBreastNode, False)
		Random = Utility.RandomFloat(BustMin, BustMax)		
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Bust", Random)
	EndIf
EndFunction

Function GetRandomPenis(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, GenitalsNode, False) && NetImmerse.HasNode(ActorRef, ScrotumNode, False)
		Random = Utility.RandomFloat(PenisMin, PenisMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Penis", Random)
	EndIf
EndFunction

Function GetRandomButt(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, LButtNode, False) && NetImmerse.HasNode(ActorRef, RButtNode, False)
		Random = Utility.RandomFloat(ButtMin, ButtMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Butt", Random)
	EndIf
EndFunction

Function GetRandomBelly(Actor ActorRef)
	Float Random = 0.0

	If NetImmerse.HasNode(ActorRef, BellyNode, False)
		Random = Utility.RandomFloat(BellyMin, BellyMax)
		SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Belly", Random)
	EndIf
EndFunction

Function GetRandomHeight(Actor ActorRef)
	Float Random = 0.0
	Float HeightMin = 0.0
	Float HeightMax = 0.0

	If ActorRef.GetLeveledActorBase().GetSex() == 0
		HeightMin = HeightMinMale + GetRaceDev(ActorRef, 0)
		HeightMax = HeightMaxMale + GetRaceDev(ActorRef, 1)
		Random = Utility.RandomFloat(HeightMin, HeightMax)
	Else
		HeightMin = HeightMinFemale + GetRaceDev(ActorRef, 0)
		HeightMax = HeightMaxFemale + GetRaceDev(ActorRef, 1)
		Random = Utility.RandomFloat(HeightMin, HeightMax)
	EndIf

	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Height", Random)
EndFunction

Function GetRandomWeight(Actor ActorRef)
	Float WeightOrg = ActorRef.GetLeveledActorBase().GetWeight()
	Float Random = Utility.RandomFloat(WeightMin, WeightMax)
	Float NeckGapCorrection = (WeightOrg-Random)/100.0

	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Weight", Random)
	SetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_NeckGapCorrection", NeckGapCorrection)
EndFunction

Function SetActorScale(Actor ActorRef)
	If BustRandomizeEnable
		SetScaleBust(ActorRef)
	EndIf
	If PenisRandomizeEnable
		SetScalePenis(ActorRef)
	EndIf
	If ButtRandomizeEnable
		SetScaleButt(ActorRef)
	EndIf
	If BellyRandomizeEnable
		SetScaleBelly(ActorRef)
	EndIf
	If (!ActorRef.IsDead())
		If HeightRandomizeEnable
			SetScaleHeight(ActorRef)
		EndIf
		If WeightRandomizeEnable
			SetScaleWeight(ActorRef)
		EndIf
	EndIf
EndFunction

Function SetScaleBust(Actor ActorRef)
	Float NewBust = 0.0

	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_BustNot") != 1
		If GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") != 1 || GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") == 1 && GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_BreastExclude") == 1
			NewBust = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Bust")
		EndIf
	EndIf
	
	If NetImmerse.HasNode(ActorRef, LBreastNode, False) && NetImmerse.HasNode(ActorRef, RBreastNode, False) && (NewBust > 0.0)
		NetImmerse.SetNodeScale(ActorRef, LBreastNode, NewBust, False)
		NetImmerse.SetNodeScale(ActorRef, RBreastNode, NewBust , False)
	EndIf
EndFunction

Function SetScalePenis(Actor ActorRef)
	Float NewPenis = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_PenisNot") != 1
		NewPenis = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Penis")
	EndIf
	
	If NetImmerse.HasNode(ActorRef, GenitalsNode, False) && NetImmerse.HasNode(ActorRef, ScrotumNode, False) && (NewPenis > 0.0)
		NetImmerse.SetNodeScale(ActorRef, GenitalsNode, NewPenis, False)
		NetImmerse.SetNodeScale(ActorRef, ScrotumNode, NewPenis / 1.5 , False)
	EndIf
EndFunction

Function SetScaleButt(Actor ActorRef)
	Float NewButt = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_ButtNot") != 1
		NewButt = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Butt")
	EndIf
		
	If NetImmerse.HasNode(ActorRef, LButtNode, False) && NetImmerse.HasNode(ActorRef, RButtNode, False) && (NewButt > 0.0)
		NetImmerse.SetNodeScale(ActorRef, LButtNode, NewButt, False)
		NetImmerse.SetNodeScale(ActorRef, RButtNode, NewButt, False)
	EndIf
EndFunction

Function SetScaleBelly(Actor ActorRef)
	Float NewBelly = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") != 1 || GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_IsPregnant") == 1 && GetIntValue(ActorRef.GetLeveledActorBase(), "PRG_BellyExclude") == 1
		If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_BellyNot") != 1
			NewBelly = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Belly")
		EndIf
	EndIf
	
	If NetImmerse.HasNode(ActorRef, BellyNode, False) && (NewBelly > 0.0)
		NetImmerse.SetNodeScale(ActorRef, BellyNode, NewBelly, False)
	EndIf
EndFunction

Function SetScaleHeight(Actor ActorRef)
	Float NewHeight = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_HeightNot") != 1
		NewHeight = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Height")
	EndIf
	
	If !ActorRef.IsOnMount() && (NewHeight > 0) && (!SexLabUtil.IsActorActive(ActorRef))
		ActorRef.GetLeveledActorBase().SetHeight(NewHeight)
		ActorRef.QueueNiNodeUpdate()
		ActorRef.SetScale(NewHeight)
	EndIf
EndFunction

Function SetScaleWeight(Actor ActorRef)
	Float NewWeight = 0.0
	Float OrgWeight = 0.0
	Float NeckDelta = 0.0
	Float NeckDeltaCorrection = 0.0
	
	If GetIntValue(ActorRef.GetLeveledActorBase(), "BSR_WeightNot") != 1
		NewWeight = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_Weight")
		OrgWeight = ActorRef.GetLeveledActorBase().GetWeight()
		NeckDeltaCorrection = GetFloatValue(ActorRef.GetLeveledActorBase(), "BSR_NeckGapCorrection")
	EndIf
	
	If !ActorRef.IsOnMount() && (NewWeight > 0.0) && (OrgWeight > 0.0)
		NeckDelta = (OrgWeight - NewWeight ) / 100.0 + NeckDeltaCorrection
		ActorRef.GetLeveledActorBase().SetWeight(NewWeight)
		ActorRef.QueueNiNodeUpdate()
		ActorRef.UpdateWeight(NeckDelta)
	EndIf
EndFunction

 

 

Aight, if you want me to help you troubleshoot 431 lines of code you need to give me more info than "I'm confused."

Is the compiler throwing errors? Is your script not functioning? Is the game crashing when you load it? 

 

Also, please use spoilers if you're going to copy/paste large things. Especially 431 lines of code.

[spoiler] Like this, just in case you weren't sure [/spoiler]

EDIT: Furthermore, why exactly are you asking for my help? Are you trying to make that CANS compatible? Because I don't see a single reference to CANS in there.

Posted

Yes I'm trying to make it CANS compatible and attach the magic effect .

 

The CANS magic effect is now irrelevant. When 0.18 rolls out the implementation post will be rewritten as well to reflect the changes.

 

To make this compatible add the CANS_Framework property up at the top, CANS.RegisterMyMod function wherever the effect/quest/script starts affecting a new actor, and replace the NiOverride calls to the Belly, Breast, and Butt nodes with CANS.Belly, CANS.Breast, and CANS.Butt calls. 

Posted

 

Yes I'm trying to make it CANS compatible and attach the magic effect .

 

The CANS magic effect is now irrelevant. When 0.18 rolls out the implementation post will be rewritten as well to reflect the changes.

 

To make this compatible add the CANS_Framework property up at the top, CANS.RegisterMyMod function wherever the effect/quest/script starts affecting a new actor, and replace the NiOverride calls to the Belly, Breast, and Butt nodes with CANS.Belly, CANS.Breast, and CANS.Butt calls. 

 

 

Thank You

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...