Making skillchecks more 'Disco-like'

Hi there! I’m just getting to grips with the Narrat tool and have in mind that, if possible, I’d like active and passive skillchecks to work pretty similarly to Disco Elysium. (I’ve checked the documentation first before asking, for what that’s worth!)

First, I saw in a development thread that critical success/failure was raised as a possible feature, but it’s not in the documentation – is this an extant feature? If not, will it be at some point?

Second, as far as I can tell, passive checks are always rolled, and not fixed thresholds as I’d prefer them to be. While I’m brand-new to coding, I can think of some possible awkward workarounds to this, but I’d love to simply be able to write passive checks with no RNG. Is that possible?

Third, I’ve noticed that skillcheck difficulty text changes to be relative to the current likelihood of success, rather than being fixed even when the odds are high for a player with a high skill. I personally love the drama of [Impossible: Success] and the feeling of achievement it gives, so is it possible to change this behaviour?

Fourth, it seems that passive checks display [Difficulty: Success] above any resultant text, and that I need to configure characters and have them talk if I want skills to chime in as characters.When doing this, it means I end up with duplicate text for the skill name in question – once above in the check result, and a second time as the ‘speaker’ just below. Is it possible to have the difficulty/success notice come after the ‘speaker’ name, or resolve this in any other way to more closely resemble Disco?

I think that’s everything I was wondering about; thanks so much to anyone who can chip in with some help.

Hi, yeah a lot of those things should be possible, if you really waantt o you can always look at adding them to the engine, otherwise I don’t know when they necessarily will happen. some of those can be done now in other ways though.

There’s no concept of critical success yet. It’s a thing I wanted to add and have no objection to it being added, just need to be done and it hasn’t come up much so far.

A shortcut to that would maybe be to create a plugin with a custom command which does a roll, and then you look at what was rolled yourself to manually handle some custom reaction to critical failure or success… though it’s probably easier to just add that to the engine.

Another thing that could be added to the system, but in the meantime you could just make yourself a function which does a condition on the current skill level, and then make it print something that visually looks like a skill check happened or whatever you’d want it to do

I think showDifficultyWithoutModifiers is for that purpose. You can look at the skillchecks-config file where all the options are defined btw

I don’t think there’s a way to do that but it would be nice to add… One thing you could do is make it print nothing, and then print your own thing separately from that. I’m not sure there is a way to literally make it print nothing, but with some CSS hacking you could make what it prints not get displayed… but yeah this is probably easier to just add to the engine itself as an option

1 Like

It works! I had looked at that documentation but just… completely failed to parse that particular option as it was intended to be read. Thanks.

Looking forward to implementation of additional features/options whenever! In the meantime, I’m gonna give making a function a go to resolve one or more of the other points. Hopefully it ends up being fairly straightforward – I’ve never done anything like this before.

Also looking forward to, hopefully, situational modifiers at some point! Add my voice to those excited for that.

Thanks for the super-quick reply!

yeah I want to add modifier flags that ideally would appear on a hover tooltip like in disco, they’re fun

Hover tooltip would be sick. Yes, please.

I’ve been messing about with a custom function, assisted by a friend who has programming experience, and I haven’t yet been able to get it work quite as I’d like…

I’m trying to create a local variable and show it in text, and this is what I’ve got so far:

passive skill_id difficulty text:
  if (>= (get_level $skill_id) $difficulty):
    var diffText "Easy"
    if (>= $difficulty 15):
      set diffText "Impossible"
    elseif (>= $difficulty 10):
      set diffText "Hard"
    elseif (>= $difficulty 5):
      set diffText "Medium"
    talk $skill_id idle "<span class='skill-check'>[<span class='skill-check-difficulty'>%{diffText}</span>: <span class='skill-check-success'>Success</span>]</span><br />%{text}"

The RNG-less passive check part works fine, it’s the Disco- like display I’m having trouble with.

When I run passive, I get the following error output:

Narrat script runtime error at  <span class="error-filename">demo.narrat:13</span>
      <b>TypeError: Cannot read properties of null (reading 'diffText')</b>
      Script: talk $skill_id idle "<span class='skill-check'>[<span class='skill-check-difficulty'>%{diffText}</span>: <span class='skill-check-success'>Success</span>]</span><br />%{text}"
      Label: passive

My friend is pretty proficient, but between us we weren’t able to find a solve. Are we missing something that you can see, @Liana? Any help much appreciated, of course. :pray:

Incidentally, I’m having a great time in this preparatory phase of development. Writing Skill descriptions and making silly placeholder doodles is good fun.