pub struct ArtifactsSettings {
pub unlock_chapter: i64,
pub starter_artifact_id: ArtifactTemplateId,
pub max_artifact_level: i64,
pub upgrade_ladder: Vec<ArtifactUpgradeStep>,
pub socket_unlocks: Vec<ArtifactSocketUnlock>,
pub max_stone_level: i64,
pub stone_upgrade_ladder: Vec<ArtifactUpgradeStep>,
pub halfway_bell_threshold_share: f64,
pub thin_mirror_share: f64,
pub stone_drop: ArtifactStoneDropSettings,
}Expand description
All artifact tunables.
Fields§
§unlock_chapter: i64Chapter at which the artifact navigation vertical becomes visible.
UI only — it gates NOTHING about ownership. Since the acquisition pass there is no per-template chapter gate at all: the starter is granted at character creation, and every other artifact is a bundle reward (today, the top-1 weekly rating bundles).
starter_artifact_id: ArtifactTemplateIdThe guaranteed freebie. It exists so the stone system does not depend on
a rare drop, so it must always resolve to a real catalog entry —
GameConfig::validate_artifacts checks that.
max_artifact_level: i64§upgrade_ladder: Vec<ArtifactUpgradeStep>§socket_unlocks: Vec<ArtifactSocketUnlock>§max_stone_level: i64§stone_upgrade_ladder: Vec<ArtifactUpgradeStep>ART-03 Halfway Bell’s only number, and deliberately a share rather
than an absolute threshold: FlipSettings::progress_threshold is a
balance knob that moves (the stones vertical rescales it), and a hard
number here would silently stop meaning “halfway” the moment it did.
ART-02 Thin Mirror’s only number: the share of Law Power a hidden law
woken by the World Law applies its effect at.
stone_drop: ArtifactStoneDropSettingsImplementations§
Source§impl ArtifactsSettings
impl ArtifactsSettings
Sourcepub fn is_socket_unlocked(
&self,
socket: ArtifactSocketSlot,
chapter_level: i64,
) -> bool
pub fn is_socket_unlocked( &self, socket: ArtifactSocketSlot, chapter_level: i64, ) -> bool
Whether socket is open at chapter_level. An unscheduled socket never
opens; GameConfig::validate_artifacts requires all six to be scheduled,
so this is a safety net rather than a reachable state.
The share of the configured flip threshold law moves the bar to.
1.0 for every law but ART-03, so the caller never has to know which
law is which — and a nonsense configured share reads as “no change”
rather than as an instant or unreachable flip.
The share of Law Power hidden laws run at under ART-02 Thin Mirror, or
0.0 for every other worn artifact (and for nothing worn).
A nonsense configured share reads as “no wake” rather than as a free full-strength second build — the conservative direction, since this rule switches on half the build.
Sourcepub fn upgrade_copies_required(&self, target_level: i64) -> Option<i64>
pub fn upgrade_copies_required(&self, target_level: i64) -> Option<i64>
Raw copies needed to take an artifact to target_level. None means
the ladder has no such rung — at the cap, or a config gap that
validation rules out at load time.
Sourcepub fn stone_upgrade_copies_required(&self, target_level: i64) -> Option<i64>
pub fn stone_upgrade_copies_required(&self, target_level: i64) -> Option<i64>
Same, for an artifact stone.
Sourcepub fn earliest_unlock_of(&self, column: ArtifactSocketColumn) -> Option<i64>
pub fn earliest_unlock_of(&self, column: ArtifactSocketColumn) -> Option<i64>
The unlock chapter of the first socket of column, used by validation
and by tests to state the “left column first” rule without repeating the
slot list.
Trait Implementations§
Source§impl Clone for ArtifactsSettings
impl Clone for ArtifactsSettings
Source§fn clone(&self) -> ArtifactsSettings
fn clone(&self) -> ArtifactsSettings
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ArtifactsSettings
impl Debug for ArtifactsSettings
Source§impl<'de> Deserialize<'de> for ArtifactsSettings
impl<'de> Deserialize<'de> for ArtifactsSettings
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>,
Source§impl From<ArtifactsSettings> for JsValuewhere
ArtifactsSettings: Serialize,
impl From<ArtifactsSettings> for JsValuewhere
ArtifactsSettings: Serialize,
Source§fn from(value: ArtifactsSettings) -> Self
fn from(value: ArtifactsSettings) -> Self
Source§impl FromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
impl FromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
Source§impl IntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
impl IntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
Source§impl JsonSchema for ArtifactsSettings
impl JsonSchema for ArtifactsSettings
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreSource§impl OptionFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
impl OptionFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
Source§impl OptionIntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
impl OptionIntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
Source§impl RefFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
impl RefFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
Source§type Abi = <JsType as RefFromWasmAbi>::Abi
type Abi = <JsType as RefFromWasmAbi>::Abi
Self are recovered from.Source§type Anchor = SelfOwner<ArtifactsSettings>
type Anchor = SelfOwner<ArtifactsSettings>
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.Source§impl Serialize for ArtifactsSettings
impl Serialize for ArtifactsSettings
Source§impl Tsify for ArtifactsSettings
impl Tsify for ArtifactsSettings
const DECL: &'static str = "/**\n * All artifact tunables.\n */\nexport interface ArtifactsSettings {\n /**\n * Chapter at which the artifact navigation vertical becomes visible.\n *\n * UI only \u{2014} it gates NOTHING about ownership. Since the acquisition pass\n * there is no per-template chapter gate at all: the starter is granted at\n * character creation, and every other artifact is a bundle reward (today,\n * the top-1 weekly rating bundles).\n */\n unlock_chapter: number;\n /**\n * The guaranteed freebie. It exists so the stone system does not depend on\n * a rare drop, so it must always resolve to a real catalog entry \u{2014}\n * `GameConfig::validate_artifacts` checks that.\n */\n starter_artifact_id: ArtifactTemplateId;\n max_artifact_level: number;\n upgrade_ladder: ArtifactUpgradeStep[];\n socket_unlocks: ArtifactSocketUnlock[];\n max_stone_level: number;\n stone_upgrade_ladder: ArtifactUpgradeStep[];\n /**\n * `ART-03 Halfway Bell`\\\'s only number, and deliberately a **share** rather\n * than an absolute threshold: `FlipSettings::progress_threshold` is a\n * balance knob that moves (the stones vertical rescales it), and a hard\n * number here would silently stop meaning \\\"halfway\\\" the moment it did.\n */\n halfway_bell_threshold_share: number;\n /**\n * `ART-02 Thin Mirror`\\\'s only number: the share of Law Power a hidden law\n * woken by the World Law applies its effect at.\n */\n thin_mirror_share: number;\n stone_drop: ArtifactStoneDropSettings;\n}"
const SERIALIZATION_CONFIG: SerializationConfig
type JsType = JsType
fn into_js(&self) -> Result<Self::JsType, Error>where
Self: Serialize,
fn from_js<T>(js: T) -> Result<Self, Error>
Source§impl VectorFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
impl VectorFromWasmAbi for ArtifactsSettingswhere
Self: DeserializeOwned,
type Abi = <JsType as VectorFromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]>
Source§impl VectorIntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
impl VectorIntoWasmAbi for ArtifactsSettingswhere
ArtifactsSettings: Serialize,
type Abi = <JsType as VectorIntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi
Source§impl WasmDescribeVector for ArtifactsSettings
impl WasmDescribeVector for ArtifactsSettings
Auto Trait Implementations§
impl Freeze for ArtifactsSettings
impl RefUnwindSafe for ArtifactsSettings
impl Send for ArtifactsSettings
impl Sync for ArtifactsSettings
impl Unpin for ArtifactsSettings
impl UnwindSafe for ArtifactsSettings
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.