Islands a platformer  || #game #games
@Stage\n\nwhen flag clicked\nset volume to (100) %\nhide variable [volume v]\nset [language v] to [english]\nset [volume v] to [100]\nbroadcast (menu music v)\nbroadcast (menu v)\n\nwhen I receive [menu music v]\nstop [other scripts in stage v]\nstop all sounds\nforever\n    play sound [Amadeus - Legendary.mp3 v] until done\nend\n\nwhen I receive [control v]\nstop [other scripts in stage v]\nstop all sounds\nforever\n    play sound [JJD - Velocity.mp3 v] until done\nend\n\nwhen I receive [options v]\nforever\n    set volume to (volume) %\nend\n\n@menu/credits\n\nwhen I start as a clone\nif <(costume [number v]) = [1]> then\n    show\n    set size to (100) %\n    go to x: (0) y: (0)\n    forever\n        wait (1) seconds\n        switch costume to (title2 v)\n        wait (1) seconds\n        switch costume to (title v)\n    end\nend\nif <(costume [number v]) = [3]> then\n    show\n    go to x: (-105) y: (-40)\n    set size to (140) %\n    switch costume to (1 v)\n    forever\n        if <touching (mouse-pointer v)?> then\n            switch costume to (1\(2\) v)\n            if <mouse down?> then\n                broadcast (control v)\n            end\n        else\n            switch costume to (1 v)\n        end\n    end\nend\nif <(costume [number v]) = [4]> then\n    show\n    go to x: (105) y: (-40)\n    set size to (140) %\n    switch costume to (2 v)\n    forever\n        if <touching (mouse-pointer v)?> then\n            switch costume to (2\(2\) v)\n            if <mouse down?> then\n                broadcast (options v)\n                go to x: (170) y: (-130)\n                forever\n                    if <touching (mouse-pointer v)?> then\n                        switch costume to (return2menu\(2\) v)\n                        if <mouse down?> then\n                            broadcast (menu v)\n                        end\n                    else\n                        switch costume to (return2menu v)\n                    end\n                end\n            end\n        else\n            switch costume to (2 v)\n        end\n    end\nend\nif <(costume [number v]) = [9]> then\n    set size to (140) %\n    go to x: (-88) y: (-18)\n    show\n    forever\n        if <touching (mouse-pointer v)?> then\n            set size to (170) %\n            if <mouse down?> then\n                if <(volume) < [100]> then\n                    change [volume v] by (1)\n                end\n            end\n        else\n            set size to (140) %\n        end\n    end\nend\nif <(costume [number v]) = [10]> then\n    set size to (140) %\n    go to x: (-153) y: (-18)\n    show\n    forever\n        if <touching (mouse-pointer v)?> then\n            set size to (170) %\n            if <mouse down?> then\n                if <(volume) > [0]> then\n                    change [volume v] by (-1)\n                end\n            end\n        else\n            set size to (140) %\n        end\n    end\nend\nif <(costume [number v]) = [12]> then\n    set size to (140) %\n    go to x: (0) y: (0)\n    show\n    forever\n        if <(language) = [english]> then\n            switch costume to (text \(english\) v)\n        end\n        if <(language) = [german]> then\n            switch costume to (text \(german\) v)\n        end\n    end\nend\nif <(costume [number v]) = [13]> then\n    set size to (140) %\n    go to x: (0) y: (0)\n    show\n    forever\n        if <touching (mouse-pointer v)?> then\n            if <mouse down?> then\n                set [language v] to [english]\n            end\n        end\n    end\nend\nif <(costume [number v]) = [14]> then\n    set size to (140) %\n    go to x: (0) y: (0)\n    show\n    forever\n        if <touching (mouse-pointer v)?> then\n            if <mouse down?> then\n                set [language v] to [german]\n            end\n        end\n    end\nend\n\nwhen I receive [menu v]\nhide variable [volume v]\nwait (0.01) seconds\nswitch costume to (title v)\ncreate clone of (_myself_ v)\nswitch costume to (1 v)\ncreate clone of (_myself_ v)\nswitch costume to (2 v)\ncreate clone of (_myself_ v)\nswitch costume to (iamnotabot v)\n\nwhen I receive [options v]\nif <<(costume [number v]) = [3]> or <(costume [number v]) = [5]>> then\n    delete this clone\nend\n\nwhen I receive [control v]\ndelete this clone\n\nwhen I receive [menu v]\ndelete this clone\n\nwhen I receive [options v]\nif <(costume [number v]) = [11]> then\n    show variable [volume v]\n    switch costume to (louder v)\n    create clone of (_myself_ v)\n    switch costume to (quiet v)\n    create clone of (_myself_ v)\n    switch costume to (text \(english\) v)\n    create clone of (_myself_ v)\n    switch costume to (english v)\n    create clone of (_myself_ v)\n    switch costume to (german v)\n    create clone of (_myself_ v)\nend\n\nwhen I receive [won v]\nset size to (100) %\nswitch costume to (credits v)\nshow\nwait (5) seconds\nhide\nbroadcast (menu music v)\nbroadcast (menu v)\nset size to (140) %\n\nwhen flag clicked\nset size to (140) %\nhide\nswitch costume to (iamnotabot v)\ngo to x: (0) y: (0)\n\nswitch costume to (screen v)\nset size to (100) %\ngo to x: (0) y: (0)\nshow\n\n@mirror\n\nwhen I receive [control v]\nshow\ngo to [front v] layer\nforever\n    boost it\n    go to [front v] layer\nend\n\nwhen flag clicked\nhide\n\ndefine boost it\nset size to (55) %\ngo to x: ([x position v] of [hit-box v]) y: (([y position v] of [hit-box v]) + (4))\nif <touching color (#000000)?> then\n    change y by (1)\n    if <touching color (#000000)?> then\n        change y by (2)\n        if <touching color (#000000)?> then\n            change y by (3)\n            if <touching color (#000000)?> then\n                change y by (2)\n                if <touching color (#000000)?> then\n                    change y by (-8)\n                end\n            end\n        end\n    end\nend\nset x to (([x position v] of [hit-box v]) * (-1))\nset size to (58) %\n\nwhen I receive [won v]\nstop [other scripts in sprite v]\nhide\n\n@level\n\nwhen I receive [menu v]\nhide\n\nwhen I receive [control v]\ngo [backward v] (1) layers\ngo to [front v] layer\nshow\nswitch costume to (1 v)\n\nwhen I receive [next level v]\nnext costume\n\nwhen flag clicked\nswitch costume to (1 v)\ngo to x: (0) y: (0)\nhide\n\nwhen I receive [won v]\nhide\n\n@items\n\nwhen flag clicked\nhide\n\nwhen I receive [menu v]\nhide\n\nwhen I receive [control v]\nwait until <([costume # v] of [level v]) = [11]>\npoint in direction (90)\ngo to x: (140) y: (-5)\nset size to (120) %\nswitch costume to (11 v)\nshow\nrepeat until <([costume # v] of [level v]) > [11]>\n    turn right (-5) degrees\nend\npoint in direction (90)\nswitch costume to (lift v)\ngo to x: (220) y: (-25)\nrepeat until <([costume # v] of [level v]) > [12]>\n    repeat (100)\n        change y by (1)\n    end\n    wait (2) seconds\n    repeat (100)\n        change y by (-1)\n    end\n    go to x: (220) y: (-25)\n    wait (2) seconds\nend\n\nwhen I receive [control v]\nwait until <([costume # v] of [level v]) = [13]>\nstop [other scripts in sprite v]\nhide\ngo to x: (70) y: (152)\nwait until <([costume # v] of [level v]) = [14]>\ngo to x: (240) y: (130)\n\n@hit-box\n\nwhen I receive [control v]\nreboot player list\nclear graphic effects\npoint in direction (90)\ngo to x: (210) y: (-130)\nset size to (60) %\nhide\nforever\n    if <touching color (#000000)?> then\n        change y by (10)\n        if <touching color (#000000)?> then\n            change y by (-10)\n            replace item (2) of [player v] with (((item (2) of [player v]) * (-1)) * (0.8))\n            change y by (item (2) of [player v])\n        else\n            change y by (-10)\n            if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n                replace item (2) of [player v] with [8]\n            else\n                replace item (2) of [player v] with [0]\n            end\n        end\n    end\n    if <touching color (#00ff55)?> then\n        replace item (2) of [player v] with [14]\n    end\n    change y by (item (2) of [player v])\n    replace item (2) of [player v] with ((item (2) of [player v]) - (0.5))\n    change y by (2)\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        replace item (1) of [player v] with ((item (1) of [player v]) + (1.5))\n        replace item (3) of [player v] with (((item (3) of [player v]) + (0.01)) * (0.3))\n    end\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        replace item (1) of [player v] with ((item (1) of [player v]) - (1.5))\n        replace item (3) of [player v] with (((item (3) of [player v]) + (0.01)) * (0.3))\n    end\n    replace item (1) of [player v] with ((item (1) of [player v]) * (0.8))\n    change x by (item (1) of [player v])\n    if <touching color (#000000)?> then\n        change y by (3)\n        if <touching color (#000000)?> then\n            change y by (3)\n            if <touching color (#000000)?> then\n                change y by (4)\n                if <touching color (#000000)?> then\n                    if <touching color (#000000)?> then\n                        change y by (((item (2) of [player v]) * (-2)) - (10))\n                        if <touching color (#000000)?> then\n                            change y by ((item (2) of [player v]) * (2))\n                            change x by ((item (1) of [player v]) * (-1))\n                            if <touching color (#000000)?> then\n                                replace item (1) of [player v] with ((item (1) of [player v]) * (-2))\n                                replace item (2) of [player v] with ((item (2) of [player v]) * (-1))\n                                change x by (item (1) of [player v])\n                            end\n                        else\n                            replace item (2) of [player v] with ((item (2) of [player v]) * (-1))\n                        end\n                    end\n                else\n                    replace item (2) of [player v] with ((item (2) of [player v]) * (0.6))\n                end\n            end\n        end\n    end\n    if <(item (3) of [player v]) < [0.1]> then\n        replace item (3) of [player v] with ((item (3) of [player v]) * (1.4))\n    end\n    change y by (-2)\n    if <touching color (#cc0000)?> then\n        reboot player list\n        start sound [1 v]\n        go to x: (210) y: (-130)\n    end\n    if <touching color (#ffff00)?> then\n        reboot player list\n        start sound [laser1 v]\n        go to x: ([x position v] of [items v]) y: ([y position v] of [items v])\n    end\n    if <([costume # v] of [level v]) = [15]> then\n        if <(x position) < [-237]> then\n            broadcast (won v)\n            reboot player list\n            go to x: (210) y: (-130)\n        end\n    else\n        if <(x position) < [14]> then\n            broadcast (next level v)\n            reboot player list\n            go to x: (210) y: (-130)\n        end\n    end\nend\n\nreplace item (1) of [player v] with ((item (1) of [player v]) + (2))\nreplace item (3) of [player v] with (((item (3) of [player v]) + (0.01)) * (0.3))\nchange x by (item (1) of [player v])\nchange x by (item (1) of [player v])\nif <touching color (#000000)?> then\n    change y by (10)\nend\n\nwhen I receive [next level v]\nif <([costume # v] of [level v]) < [15]> then\n    go to [front v] layer\n    hide\n    clear graphic effects\n    wait (40) seconds\n    show\n    repeat (10)\n        change [ghost v] effect by (10)\n    end\n    hide\n    clear graphic effects\n    wait (10) seconds\n    show\n    repeat (10)\n        change [ghost v] effect by (10)\n    end\n    hide\n    clear graphic effects\n    forever\n        wait (2) seconds\n        show\n        repeat (20)\n            change [ghost v] effect by (5)\n        end\n        hide\n        clear graphic effects\n    end\nend\n\nif <(x position) < [-239]> then\n    if <<not <([costume # v] of [level v]) = [8]>> and <not <([costume # v] of [level v]) = [20]>>> then\n        set x to ((x position) * (-1))\n        replace item (1) of [player v] with ((item (1) of [player v]) + (2))\n        replace item (3) of [player v] with (((item (3) of [player v]) + (0.01)) * (0.3))\n        change x by (item (1) of [player v])\n        change x by (item (1) of [player v])\n        if <touching color (#000000)?> then\n            change y by (10)\n        end\n    end\nend\n\ndefine reboot player list\ndelete (all) of [player v]\ninsert [x] at (1) of [player v] \ninsert [0] at (2) of [player v] \ninsert [step] at (3) of [player v] \n\nwhen flag clicked\nset volume to (100) %\nhide\n\nwhen I receive [menu v]\nstop [other scripts in sprite v]\nset volume to (volume) %\nhide\n\nwhen I receive [won v]\nstop [other scripts in sprite v]\nhide\n\n