CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
9.95k stars 4.08k forks source link

After merging 74348, XXXL Start cannot use vehicles at all #74552

Open molkemon opened 3 weeks ago

molkemon commented 3 weeks ago

Describe the bug

Since the change introduced in https://github.com/CleverRaven/Cataclysm-DDA/pull/74348, starting with the XXXL trait makes you unable to enter cars, even naked. Before the change, it would be cramped but possible, sometimes even with backpack on (depended on the seat and how full the backpack was).

Char is 170cm, I'm not quite sure on the weight, it is above 150kg though. I have about 495kcal stored currently, according to formula introduced with the recent BMI changes (https://github.com/CleverRaven/Cataclysm-DDA/pull/60597), this means 64kg of pure fat, I'm not clear on how much everyting else (skeltal etc) weights though. I'm pretty sure I'm not above 200kg though, and 200kg people can definitly use cars.

Tagging @feinorgh since it was his PR.

Attach save file

Mason County-trimmed.tar.gz

Steps to reproduce

Make XXXL char (I made mine 170cm), try to enter car.

Expected behavior

Fat people can drive cars.

Screenshots

No response

Versions and configuration

Additional context

No response

feinorgh commented 3 weeks ago

As I see it the main problem right now is that the mechanic for how much actually "fits" into a car seat needs work.

Before the PR was accepted the problem was that if you were too tall (above 187 cm) you could not fit into any car seat, now the problem is that if your character is too big (obese), they just simply won't fit into the 85 L(or 95 L, depending on vehicle) space available.

In real life, an obese person will have trouble fitting into small cars, and a very tall person would have trouble too, just not the same trouble. But they will likely fit somehow, in most cars, since most car seats in real life are adjustable and will let most humans fit. How comfortable you will be is determined by how the seat is designed, and how much room around the seat there is. A Humvee is spacious, a two seat sports car is usually not. Anyone could fit into a trailer truck, but not everyone will fit into a kayak or canoe.

I imagine, without having looked into the details, that there should be a soft limit on how easy it is to get into a car and a car seat depending on your size, with a progressive penalty movement wise up until a hard size limit, that is likely much higher than the current 85/95 L.

Either way, if we are calculating the volume for the character, I think it at least should be approximating some physically realistic value, otherwise each person's density will be very strange. In real life, an obese 200 kg person will take up roughly 200 L of space (slightly more, since fat is less dense than water). A muscular person will take up less volume, since muscle is denser than water. These values could also be used for determining how easy it is to keep afloat in water, and, if the proper mutation is implemented (Helium Balloon Zombies, anyone?) and even in air.

molkemon commented 3 weeks ago

Yes, but don't forget that those 200kg on a fat person is not only fat. As I said, in my save, my "fat" is only 64kg, the rest of it is normal body stuff. Now I still don't know how much my character actually weights, I just know it is above 150kg, but I don't expect by much. Still, it's "only" 64kg fat, not 200.

feinorgh commented 2 weeks ago

That's true, but very roughly speaking any human body will have about the same density as water. At the very extremes that does not hold but for most cases it won't make much difference.

I've looked up dimensions of car seats in general, and a rough calculation seems to indicate that any car seat by itself (say around 50×50×75 cm) can fit anywhere from 150-190 L, not counting leg room and head room. Some of this space will be taken up by the steering wheel for the driver.

I think a relatively simple solution would be to increase the volumes of car seats in the JSON files, and set the value so that it feels realistic and practical.

For realism, it should not be possible to enter a seat with a military rucksack on your back, or if the character is huge or greatly obese. But most fat characters, and most tall characters, should be able fit into a car seat.

PatrikLundell commented 2 weeks ago

"Anyone could fit into a trailer truck..." but apparently not a prison transport: #74560 .

The car seat volume discussion is garbage: it's a huge difference between storing things onto a seat and placing ones butt onto one. In the former case you have to place all the stuff into a fairly shallow depression, while in the latter you place the person's butt onto the seat (and fat people may indeed have trouble with spill over if there isn't enough room to the sides), the legs in front of it (where you could otherwise store more stuff than on the seat itself), and most of the driver above the butt, and thus above the seat, not in it. A very tall person may indeed get issues with the lack of headroom (and leg room, if the seat cannot be moved back far enough). Thus, a car seat's storage capacity is largely decoupled from its driver size capacity. The latter is more due to factors such as leg room, roof height and general size of the seating area, none of which are modeled by the game. You could possibly try to make guesses about the room available based on the name of the vehicle, or by introducing vehicle interior space classifications to vehicles (that would have to work with custom vehicles, including the customization of normally cramped vehicles to fit large people.

feinorgh commented 2 weeks ago

Currently the comparison for both storage space and whether a character fits into a seat is determined by the "size" property of seats. If I understand it correctly the "size" property models both the size of the vehicle part itself, and how much it can store, which would roughly hold true for square boxes, but likely not for much else. Some big vehicle parts cannot store anything at all, while others are are meant to function as storage space themselves.

For instance, a table may take up 20 L space, but you can probably "store" much more on it (say, a 60 L metal tank).

A car seat may take up 85-95 L of space itself, but as @PatrikLundell mentioned, how much you can store in the seat, and how big a person can fit in that seat in a given car should realistically be two different things. I've personally put an empty 210 L plastic watering container in a passenger seat in a small car.

One technical solution would be to add explicit "storage volume" to the vehicle parts that need them, especially seats, and provide a separate check depending on the type of car for how large a character can use a seat, and with what difficulty.

I'll make some attempts to model this.

anoobindisguise commented 2 weeks ago

I've been having the same issue.

Zireael07 commented 2 weeks ago

I believe the offending PR was reverted?

feinorgh commented 2 weeks ago

I believe the offending PR was reverted?

It was removed from inclusion in 0.H, but remains in experimental.