local mods = {} function mods.modify_C_animation(pat) for frame = 0, 1 do pat:update_frame(801, 1, frame, { hit_ani_ground = 77, proration = 960, hitstop_enemy = 5, untech = 30, damage = 200 }) end end function mods.modify_2c_startup(pat) for idx = 0, 3 do pat:update_frame(412, 0, idx, { duration = 3 }) end for idx = 0, 7 do pat:update_frame(412, 1, idx, { duration = 3 }) end end function mods.modify_b_bullet_parameters(pat) table.map({0,1,2,3,12,13,14,15}, function(off) pat:update_frame(800, off, 0, { hitstop_enemy = 5 }) end) end function mods.modify_j8a_untech(pat) for frame = 3, 4 do pat:update_frame(309, 0, frame, { untech = 60 }) end pat:update_frame(303, 0, 2, { untech = 40 }) end function mods.add_j421_finish(pat) for frame = 0, 1 do pat:update_frame(820, 5, frame, { hit_ani_ground = 0, damage = 150, untech = 6000, launch_vector_y = -1000 }) end end function mods.modify_spin_untech(pat) for idx = 2, 5 do for seq = 2, 3 do for move = 560, 561 do pat:update_frame(move, seq, idx, { untech = 6000 }) end end end end function mods.change_fan_launch(pat) for odx = 3, 9 do -- startup frames for idx = 12, 14 do -- recovery frames for udx = 10, 11 do -- attack frames for seq = 0, 2 do pat:update_frame(570, seq, odx, { duration = 1 }) pat:update_frame(570, seq, udx, { untech = 60, launch_vector_y = 2250, launch_vector_x = 150, proration = 875, blockstop_self = 15, blockstop_enemy = 5, hitstop_self = 0, damage = 900}) pat:update_frame(570, seq, 12, { duration = 5 }) end end end end for seq = 2, 4 do for frame = 3, 4 do pat:update_frame(571, seq, frame, { untech = 6000 }) end end end function mods.modify_dial_a_untech(pat) pat:update_frame(321, 0, 5, { untech = 6000, damage = 900 }) end function mods.cancel(pat) pat:get_sequence(300, 0):set_priority(15, 20) -- 5A pat:get_sequence(320, 0):set_priority(10, 20) -- 5AA pat:get_sequence(303, 0):set_priority(10, 15) -- 2A pat:get_sequence(330, 0):set_priority(15, 20) -- 4A pat:get_sequence(321, 0):set_priority(20, 30) end function mods.modify_j6a_animation(pat) for frame = 4, 6 do pat:update_frame(307, 0, frame, { untech = 60 }) end for frame = 5, 8 do pat:update_frame(308, 0, frame, { untech = 6000, proration = 980, damage = 300 }) end end function mods.butterfly(pat) for move = 0, 3 do for st = 0, 1 do pat:update_frame(850, move, st, { untech = 6000 }) pat:update_frame(853, move, st, { untech = 6000 }) pat:update_frame(857, move, 0, { untech = 6000 }) end end end function mods.landofdead(pat) for frame = 0, 3 do pat:update_frame(530, 0, frame, { duration = 1 }) pat:update_frame(530, 0, 4, { duration = 4 }) pat:update_frame(531, 0, frame, { duration = 2 }) pat:update_frame(530, 0, 4, { duration = 2 }) end for frame = 0, 1 do pat:update_frame(817, 1, frame, { proration = 960, launch_vector_y = 1200, untech = 50, damage = 300 }) pat:update_frame(817, 5, 0, { proration = 960, launch_vector_y = 1200, untech = 50, damage = 300 }) end end function mods.modifybomb(pat) pat:update_frame(855, 7, 0, { proration = 400, damage = 3500 }) end function mods.modifyd236(pat) pat:update_frame(815, 1, 1, { untech = 6000 }) pat:update_frame(815, 2, 1, { untech = 6000 }) pat:update_frame(815, 3, 1, { untech = 6000 }) for frame = 0, 1 do pat:update_frame(816, 12, frame, { untech = 80, launch_vector_x = 2500 }) pat:update_frame(816, 15, 0, { untech = 80, launch_vector_x = 2500 }) pat:update_frame(816, 16, frame, { untech = 80, launch_vector_x = 2500, hit_ani_air = 74, hit_ani_ground = 74 }) end for frame = 4, 10 do for move = 525, 526 do pat:update_frame(move, 0, frame, { duration = 2 }) pat:update_frame(move, 0, 14, { duration = 21 }) pat:update_frame(move, 0, 15, { duration = 10 }) end end end function mods.modifysoulthrow(pat) pat:update_frame(550, 0, 2, function(frame) frame.attackbox[1] = pat:get_frame(855, 7, 0).attackbox[1] set_aflag(frame, 3076) frame.attack_level = 2 frame.card_gain_block = 30 frame.card_gain_hit = 30 frame.chip_damage = 200 frame.combo_correction = 2 frame.hit_effect = 3 frame.sp_damage = 100 frame.duration = 10 frame.damage = 800 frame.hitstop_enemy = 10 frame.hitstop_self = 0 frame.blockstop_enemy = 10 frame.unknown_9 = 100 frame.data_format = 0 frame.proration = 920 frame.limit = 0 frame.hit_ani_ground = 74 frame.hit_ani_air = 74 frame.untech = 60 frame.launch_vector_x = 2500 frame.launch_vector_y = 1000 frame.hit_sfx = 4 unset_aflag(frame, AF_PROJECTILE) set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) unset_aflag(frame, AF_AIR_BLOCKABLE) end) end function mods.modify6a(pat) for frame = 3, 5 do pat:update_frame(306, 0, frame, { damage = 600 }) pat:update_frame(300, 0, 6, { damage = 600 }) pat:update_frame(330, 0, 6, { damage = 600 }) end pat:update_frame(302, 0, 6, { untech = 45, damage = 700, proration = 750, hit_ani_air = 88, hit_ani_ground = 88, launch_vector_x = 1500, launch_vector_y = -2400}) end function mods.modifyscreens(pat) pat:update_frame(565, 0, 3, function(frame) frame.attackbox[1]= pat:get_frame(565, 1, 3).attackbox[1] frame.attackbox[2]= pat:get_frame(565, 1, 3).attackbox[2] frame.attackbox[3]= pat:get_frame(565, 1, 3).attackbox[3] frame.attackbox[4]= pat:get_frame(565, 1, 3).attackbox[4] set_fflag(frame, FF_REFLECT_BULLET) set_fflag(frame, FF_BULLET_INV) set_fflag(frame, FF_MELEE_INV) frame.untech = 9000 frame.hurtbox[1]= pat:get_frame(565, 1, 3).attackbox[1] frame.hurtbox[2]= pat:get_frame(565, 1, 3).attackbox[2] frame.hurtbox[3]= pat:get_frame(565, 1, 3).attackbox[3] frame.hurtbox[4]= pat:get_frame(565, 1, 3).attackbox[4] end) pat:update_frame(565, 0, 4, function(frame) frame.attackbox[1]= pat:get_frame(565, 1, 4).attackbox[1] frame.attackbox[2]= pat:get_frame(565, 1, 4).attackbox[2] frame.attackbox[3]= pat:get_frame(565, 1, 4).attackbox[3] frame.attackbox[4]= pat:get_frame(565, 1, 4).attackbox[4] set_fflag(frame, FF_REFLECT_BULLET) set_fflag(frame, FF_BULLET_INV) set_fflag(frame, FF_MELEE_INV) frame.untech = 9000 frame.hurtbox[1]= pat:get_frame(565, 1, 4).attackbox[1] frame.hurtbox[2]= pat:get_frame(565, 1, 4).attackbox[2] frame.hurtbox[3]= pat:get_frame(565, 1, 4).attackbox[3] frame.hurtbox[4]= pat:get_frame(565, 1, 4).attackbox[4] end) for frame = 1, 2 do pat:remove_frame(565, 0, 1) end pat:update_frame(565, 0, 0, { duration = 10 }) end function mods.modifybadskills(pat) for frame = 0, 1 do pat:update_frame(821, 1, frame, function(frame) frame.damage = 350 frame.scale_x = 600 frame.scale_y = 600 frame.attackbox[1]= { x1=-80, y1=-80, x2=80, y2=80 } end) end for frame = 0, 14 do pat:update_frame(822, 4, frame, function(frame) frame.damage = 300 frame.scale_x = 400 frame.scale_y = 400 frame.sp_damage = 100 frame.hit_ani_ground = 0 frame.hitstop_enemy = 10 frame.blockstop_enemy = 10 frame.attackbox[1]= { x1=-50, y1=-50, x2=50, y2=50 } end) end for frame = 0, 1 do pat:update_frame(550, 1, frame, function(frame) frame.damage = 300 end) end for frame = 0, 1 do pat:update_frame(551, 1, frame, function(frame) frame.damage = 300 end) end -- pat:update_frame(551, 2, 0, { duration = 9999 }) end function mods.modify5cards(pat) for frame = 0, 1 do pat:update_frame(858, 1, frame, { untech = 6000 }) end pat:update_frame(609, 0, 1, { duration = 1 }) end function mods.modifylol(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 for idx = 0, 1 do local src = pat:get_frame(214, 4, 0) -- local boxes = pat:get_frame(507, 1, 3).hurtbox pat:update_frame(202, 0, idx, function(frame) copy_sprite(frame, src) -- frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local src = pat:get_frame(214, 4, 1) pat:update_frame(202, 1, 0, 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(214, 4, (idx + 1)) -- local boxes = pat:get_frame(507, 1, idx).hurtbox pat:update_frame(202, 2, idx, function(frame) copy_sprite(frame, src) -- frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 5, 6 do local src = pat:get_frame(214, 4, 5) -- local boxes = pat:get_frame(507, 1, idx).hurtbox pat:update_frame(202, 2, 4, function(frame) copy_sprite(frame, src) -- frame.hurtbox = table.map(boxes, table.shallow_copy) end) local src = pat:get_frame(214, 4, 6) -- local boxes = pat:get_frame(507, 1, idx).hurtbox pat:update_frame(202, 2, idx, function(frame) copy_sprite(frame, src) -- frame.hurtbox = table.map(boxes, table.shallow_copy) 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, 13 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 8 do local src = pat:get_frame(604, 0, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 9, 10 do local src = pat:get_frame(604, 1, idx - 9) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 11, 13 do local src = pat:get_frame(604, 2, idx - 11) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end local src = pat:get_frame(604, 1, 1) pat:update_frame(0, 0, num + 10, function(frame) copy_sprite(frame, src) frame.duration = 20 end) end return function(pat) mods.maketaunt(pat) -- mods.modifylol(pat) mods.modify5cards(pat) mods.modifybadskills(pat) mods.modify6a(pat) mods.modifyscreens(pat) mods.modifyd236(pat) mods.modifybomb(pat) -- mods.global(pat) mods.landofdead(pat) mods.butterfly(pat) mods.modify_j6a_animation(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.modify_dial_a_untech(pat) -- mods.add_j421_finish(pat) mods.modify_j8a_untech(pat) mods.change_fan_launch(pat) mods.modify_spin_untech(pat) -- mods.modify_b_bullet_parameters(pat) -- mods.modify_2c_recovery(pat) -- mods.modify_2c_startup(pat) mods.modify_C_animation(pat) end