Fantasy ||A Scrolling Platformer


@Stage\n\nwhen flag clicked\nforever\n    play sound [AFLP20 - Cheetah Mobile Games-幻想（AFLP20 remix） v] until done\nend\n\nwhen flag clicked\nset volume to (90) %\nforever\n    wait until <key (m v) pressed?>\n    if <(volume) = [0]> then\n        set volume to (90) %\n    else\n        set volume to (0) %\n    end\n    wait until <not <key (m v) pressed?>>\nend\n\nwhen I receive [all win v]\nforever\n    change volume by (-1)\nend\n\n@blank\n\n@platformer\n\ndefine change y by (sy)\nchange y by (sy)\nchange [jump v] by (1)\nrepeat until <not <touching (player v)?>>\n    set [sy v] to [0]\n    if <(sy) > [0]> then\n        set [jump v] to [0]\n        change y by (-1)\n    else\n        change y by (1)\n    end\nend\n\ndefine setup(all)\nset [level v] to [1]\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\nswitch costume to (costume1 v)\nset size to (800) %\nswitch costume to (l1 v)\ngo to x: (1780) y: (1100)\nshow\n\ndefine tick\ndie\nif <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>> then\n    change [sx v] by (3)\nend\nif <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <[0] < (mouse x)>>> then\n    change [sx v] by (-3)\nend\nif <(Touch TP) = [1]> then\n    set [sy v] to [-50]\n    set [jump v] to [5]\nend\nif <(Touch Water) = [0]> then\n    if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > [0]>>> then\n        if <(jump) < (zFLY)> then\n            set [sy v] to [-18]\n        end\n    end\n    change [sy v] by (2)\nelse\n    if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > [0]>>> then\n        change [sy v] by (-2.5)\n    end\n    if <<<key (down arrow v) pressed?> or <key (s v) pressed?>> or <<mouse down?> and <[0] > (mouse y)>>> then\n        change [sy v] by (1)\n    end\n    change [sy v] by (0.1)\nend\nchange y by (sy)\nset [sx v] to ((sx) * (0.75))\nchange x by (sx)\nset [scroll x v] to (round ((1780) - (x position)))\nset [scroll y v] to (round ((1100) - (y position)))\nset [speed x v] to (sx)\nreplace item (4) of [global variable v] with (sx)\nreplace item (5) of [global variable v] with (sy)\nreplace item (6) of [global variable v] with (jump)\n\ndefine change x by (sx)\nchange x by (sx)\nif <touching (player v)?> then\n    set [slope v] to [0]\n    repeat until <(slope) = [10]>\n        change y by (-1)\n        change [slope v] by (1)\n        if <not <touching (player v)?>> then\n            stop [this script v]\n        end\n    end\n    change y by (10)\n    repeat until <not <touching (player v)?>>\n        if <(sx) > [0]> then\n            change x by (-1)\n        else\n            change x by (1)\n        end\n    end\nend\n\ndefine die\nif <(y position) > [1700]> then\n    setup(level)\nend\nif <(Touch Spike+) = [1]> then\n    setup(level)\nend\n\nwhen I receive [win v]\nsetup(level)\n\ndefine setup(level)\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\ngo to x: (1780) y: (1100)\n\nwhen I receive [greenflag v]\nwait (1) seconds\nforever\n    switch costume to ((LEVEL) + (1))\nend\n\nwhen I receive [greenflag v]\nsetup(all)\nforever\n    tick\n    broadcast (tick v)\n    if <(CON) = [win]> then\n        stop [this script v]\n    end\nend\n\nwhen I receive [title v]\nhide\n\nwhen I receive [set platformer y v]\nset y to ([y position v] of [moving platformer v])\n\n@player\n\nsay []\n\nwhen I receive [tick v]\ntick\ncreate clone of (playerclone v)\n\ndefine tick\nif <touching (dangers v)?> then\n    set [touch spike+ v] to [1]\nelse\n    set [touch spike+ v] to [0]\nend\nif <touching (tp v)?> then\n    set [touch tp v] to [1]\nelse\n    set [touch tp v] to [0]\nend\nif <touching (water v)?> then\n    set [touch water v] to [1]\nelse\n    set [touch water v] to [0]\nend\n\nwhen I receive [win v]\ndelete this clone\n\nwhen I receive [enterbox v]\nask [Select a level \(1-20\):] and wait\n\nwhen I receive [title v]\nhide\n\nwhen I receive [greenflag v]\ngo to x: (0) y: (0)\nshow\n\nwhen I receive [all win 2 v]\nglide (1) secs to x: ([x position v] of [win v]) y: ([y position v] of [win v])\nbroadcast (all win v)\n\nwhen I receive [all win 2 v]\nrepeat (15)\n    change [ghost v] effect by (6)\nend\n\n@flag\n\ndefine setup\nset [x v] to (item (LEVEL) of [pos x v])\nset [y v] to (item (LEVEL) of [pos y v])\nposition\n\ndefine position\ngo to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\nif <<((x) - (SCROLL X)) = (x position)> and <((y) - (SCROLL Y)) = (y position)>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [tick v]\nposition\n\nwhen I receive [win v]\nhide\n\nadd [10000] to [pos x v]\n\nadd [10000] to [pos y v]\n\nwhen I receive [greenflag v]\nhide\ngo to x: (10000) y: (100000)\nwait (0.01) seconds\nsetup\nforever\n    wait until <<<touching (player v)?> or <key (1 v) pressed?>> and <not <(LEVEL) = [20]>>>\n    set level to ((LEVEL) + (1))\n    wait until <<not <touching (player v)?>> and <not <key (1 v) pressed?>>>\nend\n\ndefine set level to (level)\nset [level v] to (level)\nbroadcast (win v)\nsetup\n\nwhen I receive [greenflag v]\nforever\n    wait until <key (r v) pressed?>\n    set level to (LEVEL)\n    wait until <<not <touching (player v)?>> and <not <key (r v) pressed?>>>\nend\n\nwhen I receive [greenflag v]\nforever\n    wait until <key (j v) pressed?>\n    broadcast (enterbox v) and wait\n    if <<[0.9] < <(answer) < [20.1]>> and <not <(answer) = []>>> then\n        set level to (round (answer))\n    end\n    if <<(answer) = [fly]> and < (username) contains [biggboss0]?>> then\n        if <(zFLY) = [4]> then\n            set [zfly v] to [f]\n        else\n            set [zfly v] to [4]\n        end\n    end\nend\n\nwhen I receive [title v]\nhide\n\nwhen I receive [greenflag v]\nforever\n    if <key (f v) pressed?> then\n        if < (username) contains [biggboss0]?> then\n            set [zfly v] to [f]\n        end\n        wait until <not <key (f v) pressed?>>\n        set [zfly v] to [4]\n    end\nend\n\n@star\n\ndefine star appear (size) (x) (y) (虚像) (消失时间)\nset size to (size) %\ngo to x: (x) y: (y)\nset [ghost v] effect to (虚像)\nrepeat (消失时间)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\ndefine 克隆 (x) 次\nrepeat (x)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\ngo to [back v] layer\nshow\nstar appear [90] (pick random (-230) to (230)) (pick random (-100) to (170)) [50] [10]\ndelete this clone\n\nwhen I receive [title v]\nhide\nforever\n    克隆 (pick random (20) to (35)) 次\nend\n\n@dangers\n\ndefine setup(all)\nswitch costume to (costume1 v)\nset size to (800) %\nswitch costume to (l1 v)\ngo to x: (1780) y: (1100)\n\nwhen I receive [win v]\nsetup(level)\n\ndefine setup(level)\ngo to x: (1780) y: (1100)\n\nwhen I receive [tick v]\ngo to (platformer v)\nif <<(round (x position)) = (round ([x position v] of [platformer v]))> and <(round (y position)) = (round ([y position v] of [platformer v]))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [greenflag v]\nwait (1) seconds\nforever\n    switch costume to ((LEVEL) + (1))\nend\n\nwhen I receive [greenflag v]\nsetup(all)\n\nwhen I receive [title v]\nhide\n\n@tp\n\ndefine setup(all)\nset [zfly v] to [4]\nset [level v] to [1]\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\nswitch costume to (costume1 v)\nset size to (800) %\nswitch costume to (l1 v)\ngo to x: (1780) y: (1100)\n\nwhen I receive [win v]\nsetup(level)\n\ndefine setup(level)\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\ngo to x: (1780) y: (1100)\n\nwhen I receive [tick v]\ngo to (platformer v)\nif <<(round (x position)) = (round ([x position v] of [platformer v]))> and <(round (y position)) = (round ([y position v] of [platformer v]))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [greenflag v]\nwait (1) seconds\nforever\n    switch costume to ((LEVEL) + (1))\nend\n\nwhen I receive [greenflag v]\nsetup(all)\n\nwhen I receive [title v]\nhide\n\n@eyes\n\nwhen I receive [tick v]\nif <(timer) > [0.2]> then\n    go to x: (0) y: (3)\n    change x by ((() - (SPEED X)) / (1.7))\nend\n\nwhen I receive [win v]\nreset timer\n\nwhen I receive [greenflag v]\nshow\nswitch costume to (costume1 v)\nforever\n    wait (pick random (2) to (4)) seconds\n    next costume\n    wait (0.05) seconds\n    next costume\n    wait (0.1) seconds\n    next costume\n    wait (0.05) seconds\n    next costume\nend\n\nwhen I receive [title v]\nhide\n\nwhen I receive [all win 2 v]\nrepeat (15)\n    go to (player v)\n    change y by (3)\n    change [ghost v] effect by (6)\nend\n\n@water\n\ndefine setup(all)\nset [ghost v] effect to (50)\nset [level v] to [1]\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\nswitch costume to (costume1 v)\nset size to (800) %\nswitch costume to (l1 v)\ngo to x: (1780) y: (1100)\n\nwhen I receive [win v]\nsetup(level)\n\ndefine setup(level)\nset [sx v] to [0]\nset [sy v] to [0]\nset [jump v] to [5]\ngo to x: (1780) y: (1100)\n\nwhen I receive [tick v]\ngo to (platformer v)\nif <<(round (x position)) = (round ([x position v] of [platformer v]))> and <(round (y position)) = (round ([y position v] of [platformer v]))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [greenflag v]\nwait (1) seconds\nforever\n    switch costume to ((LEVEL) + (1))\nend\n\nwhen I receive [greenflag v]\nsetup(all)\n\nwhen I receive [title v]\nhide\n\n@tb\n\nwhen I receive [title v]\ngo to x: (0) y: (0)\nswitch costume to (造型1 v)\nset [ghost v] effect to (100)\ngo to [back v] layer\nhide\n\nwhen I receive [all win v]\nshow\ngo to [front v] layer\nwait (0.001) seconds\nswitch costume to (造型2 v)\nset [ghost v] effect to (0)\nwait (3.5) seconds\nswitch costume to (造型3 v)\nwait (3.5) seconds\nbroadcast (last v)\n\n@playerClone\n\nwhen I receive [win v]\ndelete this clone\n\nwhen flag clicked\nset [num v] to [0]\n\nwhen I start as a clone\nset [num v] to [1]\nshow\nif <(CON) = [play]> then\n    go to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\n    set [ghost v] effect to (70)\n    repeat (8)\n        change [ghost v] effect by (4)\n        go to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\n    end\nelse\n    go to x: (item (1) of [global variable v]) y: (item (2) of [global variable v])\n    set [ghost v] effect to (70)\n    repeat (8)\n        change [ghost v] effect by (4)\n    end\nend\ndelete this clone\n\nwhen I receive [tick v]\nif <(num) = [0]> then\n    hide\n    set [x v] to (SCROLL X)\n    set [y v] to (SCROLL Y)\nend\n\n@fade\n\nwhen I receive [greenflag v]\nshow up\n\nwhen I receive [win v]\nshow up\n\nwhen I receive [title v]\nhide\n\ndefine show up\ngo to [front v] layer\nshow\nset [ghost v] effect to (0)\nwait (0.1) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    go to [front v] layer\nend\nhide\n\nwhen I receive [all win v]\nwait (0) seconds\nshow up\nwait (3) seconds\nshow up\nwait (3) seconds\n\n@title\n\nwhen flag clicked\nbroadcast (title v)\nset [con v] to [title]\n\nwhen I receive [title v]\nshow\nset [i# v] to [0]\nrepeat (3)\n    change [i# v] by (1)\n    create clone of (_myself_ v)\nend\nswitch costume to (title v)\ngo to x: (-240) y: (10)\nglide (0.2) secs to x: (0) y: (10)\nforever\n    if <touching (mouse-pointer v)?> then\n        if <(size) < [106]> then\n            change size by (1.5)\n        end\n    else\n        if <[100] < (size)> then\n            change size by (-1.5)\n        end\n    end\n    if <(CON) = [play]> then\n        hide\n        wait (0) seconds\n        stop [other scripts in sprite v]\n        stop [this script v]\n    end\nend\n\nset size to (105) %\n\nset size to (100) %\n\nwhen I start as a clone\nif <(i#) = [1]> then\n    switch costume to (s title v)\n    go to x: (240) y: (10)\n    glide (0.2) secs to x: (0) y: (10)\nelse\n    if <(i#) = [2]> then\n        switch costume to (costume1 v)\n        go to x: (0) y: (-180)\n        glide (0.2) secs to x: (0) y: (0)\n    else\n        if <(i#) = [3]> then\n            switch costume to (costume2 v)\n            hide\n            wait (1) seconds\n            show\n            go to x: (162) y: (-180)\n            glide (0.1) secs to x: (162) y: (-150)\n        end\n    end\nend\n\nwhen I receive [title v]\ndelete this clone\n\nwhen I receive [greenflag v]\nhide\ndelete this clone\n\nwhen I start as a clone\nforever\n    if <(i#) = [3]> then\n        if <touching (mouse-pointer v)?> then\n            if <(size) < [110]> then\n                change size by (2)\n            end\n        else\n            if <[100] < (size)> then\n                change size by (-2)\n            end\n        end\n    end\nend\n\n@play\n\nwhen I receive [title v]\nclear graphic effects\nset [ghost v] effect to (0)\nhide\nwait (1) seconds\nshow\ngo to x: (-240) y: (0)\nglide (0.15) secs to x: (-175) y: (0)\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (125) %\n        set [brightness v] effect to (0)\n    else\n        set size to (100) %\n        set [brightness v] effect to (0)\n    end\n    if <<<touching (mouse-pointer v)?> and <mouse down?>> or <key (p v) pressed?>> then\n        set size to (100) %\n        set [brightness v] effect to (0)\n        hide\n        broadcast (ready v) and wait\n        set [con v] to [play]\n        broadcast (greenflag v)\n        stop [other scripts in sprite v]\n        stop [this script v]\n    end\nend\n\nwhen I receive [title v]\npoint in direction (90)\nforever\n    repeat (10)\n        turn left (1.5) degrees\n    end\n    repeat (20)\n        turn left (-1.5) degrees\n    end\n    repeat (10)\n        turn left (1.5) degrees\n    end\nend\n\n@play2\n\nwhen I receive [title v]\nset [ghost v] effect to (0)\nhide\nwait (1) seconds\nshow\ngo to x: (-240) y: (-50)\nglide (0.15) secs to x: (-150) y: (-50)\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (107) %\n        set [brightness v] effect to (20)\n        hide list [my studio v]\n    else\n        set size to (100) %\n        set [brightness v] effect to (0)\n        show list [my studio v]\n    end\n    if <(CON) = [play]> then\n        show list [my studio v]\n        stop [this script v]\n    end\nend\n\nwhen I receive [greenflag v]\nhide\n\nwhen I receive [ready v]\nhide\n\nwhen I receive [title v]\npoint in direction (90)\nforever\n    repeat (10)\n        turn left (1.5) degrees\n    end\n    repeat (20)\n        turn left (-1.5) degrees\n    end\n    repeat (10)\n        turn left (1.5) degrees\n    end\n    if <(CON) = [play]> then\n        stop [this script v]\n    end\nend\n\n@cover player\n\nwhen I receive [title v]\ngo to x: (10) y: (0)\nswitch costume to (造型1 v)\ncreate clone of (_myself_ v)\nswitch costume to (costume1 v)\nshow\nset [sy change v] to [-2]\nset [sy v] to [0]\nset [sx v] to [0]\nset [# v] to [0]\nforever\n    tick\n    broadcast (ticktitle v)\n    if <(CON) = [play]> then\n        stop [this script v]\n    end\nend\n\ndefine tick\nchange [sy v] by (sy change)\nchange y by (sy)\nset [sx v] to ((sx) * (0.8))\nchange x by (sx)\nreplace item (1) of [global variable v] with (x position)\nreplace item (2) of [global variable v] with (y position)\nreplace item (3) of [global variable v] with ((sx) / (1.5))\ncreate clone of (playerclone v)\n\ndefine change y by (sy)\nchange y by (sy)\nchange [jump v] by (1)\nrepeat until <not <touching (title v)?>>\n    set [sy v] to [0]\n    set [jump v] to [0]\n    change y by (1)\nend\n\nwhen I receive [title v]\nforever\n    set [sy change v] to [-3]\n    if <<key (up arrow v) pressed?> or <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        reset timer\n        if <(pick random (0) to (2)) = [1]> then\n            say (join [Hi, ] (username))\n        end\n        repeat until <(timer) > [0.7]>\n            jump\n        end\n    end\n    say []\n    set [sy change v] to [-2]\nend\n\ndefine jump\nif <(jump) < [3]> then\n    set [sy v] to [18]\nend\n\nwhen I receive [ready v]\nset [sy change v] to [-2]\nrepeat until <touching (_edge_ v)?>\n    change [sx v] by (1.6)\nend\nhide\nbroadcast (delete clone v)\nstop [other scripts in sprite v]\n\nwhen I receive [ready v]\nwait (0.36) seconds\njump\n\nwhen I receive [ticktitle v]\nif <(#) = [1]> then\n    go to x: ((item (1) of [global variable v]) + (item (3) of [global variable v])) y: (item (2) of [global variable v])\nend\n\nwhen I start as a clone\nset [# v] to [1]\nshow\ngo to [front v] layer\nforever\n    switch costume to (造型1 v)\n    wait (pick random (2) to (4)) seconds\n    switch costume to (造型2 v)\n    wait (0.05) seconds\n    switch costume to (造型1 v)\n    wait (0.1) seconds\n    switch costume to (造型2 v)\n    wait (0.05) seconds\nend\n\nwhen I receive [delete clone v]\ndelete this clone\n\n@bg\n\nwhen I receive [tick v]\nset x to (item (4) of [global variable v])\n\nwhen I receive [title v]\ngo to x: (0) y: (0)\nset [ghost v] effect to (80)\ngo to [back v] layer\n\nwhen I receive [tick v]\nif <<[0] > (item (5) of [global variable v])> and <[-30] < (y position)>> then\n    change y by (-1)\nelse\n    if <<(item (5) of [global variable v]) > [0]> and <(y position) < [30]>> then\n        change y by (1)\n    else\n    end\nend\n\n@st\n\ndefine position\ngo to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\nif <<(round ((x) - (SCROLL X))) = (round (x position))> and <(round ((y) - (SCROLL Y))) = (round (y position))>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [tick v]\nif <<(i#) = [1]> and <(LEVEL) = [7]>> then\n    position\nelse\n    if <<(i#) = [2]> and <(LEVEL) = [13]>> then\n        position\n    else\n        if <<(i#) = [3]> and <(LEVEL) = [19]>> then\n            position\n        else\n            hide\n        end\n    end\nend\nif <touching (player v)?> then\n    change [star collect v] by (1)\n    start sound [Collect v]\n    delete this clone\nend\nif <<key (3 v) pressed?> and < (username) contains [biggboss0]?>> then\n    set [star collect v] to [3]\n    delete this clone\nend\n\nwhen I receive [win v]\nhide\n\nwhen I receive [greenflag v]\nset [star collect v] to [0]\nhide\ngo to x: (10000) y: (100000)\nwait (0.01) seconds\nset [i# v] to [0]\nrepeat (3)\n    change [i# v] by (1)\n    set [x v] to (item (i#) of [pos x v])\n    set [y v] to (item (i#) of [pos y v])\n    create clone of (_myself_ v)\nend\nset [i# v] to [0]\n\nwhen I receive [title v]\nhide\n\nchange [star collect v] by (1)\n\nstart sound [Collect v]\n\n@St collect\n\nwhen I receive [title v]\nhide\n\nwhen I receive [greenflag v]\nset [star collect v] to [0]\nshow\ngo to x: (-195) y: (-158)\nforever\n    switch costume to ((Star Collect) + (1))\n    if <(costume [number v]) = [4]> then\n        set [ghost v] effect to (0)\n        wait (1) seconds\n        hide\n        stop [this script v]\n    end\nend\n\nwhen I receive [greenflag v]\nset [ghost v] effect to (100)\nwait (0.1) seconds\nrepeat (10)\n    change [ghost v] effect by (-8)\nend\nset [ghost v] effect to (20)\n\nwhen I receive [win v]\nset [ghost v] effect to (100)\nwait (0.1) seconds\nrepeat (10)\n    change [ghost v] effect by (-8)\nend\nset [ghost v] effect to (20)\n\n@win\n\nwhen I receive [title v]\nhide\nset [ghost v] effect to (60)\nset [i v] to [1]\ncreate clone of (_myself_ v)\nset [i v] to [0]\n\nwhen I receive [greenflag v]\nhide\n\nwhen I receive [win v]\nif <(LEVEL) = [20]> then\n    set [x v] to [500]\n    set [y v] to [-50]\n    forever\n        position\n        if <(Star Collect) = [2]> then\n            set [+s v] to [s]\n        else\n            set [+s v] to []\n        end\n        if <(Star Collect) = [3]> then\n            say []\n            set [brightness v] effect to (0)\n            if <(i) = [1]> then\n                turn right (5) degrees\n            else\n                turn left (5) degrees\n            end\n            if <touching (player v)?> then\n                set [con v] to [win]\n                broadcast (all win 2 v) and wait\n                stop [this script v]\n            end\n        else\n            if <(i) = [1]> then\n                say (join [You only collect ] (join (Star Collect) (join [ star] (join (+s) [, please go back to collect them all\(press J to select a level\).]))))\n            end\n            point in direction (90)\n            set [brightness v] effect to (-20)\n        end\n        if <not <(LEVEL) = [20]>> then\n            stop [this script v]\n        end\n    end\nelse\n    hide\nend\n\ndefine position\ngo to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\nif <<((x) - (SCROLL X)) = (x position)> and <((y) - (SCROLL Y)) = (y position)>> then\n    show\nelse\n    hide\nend\n\n@cover\n\nwhen I receive [title v]\nshow\nswitch costume to (head v)\ngo to [front v] layer\nset [ghost v] effect to (100)\ngo to x: (0) y: (0)\nforever\n    go to [front v] layer\nend\n\nwhen I receive [last v]\nset [ghost v] effect to (0)\nswitch costume to (tail v)\nshow\ngo to [front v] layer\nstop [all v]\n\n