Tons of updates on ProEdge

This commit is contained in:
Brian Fertig 2025-08-02 20:49:48 -06:00
parent d09ac363c8
commit 2e096c8fc5
28 changed files with 1577 additions and 192 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 915 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because it is too large Load Diff

BIN
assets/sounds/fireSpell.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/sounds/rain.mp3 Normal file

Binary file not shown.

BIN
assets/sounds/roar.mp3 Normal file

Binary file not shown.

BIN
raw/Bootstrap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
raw/Oldenburg.zip Normal file

Binary file not shown.

View File

@ -15,15 +15,15 @@
},
"NNDungeon.tmx": {
"expandedObjectLayers": [
4,
5,
4,
3
],
"scale": 0.5,
"selectedLayer": 4,
"selectedLayer": 2,
"viewCenter": {
"x": 6159,
"y": 644
"x": 3232,
"y": 2401
}
},
"NNDungeon.tmx#99boy-tiles": {
@ -47,11 +47,14 @@
"scaleInDock": 1
},
"gulch.tmx": {
"scale": 2,
"expandedObjectLayers": [
6
],
"scale": 0.75,
"selectedLayer": 3,
"viewCenter": {
"x": 4517.25,
"y": 4397
"x": 3212,
"y": 3200.6666666666665
}
},
"gulch.tmx#99boy-tiles": {
@ -63,20 +66,25 @@
},
"proedge.tmx": {
"expandedObjectLayers": [
5,
3
],
"scale": 0.33,
"selectedLayer": 2,
"scale": 0.5,
"selectedLayer": 4,
"viewCenter": {
"x": 3628.787878787879,
"y": 1960.6060606060605
"x": 2421,
"y": 3199
}
},
"proedge.tmx#boss-tiles": {
"scaleInDock": 1
},
"proedge.tmx#proedge-enemies": {
"scaleInDock": 1
},
"proedge.tmx#proedge-tiles": {
"scaleInDock": 0.5
"scaleInDock": 0.5,
"scaleInEditor": 1
}
},
"last.exportedFilePath": "C:/Git/legends/assets",
@ -90,19 +98,21 @@
"map.tileWidth": 100,
"map.width": 16,
"openFiles": [
"proedge.tmx"
"proedge.tmx",
"NNDungeon.tmx",
"gulch.tmx"
],
"project": "Tile-Project-Legends.tiled-project",
"property.type": "bool",
"recentFiles": [
"proedge.tmx",
"gulch.tmx",
"NNDungeon.tmx",
"gluch.tmx",
"gulch.tmx"
"proedge.tmx",
"gluch.tmx"
],
"tileset.embedInMap": true,
"tileset.tileSize": {
"height": 100,
"width": 100
"height": 200,
"width": 200
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="16" height="9" tilewidth="100" tileheight="100" infinite="1" nextlayerid="5" nextobjectid="19">
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="16" height="9" tilewidth="100" tileheight="100" infinite="1" nextlayerid="6" nextobjectid="36">
<editorsettings>
<export target="../assets/proedge.json" format="json"/>
</editorsettings>
@ -100,6 +100,21 @@
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="56">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="57">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="58">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="63">
<properties>
<property name="collides" type="bool" value="true"/>
@ -115,10 +130,98 @@
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="66">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="67">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="68">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="73">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="74">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="75">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="83">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="84">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="85">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="86">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="87">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="88">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="89">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="96">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="97">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="98">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
<tile id="99">
<properties>
<property name="collides" type="bool" value="true"/>
</properties>
</tile>
</tileset>
<tileset firstgid="101" name="proedge-enemies" tilewidth="100" tileheight="100" tilecount="100" columns="10">
<image source="../assets/proedge-enemies.png" width="1000" height="1000"/>
</tileset>
<tileset firstgid="201" name="boss-tiles" tilewidth="200" tileheight="200" tilecount="25" columns="5">
<image source="../assets/boss-tiles.png" width="1000" height="1000"/>
</tileset>
<layer id="1" name="main" width="16" height="9">
<data encoding="csv">
<chunk x="0" y="0" width="16" height="16">
@ -238,10 +341,10 @@
1610612761,2,3,1,2,3,3758096409,2,3,1,1610612761,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,3758096409,2,3,1,1610612761,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,3758096408,2,3,1,1610612760,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,3758096408,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354584,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -251,15 +354,15 @@
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
1610612762,2147483672,25,25,25,25,25,25,25,25,25,25,25,25,25,26,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354584,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225496,1,2,1073741848,3221225497,3221225497,3221225497,2684354586,
1610612762,2147483672,25,25,25,25,25,25,2147483672,1,2,24,25,25,25,26,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612760,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354584,
2,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
2,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
536870936,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -269,8 +372,8 @@
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
1610612762,2147483672,25,25,25,25,25,25,25,25,25,25,25,25,25,26,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,1,2,3,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
1610612762,2147483672,25,25,25,25,1,2,3,25,25,25,25,25,25,26,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
@ -278,9 +381,27 @@
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,1,2,3,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
1610612762,2147483672,25,25,25,25,1,2,3,25,25,25,25,25,25,26,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585
</chunk>
<chunk x="32" y="48" width="16" height="16">
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354584,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
1610612761,2,3,1,2,3,1,2,3,1,2,3,1,2,3,2684354585,
3221225498,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,3221225497,2684354586,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
</data>
@ -289,7 +410,7 @@
<data encoding="csv">
<chunk x="0" y="0" width="16" height="16">
0,0,4,5,0,0,0,14,15,0,0,0,4,5,0,0,
0,11,12,13,0,0,0,0,0,0,0,0,0,0,0,0,
0,11,12,13,0,0,0,0,0,0,0,0,0,0,40,0,
1610612741,21,22,23,0,0,0,0,0,0,6,7,8,0,0,3758096408,
1610612740,31,32,33,0,0,0,0,0,0,16,17,18,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -298,7 +419,7 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,56,0,0,0,0,0,0,54,55,37,38,39,54,55,0,
0,66,0,0,0,0,0,0,64,65,47,48,49,64,65,0,
0,66,50,57,58,59,50,0,64,65,47,48,49,64,65,0,
1610612751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1610612750,0,0,0,0,0,0,41,42,43,0,0,0,0,0,0,
0,0,0,0,0,0,0,51,52,53,0,0,0,0,0,0,
@ -313,10 +434,10 @@
0,0,0,0,0,0,0,45,46,0,0,0,0,9,10,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,0,
536870936,6,7,8,0,0,0,0,0,0,0,0,0,29,30,0,
0,16,17,18,0,0,0,0,0,0,0,0,0,0,0,0,
0,16,17,18,0,0,0,0,0,0,0,0,0,0,40,0,
0,0,0,0,0,0,0,0,0,3221225496,0,0,1073741848,0,0,0,
0,0,0,0,0,0,0,0,0,2147483672,0,0,24,0,0,0,
0,6,7,8,0,6,7,8,0,34,0,0,2147483661,2147483660,2147483659,0,
0,0,0,0,0,0,0,94,95,2147483672,0,0,24,0,0,0,
0,6,7,8,40,6,7,8,0,0,0,0,2147483661,2147483660,2147483659,0,
1610612741,16,17,18,0,16,17,18,0,0,0,0,2147483671,2147483670,2147483669,0,
1610612740,0,0,0,0,0,0,0,0,0,0,0,2147483681,2147483680,2147483679,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3758096408,
@ -345,37 +466,37 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,29,30,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,54,55,35,36,54,55,0,0,0,44,0,
0,0,0,0,0,54,55,35,36,54,55,0,0,0,0,0,
1610612751,0,0,0,0,64,65,45,46,64,65,0,0,0,0,0,
1610612750,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1610612751,1610612749,1610612759,1610612769,0,0,0,0,0,0,0,0,0,0,0,0,
1610612750,1610612748,1610612758,1610612768,0,0,0,0,0,0,0,0,0,0,0,0,
0,1610612747,1610612757,1610612767,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,56,37,38,39,56,0,0,0,0,0,
0,0,0,0,0,0,66,47,48,49,66,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,56,37,38,39,56,0,94,95,0,0,
0,11,12,13,0,0,66,47,48,49,66,0,0,0,27,0,
1610612751,21,22,23,0,0,0,0,0,0,0,0,0,0,0,0,
1610612750,31,32,33,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="16" y="16" width="16" height="16">
0,2147483678,2147483677,34,0,0,0,0,0,0,0,0,0,0,34,2684354584,
0,2147483678,2147483677,0,0,0,0,0,0,0,0,0,0,0,0,2684354584,
0,0,0,0,1073741828,1073741829,0,0,0,0,1073741828,1073741829,0,0,0,0,
0,0,4,5,0,0,0,14,15,0,0,0,4,5,0,0,
0,44,0,34,27,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,34,27,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,
0,0,3221225477,3221225476,0,0,0,3221225487,3221225486,0,0,0,3221225477,3221225476,0,0,
0,0,56,37,38,39,56,0,0,0,0,0,0,0,0,0,
0,0,66,47,48,49,66,0,0,0,57,58,59,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,35,36,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,45,46,0,0,0,0,0
</chunk>
<chunk x="32" y="16" width="16" height="16">
536870936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -389,6 +510,78 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,19,20,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,29,30,0,
0,0,0,0,3221225487,3221225486,0,0,0,0,0,3221225487,3221225486,0,0,0,
0,0,0,0,94,95,0,0,0,94,95,0,0,0,0,0,
0,74,75,76,0,0,37,38,39,0,0,67,68,69,0,0,
0,84,85,86,54,55,47,48,49,54,55,77,78,79,0,0,
0,0,0,56,64,65,0,0,0,64,65,56,0,0,0,0,
0,0,0,66,0,0,41,42,43,0,0,66,0,0,0,0
</chunk>
<chunk x="0" y="32" width="16" height="16">
1610612751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1610612750,0,0,0,87,88,0,0,0,0,0,87,88,0,0,0,
0,0,0,0,97,98,0,0,0,0,0,97,98,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,40,0,2147483661,2147483660,2147483659,0,0,0,0,0,11,12,13,40,0,
1610612751,0,0,2147483671,2147483670,2147483669,0,0,0,0,0,21,22,23,0,0,
1610612750,0,0,2147483681,2147483680,2147483679,0,0,0,0,0,31,32,33,0,0,
0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1610612751,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1610612750,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="16" y="32" width="16" height="16">
0,0,0,0,0,87,88,0,0,0,0,0,0,87,88,0,
0,0,0,0,0,97,98,0,0,0,0,0,0,97,98,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,94,95,0,0,0,0,0,0,0,0,0,0,0,
0,67,68,69,74,75,76,0,0,0,0,0,27,35,36,0,
0,77,78,79,84,85,86,0,0,0,0,0,0,45,46,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="32" y="32" width="16" height="16">
0,89,90,0,0,0,51,52,53,0,0,0,0,89,90,0,
0,99,100,0,0,0,61,62,63,0,0,0,0,99,100,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,94,95,0,0,0,0,0,0,0,94,95,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,54,55,0,0,0,0,0,0,0,54,55,0,0,2684354564,
0,0,64,65,0,0,0,0,0,0,0,64,65,0,0,2684354565,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,56,0,0,0,0,0,0,0,0,0,56,0,0,2684354564,
0,0,66,0,0,0,0,0,0,0,0,0,66,0,0,2684354565,
0,27,0,0,0,0,0,0,0,0,0,0,0,27,28,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,54,55,50,40,0,0,0,0,0,0,40,50,54,55,0,
0,64,65,0,0,0,0,0,0,0,0,0,0,64,65,0
</chunk>
<chunk x="32" y="48" width="16" height="16">
0,0,0,0,0,0,41,42,43,0,0,0,0,0,0,0,
0,0,0,0,0,0,51,52,53,0,0,0,0,0,0,0,
0,0,0,0,0,0,61,62,63,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,3221225567,3221225566,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -399,6 +592,42 @@
</layer>
<layer id="4" name="candles" width="16" height="9">
<data encoding="csv">
<chunk x="0" y="0" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,71,72,73,0,0,0,0,0,0,
0,0,0,0,0,0,0,81,82,83,0,0,0,0,0,0,
0,0,0,0,0,0,0,91,92,93,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="16" y="0" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="32" y="0" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -412,34 +641,55 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,34,0,0,0,0,0,44,0,0,0,0,0,44,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,71,72,73,0,0,0,0,0,0,0,
0,0,0,0,0,0,81,82,83,0,0,0,0,0,0,0,
0,0,0,0,0,0,91,92,93,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="0" y="16" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,44,0,0,0,0,0,44,0,0,0,0,
0,0,0,0,34,44,0,0,0,0,0,44,34,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="16" y="16" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,44,0,34,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,44,0,0,0,0,0,44,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,34,0,0,34,0,0,0,0,
0,0,0,0,0,0,0,0,34,0,0,34,0,0,0,0
</chunk>
<chunk x="32" y="16" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,71,72,73,0,0,0,0,0,0,0,0,0,0,0,0,
0,81,82,83,0,0,0,0,0,0,0,0,0,0,0,0,
0,91,92,93,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -447,6 +697,75 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,34,0,34,0,0,0,0,0,0,0,
0,0,0,0,44,0,71,72,73,0,44,0,0,0,0,0
</chunk>
<chunk x="0" y="32" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,71,72,73,0,0,0,0,0,0,
0,0,0,0,0,0,0,81,44,83,0,0,0,0,0,0,
0,0,0,0,0,0,0,91,92,93,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="16" y="32" width="16" height="16">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</chunk>
<chunk x="32" y="32" width="16" height="16">
0,0,0,0,0,0,81,82,83,0,0,0,0,0,0,0,
0,0,0,0,0,0,91,92,93,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,
0,0,0,0,34,0,0,0,0,0,34,0,0,0,0,0,
0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,
0,0,0,0,34,0,0,0,0,0,34,0,0,0,0,0,
0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,
0,0,0,0,34,0,0,0,0,0,34,0,0,0,0,0,
0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,44,0,0,0,0,0,0,0,0,44,0,0,0
</chunk>
<chunk x="32" y="48" width="16" height="16">
0,0,0,0,0,0,71,72,73,0,0,0,0,0,0,0,
0,0,0,0,0,0,81,82,83,0,0,0,0,0,0,0,
0,0,0,0,0,0,91,92,93,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,44,0,0,0,0,0,0,0,0,0,0,0,0,44,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -455,6 +774,11 @@
</chunk>
</data>
</layer>
<objectgroup id="5" name="zones">
<object id="31" name="preBoss" x="3853.33" y="3066" width="194" height="100.667"/>
<object id="32" name="darkNight" x="3808" y="2960" width="300" height="236"/>
<object id="35" name="midSave" x="1048" y="1106" width="196" height="76"/>
</objectgroup>
<objectgroup id="3" name="enemies">
<object id="1" gid="101" x="4268" y="1638" width="100" height="100">
<properties>
@ -467,7 +791,7 @@
<property name="follow" type="bool" value="true"/>
</properties>
</object>
<object id="4" gid="101" x="2696" y="302" width="100" height="100">
<object id="4" gid="101" x="2696" y="300" width="100" height="100">
<properties>
<property name="fire" type="bool" value="true"/>
<property name="patrolY" type="int" value="500"/>
@ -483,7 +807,7 @@
<property name="follow" type="bool" value="true"/>
</properties>
</object>
<object id="7" gid="101" x="4386" y="1214" width="100" height="100">
<object id="7" gid="101" x="4400" y="1200" width="100" height="100">
<properties>
<property name="fire" type="bool" value="true"/>
<property name="patrolY" type="int" value="500"/>
@ -519,12 +843,6 @@
<property name="speed" type="int" value="300"/>
</properties>
</object>
<object id="14" gid="111" x="1234.85" y="3877.27" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
<property name="speed" type="int" value="300"/>
</properties>
</object>
<object id="15" gid="111" x="277.273" y="3877.27" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
@ -549,5 +867,68 @@
<property name="speed" type="int" value="300"/>
</properties>
</object>
<object id="19" gid="107" x="300" y="2500" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
<property name="speed" type="int" value="250"/>
<property name="sword" type="bool" value="true"/>
</properties>
</object>
<object id="20" gid="109" x="1300" y="3000" width="100" height="100">
<properties>
<property name="patrolY" type="int" value="500"/>
<property name="speed" type="int" value="350"/>
<property name="star" type="bool" value="true"/>
</properties>
</object>
<object id="21" gid="105" x="146.97" y="1231.82" width="100" height="100">
<properties>
<property name="caster" type="bool" value="true"/>
<property name="health" type="int" value="2"/>
<property name="patrolX" type="int" value="700"/>
</properties>
</object>
<object id="25" gid="107" x="2595.45" y="3843.94" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
<property name="speed" type="int" value="150"/>
<property name="sword" type="bool" value="true"/>
</properties>
</object>
<object id="27" gid="107" x="2934.85" y="4346.97" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
<property name="speed" type="int" value="150"/>
<property name="sword" type="bool" value="true"/>
</properties>
</object>
<object id="28" gid="109" x="1800" y="3000" width="100" height="100">
<properties>
<property name="patrolY" type="int" value="500"/>
<property name="speed" type="int" value="350"/>
<property name="star" type="bool" value="true"/>
</properties>
</object>
<object id="29" gid="105" x="1900" y="3000" width="100" height="100">
<properties>
<property name="caster" type="bool" value="true"/>
<property name="health" type="int" value="2"/>
<property name="patrolX" type="int" value="1000"/>
</properties>
</object>
<object id="30" gid="107" x="2768.18" y="3934.85" width="100" height="100">
<properties>
<property name="follow" type="bool" value="true"/>
<property name="speed" type="int" value="150"/>
<property name="sword" type="bool" value="true"/>
</properties>
</object>
<object id="34" gid="206" x="4400" y="5250" width="200" height="200">
<properties>
<property name="boss" type="bool" value="true"/>
<property name="health" type="int" value="4"/>
<property name="patrolX" type="int" value="-1000"/>
</properties>
</object>
</objectgroup>
</map>

View File

@ -17,8 +17,13 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
this.bottomBoundary = 0;
this.shoots = false;
this.stars = false;
this.sword = false;
this.lightningCast = false;
this.caster = false;
this.shootTimer = 0;
this.scytheSpeed = 550;
this.starSpeed = 700;
this.fireballSpeed = 300;
this.exploding = false;
this.reloadVariance = 4000;
@ -126,11 +131,13 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
this.scene.game.globalState.addScore(100);
this.scene.interface.showScore();
this.shoots = false;
this.garbage = false;
this.stars = false;
this.sword = false;
this.onPatrol = false;
this.lightningCast = false;
this.anims.stop('walk99');
this.onPause = true;
this.setTexture('boss-tiles', 2);
this.setTexture('boss-tiles', 8);
this.scene.tweens.add({
targets: this,
scale: 1.5,
@ -139,14 +146,14 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
repeat: 2,
duration: 200,
onComplete: () => {
this.setTexture('boss-tiles', 3);
this.scene.tweens.add({
targets: this,
ease: 'Power1',
scale: 1.1,
duration: 200,
onComplete: () => {
this.setTexture('boss-tiles', 4);
this.scene.bossDefeated = true;
this.setTexture('boss-tiles', 9);
this.scene.tweens.add({
targets: this,
ease: 'Power1',
@ -194,23 +201,150 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
} else {
this.body.setVelocity(0, 0);
this.health --;
if (this.health === 3) {
this.speed += 100;
this.sword = true;
}
if (this.health === 2) {
this.shoots = true;
this.stars = true;
this.bottleReload = 1200;
this.speed += 200;
this.speed += 100;
}
if (this.health === 1) {
this.shoots = true;
this.bottleReload = 800;
this.speed += 200;
this.bottleReloadVariance = 1000;
}
if (this.boss === true) {
this.anims.stop('walk99');
this.setTexture('boss-tiles', 2);
this.setTexture('boss-tiles', 8);
}
}
}
fireStars() {
this.fireStar();
this.scene.time.delayedCall(200, () => {
this.fireStar();
});
this.scene.time.delayedCall(400, () => {
this.fireStar();
});
}
fireStar() {
if (this.scene) {
const player = this.scene.player;
const star = this.scene.physics.add.sprite(this.x, this.y, 'proedge-enemies', 14);
star.setSize(75, 75);
this.scene.attacks.add(star);
const angle = Phaser.Math.Angle.Between(this.x, this.y, player.x, player.y);
star.setVelocity(Math.cos(angle) * this.starSpeed, Math.sin(angle) * this.starSpeed);
this.scene.physics.world.enable(star);
this.scene.sound.play('swoosh');
this.scene.tweens.add({
targets: star,
angle: 1080,
duration: 1500,
ease: 'Linear',
onComplete: () => {
star.destroy();
}
});
}
}
fireSword() {
const player = this.scene.player;
const sword = this.scene.physics.add.sprite(this.x, this.y, 'proedge-enemies', 13);
sword.setSize(75, 75);
this.scene.attacks.add(sword);
const angle = Phaser.Math.Angle.Between(this.x, this.y, player.x, player.y);
sword.setVelocity(Math.cos(angle) * this.scytheSpeed, Math.sin(angle) * this.scytheSpeed);
this.scene.physics.world.enable(sword);
this.scene.sound.play('swoosh');
this.scene.tweens.add({
targets: sword,
angle: 360,
duration: 1500,
ease: 'Linear',
onComplete: () => {
sword.destroy();
}
});
}
cast() {
let vari = Phaser.Math.Between(1, 3)
if (vari === 1) {
this.fireBalls();
} else {
this.fireFloor();
}
}
fireFloor() {
const player = this.scene.player;
const fire = this.scene.physics.add.sprite(this.x, this.y, 'proedge-enemies', 12);
fire.setSize(150, 150).setScale(0.2);
this.scene.attacks.add(fire);
const angle = Phaser.Math.Angle.Between(this.x, this.y, player.x, player.y);
// Position the fire sprite 150 units away from player along the angle
fire.x = player.x + Math.cos(angle) * -150;
fire.y = player.y + Math.sin(angle) * -150;
this.scene.sound.play('fireSpell');
this.scene.physics.world.enable(fire);
this.scene.tweens.add({
targets: fire,
angle: -1080,
duration: 10000,
scale: 2.5,
ease: 'Linear',
onComplete: () => {
fire.destroy();
}
});
}
lightningFloor() {
const player = this.scene.player;
const lightning = this.scene.physics.add.sprite(this.x, this.y, 'proedge-enemies', 15);
const fire = this.scene.physics.add.sprite(this.x, this.y, 'proedge-enemies', 16);
fire.setSize(150, 150).setScale(0.2);
this.scene.attacks.add(fire);
const angle = Phaser.Math.Angle.Between(this.x, this.y, player.x, player.y);
// Position the fire sprite 150 units away from player along the angle
fire.x = player.x + Math.cos(angle) * -150;
fire.y = player.y + Math.sin(angle) * -150;
lightning.x = (player.x + Math.cos(angle) * -150) + 10;
lightning.y = (player.y + Math.sin(angle) * -150) - 40;
// Add flashing animation to lightning sprite
this.scene.tweens.add({
targets: lightning,
alpha: 0,
duration: 100,
repeat: 3,
yoyo: true,
ease: 'Linear',
onComplete: () => {
lightning.destroy();
}
});
this.scene.sound.play('lightningVortex');
this.scene.physics.world.enable(fire);
this.scene.tweens.add({
targets: fire,
angle: -1080,
duration: 6000,
scale: 2,
ease: 'Linear',
onComplete: () => {
fire.destroy();
}
});
}
fireBullet() {
// Fire the bottle
let variance = Math.floor(Math.random() * 2);
@ -361,6 +495,11 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
} else {
this.scene.physics.moveToObject(this, this.scene.player, this.speed);
this.anims.play('walk99', true);
if (this.body.velocity.x < 0) {
this.flipX = false;
} else {
this.flipX = true;
}
}
} else {
this.isFollowing = false;
@ -375,7 +514,7 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
const camera = this.scene.cameras.main;
if (this.shoots) {
if (this.shoots || this.stars || this.sword || this.caster || this.boss) {
if (camera.worldView.contains(this.x, this.y)) {
this.shootTimer += delta;
if (this.shootTimer >= this.reloadCalc) {
@ -387,7 +526,18 @@ export class ProEdgeEnemy extends Phaser.GameObjects.Sprite {
if(!this.body) {
return;
}
this.fireBullet();
if (this.shoots) {
this.fireBullet();
} else if (this.stars) {
this.fireStars();
} else if (this.sword) {
this.fireSword();
} else if (this.caster) {
this.cast();
}
if (this.lightningCast) {
this.lightningFloor();
}
});
}
}

View File

@ -33,10 +33,3 @@ const config = {
const game = new Phaser.Game(config);
game.globalState = new GlobalState();
// game.playerData = {
// score: 0,
// maxHearts: 3,
// startGulchX: 950,
// startGulchY: 4250,
// }

View File

@ -13,7 +13,10 @@ export class MenuScene extends Phaser.Scene {
this.load.image('QBoy', 'assets/menu-quantum-boy.png');
this.load.image('ProTec', 'assets/menu-cult-of-protec.png');
this.load.audio('menu-music', 'assets/music/gulch-2.mp3');
this.load.audio('hawk-call', 'assets/sounds/hawk-call.mp3')
this.load.audio('hawk-call', 'assets/sounds/hawk-call.mp3');
// Load custom font
this.load.font('oldenburg', 'assets/fonts/Oldenburg-Regular.ttf');
}
create() {
@ -43,7 +46,7 @@ export class MenuScene extends Phaser.Scene {
).setScale(0.4);
const ProTec = this.add.image(
this.scale.width * .65,
this.scale.width * .6,
this.scale.height * 1.3,
'ProTec'
).setScale(0.4);
@ -127,13 +130,51 @@ export class MenuScene extends Phaser.Scene {
}
});
this.add.text(
this.scale.width / 2,
this.scale.height * (9 / 10),
'Press SPACE to start',
{ fontSize: '32px', fill: '#fff' }
// Create glowing text with semi-transparent background
const textX = this.scale.width / 2;
const textY = this.scale.height * (9 / 10);
// Semi-transparent background rectangle
const bgRect = this.add.rectangle(
textX,
textY,
400, // Width of the background
60, // Height of the background
0x000000, // Black color
0.4 // Opacity (semi-transparent)
).setOrigin(0.5);
// Glowing text effect using multiple text layers with custom font
const glowText1 = this.add.text(textX, textY, 'Press SPACE to start', {
fontFamily: 'Oldenburg, cursive',
fontSize: '32px',
fill: '#ffffff'
}).setOrigin(0.5);
const glowText2 = this.add.text(textX, textY, 'Press SPACE to start', {
fontFamily: 'Oldenburg, cursive',
fontSize: '32px',
fill: '#ffff00' // Yellow glow
}).setOrigin(0.5);
// Apply a subtle pulse animation to the glowing text
this.tweens.add({
targets: [glowText1, glowText2],
alpha: 0.7,
duration: 1500,
ease: 'Sine.easeInOut',
yoyo: true,
repeat: -1
});
// Add the actual text on top for clarity
const mainText = this.add.text(textX, textY, 'Press SPACE to start', {
fontFamily: 'Oldenburg, cursive',
fontSize: '32px',
fill: '#ffffff'
}).setOrigin(0.5);
// Add keyboard input
this.input.keyboard.on('keydown-SPACE', () => {
this.bgMusic.stop();
this.scene.start('Gulch');

View File

View File

@ -20,6 +20,10 @@ export class ProEdge extends Phaser.Scene {
this.lightningTimer = null;
this.isLightningActive = false;
this.lastLightningTime = 0;
this.tint = 0x5555AA;
this.lightningLow = 10000;
this.lightningHigh = 20000;
this.bossDefeated = false;
}
preload() {
@ -44,9 +48,12 @@ export class ProEdge extends Phaser.Scene {
});
this.load.audio('proEdgeMusic', 'assets/music/proEdge.mp3');
this.load.audio('rain', 'assets/sounds/rain.mp3');
this.load.audio('lightning-1', 'assets/sounds/lightning-1.mp3');
this.load.audio('lightning-2', 'assets/sounds/lightning-2.mp3');
this.load.audio('lightning-3', 'assets/sounds/lightning-3.mp3');
this.load.audio('lightningVortex', 'assets/sounds/lightningVortex.mp3');
this.load.audio('fireSpell', 'assets/sounds/fireSpell.mp3');
this.load.audio('teleport', 'assets/sounds/vortex.mp3');
this.load.audio('gunShot', 'assets/sounds/gun-shot.mp3');
this.load.audio('axeThrow', 'assets/sounds/axe.mp3');
@ -67,16 +74,16 @@ export class ProEdge extends Phaser.Scene {
//const NNTiles = proedgeMap.addTilesetImage('99boy-tiles', '99boy-tiles');
const mainLayer = proedgeMap.createLayer('main', proedgeTiles, 0, 0)
.setCollisionByProperty({ collides: true })
.setTint(0x5555AA);
.setTint(this.tint);
const objectsLayer = proedgeMap.createLayer('objects', proedgeTiles, 0, 0)
.setCollisionByProperty({ collides: true })
.setTint(0x5555AA);
.setTint(this.tint);
const candlesLayer = proedgeMap.createLayer('candles', proedgeTiles, 0, 0)
.setCollisionByProperty({ collides: true })
.setAlpha(0.7);
const enemiesLayer = proedgeMap.getObjectLayer('enemies');
//const interactiveLayer = proedgeMap.getObjectLayer('interactive');
//const zoneLayer = proedgeMap.getObjectLayer('zones');
const zoneLayer = proedgeMap.getObjectLayer('zones');
// Store references for lightning effect
this.mainLayer = mainLayer;
@ -92,6 +99,10 @@ export class ProEdge extends Phaser.Scene {
this.portals.add(portal1C);
let portal1D = this.physics.add.image(850, 2810, 'vortex').setAlpha(.8).setData('destination', [1150, 1200]);
this.portals.add(portal1D);
let portal2A = this.physics.add.image(2050, 2810, 'vortex').setAlpha(.8).setData('destination', [3950, 3100]);
this.portals.add(portal2A);
let portal2B = this.physics.add.image(3950, 2910, 'vortex').setAlpha(.8).setData('destination', [2050, 3000]);
this.portals.add(portal2B);
// Make portals rotate 360 degrees every 5 seconds
this.portals.children.iterate((portal) => {
@ -123,16 +134,20 @@ export class ProEdge extends Phaser.Scene {
//this.player = new Player(this, 3550, 350);
this.player.healthBars(true, 1, 3);
// zoneLayer.objects.forEach(object => {
// if (object.name === 'gulchExit') {
// const Gulch = this.add.rectangle(object.x, object.y, object.width, object.height);
// this.Gulch = this.physics.add.existing(Gulch);
// }
// if (object.name === 'bossSave') {
// const bossSave = this.add.rectangle(object.x, object.y, object.width, object.height);
// this.bossSave = this.physics.add.existing(bossSave);
// }
// });
zoneLayer.objects.forEach(object => {
if (object.name === 'preBoss') {
const preBoss = this.add.rectangle(object.x, object.y, object.width, object.height);
this.preBoss = this.physics.add.existing(preBoss);
}
if (object.name === 'darkNight') {
const darkNight = this.add.rectangle(object.x, object.y, object.width, object.height);
this.darkNight = this.physics.add.existing(darkNight);
}
if (object.name === 'midSave') {
const midSave = this.add.rectangle(object.x, object.y, object.width, object.height);
this.midSave = this.physics.add.existing(midSave);
}
});
// Add Interactive
// this.interactive = this.physics.add.group();
@ -156,9 +171,8 @@ export class ProEdge extends Phaser.Scene {
});
enemiesLayer.objects.forEach(object => {
let aProEdge;
console.log(object.gid);
if (object.gid > 300) {
aProEdge = this.enemies.create(object.x-50, object.y-50, 'boss-tiles', object.gid-301);
if (object.gid > 200) {
aProEdge = this.enemies.create(object.x-50, object.y-50, 'boss-tiles', object.gid-201);
} else {
aProEdge = this.enemies.create(object.x-50, object.y-50, 'proedge-enemies', object.gid-101);
}
@ -185,7 +199,20 @@ export class ProEdge extends Phaser.Scene {
}
if (prop.name === 'fire') {
aProEdge.shoots = true;
aProEdge.bottleReload = prop.value;
//aProEdge.bottleReload = prop.value;
}
if (prop.name === 'star') {
aProEdge.stars = true;
aProEdge.reloadCalc = 0;
aProEdge.reload = 2000;
}
if (prop.name === 'sword') {
aProEdge.sword = true;
aProEdge.reloadCalc = 0;
aProEdge.reload = 2000;
}
if (prop.name === 'caster') {
aProEdge.caster = true;
}
if (prop.name === 'speed') {
aProEdge.speed = prop.value;
@ -197,8 +224,9 @@ export class ProEdge extends Phaser.Scene {
aProEdge.bottleReload = 2000;
aProEdge.bottleReloadVariance = 500;
}
if (prop.name === 'NNBoss' && prop.value === true) {
if (prop.name === 'boss' && prop.value === true) {
aProEdge.boss = true;
aProEdge.lightningCast = true;
}
if (prop.name === 'health') {
aProEdge.health = prop.value;
@ -266,10 +294,26 @@ export class ProEdge extends Phaser.Scene {
// this.bgMusic.stop();
// this.scene.start('Gulch');
// });
// this.physics.add.collider(this.player, this.bossSave, (player, zone) => {
// this.game.globalState.startNNX = 2350;
// this.game.globalState.startNNY = 550;
// });
this.physics.add.collider(this.player, this.preBoss, (player, zone) => {
this.game.globalState.startProX = 3950;
this.game.globalState.startProY = 3250;
});
this.physics.add.collider(this.player, this.midSave, (player, zone) => {
this.game.globalState.startProX = 850;
this.game.globalState.startProY = 1350;
});
this.physics.add.collider(this.player, this.darkNight, (player, zone) => {
this.tint = 0x102133;
this.lightningLow = 3000;
this.lightningHigh = 9000;
this.mainLayer.setTint(this.tint);
this.objectsLayer.setTint(this.tint);
if (!this.bgRain) {
this.bgRain = this.sound.add('rain', { volume: 0.6 });
this.bgRain.loop = true;
this.bgRain.play();
}
});
// function touchInteractive(player, interactive) {
// interactive.properties.forEach(prop => {
@ -342,7 +386,7 @@ export class ProEdge extends Phaser.Scene {
update(time, delta) {
// Handle lightning effect in update loop
if (time - this.lastLightningTime > Phaser.Math.Between(10000, 20000)) {
if (time - this.lastLightningTime > Phaser.Math.Between(this.lightningLow, this.lightningHigh)) {
if (!this.isLightningActive) {
this.isLightningActive = true;
this.lastLightningTime = time;
@ -354,8 +398,8 @@ export class ProEdge extends Phaser.Scene {
// Restore tints after random duration (100-300ms)
this.time.delayedCall(Phaser.Math.Between(100, 300), () => {
this.mainLayer.setTint(0x5555AA);
this.objectsLayer.setTint(0x5555AA);
this.mainLayer.setTint(this.tint);
this.objectsLayer.setTint(this.tint);
this.isLightningActive = false;
});
}
@ -376,5 +420,39 @@ export class ProEdge extends Phaser.Scene {
if (this.player.body.x >= onBounds.x+1600) {
this.cameras.main.setBounds(onBounds.x+1600, onBounds.y, 1600, 900);
}
if (this.bossDefeated === true) {
this.bossDefeated = false;
this.runEnd();
}
}
runEnd() {
this.bgRain.stop();
this.tint = 0x5555AA;
this.game.globalState.startGulchX = 4450;
this.game.globalState.startGulchY = 3950;
let endPortal = this.physics.add.image(3950, 4010, 'vortex').setAlpha(.8);
this.physics.add.collider(this.player, endPortal, (player, portal) => {
this.bgMusic.stop();
this.scene.start('Gulch');
});
this.tweens.add({
targets: endPortal,
angle: -360,
duration: 5000,
repeat: -1,
ease: 'Linear'
});
this.tweens.add({
targets: endPortal,
alpha: .2,
scale: 2,
glow: 0x008888,
yoyo: true,
duration: 3000,
repeat: -1,
ease: 'Linear'
});
}
}