local mods = {} function mods.modify_j5a_untech(pat) for frame = 3, 4 do pat:update_frame(306, 0, frame, { untech = 30}) end end function mods.buff214(pat) pat:get_sequence(521, 4):set_priority(9999, 0) pat:get_sequence(521, 5):set_priority(9999, 0) pat:update_frame(521, 0, 4, { duration = 2}) for frame = 0, 6 do pat:update_frame(521, 4, frame, function(frame) set_fflag(frame, FF_CANCEL) end) end for frame = 0, 1 do pat:update_frame(521, 5, frame, function(frame) set_fflag(frame, FF_CANCEL) end) end for frame = 0, 2 do pat:update_frame(521, 1, frame, function(frame) unset_fflag(frame, FF_CANCEL) unset_fflag(frame, FF_GRAZE) frame.launch_vector_y = 2800 end) end --- ground versions for move = 530, 531 do for frame = 0, 5 do pat:update_frame(move, 0, frame, function(frame) set_fflag(frame, FF_GRAZE) end) pat:update_frame(move, 0, 3, function(frame) frame.duration = 1 end) end pat:split_frame(move, 2, 2, 1, 1) pat:split_frame(move, 2, 2, 4, 1) pat:split_frame(move, 2, 2, 4, 1) pat:split_frame(move, 2, 2, 4, 1) for frame = 6, 15 do pat:remove_frame(530, 2, 6) end for frame = 6, 15 do pat:remove_frame(531, 2, 6) end pat:get_sequence(move, 3):set_priority(9999, 0) end --- air versions for frame = 0, 6 do pat:update_frame(532, 0, frame, function(frame) set_fflag(frame, FF_GRAZE) end) end pat:get_sequence(532, 3):set_priority(9999, 0) pat:update_frame(532, 0, 3, function(frame) frame.duration = 1 end) pat:split_frame(532, 2, 2, 1, 1) pat:split_frame(532, 2, 2, 4, 1) pat:split_frame(532, 2, 2, 4, 1) pat:split_frame(532, 2, 2, 4, 1) for frame = 6, 15 do pat:remove_frame(532, 2, 6) end --- removing bullet hitboxes and animations local function remove_last_attackbox(frame) table.remove(frame.attackbox) end pat:update_frame(817, 2, 0, function(frame) -- frame.scale_x = 10 -- frame.scale_y = 10 frame.tex_h = 4 frame.tex_index = 294 frame.tex_offset_x = 64 frame.tex_offset_y = 64 frame.tex_w = 4 frame.tex_x = 0 frame.tex_y = 0 end) pat:update_frame(817, 1, 0, function(frame) -- frame.scale_x = 10 -- frame.scale_y = 10 frame.tex_h = 4 frame.tex_index = 294 frame.tex_offset_x = 64 frame.tex_offset_y = 64 frame.tex_w = 4 frame.tex_x = 0 frame.tex_y = 0 end) for frame = 0, 7 do pat:update_frame(817, 0, frame, remove_last_attackbox) pat:update_frame(817, 0, frame, remove_last_attackbox) pat:update_frame(817, 0, frame, function(frame) frame.tex_h = 4 frame.tex_index = 294 frame.tex_offset_x = 64 frame.tex_offset_y = 64 frame.tex_w = 4 frame.tex_x = 0 frame.tex_y = 0 -- frame.scale_x = 10 -- frame.scale_y = 10 end) pat:update_frame(817, 3, frame, remove_last_attackbox) pat:update_frame(817, 3, frame, remove_last_attackbox) pat:update_frame(817, 3, frame, function(frame) -- frame.scale_x = 10 -- frame.scale_y = 10 frame.tex_h = 4 frame.tex_index = 294 frame.tex_offset_x = 64 frame.tex_offset_y = 64 frame.tex_w = 4 frame.tex_x = 0 frame.tex_y = 0 end) pat:update_frame(817, 3, frame, { untech = 6000 }) pat:update_frame(820, 4, frame, { untech = 6000 }) pat:update_frame(820, 6, frame, { untech = 6000 }) end end function mods.modifyd236_untech(pat) for frame = 0, 12 do pat:update_frame(810, 0, frame, { untech = 6000, proration = 850 }) pat:update_frame(810, 1, frame, { untech = 6000, proration = 850 }) pat:update_frame(810, 2, frame, { untech = 6000, proration = 850 }) pat:update_frame(810, 3, frame, { untech = 6000, proration = 850 }) pat:update_frame(810, 5, frame, { untech = 6000, proration = 850 }) end end function mods.modify_j6a_untech(pat) for frame = 4, 7 do pat:update_frame(307, 0, frame, { untech = 6000 }) end end function mods.modify_5c_untech(pat) pat:update_frame(801, 0, 0, { untech = 60 }) end function mods.change2b_hit_ani(pat) for frame = 0, 17 do pat:update_frame(807, 0, 0, { hit_ani_ground = 72, hitstop_enemy = 10, hitstop_self = 10, launch_vector_y = 850, launch_vector_x = -10 }) end end function mods.add_6c_untech(pat) for frame = 0, 20 do pat:update_frame(804, 0, frame, { untech = 50, proration = 900 }) end end function mods.modify_aya_divekick(pat) for frame = 1, 2 do pat:get_sequence(308, frame):set_priority(10, 50) end pat:update_frame(308, 0, 3, { duration = 3 }) pat:update_frame(308, 0, 4, { damage = 600, hitstop_self = 0, hit_ani_air = 88, hit_ani_ground = 88, untech = 45, proration = 750 }) pat:update_frame(308, 0, 4, function(frame) frame.attackbox[2] = pat:get_frame(550, 2, 1).attackbox[1] end) pat:update_frame(545, 0, 4, function(frame) frame.attackbox[2] = pat:get_frame(550, 2, 1).attackbox[1] end) for st = 0, 1 do pat:update_frame(308, 1, st, { damage = 600, hitstop_self = 0, hit_ani_air = 88, hit_ani_ground = 88, untech = 45, proration = 750 }) pat:update_frame(308, 1, st, function(frame) frame.attackbox[2] = pat:get_frame(550, 2, 1).attackbox[1] end) pat:update_frame(545, 1, st, function(frame) frame.attackbox[2] = pat:get_frame(550, 2, 1).attackbox[1] end) end -- pat:update_frame(308, 2, 0, { duration = 4 }) -- pat:remove_frame(546, 2, 1) -- pat:remove_frame(546, 2, 1) -- pat:update_frame(546, 2, 0, { duration = 1 }) end function mods.modify_tornado_launch(pat) pat:update_frame(510, 0, 1, { duration = 4 }) pat:update_frame(510, 0, 1, { duration = 6 }) for frame = 0, 9 do pat:update_frame(812, 0, frame, { launch_vector_x = 100, launch_vector_y = 1000, hitstop_enemy = 0, proration = 990 }) pat:update_frame(812, 0, frame, function(frame) frame.attackbox[2] = pat:get_frame(855, 1, 0).attackbox[2] frame.attackbox[1] = pat:get_frame(853, 9, 0).attackbox[1] end) end end function mods.dial_a_untech(pat) pat:update_frame(322, 0, 6, { untech = 6000 }) end function mods.modify_sanicspeed(pat) pat:update_frame(607, 0, 2, { duration = 10 }) for frame = 3, 13 do pat:update_frame(607, 0, frame, { duration = 1 }) end pat:update_frame(657, 0, 2, { duration = 10 }) for frame = 3, 13 do pat:update_frame(657, 0, frame, { duration = 1 }) end end function mods.modify_3cardprorate(pat) for frame = 0, 7 do pat:update_frame(853, 4, frame, { proration = 985 }) end for frame = 0, 5 do pat:update_frame(853, 6, frame, { proration = 985 }) end for frame = 0, 9 do pat:update_frame(853, 9, frame, { proration = 985 }) end pat:update_frame(853, 12, 0, { proration = 985 }) end function mods.modify_rocks(pat) pat:update_frame(852, 2, 0, { untech = 6000, proration = 980, hitstop_enemy = 10 }) pat:update_frame(852, 3, 0, { untech = 6000, proration = 980, hitstop_enemy = 10 }) end function mods.cancel(pat) -- pat:get_sequence(300, 0):set_priority(11, 5) -- 5A pat:get_sequence(320, 0):set_priority(10, 10) -- 5AA -- pat:get_sequence(303, 0):set_priority(10, 10) -- 2A -- pat:get_sequence(330, 0):set_priority(20, 10) -- 4A pat:get_sequence(321, 0):set_priority(10, 20) pat:get_sequence(322, 0):set_priority(20, 30) end function mods.modify214untech(pat) for frame = 0, 2 do for seq = 0, 6 do pat:update_frame(520, 1, frame, { untech = 6000 }) pat:update_frame(521, 1, frame, { untech = 6000 }) pat:update_frame(522, 1, frame, { untech = 6000 }) pat:update_frame(523, 1, frame, { untech = 6000 }) end end end function mods.shit(pat) for frame = 0, 2 do table.map({2, 5, 8, 11, 14}, function(seq) pat:update_frame(529, seq, frame, { untech = 6000 }) end) end for move = 525, 528 do for frame = 0, 2 do for seq = 1, 2 do pat:update_frame(move, seq, frame, { untech = 6000 }) end end end end function mods.drum(pat) pat:update_frame(550, 1, 6, { untech = 6000 }) pat:update_frame(550, 2, 0, { untech = 6000 }) pat:update_frame(550, 2, 1, { untech = 6000 }) for frame = 0, 5 do pat:update_frame(550, 4, frame, { untech = 6000 }) end pat:update_frame(552, 1, 6, { untech = 6000 }) pat:update_frame(552, 2, 0, { untech = 6000 }) pat:update_frame(552, 2, 1, { untech = 6000 }) for frame = 0, 5 do pat:update_frame(552, 4, frame, { untech = 6000 }) end pat:update_frame(554, 0, 4, { untech = 6000, hit_ani_air = 73 }) pat:update_frame(554, 1, 0, { untech = 6000, hit_ani_air = 73 }) pat:update_frame(554, 1, 1, { untech = 6000, hit_ani_air = 73 }) pat:update_frame(554, 3, 4, { untech = 6000 }) for frame = 0, 7 do pat:update_frame(822, 0, frame, { untech = 6000 }) end end function mods.AUBrevolution(pat) for frame = 5, 9 do pat:update_frame(418, 0, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) end for frame = 0, 2 do pat:update_frame(520, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) pat:update_frame(521, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) pat:update_frame(525, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) pat:update_frame(526, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) pat:update_frame(612, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) end for frame = 0, 1 do pat:update_frame(606, 1, frame, function(frame) unset_aflag(frame, AF_AIR_BLOCKABLE) end) end end function mods.modifyj8auntech(pat) pat:update_frame(309, 0, 4, { untech = 60 }) end function mods.pebble(pat) for frame = 0, 1 do pat:update_frame(827, 3, frame, { blockstop_enemy = 8, proration = 1000, sp_damage = 50, hitstop_enemy = 10, damage = 200, untech = 40 }) end for frame = 0, 3 do pat:update_frame(570, 0, frame, { duration = 2 }) end for frame = 8, 10 do pat:update_frame(570, 0, frame, { duration = 2 }) end for frame = 0, 4 do pat:update_frame(571, 0, 4, { duration = 1 }) pat:update_frame(573, 0, 4, { duration = 1 }) end end function mods.modifygalefan(pat) for frame = 0, 1 do pat:update_frame(811, 0, frame, function(frame) frame.damage = 500 -- frame.scale_x = 250 -- frame.scale_y = 250 -- frame.attackbox[1] = { x1=-60, y1=-100, x2=60, y2=100 } frame.attackbox[1] = { x1=-100, y1=-60, x2=60, y2=60 } frame.attackbox[2] = { x1=-100, y1=-60, x2=60, y2=60 } frame.untech = 60 frame.hit_ani_air = 77 frame.hit_ani_ground = 77 frame.launch_vector_x = 2450 frame.launch_vector_y = 1200 frame.hitstop_enemy = 10 end) end end function mods.modifyveiling(pat) pat:update_frame(826, 0, 0, function(frame) frame.hitstop_enemy = 10 frame.duration = 9999 frame.hitstop_enemy = 20 frame.untech = 60 frame.sp_damage = 100 frame.damage = 300 --frame.hurtbox[1] = pat:get_frame(826, 0, 0).attackbox[1] --set_fflag(frame, FF_REFLECT_BULLET) end) end function mods.modifyspells(pat) for frame = 0, 16 do pat:update_frame(855, 1, frame, { hit_ani_air = 74, hit_ani_ground = 74, launch_vector_x = 2500, untech = 9999 }) end for frame = 0, 2 do pat:update_frame(856, 1, frame, { damage = 300 }) end for frame = 0, 1 do pat:update_frame(856, 3, frame, { damage = 250 }) end for frame = 0, 1 do pat:update_frame(856, 2, frame, { damage = 250 }) end pat:update_frame(856, 6, 0, { proration = 850 }) end function mods.modifynew5aaaa(pat) local function remove_last_hurtbox(frame) table.remove(frame.hurtbox) end pat:split_frame(410, 0, 0, 3, 3) pat:split_frame(410, 0, 1, 4, 4) pat:split_frame(322, 0, 8, 7, 8) pat:split_frame(322, 0, 9, 2, 2) for idx = 0, 12 do local src = pat:get_frame(410, 0, idx) local boxes = pat:get_frame(410, 0, idx).hurtbox pat:update_frame(322, 0, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local boxes = pat:get_frame(698, 2, 0).attackbox pat:update_frame(322, 0, 6, function(frame) frame.attackbox = table.map(boxes, table.shallow_copy) frame.launch_vector_y = 1000 frame.damage = 750 end) pat:remove_frame(410, 0, 0) pat:update_frame(410, 0, 0, { duration = 6 }) pat:remove_frame(410, 0, 1) pat:update_frame(410, 0, 1, { duration = 8 }) end function mods.modify3a(pat) pat:update_frame(304, 0, 4, { launch_vector_y = 1500, launch_vector_x = 300 }) pat:update_frame(304, 1, 2, { launch_vector_y = 1500, launch_vector_x = 300 }) end function mods.modifybuntech(pat) for frame = 0, 5 do pat:update_frame(800, 0, frame, { untech = 35 }) 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, 4 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, 20 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 13 do local src = pat:get_frame(608, 0, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 14, 20 do local src = pat:get_frame(608, 2, idx - 14) 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.modifybuntech(pat) mods.modify3a(pat) mods.modifynew5aaaa(pat) mods.modifyspells(pat) mods.modifyveiling(pat) mods.modifygalefan(pat) mods.pebble(pat) mods.modifyj8auntech(pat) -- mods.AUBrevolution(pat) mods.drum(pat) mods.buff214(pat) mods.modifyd236_untech(pat) mods.add_6c_untech(pat) mods.modify_5c_untech(pat) -- mods.change2b_hit_ani(pat) mods.modify_j6a_untech(pat) mods.shit(pat) mods.modify214untech(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.modify_tornado_launch(pat) mods.modify_rocks(pat) mods.dial_a_untech(pat) mods.modify_3cardprorate(pat) mods.modify_sanicspeed(pat) mods.modify_aya_divekick(pat) mods.modify_j5a_untech(pat) end