addHook("PlayerSpawn", function(player) player.airGauge=1000 player.fallcharge=0 player.funnytime=0 local ran = pcall(function(player) local tmp=player.tweakActive end) if not ran player.tweakActive=true end end) --Air Gauge Display hud.add(function(v,player) if player.mo.skin=="metalsonic" and player.tweakActive if player.airGauge<0 v.numcolor=V_REDMAP v.barcolor=20 elseif player.airGauge<300 v.numcolor=V_ORANGEMAP v.barcolor=53 elseif player.airGauge<600 v.numcolor=V_YELLOWMAP v.barcolor=72 else v.numcolor=V_GREENMAP v.barcolor=112 end v.drawString(30,160,"MODE: HOVER",V_REDMAP,"left") v.drawString(24,150,"AIR: "..player.airGauge/10,v.numcolor,"left") v.drawFill(28,148-abs(player.airGauge/12),4,abs(player.airGauge/12),v.barcolor) elseif player.mo.skin=="metalsonic" v.drawString(30,160,"MODE: FLOAT",V_BLUEMAP,"left") v.drawString(24,150,"AIR: "..player.airGauge/10,V_GRAYMAP,"left",V_50TRANS) v.drawFill(28,148-abs(player.airGauge/13),4,abs(player.airGauge/13),20,V_50TRANS) end end) --Forces player to stop hovering when using Blast Down addHook("PreThinkFrame",function() for player in players.iterate do if player.mo.skin=="metalsonic" and ((player.fallcharge>=138) or (player.fallcharge>0 and not (player.cmd.buttons & BT_USE))) then if player.cmd.buttons & BT_JUMP then player.cmd.buttons=$1 &! BT_JUMP end end end end) --Rewards player for fastfalling into enemies addHook("ShouldDamage",function(target,inflictor) if inflictor.skin=="metalsonic" and inflictor.player.fastfalling then inflictor.color=inflictor.player.skincolor inflictor.player.fastfalling=false inflictor.player.charability=CA_SLOWFALL inflictor.player.airGauge=$1+200 end end) addHook("ThinkFrame", function() for player in players.iterate do if player.cmd.buttons & BT_CUSTOM1 then if P_IsObjectOnGround(player.mo) and not player.c1pressed then player.tweakActive=not $1 end player.c1pressed=true else player.c1pressed=false end if player.tweakActive and player.mo.skin=="metalsonic" if player.airGauge<-999 then P_KillMobj(player.mo) player.airGauge=-990 end if P_IsObjectOnGround(player.mo) player.mo.color=player.skincolor player.fastfalling=false player.charability=CA_SLOWFALL player.fallcharge=0 --slow air refill below zero if player.airGauge<0 player.airGauge=$1+3 if player.funnytime>0 player.airGauge=$1+2 end if player.speed>=30*FRACUNIT player.airGauge=$1+2 end --normal air refill above zero elseif player.airGauge<1000 player.airGauge=$1+3 if player.funnytime>0 player.airGauge=$1+4 end if player.speed>=30*FRACUNIT player.airGauge=$1+4 end end end if player.funnytime>0 player.funnytime=$1-1 end --Hover Up if player.secondjump>0 and player.panim & PA_ABILITY|PA_DASH|PA_RUN and not player.fastfalling if player.airGauge>0 if player.mo.momz*P_MobjFlip(player.mo)<3*FRACUNIT player.mo.momz=$1+(4*(FRACUNIT/3)*P_MobjFlip(player.mo)) player.airGauge=$1-26 end else player.airGauge=$1-2 end end --Blastdown if player.cmd.buttons & BT_USE and not (P_IsObjectOnGround(player.mo) or player.fastfalling or P_PlayerInPain(player)) player.fallcharge=$1+1 end --level 3 if player.fallcharge==140 or (player.fallcharge>=90 and not (player.cmd.buttons & BT_USE)) player.fastfalling=true player.fallcharge=0 player.mo.momx,player.mo.momy=$1/5,$2/5 player.charability=CA_NONE player.airGauge=1000 player.mo.state=25 player.mo.momz=-80*FRACUNIT*P_MobjFlip(player.mo) S_StartSound(player.mo,93) P_SpawnMobjFromMobj(player.mo,0,0,0,MT_BOSSEXPLODE).scale=FRACUNIT*5 --level 2 elseif player.fallcharge>35 and not (player.cmd.buttons & BT_USE) player.fastfalling=true player.fallcharge=0 player.charability=CA_NONE player.airGauge=player.airGauge-600 player.funnytime=100 player.mo.state=25 player.mo.momz=-40*FRACUNIT*P_MobjFlip(player.mo) S_StartSound(player.mo,96) local ball=P_SpawnMobjFromMobj(player.mo,0,0,0,MT_BIGFIREBAR) ball.fuse=5 ball.flags=MF_SCENERY|MF_NOGRAVITY --level 1 elseif player.fallcharge > 0 and not (player.cmd.buttons & BT_USE) player.fastfalling=true player.airGauge=player.airGauge-300 player.funnytime=50 player.fallcharge=0 player.charability=CA_NONE player.mo.state=25 player.mo.momz=$1-20*FRACUNIT*P_MobjFlip(player.mo) S_StartSound(player.mo,96) local ball = P_SpawnMobjFromMobj(player.mo,0,0,0,MT_SMALLFIREBAR) ball.fuse=3 ball.flags=MF_SCENERY|MF_NOGRAVITY end if player.fallcharge==1 or player.fallcharge==35 or player.fallcharge==60 or player.fallcharge==75 or player.fallcharge==84 S_StartSound(player.mo,99,player) player.mo.color=SKINCOLOR_ICY elseif player.fallcharge<90 player.mo.color=player.skincolor end if player.fallcharge==90 S_StartSound(player.mo,100) player.mo.color=SKINCOLOR_ICY end elseif player.mo.skin=="metalsonic" player.charability=CA_FLOAT end end end)