-
-
Notifications
You must be signed in to change notification settings - Fork 991
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
[Feature Request]: Make Liminal be sensitive to overillumination/overdarkening #6740
Comments
The liminal alignment has always been kind of confused in its implementation. |
I agree that this should be discussed, especially considering that the current system turned out to be quite sophisticated and not intuitive. First, what the general idea of the liminal alignment (as I see it). A liminal unit fights best in the neutral ToD and fights worse and worse if more light/more dark. This kind of unit uses shadows and other effects of mixing light and dark to his benefit, but pure light/dark hampers him. How it is implemented now. The system is quite elaborate, I admit, it was introduced in the commit 4048387 What is not good in this system? First, it makes the liminal alignment map-dependent (schedule-dependent) and therefore quite hard to grasp. In a scenario with the standard schedule our liminal unit has +25% at dawn/dusk and fights better than our lawful/chaotic guys, then we move indoors and it has 0% and have no advantage, although it's kinda the same light level as it was before, when he had an advantage. Second, it's not only oversophisticated by itself, it makes illumination/darkening work inconsistently with liminals. On the standard map at dawn a liminal has +25% bonus and 0% if illuminated/darkened. But in the map with eternal twilight illumination/darkening has no effect at all on liminals, because of I would note separately that the description of all this behaviour is quite sparse and confused. It's not documented in the wiki, a "liminal_bonus" parameter of maps is only briefly mentioned in the Lua page without any explanation. The in-game help confuses the thing even further, it simply states that "liminal: +25% at dawn/dusk, 0% otherwise" (which is not true neither outdoors, nor, let say, in a deep underground). So, I have two proposals. If we want to keep this logic behind finding |
I think the reasoning behind the current system was that for schedules that have a continuum of lawful bonuses, this system makes liminal roughly inverse to it, sort of like the following chart:
|
#2664 (comment) |
Yeah, that comment explains my rationale. I think the cases mentioned by @Discontinuum were overlooked though – that is, when you have a schedule that's of a single alignment. There's two cases of this. However, one of these is already handled, and the other is cannot be handled. Eternal twilightHere, based on the intended meaning of liminal, they should have a permanent bonus. Unfortunately, there's no way to calculate this, because there's nothing to calculate it from, so I don't think it can be directly implemented into the system. I believe there's an extra key to manually set the max liminal bonus for the schedule though. I suppose we could make the max liminal bonus default to 25 if the calculation yields 0, though… but we'd need to distinguish that from explicitly setting it to 0. Eternal daylight (or night)Here, liminal should always be at a disadvantage, which means they never get a bonus nor a penalty and are effectively equivalent to neutral units. |
Okay, so if I understand correctly, one of the primary complaints here is that the formula renders liminals immune to illumination-type abilities in some cases. So consider this schedule:
If my math is correct, applying illumination (+25% capped to 25%) gives this:
And applying darkening (-25% capped to -25%) gives this:
Then the other complaint is that liminal stops functioning in an eternal twilight schedule. I think the easiest way to handle this would be, as mentioned earlier, for the calculated max liminal bonus to be no less than 25. (You also mentioned the underground and indoors schedules, but I think it should work as expected there? Or was it that liminal functions but interacts differently with illumination/darkening?) |
Incorrect. I talk about uncapped illumination/darkening, that goes over 25, not the capped one. So the table with my case looks like this (for illumination)
|
So when it's capped, the current liminal is correct in your mind? |
Yes. For the standard schedule, if illumination/darkening abilities are capped so light is always in range -25%..25%, the current system works fine. My concerns are the cases when the light level can go beyond the -25..25 range and non-standard schedules. A brief summary: the current formula |
And that proposal doesn't change anything for typical schedules, so it seems reasonable. My proposal then is to change the formula to |
I will pull a PR based on your proposition, but let me know one thing, the clamp to a minimum of 25 must be applied in case here liminal bonus specified in scenario or only on liminal_bonus calculation based in Tod only? |
The minimum is only for the automatic calculation. If someone explicitly sets max liminal bonus to 15, we should honour that choice. |
Describe the desired feature
Liminal in 1.16 has +25% when 0 light and 0% otherwise. I think such abrupt behaviour is inconsistent with the logic of other light-sensitive alignments. Even +1% light makes it 0%, it makes this alignment weird-behaving in various scenarios of partial light (like the 24 hour schedule).So my proposal would be to make the formula for liminal be25%-abs(light)
. This way it would be the same in terms of 1v1 multiplayer balance (@Hejnewar can confirm, I think), but it will make liminal much more consistent with another light-sensitive alignmentsOfc this is to be done for 1.17 and later 1.18 only, not in 1.16 (becase of backward compatibility)
UPD: I found that liminal is even more tricky, it works like
bonus = std::max(0, max_liminal_bonus-std::abs(lawful_bonus));
where max_liminal_bonus is calculated over the whole schedule. Then my proposal would be to removemax(0,
to make liminals get pentalties for overillumination/overdarkening. Tbh I don't know whether the current system is good, cause it makes liminal be kinda different on different maps (so on an eternal twilight map a liminal fights without any bonus, on a map with a regular day it fights better during twilight).And also it's kinda complicated and not elaborated in the help.
So, my proposals:
Either
max_liminal_bonus-abs(light)
or just
25-abs(light)
The text was updated successfully, but these errors were encountered: