Jump to content

Recommended Posts

10 minutes ago, PsychoWookiee9 said:

Haha that Trump mod is great. XD

 

Anyway, AAF is mostly working great for me (with RSE, MCG, FPE) except when a scene is started by another mod (not the wizard) only one stage of an animation plays, not the entire thing. I have AAF Position tags, AAF Compatibility Patches, Leito's animations, Atomic Lust, Mutated Lust, SavageCabbage's Animations, Farelle Animations, Vadermania's Animations. Anyone else having this? Am I missing something?

Make sure you didn't choose the separate animations (non-staged) during the installation process of Leito - AAF patch.  

Share this post


Link to post
16 minutes ago, riot_punch said:

Make sure you didn't choose the separate animations (non-staged) during the installation process of Leito - AAF patch.  

Yup, I actually just got it working right now after reinstalling the Leito - AAF patch. Thanks!

Share this post


Link to post
13 hours ago, dagobaking said:

I'm not sure. But, that's what it looks like to me. In that case, you may need to check into the animation pack that includes SM animations.

I started a new game I thought aaf leito supermutant was the trouble  but this is back again.....its just a weird bug.  when I use the home key, the animation is fine, when I select from just business this happens but just business mod uses AAF animations.  FO4EDIT shows no conflicts, figured it wont because they're all single files. Loot shows clean perfect mods in load order. This  bug m is a phanthom.

Share this post


Link to post

hey @dagobaking just a quick one

 

to generate my char I

cbbe physics

zeroed sliders

 

bodygen with a huge set of possible templates and ranges

batch build tick morphs

 

whatever I get given as a char I adjust to give some realism using the in game sliders

npcs are controlled by bodygen morphs + some mods such as varied bodies etc

 

I ran a few CSA's from RSE with he assault count set to 2

 

I sometimes find that the morph created for the player character scene is completely accurate in one scene

then moments later its not correct in the next scene

 

(character was not pregnant)

 

just thought id mention it as there was no change at all in the game setting between two scenes its literally seconds, I saw you say theres a fix coming but I found it odd it got it right some of the time and then literally seconds later got it incorrect. hopefully the fix takes that into account and theres not some rogue missing 1 or 0 in AAF :D  thanks for the great work and if my puzzlement has been adressd already apologies, just I guess my char gen is  bit of an edge case since it uses two morphs (bodygen and then ingame sliders at char creation)

 

cheers

Share this post


Link to post
5 hours ago, Ronin13 said:

Thx anyway, figured maybe someone has run across this sort of bug. Very annoying.

Hello, Im no expert, but have you tried verifying the game in steam properties? Sounds like a bug in the loadup exe...….my suggestion, start a new game, not to play it, but  to see  if any Scripts error messages come up in pre war times.  Its usually where  I start my  Bug hunts.   I hope it helps

Share this post


Link to post
Guest

One thing I have noticed, since implementing it into RSE, is that facial animation archetypes do not seem to be copied over to the body-double. In CSA, aggressive activity ensues and I used three possible archetypes (Angry, InPain and Afraid). On their own, they work fine, but when the body double comes into play, it has the Neutral facial archetype. Any way to copy this over or not so much (as I suspect)?

Share this post


Link to post
28 minutes ago, Flashy (JoeR) said:

One thing I have noticed, since implementing it into RSE, is that facial animation archetypes do not seem to be copied over to the body-double. In CSA, aggressive activity ensues and I used three possible archetypes (Angry, InPain and Afraid). On their own, they work fine, but when the body double comes into play, it has the Neutral facial archetype. Any way to copy this over or not so much (as I suspect)?

It probably is possible to read which archetype keywords an actor has and re-apply them to the body double.

 

But, AAF has its own expression system. Nobody has worked on the XML settings for that to work properly yet. But, when they do, it should be consistent with the archetypes you are using (negative expressions during aggressive animations, etc.).

 

In the long run, I think it will be best to rely on that system because multiple animation packs can tie into one set of settings for expressions and they can be made more animation specific (some animations appearing more negative than others and at different times during the animation).

 

Part of that system is also a way to have the actors say things to each other (theoretically dirty talk if one wanted) based on what is happening. I think everything is in place for that to work. But, I haven't put together a complete test to document it properly yet.

Share this post


Link to post
On 9/11/2018 at 5:31 PM, NoxOculis said:

Hi again , i find how to generate name it's AAF_nameData.xml

good it does not seem to be important .

with the pnj and settlers when the mod is not activated, in order to have the same name !

if I select Curie, for example, his name would appear as Curie
if I select me, my name would appear
if i select settlers, his name "settler" change to .."female_nickname" data="Drahira"  for exemple.

but I'm looking for a mod  who gives new names with similar file name list.xml , after , I manage for change it.

If anyone know .

Thanks

Quote

