Page 1 of 1

Love/Hate + DS setup

Posted: Sat Oct 10, 2020 10:49 am
by cptscrimshaw
I've been meaning to implement your Love/Hate system in my game for a while and am now getting around to it. I'm super excited about all the functionality it offers and plan on using it heavily!

Working through the initial setup, I think I must be missing something, because I'm having trouble getting a simple ReportDeed(). I have some basics set up, such as GetAffinity() which works in Dialogue conversations, but with ReportDeed() to work, I'm getting a console warning: "ReportDeed(AcceptQuest) target is null."

I've provided several screenshots of my setup, so hopefully you can tell me what I'm missing.

Things I've done:
- Added Faction Database.
- Added Faction Manager and Persistent Faction Manager and linked up Faction Database (checked Debug).
- Added Deed Template Library.
- Added Faction info and set a relationship from Hans to the Player with an Affinity of 10(This is just for an earlier GetAffinity() check in the conversation which is working fine.)
- Added LoveHateLua.cs to Dialogue Manager GameObject.
- Added Faction Member and Deed Reporter to Player.
- Added Faction Member, Faction Member Debugger, and Persistent Faction Member to Hans.

https://ibb.co/920YRPv
https://ibb.co/6Dp22cs
https://ibb.co/VNNg1Xv
https://ibb.co/LdysJKN

Re: Love/Hate + DS setup

Posted: Sat Oct 10, 2020 1:57 pm
by Tony Li
Hi,

That message means it's not finding "Hans" for some reason.

When it looks for Hans, it will try in this order:

1. Is there a GameObject with a DialogueActor component whose Actor value is set to Hans? If so, use the FactionMember on this GameObject, or return null if it doesn't have a FactionMember.

2. Otherwise, is there a GameObject named Hans? If so, use the FactionMember on this GameObject, or return null if it doesn't have a FactionMember.

3. Otherwise, look for a GameObject whose FactionMember component is set to the Hans faction.


Is it possible that the Hans GameObject is inactive at the time ReportDeed() is called?

Or perhaps another GameObject is named Hans or has a DialogueActor component set to Hans?

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 5:15 pm
by cptscrimshaw
Hi Tony,

Apologies for necroing my own thread. I've run into a little, related issue that I know has a simple fix - just can't figure it out.

I haven't been messing around with any of my setup for DS, QM, or LH as I had everything working (thanks to your help!), but I have managed to screw something up. For some reason DS doesn't like me using LH Lua functions anymore (see screenshot). I have LoveHateLua.cs on the Dialogue Manager game object, so I'm not sure what else I might be missing. Happy to provide any more details, but not exactly sure what to provide.

I'm calling GetAffinity("Hans", "Sairyn") > 0 from a dialogue Condition, and I have everything set up in the faction manager, but I don't think it's even getting that far...

https://ibb.co/8gxLdBk

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 7:53 pm
by Tony Li
Hi,

If you temporarily set the Dialogue Manager's Other Settings > Debug Level to Info and play, do you see lines such as:

Code: Select all

Dialogue System: Registering Lua function GetAffinity
Is it possible that you're starting from a scene that has a Dialogue Manager that doesn't have a LoveHateLua component? If so, this Dialogue Manager will survive scene changes and replace the one in a later scene that does have a LoveHateLua component.

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 8:11 pm
by cptscrimshaw
I tried setting the Debug to info already and didn't see it register GetAffinity. It's registering plenty of other things (e.g., QM stuff). Not sure if seeing the list will be helpful, but here it is:

https://ibb.co/3d0xLxD
https://ibb.co/kKqs9K2
https://ibb.co/FYdGVcX
https://ibb.co/PT3bBYC

Doublechecked the scene thing, but it's all in order (using a prefab for the Dialogue Manager, so it should always have LoveHateLua on it - also checked in DontDestroyOnLoad during play, and it's there).

Anything else to look for?

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 8:15 pm
by Tony Li
Unlike many of the other ***Lua components that register C# methods with Lua in the Awake() method, LoveHateLua registers in the Start() method. That's the only difference I can think of.

After entering play mode, please inspect the Dialogue Manager. Does it still have its LoveHateLua component?

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 9:06 pm
by cptscrimshaw
That led me to a "fix" - though I'm not sure why I need to do this for it to work?

Code: Select all

		
void Awake()
{
	SaveSystem.saveDataApplied += OnSaveDataApplied;
}

void OnSaveDataApplied()
{
	RegisterLuaFunctions();
}
(and yes, the DS gameobject still had the LoveHateLua component in playmode)

Re: Love/Hate + DS setup

Posted: Mon Oct 26, 2020 9:12 pm
by Tony Li
Strange. That would only work when loading a saved game.

Does the Dialogue System + Love/Hate integration's example scene work correctly?

Re: Love/Hate + DS setup

Posted: Tue Oct 27, 2020 10:32 am
by cptscrimshaw
Yeah, the demo works fine, so I assume it must be something with my build. Still, I have plenty of things that run on Start/Awake that seem to work fine. I am loading/saving the game automatically on play/quit/scene change. It's not a huge issue since it works with the fix, just trying to wrap my head around why :)

Thanks as always for your help!

Re: Love/Hate + DS setup

Posted: Tue Oct 27, 2020 10:41 am
by Tony Li
Hi,

If you'd like to get to the bottom of it, please feel free to send me a reproduction project.