require("config.util") local mods = {} function mods.modify_dash(pat) local function set_graze(frame) set_fflag(frame, FF_GRAZE) end pat:update_frame(204, 0, 3, { duration = 10 }) for idx = 3, 5 do pat:update_frame(204, 0, idx, set_graze) end end function mods.startup_daa(pat) for idx = 0, 5 do pat:update_frame(305, 1, idx, { duration = 2 }) end end function mods.cancel_priority_daa(pat) pat:get_sequence(305, 1):set_priority(50, 50) end function mods.hitbox_j2a(pat) pat:update_frame(308, 1, 0, function(frame) frame.attackbox[1].x2 = 128 frame.attackbox[2].x2 = 144 end) end function mods.cancel_priority_j2a(pat) pat:get_sequence(308, 2):set_priority(20, 50) end function mods.motion_cancel_b(pat) pat:split_frame(400, 0, 6, 5, 6) pat:update_frame(400, 0, 7, set_motion_cancel) pat:update_frame(400, 0, 8, set_motion_cancel) end function mods.motion_cancel_6b(pat) pat:update_frame(401, 0, 7, { duration = 12 }) pat:update_frame(401, 0, 8, { duration = 5 }) end function mods.motion_cancel_2b(pat) pat:update_frame(402, 0, 5, { duration = 11 }) pat:update_frame(402, 0, 6, { duration = 8 }) end function mods.motion_cancel_jb_series(pat) for seq = 404, 406 do pat:update_frame(seq, 0, 6, set_motion_cancel) end end function mods.motion_cancel_c(pat) pat:update_frame(410, 1, 5, set_motion_cancel) end function mods.bullet_parameters_c(pat, sp_damage) pat:update_frame(801, 0, 0, { sp_damage = sp_damage }) end function mods.lotus_stance_cut_motion_cancel(pat) for seq = 505, 506 do pat:update_frame(seq, 0, 7, { duration = 8 }) end for seq = 507, 508 do pat:update_frame(seq, 0, 8, { duration = 8 }) end pat:update_frame(506, 0, 3, { duration = 10 }) pat:update_frame(508, 0, 4, { duration = 10 }) end function mods.heart_carving_slash_startup(pat) pat:update_frame(545, 0, 2, { duration = 5 }) pat:update_frame(546, 0, 2, { duration = 10 }) end function mods.sword_of_cycles_damage(pat) pat:update_frame(612, 2, 6, { damage = 1100 }) end function mods.ascension_to_nirvana_damage(pat) local function change(frame) -- frame.proration = 950 frame.damage = 560 frame.chip_damage = 56 end for idx = 2, 6 do pat:update_frame(857, 0, idx, change) end for idx = 0, 5 do pat:update_frame(857, 1, idx, change) end end function mods.ascension_to_nirvana_sp_damage(pat) end function mods.blue_sword_parameters(pat) for idx = 12, 17 do pat:update_frame(604, 0, idx, { limit = 5 }) end end return function(pat) if config:get("youmu", "dash", "continuous_graze") then mods.modify_dash(pat) end if config:get("youmu", "j2a", "increase_hitbox") then mods.hitbox_j2a(pat) end if config:get("youmu", "j2a", "skill_cancelable") then mods.cancel_priority_j2a(pat) end if config:get("youmu", "daa", "reduce_startup") then mods.startup_daa(pat) end if config:get("youmu", "daa", "skill_cancelable") then mods.cancel_priority_daa(pat) end if config:get("youmu", "b_series", "faster_motion_cancel") then mods.motion_cancel_b(pat) mods.motion_cancel_2b(pat) mods.motion_cancel_6b(pat) end if config:get("youmu", "jb_series", "faster_motion_cancel") then mods.motion_cancel_jb_series(pat) end mods.motion_cancel_c(pat) mods.bullet_parameters_c(pat, config:getdef("youmu", "c_series", "spirit_damage", 15)) mods.lotus_stance_cut_motion_cancel(pat) if config:get("youmu", "heart_carving_slash", "reduce_startup") then mods.heart_carving_slash_startup(pat) end if config:get("youmu", "sword_of_cycles", "reduce_damage") then mods.sword_of_cycles_damage(pat) end if config:get("youmu", "ascension_to_nirvana", "reduce_damage") then mods.ascension_to_nirvana_damage(pat) end if config:get("youmu", "ascension_to_nirvana", "increase_spirit_damage") then mods.ascension_to_nirvana_sp_damage(pat) end mods.blue_sword_parameters(pat) end