I am not sure that I follow your meaning exactly. I have also wanted to change the names as they appear in the vanilla rollover. But, in my searching, there does not appear to be a way to do that dynamically with code. This is because the code way of changing names applies to the actors base form. So, if you change the name of one settler, it changes all settlers names to that one name.

 

There are unique settler name mods. But, from the little research I have done into those, it looks like they accomplish that with form changes in the CK. That solution wouldn't work for me in AAF because I want the names given via loaded XML files to apply and that has to be done through code.

 

It seems that an F4SE plugin would be needed to do it right. But, I would love to learn that I'm mistaken and that there is a way.

I find this mod : rename anything (including containers, settlers, and more)

https://www.nexusmods.com/fallout4/mods/22105

it's a F4se application without esp
he adds command line : setname "name" work perfect with your mod  

Jill is called Jill now thanks for help

Share this post


Link to post

We're looking for help in translating AAF and need people who speak the following languages:
- Chinese (simplified),

- italian,

- Japanese,
- Polish
.

 

if you're interessted please join AAF's Discord.

Share this post


Link to post
4 hours ago, NoxOculis said:

I find this mod : rename anything (including containers, settlers, and more)

https://www.nexusmods.com/fallout4/mods/22105

it's a F4se application without esp
he adds command line : setname "name" work perfect with your mod  

Jill is called Jill now thanks for help

Thank you for pointing that out! May be just what was needed. I will look into a way to use it.

Share this post


Link to post
18 hours ago, dagobaking said:

It probably is possible to read which archetype keywords an actor has and re-apply them to the body double.

 

But, AAF has its own expression system. Nobody has worked on the XML settings for that to work properly yet. But, when they do, it should be consistent with the archetypes you are using (negative expressions during aggressive animations, etc.).

 

In the long run, I think it will be best to rely on that system because multiple animation packs can tie into one set of settings for expressions and they can be made more animation specific (some animations appearing more negative than others and at different times during the animation).

 

Part of that system is also a way to have the actors say things to each other (theoretically dirty talk if one wanted) based on what is happening. I think everything is in place for that to work. But, I haven't put together a complete test to document it properly yet.

Well I have included the Happiness system in StatsAndLists actually, but I renamed I to HappinessPerc in the relevant XML's. I haven't done more than that yet, still working on a few little quirks I have in the STATs at my end :)

Share this post


Link to post
7 hours ago, Halstrom said:

Well I have included the Happiness system in StatsAndLists actually, but I renamed I to HappinessPerc in the relevant XML's. I haven't done more than that yet, still working on a few little quirks I have in the STATs at my end :)

Cool. I will be removing the placeholder stats in AAF soon.

 

To have animations change the stats you will also need Action XML. And then for the expressions to change during animations you will need reactionSet XML. These should probably be centralized and worked on like you are doing with stats.

Share this post


Link to post

Hey DK,

 

This is the script for the Immersive Lovers Embrace Remastered mod that we were discussing on the issues tracker where the wrong animations were taking place. The author hasn't responded to any comments on the mod page in over a week, so I figured I'd post this here to see if either you or @Flashy (JoeR) could tell me what's wrong with it. I don't mind making changes and testing them because I like the idea behind the mod. Thanks.

Spoiler



Scriptname ILER_MAIN_HUG_KISS extends Quest

;-- Properties --------------------------------------
;--Actors--
Actor Property DogmeatRef Auto Const
Actor Property theActor Auto  
;--Messages--
Message Property ILER_KISS_HUG_MSG Auto Const
Message Property ILER_KISS_HUG_NOT_READY_MSG Auto Const
Message Property ILER_PA_ERROR_MSG Auto Const
;--Sound--
Sound Property ILER_HUG Auto Const
Sound Property ILER_KISS Auto Const
;--Actors/ActorValues--
Actor Property PlayerRef Auto Const
ActorValue Property CA_Affinity Auto Const
;--ImageSpaceModifiers--
ImageSpaceModifier Property HoldAtBlackImod Auto Const
;--AAF-Framework--
AAF:AAF_API AAF_API
;--Integers--
Int Property animType Auto  
;--Globals--
GlobalVariable Property ILER_KISS_ANIM_DURATION Auto Const
GlobalVariable Property ILER_HUG_ANIM_DURATION Auto Const
GlobalVariable Property ILER_PA_IGNORE Auto Const
;--Items--
Armor Property ILER_RING_WEDDING Auto Const
Armor Property ILER_RING_ENGAGEMENT Auto Const
Armor Property ILER_RING_PROMISE Auto Const

;--Events------------------------------------------
Event AAF:AAF_API.OnAnimationStart(AAF:AAF_API akSender, Var[] akArgs)
    Debug.Trace("ILER: ILER_MAIN_HUG_KISS - OnAnimationStart event called")
	If animType == 1 								;Hug
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Hug selection detected")
		ILER_HUG.playandwait(Game.GetPlayer())		;Play sound effect for Hug
    ElseIf animType == 2 							;Kiss
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Kiss selection detected")
		ILER_KISS.playandwait(Game.GetPlayer())		;Play sound effect for Kiss
	EndIf
	Utility.Wait(1)                                                             ;Pause 1 sec
    String actorName = theActor.GetActorBase().GetName()                       ;Companion name to string
	Debug.Notification(actorName + " liked that.")                              ;Liked that notification

