require("config.util") local mods = {} function mods.aub_3a(pat) local function set_aub(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end pat:update_frame(304, 1, 0, set_aub) pat:update_frame(304, 1, 1, set_aub) pat:update_frame(304, 5, 0, set_aub) pat:update_frame(304, 5, 1, set_aub) end function mods.recovery_da(pat) pat:update_frame(305, 0, 5, { duration = 6 }) end function mods.startup_db(pat) pat:update_frame(408, 0, 0, { duration = 2 }) pat:update_frame(408, 0, 1, { duration = 2 }) end function mods.ground_bounce_j2a(pat) for idx = 4, 5 do pat:update_frame(308, 0, idx, { hit_ani_air = 88, hit_ani_ground = 88 }) end end function mods.startup_j8a(pat) pat:update_frame(309, 0, 2, { duration = 3 }) end function mods.m_cancel_b(pat) pat:remove_frame(400, 0, 0) pat:update_frame(400, 0, 2, { duration = 2 }) pat:update_frame(400, 2, 4, function(frame) set_fflag(frame, FF_MOTION_CANCEL) end) end function mods.m_cancel_6b(pat) pat:remove_frame(401, 0, 0) pat:add_frame(401, 0, 1, pat:get_frame(400, 0, 1)) pat:update_frame(401, 2, 4, function(frame) set_fflag(frame, FF_MOTION_CANCEL) end) end function mods.startup_j2c(pat) pat:update_frame(416, 0, 2, { duration = 5 }) end function mods.untech_c_bullets(pat) pat:update_frame(801, 1, 0, { untech = 30 }) pat:update_frame(801, 1, 1, { untech = 30 }) end function mods.untech_hakurei_amulet(pat) pat:update_frame(810, 1, 0, { untech = 35, hitstop_enemy = 10 }) pat:update_frame(810, 1, 1, { untech = 35, hitstop_enemy = 10 }) end function mods.asc_kick_b_prepare_for_dp(pat) for idx = 0, 2 do pat:update_frame(560, 1, idx, function(frame) unset_aflag(frame, AF_COUNTER_HIT) frame.untech = 45 end) end end function mods.cautionary_border_untech(pat, untech) for idx = 0, 29 do pat:update_frame(815, 3, idx, { untech = untech }) end end function mods.binding_border_untech(pat, untech) for idx = 0, 29 do pat:update_frame(816, 0, idx, { untech = untech }) pat:update_frame(816, 4, idx, { untech = untech }) end end function mods.permanent_border_untech(pat, untech) for idx = 0, 7 do pat:update_frame(817, 4, idx, { untech = untech }) end end function mods.permanent_border_launch_vector(pat, v_x, v_y) for idx = 0, 7 do pat:update_frame(817, 4, idx, { velocity_x = v_x, velocity_y = v_y }) end end function mods.rain_dance_parameters(pat, damage, proration, limit, v_x) local function update(frame) frame.damage = damage frame.proration = proration frame.limit = limit frame.velocity_x = v_x frame.untech = 6000 end for idx = 0, 14 do pat:update_frame(827, 0, idx, update) pat:update_frame(827, 2, idx, update) end end function mods.m_cancel_demon_sealing_dimensional_rift(pat) local function set_motion_cancel(frame) set_fflag(frame, FF_MOTION_CANCEL) end pat:update_frame(545, 4, 3, { duration = 2 }) for idx = 6, 7 do pat:update_frame(545, 4, idx, set_motion_cancel) pat:update_frame(546, 4, idx, set_motion_cancel) end end function mods.instant_dimensional_rift_active_time(pat) for seq = 550, 551 do pat:update_frame(seq, 0, 4, function(frame) frame.fflags = pat:get_frame(seq, 0, 3).fflags end) end end function mods.demon_binding_array_damage(pat, damage, proration, limit) for idx = 0, 9 do pat:update_frame(854, 1, idx, { damage = damage, proration = proration, limit = limit }) end end function mods.expanding_boundary_parameters(pat) for idx = 0, 4 do pat:update_frame(857, 3, idx, { sp_damage = 50 }) end end return function(pat) if config:get("reimu", "3a", "air_unblockable") then mods.aub_3a(pat) end mods.recovery_da(pat) -- mods.startup_db(pat) -- mods.ground_bounce_j2a(pat) -- mods.startup_j8a(pat) mods.m_cancel_b(pat) mods.m_cancel_6b(pat) -- mods.startup_j2c(pat) -- mods.untech_c_bullets(pat) mods.untech_hakurei_amulet(pat) if config:get("reimu", "ascension_kick", "b_inv_level") <= 1 then mods.asc_kick_b_prepare_for_dp(pat) end mods.cautionary_border_untech(pat, 45) mods.binding_border_untech(pat, 45) mods.permanent_border_untech(pat, 45) mods.permanent_border_launch_vector(pat, 0, 1500) mods.rain_dance_parameters(pat, 400, 960, 10, -1250) -- mods.m_cancel_demon_sealing_dimensional_rift(pat) mods.instant_dimensional_rift_active_time(pat) mods.demon_binding_array_damage(pat, 100, 930, 20) -- mods.expanding_boundary_parameters(pat) end