beyond-all-reason / beyond-all-reason/RecoilEngine
CanAttack unitdef tag is ambiguous and needs alteration so that it does not interfere with other firing tags
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
The "CanAttack" unitdef tag poses ambiguity and requires modification to avoid conflicting with other firing-related tags. Among the available tags, "CanAttack = true," "noAutoFire = true," and "canManualFire = true," should serve distinct purposes.
Disabling the "Attack" button entails setting "canAttack" to false, which is beneficial when you wish to restrict the unit from receiving attack orders, however, doing so disables the use of manual-fire weapons.
The "canManualFire" tag holds significance as it ensures that firing removes the order, preventing repetitive attacks on the same target and allowing for seamless integration with order management systems.
Similarly, "noAutoFire" is crucial to prevent automatic firing, especially for units equipped with manual-fire weapons.
The challenge arises from the fact that substituting "canAttack" for "canManualFire" is inadequate, as it inadvertently disables manual firing entirely, rendering it impossible to eliminate the basic attack functionality without completely deactivating manual fire.
Contributor guide
Research direction
No files, tests, or entry points are named. Start by locating the C++ handling for the CanAttack, canManualFire, and noAutoFire unitdef tags, then trace attack-button behavior, manual firing, automatic firing, and order removal. Done means the three tags have distinct, non-conflicting effects and the relevant unit behavior is covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100