-
-
Notifications
You must be signed in to change notification settings - Fork 103
Forcing specific weapon by target type #1631
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
base: develop
Are you sure you want to change the base?
Conversation
Nightly build for this pull request:
This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build. |
besides, if you're certain that weapons of a techno won't make use of the following things, you can use this ability to make it skip previous weapon index picking logic, to save some calculation cost
a similar optimization was also made in #1568 |
|
||
if (pTypeExt->ForceWeapon_Defenses >= 0) | ||
{ | ||
auto const pBuildingType = abstract_cast<BuildingTypeClass*>(pTargetTechno->GetTechnoType()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
auto const pBuildingType = static_cast<BuildingClass*>(pTargetTechno)->Type;
or auto const pBuildingType = static_cast<BuildingTypeClass*>(pTargetType);
case AbstractType::Unit: | ||
{ | ||
if (pTypeExt->ForceAAWeapon_Units >= 0 && pTarget->IsInAir()) | ||
forceWeaponIndex = pTypeExt->ForceAAWeapon_Units; | ||
else | ||
forceWeaponIndex = pTypeExt->ForceWeapon_Units; | ||
|
||
break; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you can also add a ForceWeapon.Naval
This is a supplement for #1630. With multiple weapons being set, you can use
ForceWeapon
to enable them when attacking different targets. This pull request is a basic one that should be enough for many casesForceWeapon.Defenses
is enabled, it'll be used if the target is a building withIsBaseDefense=yes
. Otherwise it'll followForceWeapon.Buildings
, if enabled.ForceWeapon.Infantry/Units/Aircraft
can be applied to both ground and air target ifForceAAWeapon.Infantry/Units/Aircraft
is not set.ForceAAWeapon.Infantry/Units/Aircraft
do the same things but only for air target. Taking priority toForceWeapon.Infantry/Units/Aircraft
, which means that they can only be applied to ground target when they're both set.In
rulesmd.ini
: