diff --git a/assets/common/abilities/axe/spin.ron b/assets/common/abilities/axe/spin.ron index 1a552cc7f8..39045a1cbc 100644 --- a/assets/common/abilities/axe/spin.ron +++ b/assets/common/abilities/axe/spin.ron @@ -14,4 +14,5 @@ SpinMelee( forward_speed: 0.0, num_spins: 1, specifier: None, + target: Some(OutOfGroup), ) diff --git a/assets/common/abilities/sword/spin.ron b/assets/common/abilities/sword/spin.ron index 0de44ce51c..a0cef50ca7 100644 --- a/assets/common/abilities/sword/spin.ron +++ b/assets/common/abilities/sword/spin.ron @@ -14,4 +14,5 @@ SpinMelee( forward_speed: 1.0, num_spins: 3, specifier: None, + target: Some(OutOfGroup), ) diff --git a/assets/common/abilities/unique/mindflayer/necroticvortex.ron b/assets/common/abilities/unique/mindflayer/necroticvortex.ron index 7082e7a62f..c17a9ea1d5 100644 --- a/assets/common/abilities/unique/mindflayer/necroticvortex.ron +++ b/assets/common/abilities/unique/mindflayer/necroticvortex.ron @@ -14,4 +14,5 @@ SpinMelee( forward_speed: 0.0, num_spins: 1, specifier: Some(CultistVortex), + target: None, ) diff --git a/assets/common/abilities/unique/stonegolemfist/spin.ron b/assets/common/abilities/unique/stonegolemfist/spin.ron index 1aaf1445e2..4bf92f1709 100644 --- a/assets/common/abilities/unique/stonegolemfist/spin.ron +++ b/assets/common/abilities/unique/stonegolemfist/spin.ron @@ -14,4 +14,5 @@ SpinMelee( forward_speed: 0.0, num_spins: 1, specifier: None, + target: Some(OutOfGroup), ) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 6af12a1fdf..27d89ccac5 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -165,6 +165,7 @@ pub enum CharacterAbility { forward_speed: f32, num_spins: u32, specifier: Option, + target: Option, }, ChargedMelee { energy_cost: f32, @@ -1341,6 +1342,7 @@ impl From<(&CharacterAbility, AbilityInfo)> for CharacterState { forward_speed, num_spins, specifier, + target, } => CharacterState::SpinMelee(spin_melee::Data { static_data: spin_melee::StaticData { buildup_duration: Duration::from_secs_f32(*buildup_duration), @@ -1357,6 +1359,7 @@ impl From<(&CharacterAbility, AbilityInfo)> for CharacterState { is_interruptible: *is_interruptible, forward_speed: *forward_speed, num_spins: *num_spins, + target: *target, ability_info, specifier: *specifier, }, diff --git a/common/src/states/spin_melee.rs b/common/src/states/spin_melee.rs index 947909feca..8ea32ea7e1 100644 --- a/common/src/states/spin_melee.rs +++ b/common/src/states/spin_melee.rs @@ -45,6 +45,8 @@ pub struct StaticData { pub forward_speed: f32, /// Number of spins pub num_spins: u32, + /// Used to determine targeting of attack + pub target: Option, /// What key is used to press ability pub ability_info: AbilityInfo, /// Used to specify the melee attack to the frontend @@ -110,12 +112,12 @@ impl CharacterBehavior for Data { }); let poise = AttackEffect::new( - Some(GroupTarget::OutOfGroup), + self.static_data.target, CombatEffect::Poise(self.static_data.base_poise_damage as f32), ) .with_requirement(CombatRequirement::AnyDamage); let knockback = AttackEffect::new( - Some(GroupTarget::OutOfGroup), + self.static_data.target, CombatEffect::Knockback(self.static_data.knockback), ) .with_requirement(CombatRequirement::AnyDamage); @@ -124,7 +126,7 @@ impl CharacterBehavior for Data { source: DamageSource::Melee, value: self.static_data.base_damage as f32, }, - Some(GroupTarget::OutOfGroup), + self.static_data.target, ); match self.static_data.damage_effect { Some(effect) => damage = damage.with_effect(effect),