EndEvent

;--Functions---------------------------------------
Function LoadAAF()
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF function called")
    AAF_API = Game.GetFormFromFile(0x00000F99, "AAF.esm") as AAF:AAF_API
    If AAF_API
		;Debug.MessageBox("Installed")
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF - AFF API detected")
	else
		;Debug.MessageBox("Not Installed")
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF - AFF API NOT detected")
    Endif
EndFunction

Function KissHugTrigger()
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugTrigger Function called")
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugTrigger loading AAF API")
    RegisterForRemoteEvent(PlayerRef, "OnPlayerLoadGame")
    LoadAAF()

    Actor[] playerFollowers = Game.GetPlayerFollowers( )    ;Array that holds player followers
    Actor Companion = Game.GetPlayer()                      ;Intialise object to hold companion, temp hold player

    int index = 0
    while (index < playerFollowers.Length)
        If ( playerFollowers[index].IsPlayerTeammate() == True && playerFollowers[index] != DogmeatRef )
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Matching companion Found " + playerFollowers[index].GetActorBase().GetName())
				
			If ( Companion.IsInPowerArmor() && ILER_PA_IGNORE.GetValue() == 0 || Game.GetPlayer().IsInPowerArmor() && ILER_PA_IGNORE.GetValue() == 0 ) ; PA check
				Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Power armor error caught")
				ILER_PA_ERROR_MSG.show()
				return 
			ElseIf ( playerFollowers.Length > 1 )	;Multiple companions, picks the first one wearing a ring
				Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Multiple companions detected")
				If RingType(playerFollowers[index]) != 0				;found companion with ring
					Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Found a companion with a ring, chosing them")
					Companion = playerFollowers[index]		;Set companion equal to the current playerfollowers index
					theActor = Companion					;Set theActor to the companion - Public actor object assecable by the events
           			KissHugMain(Companion)					;Pass found companion to kiss hug function
            		return                              ;Found companion and called scene, kill
				ElseIf ( index == (playerFollowers.Length - 1) )	;Loop is on final index and didn't find matching companion
					Debug.MessageBox("Tip: When using multiple companions a ring is required to be equiped on the companion you wish to engage with.")
				EndIf
			Else
			    Companion = playerFollowers[index]	;Set companion equal to the current playerfollowers index
				theActor = Companion				;Set theActor to the companion - Public actor object assecable by the events
           		KissHugMain(Companion)				;Pass found companion to kiss hug function
            	return                              ;Found companion and called scene, kill
			EndIf
        EndIf
        index += 1 
    EndWhile

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - No companion found in range")
    Debug.Notification("No compatable companion detected")	;Informs player that no compatable companion found

EndFunction

int Function RingType(actor Companion)
  Debug.Trace("ILER: RingType function called")

	If Companion.IsEquipped(ILER_RING_WEDDING)
		debug.trace("ILER: RingType Function: Returns 3 (Wedding)", 0)
		return 3
		
	ElseIf Companion.IsEquipped(ILER_RING_ENGAGEMENT)
		debug.trace("ILER: RingType Function: Returns 2 (Engage)", 0)
		return 2
		
	ElseIf Companion.IsEquipped(ILER_RING_PROMISE)
		debug.trace("ILER: RingType Function: Returns 1 (Promise)", 0)
		return 1
  Else
  	debug.trace("ILER: RingType Function: Returns 0 (no ring)", 0)
		return 0
	EndIf
	
EndFunction

Function KissHugMain(Actor Companion)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugMain Function called")
    int ibuttonILE = ILER_KISS_HUG_MSG.Show() 				;Shows the menu for hug/kiss
    float npcAffinity = Companion.GetValue(CA_affinity)		;Store companions affinity



    If ibuttonILE == 1 												;Hug
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Hug option selected")

		If npcAffinity >= 250											;Affinity check on companion: >=250
			SceneHandler(Companion, 1)										;Call kissHug scene with Hug parameter
			Companion.SetValue( CA_affinity, npcAffinity+10 )  				;Buff +10 affinity to companion
		Else
			ILER_KISS_HUG_NOT_READY_MSG.Show()								;Show the not ready message	if they failed affinity check				
		EndIf

	ElseIf ibuttonILE == 2 											;Kiss
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Kiss option selected")

		If npcAffinity >= 500											;Affinity check on companion: >=500
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS >= Affinity check passed")
			SceneHandler(Companion, 2)									;Call kissHug scene with Kiss parameter
			Companion.SetValue( CA_affinity, npcAffinity+15 )  			;Buff +15 affinity to companion
		Else
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS >= Affinity check failed")
			ILER_KISS_HUG_NOT_READY_MSG.Show()							;Show the not ready message	if they failed affinity check
		EndIf

	EndIf

