if not solchars rawset(_G, "solchars", {}) end solchars["sonic"] = {SKINCOLOR_SUPERRED1, 2} addHook("AbilitySpecial", function(player) if player.mo.skin == "sonic" and player.solchar.istransformed > 0 and not (player.pflags & PF_THOKKED) S_StartSound(player.mo, sfx_zoom) player.mo.state = S_PLAY_ROLL player.pflags = $|PF_THOKKED P_Thrust(player.mo, player.mo.angle, 40*FRACUNIT) end end) addHook("PlayerThink", function(player) if player.mo.skin == "sonic" and player.solchar.istransformed > 0 and (player.mo.state == S_PLAY_ROLL) and (P_IsObjectOnGround(player.mo) == true) P_ElementalFire(player) end if player.mo.skin == "sonic" and player.solchar.istransformed > 0 and player.mo.state == S_PLAY_WALK player.mo.state = S_PLAY_FLOAT end end) addHook("PlayerThink", function(player) if player.mo.skin == "sonic" and player.solchar.istransformed > 0 and (player.pflags & PF_THOKKED) A_BossScream(player.mo, 0, MT_FIREBALLTRAIL) end end) addHook("PlayerThink", function(player) if player.mo.skin == "sonic" and player.solchar.istransformed > 0 local treil3 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-20, 20) * FRACUNIT, P_RandomRange(-20, 20) * FRACUNIT, P_RandomRange(0, 50) * FRACUNIT, MT_FIREBALLTRAIL) treil3.color = SKINCOLOR_RED treil3.colorized = true treil3.scale = 1*FRACUNIT/2 treil3.destscale = 1*FRACUNIT/4 treil3.momz = 2*FRACUNIT local treil4 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-20, 20) * FRACUNIT, P_RandomRange(-20, 20) * FRACUNIT, P_RandomRange(0, 50) * FRACUNIT, MT_PUMATRAIL) treil4.color = SKINCOLOR_ORANGE treil4.colorized = true treil4.scale = 1*FRACUNIT/2 treil4.destscale = 1*FRACUNIT/4 treil4.momz = 2*FRACUNIT end end)