Showing preview only (302K chars total). Download the full file or copy to clipboard to get everything.
Repository: sohomsahaun/SnowState
Branch: master
Commit: 0d5fbbf4e7c8
Files: 112
Total size: 272.9 KB
Directory structure:
gitextract_3opgkkmb/
├── .gitattributes
├── LICENSE
├── README.md
├── SnowState.yyp
├── fonts/
│ └── fDemo/
│ └── fDemo.yy
├── notes/
│ └── Credits/
│ ├── Credits.txt
│ └── Credits.yy
├── objects/
│ ├── oCamera/
│ │ ├── Alarm_0.gml
│ │ ├── Create_0.gml
│ │ ├── Step_0.gml
│ │ └── oCamera.yy
│ ├── oCloud/
│ │ ├── Step_0.gml
│ │ └── oCloud.yy
│ ├── oEffect/
│ │ ├── Other_7.gml
│ │ └── oEffect.yy
│ ├── oGame/
│ │ ├── Alarm_0.gml
│ │ ├── Create_0.gml
│ │ ├── Draw_64.gml
│ │ ├── Step_0.gml
│ │ └── oGame.yy
│ ├── oPlayerD/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── KeyRelease_82.gml
│ │ ├── Other_25.gml
│ │ ├── Other_76.gml
│ │ ├── Step_0.gml
│ │ └── oPlayerD.yy
│ ├── oPlayerT/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── KeyRelease_82.gml
│ │ ├── Other_25.gml
│ │ ├── Other_76.gml
│ │ ├── Step_0.gml
│ │ └── oPlayerT.yy
│ ├── oSwordD/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── Other_25.gml
│ │ ├── Step_0.gml
│ │ └── oSwordD.yy
│ ├── oSwordT/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── Other_25.gml
│ │ ├── Step_0.gml
│ │ └── oSwordT.yy
│ └── oWall/
│ └── oWall.yy
├── options/
│ ├── amazonfire/
│ │ └── options_amazonfire.yy
│ ├── android/
│ │ └── options_android.yy
│ ├── html5/
│ │ └── options_html5.yy
│ ├── ios/
│ │ └── options_ios.yy
│ ├── linux/
│ │ └── options_linux.yy
│ ├── mac/
│ │ └── options_mac.yy
│ ├── main/
│ │ └── options_main.yy
│ ├── operagx/
│ │ └── options_operagx.yy
│ ├── ps4/
│ │ └── options_ps4.yy
│ ├── ps5/
│ │ └── options_ps5.yy
│ ├── switch/
│ │ └── options_switch.yy
│ ├── tvos/
│ │ └── options_tvos.yy
│ ├── windows/
│ │ └── options_windows.yy
│ ├── windowsuap/
│ │ └── options_windowsuap.yy
│ └── xboxseriesxs/
│ └── options_xboxseriesxs.yy
├── rooms/
│ └── rDemo/
│ ├── RoomCreationCode.gml
│ └── rDemo.yy
├── scripts/
│ ├── MACROS/
│ │ ├── MACROS.gml
│ │ └── MACROS.yy
│ ├── SnowState/
│ │ ├── SnowState.gml
│ │ └── SnowState.yy
│ ├── Utility/
│ │ ├── Utility.gml
│ │ └── Utility.yy
│ └── __snowstate_config/
│ ├── __snowstate_config.gml
│ └── __snowstate_config.yy
├── sprites/
│ ├── bgBigCloud/
│ │ └── bgBigCloud.yy
│ ├── bgSky/
│ │ └── bgSky.yy
│ ├── sBackTreeRegular/
│ │ └── sBackTreeRegular.yy
│ ├── sBackTreeRight/
│ │ └── sBackTreeRight.yy
│ ├── sFrontTreeTop/
│ │ └── sFrontTreeTop.yy
│ ├── sPlayerFall/
│ │ └── sPlayerFall.yy
│ ├── sPlayerIdle/
│ │ └── sPlayerIdle.yy
│ ├── sPlayerJump/
│ │ └── sPlayerJump.yy
│ ├── sPlayerMask/
│ │ └── sPlayerMask.yy
│ ├── sPlayerRun/
│ │ └── sPlayerRun.yy
│ ├── sPlayerSwordAirAttack1/
│ │ └── sPlayerSwordAirAttack1.yy
│ ├── sPlayerSwordAirAttack2/
│ │ └── sPlayerSwordAirAttack2.yy
│ ├── sPlayerSwordAttack1/
│ │ └── sPlayerSwordAttack1.yy
│ ├── sPlayerSwordAttack2/
│ │ └── sPlayerSwordAttack2.yy
│ ├── sPlayerSwordAttack3/
│ │ └── sPlayerSwordAttack3.yy
│ ├── sPlayerSwordFall/
│ │ └── sPlayerSwordFall.yy
│ ├── sPlayerSwordIdle/
│ │ └── sPlayerSwordIdle.yy
│ ├── sPlayerSwordJump/
│ │ └── sPlayerSwordJump.yy
│ ├── sPlayerSwordRun/
│ │ └── sPlayerSwordRun.yy
│ ├── sPlayerSwordThrowSword/
│ │ └── sPlayerSwordThrowSword.yy
│ ├── sSmallCloud1/
│ │ └── sSmallCloud1.yy
│ ├── sSmallCloud2/
│ │ └── sSmallCloud2.yy
│ ├── sSmallCloud3/
│ │ └── sSmallCloud3.yy
│ ├── sSwordEffectAirAttack1/
│ │ └── sSwordEffectAirAttack1.yy
│ ├── sSwordEffectAirAttack2/
│ │ └── sSwordEffectAirAttack2.yy
│ ├── sSwordEffectAttack1/
│ │ └── sSwordEffectAttack1.yy
│ ├── sSwordEffectAttack2/
│ │ └── sSwordEffectAttack2.yy
│ ├── sSwordEffectAttack3/
│ │ └── sSwordEffectAttack3.yy
│ ├── sSwordEmbedded/
│ │ └── sSwordEmbedded.yy
│ ├── sSwordEmbeddedMask/
│ │ └── sSwordEmbeddedMask.yy
│ ├── sSwordIdle/
│ │ └── sSwordIdle.yy
│ ├── sSwordMask/
│ │ └── sSwordMask.yy
│ ├── sSwordSpinning/
│ │ └── sSwordSpinning.yy
│ ├── sWall/
│ │ └── sWall.yy
│ ├── sWater/
│ │ └── sWater.yy
│ ├── sWaterReflection/
│ │ └── sWaterReflection.yy
│ ├── stFrontTreeBody/
│ │ └── stFrontTreeBody.yy
│ ├── stGrass/
│ │ └── stGrass.yy
│ └── stTerrain/
│ └── stTerrain.yy
└── tilesets/
├── tFrontTreeBody/
│ └── tFrontTreeBody.yy
├── tGrass/
│ └── tGrass.yy
└── tTerrain/
└── tTerrain.yy
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.yy linguist-language=Game Maker Language
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2020 Sohom Sahaun
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<h1 align="center">SnowState 3.1.4</h1>
<p align="center">@sohomsahaun</p>
---
**SnowState** is a robust finite state machine for GameMaker Studio 2.3+. It's easy to set up and keeps the code neat and organized. No more managing a thousand different scripts for an object, it's all in one place!
You can find downloadable .yyz (project file with demo) and .yymps (SnowState only) in the [Releases](https://github.com/sohomsahaun/SnowState/releases) tab.
<p align="center">
<img src="https://user-images.githubusercontent.com/27750907/124273546-f4c82480-db61-11eb-8df2-36948a7a4c07.gif">
</p>
## Documentation
To know more about SnowState, please visit the [Wiki](https://github.com/sohomsahaun/SnowState/wiki)!
## Awards
SnowState has been awarded as a winner of the [Helpful Dev Jam](https://gamemaker.io/en/blog/helpful-dev-jam-winners).
It was also nominated as a finalist of the [GameMaker Awards 2024](https://gamemaker.io/en/blog/gamemaker-awards-2024-winners) for the 'Best Tool' category.

## Note
This version of SnowState is for GameMaker Studio 2022.9.1 or higher. If you are using earlier version(s) of GameMaker Studio, please check out earlier version(s) of SnowState.
================================================
FILE: SnowState.yyp
================================================
{
"resourceType": "GMProject",
"resourceVersion": "1.6",
"name": "SnowState",
"resources": [
{"id":{"name":"oWall","path":"objects/oWall/oWall.yy",},"order":4,},
{"id":{"name":"sPlayerIdle","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"order":1,},
{"id":{"name":"sBackTreeRegular","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"order":0,},
{"id":{"name":"sBackTreeRight","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"order":1,},
{"id":{"name":"tTerrain","path":"tilesets/tTerrain/tTerrain.yy",},"order":5,},
{"id":{"name":"sPlayerSwordAttack1","path":"sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy",},"order":7,},
{"id":{"name":"bgBigCloud","path":"sprites/bgBigCloud/bgBigCloud.yy",},"order":0,},
{"id":{"name":"rDemo","path":"rooms/rDemo/rDemo.yy",},"order":0,},
{"id":{"name":"sPlayerFall","path":"sprites/sPlayerFall/sPlayerFall.yy",},"order":0,},
{"id":{"name":"sPlayerSwordAirAttack1","path":"sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy",},"order":5,},
{"id":{"name":"__snowstate_config","path":"scripts/__snowstate_config/__snowstate_config.yy",},"order":0,},
{"id":{"name":"oCloud","path":"objects/oCloud/oCloud.yy",},"order":1,},
{"id":{"name":"sPlayerMask","path":"sprites/sPlayerMask/sPlayerMask.yy",},"order":3,},
{"id":{"name":"sSmallCloud3","path":"sprites/sSmallCloud3/sSmallCloud3.yy",},"order":4,},
{"id":{"name":"sSwordEffectAttack2","path":"sprites/sSwordEffectAttack2/sSwordEffectAttack2.yy",},"order":3,},
{"id":{"name":"tGrass","path":"tilesets/tGrass/tGrass.yy",},"order":4,},
{"id":{"name":"sSmallCloud1","path":"sprites/sSmallCloud1/sSmallCloud1.yy",},"order":2,},
{"id":{"name":"sSwordEmbeddedMask","path":"sprites/sSwordEmbeddedMask/sSwordEmbeddedMask.yy",},"order":3,},
{"id":{"name":"sPlayerSwordFall","path":"sprites/sPlayerSwordFall/sPlayerSwordFall.yy",},"order":10,},
{"id":{"name":"SnowState","path":"scripts/SnowState/SnowState.yy",},"order":1,},
{"id":{"name":"stGrass","path":"sprites/stGrass/stGrass.yy",},"order":1,},
{"id":{"name":"sPlayerJump","path":"sprites/sPlayerJump/sPlayerJump.yy",},"order":2,},
{"id":{"name":"Credits","path":"notes/Credits/Credits.yy",},"order":0,},
{"id":{"name":"sSwordEffectAirAttack2","path":"sprites/sSwordEffectAirAttack2/sSwordEffectAirAttack2.yy",},"order":1,},
{"id":{"name":"oPlayerT","path":"objects/oPlayerT/oPlayerT.yy",},"order":0,},
{"id":{"name":"Utility","path":"scripts/Utility/Utility.yy",},"order":1,},
{"id":{"name":"sWater","path":"sprites/sWater/sWater.yy",},"order":5,},
{"id":{"name":"sPlayerSwordJump","path":"sprites/sPlayerSwordJump/sPlayerSwordJump.yy",},"order":12,},
{"id":{"name":"oSwordD","path":"objects/oSwordD/oSwordD.yy",},"order":1,},
{"id":{"name":"sPlayerSwordIdle","path":"sprites/sPlayerSwordIdle/sPlayerSwordIdle.yy",},"order":11,},
{"id":{"name":"sSwordEffectAttack3","path":"sprites/sSwordEffectAttack3/sSwordEffectAttack3.yy",},"order":4,},
{"id":{"name":"sPlayerSwordThrowSword","path":"sprites/sPlayerSwordThrowSword/sPlayerSwordThrowSword.yy",},"order":14,},
{"id":{"name":"sSwordEffectAirAttack1","path":"sprites/sSwordEffectAirAttack1/sSwordEffectAirAttack1.yy",},"order":0,},
{"id":{"name":"sSmallCloud2","path":"sprites/sSmallCloud2/sSmallCloud2.yy",},"order":3,},
{"id":{"name":"stTerrain","path":"sprites/stTerrain/stTerrain.yy",},"order":2,},
{"id":{"name":"sPlayerRun","path":"sprites/sPlayerRun/sPlayerRun.yy",},"order":4,},
{"id":{"name":"sPlayerSwordAttack2","path":"sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy",},"order":8,},
{"id":{"name":"sFrontTreeTop","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"order":2,},
{"id":{"name":"oCamera","path":"objects/oCamera/oCamera.yy",},"order":0,},
{"id":{"name":"sSwordEffectAttack1","path":"sprites/sSwordEffectAttack1/sSwordEffectAttack1.yy",},"order":2,},
{"id":{"name":"sSwordEmbedded","path":"sprites/sSwordEmbedded/sSwordEmbedded.yy",},"order":2,},
{"id":{"name":"tFrontTreeBody","path":"tilesets/tFrontTreeBody/tFrontTreeBody.yy",},"order":3,},
{"id":{"name":"oSwordT","path":"objects/oSwordT/oSwordT.yy",},"order":1,},
{"id":{"name":"sSwordMask","path":"sprites/sSwordMask/sSwordMask.yy",},"order":5,},
{"id":{"name":"MACROS","path":"scripts/MACROS/MACROS.yy",},"order":0,},
{"id":{"name":"oEffect","path":"objects/oEffect/oEffect.yy",},"order":2,},
{"id":{"name":"sPlayerSwordRun","path":"sprites/sPlayerSwordRun/sPlayerSwordRun.yy",},"order":13,},
{"id":{"name":"bgSky","path":"sprites/bgSky/bgSky.yy",},"order":1,},
{"id":{"name":"fDemo","path":"fonts/fDemo/fDemo.yy",},"order":0,},
{"id":{"name":"stFrontTreeBody","path":"sprites/stFrontTreeBody/stFrontTreeBody.yy",},"order":0,},
{"id":{"name":"sPlayerSwordAttack3","path":"sprites/sPlayerSwordAttack3/sPlayerSwordAttack3.yy",},"order":9,},
{"id":{"name":"sSwordSpinning","path":"sprites/sSwordSpinning/sSwordSpinning.yy",},"order":6,},
{"id":{"name":"sWall","path":"sprites/sWall/sWall.yy",},"order":5,},
{"id":{"name":"sWaterReflection","path":"sprites/sWaterReflection/sWaterReflection.yy",},"order":6,},
{"id":{"name":"oGame","path":"objects/oGame/oGame.yy",},"order":3,},
{"id":{"name":"sSwordIdle","path":"sprites/sSwordIdle/sSwordIdle.yy",},"order":4,},
{"id":{"name":"sPlayerSwordAirAttack2","path":"sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy",},"order":6,},
{"id":{"name":"oPlayerD","path":"objects/oPlayerD/oPlayerD.yy",},"order":0,},
],
"Options": [
{"name":"Amazon Fire","path":"options/amazonfire/options_amazonfire.yy",},
{"name":"Android","path":"options/android/options_android.yy",},
{"name":"iOS","path":"options/ios/options_ios.yy",},
{"name":"Linux","path":"options/linux/options_linux.yy",},
{"name":"macOS","path":"options/mac/options_mac.yy",},
{"name":"Main","path":"options/main/options_main.yy",},
{"name":"tvOS","path":"options/tvos/options_tvos.yy",},
{"name":"Windows","path":"options/windows/options_windows.yy",},
{"name":"HTML5","path":"options/html5/options_html5.yy",},
{"name":"operagx","path":"options/operagx/options_operagx.yy",},
{"name":"PlayStation 4","path":"options/ps4/options_ps4.yy",},
{"name":"PlayStation 5","path":"options/ps5/options_ps5.yy",},
{"name":"Switch","path":"options/switch/options_switch.yy",},
{"name":"Xbox Series XS","path":"options/xboxseriesxs/options_xboxseriesxs.yy",},
],
"defaultScriptType": 1,
"isEcma": false,
"configs": {
"name": "Default",
"children": [],
},
"RoomOrderNodes": [
{"roomId":{"name":"rDemo","path":"rooms/rDemo/rDemo.yy",},},
],
"Folders": [
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Demo Objects - Direct","folderPath":"folders/Demo Objects - Direct.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Demo Objects - Triggered Transitions","folderPath":"folders/Demo Objects - Triggered Transitions.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Fonts","folderPath":"folders/Fonts.yy","order":3,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Notes","folderPath":"folders/Notes.yy","order":9,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Objects","folderPath":"folders/Objects.yy","order":5,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Rooms","folderPath":"folders/Rooms.yy","order":8,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Scripts","folderPath":"folders/Scripts.yy","order":4,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"SnowState","folderPath":"folders/SnowState.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Sprites","folderPath":"folders/Sprites.yy","order":1,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Background","folderPath":"folders/Sprites/Background.yy","order":1,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Player","folderPath":"folders/Sprites/Player.yy","order":2,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Sword","folderPath":"folders/Sprites/Sword.yy","order":3,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Effects","folderPath":"folders/Sprites/Sword/Effects.yy","order":1,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Tree","folderPath":"folders/Sprites/Tree.yy","order":4,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Tile Sets","folderPath":"folders/Tile Sets.yy","order":2,},
],
"AudioGroups": [
{"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,},
],
"TextureGroups": [
{"resourceType":"GMTextureGroup","resourceVersion":"1.3","name":"Default","isScaled":true,"compressFormat":"bz2","loadType":"default","directory":"","autocrop":true,"border":2,"mipsToGenerate":0,"groupParent":null,"targets":-1,},
],
"IncludedFiles": [],
"MetaData": {
"IDEVersion": "2022.9.1.51",
},
}
================================================
FILE: fonts/fDemo/fDemo.yy
================================================
{
"hinting": 0,
"glyphOperations": 0,
"interpreter": 0,
"pointRounding": 0,
"fontName": "Consolas",
"styleName": "Regular",
"size": 16.0,
"bold": false,
"italic": false,
"charset": 0,
"AntiAlias": 1,
"first": 0,
"last": 0,
"sampleText": "abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)",
"includeTTF": false,
"TTFName": "",
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"ascenderOffset": 0,
"glyphs": {
"32": {"x":2,"y":2,"w":12,"h":25,"character":32,"shift":12,"offset":0,},
"33": {"x":51,"y":83,"w":4,"h":25,"character":33,"shift":12,"offset":4,},
"34": {"x":42,"y":83,"w":7,"h":25,"character":34,"shift":12,"offset":2,},
"35": {"x":28,"y":83,"w":12,"h":25,"character":35,"shift":12,"offset":0,},
"36": {"x":16,"y":83,"w":10,"h":25,"character":36,"shift":12,"offset":1,},
"37": {"x":2,"y":83,"w":12,"h":25,"character":37,"shift":12,"offset":0,},
"38": {"x":240,"y":56,"w":12,"h":25,"character":38,"shift":12,"offset":0,},
"39": {"x":235,"y":56,"w":3,"h":25,"character":39,"shift":12,"offset":4,},
"40": {"x":227,"y":56,"w":6,"h":25,"character":40,"shift":12,"offset":3,},
"41": {"x":218,"y":56,"w":7,"h":25,"character":41,"shift":12,"offset":2,},
"42": {"x":57,"y":83,"w":9,"h":25,"character":42,"shift":12,"offset":1,},
"43": {"x":205,"y":56,"w":11,"h":25,"character":43,"shift":12,"offset":0,},
"44": {"x":186,"y":56,"w":6,"h":25,"character":44,"shift":12,"offset":2,},
"45": {"x":177,"y":56,"w":7,"h":25,"character":45,"shift":12,"offset":2,},
"46": {"x":170,"y":56,"w":5,"h":25,"character":46,"shift":12,"offset":3,},
"47": {"x":159,"y":56,"w":9,"h":25,"character":47,"shift":12,"offset":1,},
"48": {"x":146,"y":56,"w":11,"h":25,"character":48,"shift":12,"offset":0,},
"49": {"x":134,"y":56,"w":10,"h":25,"character":49,"shift":12,"offset":1,},
"50": {"x":122,"y":56,"w":10,"h":25,"character":50,"shift":12,"offset":1,},
"51": {"x":110,"y":56,"w":10,"h":25,"character":51,"shift":12,"offset":1,},
"52": {"x":97,"y":56,"w":11,"h":25,"character":52,"shift":12,"offset":0,},
"53": {"x":194,"y":56,"w":9,"h":25,"character":53,"shift":12,"offset":1,},
"54": {"x":68,"y":83,"w":10,"h":25,"character":54,"shift":12,"offset":1,},
"55": {"x":80,"y":83,"w":10,"h":25,"character":55,"shift":12,"offset":1,},
"56": {"x":92,"y":83,"w":10,"h":25,"character":56,"shift":12,"offset":1,},
"57": {"x":87,"y":110,"w":10,"h":25,"character":57,"shift":12,"offset":1,},
"58": {"x":81,"y":110,"w":4,"h":25,"character":58,"shift":12,"offset":4,},
"59": {"x":73,"y":110,"w":6,"h":25,"character":59,"shift":12,"offset":2,},
"60": {"x":62,"y":110,"w":9,"h":25,"character":60,"shift":12,"offset":1,},
"61": {"x":50,"y":110,"w":10,"h":25,"character":61,"shift":12,"offset":1,},
"62": {"x":39,"y":110,"w":9,"h":25,"character":62,"shift":12,"offset":2,},
"63": {"x":30,"y":110,"w":7,"h":25,"character":63,"shift":12,"offset":3,},
"64": {"x":16,"y":110,"w":12,"h":25,"character":64,"shift":12,"offset":0,},
"65": {"x":2,"y":110,"w":12,"h":25,"character":65,"shift":12,"offset":0,},
"66": {"x":232,"y":83,"w":10,"h":25,"character":66,"shift":12,"offset":1,},
"67": {"x":219,"y":83,"w":11,"h":25,"character":67,"shift":12,"offset":0,},
"68": {"x":207,"y":83,"w":10,"h":25,"character":68,"shift":12,"offset":1,},
"69": {"x":197,"y":83,"w":8,"h":25,"character":69,"shift":12,"offset":2,},
"70": {"x":187,"y":83,"w":8,"h":25,"character":70,"shift":12,"offset":2,},
"71": {"x":174,"y":83,"w":11,"h":25,"character":71,"shift":12,"offset":0,},
"72": {"x":162,"y":83,"w":10,"h":25,"character":72,"shift":12,"offset":1,},
"73": {"x":151,"y":83,"w":9,"h":25,"character":73,"shift":12,"offset":1,},
"74": {"x":141,"y":83,"w":8,"h":25,"character":74,"shift":12,"offset":1,},
"75": {"x":129,"y":83,"w":10,"h":25,"character":75,"shift":12,"offset":1,},
"76": {"x":118,"y":83,"w":9,"h":25,"character":76,"shift":12,"offset":2,},
"77": {"x":104,"y":83,"w":12,"h":25,"character":77,"shift":12,"offset":0,},
"78": {"x":85,"y":56,"w":10,"h":25,"character":78,"shift":12,"offset":1,},
"79": {"x":72,"y":56,"w":11,"h":25,"character":79,"shift":12,"offset":0,},
"80": {"x":60,"y":56,"w":10,"h":25,"character":80,"shift":12,"offset":1,},
"81": {"x":22,"y":29,"w":12,"h":25,"character":81,"shift":12,"offset":0,},
"82": {"x":2,"y":29,"w":10,"h":25,"character":82,"shift":12,"offset":1,},
"83": {"x":235,"y":2,"w":10,"h":25,"character":83,"shift":12,"offset":1,},
"84": {"x":222,"y":2,"w":11,"h":25,"character":84,"shift":12,"offset":0,},
"85": {"x":210,"y":2,"w":10,"h":25,"character":85,"shift":12,"offset":1,},
"86": {"x":196,"y":2,"w":12,"h":25,"character":86,"shift":12,"offset":0,},
"87": {"x":182,"y":2,"w":12,"h":25,"character":87,"shift":12,"offset":0,},
"88": {"x":168,"y":2,"w":12,"h":25,"character":88,"shift":12,"offset":0,},
"89": {"x":154,"y":2,"w":12,"h":25,"character":89,"shift":12,"offset":0,},
"90": {"x":142,"y":2,"w":10,"h":25,"character":90,"shift":12,"offset":1,},
"91": {"x":14,"y":29,"w":6,"h":25,"character":91,"shift":12,"offset":3,},
"92": {"x":130,"y":2,"w":10,"h":25,"character":92,"shift":12,"offset":1,},
"93": {"x":108,"y":2,"w":7,"h":25,"character":93,"shift":12,"offset":2,},
"94": {"x":96,"y":2,"w":10,"h":25,"character":94,"shift":12,"offset":1,},
"95": {"x":82,"y":2,"w":12,"h":25,"character":95,"shift":12,"offset":0,},
"96": {"x":73,"y":2,"w":7,"h":25,"character":96,"shift":12,"offset":0,},
"97": {"x":62,"y":2,"w":9,"h":25,"character":97,"shift":12,"offset":1,},
"98": {"x":50,"y":2,"w":10,"h":25,"character":98,"shift":12,"offset":1,},
"99": {"x":39,"y":2,"w":9,"h":25,"character":99,"shift":12,"offset":1,},
"100": {"x":28,"y":2,"w":9,"h":25,"character":100,"shift":12,"offset":1,},
"101": {"x":16,"y":2,"w":10,"h":25,"character":101,"shift":12,"offset":1,},
"102": {"x":117,"y":2,"w":11,"h":25,"character":102,"shift":12,"offset":0,},
"103": {"x":36,"y":29,"w":11,"h":25,"character":103,"shift":12,"offset":0,},
"104": {"x":162,"y":29,"w":9,"h":25,"character":104,"shift":12,"offset":1,},
"105": {"x":49,"y":29,"w":10,"h":25,"character":105,"shift":12,"offset":1,},
"106": {"x":39,"y":56,"w":8,"h":25,"character":106,"shift":12,"offset":1,},
"107": {"x":27,"y":56,"w":10,"h":25,"character":107,"shift":12,"offset":1,},
"108": {"x":15,"y":56,"w":10,"h":25,"character":108,"shift":12,"offset":1,},
"109": {"x":2,"y":56,"w":11,"h":25,"character":109,"shift":12,"offset":0,},
"110": {"x":232,"y":29,"w":9,"h":25,"character":110,"shift":12,"offset":1,},
"111": {"x":219,"y":29,"w":11,"h":25,"character":111,"shift":12,"offset":0,},
"112": {"x":207,"y":29,"w":10,"h":25,"character":112,"shift":12,"offset":1,},
"113": {"x":196,"y":29,"w":9,"h":25,"character":113,"shift":12,"offset":1,},
"114": {"x":185,"y":29,"w":9,"h":25,"character":114,"shift":12,"offset":2,},
"115": {"x":49,"y":56,"w":9,"h":25,"character":115,"shift":12,"offset":1,},
"116": {"x":173,"y":29,"w":10,"h":25,"character":116,"shift":12,"offset":0,},
"117": {"x":151,"y":29,"w":9,"h":25,"character":117,"shift":12,"offset":1,},
"118": {"x":138,"y":29,"w":11,"h":25,"character":118,"shift":12,"offset":0,},
"119": {"x":124,"y":29,"w":12,"h":25,"character":119,"shift":12,"offset":0,},
"120": {"x":111,"y":29,"w":11,"h":25,"character":120,"shift":12,"offset":0,},
"121": {"x":98,"y":29,"w":11,"h":25,"character":121,"shift":12,"offset":0,},
"122": {"x":87,"y":29,"w":9,"h":25,"character":122,"shift":12,"offset":1,},
"123": {"x":76,"y":29,"w":9,"h":25,"character":123,"shift":12,"offset":1,},
"124": {"x":71,"y":29,"w":3,"h":25,"character":124,"shift":12,"offset":4,},
"125": {"x":61,"y":29,"w":8,"h":25,"character":125,"shift":12,"offset":2,},
"126": {"x":99,"y":110,"w":11,"h":25,"character":126,"shift":12,"offset":0,},
"9647": {"x":112,"y":110,"w":13,"h":25,"character":9647,"shift":20,"offset":4,},
},
"kerningPairs": [],
"ranges": [
{"lower":32,"upper":127,},
{"lower":9647,"upper":9647,},
],
"regenerateBitmap": false,
"canGenerateBitmap": true,
"maintainGms1Font": false,
"parent": {
"name": "Fonts",
"path": "folders/Fonts.yy",
},
"resourceVersion": "1.0",
"name": "fDemo",
"tags": [],
"resourceType": "GMFont",
}
================================================
FILE: notes/Credits/Credits.txt
================================================
ART ASSETS
-----------
Treasure Hunters | Pixel Frog
https://pixelfrog-assets.itch.io/treasure-hunters
================================================
FILE: notes/Credits/Credits.yy
================================================
{
"parent": {
"name": "Notes",
"path": "folders/Notes.yy",
},
"resourceVersion": "1.1",
"name": "Credits",
"tags": [],
"resourceType": "GMNotes",
}
================================================
FILE: objects/oCamera/Alarm_0.gml
================================================
window_center();
================================================
FILE: objects/oCamera/Create_0.gml
================================================
// Stay in the correct layer
if (layer_exists("Controllers")) layer = layer_get_id("Controllers");
width = 480;
height = 270;
targetPos = [x,y];
targetInst = (DEMO == "D") ? oPlayerD : oPlayerT;
rate = 2;
// Resize window and app surface
scale = 2;
var _width = width*scale, _height = height*scale;
window_set_size(_width, _height);
surface_resize(application_surface, _width, _height);
display_set_gui_size(_width, _height);
// Resize camera
camera_set_view_size(CAM, width, height);
// Room settings
view_enabled = true;
view_visible[0] = true;
// Center Window
alarm[0] = 1;
// State Machine
fsm = new SnowState("instance");
fsm
.add("instance", {
step: function() {
var _targ = targetInst;
if (!instance_exists(_targ)) return;
var _cw = CAM_W, _ch = CAM_H;
var _rate = rate;
x = clamp(_targ.x-_cw/2., 0, room_width -_cw);
y = clamp(_targ.y-_ch/2., 0, room_height-_ch);
camera_set_view_pos(CAM, lerp_smooth(CAM_X, x, _rate),
lerp_smooth(CAM_Y, y, _rate));
}
});
================================================
FILE: objects/oCamera/Step_0.gml
================================================
fsm.step();
================================================
FILE: objects/oCamera/oCamera.yy
================================================
{
"resourceType": "GMObject",
"resourceVersion": "1.0",
"name": "oCamera",
"spriteId": null,
"solid": false,
"visible": true,
"managed": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Objects",
"path": "folders/Objects.yy",
},
}
================================================
FILE: objects/oCloud/Step_0.gml
================================================
if (bbox_right < 0) instance_destroy();
================================================
FILE: objects/oCloud/oCloud.yy
================================================
{
"spriteId": null,
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Objects",
"path": "folders/Objects.yy",
},
"resourceVersion": "1.0",
"name": "oCloud",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: objects/oEffect/Other_7.gml
================================================
instance_destroy();
================================================
FILE: objects/oEffect/oEffect.yy
================================================
{
"spriteId": null,
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"isDnD":false,"eventNum":7,"eventType":7,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Objects",
"path": "folders/Objects.yy",
},
"resourceVersion": "1.0",
"name": "oEffect",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: objects/oGame/Alarm_0.gml
================================================
var _x = room_width + random_range(0, 100);
var _y = random_range(80, 180);
with (instance_create_layer(_x, _y, "SmallClouds", oCloud)) {
sprite_index = choose(sSmallCloud1, sSmallCloud2, sSmallCloud3);
hspeed = -random_range(.2, .4);
}
alarm[0] = irandom_range(5, 15) * game_get_speed(gamespeed_fps);
================================================
FILE: objects/oGame/Create_0.gml
================================================
randomize();
showControls = false;
showHistory = false;
alarm[0] = 1;
================================================
FILE: objects/oGame/Draw_64.gml
================================================
draw_set_font(fDemo);
draw_set_halign(fa_right);
draw_set_valign(fa_bottom);
var _x, _y, _diff, _thickness;
_diff = 24;
_thickness = 1;
_x = display_get_gui_width()-10;
_y = display_get_gui_height()-10;
if (showControls) {
draw_text_outline(_x, _y, "F2 = Hide Controls", c_white, c_black, _thickness);
_y -= _diff; draw_text_outline(_x, _y, "H = Show/Hide history", c_white, c_black, _thickness);
_y -= _diff; draw_text_outline(_x, _y, "C/Q = Recall the sword", c_white, c_black, _thickness);
_y -= _diff; draw_text_outline(_x, _y, "X/E = Throw the sword", c_white, c_black, _thickness);
_y -= _diff; draw_text_outline(_x, _y, "Z/Space = Attack the sword", c_white, c_black, _thickness);
_y -= _diff; draw_text_outline(_x, _y, "Arrow Keys = Movement and Jump", c_white, c_black, _thickness);
} else {
draw_text_outline(_x, _y, "F2 = Show Controls", c_black, c_white, _thickness);
}
if (showHistory) {
draw_set_halign(fa_left);
draw_set_valign(fa_top);
_x = 10;
_y = 10;
var _player, _states, _str, _i, _col;
_player = (DEMO == "D") ? oPlayerD : oPlayerT;
_states = _player.fsm.history_get();
_str = "groundAttack3";
draw_set_alpha(.9);
draw_rectangle_color(0, 0, 20+string_width(_str), display_get_gui_height(),
c_black, c_black, c_black, c_black, 0);
draw_set_alpha(1);
draw_text_color(_x, _y, "HISTORY", c_white, c_white, c_white, c_white, 1);
_y += 10;
_col = c_white;
_i = 0; repeat (array_length(_states)) {
_str = _states[_i];
_y += _diff;
draw_text_color(_x, _y, _str, _col, _col, _col, _col, 1);
_col = c_gray;
++_i;
}
}
================================================
FILE: objects/oGame/Step_0.gml
================================================
showControls ^= keyboard_check_released(vk_f2);
showHistory ^= keyboard_check_released(ord("H"));
================================================
FILE: objects/oGame/oGame.yy
================================================
{
"spriteId": null,
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Objects",
"path": "folders/Objects.yy",
},
"resourceVersion": "1.0",
"name": "oGame",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: objects/oPlayerD/Create_0.gml
================================================
// Setup
mask_index = sPlayerMask;
// Declare methods
event_user(15);
// Sprite management
sprites = {};
init_sprites(
"idle", "Idle",
"run", "Run",
"jump", "Jump",
"fall", "Fall",
"groundAttack1", "Attack1",
"groundAttack2", "Attack2",
"groundAttack3", "Attack3",
"airAttack1", "AirAttack1",
"airAttack2", "AirAttack2",
"throwSword", "ThrowSword"
);
effectSprites = {};
init_effect_sprites(
"groundAttack1", "Attack1",
"groundAttack2", "Attack2",
"groundAttack3", "Attack3",
"airAttack1", "AirAttack1",
"airAttack2", "AirAttack2"
);
// Variables
spd = 3;
hspd = 0;
vspd = 0;
vspdMax = 15;
jspd = 12;
gravGround = .6; // Normal gravity
gravAttack = .05; // Low gravity when air attacking
grav = gravGround;
face = 1;
hasSword = 1;
coyoteDuration = 8;
nextAttack = false;
canAirAttack = true;
// Input
input = {};
check_input();
// State Machine
fsm = new SnowState("idle");
fsm
.history_enable()
.history_set_max_size(20)
.event_set_default_function("draw", function() {
// Draw this no matter what state we are in
// (Unless it is overridden, ofcourse)
draw_sprite_ext(sprite_index, image_index, x, y, face * image_xscale, image_yscale, image_angle, image_blend, image_alpha);
})
.add("idle", {
enter: function() {
sprite_index = get_sprite();
image_speed = 1;
hspd = 0;
vspd = 0;
},
step: function() {
// If left or right keys are pressed, run
if (abs(input.hdir)) {
fsm.change("run");
return;
}
// If jump key is pressed, jump
if (input.jump) {
fsm.change("jump");
return;
}
if (hasSword) {
// If attack key is pressed, go into groundAttack1
if (input.attack) {
fsm.change("groundAttack1");
return;
}
// Throw the sword
if (input.throwSword && hasSword) {
fsm.change("throwSword");
return;
}
} else {
// Recall the sword
recall_sword();
}
// Movement
apply_gravity();
collide_and_move();
// Check if I'm flating
if (!on_ground()) {
fsm.change("fall");
return;
}
}
})
.add("run", {
enter: function() {
sprite_index = get_sprite();
image_speed = 1;
},
step: function() {
var _dir = input.hdir;
hspd = spd * _dir;
// If left and right keys are not pressed, switch back to idle
if (_dir == 0) {
fsm.change("idle");
return;
}
face = _dir;
// If jump key is pressed, jump
if (input.jump) {
fsm.change("jump");
return;
}
if (hasSword) {
// If attack key is pressed, go into groundAttack1
if (input.attack) {
fsm.change("groundAttack1");
return;
}
// Throw the sword
if (input.throwSword && hasSword) {
fsm.change("throwSword");
return;
}
} else {
// Recall the sword
recall_sword();
}
// Movement
apply_gravity();
collide_and_move();
// Check if I'm flating
if (!on_ground()) {
fsm.change("fall");
return;
}
}
})
.add("jump", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
vspd = -jspd; // Jump
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
// Throw the sword
if (input.throwSword && hasSword) {
fsm.change("throwSword");
return;
}
// Recall the sword
recall_sword();
// Movement
apply_gravity();
collide_and_move();
// Check when we should start falling
if (vspd >= 0) {
fsm.change("fall");
return;
}
}
})
.add("fall", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
// If I have not done air attack when falling now, activate air attack
// Air attack can be done once when falling
if (fsm.state_is("airAttack", fsm.get_previous_state())) canAirAttack = false;
else canAirAttack = true;
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
var _dir = input.hdir;
hspd = spd * _dir;
if (_dir != 0) face = _dir;
if (hasSword) {
// If attack key is pressed, go into airAttack1
if (input.attack && canAirAttack) {
fsm.change("airAttack1");
return;
}
// Throw the sword
if (input.throwSword) {
fsm.change("throwSword");
return;
}
} else {
// Recall the sword
recall_sword();
}
// Coyote time
if ((fsm.get_time(false) <= coyoteDuration) && input.jump) {
// Apply only if we were running
if (fsm.get_previous_state() == "run") {
fsm.change("jump");
return;
}
}
// Movement
apply_gravity();
collide_and_move();
// Check when we land
if (on_ground()) {
fsm.change("idle");
return;
}
}
})
.add("attack", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
nextAttack = false;
// Create effect
var _sprite = effectSprites[$ fsm.get_current_state()];
var _face = face;
var _x = x + _face * 8;
with (instance_create_depth(_x, y, depth, oEffect)) {
sprite_index = _sprite;
image_xscale = _face;
}
},
step: function() {
// If attack key is pressed any time during the current state,
// go to the next attack state after the animation ends
if (input.attack) {
nextAttack = true;
}
}
})
.add_child("attack", "groundAttack", {
/// @override
enter: function() {
fsm.inherit();
// Stop
hspd = 0;
vspd = 0;
},
/// @override
step: function() {
fsm.inherit();
// When the animation ends, go to the next attack state if attack has been pressed
// Otherwise, just go idle
if (animation_end()) {
if (nextAttack) {
var _state = fsm.get_current_state();
var _curr = real(string_digits(_state));
var _next = string_letters(_state) + string(_curr+1);
fsm.change(_next);
} else {
fsm.change("idle");
}
return;
}
}
})
.add_child("groundAttack", "groundAttack1")
.add_child("groundAttack", "groundAttack2")
.add_child("groundAttack", "groundAttack3", {
/// @override
step: function() {
// When the animation ends, go to idle state
if (animation_end()) {
fsm.change("idle");
return;
}
}
})
.add_child("attack", "airAttack", {
/// @override
enter: function() {
fsm.inherit();
// Lower the gravity
grav = gravAttack;
vspd = 0;
},
/// @override
step: function() {
fsm.inherit();
// Go down, slowly
apply_gravity();
collide_and_move();
// Check when we land
if (on_ground()) {
fsm.change("idle");
return;
}
// When the animation ends, go to the next attack state if attack has been pressed
// Otherwise, just back to falling again
if (animation_end()) {
if (nextAttack) {
var _state = fsm.get_current_state();
var _curr = real(string_digits(_state));
var _next = string_letters(_state) + string(_curr+1);
fsm.change(_next);
} else {
fsm.change("fall");
}
return;
}
},
leave: function() {
grav = gravGround;
}
})
.add_child("airAttack", "airAttack1")
.add_child("airAttack", "airAttack2", {
/// @override
step: function() {
// Go down, slowly
apply_gravity();
collide_and_move();
// When the animation ends, go to fall state again
if (animation_end()) {
fsm.change("fall");
return;
}
}
})
.add("throwSword", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
hspd = 0;
vspd = 0;
// Lower the gravity
grav = gravAttack;
},
step: function() {
if (animation_end()) {
// Switch the state to idle or fall,
// depending on what the previous state was
var _state = "idle";
if (fsm.get_previous_state() == "jump") _state = "fall";
if (fsm.get_previous_state() == "fall") _state = "fall";
fsm.change(_state);
return;
}
// Movement
apply_gravity();
collide_and_move();
},
throwSword: function() {
if (event_data[? "event_type"] == "sprite event") {
spawn_sword();
// Unequip the sword
hasSword = false;
}
},
leave: function() {
grav = gravGround;
}
});
================================================
FILE: objects/oPlayerD/Draw_0.gml
================================================
fsm.draw();
================================================
FILE: objects/oPlayerD/KeyRelease_82.gml
================================================
game_restart();
================================================
FILE: objects/oPlayerD/Other_25.gml
================================================
/// @desc Methods
init_sprites = function() {
var _i = 0; repeat (argument_count div 2) {
var _noSword = asset_get_index("sPlayer" + argument[_i+1]);
if (_noSword == -1) _noSword = sPlayerIdle;
var _sword = asset_get_index("sPlayerSword" + argument[_i+1]);
if (_sword == -1) _sword = sPlayerSwordIdle;
sprites[$ argument[_i]] = [_noSword, _sword];
_i += 2;
}
};
init_effect_sprites = function() {
var _i = 0; repeat (argument_count div 2) {
var _effect = asset_get_index("sSwordEffect" + argument[_i+1]);
effectSprites[$ argument[_i]] = _effect;
_i += 2;
}
};
get_sprite = function() {
return sprites[$ fsm.get_current_state()][@ hasSword];
};
check_input = function() {
with (input) {
hdir = max(keyboard_check(ord("D")), keyboard_check(vk_right)) -
max(keyboard_check(ord("A")), keyboard_check(vk_left));
jump = max(keyboard_check_pressed(ord("W")), keyboard_check_pressed(vk_up));
attack = max(keyboard_check_pressed(ord("Z")), keyboard_check_pressed(vk_space));
throwSword = max(keyboard_check_pressed(ord("E")), keyboard_check_pressed(ord("X")));
recallSword = max(keyboard_check_pressed(ord("Q")), keyboard_check_pressed(ord("C")));
}
};
on_ground = function() {
return (place_meeting(x, y+1, oWall));
};
apply_gravity = function() {
vspd = min(vspd+grav, vspdMax);
};
collide_and_move = function() {
if (place_meeting(x+hspd, y, oWall)) {
while (!place_meeting(x+sign(hspd), y, oWall)) x += sign(hspd);
hspd = 0;
}
x += hspd;
if (place_meeting(x, y+vspd, oWall)) {
while (!place_meeting(x, y+sign(vspd), oWall)) y += sign(vspd);
vspd = 0;
}
y += vspd;
};
spawn_sword = function() {
with (instance_create_depth(x+6*face, y-14, depth, oSwordD)) {
owner = other.id;
face = owner.face;
fsm.change("spinning");
}
};
equip_sword = function() {
hasSword = true;
sprite_index = get_sprite();
};
recall_sword = function() {
if (!hasSword && input.recallSword) {
var _sword = instance_find(oSwordD, 0);
_sword.recall();
}
};
================================================
FILE: objects/oPlayerD/Other_76.gml
================================================
fsm.throwSword();
================================================
FILE: objects/oPlayerD/Step_0.gml
================================================
check_input();
fsm.step();
================================================
FILE: objects/oPlayerD/oPlayerD.yy
================================================
{
"resourceType": "GMObject",
"resourceVersion": "1.0",
"name": "oPlayerD",
"spriteId": {
"name": "sPlayerIdle",
"path": "sprites/sPlayerIdle/sPlayerIdle.yy",
},
"solid": false,
"visible": true,
"managed": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":25,"eventType":7,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":82,"eventType":10,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":76,"eventType":7,"collisionObjectId":null,},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Demo Objects - Direct",
"path": "folders/Demo Objects - Direct.yy",
},
}
================================================
FILE: objects/oPlayerT/Create_0.gml
================================================
// Setup
mask_index = sPlayerMask;
// Declare methods
event_user(15);
// Sprite management
sprites = {};
init_sprites(
"idle", "Idle",
"run", "Run",
"jump", "Jump",
"fall", "Fall",
"groundAttack1", "Attack1",
"groundAttack2", "Attack2",
"groundAttack3", "Attack3",
"airAttack1", "AirAttack1",
"airAttack2", "AirAttack2",
"throwSword", "ThrowSword"
);
effectSprites = {};
init_effect_sprites(
"groundAttack1", "Attack1",
"groundAttack2", "Attack2",
"groundAttack3", "Attack3",
"airAttack1", "AirAttack1",
"airAttack2", "AirAttack2"
);
// Variables
spd = 3;
hspd = 0;
vspd = 0;
vspdMax = 15;
jspd = 12;
gravGround = .6; // Normal gravity
gravAttack = .05; // Low gravity when air attacking
grav = gravGround;
face = 1;
hasSword = 1;
coyoteDuration = 8;
nextAttack = false;
canAirAttack = true;
// Input
input = {};
check_input();
// State Machine
fsm = new SnowState("idle");
fsm
.history_enable()
.history_set_max_size(20)
.event_set_default_function("draw", function() {
// Draw this no matter what state we are in
// (Unless it is overridden, ofcourse)
draw_sprite_ext(sprite_index, image_index, x, y, face * image_xscale, image_yscale, image_angle, image_blend, image_alpha);
})
.add("idle", {
enter: function() {
sprite_index = get_sprite();
image_speed = 1;
hspd = 0;
vspd = 0;
},
step: function() {
recall_sword();
apply_gravity();
collide_and_move();
}
})
.add("run", {
enter: function() {
sprite_index = get_sprite();
image_speed = 1;
},
step: function() {
set_movement();
recall_sword();
apply_gravity();
collide_and_move();
}
})
.add("jump", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
vspd = -jspd; // Jump
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
recall_sword();
apply_gravity();
collide_and_move();
}
})
.add("fall", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
// If I have not done air attack when falling now, activate air attack
// Air attack can be done once when falling
if (fsm.state_is("airAttack", fsm.get_previous_state())) canAirAttack = false;
else canAirAttack = true;
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
set_movement();
recall_sword();
apply_gravity();
collide_and_move();
}
})
.add("attack", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
nextAttack = false;
// Create effect
var _sprite = effectSprites[$ fsm.get_current_state()];
var _face = face;
var _x = x + _face * 8;
with (instance_create_depth(_x, y, depth, oEffect)) {
sprite_index = _sprite;
image_xscale = _face;
}
},
step: function() {
// If attack key is pressed any time during the current state,
// go to the next attack state after the animation ends
if (input.attack) {
nextAttack = true;
}
}
})
.add_child("attack", "groundAttack", {
/// @override
enter: function() {
fsm.inherit();
// Stop
hspd = 0;
vspd = 0;
},
})
.add_child("groundAttack", "groundAttack1")
.add_child("groundAttack", "groundAttack2")
.add_child("groundAttack", "groundAttack3")
.add_child("attack", "airAttack", {
/// @override
enter: function() {
fsm.inherit();
// Lower the gravity
grav = gravAttack;
vspd = 0;
},
/// @override
step: function() {
fsm.inherit();
// Go down, slowly
apply_gravity();
collide_and_move();
},
leave: function() {
grav = gravGround;
}
})
.add_child("airAttack", "airAttack1")
.add_child("airAttack", "airAttack2", {
/// @override
step: function() {
// Go down, slowly
apply_gravity();
collide_and_move();
}
})
.add("throwSword", {
enter: function() {
sprite_index = get_sprite();
image_index = 0;
image_speed = 1;
hspd = 0;
vspd = 0;
// Lower the gravity
grav = gravAttack;
},
step: function() {
// Movement
apply_gravity();
collide_and_move();
},
throwSword: function() {
if (event_data[? "event_type"] == "sprite event") {
spawn_sword();
// Unequip the sword
hasSword = false;
}
},
leave: function() {
grav = gravGround;
}
})
.add_transition("t_run", "idle", "run")
.add_transition("t_jump", ["idle", "run"], "jump")
.add_transition("t_attack", ["idle", "run"], "groundAttack1", function() { return hasSword; })
.add_transition("t_attack", "fall", "airAttack1", function() { return (hasSword && canAirAttack); })
.add_transition("t_throw", ["idle", "run", "jump", "fall"], "throwSword", function() { return hasSword; })
.add_transition("t_coyote", "fall", "jump", function() {
return (input.jump && (fsm.get_previous_state() == "run") && (fsm.get_time(false) <= coyoteDuration));
})
.add_transition("t_transition", ["idle", "run"], "fall", function() { return !on_ground(); })
.add_transition("t_transition", "jump", "fall", function() { return (vspd >= 0); })
.add_transition("t_transition", "run", "idle", function() { return (input.hdir == 0); })
.add_transition("t_transition", ["fall", "airAttack"], "idle", function() { return on_ground(); })
.add_transition("t_transition", "groundAttack1", "groundAttack2", function() { return (nextAttack && animation_end()); })
.add_transition("t_transition", "groundAttack1", "idle", function() { return animation_end(); })
.add_transition("t_transition", "groundAttack2", "groundAttack3", function() { return (nextAttack && animation_end()); })
.add_transition("t_transition", ["groundAttack2", "groundAttack3"], "idle", function() { return animation_end(); })
.add_transition("t_transition", "airAttack1", "airAttack2", function() { return (nextAttack && animation_end()); })
.add_transition("t_transition", ["airAttack1", "airAttack2"], "fall", function() { return animation_end(); })
.add_transition("t_transition", "throwSword", "fall", function() { return ((fsm.get_previous_state() == "jump") && animation_end()); })
.add_transition("t_transition", "throwSword", "fall", function() { return ((fsm.get_previous_state() == "fall") && animation_end()); })
.add_transition("t_transition", "throwSword", "idle", function() { return animation_end(); });
================================================
FILE: objects/oPlayerT/Draw_0.gml
================================================
fsm.draw();
================================================
FILE: objects/oPlayerT/KeyRelease_82.gml
================================================
game_restart();
================================================
FILE: objects/oPlayerT/Other_25.gml
================================================
/// @desc Methods
init_sprites = function() {
var _i = 0; repeat (argument_count div 2) {
var _noSword = asset_get_index("sPlayer" + argument[_i+1]);
if (_noSword == -1) _noSword = sPlayerIdle;
var _sword = asset_get_index("sPlayerSword" + argument[_i+1]);
if (_sword == -1) _sword = sPlayerSwordIdle;
sprites[$ argument[_i]] = [_noSword, _sword];
_i += 2;
}
};
init_effect_sprites = function() {
var _i = 0; repeat (argument_count div 2) {
var _effect = asset_get_index("sSwordEffect" + argument[_i+1]);
effectSprites[$ argument[_i]] = _effect;
_i += 2;
}
};
get_sprite = function() {
return sprites[$ fsm.get_current_state()][@ hasSword];
};
check_input = function() {
with (input) {
hdir = max(keyboard_check(ord("D")), keyboard_check(vk_right)) -
max(keyboard_check(ord("A")), keyboard_check(vk_left));
jump = max(keyboard_check_pressed(ord("W")), keyboard_check_pressed(vk_up));
attack = max(keyboard_check_pressed(ord("Z")), keyboard_check_pressed(vk_space));
throwSword = max(keyboard_check_pressed(ord("E")), keyboard_check_pressed(ord("X")));
recallSword = max(keyboard_check_pressed(ord("Q")), keyboard_check_pressed(ord("C")));
}
};
on_ground = function() {
return (place_meeting(x, y+1, oWall));
};
apply_gravity = function() {
vspd = min(vspd+grav, vspdMax);
};
set_movement = function() {
var _dir = input.hdir;
hspd = spd * _dir;
if (_dir != 0) face = _dir;
};
collide_and_move = function() {
if (place_meeting(x+hspd, y, oWall)) {
while (!place_meeting(x+sign(hspd), y, oWall)) x += sign(hspd);
hspd = 0;
}
x += hspd;
if (place_meeting(x, y+vspd, oWall)) {
while (!place_meeting(x, y+sign(vspd), oWall)) y += sign(vspd);
vspd = 0;
}
y += vspd;
};
spawn_sword = function() {
with (instance_create_depth(x+6*face, y-14, depth, oSwordT)) {
owner = other.id;
face = owner.face;
fsm.trigger("t_spin");
}
};
equip_sword = function() {
hasSword = true;
sprite_index = get_sprite();
};
recall_sword = function() {
if (!hasSword && input.recallSword) {
var _sword = instance_find(oSwordT, 0);
_sword.recall();
}
};
================================================
FILE: objects/oPlayerT/Other_76.gml
================================================
fsm.throwSword();
================================================
FILE: objects/oPlayerT/Step_0.gml
================================================
check_input();
fsm.trigger("t_coyote");
fsm.step();
if (abs(input.hdir)) fsm.trigger("t_run");
if (input.jump) fsm.trigger("t_jump");
if (input.throwSword) fsm.trigger("t_throw");
if (input.attack) fsm.trigger("t_attack");
fsm.trigger("t_transition");
================================================
FILE: objects/oPlayerT/oPlayerT.yy
================================================
{
"resourceType": "GMObject",
"resourceVersion": "1.0",
"name": "oPlayerT",
"spriteId": {
"name": "sPlayerIdle",
"path": "sprites/sPlayerIdle/sPlayerIdle.yy",
},
"solid": false,
"visible": true,
"managed": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":25,"eventType":7,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":82,"eventType":10,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":76,"eventType":7,"collisionObjectId":null,},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Demo Objects - Triggered Transitions",
"path": "folders/Demo Objects - Triggered Transitions.yy",
},
}
================================================
FILE: objects/oSwordD/Create_0.gml
================================================
// Setup
mask_index = sSwordMask;
// Declare methods
event_user(15);
// Variables
owner = noone;
spd = 6;
hspd = 0;
face = 1;
// State Machine
fsm = new SnowState("NULL");
fsm
.event_set_default_function("draw", function() {
// Draw this no matter what state we are in
// (Unless it is overridden, ofcourse)
draw_sprite_ext(sprite_index, image_index, x, y, face * image_xscale, image_yscale, image_angle, image_blend, image_alpha);
})
.add("NULL", {})
.add("idle", {})
.add("spinning", {
enter: function() {
sprite_index = sSwordSpinning;
mask_index = sSwordMask;
image_speed = 1;
image_index = 0;
hspd = face * spd;
},
step: function() {
if (place_meeting(x+hspd, y, oWall)) {
fsm.change("embedded");
return;
}
x += hspd;
}
})
.add("embedded", {
enter: function() {
sprite_index = sSwordEmbedded;
mask_index = sSwordEmbeddedMask;
image_speed = 1;
image_index = 0;
// Embed into the wall
while (!place_meeting(x+hspd, y, oWall)) x += hspd;
while (!place_meeting(x+sign(hspd), y, oWall)) x += sign(hspd);
hspd = 0;
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
}
})
.add("recall", {
enter: function() {
sprite_index = sSwordSpinning;
mask_index = sSwordMask;
image_speed = 1;
image_index = 0;
speed = spd;
},
step: function() {
if (!instance_exists(owner)) {
instance_destroy();
return;
}
direction = point_direction(x, y, owner.x, owner.y-owner.sprite_height/2);
face = (x > xprevious) * 2 - 1;
if (place_meeting(x, y, owner)) {
owner.equip_sword();
instance_destroy();
return;
}
}
});
================================================
FILE: objects/oSwordD/Draw_0.gml
================================================
fsm.draw();
================================================
FILE: objects/oSwordD/Other_25.gml
================================================
/// @desc Methods
recall = function() {
if (instance_exists(owner) && fsm.state_is("embedded")) {
fsm.change("recall");
}
};
================================================
FILE: objects/oSwordD/Step_0.gml
================================================
fsm.step();
================================================
FILE: objects/oSwordD/oSwordD.yy
================================================
{
"spriteId": {
"name": "sSwordIdle",
"path": "sprites/sSwordIdle/sSwordIdle.yy",
},
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":25,"eventType":7,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Demo Objects - Direct",
"path": "folders/Demo Objects - Direct.yy",
},
"resourceVersion": "1.0",
"name": "oSwordD",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: objects/oSwordT/Create_0.gml
================================================
// Setup
mask_index = sSwordMask;
// Declare methods
event_user(15);
// Variables
owner = noone;
spd = 6;
hspd = 0;
face = 1;
// State Machine
fsm = new SnowState("NULL");
fsm
.event_set_default_function("draw", function() {
// Draw this no matter what state we are in
// (Unless it is overridden, ofcourse)
draw_sprite_ext(sprite_index, image_index, x, y, face * image_xscale, image_yscale, image_angle, image_blend, image_alpha);
})
.add("NULL")
.add("spinning", {
enter: function() {
sprite_index = sSwordSpinning;
mask_index = sSwordMask;
image_speed = 1;
image_index = 0;
hspd = face * spd;
},
step: function() {
x += hspd;
}
})
.add("embedded", {
enter: function() {
sprite_index = sSwordEmbedded;
mask_index = sSwordEmbeddedMask;
image_speed = 1;
image_index = 0;
// Embed into the wall
while (!place_meeting(x+hspd, y, oWall)) x += hspd;
while (!place_meeting(x+sign(hspd), y, oWall)) x += sign(hspd);
hspd = 0;
},
step: function() {
// Play the animation once
if (animation_end()) {
image_speed = 0;
image_index = image_number - 1;
}
}
})
.add("recall", {
enter: function() {
sprite_index = sSwordSpinning;
mask_index = sSwordMask;
image_speed = 1;
image_index = 0;
speed = spd;
},
step: function() {
if (instance_exists(owner)) {
direction = point_direction(x, y, owner.x, owner.y-owner.sprite_height/2);
face = (x > xprevious) * 2 - 1;
if (place_meeting(x, y, owner)) {
owner.equip_sword();
instance_destroy();
return;
}
}
}
})
.add_wildcard_transition("t_spin", "spinning")
.add_wildcard_transition("t_recall", "recall", function() {
return(instance_exists(owner) && fsm.state_is("embedded"));
})
.add_transition("t_pre_step", "spinning", "embedded", function() {
return place_meeting(x+hspd, y, oWall);
});
================================================
FILE: objects/oSwordT/Draw_0.gml
================================================
fsm.draw();
================================================
FILE: objects/oSwordT/Other_25.gml
================================================
/// @desc Methods
recall = function() {
fsm.trigger("t_recall");
};
================================================
FILE: objects/oSwordT/Step_0.gml
================================================
fsm.trigger("t_pre_step");
fsm.step();
================================================
FILE: objects/oSwordT/oSwordT.yy
================================================
{
"spriteId": {
"name": "sSwordIdle",
"path": "sprites/sSwordIdle/sSwordIdle.yy",
},
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [
{"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
{"isDnD":false,"eventNum":25,"eventType":7,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Demo Objects - Triggered Transitions",
"path": "folders/Demo Objects - Triggered Transitions.yy",
},
"resourceVersion": "1.0",
"name": "oSwordT",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: objects/oWall/oWall.yy
================================================
{
"spriteId": {
"name": "sWall",
"path": "sprites/sWall/sWall.yy",
},
"solid": false,
"visible": true,
"spriteMaskId": null,
"persistent": false,
"parentObjectId": null,
"physicsObject": false,
"physicsSensor": false,
"physicsShape": 1,
"physicsGroup": 1,
"physicsDensity": 0.5,
"physicsRestitution": 0.1,
"physicsLinearDamping": 0.1,
"physicsAngularDamping": 0.1,
"physicsFriction": 0.2,
"physicsStartAwake": true,
"physicsKinematic": false,
"physicsShapePoints": [],
"eventList": [],
"properties": [],
"overriddenProperties": [],
"parent": {
"name": "Objects",
"path": "folders/Objects.yy",
},
"resourceVersion": "1.0",
"name": "oWall",
"tags": [],
"resourceType": "GMObject",
}
================================================
FILE: options/amazonfire/options_amazonfire.yy
================================================
{
"option_amazonfire_sync_android": false,
"option_amazonfire_display_name": "Created with GameMaker Studio 2",
"option_amazonfire_version": "1.0.0.0",
"option_amazonfire_tools_from_version": false,
"option_amazonfire_build_tools": "",
"option_amazonfire_support_lib": "",
"option_amazonfire_target_sdk": "",
"option_amazonfire_minimum_sdk": "",
"option_amazonfire_compile_sdk": "",
"option_amazonfire_package_domain": "com",
"option_amazonfire_package_company": "company",
"option_amazonfire_package_product": "game",
"option_amazonfire_orient_portrait": true,
"option_amazonfire_orient_portrait_flipped": true,
"option_amazonfire_orient_landscape": true,
"option_amazonfire_orient_landscape_flipped": true,
"option_amazonfire_gamepad_support": true,
"option_amazonfire_lint": false,
"option_amazonfire_install_location": 0,
"option_amazonfire_sleep_margin": 4,
"option_amazonfire_splash_screens_landscape": "${base_options_dir}/amazonfire/splash/landscape.png",
"option_amazonfire_splash_screens_portrait": "${base_options_dir}/amazonfire/splash/portrait.png",
"option_amazonfire_splash_time": 0,
"option_amazonfire_launchscreen_fill": 0,
"option_amazonfire_splashscreen_background_colour": 255,
"option_amazonfire_tv_banner": "${base_options_dir}/amazonfire/tv_banner.png",
"option_amazonfire_interpolate_pixels": false,
"option_amazonfire_screen_depth": 0,
"option_amazonfire_scale": 0,
"option_amazonfire_texture_page": "2048x2048",
"option_amazonfire_icon_ldpi": "${base_options_dir}/android/icons/ldpi.png",
"option_amazonfire_icon_mdpi": "${base_options_dir}/android/icons/mdpi.png",
"option_amazonfire_icon_hdpi": "${base_options_dir}/android/icons/hdpi.png",
"option_amazonfire_icon_xhdpi": "${base_options_dir}/android/icons/xhdpi.png",
"option_amazonfire_icon_xxhdpi": "${base_options_dir}/android/icons/xxhdpi.png",
"option_amazonfire_icon_xxxhdpi": "${base_options_dir}/android/icons/xxxhdpi.png",
"option_amazonfire_permission_write_external_storage": false,
"option_amazonfire_permission_read_phone_state": false,
"option_amazonfire_permission_network_state": false,
"option_amazonfire_permission_internet": true,
"option_amazonfire_permission_bluetooth": true,
"option_amazonfire_permission_record_audio": false,
"option_amazonfire_application_tag_inject": "",
"resourceVersion": "1.0",
"name": "Amazon Fire",
"tags": [],
"resourceType": "GMAmazonFireOptions",
}
================================================
FILE: options/android/options_android.yy
================================================
{
"option_android_sync_amazon": false,
"option_android_display_name": "Created with GameMaker Studio 2",
"option_android_version": "1.0.0.0",
"option_android_tools_from_version": false,
"option_android_build_tools": "",
"option_android_support_lib": "",
"option_android_target_sdk": "",
"option_android_minimum_sdk": "",
"option_android_compile_sdk": "",
"option_android_package_domain": "com",
"option_android_package_company": "company",
"option_android_package_product": "game",
"option_android_arch_armv7": true,
"option_android_arch_x86": false,
"option_android_arch_arm64": false,
"option_android_arch_x86_64": false,
"option_android_orient_portrait": true,
"option_android_orient_portrait_flipped": true,
"option_android_orient_landscape": true,
"option_android_orient_landscape_flipped": true,
"option_android_gamepad_support": true,
"option_android_lint": false,
"option_android_install_location": 0,
"option_android_sleep_margin": 4,
"option_android_splash_screens_landscape": "${base_options_dir}/android/splash/landscape.png",
"option_android_splash_screens_portrait": "${base_options_dir}/android/splash/portrait.png",
"option_android_splash_time": 0,
"option_android_launchscreen_fill": 0,
"option_android_splashscreen_background_colour": 255,
"option_android_tv_banner": "${base_options_dir}/android/tv_banner.png",
"option_android_interpolate_pixels": false,
"option_android_screen_depth": 0,
"option_android_device_support": 0,
"option_android_scale": 0,
"option_android_texture_page": "2048x2048",
"option_android_icon_ldpi": "${base_options_dir}/android/icons/ldpi.png",
"option_android_icon_mdpi": "${base_options_dir}/android/icons/mdpi.png",
"option_android_icon_hdpi": "${base_options_dir}/android/icons/hdpi.png",
"option_android_icon_xhdpi": "${base_options_dir}/android/icons/xhdpi.png",
"option_android_icon_xxhdpi": "${base_options_dir}/android/icons/xxhdpi.png",
"option_android_icon_xxxhdpi": "${base_options_dir}/android/icons/xxxhdpi.png",
"option_android_icon_adaptive_generate": false,
"option_android_icon_adaptive_ldpi": "${base_options_dir}/android/icons_adaptive/ldpi.png",
"option_android_icon_adaptive_mdpi": "${base_options_dir}/android/icons_adaptive/mdpi.png",
"option_android_icon_adaptive_hdpi": "${base_options_dir}/android/icons_adaptive/hdpi.png",
"option_android_icon_adaptive_xhdpi": "${base_options_dir}/android/icons_adaptive/xhdpi.png",
"option_android_icon_adaptive_xxhdpi": "${base_options_dir}/android/icons_adaptive/xxhdpi.png",
"option_android_icon_adaptive_xxxhdpi": "${base_options_dir}/android/icons_adaptive/xxxhdpi.png",
"option_android_icon_adaptivebg_ldpi": "${base_options_dir}/android/icons_adaptivebg/ldpi.png",
"option_android_icon_adaptivebg_mdpi": "${base_options_dir}/android/icons_adaptivebg/mdpi.png",
"option_android_icon_adaptivebg_hdpi": "${base_options_dir}/android/icons_adaptivebg/hdpi.png",
"option_android_icon_adaptivebg_xhdpi": "${base_options_dir}/android/icons_adaptivebg/xhdpi.png",
"option_android_icon_adaptivebg_xxhdpi": "${base_options_dir}/android/icons_adaptivebg/xxhdpi.png",
"option_android_icon_adaptivebg_xxxhdpi": "${base_options_dir}/android/icons_adaptivebg/xxxhdpi.png",
"option_android_use_facebook": false,
"option_android_facebook_id": "",
"option_android_facebook_app_display_name": "",
"option_android_google_cloud_saving": false,
"option_android_google_services_app_id": "",
"option_android_permission_write_external_storage": false,
"option_android_permission_read_phone_state": false,
"option_android_permission_network_state": false,
"option_android_permission_internet": true,
"option_android_permission_bluetooth": true,
"option_android_permission_record_audio": false,
"option_android_application_tag_inject": "",
"option_android_google_apk_expansion": false,
"option_android_google_dynamic_asset_delivery": false,
"option_android_google_licensing_public_key": "",
"option_android_tv_isgame": true,
"resourceVersion": "1.0",
"name": "Android",
"tags": [],
"resourceType": "GMAndroidOptions",
}
================================================
FILE: options/html5/options_html5.yy
================================================
{
"option_html5_browser_title": "Created with GameMaker Studio 2",
"option_html5_version": "1.0.0.0",
"option_html5_foldername": "html5game",
"option_html5_outputname": "index.html",
"option_html5_splash_png": "${base_options_dir}/html5/splash.png",
"option_html5_usesplash": false,
"option_html5_outputdebugtoconsole": true,
"option_html5_display_cursor": true,
"option_html5_localrunalert": true,
"option_html5_index": "",
"option_html5_loadingbar": "",
"option_html5_jsprepend": "",
"option_html5_icon": "${base_options_dir}/html5/fav.ico",
"option_html5_allow_fullscreen": true,
"option_html5_interpolate_pixels": true,
"option_html5_centregame": false,
"option_html5_usebuiltinparticles": true,
"option_html5_usebuiltinfont": true,
"option_html5_webgl": 2,
"option_html5_scale": 0,
"option_html5_texture_page": "2048x2048",
"option_html5_use_facebook": false,
"option_html5_facebook_id": "",
"option_html5_facebook_app_display_name": "",
"option_html5_flurry_enable": false,
"option_html5_flurry_id": "",
"option_html5_google_analytics_enable": false,
"option_html5_google_tracking_id": "",
"resourceVersion": "1.0",
"name": "HTML5",
"tags": [],
"resourceType": "GMHtml5Options",
}
================================================
FILE: options/ios/options_ios.yy
================================================
{
"option_ios_display_name": "Created with GameMaker Studio 2",
"option_ios_bundle_name": "com.company.game",
"option_ios_version": "1.0.0.0",
"option_ios_output_dir": "~/gamemakerstudio2",
"option_ios_team_id": "",
"option_ios_orientation_portrait": true,
"option_ios_orientation_portrait_flipped": true,
"option_ios_orientation_landscape": true,
"option_ios_orientation_landscape_flipped": true,
"option_ios_devices": 2,
"option_ios_defer_home_indicator": false,
"option_ios_icon_iphone_app_120": "${base_options_dir}/ios/icons/app/iphone_120.png",
"option_ios_icon_iphone_app_180": "${base_options_dir}/ios/icons/app/iphone_180.png",
"option_ios_icon_ipad_app_76": "${base_options_dir}/ios/icons/app/ipad_76.png",
"option_ios_icon_ipad_app_152": "${base_options_dir}/ios/icons/app/ipad_152.png",
"option_ios_icon_ipad_pro_app_167": "${base_options_dir}/ios/icons/app/ipad_pro_167.png",
"option_ios_icon_iphone_notification_40": "${base_options_dir}/ios/icons/notification/iphone_40.png",
"option_ios_icon_iphone_notification_60": "${base_options_dir}/ios/icons/notification/iphone_60.png",
"option_ios_icon_ipad_notification_20": "${base_options_dir}/ios/icons/notification/ipad_20.png",
"option_ios_icon_ipad_notification_40": "${base_options_dir}/ios/icons/notification/ipad_40.png",
"option_ios_icon_iphone_spotlight_80": "${base_options_dir}/ios/icons/spotlight/iphone_80.png",
"option_ios_icon_iphone_spotlight_120": "${base_options_dir}/ios/icons/spotlight/iphone_120.png",
"option_ios_icon_ipad_spotlight_40": "${base_options_dir}/ios/icons/spotlight/ipad_40.png",
"option_ios_icon_ipad_spotlight_80": "${base_options_dir}/ios/icons/spotlight/ipad_80.png",
"option_ios_icon_iphone_settings_58": "${base_options_dir}/ios/icons/settings/iphone_58.png",
"option_ios_icon_iphone_settings_87": "${base_options_dir}/ios/icons/settings/iphone_87.png",
"option_ios_icon_ipad_settings_29": "${base_options_dir}/ios/icons/settings/ipad_29.png",
"option_ios_icon_ipad_settings_58": "${base_options_dir}/ios/icons/settings/ipad_58.png",
"option_ios_icon_itunes_artwork_1024": "${base_options_dir}/ios/icons/itunes/itunes_1024.png",
"option_ios_splashscreen_background_colour": 255,
"option_ios_launchscreen_image": "${base_options_dir}/ios/splash/launchscreen.png",
"option_ios_launchscreen_image_landscape": "${base_options_dir}/ios/splash/launchscreen-landscape.png",
"option_ios_launchscreen_fill": 0,
"option_ios_interpolate_pixels": false,
"option_ios_half_ipad1_textures": false,
"option_ios_scale": 0,
"option_ios_texture_page": "2048x2048",
"option_ios_use_facebook": false,
"option_ios_facebook_id": "",
"option_ios_facebook_app_display_name": "",
"option_ios_push_notifications": false,
"option_ios_apple_sign_in": false,
"option_ios_podfile_path": "${options_dir}/ios/Podfile",
"option_ios_podfile_lock_path": "${options_dir}/ios/Podfile.lock",
"resourceVersion": "1.3",
"name": "iOS",
"tags": [],
"resourceType": "GMiOSOptions",
}
================================================
FILE: options/linux/options_linux.yy
================================================
{
"option_linux_display_name": "Created with GameMaker Studio 2",
"option_linux_version": "1.0.0.0",
"option_linux_maintainer_email": "",
"option_linux_homepage": "http://www.yoyogames.com",
"option_linux_short_desc": "",
"option_linux_long_desc": "",
"option_linux_splash_screen": "${base_options_dir}/linux/splash/splash.png",
"option_linux_display_splash": false,
"option_linux_icon": "${base_options_dir}/linux/icons/64.png",
"option_linux_start_fullscreen": false,
"option_linux_allow_fullscreen": false,
"option_linux_interpolate_pixels": true,
"option_linux_display_cursor": true,
"option_linux_sync": false,
"option_linux_resize_window": false,
"option_linux_scale": 0,
"option_linux_texture_page": "2048x2048",
"option_linux_enable_steam": false,
"option_linux_disable_sandbox": false,
"resourceVersion": "1.0",
"name": "Linux",
"tags": [],
"resourceType": "GMLinuxOptions",
}
================================================
FILE: options/mac/options_mac.yy
================================================
{
"option_mac_display_name": "Created with GameMaker Studio 2",
"option_mac_app_id": "com.company.game",
"option_mac_version": "1.0.0.0",
"option_mac_output_dir": "~/gamemakerstudio2",
"option_mac_team_id": "",
"option_mac_signing_identity": "Developer ID Application:",
"option_mac_copyright": "",
"option_mac_splash_png": "${base_options_dir}/mac/splash/splash.png",
"option_mac_icon_png": "${base_options_dir}/mac/icons/1024.png",
"option_mac_installer_background_png": "${base_options_dir}/mac/splash/installer_background.png",
"option_mac_menu_dock": false,
"option_mac_display_cursor": true,
"option_mac_start_fullscreen": false,
"option_mac_allow_fullscreen": false,
"option_mac_interpolate_pixels": true,
"option_mac_vsync": false,
"option_mac_resize_window": false,
"option_mac_enable_retina": false,
"option_mac_scale": 0,
"option_mac_texture_page": "2048x2048",
"option_mac_build_app_store": false,
"option_mac_allow_incoming_network": false,
"option_mac_allow_outgoing_network": false,
"option_mac_app_category": "Games",
"option_mac_enable_steam": false,
"option_mac_disable_sandbox": false,
"option_mac_apple_sign_in": false,
"resourceVersion": "1.0",
"name": "macOS",
"tags": [],
"resourceType": "GMMacOptions",
}
================================================
FILE: options/main/options_main.yy
================================================
{
"option_gameguid": "e853c891-a127-4810-a122-eb28266b9756",
"option_gameid": "0",
"option_game_speed": 60,
"option_mips_for_3d_textures": false,
"option_draw_colour": 4294967295,
"option_window_colour": 255,
"option_steam_app_id": "0",
"option_sci_usesci": false,
"option_author": "",
"option_collision_compatibility": true,
"option_copy_on_write_enabled": true,
"option_lastchanged": "",
"option_spine_licence": false,
"option_template_image": "${base_options_dir}/main/template_image.png",
"option_template_icon": "${base_options_dir}/main/template_icon.png",
"option_template_description": null,
"resourceVersion": "1.4",
"name": "Main",
"tags": [],
"resourceType": "GMMainOptions",
}
================================================
FILE: options/operagx/options_operagx.yy
================================================
{
"option_operagx_version": "1.0.0.0",
"option_operagx_game_name": "${project_name}",
"option_operagx_splash_screen": "${base_options_dir}/operagx/splash.png",
"option_operagx_interpolate_pixels": true,
"option_operagx_scale": 0,
"option_operagx_texture_page": "2048x2048",
"option_operagx_icon": "${base_options_dir}/operagx/icon.png",
"resourceVersion": "1.0",
"name": "operagx",
"tags": [],
"resourceType": "GMOperaGXOptions",
}
================================================
FILE: options/ps4/options_ps4.yy
================================================
{
"resourceType": "GMPS4Options",
"resourceVersion": "1.0",
"name": "PlayStation 4",
"option_ps4_package_id": "IV0002-NPXS29129_00-APP0990000000022",
"option_ps4_passcode": "GvE6xCpZxd96scOUGuLPbuLp8O800B0s",
"option_ps4_nptitleid": "",
"option_ps4_nptitlesecret": "",
"option_ps4_paramsfo": "",
"option_ps4_nptitledat": "",
"option_ps4_trophyedit": "",
"option_ps4_shareparam": "",
"option_ps4_pronunciation": "",
"option_ps4_splash_screen": "${base_options_dir}/ps4/sce_sys/pic1.png",
"option_ps4_save_data_icon": "${base_options_dir}/ps4/sce_sys/save_data.png",
"option_ps4_trophy_screen": "${base_options_dir}/ps4/sce_sys/pic0.png",
"option_ps4_interpolate_pixels": true,
"option_ps4_display_cursor": false,
"option_ps4_scale": 0,
"option_ps4_texture_page": "2048x2048",
"option_ps4_max_display_width": -1,
"option_ps4_max_display_height": -1,
"option_ps4_icon": "${base_options_dir}/ps4/sce_sys/icon0.png",
"option_ps4_shareoverlay_image": "${base_options_dir}/ps4/sce_sys/shareoverlayimage.png",
"option_ps4_nptitledat_file": "${options_dir}\\ps4\\sce_sys\\nptitle.dat",
"option_ps4_paramsfo_file": "${options_dir}\\ps4\\sce_sys\\param.sfo",
"option_ps4_trophy00trp_file": "${options_dir}\\ps4\\sce_sys\\trophy\\trophy00.trp",
"option_ps4_shareparam_file": "${options_dir}\\ps4\\sce_sys\\shareparam.json",
"option_ps4_pronunciation_file": "${options_dir}\\ps4\\sce_sys\\pronunciation.xml",
"option_ps4_pronunciation_sig": "${options_dir}\\ps4\\sce_sys\\pronunciation.sig",
"option_ps4_onion": 2048,
"option_ps4_garlic": 1024,
"option_ps4_neo_onion": 2048,
"option_ps4_neo_garlic": 1536,
}
================================================
FILE: options/ps5/options_ps5.yy
================================================
{
"resourceType": "GMPS5Options",
"resourceVersion": "1.0",
"name": "PlayStation 5",
"option_ps5_package_id": "IV0002-NPXS29129_00-APP0990000000022",
"option_ps5_passcode": "GvE6xCpZxd96scOUGuLPbuLp8O800B0s",
"option_ps5_nptitleid": "",
"option_ps5_nptitlesecret": "",
"option_ps5_sharedbinarysubconfigs": "",
"option_ps5_paramsfo": "",
"option_ps5_nptitledat": "",
"option_ps5_trophyedit": "",
"option_ps5_shareparam": "",
"option_ps5_pronunciation": "",
"option_ps5_splash_screen": "${base_options_dir}/ps5/sce_sys/pic1.png",
"option_ps5_foreground_screen": "${base_options_dir}/ps5/sce_sys/pic2.png",
"option_ps5_save_data_icon": "${base_options_dir}/ps5/sce_sys/save_data.png",
"option_ps5_trophy_screen": "${base_options_dir}/ps5/sce_sys/pic0.png",
"option_ps5_interpolate_pixels": true,
"option_ps5_display_cursor": false,
"option_ps5_scale": 0,
"option_ps5_texture_page": "2048x2048",
"option_ps5_max_display_width": -1,
"option_ps5_max_display_height": -1,
"option_ps5_icon": "${base_options_dir}/ps5/sce_sys/icon0.png",
"option_ps5_shareoverlay_image": "${base_options_dir}/ps5/sce_sys/shareoverlayimage.png",
"option_ps5_nptitledat_file": "${options_dir}\\ps5\\sce_sys\\nptitle.dat",
"option_ps5_paramsfo_file": "${options_dir}\\ps5\\sce_sys\\param.sfo",
"option_ps5_trophy00trp_file": "${options_dir}\\ps5\\sce_sys\\trophy\\trophy00.trp",
}
================================================
FILE: options/switch/options_switch.yy
================================================
{
"resourceType": "GMSwitchOptions",
"resourceVersion": "1.0",
"name": "Switch",
"option_switch_project_nmeta": "${options_dir}/switch/application.nmeta",
"option_switch_enable_nex_libraries": false,
"option_switch_interpolate_pixels": true,
"option_switch_scale": 0,
"option_switch_texture_page": "2048x2048",
"option_switch_check_nsp_publish_errors": true,
"option_switch_enable_fileaccess_checking": true,
"option_switch_splash_screen": "${base_options_dir}/switch/splash.png",
"option_switch_use_splash": false,
"option_switch_allow_debug_output": false,
}
================================================
FILE: options/tvos/options_tvos.yy
================================================
{
"option_tvos_display_name": "Made in GameMaker Studio 2",
"option_tvos_bundle_name": "com.company.game",
"option_tvos_version": "1.0.0.0",
"option_tvos_output_dir": "~/GameMakerStudio2/tvOS",
"option_tvos_team_id": "",
"option_tvos_icon_400": "${base_options_dir}/tvos/icons/400.png",
"option_tvos_icon_400_2x": "${base_options_dir}/tvos/icons/400_2x.png",
"option_tvos_icon_1280": "${base_options_dir}/tvos/icons/1280.png",
"option_tvos_topshelf": "${base_options_dir}/tvos/topshelf/topshelf.png",
"option_tvos_topshelf_2x": "${base_options_dir}/tvos/topshelf/topshelf_2x.png",
"option_tvos_topshelf_wide": "${base_options_dir}/tvos/topshelf/topshelf_wide.png",
"option_tvos_topshelf_wide_2x": "${base_options_dir}/tvos/topshelf/topshelf_wide_2x.png",
"option_tvos_splashscreen": "${base_options_dir}/tvos/splash/splash.png",
"option_tvos_splashscreen_2x": "${base_options_dir}/tvos/splash/splash_2x.png",
"option_tvos_splash_time": 0,
"option_tvos_interpolate_pixels": true,
"option_tvos_scale": 0,
"option_tvos_texture_page": "2048x2048",
"option_tvos_display_cursor": false,
"option_tvos_push_notifications": false,
"option_tvos_apple_sign_in": false,
"option_tvos_podfile_path": "${options_dir}\\tvos\\Podfile",
"option_tvos_podfile_lock_path": "${options_dir}\\tvos\\Podfile.lock",
"resourceVersion": "1.3",
"name": "tvOS",
"tags": [],
"resourceType": "GMtvOSOptions",
}
================================================
FILE: options/windows/options_windows.yy
================================================
{
"option_windows_display_name": "Created with GameMaker Studio 2",
"option_windows_executable_name": "${project_name}.exe",
"option_windows_version": "1.0.0.0",
"option_windows_company_info": "YoYo Games Ltd",
"option_windows_product_info": "Created with GameMaker Studio 2",
"option_windows_copyright_info": "",
"option_windows_description_info": "A GameMaker Studio 2 Game",
"option_windows_display_cursor": true,
"option_windows_icon": "${base_options_dir}/windows/icons/icon.ico",
"option_windows_save_location": 0,
"option_windows_splash_screen": "${base_options_dir}/windows/splash/splash.png",
"option_windows_use_splash": false,
"option_windows_start_fullscreen": false,
"option_windows_allow_fullscreen_switching": false,
"option_windows_interpolate_pixels": false,
"option_windows_vsync": false,
"option_windows_resize_window": false,
"option_windows_borderless": false,
"option_windows_scale": 0,
"option_windows_copy_exe_to_dest": false,
"option_windows_sleep_margin": 10,
"option_windows_texture_page": "2048x2048",
"option_windows_installer_finished": "${base_options_dir}/windows/installer/finished.bmp",
"option_windows_installer_header": "${base_options_dir}/windows/installer/header.bmp",
"option_windows_license": "${base_options_dir}/windows/installer/license.txt",
"option_windows_nsis_file": "${base_options_dir}/windows/installer/nsis_script.nsi",
"option_windows_enable_steam": false,
"option_windows_disable_sandbox": false,
"option_windows_steam_use_alternative_launcher": false,
"option_windows_use_x64": false,
"resourceVersion": "1.1",
"name": "Windows",
"tags": [],
"resourceType": "GMWindowsOptions",
}
================================================
FILE: options/windowsuap/options_windowsuap.yy
================================================
{
"option_windowsuap_display_name": "Created with GameMaker",
"option_windowsuap_package_name": "YourPackageName",
"option_windowsuap_publisher_display_name": "YourPublisherName",
"option_windowsuap_package_display_name": "YourPackageDisplayName",
"option_windowsuap_description": "Your Description",
"option_windowsuap_version": "1.0.0.0",
"option_windowsuap_orient_portrait": true,
"option_windowsuap_orient_portrait_flipped": true,
"option_windowsuap_orient_landscape": true,
"option_windowsuap_orient_landscape_flipped": true,
"option_windowsuap_small_logo": "${base_options_dir}/windowsuap/logos/SmallLogo.scale-100.png",
"option_windowsuap_smallish_logo": "${base_options_dir}/windowsuap/logos/SmallishLogo.scale-100.png",
"option_windowsuap_store_logo": "${base_options_dir}/windowsuap/logos/StoreLogo.scale-100.png",
"option_windowsuap_logo": "${base_options_dir}/windowsuap/logos/Logo.scale-100.png",
"option_windowsuap_logo_background_colour": 4278190080,
"option_windowsuap_logo_foreground_text": 0,
"option_windowsuap_wide_logo": "${base_options_dir}/windowsuap/logos/WideLogo.scale-100.png",
"option_windowsuap_large_logo": "${base_options_dir}/windowsuap/logos/LargeLogo.scale-100.png",
"option_windowsuap_splash_png": "${base_options_dir}/windowsuap/splash/SplashScreen.scale-100.png",
"option_windowsuap_splash_background_colour": 4278190080,
"option_windowsuap_interpolate_pixels": false,
"option_windowsuap_display_cursor": true,
"option_windowsuap_start_fullscreen": false,
"option_windowsuap_allow_fullscreen_switching": false,
"option_windowsuap_use_synchronization": true,
"option_windowsuap_scale": 0,
"option_windowsuap_texture_page": "2048x2048",
"option_windowsuap_certificate_location": "${base_options_dir}\\windowsuap\\keys\\WinUWPRunner_TemporaryKey.pfx",
"option_windowsuap_certificate_publishername": "CN=Sandbox",
"option_windowsuap_native_cpu": 0,
"option_windowsuap_internet_capable": false,
"option_windowsuap_microphone_capable": false,
"option_windowsuap_iap_sandbox": false,
"option_windowsuap_targetdevicefamily_universal": true,
"option_windowsuap_target_platform_version": "10.0.14393.0",
"option_windowsuap_target_platform_min_version": "10.0.14393.0",
"option_windowsuap_targetdevicefamily_desktop": false,
"option_windowsuap_desktop_family_platform_version": "10.0.14393.0",
"option_windowsuap_desktop_family_platform_min_version": "10.0.14393.0",
"option_windowsuap_targetdevicefamily_xbox": false,
"option_windowsuap_xbox_family_platform_version": "10.0.14393.0",
"option_windowsuap_xbox_family_platform_min_version": "10.0.14393.0",
"option_windowsuap_targetdevicefamily_mobile": false,
"option_windowsuap_mobile_family_platform_version": "10.0.14393.0",
"option_windowsuap_mobile_family_platform_min_version": "10.0.14393.0",
"option_windowsuap_targetdevicefamily_holographic": false,
"option_windowsuap_holographic_family_platform_version": "10.0.14393.0",
"option_windowsuap_holographic_family_platform_min_version": "10.0.14393.0",
"option_windowsuap_targetdevicefamily_team": false,
"option_windowsuap_team_family_platform_version": "10.0.14393.0",
"option_windowsuap_team_family_platform_min_version": "10.0.14393.0",
"option_windowsuap_xbox_live": false,
"option_windowsuap_xbox_live_creators_program": false,
"option_windowsuap_xbox_live_title_id": "0",
"option_windowsuap_xbox_live_scid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1.0",
"name": "Windows UWP",
"tags": [],
"resourceType": "GMWindowsUAPOptions",
}
================================================
FILE: options/xboxseriesxs/options_xboxseriesxs.yy
================================================
{
"resourceType": "GMXboxSeriesXSOptions",
"resourceVersion": "1.1",
"name": "Xbox Series XS",
"option_xboxseriesxs_display_name": "Created with GameMaker",
"option_xboxseriesxs_description": "Your Description",
"option_xboxseriesxs_publisher": "Company Name",
"option_xboxseriesxs_publisher_display_name": "Company Display Name",
"option_xboxseriesxs_version": "1.0.0.0",
"option_xboxseriesxs_product_id": "",
"option_xboxseriesxs_title_id": "01234567",
"option_xboxseriesxs_service_config_id": "00000000-0000-0000-0000-000000000000",
"option_xboxseriesxs_program_id": "ExactName.InPartnerCenter",
"option_xboxseriesxs_store_id": "",
"option_xboxseriesxs_msaappid": "",
"option_xboxseriesxs_content_id": "",
"option_xboxseriesxs_ekbid": "",
"option_xboxseriesxs_playfab_party_id": "00000",
"option_xboxseriesxs_simplified_user_model": false,
"option_xboxseriesxs_require_xbox_live": false,
"option_xboxseriesxs_require_game_chat": false,
"option_xboxseriesxs_game_chat_slots": 4,
"option_xboxseriesxs_require_audio_recording": false,
"option_xboxseriesxs_stats_system": 0,
"option_xboxseriesxs_service_config_manifest": "",
"option_xboxseriesxs_network_config_manifest": "",
"option_xboxseriesxs_splash_screen": "${base_options_dir}/xboxseriesxs/SplashScreen.png",
"option_xboxseriesxs_splash_screen_colour": 4282795590,
"option_xboxseriesxs_logo_store": "${base_options_dir}/xboxseriesxs/logos/StoreLogo.png",
"option_xboxseriesxs_logo_small": "${base_options_dir}/xboxseriesxs/logos/SmallLogo.png",
"option_xboxseriesxs_logo_medium": "${base_options_dir}/xboxseriesxs/logos/Logo.png",
"option_xboxseriesxs_logo_large": "${base_options_dir}/xboxseriesxs/logos/LargeLogo.png",
"option_xboxseriesxs_logo_background_colour": 4282795590,
"option_xboxseriesxs_foreground_text": 0,
"option_xboxseriesxs_interpolate_pixels": false,
"option_xboxseriesxs_scale": 0,
"option_xboxseriesxs_texture_page": "2048x2048",
"option_xboxseriesxs_support_4k_one_x": false,
"option_xboxseriesxs_support_4k_one_s": false,
"option_xboxseriesxs_languages": "<!-- Add languages you support here -->\n <!-- os_get_language will only return languages listed -->\n <!-- \"en-us\" is supported by default, do not add it here-->\n <!-- See \"NLS APIs and Localization\" white paper -->\n <!-- from developer.xboxlive.com for info -->",
}
================================================
FILE: rooms/rDemo/RoomCreationCode.gml
================================================
var _player = (DEMO == "D") ? oPlayerD : oPlayerT;
instance_create_layer(384, 288, "Instances", _player);
================================================
FILE: rooms/rDemo/rDemo.yy
================================================
{
"resourceType": "GMRoom",
"resourceVersion": "1.0",
"name": "rDemo",
"isDnd": false,
"volume": 1.0,
"parentRoom": null,
"views": [
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
{"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1366,"hview":768,"xport":0,"yport":0,"wport":1366,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,},
],
"layers": [
{"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Walls","instances":[
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_1B3D8657","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":10.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":64.0,"y":352.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_64520098","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":9.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":64.0,"y":96.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_529BC3E4","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":3.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":352.0,"y":288.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_5C2BB655","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":5.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":352.0,"y":288.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_3FFF6E2F","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":9.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":480.0,"y":32.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_5C9EBEC9","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":2.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":64.0,"y":96.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4D98C060","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":3.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":128.0,"y":32.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_A64D164","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":12.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":128.0,"y":32.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_F58C7C6","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":2.0,"scaleY":3.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":224.0,"y":32.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4250AABF","properties":[],"isDnd":false,"objectId":{"name":"oWall","path":"objects/oWall/oWall.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":0.84375006,"scaleY":0.6875,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":98.0,"y":224.0,},
],"visible":false,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"FrontTrees","tilesetId":{"name":"tFrontTreeBody","path":"tilesets/tFrontTreeBody/tFrontTreeBody.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":18,"SerialiseHeight":13,"TileCompressedData":[
-146,-2147483648,2,3,4,-34,-2147483648,-2,0,-50,-2147483648,],},"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRAssetLayer","resourceVersion":"1.0","name":"TreesTop","assets":[
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_26BE2FD1","spriteId":{"name":"sFrontTreeTop","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"headPosition":1.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":111.0,"y":256.0,},
],"visible":true,"depth":200,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Grass","tilesetId":{"name":"tGrass","path":"tilesets/tGrass/tGrass.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":18,"SerialiseHeight":13,"TileCompressedData":[
-156,-2147483648,1,1,-29,-2147483648,3,2,-2147483648,1,-45,-2147483648,],},"visible":true,"depth":300,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","instances":[],"visible":true,"depth":400,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Controllers","instances":[
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_66E3BDE1","properties":[],"isDnd":false,"objectId":{"name":"oCamera","path":"objects/oCamera/oCamera.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":32.0,"y":0.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_4A28008F","properties":[],"isDnd":false,"objectId":{"name":"oGame","path":"objects/oGame/oGame.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":0.0,"y":0.0,},
],"visible":true,"depth":500,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRTileLayer","resourceVersion":"1.1","name":"Terrain","tilesetId":{"name":"tTerrain","path":"tilesets/tTerrain/tTerrain.yy",},"x":0,"y":0,"tiles":{"TileDataFormat":1,"SerialiseWidth":18,"SerialiseHeight":13,"TileCompressedData":[
-22,1,5,9,13,13,5,9,-6,13,1,5,-6,1,5,11,0,0,
6,11,-6,0,1,6,-4,1,7,9,13,15,0,0,14,15,-6,0,
1,6,-4,1,1,11,-12,0,1,6,-4,1,1,11,-12,0,1,6,
-4,1,1,11,-12,0,1,6,-4,1,1,11,-12,0,1,6,-4,1,
1,11,-12,0,1,6,-4,1,1,11,-8,0,1,8,-3,4,1,2,
-4,1,1,11,-8,0,1,6,-8,1,1,3,-8,4,1,2,-24,1,
],},"visible":true,"depth":600,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRAssetLayer","resourceVersion":"1.0","name":"BackTrees","assets":[
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_4A90BD3B","spriteId":{"name":"sBackTreeRegular","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"headPosition":0.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":238.0,"y":380.0,},
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_23631E46","spriteId":{"name":"sBackTreeRegular","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"headPosition":0.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":288.0,"y":363.0,},
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_6F35A848","spriteId":{"name":"sBackTreeRight","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"headPosition":1.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":464.0,"y":240.0,},
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_78E859F9","spriteId":{"name":"sBackTreeRegular","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"headPosition":2.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":160.0,"y":352.0,},
],"visible":true,"depth":700,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRAssetLayer","resourceVersion":"1.0","name":"Water","assets":[
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_6F19A3CE","spriteId":{"name":"sWater","path":"sprites/sWater/sWater.yy",},"headPosition":0.0,"rotation":0.0,"scaleX":9.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":80.0,"y":336.0,},
{"resourceType":"GMRSpriteGraphic","resourceVersion":"1.0","name":"graphic_19EB1A99","spriteId":{"name":"sWaterReflection","path":"sprites/sWaterReflection/sWaterReflection.yy",},"headPosition":0.0,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"animationSpeed":1.0,"colour":4294967295,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":128.0,"y":336.0,},
],"visible":true,"depth":800,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"SmallClouds","instances":[],"visible":true,"depth":900,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":8,"gridY":8,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"BigClouds","spriteId":{"name":"bgBigCloud","path":"sprites/bgBigCloud/bgBigCloud.yy",},"colour":4294967295,"x":0,"y":235,"htiled":true,"vtiled":false,"hspeed":-1.0,"vspeed":0.0,"stretch":false,"animationFPS":30.0,"animationSpeedType":0,"userdefinedAnimFPS":false,"visible":true,"depth":1000,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
{"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Background","spriteId":{"name":"bgSky","path":"sprites/bgSky/bgSky.yy",},"colour":4294967295,"x":0,"y":0,"htiled":true,"vtiled":false,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":30.0,"animationSpeedType":0,"userdefinedAnimFPS":false,"visible":true,"depth":1100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],},
],
"inheritLayers": false,
"creationCodeFile": "${project_dir}/rooms/rDemo/RoomCreationCode.gml",
"inheritCode": false,
"instanceCreationOrder": [
{"name":"inst_4A28008F","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_66E3BDE1","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_1B3D8657","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_64520098","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_529BC3E4","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_5C2BB655","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_3FFF6E2F","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_5C9EBEC9","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_4D98C060","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_A64D164","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_F58C7C6","path":"rooms/rDemo/rDemo.yy",},
{"name":"inst_4250AABF","path":"rooms/rDemo/rDemo.yy",},
],
"inheritCreationOrder": false,
"sequenceId": null,
"roomSettings": {
"inheritRoomSettings": false,
"Width": 576,
"Height": 416,
"persistent": false,
},
"viewSettings": {
"inheritViewSettings": false,
"enableViews": false,
"clearViewBackground": false,
"clearDisplayBuffer": true,
},
"physicsSettings": {
"inheritPhysicsSettings": false,
"PhysicsWorld": false,
"PhysicsWorldGravityX": 0.0,
"PhysicsWorldGravityY": 10.0,
"PhysicsWorldPixToMetres": 0.1,
},
"parent": {
"name": "Rooms",
"path": "folders/Rooms.yy",
},
}
================================================
FILE: scripts/MACROS/MACROS.gml
================================================
#macro DEMO "T" // D = Changing States Directly
// T = Changing States Using Triggered Transitions
#macro CAM view_camera[0] // Main camera view
#macro CAM_W camera_get_view_width(CAM) // Width of the camera
#macro CAM_H camera_get_view_height(CAM) // Height of the camera
#macro CAM_X camera_get_view_x(CAM) // x position of the camera
#macro CAM_Y camera_get_view_y(CAM) // y position of the camera
================================================
FILE: scripts/MACROS/MACROS.yy
================================================
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "Scripts",
"path": "folders/Scripts.yy",
},
"resourceVersion": "1.0",
"name": "MACROS",
"tags": [],
"resourceType": "GMScript",
}
================================================
FILE: scripts/SnowState/SnowState.gml
================================================
/**
* SnowState | v3.1.4
* Documentation: https://github.com/sohomsahaun/SnowState/wiki
*
* Author: Sohom Sahaun | @sohomsahaun
*/
/// @func SnowState(initial_state, [execute_enter])
/// @param {string} initial_state Initial state for the state machine
/// @param {bool} [execute_enter] Whether to execute the "enter" event for the initial state (true) or not (false) [Default: true]
function SnowState(_initState, _execEnter = true) constructor {
#region SnowState System
enum SNOWSTATE_EVENT {
NOT_DEFINED = 0,
DEFINED = 1,
INHERITED = 2,
DEFAULT = 4,
}
enum SNOWSTATE_TRIGGER {
NOT_DEFINED = 0,
DEFINED = 1,
INHERITED = 2,
}
var _owner = other;
__owner = _owner; // Context of the SnowState instances
__states = {}; // Struct holding states
__transitions = {}; // Struct holding transitions
__wildTransitions = {}; // Struct holding wildcard transitions
__on_events = {}; // Struct holding events for .on()
__initState = _initState; // Initial state of the SnowState instance
__execEnter = _execEnter; // If the "enter" event should be executed by default or not
__currEvent = undefined; // Current event
__tempEvent = undefined; // Temporary event - Used when changing states
__parent = {}; // Inheritance tree
__childQueue = []; // Path from current state to it's ancestor(s)
__stateStartTime = get_timer(); // Start time of the current state (in microseconds)
__history = array_create(2, undefined); // Array holding the history
__historyMaxSize = max(0, SNOWSTATE_DEFAULT_HISTORY_MAX_SIZE); // Maximum size of history
__historyEnabled = SNOWSTATE_HISTORY_ENABLED; // If history is enabled or not
__defaultEvents = { // Default functions for events
enter: {
exists: SNOWSTATE_EVENT.NOT_DEFINED,
func: function() {}
},
leave: {
exists: SNOWSTATE_EVENT.NOT_DEFINED,
func: function() {}
},
};
__invalidStateNames = [ // It is what it is
SNOWSTATE_WILDCARD_TRANSITION_NAME,
SNOWSTATE_REFLEXIVE_TRANSITION_NAME,
];
// Add .on() events
__on_events[$ "state changed"] = undefined;
/// @param {string} state_name
/// @param {struct} state_struct
/// @param {bool} has_parent
/// @returns {SnowState} self
__add = function(_name, _struct, _hasParent) {
var _events, _state, _event, _i;
_state = __create_events_struct(_struct);
__states[$ _name] = _state;
// Update from parent
if (_hasParent) {
// Get events from parent
__update_events_from_parent(_name);
// Replace parent's events with defined ones
_events = variable_struct_get_names(_struct);
_i = 0; repeat (array_length(_events)) {
_event = _events[_i];
_state[$ _event] = {
exists: SNOWSTATE_EVENT.DEFINED,
func: method(__owner, _struct[$ _event])
};
++_i;
}
}
// Update all the states
__update_states();
// Execute "enter" event
if (_name == __initState) {
if (__execEnter) {
__stateStartTime = get_timer();
enter();
}
}
return self;
};
/// @param {string} name
/// @param {string} from
/// @param {string} to
/// @param {function} condition
/// @param {function} leave_func
/// @param {function} enter_func
/// @returns {SnowState} self
__add_transition = function(_transitionName, _from, _to, _condition, _leave, _enter) {
// Define the transition
var _transition = {
//from : _from,
to : _to,
condition : _condition,
exists : SNOWSTATE_TRIGGER.DEFINED,
leave : _leave,
enter : _enter
};
if (_from == SNOWSTATE_WILDCARD_TRANSITION_NAME) {
// Wildcard transition
if (!variable_struct_exists(__wildTransitions, _transitionName)) {
__wildTransitions[$ _transitionName] = [];
}
array_push(__wildTransitions[$ _transitionName], _transition);
} else {
// Normal transition
if (!variable_struct_exists(__transitions, _from)) {
__transitions[$ _from] = {};
}
if (!variable_struct_exists(__transitions[$ _from], _transitionName)) {
__transitions[$ _from][$ _transitionName] = [];
}
array_push(__transitions[$ _from][$ _transitionName], _transition);
}
return self;
};
/// @param {string} event
/// @returns {SnowState} self
__add_event_method = function(_event) {
var _temp = {
exec : __execute,
event: _event
};
self[$ _event] = method(_temp, function() {
var _args = undefined;
if (argument_count > 0) {
_args = array_create(argument_count);
var _i = 0; repeat(argument_count) {
_args[_i] = argument[_i];
++_i;
}
}
exec(event, undefined, _args);
});
return self;
};
/// @param {string} event
/// @returns {SnowState} self
__assert_event_available = function(_event) {
if (!variable_struct_exists(__defaultEvents, _event)) {
__set_default_event(_event, function() {}, SNOWSTATE_EVENT.NOT_DEFINED);
}
return self;
};
/// @param {string} event
/// @returns {SnowState} self
__assert_event_name_valid = function(_event) {
if (variable_struct_exists(__defaultEvents, _event)) return true;
if (variable_struct_exists(self, _event)) {
__snowstate_error("Can not use \"", _event, "\" as an event.");
return false;
}
return true;
};
/// @param {string} state_name
/// @param {bool} [show_error]
/// @returns {bool} Whether the name is valid (true), or not (false)
__assert_state_name_valid = function(_state, _error = true) {
var _func = __snowstate_error;
if (!_error) {
_func = SNOWSTATE_DEBUG_WARNING ? __snowstate_trace : undefined;
}
if (!is_string(_state) || (_state == "")) {
if (_func != undefined) _func("State name should be a non-empty string.");
return false;
}
var _name, _i;
_i = 0; repeat (array_length(__invalidStateNames)) {
_name = __invalidStateNames[_i]; ++_i;
if (_state == _name) {
if (_func != undefined) _func("State name can not be \"", _name, "\".");
return false;
}
}
return true;
};
/// @param {string} transition_name
/// @param {bool} [show_error]
/// @returns {bool} Whether the name is valid (true), or not (false)
__assert_transition_name_valid = function(_state, _error = true) {
var _func = __snowstate_error;
if (!_error) {
_func = SNOWSTATE_DEBUG_WARNING ? __snowstate_trace : undefined;
}
if (!is_string(_state) || (_state == "")) {
if (_func != undefined) _func("Transition name should be a non-empty string.");
return false;
}
return true;
};
/// @param {string} event
/// @param {array<any>} [args]
/// @returns {SnowState} self
__broadcast_event = function(_event, _args) {
var _func = __on_events[$ _event];
if (_func != undefined) __func_exec(_func, _args);
return self;
};
/// @param {string} state_name
/// @param {function} leave_func
/// @param {function} enter_func
/// @param {struct} [data]
/// @returns {SnowState} self
__change = function(_state, _leave, _enter, _data) {
var _defLeave, _defEnter;
_defLeave = leave;
_defEnter = enter;
leave = _leave;
enter = _enter;
// Leave current state
if (leave == undefined) leave = _defLeave;
else __tempEvent = _defLeave;
leave(_data);
// Add to history
if (array_length(__childQueue) > 0) {
__history[@ 0] = __childQueue[0];
__childQueue = [];
}
// Init state
__stateStartTime = get_timer();
__history_add(_state);
// Enter next state
if (enter == undefined) enter = _defEnter;
else __tempEvent = _defEnter;
enter(_data);
// Reset temp variable
__tempEvent = undefined;
leave = _defLeave;
enter = _defEnter;
return self;
};
/// @param {struct} state_struct
/// @return {struct} Struct filled with all possible events
__create_events_struct = function(_struct) {
var _events = {};
var _arr, _i, _event, _defEvent;
_arr = variable_struct_get_names(_struct);
_i = 0; repeat(array_length(_arr)) {
_event = _arr[_i];
__assert_event_name_valid(_event);
__assert_event_available(_event);
_events[$ _event] = {
exists: SNOWSTATE_EVENT.DEFINED,
func: method(__owner, _struct[$ _event])
};
++_i;
}
_arr = variable_struct_get_names(__defaultEvents);
_i = 0; repeat(array_length(_arr)) {
_event = _arr[_i];
_defEvent = __defaultEvents[$ _event];
if (!variable_struct_exists(_struct, _event)) {
_events[$ _event] = {
exists: _defEvent.exists,
func: method(__owner, _defEvent.func)
};
}
++_i;
}
return _events;
};
/// @param {string} event
/// @param {string} [state_name]
/// @param {array} [args]
/// @returns {SnowState} self
__execute = function(_event, _state = undefined, _args = undefined) {
if (_state == undefined) _state = __history[0];
if (!__is_state_defined(_state)) {
__snowstate_error("State \"", _state, "\" is not defined.");
return undefined;
}
__currEvent = _event;
var _func = __states[$ _state][$ _event].func;
var _pyramid = __func_exec;
with (__owner) _pyramid(_func, _args);
return self;
};
/// @param {function} function
/// @param {array<any>} [args=undefined]
/// @returns {any} Return value of function
__func_exec = function(_func, _args = undefined) {
if (_args == undefined) return _func();
if (!is_array(_args)) return _func(_args);
switch (array_length(_args)) {
case 0: return _func();
case 1: return _func(_args[0]);
case 2: return _func(_args[0], _args[1]);
case 3: return _func(_args[0], _args[1], _args[2]);
case 4: return _func(_args[0], _args[1], _args[2], _args[3]);
case 5: return _func(_args[0], _args[1], _args[2], _args[3], _args[4]);
case 6: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5]);
case 7: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6]);
case 8: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7]);
case 9: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8]);
case 10: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9]);
case 11: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10]);
case 12: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10], _args[11]);
case 13: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10], _args[11], _args[12]);
case 14: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10], _args[11], _args[12], _args[13]);
case 15: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10], _args[11], _args[12], _args[13], _args[14]);
case 16: return _func(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6], _args[7], _args[8], _args[9], _args[10], _args[11], _args[12], _args[13], _args[14], _args[15]);
default: __snowstate_error("Can't use more than 16 arguments."); break;
}
return undefined;
};
/// @returns {string} The current state
__get_current_state = function() {
var _state = ((array_length(__history) > 0) ? __history[0] : undefined);
if (array_length(__childQueue) > 0) _state = __childQueue[0];
return _state;
};
/// @param {string} state
/// @returns {SnowState} self
__history_add = function(_state) {
if (__historyEnabled) {
if (__history[1] == undefined) {
__history[@ 1] = __history[0];
__history[@ 0] = _state;
} else {
array_insert(__history, 0, _state);
__history_fit_contents();
}
} else {
__history[@ 1] = __history[0];
__history[@ 0] = _state;
}
return self;
};
/// @returns {SnowState} self
__history_fit_contents = function() {
array_resize(__history, max(2, min(__historyMaxSize, array_length(__history))));
return self;
};
/// @returns {bool} Whether the argument is a method or a function (true), or not (false)
__is_really_a_method = function(_method) {
try {
return is_method(method(undefined, _method));
} catch (_e) {
return false;
}
};
/// @param {string} state_name
/// @return {bool} Whether the state is defined (true), or not (false)
__is_state_defined = function(_state) {
return (is_string(_state) && variable_struct_exists(__states, _state));
};
/// @param {string} event
/// @param {function} method
/// @param {int} defined
/// @returns {SnowState} self
__set_default_event = function(_event, _method, _defined) {
__defaultEvents[$ _event] = {
exists: _defined,
func: _method
};
__add_event_method(_event);
return self;
};
/// @param {any} [args]
/// @returns {SnowState} self
__snowstate_error = function() {
var _str = "[SnowState]\n";
var _i = 0; repeat(argument_count) {
_str += string(argument[_i++]);
}
_str += "\n\n\n";
show_error(_str, true);
return self;
};
/// @param {any} [args]
/// @returns {SnowState} self
__snowstate_trace = function() {
var _str = "[SnowState] ";
var _i = 0; repeat(argument_count) {
_str += string(argument[_i++]);
}
show_debug_message(_str);
return self;
};
/// @param {string} transition_name
/// @param {string} from_state
/// @returns {int} SNOWSTATE_TRIGGER
__transition_exists = function(_transitionName, _from) {
if (_from == SNOWSTATE_WILDCARD_TRANSITION_NAME) {
// Wildcard transition
if (variable_struct_exists(__wildTransitions, _transitionName)) {
return SNOWSTATE_TRIGGER.DEFINED;
}
} else {
// Default
if (variable_struct_exists(__transitions, _from) && variable_struct_exists(__transitions[$ _from], _transitionName)) {
return SNOWSTATE_TRIGGER.DEFINED;
}
while (variable_struct_exists(__parent, _from)) {
_from = __parent[$ _from];
if (variable_struct_exists(__transitions, _from) && variable_struct_exists(__transitions[$ _from], _transitionName)) {
return SNOWSTATE_TRIGGER.INHERITED;
}
}
}
return SNOWSTATE_TRIGGER.NOT_DEFINED;
};
/// @param {string} transition_name
/// @param {struct} [data]
/// @returns {bool} Whether the transition has been triggered (true), or not (false)
__trigger = function(_transitionName, _data) {
if (!__assert_transition_name_valid(_transitionName)) return false;
var _currState, _source;
_currState = __get_current_state();
_source = _currState;
// My triggers
if (__transition_exists(_transitionName, _source) == SNOWSTATE_TRIGGER.DEFINED) {
if (__try_triggers(__transitions[$ _source][$ _transitionName], _currState, _transitionName, _data)) return true;
}
// Wild triggers
if (__transition_exists(_transitionName, SNOWSTATE_WILDCARD_TRANSITION_NAME) == SNOWSTATE_TRIGGER.DEFINED) {
if (__try_triggers(__wildTransitions[$ _transitionName], _currState, _transitionName, _data)) return true;
}
// Parent triggers
while (variable_struct_exists(__parent, _source)) {
_source = __parent[$ _source];
if (__transition_exists(_transitionName, _source) == SNOWSTATE_TRIGGER.DEFINED) {
if (__try_triggers(__transitions[$ _source][$ _transitionName], _currState, _transitionName, _data)) return true;
}
}
return false;
};
/// @param {array} transitions
/// @param {string} source_state
/// @param {string} trigger_name
/// @param {struct} [data]
/// @returns {bool} Whether the trigger is successful (true), or not (false)
__try_triggers = function(_transitions, _source, _trigger, _data) {
var _transition, _dest, _i;
_i = 0; repeat(array_length(_transitions)) {
_transition = _transitions[_i]; ++_i;
// For reflexive wildcard transitions, change to source
_dest = _transition.to;
if (_dest == SNOWSTATE_REFLEXIVE_TRANSITION_NAME) _dest = _source;
// Check condition
if (_transition.condition(_data)) {
__change(_dest, _transition.leave, _transition.enter, _data);
__broadcast_event("state changed", [_dest, _source, _trigger]);
return true;
}
}
return false;
};
/// @param {string} state_name
/// @returns {SnowState} self
__update_events_from_parent = function(_name) {
var _parent, _state, _events, _event, _exists, _parEvent, _i;
_parent = __states[$ __parent[$ _name]];
_state = __states[$ _name];
_events = variable_struct_get_names(_parent);
_i = 0; repeat (array_length(_events)) {
_event = _events[_i];
_parEvent = _parent[$ _event];
_exists = SNOWSTATE_EVENT.NOT_DEFINED;
switch (_parEvent.exists) {
case SNOWSTATE_EVENT.DEFINED : _exists = SNOWSTATE_EVENT.INHERITED; break;
case SNOWSTATE_EVENT.INHERITED : _exists = SNOWSTATE_EVENT.INHERITED; break;
case SNOWSTATE_EVENT.DEFAULT : _exists = SNOWSTATE_EVENT.DEFAULT; break;
default: break;
}
_state[$ _event] = {
exists: _exists,
func: _parEvent.func
};
++_i;
}
return self;
};
/// @param {bool} has_parent
/// @returns {SnowState} self
__update_states = function(_hasParent) {
var _states, _events, _state, _event, _defEvent, _i, _j;
_states = variable_struct_get_names(__states);
_events = variable_struct_get_names(__defaultEvents);
_i = 0; repeat(array_length(_states)) {
_state = __states[$ _states[_i]];
_j = 0; repeat(array_length(_events)) {
_event = _events[_j];
if (!variable_struct_exists(_state, _event)) {
_defEvent = __defaultEvents[$ _event];
_state[$ _event] = {
exists: _defEvent.exists,
func: method(__owner, _defEvent.func)
};
}
++_j;
}
++_i;
}
return self;
};
#endregion
#region Basics
/// @param {string} state_name
/// @param {struct} [state_struct]
/// @returns {SnowState} self
add = function(_name, _struct = {}) {
if (!__assert_state_name_valid(_name)) return undefined;
if (!is_struct(_struct)) {
__snowstate_error("State struct should be a struct.");
return undefined;
}
if (SNOWSTATE_DEBUG_WARNING && __is_state_defined(_name)) {
__snowstate_trace("State \"", _name, "\" has been defined already. Replacing the previous definition.");
}
__add(_name, _struct, false);
return self;
};
/// @param {string} state_name
/// @param {function} [leave_func=undefined]
/// @param {function} [enter_func=undefined]
/// @param {struct} [data=undefined]
/// @returns {SnowState} self
change = function(_state, _leave = undefined, _enter = undefined, _data = undefined) {
if ((_leave != undefined) && !__is_really_a_method(_leave)) {
__snowstate_error("Invalid value for \"leave_func\" in change(). Should be a function.");
return undefined;
}
if ((_enter != undefined) && !__is_really_a_method(_enter)) {
__snowstate_error("Invalid value for \"enter_func\" in change(). Should be a function.");
return undefined;
}
var _source = get_current_state();
__change(_state, _leave, _enter, _data);
__broadcast_event("state changed", [_state, _source]);
return self;
};
/// @param {string} state_name
/// @param {string} [state_to_check]
/// @returns {bool} Whether state_name is state_to_check or a parent of state_to_check (true), or not (false)
state_is = function(_target, _source = get_current_state()) {
var _state = _source;
if (!__assert_state_name_valid(_target)) return false;
if (!__assert_state_name_valid(_source)) return false;
while (_state != undefined) {
if (_state == _target) return true;
_state = variable_struct_exists(__parent, _state) ? __parent[$ _state] : undefined;
}
return false;
};
/// @param {string} state_name
/// @returns {bool} Whether state_name exists (true), or not (false)
state_exists = function(_state) {
return variable_struct_exists(__states, _state);
};
/// @returns {array} Array containing the states defined
get_states = function() {
return variable_struct_get_names(__states);
};
/// @returns {string} The current state
get_current_state = function() {
return __get_current_state();
};
/// @returns {string} The previous state
get_previous_state = function() {
return ((array_length(__history) > 1) ? __history[1] : undefined);
};
/// @param {bool} [in_microseconds]
/// @returns {number} Number of microseconds (or steps) the current state has been running for
get_time = function(_us = true) {
var _time = (get_timer()-__stateStartTime);
return (_us ? _time : (_time * game_get_speed(gamespeed_fps) * 1/1000000));
};
/// @param {number} time
/// @param {bool} [in_microseconds]
/// @returns {SnowState} self
set_time = function(_time, _us = true) {
if (!is_real(_time)) {
__snowstate_error("Time should be a number");
return undefined;
}
__stateStartTime = get_timer() - (_us ? _time : (_time * 1/game_get_speed(gamespeed_fps) * 1000000));
return self;
};
/// @param {string} event
/// @param {string} callback
/// @param {struct} [context=noone]
/// @returns {SnowState} self
on = function(_event, _callback, _context = noone) {
if (!is_string(_event)) {
__snowstate_error("Event name should be a string.");
return undefined;
}
if (!__is_really_a_method(_callback)) {
__snowstate_error("Callback should be a string.");
return undefined;
}
if (variable_struct_exists(__on_events, _event)) {
if (_context != noone) _callback = method(_context, _callback);
__on_events[$ _event] = _callback;
} else if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("Event \"", _event, "\" does not exist.");
}
return self;
};
#endregion
#region Inheritance
/// @param {string} parent_state_name
/// @param {string} state_name
/// @param {struct} [state_struct]
/// @return {SnowState} self
add_child = function(_parent, _name, _struct = {}) {
if (!__assert_state_name_valid(_name)) return undefined;
if (!__assert_state_name_valid(_parent)) return undefined;
if (!__is_state_defined(_parent)) {
__snowstate_error("State \"", _parent, "\" is not defined.");
return undefined;
}
if (_parent == _name) {
__snowstate_error("Cannot set a state as a parent to itself.");
return undefined;
}
if (!is_struct(_struct)) {
__snowstate_error("State struct should be a struct.");
return undefined;
}
if (SNOWSTATE_DEBUG_WARNING) {
if (__is_state_defined(_name)) {
__snowstate_trace("State \"", _name, "\" has been defined already. The previous definition has been replaced.");
}
if (variable_struct_exists(__parent, _name)) {
if (__parent[$ _name] == _parent) {
__snowstate_trace("State \"", _name, "\" is already a child of \"", _parent, "\".");
}
}
}
__parent[$ _name] = _parent;
__add(_name, _struct, true);
return self;
};
/// @returns {SnowState} self
inherit = function() {
var _state = __history[0];
if (!variable_struct_exists(__parent, _state)) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("State \"", _state, "\" has no parent state.");
}
return self;
}
if (SNOWSTATE_CIRCULAR_INHERITANCE_ERROR) {
var _str, _len, _i;
_len = array_length(__childQueue);
_str = "";
_i = 0; repeat (_len) {
if (__childQueue[_i] == _state) break;
++_i;
}
if (_i < _len) {
_str += string(_state);
repeat (_len-_i-1) {
++_i;
_str += " -> " + string(__childQueue[_i]);
}
_str += " -> " + string(_state);
__snowstate_error("Circular inheritance found. Inheritance chain: ",
"(-> reads as \"inherits from\")\n", _str);
return undefined;
}
}
array_push(__childQueue, _state);
_state = __parent[$ _state];
__history[@ 0] = _state;
__execute(__currEvent);
if (array_length(__childQueue) > 0) __history[@ 0] = array_pop(__childQueue);
return self;
};
#endregion
#region Events
/// @param {string} event
/// @param {function} function
/// @returns {SnowState} self
event_set_default_function = function(_event, _function) {
if (SNOWSTATE_DEBUG_WARNING && (variable_struct_names_count(__states) > 0)) {
__snowstate_trace("event_set_default_function() should be called before defining any state.");
}
if (!is_string(_event) || (_event == "")) {
__snowstate_error("Event should be a non-empty string.");
return undefined;
}
if (!__is_really_a_method(_function)) {
__snowstate_error("Default function should be a function.");
return undefined;
}
__assert_event_name_valid(_event);
__set_default_event(_event, method(__owner, _function), SNOWSTATE_EVENT.DEFAULT);
__update_states();
return self;
};
/// NOTE: This function is only meant to be used in change()
/// @returns {function}
event_get_current_function = function() {
return __tempEvent;
}
/// @param {string} event
/// @returns {int} SNOWSTATE_EVENT
event_exists = function(_event) {
if (!is_string(_event) || (_event == "")) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("Event should be a non-empty string.");
}
return SNOWSTATE_EVENT.NOT_DEFINED;
}
var _state = __get_current_state();
if (!variable_struct_exists(__states[$ _state], _event)) return SNOWSTATE_EVENT.NOT_DEFINED;
return __states[$ _state][$ _event].exists;
};
/// @param {struct} [data]
/// @returns {SnowState} self
enter = function(_data = undefined) {
__execute("enter", undefined, _data);
return self;
};
/// @param {struct} [data]
/// @returns {SnowState} self
leave = function(_data = undefined) {
__execute("leave", undefined, _data);
return self;
};
#endregion
#region Transitions
/// @param {string} transition_name
/// @param {string/array} source_state
/// @param {string} dest_state
/// @param {function} [condition]
/// @param {function} [leave_func]
/// @param {function} [enter_func]
/// @returns {SnowState} self
add_transition = function(_transitionName, _source, _dest, _condition = function() { return true; }, _leave = leave, _enter = enter) {
if (!__assert_transition_name_valid(_transitionName)) return undefined;
if (!is_string(_dest) || (_dest == "")) {
__snowstate_error("State name should be a non-empty string.");
return undefined;
}
if (_dest == SNOWSTATE_WILDCARD_TRANSITION_NAME) {
__snowstate_error("Destination state name can not be the same as SNOWSTATE_WILDCARD_TRANSITION_NAME.");
return undefined;
}
if (!__is_really_a_method(_condition)) {
__snowstate_error("Invalid value for \"condition\" in add_transition(). Should be a function.");
return undefined;
}
if (!__is_really_a_method(_leave)) {
__snowstate_error("Invalid value for \"leave_func\" in add_transition(). Should be a function.");
return undefined;
}
if (!__is_really_a_method(_enter)) {
__snowstate_error("Invalid value for \"enter_func\" in add_transition(). Should be a function.");
return undefined;
}
if (!is_array(_source)) _source = [_source];
var _i, _from;
_i = 0; repeat (array_length(_source)) {
_from = _source[_i]; ++_i;
if (!is_string(_from) || (_from == "")) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("State name should be a non-empty string. Transition not added.");
}
} else if (_from == SNOWSTATE_REFLEXIVE_TRANSITION_NAME) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("Source state name can not be the same as SNOWSTATE_REFLEXIVE_TRANSITION_NAME. Transition not added.");
}
} else {
__add_transition(_transitionName, _from, _dest, _condition, _leave, _enter);
}
}
return self;
};
/// @param {string} transition_name
/// @param {string} dest_state
/// @param {function} [condition]
/// @param {function} [leave_func]
/// @param {function} [enter_func]
/// @returns {SnowState} self
add_wildcard_transition = function(_transitionName, _dest, _condition = function() { return true; }, _leave = undefined, _enter = undefined) {
return add_transition(_transitionName, SNOWSTATE_WILDCARD_TRANSITION_NAME, _dest, _condition, _leave, _enter);
};
/// @param {string} transition_name
/// @param {string/array} source_state
/// @param {function} [condition]
/// @param {function} [leave_func]
/// @param {function} [enter_func]
/// @returns {SnowState} self
add_reflexive_transition = function(_transitionName, _source, _condition = function() { return true; }, _leave = undefined, _enter = undefined) {
return add_transition(_transitionName, _source, SNOWSTATE_REFLEXIVE_TRANSITION_NAME, _condition, _leave, _enter);
};
/// @param {string} transition_name
/// @param {string} source_state
/// @returns {int} SNOWSTATE_TRIGGER
transition_exists = function(_transitionName, _source) {
if (!is_string(_transitionName)) return false;
if (!is_string(_source)) return false;
if (_source == SNOWSTATE_WILDCARD_TRANSITION_NAME) return true;
if (!__assert_transition_name_valid(_transitionName, false)) return false;
return __transition_exists(_transitionName, _source);
};
/// @param {string|array} transition_name
/// @param {struct} [data=undefined]
/// @returns {bool} Whether a transition has been triggered (true), or not (false)
trigger = function(_transition, _data = undefined) {
if (is_array(_transition)) {
var _i = 0; repeat (array_length(_transition)) {
if (__trigger(_transition[_i], _data)) return true;
++_i;
}
return false;
} else {
return __trigger(_transition, _data);
}
}
#endregion
#region History
/// @returns {SnowState} self
history_enable = function() {
if (!__historyEnabled) {
__historyEnabled = true;
__history_fit_contents();
}
return self;
};
/// @returns {SnowState} self
history_disable = function() {
if (__historyEnabled) {
__historyEnabled = false;
array_resize(__history, 2);
}
return self;
};
/// @returns {bool} Whether state history is enabled (true), or not (false)
history_is_enabled = function() {
return __historyEnabled;
};
/// @param {int} size
/// @returns {SnowState} self
history_set_max_size = function(_size) {
if (!is_real(_size)) {
__snowstate_error("Size should be a number.");
return undefined;
}
if (_size < 0) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("History size should non-negative. Setting the size to 0 instead of ", _size, ".");
}
_size = 0;
}
__historyMaxSize = _size;
__history_fit_contents();
return self;
};
/// @returns {int} The maximum storage capacity of state history
history_get_max_size = function() {
return __historyMaxSize;
};
/// @returns {array} Array containing the state history
history_get = function() {
if (!__historyEnabled) {
if (SNOWSTATE_DEBUG_WARNING) {
__snowstate_trace("History is disabled, can not get_history().");
}
return [];
}
if (get_previous_state() == undefined) return [__get_current_state()];
var _len = min(array_length(__history), __historyMaxSize);
var _arr = array_create(_len);
array_copy(_arr, 0, __history, 0, _len);
_arr[@ 0] = __get_current_state();
return _arr;
};
#endregion
// Initialization
__assert_state_name_valid(_initState);
__history_add(_initState);
}
// Startup errors
if (!is_string(SNOWSTATE_WILDCARD_TRANSITION_NAME) || (string_length(SNOWSTATE_WILDCARD_TRANSITION_NAME) != 1)) {
var _str = "[SnowState]\n";
_str += "SNOWSTATE_WILDCARD_TRANSITION_NAME should be a string of length 1."
_str += "\n\n\n";
show_error(_str, true);
}
if (!is_string(SNOWSTATE_REFLEXIVE_TRANSITION_NAME) || (string_length(SNOWSTATE_REFLEXIVE_TRANSITION_NAME) != 1)) {
var _str = "[SnowState]\n";
_str += "SNOWSTATE_REFLEXIVE_TRANSITION_NAME should be a string of length 1."
_str += "\n\n\n";
show_error(_str, true);
}
// Some info
#macro SNOWSTATE_VERSION "v3.1.4"
#macro SNOWSTATE_DATE "26-10-2022"
show_debug_message("[SnowState] You are using SnowState by @sohomsahaun (Version: " + string(SNOWSTATE_VERSION) + " | Date: " + string(SNOWSTATE_DATE) + ")");
================================================
FILE: scripts/SnowState/SnowState.yy
================================================
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "SnowState",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "SnowState",
"path": "folders/SnowState.yy",
},
}
================================================
FILE: scripts/Utility/Utility.gml
================================================
/**
* Some commonly used scripts
* Credit goes to the awesome GM community
*/
/// @func animation_end()
function animation_end() {
return (image_index + image_speed*sprite_get_speed(sprite_index)/(sprite_get_speed_type(sprite_index)==spritespeed_framespergameframe? 1 : game_get_speed(gamespeed_fps)) >= image_number);
}
/// @func lerp_smooth(val1, val2, amount, [offset])
function lerp_smooth(_val1, _val2, _amount, _offset = 0.01) {
return ((abs(_val1-_val2) <= _offset) ? _val2 : lerp(_val1, _val2, 1/_amount));
}
/// @func draw_text_outline(x, y, string, text_col, outline_col, thickness)
function draw_text_outline(_x, _y, _string, _textCol, _outCol, _thickness) {
var _xx, _yy;
for (_xx = _x-_thickness; _xx <= _x+_thickness; ++_xx) {
for (_yy = _y-_thickness; _yy <= _y+_thickness; ++_yy) {
draw_text_color(_xx, _yy, _string, _outCol, _outCol, _outCol, _outCol, 1);
}
}
draw_text_color(_x, _y, _string, _textCol, _textCol, _textCol, _textCol, 1);
}
================================================
FILE: scripts/Utility/Utility.yy
================================================
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "Scripts",
"path": "folders/Scripts.yy",
},
"resourceVersion": "1.0",
"name": "Utility",
"tags": [],
"resourceType": "GMScript",
}
================================================
FILE: scripts/__snowstate_config/__snowstate_config.gml
================================================
/**
* SnowState Configuration
* Documentation: https://github.com/sohomsahaun/SnowState/wiki/Configuration
*/
#macro SNOWSTATE_DEBUG_WARNING true // Whether to show warning messages in Output (true) or not (false)
#macro SNOWSTATE_HISTORY_ENABLED false // Whether history should be tracked by default (true) or not (false)
#macro SNOWSTATE_DEFAULT_HISTORY_MAX_SIZE 5 // Default maxmimum history count
#macro SNOWSTATE_CIRCULAR_INHERITANCE_ERROR true // Whether to throw an error when circular inheritance is found (true) or not (false)
#macro SNOWSTATE_WILDCARD_TRANSITION_NAME "*" // Default wildcard transition name
#macro SNOWSTATE_REFLEXIVE_TRANSITION_NAME "=" // Default reflexive transition name
================================================
FILE: scripts/__snowstate_config/__snowstate_config.yy
================================================
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "SnowState",
"path": "folders/SnowState.yy",
},
"resourceVersion": "1.0",
"name": "__snowstate_config",
"tags": [],
"resourceType": "GMScript",
}
================================================
FILE: sprites/bgBigCloud/bgBigCloud.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "bgBigCloud",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 0,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 447,
"bbox_top": 0,
"bbox_bottom": 100,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 448,
"height": 101,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d71a5bdd-0bcb-4831-9ce4-30b6348dc4c1",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "bgBigCloud",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 1.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"dc3a3b2a-b268-4cca-b9f4-21b05927f91d","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d71a5bdd-0bcb-4831-9ce4-30b6348dc4c1","path":"sprites/bgBigCloud/bgBigCloud.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 0,
"yorigin": 0,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2957961d-c108-4049-9089-a54fa8a84296","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Background",
"path": "folders/Sprites/Background.yy",
},
}
================================================
FILE: sprites/bgSky/bgSky.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "bgSky",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 0,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 31,
"bbox_top": 0,
"bbox_bottom": 511,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 32,
"height": 512,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"638cd969-0fe1-4d47-a72d-ffcdebb6dd56",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "bgSky",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 1.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"46cc1aed-88db-40b0-9e78-a0dd85b00e6a","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"638cd969-0fe1-4d47-a72d-ffcdebb6dd56","path":"sprites/bgSky/bgSky.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 0,
"yorigin": 0,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c5a78228-ae71-4c06-b8d6-91727fe9c167","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Background",
"path": "folders/Sprites/Background.yy",
},
}
================================================
FILE: sprites/sBackTreeRegular/sBackTreeRegular.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sBackTreeRegular",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 38,
"bbox_top": 0,
"bbox_bottom": 63,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 39,
"height": 64,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b95366cb-6916-443c-9b89-0b677dc57e04",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9c9efec3-d73f-477b-9cb1-0a5545677078",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"afe6a435-e26a-4b81-a526-ae23f2cfe32c",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e63c1a5c-dc96-45e2-9158-7bf5c3410032",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sBackTreeRegular",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 4.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"60c1eb97-4424-4304-9922-61d836241c0f","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b95366cb-6916-443c-9b89-0b677dc57e04","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"f0cd643b-7764-46ba-9b9c-d99d11127017","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9c9efec3-d73f-477b-9cb1-0a5545677078","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"9240301c-8e26-4239-845a-0d93508331c7","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"afe6a435-e26a-4b81-a526-ae23f2cfe32c","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"22435f26-905c-4098-b83e-d6a64874460b","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"e63c1a5c-dc96-45e2-9158-7bf5c3410032","path":"sprites/sBackTreeRegular/sBackTreeRegular.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 19,
"yorigin": 64,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"dea5738f-0953-4b4f-b796-6e9fb1bbf188","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Tree",
"path": "folders/Sprites/Tree.yy",
},
}
================================================
FILE: sprites/sBackTreeRight/sBackTreeRight.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sBackTreeRight",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 51,
"bbox_top": 0,
"bbox_bottom": 52,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 52,
"height": 53,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b8618b11-a8cf-45fa-a81d-1db5236b5e3a",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"1d37091a-7d2d-4c26-9acd-7c08c444a967",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"cf4e9d37-d1fb-4dc6-82a1-bf0d4aae9849",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a9a9a2dc-1b86-445a-8054-8a0fa8de210c",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sBackTreeRight",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 4.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"83fd1ded-3275-4f29-bea6-419d0667e3ad","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b8618b11-a8cf-45fa-a81d-1db5236b5e3a","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"ac755590-3f9e-4432-a9c0-c96146fe37cf","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"1d37091a-7d2d-4c26-9acd-7c08c444a967","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"648857d8-e9b2-4987-96d7-5713265f886f","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"cf4e9d37-d1fb-4dc6-82a1-bf0d4aae9849","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"4e6d8d72-01a6-4a2d-9cfd-6af3d670961f","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"a9a9a2dc-1b86-445a-8054-8a0fa8de210c","path":"sprites/sBackTreeRight/sBackTreeRight.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 26,
"yorigin": 53,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d57ed653-76f1-46af-9d87-9708bbaf5a6d","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Tree",
"path": "folders/Sprites/Tree.yy",
},
}
================================================
FILE: sprites/sFrontTreeTop/sFrontTreeTop.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sFrontTreeTop",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 38,
"bbox_top": 0,
"bbox_bottom": 31,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 39,
"height": 32,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7549665f-950e-481d-b56a-78d9c6a0ad2d",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d3513f89-73d5-4a3f-9095-61ce80892935",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9fb18426-8385-4c8b-9c6d-bece668a4754",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"c7716812-ce7e-4afe-9210-a4e34160e273",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sFrontTreeTop",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 4.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"c330eee3-1033-4b7e-a064-d55164a21cea","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"7549665f-950e-481d-b56a-78d9c6a0ad2d","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"ffa80ece-7956-4fc9-a0ff-8dbda750f52a","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d3513f89-73d5-4a3f-9095-61ce80892935","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"4fabb9e0-133a-40cf-8f07-a3fe2a1705e0","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9fb18426-8385-4c8b-9c6d-bece668a4754","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"ca2a4289-f483-402c-b663-fca383d1c51f","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"c7716812-ce7e-4afe-9210-a4e34160e273","path":"sprites/sFrontTreeTop/sFrontTreeTop.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 19,
"yorigin": 32,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"12dc8a96-6c5e-48a6-ab7f-5238681c5dbd","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Tree",
"path": "folders/Sprites/Tree.yy",
},
}
================================================
FILE: sprites/sPlayerFall/sPlayerFall.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerFall",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 24,
"bbox_top": 0,
"bbox_bottom": 27,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 25,
"height": 28,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"faa9d1e2-68db-4cbd-ad40-fe47a2efbdc6",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerFall",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 1.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"3f2cddb2-a439-4753-adf9-beaf6f89b36a","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"faa9d1e2-68db-4cbd-ad40-fe47a2efbdc6","path":"sprites/sPlayerFall/sPlayerFall.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 12,
"yorigin": 28,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"f7b1d78a-9b46-4948-9b18-0852e779dc87","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerIdle/sPlayerIdle.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerIdle",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 23,
"bbox_top": 0,
"bbox_bottom": 27,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 24,
"height": 28,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7c36eecb-a734-470f-b983-f89a015476d1",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"3d2efb88-9e5f-46ac-8d83-c7e9282b6a1f",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6c6fbc0a-6aa3-43c1-aefc-218e0578f39e",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"41c3776f-a577-4fcb-a162-ac989bf8e8fa",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6f3f1ee9-ef73-4433-9c2a-239b47f2f6b8",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerIdle",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 5.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"3a2e899f-b3a7-4610-8aa7-4eca7a41b20f","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"7c36eecb-a734-470f-b983-f89a015476d1","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"f0ced655-4ccc-46ee-bc17-d06d2461d9a7","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"3d2efb88-9e5f-46ac-8d83-c7e9282b6a1f","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"242997b2-c792-401a-ba77-889873c6a048","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"6c6fbc0a-6aa3-43c1-aefc-218e0578f39e","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"e364c259-0291-41fc-9cf1-2e8734da361e","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"41c3776f-a577-4fcb-a162-ac989bf8e8fa","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"c853108f-4534-4a55-9ca0-36cc5fa17ef7","Key":4.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"6f3f1ee9-ef73-4433-9c2a-239b47f2f6b8","path":"sprites/sPlayerIdle/sPlayerIdle.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 12,
"yorigin": 28,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"075b9501-6b5d-4b42-9cd2-037a96614b1e","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerJump/sPlayerJump.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerJump",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 25,
"bbox_top": 0,
"bbox_bottom": 31,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 26,
"height": 32,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"83254951-a432-49df-b21f-95c941b3ef71",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f445290c-419a-43c6-8beb-6f3b7521d8dc",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"04827da0-d96c-4ee9-a09b-1882ec7cf396",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerJump",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 3.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"1c9168bc-2248-4c44-a97f-cf98ab4688c1","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"83254951-a432-49df-b21f-95c941b3ef71","path":"sprites/sPlayerJump/sPlayerJump.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"381212ca-13e1-4276-af49-35e38e9bf91c","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f445290c-419a-43c6-8beb-6f3b7521d8dc","path":"sprites/sPlayerJump/sPlayerJump.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"22a69071-f60a-4ece-9fc1-3dc86c38e254","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"04827da0-d96c-4ee9-a09b-1882ec7cf396","path":"sprites/sPlayerJump/sPlayerJump.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 13,
"yorigin": 32,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"f7b1d78a-9b46-4948-9b18-0852e779dc87","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerMask/sPlayerMask.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerMask",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 9,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 4,
"bbox_right": 19,
"bbox_top": 0,
"bbox_bottom": 27,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 24,
"height": 28,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f89bec84-625a-4390-a21f-241929f2ff90",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerMask",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 1.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"3ff63d34-4f99-4ccd-b50d-9749095bbe6e","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f89bec84-625a-4390-a21f-241929f2ff90","path":"sprites/sPlayerMask/sPlayerMask.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 11,
"yorigin": 28,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"91265d5f-e71f-4f71-882a-187f79c9336c","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"Layer 1",},
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"075b9501-6b5d-4b42-9cd2-037a96614b1e","visible":false,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerRun/sPlayerRun.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerRun",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 7,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 24,
"bbox_top": 0,
"bbox_bottom": 29,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 25,
"height": 30,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"03745f02-832a-4525-9bdb-d29ef8ca442c",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"57bc6b8c-0148-40c6-83f8-d05921d1fe75",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ec090a34-ae8d-4901-8539-eb59bd1b15c9",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"92e7ca1a-2164-4c0a-8a70-316f6158fb67",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"2d314115-1f4b-4463-8247-faededa0400e",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"8dae8fb0-922f-4a2f-a879-bbc5d8f40bd7",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerRun",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 6.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"a2964a9d-ba74-40b3-8fa4-61ca63cd5433","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"03745f02-832a-4525-9bdb-d29ef8ca442c","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"42e9f3fa-8865-469d-a0ed-641d4e181deb","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"57bc6b8c-0148-40c6-83f8-d05921d1fe75","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"0becdd6a-4873-4188-9f14-86349a05bed5","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ec090a34-ae8d-4901-8539-eb59bd1b15c9","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"b7a48254-107c-4919-a05f-17fa996a1b56","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"92e7ca1a-2164-4c0a-8a70-316f6158fb67","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"47d72e9a-31e8-4e84-b498-4259d4a17d0e","Key":4.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"2d314115-1f4b-4463-8247-faededa0400e","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"b06c4a41-0893-4dd2-84db-4ac256313b4e","Key":5.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"8dae8fb0-922f-4a2f-a879-bbc5d8f40bd7","path":"sprites/sPlayerRun/sPlayerRun.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 12,
"yorigin": 30,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"f7b1d78a-9b46-4948-9b18-0852e779dc87","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerSwordAirAttack1",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 9,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 31,
"bbox_top": 0,
"bbox_bottom": 34,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 32,
"height": 35,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"fc789121-5d78-41bd-97c8-ae437318d44e",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"60eadbb6-4a62-470a-900b-1b1628988c9e",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f3aba6b0-4f6a-4338-9e7c-85d42c92a067",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerSwordAirAttack1",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 3.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"ab87590b-55d3-4f75-88a2-365ed23253df","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"fc789121-5d78-41bd-97c8-ae437318d44e","path":"sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"de4f400c-561d-4bad-a93e-385e81676d90","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"60eadbb6-4a62-470a-900b-1b1628988c9e","path":"sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"be3059eb-e92f-4e17-9c2c-dd9c6c4bbbe3","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f3aba6b0-4f6a-4338-9e7c-85d42c92a067","path":"sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 14,
"yorigin": 27,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a1179343-2345-49e2-9f85-2ae9668d7fdb","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerSwordAirAttack2",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 9,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 37,
"bbox_top": 0,
"bbox_bottom": 36,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 38,
"height": 37,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"74a0b2e1-9cb7-4fbb-afe5-c0641c5e1430",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"515a76fc-2fed-4f9f-9161-ef21964b2fab",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0932109a-7600-4beb-8cc3-39f512c90eb0",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerSwordAirAttack2",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 3.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"89e41636-83c2-4bd4-8f80-70d0765b3f7e","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"74a0b2e1-9cb7-4fbb-afe5-c0641c5e1430","path":"sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"9ef93af9-930e-4d22-bea3-f2d08b527c06","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"515a76fc-2fed-4f9f-9161-ef21964b2fab","path":"sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"e68c4acf-1023-4399-b69a-e5f609a7ec86","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"0932109a-7600-4beb-8cc3-39f512c90eb0","path":"sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 13,
"yorigin": 27,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a1179343-2345-49e2-9f85-2ae9668d7fdb","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerSwordAttack1",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 9,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 43,
"bbox_top": 0,
"bbox_bottom": 28,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 44,
"height": 29,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"98cc2c82-cbd1-43eb-addd-ce5c9c3753ca",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6de477b7-c3b4-4930-8943-412fef79f39f",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d9fe2a35-5358-48f9-a7ca-f62d70a45316",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerSwordAttack1",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 3.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"fdbefd02-25cd-458f-9c80-43d5b2a8e295","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"98cc2c82-cbd1-43eb-addd-ce5c9c3753ca","path":"sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"f4b3e7f7-d136-4833-b442-c94977596e3c","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"6de477b7-c3b4-4930-8943-412fef79f39f","path":"sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"2048068a-fb8c-4247-a143-aeabe853b371","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d9fe2a35-5358-48f9-a7ca-f62d70a45316","path":"sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 12,
"yorigin": 29,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a1179343-2345-49e2-9f85-2ae9668d7fdb","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerSwordAttack2",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
"origin": 9,
"preMultiplyAlpha": false,
"edgeFiltering": false,
"collisionTolerance": 0,
"swfPrecision": 2.525,
"bbox_left": 0,
"bbox_right": 39,
"bbox_top": 0,
"bbox_bottom": 36,
"HTile": false,
"VTile": false,
"For3D": false,
"DynamicTexturePage": false,
"width": 40,
"height": 37,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"swatchColours": null,
"gridX": 0,
"gridY": 0,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a25cd12e-b81e-421c-b01b-ed89900ca53b",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"62b3ef2d-4684-4b42-8e5f-7f076d92e334",},
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0e087a9c-14cf-46ac-9d48-2c2df7893000",},
],
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "sPlayerSwordAttack2",
"timeUnits": 1,
"playback": 1,
"playbackSpeed": 10.0,
"playbackSpeedType": 0,
"autoRecord": true,
"volume": 1.0,
"length": 3.0,
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"4a53ee08-5c46-44da-97c9-e5790c5cfa84","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"a25cd12e-b81e-421c-b01b-ed89900ca53b","path":"sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"ef56c119-1a3c-4530-9f5e-d6672a804267","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"62b3ef2d-4684-4b42-8e5f-7f076d92e334","path":"sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
{"id":"01456ffc-c87d-4ce9-999e-99cb9668482e","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"0e087a9c-14cf-46ac-9d48-2c2df7893000","path":"sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
],
"visibleRange": null,
"lockOrigin": false,
"showBackdrop": true,
"showBackdropImage": false,
"backdropImagePath": "",
"backdropImageOpacity": 0.5,
"backdropWidth": 1366,
"backdropHeight": 768,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"xorigin": 13,
"yorigin": 29,
"eventToFunction": {},
"eventStubScript": null,
},
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a1179343-2345-49e2-9f85-2ae9668d7fdb","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
],
"nineSlice": null,
"parent": {
"name": "Player",
"path": "folders/Sprites/Player.yy",
},
}
================================================
FILE: sprites/sPlayerSwordAttack3/sPlayerSwordAttack3.yy
================================================
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "sPlayerSwordAttack3",
"bboxMode": 0,
"collisionKind": 1,
"type": 0,
gitextract_3opgkkmb/
├── .gitattributes
├── LICENSE
├── README.md
├── SnowState.yyp
├── fonts/
│ └── fDemo/
│ └── fDemo.yy
├── notes/
│ └── Credits/
│ ├── Credits.txt
│ └── Credits.yy
├── objects/
│ ├── oCamera/
│ │ ├── Alarm_0.gml
│ │ ├── Create_0.gml
│ │ ├── Step_0.gml
│ │ └── oCamera.yy
│ ├── oCloud/
│ │ ├── Step_0.gml
│ │ └── oCloud.yy
│ ├── oEffect/
│ │ ├── Other_7.gml
│ │ └── oEffect.yy
│ ├── oGame/
│ │ ├── Alarm_0.gml
│ │ ├── Create_0.gml
│ │ ├── Draw_64.gml
│ │ ├── Step_0.gml
│ │ └── oGame.yy
│ ├── oPlayerD/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── KeyRelease_82.gml
│ │ ├── Other_25.gml
│ │ ├── Other_76.gml
│ │ ├── Step_0.gml
│ │ └── oPlayerD.yy
│ ├── oPlayerT/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── KeyRelease_82.gml
│ │ ├── Other_25.gml
│ │ ├── Other_76.gml
│ │ ├── Step_0.gml
│ │ └── oPlayerT.yy
│ ├── oSwordD/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── Other_25.gml
│ │ ├── Step_0.gml
│ │ └── oSwordD.yy
│ ├── oSwordT/
│ │ ├── Create_0.gml
│ │ ├── Draw_0.gml
│ │ ├── Other_25.gml
│ │ ├── Step_0.gml
│ │ └── oSwordT.yy
│ └── oWall/
│ └── oWall.yy
├── options/
│ ├── amazonfire/
│ │ └── options_amazonfire.yy
│ ├── android/
│ │ └── options_android.yy
│ ├── html5/
│ │ └── options_html5.yy
│ ├── ios/
│ │ └── options_ios.yy
│ ├── linux/
│ │ └── options_linux.yy
│ ├── mac/
│ │ └── options_mac.yy
│ ├── main/
│ │ └── options_main.yy
│ ├── operagx/
│ │ └── options_operagx.yy
│ ├── ps4/
│ │ └── options_ps4.yy
│ ├── ps5/
│ │ └── options_ps5.yy
│ ├── switch/
│ │ └── options_switch.yy
│ ├── tvos/
│ │ └── options_tvos.yy
│ ├── windows/
│ │ └── options_windows.yy
│ ├── windowsuap/
│ │ └── options_windowsuap.yy
│ └── xboxseriesxs/
│ └── options_xboxseriesxs.yy
├── rooms/
│ └── rDemo/
│ ├── RoomCreationCode.gml
│ └── rDemo.yy
├── scripts/
│ ├── MACROS/
│ │ ├── MACROS.gml
│ │ └── MACROS.yy
│ ├── SnowState/
│ │ ├── SnowState.gml
│ │ └── SnowState.yy
│ ├── Utility/
│ │ ├── Utility.gml
│ │ └── Utility.yy
│ └── __snowstate_config/
│ ├── __snowstate_config.gml
│ └── __snowstate_config.yy
├── sprites/
│ ├── bgBigCloud/
│ │ └── bgBigCloud.yy
│ ├── bgSky/
│ │ └── bgSky.yy
│ ├── sBackTreeRegular/
│ │ └── sBackTreeRegular.yy
│ ├── sBackTreeRight/
│ │ └── sBackTreeRight.yy
│ ├── sFrontTreeTop/
│ │ └── sFrontTreeTop.yy
│ ├── sPlayerFall/
│ │ └── sPlayerFall.yy
│ ├── sPlayerIdle/
│ │ └── sPlayerIdle.yy
│ ├── sPlayerJump/
│ │ └── sPlayerJump.yy
│ ├── sPlayerMask/
│ │ └── sPlayerMask.yy
│ ├── sPlayerRun/
│ │ └── sPlayerRun.yy
│ ├── sPlayerSwordAirAttack1/
│ │ └── sPlayerSwordAirAttack1.yy
│ ├── sPlayerSwordAirAttack2/
│ │ └── sPlayerSwordAirAttack2.yy
│ ├── sPlayerSwordAttack1/
│ │ └── sPlayerSwordAttack1.yy
│ ├── sPlayerSwordAttack2/
│ │ └── sPlayerSwordAttack2.yy
│ ├── sPlayerSwordAttack3/
│ │ └── sPlayerSwordAttack3.yy
│ ├── sPlayerSwordFall/
│ │ └── sPlayerSwordFall.yy
│ ├── sPlayerSwordIdle/
│ │ └── sPlayerSwordIdle.yy
│ ├── sPlayerSwordJump/
│ │ └── sPlayerSwordJump.yy
│ ├── sPlayerSwordRun/
│ │ └── sPlayerSwordRun.yy
│ ├── sPlayerSwordThrowSword/
│ │ └── sPlayerSwordThrowSword.yy
│ ├── sSmallCloud1/
│ │ └── sSmallCloud1.yy
│ ├── sSmallCloud2/
│ │ └── sSmallCloud2.yy
│ ├── sSmallCloud3/
│ │ └── sSmallCloud3.yy
│ ├── sSwordEffectAirAttack1/
│ │ └── sSwordEffectAirAttack1.yy
│ ├── sSwordEffectAirAttack2/
│ │ └── sSwordEffectAirAttack2.yy
│ ├── sSwordEffectAttack1/
│ │ └── sSwordEffectAttack1.yy
│ ├── sSwordEffectAttack2/
│ │ └── sSwordEffectAttack2.yy
│ ├── sSwordEffectAttack3/
│ │ └── sSwordEffectAttack3.yy
│ ├── sSwordEmbedded/
│ │ └── sSwordEmbedded.yy
│ ├── sSwordEmbeddedMask/
│ │ └── sSwordEmbeddedMask.yy
│ ├── sSwordIdle/
│ │ └── sSwordIdle.yy
│ ├── sSwordMask/
│ │ └── sSwordMask.yy
│ ├── sSwordSpinning/
│ │ └── sSwordSpinning.yy
│ ├── sWall/
│ │ └── sWall.yy
│ ├── sWater/
│ │ └── sWater.yy
│ ├── sWaterReflection/
│ │ └── sWaterReflection.yy
│ ├── stFrontTreeBody/
│ │ └── stFrontTreeBody.yy
│ ├── stGrass/
│ │ └── stGrass.yy
│ └── stTerrain/
│ └── stTerrain.yy
└── tilesets/
├── tFrontTreeBody/
│ └── tFrontTreeBody.yy
├── tGrass/
│ └── tGrass.yy
└── tTerrain/
└── tTerrain.yy
Condensed preview — 112 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (322K chars).
[
{
"path": ".gitattributes",
"chars": 43,
"preview": "*.yy linguist-language=Game Maker Language\n"
},
{
"path": "LICENSE",
"chars": 1069,
"preview": "MIT License\n\nCopyright (c) 2020 Sohom Sahaun\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
},
{
"path": "README.md",
"chars": 1319,
"preview": "<h1 align=\"center\">SnowState 3.1.4</h1>\n<p align=\"center\">@sohomsahaun</p>\n\n---\n\n**SnowState** is a robust finite state "
},
{
"path": "SnowState.yyp",
"chars": 9130,
"preview": "{\n \"resourceType\": \"GMProject\",\n \"resourceVersion\": \"1.6\",\n \"name\": \"SnowState\",\n \"resources\": [\n {\"id\":{\"name\":\""
},
{
"path": "fonts/fDemo/fDemo.yy",
"chars": 8587,
"preview": "{\n \"hinting\": 0,\n \"glyphOperations\": 0,\n \"interpreter\": 0,\n \"pointRounding\": 0,\n \"fontName\": \"Consolas\",\n \"styleNa"
},
{
"path": "notes/Credits/Credits.txt",
"chars": 103,
"preview": "ART ASSETS\n-----------\n\nTreasure Hunters | Pixel Frog\nhttps://pixelfrog-assets.itch.io/treasure-hunters"
},
{
"path": "notes/Credits/Credits.yy",
"chars": 167,
"preview": "{\n \"parent\": {\n \"name\": \"Notes\",\n \"path\": \"folders/Notes.yy\",\n },\n \"resourceVersion\": \"1.1\",\n \"name\": \"Credits"
},
{
"path": "objects/oCamera/Alarm_0.gml",
"chars": 16,
"preview": "window_center();"
},
{
"path": "objects/oCamera/Create_0.gml",
"chars": 1022,
"preview": "// Stay in the correct layer\nif (layer_exists(\"Controllers\")) layer = layer_get_id(\"Controllers\");\n\nwidth = 480;\nheight "
},
{
"path": "objects/oCamera/Step_0.gml",
"chars": 11,
"preview": "fsm.step();"
},
{
"path": "objects/oCamera/oCamera.yy",
"chars": 1101,
"preview": "{\n \"resourceType\": \"GMObject\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"oCamera\",\n \"spriteId\": null,\n \"solid\": false,\n "
},
{
"path": "objects/oCloud/Step_0.gml",
"chars": 39,
"preview": "if (bbox_right < 0) instance_destroy();"
},
{
"path": "objects/oCloud/oCloud.yy",
"chars": 839,
"preview": "{\n \"spriteId\": null,\n \"solid\": false,\n \"visible\": true,\n \"spriteMaskId\": null,\n \"persistent\": false,\n \"parentObjec"
},
{
"path": "objects/oEffect/Other_7.gml",
"chars": 19,
"preview": "instance_destroy();"
},
{
"path": "objects/oEffect/oEffect.yy",
"chars": 840,
"preview": "{\n \"spriteId\": null,\n \"solid\": false,\n \"visible\": true,\n \"spriteMaskId\": null,\n \"persistent\": false,\n \"parentObjec"
},
{
"path": "objects/oGame/Alarm_0.gml",
"chars": 305,
"preview": "var _x = room_width + random_range(0, 100);\nvar _y = random_range(80, 180);\n\nwith (instance_create_layer(_x, _y, \"SmallC"
},
{
"path": "objects/oGame/Create_0.gml",
"chars": 71,
"preview": "randomize();\n\nshowControls = false;\nshowHistory = false;\n\nalarm[0] = 1;"
},
{
"path": "objects/oGame/Draw_64.gml",
"chars": 1603,
"preview": "draw_set_font(fDemo);\ndraw_set_halign(fa_right);\ndraw_set_valign(fa_bottom);\n\nvar _x, _y, _diff, _thickness;\n_diff = 24;"
},
{
"path": "objects/oGame/Step_0.gml",
"chars": 98,
"preview": "showControls ^= keyboard_check_released(vk_f2);\nshowHistory ^= keyboard_check_released(ord(\"H\"));\n"
},
{
"path": "objects/oGame/oGame.yy",
"chars": 1268,
"preview": "{\n \"spriteId\": null,\n \"solid\": false,\n \"visible\": true,\n \"spriteMaskId\": null,\n \"persistent\": false,\n \"parentObjec"
},
{
"path": "objects/oPlayerD/Create_0.gml",
"chars": 8369,
"preview": "// Setup\nmask_index = sPlayerMask;\n\n// Declare methods\nevent_user(15);\n\n// Sprite management\nsprites = {};\ninit_sprites("
},
{
"path": "objects/oPlayerD/Draw_0.gml",
"chars": 11,
"preview": "fsm.draw();"
},
{
"path": "objects/oPlayerD/KeyRelease_82.gml",
"chars": 16,
"preview": "game_restart();\n"
},
{
"path": "objects/oPlayerD/Other_25.gml",
"chars": 2013,
"preview": "/// @desc Methods\n\ninit_sprites = function() {\n\tvar _i = 0; repeat (argument_count div 2) {\n\t\tvar _noSword = asset_get_i"
},
{
"path": "objects/oPlayerD/Other_76.gml",
"chars": 17,
"preview": "fsm.throwSword();"
},
{
"path": "objects/oPlayerD/Step_0.gml",
"chars": 26,
"preview": "check_input();\nfsm.step();"
},
{
"path": "objects/oPlayerD/oPlayerD.yy",
"chars": 1611,
"preview": "{\n \"resourceType\": \"GMObject\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"oPlayerD\",\n \"spriteId\": {\n \"name\": \"sPlayerId"
},
{
"path": "objects/oPlayerT/Create_0.gml",
"chars": 6490,
"preview": "// Setup\nmask_index = sPlayerMask;\n\n// Declare methods\nevent_user(15);\n\n// Sprite management\nsprites = {};\ninit_sprites("
},
{
"path": "objects/oPlayerT/Draw_0.gml",
"chars": 11,
"preview": "fsm.draw();"
},
{
"path": "objects/oPlayerT/KeyRelease_82.gml",
"chars": 16,
"preview": "game_restart();\n"
},
{
"path": "objects/oPlayerT/Other_25.gml",
"chars": 2117,
"preview": "/// @desc Methods\n\ninit_sprites = function() {\n\tvar _i = 0; repeat (argument_count div 2) {\n\t\tvar _noSword = asset_get_i"
},
{
"path": "objects/oPlayerT/Other_76.gml",
"chars": 17,
"preview": "fsm.throwSword();"
},
{
"path": "objects/oPlayerT/Step_0.gml",
"chars": 252,
"preview": "check_input();\n\nfsm.trigger(\"t_coyote\");\nfsm.step();\nif (abs(input.hdir)) fsm.trigger(\"t_run\");\nif (input.jump) fsm.trig"
},
{
"path": "objects/oPlayerT/oPlayerT.yy",
"chars": 1641,
"preview": "{\n \"resourceType\": \"GMObject\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"oPlayerT\",\n \"spriteId\": {\n \"name\": \"sPlayerId"
},
{
"path": "objects/oSwordD/Create_0.gml",
"chars": 1752,
"preview": "// Setup\nmask_index = sSwordMask;\n\n// Declare methods\nevent_user(15);\n\n// Variables\nowner = noone;\nspd = 6;\nhspd = 0;\nfa"
},
{
"path": "objects/oSwordD/Draw_0.gml",
"chars": 11,
"preview": "fsm.draw();"
},
{
"path": "objects/oSwordD/Other_25.gml",
"chars": 129,
"preview": "/// @desc Methods\n\nrecall = function() {\n\tif (instance_exists(owner) && fsm.state_is(\"embedded\")) {\n\t\tfsm.change(\"recall"
},
{
"path": "objects/oSwordD/Step_0.gml",
"chars": 11,
"preview": "fsm.step();"
},
{
"path": "objects/oSwordD/oSwordD.yy",
"chars": 1373,
"preview": "{\n \"spriteId\": {\n \"name\": \"sSwordIdle\",\n \"path\": \"sprites/sSwordIdle/sSwordIdle.yy\",\n },\n \"solid\": false,\n \"vi"
},
{
"path": "objects/oSwordT/Create_0.gml",
"chars": 1898,
"preview": "// Setup\nmask_index = sSwordMask;\n\n// Declare methods\nevent_user(15);\n\n// Variables\nowner = noone;\nspd = 6;\nhspd = 0;\nfa"
},
{
"path": "objects/oSwordT/Draw_0.gml",
"chars": 11,
"preview": "fsm.draw();"
},
{
"path": "objects/oSwordT/Other_25.gml",
"chars": 69,
"preview": "/// @desc Methods\n\nrecall = function() {\n\tfsm.trigger(\"t_recall\");\n};"
},
{
"path": "objects/oSwordT/Step_0.gml",
"chars": 39,
"preview": "fsm.trigger(\"t_pre_step\");\n\nfsm.step();"
},
{
"path": "objects/oSwordT/oSwordT.yy",
"chars": 1403,
"preview": "{\n \"spriteId\": {\n \"name\": \"sSwordIdle\",\n \"path\": \"sprites/sSwordIdle/sSwordIdle.yy\",\n },\n \"solid\": false,\n \"vi"
},
{
"path": "objects/oWall/oWall.yy",
"chars": 752,
"preview": "{\n \"spriteId\": {\n \"name\": \"sWall\",\n \"path\": \"sprites/sWall/sWall.yy\",\n },\n \"solid\": false,\n \"visible\": true,\n "
},
{
"path": "options/amazonfire/options_amazonfire.yy",
"chars": 2473,
"preview": "{\n \"option_amazonfire_sync_android\": false,\n \"option_amazonfire_display_name\": \"Created with GameMaker Studio 2\",\n \"o"
},
{
"path": "options/android/options_android.yy",
"chars": 4154,
"preview": "{\n \"option_android_sync_amazon\": false,\n \"option_android_display_name\": \"Created with GameMaker Studio 2\",\n \"option_a"
},
{
"path": "options/html5/options_html5.yy",
"chars": 1250,
"preview": "{\n \"option_html5_browser_title\": \"Created with GameMaker Studio 2\",\n \"option_html5_version\": \"1.0.0.0\",\n \"option_html"
},
{
"path": "options/ios/options_ios.yy",
"chars": 3036,
"preview": "{\n \"option_ios_display_name\": \"Created with GameMaker Studio 2\",\n \"option_ios_bundle_name\": \"com.company.game\",\n \"opt"
},
{
"path": "options/linux/options_linux.yy",
"chars": 931,
"preview": "{\n \"option_linux_display_name\": \"Created with GameMaker Studio 2\",\n \"option_linux_version\": \"1.0.0.0\",\n \"option_linux"
},
{
"path": "options/mac/options_mac.yy",
"chars": 1290,
"preview": "{\n \"option_mac_display_name\": \"Created with GameMaker Studio 2\",\n \"option_mac_app_id\": \"com.company.game\",\n \"option_m"
},
{
"path": "options/main/options_main.yy",
"chars": 728,
"preview": "{\n \"option_gameguid\": \"e853c891-a127-4810-a122-eb28266b9756\",\n \"option_gameid\": \"0\",\n \"option_game_speed\": 60,\n \"opt"
},
{
"path": "options/operagx/options_operagx.yy",
"chars": 453,
"preview": "{\n \"option_operagx_version\": \"1.0.0.0\",\n \"option_operagx_game_name\": \"${project_name}\",\n \"option_operagx_splash_scree"
},
{
"path": "options/ps4/options_ps4.yy",
"chars": 1660,
"preview": "{\n \"resourceType\": \"GMPS4Options\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"PlayStation 4\",\n \"option_ps4_package_id\": \"I"
},
{
"path": "options/ps5/options_ps5.yy",
"chars": 1407,
"preview": "{\n \"resourceType\": \"GMPS5Options\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"PlayStation 5\",\n \"option_ps5_package_id\": \"I"
},
{
"path": "options/switch/options_switch.yy",
"chars": 586,
"preview": "{\n \"resourceType\": \"GMSwitchOptions\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"Switch\",\n \"option_switch_project_nmeta\": "
},
{
"path": "options/tvos/options_tvos.yy",
"chars": 1432,
"preview": "{\n \"option_tvos_display_name\": \"Made in GameMaker Studio 2\",\n \"option_tvos_bundle_name\": \"com.company.game\",\n \"option"
},
{
"path": "options/windows/options_windows.yy",
"chars": 1702,
"preview": "{\n \"option_windows_display_name\": \"Created with GameMaker Studio 2\",\n \"option_windows_executable_name\": \"${project_nam"
},
{
"path": "options/windowsuap/options_windowsuap.yy",
"chars": 3605,
"preview": "{\n \"option_windowsuap_display_name\": \"Created with GameMaker\",\n \"option_windowsuap_package_name\": \"YourPackageName\",\n "
},
{
"path": "options/xboxseriesxs/options_xboxseriesxs.yy",
"chars": 2387,
"preview": "{\n \"resourceType\": \"GMXboxSeriesXSOptions\",\n \"resourceVersion\": \"1.1\",\n \"name\": \"Xbox Series XS\",\n \"option_xboxserie"
},
{
"path": "rooms/rDemo/RoomCreationCode.gml",
"chars": 105,
"preview": "var _player = (DEMO == \"D\") ? oPlayerD : oPlayerT;\ninstance_create_layer(384, 288, \"Instances\", _player);"
},
{
"path": "rooms/rDemo/rDemo.yy",
"chars": 16124,
"preview": "{\n \"resourceType\": \"GMRoom\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"rDemo\",\n \"isDnd\": false,\n \"volume\": 1.0,\n \"paren"
},
{
"path": "scripts/MACROS/MACROS.gml",
"chars": 418,
"preview": "#macro DEMO \"T\"\t\t// D = Changing States Directly\n\t\t\t\t\t// T = Changing States Using Triggered Transitions\n\n#macro CAM v"
},
{
"path": "scripts/MACROS/MACROS.yy",
"chars": 217,
"preview": "{\n \"isDnD\": false,\n \"isCompatibility\": false,\n \"parent\": {\n \"name\": \"Scripts\",\n \"path\": \"folders/Scripts.yy\",\n "
},
{
"path": "scripts/SnowState/SnowState.gml",
"chars": 32138,
"preview": "/**\n*\tSnowState | v3.1.4\n*\tDocumentation: https://github.com/sohomsahaun/SnowState/wiki\n*\n*\tAuthor: Sohom Sahaun | @soho"
},
{
"path": "scripts/SnowState/SnowState.yy",
"chars": 210,
"preview": "{\n \"resourceType\": \"GMScript\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"SnowState\",\n \"isDnD\": false,\n \"isCompatibility\""
},
{
"path": "scripts/Utility/Utility.gml",
"chars": 972,
"preview": "/**\n*\tSome commonly used scripts\n*\tCredit goes to the awesome GM community\n*/\n\n/// @func animation_end()\nfunction animat"
},
{
"path": "scripts/Utility/Utility.yy",
"chars": 218,
"preview": "{\n \"isDnD\": false,\n \"isCompatibility\": false,\n \"parent\": {\n \"name\": \"Scripts\",\n \"path\": \"folders/Scripts.yy\",\n "
},
{
"path": "scripts/__snowstate_config/__snowstate_config.gml",
"chars": 722,
"preview": "/**\n*\tSnowState Configuration\n*\tDocumentation: https://github.com/sohomsahaun/SnowState/wiki/Configuration\n*/\n\n#macro SN"
},
{
"path": "scripts/__snowstate_config/__snowstate_config.yy",
"chars": 233,
"preview": "{\n \"isDnD\": false,\n \"isCompatibility\": false,\n \"parent\": {\n \"name\": \"SnowState\",\n \"path\": \"folders/SnowState.yy"
},
{
"path": "sprites/bgBigCloud/bgBigCloud.yy",
"chars": 2689,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"bgBigCloud\",\n \"bboxMode\": 0,\n \"collisionKind\": "
},
{
"path": "sprites/bgSky/bgSky.yy",
"chars": 2667,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"bgSky\",\n \"bboxMode\": 0,\n \"collisionKind\": 1,\n "
},
{
"path": "sprites/sBackTreeRegular/sBackTreeRegular.yy",
"chars": 4223,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sBackTreeRegular\",\n \"bboxMode\": 0,\n \"collisionK"
},
{
"path": "sprites/sBackTreeRight/sBackTreeRight.yy",
"chars": 4203,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sBackTreeRight\",\n \"bboxMode\": 0,\n \"collisionKin"
},
{
"path": "sprites/sFrontTreeTop/sFrontTreeTop.yy",
"chars": 4193,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sFrontTreeTop\",\n \"bboxMode\": 0,\n \"collisionKind"
},
{
"path": "sprites/sPlayerFall/sPlayerFall.yy",
"chars": 2683,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerFall\",\n \"bboxMode\": 0,\n \"collisionKind\":"
},
{
"path": "sprites/sPlayerIdle/sPlayerIdle.yy",
"chars": 4675,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerIdle\",\n \"bboxMode\": 0,\n \"collisionKind\":"
},
{
"path": "sprites/sPlayerJump/sPlayerJump.yy",
"chars": 3679,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerJump\",\n \"bboxMode\": 0,\n \"collisionKind\":"
},
{
"path": "sprites/sPlayerMask/sPlayerMask.yy",
"chars": 2878,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerMask\",\n \"bboxMode\": 0,\n \"collisionKind\":"
},
{
"path": "sprites/sPlayerRun/sPlayerRun.yy",
"chars": 5159,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerRun\",\n \"bboxMode\": 0,\n \"collisionKind\": "
},
{
"path": "sprites/sPlayerSwordAirAttack1/sPlayerSwordAirAttack1.yy",
"chars": 3767,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordAirAttack1\",\n \"bboxMode\": 0,\n \"coll"
},
{
"path": "sprites/sPlayerSwordAirAttack2/sPlayerSwordAirAttack2.yy",
"chars": 3767,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordAirAttack2\",\n \"bboxMode\": 0,\n \"coll"
},
{
"path": "sprites/sPlayerSwordAttack1/sPlayerSwordAttack1.yy",
"chars": 3743,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordAttack1\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sPlayerSwordAttack2/sPlayerSwordAttack2.yy",
"chars": 3743,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordAttack2\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sPlayerSwordAttack3/sPlayerSwordAttack3.yy",
"chars": 3743,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordAttack3\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sPlayerSwordFall/sPlayerSwordFall.yy",
"chars": 2703,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordFall\",\n \"bboxMode\": 0,\n \"collisionK"
},
{
"path": "sprites/sPlayerSwordIdle/sPlayerSwordIdle.yy",
"chars": 4735,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordIdle\",\n \"bboxMode\": 0,\n \"collisionK"
},
{
"path": "sprites/sPlayerSwordJump/sPlayerSwordJump.yy",
"chars": 3719,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordJump\",\n \"bboxMode\": 0,\n \"collisionK"
},
{
"path": "sprites/sPlayerSwordRun/sPlayerSwordRun.yy",
"chars": 5229,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordRun\",\n \"bboxMode\": 0,\n \"collisionKi"
},
{
"path": "sprites/sPlayerSwordThrowSword/sPlayerSwordThrowSword.yy",
"chars": 4121,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sPlayerSwordThrowSword\",\n \"bboxMode\": 0,\n \"coll"
},
{
"path": "sprites/sSmallCloud1/sSmallCloud1.yy",
"chars": 2693,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSmallCloud1\",\n \"bboxMode\": 0,\n \"collisionKind\""
},
{
"path": "sprites/sSmallCloud2/sSmallCloud2.yy",
"chars": 2695,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSmallCloud2\",\n \"bboxMode\": 0,\n \"collisionKind\""
},
{
"path": "sprites/sSmallCloud3/sSmallCloud3.yy",
"chars": 2695,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSmallCloud3\",\n \"bboxMode\": 0,\n \"collisionKind\""
},
{
"path": "sprites/sSwordEffectAirAttack1/sSwordEffectAirAttack1.yy",
"chars": 3253,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEffectAirAttack1\",\n \"bboxMode\": 0,\n \"coll"
},
{
"path": "sprites/sSwordEffectAirAttack2/sSwordEffectAirAttack2.yy",
"chars": 3253,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEffectAirAttack2\",\n \"bboxMode\": 0,\n \"coll"
},
{
"path": "sprites/sSwordEffectAttack1/sSwordEffectAttack1.yy",
"chars": 3750,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEffectAttack1\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sSwordEffectAttack2/sSwordEffectAttack2.yy",
"chars": 3750,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEffectAttack2\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sSwordEffectAttack3/sSwordEffectAttack3.yy",
"chars": 3750,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEffectAttack3\",\n \"bboxMode\": 0,\n \"collisi"
},
{
"path": "sprites/sSwordEmbedded/sSwordEmbedded.yy",
"chars": 4203,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEmbedded\",\n \"bboxMode\": 0,\n \"collisionKin"
},
{
"path": "sprites/sSwordEmbeddedMask/sSwordEmbeddedMask.yy",
"chars": 2900,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordEmbeddedMask\",\n \"bboxMode\": 0,\n \"collisio"
},
{
"path": "sprites/sSwordIdle/sSwordIdle.yy",
"chars": 6145,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordIdle\",\n \"bboxMode\": 0,\n \"collisionKind\": "
},
{
"path": "sprites/sSwordMask/sSwordMask.yy",
"chars": 2868,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordMask\",\n \"bboxMode\": 0,\n \"collisionKind\": "
},
{
"path": "sprites/sSwordSpinning/sSwordSpinning.yy",
"chars": 4203,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sSwordSpinning\",\n \"bboxMode\": 0,\n \"collisionKin"
},
{
"path": "sprites/sWall/sWall.yy",
"chars": 2651,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sWall\",\n \"bboxMode\": 0,\n \"collisionKind\": 1,\n "
},
{
"path": "sprites/sWater/sWater.yy",
"chars": 2669,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sWater\",\n \"bboxMode\": 0,\n \"collisionKind\": 1,\n "
},
{
"path": "sprites/sWaterReflection/sWaterReflection.yy",
"chars": 4234,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"sWaterReflection\",\n \"bboxMode\": 0,\n \"collisionK"
},
{
"path": "sprites/stFrontTreeBody/stFrontTreeBody.yy",
"chars": 2695,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"stFrontTreeBody\",\n \"bboxMode\": 0,\n \"collisionKi"
},
{
"path": "sprites/stGrass/stGrass.yy",
"chars": 2665,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"stGrass\",\n \"bboxMode\": 0,\n \"collisionKind\": 1,\n"
},
{
"path": "sprites/stTerrain/stTerrain.yy",
"chars": 2675,
"preview": "{\n \"resourceType\": \"GMSprite\",\n \"resourceVersion\": \"1.0\",\n \"name\": \"stTerrain\",\n \"bboxMode\": 0,\n \"collisionKind\": 1"
},
{
"path": "tilesets/tFrontTreeBody/tFrontTreeBody.yy",
"chars": 1038,
"preview": "{\n \"spriteId\": {\n \"name\": \"stFrontTreeBody\",\n \"path\": \"sprites/stFrontTreeBody/stFrontTreeBody.yy\",\n },\n \"tileW"
},
{
"path": "tilesets/tGrass/tGrass.yy",
"chars": 866,
"preview": "{\n \"spriteId\": {\n \"name\": \"stGrass\",\n \"path\": \"sprites/stGrass/stGrass.yy\",\n },\n \"tileWidth\": 32,\n \"tileHeight"
},
{
"path": "tilesets/tTerrain/tTerrain.yy",
"chars": 1312,
"preview": "{\n \"spriteId\": {\n \"name\": \"stTerrain\",\n \"path\": \"sprites/stTerrain/stTerrain.yy\",\n },\n \"tileWidth\": 32,\n \"tile"
}
]
About this extraction
This page contains the full source code of the sohomsahaun/SnowState GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 112 files (272.9 KB), approximately 94.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.