Skip to main content

Shortcut

Struct Shortcut 

Source
pub struct Shortcut {
    pub id: ShortcutId,
    pub gate: AnchorId,
    pub unlock: AnchorId,
    pub on_unlock: Vec<QuestEffect>,
}
Expand description

A stage-5 shortcut door (spec-0016 §2) — the souls loop-back.

The owner’s definition of the pattern: between two rest points there are two routes. The short one starts sealed and holds nothing; the long one is full of enemies and mechanisms. You earn the far side the hard way, pull one mechanism, and the short route opens forever. That moment is the design.

The compiler owns three obligations, none of them optional:

  1. the unlock affordance is reachable while the gate is still sealed — the long route genuinely exists (DW0373);
  2. opening the gate genuinely shortens the trip across it — a shortcut that pays nothing is a leak, not a shortcut (DW0360);
  3. permanence is structural: no close-gate may target a shortcut gate (DW0372). There is no re-sealing verb to reach for.

close-gate on a NON-shortcut gate (the point-of-no-return staging beat) is untouched by this — the two verbs are deliberately disjoint.

Fields§

§id: ShortcutId

Unique shortcut id (shortcut/<kebab>).

§gate: AnchorId

The gate anchor this shortcut opens. Sealed from world-load (the prefab carries the physical fill), and its metadata must declare the fill block the compiler clears — the same requirement close-gate has.

§unlock: AnchorId

The FAR-side anchor whose interaction fires the permanent open. The compiler summons the affordance there and polls it, reusing the v0.4 interaction-entity use primitive.

§on_unlock: Vec<QuestEffect>

Effects fired once, when the shortcut opens — the bar lifting, the elevator descending, the sound of a door you will never have to earn again. Emitted server-source-safe (the poll lives on the tick).

Trait Implementations§

Source§

impl Clone for Shortcut

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Shortcut

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Shortcut

Source§

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 JsonSchema for Shortcut

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for Shortcut

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Shortcut

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Shortcut

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.