So got my 3 main pages set up though having some trouble actually displaying the relevant info though it compiles so there isn't a problem in the code i'm just not putting in the syntax right. Maybe someone has some thoughts on what I'm doing wrong?
For the first page i'm trying to display the path/name/id/etc, the relevant data for the players skin, eye, hair face, (hands/feet, since as i understand it thats also a separate texture file) so that as the program changes them dynamically over the core of the mods life the original is preserved for returning to it later however i can't seem to get that data to display (or in some cause trying to fetch it cause the script to fail to compile) I will provide full code at the end for scrutinizing.
Additionally note the Set Base Race basically tells the script "turn the mod on and start tracking" before that you can race menu yourself to your hearts content, but after that if you change your race via race menu or whatever it will result in the same effect as hitting the stage 5 "false argonian" transformation. As i want to make sure it's fetching and recording the actor data i haven't built the start recording data yet so if you don't see a function for that that's intentional at this point.
this is actually working as intended but i feel the names could be better, function wise it works something like this
"Player can Safely house [1] Dragon soul per [5] levels. Once you pass this tolerance level every [5] over that will advance the change 1 stage."
Lastly we have the relations page, this makes heavy use of AKSpeaker to track the id of the NPCs you talk to. Right now I'm only concerned with tracking your contacts but even that isn't working (or im not using the right syntax to display it) but later on it ties into Page one as it will additionally track what race you were when you talked to them, what stage of the transformation you are at, and your relationship. In the end once the player hit level 5 transformation and turns into a "false argonian" (or uses race change all NPCs will treat you as a new character so in theory the same NPC could have 2 records for you, knowing you in two different forms but not knowing their one and the same. You cna correct this by talking to them and passing a persuasion check (which ideally would have them referring to you with their inital relations and racial remarks even if you have a new form)
ScriptName DBEScript Extends SKI_ConfigBase
; should auto fill correctly.
Actor Property PlayerRef Auto
Actor Property akSpeaker Auto
KeyWord Property Vampire Auto
; Declarations
int EvoStage = 0
int SoulVal = 1
int LvlRangeVal = 5
int OverflowVal = 5
string[] cNPCID
string[] cNPCReconizedPCRace
string[] cNPCReconizedPCRelation
string childSuffix = " Adult"
string vampireSuffix
string PlayerSex
Race playerRace
string pcRaceName
string EvoStageName = "Uncontaminated"
Armor pcSkin
TextureSet pcFace
Function NPCConvo()
int i = 0
if (akSpeaker != None)
if (i < 128)
cNPCID[i] = akSpeaker as string
endIf
endif
endFunction
event OnPageReset(string page)
{Called when a new page is selected, including the initial empty page}
playerRace = PlayerRef.GetRace()
pcRaceName = playerRace.GetName()
; pcFace = GetFaceTextureSet()
pcSkin = playerRace.GetSkin()
; eye texture declaration
; hair texture declaration
;Check to see if the player is a child
if PlayerRef.IsChild()
childSuffix = " Child"
EndIf
;Check the sex of the player - since actors never have a -1 you can just check once.
;(Single Gendered races such as Dragons are considered default aka 0) afaik anyway.
if (PlayerRef.GetActorBase().GetSex())
PlayerSex = "Female"
else
PlayerSex = "Male"
endIf
if (page == "Actor Details")
;Check to see if race has Keyword of vampire
if playerRace.HasKeyword(Vampire)
vampireSuffix = " [Vampire]"
EndIf
if (EvoStage == 1)
EvoStageName = "Level 1"
elseif (EvoStage == 2)
EvoStageName = "Level 2"
elseif (EvoStage == 3)
EvoStageName = "Level 3"
elseif (EvoStage == 4)
EvoStageName = "Level 4"
elseif (EvoStage == 5)
EvoStageName = "False Argonian I"
elseif (EvoStage == 6)
EvoStageName = "False Argonian II"
elseif (EvoStage == 7)
EvoStageName = "False Argonian III"
elseif (EvoStage == 8)
EvoStageName = "False Argonian IV"
elseif (EvoStage == 9)
EvoStageName = "False Argonian V"
elseif (EvoStage == 10)
EvoStageName = "Wyrm"
endif
AddTextOptionST("PLAYERRACE_T", "Race", PlayerSex + " " + pcRaceName + childSuffix + vampireSuffix)
AddTextOptionST("PLAYERFACE_T", "Face Texture", "pcFace Placeholder")
AddTextOptionST("PLAYERSKIN_T", "Skin Texture", pcSkin as string)
AddTextOptionST("PLAYEREYE_T", "Eye Texture", "Place Holder")
AddTextOptionST("PLAYERHAIR_T", "Hair Set", "Place Holder")
AddTextOptionST("PLAYERDRAGONSTAGE_T", "Evolution Stage", EvoStageName)
AddToggleOptionST("PLAYERBASERACE", "Set Base Race", 0)
endIf
if (page == "Relations")
int g = 0
While (g <= 128)
if (cNPCID[g] != "")
AddTextOptionST("NPCCONVOS"+g, "Contacts", cNPCID[g])
endif
g = g + 1
endWhile
endIf
if (page == "Soul Threshhold")
; Can safely hold [1] soul per [5] levels. Stages advance for every [5] soul over the limit
AddSliderOptionST("SOUL_LIMIT", "Safe Souls per lvl rng", SoulVal)
AddSliderOptionST("LEVEL_RANGE", "Soul tolerance range", LvlRangeVal)
AddSliderOptionST("SOUL_OVERFLOW", "Num souls over limit for change", OverflowVal)
endIf
endEvent
state SOUL_LIMIT ; SLIDER
event OnSliderOpenST()
SetSliderDialogStartValue(SoulVal)
SetSliderDialogDefaultValue(1)
SetSliderDialogRange(1, 99)
SetSliderDialogInterval(1)
endEvent
event OnSliderAcceptST(float value)
SoulVal = value as int
SetSliderOptionValueST(SoulVal )
endEvent
event OnDefaultST()
SoulVal = 50
SetSliderOptionValueST(SoulVal )
endEvent
event OnHighlightST()
SetInfoText("How many souls per level rang can you safly hold")
endEvent
endState
state LEVEL_RANGE ; SLIDER
event OnSliderOpenST()
SetSliderDialogStartValue(LvlRangeVal)
SetSliderDialogDefaultValue(1)
SetSliderDialogRange(1, 99)
SetSliderDialogInterval(1)
endEvent
event OnSliderAcceptST(float value)
LvlRangeVal = value as int
SetSliderOptionValueST(LvlRangeVal )
endEvent
event OnDefaultST()
LvlRangeVal = 50
SetSliderOptionValueST(LvlRangeVal )
endEvent
event OnHighlightST()
SetInfoText("what is the range before before you can hold more souls")
endEvent
endState
state SOUL_OVERFLOW ; SLIDER
event OnSliderOpenST()
SetSliderDialogStartValue(OverflowVal)
SetSliderDialogDefaultValue(1)
SetSliderDialogRange(1, 99)
SetSliderDialogInterval(1)
endEvent
event OnSliderAcceptST(float value)
LvlRangeVal = value as int
SetSliderOptionValueST(OverflowVal )
endEvent
event OnDefaultST()
LvlRangeVal = 50
SetSliderOptionValueST(OverflowVal )
endEvent
event OnHighlightST()
SetInfoText("how many souls over the threshhold cause a change")
endEvent
endState
event OnConfigInit()
Pages = new string[3]
Pages[0] = "Actor Details"
Pages[1] = "Relations"
Pages[2] = "Soul Threshhold"
endEvent