require("config.util") local mods = {} local function set_invincible(frame) set_fflag(frame, FF_MELEE_INV) end local function remove_attack_cancel(frame) unset_fflag(frame, FF_ATTACK_CANCEL) end function mods.flight_cancel(pat) pat:get_sequence(214, 1):set_priority(5, 10) pat:update_range(214, 1, 0, 7, set_attack_cancel) end function mods.la_reduce_recovery(pat) pat:update_frame(303, 0, 9, { duration = 10 }) end function mods.j6a_untech(pat, untech) pat:update_range(307, 0, 7, 17, { untech = untech }) end function mods.s3a_reduce_startup(pat) pat:update_range(331, 0, 1, 4, { duration = 2 }) end function mods.s6b_motion_cancel(pat) pat:update_frame(401, 3, 2, { duration = 5 }) pat:update_frame(401, 3, 3, { duration = 10 }) end function mods.l6b_motion_cancel(pat) pat:update_frame(403, 1, 6, { duration = 5 }) end function mods.s5c_motion_cancel(pat) pat:update_frame(410, 0, 10, { duration = 5 }) pat:update_frame(410, 0, 11, { duration = 10 }) pat:update_frame(410, 1, 5, { duration = 10 }) pat:update_frame(410, 1, 6, { duration = 10 }) end function mods.s6c_motion_cancel(pat) pat:update_frame(411, 3, 1, { duration = 6 }) end function mods.l5c_motion_cancel(pat) pat:update_range(412, 2, 4, 5, set_motion_cancel) end function mods.j5c_motion_cancel(pat) pat:update_range(414, 2, 4, 5, set_motion_cancel) end function mods.j6c_bullet_priority(pat) pat:get_sequence(808, 0):set_priority(20, 0) end function mods.j2c_cancel_priority(pat) pat:get_sequence(416, off):set_priority(50, 50) end function mods.ancient_geyser_damage(pat, damage) for off = 1, 4 do pat:update_frame(810, off, 0, { damage = damage }) end end function mods.rain_calling_frog_object_parameters(pat, changes) pat:update_frame(812, 0, 0, changes) for off = 4, 8 do pat:update_frame(812, off, 0, changes) end end function mods.toad_god_invincibility(pat) for seq = 520, 522, 2 do pat:update_range(seq, 2, 0, 1, set_invincible) pat:update_frame(seq, 3, 0, remove_attack_cancel) pat:update_frame(seq, 4, 0, remove_attack_cancel) for idx = 0, 3 do pat:update_frame(seq, 5, idx, remove_attack_cancel) end end end function mods.ancient_metal_ring_untech(pat, untech) for seq = 525, 528 do pat:update_range(seq, 1, 0, 1, { untech = untech }) end end function mods.moriya_god_reduce_startup(pat) pat:update_frame(600, 1, 0, { duration = 36 }) end function mods.ms_longlimbs_damage(pat, damage) pat:update_range(817, 0, 0, 1, { damage = damage }) pat:update_range(817, 4, 0, 1, { damage = damage }) end return function(pat) mods.flight_cancel(pat) config:run(pat, mods.s3a_reduce_startup, "suwako", "3a", "reduce_startup") config:run(pat, mods.la_reduce_recovery, "suwako", "la", "reduce_recovery") config:run(pat, mods.j6a_untech, "suwako", "j6a", "untech") mods.s6b_motion_cancel(pat) mods.l6b_motion_cancel(pat) mods.s5c_motion_cancel(pat) mods.s6c_motion_cancel(pat) mods.l5c_motion_cancel(pat) mods.j5c_motion_cancel(pat) config:run(pat, mods.j6c_bullet_priority, "suwako", "c_series", "j6c", "high_priority") config:run(pat, mods.j2c_cancel_priority, "suwako", "c_series", "cancel_bullets_with_j2c") config:run(pat, mods.ancient_geyser_damage, "suwako", "ancient_geyser", "damage") config:run(pat, mods.toad_god_invincibility, "suwako", "toad_god", "inv_enable") config:run(pat, mods.ancient_metal_ring_untech, "suwako", "ancient_metal_ring", "untech") config:run(pat, mods.ms_longlimbs_damage, "suwako", "ms_longlimbs", "damage") -- todo: fill config:run(pat, mods.moriya_god_reduce_startup, "suwako", "moriya_god", "reduce_startup") mods.rain_calling_frog_object_parameters(pat, { untech = 45, hitstop_enemy = 5, launch_vector_x = 500, launch_vector_y = 1000 }) end