# Enum veloren_common::comp::buff::BuffKind

source · ```
pub enum BuffKind {
```## Show 35 variants

Regeneration,
Saturation,
Potion,
Agility,
CampfireHeal,
EnergyRegen,
IncreaseMaxEnergy,
IncreaseMaxHealth,
Invulnerability,
ProtectingWard,
Frenzied,
Hastened,
Fortitude,
Reckless,
Flame,
Frigid,
Lifesteal,
Bloodfeast,
ImminentCritical,
Fury,
Sunderer,
Defiance,
Berserk,
Burning,
Bleeding,
Cursed,
Crippled,
Frozen,
Wet,
Ensnared,
Poisoned,
Parried,
PotionSickness,
Heatstroke,
Polymorphed,
}

## Expand description

De/buff Kind. This is used to determine what effects a buff will have

## Variants§

### Regeneration

Restores health/time for some period. Strength should be the healing per second.

### Saturation

Restores health/time for some period for consumables. Strength should be the healing per second.

### Potion

Applied when drinking a potion. Strength should be the healing per second.

### Agility

Increases movement speed and vulnerability to damage as well as decreases the amount of damage dealt. Movement speed increases linearly with strength 1.0 is an 100% increase Damage vulnerability and damage reduction are both hard set to 100%

### CampfireHeal

Applied when sitting at a campfire. Strength is fraction of health restored per second.

### EnergyRegen

Restores energy/time for some period. Strength should be the healing per second.

### IncreaseMaxEnergy

Raises maximum energy. Strength should be 10x the effect to max energy.

### IncreaseMaxHealth

Raises maximum health. Strength should be the effect to max health.

### Invulnerability

Makes you immune to attacks. Strength does not affect this buff.

### ProtectingWard

Reduces incoming damage. Strength scales the damage reduction non-linearly. 0.5 provides 50% DR, 1.0 provides 67% DR.

### Frenzied

Increases movement speed and gives health regeneration. Strength scales the movement speed linearly. 0.5 is 150% speed, 1.0 is 200% speed. Provides regeneration at 10x the value of the strength.

### Hastened

Increases movement and attack speed, but removes chance to get critical hits. Strength scales strength of both effects linearly. 0.5 is a 50% increase, 1.0 is a 100% increase.

### Fortitude

Increases resistance to incoming poise, and poise damage dealt as health is lost. Strength scales the resistance non-linearly. 0.5 provides 50%, 1.0 provides 67%. Strength scales the poise damage increase linearly, a strength of 1.0 and n health less from maximum health will cause poise damage to increase by n%.

### Reckless

Increases both attack damage and vulnerability to damage. Damage increases linearly with strength, 1.0 is a 100% increase. Damage reduction decreases linearly with strength, 1.0 is a 100% decrease.

### Flame

Provides immunity to burning and increases movement speed in lava. Movement speed increases linearly with strength, 1.0 is a 100% increase. Your attacks cause targets to receive the burning debuff Strength of burning debuff is a fraction of the damage, fraction increases linearly with strength

### Frigid

Your attacks cause targets to receive the frozen debuff Strength of frozen debuff is equal to the strength of this buff

### Lifesteal

Your attacks have lifesteal Strength increases the fraction of damage restored as life

### Bloodfeast

Your attacks against bleeding targets have lifesteal Strength increases the fraction of damage restored as life

### ImminentCritical

Guarantees that the next attack is a precise hit. Does this kind of hackily by adding 100% to the precision, will need to be adjusted if we ever allow double precision hits instead of treating 100 as a ceiling.

### Fury

Increases combo gain, every 1 strength increases combo per strike by 1, rounds to nearest integer

### Sunderer

Allows attacks to ignore DR and increases energy reward DR penetration is non-linear, 0.5 is 50% penetration and 1.0 is a 67% penetration. Energy reward is increased linearly to strength, 1.0 is a 200 % increase.

### Defiance

Increases damage resistance and poise resistance, causes combo to be generated when damaged, and decreases movement speed. Damage resistance increases non-linearly with strength, 0.5 is 50% and 1.0 is 67%. Poise resistance increases non-linearly with strength, 0.5 is 50% and 1.0 is 67%. Movement speed decreases linearly with strength, 0.5 is 50% and 1.0 is 33%. Combo generation is linear with strength, 1.0 is 5 combo generated on being hit.

### Berserk

Increases both attack damage, vulnerability to damage, attack speed, and movement speed Damage increases linearly with strength, 1.0 is a 100% increase. Damage reduction decreases linearly with strength, 1.0 is a 100% Attack speed increases non-linearly with strength, 0.5 is a 25% increase, 1.0 is a 33% increase Movement speed increases non-linearly with strength, 0.5 is a 12.5% increase, 1.0 is a 16.7% increase decrease.

