freeslot("S_MULLIGAN","S_MULLIGAN2","MT_MULLIGAN", "S_MULLIGANM") states[S_MULLIGAN] = { sprite = SPR_LHRT, frame = A | FF_FULLBRIGHT, tics = 50, var1 = 0, var2 = 50, } states[S_MULLIGAN2] = { sprite = SPR_RNGS, frame = A | FF_FULLBRIGHT, tics = 50, var1 = 0, var2 = 50, } states[S_MULLIGANM] = { var1 = 0, var2 = 0, action = A_CapeChase, } mobjinfo[MT_MULLIGAN] = { spawnstate = S_MULLIGANM, radius = 5*FRACUNIT, height = 30*FRACUNIT, mass = 0, flags = MF_NOGRAVITY } local mulligan = 0 local function Mulligan(player) if mulligan == 1 then for i=1,#player.powers do player.powers[i-1] = 0 end player.powers[pw_flashing] = 105 player.pflags = player.pflags & ~PF_INVIS player.mo.state = S_PLAY_SUPER_TRANS1 mulligan = nil S_StartSound(player.mo, sfx_s227, player) player.mulliganIcon = P_SpawnMobj(player.mo.x,player.mo.y,player.mo.z+100*FRACUNIT,MT_MULLIGAN) player.mulliganIcon.target = player.mo player.mulliganIcon.state = S_MULLIGAN else player.mulligan = false mulligan = nil P_DamageMobj(player.mo, nil, nil, 1, DMG_INSTAKILL) player.mulliganIcon = P_SpawnMobj(player.mo.x,player.mo.y,player.mo.z+100*FRACUNIT,MT_MULLIGAN) player.mulliganIcon.target = player.mo player.mulliganIcon.state = S_MULLIGAN2 end end addHook("MobjDamage",function(target, inflictor, source, damage, damagetype) if multiplayer and not G_IsSpecialStage(gamemap) and G_GametypeUsesLives() then if damagetype ~= DMG_DEATHPIT and damagetype ~= DMG_CRUSHED then if target.skin ~= "mario" and target.skin ~= "luigi" then if target.player.rings == 0 and target.player.powers[pw_shield] == SH_NONE then P_DoPlayerPain(target.player, source, inflictor) mulligan = P_RandomRange(1, 2) Mulligan(target.player) return true end else if target.player.mariohealth == 1 then P_DoPlayerPain(target.player, source, inflictor) mulligan = P_RandomRange(1, 2) Mulligan(target.player) return true end end end end end, MT_PLAYER)