HDIAndrew / EFS

12 stars 0 forks source link

Bombarding a hex with a totally unspotted units does NOT pop up with the warning about bombarding empty hexes #168

Open floralpond opened 1 year ago

floralpond commented 1 year ago

Description:

in https://github.com/HDIAndrew/Patch/issues/32 a change was made to prevent players from being able to spot unseen units by bombarding unseen hexes without a penalty. This was the intent anyway. But in discord today, Cranky Corvid and Unfleshedone pointed out that if you happen to click on a tile with unseen units, it will NOT give you the warning about bombarding empty hexes. Therefore, you can click on an empty hex and if it gives you the warning, then you can simply cancel out of it and you now know that it was an empty hex and don't need to spend a move point.

Expected behavior: When bombarding any hex without already seen units, you SHOULD get the warning about bombarding empty hexes costs a move point.

Actual behavior: When bombarding any hex without already seen units, you DO NOT get the warning about bombarding empty hexes costs a move point, and the game immediately goes into combat with the unseen units.

Game version:

1.51 vanilla

Steps to reproduce:

  1. Open up the save file attached.
  2. bombard_test.zip
  3. On Kish, to the left of the fort, there are 3 hexes surrounded by water (the water was added to guide you to the hidden units).
  4. All 3 hexes have unseen units in them. 2 of them are fog of war hexes, and 1 is a non-fog of war hex, but still having an unseen rebel unit.
  5. If you use the cruiser to attempt to bombard any other empty hex, the game will give you the message and you can cancel out of it.
  6. If you use the cruiser to attempt to bombard one of the hexes surrounded by water, the game will immediately go into combat.

Additional information:

Matt-Caspermeyer commented 1 year ago

What should we do here if there are unspotted units that are either allied or at peace with us, instead of war?

floralpond commented 1 year ago

I guess there are 3 options.

  1. Immediately go to war with that faction without any kind of confirmation.
  2. You end up bombarding the neutral/allied units but do NOT go to war. These units then become spotted and if you try again you will go to war.
  3. There's no difference to what happens today when you try to bombard unspotted neutral parties, where it asks you if you're sure you want to bombard because it'll cause war.

Option 1 is probably OK, and you can consider it just a risk of bombarding randomly, thus discouraging bombarding random tiles. If you want to reverse the consequences of your actions you'll have to engage in some diplomacy to smooth things over with the other party. Option 2 is probably a bit more realistic. In real life, countries accidentally bomb neutral/allies all the time "by accident". It's a scandal, but it's not immediate war. After spotting the units, if you continue to bombard then that's intentional and would cause war, which again seems realistic. Option 3 is probably the least risk from a technical perspective, although least realistic. From a gameplay perspective, you're probably trying to spot unseen ENEMY units, rather than neutral units.

==================================================

Then again, I'm not sure how much any of this matters because I just realized that you don't need to use the "bombard' feature search for units. You can use the landing feature. If you attempt to land, it'll ask you if you're sure b/c it'll damage your ship. But if there are unspotted units there, then it'll just tell you "you can't do this because there are unspotted units".

So I think for now this one needs some more thought to figure out the best course of action. Doing any of the 1, 2, or 3 options does make a change but doesn't really change the situation a whole lot.

floralpond commented 1 year ago

I think it's OK to sideline this issue for now, unless people also want to change the messaging around landing damage. I think it's OK to make some kind of design change around both bombarding and landing messaging, but I don't think it's a high value add.

ezolenko commented 1 year ago

Basically the issue here is that a warning message serves as a side channel for information. Similar how "there is no such username" response on login prompts serves as a way to look for existing usernames or to check if knows usernames have account there.

To avoid the side channel, "wasting MP" warning message should show up in all cases, before checking if there are units there. Then, if user agreed to spend a turn, MP is decreased and user is asked if they want to bomb friendly units. At this point they can back down, but MP is spent nevertheless.

Imagine a ship setting up for a bombing run before receiving panicked messages from friendly forces on the ground. Fuel and time is already spent, but weapons don't need to fire.

Same with landing damage -- always show the message, decrement MP, then check for units and show another message.

floralpond commented 10 months ago

I'm changing the milestone to 1.6, I think we're going to need to think through some more of these corner conditions. I agree we'd want to have the warning message pop in all cases, but there's some cases where we don't have a message where we might want one, like usually bombarding an occupied hex asks you if you want to go to war? But if you land on a peaceful unoccupied city then you automatically go to war, no questions asked. So there's probably some more design before implementing anything.

Matt-Caspermeyer commented 9 months ago

Basically the issue here is that a warning message serves as a side channel for information. Similar how "there is no such username" response on login prompts serves as a way to look for existing usernames or to check if knows usernames have account there.

To avoid the side channel, "wasting MP" warning message should show up in all cases, before checking if there are units there. Then, if user agreed to spend a turn, MP is decreased and user is asked if they want to bomb friendly units. At this point they can back down, but MP is spent nevertheless.

Imagine a ship setting up for a bombing run before receiving panicked messages from friendly forces on the ground. Fuel and time is already spent, but weapons don't need to fire.

Same with landing damage -- always show the message, decrement MP, then check for units and show another message.

I like this solution as it should be easy to implement and resolves all issues.