Add pulsing effect when invulnerable/intangible, make airdodge make the player intangible. (#75)
Reviewed-on: #75 Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #75.
This commit is contained in:
+18
-3
@@ -41,8 +41,8 @@ use crate::{
|
||||
AttackKind, FighterAttackPlugin, FighterAttackScriptAssets, FighterDamage,
|
||||
FighterKnockbackVelocity, FighterPendingHitReaction, FighterSolvedHurtboxes,
|
||||
FighterStaleMoveQueue,
|
||||
}, baked_animation::{FighterBoneIndexMap, FighterBoneMatrices}, ecb::FighterECBBoneIndices, manifest::FighterManifest, state::{FighterState, air::AirborneStateCommon, fall::FallState}, visual::FighterAnimations,
|
||||
}, input::FighterInput, math::{int::FGi32, vec::FGVec2}, player::Player, schedule::GameplaySet, scripting::FighterAttackScript, stage::line::StageCollision,
|
||||
}, baked_animation::{FighterBoneIndexMap, FighterBoneMatrices}, ecb::FighterECBBoneIndices, manifest::FighterManifest, state::{FighterState, air::AirborneStateCommon, fall::FallState}, visual::{FighterAnimations, FighterInvulnerabilityVisualState},
|
||||
}, game_settings::GameSettings, input::FighterInput, math::{int::FGi32, vec::FGVec2}, player::Player, schedule::GameplaySet, scripting::FighterAttackScript, stage::line::StageCollision,
|
||||
};
|
||||
use state::state_interrupt_system;
|
||||
|
||||
@@ -85,6 +85,14 @@ pub struct FighterHitstop {
|
||||
pub remaining_frames: u32,
|
||||
}
|
||||
|
||||
#[derive(Component, Default, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub enum FighterInvulnerabilityState {
|
||||
#[default]
|
||||
Vulnerable,
|
||||
Invulnerable,
|
||||
Intangible
|
||||
}
|
||||
|
||||
impl FighterFacingDirection {
|
||||
fn reverse(&self) -> Self {
|
||||
match self {
|
||||
@@ -140,7 +148,9 @@ pub struct FighterPendingRespawn(bool);
|
||||
FighterPendingRespawn,
|
||||
FighterHitstop,
|
||||
FighterKnockbackVelocity,
|
||||
FighterTranslation
|
||||
FighterTranslation,
|
||||
FighterInvulnerabilityState,
|
||||
FighterInvulnerabilityVisualState,
|
||||
)]
|
||||
pub struct Fighter {
|
||||
pub manifest: Handle<FighterManifest>,
|
||||
@@ -229,6 +239,8 @@ impl Plugin for FighterPlugin {
|
||||
.checksum_component_with_hash::<FighterPendingRespawn>()
|
||||
.rollback_component_with_copy::<FighterHitstop>()
|
||||
.checksum_component_with_hash::<FighterHitstop>()
|
||||
.rollback_component_with_copy::<FighterInvulnerabilityState>()
|
||||
.checksum_component_with_hash::<FighterInvulnerabilityState>()
|
||||
.rollback_component_with_copy::<FighterKnockbackVelocity>()
|
||||
.checksum_component_with_hash::<FighterKnockbackVelocity>()
|
||||
.rollback_resource_with_reflect::<StageCollision>()
|
||||
@@ -256,6 +268,9 @@ impl Plugin for FighterPlugin {
|
||||
.run_if(crate::debug_tools::attack_hitboxes_enabled)
|
||||
.run_if(in_state(AppState::InMatch)),
|
||||
)
|
||||
.add_systems(FixedPostUpdate,
|
||||
visual::update_status_colors.run_if(resource_exists::<GameSettings>)
|
||||
)
|
||||
.add_systems(
|
||||
FixedPostUpdate,
|
||||
debug::hurtbox_debug.run_if(crate::debug_tools::hurtboxes_enabled),
|
||||
|
||||
Reference in New Issue
Block a user