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

Open
#1,499 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.