require("config.util") local mods = {} function mods.startup_fa(pat) pat:update_frame(301, 0, 0, { duration = 2 }) pat:update_frame(301, 0, 1, { duration = 2 }) end function mods.hurtbox_fa(pat) for idx = 8, 9 do pat:update_frame(301, 0, idx, function(frame) table.remove(frame.hurtbox) end) end end function mods.recovery_fa(pat) for idx = 9, 16 do pat:update_frame(301, 0, 9, function(frame) frame.duration = frame.duration - 1 end) end end function mods.recovery_3a(pat) for idx = 6, 8 do pat:update_frame(304, 0, idx, { duration = 4 }) end end function mods.recovery_ja(pat) for idx = 5, 10 do pat:update_frame(301, 0, 9, function(frame) frame.duration = frame.duration - 1 end) end end function mods.untech_ja(pat) pat:update_frame(306, 0, 4, { untech = 30 }) end function mods.startup_j6a(pat) pat:update_frame(307, 0, 1, { duration = 3 }) end function mods.recovery_j6a(pat) pat:update_frame(307, 0, 7, { duration = 17 }) end function mods.hitbox_j6a(pat) pat:update_frame(307, 0, 5, function(frame) frame.attackbox[2].x1 = frame.attackbox[2].x1 - 40 end) end function mods.startup_j2a(pat) pat:update_frame(308, 0, 3, { duration = 3 }) end function mods.hurtbox_j2a(pat) for idx = 6, 7 do pat:update_frame(308, 0, idx, function(frame) table.remove(frame.hurtbox) end) end end function mods.startup_6b(pat) pat:update_frame(401, 0, 7, function(frame) set_fflag(frame, FF_CANCEL + FF_MOTION_CANCEL) end) end function mods.startup_2b(pat) pat:update_frame(402, 0, 2, { duration = 4 }) end function mods.startup_j2b(pat) pat:update_frame(406, 0, 2, { duration = 3 }) pat:update_frame(406, 0, 3, { duration = 3 }) end function mods.spirit_drain_b(pat) pat:update_frame(800, 0, 0, { sp_damage = 20 }) pat:update_frame(800, 1, 0, { sp_damage = 30 }) pat:update_frame(800, 2, 0, { sp_damage = 50 }) end function mods.startup_6c(pat) pat:get_frame(410, 0, 0, { duration = 2 }) pat:get_frame(410, 0, 1, { duration = 2 }) end function mods.startup_j2c(pat) pat:get_frame(416, 0, 0, { duration = 2 }) pat:get_frame(416, 0, 1, { duration = 2 }) end function mods.density_6c(pat) bullet_801_0 = pat:get_sequence(801, 0) -- wisp bullet_801_2 = pat:get_sequence(801, 2) -- wind circle local a, b = bullet_801_0:get_priority() bullet_801_2:set_priority(a, b) end function mods.modify_bound_spirits(pat) for idx = 0, 1 do local frame = pat:get_frame(815, 0, idx) frame.velocity_y = 1100 frame.untech = 45 pat:set_frame(815, 3, idx, frame) end end function mods.taste_of_death_recovery(pat) pat:get_frame(550, 2, 7, { duration = 10 }) end function mods.damage_final_judgement(pat, damage) for idx = 0, 8 do pat:get_frame(856, 0, idx, { damage = damage }) end end return function(pat) mods.startup_fa(pat) mods.hurtbox_fa(pat) mods.recovery_fa(pat) -- mods.recovery_3a(pat) mods.recovery_ja(pat) mods.untech_ja(pat) -- mods.startup_j6a(pat) mods.recovery_j6a(pat) mods.hitbox_j6a(pat) -- mods.startup_j2a(pat) mods.hurtbox_j2a(pat) mods.startup_6b(pat) mods.startup_2b(pat) -- mods.startup_j2b(pat) -- mods.spirit_drain_b(pat) -- mods.startup_6c(pat) -- mods.startup_j2c(pat) mods.density_6c(pat) if config:get("komachi", "bound_spirits", "active_on_creation") then mods.modify_bound_spirits(pat) end mods.taste_of_death_recovery(pat) mods.damage_final_judgement(pat, 3500) end