pub struct WargearOption {
pub additional_cost: Option<u64>,
pub game_version: GameVersionRef,
pub id: EntityId,
pub is_free: bool,
pub model_constraint: Option<WargearOptionModelConstraint>,
pub replacement: Vec<EntityId>,
pub replacement_choice: Vec<Vec<EntityId>>,
pub replaces: Vec<EntityId>,
pub unit_id: EntityId,
}Expand description
A wargear option available to models within a unit: a weapon/wargear swap, a pure add-on, or a choice between alternatives. Models start with the unit’s base loadout; an option modifies that loadout for the number of models its model_constraint permits.
JSON schema
{
"title": "Wargear Option",
"description": "A wargear option available to models within a unit: a weapon/wargear swap, a pure add-on, or a choice between alternatives. Models start with the unit's base loadout; an option modifies that loadout for the number of models its `model_constraint` permits.",
"type": "object",
"required": [
"game_version",
"id",
"unit_id"
],
"properties": {
"additional_cost": {
"oneOf": [
{
"type": "integer",
"minimum": 0.0
},
{
"type": "null"
}
]
},
"game_version": {
"$ref": "#/$defs/game-version-ref"
},
"id": {
"$ref": "#/$defs/entity-id"
},
"is_free": {
"default": true,
"type": "boolean"
},
"model_constraint": {
"oneOf": [
{
"description": "Limits how many models may take this option. The eligible-model count is: `any_number` ? model_count : `per_n_models` ? floor(model_count / per_n_models) : (`max_count` ?? 1); then clamped by `max_count` when both are set. `model_name` scopes the option to a specific model profile (e.g. the unit's champion); omit for single-profile units.",
"type": "object",
"properties": {
"any_number": {
"description": "When true, every model in the unit may take the option ('Any number of models can each ...'). Mutually exclusive in spirit with `per_n_models`.",
"default": false,
"type": "boolean"
},
"max_count": {
"type": "integer",
"minimum": 1.0
},
"model_name": {
"type": "string",
"minLength": 1
},
"per_n_models": {
"type": "integer",
"minimum": 1.0
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"replacement": {
"description": "Weapon or wargear IDs added to the model — all of them. Exactly one of `replacement` / `replacement_choice` is present.",
"type": "array",
"items": {
"$ref": "#/$defs/entity-id"
},
"minItems": 1
},
"replacement_choice": {
"description": "A choice of replacements ('one of the following'): pick exactly one inner group; each group's IDs are all added together. Exactly one of `replacement` / `replacement_choice` is present.",
"type": "array",
"items": {
"type": "array",
"items": {
"$ref": "#/$defs/entity-id"
},
"minItems": 1
},
"minItems": 2
},
"replaces": {
"description": "Weapon or wargear IDs removed from the model. Omit for a pure add-on (the option only equips new wargear).",
"type": "array",
"items": {
"$ref": "#/$defs/entity-id"
},
"minItems": 1
},
"unit_id": {
"$ref": "#/$defs/entity-id"
}
},
"additionalProperties": false
}Fields§
§additional_cost: Option<u64>§game_version: GameVersionRef§id: EntityId§is_free: bool§model_constraint: Option<WargearOptionModelConstraint>§replacement: Vec<EntityId>Weapon or wargear IDs added to the model — all of them. Exactly one of replacement / replacement_choice is present.
replacement_choice: Vec<Vec<EntityId>>A choice of replacements (‘one of the following’): pick exactly one inner group; each group’s IDs are all added together. Exactly one of replacement / replacement_choice is present.
replaces: Vec<EntityId>Weapon or wargear IDs removed from the model. Omit for a pure add-on (the option only equips new wargear).
unit_id: EntityIdTrait Implementations§
Source§impl Clone for WargearOption
impl Clone for WargearOption
Source§fn clone(&self) -> WargearOption
fn clone(&self) -> WargearOption
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for WargearOption
impl Debug for WargearOption
Source§impl<'de> Deserialize<'de> for WargearOption
impl<'de> Deserialize<'de> for WargearOption
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for WargearOption
impl PartialEq for WargearOption
Source§fn eq(&self, other: &WargearOption) -> bool
fn eq(&self, other: &WargearOption) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for WargearOption
impl Serialize for WargearOption
impl StructuralPartialEq for WargearOption
Auto Trait Implementations§
impl Freeze for WargearOption
impl RefUnwindSafe for WargearOption
impl Send for WargearOption
impl Sync for WargearOption
impl Unpin for WargearOption
impl UnsafeUnpin for WargearOption
impl UnwindSafe for WargearOption
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more