Compare commits

..

2 Commits

Author SHA1 Message Date
Souichirou Nagai 34b0e4fef3 small change 2023-03-27 14:23:05 -07:00
Souichirou Nagai 8755defa30 added 2023-03-23 20:00:47 -07:00
3 changed files with 571 additions and 0 deletions

44
IchirouBodyChange.psc Normal file
View File

@ -0,0 +1,44 @@
;;;;
;;;;
;;;;
scriptName IchirouBodyChange extends activemagiceffect
;-- Properties --------------------------------------
formlist property IchirouHeadPartList auto
ichirouracemcmmenu property IchirouRaceMCMMEnuInstance auto
formlist property IchirouFaceTextureSetList auto
formlist property IchirouChangeSkinList auto
;-- Variables ---------------------------------------
Actor Player
ActorBase PlayerBase
;-- Functions ---------------------------------------
; Skipped compiler generated GetState
function OnEffectStart(Actor akTarget, Actor akCaster)
TextureSet FaceTextureSetToChange
Armor SkinToChange
HeadPart FaceToChange
debug.Notification("Ichirou Body Loading")
Player = game.GetPlayer()
PlayerBase = Player.GetActorBase()
if IchirouRaceMCMMEnuInstance.BodyChangeShapeFlag == 0
FaceToChange = IchirouRaceMCMMEnuInstance.HeadOriginal
FaceTextureSetToChange = IchirouRaceMCMMEnuInstance.FaceTextureOriginal
SkinToChange = IchirouRaceMCMMEnuInstance.SkinOriginal
elseIf IchirouRaceMCMMEnuInstance.BodyChangeShapeFlag != 0
FaceToChange = IchirouHeadPartList.getat(IchirouRaceMCMMEnuInstance.BodyChangeShapeFlag) as HeadPart
FaceTextureSetToChange = IchirouFaceTextureSetList.getat(IchirouRaceMCMMEnuInstance.BodyChangeShapeFlag) as TextureSet
SkinToChange = IchirouChangeSkinList.getat(IchirouRaceMCMMEnuInstance.BodyChangeShapeFlag) as Armor
endIf
Player.ChangeHeadPart(FaceToChange)
PlayerBase.SetSkin(SkinToChange)
PlayerBase.SetFaceTextureSet(FaceTextureSetToChange)
Player.QueueNiNodeUpdate()
Player.RegenerateHead()
endFunction
; Skipped compiler generated GotoState

487
IchirouRaceMCMMenu.psc Normal file
View File

