Skip to main content

DecodedSpecialAbility

Enum DecodedSpecialAbility 

Source
pub enum DecodedSpecialAbility {
    BodyFuel {
        spell_id: u16,
        flags: u8,
        caster_level: u8,
    },
    Rage {
        spell_id: u16,
        flags: u8,
        caster_level: u8,
    },
    MonsterSlamAttack {
        spell_id: u16,
        flags: u8,
        caster_level: u8,
    },
    Unknown {
        spell_id: u16,
        spell_label: Option<String>,
        flags: u8,
        caster_level: u8,
    },
}
Expand description

One decoded entry from a UTC’s SpecAbilityList, dispatched by matching the spells.2da row’s label cell against the small set of vanilla special-ability ids the corpus references.

Vanilla K1 references exactly three rows from special-ability entries (SPECIAL_ABILITY_BODY_FUEL, SPECIAL_ABILITY_RAGE, MONSTER_ABILITY_SLAM_ATTACK); each gets a typed variant. The partymember.utc template references a spell id that does not resolve in vanilla spells.2da (see the “Vanilla Data Anomalies” subsection of the UTC engine audit), and that falls into DecodedSpecialAbility::Unknown alongside any mod-added rows.

Every variant carries spell_id (preserved so callers can recover the source row id even after dispatch), flags (SpellFlags), and caster_level (SpellCasterLevel). The engine appends every list entry without deduplication, so a UTC carrying N entries with the same spell_id surfaces as N separate DecodedSpecialAbility values.

Variants§

§

BodyFuel

spells.2da label SPECIAL_ABILITY_BODY_FUEL. Stackable in vanilla – the six Bastila variants each carry 99 entries.

Fields

§spell_id: u16

Raw spell_id.

§flags: u8

Raw SpellFlags.

§caster_level: u8

Raw SpellCasterLevel.

§

Rage

spells.2da label SPECIAL_ABILITY_RAGE. Wookiee racial.

Fields

§spell_id: u16

Raw spell_id.

§flags: u8

Raw SpellFlags.

§caster_level: u8

Raw SpellCasterLevel.

§

MonsterSlamAttack

spells.2da label MONSTER_ABILITY_SLAM_ATTACK. Monster classes (Wraids, Katarn, Korriban monsters).

Fields

§spell_id: u16

Raw spell_id.

§flags: u8

Raw SpellFlags.

§caster_level: u8

Raw SpellCasterLevel.

§

Unknown

Special ability could not be matched to a typed variant. Covers mod-added rows, vanilla anomalies (the partymember out-of-range Spell = 299), missing spells.2da, or any vanilla label not in the typed set.

Fields

§spell_id: u16

Raw spell_id from the GFF.

§spell_label: Option<String>

Resolved label cell from spells.2da at row spell_id, or None when the table is unavailable, the row does not exist, or the label cell is missing.

§flags: u8

Raw SpellFlags.

§caster_level: u8

Raw SpellCasterLevel.

Implementations§

Source§

impl DecodedSpecialAbility

Source

pub fn spell_id(&self) -> u16

Returns the raw spell_id regardless of variant.

Source

pub fn flags(&self) -> u8

Returns SpellFlags regardless of variant.

Source

pub fn caster_level(&self) -> u8

Returns SpellCasterLevel regardless of variant.

Trait Implementations§

Source§

impl Clone for DecodedSpecialAbility

Source§

fn clone(&self) -> DecodedSpecialAbility

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DecodedSpecialAbility

Source§

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

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

impl PartialEq for DecodedSpecialAbility

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for DecodedSpecialAbility

Source§

impl StructuralPartialEq for DecodedSpecialAbility

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> 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> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> StrictAs for T

Source§

fn strict_as<Dst>(self) -> Dst
where T: StrictCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> StrictCastFrom<Src> for Dst
where Src: StrictCast<Dst>,

Source§

fn strict_cast_from(src: Src) -> Dst

Casts the value.
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.