local mods = {} function mods.change_C_untech(pat) for idx = 0, 1 do pat:update_frame(801, 1, idx, { hitstop_enemy = 10, untech = 30 }) end for idx = 0, 1 do pat:update_frame(810, 1, idx, { damage = 300, hitstop_enemy = 10, hitstop_self = 8, untech = 45 }) pat:update_frame(810, 2, idx, { damage = 300, hitstop_enemy = 10, hitstop_self = 4, untech = 45 }) end pat:update_frame(500, 0, 0, { duration = 1}) pat:update_frame(501, 0, 0, { duration = 1}) end function mods.reduce_bluespread_damage(pat) for idx = 0, 1 do pat:update_frame(812, 1, idx, { damage = 300 }) end for idx = 0, 1 do pat:update_frame(812, 2, idx, { damage = 100 }) end end function mods.modify_j2a_startup(pat) pat:update_frame(308, 0, 0, { duration = 1 }) pat:update_frame(308, 0, 1, { duration = 2 }) end function mods.modify_j5a_untech(pat) for idx = 0, 3 do pat:update_frame(306, 1, idx, { untech = 30 }) end end function mods.dial_a_untech(pat) for frame = 4, 6 do pat:update_frame(322, 0, frame, { untech = 6000 }) end end function mods.cancel(pat) -- pat:get_sequence(300, 0):set_priority(10, 10) -- 5A pat:get_sequence(320, 0):set_priority(10, 10) -- 5AA pat:get_sequence(303, 0):set_priority(10, 20) -- 2A -- pat:get_sequence(330, 0):set_priority(10, 10) -- 4A pat:get_sequence(321, 0):set_priority(10, 20) pat:get_sequence(322, 0):set_priority(20, 30) end function mods.flashkick_untech(pat) for frame = 0, 2 do pat:update_frame(560, 1, frame, { untech = 6000 }) pat:update_frame(561, 1, frame, { untech = 6000 }) end pat:update_frame(565, 4, 0, { untech = 6000, launch_vector_y = 1700, launch_vector_x = 500}) pat:update_frame(566, 4, 0, { untech = 6000, launch_vector_y = 1700, launch_vector_x = 500}) pat:update_frame(565, 7, 2, { untech = 6000 }) pat:update_frame(566, 7, 2, { untech = 6000 }) pat:get_sequence(565, 5):set_priority(9999, 0) pat:get_sequence(566, 5):set_priority(9999, 0) for move = 565, 566 do for frame = 0, 1 do pat:update_frame(move, 5, frame, function(frame) set_fflag(frame, FF_CANCEL) end) end end end function mods.redyinyang(pat) for frame = 15, 26 do pat:update_frame(852, 0, frame, { untech = 6000, launch_vector_x = 2500 }) end for frame = 0, 30 do pat:update_frame(852, 1, frame, { untech = 6000, launch_vector_x = 2500 }) end end function mods.weakpillar(pat) for frame = 0, 9 do pat:update_frame(854, 1, frame, { damage = 300, proration = 980, launch_vector_y = 4000, untech = 6000}) end for frame = 0, 5 do for frames = 7, 8 do pat:update_frame(604, 0, frame, function(frame) unset_fflag(frame, FF_MELEE_INV) unset_fflag(frame, FF_GRAZE) end) pat:update_frame(604, 0, frames, function(frame) unset_fflag(frame, FF_MELEE_INV) unset_fflag(frame, FF_GRAZE) end) end end for frame = 0, 7 do pat:update_frame(604, 3, frame, function(frame) set_fflag(frame, FF_MOTION_CANCEL) end) end end function mods.blueyingyang(pat) pat:update_frame(858, 0, 0, { untech = 6000 }) end function mods.colorfulballs_untech(pat) for seq = 0, 5 do for frame = 0, 1 do pat:update_frame(850, seq, frame, { untech = 6000, damage = 350 }) end end for seq = 0, 3 do for frame = 0, 1 do pat:update_frame(853, seq, frame, { untech = 6000, damage = 800, proration = 920 }) end end end function mods.expanding_untech(pat) for frame = 0, 4 do pat:update_frame(857, 3, frame, { damage = 400 , untech = 6000, hitstop_enemy = 0, launch_velocity_y = 2450 }) end end function mods.modify_j6a_untech(pat) pat:update_frame(307, 0, 3, { untech = 6000, damage = 750 }) pat:update_frame(308, 0, 4, { hit_ani_ground = 88, hit_ani_air = 88 }) pat:update_frame(308, 0, 5, { hit_ani_ground = 88, hit_ani_air = 88 }) pat:update_frame(309, 0, 3, { untech = 60 }) pat:update_frame(309, 0, 4, { untech = 60 }) pat:update_frame(418, 0, 3, { untech = 60 }) pat:update_frame(418, 0, 4, { untech = 60 }) end function mods.reversalteleport(pat) pat:get_sequence(545, 3):set_priority(50, 9999) pat:get_sequence(545, 4):set_priority(50, 9999) pat:get_sequence(545, 5):set_priority(50, 9999) pat:get_sequence(545, 6):set_priority(50, 9999) pat:get_sequence(546, 3):set_priority(50, 9999) pat:get_sequence(546, 4):set_priority(50, 9999) pat:get_sequence(546, 5):set_priority(50, 9999) pat:get_sequence(546, 6):set_priority(50, 9999) local function set_graze(frame) set_fflag(frame, FF_GRAZE) end local function set_invinc(frame) set_fflag(frame, FF_MELEE_INV) end local function set_hjc(frame) unset_fflag(frame, FF_MOTION_CANCEL) unset_fflag(frame, FF_CANCEL) unset_fflag(frame, FF_ATTACK_CANCEL) end for frame = 0, 3 do pat:update_frame(545, 0, frame, set_invinc) pat:update_frame(546, 0, frame, set_graze) end pat:update_frame(545, 4, 7, function(frame) frame.duration = 9999 end) pat:update_frame(546, 4, 7, function(frame) frame.duration = 9999 end) pat:update_frame(545, 4, 7, set_hjc) pat:update_frame(546, 4, 7, set_hjc) pat:update_frame(821, 0, 0, { untech = 6000, hit_ani_ground = 71, damage = 500, hitstop_enemy = 10 }) end function mods.counter(pat) pat:update_frame(550, 0, 5, { duration = 19 }) pat:update_frame(551, 0, 5, { duration = 19 }) pat:update_frame(550, 0, 3, { duration = 10 }) pat:update_frame(551, 0, 3, { duration = 10 }) pat:update_frame(550, 0, 4, { duration = 10 }) pat:update_frame(551, 0, 4, { duration = 10 }) for frame = 0, 2 do pat:remove_frame(550, 0, 0) pat:remove_frame(551, 0, 0) end end function mods.modify_youkaibuster(pat) pat:update_frame(811, 0, 0, { untech = 60, damage = 120, launch_vector_x = 2500, proration = 990 }) for move = 505, 506 do pat:update_frame(move, 4, 0, { duration = 12 }) end end function mods.modifyborder(pat) for frame = 0, 29 do pat:update_frame(816, 0, frame, { untech = 6000, damage = 1200}) pat:update_frame(816, 4, frame, { untech = 6000, damage = 1200}) end for move = 525, 528 do for frame = 0, 3 do pat:update_frame(move, 0, frame, { duration = 1}) end end end function mods.modifypermanent(pat) for frame = 0, 7 do pat:update_frame(817, 4, frame, { hit_ani_ground = 0}) end end function mods.telekick(pat) for frame = 0, 1 do pat:update_frame(540, 3, frame, { launch_vector_y = -2000, hit_ani_air = 88, hit_ani_ground = 88}) end for frame = 0, 1 do pat:update_frame(541, 4, frame, { hit_ani_ground = 0, hitstop_enemy = 15, blockstop_self = 20}) end for frame = 0, 5 do pat:update_frame(541, 5, frame, { duration = 2}) end for frame = 0, 1 do pat:update_frame(543, 3, frame, { hit_ani_ground = 0, hitstop_enemy = 15, blockstop_self = 20}) end for frame = 0, 5 do pat:update_frame(543, 4, frame, { duration = 2}) end end function mods.modifyheaven(pat) for frame = 0, 1 do pat:update_frame(869, 3, frame, { damage = 105 }) end for frame = 0, 5 do pat:update_frame(619, 0, frame, { duration = 1 }) end end function mods.modifynew5aaaa(pat) local function remove_last_hurtbox(frame) table.remove(frame.hurtbox) end -- for frame = 10, 12 do -- pat:remove_frame(304, 0, 10) -- end -- for frame = 6, 8 do -- pat:remove_frame(304, 1, 6) -- end local src = pat:get_frame(528, 1, 1) local boxes = pat:get_frame(528, 1, 1).hurtbox pat:update_frame(322, 0, 6, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) local src = pat:get_frame(528, 1, 0) local boxes = pat:get_frame(528, 1, 0).hurtbox pat:update_frame(322, 0, 7, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) for idx = 4, 5 do local src = pat:get_frame(528, 1, idx - 4) local boxes = pat:get_frame(528, 1, idx - 4).hurtbox pat:update_frame(322, 0, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 8, 9 do local src = pat:get_frame(528, 3, idx - 8) local boxes = pat:get_frame(528, 3, idx - 8).hurtbox pat:update_frame(322, 0, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local src = pat:get_frame(528, 3, 1) local boxes = pat:get_frame(528, 3, 1).hurtbox pat:update_frame(322, 0, 10, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) for idx = 0, 3 do local src = pat:get_frame(528, 0, idx + 3) local boxes = pat:get_frame(528, 0, idx + 3).hurtbox pat:update_frame(322, 0, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end end function mods.cautionary_border_reflect(pat) for idx = 0, 29 do pat:update_frame(815, 3, idx, function(frame) set_fflag(frame, FF_REFLECT_BULLET) end) end end function mods.maketaunt(pat) local onum = pat:get_frame_count(0, 0) local src = pat:get_frame(0, 0, pat:get_frame_count(0, 0) - 1) local oframe = src.duration for loop = 0, 2 do for count = 0, onum - 1 do pat:split_frame(0, 0, (onum*(loop + 1)) - 1, oframe, 1) end for idx = 0, onum - 1 do local src = pat:get_frame(0, 0, idx) pat:update_frame(0, 0, (onum*(loop + 1) + idx) , function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end end local num = pat:get_frame_count(0, 0) local src = pat:get_frame(0, 0, pat:get_frame_count(0, 0) - 1) local oframe = src.duration for count = 0, 24 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 24 do local src = pat:get_frame(770, 0, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end end return function(pat) mods.maketaunt(pat) mods.cautionary_border_reflect(pat) mods.modifynew5aaaa(pat) -- mods.global(pat) mods.modifyheaven(pat) mods.telekick(pat) mods.modifyborder(pat) mods.modifypermanent(pat) mods.modify_youkaibuster(pat) mods.counter(pat) mods.reversalteleport(pat) mods.modify_j6a_untech(pat) mods.expanding_untech(pat) mods.colorfulballs_untech(pat) mods.change_C_untech(pat) mods.blueyingyang(pat) mods.redyinyang(pat) mods.weakpillar(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.dial_a_untech(pat) -- mods.reduce_bluespread_damage(pat) -- mods.modify_j2a_startup(pat) mods.modify_j5a_untech(pat) mods.flashkick_untech(pat) end