local mods = {} function mods.hitbox_j2a(pat) pat:update_frame(306, 0, 3, { duration = 3}) pat:update_frame(308, 1, 0, function(frame) frame.attackbox[1].x2 = 128 frame.attackbox[2].x2 = 144 frame.hit_ani_ground = 88 frame.hit_ani_air = 88 frame.proration = 780 frame.hitstop_self = 5 end) end function mods.modify_DP(pat) pat:update_frame(520, 1, 1, { untech = 6000 }) pat:update_frame(520, 4, 1, { untech = 6000 }) pat:update_frame(520, 5, 1, { untech = 6000 }) pat:update_frame(521, 1, 1, { untech = 6000 }) end function mods.modify_dial_Abounce(pat) pat:update_frame(323, 0, 4, { launch_vector_x = 1000 }) end function mods.modify_j6a_untech(pat) pat:update_frame(307, 0, 4, { untech = 6000, damage = 750 }) pat:update_frame(309, 0, 4, { untech = 60 }) for frame = 0, 1 do pat:update_frame(899, 3, frame, { untech = 6000, damage = 600 }) pat:update_frame(899, 8, frame, { untech = 6000 }) end end function mods.modify_headslash(pat) for move = 550, 551 do pat:update_frame(move, 4, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) pat:update_frame(move, 5, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) pat:update_frame(move, 9, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) pat:update_frame(move, 10, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) end for move = 552, 553 do pat:update_frame(move, 4, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) pat:update_frame(move, 8, 0, { hit_ani_ground = 88, hit_ani_air = 88, blockstop_enemy = 2, proration = 730 }) for frame = 0, 3 do pat:update_frame(550, 0, frame, { duration = 2 }) pat:update_frame(551, 0, frame, { duration = 2 }) end pat:update_frame(552, 0, 0, { duration = 12}) pat:update_frame(553, 0, 0, { duration = 12}) end end function mods.modify_greenslash_cancel(pat) for idx = 0, 3 do pat:update_frame(505, 0, idx, { duration = 2 }) end for idx = 0, 3 do pat:update_frame(506, 0, idx, { duration = 2 }) end pat:update_frame(505, 0, 7, { duration = 6 }) pat:update_frame(506, 0, 7, { duration = 6 }) pat:update_frame(507, 0, 8, { duration = 6 }) pat:update_frame(508, 0, 8, { duration = 6 }) for idx = 0, 7 do pat:update_frame(507, 0, idx, { duration = 2 }) pat:update_frame(508, 0, idx, { duration = 2 }) end end function mods.greenslash1_damage_parameters(pat, damage, proration, limit) for off = 2, 8 do pat:update_frame(815, 0, off, function(frame) frame.damage = damage frame.proration = proration frame.limit = limit frame.launch_vector_y = 1800 frame.untech = 60 -- show_message_box(table.tostring(frame)) end) end table.map({2,3,4,5,6,7,8}, function(off) pat:update_frame(815, 3, off, { damage = damage, proration = proration, limit = limit, launch_vector_y = 1800, untech = 60 }) end) table.map({0,1,2,3,4,5,6,7,8,9,10}, function(off) pat:update_frame(815, 1, off, { damage = damage, proration = proration, limit = limit, launch_vector_y = 1800, untech = 60 }) end) table.map({0,1,2,3,4,5,6,7,8,9,10}, function(off) pat:update_frame(815, 4, off, { damage = damage, proration = proration, limit = limit, launch_vector_y = 1800, untech = 60 }) end) end function mods.pinkslashdash_parameters(pat, damage, proration, limit) table.map({0,1,2}, function(off) for cmd = 545, 546 do pat:update_frame(cmd, 0, off, { duration = 3, }) end end) end function mods.modify_j5a_untech(pat) for frame = 4, 6 do pat:update_frame(306, 0, frame, { untech = 30, damage = 400 }) 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(322, 0):set_priority(20, 30) pat:get_sequence(321, 0):set_priority(10, 20) pat:get_sequence(322, 0):set_priority(10, 20) pat:get_sequence(323, 0):set_priority(20, 30) end function mods.damagingd236(pat) -- pat:update_frame(810, 0, 5, function(frame) -- frame.damage = 600 -- frame.blockstop_enemy = 5 -- frame.hit_sfx = 9 -- set_aflag(frame, AF_HIGHBLOCK_OK) -- set_aflag(frame, AF_LOWBLOCK_OK) -- set_aflag(frame, AF_AIR_BLOCKABLE) -- frame.attackbox[1] = pat:get_frame(810, 0, 5).hurtbox[1] -- frame.attackbox[2] = pat:get_frame(810, 0, 5).hurtbox[2] -- frame.attackbox[3] = pat:get_frame(810, 0, 5).hurtbox[3] -- end) pat:update_frame(810, 1, 5, function(frame) frame.damage = 600 frame.hit_sfx = 9 frame.blockstop_enemy = 5 set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) set_aflag(frame, AF_AIR_BLOCKABLE) frame.attackbox[1] = pat:get_frame(810, 1, 5).hurtbox[1] frame.attackbox[2] = pat:get_frame(810, 1, 5).hurtbox[2] frame.attackbox[3] = pat:get_frame(810, 1, 5).hurtbox[3] end) pat:update_frame(810, 2, 5, function(frame) frame.damage = 600 frame.hit_sfx = 9 frame.blockstop_enemy = 5 set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) set_aflag(frame, AF_AIR_BLOCKABLE) frame.attackbox[1] = pat:get_frame(810, 2, 5).hurtbox[1] frame.attackbox[2] = pat:get_frame(810, 2, 5).hurtbox[2] frame.attackbox[3] = pat:get_frame(810, 2, 5).hurtbox[3] end) pat:update_frame(810, 3, 5, function(frame) -- show_message_box(table.tostring(frame)) frame.damage = 600 frame.blockstop_enemy = 5 frame.hit_sfx = 9 set_aflag(frame, AF_HIGHBLOCK_OK) set_aflag(frame, AF_LOWBLOCK_OK) set_aflag(frame, AF_AIR_BLOCKABLE) frame.attackbox[1] = pat:get_frame(810, 3, 5).hurtbox[1] frame.attackbox[2] = pat:get_frame(810, 3, 5).hurtbox[2] frame.attackbox[3] = pat:get_frame(810, 3, 5).hurtbox[3] end) end function mods.intolerant(pat) pat:update_frame(525, 0, 0, { duration = 4 }) pat:update_frame(526, 0, 0, { duration = 4 }) pat:update_frame(529, 1, 1, { combo_correction = 2, hit_ani_ground = 74, hit_ani_air = 74, damage = 1500, launch_vector_x = 3000, launch_vector_y = 1800, proration = 950, untech = 6000 }) end function mods.d6aa_combo(pat) pat:update_frame(305, 1, 0, { duration = 1 }) pat:update_frame(305, 1, 1, { duration = 1 }) pat:update_frame(305, 1, 2, { duration = 1 }) end function mods.counter_hit_ani(pat) for frame = 6, 9 do pat:update_frame(530, 0, frame, { duration = 8 }) pat:update_frame(531, 0, frame, { duration = 8 }) end for frame = 0, 4 do pat:remove_frame(530, 0, 0) pat:remove_frame(531, 0, 0) 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(608, 0, frame, set_invinc) pat:update_frame(608, 0, frame, set_graze) end -- pat:update_frame(530, 1, 12, { hit_ani_ground = 88, hit_ani_air = 88, launch_vector_x = 500, launch_vector_y = -3000 }) -- pat:update_frame(531, 1, 12, { hit_ani_ground = 88, hit_ani_air = 88, launch_vector_x = 500, launch_vector_y = -3000 }) end function mods.j2a_skillcancel(pat) for frame = 1, 2 do pat:get_sequence(308, frame):set_priority(10, 50) end end function mods.petalrunpast(pat) for st = 0, 1 do pat:update_frame(856, 4, 0, function(frame) frame.launch_vector_x = -2000 frame.untech = 6000 frame.damage = 700 end) end pat:update_frame(606, 0, 8, function(frame) -- frame.duration = 30 end) end function mods.modify5clones(pat) for frame = 0, 4 do pat:update_frame(605, 0, frame, { duration = 1 }) end for frame = 0, 3 do pat:update_frame(605, 2, frame, { duration = 1 }) end for frame = 0, 2 do pat:update_frame(605, 3, frame, { duration = 1 }) end pat:get_sequence(605, 3):set_priority(0, 0) for frame = 0, 2 do pat:update_frame(602, 3, frame, { duration = 1 }) end pat:get_sequence(602, 3):set_priority(0, 0) end function mods.modifywickedsoul(pat) for frame = 0, 5 do pat:update_frame(565, 0, frame, { duration = 1}) end end function mods.modify66b(pat) for frame = 3, 6 do pat:update_frame(408, 0, frame, function(frame) set_fflag(frame, FF_GRAZE) end) end end function mods.modifyhalfbody(pat) for frame = 0, 1 do pat:update_frame(823, 0, frame, { untech = 60, hitstop_enemy = 10, hit_ani_ground = 0, damage = 400 }) pat:update_frame(823, 5, frame, { untech = 60, hitstop_enemy = 10, hit_ani_ground = 0, damage = 400 }) end end function mods.modifygreensword(pat) for frame = 11, 16 do pat:update_frame(601, 0, frame, { untech = 6000 }) end for frame = 11, 16 do pat:update_frame(604, 0, frame, { damage = 1000 }) end end function mods.modify5c(pat) pat:update_frame(800, 1, 0, { damage = 150, hitstop_enemy = 15, untech = 30, proration = 990}) pat:update_frame(801, 0, 0, { damage = 100, hitstop_enemy = 20, hit_ani_air = 77, untech = 30, proration = 990}) end function mods.modify4pillar(pat) for frame = 0, 6 do pat:update_frame(857, 0, frame, { untech = 9999 }) end for frame = 0, 5 do pat:update_frame(857, 1, frame, { untech = 9999 }) end end function mods.modifynew3a(pat) pat:update_frame(304, 0, 7, function(frame) frame.attackbox[2] = { x1= 100, y1= -207, x2=180, y2= -69 } frame.hit_ani_ground = 74 frame.hit_ani_air = 74 frame.launch_vector_y = 1750 frame.hit_sfx = 8 -- set_aflag(frame, AF_HIGHBLOCK_OK) -- unset_aflag(frame, AF_LOWBLOCK_OK) frame.launch_vector_x = 800 end) pat:update_frame(304, 1, 3, function(frame) frame.attackbox[2] = { x1= 100, y1= -207, x2=180, y2= -69 } frame.hit_ani_ground = 74 frame.hit_ani_air = 74 frame.launch_vector_y = 2250 frame.hit_sfx = 8 frame.blockstop_self = 3 frame.launch_vector_x = 800 -- set_aflag(frame, AF_HIGHBLOCK_OK) -- unset_aflag(frame, AF_LOWBLOCK_OK) end) 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 pat:update_frame(402, 0, 5, function(frame) frame.hurtbox[2] = pat:get_frame(304, 1, 3).attackbox[1] end) pat:split_frame(402, 0, 0, 1, 2) pat:split_frame(402, 0, 1, 1, 2) pat:split_frame(402, 0, 2, 1, 2) for frame = 0, 2 do pat:update_frame(304, 0, frame, { duration = 1 }) end for idx = 0, 12 do local src = pat:get_frame(402, 0, idx) local boxes = pat:get_frame(402, 0, idx).hurtbox pat:update_frame(304, 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) set_fflag(frame, FF_CROUCHING) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 0, 8 do local boxes = pat:get_frame(402, 0, (idx + 4)).hurtbox local src = pat:get_frame(402, 0, ( idx + 4 )) pat:update_frame(304, 1, idx, function(frame) -- frame.hurtbox = src.hurtbox -- frame.attackbox = src.attackbox copy_sprite(frame, src) set_fflag(frame, FF_CROUCHING) frame.hurtbox = table.map(boxes, table.shallow_copy) end) end for idx = 0, 11 do local src = pat:get_frame(603, 3, 0) pat:update_frame(848, 1, idx, function(frame) -- frame.hurtbox = src.hurtbox -- frame.attackbox = src.attackbox copy_sprite(frame, src) end) end for frame = 9, 12 do pat:update_frame(304, 0, frame, { duration = 6 }) end for frame = 5, 8 do pat:update_frame(304, 1, frame, { duration = 6 }) end pat:remove_frame(402, 0, 1) pat:update_frame(402, 0, 0, { duration = 3 }) pat:remove_frame(402, 0, 2) pat:update_frame(402, 0, 1, { duration = 3 }) pat:remove_frame(402, 0, 3) pat:update_frame(402, 0, 2, { duration = 3 }) pat:update_frame(402, 0, 5, remove_last_hurtbox) 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, 9 do pat:split_frame(0, 0, num - 1, oframe, 1) end for idx = 0, 9 do local src = pat:get_frame(710, 1, idx) pat:update_frame(0, 0, num + idx, function(frame) copy_sprite(frame, src) frame.duration = src.duration + 1 end) pat:update_frame(0, 0, num + 6, function(frame) frame.duration = 20 end) end end function mods.rekka(pat) for move = 540, 541 do pat:update_frame(move, 2, 8, { hit_ani_ground = 88, hit_ani_air = 88, launch_vector_y = -2000 }) pat:update_frame(move, 6, 8, { hit_ani_ground = 88, hit_ani_air = 88, launch_vector_y = -2000 }) pat:update_frame(move, 7, 0, { hit_ani_ground = 88, hit_ani_air = 88, launch_vector_y = -2000 }) end end return function(pat) mods.rekka(pat) mods.maketaunt(pat) mods.modifynew3a(pat) mods.modify4pillar(pat) mods.modify5c(pat) mods.modifyhalfbody(pat) mods.modifygreensword(pat) -- mods.modify66b(pat) -- mods.modifywickedsoul(pat) -- mods.global(pat) mods.modify5clones(pat) mods.petalrunpast(pat) mods.j2a_skillcancel(pat) mods.counter_hit_ani(pat) mods.d6aa_combo(pat) mods.intolerant(pat) mods.damagingd236(pat) mods.modify_j6a_untech(pat) mods.modify_dial_Abounce(pat) mods.modify_DP(pat) mods.modify_headslash(pat) if config:get("global", "4A/2A", "melty-style jabs") then mods.cancel(pat) end mods.modify_j5a_untech(pat) mods.hitbox_j2a(pat) mods.modify_greenslash_cancel(pat) mods.greenslash1_damage_parameters(pat, 800, 900, 30) mods.pinkslashdash_parameters(pat, 1300, 850, 0) end