New source found from dndbeyond.com

This commit is contained in:
2025-07-02 01:00:11 -07:00
parent 2c657770de
commit b7f7f4a655
24 changed files with 291 additions and 43 deletions
@@ -17,6 +17,7 @@ import {
Constants,
Container,
ContainerUtils,
CoreUtils,
DataOrigin,
DiceUtils,
EntityValueLookup,
@@ -135,6 +136,19 @@ export class ItemDetail extends React.PureComponent<Props> {
}
};
handleReplaceAbilityStatChange = (
enabled: boolean,
statId: Constants.AbilityStatEnum
) => {
const { onCustomDataUpdate } = this.props;
const adjustmentType = CoreUtils.getAdjustmentTypeByStatId(statId);
if (onCustomDataUpdate && adjustmentType) {
onCustomDataUpdate(adjustmentType, enabled);
}
};
handleHexWeaponChange = (enabled) => {
const { onCustomDataUpdate } = this.props;
@@ -319,7 +333,7 @@ export class ItemDetail extends React.PureComponent<Props> {
};
renderClassCustomize = () => {
const { item } = this.props;
const { item, ruleData } = this.props;
const isHexWeapon = ItemUtils.isHexWeapon(item);
const canHexWeapon = ItemUtils.canHexWeapon(item);
@@ -327,8 +341,16 @@ export class ItemDetail extends React.PureComponent<Props> {
const canPactWeapon = ItemUtils.canPactWeapon(item);
const canBeDedicatedWeapon = ItemUtils.canBeDedicatedWeapon(item);
const isDedicatedWeapon = ItemUtils.isDedicatedWeapon(item);
const replacementWeaponStats = ItemUtils.getReplacementWeaponStats(item);
const appliedWeaponReplacementStats =
ItemUtils.getAppliedWeaponReplacementStats(item);
if (!canHexWeapon && !canPactWeapon && !canBeDedicatedWeapon) {
if (
!canHexWeapon &&
!canPactWeapon &&
!canBeDedicatedWeapon &&
replacementWeaponStats.length === 0
) {
return null;
}
@@ -361,6 +383,21 @@ export class ItemDetail extends React.PureComponent<Props> {
/>
</div>
)}
{replacementWeaponStats.map((statId) => (
<div className="ct-item-detail__class-customize-item" key={statId}>
<Checkbox
enabled={appliedWeaponReplacementStats.includes(statId)}
onChange={(enabled) =>
this.handleReplaceAbilityStatChange(enabled, statId)
}
label={`Use ${RuleDataUtils.getStatNameById(
statId,
ruleData,
true
)}`}
/>
</div>
))}
</div>
);
};