EndFunction

Function SceneHandler(Actor Companion, int Type)

	If !AAF_API	;AAF Not installed
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - SceneHandler - AFF API NOT detected")
		KissHugScene(Companion, Type)
	Else		;AAF installed
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - SceneHandler - AFF API detected")
		KissHugSceneAAF(Companion, Type)
	EndIf

EndFunction

Function KissHugScene(Actor Companion, int Type)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugScene Function called")
    Utility.Wait(0.5)                                                           ;Slight pause
	Game.ForceThirdPerson()		                                                ;Force Third Person
	Utility.Wait(0.5)                                                           ;Slight pause
	HoldAtBlackImod.ApplyCrossFade(2)                                           ;Crosfade to black over 2 secs
	InputEnableLayer myLayer = InputEnableLayer.Create()                        ;Input layer to disable controls
	myLayer.DisablePlayerControls(true, true, true, true, true, true, true)     ;Disable player controls
	Debug.EnableAI(False)                                                       ;Disable all AI debug
	Debug.EnableDetection(False)                                                ;Disable all AI Detection
	Utility.Wait(3)                                                             ;Pause 3 secs
	Companion.MoveTo(Game.GetPlayer())                                          ;Move companion to player

    If type == 1 								;Hug
		ILER_HUG.playandwait(Game.GetPlayer())		;Play sound effect for Hug
    ElseIf type == 2 							;Kiss
		ILER_KISS.playandwait(Game.GetPlayer())		;Play sound effect for Kiss
	EndIf

	Utility.Wait(1)																;Slight pause
    myLayer.EnablePlayerControls()                                              ;Enable all controls
	Debug.EnableAI()                                                            ;Enable all AI debug
	Debug.EnableDetection()                                                     ;Enable all AI Detection
	ImageSpaceModifier.RemoveCrossFade(2)                                       ;Fade back in 2 secs
	Utility.Wait(1)                                                             ;Pause 1 sec
    String actorName = Companion.GetActorBase().GetName()                       ;Companion name to string
	Debug.Notification(actorName + " liked that.")                              ;Liked that notification

EndFunction

Function KissHugSceneAAF(Actor Companion, int type)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF Function called")
	animType = type																		;Retrieve the user selection: 1=Hug 2=Kiss
	Actor[] Actors = New Actor [2]														;Actor Array for our two actors for the scene
	Actors[0] = Game.GetPlayer()														;First actor set as player
	Actors[1] = Companion																;Second actor set as companion

	; Create some dank SceneSettings
	AAF:AAF_API:SceneSettings HugSettings = AAF_API.GetSceneSettings()
	AAF:AAF_API:SceneSettings KissSettings = AAF_API.GetSceneSettings()

	; Adjust Hug settings:
	HugSettings.duration = ILER_HUG_ANIM_DURATION.GetValue()
	HugSettings.position = "Atomic Embrace"

	; Adjust Kiss settings:
	KissSettings.duration = ILER_HUG_ANIM_DURATION.GetValue()
	KissSettings.position = "Atomic Kissing"

	; Type1 = Hug | Type2 = Kiss
	If type == 1
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - Hug detected, call hug anim")
		AAF_API.StartScene(actors, HugSettings)	;Calls animation scene via API - Start a scene (including the adjusted settings struct as a parameter):
	ElseIf type == 2
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - Kiss detected, call kiss anim")
		AAF_API.StartScene(actors, KissSettings)	;Calls animation scene via API - Start a scene (including the adjusted settings struct as a parameter):
	EndIf
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - End of function, rest of code should be called from animation start event")
	;Rest of code gets executed in the event

EndFunction


 

Basically what happens is that AAF plays a random animation whenever you use the pop-up menu to either hug or kiss your romanced companion rather than the proper animation. I would debug it myself, but I only know enough scripting to be dangerous and I would have to basically rewrite it using Flashy's template to figure out what's going on. Thanks again.

Share this post


Link to post
9 hours ago, Gulfwulf said:

Hey DK,

 

This is the script for the Immersive Lovers Embrace Remastered mod that we were discussing on the issues tracker where the wrong animations were taking place. The author hasn't responded to any comments on the mod page in over a week, so I figured I'd post this here to see if either you or @Flashy (JoeR) could tell me what's wrong with it. I don't mind making changes and testing them because I like the idea behind the mod. Thanks.

  Hide contents

 



Scriptname ILER_MAIN_HUG_KISS extends Quest

;-- Properties --------------------------------------
;--Actors--
Actor Property DogmeatRef Auto Const
Actor Property theActor Auto  
;--Messages--
Message Property ILER_KISS_HUG_MSG Auto Const
Message Property ILER_KISS_HUG_NOT_READY_MSG Auto Const
Message Property ILER_PA_ERROR_MSG Auto Const
;--Sound--
Sound Property ILER_HUG Auto Const
Sound Property ILER_KISS Auto Const
;--Actors/ActorValues--
Actor Property PlayerRef Auto Const
ActorValue Property CA_Affinity Auto Const
;--ImageSpaceModifiers--
ImageSpaceModifier Property HoldAtBlackImod Auto Const
;--AAF-Framework--
AAF:AAF_API AAF_API
;--Integers--
Int Property animType Auto  
;--Globals--
GlobalVariable Property ILER_KISS_ANIM_DURATION Auto Const
GlobalVariable Property ILER_HUG_ANIM_DURATION Auto Const
GlobalVariable Property ILER_PA_IGNORE Auto Const
;--Items--
Armor Property ILER_RING_WEDDING Auto Const
Armor Property ILER_RING_ENGAGEMENT Auto Const
Armor Property ILER_RING_PROMISE Auto Const

;--Events------------------------------------------
Event AAF:AAF_API.OnAnimationStart(AAF:AAF_API akSender, Var[] akArgs)
    Debug.Trace("ILER: ILER_MAIN_HUG_KISS - OnAnimationStart event called")
	If animType == 1 								;Hug
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Hug selection detected")
		ILER_HUG.playandwait(Game.GetPlayer())		;Play sound effect for Hug
    ElseIf animType == 2 							;Kiss
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Kiss selection detected")
		ILER_KISS.playandwait(Game.GetPlayer())		;Play sound effect for Kiss
	EndIf
	Utility.Wait(1)                                                             ;Pause 1 sec
    String actorName = theActor.GetActorBase().GetName()                       ;Companion name to string
	Debug.Notification(actorName + " liked that.")                              ;Liked that notification

EndEvent

;--Functions---------------------------------------
Function LoadAAF()
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF function called")
    AAF_API = Game.GetFormFromFile(0x00000F99, "AAF.esm") as AAF:AAF_API
    If AAF_API
		;Debug.MessageBox("Installed")
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF - AFF API detected")
	else
		;Debug.MessageBox("Not Installed")
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - LoadAAF - AFF API NOT detected")
    Endif
EndFunction

Function KissHugTrigger()
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugTrigger Function called")
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugTrigger loading AAF API")
    RegisterForRemoteEvent(PlayerRef, "OnPlayerLoadGame")
    LoadAAF()

    Actor[] playerFollowers = Game.GetPlayerFollowers( )    ;Array that holds player followers
    Actor Companion = Game.GetPlayer()                      ;Intialise object to hold companion, temp hold player

    int index = 0
    while (index < playerFollowers.Length)
        If ( playerFollowers[index].IsPlayerTeammate() == True && playerFollowers[index] != DogmeatRef )
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Matching companion Found " + playerFollowers[index].GetActorBase().GetName())
				
			If ( Companion.IsInPowerArmor() && ILER_PA_IGNORE.GetValue() == 0 || Game.GetPlayer().IsInPowerArmor() && ILER_PA_IGNORE.GetValue() == 0 ) ; PA check
				Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Power armor error caught")
				ILER_PA_ERROR_MSG.show()
				return 
			ElseIf ( playerFollowers.Length > 1 )	;Multiple companions, picks the first one wearing a ring
				Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Multiple companions detected")
				If RingType(playerFollowers[index]) != 0				;found companion with ring
					Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Found a companion with a ring, chosing them")
					Companion = playerFollowers[index]		;Set companion equal to the current playerfollowers index
					theActor = Companion					;Set theActor to the companion - Public actor object assecable by the events
           			KissHugMain(Companion)					;Pass found companion to kiss hug function
            		return                              ;Found companion and called scene, kill
				ElseIf ( index == (playerFollowers.Length - 1) )	;Loop is on final index and didn't find matching companion
					Debug.MessageBox("Tip: When using multiple companions a ring is required to be equiped on the companion you wish to engage with.")
				EndIf
			Else
			    Companion = playerFollowers[index]	;Set companion equal to the current playerfollowers index
				theActor = Companion				;Set theActor to the companion - Public actor object assecable by the events
           		KissHugMain(Companion)				;Pass found companion to kiss hug function
            	return                              ;Found companion and called scene, kill
			EndIf
        EndIf
        index += 1 
    EndWhile

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - No companion found in range")
    Debug.Notification("No compatable companion detected")	;Informs player that no compatable companion found

EndFunction

int Function RingType(actor Companion)
  Debug.Trace("ILER: RingType function called")

	If Companion.IsEquipped(ILER_RING_WEDDING)
		debug.trace("ILER: RingType Function: Returns 3 (Wedding)", 0)
		return 3
		
	ElseIf Companion.IsEquipped(ILER_RING_ENGAGEMENT)
		debug.trace("ILER: RingType Function: Returns 2 (Engage)", 0)
		return 2
		
	ElseIf Companion.IsEquipped(ILER_RING_PROMISE)
		debug.trace("ILER: RingType Function: Returns 1 (Promise)", 0)
		return 1
  Else
  	debug.trace("ILER: RingType Function: Returns 0 (no ring)", 0)
		return 0
	EndIf
	
