Malbers/Dialogue System integration

nathanj

Active member
Bit of a complex one here that is hopefully not that complex.

Working with Malbers and Dialogue System integrations.

Using the Malbers integration demoscene I've added a Dialogue System Manager + database and a cube that is interactable that starts a conversation.

If I walk up to the cube I can trigger the conversation with my usual charactercast. However, if I mount the Malbers horse and walk up to the cube I get the UI suggesting I can talk to the cube, it shows up as being detected in the interact ability ui, but the button press does not instigate the conversation. If I unmount the horse I can talk to the cube.

If I change the DialogueSystemInteractable to OnTriggerEnter and change the box collider to IsTrigger I can walk up to the cube and trigger the conversation both times, as Nolan on foot or as Nolan mounted on the horse. Changing the Trigger back to Use and disabling the IsTrigger on teh box collider takes me back to where I started with being able to trigger the conversation as Nolan but NOT while mounted on the hourse. Again, the UI is enabled while mounted and the Interact (Talk) ability detects the box collider with the Dialogue System Trigger but the button press does not initialize the conversation.

Can anyone here think of what would be causing this blockage while mounted on the horse?

Thank you,
Nathan
 
Last edited:
Unfortunately I am not familiar with Malber's integration so I'm not able to help much. But I would approach this by setting a breakpoint within the CanStartAbility method of the converse method to see what is blocking it from starting.
 
Hi Justin

Thanks for the reply, ment to post my fix, well most of it - the opsive UI is still present durring the conversation but i should be able to figure that out.

The issue was that in order to have the RideHAP ability to be active and trigger a conversation simultaniously I needed to modify the code to account for this. The two mods to add:

first declaire
Code:
private Ability interactAbility;

then add this to make the ability be able to be active at the same time as another
Code:
public override bool IsConcurrent { get { return true; } }

and set interactAbility in Awake()
Code:
interactAbility = m_CharacterLocomotion.GetAbility<Interact>();

and finally add if (startingAbility == interactAbility) return false; here:

Code:
public override bool ShouldBlockAbilityStart(Ability startingAbility)
        {
            if (startingAbility == interactAbility) return false;
            return m_Rider.IsMountingDismounting || base.ShouldBlockAbilityStart(startingAbility); //Don't let anyone to be enable while you the Rider is on the Horse
        }

Once I get the UI figured out I'll post the fix here.

Thanks for your response.

Nathan
 
Last edited:
Ok, so I just needed to allow the Converse ability to be active as well. Here are some screen grabs of the changes I made incase anyone coes across this.

And, incase anyone is looking for the package, click here


Mal1.PNG
Mal2.PNG
Mal3.PNG
 
Top