Add ledge getup, ledge intangibility limit & fix walk-off velocity (#93)
CI / build-and-test (push) Successful in 1m40s
CI / production-build (push) Successful in 12m14s

Reviewed-on: #93
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #93.
This commit is contained in:
2026-10-13 15:52:10 +00:00
committed by EIREXE
parent 4fe1b24b1a
commit f1da5c1172
12 changed files with 208 additions and 55 deletions
+3 -6
View File
@@ -1,6 +1,6 @@
use crate::fighter::state::jump::{self};
use crate::fighter::state::land::{LandingState, LandingType};
use crate::fighter::state::ledge_wait::LedgeWaitState;
use crate::fighter::state::ledge_grab::LedgeGrabState;
use crate::fighter::state::{
CollisionContext, FighterState, InterruptContext, air_attack, air_dodge,
};
@@ -129,10 +129,7 @@ pub fn collision_interrupt(
) -> Option<FighterState> {
if ctx.velocity.y <= FGi32::ZERO {
if let Some(ledge_result) = ctx.air_collide_with_ledges() {
return Some(FighterState::LedgeWait(LedgeWaitState {
airborne_state_common: AirborneStateCommon::default(),
ledge_id: ledge_result.ledge,
}));
return Some(FighterState::LedgeGrab(LedgeGrabState::new(ledge_result.ledge)));
}
}
@@ -144,7 +141,7 @@ pub fn collision_interrupt(
ctx.ecb.right -= diff;
ctx.translation.0 = res.hit_position;
ctx.presentation_snap.0 = true;
ctx.surface.land(res.line_id);
ctx.surface.land(res.line_id, ctx.ledge_info);
Some(FighterState::Land(LandingState::create(landing_type)))
}