pub struct Entity {Show 20 fields
pub id: EntityId,
pub max_hp: u64,
pub hp: u64,
pub abilities: Vec<ActiveAbility>,
pub actions_queue: EntityActionsQueue,
pub attributes: EntityAttributes,
pub effect_ids: Vec<EffectId>,
pub coordinates: Coordinates,
pub move_target: Option<Coordinates>,
pub width: i8,
pub rewards: Option<Vec<EnemyReward>>,
pub class_id: Option<ClassId>,
pub team: EntityTeam,
pub has_big_hp_bar: bool,
pub entity_template_id: Option<EntityTemplateId>,
pub flip_state: Option<FlipState>,
pub mana: Option<ManaPool>,
pub proc_entropy: EntropyCell,
pub law_bridges: LawBridgeCharges,
pub law_cores: CoresState,
}Fields§
§id: EntityId§max_hp: u64§hp: u64§abilities: Vec<ActiveAbility>§actions_queue: EntityActionsQueue§attributes: EntityAttributes§effect_ids: Vec<EffectId>§coordinates: Coordinates§move_target: Option<Coordinates>Destination of the in-flight run, None when not moving. Also reserves
the cell so a concurrently-planning opponent will not run onto it.
width: i8§rewards: Option<Vec<EnemyReward>>§class_id: Option<ClassId>§team: EntityTeam§has_big_hp_bar: bool§entity_template_id: Option<EntityTemplateId>§flip_state: Option<FlipState>Fight-local copy of this hero’s global equipment-side state. Character
combatants carry Some; non-player entities carry None.
mana: Option<ManaPool>Fight-local mana. Character combatants carry Some (full at fight
start, never carried between fights); mobs carry None and are never
mana-gated.
proc_entropy: EntropyCellPer-proc-type entropy accumulators (PoE-style deterministic proc
resolution): key = stat code,
value = accumulator in permyriad (proc when it crosses 10000). Combat
runtime only: serde(skip) keeps it off the wire/DB/Unity schema
(postcard is positional — a serialized field would break the wire);
it resets on reconnect, like PoE resets entropy after idle.
law_bridges: LawBridgeChargesLive bridge charges of THIS combatant (twin cores, OVT-2517, laws
v0.2). Combat runtime only, same treatment as proc_entropy:
serde(skip) keeps it off the wire, the DB and the Unity schema.
active_fight is never persisted, so there is no durable copy that
could drift; a reconnect starts a fresh fight and therefore an empty
charge, which is exactly what “the charge resets between fights” already
prescribes.
law_cores: CoresStateCores snapshot THIS combatant fights with, taken when the entity was
built (entities::seed_law_state). Everything the law layer needs
mid-fight — which laws are slotted, at what level, on which side — is
read from here, so the local hero, the party ally and a PvP opponent all
take the same entity-local path instead of the session-state lookup that
only ever worked for the first two.
Empty for mobs and for a combatant whose cores are not unlocked yet, and then every law computation degenerates to “no contribution”.
A snapshot rather than a live borrow on purpose: Core build edits made during combat update durable character state, so this fight intentionally keeps the Core values captured at start and the new Core build applies to the next fight. This also keeps a party-ally refresh from swapping the ally’s laws out from under attributes that were already folded in.
Combat runtime only, same treatment as law_bridges.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Entity
impl<'de> Deserialize<'de> for Entity
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 FromWasmAbi for Entitywhere
Self: DeserializeOwned,
impl FromWasmAbi for Entitywhere
Self: DeserializeOwned,
Source§impl IntoWasmAbi for Entity
impl IntoWasmAbi for Entity
Source§impl JsonSchema for Entity
impl JsonSchema for Entity
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 Entitywhere
Self: DeserializeOwned,
impl OptionFromWasmAbi for Entitywhere
Self: DeserializeOwned,
Source§impl OptionIntoWasmAbi for Entity
impl OptionIntoWasmAbi for Entity
Source§impl RefFromWasmAbi for Entitywhere
Self: DeserializeOwned,
impl RefFromWasmAbi for Entitywhere
Self: DeserializeOwned,
Source§type Abi = <JsType as RefFromWasmAbi>::Abi
type Abi = <JsType as RefFromWasmAbi>::Abi
Self are recovered from.Source§impl Tsify for Entity
impl Tsify for Entity
const DECL: &'static str = "export interface Entity {\n id: EntityId;\n max_hp: number;\n hp: number;\n abilities: ActiveAbility[];\n actions_queue: EntityActionsQueue;\n attributes: EntityAttributes;\n effect_ids: EffectId[];\n coordinates: Coordinates;\n /**\n * Destination of the in-flight run, `None` when not moving. Also reserves\n * the cell so a concurrently-planning opponent will not run onto it.\n */\n move_target: Coordinates | null;\n width: number;\n rewards: EnemyReward[] | null;\n class_id: ClassId | null;\n team: EntityTeam;\n has_big_hp_bar: boolean;\n entity_template_id: EntityTemplateId | null;\n /**\n * Fight-local copy of this hero\\\'s global equipment-side state. Character\n * combatants carry `Some`; non-player entities carry `None`.\n */\n flip_state?: FlipState | null;\n /**\n * Fight-local mana. Character combatants carry `Some` (full at fight\n * start, never carried between fights); mobs carry `None` and are never\n * mana-gated.\n */\n mana: ManaPool | null;\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 Entitywhere
Self: DeserializeOwned,
impl VectorFromWasmAbi for Entitywhere
Self: DeserializeOwned,
type Abi = <JsType as VectorFromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]>
Source§impl VectorIntoWasmAbi for Entity
impl VectorIntoWasmAbi for Entity
type Abi = <JsType as VectorIntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi
impl Eq for Entity
impl StructuralPartialEq for Entity
Auto Trait Implementations§
impl !Freeze for Entity
impl RefUnwindSafe for Entity
impl Send for Entity
impl Sync for Entity
impl Unpin for Entity
impl UnwindSafe for Entity
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.