From 151590af7ac4bf0daaeddb3cd9f909482d833b52 Mon Sep 17 00:00:00 2001 From: David Kruger Date: Wed, 9 Jul 2025 01:00:11 -0700 Subject: [PATCH] New source found from dndbeyond.com --- .../NumberDisplay/NumberDisplay.tsx | 5 ++ .../es/engine/Extra/generators.js | 2 +- .../rules-engine/es/engine/Format/utils.js | 5 +- .../es/engine/Vehicle/constants.js | 1 + .../es/engine/VehicleComponent/constants.js | 1 - .../es/managers/VehicleComponentManager.js | 7 ++- .../es/managers/VehicleManager.js | 1 + .../Shared/components/ExtraRow/ExtraRow.tsx | 20 ++++++- .../VehicleBlockAttribute.tsx | 9 ++- .../VehicleBlockComponent.tsx | 24 ++++++-- .../VehicleBlockComponents.tsx | 7 ++- .../VehicleBlockHeader/VehicleBlockHeader.tsx | 10 +++- .../VehicleBlockPrimary.tsx | 32 ++++++++-- .../VehicleBlockPrimaryAttributes.tsx | 59 +++++++++++++------ .../VehicleBlockSeparator.tsx | 2 + .../VehicleBlockShellCap.tsx | 2 + .../panes/VehiclePane/VehiclePane.tsx | 7 ++- .../js/Shared/utils/Component/generators.ts | 1 + 18 files changed, 150 insertions(+), 45 deletions(-) diff --git a/ddb_main/components/NumberDisplay/NumberDisplay.tsx b/ddb_main/components/NumberDisplay/NumberDisplay.tsx index d7751da..c9232b4 100644 --- a/ddb_main/components/NumberDisplay/NumberDisplay.tsx +++ b/ddb_main/components/NumberDisplay/NumberDisplay.tsx @@ -15,6 +15,7 @@ export interface NumberDisplayProps extends HTMLAttributes { isModified?: boolean; size?: "large"; numberFallback?: ReactNode; + useMph?: boolean; } export const NumberDisplay: FC = ({ @@ -23,6 +24,7 @@ export const NumberDisplay: FC = ({ isModified = false, size, numberFallback = "--", + useMph, className, ...props }) => { @@ -37,6 +39,9 @@ export const NumberDisplay: FC = ({ if (number && number % FEET_IN_MILES === 0) { number = number / FEET_IN_MILES; label = `mile${Math.abs(number) === 1 ? "" : "s"}`; + if (useMph) { + label = "mph"; + } } else { label = "ft."; } diff --git a/ddb_main/packages/rules-engine/es/engine/Extra/generators.js b/ddb_main/packages/rules-engine/es/engine/Extra/generators.js index 3a14e76..1270722 100644 --- a/ddb_main/packages/rules-engine/es/engine/Extra/generators.js +++ b/ddb_main/packages/rules-engine/es/engine/Extra/generators.js @@ -124,7 +124,7 @@ export function generateVehicleMeta(vehicle, ruleData) { } let type = VehicleAccessors.getType(vehicle); let typeName = type === null ? '' : RuleDataUtils.getObjectTypeName(type, ruleData); - typeName = typeName ? typeName.toLowerCase() : ''; + typeName = typeName || ''; let primaryText = `${size} ${typeName}`.trim(); let movementTypesText = VehicleAccessors.getMovementNames(vehicle).join(', '); metaText.push(`${primaryText}${movementTypesText ? ` (${movementTypesText})` : ''}`.trim()); diff --git a/ddb_main/packages/rules-engine/es/engine/Format/utils.js b/ddb_main/packages/rules-engine/es/engine/Format/utils.js index 1d72d70..0393211 100644 --- a/ddb_main/packages/rules-engine/es/engine/Format/utils.js +++ b/ddb_main/packages/rules-engine/es/engine/Format/utils.js @@ -109,12 +109,15 @@ export function stripTooltipTags(str, fallback = '') { * Formats the specified number as a distance with the appropriate unit * @param distance The distance measured in feet to format */ -export function renderDistance(distance) { +export function renderDistance(distance, useMph) { let displayNumber = distance; let label = 'ft.'; if (distance !== 0 && distance % FEET_IN_MILES === 0) { displayNumber = CoreUtils.convertFeetToMiles(distance); label = `mile${Math.abs(displayNumber) === 1 ? '' : 's'}`; + if (useMph) { + label = `mph`; + } } return `${displayNumber} ${label}`; } diff --git a/ddb_main/packages/rules-engine/es/engine/Vehicle/constants.js b/ddb_main/packages/rules-engine/es/engine/Vehicle/constants.js index 41d22bd..6b1ecce 100644 --- a/ddb_main/packages/rules-engine/es/engine/Vehicle/constants.js +++ b/ddb_main/packages/rules-engine/es/engine/Vehicle/constants.js @@ -25,6 +25,7 @@ export var VehicleConfigurationDisplayTypeEnum; VehicleConfigurationDisplayTypeEnum["SHIP"] = "ship"; VehicleConfigurationDisplayTypeEnum["INFERNAL_WAR_MACHINE"] = "infernal-war-machine"; VehicleConfigurationDisplayTypeEnum["SPELLJAMMER"] = "spelljammer"; + VehicleConfigurationDisplayTypeEnum["ELEMENTAL_AIRSHIP"] = "elemental-airship"; })(VehicleConfigurationDisplayTypeEnum || (VehicleConfigurationDisplayTypeEnum = {})); export var VehicleConfigurationPrimaryComponentManageTypeEnum; (function (VehicleConfigurationPrimaryComponentManageTypeEnum) { diff --git a/ddb_main/packages/rules-engine/es/engine/VehicleComponent/constants.js b/ddb_main/packages/rules-engine/es/engine/VehicleComponent/constants.js index 377e5ac..bae8394 100644 --- a/ddb_main/packages/rules-engine/es/engine/VehicleComponent/constants.js +++ b/ddb_main/packages/rules-engine/es/engine/VehicleComponent/constants.js @@ -2,7 +2,6 @@ export var ComponentAdjustmentEnum; (function (ComponentAdjustmentEnum) { ComponentAdjustmentEnum["HIT_POINT_SPEED_ADJUSTMENT"] = "speed"; })(ComponentAdjustmentEnum || (ComponentAdjustmentEnum = {})); -//TODO new for spelljammers export var ComponentCostTypeEnum; (function (ComponentCostTypeEnum) { ComponentCostTypeEnum["COMPONENT"] = "component"; diff --git a/ddb_main/packages/rules-engine/es/managers/VehicleComponentManager.js b/ddb_main/packages/rules-engine/es/managers/VehicleComponentManager.js index 941f847..de1cd87 100644 --- a/ddb_main/packages/rules-engine/es/managers/VehicleComponentManager.js +++ b/ddb_main/packages/rules-engine/es/managers/VehicleComponentManager.js @@ -3,7 +3,7 @@ import { ActionAccessors } from "../engine/Action"; import { CharacterUtils } from "../engine/Character"; import { HelperUtils } from "../engine/Helper"; import { RuleDataAccessors } from "../engine/RuleData"; -import { VehicleConfigurationPrimaryComponentManageTypeEnum } from "../engine/Vehicle"; +import { VehicleConfigurationDisplayTypeEnum, VehicleConfigurationPrimaryComponentManageTypeEnum, } from "../engine/Vehicle"; import { VehicleComponentAccessors } from "../engine/VehicleComponent"; import { rulesEngineSelectors } from "../selectors"; import { BaseManager } from './BaseManager'; @@ -133,7 +133,10 @@ export class VehicleComponentManager extends BaseManager { allowComponentProperty() { const primaryManageType = this.vehicle.getPrimaryComponentManageType(); const isPrimaryComponent = this.getIsPrimary(); - return !(primaryManageType === VehicleConfigurationPrimaryComponentManageTypeEnum.VEHICLE && isPrimaryComponent); + const isElementalAirship = this.vehicle.getDisplayType() === VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; + return !(primaryManageType === VehicleConfigurationPrimaryComponentManageTypeEnum.VEHICLE && + isPrimaryComponent && + !isElementalAirship); } generateVehicleComponentSpeedInfos() { const enableSpeeds = this.vehicle.getEnableComponentSpeeds(); diff --git a/ddb_main/packages/rules-engine/es/managers/VehicleManager.js b/ddb_main/packages/rules-engine/es/managers/VehicleManager.js index fc95621..1c441d4 100644 --- a/ddb_main/packages/rules-engine/es/managers/VehicleManager.js +++ b/ddb_main/packages/rules-engine/es/managers/VehicleManager.js @@ -119,6 +119,7 @@ export class VehicleManager extends BaseManager { this.isSpelljammer = () => this.getDisplayType() === VehicleConfigurationDisplayTypeEnum.SPELLJAMMER; this.isInfernalWarMachine = () => this.getDisplayType() === VehicleConfigurationDisplayTypeEnum.INFERNAL_WAR_MACHINE; this.isShip = () => this.getDisplayType() === VehicleConfigurationDisplayTypeEnum.SHIP; + this.isElementalAirship = () => this.getDisplayType() === VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; // Utils this.generateVehicleMeta = () => { const ruleData = rulesEngineSelectors.getRuleData(this.state); diff --git a/ddb_main/tools/js/Shared/components/ExtraRow/ExtraRow.tsx b/ddb_main/tools/js/Shared/components/ExtraRow/ExtraRow.tsx index d0dfac5..774f3eb 100644 --- a/ddb_main/tools/js/Shared/components/ExtraRow/ExtraRow.tsx +++ b/ddb_main/tools/js/Shared/components/ExtraRow/ExtraRow.tsx @@ -7,6 +7,7 @@ import { Constants, Creature, ExtraManager, + VehicleManager, } from "@dndbeyond/character-rules-engine/es"; import { NumberDisplay } from "~/components/NumberDisplay"; @@ -75,7 +76,7 @@ export const ExtraRow: FC = ({ typeName = type; } - let description: string = `${size} ${typeName.toLowerCase()}`.trim(); + let description: string = `${size} ${typeName}`.trim(); if (description) { metaItems.push(description); } @@ -164,12 +165,27 @@ export const ExtraRow: FC = ({ const { data, label, showTooltip } = movementInfo; + let useMph = false; + const isVehicle = extra.isVehicle(); + if (isVehicle) { + const vehicleData = extra.getExtraData() as VehicleManager; + const displayType = vehicleData?.getDisplayType(); + const isElementalAirship = + displayType === + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; + useMph = isElementalAirship; + } + let contentNode: React.ReactNode = null; if (data !== null) { contentNode = (
- + {showTooltip && renderAdditionalInfoTooltip()}
{data.movementId !== Constants.MovementTypeEnum.WALK && ( diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockAttribute/VehicleBlockAttribute.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockAttribute/VehicleBlockAttribute.tsx index d2216b3..b33fcc9 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockAttribute/VehicleBlockAttribute.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockAttribute/VehicleBlockAttribute.tsx @@ -4,6 +4,7 @@ interface Props { label: string; value: React.ReactNode; extraValue: React.ReactNode; + displayColon?: boolean; } export default class VehicleBlockAttribute extends React.PureComponent { static defaultProps = { @@ -11,11 +12,15 @@ export default class VehicleBlockAttribute extends React.PureComponent { }; render() { - const { label, value, extraValue } = this.props; + const { label, value, extraValue, displayColon } = this.props; + + const labelDisplay: string = displayColon ? `${label}:` : label; return (
- {label} + + {labelDisplay} + {value} diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockComponent/VehicleBlockComponent.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockComponent/VehicleBlockComponent.tsx index 9d3a18a..66c459c 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockComponent/VehicleBlockComponent.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockComponent/VehicleBlockComponent.tsx @@ -1,3 +1,4 @@ +import clsx from "clsx"; import React from "react"; import { ManageIcon } from "@dndbeyond/character-components/es"; @@ -42,6 +43,9 @@ export default class VehicleBlockComponent extends React.PureComponent { const nameLabel: string = name !== null ? name : ""; const isSpelljammer = displayType === Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER; + const isElementalAirship = + displayType === + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; let componentCount: string = ""; if (count > 1) { @@ -56,8 +60,11 @@ export default class VehicleBlockComponent extends React.PureComponent { requiredCrew ? ` (${requiredCrew} Crew${count > 1 ? " Each" : ""})` : "" }`; } else { - let typesText = FormatUtils.renderNonOxfordCommaList(typeNames); - primaryText = `${typesText}: ${nameLabel} ${componentCount}`; + const typesNames = FormatUtils.renderNonOxfordCommaList(typeNames); + const typeText = `${typesNames}: `; + primaryText = `${ + isElementalAirship ? "" : typeText + }${nameLabel} ${componentCount}`; } let callout: React.ReactNode = null; @@ -79,8 +86,8 @@ export default class VehicleBlockComponent extends React.PureComponent { return (
- {actions.map((action) => ( - + {actions.map((action, idx) => ( + ))}
); @@ -127,7 +134,14 @@ export default class VehicleBlockComponent extends React.PureComponent { } = this.props; return ( -
+
{ components = components.filter( (component) => !( - component.displayType === - Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER && + (component.displayType === + Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER || + component.displayType === + Constants.VehicleConfigurationDisplayTypeEnum + .ELEMENTAL_AIRSHIP) && component.isPrimaryComponent ) ); diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockHeader/VehicleBlockHeader.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockHeader/VehicleBlockHeader.tsx index 3ed410e..9c7f175 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockHeader/VehicleBlockHeader.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockHeader/VehicleBlockHeader.tsx @@ -15,7 +15,7 @@ export default class VehicleBlockHeader extends React.PureComponent { } let size: string = sizeName !== null ? sizeName : ""; - let type: string = typeName !== null ? typeName.toLowerCase() : ""; + let type: string = typeName !== null ? typeName : ""; return [size, type].join(" ").trim(); }; @@ -65,14 +65,18 @@ export default class VehicleBlockHeader extends React.PureComponent { const typeInfo = this.renderTypeInfo(); const dimensions = this.renderDimensions(); + const showMeta = + displayType !== + Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER && + displayType !== + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; return (
{name !== null ? name : ""}
- {displayType !== - Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER && ( + {showMeta && (
{typeInfo} {dimensions}
diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimary/VehicleBlockPrimary.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimary/VehicleBlockPrimary.tsx index 924c055..501495f 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimary/VehicleBlockPrimary.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimary/VehicleBlockPrimary.tsx @@ -120,6 +120,7 @@ export default class VehicleBlockPrimary extends React.PureComponent { primaryProperties, shouldCoalesce, displayType, + creatureCapacityInfo, } = this.props; let cargoCapacity: Array = []; @@ -138,6 +139,11 @@ export default class VehicleBlockPrimary extends React.PureComponent { const isSpelljammer = displayType === Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER; + const isElementalAirship = + displayType === + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; + + const showSeperator = !isSpelljammer && !isElementalAirship; return ( <> @@ -164,18 +170,32 @@ export default class VehicleBlockPrimary extends React.PureComponent { extraValue={this.renderEffectiveTravelDistance()} /> )} - + {!isElementalAirship ? ( + + ) : ( + creatureCapacityInfo.map((capacity, idx) => ( + + )) + )} {cargoCapacity.length > 0 && ( )}
- {!isSpelljammer && } + {showSeperator && } ); }; diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimaryAttributes/VehicleBlockPrimaryAttributes.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimaryAttributes/VehicleBlockPrimaryAttributes.tsx index a8ef448..0779840 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimaryAttributes/VehicleBlockPrimaryAttributes.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockPrimaryAttributes/VehicleBlockPrimaryAttributes.tsx @@ -110,16 +110,21 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

+ modes: Array, + displayType: Constants.VehicleConfigurationDisplayTypeEnum ): React.ReactNode => { + const isElementalAirship = + displayType === + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; + let speedDisplayStrings: Array = modes.map((mode) => { const { value, description, restrictionsText, movementInfo } = mode; let stringParts: Array = []; - if (movementInfo) { + if (movementInfo && !isElementalAirship) { stringParts.push(`${movementInfo.description} speed`); } - stringParts.push(FormatUtils.renderDistance(value)); + stringParts.push(FormatUtils.renderDistance(value, isElementalAirship)); if (description) { stringParts.push(description); } @@ -134,12 +139,16 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

{ - const { armorClassInfo } = this.props; + const { armorClassInfo, displayType } = this.props; if (armorClassInfo === null) { return null; } + const isElementalAirship = + displayType === + Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP; + const { moving, base, description } = armorClassInfo; let armorClassValue: number | null = base; @@ -155,7 +164,7 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

); }; @@ -206,7 +216,9 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

= sortedCosts.map((cost) => { - const value: string = cost.value ? `${cost.value} gp` : "--"; + const value: string = cost.value + ? `${FormatUtils.renderLocaleNumber(cost.value)} GP` + : "--"; const description: string = cost.description ? `(${cost.description})` : ""; @@ -216,25 +228,33 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

{armorClassInfo !== null && this.renderArmorClassAttribute()} {hitPointInfo !== null && ( )} - {isSpelljammer && !!hitPointInfo?.damageThreshold && ( - - )} + {(isSpelljammer || isElementalAirship) && + !!hitPointInfo?.damageThreshold && ( + + )} {speedInfos.map((speedInfo, idx) => { let speedAttributeLabel: string = "Speed"; if (speedInfo.type !== null && !isSpelljammer) { @@ -248,7 +268,8 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

); })} @@ -258,7 +279,7 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

)} - {requiredCrew !== null && !isSpelljammer && ( + {requiredCrew !== null && !isSpelljammer && !isElementalAirship && ( )} {isPrimaryComponent && @@ -273,7 +294,11 @@ export default class VehicleBlockPrimaryAttributes extends React.PureComponent

)} {costValues.length > 0 && ( - + )} ); diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockSeparator/VehicleBlockSeparator.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockSeparator/VehicleBlockSeparator.tsx index c42d7a7..259cec4 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockSeparator/VehicleBlockSeparator.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockSeparator/VehicleBlockSeparator.tsx @@ -20,6 +20,8 @@ export default class VehicleBlockSeparator extends React.PureComponent { VehicleBlockSeparatorInfernal, [Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER]: VehicleBlockSeparatorShip, + [Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP]: + VehicleBlockSeparatorShip, }; //sets Ship style as default diff --git a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockShellCap/VehicleBlockShellCap.tsx b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockShellCap/VehicleBlockShellCap.tsx index f76f464..774a6c4 100644 --- a/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockShellCap/VehicleBlockShellCap.tsx +++ b/ddb_main/tools/js/Shared/components/VehicleBlock/VehicleBlockShellCap/VehicleBlockShellCap.tsx @@ -27,6 +27,8 @@ export default class VehicleBlockShellCap extends React.PureComponent { VehicleBlockShellCapInfernal, [Constants.VehicleConfigurationDisplayTypeEnum.SPELLJAMMER]: VehicleBlockShellCapShip, + [Constants.VehicleConfigurationDisplayTypeEnum.ELEMENTAL_AIRSHIP]: + VehicleBlockShellCapShip, }; //sets Ship style as default diff --git a/ddb_main/tools/js/Shared/containers/panes/VehiclePane/VehiclePane.tsx b/ddb_main/tools/js/Shared/containers/panes/VehiclePane/VehiclePane.tsx index 7b4bcee..d96dc05 100644 --- a/ddb_main/tools/js/Shared/containers/panes/VehiclePane/VehiclePane.tsx +++ b/ddb_main/tools/js/Shared/containers/panes/VehiclePane/VehiclePane.tsx @@ -385,7 +385,7 @@ class VehiclePane extends React.PureComponent { return null; } - if (!vehicle.isSpelljammer()) { + if (!vehicle.isSpelljammer() && !vehicle.isElementalAirship()) { const primaryComponent = vehicle.getPrimaryComponent(); if (primaryComponent === null) { return null; @@ -442,6 +442,7 @@ class VehiclePane extends React.PureComponent { } return ( this.handleHealthAdjusterSave(diff, component)} heading={`Hit Points (${componentName}${componentNumber})`} @@ -507,7 +508,8 @@ class VehiclePane extends React.PureComponent { const primaryComponentManageType = vehicle.getPrimaryComponentManageType(); const enableConditionTracking = vehicle.getEnableConditionTracking(); const enableFuelTracking = vehicle.getEnableFuelTracking(); - const shouldCoalesce = vehicle.isSpelljammer(); + const shouldCoalesce = + vehicle.isSpelljammer() || vehicle.isElementalAirship(); return ( @@ -550,7 +552,6 @@ class VehiclePane extends React.PureComponent { renderVehicleName = (): React.ReactNode => { const { vehicle } = this.state; - const { theme } = this.props; if (!vehicle) { return null; //TODO could render a default empty state diff --git a/ddb_main/tools/js/Shared/utils/Component/generators.ts b/ddb_main/tools/js/Shared/utils/Component/generators.ts index 293c99d..f5aac52 100644 --- a/ddb_main/tools/js/Shared/utils/Component/generators.ts +++ b/ddb_main/tools/js/Shared/utils/Component/generators.ts @@ -96,6 +96,7 @@ export function generateVehicleBlockPrimaryProps( cargoCapacityInfo: vehicle.getVehicleCargoCapacityInfo(), conditionImmunities: vehicle.generateVehicleConditionImmunityNames(), creatureCapacityDescriptions: vehicle.getCreatureCapacityDescriptions(), + creatureCapacityInfo: vehicle.getCreatureCapacity(), damageImmunities: vehicle.generateVehicleDamageImmunityNames(), displayType: vehicle.getDisplayType(), primaryProperties: deriveVehicleComponentPrimaryPropertiesProps(vehicle),