shapeshifter ∣ Fun Platformer!

Instructions: *you may advertise here!*\n\nWelcome to ShapeShifter!\n\nTry to complete all 8 difficult levels and unlock all 5 characters! (all levels are possible!)\n\nSome characters are better at certain levels than others, give them all a go!\nheart and favorite for part 2?\n\n      Controls\narrow keys to move\nup arrow to jump\nspace bar to activate abilities\n\nAvoid spikes and red guys, try to get to he red flag.\n\nComment "pro" if you read this far ;)\n\nJump - extra jump height\nfall - slow fall speed and no fall damage\nknight - can swing his sword (space key)\ncloak - can turn invisible for 3 seconds once a game\notto - can shoot his gun 4 times\n\n\n#platformer #platformers #games #all #shapeshifter # trending

@Stage\n\nwhen I receive [ch v]\nswitch backdrop to (backdrop1 v)\n\nwhen I receive [l v]\nswitch backdrop to (sapodjaspd v)\n\nwhen I receive [g v]\nswitch backdrop to (backdrop2 v)\n\nwhen flag clicked\nforever\n    play sound [Unlimited v] until done\nend\n\n@p\n\nwhen flag clicked\nhide\nforever\n    if <(AREA) = [g]> then\n        if <key (right arrow v) pressed?> then\n            change [m v] by (2)\n            set [po v] to [1]\n        end\n        if <key (left arrow v) pressed?> then\n            change [m v] by (-2)\n            set [po v] to [-1]\n        end\n        if <key (up arrow v) pressed?> then\n            change y by (-1)\n            if <touching (level v)?> then\n                if <(chosen) = [jump]> then\n                    set [gravity v] to [18]\n                else\n                    set [gravity v] to [14]\n                end\n                start sound [Jump v]\n            end\n            change y by (1)\n        end\n        if <touching (fl v)?> then\n            hide\n            broadcast (mw v) and wait\n        end\n        if <(chosen) = [fall]> then\n            change [gravity v] by (-0.8)\n        else\n            change [gravity v] by (-1)\n        end\n    end\n    if <touching (spikes v)?> then\n        death\n    end\n    if <touching (enemy v)?> then\n        if <(inv) = [0]> then\n            death\n        end\n    end\n    switch costume to (chosen)\n    g/j (gravity)\n    set [m v] to ((m) * (0.8))\n    move x by (m)\n    if <not <(AREA) = [g]>> then\n        hide\n    end\n    if <key (space v) pressed?> then\n        if <<(chosen) = [cloak]> and <(c/b) > [0]>> then\n            set [ghost v] effect to (50)\n            set [c/b v] to [0]\n            broadcast (C v)\n        end\n    end\nend\n\nwhen I receive [g v]\nset [inv v] to [0]\nset [gravity v] to [-1]\nset [m v] to [0]\ngo to x: (-185) y: (item (level) of [y v])\nshow\nset size to (60) %\nif <(chosen) = [cloak]> then\n    set [c/b v] to [1]\nend\nif <(chosen) = [otto]> then\n    set [c/b v] to [3]\nend\n\ndefine g/j (g)\nif <(g) > [0]> then\n    repeat (g)\n        change y by (1)\n        if <touching (level v)?> then\n            change y by (-1)\n            set [gravity v] to [0]\n            stop [this script v]\n        end\n    end\nelse\n    repeat ([abs v] of (g) )\n        change y by (-1)\n        if <touching (level v)?> then\n            if <([abs v] of (gravity) ) > [18]> then\n                if <not <(chosen) = [fall]>> then\n                    death\n                end\n            end\n            change y by (1)\n            set [gravity v] to [0]\n            stop [this script v]\n        end\n    end\nend\n\ndefine move x by (m)\nif <(m) > [0]> then\n    repeat (m)\n        change x by (1)\n        if <touching (level v)?> then\n            change x by (-1)\n            set [gravity v] to [0]\n            stop [this script v]\n        end\n    end\nelse\n    repeat ([abs v] of (m) )\n        change x by (-1)\n        if <touching (level v)?> then\n            change x by (1)\n            set [gravity v] to [0]\n            stop [this script v]\n        end\n    end\nend\n\ndefine death\nset [ghost v] effect to (0)\ngo to x: (-185) y: (item (level) of [y v])\nset [inv v] to [0]\nstart sound [recording1 v]\nset [gravity v] to [-1]\nset [m v] to [0]\nbroadcast (g v)\n\nwhen I receive [c v]\nset [timer v] to [3]\nset [inv v] to [1]\nwait (3) seconds\nset [ghost v] effect to (0)\nset [inv v] to [0]\n\nwhen flag clicked\nif <[tbtw] = (username)> then\n\n@level\n\nwhen flag clicked\nhide\n\nwhen I receive [g v]\nswitch costume to (level)\nshow\ngo to [front v] layer\n\nwhen I receive [ch v]\nhide\n\nwhen I receive [l v]\nhide\n\n@assets\n\nwhen I receive [ch v]\nhide\n\nwhen I receive [l v]\nhide\n\nwhen I receive [mw v]\nhide\n\nwhen I receive [g v]\nset [ammo v] to [4]\nrepeat until <not <(AREA) = [g]>>\n    if <(chosen) = [knight]> then\n        if <key (space v) pressed?> then\n            start sound [Low Whoosh v]\n            set [id v] to [0]\n            set rotation style [all around v]\n            switch costume to (costume1 v)\n            show\n            clear graphic effects\n            point in direction ((po) * (105))\n            set [t v] to [14]\n            repeat (14)\n                go to (p v)\n                change x by ((po) * (18))\n                turn right (t) degrees\n                change [t v] by (-1)\n                create clone of (_myself_ v)\n                if <touching (enemy v)?> then\n                    hide\n                end\n            end\n            repeat (4)\n                change [ghost v] effect by (25)\n            end\n            hide\n        end\n    else\n        if <(chosen) = [otto]> then\n            if <key (space v) pressed?> then\n                set rotation style [left-right v]\n                set [id v] to [1]\n                wait until <not <key (space v) pressed?>>\n                switch costume to (costume2 v)\n                go to (p v)\n                change x by ((po) * (22))\n                show\n                clear graphic effects\n                point in direction ((po) * (90))\n                if <(ammo) > [0]> then\n                    start sound [Low Boing v]\n                    create clone of (_myself_ v)\n                    change [ammo v] by (-1)\n                end\n                wait (0.1) seconds\n                hide\n            end\n        end\n    end\nend\n\nwhen I start as a clone\nif <(id) = [0]> then\n    switch costume to (costume1 v)\n    set [brightness v] effect to (70)\n    wait (0.047) seconds\n    delete this clone\nelse\n    switch costume to (costume3 v)\n    change x by ((po) * (10))\n    set [hold v] to (po)\n    repeat until <<touching (level v)?> or <<touching (spikes v)?> or <<touching (_edge_ v)?> or <touching (enemy v)?>>>>\n        change x by ((10) * (hold))\n    end\nend\ndelete this clone\n\nwhen I receive [g v]\nhide\n\ncreate clone of (_myself_ v)\n\n@advice\n\nwhen flag clicked\nswitch costume to (1 v)\nset [area v] to [ch]\ngo to x: (-85) y: (-125)\ngo to [front v] layer\nshow\nset [t? v] to [0]\nforever\n    if <key (space v) pressed?> then\n        wait until <not <key (space v) pressed?>>\n        next costume\n        if <(costume [number v]) = [5]> then\n            broadcast (l v)\n            set [area v] to [l]\n            wait until <(AREA) = [g]>\n            hide\n            set [t? v] to [1]\n            stop [this script v]\n        end\n    end\nend\n\n@Sprite4\n\nwhen I receive [l v]\nset [cid v] to [1]\ngo to x: (-175) y: (0)\nswitch costume to (l1 v)\nshow\ninsta\nswitch costume to (costume1 v)\ngo to x: (0) y: (160)\nforever\n    if <not <(AREA) = [l]>> then\n        hide\n    end\nend\n\nwhen flag clicked\nset [up to v] to [1]\nhide\n\nwhen I start as a clone\nswitch costume to (join [L] (cid))\nif <(up to) < (cid)> then\n    set [ghost v] effect to (50)\nelse\n    repeat until <not <(AREA) = [l]>>\n        if <touching (mouse-pointer v)?> then\n            set size to (90) %\n            if <mouse down?> then\n                set [level v] to (cid)\n                broadcast (g v)\n                set [area v] to [g]\n                delete this clone\n            end\n        else\n            set size to (75) %\n        end\n    end\nend\n\nwhen I start as a clone\nforever\n    if <not <(AREA) = [l]>> then\n        delete this clone\n    end\nend\n\ndefine insta\nrepeat (8)\n    set size to (75) %\n    create clone of (_myself_ v)\n    change x by (50)\n    change [cid v] by (1)\nend\n\n@ch\n\nwhen flag clicked\ndelete all of [unlocked v]\nadd [jump] to [unlocked v]\nset [chosen v] to [jump]\nbroadcast (ch v)\n\nwhen I receive [ch v]\nhide\nswitch costume to (jump v)\nset [cid v] to [0]\nset size to (100) %\ngo to x: (-150) y: (100)\ncreate clone of (_myself_ v)\nchange [cid v] by (1)\nnext costume\ngo to x: (0) y: (100)\ncreate clone of (_myself_ v)\nchange [cid v] by (1)\nnext costume\ngo to x: (150) y: (100)\ncreate clone of (_myself_ v)\nchange [cid v] by (1)\nnext costume\ngo to x: (-150) y: (0)\ncreate clone of (_myself_ v)\nchange [cid v] by (1)\nnext costume\ngo to x: (0) y: (0)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nshow\nrepeat until <not <(AREA) = [ch]>>\n    if <[unlocked v] contains (costume [name v])?> then\n        clear graphic effects\n        if <(chosen) = (costume [name v])> then\n            set size to (120) %\n        else\n            set size to (100) %\n        end\n    else\n        set [ghost v] effect to (75)\n    end\n    if <touching (mouse-pointer v)?> then\n        say (item (costume [number v]) of [def v])\n        if <(chosen) = (costume [name v])> then\n            say (join [selected:] (item (costume [number v]) of [def v]))\n        end\n        if <mouse down?> then\n            if <[unlocked v] contains (costume [name v])?> then\n                set [chosen v] to (costume [name v])\n            else\n                start sound [Pew v]\n            end\n        end\n    else\n        say []\n    end\nend\ndelete this clone\n\nwhen I receive [l v]\nadd (item (up to) of [a v]) to [unlocked v]\n\n@fl\n\nwhen I receive [g v]\ngo to [back v] layer\ngo [forward v] (2) layers\nshow\nswitch costume to (level)\ngo to x: (0) y: (0)\nwait until <not <(AREA) = [g]>>\nhide\n\nwhen flag clicked\nhide\n\n@c\n\nwhen I receive [mw v]\nstart sound [Magic Spell v]\nif <(up to) < [5]> then\n    set [paijs v] to [costume1]\nelse\n    set [paijs v] to [costume4]\nend\nset [l v] to [-18.4]\ngo to [front v] layer\nshow\ngo to x: (0) y: (180)\nset size to (25) %\nrepeat (18)\n    change y by (l)\n    change [l v] by (1)\nend\nset [l v] to [40]\nrepeat (40)\n    switch costume to (costume2 v)\n    change size by (l)\n    switch costume to (paijs)\n    change [l v] by (-1)\nend\nwait (2) seconds\nset [area v] to [l]\nif <(level) = (up to)> then\n    change [up to v] by (1)\nend\nbroadcast (l v)\nrepeat (41)\n    switch costume to (costume3 v)\n    change size by (l)\n    change [l v] by (-1)\n    switch costume to (paijs)\nend\nhide\n\nwhen flag clicked\nhide\n\n@button\n\nwhen flag clicked\ngo to [back v] layer\nswitch costume to (costume2 v)\ngo to x: (147) y: (-136)\npoint in direction (90)\nhide\n\nwhen I receive [l v]\nclear graphic effects\nset size to (100) %\nshow\nset [fun v] to [0]\nshow\ngo to x: (147) y: (-136)\nswitch costume to (costume1 v)\nwait until <(t?) = [1]>\nrepeat until <not <(AREA) = [l]>>\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (5)\n        point in direction (([sin v] of ((fun) * (15)) ) + (90))\n        change [fun v] by (1)\n        if <mouse down?> then\n            wait until <not <mouse down?>>\n            set [area v] to [ch]\n            broadcast (ch v)\n            hide\n        end\n    else\n        clear graphic effects\n        point in direction (90)\n    end\nend\n\nwhen I receive [ch v]\nset size to (100) %\nshow\nclear graphic effects\nwait until <(t?) = [1]>\nset [fun v] to [0]\ngo to x: (147) y: (-136)\nswitch costume to (costume2 v)\nrepeat until <not <(AREA) = [ch]>>\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (5)\n        point in direction (([sin v] of ((fun) * (15)) ) + (90))\n        change [fun v] by (1)\n        if <mouse down?> then\n            wait until <not <mouse down?>>\n            set [area v] to [l]\n            broadcast (l v)\n            hide\n        end\n    else\n        clear graphic effects\n        point in direction (90)\n    end\nend\n\nwhen I receive [g v]\nwait (0) seconds\nclear graphic effects\nshow\nset [fun v] to [0]\ngo to x: (175) y: (150)\ngo to [front v] layer\nset size to (75) %\nswitch costume to (costume3 v)\nrepeat until <not <(AREA) = [g]>>\n    clear graphic effects\n    if <touching (p v)?> then\n        set [ghost v] effect to (30)\n    end\n    if <touching (mouse-pointer v)?> then\n        set [brightness v] effect to (5)\n        point in direction (([sin v] of ((fun) * (15)) ) + (90))\n        change [fun v] by (1)\n        if <mouse down?> then\n            wait until <not <mouse down?>>\n            set [area v] to [ch]\n            broadcast (ch v)\n            hide\n        end\n    else\n        point in direction (90)\n    end\nend\n\nset [ghost v] effect to (0)\n\nwhen I receive [mw v]\nhide\n\n@spikes\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\n\nwhen I receive [ch v]\nhide\n\nwhen I receive [l v]\nhide\n\nwhen I receive [g v]\ngo to [front v] layer\nshow\ngo to x: (0) y: (0)\nswitch costume to (level)\n\n@enemy\n\nwhen I receive [ch v]\nhide\n\nwhen I receive [l v]\nhide\n\nwhen I receive [mw v]\nhide\n\nwhen I receive [g v]\nif <[1] > [0]> then\n    delete this clone\nend\npoint in direction (90)\nclear graphic effects\nif <(level) = [5]> then\n    set [id v] to [1]\n    create clone of (_myself_ v)\nelse\n    if <(level) = [6]> then\n        set [id v] to [2]\n        create clone of (_myself_ v)\n    else\n        if <(level) = [7]> then\n            set [id v] to [3]\n            repeat (3)\n                create clone of (_myself_ v)\n                change [id v] by (1)\n            end\n        end\n    end\nend\nrepeat until <not <(AREA) = [g]>>\n    switch costume to (costume1 v)\n    hide\n    if <not <(item (level) of [places \(00 for na\) v]) = [00]>> then\n        show\n        go to x: (item (level) of [places \(00 for na\) v]) y: (item (level) of [places y v])\n        set [p v] to [-15]\n        repeat (15)\n            change x by (p)\n            change [p v] by (1)\n        end\n        set [p v] to [15]\n        repeat (15)\n            change x by (p)\n            change [p v] by (-1)\n        end\n    end\nend\n\nwhen I receive [g v]\nrepeat until <not <(AREA) = [g]>>\n    if <touching (assets v)?> then\n        stop [other scripts in sprite v]\n        switch costume to (costume2 v)\n        repeat (10)\n            change [brightness v] effect by (10)\n            change [ghost v] effect by (10)\n            turn right (5) degrees\n        end\n        hide\n        stop [this script v]\n    end\nend\n\nwhen I receive [g v]\ndelete this clone\n\nset [id v] to [1]\n\nwhen I start as a clone\nswitch costume to (costume1 v)\nshow\nforever\n    go to [front v] layer\n    show\n    set [p v] to [-15]\n    go to x: (item (id) of [clone v]) y: (item (id) of [clone y v])\n    repeat (15)\n        change x by (p)\n        change [p v] by (1)\n    end\n    set [p v] to [15]\n    repeat (15)\n        change x by (p)\n        change [p v] by (-1)\n    end\nend\n\nwhen I receive [ch v]\ndelete this clone\n\nwhen I receive [l v]\ndelete this clone\n\nwhen I receive [mw v]\ndelete this clone\n\nwhen I start as a clone\nforever\n    if <touching (assets v)?> then\n        stop [other scripts in sprite v]\n        switch costume to (costume2 v)\n        repeat (10)\n            change [brightness v] effect by (10)\n            change [ghost v] effect by (10)\n            turn right (5) degrees\n        end\n        hide\n        delete this clone\n    end\nend\n\nchange [id v] by (1)\n\n@Sprite1G\n\nwhen I receive [ch v]\nhide\ndelete this clone\n\nwhen I receive [mw v]\nhide\ndelete this clone\n\nwhen I receive [l v]\nhide\ndelete this clone\n\nwhen I receive [g v]\ndelete this clone\n\nwhen I receive [g v]\nshow\ngo to x: (0) y: (0)\nswitch costume to (costume2 v)\ngo to [back v] layer\nwait until <not <(AREA) = [g]>>\nstop [other scripts in sprite v]\n\nwhen I receive [g v]\nforever\n    create clone of (_myself_ v)\n    wait (1) seconds\nend\n\nwhen I start as a clone\nclear graphic effects\nset [fun v] to [0]\nshow\nset [ghost v] effect to (100)\ngo to x: (-258) y: (0)\nswitch costume to (costume1 v)\ngo to [back v] layer\ngo [forward v] (2) layers\nrepeat (102)\n    change [ghost v] effect by (-1)\n    change x by (5)\nend\ndelete this clone\n\n@TN\n\nwhen flag clicked\nshow\ngo to [front v] layer\nset [ghost v] effect to (100)\n\n