``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
62 lines
2.5 KiB
JavaScript
62 lines
2.5 KiB
JavaScript
import { DB_STRING_CARAPACE, DB_STRING_INTEGRATED_PROTECTION } from '../Core';
|
|
import { DataOriginTypeEnum } from '../DataOrigin';
|
|
import { ModifierAccessors, ModifierDerivers, ModifierValidators } from '../Modifier';
|
|
import { RacialTraitAccessors } from '../RacialTrait';
|
|
import { getArmorTypeId } from './accessors';
|
|
import { ArmorTypeEnum } from './constants';
|
|
/**
|
|
* TODO fix this dirty dirty hack for Integrated Protection
|
|
* @param modifier
|
|
* @param modifierData
|
|
* @param hasLightArmorProficiency
|
|
*/
|
|
export function hack__getSetUnarmoredModifierValue(modifier, modifierData, hasLightArmorProficiency) {
|
|
const dataOrigin = ModifierAccessors.getDataOrigin(modifier);
|
|
const dataOriginType = ModifierAccessors.getDataOriginType(modifier);
|
|
if (dataOriginType === DataOriginTypeEnum.RACE &&
|
|
RacialTraitAccessors.getName(dataOrigin.primary) === DB_STRING_INTEGRATED_PROTECTION &&
|
|
ModifierAccessors.getValue(modifier) === 1 &&
|
|
!hasLightArmorProficiency) {
|
|
return ModifierDerivers.deriveValue(modifier, modifierData, undefined, false);
|
|
}
|
|
return ModifierDerivers.deriveValue(modifier, modifierData);
|
|
}
|
|
/**
|
|
* TODO fix this dirty dirty hack for Carapace
|
|
* @param modifier
|
|
* @param modifierData
|
|
* @param isWearingHeavyArmor
|
|
*/
|
|
export function hack__deriveBonusArmorModifierValue(modifier, modifierData, isWearingHeavyArmor) {
|
|
const dataOrigin = ModifierAccessors.getDataOrigin(modifier);
|
|
const dataOriginType = ModifierAccessors.getDataOriginType(modifier);
|
|
if (dataOriginType === DataOriginTypeEnum.RACE &&
|
|
RacialTraitAccessors.getName(dataOrigin.primary) === DB_STRING_CARAPACE &&
|
|
ModifierAccessors.getValue(modifier) === 1 &&
|
|
isWearingHeavyArmor) {
|
|
return 0;
|
|
}
|
|
return ModifierDerivers.deriveValue(modifier, modifierData);
|
|
}
|
|
// This is a very CLEAN hack, but should probably not be here
|
|
// If we have a global modifier turning off disadvantage on stealth, and it is
|
|
// medium armor master, we need to check if this is medium armor
|
|
// since we only remove disadvantage in that case for that modifier
|
|
/**
|
|
*
|
|
* @param item
|
|
* @param modifiers
|
|
* @returns {boolean}
|
|
*/
|
|
export function hack__deriveStealthMediumArmorMasterShouldReturnStealthDefinition(item, modifiers) {
|
|
if (modifiers.length === 1) {
|
|
if (ModifierValidators.isStealthDisadvantageRemoveModifierForMediumArmor(modifiers[0])) {
|
|
const armorType = getArmorTypeId(item);
|
|
if (armorType && armorType !== ArmorTypeEnum.MEDIUM_ARMOR) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|