Hollow Knight Platformer V3.2.3

Instructions: PLEASE report any bugs! I'm still working on this game from time to time, so check back occasionally :)\n___________________________________________\nMove with WASD or arrow keys. Press R to shoot a blast of energy (this is currently useless). The rest of the controls are in the game.\n\nGet to the door to go to the next level, and AVOID THE INFECTION! Death is permanent. Restarting won't bring you back to life.\n\nNew levels coming soon!\n\nNOTICE: The backgrounds are slightly darkened to make it easier to see foreground objects. Press M to restore the backgrounds to their original brightness (it's much prettier).\n_____________________________________________\nUPDATE LOG \n\n- 3/9/19 - Released game! Total levels: 4\n- 3/20/19 - Restart button added, plus one new level\n- 10/26/19 - Fixed levels, rearranged level 5\n\n__________3/30/21 - Pretty Update! ________________\n   -Added tons of new, cool backgrounds for the levels!\n   -Fixed various bugs\n_____________________________________________\n\n- 4/1/21 - Darkened backgrounds to make obstacles easier to see and improved both the infection sprite and the Game Over fade in. Improved Greenpath area.\n- 11/19/21 - Added intro cutscene!!! Improved random sprites and fixed various bugs\n_________11/22/21 - Original Art Update_____________\n-Improved cutscene quality\n-Changed Player sprite costumes (all of them!!!)\n-Made levels WAY cooler\n_____________________________________________\n\n- 11/23/21 - Fixed various bugs\n- 4/18/22 -  Fixed various bugs, shortened intro cutscene\n- 9/4/22 - Fixed a cutscene bug, changed door hitbox\n- 11/3/22 - Fixed a spawn bug, Improved player costumes, accidentally unshared :l\n--------------------------------------------\nPlans\n- More levels\n- NPCs?\n\nKnown Bugs:\n-Restarting the last level messes up the level\n-On level 7, sometimes you can get stuck if you fall.\n-On some levels, you spawn near the bottom of the screen.

@Stage\n\nwhen flag clicked\nswitch backdrop to (backdrop3 v)\n\nwhen I receive [level 5 v]\nswitch backdrop to (backdrop4 v)\n\nwhen I receive [level 3 v]\nswitch backdrop to (backdrop2 v)\n\nwhen I receive [level 4 v]\nswitch backdrop to (backdrop5 v)\n\n@Player\n\nwhen flag clicked\nswitch costume to (right v)\ngo to [front v] layer\nset [level v] to [1]\nset [takeoffspeed v] to [12]\nset [runspeed v] to [5]\nset [gravity v] to [-1]\nset [fallspeed v] to [0]\nset [cloak? v] to [0]\nset [blast v] to [0]\ngo to x: (9) y: (200)\nforever\n    Run controls\n    Jump control\n    Simulate gravity\nend\n\ndefine Run controls\nif <(moveable) = [yes]> then\n    if <key (d v) pressed?> then\n        switch costume to (right v)\n        change x by (RunSpeed)\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            change x by ((0) - (RunSpeed))\n        end\n    end\n    if <key (a v) pressed?> then\n        switch costume to (left v)\n        change x by ((0) - (RunSpeed))\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            change x by (RunSpeed)\n        end\n    end\n    if <key (right arrow v) pressed?> then\n        switch costume to (right v)\n        change x by (RunSpeed)\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            change x by ((0) - (RunSpeed))\n        end\n    end\n    if <key (left arrow v) pressed?> then\n        switch costume to (left v)\n        change x by ((0) - (RunSpeed))\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            change x by (RunSpeed)\n        end\n    end\nend\n\ndefine Jump control\nif <(moveable) = [yes]> then\n    if <key (w v) pressed?> then\n        change y by (-1)\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            set [fallspeed v] to (TakeoffSpeed)\n        end\n        change y by (1)\n    end\n    if <key (up arrow v) pressed?> then\n        change y by (-1)\n        if <<touching (level v)?> or <touching (moving platforms v)?>> then\n            set [fallspeed v] to (TakeoffSpeed)\n        end\n        change y by (1)\n    end\nend\n\ndefine Simulate gravity\nchange y by (FallSpeed)\nif <<touching (level v)?> or <touching (moving platforms v)?>> then\n    if <(FallSpeed) < [0]> then\n        set [reversestep v] to [1]\n    else\n        set [reversestep v] to [-1]\n    end\n    repeat until <not <<touching (level v)?> or <touching (moving platforms v)?>>>\n        change y by (ReverseStep)\n    end\n    set [fallspeed v] to [0]\nelse\n    change [fallspeed v] by (Gravity)\nend\n\nwhen flag clicked\nforever\n    if <touching (infection v)?> then\n        broadcast (GAME OVER v)\n    end\nend\n\nwhen [down arrow v] key pressed\nswitch costume to (down v)\nwait until <not <key (down arrow v) pressed?>>\nswitch costume to (left v)\n\nwhen [s v] key pressed\nswitch costume to (down v)\nwait until <not <key (s v) pressed?>>\nswitch costume to (left v)\n\nwhen I receive [level restart v]\nif <(Level) = [1]> then\n    broadcast (Level 1 v)\n    go to x: (-1) y: (200)\nelse\n    if <(Level) = [2]> then\n        broadcast (Level 2 v)\n        go to x: (-200) y: (146)\n    else\n        if <(Level) = [3]> then\n            broadcast (Level 3 v)\n            go to x: (195) y: (3)\n        else\n            if <(Level) = [4]> then\n                broadcast (Level 4 v)\n                go to x: (-50) y: (10)\n            else\n                if <(Level) = [5]> then\n                    broadcast (Level 5 v)\n                    go to x: (-112) y: (60)\n                else\n                    if <(Level) = [6]> then\n                        broadcast (Level 6 v)\n                        go to x: (-214) y: (-41)\n                    else\n                        if <(Level) = [7]> then\n                            broadcast (Level 7 v)\n                            go to x: (10) y: (-19)\n                        else\n                            broadcast (Level 8 v)\n                            go to x: (-204) y: (-58)\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen [e v] key pressed\nif <(moveable) = [yes]> then\n    if <(Cloak?) = [True]> then\n        if <(costume [name v]) = [Right]> then\n            broadcast (DashR v)\n            change x by (30)\n            wait (0.03) seconds\n            change x by (30)\n            wait (0.03) seconds\n            change x by (30)\n        else\n            broadcast (DashL v)\n            change x by (-30)\n            wait (0.03) seconds\n            change x by (-30)\n            wait (0.03) seconds\n            change x by (-30)\n        end\n    else\n        if <(costume [name v]) = [Right]> then\n            switch costume to (noper v)\n        else\n            switch costume to (nopel v)\n        end\n    end\nend\n\nwhen [r v] key pressed\nif <(Blast) = [True]> then\n    if <(costume [name v]) = [Right]> then\n        broadcast (Blast v)\n        wait (2) seconds\n    else\n        broadcast (BlastL v)\n        wait (2) seconds\n    end\nelse\n    if <(costume [name v]) = [Right]> then\n        switch costume to (noper v)\n    else\n        switch costume to (nopel v)\n    end\nend\n\nwhen I receive [game over v]\nswitch costume to (shade v)\nrepeat (25)\n    wait (0.1) seconds\n    change [ghost v] effect by (4)\nend\n\nwhen I receive [dashl v]\nswitch costume to (left dash v)\nwait (0.5) seconds\nswitch costume to (left v)\n\nwhen I receive [dashr v]\nswitch costume to (right2 v)\nwait (0.5) seconds\nswitch costume to (right v)\n\nwhen I receive [start v]\nset [moveable v] to [yes]\nforever\n    if <touching (door enter v)?> then\n        change [level v] by (1)\n        if <(Level) = [2]> then\n            broadcast (Level 2 v)\n            go to x: (-200) y: (146)\n        else\n            if <(Level) = [3]> then\n                broadcast (Level 3 v)\n                go to x: (195) y: (3)\n            else\n                if <(Level) = [4]> then\n                    broadcast (Level 4 v)\n                    go to x: (-50) y: (10)\n                else\n                    if <(Level) = [5]> then\n                        broadcast (Level 5 v)\n                        go to x: (-107) y: (60)\n                    else\n                        if <(Level) = [6]> then\n                            broadcast (Level 6 v)\n                            go to x: (-214) y: (-41)\n                        else\n                            if <(Level) = [7]> then\n                                broadcast (Level 7 v)\n                                go to x: (-231) y: (-83)\n                            else\n                                if <(Level) = [8]> then\n                                    broadcast (Level 8 v)\n                                    go to x: (-204) y: (-58)\n                                    wait (2) seconds\n                                    set [moveable v] to [no]\n                                    switch costume to (right3 v)\n                                    wait (1) seconds\n                                    switch costume to (behind v)\n                                    wait (3) seconds\n                                    set [moveable v] to [yes]\n                                else\n                                    if <(Level) = [9]> then\n                                        broadcast (Level 9 v)\n                                        go to x: (10) y: (-19)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n@Level\n\nwhen flag clicked\ngo to x: (42) y: (14)\nswitch costume to (costume1 v)\n\nwhen I receive [level 2 v]\nswitch costume to (costume2 v)\n\nwhen I receive [level 3 v]\nswitch costume to (costume3 v)\n\nwhen I receive [level 4 v]\nswitch costume to (costume4 v)\n\nwhen I receive [level 5 v]\nswitch costume to (costume5 v)\n\nwhen I receive [level 1 v]\nswitch costume to (costume1 v)\n\nwhen I receive [level 6 v]\nswitch costume to (costume6  v)\n\nwhen I receive [level 7 v]\nswitch costume to (costume7 v)\n\nwhen I receive [level 8 v]\nshow\nswitch costume to (costume8 v)\nwait (3) seconds\nhide\n\nwhen I receive [level 9 v]\nswitch costume to (end? v)\n\nwhen flag clicked\ngo to x: (40) y: (20)\nshow\n\n@Door\n\nwhen flag clicked\ngo to x: (-190) y: (-124)\nshow\n\nwhen I receive [level 2 v]\ngo to x: (-189) y: (-117)\n\nwhen I receive [level 3 v]\ngo to x: (-182) y: (-107)\n\nwhen I receive [level 4 v]\ngo to x: (187) y: (6)\n\nwhen I receive [level 5 v]\ngo to x: (191) y: (126)\n\nwhen I receive [level 6 v]\ngo to x: (198) y: (49)\n\nwhen I receive [level 7 v]\ngo to x: (-148) y: (125)\n\nwhen I receive [level 8 v]\ngo to x: (205) y: (-38)\nhide\n\nwhen I receive [level 9 v]\nhide\n\n@Words\n\nwhen flag clicked\ngo to x: (36) y: (28)\nswitch costume to (costume1 v)\ngo to [front v] layer\nshow\n\nwhen I receive [level 2 v]\nshow\nswitch costume to (costume2 v)\n\nwhen I receive [level 3 v]\nshow\nswitch costume to (costume3 v)\n\nwhen I receive [level 4 v]\nhide\n\nwhen I receive [level 5 v]\nshow\nswitch costume to (costume5 v)\n\nwhen I receive [level 1 v]\nshow\nswitch costume to (costume1 v)\n\nwhen I receive [level 9 v]\nshow\nswitch costume to (end v)\n\nwhen I receive [level 6 v]\nshow\nswitch costume to (costume 6 v)\n\nwhen I receive [cloak v]\nswitch costume to (cloak v)\nwait (3.3) seconds\nhide\n\nwhen I receive [level 7 v]\nhide\n\nwhen I receive [level 8 v]\nhide\n\nwhen I receive [game over v]\nshow\nset [ghost v] effect to (100)\nswitch costume to (game over v)\nrepeat (20)\n    wait (0.01) seconds\n    change [ghost v] effect by (-5)\nend\n\n@Infection\n\nwhen flag clicked\nswitch costume to (bubble v)\nhide\n\nwhen I receive [level 3 v]\ngo to x: (87) y: (-115)\nshow\n\nwhen I receive [level 4 v]\nswitch costume to ( 3 bubbles v)\ngo to x: (4) y: (-166)\n\nwhen I receive [level 5 v]\nhide\n\nwhen I receive [level 1 v]\nhide\n\nwhen I receive [level 6 v]\nhide\n\nwhen I start as a clone\nswitch costume to (bubble v)\ngo to x: (132) y: (-164)\n\nwhen I receive [level 9 v]\nhide\n\n@Door Enter\n\nwhen flag clicked\ngo to x: (-188) y: (-114)\nshow\n\nwhen I receive [level 3 v]\ngo to x: (-181) y: (-91)\n\nwhen I receive [level 4 v]\ngo to x: (192) y: (18)\n\nwhen I receive [level 5 v]\ngo to x: (200) y: (138)\n\nwhen I receive [level 1 v]\ngo to x: (-189) y: (-122)\n\nwhen I receive [level 7 v]\ngo to x: (-133) y: (118)\n\nwhen I receive [level 6 v]\ngo to x: (196) y: (49)\n\nwhen I receive [level 8 v]\ngo to x: (211) y: (-37)\nhide\n\nwhen I receive [level 9 v]\nhide\n\n@Restart Button\n\nwhen flag clicked\nswitch costume to (costume1 v)\ngo to x: (-218) y: (149)\ngo to [front v] layer\ngo to [front v] layer\n\nwhen this sprite clicked\nbroadcast (Level Restart v)\n\nswitch costume to (costume2 v)\n\nwhen I receive [game over v]\n\n@Mothwing Cloak\n\nwhen flag clicked\nhide\nswitch costume to (costume1 v)\nrepeat until <(Cloak?) = [True]>\n    switch costume to (costume2 v)\n    wait (0.1) seconds\n    switch costume to (costume3 v)\n    wait (0.1) seconds\n    switch costume to (costume1 v)\n    wait (0.1) seconds\n    switch costume to (costume2 v)\nend\nforever\n    go to (player v)\nend\n\nwhen I receive [level 5 v]\ngo to x: (50) y: (70)\nshow\nrepeat until <(Cloak?) = [True]>\n    if <touching (player v)?> then\n        hide\n        broadcast (Cloak v)\n        set [cloak? v] to [True]\n    end\nend\n\nwhen I receive [dashl v]\nswitch costume to (dash l2 v)\nshow\nwait (0.1) seconds\nswitch costume to (dash l v)\nwait (0.1) seconds\nswitch costume to (dash l2 v)\nwait (0.1) seconds\nhide\n\nwhen I receive [dashr v]\nswitch costume to (dash r2 v)\nshow\nwait (0.1) seconds\nswitch costume to (dash r v)\nwait (0.1) seconds\nswitch costume to (dash r2 v)\nwait (0.1) seconds\nhide\n\nwhen I receive [game over v]\nstop [other scripts in sprite v]\n\n@Blast\n\nwhen flag clicked\nset [blast used v] to [0]\nswitch costume to (costume2 v)\nhide\nforever\n    if <(Blast Used) = [1]> then\n        wait (2) seconds\n    else\n        go to (player v)\n    end\nend\n\nwhen I receive [blast v]\nset [blast used v] to [1]\nswitch costume to (absorb v)\nshow\nwait (0.1) seconds\nswitch costume to (absorb2 v)\nwait (0.1) seconds\nswitch costume to (costume2 v)\nwait (0.1) seconds\nswitch costume to (blastr v)\nrepeat (9)\n    move (15) steps\n    wait (0.0000000001) seconds\nend\nhide\nset [blast used v] to [0]\n\nwhen I receive [blastl v]\nset [blast used v] to [1]\nswitch costume to (absorb v)\nshow\nwait (0.1) seconds\nswitch costume to (absorb2 v)\nwait (0.1) seconds\nswitch costume to (costume2 v)\nwait (0.1) seconds\nswitch costume to (blastl v)\nrepeat (9)\n    move (-15) steps\n    wait (0.0000000001) seconds\nend\nhide\nset [blast used v] to [0]\n\nwhen I receive [game over v]\nstop [other scripts in sprite v]\n\n@Item Name\n\nwhen I receive [cloak v]\nshow\nglide (0.3) secs to x: (5) y: (-125)\nwait (3) seconds\nglide (0.3) secs to x: (9) y: (-165)\nhide\n\nwhen flag clicked\ngo to x: (9) y: (-165)\nhide\n\n@guy\n\nwhen flag clicked\nhide\n\nwhen I receive [game over v]\nstop [other scripts in sprite v]\n\n@Sprite1\n\nwhen flag clicked\nswitch costume to (costume1 v)\nshow\ngo to [back v] layer\nset [ghost v] effect to (75)\n\nwhen [m v] key pressed\nhide\n\nwhen I receive [level 8 v]\nswitch costume to (costume2 v)\nshow\ngo to [back v] layer\nset [ghost v] effect to (75)\nwait (3) seconds\ngo to [front v] layer\nrepeat (15)\n    wait (0.01) seconds\n    change [ghost v] effect by (-5)\nend\n\n@infected skeleton guy\n\nwhen flag clicked\ngo to [back v] layer\ngo [forward v] (1) layers\nhide\n\nwhen I receive [level 8 v]\nwait (2) seconds\ngo to x: (0) y: (-200)\nswitch costume to (costume2 v)\nshow\nglide (0.5) secs to x: (0) y: (23)\nwait (0.2) seconds\nswitch costume to (costume1 v)\nwait (0.3) seconds\nswitch costume to (costume3 v)\n\n@cutscene\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\nwhen flag clicked\nshow\nrepeat (3)\n    switch costume to (evil dude costume a v)\n    wait (0.3) seconds\n    switch costume to (evil dude costume a2 v)\n    wait (0.3) seconds\n    switch costume to (costume5 v)\n    wait (0.3) seconds\n    switch costume to (evil dude costume a2 v)\n    wait (0.3) seconds\nend\nswitch costume to (costume7 v)\nwait (0.1) seconds\nswitch costume to (costume6 v)\nwait (0.1) seconds\nswitch costume to (costume14 v)\nwait (2) seconds\nswitch costume to (costume10 v)\nwait (0.05) seconds\nswitch costume to (costume11 v)\nwait (0.05) seconds\nswitch costume to (costume12 v)\nwait (0.05) seconds\nswitch costume to (costume13 v)\nwait (0.1) seconds\nswitch costume to (costume8 v)\nwait (0.5) seconds\nrepeat (20)\n    wait (0.05) seconds\n    change [ghost v] effect by (5)\nend\nbroadcast (start v)\nhide\n\n@boss\n\nwhen flag clicked\nhide\n\n