Grabbed dndbeyond's source code

```
~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js
```
This commit is contained in:
2025-05-28 11:50:03 -07:00
commit 8df9031d27
3592 changed files with 319051 additions and 0 deletions
@@ -0,0 +1,35 @@
import { intersection } from 'lodash';
import { CreatureAccessors } from '../Creature';
import { getCreatureGroupId, getMaxChallengeValue, getMonsterIds, getMonsterTypeId, getMovementIds, getSizeIds, } from './accessors';
export function isRuleGroup(rule, groupId) {
return getCreatureGroupId(rule) === groupId;
}
export function isValidCreature(creature, rule) {
const challengeInfo = CreatureAccessors.getChallengeInfo(creature);
// max challenge rating
const maxChallengeValue = getMaxChallengeValue(rule);
if (maxChallengeValue !== null && challengeInfo !== null && challengeInfo.value > maxChallengeValue) {
return false;
}
// specific monster id
const monsterIds = getMonsterIds(rule);
if (monsterIds.length && !monsterIds.includes(CreatureAccessors.getId(creature))) {
return false;
}
// monster type
if (getMonsterTypeId(rule) !== null && CreatureAccessors.getTypeId(creature) !== getMonsterTypeId(rule)) {
return false;
}
// size
const sizeIds = getSizeIds(rule);
if (sizeIds.length && !sizeIds.includes(CreatureAccessors.getSizeId(creature))) {
return false;
}
// excluded movements
const excludedMovementIds = getMovementIds(rule);
if (excludedMovementIds.length &&
intersection(CreatureAccessors.getMovementIds(creature), excludedMovementIds).length) {
return false;
}
return true;
}