PWADLlocal s = {} s[S_PLAY_MELEE_LANDING] = true addHook("ThinkFrame", function(mo) for player in players.iterate() if player.jumpfactor == skins[player.mo.skin].jumpfactor and (player.mo and player.mo.skin == "amy") player.jumpfactor = $ - 27/200 end end end) addHook("PlayerThink", function(player) local mo = player.mo -- Less hassle player.charflags = $|SF_SUPER mo.hasbounced = true or false if mo.state != S_PLAY_FIRE mo.hasbounced = false end mo.hammertime = $ or 0 --Just in case, if $ exists then use $ (current number), else use 0 (will be a number but wont work with "if mo.hammertime") if mo.state != S_PLAY_MELEE_LANDING mo.hammertime = 2 elseif mo.hammertime --mo.hammertime must exist! mo.hammertime = $-1 end if not(mo and mo.skin == "amy") or P_PlayerInPain(player) or mo.state == S_PLAY_DEAD or player.powers[pw_carry] or (player.mo.eflags & MFE_SPRUNG) mo.hammerjumped = 0 -- Discontinue animation, if currently happening mo.hasbounced = 0 return -- Exits the script if not the correct character end -- Spin and fall if not (player.mo.eflags & MFE_VERTICALFLIP) and mo.hammerjumped == 1 and mo.momz >= 16 -- Rising mo.hammerjumped = 2 player.panim = PA_ROLL mo.state = S_PLAY_ROLL elseif (player.mo.eflags & MFE_VERTICALFLIP) and mo.hammerjumped == 1 and mo.momz <= -16 -- Rising in Reverse mo.hammerjumped = 2 player.panim = PA_ROLL mo.state = S_PLAY_ROLL elseif not (player.mo.eflags & MFE_VERTICALFLIP) and mo.hammerjumped != 0 and (mo.momz < 0 or mo.state != S_PLAY_ROLL) -- Falling player.panim = PA_FALL mo.state = S_PLAY_FALL player.pflags = $|PF_NOJUMPDAMAGE -- No longer hurt enemies mo.hammerjumped = 0 -- Discontinue the animation elseif (player.mo.eflags & MFE_VERTICALFLIP) and mo.hammerjumped != 0 and (mo.momz > 0 or mo.state != S_PLAY_ROLL) -- Falling player.panim = PA_FALL mo.state = S_PLAY_FALL player.pflags = $|PF_NOJUMPDAMAGE -- No longer hurt enemies mo.hammerjumped = 0 -- Discontinue the animation end -- Do extra stuff if we're super if player.powers[pw_super] and mo.state == S_PLAY_MELEE_LANDING and P_IsObjectOnGround(mo) and mo.hammertime and max(mo.hammertime,0) or player.powers[pw_super] and mo.hasbounced == true P_Earthquake(mo,mo, 320*FRACUNIT) S_StartSound(mo, sfx_s3k49) --P_FlashPal(player, PAL_WHITE, 8) end if mo.state == S_PLAY_MELEE_LANDING and P_IsObjectOnGround(mo) and mo.hammertime and max(mo.hammertime,0) or mo.hasbounced == true end if player.exiting or (player.pflags & PF_THOKKED) or player.gotflagdebuff == true or not(player.cmd.buttons & BT_JUMP) or not P_IsObjectOnGround(mo) or s[mo.state] != true or not (mo.hammertime and max(mo.hammertime,0)) return -- All code after this is for performing the action end -- Play sfx --S_StartSound(mo, sfx_jump) -- Change state (SKIP) -- mo.state = S_PLAY_MELEE_LANDING -- Add flags player.pflags = $|PF_JUMPED|PF_SPINNING|PF_THOKKED -- Define our multipliers for thrust local waterfactor = mo.eflags & MFE_UNDERWATER and 6*FRACUNIT/10 or FRACUNIT local superfactor = player.powers[pw_super] and 5 or 4 --local jumpfactor = (FixedMul(mo.scale, player.jumpfactor * 44/3)) -- Define our final thrust amount local zthrust = 16 * superfactor * waterfactor / 4 -- superfactor / 4 will give us either 125% or 100%. --P_DoJump(player, false) P_SetObjectMomZ(mo, zthrust, true) mo.hammerjumped = 1 end) addHook("PostThinkFrame", do for player in players.iterate() do player.buttonslast = player.cmd.buttons end end) //Shield ability regulation addHook("ShieldSpecial", function(player) if player.mo.skin == "amy" if not (player.cmd.buttons & BT_CUSTOM1) then return true end end end) addHook("PlayerThink", function(player) -- the hook local mo = player.mo -- again if (mo and mo.skin == "amy") and not player.exiting and not P_IsObjectOnGround(mo) -- if Amy and not exiting and not on ground if (mo.state == S_PLAY_SPRING or mo.state == S_PLAY_FALL) and mo.hammerjumped == 0 -- if states are true and if amy has not hammer jumped if not (player.pflags & (PF_JUMPED|PF_STARTJUMP)) -- if the player currently has not jumped player.pflags = $ | PF_JUMPED|PF_NOJUMPDAMAGE -- assign it, so that she can use twinspin... and no jump damage end end end end) -- No More Air Walking -- Many Minor Tweaks addHook("ThinkFrame", function() for player in players.iterate do if not(P_IsObjectOnGround(player.mo)) and (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN) and not player.powers[pw_carry] then player.mo.state = S_PLAY_FALL end end end)Character 4 Status = 0 SkinName = amy DisplayName = Amy Rose TagOutlineColor = SKINCOLOR_YELLOW Status = 2 PlayerText = ^1Amy^0's Piko Piko Hammer is capable of breaking many walls, floors, and even spikes! ^1Ability:^0 Hammer Attack Press spin while grounded to swing her hammer. Double jump to swing it midair. ^1Ability:^0 Hammer Jump Use her Hammer Attack and jump to go flying into the air. ^1Tip:^0 Custom 1 + Spin to use Shield Abilities. # oLUA_RBHJ{ÑSOC_AMY