Desert Lands◨◧(platformer)(mobile friendly)▶▶(games)

Instructions: ▶▶▶▶▶INSTRUCTIONS◀◀◀◀◀\n◑spam the flag for no lag\n◑ arrow keys, WASD, or touch (mobile) to move.\n◑ wall jumping:✅\n◑ restart and skip buttons are in the bottom-left corner.\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n100 follower special!!-\nhttps://scratch.mit.edu/projects/414332705/\npart 2- https://scratch.mit.edu/projects/415678053/\n@benelem12 loved!!!!\nfor proof: https://scratch.mit.edu/projects/412370882/#comments-148607732\n@0014049 loved!!!!!\n@PopuIar loved!! \npls pls pls comment down what things you might like in part 2\nHope you enjoy this game. if you did, hit the\n ❤ and ⭐for a nice surprise.\n DO NOT ADVERTISE. Follow me @sidcrafter\ncan we get 100❤???\n▶▶▶▶▶ CREDITS◀◀◀◀◀\n@TimMcCool for love, fav detector and particle effect.\n@Hanzhe for cactus art\n@-Xaf- for music\n@sludge_test for the cool intro\n@mistaclean for player art\ncooltext.com\nRest by me @sidcrafter\nPart 2 will come out  soon!\n▶▶▶▶▶TAGS◀◀◀◀◀\n#platformer #game #timmccool #mistaclean #Hanzhe\n#sidcrafter #nothing #imaddingtoomannytags #karioton\n#satcrafter #boom\n\nThanx for playing.\n@sidcrafter\n                         \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlololololololololololololololololololololololololol.........   \n_:'D_