### Burning

Does damage to a creature over time. Strength should be the DPS of the debuff.

### Bleeding

Lowers health over time for some duration. Strength should be the DPS of the debuff.

### Cursed

Lower a creature’s max health over time. Strength only affects the target max health, 0.5 targets 50% of base max, 1.0 targets 100% of base max.

### Crippled

Reduces movement speed and causes bleeding damage. Strength scales the movement speed debuff non-linearly. 0.5 is 50% speed, 1.0 is 33% speed. Bleeding is at 4x the value of the strength.

### Frozen

Slows movement and attack speed. Strength scales the attack speed debuff non-linearly. 0.5 is ~50% speed, 1.0 is 33% speed. Movement speed debuff is scaled to be slightly smaller than attack speed debuff.

### Wet

Makes you wet and causes you to have reduced friction on the ground. Strength scales the friction you ignore non-linearly. 0.5 is 50% ground friction, 1.0 is 33% ground friction.

### Ensnared

Makes you move slower. Strength scales the movement speed debuff non-linearly. 0.5 is 50% speed, 1.0 is 33% speed.

### Poisoned

Drain stamina to a creature over time. Strength should be the energy per second of the debuff.

### Parried

Results from having an attack parried. Causes your attack speed to be slower to emulate the recover duration of an ability being lengthened.

### PotionSickness

Results from drinking a potion. Decreases the health gained from subsequent potions.

### Heatstroke

Slows movement speed and reduces energy reward. Both scales non-linearly to strength, 0.5 lead to movespeed reduction by 25% and energy reward reduced by 150%, 1.0 lead to MS reduction by 33.3% and energy reward reduced by 200%. Energy reward can’t be reduced by more than 200%, to a minimum value of -100%.

### Polymorphed

Changed into another body.

## Implementations§

source§### impl BuffKind

### impl BuffKind

source#### pub fn differentiate(self) -> BuffDescriptor

#### pub fn differentiate(self) -> BuffDescriptor

Tells a little more about buff kind than simple buff/debuff

Read more in BuffDescriptor.

#### pub fn is_simple(self) -> bool

source#### pub fn affects_subsequent_buffs(self) -> bool

#### pub fn affects_subsequent_buffs(self) -> bool

Checks if the buff can affect other buff effects applied in the same tick.

source#### pub fn stacks(self) -> bool

#### pub fn stacks(self) -> bool

Checks if multiple instances of the buff should be processed, instead of only the strongest.

#### pub fn effects(&self, data: &BuffData, stats: Option<&Stats>) -> Vec<BuffEffect>

#### fn extend_cat_ids(&self, cat_ids: Vec<BuffCategory>) -> Vec<BuffCategory>

## Trait Implementations§

source§### impl<'de> Deserialize<'de> for BuffKind

### impl<'de> Deserialize<'de> for BuffKind

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 IntoEnumIterator for BuffKind

### impl IntoEnumIterator for BuffKind

#### type Iterator = BuffKindIter

#### fn iter() -> BuffKindIter ⓘ

source§### impl Ord for BuffKind

### impl Ord for BuffKind

source§### impl PartialEq for BuffKind

### impl PartialEq for BuffKind

source§### impl PartialOrd for BuffKind

### impl PartialOrd for BuffKind

1.0.0 · source§#### fn le(&self, other: &Rhs) -> bool

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

`self`

and `other`

) and is used by the `<=`

operator. Read more### impl Copy for BuffKind

### impl Eq for BuffKind

### impl StructuralEq for BuffKind

### impl StructuralPartialEq for BuffKind

## Auto Trait Implementations§

### impl RefUnwindSafe for BuffKind

### impl Send for BuffKind

### impl Sync for BuffKind

### impl Unpin for BuffKind

### impl UnwindSafe for BuffKind

## 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

§### impl<T> CallHasher for T

### impl<T> CallHasher for T

§### impl<Q, K> Comparable<K> for Q

### impl<Q, K> Comparable<K> for Q

§### 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<Q, K> Equivalent<K> for Q

### impl<Q, K> Equivalent<K> for Q

§#### fn equivalent(&self, key: &K) -> bool

#### fn equivalent(&self, key: &K) -> bool

§### impl<Q, K> Equivalent<K> for Q

### impl<Q, K> Equivalent<K> for Q

§#### fn equivalent(&self, key: &K) -> bool

#### fn equivalent(&self, key: &K) -> bool

§### impl<Q, K> Equivalent<K> for Q

### impl<Q, K> Equivalent<K> for Q

§#### fn equivalent(&self, key: &K) -> bool

#### fn equivalent(&self, key: &K) -> bool

`key`

and return `true`

if they are equal.