EndFunction

Function KissHugMain(Actor Companion)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugMain Function called")
    int ibuttonILE = ILER_KISS_HUG_MSG.Show() 				;Shows the menu for hug/kiss
    float npcAffinity = Companion.GetValue(CA_affinity)		;Store companions affinity



    If ibuttonILE == 1 												;Hug
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Hug option selected")

		If npcAffinity >= 250											;Affinity check on companion: >=250
			SceneHandler(Companion, 1)										;Call kissHug scene with Hug parameter
			Companion.SetValue( CA_affinity, npcAffinity+10 )  				;Buff +10 affinity to companion
		Else
			ILER_KISS_HUG_NOT_READY_MSG.Show()								;Show the not ready message	if they failed affinity check				
		EndIf

	ElseIf ibuttonILE == 2 											;Kiss
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - Kiss option selected")

		If npcAffinity >= 500											;Affinity check on companion: >=500
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS >= Affinity check passed")
			SceneHandler(Companion, 2)									;Call kissHug scene with Kiss parameter
			Companion.SetValue( CA_affinity, npcAffinity+15 )  			;Buff +15 affinity to companion
		Else
			Debug.Trace("ILER: ILER_MAIN_HUG_KISS >= Affinity check failed")
			ILER_KISS_HUG_NOT_READY_MSG.Show()							;Show the not ready message	if they failed affinity check
		EndIf

	EndIf

EndFunction

Function SceneHandler(Actor Companion, int Type)

	If !AAF_API	;AAF Not installed
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - SceneHandler - AFF API NOT detected")
		KissHugScene(Companion, Type)
	Else		;AAF installed
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - SceneHandler - AFF API detected")
		KissHugSceneAAF(Companion, Type)
	EndIf

EndFunction

Function KissHugScene(Actor Companion, int Type)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugScene Function called")
    Utility.Wait(0.5)                                                           ;Slight pause
	Game.ForceThirdPerson()		                                                ;Force Third Person
	Utility.Wait(0.5)                                                           ;Slight pause
	HoldAtBlackImod.ApplyCrossFade(2)                                           ;Crosfade to black over 2 secs
	InputEnableLayer myLayer = InputEnableLayer.Create()                        ;Input layer to disable controls
	myLayer.DisablePlayerControls(true, true, true, true, true, true, true)     ;Disable player controls
	Debug.EnableAI(False)                                                       ;Disable all AI debug
	Debug.EnableDetection(False)                                                ;Disable all AI Detection
	Utility.Wait(3)                                                             ;Pause 3 secs
	Companion.MoveTo(Game.GetPlayer())                                          ;Move companion to player

    If type == 1 								;Hug
		ILER_HUG.playandwait(Game.GetPlayer())		;Play sound effect for Hug
    ElseIf type == 2 							;Kiss
		ILER_KISS.playandwait(Game.GetPlayer())		;Play sound effect for Kiss
	EndIf

	Utility.Wait(1)																;Slight pause
    myLayer.EnablePlayerControls()                                              ;Enable all controls
	Debug.EnableAI()                                                            ;Enable all AI debug
	Debug.EnableDetection()                                                     ;Enable all AI Detection
	ImageSpaceModifier.RemoveCrossFade(2)                                       ;Fade back in 2 secs
	Utility.Wait(1)                                                             ;Pause 1 sec
    String actorName = Companion.GetActorBase().GetName()                       ;Companion name to string
	Debug.Notification(actorName + " liked that.")                              ;Liked that notification

EndFunction

Function KissHugSceneAAF(Actor Companion, int type)

	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF Function called")
	animType = type																		;Retrieve the user selection: 1=Hug 2=Kiss
	Actor[] Actors = New Actor [2]														;Actor Array for our two actors for the scene
	Actors[0] = Game.GetPlayer()														;First actor set as player
	Actors[1] = Companion																;Second actor set as companion

	; Create some dank SceneSettings
	AAF:AAF_API:SceneSettings HugSettings = AAF_API.GetSceneSettings()
	AAF:AAF_API:SceneSettings KissSettings = AAF_API.GetSceneSettings()

	; Adjust Hug settings:
	HugSettings.duration = ILER_HUG_ANIM_DURATION.GetValue()
	HugSettings.position = "Atomic Embrace"

	; Adjust Kiss settings:
	KissSettings.duration = ILER_HUG_ANIM_DURATION.GetValue()
	KissSettings.position = "Atomic Kissing"

	; Type1 = Hug | Type2 = Kiss
	If type == 1
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - Hug detected, call hug anim")
		AAF_API.StartScene(actors, HugSettings)	;Calls animation scene via API - Start a scene (including the adjusted settings struct as a parameter):
	ElseIf type == 2
		Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - Kiss detected, call kiss anim")
		AAF_API.StartScene(actors, KissSettings)	;Calls animation scene via API - Start a scene (including the adjusted settings struct as a parameter):
	EndIf
	Debug.Trace("ILER: ILER_MAIN_HUG_KISS - KissHugSceneAAF - End of function, rest of code should be called from animation start event")
	;Rest of code gets executed in the event

