local mods = {} local mods = {} function mods.hit_parameters_b(pat) pat:update_frame(800, 0, 0, { hitstop_enemy = 10 }) end function mods.add_icecar_knockdown(pat) for idx = 0, 1 do pat:update_frame(527, 1, idx, { untech = 9000 }) pat:update_frame(527, 1, idx, { hit_ani_air = 71, }) end for idx = 0, 1 do pat:update_frame(528, 1, idx, { untech = 9000 }) pat:update_frame(528, 1, idx, { hit_ani_air = 71, }) end end function mods.fix_icesword(pat) -- table.map({0,1,2,3,4,5,6,7}, function(off) -- pat:update_frame(573, 1, off, { untech = 90 }) -- pat:update_frame(573, 1, off, { -- damage = 400, -- hit_ani_ground = 88, -- hit_ani_air = 88, -- proration = 900, -- launch_vector_y = -2450 -- }) -- end) -- table.map({0,1,2,3,4,5,6,7}, function(off) -- pat:update_frame(573, 3, off, { untech = 90 }) -- pat:update_frame(573, 3, off, { -- damage = 400, -- hit_ani_ground = 88, -- hit_ani_air = 88, -- proration = 900, -- launch_vector_y = -2450 -- }) -- end) -- table.map({0,1,2,3,4,5,6}, function(off) -- pat:update_frame(571, 2, off, { -- duration = 2, -- hit_ani_ground = 88, -- hit_ani_air = 88}) -- end) -- table.map({0,1,2,3,4,5,6}, function(off) -- pat:update_frame(573, 2, off, { -- damage = 500, -- duration = 2, -- hit_ani_ground = 88, -- hit_ani_air = 88}) -- end) table.map({571, 573}, function(idx) for off = 0, 7 do pat:update_frame(idx, 1, off, { untech = 9000 }) pat:update_frame(idx, 1, off, { damage = 350, hit_ani_ground = 77, hit_ani_air = 74, proration = 980, launch_vector_y = 1500, }) end end) table.map({571, 573}, function(idx) for off = 0, 7 do pat:update_frame(idx, 3, off, { untech = 9000 }) pat:update_frame(idx, 3, off, { damage = 350, hit_ani_ground = 77, hit_ani_air = 74, proration = 980, launch_vector_y = 1500, }) end end) table.map({0,1,2,3,4,5,6,7}, function(off) pat:update_frame(572, 1, off, { untech = 9000 }) pat:update_frame(572, 1, off, { hit_ani_air = 88, proration = 980, }) end) table.map({0,1,2,3,4,5,6,7}, function(off) pat:update_frame(572, 3, off, { untech = 9000 }) pat:update_frame(572, 3, off, { hit_ani_air = 88, proration = 980, }) end) table.map({1,3}, function(seq) pat:update_frame(572, seq, 0, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 1, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 2, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 3, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 4, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 5, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 6, { launch_vector_x = 600, launch_vector_y = -550, }) pat:update_frame(572, seq, 7, { launch_vector_x = 600, launch_vector_y = -550, }) end) end function mods.fix_snowman(pat) for idx = 6,8 do for seq = 520, 521 do pat:update_frame(seq, 0, idx, { duration = 1, }) end end -- for idx = 0,8 do -- for seq = 520, 521 do -- pat:update_frame(seq, 2, idx, { -- duration = 2, -- }) -- end -- end -- for idx = 0,6 do -- for seq = 520, 521 do -- pat:update_frame(seq, 3, idx, { -- duration = 2, -- }) -- end -- end end function mods.modify_j5a_untech(pat) for frame = 3, 4 do pat:update_frame(306, 0, frame, { untech = 30 }) end end function mods.modify_dial_a_untech(pat) for frame = 4, 5 do pat:update_frame(322, 0, 4, { untech = 6000 }) end end function mods.ice2cardhjc(pat) local function set_hjc(frame) set_fflag(frame, FF_MOTION_CANCEL + FF_CANCEL) end for frm = 0, 1 do pat:update_frame(600, 4, frm, set_hjc) end for frm = 0, 1 do -- pat:update_frame(600, 3, frm, set_hjc) end for seq = 5, 7 do pat:update_frame(850, seq, 0, { untech = 9999, launch_vector_y = 2000, hitstop_enemy = 20, blockstop_enemy = 20}) end end function mods.icekick(pat) pat:update_frame(603, 2, 3, { duration = 20 }) for frame = 0, 3 do pat:update_frame(603, 1, frame, { duration = 1 }) end for frame = 0, 3 do pat:update_frame(603, 3, frame, { damage = 200, proration = 990 }) end for frame = 0, 2 do pat:update_frame(603, 4, frame, { duration = 1 }) end for frame = 0, 3 do pat:update_frame(603, 5, frame, { damage = 200, proration = 990 }) end local function set_hjc(frame) set_fflag(frame, FF_CANCEL) end pat:get_sequence(603, 6):set_priority(0, 0) pat:get_sequence(603, 7):set_priority(0, 0) for frm = 0, 6 do pat:update_frame(603, 6, frm, set_hjc) end for frm = 0, 1 do pat:update_frame(603, 7, frm, set_hjc) end end function mods.modifyicespinrecovery(pat) for frm = 0, 8 do pat:update_frame(605, 4, frm, { duration = 1 }) end end function mods.freezingromans(pat) pat:update_frame(610, 0, 3, { duration = 20 }) for frame = 0, 5 do pat:update_frame(610, 1, frame, { duration = 1 }) end for frame = 0, 2 do pat:update_frame(610, 2, frame, { duration = 1 }) end for frame = 0, 2 do pat:update_frame(610, 0, 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(322, 0):set_priority(20, 30) pat:get_sequence(321, 0):set_priority(10, 20) end function mods.freezetouchme(pat) --560 pat:update_frame(825, 0, 0, { untech = 6000 }) for frame = 0, 3 do pat:update_frame(560, 0, frame, { duration = 3 }) pat:update_frame(562, 0, frame, { duration = 3 }) pat:update_frame(563, 0, frame, { duration = 3 }) end pat:update_frame(561, 0, 2, { duration = 6 }) end function mods.modifyj6a_untech(pat) pat:update_frame(307, 0, 6, { untech = 6000 }) pat:update_frame(307, 0, 7, { untech = 6000 }) pat:update_frame(309, 0, 1, { untech = 60 }) pat:update_frame(309, 0, 0, { untech = 60 }) end function mods.give66bskillcancel(pat) pat:get_sequence(408, 1):set_priority(50, 50) end function mods.addicekickreversal(pat) local function set_graze(frame) set_fflag(frame, FF_GRAZE) end local function set_invinc(frame) set_fflag(frame, FF_INVINC) end local function set_nograze(frame) unset_fflag(frame, FF_GRAZE) end pat:get_sequence(530, 3):set_priority(50, 9999) pat:get_sequence(530, 4):set_priority(50, 9999) pat:update_frame(530, 0, 0, { duration = 1 }) pat:update_frame(530, 0, 0, set_invinc) pat:update_frame(531, 0, 0, { duration = 1 }) pat:update_frame(531, 0, 0, set_graze) for frame = 0, 3 do pat:update_frame(530, 1, frame, { duration = 3 }) pat:update_frame(531, 1, frame, { duration = 1 }) pat:update_frame(530, 1, frame, set_invinc) pat:update_frame(531, 1, frame, set_graze) end for frame = 0, 3 do pat:update_frame(530, 2, frame, { duration = 1 }) pat:update_frame(531, 2, frame, { duration = 1 }) pat:update_frame(530, 2, frame, set_invinc) pat:update_frame(531, 2, frame, set_graze) end for frame = 0, 3 do pat:update_frame(530, 3, frame, set_nograze) pat:update_frame(530, 3, frame, { untech = 6000 }) pat:update_frame(531, 3, frame, { untech = 6000 }) end pat:update_frame(530, 4, 1, { duration = 25 }) pat:update_frame(531, 4, 1, { duration = 25 }) end function mods.modifyd236untech(pat) pat:update_frame(810, 5, 0, { untech = 6000 }) pat:update_frame(810, 6, 0, { untech = 6000 }) end function mods.modifyiceroll(pat) pat:update_frame(815, 5, 0, { untech = 6000 }) pat:update_frame(815, 6, 0, { untech = 6000 }) pat:update_frame(815, 7, 0, { untech = 6000 }) pat:update_frame(816, 5, 0, { untech = 6000 }) pat:update_frame(816, 6, 0, { untech = 6000 }) pat:update_frame(816, 7, 0, { untech = 6000 }) pat:update_frame(817, 5, 0, { untech = 6000 }) pat:update_frame(817, 6, 0, { untech = 6000 }) pat:update_frame(817, 7, 0, { untech = 6000 }) end function mods.modifylaser(pat) pat:update_frame(863, 0, 0, { untech = 6000 }) for frame = 0, 1 do pat:update_frame(863, 1, frame, { untech = 6000 }) pat:update_frame(863, 2, frame, { untech = 6000 }) end end function mods.modify6b(pat) pat:update_frame(801, 0, 0, { hitstop_self = 2, proration = 990 }) pat:update_frame(401, 0, 2, { duration = 4 }) pat:update_frame(405, 0, 2, { duration = 3 }) -- pat:update_frame(800, 0, 1, { hitstop_enemy = 10 }) end function mods.modifycrusher(pat) pat:update_frame(858,0,1, {hit_ani_air = 88, hit_ani_ground = 88, launch_vector_y = -3500}) end function mods.modify5c(pat) pat:update_frame(805, 0, 0, { untech = 6000, damage = 250}) end function mods.modifyperfect(pat) for frame = 0, 1 do pat:update_frame(854, 4, frame, function(frame) frame.untech = 6000 frame.proration = 1000 end) pat:update_frame(854, 6, frame, function(frame) frame.untech = 6000 frame.proration = 1000 end) pat:update_frame(854, 15, frame, function(frame) frame.untech = 6000 frame.proration = 1000 end) 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 for idx = 0, 1 do local src = pat:get_frame(525, 0, idx) local boxes = pat:get_frame(525, 0, idx).hurtbox pat:update_frame(322, 0, idx, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 2, 3 do local src = pat:get_frame(525, 0, 2) local boxes = pat:get_frame(525, 0, 2).hurtbox pat:update_frame(322, 0, idx, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 4, 5 do local src = pat:get_frame(525, 1, (idx - 4)) local boxes = pat:get_frame(525, 1, (idx - 4)).hurtbox local box = pat:get_frame(322, 0, 4).attackbox pat:update_frame(322, 0, idx, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) frame.attackbox = table.map(box, table.shallow_copy) frame.untech = 6000 frame.hit_sfx = 4 end) end for idx = 6, 7 do local src = pat:get_frame(788, 6, (idx - 6)) local boxes = pat:get_frame(525, 3, 0).hurtbox pat:update_frame(322, 0, idx, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 8, 9 do local src = pat:get_frame(788, 6, (idx - 8)) local boxes = pat:get_frame(525, 3, 1).hurtbox pat:update_frame(322, 0, idx, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end local src = pat:get_frame(788, 6, 0) local boxes = pat:get_frame(525, 3, 1).hurtbox pat:update_frame(322, 0, 10, function(frame) -- frame.attackbox[2] = { x1= 30, y1= 30, x2= 40, y2= 50 } -- frame.attackbox[3] = { x1= 10, y1= 10, x2= 60, y2= 90 } copy_sprite(frame, src) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end function mods.modifyf5a(pat) for frame = 6, 9 do pat:update_frame(301, 0, frame, { hitstop_enemy = 15}) end for frame = 6, 9 do pat:update_frame(321, 0, frame, { hitstop_enemy = 15}) end end function mods.modify3a(pat) for frame = 6, 8 do pat:update_frame(304, 0, frame, { launch_vector_y = 1500, launch_vector_x = 1000 }) end for frame = 2, 6 do pat:update_frame(418, 0, frame, { launch_vector_y = 1500, launch_vector_x = 1000 }) end end function mods.modifytrap(pat) for seq = 5, 7 do pat:update_frame(811, seq, 0, { launch_vector_y = 2500, launch_vector_x = 300 }) 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, 3 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, 10 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 1 do local src = pat:get_frame(788, 5, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 2, 3 do local src = pat:get_frame(788, 5, idx - 2) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 4, 5 do local src = pat:get_frame(788, 5, idx - 4) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 6, 7 do local src = pat:get_frame(788, 5, idx - 6) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration end) end for idx = 8, 9 do local src = pat:get_frame(788, 5, 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(788, 2, 0) pat:update_frame(0, 0, pat:get_frame_count(0, 0) - 1, function(frame) copy_sprite(frame, src) frame.duration = 36 end) end return function(pat) mods.maketaunt(pat) mods.modifytrap(pat) mods.modify3a(pat) mods.modifyf5a(pat) mods.modifynew5aaaa(pat) mods.modifyperfect(pat) mods.modify5c(pat) mods.modify6b(pat) mods.modifycrusher(pat) -- -- -- mods.global(pat) mods.hit_parameters_b(pat) mods.modifylaser(pat) mods.modifyiceroll(pat) mods.modifyd236untech(pat) -- mods.addicekickreversal(pat) mods.give66bskillcancel(pat) mods.freezetouchme(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.freezingromans(pat) mods.modifyicespinrecovery(pat) mods.icekick(pat) mods.modify_dial_a_untech(pat) mods.add_icecar_knockdown(pat) mods.ice2cardhjc(pat) -- mods.fix_icesword(pat) mods.fix_snowman(pat) mods.modify_j5a_untech(pat) mods.modifyj6a_untech(pat) end