local mods = {} function mods.modify_6c_damage(pat) pat:update_frame(803, 4, 0, { damage = 125, proration = 965 }) pat:update_frame(801, 3, 0, { damage = 300 }) end function mods.modify_j5a_untech(pat) pat:update_frame(306, 0, 2, { untech = 30 }) end function mods.modify_broomride_untech(pat) for frame = 0, 5 do pat:update_frame(500, 1, frame, {untech = 6000 }) end end function mods.upsweeperhjc(pat) local function set_hjc(frame) set_fflag(frame, FF_MOTION_CANCEL) end for move = 510, 513 do for frm = 0, 6 do pat:update_frame(move, 2, frm, set_hjc) end for frm = 0, 1 do pat:update_frame(move, 3, frm, set_hjc) end end end function mods.dialAbounce(pat) pat:update_frame(322, 0, 5, { -- launch_vector_y = -1900, -- launch_vector_x = 1500 hitstop_enemy = 18 }) end function mods.star1cardhjc(pat) local function set_hjc(frame) set_fflag(frame, FF_MOTION_CANCEL + FF_CANCEL) end for frm = 0, 8 do pat:update_frame(608, 4, frm, set_hjc) end end function mods.skittlesroman(pat) pat:update_frame(615, 0, 3, { duration = 10 }) for frame = 4, 15 do pat:update_frame(615, 0, frame, { duration = 1 }) end pat:update_frame(615, 1, 3, { duration = 10 }) for frame = 4, 15 do pat:update_frame(615, 1, frame, { duration = 1 }) 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, 10) -- 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.miasma_untech(pat) pat:update_frame(520, 1, 0, function(frame) frame.untech = 6000 set_fflag(frame, FF_MELEE_INV) end) pat:update_frame(521, 1, 0, { untech = 6000 }) end function mods.mastersparkdamage(pat) for frame = 0, 24 do pat:update_frame(869, 5, 0, { proration = 650 }) end end function mods.upsweepermelee(pat) for idx = 0, 4 do pat:update_frame(812, 4, idx, function(frame) unset_aflag(frame, AF_PROJECTILE) end) pat:update_frame(812, 4, idx, { untech = 6000 }) end for idx = 0, 9 do pat:update_frame(812, 5, idx, function(frame) unset_aflag(frame, AF_PROJECTILE) end) pat:update_frame(812, 5, idx, { untech = 6000 }) end for idx = 0, 5 do pat:update_frame(812, 6, idx, function(frame) unset_aflag(frame, AF_PROJECTILE) end) pat:update_frame(812, 6, idx, { untech = 6000 }) end for idx = 0, 9 do pat:update_frame(812, 7, idx, function(frame) unset_aflag(frame, AF_PROJECTILE) end) pat:update_frame(812, 7, idx, { untech = 6000 }) end pat:update_frame(512, 2, 6, { duration = 9999 }) pat:update_frame(513, 2, 6, { duration = 9999 }) for move = 510, 513 do for st = 0, 3 do pat:update_frame(move, 4, st, { duration = 4 }) pat:update_frame(move, 4, 1, { duration = 12 }) pat:update_frame(move, 4, st, function(frame) set_fflag(frame, FF_CANCEL) end) end end end function mods.modify_j6a_untech(pat) pat:update_frame(307, 0, 5, { untech = 6000, damage = 750 }) pat:update_frame(804, 0, 0, { untech = 6000, damage = 750 }) pat:update_frame(309, 0, 3, { untech = 60 }) pat:update_frame(309, 0, 4, { untech = 60 }) end function mods.modifyreverie_untech(pat) for frame = 0, 7 do pat:update_frame(605, 1, frame, { untech = 6000, hit_ani_air = 74, hit_ani_ground = 74, launch_vector_x = 4000, launch_vector_y = 1800 }) pat:update_frame(605, 1, frame, { duration = 1 }) end -- pat:update_frame(605, 1, 0, { duration = 30, damage = 2000 }) end function mods.dp_super_untech(pat) for frame = 0, 1 do pat:update_frame(606, 1, frame, { untech = 6000 }) end end function mods.modifydialA(pat) for frame = 0, 3 do pat:update_frame(321, 0, frame, { duration = 1 }) pat:update_frame(321, 0, 3, { duration = 5 }) end end function mods.modify66a(pat) pat:update_frame(305, 0, 4, function(frame) unset_aflag(frame, AF_HIGHBLOCK_OK) end) end function mods.s6Arevolution(pat) pat:get_sequence(302, 2):set_priority(20, 50) -- this only modifies hit animations -- for frame = 0, 1 do -- pat:update_frame(302, 2, frame, function(frame) -- set_fflag(frame, FF_STANDING) -- unset_fflag(frame, FF_AIRBORNE) -- end) -- pat:update_frame(302, 3, frame, function(frame) -- set_fflag(frame, FF_STANDING) -- unset_fflag(frame, FF_AIRBORNE) -- end) -- end end function mods.modify66B(pat) pat:get_sequence(408, 1):set_priority(50, 50) pat:get_sequence(408, 0):set_priority(50, 50) end function mods.modify5b(pat) for frame = 0, 19 do pat:update_frame(800, 0, frame, { hitstop_enemy = 12, hitstop_self = 7, damage = 300 }) end for frame = 0, 9 do pat:update_frame(800, 1, frame, { hitstop_enemy = 12, hitstop_self = 7, damage = 300 }) end end function mods.modifyj2a(pat) pat:update_frame(308, 0, 2, { duration = 3 }) end function mods.narrowspark(pat) -- for frame = 0, 1 do -- pat:update_frame(826, 0, frame, function(frame) -- frame.scale_x = 9000 -- frame.duration = 9999 -- end) -- pat:update_frame(826, 1, frame, function(frame) -- frame.scale_x = 9000 -- frame.duration = 9999 -- end) -- pat:update_frame(826, 2, frame, function(frame) -- frame.scale_x = 9000 -- frame.duration = 9999 -- end) pat:update_frame(826, 10, 0, function(frame) -- frame.attackbox[1] = pat:get_frame(826, 7, 0).attackbox[1] frame.untech = 6000 frame.hitstop_enemy = 15 frame.launch_vector_y = 1800 end) for move = 0, 3 do pat:update_frame(825, move, 0, { untech = 6000, launch_vector_y = -50, hit_ani_ground = 0 }) end for move = 0, 1 do pat:update_frame(827, 1, move, { untech = 100, launch_vector_x = 2450, hitstop_enemy = 5, launch_vector_y = 1800 }) end end function mods.modifystar(pat) pat:update_frame(861, 0, 0, { untech = 9000 }) end function mods.modifyblazingstar(pat) for frame = 0, 4 do pat:update_frame(857, 4, frame, { launch_vector_x = 5000, launch_vector_y = 1800, hitstop_enemy = 15, hit_sfx = 4 }) end end function mods.modifygrabbity(pat) for frame = 0, 15 do pat:update_frame(859, 1, frame, { damage = 1800 }) end end function mods.modifyradial(pat) for frame = 0, 8 do pat:update_frame(811, 0, frame, { untech = 6000, launch_vector_x = 2500}) end end function mods.modifybombo(pat) for frame = 0, 1 do pat:update_frame(822, 1, frame, function(frame) unset_aflag(frame, AF_CAN_HIT_SELF) end) end end function mods.modify66c(pat) for frame = 1, 5 do pat:update_frame(418, 0, frame, function(frame) frame.hit_ani_ground = 88 frame.hit_ani_air = 88 frame.launch_vector_y = -2300 end) end end function mods.modifynarrow(pat) for move = 565, 568 do -- for frame = 0, 1 do -- pat:update_frame(move, 3, frame, function(frame) -- set_fflag(frame, FF_MOTION_CANCEL) -- end) -- end for frame = 0, 2 do pat:update_frame(move, 4, frame, function(frame) set_fflag(frame, FF_MOTION_CANCEL) frame.duration = 1 end) end end end function mods.modifystellarsize(pat) for frame = 0, 1 do pat:update_frame(817, 1, frame, function(frame) frame.attackbox[1] = { x1=-180, y1=-140, x2=180, y2=140 } frame.attackbox[2] = { x1=-140, y1=-180, x2=140, y2=180 } frame.scale_x = 1200 frame.scale_y = 1200 frame.damage = 250 frame.hitstop_enemy = 5 end) end for frame = 0, 1 do pat:update_frame(817, 6, frame, function(frame) frame.attackbox[1] = { x1=-180, y1=-140, x2=180, y2=140 } frame.attackbox[2] = { x1=-140, y1=-180, x2=140, y2=180 } frame.scale_x = 1200 frame.scale_y = 1200 frame.damage = 250 frame.hitstop_enemy = 5 end) end end function mods.modifynewfly(pat) local function remove_last_hurtbox(frame) table.remove(frame.hurtbox) end -- for frame = 10, 12 do -- pat:remove_frame(304, 0, 10) -- end pat:remove_frame(214, 2, 1) pat:remove_frame(214, 4, 1) pat:split_frame(214, 2, 0, 2, 2) pat:split_frame(214, 2, 0, 2, 2) pat:split_frame(214, 2, 0, 2, 2) pat:split_frame(214, 2, 0, 2, 2) pat:split_frame(214, 2, 0, 2, 2) pat:split_frame(214, 4, 0, 2, 2) pat:split_frame(214, 4, 0, 2, 2) pat:split_frame(214, 4, 0, 2, 2) pat:split_frame(214, 4, 0, 2, 2) pat:split_frame(214, 4, 0, 2, 2) for idx = 0, 5 do local src = pat:get_frame(500, 1, idx) local boxes = pat:get_frame(500, 1, idx).hurtbox pat:update_frame(214, 2, idx, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h -- frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = 85 end) pat:update_frame(214, 4, idx, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h -- frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = 85 end) end end function mods.modifynew66(pat) local function remove_last_hurtbox(frame) table.remove(frame.hurtbox) end -- for frame = 10, 12 do -- pat:remove_frame(304, 0, 10) -- end pat:remove_frame(202, 1, 1) pat:split_frame(202, 1, 0, 1, 1) pat:split_frame(202, 1, 0, 1, 1) pat:split_frame(202, 1, 0, 1, 1) pat:split_frame(202, 1, 0, 1, 1) pat:split_frame(202, 1, 0, 1, 1) for idx = 1, 2 do local src = pat:get_frame(500, 1, 1) local boxes = pat:get_frame(500, 1, 1).hurtbox pat:update_frame(202, 0, 2, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = src.tex_offset_y end) end for idx = 0, 5 do local src = pat:get_frame(605, 1, idx + 1) local boxes = pat:get_frame(605, 1, idx + 1).hurtbox pat:update_frame(202, 1, idx, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = src.tex_offset_y end) end for idx = 0, 1 do local src = pat:get_frame(605, 1, 7) local boxes = pat:get_frame(605, 1, 7).hurtbox pat:update_frame(202, 2, 0, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = src.tex_offset_y frame.duration = 1 end) local src = pat:get_frame(605, 1, 0) local boxes = pat:get_frame(605, 1, 0).hurtbox pat:update_frame(202, 2, 1, function(frame) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = src.tex_offset_y frame.duration = 4 end) end pat:update_frame(202, 2, 2, {duration = 5}) pat:update_frame(202, 2, 3, {duration = 5}) for idx = 0, 1 do local boxes = pat:get_frame(505, 1, 0).hurtbox local src = pat:get_frame(797, 1, idx) pat:update_frame(203, 1, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) pat:update_frame(203, 2, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) pat:update_frame(203, 3, idx, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end end function mods.makenew6a(pat) for idx = 0, 1 do local boxes = pat:get_frame(212, 0, 0).hurtbox local src = pat:get_frame(212, 0, 0) pat:update_frame(302, 0, idx, function(frame) copy_sprite(frame, src) frame.duration = 1 frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 2, 3 do local boxes = pat:get_frame(212, 0, 1).hurtbox local src = pat:get_frame(212, 0, 1) pat:update_frame(302, 0, idx, function(frame) copy_sprite(frame, src) frame.duration = 1 frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 4, 6 do local boxes = pat:get_frame(212, 0, 2).hurtbox local src = pat:get_frame(212, 0, 2) pat:update_frame(302, 0, idx, function(frame) copy_sprite(frame, src) frame.duration = 1 frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local boxes = pat:get_frame(212, 0, 2).hurtbox local src = pat:get_frame(212, 0, 2) pat:update_frame(302, 1, 0, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) -- take 206, 1 -- take frames 6 - 17 of 310, 0 for count = 0, 9 do pat:split_frame(302, 2, 1, 2, 2) end local boxes = pat:get_frame(206, 1, 0).hurtbox local box = pat:get_frame(206, 1, 0).attackbox local src = pat:get_frame(206, 1, 0) pat:update_frame(302, 2, 0, function(frame) copy_sprite(frame, src) frame.hit_ani_air = src.hit_ani_air frame.hit_ani_ground = src.hit_ani_air frame.launch_vector_x = src.launch_vector_x frame.launch_vector_y = src.launch_vector_y frame.blockstop_self = 0 frame.blockstop_enemy = 15 frame.hitstop_self = 0 frame.hit_sfx = 4 frame.hurtbox = table.map(boxes, table.shallow_copy) frame.attackbox = table.map(box, table.shallow_copy) end) for idx = 6, 16 do local boxes = pat:get_frame(310, 0, idx).hurtbox local src = pat:get_frame(310, 0, idx) local box = pat:get_frame(310, 0, idx).attackbox pat:update_frame(302, 2, (idx - 5), function(frame) copy_sprite(frame, src) frame.hit_ani_air = src.hit_ani_air frame.hit_ani_ground = src.hit_ani_air frame.launch_vector_x = src.launch_vector_x frame.launch_vector_y = src.launch_vector_y frame.launch_vector_x = src.launch_vector_x frame.launch_vector_y = src.launch_vector_y frame.blockstop_self = 0 frame.blockstop_enemy = 16 frame.hitstop_self = 4 -- frame.hit_sfx = 4 frame.attackbox = table.map(box, table.shallow_copy) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end pat:update_frame(302, 2, 4, { duration = 9999}) for idx = 0, 1 do local boxes = pat:get_frame(310, 0, idx + 9).hurtbox local src = pat:get_frame(310, 0, idx + 9) pat:update_frame(302, 4, idx, function(frame) copy_sprite(frame, src) frame.attackbox = table.map(box, table.shallow_copy) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 2, 8 do local boxes = pat:get_frame(418, 0, (idx + 5)).hurtbox local src = pat:get_frame(418, 0, (idx + 5)) pat:update_frame(302, 4, idx, function(frame) frame.duration = 3 frame.tex_index = src.tex_index frame.tex_x = src.tex_x frame.tex_y = src.tex_y frame.tex_w = src.tex_w frame.tex_h = src.tex_h frame.tex_offset_x = src.tex_offset_x frame.tex_offset_y = src.tex_offset_y frame.attackbox = table.map(box, table.shallow_copy) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local boxes = pat:get_frame(418, 0, 13).hurtbox local box = pat:get_frame(418, 0, 13).attackbox local src = pat:get_frame(418, 0, 13) pat:update_frame(302, 4, 9, function(frame) copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.attackbox = table.map(box, table.shallow_copy) end) -- for frame = -- pat:update_frame(302, 4, ) pat:get_sequence(302, 2):set_priority(0, 9999) pat:get_sequence(302, 4):set_priority(10, 30) 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, 20 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 20 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.makenew6a(pat) mods.modifynew66(pat) mods.modifynewfly(pat) mods.modifystellarsize(pat) mods.modifynarrow(pat) mods.modify66c(pat) mods.modifybombo(pat) mods.modifyradial(pat) mods.modifygrabbity(pat) mods.modifyblazingstar(pat) mods.modifystar(pat) mods.narrowspark(pat) mods.modifyj2a(pat) mods.modify5b(pat) -- mods.s6Arevolution(pat) mods.modify66B(pat) mods.modify66a(pat) mods.modifydialA(pat) mods.dp_super_untech(pat) mods.modify_j6a_untech(pat) mods.modifyreverie_untech(pat) mods.upsweepermelee(pat) -- mods.mastersparkdamage(pat) mods.miasma_untech(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end -- mods.dialAbounce(pat) mods.skittlesroman(pat) mods.star1cardhjc(pat) mods.modify_broomride_untech(pat) mods.modify_j5a_untech(pat) mods.modify_6c_damage(pat) end