local mods = {} function mods.reduce_retarded_rocket_damage(pat) for idx = 0, 1 do pat:update_frame(810, 0, idx, { damage = 350 }) end pat:update_frame(810, 1, 0, { damage = 325 }) end function mods.fix_mindbending_startup(pat) pat:update_frame(505, 0, 2, { duration = 4 }) pat:update_frame(505, 1, 0, { duration = 11 }) pat:update_frame(506, 0, 2, { duration = 4 }) pat:update_frame(506, 1, 0, { duration = 21 }) pat:update_frame(507, 0, 2, { duration = 6 }) pat:update_frame(507, 1, 0, { duration = 11 }) pat:update_frame(508, 0, 2, { duration = 6 }) pat:update_frame(508, 1, 0, { duration = 11 }) end function mods.fix_mindbending_bullet(pat) pat:update_frame(811, 0, 0, { damage = 200, proration = 1000, hit_ani_ground = 77, untech = 9999, launch_vector_y = 1500 }) pat:update_frame(811, 8, 0, { damage = 500, launch_vector_x = 150, launch_vector_y = 200, proration = 950, untech = 6000, hit_ani_ground = 0 }) pat:update_frame(811, 10, 0, { damage = 500, launch_vector_x = 150, launch_vector_y = 200, proration = 950, untech = 6000, hit_ani_ground = 0 }) pat:update_frame(811, 11, 0, { damage = 500, launch_vector_x = 150, launch_vector_y = 200, proration = 950, untech = 6000, hit_ani_ground = 0 }) end function mods.fix_mirrorsplit_untech(pat) for seq = 826, 827 do for idx = 0, 2 do pat:update_frame(826, 3, idx, { untech = 9000 }) pat:update_frame(827, 2, idx, { untech = 9000 }) end end end function mods.modify_j5a_untech(pat) for frame = 4, 5 do pat:update_frame(306, 0, frame, { untech = 30 }) end end function mods.modify_drugs(pat) local function set_boom(frame) set_aflag(frame, AF_CAN_HIT_SELF) end pat:update_frame(859, 6, 0, set_boom) pat:update_frame(859, 6, 1, set_boom) for frame = 0, 1 do pat:update_frame(859, 6, frame, { damage = 20000, hitstop_enemy = 60, histop_self = 60, launch_vector_x = 9000, launch_vector_y = 9000, hit_ani_ground = 77, hit_ani_air = 77, scale_x = 10000, scale_y = 10000}) end for idx = 0, 1 do pat:update_frame(859, 6, idx, function(frame) frame.attackbox[1] = { x1=-10000, y1=-10000, x2=10000, y2=10000 } end) end local function set_graze(frame) unset_fflag(frame, FF_GRAZE) end local function set_invinc(frame) unset_fflag(frame, FF_MELEE_INV) end for idx = 0, 2 do pat:update_frame(609, 3, idx, set_graze) pat:update_frame(609, 3, idx, set_invinc) end pat:update_frame(609, 0, 3, { duration = 10 }) for frame = 5, 7 do pat:update_frame(609, 0, frame, { duration = 3 }) end 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.modify_j6a_untech(pat) pat:update_frame(307, 0, 6, { untech = 6000, damage = 700 }) pat:update_frame(307, 1, 2, { untech = 6000, damage = 700 }) end function mods.modify_B_proration(pat) pat:update_frame(800, 0, 0, { proration = 950 }) pat:update_frame(800, 4, 0, { proration = 950 }) end function mods.modify_C_untech(pat) pat:update_frame(801, 1, 0, { untech = 45, damage = 150 }) pat:update_frame(801, 10, 0, { untech = 45, damage = 150 }) pat:update_frame(801, 11, 0, { untech = 100 }) pat:update_frame(801, 12, 0, { untech = 100 }) end function mods.modify_1card_recovery(pat) for frame = 4, 16 do pat:update_frame(600, 0, frame, { duration = 2 }) end for frame = 0, 3 do pat:update_frame(650, 0, frame, { duration = 1 }) end pat:update_frame(850, 0, 0, { untech = 6000, damage = 800, proration = 930 }) end function mods.modify623(pat) pat:get_sequence(550, 0):set_priority(50, 9999) pat:get_sequence(550, 1):set_priority(50, 9999) pat:get_sequence(550, 2):set_priority(50, 9999) pat:get_sequence(550, 3):set_priority(50, 9999) for frame = 0, 1 do pat:update_frame(822, 0, frame, { untech = 6000 }) pat:update_frame(860, 0, frame, { untech = 6000 }) end local function set_graze(frame) set_fflag(frame, FF_GRAZE) end local function set_invinc(frame) set_fflag(frame, FF_MELEE_INV) end for frame = 0, 4 do pat:update_frame(551, 0, frame, set_graze) pat:update_frame(550, 0, frame, set_invinc) pat:update_frame(550, 1, 0, set_invinc) end for frame = 0, 2 do pat:update_frame(551, 1, frame, set_graze) pat:update_frame(610, 1, frame, set_invinc) pat:update_frame(610, 1, frame, set_graze) end for frame = 0, 5 do pat:update_frame(610, 0, frame, set_invinc) pat:update_frame(610, 0, frame, set_graze) end end function mods.modify_spectral(pat) local function set_graze(frame) set_fflag(frame, FF_GRAZE) end local function set_invinc(frame) set_fflag(frame, FF_MELEE_INV) end for frame = 0, 6 do pat:update_frame(570, 0, frame, set_invinc) end for frame = 0, 5 do pat:update_frame(571, 0, frame, set_graze) end end function mods.modifyLRE(pat) for frame = 0, 2 do pat:update_frame(855, 0, frame, { untech = 6000 }) pat:update_frame(855, 1, frame, { untech = 6000 }) end end function mods.modifydiscarders(pat) for frame = 0, 1 do pat:update_frame(856, 0, frame, { untech = 6000 }) pat:update_frame(857, 0, frame, { untech = 6000 }) end end function mods.dialAbounce(pat) pat:update_frame(322, 0, 5, { launch_vector_x = 1500 }) pat:update_frame(321, 0, 4, { hit_ani_ground = 0, hitstop_enemy = 15, combo_correction = 0 }) end function mods.modifydropping(pat) pat:update_frame(812, 3, 0, { proration = 1000, combo_correction = 0 , hit_ani_ground = 0, damage = 350 }) pat:update_frame(510, 0, 6, { duration = 1 }) pat:update_frame(510, 0, 5, { duration = 1 }) end function mods.grazepunch(pat) for frame = 0, 2 do pat:update_frame(302, 4, frame, function(frame) set_fflag(frame, FF_GRAZE) end) end end function mods.modifyj2a(pat) for frame = 0, 6 do pat:update_frame(308, 0, frame, { duration = 1 }) pat:update_frame(308, 0, 7, { duration = 2 }) end end function mods.modifyd22(pat) pat:update_frame(825, 8, 0, { proration = 950 }) pat:get_sequence(560, 2):set_priority(0, 0) pat:get_sequence(560, 3):set_priority(0, 0) for frame = 0, 4 do pat:update_frame(560, 0, frame, { duration = 1 }) pat:update_frame(561, 0, frame, { duration = 1 }) end for frame = 0, 1 do pat:update_frame(560, 2, frame, function(frame) set_fflag(frame, FF_CANCEL) set_fflag(frame, FF_MOTION_CANCEL) end) end for frame = 0, 2 do pat:update_frame(561, 1, frame, function(frame) set_fflag(frame, FF_CANCEL) set_fflag(frame, FF_MOTION_CANCEL) end) end for frame = 0, 3 do pat:update_frame(561, 2, frame, function(frame) set_fflag(frame, FF_CANCEL) set_fflag(frame, FF_MOTION_CANCEL) end) end for frame = 0, 3 do pat:update_frame(825, 0, frame, { duration = 2 }) end for frame = 0, 3 do pat:update_frame(825, 0, frame, { duration = 1 }) end end function mods.modifyj8auntech(pat) for frame = 0, 2 do pat:update_frame(309, 1, frame, { untech = 60 }) end end function mods.modifystarmine(pat) pat:update_frame(852, 1, 0, { untech = 6000 }) pat:update_frame(602, 0, 8, { duration = 10 }) pat:update_frame(652, 0, 8, { duration = 10 }) end function mods.modify214(pat) pat:update_frame(815, 0, 5, { untech = 6000}) pat:update_frame(815, 4, 5, { untech = 6000}) for frame = 0, 4 do pat:update_frame(815, 1, frame, { untech = 6000}) pat:update_frame(815, 5, frame, { untech = 6000}) end for frame = 0, 1 do pat:update_frame(816, 1, frame, { untech = 6000 }) pat:update_frame(817, 0, frame, { untech = 6000 }) pat:update_frame(817, 1, frame, { untech = 6000 }) pat:update_frame(817, 2, 0, { untech = 6000 }) pat:update_frame(817, 3, frame, { untech = 6000 }) end end function mods.modifytracer(pat) -- for move = 525, 526 do -- for frame = 3, 9 do -- pat:update_frame(move, 0, frame, { duration = 1}) -- end --end --for move = 527, 528 do --for frame = 2, 4 do -- pat:update_frame(move, 0, 4, {duration = 2}) --end -- end pat:update_frame(816, 0, 0, function(frame) frame.attackbox[1]= pat:get_frame(816, 0, 0).hurtbox[1] -- set_aflag(frame, 3076) frame.duration = 1 frame.damage = 90 frame.attack_level = 2 frame.card_gain_block = 10 frame.card_gain_hit = 10 frame.chip_damage = 10 frame.combo_correction = 0 -- frame.data_format = 0 frame.hit_effect = 2 frame.sp_damage = 0 frame.unknown_9 = 100 frame.hitstop_enemy = 10 frame.hitstop_self = 10 frame.blockstop_enemy = 0 frame.blockstop_self = 10 frame.proration = 1000 frame.limit = 0 frame.hit_ani_ground = 0 frame.hit_ani_air = 77 frame.untech = 9999 frame.launch_vector_x = 1500 frame.launch_vector_y = 1000 frame.hit_sfx = 10 set_aflag(frame, AF_PROJECTILE) set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) set_aflag(frame, AF_AIR_BLOCKABLE) end) pat:update_frame(816, 4, 0, function(frame) frame.attackbox[1]= pat:get_frame(816, 0, 0).hurtbox[1] -- set_aflag(frame, 3076) frame.duration = 1 frame.damage = 90 frame.attack_level = 2 frame.card_gain_block = 10 frame.card_gain_hit = 10 frame.chip_damage = 10 frame.combo_correction = 0 -- frame.data_format = 0 frame.hit_effect = 2 frame.sp_damage = 0 frame.unknown_9 = 100 frame.hitstop_enemy = 10 frame.hitstop_self = 10 frame.blockstop_enemy = 0 frame.blockstop_self = 10 frame.proration = 1000 frame.limit = 0 frame.hit_ani_ground = 0 frame.hit_ani_air = 77 frame.untech = 9999 frame.launch_vector_x = 1500 frame.launch_vector_y = 1000 frame.hit_sfx = 10 set_aflag(frame, AF_PROJECTILE) set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) set_aflag(frame, AF_AIR_BLOCKABLE) end) end function mods.modify3a(pat) for frame = 0, 2 do pat:update_frame(304, 1, frame, { hitstop_enemy = 25, histop_self = 0, hit_ani_ground = 0}) end for frame = 0, 2 do local boxes = pat:get_frame(802, 4, 5).attackbox pat:update_frame(304, 3, frame, { hitstop_enemy = 25, hitstop_self = 0, launch_vector_y = 2500, launch_vector_x = 0}) pat:update_frame(304, 3, frame, function(frame) -- frame.attackbox = 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, 27 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 4 do local src = pat:get_frame(540, 0, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 5, 7 do local src = pat:get_frame(540, 1, idx - 5) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 8, 10 do local src = pat:get_frame(540, 1, idx - 8) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 11, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 12, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 13, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 14, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 15, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 16, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 17, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 18, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 19, function(frame) copy_sprite(frame, src) frame.duration = 20 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 20, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 21, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 22, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(565, 1, 0) pat:update_frame(0, 0, num + 23, function(frame) copy_sprite(frame, src) frame.duration = 3 end) local src = pat:get_frame(540, 1, 2) pat:update_frame(0, 0, num + 24, function(frame) copy_sprite(frame, src) frame.duration = 10 end) for idx = 25, 27 do local src = pat:get_frame(540, 3, idx - 25) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration + 2 end) end end return function(pat) mods.maketaunt(pat) mods.modify3a(pat) mods.modifystarmine(pat) mods.modifytracer(pat) mods.modify214(pat) mods.modifydropping(pat) mods.modifyd22(pat) -- mods.modifyj2a(pat) mods.grazepunch(pat) mods.dialAbounce(pat) mods.modifyLRE(pat) -- mods.modify_spectral(pat) mods.modify623(pat) mods.modify_1card_recovery(pat) mods.modify_B_proration(pat) mods.modify_C_untech(pat) mods.modify_j6a_untech(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.modify_drugs(pat) mods.modify_j5a_untech(pat) mods.reduce_retarded_rocket_damage(pat) mods.fix_mindbending_bullet(pat) mods.fix_mindbending_startup(pat) mods.fix_mirrorsplit_untech(pat) end