Struct veloren_common::comp::Health
source · pub struct Health {
current: u32,
base_max: u32,
maximum: u32,
pub last_change: HealthChange,
pub is_dead: bool,
damage_contributors: HashMap<DamageContributor, (u64, Time)>,
}
Expand description
Health is represented by u32s within the module, but treated as a float by the rest of the game.
Fields§
§current: u32
Current health is how much health the entity currently has. Current health must be lower than or equal to maximum health.
base_max: u32
Base max is the amount of health the entity has without considering temporary modifiers such as buffs
maximum: u32
Maximum is the amount of health the entity has after temporary modifiers are considered
last_change: HealthChange
The last change to health
is_dead: bool
§damage_contributors: HashMap<DamageContributor, (u64, Time)>
Keeps track of damage per DamageContributor and the last time they caused damage, used for EXP sharing
Implementations§
source§impl Health
impl Health
sourcepub const HEALTH_EPSILON: f32 = 2.98032319E-8f32
pub const HEALTH_EPSILON: f32 = 2.98032319E-8f32
Used when comparisons to health are needed outside this module.
sourceconst MAX_HEALTH: u16 = 65_534u16
const MAX_HEALTH: u16 = 65_534u16
Maximum value allowed for health before scaling
sourceconst MAX_SCALED_HEALTH: u32 = 16_776_704u32
const MAX_SCALED_HEALTH: u32 = 16_776_704u32
The maximum value allowed for current and maximum health Maximum value is (u16:MAX - 1) * 256, which only requires 24 bits. This can fit into an f32 with no loss to precision
sourceconst SCALING_FACTOR_FLOAT: f32 = 256f32
const SCALING_FACTOR_FLOAT: f32 = 256f32
The amount health is scaled by within this module
const SCALING_FACTOR_INT: u32 = 256u32
sourcepub fn set_fraction(&mut self, fraction: f32)
pub fn set_fraction(&mut self, fraction: f32)
Instantly set the health fraction.
sourcepub fn needs_maximum_update(&self, modifiers: StatsModifier) -> Option<u32>
pub fn needs_maximum_update(&self, modifiers: StatsModifier) -> Option<u32>
Calculates a new maximum value and returns it if the value differs from the current maximum.
Note: The returned value uses an internal format so don’t expect it to
be useful for anything other than a parameter to
[Self::update_maximum
].
sourcepub fn update_internal_integer_maximum(&mut self, maximum: u32)
pub fn update_internal_integer_maximum(&mut self, maximum: u32)
Updates the maximum value for health.
Note: The accepted u32
value is in the internal format of this type.
So attempting to pass values that weren’t returned from
Self::needs_maximum_update
can produce strange or unexpected
results.
pub fn new(body: Body) -> Self
sourcepub fn change_by(&mut self, change: HealthChange) -> bool
pub fn change_by(&mut self, change: HealthChange) -> bool
Returns a boolean if the delta was not zero.
pub fn damage_contributions( &self, ) -> impl Iterator<Item = (&DamageContributor, &u64)>
pub fn recent_damagers(&self) -> impl Iterator<Item = (Uid, Time)> + '_
pub fn should_die(&self) -> bool
pub fn kill(&mut self)
pub fn revive(&mut self)
Trait Implementations§
source§impl<'de> Deserialize<'de> for Health
impl<'de> Deserialize<'de> for Health
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>,
Auto Trait Implementations§
impl Freeze for Health
impl RefUnwindSafe for Health
impl Send for Health
impl Sync for Health
impl Unpin for Health
impl UnwindSafe for Health
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,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<C, M> ConvertSaveload<M> for C
impl<C, M> ConvertSaveload<M> for C
§type Error = Infallible
type Error = Infallible
§fn convert_into<F>(
&self,
_: F,
) -> Result<<C as ConvertSaveload<M>>::Data, <C as ConvertSaveload<M>>::Error>
fn convert_into<F>( &self, _: F, ) -> Result<<C as ConvertSaveload<M>>::Data, <C as ConvertSaveload<M>>::Error>
Data
) using
entity to marker mapping function§fn convert_from<F>(
data: <C as ConvertSaveload<M>>::Data,
_: F,
) -> Result<C, <C as ConvertSaveload<M>>::Error>
fn convert_from<F>( data: <C as ConvertSaveload<M>>::Data, _: F, ) -> Result<C, <C as ConvertSaveload<M>>::Error>
Data
) using
entity to marker mapping function§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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more