EndFunction

 

 

 

 

Basically what happens is that AAF plays a random animation whenever you use the pop-up menu to either hug or kiss your romanced companion rather than the proper animation. I would debug it myself, but I only know enough scripting to be dangerous and I would have to basically rewrite it using Flashy's template to figure out what's going on. Thanks again.

Loks like its set up for only 2 animations Atomic Embraces and Atomic Kissing, if you don't have those installed maybe it picks a random animation.

Share this post


Link to post
4 hours ago, Halstrom said:

Loks like its set up for only 2 animations Atomic Embraces and Atomic Kissing, if you don't have those installed maybe it picks a random animation.

I wish that was the problem but it isn't because I have those two animations installed: they're both part of Rufgt's Atomic Lust animation package, which leads me to think it's a scripting issue because others have been having the same problem.

Share this post


Link to post
14 hours ago, Gulfwulf said:

Hey DK,

 

This is the script for the Immersive Lovers Embrace Remastered mod that we were discussing on the issues tracker where the wrong animations were taking place. The author hasn't responded to any comments on the mod page in over a week, so I figured I'd post this here to see if either you or @Flashy (JoeR) could tell me what's wrong with it. I don't mind making changes and testing them because I like the idea behind the mod. Thanks.

  Reveal hidden contents

Basically what happens is that AAF plays a random animation whenever you use the pop-up menu to either hug or kiss your romanced companion rather than the proper animation. I would debug it myself, but I only know enough scripting to be dangerous and I would have to basically rewrite it using Flashy's template to figure out what's going on. Thanks again.

I need someone to try the test I describe on the issue tracker. Basically, sending in a fake position name to AAF to make sure that it throws the correct error.

Share this post


Link to post
4 hours ago, dagobaking said:

I need someone to try the test I describe on the issue tracker. Basically, sending in a fake position name to AAF to make sure that it throws the correct error.

Sorry, Dk, but I was hoping the mod author would do that. Anyway, I renamed both animations to Fake Position and tried the hug and kiss options: both played a random animation so it seems there's either an issue with the code or with AAF.

 

By the way, do you know of a good Notepad++ compiler script I could use? I'd rather not have to run the GECK everytime I need to recompile this script. Thanks.

Share this post


Link to post
1 hour ago, Gulfwulf said:

Sorry, Dk, but I was hoping the mod author would do that. Anyway, I renamed both animations to Fake Position and tried the hug and kiss options: both played a random animation so it seems there's either an issue with the code or with AAF.

Yeah. That suggests that something is broken in the calling code that causes the names being sent in to become "None" at some point.

 

I am testing this on my end with fake position names and it throws an error saying that position can't be found. Random animations playing means that the position name isn't even making it into AAF for some reason.

1 hour ago, Gulfwulf said:

By the way, do you know of a good Notepad++ compiler script I could use? I'd rather not have to run the GECK everytime I need to recompile this script. Thanks.

I have used Sublime Text for a long time and am really happy with it. WAY better than trying to use the GECK.

 

There is a tutorial here about setting it up: https://www.creationkit.com/fallout4/index.php?title=Sublime_Text

 

It is also very good for editing XML.

Share this post


Link to post

Does FO 4 save script data like Skyrim did? If so, that might be part of the issue because I don't have a clean game to test with.

Share this post


Link to post
28 minutes ago, Gulfwulf said:

Does FO 4 save script data like Skyrim did? If so, that might be part of the issue because I don't have a clean game to test with.

FO4 saves currently running scripts in your save.  So whether you need a clean save depends on how the mod is set up and whether its scripts run in the background.

Share this post


Link to post

My game CTDs whenever I try to start dog animations. Might have something to do with the fact that it's specifically Dogmeat I'm using, but I'm assuming it's something flobal for animals across the board. It might have something to do with my AAF install, which keeps giving me an error saying that some "LL FP" thing wasn't installed and it needed Version 7 of it. For the record, I do NOT have whatever this "LL FP" mod thing is installed. Someone pointed me to what it might be at one point and I installed version 26 of it, but then I was told AAF supplies its own version and to uninstall that, so I have and I reinstalled AAF to be safe. Self anims work fine, and human-on-human anims seem to work fine as well. Maybe it's something with my load order? Here it is below:

 

GameMode=Fallout4

