handleAct (Cast sname l) =
    case Spell.target (Map.findWithDefault Spell.fizzle sname Spell.every) of
        Spell.None eff -> cast eff
        Spell.Location eff -> cast (eff l)
        Spell.Actor eff -> do
            occupier <- listToMaybe . living (\a -> a ^. loc == l) <$> level
            case occupier of
                Just mon -> cast (eff mon)
                Nothing -> cast Spell.fizzleEffect
handleAct (Cast sname l) =
    case Spell.target (Map.findWithDefault Spell.fizzle sname Spell.every) of
        Spell.None eff -> cast eff
        Spell.Location eff -> cast (eff l)
        Spell.Actor eff -> do
            occupier <- listToMaybe . living (\a -> a ^. loc == l) <$> level
            case occupier of
                Just mon -> cast (eff mon)
                Nothing -> cast Spell.fizzleEffect
handleAct (Cast sname l) =
    case Spell.target (Map.findWithDefault Spell.fizzle sname Spell.every) of
        Spell.None eff -> cast eff
        Spell.Location eff -> cast (eff l)
        Spell.Actor eff -> do
            occupier <- listToMaybe . living (\a -> a ^. loc == l) <$> level
            case occupier of
                Just mon -> cast (eff mon)
                Nothing -> cast Spell.fizzleEffect