@ -0,0 +1,487 @@
scriptName IchirouRaceMCMMenu extends SKI_ConfigBase
;-- Properties --------------------------------------
headpart property HeadOriginal auto
Int property BodyChangeShapeFlag auto
formlist property IchirouBodyWardrobe auto
textureset property FaceTextureOriginal auto
armor property SkinOriginal auto
spell property IchirouBodyChangeSpell auto
formlist property IchirouBanRaceList auto
Bool property IsSystemEnable hidden
Bool function get()
if self.PlayerSexAllow() && self.PlayerRaceAllow()
return true
else
return false
endIf
endFunction
endproperty
Int[] property ArmorShapeFlag auto
Bool property IsWardrobeEnable hidden
Bool function get()
if self.IsSystemEnable && !self.IsOriginChange() && IsWardrobeCheck as Bool
return true
else
return false
endIf
endFunction
endproperty
;-- Variables ---------------------------------------
Int OptionBodyShapeRegenerate
Int[] ShapeEnableFlag
Int OptionResetOrigin
Int[] OptionShape
String[] BodyShapeName
Int[] OptionWardrobeSlider
Bool IsShapeChange
Int OptionAddCurrentArmor
Int[] OptionWardrobeSlotClear
armor CurrentArmor
Int ResetOriginEnableFlag
Int WardrobeSize
Bool IsWardrobeCheck = false
Int RegenerateEnableFlag
Int ToggleWardrobeEnable
Race RaceOriginal
Int OptionClearUpWardrobe
Int OptionBodyShapeCurrent
;-- Functions ---------------------------------------
function GetPlayerOriginalSet()
SkinOriginal = game.GetPlayer().GetActorBase().GetSkin()
HeadOriginal = game.GetPlayer().GetActorBase().GetNthHeadPart(0)
FaceTextureOriginal = game.GetPlayer().GetActorBase().GetFaceTextureSet()
RaceOriginal = game.GetPlayer().GetActorBase().GetRace()
debug.Notification("OriginSetting")
endFunction
function ClearUpWardrobe()
IchirouBodyWardrobe.Revert()
ArmorShapeFlag[0] = 0
ArmorShapeFlag[1] = 0
ArmorShapeFlag[2] = 0
ArmorShapeFlag[3] = 0
ArmorShapeFlag[4] = 0
ArmorShapeFlag[5] = 0
ArmorShapeFlag[6] = 0
ArmorShapeFlag[7] = 0
ArmorShapeFlag[8] = 0
ArmorShapeFlag[9] = 0
self.ForcePageReset()
endFunction
function GenerateWardrobeUI()
WardrobeSize = IchirouBodyWardrobe.GetSize()
Int k = 0
OptionWardrobeSlotClear = new Int[10]
OptionWardrobeSlider = new Int[10]
while k < WardrobeSize
self.AddHeaderOption(IchirouBodyWardrobe.GetAt(k).GetName(), 0)
OptionWardrobeSlider[k] = self.AddSliderOption("BodyShape", ArmorShapeFlag[k] as Float, "{0}", 0)
OptionWardrobeSlotClear[k] = self.AddTextOption("", "Clear", self.OPTION_FLAG_NONE)
self.AddEmptyOption()
k += 1
endWhile
endFunction
Bool function IsOriginChange()
if !IsShapeChange && BodyChangeShapeFlag == 0
if SkinOriginal != game.GetPlayer().GetActorBase().GetSkin() || HeadOriginal != game.GetPlayer().GetActorBase().GetNthHeadPart(0) || FaceTextureOriginal != game.GetPlayer().GetActorBase().GetFaceTextureSet() || RaceOriginal != game.GetPlayer().GetActorBase().GetRace()
return true
else
return false
endIf
else
return false
endIf
endFunction
function OnGameReload()
parent.OnGameReload()
Pages = new String[2]
Pages[0] = "Ichirou Body"
Pages[1] = "Ichirou Wardrobe"
if self.IsOriginChange()
self.GetPlayerOriginalSet()
endIf
if self.PlayerRaceAllow() && self.PlayerSexAllow()
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
endIf
endFunction
function AddArmorToList()
if !IchirouBodyWardrobe.HasForm(CurrentArmor as form)
IchirouBodyWardrobe.AddForm(CurrentArmor as form)
endIf
self.ForcePageReset()
endFunction
function OnOptionHighlight(Int a_option)
if a_option == OptionShape[0]
self.SetInfoText("OriginalShapeInfo")
elseIf a_option == OptionShape[1]
self.SetInfoText("3BA Body")
elseIf a_option == OptionShape[2]
self.SetInfoText("BHUNP Body")
elseIf a_option == OptionBodyShapeRegenerate
self.SetInfoText("RegenerateAfterSRM")
elseIf a_option == OptionResetOrigin
self.SetInfoText("ResetOriginInfo")
elseIf a_option == OptionAddCurrentArmor
self.SetInfoText("AddToWardrobeInfo")
elseIf a_option == OptionWardrobeSlider[0]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[1]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[2]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[3]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[4]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[5]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[6]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[7]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[8]
self.SetInfoText("SetArmorBodyShapeInfo")
elseIf a_option == OptionWardrobeSlider[9]
self.SetInfoText("SetArmorBodyShapeInfo")
endIf
endFunction
function OnOptionSliderOpen(Int a_option)
if a_option == OptionWardrobeSlider[0]
self.SetSliderDialogStartValue(ArmorShapeFlag[0] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[1]
self.SetSliderDialogStartValue(ArmorShapeFlag[1] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[2]
self.SetSliderDialogStartValue(ArmorShapeFlag[2] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[3]
self.SetSliderDialogStartValue(ArmorShapeFlag[3] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[4]
self.SetSliderDialogStartValue(ArmorShapeFlag[4] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[5]
self.SetSliderDialogStartValue(ArmorShapeFlag[5] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[6]
self.SetSliderDialogStartValue(ArmorShapeFlag[6] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[7]
self.SetSliderDialogStartValue(ArmorShapeFlag[7] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[8]
self.SetSliderDialogStartValue(ArmorShapeFlag[8] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
elseIf a_option == OptionWardrobeSlider[9]
self.SetSliderDialogStartValue(ArmorShapeFlag[9] as Float)
self.SetSliderDialogDefaultValue(0 as Float)
self.SetSliderDialogRange(0 as Float, 9 as Float)
self.SetSliderDialogInterval(1 as Float)
endIf
endFunction
; Skipped compiler generated GetState
function EnableFlagUpdate()
ShapeEnableFlag = new Int[3]
Int k = 0
if self.IsSystemEnable
if !self.IsOriginChange()
while k < 10
if k != BodyChangeShapeFlag
ShapeEnableFlag[k] = self.OPTION_FLAG_NONE
else
ShapeEnableFlag[k] = self.OPTION_FLAG_DISABLED
endIf
k += 1
endWhile
ResetOriginEnableFlag = self.OPTION_FLAG_DISABLED
RegenerateEnableFlag = self.OPTION_FLAG_NONE
else
while k < 10
ShapeEnableFlag[k] = self.OPTION_FLAG_DISABLED
k += 1
endWhile
ResetOriginEnableFlag = self.OPTION_FLAG_NONE
RegenerateEnableFlag = self.OPTION_FLAG_DISABLED
endIf
else
ResetOriginEnableFlag = self.OPTION_FLAG_DISABLED
RegenerateEnableFlag = self.OPTION_FLAG_DISABLED
while k < 10
ShapeEnableFlag[k] = self.OPTION_FLAG_DISABLED
k += 1
endWhile
endIf
endFunction
function OnPageReset(String a_page)
self.SetCursorFillMode(self.TOP_TO_BOTTOM)
if a_page == "Ichirou Body"
IsShapeChange = false
self.SetBodyShapeName()
self.EnableFlagUpdate()
if self.IsSystemEnable
self.AddHeaderOption("Ichirou Race System Enabled", 0)
else
self.AddHeaderOption("Ichirou Race System Disabled", 0)
endIf
self.AddEmptyOption()
if self.PlayerSexAllow()
self.AddHeaderOption("Ichirou Race FemaleCharacter", 0)
else
self.AddHeaderOption("Ichirou Race MaleCharacter", 0)
endIf
self.AddEmptyOption()
if self.PlayerRaceAllow()
self.AddHeaderOption("Ichirou Race RaceAllow", 0)
else
self.AddHeaderOption("Ichirou Race RaceBan", 0)
endIf
self.AddTextOption("RaceCurrent", game.GetPlayer().GetActorBase().GetRace().GetName(), self.OPTION_FLAG_DISABLED)
OptionResetOrigin = self.AddTextOption("OptionResetOrigin", "Reset", ResetOriginEnableFlag)
self.AddEmptyOption()
self.AddHeaderOption("BodyShape", 0)
OptionBodyShapeCurrent = self.AddTextOption("BodyShapeCurrent", BodyShapeName[BodyChangeShapeFlag], self.OPTION_FLAG_DISABLED)
OptionBodyShapeRegenerate = self.AddTextOption("BodyShapeRegenerate", "ClickToEnable", RegenerateEnableFlag)
self.AddEmptyOption()
self.SetCursorPosition(1)
self.AddHeaderOption("BodyShapeList", 0)
OptionShape = new Int[3]
OptionShape[0] = self.AddTextOption(BodyShapeName[0], "ClickToEnable", ShapeEnableFlag[0])
OptionShape[1] = self.AddTextOption(BodyShapeName[1], "ClickToEnable", ShapeEnableFlag[1])
OptionShape[2] = self.AddTextOption(BodyShapeName[2], "ClickToEnable", ShapeEnableFlag[2])
endIf
if a_page == "Ichirou Wardrobe"
CurrentArmor = game.GetPlayer().GetWornForm(4) as armor
self.AddHeaderOption("BodyChange_Wardrobe", 0)
ToggleWardrobeEnable = self.AddToggleOption("EnabelWardrobe", IsWardrobeCheck, self.OPTION_FLAG_NONE)
OptionClearUpWardrobe = self.AddTextOption("", "ClearUp", self.OPTION_FLAG_NONE)
self.AddEmptyOption()
self.AddHeaderOption("CurrentArmor", 0)
if !IchirouBodyWardrobe.HasForm(CurrentArmor as form)
OptionAddCurrentArmor = self.AddTextOption(CurrentArmor.GetName(), "AddToWardrobe", self.OPTION_FLAG_NONE)
else
OptionAddCurrentArmor = self.AddTextOption(CurrentArmor.GetName(), "AlreadyInWardrobe", self.OPTION_FLAG_DISABLED)
endIf
self.AddEmptyOption()
self.AddHeaderOption("DebugInfo", 0)
self.AddTextOption("BodyFlag", BodyChangeShapeFlag as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag0", ArmorShapeFlag[0] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag1", ArmorShapeFlag[1] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag2", ArmorShapeFlag[2] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag3", ArmorShapeFlag[3] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag4", ArmorShapeFlag[4] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag5", ArmorShapeFlag[5] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag6", ArmorShapeFlag[6] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag7", ArmorShapeFlag[7] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag8", ArmorShapeFlag[8] as String, self.OPTION_FLAG_DISABLED)
self.AddTextOption("ArmorFlag9", ArmorShapeFlag[9] as String, self.OPTION_FLAG_DISABLED)
self.SetCursorPosition(1)
self.GenerateWardrobeUI()
endIf
endFunction
function ClearArmorFromList(Int Index)
armor ArmorToClear = IchirouBodyWardrobe.GetAt(Index) as armor
IchirouBodyWardrobe.RemoveAddedForm(ArmorToClear as form)
Int k = Index
while k < WardrobeSize - 1
ArmorShapeFlag[k] = ArmorShapeFlag[k + 1]
k += 1
endWhile
ArmorShapeFlag[WardrobeSize - 1] = 0
self.ForcePageReset()
endFunction
function OnOptionSliderAccept(Int a_option, Float a_value)
if a_option == OptionWardrobeSlider[0]
ArmorShapeFlag[0] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[1]
ArmorShapeFlag[1] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[2]
ArmorShapeFlag[2] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[3]
ArmorShapeFlag[3] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[4]
ArmorShapeFlag[4] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[5]
ArmorShapeFlag[5] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[6]
ArmorShapeFlag[6] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[7]
ArmorShapeFlag[7] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[8]
ArmorShapeFlag[8] = a_value as Int
self.ForcePageReset()
elseIf a_option == OptionWardrobeSlider[9]
ArmorShapeFlag[9] = a_value as Int
self.ForcePageReset()
endIf
endFunction
function SetBodyShapeName()
BodyShapeName = new String[3]
BodyShapeName[0] = "Default"
BodyShapeName[1] = "3BAv2"
BodyShapeName[2] = "BHUNP"
endFunction
function OnOptionSelect(Int a_option)
if a_option == OptionShape[0]
BodyChangeShapeFlag = 0
self.UpdateShapeSelection()
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
elseIf a_option == OptionShape[1]
BodyChangeShapeFlag = 1
self.UpdateShapeSelection()
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
elseIf a_option == OptionShape[2]
BodyChangeShapeFlag = 2
self.UpdateShapeSelection()
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
elseIf a_option == OptionBodyShapeRegenerate
self.SetOptionFlags(OptionBodyShapeRegenerate, self.OPTION_FLAG_DISABLED, false)
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
elseIf a_option == OptionResetOrigin
self.SetOptionFlags(OptionResetOrigin, self.OPTION_FLAG_DISABLED, false)
self.GetPlayerOriginalSet()
elseIf a_option == OptionAddCurrentArmor
self.SetOptionFlags(OptionAddCurrentArmor, self.OPTION_FLAG_DISABLED, false)
self.AddArmorToList()
elseIf a_option == ToggleWardrobeEnable
IsWardrobeCheck = !IsWardrobeCheck
self.SetToggleOptionValue(ToggleWardrobeEnable, IsWardrobeCheck, false)
elseIf a_option == OptionClearUpWardrobe
self.ClearUpWardrobe()
elseIf a_option == OptionWardrobeSlotClear[0]
self.ClearArmorFromList(0)
elseIf a_option == OptionWardrobeSlotClear[1]
self.ClearArmorFromList(1)
elseIf a_option == OptionWardrobeSlotClear[2]
self.ClearArmorFromList(2)
elseIf a_option == OptionWardrobeSlotClear[3]
self.ClearArmorFromList(3)
elseIf a_option == OptionWardrobeSlotClear[4]
self.ClearArmorFromList(4)
elseIf a_option == OptionWardrobeSlotClear[5]
self.ClearArmorFromList(5)
elseIf a_option == OptionWardrobeSlotClear[6]
self.ClearArmorFromList(6)
elseIf a_option == OptionWardrobeSlotClear[7]
self.ClearArmorFromList(7)
elseIf a_option == OptionWardrobeSlotClear[8]
self.ClearArmorFromList(8)
elseIf a_option == OptionWardrobeSlotClear[9]
self.ClearArmorFromList(9)
endIf
endFunction
function UpdateShapeSelection()
IsShapeChange = true
self.EnableFlagUpdate()
Int k = 0
while k < 10
self.SetOptionFlags(OptionShape[k], ShapeEnableFlag[k], false)
k += 1
endWhile
self.SetTextOptionValue(OptionBodyShapeCurrent, BodyShapeName[BodyChangeShapeFlag], false)
endFunction
; Skipped compiler generated GotoState
Bool function PlayerRaceAllow()
Race PlayerRace = game.GetPlayer().GetRace()
String RaceName = PlayerRace.GetName()
if RaceName == "Argonian" || RaceName == "Khajiit" || RaceName == "Werewolf" || RaceName == "Vampire Lord"
return false
elseIf IchirouBanRaceList.Find(PlayerRace as form) == -1
return true
else
return false
endIf
endFunction
function OnConfigInit()
ModName = "Ichirou Race Menu"
Pages = new String[2]
Pages[0] = "Ichirou Body"
Pages[1] = "Ichirou Wardrobe"
BodyChangeShapeFlag = 0
ArmorShapeFlag = new Int[10]
ArmorShapeFlag[0] = 0
ArmorShapeFlag[1] = 0
ArmorShapeFlag[2] = 0
ArmorShapeFlag[3] = 0
ArmorShapeFlag[4] = 0
ArmorShapeFlag[5] = 0
ArmorShapeFlag[6] = 0
ArmorShapeFlag[7] = 0
ArmorShapeFlag[8] = 0
ArmorShapeFlag[9] = 0
endFunction
Bool function PlayerSexAllow()
if game.GetPlayer().GetActorBase().GetSex()
return true
else
return false
endIf
endFunction

40
IchirouWardrobe.psc Normal file
View File

@ -0,0 +1,40 @@
scriptName IchirouWardrobe extends ReferenceAlias
;-- Properties --------------------------------------
ichirouracemcmmenu property IchirouRaceMCMMenuInstance auto
formlist property IchirouBodyWardrobe auto
spell property IchirouBodyChangeSpell auto
;-- Variables ---------------------------------------
Bool IsBeast = false
;-- Functions ---------------------------------------
; Skipped compiler generated GotoState
; Skipped compiler generated GetState
function OnObjectEquipped(Form akBaseObject, objectreference akReference)
Int Index = IchirouBodyWardrobe.Find(akBaseObject)
if Index != -1 && IchirouRaceMCMMenuInstance.IsWardrobeEnable
if IchirouRaceMCMMenuInstance.BodyChangeShapeFlag != IchirouRaceMCMMenuInstance.ArmorShapeFlag[Index]
IchirouRaceMCMMenuInstance.BodyChangeShapeFlag = IchirouRaceMCMMenuInstance.ArmorShapeFlag[Index]
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
endIf
endIf
endFunction
function OnRaceSwitchComplete()
String RaceName = game.GetPlayer().getrace().GetName()
if RaceName == "Argonian" || RaceName == "Khajiit" || RaceName == "Werewolf" || RaceName == "Vampire Lord"
game.GetPlayer().GetActorBase().SetSkin(none)
game.GetPlayer().QueueNiNodeUpdate()
IsBeast = true
elseIf IsBeast
utility.Wait(1 as Float)
IchirouBodyChangeSpell.Cast(game.GetPlayer() as objectreference, none)
IsBeast = false
endIf
endFunction