Fallout4.esm=1
DLCRobot.esm=1
DLCworkshop01.esm=1
DLCCoast.esm=1
DLCworkshop02.esm=1
DLCworkshop03.esm=1
DLCNukaWorld.esm=1
ArmorKeywords.esm=1
SimSettlements.esm=0
Unofficial Fallout 4 Patch.esp=1
TortureDevices.esm=1
Devious Devices.esm=1
AAF.esm=1
LooksMenu.esp=1
LooksMenu Customization Compendium.esp=1
AWKCR - Mod Power Armor Engine Glitch Fix.esp=1
Armorsmith Extended.esp=1
AzarPonytailHairstyles.esp=1
SimSettlements_XPAC_RiseOfTheCommonwealth.esp=0
Loot Detector.esp=1
You Talk Too Much.esp=1
Settler Sandbox Overhaul.esp=1
CompanionAccuracy.esp=1
Companion Infinite Ammo and Unbreakable Power Armour.esp=1
sisterofbattle.esp=1
The Space Marine.esp=1
InfiniteFusionCore.esp=1
keke-bu All-in-one Pack_1.1.7.esp=1
CBBE.esp=1
DX Commonwealth Shorts.esp=1
DX Vault Girl Shorts.esp=1
KSHairdos.esp=1
Craftable Armor Size - Fix Material Requirements.esp=1
Craftable Armor Size.esp=1
DOOMDesertEagle.esp=1
WAYN_CompanionTracking.esp=1
LovingPiper_LCC.esp=1
CraftableAmmo_plus.esp=1
CraftableAmmo.esp=1
R91AssaultRifle.esp=1
AKM_AKMS.esp=1
SA80.esp=0
slootyVaultSuit.esp=1
Mk14 Redux.esp=1
Mk14 Redux - Damage Modifiers.esp=1
M60.esp=1
LeeEnfieldNo4MkI.esp=1
M6Magnum.esp=1
ColtDeltaElite_10mmReplacer v1_1.esp=1
HairVariations_YoungAtHeart.esp=1
HairVariations_FairyTails.esp=1
HairVariations_Elegant.esp=1
HairVariations_Sophisticate.esp=1
HairVariations_Conversions.esp=1
Headcrab_Bunny.esp=1
zWGirlClothMina.esp=1
FrenchMaidFO4-CBBEPhysics.esp=1
Prisoner Shackles.esp=1
HouseDress1Fix.esp=1
four_play.esp=1
FO4_AnimationsByLeito.esp=1
Crazy_Animations_Gun.esp=1
AAF_Four-Play_Animations_Crazy6987.esp=1
CumNWealth.esp=1
SavageCabbage_Animations.esp=1
Rufgt's Animations.esp=1
Atomic Lust.esp=1
Mutated Lust.esp=1
looksmenupantyhose.esp=1
Vadermania[AAF_anims].esp=1
Aegis_Outfitter.esp=1
Rogg DD Items Manager.esp=1
FPAttributes.esp=1
FP_SexualHarassment.esp=1
FP_FamilyPlanningEnhanced.esp=1
FPEDogAddon.esp=1
FPESuperMutantAddon.esp=1
Deviously Cursed Wasteland.esp=0
AAF_RSE.esp=1
AAF_RSE_DLCPatch.esp=1
 

Share this post


Link to post
15 minutes ago, trees said:

My game CTDs whenever I try to start dog animations. Might have something to do with the fact that it's specifically Dogmeat I'm using, but I'm assuming it's something flobal for animals across the board. It might have something to do with my AAF install, which keeps giving me an error saying that some "LL FP" thing wasn't installed and it needed Version 7 of it. For the record, I do NOT have whatever this "LL FP" mod thing is installed. Someone pointed me to what it might be at one point and I installed version 26 of it, but then I was told AAF supplies its own version and to uninstall that, so I have and I reinstalled AAF to be safe. Self anims work fine, and human-on-human anims seem to work fine as well. Maybe it's something with my load order? Here it is below:

 

 

That LLFP error means that your version of F4SE is out of date or at least doesn't match what that version of LLFP was built for.  LLFP is a F4SE plugin that comes with AAF, and it can also be downloaded separately.  For best results, make sure your Fallout 4 is up to date, you have the latest F4SE, and you are using the latest release of AAF. 

 

Not sure if the LLFP error is related to your canine CTD, but best to have everything installed correctly before trying to diagnose a problem.  Note that there is not a general problem with canine animations and AAF, they normally work just like any other animation.

Share this post


Link to post
7 hours ago, EgoBallistic said:

FO4 saves currently running scripts in your save.  So whether you need a clean save depends on how the mod is set up and whether its scripts run in the background.

It's attached to a quest that starts automatically. Could I remove the mod, then use the save game cleaner to remove the scripts? I'd rather not have to start a new game just to test this out because it requires a romanced companion to work.

Share this post


Link to post

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

×
×
  • Create New...