steel_core/entity/consume_effect/
remove_effects.rs1use std::sync::Arc;
4
5use steel_registry::consume_effect::{ConsumeEffectData, RemoveStatusEffectsConsumeEffect};
6
7use super::ConsumeEffectBehavior;
8use crate::entity::LivingEntity;
9use crate::world::World;
10
11pub struct RemoveEffectsBehavior;
13
14impl ConsumeEffectBehavior for RemoveEffectsBehavior {
15 fn apply(&self, effect: &ConsumeEffectData, _world: &Arc<World>, user: &dyn LivingEntity) {
16 let Some(remove) = effect.downcast_ref::<RemoveStatusEffectsConsumeEffect>() else {
17 return;
18 };
19 for active in user.active_mob_effects() {
20 if remove.effects().contains(active.effect()) {
21 user.remove_mob_effect(active.effect());
22 }
23 }
24 }
25}