Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a new weariness panel display #46193

Closed

Conversation

AlexMooney
Copy link
Contributor

@AlexMooney AlexMooney commented Dec 20, 2020

Summary

SUMMARY: Interface "Add a new panel display for weariness"

Purpose of change

Weariness changes spam the message log and are in the character sheet, though they should be visible on the side panel.

Fixes #44428

Describe the solution

  1. Add a weariness bar that goes down as you get tired.
  2. Add a display of the six different penalties that you could suffer based on your current weariness, and highlight the category that corresponds to your recent activity level.

image

Describe alternatives you've considered

  • Show slowdown factor(s) instead of a HP bar. Added!
  • Maybe change the "Speed" label for the crazy row? It should be 5 characters to fit "narrow" panel,
  • Maybe change the left-most "100" to "Rest", since it would never be penalized?

Testing

Did some deconstruction of furniture to drain weariness and watched the bar go down and back up with rest.

Additional context

I cannot display how bad the activity the player is doing is draining weariness in real time; only the worst activity in the last ~5 minute chunk is tracked. Hopefully it will be possible after the new and improved weariness tracking over at #44428.

@wapcaplet wapcaplet added the Info / User Interface Game - player communication, menus, etc. label Dec 21, 2020
@Raikiri
Copy link

Raikiri commented Dec 22, 2020

Can we also please add information somewhere on what exact effects weariness has? Like, I noticed that "extremely weary" drastically nerfs my attack speed, but where to I find exactly how much it tanks? What other effects does it have? I really wish that stuff was in the UI.

I also think that having even an incomplete display (say, just the weariness bar without the activity bar) is way better than not having any.

@anothersimulacrum
Copy link
Member

The effect weariness has on activities is entirely dependent on the activity level of those activities, so activity level must be communicated to communicate effects.

@AlexMooney
Copy link
Contributor Author

The effect weariness has on activities is entirely dependent on the activity level of those activities, so activity level must be communicated to communicate effects.

It sounds like the weariness speed debuffs should be consolidated to just 1 or 2 penalties instead of a per-activity penalty, so that we could make a more generic but correct display to the player.

@anothersimulacrum
Copy link
Member

The effect weariness has on activities is entirely dependent on the activity level of those activities, so activity level must be communicated to communicate effects.

It sounds like the weariness speed debuffs should be consolidated to just 1 or 2 penalties instead of a per-activity penalty, so that we could make a more generic but correct display to the player.

It would require substantial changes in how the entire system operates and the whole functioning of it, so no.

src/panels.cpp Outdated Show resolved Hide resolved
src/suffer.cpp Outdated Show resolved Hide resolved
@AlexMooney AlexMooney force-pushed the weariness_display_master branch from 7127dc3 to 189a922 Compare December 24, 2020 08:22
@AlexMooney AlexMooney force-pushed the weariness_display_master branch from 91bc7fc to afc0ab7 Compare December 25, 2020 02:22
@AlexMooney
Copy link
Contributor Author

I've added a speed percentage readout too; it's only accurate for EXTRA_EXERCISE, which is the worst penalty. I've labeled it "Speed", which I don't think we should use since that conflicts with the existing Speed that tells you how many moves the previous action consumed.

@Raikiri
Copy link

Raikiri commented Dec 25, 2020

The effect weariness has on activities is entirely dependent on the activity level of those activities, so activity level must be communicated to communicate effects.

i think it's worth at least communicating best to worst case, something like "actions take from 25% to 500% more time depending on their activity level" because currently players don't even have access to ballpark estimations like that

@AlexMooney
Copy link
Contributor Author

AlexMooney commented Dec 25, 2020