@Stage\n\nwhen flag clicked\nswitch backdrop to (backdrop2 v)\n\nwhen I receive [play game v]\nswitch backdrop to (backdrop1 v)\nforever\n    play sound [Plugged \(post mastering\) v] until done\nend\n\n@player\n\ndefine Fast\nrepeat (6)\n    if <touching (levels v)?> then\n        change y by (1)\n    end\nend\n\ndefine Y Collision\nrepeat until <not <touching (levels v)?>>\n    if <(y) > [0]> then\n        change y by (-1)\n    else\n        change y by (1)\n    end\nend\n\ndefine X Collision\nrepeat until <not <touching (levels v)?>>\n    if <(x) > [0]> then\n        change x by (-1)\n    else\n        change x by (1)\n    end\nend\n\nwhen I start as a clone\nswitch costume to (trail v)\nset size to (30) %\nset [brightness v] effect to (50)\nrepeat (10)\n    change [ghost v] effect by (5)\n    change size by (-1)\nend\ndelete this clone\n\nwhen I receive [play game v]\nforever\n    create clone of (_myself_ v)\nend\n\nwhen I receive [play game v]\nshow\nset [music v] to [0]\nset [level v] to [1]\ngo to x: (-213) y: (93)\nswitch costume to (right v)\nset [x v] to [0]\nset [y v] to [0]\nforever\n    change [y v] by (-1)\n    if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n        switch costume to (right v)\n        change [x v] by (.8)\n    end\n    if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n        switch costume to (left v)\n        change [x v] by (-.8)\n    end\n    set [x v] to ((x) * (0.9))\n    change x by (x)\n    if <touching (levels v)?> then\n        Fast\n        if <touching (levels v)?> then\n            change y by (-6)\n            X Collision\n            if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>> then\n                set [y v] to [12]\n                if <([abs v] of (x) ) = (x)> then\n                    set [x v] to [-8]\n                else\n                    set [x v] to [8]\n                end\n            else\n                set [x v] to [0]\n            end\n        end\n    end\n    change y by (y)\n    if <touching (levels v)?> then\n        Y Collision\n        if <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>> and <(y) < [0]>> then\n            set [y v] to [14]\n        else\n            set [y v] to [0]\n        end\n    end\n    if <(x position) > [235]> then\n        broadcast (Next Level / Transition v)\n        change [level v] by (1)\n        set [x v] to [0]\n        set [y v] to [0]\n        go to x: (-213) y: (93)\n    end\n    if <touching (spikes v)?> then\n        set [x v] to [0]\n        set [y v] to [0]\n        go to x: (-213) y: (93)\n    end\n    if <touching (tramp v)?> then\n        set [y v] to [20]\n    end\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [setup 4 player v]\ngo to x: (-213) y: (93)\nset [x v] to [0]\nset [y v] to [0]\n\nwhen I receive [reset player v]\ngo to x: (-213) y: (93)\nset [x v] to [0]\nset [y v] to [0]\n\nwhen I receive [play game v]\nforever\n    if <(y position) = [-184]> then\n        go to x: (-213) y: (93)\n        set [x v] to [0]\n        set [y v] to [0]\n    end\nend\n\nwhen this sprite clicked\nbroadcast (C v)\n\nwhen I receive [next level / transition v]\ngo to x: (-213) y: (93)\nset [x v] to [0]\nset [y v] to [0]\n\nwhen flag clicked\nset [ghost v] effect to (0)\n\n@skip\n\nhide\n\nwhen I receive [play game v]\nshow\nset [ghost v] effect to (60)\nforever\n    if <([costume # v] of [levels v]) = [11]> then\n        hide\n        broadcast (hhhhh v)\n        stop [other scripts in sprite v]\n        stop [this script v]\n    end\n    if <touching (mouse-pointer v)?> then\n        set [ghost v] effect to (0)\n        set [yes2 v] to [1]\n    else\n        set [ghost v] effect to (60)\n        set [yes2 v] to [0]\n    end\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        set [ghost v] effect to (60)\n        wait until <<mouse down?> = [false]>\n        set [ghost v] effect to (0)\n        broadcast (Next Level / Transition v)\n    end\nend\n\nwhen flag clicked\nhide\ngo [forward v] (33) layers\n\nwhen flag clicked\nset [yes2 v] to [0]\n\n@restart\n\nwhen flag clicked\nhide\n\nwhen I receive [play game v]\nshow\nset [ghost v] effect to (60)\nforever\n    if <([costume # v] of [levels v]) = [11]> then\n        hide\n        stop [other scripts in sprite v]\n        stop [this script v]\n    end\n    if <touching (mouse-pointer v)?> then\n        set [ghost v] effect to (0)\n        set [yes v] to [1]\n    else\n        set [ghost v] effect to (60)\n        set [yes v] to [0]\n    end\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        set [ghost v] effect to (60)\n        wait until <<mouse down?> = [false]>\n        set [ghost v] effect to (0)\n        broadcast (Setup 4 player v)\n    end\nend\n\nwhen flag clicked\nhide\ngo [forward v] (33) layers\n\nwhen flag clicked\nset [yes v] to [0]\n\n@levels\n\nwhen I receive [next level / transition v]\nif <not <(costume [number v]) = [11]>> then\n    next costume\nend\nif <(costume [number v]) = [11]> then\n    broadcast (go v)\nend\n\nwhen flag clicked\nhide\nswitch costume to (costume2 v)\n\nwhen I receive [play game v]\nshow\nswitch costume to (costume2 v)\n\nwhen flag clicked\nforever\n    set [costog v] to (costume [number v])\nend\n\n@TN\n\nwhen flag clicked\ngo to x: (0) y: (0)\nswitch costume to (costume1 v)\n\nwhen flag clicked\ngo to [front v] layer\nset [ghost v] effect to (100)\nset [pixelate v] effect to (100)\n\nwhen I receive [chosen v]\npoint in direction (90)\nset size to (100) %\nrepeat (50)\n    change [ghost v] effect by (-2)\n    change [pixelate v] effect by (-2)\nend\nwait (1.5) seconds\nrepeat (50)\n    change [ghost v] effect by (2)\n    change [pixelate v] effect by (2)\nend\nwait (.1) seconds\nset [pixelate v] effect to (0)\nbroadcast (Play Game v)\npoint in direction (90)\nset size to (100) %\ngo to [front v] layer\n\nchange size by (-2)\n\n@r\n\nwhen flag clicked\nset [ghost v] effect to (40)\ngo to [back v] layer\nforever\n    go to (mouse-pointer v)\n    if <(yes) = [1]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I receive [play game v]\ngo to [front v] layer\n\n@t\n\nwhen flag clicked\nhide\nset [ghost v] effect to (40)\ngo to [back v] layer\nforever\n    go to (mouse-pointer v)\n    if <(yes2) = [1]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I receive [hhhhh v]\nhide\nstop [other scripts in sprite v]\nstop [this script v]\n\nwhen I receive [play game v]\ngo to [front v] layer\n\n@part2\n\nwhen flag clicked\n\nwhen I start as a clone\nset [part2: y v] to (pick random (20) to (30))\nshow\neff (pick random (-10) to (10))\n\ndefine eff (x)\nset [-1 v] to [1]\nset [color v] effect to (0)\nset [ghost v] effect to (50)\nset [brightness v] effect to (0)\nset size to (pick random (60) to (120)) %\nforever\n    go to [front v] layer\n    change x by ((x) * (-1))\n    change y by (part2: y)\n    change [part2: y v] by (-2)\n    if <touching (_edge_ v)?> then\n        if <(-1) = [1]> then\n            set [-1 v] to [-1]\n        else\n            set [-1 v] to [1]\n        end\n    end\n    if <(y position) < [-170]> then\n        delete this clone\n    end\nend\n\nwhen I receive [love fav v]\ngo to x: (0) y: (-30000)\nhide\nrepeat (7)\n    go to x: (pick random (190) to (200)) y: (-3000)\n    create clone of (_myself_ v)\n    wait (0.01) seconds\nend\nwait (1) seconds\nrepeat (7)\n    go to x: (pick random (190) to (200)) y: (-3000)\n    create clone of (_myself_ v)\n    wait (0.01) seconds\nend\n\n@spikes\n\nwhen flag clicked\nhide\nswitch costume to (costume1 v)\n\nwhen I receive [next level / transition v]\nnext costume\n\nwhen I receive [play game v]\nshow\n\n@detector\n\nwhen flag clicked\nhide\nset [faved___ v] to [0]\nset [loved__ v] to [0]\nset [clone id v] to [0]\ncreate clone of (_myself_ v)\nwait (0.2) seconds\nset [clone id v] to [1]\ncreate clone of (_myself_ v)\nwait until <<(LOVED__) = [1]> and <(FAVED___) = [1]>>\nwait (1) seconds\nshow\ngo to x: (0) y: (50)\nreset timer\nswitch costume to (4 v)\nset [ghost v] effect to (100)\nrepeat until <(timer) > [3.5]>\n    change y by ((y position) / (-15))\n    change [ghost v] effect by (-3)\nend\nbroadcast (love fav v)\nstart sound [yay v]\nreset timer\nrepeat until <(timer) > [3.5]>\n    change y by (((y position) - (-100)) / (-15))\n    change [ghost v] effect by (10)\nend\n\nwhen I start as a clone\nif <(clone id) = [0]> then\n    go to x: (-15) y: (0)\n    set [loved__ v] to [0]\n    switch costume to (love v)\n    forever\n        set [love? v] to <touching (mouse-pointer v)?>\n        if <touching (mouse-pointer v)?> then\n            set [loved__ v] to [1]\n        end\n    end\nend\nif <(clone id) = [1]> then\n    go to x: (0) y: (0)\n    switch costume to (fave v)\n    set [faved___ v] to [0]\n    forever\n        set [fav v] to <touching (mouse-pointer v)?>\n        if <touching (mouse-pointer v)?> then\n            set [faved___ v] to [1]\n        end\n    end\nend\n\n@tramp\n\nwhen I receive [next level / transition v]\nnext costume\n\nhide\n\nwhen flag clicked\nswitch costume to (costume1 v)\n\n@part1\n\nwhen I start as a clone\nset [part1: y v] to (pick random (20) to (30))\nshow\neff (pick random (-10) to (10))\n\ndefine eff (x)\nset [-1 v] to [1]\nset [color v] effect to (0)\nset [ghost v] effect to (50)\nset [brightness v] effect to (0)\nset size to (pick random (60) to (120)) %\nforever\n    go to [front v] layer\n    change x by ((x) * (-1))\n    change y by (part1: y)\n    change [part1: y v] by (-2)\n    if <touching (_edge_ v)?> then\n        if <(-1) = [1]> then\n            set [-1 v] to [-1]\n        else\n            set [-1 v] to [1]\n        end\n    end\n    if <(y position) < [-170]> then\n        delete this clone\n    end\nend\n\nwhen I receive [love fav v]\ngo to x: (0) y: (-30000)\nhide\nrepeat (7)\n    go to x: (pick random (-200) to (-190)) y: (-3000)\n    create clone of (_myself_ v)\n    wait (0.01) seconds\nend\nwait (1) seconds\nrepeat (7)\n    go to x: (pick random (-200) to (-190)) y: (-3000)\n    create clone of (_myself_ v)\n    wait (0.01) seconds\nend\n\n@Background stuff\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nshow\ngo to [back v] layer\npoint in direction (pick random (-70) to (-100))\ngo to x: (300) y: (pick random (-180) to (180))\nset size to (pick random (20) to (50)) %\nset [ghost v] effect to (pick random (90) to (95))\ngo to [back v] layer\nrepeat until <(x position) < [-220]>\n    move (10) steps\nend\ndelete this clone\n\nwhen I receive [play game v]\nforever\n    hide\n    create clone of (_myself_ v)\nend\n\nwhen flag clicked\nhide\ngo to x: (-122) y: (138)\nswitch costume to (costume3 v)\nset [ghost v] effect to (100)\n\n@Sprite1\n\nwhen flag clicked\nhide\n\nwhen I receive [play game v]\nhide\nswitch costume to (costume4 v)\nforever\n    wait (1.3) seconds\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nshow\npoint in direction (90)\nswitch costume to (pick random (1) to (4))\ngo to x: (174) y: (pick random (80) to (150))\nset [ghost v] effect to (pick random (25) to (55))\nrepeat (45)\n    move (-3) steps\nend\nrepeat until <touching (_edge_ v)?>\n    move (-3) steps\nend\ndelete this clone\n\n@Sprite2\n\nwhen flag clicked\nhide\ngo to [back v] layer\ngo to x: (-122) y: (138)\nswitch costume to (costume3 v)\nset [ghost v] effect to (100)\nset [pixelate v] effect to (100)\n\nwhen I receive [play game v]\ngo to [front v] layer\nshow\nwait (5) seconds\nrepeat (50)\n    change [ghost v] effect by (-2)\n    change [pixelate v] effect by (-2)\nend\nbroadcast (love click v)\n\nwhen I receive [aaa v]\nswitch costume to (costume2 v)\n\nwhen I receive [go v]\nrepeat (50)\n    change [ghost v] effect by (2)\n    change [pixelate v] effect by (2)\nend\nhide\n\n@Sprite3\n\nwhen flag clicked\nhide\nset [ghost v] effect to (100)\nset [pixelate v] effect to (100)\ngo to x: (-195) y: (123)\ngo to [back v] layer\n\nwhen I receive [play game v]\ngo to [front v] layer\nshow\nwait (5) seconds\nrepeat (50)\n    change [ghost v] effect by (-2)\n    change [pixelate v] effect by (-2)\nend\n\nwhen I receive [love click v]\nglide (1.2) secs to x: (-122) y: (138)\nset size to (75) %\nstart sound [Mouse Click  v]\nbroadcast (aaa v)\nwait (.1) seconds\nset size to (100) %\nglide (1.2) secs to x: (-47) y: (141)\nset size to (75) %\nstart sound [Mouse Click  v]\nbroadcast (bbb v)\nwait (.1) seconds\nset size to (100) %\nglide (1) secs to x: (107) y: (151)\nwait (1.5) seconds\nbroadcast (go v)\nrepeat (50)\n    change [pixelate v] effect by (2)\n    change [ghost v] effect by (2)\nend\nhide\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n@Sprite4\n\nwhen flag clicked\ngo to [back v] layer\ngo to x: (-47) y: (141)\nhide\nset [ghost v] effect to (100)\nswitch costume to (costume1 v)\nset [pixelate v] effect to (100)\n\nwhen I receive [play game v]\ngo to [front v] layer\nshow\nwait (5) seconds\nrepeat (50)\n    change [ghost v] effect by (-2)\n    change [pixelate v] effect by (-2)\nend\n\nwhen I receive [bbb v]\nswitch costume to (costume2 v)\n\nwhen I receive [go v]\nrepeat (50)\n    change [pixelate v] effect by (2)\n    change [ghost v] effect by (2)\nend\nhide\n\n@Sprite5\n\nwhen flag clicked\nhide\ngo to x: (-187) y: (106)\nset [ghost v] effect to (100)\nset [pixelate v] effect to (100)\ngo to [back v] layer\n\nwhen I receive [play game v]\ngo to [front v] layer\nwait (20) seconds\nshow\nrepeat (50)\n    change [pixelate v] effect by (-2)\n    change [ghost v] effect by (-2)\nend\nglide (1.5) secs to (follow v)\nwait (.3) seconds\nset size to (75) %\nstart sound [Mouse Click  v]\nbroadcast (follow v)\nwait (.1) seconds\nset size to (100) %\nglide (1) secs to x: (86) y: (127)\nwait (1.5) seconds\nbroadcast (going v)\n\nwhen I receive [going v]\nrepeat (50)\n    change [pixelate v] effect by (2)\n    change [ghost v] effect by (2)\nend\nhide\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n@follow\n\nwhen flag clicked\ngo to [back v] layer\nhide\nset [pixelate v] effect to (100)\nset [ghost v] effect to (100)\nswitch costume to (button3-b v)\ngo to x: (-66) y: (119)\n\nwhen I receive [play game v]\ngo to [front v] layer\nshow\nwait (20) seconds\nrepeat (50)\n    change [pixelate v] effect by (-2)\n    change [ghost v] effect by (-2)\nend\n\nwhen I receive [follow v]\nswitch costume to (costume2 v)\n\nwhen I receive [going v]\nrepeat (50)\n    change [pixelate v] effect by (2)\n    change [ghost v] effect by (2)\nend\nhide\n\n@intro\n\ndefine smooth size (size) (speed) (bounce?) (add?)\nset size to (0) %\nif <(bounce?) = [true]> then\n    repeat (20)\n        set [i v] to (((i) * (0.75)) + (((size) - (size)) / (speed)))\n        change size by (i)\n    end\nend\nif <(bounce?) = [false]> then\n    repeat (20)\n        set [i v] to (((i) * (0.75)) + (((size) - (size)) / (speed)))\n        if <<(add?) > [0]> and <not <(letter (1) of (add?)) = [-]>>> then\n            set size to ((i) + (add?)) %\n        else\n            if <<(add?) < [0]> and <(letter (1) of (add?)) = [-]>> then\n                set size to ((i) - (add?)) %\n            end\n        end\n    end\nend\n\ndefine smooth glide to x position: (x) y position: (y) size: (size) direction: (direction) smoothness: (speed)\nrepeat until <<(round (x position)) = (x)> and <<(round (y position)) = (y)> and <<(round (size)) = (size)> and <(round (direction)) = (direction)>>>>\n    change x by (((x) - (x position)) / (speed))\n    change y by (((y) - (y position)) / (speed))\n    change size by (((size) - (size)) / (speed))\n    turn right (((direction) - (direction)) / (speed)) degrees\nend\n\nwhen flag clicked\nstart sound [Ship Wreck - Ark v]\npoint in direction (90)\nclear graphic effects\nset size to (100) %\nhide\nswitch costume to (in v)\nset [brightness v] effect to (100)\nrepeat (6)\n    wait (0.03) seconds\n    switch costume to (in v)\n    change [brightness v] effect by (-20)\n    create clone of (_myself_ v)\nend\nrepeat (6)\n    wait (0.03) seconds\n    change [brightness v] effect by (-20)\nend\nswitch costume to (logo v)\ncreate clone of (_myself_ v)\nwait (0.5) seconds\nclones [100]\nwait (1) seconds\nswitch costume to (c v)\ncreate clone of (_myself_ v)\nwait (1) seconds\nswitch costume to (a v)\ncreate clone of (_myself_ v)\nwait (1) seconds\nswitch costume to (p v)\ncreate clone of (_myself_ v)\nwait (1) seconds\nswitch costume to (t v)\ncreate clone of (_myself_ v)\nwait (2) seconds\nbroadcast (delete v)\nbroadcast (chosen v)\n\nwhen I start as a clone\nshow\nif <(costume [name v]) = [in]> then\n    go to x: (0) y: (-240)\n    smooth glide to x position: (x position) y position: [0] size: [100] direction: [90] smoothness: [5]\n    wait (5) seconds\n    point in direction (-90)\n    smooth glide to x position: (x position) y position: [-383] size: [100] direction: [-90] smoothness: [5]\n    set [brightness v] effect to (-100)\n    change y by (-10)\n    repeat (10)\n        change [ghost v] effect by (10)\n        change [brightness v] effect by (-20)\n    end\n    delete this clone\nend\nif <(costume [name v]) = [Logo]> then\n    show\n    go to x: (0) y: (0)\n    point in direction (90)\n    clear graphic effects\n    smooth size [100] [5] [true] [0]\nend\nif <(costume [name v]) = [Logo]> then\n    wait (5) seconds\n    smooth glide to x position: (x position) y position: [-380] size: [100] direction: [90] smoothness: [12]\n    hide\n    delete this clone\nend\nif <(costume [name v]) = [c]> then\n    show\n    point in direction (90)\n    go to x: (0) y: (0)\n    change x by (50)\n    change y by (-10)\n    set size to (100) %\n    clear graphic effects\n    set [ghost v] effect to (100)\n    repeat (25)\n        change [ghost v] effect by (-4)\n    end\nend\nif <(costume [name v]) = [a]> then\n    point in direction (90)\n    go to x: (0) y: (0)\n    change x by (50)\n    change y by (-10)\n    set size to (100) %\n    clear graphic effects\n    set [ghost v] effect to (100)\n    repeat (25)\n        change [ghost v] effect by (-4)\n    end\nend\nif <(costume [name v]) = [p]> then\n    point in direction (90)\n    go to x: (0) y: (0)\n    change x by (50)\n    change y by (-10)\n    set size to (100) %\n    clear graphic effects\n    set [ghost v] effect to (100)\n    repeat (25)\n        change [ghost v] effect by (-4)\n    end\nend\nif <(costume [name v]) = [t]> then\n    point in direction (90)\n    go to x: (0) y: (0)\n    change x by (50)\n    change y by (-10)\n    set size to (100) %\n    clear graphic effects\n    set [ghost v] effect to (100)\n    repeat (25)\n        change [ghost v] effect by (-4)\n    end\nend\n\ndefine clones (#)\nrepeat (#)\n    switch costume to (particle v)\n    create clone of (_myself_ v)\n    turn left (15) degrees\nend\n\nwhen flag clicked\n\nwhen I start as a clone\nif <(costume [number v]) = [3]> then\n    go to x: (0) y: (0)\n    clear graphic effects\n    go to [front v] layer\n    set [momentum v] to (pick random (10) to (15))\n    set [yv v] to (pick random (2) to (7))\n    change size by (pick random (-150) to (0))\n    change [brightness v] effect by (pick random (-20) to (20))\n    turn right (pick random (-10) to (10)) degrees\n    show\n    repeat until <touching (_edge_ v)?>\n        go to [front v] layer\n        move (Momentum) steps\n        change y by (Yv)\n        change [yv v] by (-0.4)\n        set [momentum v] to ((Momentum) * (0.95))\n    end\n    hide\n    delete this clone\nend\n\nwait (1) seconds\n\nwhen I receive [delete v]\ndelete this clone\n\n