Geometry Dash Platformer!

Instructions: Hey there, and welcome to my newest game, Geometry Dash Platformer! After several hours of work, this game contains 12 levels for you to traverse and explore, 5 icons for you to unlock, and graphics from the original game!\nPlease ❤, ⭐ and follow if you enjoyed!\n\n--------Objective--------\nGet the cube through all 12 trap-filled levels to win! You can beat a level by touching the right (normal) or collecting the coin (difficult).\n\n------How To Play-----\nUse the arrow keys, WAD, or touch and drag (for mobile) to move your icon to the goals. Just make sure not to touch any spikes or you'll have to restart the level!\nFor some levels, the gravity is reversed! Go through a portal for this to happen!\n\n-----------Icons-----------\nDefault - You start with this\nOne can be unlocked through loving\nOne can be unlocked through faving\nOne can be unlocked through both\nOne can be unlocked through earning all coins\n\nYou can choose different icons by clicking on the background.\n\n---------Credits----------\nRobtop Games for all art and inspiration\n@TJ_ProCode for platforming scripts\n@TJ_ProCode for level designs\n@griffpatch for particles sprite, modified by me\nMusic track 1 is "Hexagon Force" by WaterFlame\nMusic track 2 is "Deadlocked" by F-777\nFonts are from Geometry Dash, found on https://gdcolon.com/gdfont\n\n---------Tags---------\n#all #art #games #music

