Still a while yeah, I've been a lot busier with follow up work on The Drifter than I thought I would be!. (Good problem to have because it means it did great for us though ;) )
Still, I'm really looking forward to getting back into Telwynium!
Powerhoof
Creator of
Recent community posts
Yeah I've never been sure about adding that as a standard template since games all implement it quite differently. Plus there's like 3 different input systems people choose from for controllers in unity too (including popular assets)... So it's felt limiting to just implement 1 way, the way I'd do it is different than others.
Quite a few people have done their own it on the discord now though if you're looking to get help implementing yourself.
It's a more advanced function so not so simple, but off the top of my head you can do PowerQuest.Get.GetCharacters() to get them all. Something like that anyway. It might have _saveNotDirtied or something in the function name, which indicates if you make changes you have to set the Dirty flag so changes will be saved.
Adjust, once you have the character you can check each one's VisibleInRoom property.
All Start/EndCutscene() does is set the place that pressing the "Skip cutscene" button will skip to. So if you have particularly long ones you want the player to be able to skip, etc. It doesn't disable any input or anything.
All "blocking" scripts are basically an uninteractive cutscene already. So just remove the Start/EndCutscene() functions so that you can't skip them ;)
Yeah GUI clicks are blocking so should be fine. Surprised the Update Blocking code didn't work, but I didn't test it so probably just a dumb mistake on my part ;)
Btw if you use discord it's a *lot* more active than these itch forums, and easier to post code there too to get help when something's not working.
Alright, this might need fixes since the code is just off the top of my head, but this is a basic way i'd have done it with UpdateBlocking.
In Header:
int m_combatCharacterId = -1;
In UpdateBlocking():
// Only try and show a dialog if there's none showing
if ( D.Current == null )
{
// Can add more characters here if necessary
ICharacter[] characters = new ICharacter[]{C.Jonah, C.Goliath, C.Eddy, C.NurseJan};
// Increment which character we're trying to show this update
m_combatCharacterId++;
if ( m_combatCharacterId >= characters.Length )
m_combatCharacterId = 0;
// Grab the character, and start their dialog tree if its time
ICharacter character = characters[m_combatCharacterId];
if(character.IsDead() == false && character.JoinedParty == true && character.TurnOrder == Character.TurnOrderMode.None)
{
Display: Showing {character.ScriptName} combat menu
E.GetDialogTree(character.ScriptName+"CombatMenu").Start();
}
}
End
It's a bit unintuitive, but showing a Dialog Trees isn't Blocking, (so that the player can still have control, and can save the game if they want, etc)
So you might have to split your logic into separate functions for each Dialog tree, and call them one at a time, from UpdateBlocking. You can check if D.Current ==null there to see if there's one showing. D.Previous also shows the last dialogue tree used if that's helpful.
Actually, another alternative which might suit you better though is to use E.WaitForInlineDialog, which *is* a blocking function...
https://powerquest.powerhoof.com/interface_power_tools_1_1_quest_1_1_i_power_que...
Cheers, I was definitely over-ambitious with this one, mainly because I'd spent a year thinking of ideas and had too much stuff to cram in to set up the next one ha ha. And yeah, I'd do a fix/polish pass for any combined steam version. If you have more specific feedback it'd be helpful for sure! Can email me dave at powerhoof.com if you dont want to here ;)

