@Raikiri the speed penalty is part of the bar now (though the screenshot has a colored percentage and I've removed the color from that part). There are 6 levels of exercise and 6 possible speed penalties which each vary according to your weariness level, so either we display e.g. 100/50/25/17/12/10 (corresponding to the 10% in the screenshot) or we have to drop some of the data. The other problem is that AFAICT there's no way to know which level of activity you're doing, so even having all of the speed data might not help players.

2

@AlexMooney
Copy link
Contributor Author

AlexMooney commented Dec 25, 2020

I've added a second line so that we can show all of the speed penalties. The activity level that you're considered to be at for weariness updates and metabolism is highlighted.

Resting:
image
Walking: (color is now light green)
image
Deconstructing:
image

@AlexMooney AlexMooney changed the title Add some WIP weariness panel displays Add some WIP weariness panel display Dec 25, 2020
@AlexMooney AlexMooney changed the title Add some WIP weariness panel display Add a new weariness panel display Dec 25, 2020
@anothersimulacrum
Copy link
Member

I've made a PR demonstrating an alternate mode of display at #46340.

@Raikiri
Copy link

Raikiri commented Dec 27, 2020

I actually prefer AlexMooney's version because it immediately shows how much penalties I would get on activities that I'm not doing right now. And having 4 display points for one game mechanic in anothersimulacrum seems like it's splitting attention a bit too much.

@AlexMooney
Copy link
Contributor Author

AlexMooney commented Dec 28, 2020

I think we should combine the second line of my PR with the transitions from @anothersimulacrum's PR.

Something sort of like this:

Weary: Fresh         |||\.  <-- level and progress till next level
Malus: 100/100/100/100/100  <-- All of the penalties with the highlighting

We should also merge @anothersimulacrum's changes to the weariness status messages separately from the side panel, because they're clearly an improvement, but are only tangentially related to adding a panel display.

@anothersimulacrum
Copy link
Member

anothersimulacrum commented Dec 28, 2020

We should also merge @anothersimulacrum's changes to the weariness status messages separately from the side panel, because they're clearly an improvement, but are only tangentially related to adding a panel display.

They're only related in that I'm going to insist that we have an activity level display in the sidebar before it's merged :)

Past that, I think a final display of something like this (labels aren't necessary except to show you what it is for discussion) would be a good thing, what do you think about it?

Weary: Fresh         Transition: |||\.
Activity: Moderate 100/100/100/100/100

Either in a single weariness panel or two separate ones (but that's a bit over the top, IMO).
It would probably be useful to add a 'where you're headed' indicator in addition to the transition bar, but that can be an exercise for another time.

The final issue is that the display in the effects menu and display here inconsistent, so the malus bar could be changed to percentages (which makes formatting annoying with extreme level), like this: 100%/100%/100%/133%/167% (extreme can go to 1000%). Or it could be changed to multipliers, which also could get a little messy with formatting, but in general would look something like: 1x/1x/1x/1.33x/1.67x.

Then as a final, and totally unrelated to any of this panel stuff except that it's adding info about this system, thing, a melee combat cost multiplier could/should be added to the speed section of the @ menu (separate from the effects).

If this sounds good to you and you want to go ahead, you can grab whatever you want/need of my PR and work on that here, and I can close my PR, or however you want to go ahead here.

@AlexMooney
Copy link
Contributor Author

We should also merge @anothersimulacrum's changes to the weariness status messages separately from the side panel, because they're clearly an improvement, but are only tangentially related to adding a panel display.

They're only related in that I'm going to insist that we have an activity level display in the sidebar before it's merged :)

Why wouldn't we improve the status messages right away while we keep working on the panel bar? 😕

Past that, I think a final display of something like this (labels aren't necessary except to show you what it is for discussion) would be a good thing, what do you think about it?

Weary: Fresh         Transition: |||\.
Activity: Moderate 100/100/100/100/100

The final issue is that the display in the effects menu and display here inconsistent, so the malus bar could be changed to percentages (which makes formatting annoying with extreme level), like this: 100%/100%/100%/133%/167% (extreme can go to 1000%). Or it could be changed to multipliers, which also could get a little messy with formatting, but in general would look something like: 1x/1x/1x/1.33x/1.67x.

In the Labels Narrow layout we have enough characters for Malus: 100/200/300/500/900/1000 but not a single character more (and that last character is not used by the rest of the status bar), so we won't be able to have the activity level spelled out, nor will we have room for the % after each number.

L ARM: |||||      R LEG: ||||.
Weary: Xtrem Transition: |||\.    <- Only 5 characters per description if we include "Transition"
Malus: 100/200/300/500/900/1000   <- usually aligned with the end of the transition bar, but 1000 will bump it out

I'd prefer to drop the big label so that we don't have to abbreviate the descriptions:

L ARM: |||||      R LEG: ||||.
Weary: Moderate          |||\.    <- I think people can read this without a second label
Malus: 100/100/100/125/250/500

I think percentages that have implied "%" is the only way to make it work if we want to use the reciprocals. Could also change the menu to say "10% speed" instead of "+900% duration" or whatever, but I'm fine making it 1000 instead of 10.

Then as a final, and totally unrelated to any of this panel stuff except that it's adding info about this system, thing, a melee combat cost multiplier could/should be added to the speed section of the @ menu (separate from the effects).

I agree; it should also be added in another PR, and it would definitely be helpful.

If this sounds good to you and you want to go ahead, you can grab whatever you want/need of my PR and work on that here, and I can close my PR, or however you want to go ahead here.

Not sure yet. I think your PR is closer to what we want. Your instantaneous activity levels is something we want, as are the description changes, and the level labels and the bar being tied to the transition. If you want to take it, I'm fine closing this; if you're sick of side panel bars, I can merge some of your commits in here.

@anothersimulacrum
Copy link
Member

anothersimulacrum commented Dec 28, 2020

We should also merge @anothersimulacrum's changes to the weariness status messages separately from the side panel, because they're clearly an improvement, but are only tangentially related to adding a panel display.

They're only related in that I'm going to insist that we have an activity level display in the sidebar before it's merged :)

Why wouldn't we improve the status messages right away while we keep working on the panel bar? confused

Because it's not really an improvement to add information that almost nobody knows what to do with.
Sure, now we know information about the effects, but we have no clue when it applies, what these 'activity levels' are, or when what actions are these levels.

We must make this information accessible before we add this to the tooltips, or it is effectively meaningless.

Past that, I think a final display of something like this (labels aren't necessary except to show you what it is for discussion) would be a good thing, what do you think about it?

Weary: Fresh         Transition: |||\.
Activity: Moderate 100/100/100/100/100

The final issue is that the display in the effects menu and display here inconsistent, so the malus bar could be changed to percentages (which makes formatting annoying with extreme level), like this: 100%/100%/100%/133%/167% (extreme can go to 1000%). Or it could be changed to multipliers, which also could get a little messy with formatting, but in general would look something like: 1x/1x/1x/1.33x/1.67x.

In the Labels Narrow layout we have enough characters for Malus: 100/200/300/500/900/1000 but not a single character more (and that last character is not used by the rest of the status bar), so we won't be able to have the activity level spelled out, nor will we have room for the % after each number.

L ARM: |||||      R LEG: ||||.
Weary: Xtrem Transition: |||\.    <- Only 5 characters per description if we include "Transition"
Malus: 100/200/300/500/900/1000   <- usually aligned with the end of the transition bar, but 1000 will bump it out

I'd prefer to drop the big label so that we don't have to abbreviate the descriptions:

L ARM: |||||      R LEG: ||||.
Weary: Moderate          |||\.    <- I think people can read this without a second label
Malus: 100/100/100/125/250/500

Totally agree, the label was just for illustrating what it was to anyone reading my post, because it wasn't necessarily super clear (though I guess it was the only thing it could have been in context).

Truncating is also probably a very bad idea for translation.

I think percentages that have implied "%" is the only way to make it work if we want to use the reciprocals. Could also change the menu to say "10% speed" instead of "+900% duration" or whatever, but I'm fine making it 1000 instead of 10.

I think we either need to add another line containing this/the activity level for sidebars too narrow to have both the activity level and this, or just drop using the reciprocals entirely, because I consider an absolute necessity to have the activity level display.

If this sounds good to you and you want to go ahead, you can grab whatever you want/need of my PR and work on that here, and I can close my PR, or however you want to go ahead here.

Not sure yet. I think your PR is closer to what we want. Your instantaneous activity levels is something we want, as are the description changes, and the level labels and the bar being tied to the transition. If you want to take it, I'm fine closing this; if you're sick of side panel bars, I can merge some of your commits in here.

I mostly wrote my PR because I wanted to show how I thought it should look without dictating to you to follow my arbitrary whims, so I'm totally happy to just stop working on this and leave it up to you.

@Raikiri
Copy link

Raikiri commented Dec 29, 2020

Maybe instead of listing maluses for all possible activities like this:
Malus: 100/200/300/500/900/1000
Just list them like this instead
Malus: x6.0/x10.0 where left one is the malus for the last activity performed and the right one is the maximum possible malus for current weariness level? Then there's enough space left to fit something else into the same line.

@anothersimulacrum
Copy link
Member

That's a good idea, but still doesn't fix it for the worst case, which is what I think we should plan for.

anothersimulacrum and others added 5 commits January 17, 2021 20:44
This tracks the highest activity level of the Character for the current
turn and the last turn.

Add hack for cases (such as diagonal moves with circular distances)
to keep the last activity taken in the cache and not clear it.

All of this commit will become obsolete when we have turn-granularity
activity tracking.

This is a little spotty, but it work wells enough.
This can be used to create a hp_bar or similar showing how far away the
character is from the next weariness level.
Now that activity levels are publicly shown, these can explain their
effects in detail.
@AlexMooney
Copy link
Contributor Author

AlexMooney commented Jan 18, 2021

Finally got around to pulling in the labels and inverting the penalties on the bar. I think this is good to go. Someone else can pretty it up some more, make it part of the default panels, and make sure that the panel selector doesn't overflow.

image

Copy link
Member

@anothersimulacrum anothersimulacrum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to either drop de19050, or display activity level in sidebar normally.
Those cannot be merged without showing activity level in the sidebar, because they are giving information that is reliant on information that is entirely hidden to the player.

@AlexMooney
Copy link
Contributor Author

The Speed line shows the player which activity level they're operating at.

@anothersimulacrum
Copy link
Member

Not really. The words shown in the descriptions must be shown in the UI in the context of activity. My whole issue is that the words used there are meaningless, because they aren't displayed anywhere. They aren't even the words used internally for activity level.

@moxian
Copy link
Contributor

moxian commented Jan 19, 2021

Drive-by comment: As someone who knows weariness exists and that when you get weary, it says something along the lines of "you are now weary and thus slower" (forget the exact wording), i have NO idea how to interpret 100/100/100/125/250/500 display.

IF (and this is assumption I've just made on the spot, with the helpful context in this thread) that this represents how much slower different intensity of action becomes (first for easy things, second for harder, last one for digging rocks), it really should not have all the numbers on the status bar all the time.
Instead I would much rather have:

Weary: Weary ||...
[current] Excercise [level]: Light

and move the numbers to the description in @ panel, i.e.:
20210119-020250-cataclysm-tiles

@AlexMooney
Copy link
Contributor Author

Go ahead with your PR then @anothersimulacrum. 🤷

@AlexMooney AlexMooney closed this Jan 19, 2021
@AlexMooney AlexMooney deleted the weariness_display_master branch January 21, 2021 00:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C++] Changes (can be) made in C++. Previously named `Code` Info / User Interface Game - player communication, menus, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

A weariness indicator should be in the sidebar
5 participants