beyond-all-reason / Beyond-All-Reason

Main game repository for Beyond All Reason.
https://www.beyondallreason.info/
Other
1.78k stars 296 forks source link

Impossible commands should not be allowed by the UI or the server #3538

Open Jazcash opened 2 months ago

Jazcash commented 2 months ago

Description

Units cannot issue certain commands on themselves, for example, a unit cannot reclaim itself, cannot repair itself, cannot guard itself.

A common scenario is a transport unloading a unit while the transport is on land mode. The transport will land on top of the unit which makes it very awkward to pick back up because the command for the transport to guard itself gets shown instead.

image

Arguably, transports shouldn't land directly on top of their unloaded unit, and should perhaps instead move to the side, but I think not allowing impossible commands to be issued is the more important solution because that also fixes other mishaps that players occasionally run into.

Expected Behaviour

No command should show at all.

Actual Behaviour

Impossible commands are allowed to be issued by the UI and aren't even ignored by the server. So, for example, if a player orders a constructor to guard itself before doing its next action, it will freeze and not do anything.

Reproduction steps

No response

Other

No response

sprunk commented 2 months ago

Drop the orders gameside. Server doesn't simulate and the engine shouldn't drop commands that can be generally meaningful but happen not to in BAR specifically.

MeSaber commented 2 months ago

Transport sometimes land beside unloaded unit: https://www.twitch.tv/videos/2207888027 timestamp: 2:23