@Stage\n\nwhen flag clicked\nforever\n    switch backdrop to (Level)\nend\n\nwhen flag clicked\nforever\n    if <not <touching (turbo mode detector v)?>> then\n        stop [all v]\n    end\nend\n\nwhen flag clicked\nforever\n    play sound [Hexagon Force - WaterFlame v] until done\n    wait (3) seconds\n    play sound [Deadlocked - F-777 v] until done\n    wait (3) seconds\nend\n\nwhen stage clicked\nwait until <not <mouse down?>>\nset [doubleclick first click time v] to (timer)\nwait until <<[2] < ((timer) - (Doubleclick First Click Time))> or <mouse down?>>\nif <mouse down?> then\n    Next Costume\nend\n\ndefine Next Costume\nchange [costume v] by (1)\nrepeat until <[1] = (item (Costume) of [costumes unlocked v])>\n    change [costume v] by (1)\n    if <[5] < (Costume)> then\n        set [costume v] to [1]\n    end\nend\n\n@Cube\n\ndefine Transition to Direction (dir)\nset rotation style [all around v]\nif <(dir) < (direction)> then\n    repeat until <(round (direction)) = (round (dir))>\n        turn right (-15) degrees\n    end\nelse\n    repeat until <(round (direction)) = (round (dir))>\n        turn right (15) degrees\n    end\nend\n\nwhen flag clicked\nhide\nset [level v] to [1]\ndelete all of [costumes unlocked v]\nadd [1] to [costumes unlocked v]\nrepeat (4)\n    add [0] to [costumes unlocked v]\nend\nset size to (100) %\nswitch costume to (cube1 v)\nset [costume v] to ((<(Coins Collected) = [12]> * (4)) + (1))\nif <(Costume) = [5]> then\n    replace item (5) of [costumes unlocked v] with [1]\nend\nSetup\nforever\n    if <<(Already Dying) = [0]> and <(Particle Ticks Left) = [0]>> then\n        show\n        broadcast (Tick v)\n    else\n        hide\n        change [particle ticks left v] by (-1)\n        broadcast (Particle Tick v)\n    end\nend\n\nwhen I start as a clone\nrepeat (10)\n    change [ghost v] effect by ((size) / (10))\n    change size by ((size) / (-25))\nend\ndelete this clone\n\nwhen I receive [tick v]\nTick\n\ndefine Tick\nif <<[6] < (Level)> and <(Level) < [11]>> then\n    set [yv multiplier v] to [-1]\nelse\n    set [yv multiplier v] to [1]\nend\npoint in direction ((90) * (yV Multiplier))\nset size to (100) %\ndelete all of [keys pressed v]\nif <<<(([y position v] of [joystick v]) + (25)) < (mouse y)> and <mouse down?>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n    add [Up] to [keys pressed v]\nend\nif <<<(([x position v] of [joystick v]) + (25)) < (mouse x)> and <mouse down?>> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>> then\n    add [Right] to [keys pressed v]\nend\nif <<<(mouse x) < (([x position v] of [joystick v]) + (-25))> and <mouse down?>> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>> then\n    add [Left] to [keys pressed v]\nend\nchange y by ((yV) * (yV Multiplier))\nif <[keys pressed v] contains [Up]?> then\n    change [yv v] by (-0.8)\nelse\n    change [yv v] by (-1)\nend\nif <touching (ground v)?> then\n    if <[0] < (yV)> then\n        repeat until <not <touching (ground v)?>>\n            change y by ((yV Multiplier) * (-1))\n        end\n    else\n        repeat until <not <touching (ground v)?>>\n            change y by (yV Multiplier)\n        end\n    end\n    if <not <<touching (trampolines v)?> or <[keys pressed v] contains [Up]?>>> then\n        set [yv v] to [0]\n    else\n        if <(Already Dying) = [0]> then\n            set [yv v] to ((<touching (trampolines v)?> + (1)) * ((12) + ((xV) * (0.075))))\n        end\n    end\nend\nif <(Already Dying) = [0]> then\n    if <<[keys pressed v] contains [Left]?> or <[keys pressed v] contains [Right]?>> then\n        if <[keys pressed v] contains [Right]?> then\n            set [xm v] to [1]\n        end\n        if <[keys pressed v] contains [Left]?> then\n            set [xm v] to [-1]\n        end\n    else\n        set [xm v] to [0]\n    end\nend\nchange x by (xV)\nif <touching (down trampolines v)?> then\n    set [yv v] to [-10]\nend\nif <touching (ground v)?> then\n    repeat until <not <touching (ground v)?>>\n        change x by (((xV) / ([abs v] of (xV) )) * (-1))\n    end\n    if <(Already Dying) = [0]> then\n        if <[keys pressed v] contains [Up]?> then\n            set [yv v] to [10.5]\n            set [xm v] to (((xV) / ([abs v] of (xV) )) * (-7))\n        end\n    end\nend\nset [xv v] to ((xM) + ((xV) * (.85)))\nchange y by ((-2) * (yV Multiplier))\nif  then\n    Die\nend\nif <<touching (coin v)?> or <[239] < (x position)>> then\n    if <(Ghost I) = [0]> then\n        change [ghost v] effect by (10)\n        change [ghost i v] by (1)\n        broadcast (Start Ghosting v)\n        if <touching (coin v)?> then\n            change [coins collected v] by (1)\n        end\n    end\nend\nswitch costume to ((Costume) mod (5))\nif <(Coins Collected) = [12]> then\n    replace item (5) of [costumes unlocked v] with [1]\nend\n\nwhen I receive [restart level v]\nSetup\n\ndefine Setup\npoint in direction (90)\nset [ghost v] effect to (0)\nswitch costume to (Costume)\nset size to (100) %\ngo to x: (-215) y: (0)\nset [xv v] to [0]\nset [yv v] to [0]\nset [already dying v] to [0]\nset [ghost i v] to [0]\n\nwhen I receive [both loved and faved v]\nset [costume v] to [4]\nreplace item (4) of [costumes unlocked v] with [1]\nswitch costume to (cube4 v)\n\nwhen I receive [faved v]\nset [costume v] to [3]\nreplace item (3) of [costumes unlocked v] with [1]\nswitch costume to (cube3 v)\n\nwhen I receive [loved v]\nset [costume v] to [2]\nreplace item (2) of [costumes unlocked v] with [1]\nswitch costume to (cube2 v)\n\nwhen I receive [start ghosting v]\nrepeat (9)\n    change [ghost v] effect by (10)\n    change [ghost i v] by (1)\nend\nset [ghost i v] to [0]\nchange [level v] by (1)\nset [ghost v] effect to (0)\nset size to (100) %\nset [already dying v] to [0]\nset x to (-220)\nset y to (0)\n\nwhen flag clicked\n\ndefine Die\nhide\nrepeat (50)\n    create clone of (particles v)\nend\nset [ghost i v] to [0]\nset [particle ticks left v] to [25]\nswitch costume to (Costume)\nif <(Already Dying) = [0]> then\n    broadcast (Restart Level v)\n    set [already dying v] to [1]\nelse\n    change [ghost v] effect by (10)\nend\n\nforever\n    change y by ((-10) * (yV Multiplier))\n    if <not <touching (ground v)?>> then\n        if <[.5] < (xM)> then\n            turn right (15) degrees\n        else\n            repeat until <touching (ground v)?>\n                turn right (-15) degrees\n            end\n        end\n    else\n        if <([abs v] of (direction) ) < [46]> then\n            Transition to Direction [0]\n        else\n            if <[134] < ([abs v] of (direction) )> then\n                Transition to Direction [180]\n            else\n                if <<(direction) < [135]> and <[45] < (direction)>> then\n                    Transition to Direction [90]\n                else\n                    if <<[-135] < (direction)> and <(direction) < [-45]>> then\n                        Transition to Direction [-90]\n                    end\n                end\n            end\n        end\n    end\n    change y by ((10) * (yV Multiplier))\nend\n\nwhen [timer v] > (-9999)\nset [coins collected v] to [0]\n\n@Ground\n\nwhen flag clicked\nshow\nforever\n    switch costume to (Level)\n    Layer\nend\n\ndefine Layer\ngo to [front v] layer\ngo [backward v] (2) layers\n\n@Danger\n\nwhen flag clicked\ngo to [back v] layer\nforever\n    switch costume to (Level)\n    go [backward v] () layers\nend\n\n@Trampolines\n\nwhen flag clicked\nhide\nClone at [-98] [-102] on level [5]\nClone at [-125] [-102] on level [5]\nClone at [-150] [-102] on level [5]\nClone at [-177] [-102] on level [5]\nClone at [8] [-102] on level [5]\nClone at [100] [-102] on level [5]\nClone at [125] [-102] on level [5]\nClone at [130] [-102] on level [5]\nClone at [165] [-102] on level [5]\nClone at [190] [-102] on level [5]\nClone at [-98] [9] on level [5]\nClone at [-73] [9] on level [5]\n\nwhen I start as a clone\nswitch costume to (pad v)\nwait until <(My Level) = (Level)>\nset [pad on v] to [1]\nshow\nwait until <not <(My Level) = (Level)>>\ndelete this clone\n\ndefine Clone at (x) (y) on level (level)\nset [pad on v] to [0]\ngo to x: (x) y: (y)\nset [my level v] to (level)\ncreate clone of (_myself_ v)\n\nwhen I receive [trampoline stamp v]\nStamp\n\nwhen flag clicked\nforever\n    wait (.03) seconds\n    erase all\n    broadcast (Trampoline Stamp v)\nend\n\ndefine Stamp\nif <(pad on) = [1]> then\n    change y by (5)\n    switch costume to (pick random (2) to (6))\n    stamp\n    switch costume to (pad v)\n    change y by (-5)\nend\n\n@Down Trampolines\n\nwhen flag clicked\nhide\nClone at [-123] [-25] on level [5]\nClone at [-150] [-25] on level [5]\nClone at [-175] [-25] on level [5]\nClone at [-97] [-25] on level [5]\nClone at [100] [-25] on level [5]\nClone at [125] [-25] on level [5]\nClone at [150] [-25] on level [5]\nClone at [175] [-25] on level [5]\nClone at [200] [-25] on level [5]\n\nwhen I start as a clone\npoint in direction (-90)\nswitch costume to (pad v)\nwait until <(My Level) = (Level)>\nset [pad on v] to [1]\nshow\nwait until <not <(My Level) = (Level)>>\ndelete this clone\n\ndefine Clone at (x) (y) on level (level)\nset [pad on v] to [0]\ngo to x: (x) y: (y)\nset [my level v] to (level)\ncreate clone of (_myself_ v)\n\nwhen I receive [trampoline stamp v]\nStamp\n\ndefine Stamp\nif <(pad on) = [1]> then\n    change y by (-5)\n    switch costume to (pick random (2) to (6))\n    stamp\n    switch costume to (pad v)\n    change y by (5)\nend\n\n@Coin\n\nwhen flag clicked\nshow\ngo to [back v] layer\nforever\n    switch costume to (Level)\n    go [forward v] (1) layers\nend\n\n@Joystick\n\nwhen flag clicked\nhide\nforever\n    go to [front v] layer\n    switch costume to (spawn v)\n    set [ghost v] effect to (20)\n    wait until <mouse down?>\n    go to (mouse-pointer v)\n    show\n    create clone of (_myself_ v)\n    wait until <not <mouse down?>>\n    repeat (4)\n        change [ghost v] effect by (20)\n    end\n    hide\nend\n\nwhen I start as a clone\nset [ghost v] effect to (20)\ngo to [front v] layer\nswitch costume to (mouse v)\nrepeat until <not <mouse down?>>\n    go to (mouse-pointer v)\nend\nrepeat (4)\n    change [ghost v] effect by (20)\nend\ndelete this clone\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n@Love And Fave Detector\n\nwhen flag clicked\nhide\nset [love clicked? v] to [0]\nset [fave clicked? v] to [0]\nswitch costume to (love v)\ncreate clone of (_myself_ v)\nswitch costume to (fave v)\ncreate clone of (_myself_ v)\nwait until <((Love Clicked?) + (Fave Clicked?)) = [2]>\nbroadcast (Both Loved And Faved v)\n\nwhen I start as a clone\nset [clone id v] to (costume [number v])\nswitch costume to (hack v)\ngo to x: (0) y: (0)\nswitch costume to (Clone Id)\nshow\nif <(Clone Id) = [1]> then\n    forever\n        if <touching (mouse-pointer v)?> then\n            wait (0.3) seconds\n            if <touching (mouse-pointer v)?> then\n                broadcast (Test Loved v)\n                delete this clone\n            end\n        end\n    end\nelse\n    forever\n        if <touching (mouse-pointer v)?> then\n            wait (0.3) seconds\n            if <touching (mouse-pointer v)?> then\n                broadcast (Test Faved v)\n                delete this clone\n            end\n        end\n    end\nend\n\nwhen I receive [test loved v]\nif <<<[-240] < (mouse x)> and <[-168] > (mouse x)>> and <(mouse y) = [-180]>> then\n    set [love clicked? v] to [1]\n    broadcast (Loved v)\nelse\n    stop [all v]\nend\n\nwhen I receive [test faved v]\nif <<<[-168] < (mouse x)> and <[-106] > (mouse x)>> and <(mouse y) = [-180]>> then\n    set [fave clicked? v] to [1]\n    broadcast (Faved v)\nelse\n    stop [all v]\nend\n\n@Turbo Mode Detector\n\nwhen flag clicked\nforever\n    set [old timer v] to (timer)\n    repeat (10)\n    set [turbo mode on? v] to <(timer) = (Old Timer)>\nend\n\nwhen flag clicked\nset [ghost v] effect to (100)\nshow\nforever\n    go to [front v] layer\n    go [backward v] (1) layers\n    if <(Turbo Mode On?) = [0]> then\n        set [ghost v] effect to (100)\n    else\n        set [ghost v] effect to (0)\n    end\nend\n\n@Particles\n\ndefine spawn (x) (y) (spd) (ang)\nset [x v] to (x)\nset [y v] to (y)\nset [sx v] to ((spd) * ([sin v] of (ang) ))\nset [sy v] to ((spd) * ([cos v] of (ang) ))\nset [typ v] to [1]\nset [siz v] to ((130) / ((((spd) - (0.3)) / (11)) + (1)))\n\nwhen I receive [particle tick v]\nif <(typ) > [0]> then\n    if <(typ) = [1]> then\n        set size to (siz) %\n        set [ghost v] effect to (pick random (0) to (40))\n        show\n    else\n        if <(typ) > [22]> then\n            delete this clone\n        end\n    end\n    change [typ v] by (1)\n    change [x v] by (sx)\n    change [y v] by (sy)\n    go to x: ((x) - (Scroll X)) y: (((y) - (Scroll Y)) - (63))\n    change [ghost v] effect by (3)\nend\n\nwhen I start as a clone\nspawn ([x position v] of [cube v]) (([y position v] of [cube v]) + (30)) (pick random (0.3) to (11)) (pick random (0) to (359))\n\nwhen I receive [front4 v]\ngo to [front v] layer\ngo [backward v] (1) layers\n\nwhen flag clicked\nset [typ v] to [0]\nhide\n\n@Thumbnail\n\nwhen flag clicked\nset [ghost v] effect to (100)\nforever\n    go to [front v] layer\nend\n\n