diff --git a/config.json b/config.json index d797e638..c8fecac3 100644 --- a/config.json +++ b/config.json @@ -2,7 +2,7 @@ "mapFolder": "askellon-sector.w3x", "gameExecutable": "E:\\Warcraft III\\_retail_\\x86_64\\Warcraft III.exe", "outputFolder": "C:\\Users\\Travis\\Documents\\Warcraft III\\Maps\\Askellon", - "version": "0.0.42", + "version": "0.0.42b", "minifyScript": false, "launchArgs": [ "-launch", diff --git a/maps/askellon-sector.w3x/ReplaceableTextures/Commandbuttons/BTNBomb.dds b/maps/askellon-sector.w3x/ReplaceableTextures/Commandbuttons/BTNBomb.dds new file mode 100644 index 00000000..1c9227fd Binary files /dev/null and b/maps/askellon-sector.w3x/ReplaceableTextures/Commandbuttons/BTNBomb.dds differ diff --git a/maps/askellon-sector.w3x/ReplaceableTextures/CommandbuttonsDisabled/DISBTNBomb.dds b/maps/askellon-sector.w3x/ReplaceableTextures/CommandbuttonsDisabled/DISBTNBomb.dds new file mode 100644 index 00000000..f3042cec Binary files /dev/null and b/maps/askellon-sector.w3x/ReplaceableTextures/CommandbuttonsDisabled/DISBTNBomb.dds differ diff --git a/maps/askellon-sector.w3x/Sc2/Units/rocket.mdx b/maps/askellon-sector.w3x/Sc2/Units/rocket.mdx new file mode 100644 index 00000000..943df2c0 Binary files /dev/null and b/maps/askellon-sector.w3x/Sc2/Units/rocket.mdx differ diff --git a/maps/askellon-sector.w3x/Sounds/FusionExplosion.wav b/maps/askellon-sector.w3x/Sounds/FusionExplosion.wav new file mode 100644 index 00000000..5913a7d9 Binary files /dev/null and b/maps/askellon-sector.w3x/Sounds/FusionExplosion.wav differ diff --git a/maps/askellon-sector.w3x/Sounds/RemoteBombCharge.wav b/maps/askellon-sector.w3x/Sounds/RemoteBombCharge.wav new file mode 100644 index 00000000..37a61994 Binary files /dev/null and b/maps/askellon-sector.w3x/Sounds/RemoteBombCharge.wav differ diff --git a/maps/askellon-sector.w3x/Sounds/RocketLoop.wav b/maps/askellon-sector.w3x/Sounds/RocketLoop.wav new file mode 100644 index 00000000..539ff7d3 Binary files /dev/null and b/maps/askellon-sector.w3x/Sounds/RocketLoop.wav differ diff --git a/maps/askellon-sector.w3x/Sounds/SunFlare.wav b/maps/askellon-sector.w3x/Sounds/SunFlare.wav new file mode 100644 index 00000000..30808eeb Binary files /dev/null and b/maps/askellon-sector.w3x/Sounds/SunFlare.wav differ diff --git a/maps/askellon-sector.w3x/TerrainArt/terrain.slk b/maps/askellon-sector.w3x/TerrainArt/terrain.slk new file mode 100644 index 00000000..b87fb95b --- /dev/null +++ b/maps/askellon-sector.w3x/TerrainArt/terrain.slk @@ -0,0 +1,2494 @@ +ID;PCALCOOO32 +C;X1;Y1;K"tileID" +C;X2;Y1;K"cliffSet" +C;X3;Y1;K"dir" +C;X4;Y1;K"file" +C;X5;Y1;K"comment" +C;X6;Y1;K"name" +C;X7;Y1;K"buildable" +C;X8;Y1;K"footprints" +C;X9;Y1;K"walkable" +C;X10;Y1;K"flyable" +C;X11;Y1;K"blightPri" +C;X12;Y1;K"convertTo" +C;X13;Y1;K"InBeta" +C;X14;Y1;K"version" +C;X1;Y2;K"Ldrt" +C;X2;Y2;K-1 +C;X3;Y2;K"TerrainArt\LordaeronSummer" +C;X4;Y2;K"Lords_Dirt" +C;X5;Y2;K"Dirt" +C;X6;Y2;K"WESTRING_TILE_DIRT" +C;X7;Y2;K1 +C;X8;Y2;K1 +C;X9;Y2;K1 +C;X10;Y2;K1 +C;X11;Y2;K2 +C;X12;Y2;K"Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y2;K1 +C;X14;Y2;K0 +C;X1;Y3;K"Ldro" +C;X2;Y3;K-1 +C;X3;Y3;K"TerrainArt\LordaeronSummer" +C;X4;Y3;K"Lords_DirtRough" +C;X5;Y3;K"Rough Dirt" +C;X6;Y3;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y3;K1 +C;X8;Y3;K1 +C;X9;Y3;K1 +C;X10;Y3;K1 +C;X11;Y3;K1 +C;X12;Y3;K"Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y3;K1 +C;X14;Y3;K0 +C;X1;Y4;K"Ldrg" +C;X2;Y4;K-1 +C;X3;Y4;K"TerrainArt\LordaeronSummer" +C;X4;Y4;K"Lords_DirtGrass" +C;X5;Y4;K"Grassy Dirt" +C;X6;Y4;K"WESTRING_TILE_GRASSY_DIRT" +C;X7;Y4;K1 +C;X8;Y4;K1 +C;X9;Y4;K1 +C;X10;Y4;K1 +C;X11;Y4;K3 +C;X12;Y4;K"Fdrg,Wsng,Bdrr,Cpos,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Dgrs,Ggrs,Zdrg,Idki,Ofsl" +C;X13;Y4;K1 +C;X14;Y4;K0 +C;X1;Y5;K"Lrok" +C;X2;Y5;K-1 +C;X3;Y5;K"TerrainArt\LordaeronSummer" +C;X4;Y5;K"Lords_Rock" +C;X5;Y5;K"Rock" +C;X6;Y5;K"WESTRING_TILE_ROCK" +C;X7;Y5;K0 +C;X8;Y5;K0 +C;X9;Y5;K1 +C;X10;Y5;K1 +C;X11;Y5;K6 +C;X12;Y5;K"Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y5;K1 +C;X14;Y5;K0 +C;X1;Y6;K"Lgrs" +C;X2;Y6;K-1 +C;X3;Y6;K"TerrainArt\LordaeronSummer" +C;X4;Y6;K"Lords_Grass" +C;X5;Y6;K"Grass" +C;X6;Y6;K"WESTRING_TILE_GRASS" +C;X7;Y6;K1 +C;X8;Y6;K1 +C;X9;Y6;K1 +C;X10;Y6;K1 +C;X11;Y6;K4 +C;X12;Y6;K"Fgrs,Wgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Isnw,Ofsl" +C;X13;Y6;K1 +C;X14;Y6;K0 +C;X1;Y7;K"Lgrd" +C;X2;Y7;K-1 +C;X3;Y7;K"TerrainArt\LordaeronSummer" +C;X4;Y7;K"Lords_GrassDark" +C;X5;Y7;K"Dark Grass" +C;X6;Y7;K"WESTRING_TILE_DARK_GRASS" +C;X7;Y7;K1 +C;X8;Y7;K1 +C;X9;Y7;K1 +C;X10;Y7;K1 +C;X11;Y7;K5 +C;X12;Y7;K"Fgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dlav,Glav,Zvin,Iice,Ofst" +C;X13;Y7;K1 +C;X14;Y7;K0 +C;X1;Y8;K"Fdrt" +C;X2;Y8;K-1 +C;X3;Y8;K"TerrainArt\LordaeronFall" +C;X4;Y8;K"Lordf_Dirt" +C;X5;Y8;K"Dirt" +C;X6;Y8;K"WESTRING_TILE_DIRT" +C;X7;Y8;K1 +C;X8;Y8;K1 +C;X9;Y8;K1 +C;X10;Y8;K1 +C;X11;Y8;K2 +C;X12;Y8;K"Ldrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y8;K1 +C;X14;Y8;K0 +C;X1;Y9;K"Fdro" +C;X2;Y9;K-1 +C;X3;Y9;K"TerrainArt\LordaeronFall" +C;X4;Y9;K"Lordf_DirtRough" +C;X5;Y9;K"Rough Dirt" +C;X6;Y9;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y9;K1 +C;X8;Y9;K1 +C;X9;Y9;K1 +C;X10;Y9;K1 +C;X11;Y9;K1 +C;X12;Y9;K"Ldro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y9;K1 +C;X14;Y9;K0 +C;X1;Y10;K"Fdrg" +C;X2;Y10;K-1 +C;X3;Y10;K"TerrainArt\LordaeronFall" +C;X4;Y10;K"Lordf_DirtGrass" +C;X5;Y10;K"Grassy Dirt" +C;X6;Y10;K"WESTRING_TILE_GRASSY_DIRT" +C;X7;Y10;K1 +C;X8;Y10;K1 +C;X9;Y10;K1 +C;X10;Y10;K1 +C;X11;Y10;K3 +C;X12;Y10;K"Ldrg,Wsng,Bdrr,Cpos,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Dgrs,Ggrs,Zdrg,Idki,Ofsl" +C;X13;Y10;K1 +C;X14;Y10;K0 +C;X1;Y11;K"Frok" +C;X2;Y11;K-1 +C;X3;Y11;K"TerrainArt\LordaeronFall" +C;X4;Y11;K"Lordf_Rock" +C;X5;Y11;K"Rock" +C;X6;Y11;K"WESTRING_TILE_ROCK" +C;X7;Y11;K0 +C;X8;Y11;K0 +C;X9;Y11;K1 +C;X10;Y11;K1 +C;X11;Y11;K6 +C;X12;Y11;K"Lrok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y11;K1 +C;X14;Y11;K0 +C;X1;Y12;K"Fgrs" +C;X2;Y12;K-1 +C;X3;Y12;K"TerrainArt\LordaeronFall" +C;X4;Y12;K"Lordf_Grass" +C;X5;Y12;K"Grass" +C;X6;Y12;K"WESTRING_TILE_GRASS" +C;X7;Y12;K1 +C;X8;Y12;K1 +C;X9;Y12;K1 +C;X10;Y12;K1 +C;X11;Y12;K4 +C;X12;Y12;K"Lgrs,Wgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Isnw,Ofsl" +C;X13;Y12;K1 +C;X14;Y12;K0 +C;X1;Y13;K"Fgrd" +C;X2;Y13;K-1 +C;X3;Y13;K"TerrainArt\LordaeronFall" +C;X4;Y13;K"Lordf_GrassDark" +C;X5;Y13;K"Dark Grass" +C;X6;Y13;K"WESTRING_TILE_DARK_GRASS" +C;X7;Y13;K1 +C;X8;Y13;K1 +C;X9;Y13;K1 +C;X10;Y13;K1 +C;X11;Y13;K5 +C;X12;Y13;K"Lgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dlav,Glav,Zvin,Iice,Ofst" +C;X13;Y13;K1 +C;X14;Y13;K0 +C;X1;Y14;K"Wdrt" +C;X2;Y14;K-1 +C;X3;Y14;K"TerrainArt\LordaeronWinter" +C;X4;Y14;K"Lordw_Dirt" +C;X5;Y14;K"Dirt" +C;X6;Y14;K"WESTRING_TILE_DIRT" +C;X7;Y14;K1 +C;X8;Y14;K1 +C;X9;Y14;K1 +C;X10;Y14;K1 +C;X11;Y14;K2 +C;X12;Y14;K"Ldrt,Fdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y14;K1 +C;X14;Y14;K0 +C;X1;Y15;K"Wdro" +C;X2;Y15;K-1 +C;X3;Y15;K"TerrainArt\LordaeronWinter" +C;X4;Y15;K"Lordw_DirtRough" +C;X5;Y15;K"Rough Dirt" +C;X6;Y15;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y15;K1 +C;X8;Y15;K1 +C;X9;Y15;K1 +C;X10;Y15;K1 +C;X11;Y15;K1 +C;X12;Y15;K"Ldro,Fdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y15;K1 +C;X14;Y15;K0 +C;X1;Y16;K"Wsng" +C;X2;Y16;K-1 +C;X3;Y16;K"TerrainArt\LordaeronWinter" +C;X4;Y16;K"Lordw_SnowGrass" +C;X5;Y16;K"Grassy Snow" +C;X6;Y16;K"WESTRING_TILE_GRASSY_SNOW" +C;X7;Y16;K1 +C;X8;Y16;K1 +C;X9;Y16;K1 +C;X10;Y16;K1 +C;X11;Y16;K4 +C;X12;Y16;K"Ldrg,Fdrg,Bdrr,Cpos,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Dgrs,Ggrs,Zdrg,Idki,Ofsl" +C;X13;Y16;K1 +C;X14;Y16;K0 +C;X1;Y17;K"Wrok" +C;X2;Y17;K-1 +C;X3;Y17;K"TerrainArt\LordaeronWinter" +C;X4;Y17;K"Lordw_Rock" +C;X5;Y17;K"Rock" +C;X6;Y17;K"WESTRING_TILE_ROCK" +C;X7;Y17;K0 +C;X8;Y17;K0 +C;X9;Y17;K1 +C;X10;Y17;K1 +C;X11;Y17;K6 +C;X12;Y17;K"Lrok,Frok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y17;K1 +C;X14;Y17;K0 +C;X1;Y18;K"Wgrs" +C;X2;Y18;K-1 +C;X3;Y18;K"TerrainArt\LordaeronWinter" +C;X4;Y18;K"Lordw_Grass" +C;X5;Y18;K"Grass" +C;X6;Y18;K"WESTRING_TILE_GRASS" +C;X7;Y18;K1 +C;X8;Y18;K1 +C;X9;Y18;K1 +C;X10;Y18;K1 +C;X11;Y18;K3 +C;X12;Y18;K"Lgrs,Fgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Iice,Ofsl" +C;X13;Y18;K1 +C;X14;Y18;K0 +C;X1;Y19;K"Wsnw" +C;X2;Y19;K-1 +C;X3;Y19;K"TerrainArt\LordaeronWinter" +C;X4;Y19;K"Lordw_Snow" +C;X5;Y19;K"Snow" +C;X6;Y19;K"WESTRING_TILE_SNOW" +C;X7;Y19;K1 +C;X8;Y19;K1 +C;X9;Y19;K1 +C;X10;Y19;K1 +C;X11;Y19;K5 +C;X12;Y19;K"Lgrd,Fgrd,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dlav,Glav,Zsan,Isnw,Ofst" +C;X13;Y19;K1 +C;X14;Y19;K0 +C;X1;Y20;K"Bdrt" +C;X2;Y20;K-1 +C;X3;Y20;K"TerrainArt\Barrens" +C;X4;Y20;K"Barrens_Dirt" +C;X5;Y20;K"Dirt" +C;X6;Y20;K"WESTRING_TILE_DIRT" +C;X7;Y20;K1 +C;X8;Y20;K0 +C;X9;Y20;K1 +C;X10;Y20;K1 +C;X11;Y20;K2 +C;X12;Y20;K"Ldrt,Fdrt,Wdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y20;K1 +C;X14;Y20;K0 +C;X1;Y21;K"Bdrh" +C;X2;Y21;K-1 +C;X3;Y21;K"TerrainArt\Barrens" +C;X4;Y21;K"Barrens_DirtRough" +C;X5;Y21;K"Rough Dirt" +C;X6;Y21;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y21;K1 +C;X8;Y21;K0 +C;X9;Y21;K1 +C;X10;Y21;K1 +C;X11;Y21;K1 +C;X12;Y21;K"Ldro,Fdro,Wdro,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y21;K1 +C;X14;Y21;K0 +C;X1;Y22;K"Bdrr" +C;X2;Y22;K-1 +C;X3;Y22;K"TerrainArt\Barrens" +C;X4;Y22;K"Barrens_Pebbles" +C;X5;Y22;K"Pebbles" +C;X6;Y22;K"WESTRING_TILE_PEBBLES" +C;X7;Y22;K0 +C;X8;Y22;K0 +C;X9;Y22;K1 +C;X10;Y22;K1 +C;X11;Y22;K6 +C;X12;Y22;K"Lrok,Frok,Wrok,Avin,Cvin,Nsnr,Ybtl,Vcbp,Qcbp,Xbtl,Drds,Grds,Zbks,Ibkb,Osmb" +C;X13;Y22;K1 +C;X14;Y22;K0 +C;X1;Y23;K"Bdrg" +C;X2;Y23;K-1 +C;X3;Y23;K"TerrainArt\Barrens" +C;X4;Y23;K"Barrens_DirtGrass" +C;X5;Y23;K"Grassy Dirt" +C;X6;Y23;K"WESTRING_TILE_GRASSY_DIRT" +C;X7;Y23;K1 +C;X8;Y23;K1 +C;X9;Y23;K1 +C;X10;Y23;K1 +C;X11;Y23;K8 +C;X12;Y23;K"Ldrg,Fdrg,Wsng,Adrg,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dgrs,Ggrs,Zdrg,Idtr,Ofsl" +C;X13;Y23;K1 +C;X14;Y23;K0 +C;X1;Y24;K"Bdsr" +C;X2;Y24;K-1 +C;X3;Y24;K"TerrainArt\Barrens" +C;X4;Y24;K"Barrens_Desert" +C;X5;Y24;K"Desert" +C;X6;Y24;K"WESTRING_TILE_DESERT" +C;X7;Y24;K1 +C;X8;Y24;K1 +C;X9;Y24;K1 +C;X10;Y24;K1 +C;X11;Y24;K3 +C;X12;Y24;K"Ldrt,Fdrt,Wdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zsan,Iice,Ofst" +C;X13;Y24;K1 +C;X14;Y24;K0 +C;X1;Y25;K"Bdsd" +C;X2;Y25;K-1 +C;X3;Y25;K"TerrainArt\Barrens" +C;X4;Y25;K"Barrens_DesertDark" +C;X5;Y25;K"Dark Desert" +C;X6;Y25;K"WESTRING_TILE_DARK_DESERT" +C;X7;Y25;K1 +C;X8;Y25;K1 +C;X9;Y25;K1 +C;X10;Y25;K1 +C;X11;Y25;K4 +C;X12;Y25;K"Ldro,Fdro,Wdro,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dlav,Glav,Zsan,Idki,Ofst" +C;X13;Y25;K1 +C;X14;Y25;K0 +C;X1;Y26;K"Bflr" +C;X2;Y26;K-1 +C;X3;Y26;K"TerrainArt\Barrens" +C;X4;Y26;K"Barrens_Rock" +C;X5;Y26;K"Rock" +C;X6;Y26;K"WESTRING_TILE_ROCK" +C;X7;Y26;K0 +C;X8;Y26;K0 +C;X9;Y26;K1 +C;X10;Y26;K1 +C;X11;Y26;K7 +C;X12;Y26;K"Lrok,Frok,Wrok,Arck,Crck,Nrck,Ywmb,Vrck,Qrck,Xwmb,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y26;K1 +C;X14;Y26;K0 +C;X1;Y27;K"Bgrr" +C;X2;Y27;K-1 +C;X3;Y27;K"TerrainArt\Barrens" +C;X4;Y27;K"Barrens_Grass" +C;X5;Y27;K"Grass" +C;X6;Y27;K"WESTRING_TILE_GRASS" +C;X7;Y27;K1 +C;X8;Y27;K1 +C;X9;Y27;K1 +C;X10;Y27;K1 +C;X11;Y27;K5 +C;X12;Y27;K"Lgrs,Fgrs,Wgrs,Agrs,Cgrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dlvc,Glvc,Zgrs,Isnw,Ofsl" +C;X13;Y27;K1 +C;X14;Y27;K0 +C;X1;Y28;K"Adrt" +C;X2;Y28;K-1 +C;X3;Y28;K"TerrainArt\Ashenvale" +C;X4;Y28;K"Ashen_Dirt" +C;X5;Y28;K"Dirt" +C;X6;Y28;K"WESTRING_TILE_DIRT" +C;X7;Y28;K1 +C;X8;Y28;K1 +C;X9;Y28;K1 +C;X10;Y28;K1 +C;X11;Y28;K1 +C;X12;Y28;K"Ldrt,Fdrt,Wdrt,Bdsr,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y28;K1 +C;X14;Y28;K0 +C;X1;Y29;K"Adrd" +C;X2;Y29;K-1 +C;X3;Y29;K"TerrainArt\Ashenvale" +C;X4;Y29;K"Ashen_DirtRough" +C;X5;Y29;K"Rough Dirt" +C;X6;Y29;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y29;K1 +C;X8;Y29;K1 +C;X9;Y29;K1 +C;X10;Y29;K1 +C;X11;Y29;K2 +C;X12;Y29;K"Ldro,Fdro,Wdro,Bdsd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y29;K1 +C;X14;Y29;K0 +C;X1;Y30;K"Agrs" +C;X2;Y30;K-1 +C;X3;Y30;K"TerrainArt\Ashenvale" +C;X4;Y30;K"Ashen_Grass" +C;X5;Y30;K"Grass" +C;X6;Y30;K"WESTRING_TILE_GRASS" +C;X7;Y30;K1 +C;X8;Y30;K1 +C;X9;Y30;K1 +C;X10;Y30;K1 +C;X11;Y30;K4 +C;X12;Y30;K"Lgrs,Fgrs,Wgrs,Bgrr,Cgrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zgrs,Isnw,Ofsl" +C;X13;Y30;K1 +C;X14;Y30;K0 +C;X1;Y31;K"Arck" +C;X2;Y31;K-1 +C;X3;Y31;K"TerrainArt\Ashenvale" +C;X4;Y31;K"Ashen_Rock" +C;X5;Y31;K"Rock" +C;X6;Y31;K"WESTRING_TILE_ROCK" +C;X7;Y31;K1 +C;X8;Y31;K0 +C;X9;Y31;K1 +C;X10;Y31;K1 +C;X11;Y31;K5 +C;X12;Y31;K"Lrok,Frok,Wrok,Bflr,Crck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y31;K1 +C;X14;Y31;K0 +C;X1;Y32;K"Agrd" +C;X2;Y32;K-1 +C;X3;Y32;K"TerrainArt\Ashenvale" +C;X4;Y32;K"Ashen_GrassLumpy" +C;X5;Y32;K"Lumpy Grass" +C;X6;Y32;K"WESTRING_TILE_LUMPY_GRASS" +C;X7;Y32;K1 +C;X8;Y32;K1 +C;X9;Y32;K1 +C;X10;Y32;K1 +C;X11;Y32;K6 +C;X12;Y32;K"Lgrd,Fgrd,Wsnw,Bdrg,Cpos,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Dgrs,Ggrs,Zvin,Isnw,Ofst" +C;X13;Y32;K1 +C;X14;Y32;K0 +C;X1;Y33;K"Avin" +C;X2;Y33;K-1 +C;X3;Y33;K"TerrainArt\Ashenvale" +C;X4;Y33;K"Ashen_Vines" +C;X5;Y33;K"Vines" +C;X6;Y33;K"WESTRING_TILE_VINES" +C;X7;Y33;K0 +C;X8;Y33;K1 +C;X9;Y33;K1 +C;X10;Y33;K1 +C;X11;Y33;K3 +C;X12;Y33;K"Lrok,Frok,Wrok,Bdrr,Cvin,Nsnr,Yrtl,Vcrp,Qcrp,Xrtl,Dlav,Glav,Zvin,Iice,Ofst" +C;X13;Y33;K1 +C;X14;Y33;K0 +C;X1;Y34;K"Adrg" +C;X2;Y34;K-1 +C;X3;Y34;K"TerrainArt\Ashenvale" +C;X4;Y34;K"Ashen_DirtGrass" +C;X5;Y34;K"Grassy Dirt" +C;X6;Y34;K"WESTRING_TILE_GRASSY_DIRT" +C;X7;Y34;K1 +C;X8;Y34;K1 +C;X9;Y34;K1 +C;X10;Y34;K1 +C;X11;Y34;K8 +C;X12;Y34;K"Ldrg,Fdrg,Wsng,Bdrg,Cpos,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Drds,Grds,Zdrg,Idtr,Ofsl" +C;X13;Y34;K1 +C;X14;Y34;K0 +C;X1;Y35;K"Alvd" +C;X2;Y35;K-1 +C;X3;Y35;K"TerrainArt\Ashenvale" +C;X4;Y35;K"Ashen_leaves" +C;X5;Y35;K"Leaves" +C;X6;Y35;K"WESTRING_TILE_LEAVES" +C;X7;Y35;K1 +C;X8;Y35;K1 +C;X9;Y35;K1 +C;X10;Y35;K1 +C;X11;Y35;K7 +C;X12;Y35;K"Lgrd,Fgrd,Wsnw,Bdrg,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dlvc,Glvc,Zvin,Idki,Ofst" +C;X13;Y35;K1 +C;X14;Y35;K0 +C;X1;Y36;K"Cdrt" +C;X2;Y36;K-1 +C;X3;Y36;K"TerrainArt\Felwood" +C;X4;Y36;K"Felwood_Dirt" +C;X5;Y36;K"Dirt" +C;X6;Y36;K"WESTRING_TILE_DIRT" +C;X7;Y36;K1 +C;X8;Y36;K1 +C;X9;Y36;K1 +C;X10;Y36;K1 +C;X11;Y36;K2 +C;X12;Y36;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y36;K1 +C;X14;Y36;K0 +C;X1;Y37;K"Cdrd" +C;X2;Y37;K-1 +C;X3;Y37;K"TerrainArt\Felwood" +C;X4;Y37;K"Felwood_DirtRough" +C;X5;Y37;K"Rough Dirt" +C;X6;Y37;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y37;K1 +C;X8;Y37;K1 +C;X9;Y37;K1 +C;X10;Y37;K1 +C;X11;Y37;K1 +C;X12;Y37;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y37;K1 +C;X14;Y37;K0 +C;X1;Y38;K"Cpos" +C;X2;Y38;K-1 +C;X3;Y38;K"TerrainArt\Felwood" +C;X4;Y38;K"Felwood_Poison" +C;X5;Y38;K"Poison" +C;X6;Y38;K"WESTRING_TILE_POISON" +C;X7;Y38;K1 +C;X8;Y38;K1 +C;X9;Y38;K1 +C;X10;Y38;K1 +C;X11;Y38;K6 +C;X12;Y38;K"Ldrg,Fdrg,Wsng,Bdrg,Adrg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Drds,Grds,Zsan,Iice,Ofsl" +C;X13;Y38;K1 +C;X14;Y38;K0 +C;X1;Y39;K"Crck" +C;X2;Y39;K-1 +C;X3;Y39;K"TerrainArt\Felwood" +C;X4;Y39;K"Felwood_Rock" +C;X5;Y39;K"Rock" +C;X6;Y39;K"WESTRING_TILE_ROCK" +C;X7;Y39;K0 +C;X8;Y39;K0 +C;X9;Y39;K1 +C;X10;Y39;K1 +C;X11;Y39;K5 +C;X12;Y39;K"Lrok,Frok,Wrok,Bflr,Arck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y39;K1 +C;X14;Y39;K0 +C;X1;Y40;K"Cvin" +C;X2;Y40;K-1 +C;X3;Y40;K"TerrainArt\Felwood" +C;X4;Y40;K"Felwood_Vines" +C;X5;Y40;K"Vines" +C;X6;Y40;K"WESTRING_TILE_VINES" +C;X7;Y40;K0 +C;X8;Y40;K1 +C;X9;Y40;K1 +C;X10;Y40;K1 +C;X11;Y40;K3 +C;X12;Y40;K"Lrok,Frok,Wrok,Bdrr,Avin,Nsnr,Yrtl,Vcrp,Qcrp,Xrtl,Dlav,Glav,Zvin,Idki,Ofsl" +C;X13;Y40;K1 +C;X14;Y40;K0 +C;X1;Y41;K"Cgrs" +C;X2;Y41;K-1 +C;X3;Y41;K"TerrainArt\Felwood" +C;X4;Y41;K"Felwood_Grass" +C;X5;Y41;K"Grass" +C;X6;Y41;K"WESTRING_TILE_GRASS" +C;X7;Y41;K1 +C;X8;Y41;K1 +C;X9;Y41;K1 +C;X10;Y41;K1 +C;X11;Y41;K4 +C;X12;Y41;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dgrs,Ggrs,Zgrs,Isnw,Ofsl" +C;X13;Y41;K1 +C;X14;Y41;K0 +C;X1;Y42;K"Clvg" +C;X2;Y42;K-1 +C;X3;Y42;K"TerrainArt\Felwood" +C;X4;Y42;K"Felwood_Leaves" +C;X5;Y42;K"Leaves" +C;X6;Y42;K"WESTRING_TILE_LEAVES" +C;X7;Y42;K1 +C;X8;Y42;K1 +C;X9;Y42;K1 +C;X10;Y42;K1 +C;X11;Y42;K7 +C;X12;Y42;K"Lgrd,Fgrd,Wsnw,Bdrg,Alvd,Nsnw,Ygsb,Vgrt,Qgrt,Xgsb,Dlvc,Glvc,Zvin,Idki,Ofsl" +C;X13;Y42;K1 +C;X14;Y42;K0 +C;X1;Y43;K"Ndrt" +C;X2;Y43;K-1 +C;X3;Y43;K"TerrainArt\Northrend" +C;X4;Y43;K"North_dirt" +C;X5;Y43;K"Dirt" +C;X6;Y43;K"WESTRING_TILE_DIRT" +C;X7;Y43;K1 +C;X8;Y43;K1 +C;X9;Y43;K1 +C;X10;Y43;K1 +C;X11;Y43;K2 +C;X12;Y43;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y43;K1 +C;X14;Y43;K0 +C;X1;Y44;K"Ndrd" +C;X2;Y44;K-1 +C;X3;Y44;K"TerrainArt\Northrend" +C;X4;Y44;K"North_dirtdark" +C;X5;Y44;K"Dark Dirt" +C;X6;Y44;K"WESTRING_TILE_DARK_DIRT" +C;X7;Y44;K1 +C;X8;Y44;K1 +C;X9;Y44;K1 +C;X10;Y44;K1 +C;X11;Y44;K1 +C;X12;Y44;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y44;K1 +C;X14;Y44;K0 +C;X1;Y45;K"Nrck" +C;X2;Y45;K-1 +C;X3;Y45;K"TerrainArt\Northrend" +C;X4;Y45;K"North_rock" +C;X5;Y45;K"Rock" +C;X6;Y45;K"WESTRING_TILE_ROCK" +C;X7;Y45;K0 +C;X8;Y45;K0 +C;X9;Y45;K1 +C;X10;Y45;K1 +C;X11;Y45;K6 +C;X12;Y45;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y45;K1 +C;X14;Y45;K0 +C;X1;Y46;K"Ngrs" +C;X2;Y46;K-1 +C;X3;Y46;K"TerrainArt\Northrend" +C;X4;Y46;K"North_Grass" +C;X5;Y46;K"Grass" +C;X6;Y46;K"WESTRING_TILE_GRASS" +C;X7;Y46;K1 +C;X8;Y46;K1 +C;X9;Y46;K1 +C;X10;Y46;K1 +C;X11;Y46;K5 +C;X12;Y46;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Cgrs,Yhdg,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zgrs,Idki,Ofsl" +C;X13;Y46;K1 +C;X14;Y46;K0 +C;X1;Y47;K"Nice" +C;X2;Y47;K-1 +C;X3;Y47;K"TerrainArt\Northrend" +C;X4;Y47;K"North_ice" +C;X5;Y47;K"Ice" +C;X6;Y47;K"WESTRING_TILE_ICE" +C;X7;Y47;K1 +C;X8;Y47;K1 +C;X9;Y47;K1 +C;X10;Y47;K1 +C;X11;Y47;K3 +C;X12;Y47;K"Lgrd,Fgrd,Wsnw,Bdrg,Agrd,Cpos,Ygsb,Vgrs,Qgrs,Xgsb,Dgrs,Ggrs,Zvin,Iice,Ofst" +C;X13;Y47;K1 +C;X14;Y47;K0 +C;X1;Y48;K"Nsnw" +C;X2;Y48;K-1 +C;X3;Y48;K"TerrainArt\Northrend" +C;X4;Y48;K"North_Snow" +C;X5;Y48;K"Snow" +C;X6;Y48;K"WESTRING_TILE_SNOW" +C;X7;Y48;K1 +C;X8;Y48;K1 +C;X9;Y48;K1 +C;X10;Y48;K1 +C;X11;Y48;K4 +C;X12;Y48;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Clvg,Yhdg,Vgrt,Qgrt,Xhdg,Dlav,Glav,Zsan,Isnw,Ofst" +C;X13;Y48;K1 +C;X14;Y48;K0 +C;X1;Y49;K"Nsnr" +C;X2;Y49;K-1 +C;X3;Y49;K"TerrainArt\Northrend" +C;X4;Y49;K"North_SnowRock" +C;X5;Y49;K"Rocky Snow" +C;X6;Y49;K"WESTRING_TILE_ROCKY_SNOW" +C;X7;Y49;K0 +C;X8;Y49;K1 +C;X9;Y49;K1 +C;X10;Y49;K1 +C;X11;Y49;K7 +C;X12;Y49;K"Lrok,Frok,Wrok,Bdrr,Avin,Cvin,Ysqd,Vstp,Qstp,Xsqd,Dlvc,Glvc,Zdrg,Idki,Osmb" +C;X13;Y49;K1 +C;X14;Y49;K0 +C;X1;Y50;K"Ydrt" +C;X2;Y50;K-1 +C;X3;Y50;K"TerrainArt\Cityscape" +C;X4;Y50;K"City_Dirt" +C;X5;Y50;K"Dirt" +C;X6;Y50;K"WESTRING_TILE_DIRT" +C;X7;Y50;K1 +C;X8;Y50;K1 +C;X9;Y50;K1 +C;X10;Y50;K1 +C;X11;Y50;K1 +C;X12;Y50;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y50;K1 +C;X14;Y50;K0 +C;X1;Y51;K"Ydtr" +C;X2;Y51;K-1 +C;X3;Y51;K"TerrainArt\Cityscape" +C;X4;Y51;K"City_DirtRough" +C;X5;Y51;K"Rough Dirt" +C;X6;Y51;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y51;K1 +C;X8;Y51;K1 +C;X9;Y51;K1 +C;X10;Y51;K1 +C;X11;Y51;K2 +C;X12;Y51;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y51;K1 +C;X14;Y51;K0 +C;X1;Y52;K"Yblm" +C;X2;Y52;K-1 +C;X3;Y52;K"TerrainArt\Cityscape" +C;X4;Y52;K"City_BlackMarble" +C;X5;Y52;K"Black Marble" +C;X6;Y52;K"WESTRING_TILE_BLACK_MARBLE" +C;X7;Y52;K0 +C;X8;Y52;K0 +C;X9;Y52;K1 +C;X10;Y52;K1 +C;X11;Y52;K8 +C;X12;Y52;K"Lrok,Frok,Wrok,Bdrr,Avin,Cvin,Nrck,Vstp,Qstp,Xblm,Drds,Grds,Ztil,Ibsq,Odkt" +C;X13;Y52;K1 +C;X14;Y52;K0 +C;X1;Y53;K"Ybtl" +C;X2;Y53;K-1 +C;X3;Y53;K"TerrainArt\Cityscape" +C;X4;Y53;K"City_BrickTiles" +C;X5;Y53;K"Brick" +C;X6;Y53;K"WESTRING_TILE_BRICK" +C;X7;Y53;K0 +C;X8;Y53;K0 +C;X9;Y53;K1 +C;X10;Y53;K1 +C;X11;Y53;K5 +C;X12;Y53;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Xbtl,Dbrk,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y53;K1 +C;X14;Y53;K0 +C;X1;Y54;K"Ysqd" +C;X2;Y54;K-1 +C;X3;Y54;K"TerrainArt\Cityscape" +C;X4;Y54;K"City_SquareTiles" +C;X5;Y54;K"Square Tiles" +C;X6;Y54;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y54;K0 +C;X8;Y54;K0 +C;X9;Y54;K1 +C;X10;Y54;K1 +C;X11;Y54;K6 +C;X12;Y54;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Vdrt,Qdrt,Xsqd,Dsqd,Gsqd,Zbkl,Irbk,Osqt" +C;X13;Y54;K1 +C;X14;Y54;K0 +C;X1;Y55;K"Yrtl" +C;X2;Y55;K-1 +C;X3;Y55;K"TerrainArt\Cityscape" +C;X4;Y55;K"City_RoundTiles" +C;X5;Y55;K"Round Tiles" +C;X6;Y55;K"WESTRING_TILE_ROUND_TILES" +C;X7;Y55;K0 +C;X8;Y55;K0 +C;X9;Y55;K1 +C;X10;Y55;K1 +C;X11;Y55;K7 +C;X12;Y55;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Xrtl,Dsqd,Gsqd,Ztil,Itbk,Olgb" +C;X13;Y55;K1 +C;X14;Y55;K0 +C;X1;Y56;K"Ygsb" +C;X2;Y56;K-1 +C;X3;Y56;K"TerrainArt\Cityscape" +C;X4;Y56;K"City_Grass" +C;X5;Y56;K"Grass" +C;X6;Y56;K"WESTRING_TILE_GRASS" +C;X7;Y56;K1 +C;X8;Y56;K1 +C;X9;Y56;K1 +C;X10;Y56;K1 +C;X11;Y56;K3 +C;X12;Y56;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Cgrs,Vgrs,Qgrs,Xgsb,Dbrk,Gbrk,Zgrs,Isnw,Ofsl" +C;X13;Y56;K1 +C;X14;Y56;K0 +C;X1;Y57;K"Yhdg" +C;X2;Y57;K-1 +C;X3;Y57;K"TerrainArt\Cityscape" +C;X4;Y57;K"City_GrassTrim" +C;X5;Y57;K"Grass Trim" +C;X6;Y57;K"WESTRING_TILE_GRASS_TRIM" +C;X7;Y57;K1 +C;X8;Y57;K1 +C;X9;Y57;K1 +C;X10;Y57;K1 +C;X11;Y57;K4 +C;X12;Y57;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Cgrs,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zsan,Iice,Ofst" +C;X13;Y57;K1 +C;X14;Y57;K0 +C;X1;Y58;K"Ywmb" +C;X2;Y58;K-1 +C;X3;Y58;K"TerrainArt\Cityscape" +C;X4;Y58;K"City_WhiteMarble" +C;X5;Y58;K"White Marble" +C;X6;Y58;K"WESTRING_TILE_WHITE_MARBLE" +C;X7;Y58;K0 +C;X8;Y58;K0 +C;X9;Y58;K1 +C;X10;Y58;K1 +C;X11;Y58;K9 +C;X12;Y58;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Xwmb,Dgrs,Ggrs,Ztil,Ibsq,Odkt" +C;X13;Y58;K1 +C;X14;Y58;K0 +C;X1;Y59;K"Vdrt" +C;X2;Y59;K-1 +C;X3;Y59;K"TerrainArt\Village" +C;X4;Y59;K"Village_Dirt" +C;X5;Y59;K"Dirt" +C;X6;Y59;K"WESTRING_TILE_DIRT" +C;X7;Y59;K1 +C;X8;Y59;K1 +C;X9;Y59;K1 +C;X10;Y59;K1 +C;X11;Y59;K2 +C;X12;Y59;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y59;K1 +C;X14;Y59;K0 +C;X1;Y60;K"Vdrr" +C;X2;Y60;K-1 +C;X3;Y60;K"TerrainArt\Village" +C;X4;Y60;K"Village_DirtRough" +C;X5;Y60;K"Rough Dirt" +C;X6;Y60;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y60;K1 +C;X8;Y60;K1 +C;X9;Y60;K1 +C;X10;Y60;K1 +C;X11;Y60;K1 +C;X12;Y60;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Qdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y60;K1 +C;X14;Y60;K0 +C;X1;Y61;K"Vcrp" +C;X2;Y61;K-1 +C;X3;Y61;K"TerrainArt\Village" +C;X4;Y61;K"Village_Crops" +C;X5;Y61;K"Crops" +C;X6;Y61;K"WESTRING_TILE_CROPS" +C;X7;Y61;K0 +C;X8;Y61;K1 +C;X9;Y61;K1 +C;X10;Y61;K1 +C;X11;Y61;K6 +C;X12;Y61;K"Ldrg,Fdrg,Wsng,Bdrr,Adrg,Cvin,Nrck,Yhdg,Qcrp,Xhdg,Dlvc,Glvc,Zsan,Idki,Osqt" +C;X13;Y61;K1 +C;X14;Y61;K0 +C;X1;Y62;K"Vcbp" +C;X2;Y62;K-1 +C;X3;Y62;K"TerrainArt\Village" +C;X4;Y62;K"Village_CobblePath" +C;X5;Y62;K"Cobble Path" +C;X6;Y62;K"WESTRING_TILE_COBBLE_PATH" +C;X7;Y62;K0 +C;X8;Y62;K0 +C;X9;Y62;K1 +C;X10;Y62;K1 +C;X11;Y62;K5 +C;X12;Y62;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Qcbp,Xdtr,Dbrk,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y62;K1 +C;X14;Y62;K0 +C;X1;Y63;K"Vstp" +C;X2;Y63;K-1 +C;X3;Y63;K"TerrainArt\Village" +C;X4;Y63;K"Village_StonePath" +C;X5;Y63;K"Stone Path" +C;X6;Y63;K"WESTRING_TILE_STONE_PATH" +C;X7;Y63;K0 +C;X8;Y63;K0 +C;X9;Y63;K1 +C;X10;Y63;K1 +C;X11;Y63;K4 +C;X12;Y63;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nsnw,Ywmb,Qstp,Xwmb,Drds,Grds,Zbkl,Ibsq,Olgb" +C;X13;Y63;K1 +C;X14;Y63;K0 +C;X1;Y64;K"Vgrs" +C;X2;Y64;K-1 +C;X3;Y64;K"TerrainArt\Village" +C;X4;Y64;K"Village_GrassShort" +C;X5;Y64;K"Short Grass" +C;X6;Y64;K"WESTRING_TILE_SHORT_GRASS" +C;X7;Y64;K1 +C;X8;Y64;K1 +C;X9;Y64;K1 +C;X10;Y64;K1 +C;X11;Y64;K3 +C;X12;Y64;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Cgrs,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zdrg,Iice,Ofsl" +C;X13;Y64;K1 +C;X14;Y64;K0 +C;X1;Y65;K"Vrck" +C;X2;Y65;K-1 +C;X3;Y65;K"TerrainArt\Village" +C;X4;Y65;K"Village_Rocks" +C;X5;Y65;K"Rocks" +C;X6;Y65;K"WESTRING_TILE_ROCKS" +C;X7;Y65;K0 +C;X8;Y65;K0 +C;X9;Y65;K1 +C;X10;Y65;K1 +C;X11;Y65;K7 +C;X12;Y65;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Qrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y65;K1 +C;X14;Y65;K0 +C;X1;Y66;K"Vgrt" +C;X2;Y66;K-1 +C;X3;Y66;K"TerrainArt\Village" +C;X4;Y66;K"Village_GrassThick" +C;X5;Y66;K"Thick Grass" +C;X6;Y66;K"WESTRING_TILE_THICK_GRASS" +C;X7;Y66;K1 +C;X8;Y66;K1 +C;X9;Y66;K1 +C;X10;Y66;K1 +C;X11;Y66;K8 +C;X12;Y66;K"Lgrd,Fgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Qgrt,Xgsb,Dlav,Glav,Zgrs,Isnw,Ofst" +C;X13;Y66;K1 +C;X14;Y66;K0 +C;X1;Y67;K"Qdrt" +C;X2;Y67;K-1 +C;X3;Y67;K"TerrainArt\VillageFall" +C;X4;Y67;K"VillageFall_Dirt" +C;X5;Y67;K"Dirt" +C;X6;Y67;K"WESTRING_TILE_DIRT" +C;X7;Y67;K1 +C;X8;Y67;K1 +C;X9;Y67;K1 +C;X10;Y67;K1 +C;X11;Y67;K2 +C;X12;Y67;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y67;K1 +C;X14;Y67;K0 +C;X1;Y68;K"Qdrr" +C;X2;Y68;K-1 +C;X3;Y68;K"TerrainArt\VillageFall" +C;X4;Y68;K"VillageFall_DirtRough" +C;X5;Y68;K"Rough Dirt" +C;X6;Y68;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y68;K1 +C;X8;Y68;K1 +C;X9;Y68;K1 +C;X10;Y68;K1 +C;X11;Y68;K1 +C;X12;Y68;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Xdtr,Dbrk,Gbrk,Zdtr,Idtr,Odtr" +C;X13;Y68;K1 +C;X14;Y68;K0 +C;X1;Y69;K"Qcrp" +C;X2;Y69;K-1 +C;X3;Y69;K"TerrainArt\VillageFall" +C;X4;Y69;K"VillageFall_Crops" +C;X5;Y69;K"Crops" +C;X6;Y69;K"WESTRING_TILE_CROPS" +C;X7;Y69;K0 +C;X8;Y69;K1 +C;X9;Y69;K1 +C;X10;Y69;K1 +C;X11;Y69;K6 +C;X12;Y69;K"Ldrg,Fdrg,Wsng,Bdrr,Adrg,Cvin,Nsnw,Yhdg,Vcrp,Xhdg,Dlvc,Glvc,Zsan,Idki,Osqt" +C;X13;Y69;K1 +C;X14;Y69;K0 +C;X1;Y70;K"Qcbp" +C;X2;Y70;K-1 +C;X3;Y70;K"TerrainArt\VillageFall" +C;X4;Y70;K"VillageFall_CobblePath" +C;X5;Y70;K"Cobble Path" +C;X6;Y70;K"WESTRING_TILE_COBBLE_PATH" +C;X7;Y70;K0 +C;X8;Y70;K0 +C;X9;Y70;K1 +C;X10;Y70;K1 +C;X11;Y70;K5 +C;X12;Y70;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vcbp,Xdtr,Dbrk,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y70;K1 +C;X14;Y70;K0 +C;X1;Y71;K"Qstp" +C;X2;Y71;K-1 +C;X3;Y71;K"TerrainArt\VillageFall" +C;X4;Y71;K"VillageFall_StonePath" +C;X5;Y71;K"Stone Path" +C;X6;Y71;K"WESTRING_TILE_STONE_PATH" +C;X7;Y71;K0 +C;X8;Y71;K0 +C;X9;Y71;K1 +C;X10;Y71;K1 +C;X11;Y71;K4 +C;X12;Y71;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nsnr,Ywmb,Vstp,Xwmb,Drds,Grds,Zbkl,Ibsq,Olgb" +C;X13;Y71;K1 +C;X14;Y71;K0 +C;X1;Y72;K"Qgrs" +C;X2;Y72;K-1 +C;X3;Y72;K"TerrainArt\VillageFall" +C;X4;Y72;K"VillageFall_GrassShort" +C;X5;Y72;K"Short Grass" +C;X6;Y72;K"WESTRING_TILE_SHORT_GRASS" +C;X7;Y72;K1 +C;X8;Y72;K1 +C;X9;Y72;K1 +C;X10;Y72;K1 +C;X11;Y72;K3 +C;X12;Y72;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Cgrs,Vgrs,Vgrs,Xhdg,Dbrk,Gbrk,Zdrg,Iice,Ofsl" +C;X13;Y72;K1 +C;X14;Y72;K0 +C;X1;Y73;K"Qrck" +C;X2;Y73;K-1 +C;X3;Y73;K"TerrainArt\VillageFall" +C;X4;Y73;K"VillageFall_Rocks" +C;X5;Y73;K"Rocks" +C;X6;Y73;K"WESTRING_TILE_ROCKS" +C;X7;Y73;K0 +C;X8;Y73;K0 +C;X9;Y73;K1 +C;X10;Y73;K1 +C;X11;Y73;K7 +C;X12;Y73;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Xbtl,Ddkr,Gdkr,Zbkl,Irbk,Ofst" +C;X13;Y73;K1 +C;X14;Y73;K0 +C;X1;Y74;K"Qgrt" +C;X2;Y74;K-1 +C;X3;Y74;K"TerrainArt\VillageFall" +C;X4;Y74;K"VillageFall_GrassThick" +C;X5;Y74;K"Thick Grass" +C;X6;Y74;K"WESTRING_TILE_THICK_GRASS" +C;X7;Y74;K1 +C;X8;Y74;K1 +C;X9;Y74;K1 +C;X10;Y74;K1 +C;X11;Y74;K8 +C;X12;Y74;K"Lgrd,Fgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Xgsb,Dlav,Glav,Zgrs,Isnw,Ofst" +C;X13;Y74;K1 +C;X14;Y74;K0 +C;X1;Y75;K"Xdrt" +C;X2;Y75;K-1 +C;X3;Y75;K"TerrainArt\Dalaran" +C;X4;Y75;K"Dalaran_Dirt" +C;X5;Y75;K"Dirt" +C;X6;Y75;K"WESTRING_TILE_DIRT" +C;X7;Y75;K1 +C;X8;Y75;K1 +C;X9;Y75;K1 +C;X10;Y75;K1 +C;X11;Y75;K1 +C;X12;Y75;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ydrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y75;K1 +C;X14;Y75;K0 +C;X1;Y76;K"Xdtr" +C;X2;Y76;K-1 +C;X3;Y76;K"TerrainArt\Dalaran" +C;X4;Y76;K"Dalaran_DirtRough" +C;X5;Y76;K"Rough Dirt" +C;X6;Y76;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y76;K1 +C;X8;Y76;K1 +C;X9;Y76;K1 +C;X10;Y76;K1 +C;X11;Y76;K2 +C;X12;Y76;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Vdrr,Qdrr,Ydtr,Dbrk,Gbrk,Zdrg,Idtr,Odtr" +C;X13;Y76;K1 +C;X14;Y76;K0 +C;X1;Y77;K"Xblm" +C;X2;Y77;K-1 +C;X3;Y77;K"TerrainArt\Dalaran" +C;X4;Y77;K"Dalaran_BlackMarble" +C;X5;Y77;K"Black Marble" +C;X6;Y77;K"WESTRING_TILE_BLACK_MARBLE" +C;X7;Y77;K0 +C;X8;Y77;K0 +C;X9;Y77;K1 +C;X10;Y77;K1 +C;X11;Y77;K8 +C;X12;Y77;K"Lrok,Frok,Wrok,Bdrr,Avin,Cvin,Nrck,Vstp,Qstp,Yblm,Drds,Grds,Ztil,Ibsq,Odkt" +C;X13;Y77;K1 +C;X14;Y77;K0 +C;X1;Y78;K"Xbtl" +C;X2;Y78;K-1 +C;X3;Y78;K"TerrainArt\Dalaran" +C;X4;Y78;K"Dalaran_BrickTiles" +C;X5;Y78;K"Brick" +C;X6;Y78;K"WESTRING_TILE_BRICK" +C;X7;Y78;K0 +C;X8;Y78;K0 +C;X9;Y78;K1 +C;X10;Y78;K1 +C;X11;Y78;K5 +C;X12;Y78;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Ybtl,Dbrk,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y78;K1 +C;X14;Y78;K0 +C;X1;Y79;K"Xsqd" +C;X2;Y79;K-1 +C;X3;Y79;K"TerrainArt\Dalaran" +C;X4;Y79;K"Dalaran_SquareTiles" +C;X5;Y79;K"Square Tiles" +C;X6;Y79;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y79;K0 +C;X8;Y79;K0 +C;X9;Y79;K1 +C;X10;Y79;K1 +C;X11;Y79;K6 +C;X12;Y79;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Vdrt,Qdrt,Ysqd,Dsqd,Gsqd,Zbkl,Irbk,Osqt" +C;X13;Y79;K1 +C;X14;Y79;K0 +C;X1;Y80;K"Xrtl" +C;X2;Y80;K-1 +C;X3;Y80;K"TerrainArt\Dalaran" +C;X4;Y80;K"Dalaran_RoundTiles" +C;X5;Y80;K"Round Tiles" +C;X6;Y80;K"WESTRING_TILE_ROUND_TILES" +C;X7;Y80;K0 +C;X8;Y80;K0 +C;X9;Y80;K1 +C;X10;Y80;K1 +C;X11;Y80;K7 +C;X12;Y80;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Yrtl,Dsqd,Gsqd,Ztil,Itbk,Olgb" +C;X13;Y80;K1 +C;X14;Y80;K0 +C;X1;Y81;K"Xgsb" +C;X2;Y81;K-1 +C;X3;Y81;K"TerrainArt\Dalaran" +C;X4;Y81;K"Dalaran_Grass" +C;X5;Y81;K"Grass" +C;X6;Y81;K"WESTRING_TILE_GRASS" +C;X7;Y81;K1 +C;X8;Y81;K1 +C;X9;Y81;K1 +C;X10;Y81;K1 +C;X11;Y81;K3 +C;X12;Y81;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Nsnw,Cgrs,Vgrs,Qgrs,Ygsb,Dbrk,Gbrk,Zgrs,Isnw,Ofsl" +C;X13;Y81;K1 +C;X14;Y81;K0 +C;X1;Y82;K"Xhdg" +C;X2;Y82;K-1 +C;X3;Y82;K"TerrainArt\Dalaran" +C;X4;Y82;K"Dalaran_GrassTrim" +C;X5;Y82;K"Grass Trim" +C;X6;Y82;K"WESTRING_TILE_GRASS_TRIM" +C;X7;Y82;K1 +C;X8;Y82;K1 +C;X9;Y82;K1 +C;X10;Y82;K1 +C;X11;Y82;K4 +C;X12;Y82;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Nice,Cgrs,Vgrs,Qgrs,Yhdg,Dbrk,Gbrk,Zsan,Iice,Ofst" +C;X13;Y82;K1 +C;X14;Y82;K0 +C;X1;Y83;K"Xwmb" +C;X2;Y83;K-1 +C;X3;Y83;K"TerrainArt\Dalaran" +C;X4;Y83;K"Dalaran_WhiteMarble" +C;X5;Y83;K"White Marble" +C;X6;Y83;K"WESTRING_TILE_WHITE_MARBLE" +C;X7;Y83;K0 +C;X8;Y83;K0 +C;X9;Y83;K1 +C;X10;Y83;K1 +C;X11;Y83;K9 +C;X12;Y83;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Vrck,Qrck,Ywmb,Dgrs,Ggrs,Ztil,Ibsq,Odkt" +C;X13;Y83;K1 +C;X14;Y83;K0 +C;X1;Y84;K"Ddrt" +C;X2;Y84;K-1 +C;X3;Y84;K"TerrainArt\Dungeon" +C;X4;Y84;K"Cave_Dirt" +C;X5;Y84;K"Dirt" +C;X6;Y84;K"WESTRING_TILE_DIRT" +C;X7;Y84;K1 +C;X8;Y84;K1 +C;X9;Y84;K1 +C;X10;Y84;K1 +C;X11;Y84;K1 +C;X12;Y84;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ydrt,Xdrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y84;K1 +C;X14;Y84;K0 +C;X1;Y85;K"Dbrk" +C;X2;Y85;K-1 +C;X3;Y85;K"TerrainArt\Dungeon" +C;X4;Y85;K"Cave_Brick" +C;X5;Y85;K"Brick" +C;X6;Y85;K"WESTRING_TILE_BRICK" +C;X7;Y85;K0 +C;X8;Y85;K1 +C;X9;Y85;K1 +C;X10;Y85;K1 +C;X11;Y85;K5 +C;X12;Y85;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Vdrr,Ydtr,Qdrr,Xdtr,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y85;K1 +C;X14;Y85;K0 +C;X1;Y86;K"Drds" +C;X2;Y86;K-1 +C;X3;Y86;K"TerrainArt\Dungeon" +C;X4;Y86;K"Cave_RedStones" +C;X5;Y86;K"Red Stone" +C;X6;Y86;K"WESTRING_TILE_RED_STONE" +C;X7;Y86;K0 +C;X8;Y86;K1 +C;X9;Y86;K1 +C;X10;Y86;K1 +C;X11;Y86;K8 +C;X12;Y86;K"Ldro,Fdro,Wdro,Bdrr,Adrd,Cdrd,Ndrd,Ydtr,Vcbp,Qcbp,Xdtr,Grds,Zbkl,Idtr,Ofsl" +C;X13;Y86;K1 +C;X14;Y86;K0 +C;X1;Y87;K"Dlvc" +C;X2;Y87;K-1 +C;X3;Y87;K"TerrainArt\Dungeon" +C;X4;Y87;K"Cave_LavaCracks" +C;X5;Y87;K"Lava Cracks" +C;X6;Y87;K"WESTRING_TILE_LAVA_CRACKS" +C;X7;Y87;K0 +C;X8;Y87;K1 +C;X9;Y87;K1 +C;X10;Y87;K1 +C;X11;Y87;K3 +C;X12;Y87;K"Lrok,Frok,Wrok,Bgrr,Alvd,Clvg,Nrck,Yhdg,Vcrp,Qcrp,Xhdg,Glvc,Zsan,Idki,Ofst" +C;X13;Y87;K1 +C;X14;Y87;K0 +C;X1;Y88;K"Dlav" +C;X2;Y88;K-1 +C;X3;Y88;K"TerrainArt\Dungeon" +C;X4;Y88;K"Cave_Lava" +C;X5;Y88;K"Lava" +C;X6;Y88;K"WESTRING_TILE_LAVA" +C;X7;Y88;K0 +C;X8;Y88;K1 +C;X9;Y88;K1 +C;X10;Y88;K1 +C;X11;Y88;K2 +C;X12;Y88;K"Lrok,Frok,Wrok,Bdsd,Avin,Cvin,Nrck,Yhdg,Vcrp,Qcrp,Xhdg,Glav,Iice,Ofst" +C;X13;Y88;K1 +C;X14;Y88;K0 +C;X1;Y89;K"Ddkr" +C;X2;Y89;K-1 +C;X3;Y89;K"TerrainArt\Dungeon" +C;X4;Y89;K"Cave_DarkRocks" +C;X5;Y89;K"Dark Rock" +C;X6;Y89;K"WESTRING_TILE_DARK_ROCK" +C;X7;Y89;K0 +C;X8;Y89;K1 +C;X9;Y89;K1 +C;X10;Y89;K1 +C;X11;Y89;K4 +C;X12;Y89;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Xbtl,Qrck,Gdkr,Zbkl,Ibsq,Olgb" +C;X13;Y89;K1 +C;X14;Y89;K0 +C;X1;Y90;K"Dgrs" +C;X2;Y90;K-1 +C;X3;Y90;K"TerrainArt\Dungeon" +C;X4;Y90;K"Cave_GreyStones" +C;X5;Y90;K"Grey Stones" +C;X6;Y90;K"WESTRING_TILE_GREY_STONES" +C;X7;Y90;K0 +C;X8;Y90;K1 +C;X9;Y90;K1 +C;X10;Y90;K1 +C;X11;Y90;K7 +C;X12;Y90;K"Lrok,Frok,Wrok,Bflr,Arck,Cgrs,Nrck,Vrck,Qrck,Ywmb,Xwmb,Ggrs,Ztil,Itbk,Ofst" +C;X13;Y90;K1 +C;X14;Y90;K0 +C;X1;Y91;K"Dsqd" +C;X2;Y91;K-1 +C;X3;Y91;K"TerrainArt\Dungeon" +C;X4;Y91;K"Cave_SquareTiles" +C;X5;Y91;K"Square Tiles" +C;X6;Y91;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y91;K0 +C;X8;Y91;K1 +C;X9;Y91;K1 +C;X10;Y91;K1 +C;X11;Y91;K6 +C;X12;Y91;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ysqd,Xsqd,Gsqd,Zbkl,Itbk,Osqt" +C;X13;Y91;K1 +C;X14;Y91;K0 +C;X1;Y92;K"Gdrt" +C;X2;Y92;K-1 +C;X3;Y92;K"TerrainArt\Dungeon2" +C;X4;Y92;K"GDirt" +C;X5;Y92;K"Dirt" +C;X6;Y92;K"WESTRING_TILE_DIRT" +C;X7;Y92;K1 +C;X8;Y92;K1 +C;X9;Y92;K1 +C;X10;Y92;K1 +C;X11;Y92;K1 +C;X12;Y92;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ydrt,Xdrt,Ddrt,Zdrt,Idrt,Odrt" +C;X13;Y92;K1 +C;X14;Y92;K0 +C;X1;Y93;K"Gbrk" +C;X2;Y93;K-1 +C;X3;Y93;K"TerrainArt\Dungeon2" +C;X4;Y93;K"GBrick" +C;X5;Y93;K"Brick" +C;X6;Y93;K"WESTRING_TILE_BRICK" +C;X7;Y93;K0 +C;X8;Y93;K1 +C;X9;Y93;K1 +C;X10;Y93;K1 +C;X11;Y93;K5 +C;X12;Y93;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Vdrr,Ydtr,Qdrr,Xdtr,Dbrk,Zbks,Ibkb,Osmb" +C;X13;Y93;K1 +C;X14;Y93;K0 +C;X1;Y94;K"Grds" +C;X2;Y94;K-1 +C;X3;Y94;K"TerrainArt\Dungeon2" +C;X4;Y94;K"GRedStones" +C;X5;Y94;K"Red Stone" +C;X6;Y94;K"WESTRING_TILE_RED_STONE" +C;X7;Y94;K0 +C;X8;Y94;K1 +C;X9;Y94;K1 +C;X10;Y94;K1 +C;X11;Y94;K8 +C;X12;Y94;K"Ldro,Fdro,Wdro,Bdrr,Adrd,Cdrd,Ndrd,Ydtr,Vcbp,Qcbp,Xdtr,Drds,Zbkl,Idtr,Ofsl" +C;X13;Y94;K1 +C;X14;Y94;K0 +C;X1;Y95;K"Glvc" +C;X2;Y95;K-1 +C;X3;Y95;K"TerrainArt\Dungeon2" +C;X4;Y95;K"GLavaCracks" +C;X5;Y95;K"Lava Cracks" +C;X6;Y95;K"WESTRING_TILE_ICE_CHUNKS" +C;X7;Y95;K0 +C;X8;Y95;K1 +C;X9;Y95;K1 +C;X10;Y95;K1 +C;X11;Y95;K3 +C;X12;Y95;K"Lrok,Frok,Wrok,Bgrr,Alvd,Clvg,Nrck,Yhdg,Vcrp,Qcrp,Xhdg,Dlvc,Zsan,Idki,Ofst" +C;X13;Y95;K1 +C;X14;Y95;K0 +C;X1;Y96;K"Glav" +C;X2;Y96;K-1 +C;X3;Y96;K"TerrainArt\Dungeon2" +C;X4;Y96;K"GLava" +C;X5;Y96;K"Lava" +C;X6;Y96;K"WESTRING_TILE_ICE" +C;X7;Y96;K0 +C;X8;Y96;K1 +C;X9;Y96;K1 +C;X10;Y96;K1 +C;X11;Y96;K2 +C;X12;Y96;K"Lrok,Frok,Wrok,Bdsd,Avin,Cvin,Nrck,Yhdg,Vcrp,Qcrp,Xhdg,Dlav,Zsan,Iice,Ofst" +C;X13;Y96;K1 +C;X14;Y96;K0 +C;X1;Y97;K"Gdkr" +C;X2;Y97;K-1 +C;X3;Y97;K"TerrainArt\Dungeon2" +C;X4;Y97;K"GDarkRocks" +C;X5;Y97;K"Dark Rock" +C;X6;Y97;K"WESTRING_TILE_DARK_ROCK" +C;X7;Y97;K0 +C;X8;Y97;K1 +C;X9;Y97;K1 +C;X10;Y97;K1 +C;X11;Y97;K4 +C;X12;Y97;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Xbtl,Qrck,Ddkr,Zbkl,Ibsq,Olgb" +C;X13;Y97;K1 +C;X14;Y97;K0 +C;X1;Y98;K"Ggrs" +C;X2;Y98;K-1 +C;X3;Y98;K"TerrainArt\Dungeon2" +C;X4;Y98;K"GGreyStones" +C;X5;Y98;K"Grey Stones" +C;X6;Y98;K"WESTRING_TILE_GREY_STONES" +C;X7;Y98;K0 +C;X8;Y98;K1 +C;X9;Y98;K1 +C;X10;Y98;K1 +C;X11;Y98;K7 +C;X12;Y98;K"Lrok,Frok,Wrok,Bflr,Arck,Cgrs,Nrck,Vrck,Qrck,Ywmb,Xwmb,Dgrs,Ztil,Itbk,Ofst" +C;X13;Y98;K1 +C;X14;Y98;K0 +C;X1;Y99;K"Gsqd" +C;X2;Y99;K-1 +C;X3;Y99;K"TerrainArt\Dungeon2" +C;X4;Y99;K"GSquareTiles" +C;X5;Y99;K"Square Tiles" +C;X6;Y99;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y99;K0 +C;X8;Y99;K1 +C;X9;Y99;K1 +C;X10;Y99;K1 +C;X11;Y99;K6 +C;X12;Y99;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ysqd,Xsqd,Dsqd,Zbkl,Itbk,Osqt" +C;X13;Y99;K1 +C;X14;Y99;K0 +C;X1;Y100;K"Zdrt" +C;X2;Y100;K-1 +C;X3;Y100;K"TerrainArt\Ruins" +C;X4;Y100;K"Ruins_Dirt" +C;X5;Y100;K"Dirt" +C;X6;Y100;K"WESTRING_TILE_DIRT" +C;X7;Y100;K1 +C;X8;Y100;K1 +C;X9;Y100;K1 +C;X10;Y100;K1 +C;X11;Y100;K2 +C;X12;Y100;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ydrt,Xdrt,Ddrt,Gdrt,Idrt,Odrt" +C;X13;Y100;K1 +C;X14;Y100;K1 +C;X1;Y101;K"Zdtr" +C;X2;Y101;K-1 +C;X3;Y101;K"TerrainArt\Ruins" +C;X4;Y101;K"Ruins_DirtRough" +C;X5;Y101;K"Rough Dirt" +C;X6;Y101;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y101;K1 +C;X8;Y101;K1 +C;X9;Y101;K1 +C;X10;Y101;K1 +C;X11;Y101;K1 +C;X12;Y101;K"Ldro,Fdro,Wdro,Bdsd,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Idtr,Odtr" +C;X13;Y101;K1 +C;X14;Y101;K1 +C;X1;Y102;K"Zdrg" +C;X2;Y102;K-1 +C;X3;Y102;K"TerrainArt\Ruins" +C;X4;Y102;K"Ruins_DirtGrass" +C;X5;Y102;K"Grassy Dirt" +C;X6;Y102;K"WESTRING_TILE_GRASSY_DIRT" +C;X7;Y102;K1 +C;X8;Y102;K1 +C;X9;Y102;K1 +C;X10;Y102;K1 +C;X11;Y102;K3 +C;X12;Y102;K"Ldrg,Fdrg,Wsng,Bdrg,Adrg,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dgrs,Ggrs,Idtr,Ofsl" +C;X13;Y102;K1 +C;X14;Y102;K1 +C;X1;Y103;K"Zbks" +C;X2;Y103;K-1 +C;X3;Y103;K"TerrainArt\Ruins" +C;X4;Y103;K"Ruins_SmallBricks" +C;X5;Y103;K"Small Bricks" +C;X6;Y103;K"WESTRING_TILE_SMALL_BRICKS" +C;X7;Y103;K0 +C;X8;Y103;K0 +C;X9;Y103;K1 +C;X10;Y103;K1 +C;X11;Y103;K4 +C;X12;Y103;K"Lrok,Frok,Wrok,Bdrr,Arck,Crck,Nrck,Ybtl,Vcbp,Qcbp,Xbtl,Dbrk,Gbrk,Ibkb,Osmb" +C;X13;Y103;K1 +C;X14;Y103;K1 +C;X1;Y104;K"Zsan" +C;X2;Y104;K-1 +C;X3;Y104;K"TerrainArt\Ruins" +C;X4;Y104;K"Ruins_Sand" +C;X5;Y104;K"Sand" +C;X6;Y104;K"WESTRING_TILE_SAND" +C;X7;Y104;K1 +C;X8;Y104;K1 +C;X9;Y104;K1 +C;X10;Y104;K1 +C;X11;Y104;K9 +C;X12;Y104;K"Ldrt,Fdrt,Wsnw,Bdsr,Adrt,Cpos,Nice,Yhdg,Vcrp,Qcrp,Xhdg,Dlav,Glav,Iice,Odtr" +C;X13;Y104;K1 +C;X14;Y104;K1 +C;X1;Y105;K"Zbkl" +C;X2;Y105;K-1 +C;X3;Y105;K"TerrainArt\Ruins" +C;X4;Y105;K"Ruins_LargeBricks" +C;X5;Y105;K"Large Bricks" +C;X6;Y105;K"WESTRING_TILE_LARGE_BRICKS" +C;X7;Y105;K0 +C;X8;Y105;K0 +C;X9;Y105;K1 +C;X10;Y105;K1 +C;X11;Y105;K5 +C;X12;Y105;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ysqd,Vrck,Qrck,Xsqd,Drds,Grds,Irbk,Olgb" +C;X13;Y105;K1 +C;X14;Y105;K1 +C;X1;Y106;K"Ztil" +C;X2;Y106;K-1 +C;X3;Y106;K"TerrainArt\Ruins" +C;X4;Y106;K"Ruins_RoundTiles" +C;X5;Y106;K"RoundTiles" +C;X6;Y106;K"WESTRING_TILE_ROUNDTILES" +C;X7;Y106;K0 +C;X8;Y106;K1 +C;X9;Y106;K1 +C;X10;Y106;K1 +C;X11;Y106;K6 +C;X12;Y106;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Yrtl,Vstp,Qstp,Xrtl,Dgrs,Ggrs,Itbk,Osqt" +C;X13;Y106;K1 +C;X14;Y106;K1 +C;X1;Y107;K"Zgrs" +C;X2;Y107;K-1 +C;X3;Y107;K"TerrainArt\Ruins" +C;X4;Y107;K"Ruins_Grass" +C;X5;Y107;K"Grass" +C;X6;Y107;K"WESTRING_TILE_GRASS" +C;X7;Y107;K1 +C;X8;Y107;K1 +C;X9;Y107;K1 +C;X10;Y107;K1 +C;X11;Y107;K7 +C;X12;Y107;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Cgrs,Ngrs,Ygsb,Vgrt,Qgrt,Xgsb,Drds,Grds,Isnw,Ofsl" +C;X13;Y107;K1 +C;X14;Y107;K1 +C;X1;Y108;K"Zvin" +C;X2;Y108;K-1 +C;X3;Y108;K"TerrainArt\Ruins" +C;X4;Y108;K"Ruins_GrassDark" +C;X5;Y108;K"Dark Grass" +C;X6;Y108;K"WESTRING_TILE_DARK_GRASS" +C;X7;Y108;K1 +C;X8;Y108;K1 +C;X9;Y108;K1 +C;X10;Y108;K1 +C;X11;Y108;K8 +C;X12;Y108;K"Lgrd,Fgrd,Wsnw,Bdsd,Agrd,Cvin,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Drds,Grds,Isnw,Ofst" +C;X13;Y108;K1 +C;X14;Y108;K1 +C;X1;Y109;K"Idrt" +C;X2;Y109;K-1 +C;X3;Y109;K"TerrainArt\Icecrown" +C;X4;Y109;K"Ice_Dirt" +C;X5;Y109;K"Dirt" +C;X6;Y109;K"WESTRING_TILE_DIRT" +C;X7;Y109;K1 +C;X8;Y109;K1 +C;X9;Y109;K1 +C;X10;Y109;K1 +C;X11;Y109;K2 +C;X12;Y109;K"Ldrt,Fdrt,Wdrt,Bdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Odrt" +C;X13;Y109;K0 +C;X14;Y109;K1 +C;X1;Y110;K"Idtr" +C;X2;Y110;K-1 +C;X3;Y110;K"TerrainArt\Icecrown" +C;X4;Y110;K"Ice_DirtRough" +C;X5;Y110;K"Rough Dirt" +C;X6;Y110;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y110;K1 +C;X8;Y110;K1 +C;X9;Y110;K1 +C;X10;Y110;K1 +C;X11;Y110;K1 +C;X12;Y110;K"Ldro,Fdro,Wdro,Bdrh,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Drds,Grds,Zdtr,Odtr" +C;X13;Y110;K0 +C;X14;Y110;K1 +C;X1;Y111;K"Idki" +C;X2;Y111;K-1 +C;X3;Y111;K"TerrainArt\Icecrown" +C;X4;Y111;K"Ice_DarkIce" +C;X5;Y111;K"Dark Ice" +C;X6;Y111;K"WESTRING_TILE_DARK_ICE" +C;X7;Y111;K1 +C;X8;Y111;K0 +C;X9;Y111;K1 +C;X10;Y111;K1 +C;X11;Y111;K6 +C;X12;Y111;K"Ldrg,Fdrg,Wsng,Bdsd,Alvd,Cvin,Ngrs,Yhdg,Vcrp,Qcrp,Xhdg,Dlvc,Glvc,Zvin,Ofst" +C;X13;Y111;K0 +C;X14;Y111;K1 +C;X1;Y112;K"Ibkb" +C;X2;Y112;K-1 +C;X3;Y112;K"TerrainArt\Icecrown" +C;X4;Y112;K"Ice_BlackBricks" +C;X5;Y112;K"Black Bricks" +C;X6;Y112;K"WESTRING_TILE_BLACK_BRICKS" +C;X7;Y112;K0 +C;X8;Y112;K0 +C;X9;Y112;K1 +C;X10;Y112;K1 +C;X11;Y112;K7 +C;X12;Y112;K"Lrok,Frok,Wrok,Bdrr,Arck,Crck,Nrck,Ybtl,Vcbp,Qcbp,Xbtl,Dbrk,Gbrk,Zbks,Osmb" +C;X13;Y112;K0 +C;X14;Y112;K1 +C;X1;Y113;K"Irbk" +C;X2;Y113;K-1 +C;X3;Y113;K"TerrainArt\Icecrown" +C;X4;Y113;K"Ice_RuneBricks" +C;X5;Y113;K"Runed Bricks" +C;X6;Y113;K"WESTRING_TILE_RUNED_BRICKS" +C;X7;Y113;K0 +C;X8;Y113;K0 +C;X9;Y113;K1 +C;X10;Y113;K1 +C;X11;Y113;K9 +C;X12;Y113;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ysqd,Vrck,Qrck,Xsqd,Ddkr,Gdkr,Zbkl,Olgb" +C;X13;Y113;K0 +C;X14;Y113;K1 +C;X1;Y114;K"Itbk" +C;X2;Y114;K-1 +C;X3;Y114;K"TerrainArt\Icecrown" +C;X4;Y114;K"Ice_TiledBricks" +C;X5;Y114;K"Tiled Bricks" +C;X6;Y114;K"WESTRING_TILE_TILED_BRICKS" +C;X7;Y114;K0 +C;X8;Y114;K0 +C;X9;Y114;K1 +C;X10;Y114;K1 +C;X11;Y114;K8 +C;X12;Y114;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Yrtl,Vrck,Qrck,Xrtl,Dsqd,Gsqd,Ztil,Osqt" +C;X13;Y114;K0 +C;X14;Y114;K1 +C;X1;Y115;K"Iice" +C;X2;Y115;K-1 +C;X3;Y115;K"TerrainArt\Icecrown" +C;X4;Y115;K"Ice_Ice" +C;X5;Y115;K"Ice" +C;X6;Y115;K"WESTRING_TILE_ICE" +C;X7;Y115;K1 +C;X8;Y115;K0 +C;X9;Y115;K1 +C;X10;Y115;K1 +C;X11;Y115;K3 +C;X12;Y115;K"Lgrd,Fgrd,Wgrs,Bdsr,Avin,Cpos,Nice,Yhdg,Vgrs,Qgrs,Xhdg,Dlav,Glav,Zsan,Ofst" +C;X13;Y115;K0 +C;X14;Y115;K1 +C;X1;Y116;K"Ibsq" +C;X2;Y116;K-1 +C;X3;Y116;K"TerrainArt\Icecrown" +C;X4;Y116;K"Ice_BlackSquares" +C;X5;Y116;K"Black Squares" +C;X6;Y116;K"WESTRING_TILE_BLACK_SQUARES" +C;X7;Y116;K0 +C;X8;Y116;K0 +C;X9;Y116;K1 +C;X10;Y116;K1 +C;X11;Y116;K5 +C;X12;Y116;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Yblm,Vstp,Qstp,Xblm,Ddkr,Gdkr,Ztil,Odkt" +C;X13;Y116;K0 +C;X14;Y116;K1 +C;X1;Y117;K"Isnw" +C;X2;Y117;K-1 +C;X3;Y117;K"TerrainArt\Icecrown" +C;X4;Y117;K"Ice_Snow" +C;X5;Y117;K"Snow" +C;X6;Y117;K"WESTRING_TILE_SNOW" +C;X7;Y117;K1 +C;X8;Y117;K1 +C;X9;Y117;K1 +C;X10;Y117;K1 +C;X11;Y117;K4 +C;X12;Y117;K"Lgrs,Fgrs,Wsnw,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrt,Qgrt,Xgsb,Dgrs,Ggrs,Zgrs,Ofsl" +C;X13;Y117;K0 +C;X14;Y117;K1 +C;X1;Y118;K"Odrt" +C;X2;Y118;K-1 +C;X3;Y118;K"TerrainArt\Outland" +C;X4;Y118;K"Outland_Dirt" +C;X5;Y118;K"Dirt" +C;X6;Y118;K"WESTRING_TILE_DIRT" +C;X7;Y118;K1 +C;X8;Y118;K1 +C;X9;Y118;K1 +C;X10;Y118;K1 +C;X11;Y118;K2 +C;X12;Y118;K"Ldrt,Fdrt,Wdrt,Bdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Kdrt" +C;X13;Y118;K0 +C;X14;Y118;K1 +C;X1;Y119;K"Odtr" +C;X2;Y119;K-1 +C;X3;Y119;K"TerrainArt\Outland" +C;X4;Y119;K"Outland_DirtLight" +C;X5;Y119;K"Light Dirt" +C;X6;Y119;K"WESTRING_TILE_LIGHT_DIRT" +C;X7;Y119;K1 +C;X8;Y119;K1 +C;X9;Y119;K1 +C;X10;Y119;K1 +C;X11;Y119;K4 +C;X12;Y119;K"Ldro,Fdro,Wdro,Bdrh,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Ddrt,Gdrt,Zdtr,Idtr,Kdtr" +C;X13;Y119;K0 +C;X14;Y119;K1 +C;X1;Y120;K"Osmb" +C;X2;Y120;K-1 +C;X3;Y120;K"TerrainArt\Outland" +C;X4;Y120;K"Outland_RoughDirt" +C;X5;Y120;K"Rough Dirt" +C;X6;Y120;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y120;K1 +C;X8;Y120;K1 +C;X9;Y120;K1 +C;X10;Y120;K1 +C;X11;Y120;K1 +C;X12;Y120;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vcbp,Qcbp,Xbtl,Dbrk,Gbrk,Zbks,Ibkb,Ksmb" +C;X13;Y120;K0 +C;X14;Y120;K1 +C;X1;Y121;K"Ofst" +C;X2;Y121;K-1 +C;X3;Y121;K"TerrainArt\Outland" +C;X4;Y121;K"Outland_DirtCracked" +C;X5;Y121;K"Cracked Dirt" +C;X6;Y121;K"WESTRING_TILE_CRACKED_DIRT" +C;X7;Y121;K1 +C;X8;Y121;K1 +C;X9;Y121;K1 +C;X10;Y121;K1 +C;X11;Y121;K3 +C;X12;Y121;K"Ldro,Fdro,Wdro,Bdrr,Adrd,Cdrd,Ndrd,Ydtr,Vcbp,Qcbp,Xdtr,Drds,Grds,Zgrs,Isnw,Kfst" +C;X13;Y121;K0 +C;X14;Y121;K1 +C;X1;Y122;K"Olgb" +C;X2;Y122;K-1 +C;X3;Y122;K"TerrainArt\Outland" +C;X4;Y122;K"Outland_FlatStones" +C;X5;Y122;K"Flat Stones" +C;X6;Y122;K"WESTRING_TILE_FLAT_STONES" +C;X7;Y122;K1 +C;X8;Y122;K0 +C;X9;Y122;K1 +C;X10;Y122;K1 +C;X11;Y122;K5 +C;X12;Y122;K"Lrok,Frok,Wrok,Bflr,Arck,Frck,Nrck,Yrtl,Vstp,Qstp,Xrtl,Ddkr,Gdkr,Zbkl,Irbk,Klgb" +C;X13;Y122;K0 +C;X14;Y122;K1 +C;X1;Y123;K"Orok" +C;X2;Y123;K-1 +C;X3;Y123;K"TerrainArt\Outland" +C;X4;Y123;K"Outland_Rock" +C;X5;Y123;K"Rock" +C;X6;Y123;K"WESTRING_TILE_ROCK" +C;X7;Y123;K0 +C;X8;Y123;K0 +C;X9;Y123;K1 +C;X10;Y123;K1 +C;X11;Y123;K7 +C;X12;Y123;K"Lrok,Frok,Wrok,Bflr,Arck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Ddkr,Gdkr,Crck,Zbkl,Irbk,Krck" +C;X13;Y123;K0 +C;X14;Y123;K1 +C;X1;Y124;K"Ofsl" +C;X2;Y124;K-1 +C;X3;Y124;K"TerrainArt\Outland" +C;X4;Y124;K"Outland_FlatStonesLight" +C;X5;Y124;K"Light Flat Stone" +C;X6;Y124;K"WESTRING_TILE_LIGHT_FLAT_STONES" +C;X7;Y124;K1 +C;X8;Y124;K0 +C;X9;Y124;K1 +C;X10;Y124;K1 +C;X11;Y124;K6 +C;X12;Y124;K"Lgrs,Fgrs,Wgrs,Bgrr,Cgrs,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Ddrt,Gdrt,Zdrg,Iice,Kfsl" +C;X13;Y124;K0 +C;X14;Y124;K1 +C;X1;Y125;K"Oaby" +C;X2;Y125;K-1 +C;X3;Y125;K"TerrainArt\Outland" +C;X4;Y125;K"Outland_Abyss" +C;X5;Y125;K"Abyss" +C;X6;Y125;K"WESTRING_TILE_ABYSS" +C;X7;Y125;K0 +C;X8;Y125;K0 +C;X9;Y125;K0 +C;X10;Y125;K1 +C;X11;Y125;K8 +C;X12;Y125;K"Lgrs,Fgrs,Wgrs,Bgrr,Cgrs,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Ddrt,Gdrt,Zdrg,Iice,Kfsl" +C;X13;Y125;K0 +C;X14;Y125;K1 +C;X1;Y126;K"Kdrt" +C;X2;Y126;K-1 +C;X3;Y126;K"TerrainArt\BlackCitadel" +C;X4;Y126;K"Citadel_Dirt" +C;X5;Y126;K"Dirt" +C;X6;Y126;K"WESTRING_TILE_DIRT" +C;X7;Y126;K1 +C;X8;Y126;K1 +C;X9;Y126;K1 +C;X10;Y126;K1 +C;X11;Y126;K2 +C;X12;Y126;K"Ldrt,Fdrt,Wdrt,Bdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y126;K0 +C;X14;Y126;K1 +C;X1;Y127;K"Kfsl" +C;X2;Y127;K-1 +C;X3;Y127;K"TerrainArt\BlackCitadel" +C;X4;Y127;K"Citadel_DirtLight" +C;X5;Y127;K"Light Dirt" +C;X6;Y127;K"WESTRING_TILE_LIGHT_DIRT" +C;X7;Y127;K1 +C;X8;Y127;K1 +C;X9;Y127;K1 +C;X10;Y127;K1 +C;X11;Y127;K6 +C;X12;Y127;K"Lgrs,Fgrs,Wgrs,Bgrr,Cgrs,Ngrs,Ygsb,Vgrs,Qgrs,Xgsb,Ddrt,Gdrt,Zdrg,Iice,Ofsl" +C;X13;Y127;K0 +C;X14;Y127;K1 +C;X1;Y128;K"Kdtr" +C;X2;Y128;K-1 +C;X3;Y128;K"TerrainArt\BlackCitadel" +C;X4;Y128;K"Citadel_RoughDirt" +C;X5;Y128;K"Rough Dirt" +C;X6;Y128;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y128;K1 +C;X8;Y128;K1 +C;X9;Y128;K1 +C;X10;Y128;K1 +C;X11;Y128;K1 +C;X12;Y128;K"Ldro,Fdro,Wdro,Bdrh,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Ddrt,Gdrt,Zdtr,Idtr,Odtr" +C;X13;Y128;K0 +C;X14;Y128;K1 +C;X1;Y129;K"Kfst" +C;X2;Y129;K-1 +C;X3;Y129;K"TerrainArt\BlackCitadel" +C;X4;Y129;K"Citadel_FlatStones" +C;X5;Y129;K"Flat Stones" +C;X6;Y129;K"WESTRING_TILE_FLAT_STONES" +C;X7;Y129;K1 +C;X8;Y129;K1 +C;X9;Y129;K1 +C;X10;Y129;K1 +C;X11;Y129;K3 +C;X12;Y129;K"Ldro,Fdro,Wdro,Bdrr,Adrd,Cdrd,Ndrd,Ydtr,Vcbp,Qcbp,Xdtr,Drds,Grds,Zgrs,Isnw,Ofst" +C;X13;Y129;K0 +C;X14;Y129;K1 +C;X1;Y130;K"Ksmb" +C;X2;Y130;K-1 +C;X3;Y130;K"TerrainArt\BlackCitadel" +C;X4;Y130;K"Citadel_SmallBricks" +C;X5;Y130;K"Small Bricks" +C;X6;Y130;K"WESTRING_TILE_SMALL_BRICKS" +C;X7;Y130;K1 +C;X8;Y130;K0 +C;X9;Y130;K1 +C;X10;Y130;K1 +C;X11;Y130;K4 +C;X12;Y130;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vcbp,Qcbp,Xbtl,Dbrk,Gbrk,Zbks,Ibkb,Osmb" +C;X13;Y130;K0 +C;X14;Y130;K1 +C;X1;Y131;K"Klgb" +C;X2;Y131;K-1 +C;X3;Y131;K"TerrainArt\BlackCitadel" +C;X4;Y131;K"Citadel_LargeBricks" +C;X5;Y131;K"Large Bricks" +C;X6;Y131;K"WESTRING_TILE_LARGE_BRICKS" +C;X7;Y131;K0 +C;X8;Y131;K0 +C;X9;Y131;K1 +C;X10;Y131;K1 +C;X11;Y131;K5 +C;X12;Y131;K"Lrok,Frok,Wrok,Bflr,Arck,Frck,Nrck,Yrtl,Vstp,Qstp,Xrtl,Ddkr,Gdkr,Zbkl,Irbk,Olgb" +C;X13;Y131;K0 +C;X14;Y131;K1 +C;X1;Y132;K"Ksqt" +C;X2;Y132;K-1 +C;X3;Y132;K"TerrainArt\BlackCitadel" +C;X4;Y132;K"Citadel_SquareTiles" +C;X5;Y132;K"Square Tiles" +C;X6;Y132;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y132;K0 +C;X8;Y132;K0 +C;X9;Y132;K1 +C;X10;Y132;K1 +C;X11;Y132;K7 +C;X12;Y132;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ysqd,Vcrp,Qcrp,Vsqd,Dgrs,Ggrs,Zbkl,Itbk,Osqt" +C;X13;Y132;K0 +C;X14;Y132;K1 +C;X1;Y133;K"Kdkt" +C;X2;Y133;K-1 +C;X3;Y133;K"TerrainArt\BlackCitadel" +C;X4;Y133;K"Citadel_DarkTiles" +C;X5;Y133;K"Dark Tiles" +C;X6;Y133;K"WESTRING_TILE_DARK_TILES" +C;X7;Y133;K0 +C;X8;Y133;K0 +C;X9;Y133;K1 +C;X10;Y133;K1 +C;X11;Y133;K8 +C;X12;Y133;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Yblm,Vstp,Qstp,Xblm,Ddkr,Gdkr,Ztil,Ibsq,Odkt" +C;X13;Y133;K0 +C;X14;Y133;K1 +C;X1;Y134;K"Jdrt" +C;X2;Y134;K-1 +C;X3;Y134;K"TerrainArt\DalaranRuins" +C;X4;Y134;K"DRuins_Dirt" +C;X5;Y134;K"Dirt" +C;X6;Y134;K"WESTRING_TILE_DIRT" +C;X7;Y134;K1 +C;X8;Y134;K1 +C;X9;Y134;K1 +C;X10;Y134;K1 +C;X11;Y134;K1 +C;X12;Y134;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Xdrt,Ydrt,Ddrt,Gdrt,Zdrt,Idrt" +C;X13;Y134;K0 +C;X14;Y134;K1 +C;X1;Y135;K"Jdtr" +C;X2;Y135;K-1 +C;X3;Y135;K"TerrainArt\DalaranRuins" +C;X4;Y135;K"DRuins_DirtRough" +C;X5;Y135;K"Rough Dirt" +C;X6;Y135;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y135;K1 +C;X8;Y135;K1 +C;X9;Y135;K1 +C;X10;Y135;K1 +C;X11;Y135;K2 +C;X12;Y135;K"Ldtr,Fdtr,Wdtr,Bdrh,Adrd,Cdrd,Ndrd,Ydtr,Vdrr,Qdrr,Xdtr,Dbrk,Gbrk,Zdrg,Idtr" +C;X13;Y135;K0 +C;X14;Y135;K1 +C;X1;Y136;K"Jblm" +C;X2;Y136;K-1 +C;X3;Y136;K"TerrainArt\DalaranRuins" +C;X4;Y136;K"DRuins_BlackMarble" +C;X5;Y136;K"Black Marble" +C;X6;Y136;K"WESTRING_TILE_BLACK_MARBLE" +C;X7;Y136;K0 +C;X8;Y136;K0 +C;X9;Y136;K1 +C;X10;Y136;K1 +C;X11;Y136;K8 +C;X12;Y136;K"Lrok,Frok,Wrok,Bdrr,Avin,Cvin,Nrck,Yblm,Vstp,Qstp,Xblm,Drds,Grds,Ztil,Ibsq" +C;X13;Y136;K0 +C;X14;Y136;K1 +C;X1;Y137;K"Jbtl" +C;X2;Y137;K-1 +C;X3;Y137;K"TerrainArt\DalaranRuins" +C;X4;Y137;K"DRuins_BrickTiles" +C;X5;Y137;K"Brick" +C;X6;Y137;K"WESTRING_TILE_BRICK" +C;X7;Y137;K0 +C;X8;Y137;K0 +C;X9;Y137;K1 +C;X10;Y137;K1 +C;X11;Y137;K5 +C;X12;Y137;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ybtl,Vrck,Qrck,Xbtl,Dbrk,Gbrk,Zbks,Ibkb" +C;X13;Y137;K0 +C;X14;Y137;K1 +C;X1;Y138;K"Jsqd" +C;X2;Y138;K-1 +C;X3;Y138;K"TerrainArt\DalaranRuins" +C;X4;Y138;K"DRuins_SquareTiles" +C;X5;Y138;K"Square Tiles" +C;X6;Y138;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y138;K0 +C;X8;Y138;K0 +C;X9;Y138;K1 +C;X10;Y138;K1 +C;X11;Y138;K6 +C;X12;Y138;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Ysqd,Vdrt,Qdrt,Xsqd,Dsqd,Gsqd,Zbkl,Irbk" +C;X13;Y138;K0 +C;X14;Y138;K1 +C;X1;Y139;K"Jrtl" +C;X2;Y139;K-1 +C;X3;Y139;K"TerrainArt\DalaranRuins" +C;X4;Y139;K"DRuins_RoundTiles" +C;X5;Y139;K"Round Tiles" +C;X6;Y139;K"WESTRING_TILE_ROUND_TILES" +C;X7;Y139;K0 +C;X8;Y139;K0 +C;X9;Y139;K1 +C;X10;Y139;K1 +C;X11;Y139;K7 +C;X12;Y139;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Yrtl,Vrck,Qrck,Xrtl,Dsqd,Gsqd,Ztil,Itbk" +C;X13;Y139;K0 +C;X14;Y139;K1 +C;X1;Y140;K"Jgsb" +C;X2;Y140;K-1 +C;X3;Y140;K"TerrainArt\DalaranRuins" +C;X4;Y140;K"DRuins_Grass" +C;X5;Y140;K"Grass" +C;X6;Y140;K"WESTRING_TILE_GRASS" +C;X7;Y140;K1 +C;X8;Y140;K1 +C;X9;Y140;K1 +C;X10;Y140;K1 +C;X11;Y140;K3 +C;X12;Y140;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Nsnw,Ygsb,Cgrs,Vgrs,Qgrs,Xgsb,Dbrk,Gbrk,Zgrs,Isnw" +C;X13;Y140;K0 +C;X14;Y140;K1 +C;X1;Y141;K"Jhdg" +C;X2;Y141;K-1 +C;X3;Y141;K"TerrainArt\DalaranRuins" +C;X4;Y141;K"DRuins_GrassTrim" +C;X5;Y141;K"Grass Trim" +C;X6;Y141;K"WESTRING_TILE_GRASS_TRIM" +C;X7;Y141;K1 +C;X8;Y141;K1 +C;X9;Y141;K1 +C;X10;Y141;K1 +C;X11;Y141;K4 +C;X12;Y141;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Nice,Yhdg,Cgrs,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zsan,Iice" +C;X13;Y141;K0 +C;X14;Y141;K1 +C;X1;Y142;K"Jwmb" +C;X2;Y142;K-1 +C;X3;Y142;K"TerrainArt\DalaranRuins" +C;X4;Y142;K"DRuins_WhiteMarble" +C;X5;Y142;K"White Marble" +C;X6;Y142;K"WESTRING_TILE_WHITE_MARBLE" +C;X7;Y142;K0 +C;X8;Y142;K0 +C;X9;Y142;K1 +C;X10;Y142;K1 +C;X11;Y142;K9 +C;X12;Y142;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ywmb,Vrck,Qrck,Xwmb,Dgrs,Ggrs,Ztil,Ibsq" +C;X13;Y142;K0 +C;X14;Y142;K1 +C;X1;Y143;K"cAc2" +C;X2;Y143;K0 +C;X3;Y143;K"TerrainArt\Ashenvale" +C;X4;Y143;K"Ashen_Dirt" +C;X5;Y143;K"Dirt" +C;X6;Y143;K"WESTRING_TILE_DIRT" +C;X7;Y143;K1 +C;X8;Y143;K1 +C;X9;Y143;K1 +C;X10;Y143;K1 +C;X11;Y143;K1 +C;X12;Y143;K"Ldrt,Fdrt,Wdrt,Bdsr,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y143;K1 +C;X14;Y143;K0 +C;X1;Y144;K"cAc1" +C;X2;Y144;K0 +C;X3;Y144;K"TerrainArt\Ashenvale" +C;X4;Y144;K"Ashen_Grass" +C;X5;Y144;K"Grass" +C;X6;Y144;K"WESTRING_TILE_GRASS" +C;X7;Y144;K1 +C;X8;Y144;K1 +C;X9;Y144;K1 +C;X10;Y144;K1 +C;X11;Y144;K4 +C;X12;Y144;K"Lgrs,Fgrs,Wgrs,Bgrr,Cgrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dbrk,Gbrk,Zgrs,Isnw,Ofsl" +C;X13;Y144;K1 +C;X14;Y144;K0 +C;X1;Y145;K"cBc2" +C;X2;Y145;K0 +C;X3;Y145;K"TerrainArt\Barrens" +C;X4;Y145;K"Barrens_Desert" +C;X5;Y145;K"Desert" +C;X6;Y145;K"WESTRING_TILE_DESERT" +C;X7;Y145;K1 +C;X8;Y145;K1 +C;X9;Y145;K1 +C;X10;Y145;K1 +C;X11;Y145;K3 +C;X12;Y145;K"Ldrt,Fdrt,Wdrt,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zsan,Idrt,Ofst" +C;X13;Y145;K1 +C;X14;Y145;K0 +C;X1;Y146;K"cBc1" +C;X2;Y146;K0 +C;X3;Y146;K"TerrainArt\Barrens" +C;X4;Y146;K"Barrens_Grass" +C;X5;Y146;K"Grass" +C;X6;Y146;K"WESTRING_TILE_GRASS" +C;X7;Y146;K1 +C;X8;Y146;K1 +C;X9;Y146;K1 +C;X10;Y146;K1 +C;X11;Y146;K5 +C;X12;Y146;K"Lgrs,Fgrs,Wgrs,Agrs,Cgrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dlvc,Glvc,Zgrs,Isnw,Ofsl" +C;X13;Y146;K1 +C;X14;Y146;K0 +C;X1;Y147;K"cKc1" +C;X2;Y147;K0 +C;X3;Y147;K"TerrainArt\BlackCitadel" +C;X4;Y147;K"Citadel_Dirt" +C;X5;Y147;K"Dirt" +C;X6;Y147;K"WESTRING_TILE_DIRT" +C;X7;Y147;K1 +C;X8;Y147;K1 +C;X9;Y147;K1 +C;X10;Y147;K1 +C;X11;Y147;K2 +C;X12;Y147;K"Zdrt,Idrt,Odrt" +C;X13;Y147;K0 +C;X14;Y147;K1 +C;X1;Y148;K"cKc2" +C;X2;Y148;K0 +C;X3;Y148;K"TerrainArt\BlackCitadel" +C;X4;Y148;K"Citadel_DarkTiles" +C;X5;Y148;K"Dark Tiles" +C;X6;Y148;K"WESTRING_TILE_DARK_TILES" +C;X7;Y148;K0 +C;X8;Y148;K0 +C;X9;Y148;K1 +C;X10;Y148;K1 +C;X11;Y148;K5 +C;X12;Y148;K"Ztil,Ibsq,Odkt" +C;X13;Y148;K0 +C;X14;Y148;K1 +C;X1;Y149;K"cYc2" +C;X2;Y149;K0 +C;X3;Y149;K"TerrainArt\Cityscape" +C;X4;Y149;K"City_Dirt" +C;X5;Y149;K"Dirt" +C;X6;Y149;K"WESTRING_TILE_DIRT" +C;X7;Y149;K1 +C;X8;Y149;K1 +C;X9;Y149;K1 +C;X10;Y149;K1 +C;X11;Y149;K1 +C;X12;Y149;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y149;K1 +C;X14;Y149;K0 +C;X1;Y150;K"cYc1" +C;X2;Y150;K0 +C;X3;Y150;K"TerrainArt\Cityscape" +C;X4;Y150;K"City_SquareTiles" +C;X5;Y150;K"Square Tiles" +C;X6;Y150;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y150;K0 +C;X8;Y150;K0 +C;X9;Y150;K1 +C;X10;Y150;K1 +C;X11;Y150;K6 +C;X12;Y150;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Vdrt,Qdrt,Xsqd,Dsqd,Gsqd,Zbkl,Irbk,Osqt" +C;X13;Y150;K1 +C;X14;Y150;K0 +C;X1;Y151;K"cXc2" +C;X2;Y151;K0 +C;X3;Y151;K"TerrainArt\Dalaran" +C;X4;Y151;K"Dalaran_Dirt" +C;X5;Y151;K"Dirt" +C;X6;Y151;K"WESTRING_TILE_DIRT" +C;X7;Y151;K1 +C;X8;Y151;K1 +C;X9;Y151;K1 +C;X10;Y151;K1 +C;X11;Y151;K1 +C;X12;Y151;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y151;K1 +C;X14;Y151;K0 +C;X1;Y152;K"cXc1" +C;X2;Y152;K0 +C;X3;Y152;K"TerrainArt\Dalaran" +C;X4;Y152;K"Dalaran_SquareTiles" +C;X5;Y152;K"Square Tiles" +C;X6;Y152;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y152;K0 +C;X8;Y152;K0 +C;X9;Y152;K1 +C;X10;Y152;K1 +C;X11;Y152;K6 +C;X12;Y152;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Ysqd,Vdrt,Qdrt,Dsqd,Gsqd,Zbkl,Irbk,Osqt" +C;X13;Y152;K1 +C;X14;Y152;K0 +C;X1;Y153;K"cJc2" +C;X2;Y153;K0 +C;X3;Y153;K"TerrainArt\DalaranRuins" +C;X4;Y153;K"DRuins_Dirt" +C;X5;Y153;K"Dirt" +C;X6;Y153;K"WESTRING_TILE_DIRT" +C;X7;Y153;K1 +C;X8;Y153;K1 +C;X9;Y153;K1 +C;X10;Y153;K1 +C;X11;Y153;K1 +C;X12;Y153;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Vdrt,Qdrt,Ydrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y153;K0 +C;X14;Y153;K1 +C;X1;Y154;K"cJc1" +C;X2;Y154;K0 +C;X3;Y154;K"TerrainArt\DalaranRuins" +C;X4;Y154;K"DRuins_SquareTiles" +C;X5;Y154;K"Square Tiles" +C;X6;Y154;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y154;K0 +C;X8;Y154;K0 +C;X9;Y154;K1 +C;X10;Y154;K1 +C;X11;Y154;K6 +C;X12;Y154;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Nsnr,Ysqd,Vdrt,Qdrt,Dsqd,Gsqd,Zbkl,Irbk,Osqt" +C;X13;Y154;K0 +C;X14;Y154;K1 +C;X1;Y155;K"cDc2" +C;X2;Y155;K1 +C;X3;Y155;K"TerrainArt\Dungeon" +C;X4;Y155;K"Cave_Dirt" +C;X5;Y155;K"Dirt" +C;X6;Y155;K"WESTRING_TILE_DIRT" +C;X7;Y155;K1 +C;X8;Y155;K1 +C;X9;Y155;K1 +C;X10;Y155;K1 +C;X11;Y155;K1 +C;X12;Y155;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y155;K1 +C;X14;Y155;K0 +C;X1;Y156;K"cDc1" +C;X2;Y156;K1 +C;X3;Y156;K"TerrainArt\Dungeon" +C;X4;Y156;K"Cave_SquareTiles" +C;X5;Y156;K"Square Tiles" +C;X6;Y156;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y156;K0 +C;X8;Y156;K1 +C;X9;Y156;K1 +C;X10;Y156;K1 +C;X11;Y156;K6 +C;X12;Y156;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ysqd,Vdrt,Qdrt,Xsqd,Gsqd,Zbkl,Itbk,Osqt" +C;X13;Y156;K1 +C;X14;Y156;K0 +C;X1;Y157;K"cCc2" +C;X2;Y157;K1 +C;X3;Y157;K"TerrainArt\Felwood" +C;X4;Y157;K"Felwood_Dirt" +C;X5;Y157;K"Dirt" +C;X6;Y157;K"WESTRING_TILE_DIRT" +C;X7;Y157;K1 +C;X8;Y157;K1 +C;X9;Y157;K1 +C;X10;Y157;K1 +C;X11;Y157;K2 +C;X12;Y157;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y157;K1 +C;X14;Y157;K0 +C;X1;Y158;K"cCc1" +C;X2;Y158;K1 +C;X3;Y158;K"TerrainArt\Felwood" +C;X4;Y158;K"Felwood_Grass" +C;X5;Y158;K"Grass" +C;X6;Y158;K"WESTRING_TILE_GRASS" +C;X7;Y158;K1 +C;X8;Y158;K1 +C;X9;Y158;K1 +C;X10;Y158;K1 +C;X11;Y158;K4 +C;X12;Y158;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Ngrs,Yhdg,Vgrs,Qgrs,Xhdg,Dgrs,Ggrs,Zgrs,Isnw,Ofsl" +C;X13;Y158;K1 +C;X14;Y158;K0 +C;X1;Y159;K"cIc2" +C;X2;Y159;K1 +C;X3;Y159;K"TerrainArt\Icecrown" +C;X4;Y159;K"Ice_RuneBricks" +C;X5;Y159;K"Runed Bricks" +C;X6;Y159;K"WESTRING_TILE_RUNED_BRICKS" +C;X7;Y159;K0 +C;X8;Y159;K0 +C;X9;Y159;K1 +C;X10;Y159;K1 +C;X11;Y159;K9 +C;X12;Y159;K"Zbkl,Olgb" +C;X13;Y159;K0 +C;X14;Y159;K1 +C;X1;Y160;K"cIc1" +C;X2;Y160;K1 +C;X3;Y160;K"TerrainArt\Icecrown" +C;X4;Y160;K"Ice_Snow" +C;X5;Y160;K"Snow" +C;X6;Y160;K"WESTRING_TILE_SNOW" +C;X7;Y160;K1 +C;X8;Y160;K1 +C;X9;Y160;K1 +C;X10;Y160;K1 +C;X11;Y160;K4 +C;X12;Y160;K"Zgrs,Ofsl" +C;X13;Y160;K0 +C;X14;Y160;K1 +C;X1;Y161;K"cFc2" +C;X2;Y161;K1 +C;X3;Y161;K"TerrainArt\LordaeronFall" +C;X4;Y161;K"Lordf_Dirt" +C;X5;Y161;K"Dirt" +C;X6;Y161;K"WESTRING_TILE_DIRT" +C;X7;Y161;K1 +C;X8;Y161;K1 +C;X9;Y161;K1 +C;X10;Y161;K1 +C;X11;Y161;K2 +C;X12;Y161;K"Ldrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y161;K1 +C;X14;Y161;K0 +C;X1;Y162;K"cFc1" +C;X2;Y162;K1 +C;X3;Y162;K"TerrainArt\LordaeronFall" +C;X4;Y162;K"Lordf_Grass" +C;X5;Y162;K"Grass" +C;X6;Y162;K"WESTRING_TILE_GRASS" +C;X7;Y162;K1 +C;X8;Y162;K1 +C;X9;Y162;K1 +C;X10;Y162;K1 +C;X11;Y162;K4 +C;X12;Y162;K"Lgrs,Wgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Isnw,Ofsl" +C;X13;Y162;K1 +C;X14;Y162;K0 +C;X1;Y163;K"cLc2" +C;X2;Y163;K1 +C;X3;Y163;K"TerrainArt\LordaeronSummer" +C;X4;Y163;K"Lords_Dirt" +C;X5;Y163;K"Dirt" +C;X6;Y163;K"WESTRING_TILE_DIRT" +C;X7;Y163;K1 +C;X8;Y163;K1 +C;X9;Y163;K1 +C;X10;Y163;K1 +C;X11;Y163;K2 +C;X12;Y163;K"Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y163;K1 +C;X14;Y163;K0 +C;X1;Y164;K"cLc1" +C;X2;Y164;K1 +C;X3;Y164;K"TerrainArt\LordaeronSummer" +C;X4;Y164;K"Lords_Grass" +C;X5;Y164;K"Grass" +C;X6;Y164;K"WESTRING_TILE_GRASS" +C;X7;Y164;K1 +C;X8;Y164;K1 +C;X9;Y164;K1 +C;X10;Y164;K1 +C;X11;Y164;K4 +C;X12;Y164;K"Fgrs,Wgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Isnw,Ofsl" +C;X13;Y164;K1 +C;X14;Y164;K0 +C;X1;Y165;K"cWc2" +C;X2;Y165;K1 +C;X3;Y165;K"TerrainArt\LordaeronWinter" +C;X4;Y165;K"Lordw_Grass" +C;X5;Y165;K"Grass" +C;X6;Y165;K"WESTRING_TILE_GRASS" +C;X7;Y165;K1 +C;X8;Y165;K1 +C;X9;Y165;K1 +C;X10;Y165;K1 +C;X11;Y165;K3 +C;X12;Y165;K"Lgrs,Fgrs,Bgrr,Agrs,Cgrs,Nsnw,Ygsb,Vgrs,Qgrs,Xhdg,Dsqd,Gsqd,Zgrs,Isnw,Ofsl" +C;X13;Y165;K1 +C;X14;Y165;K0 +C;X1;Y166;K"cWc1" +C;X2;Y166;K1 +C;X3;Y166;K"TerrainArt\LordaeronWinter" +C;X4;Y166;K"Lordw_Snow" +C;X5;Y166;K"Snow" +C;X6;Y166;K"WESTRING_TILE_SNOW" +C;X7;Y166;K1 +C;X8;Y166;K1 +C;X9;Y166;K1 +C;X10;Y166;K1 +C;X11;Y166;K5 +C;X12;Y166;K"Lgrd,Fgrd,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Qgrt,Xgsb,Dlav,Glav,Zsan,Iice,Ofst" +C;X13;Y166;K1 +C;X14;Y166;K0 +C;X1;Y167;K"cNc2" +C;X2;Y167;K2 +C;X3;Y167;K"TerrainArt\Northrend" +C;X4;Y167;K"North_dirt" +C;X5;Y167;K"Dirt" +C;X6;Y167;K"WESTRING_TILE_DIRT" +C;X7;Y167;K1 +C;X8;Y167;K1 +C;X9;Y167;K1 +C;X10;Y167;K1 +C;X11;Y167;K2 +C;X12;Y167;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y167;K1 +C;X14;Y167;K0 +C;X1;Y168;K"cNc1" +C;X2;Y168;K2 +C;X3;Y168;K"TerrainArt\Northrend" +C;X4;Y168;K"North_Snow" +C;X5;Y168;K"Snow" +C;X6;Y168;K"WESTRING_TILE_SNOW" +C;X7;Y168;K1 +C;X8;Y168;K1 +C;X9;Y168;K1 +C;X10;Y168;K1 +C;X11;Y168;K4 +C;X12;Y168;K"Lgrs,Fgrs,Wgrs,Bgrr,Agrs,Clvg,Yhdg,Vgrt,Qgrt,Xhdg,Dlav,Glav,Zsan,Isnw,Ofst" +C;X13;Y168;K1 +C;X14;Y168;K0 +C;X1;Y169;K"cOc1" +C;X2;Y169;K2 +C;X3;Y169;K"TerrainArt\Outland" +C;X4;Y169;K"Outland_Abyss" +C;X5;Y169;K"Abyss" +C;X6;Y169;K"WESTRING_TILE_ABYSS" +C;X7;Y169;K0 +C;X8;Y169;K0 +C;X9;Y169;K0 +C;X10;Y169;K1 +C;X11;Y169;K2 +C;X12;Y169;K"Zdrt,Idrt,Kdrt" +C;X13;Y169;K0 +C;X14;Y169;K1 +C;X1;Y170;K"cOc2" +C;X2;Y170;K2 +C;X3;Y170;K"TerrainArt\Outland" +C;X4;Y170;K"Outland_RoughDirt" +C;X5;Y170;K"Rough Dirt" +C;X6;Y170;K"WESTRING_TILE_ROUGH_DIRT" +C;X7;Y170;K1 +C;X8;Y170;K1 +C;X9;Y170;K1 +C;X10;Y170;K1 +C;X11;Y170;K1 +C;X12;Y170;K"Zdtr,Idtr,Kdtr" +C;X13;Y170;K0 +C;X14;Y170;K1 +C;X1;Y171;K"cZc2" +C;X2;Y171;K2 +C;X3;Y171;K"TerrainArt\Ruins" +C;X4;Y171;K"Ruins_Dirt" +C;X5;Y171;K"Dirt" +C;X6;Y171;K"WESTRING_TILE_DIRT" +C;X7;Y171;K1 +C;X8;Y171;K1 +C;X9;Y171;K1 +C;X10;Y171;K1 +C;X11;Y171;K2 +C;X12;Y171;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Gdrt,Idrt,Odrt" +C;X13;Y171;K1 +C;X14;Y171;K1 +C;X1;Y172;K"cZc1" +C;X2;Y172;K2 +C;X3;Y172;K"TerrainArt\Ruins" +C;X4;Y172;K"Ruins_LargeBricks" +C;X5;Y172;K"Large Bricks" +C;X6;Y172;K"WESTRING_TILE_LARGE_BRICKS" +C;X7;Y172;K1 +C;X8;Y172;K0 +C;X9;Y172;K1 +C;X10;Y172;K1 +C;X11;Y172;K5 +C;X12;Y172;K"Lrok,Frok,Wrok,Bflr,Arck,Crck,Nrck,Ysqd,Vrck,Qrck,Xsqd,Drds,Grds,Irbk,Olgb" +C;X13;Y172;K1 +C;X14;Y172;K1 +C;X1;Y173;K"cGc2" +C;X2;Y173;K2 +C;X3;Y173;K"TerrainArt\Dungeon2" +C;X4;Y173;K"GDirt" +C;X5;Y173;K"Dirt" +C;X6;Y173;K"WESTRING_TILE_DIRT" +C;X7;Y173;K1 +C;X8;Y173;K1 +C;X9;Y173;K1 +C;X10;Y173;K1 +C;X11;Y173;K1 +C;X12;Y173;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Qdrt,Xdrt,Ddrt,Zdrt,Idrt,Odrt" +C;X13;Y173;K1 +C;X14;Y173;K0 +C;X1;Y174;K"cGc1" +C;X2;Y174;K2 +C;X3;Y174;K"TerrainArt\Dungeon2" +C;X4;Y174;K"GSquareTiles" +C;X5;Y174;K"Square Tiles" +C;X6;Y174;K"WESTRING_TILE_SQUARE_TILES" +C;X7;Y174;K0 +C;X8;Y174;K1 +C;X9;Y174;K1 +C;X10;Y174;K1 +C;X11;Y174;K6 +C;X12;Y174;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ysqd,Vdrt,Qdrt,Xsqd,Dsqd,Zbkl,Itbk,Osqt" +C;X13;Y174;K1 +C;X14;Y174;K0 +C;X1;Y175;K"cVc2" +C;X2;Y175;K2 +C;X3;Y175;K"TerrainArt\Village" +C;X4;Y175;K"Village_Dirt" +C;X5;Y175;K"Dirt" +C;X6;Y175;K"WESTRING_TILE_DIRT" +C;X7;Y175;K1 +C;X8;Y175;K1 +C;X9;Y175;K1 +C;X10;Y175;K1 +C;X11;Y175;K2 +C;X12;Y175;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Qdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y175;K1 +C;X14;Y175;K0 +C;X1;Y176;K"cVc1" +C;X2;Y176;K2 +C;X3;Y176;K"TerrainArt\Village" +C;X4;Y176;K"Village_GrassThick" +C;X5;Y176;K"Thick Grass" +C;X6;Y176;K"WESTRING_TILE_THICK_GRASS" +C;X7;Y176;K1 +C;X8;Y176;K1 +C;X9;Y176;K1 +C;X10;Y176;K1 +C;X11;Y176;K8 +C;X12;Y176;K"Lgrd,Fgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Qgrt,Xgsb,Dlav,Glav,Zgrs,Isnw,Ofst" +C;X13;Y176;K1 +C;X14;Y176;K0 +C;X1;Y177;K"cQc2" +C;X2;Y177;K2 +C;X3;Y177;K"TerrainArt\VillageFall" +C;X4;Y177;K"VillageFall_Dirt" +C;X5;Y177;K"Dirt" +C;X6;Y177;K"WESTRING_TILE_DIRT" +C;X7;Y177;K1 +C;X8;Y177;K1 +C;X9;Y177;K1 +C;X10;Y177;K1 +C;X11;Y177;K2 +C;X12;Y177;K"Ldrt,Fdrt,Wdrt,Bdsr,Adrt,Cdrt,Ndrt,Ydrt,Vdrt,Xdrt,Ddrt,Gdrt,Zdrt,Idrt,Odrt" +C;X13;Y177;K1 +C;X14;Y177;K0 +C;X1;Y178;K"cQc1" +C;X2;Y178;K2 +C;X3;Y178;K"TerrainArt\VillageFall" +C;X4;Y178;K"VillageFall_GrassThick" +C;X5;Y178;K"Thick Grass" +C;X6;Y178;K"WESTRING_TILE_THICK_GRASS" +C;X7;Y178;K1 +C;X8;Y178;K1 +C;X9;Y178;K1 +C;X10;Y178;K1 +C;X11;Y178;K8 +C;X12;Y178;K"Lgrd,Fgrd,Wsnw,Bdrg,Agrd,Clvg,Nice,Ygsb,Vgrt,Xgsb,Dlav,Glav,Zgrs,Isnw,Ofst" +C;X13;Y178;K1 +C;X14;Y178;K0 +E diff --git a/maps/askellon-sector.w3x/Weapons/rifle-shot.wav b/maps/askellon-sector.w3x/Weapons/rifle-shot.wav new file mode 100644 index 00000000..16a912e3 Binary files /dev/null and b/maps/askellon-sector.w3x/Weapons/rifle-shot.wav differ diff --git a/maps/askellon-sector.w3x/battlestation_missiles_diff.dds b/maps/askellon-sector.w3x/battlestation_missiles_diff.dds new file mode 100644 index 00000000..bf4f2079 Binary files /dev/null and b/maps/askellon-sector.w3x/battlestation_missiles_diff.dds differ diff --git a/maps/askellon-sector.w3x/war3map.doo b/maps/askellon-sector.w3x/war3map.doo index bda01fbe..b7c87fa9 100644 Binary files a/maps/askellon-sector.w3x/war3map.doo and b/maps/askellon-sector.w3x/war3map.doo differ diff --git a/maps/askellon-sector.w3x/war3map.imp b/maps/askellon-sector.w3x/war3map.imp index 18fa857b..4941524a 100644 Binary files a/maps/askellon-sector.w3x/war3map.imp and b/maps/askellon-sector.w3x/war3map.imp differ diff --git a/maps/askellon-sector.w3x/war3map.lua b/maps/askellon-sector.w3x/war3map.lua index 0ba2a8d9..b810a63b 100644 --- a/maps/askellon-sector.w3x/war3map.lua +++ b/maps/askellon-sector.w3x/war3map.lua @@ -223,6 +223,10 @@ gg_rct_zonearmory10 = nil gg_rct_zonearmory11 = nil gg_rct_spawnsecurityguard3 = nil gg_rct_spawnpilot1 = nil +gg_rct_zonespacecontainer1 = nil +gg_rct_zonespacecontainer2 = nil +gg_rct_zonespacecontainer3 = nil +gg_rct_zonespacecontainer4 = nil gg_trg_SetKillzones = nil gg_trg_Set = nil gg_trg_SetHatch = nil @@ -355,6 +359,101 @@ function CreateAllItems() gg_item_desc_0511 = BlzCreateItemWithSkin(FourCC("desc"), -12569.9, -13303.7, FourCC("desc")) end +function CreateUnitsForPlayer0() + local p = Player(0) + local u + local unitID + local t + local life + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h00E"), 25827.5, 10612.8, 0.000, FourCC("h00E")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25391.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25455.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25519.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25711.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25775.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25839.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25711.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25775.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25839.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25711.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25775.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25839.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25711.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25775.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 25839.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h00E"), 25827.5, 10068.8, 0.000, FourCC("h00E")) + u = BlzCreateUnitWithSkin(p, FourCC("h00E"), 25763.5, 9236.8, 0.000, FourCC("h00E")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10591.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10527.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10079.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 10015.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 9599.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23759.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23823.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23887.2, 9535.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23439.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23503.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23567.2, 10335.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23439.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23503.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23567.2, 10271.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23439.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23503.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23567.2, 9823.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23439.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23503.2, 9759.0, 0.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), 23567.2, 9759.0, 0.000, FourCC("h005")) +end + function CreateBuildingsForPlayer18() local p = Player(18) local u @@ -494,7 +593,6 @@ function CreateUnitsForPlayer21() local unitID local t local life - u = BlzCreateUnitWithSkin(p, FourCC("h005"), -12768.0, -24384.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("n00O"), -15507.6, -12535.8, 290.938, FourCC("n00O")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -19872.0, -16416.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -19936.0, -16416.0, 270.000, FourCC("h005")) @@ -520,7 +618,6 @@ function CreateUnitsForPlayer21() u = BlzCreateUnitWithSkin(p, FourCC("n00N"), -15458.7, -13159.5, 233.434, FourCC("n00N")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -3328.0, -17696.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -3392.0, -17696.0, 270.000, FourCC("h005")) - u = BlzCreateUnitWithSkin(p, FourCC("h005"), -12768.0, -24448.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("n00M"), -15211.7, -14082.6, 46.166, FourCC("n00M")) u = BlzCreateUnitWithSkin(p, FourCC("n00M"), -15427.9, -14180.5, 262.394, FourCC("n00M")) u = BlzCreateUnitWithSkin(p, FourCC("n00M"), -14416.4, -14023.6, 46.166, FourCC("n00M")) @@ -612,7 +709,6 @@ function CreateBuildingsForPlayer22() u = BlzCreateUnitWithSkin(p, FourCC("h008"), -7616.0, -14656.0, 270.000, FourCC("h008")) u = BlzCreateUnitWithSkin(p, FourCC("h008"), -8768.0, -14912.0, 270.000, FourCC("h008")) u = BlzCreateUnitWithSkin(p, FourCC("h00C"), -6747.7, -13983.7, 0.000, FourCC("h00C")) - u = BlzCreateUnitWithSkin(p, FourCC("h00C"), -8347.7, -14175.7, 180.568, FourCC("h00C")) u = BlzCreateUnitWithSkin(p, FourCC("h00C"), -6299.7, -14879.7, 180.568, FourCC("h00C")) u = BlzCreateUnitWithSkin(p, FourCC("h00C"), -8667.7, -15327.7, 358.847, FourCC("h00C")) end @@ -633,6 +729,22 @@ function CreateNeutralHostileBuildings() u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24000.0, 6080.0, 270.000, FourCC("h008")) u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24384.0, 6208.0, 270.000, FourCC("h008")) u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24896.0, 6208.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24832.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24960.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24320.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24448.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25152.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25280.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24000.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24128.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25472.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25600.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 23616.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 23744.0, 8320.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25280.0, 9536.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24000.0, 9536.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 25280.0, 10816.0, 270.000, FourCC("h008")) + u = BlzCreateUnitWithSkin(p, FourCC("h008"), 24000.0, 10816.0, 270.000, FourCC("h008")) end function CreateNeutralHostile() @@ -686,6 +798,7 @@ function CreateNeutralHostile() u = BlzCreateUnitWithSkin(p, FourCC("h005"), -26528.0, -18720.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -26592.0, -18720.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -26656.0, -18720.0, 270.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), -12768.0, -24384.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -14368.0, -24416.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -26720.0, -18656.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -13888.0, -24480.0, 270.000, FourCC("h005")) @@ -942,6 +1055,7 @@ function CreateNeutralHostile() u = BlzCreateUnitWithSkin(p, FourCC("h005"), -13856.0, -23584.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -13792.0, -23648.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -13856.0, -23648.0, 270.000, FourCC("h005")) + u = BlzCreateUnitWithSkin(p, FourCC("h005"), -12768.0, -24448.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -21824.0, -15424.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -21376.0, -15584.0, 270.000, FourCC("h005")) u = BlzCreateUnitWithSkin(p, FourCC("h005"), -21376.0, -15648.0, 270.000, FourCC("h005")) @@ -1049,6 +1163,7 @@ function CreatePlayerBuildings() end function CreatePlayerUnits() + CreateUnitsForPlayer0() CreateUnitsForPlayer21() end @@ -1278,6 +1393,10 @@ function CreateRegions() gg_rct_zonearmory11 = Rect(-9280.0, -14656.0, -8832.0, -14272.0) gg_rct_spawnsecurityguard3 = Rect(-7360.0, -14080.0, -7232.0, -13984.0) gg_rct_spawnpilot1 = Rect(-11232.0, -16672.0, -11104.0, -16576.0) + gg_rct_zonespacecontainer1 = Rect(23488.0, 4960.0, 25792.0, 5952.0) + gg_rct_zonespacecontainer2 = Rect(23872.0, 5920.0, 25408.0, 6336.0) + gg_rct_zonespacecontainer3 = Rect(24512.0, 6336.0, 24768.0, 8288.0) + gg_rct_zonespacecontainer4 = Rect(23264.0, 8256.0, 26016.0, 10272.0) end function Trig_SetKillzones_Actions() diff --git a/maps/askellon-sector.w3x/war3map.mmp b/maps/askellon-sector.w3x/war3map.mmp index 3e9e66a7..b8a14f17 100644 Binary files a/maps/askellon-sector.w3x/war3map.mmp and b/maps/askellon-sector.w3x/war3map.mmp differ diff --git a/maps/askellon-sector.w3x/war3map.w3a b/maps/askellon-sector.w3x/war3map.w3a index 1dcac8c1..3a099377 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3a and b/maps/askellon-sector.w3x/war3map.w3a differ diff --git a/maps/askellon-sector.w3x/war3map.w3d b/maps/askellon-sector.w3x/war3map.w3d index ebc7e223..d54d5cd4 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3d and b/maps/askellon-sector.w3x/war3map.w3d differ diff --git a/maps/askellon-sector.w3x/war3map.w3e b/maps/askellon-sector.w3x/war3map.w3e index 5fac80d1..d353bba3 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3e and b/maps/askellon-sector.w3x/war3map.w3e differ diff --git a/maps/askellon-sector.w3x/war3map.w3i b/maps/askellon-sector.w3x/war3map.w3i index 3d51032c..4293136f 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3i and b/maps/askellon-sector.w3x/war3map.w3i differ diff --git a/maps/askellon-sector.w3x/war3map.w3r b/maps/askellon-sector.w3x/war3map.w3r index 1fd94dae..7aaf87af 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3r and b/maps/askellon-sector.w3x/war3map.w3r differ diff --git a/maps/askellon-sector.w3x/war3map.w3t b/maps/askellon-sector.w3x/war3map.w3t index 7be4013b..f3753f8e 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3t and b/maps/askellon-sector.w3x/war3map.w3t differ diff --git a/maps/askellon-sector.w3x/war3map.w3u b/maps/askellon-sector.w3x/war3map.w3u index c5eb695a..ff5e558c 100644 Binary files a/maps/askellon-sector.w3x/war3map.w3u and b/maps/askellon-sector.w3x/war3map.w3u differ diff --git a/maps/askellon-sector.w3x/war3map.wpm b/maps/askellon-sector.w3x/war3map.wpm index f805c067..6a64740c 100644 Binary files a/maps/askellon-sector.w3x/war3map.wpm and b/maps/askellon-sector.w3x/war3map.wpm differ diff --git a/maps/askellon-sector.w3x/war3map.wts b/maps/askellon-sector.w3x/war3map.wts index 483de528..6e247aa0 100644 --- a/maps/askellon-sector.w3x/war3map.wts +++ b/maps/askellon-sector.w3x/war3map.wts @@ -7969,3 +7969,56 @@ STRING 1867 Shane|n|cff808080May you rest in peace|r } +STRING 1868 +{ +|Cff00ff00discord.gg/nDMpQZm +} + +STRING 1873 +// Units: h00D (Fusion Bomb), Name (Name) +{ +Fusion Bomb +} + +STRING 1878 +// Abilities: A02Z (Build Bomb), Name (Name) +{ +Build Bomb +} + +STRING 1879 +// Items: I00T ("Nova" NVA47 Explosive), Name (Name) +{ +"Nova" NVA47 Explosive +} + +STRING 1880 +// Items: I00T ("Nova" NVA47 Explosive), Tip (Tooltip - Basic) +{ +"Nova" NVA47 Explosive +} + +STRING 1881 +// Items: I00T ("Nova" NVA47 Explosive), Ubertip (Tooltip - Extended) +{ +|cff808080Intelligent metal cylinders quickly expand once placed into the ground, forming an instant and sturdy wall.|r|n|nPlaces a |cff00ff00Remote Mine|r that can be remote detonated.|nDetonate by clicking on it; Dealing |cff00ff00350 |rdamage.|n|n|cff80808040 Seconds Cooldown|r +} + +STRING 1882 +// Items: I00T ("Nova" NVA47 Explosive), Description (Description) +{ +Places a remote bomb +} + +STRING 1883 +// Doodads: D01W (Force Wall Flat), Name (Name) +{ +Force Wall Flat +} + +STRING 1884 +// Units: h00E (High Quality Crate|n|cff808080Contains Loot!|r), Name (Name) +{ +High Quality Crate|n|cff808080Contains Loot!|r +} + diff --git a/maps/askellon-sector.w3x/war3mapMap.blp b/maps/askellon-sector.w3x/war3mapMap.blp index 6248c55f..4954a1f0 100644 Binary files a/maps/askellon-sector.w3x/war3mapMap.blp and b/maps/askellon-sector.w3x/war3mapMap.blp differ diff --git a/maps/askellon-sector.w3x/war3mapSkin.txt b/maps/askellon-sector.w3x/war3mapSkin.txt index 1e5921e9..5d06a3a3 100644 --- a/maps/askellon-sector.w3x/war3mapSkin.txt +++ b/maps/askellon-sector.w3x/war3mapSkin.txt @@ -48,4 +48,5 @@ REVIVE_AT_ALTAR=TRIGSTR_1807 STRENGTH=TRIGSTR_170 STRENGTH_HILIGHT=TRIGSTR_171 UNDEAD=TRIGSTR_1587 +UPKEEP_NONE=TRIGSTR_1868 diff --git a/maps/askellon-sector.w3x/war3mapUnits.doo b/maps/askellon-sector.w3x/war3mapUnits.doo index 15777b36..29830af5 100644 Binary files a/maps/askellon-sector.w3x/war3mapUnits.doo and b/maps/askellon-sector.w3x/war3mapUnits.doo differ diff --git a/project.log b/project.log index 8a972bf9..9a323071 100644 --- a/project.log +++ b/project.log @@ -1204,3 +1204,168 @@ [2021-01-20 01:25:09] info: Transpiling TypeScript to Lua... [2021-01-20 01:25:32] info: Building "askellon-sector.w3x"... [2021-01-20 01:25:44] info: Creating w3x archive... +[2021-01-20 01:33:28] info: Transpiling TypeScript to Lua... +[2021-01-20 01:33:51] info: Building "askellon-sector.w3x"... +[2021-01-20 01:33:51] info: Creating w3x archive... +[2021-01-20 01:45:18] info: Transpiling TypeScript to Lua... +[2021-01-20 01:45:40] info: Building "askellon-sector.w3x"... +[2021-01-20 01:45:41] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 01:47:08] info: Transpiling TypeScript to Lua... +[2021-01-20 01:47:30] info: Building "askellon-sector.w3x"... +[2021-01-20 01:47:31] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 01:49:38] info: Transpiling TypeScript to Lua... +[2021-01-20 01:50:01] info: Building "askellon-sector.w3x"... +[2021-01-20 01:50:01] info: Creating w3x archive... +[2021-01-20 02:43:15] info: Transpiling TypeScript to Lua... +[2021-01-20 02:43:37] info: Building "askellon-sector.w3x"... +[2021-01-20 02:43:50] info: Creating w3x archive... +[2021-01-20 03:36:05] info: Transpiling TypeScript to Lua... +[2021-01-20 03:36:30] info: Building "askellon-sector.w3x"... +[2021-01-20 03:36:31] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:38:38] info: Transpiling TypeScript to Lua... +[2021-01-20 03:39:01] info: Building "askellon-sector.w3x"... +[2021-01-20 03:39:02] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:46:28] info: Transpiling TypeScript to Lua... +[2021-01-20 03:46:51] info: Building "askellon-sector.w3x"... +[2021-01-20 03:46:52] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:51:23] info: Transpiling TypeScript to Lua... +[2021-01-20 03:51:46] info: Building "askellon-sector.w3x"... +[2021-01-20 03:51:46] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:52:13] info: Transpiling TypeScript to Lua... +[2021-01-20 03:52:36] info: Building "askellon-sector.w3x"... +[2021-01-20 03:52:37] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:53:00] info: Transpiling TypeScript to Lua... +[2021-01-20 03:53:23] info: Building "askellon-sector.w3x"... +[2021-01-20 03:53:23] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:56:43] info: Transpiling TypeScript to Lua... +[2021-01-20 03:57:06] info: Building "askellon-sector.w3x"... +[2021-01-20 03:57:07] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-20 03:58:46] info: Transpiling TypeScript to Lua... +[2021-01-20 03:59:09] info: Building "askellon-sector.w3x"... +[2021-01-20 03:59:10] info: Creating w3x archive... +[2021-01-20 06:43:19] info: Transpiling TypeScript to Lua... +[2021-01-20 06:43:41] info: Building "askellon-sector.w3x"... +[2021-01-20 06:43:43] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:06:32] info: Transpiling TypeScript to Lua... +[2021-01-24 06:07:00] info: Building "askellon-sector.w3x"... +[2021-01-24 06:07:03] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:11:20] info: Transpiling TypeScript to Lua... +[2021-01-24 06:11:42] info: Building "askellon-sector.w3x"... +[2021-01-24 06:11:43] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:15:41] info: Transpiling TypeScript to Lua... +[2021-01-24 06:16:04] info: Building "askellon-sector.w3x"... +[2021-01-24 06:16:05] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:19:00] info: Transpiling TypeScript to Lua... +[2021-01-24 06:19:22] info: Building "askellon-sector.w3x"... +[2021-01-24 06:19:23] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:22:54] info: Transpiling TypeScript to Lua... +[2021-01-24 06:23:17] info: Building "askellon-sector.w3x"... +[2021-01-24 06:23:17] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:26:57] info: Transpiling TypeScript to Lua... +[2021-01-24 06:27:20] info: Building "askellon-sector.w3x"... +[2021-01-24 06:27:20] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:33:42] info: Transpiling TypeScript to Lua... +[2021-01-24 06:34:04] info: Building "askellon-sector.w3x"... +[2021-01-24 06:34:05] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:36:45] info: Transpiling TypeScript to Lua... +[2021-01-24 06:37:07] info: Building "askellon-sector.w3x"... +[2021-01-24 06:37:08] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:39:13] info: Transpiling TypeScript to Lua... +[2021-01-24 06:39:36] info: Building "askellon-sector.w3x"... +[2021-01-24 06:39:37] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:43:13] info: Transpiling TypeScript to Lua... +[2021-01-24 06:43:35] info: Building "askellon-sector.w3x"... +[2021-01-24 06:43:36] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:52:19] info: Transpiling TypeScript to Lua... +[2021-01-24 06:52:43] info: Building "askellon-sector.w3x"... +[2021-01-24 06:52:43] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:55:02] info: Transpiling TypeScript to Lua... +[2021-01-24 06:55:25] info: Building "askellon-sector.w3x"... +[2021-01-24 06:55:26] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:57:53] info: Transpiling TypeScript to Lua... +[2021-01-24 06:58:16] info: Building "askellon-sector.w3x"... +[2021-01-24 06:58:17] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 06:59:43] info: Transpiling TypeScript to Lua... +[2021-01-24 07:00:06] info: Building "askellon-sector.w3x"... +[2021-01-24 07:00:07] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 07:04:36] info: Transpiling TypeScript to Lua... +[2021-01-24 07:04:59] info: Building "askellon-sector.w3x"... +[2021-01-24 07:05:00] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 07:06:54] info: Transpiling TypeScript to Lua... +[2021-01-24 07:07:17] info: Building "askellon-sector.w3x"... +[2021-01-24 07:07:18] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 07:09:56] info: Transpiling TypeScript to Lua... +[2021-01-24 07:10:19] info: Building "askellon-sector.w3x"... +[2021-01-24 07:10:19] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 08:16:11] info: Transpiling TypeScript to Lua... +[2021-01-24 08:16:36] info: Building "askellon-sector.w3x"... +[2021-01-24 08:16:37] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 08:19:12] info: Transpiling TypeScript to Lua... +[2021-01-24 08:19:36] info: Building "askellon-sector.w3x"... +[2021-01-24 08:19:37] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 08:24:45] info: Transpiling TypeScript to Lua... +[2021-01-24 08:25:10] info: Building "askellon-sector.w3x"... +[2021-01-24 08:25:10] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 08:26:41] info: Transpiling TypeScript to Lua... +[2021-01-24 08:27:05] info: Building "askellon-sector.w3x"... +[2021-01-24 08:27:05] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 09:33:13] info: Transpiling TypeScript to Lua... +[2021-01-24 09:33:35] info: Building "askellon-sector.w3x"... +[2021-01-24 09:33:36] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 09:37:45] info: Transpiling TypeScript to Lua... +[2021-01-24 09:38:07] info: Building "askellon-sector.w3x"... +[2021-01-24 09:38:08] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 11:05:03] info: Transpiling TypeScript to Lua... +[2021-01-24 11:05:27] info: Building "askellon-sector.w3x"... +[2021-01-24 11:05:28] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-24 12:33:08] info: Transpiling TypeScript to Lua... +[2021-01-24 12:33:33] info: Building "askellon-sector.w3x"... +[2021-01-24 12:33:33] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-25 11:55:43] info: Transpiling TypeScript to Lua... +[2021-01-25 11:56:10] info: Building "askellon-sector.w3x"... +[2021-01-25 11:56:11] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-25 22:41:31] info: Transpiling TypeScript to Lua... +[2021-01-25 22:41:56] info: Building "askellon-sector.w3x"... +[2021-01-25 22:41:59] info: Creating w3x archive... +[2021-01-26 01:26:45] info: Transpiling TypeScript to Lua... +[2021-01-26 01:27:06] info: Building "askellon-sector.w3x"... +[2021-01-26 01:27:07] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 03:47:38] info: Transpiling TypeScript to Lua... +[2021-01-29 03:48:04] info: Building "askellon-sector.w3x"... +[2021-01-29 03:48:10] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 03:50:46] info: Transpiling TypeScript to Lua... +[2021-01-29 03:51:09] info: Building "askellon-sector.w3x"... +[2021-01-29 03:51:10] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 03:52:10] info: Transpiling TypeScript to Lua... +[2021-01-29 03:52:34] info: Building "askellon-sector.w3x"... +[2021-01-29 03:52:34] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 03:55:35] info: Transpiling TypeScript to Lua... +[2021-01-29 03:55:58] info: Building "askellon-sector.w3x"... +[2021-01-29 03:55:58] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:00:35] info: Transpiling TypeScript to Lua... +[2021-01-29 04:00:58] info: Building "askellon-sector.w3x"... +[2021-01-29 04:00:58] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:06:09] info: Transpiling TypeScript to Lua... +[2021-01-29 04:06:32] info: Building "askellon-sector.w3x"... +[2021-01-29 04:06:33] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:08:51] info: Transpiling TypeScript to Lua... +[2021-01-29 04:09:15] info: Building "askellon-sector.w3x"... +[2021-01-29 04:09:15] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:13:58] info: Transpiling TypeScript to Lua... +[2021-01-29 04:14:21] info: Building "askellon-sector.w3x"... +[2021-01-29 04:14:22] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:21:48] info: Transpiling TypeScript to Lua... +[2021-01-29 04:22:11] info: Building "askellon-sector.w3x"... +[2021-01-29 04:22:12] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:28:38] info: Transpiling TypeScript to Lua... +[2021-01-29 04:29:01] info: Building "askellon-sector.w3x"... +[2021-01-29 04:29:02] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:35:52] info: Transpiling TypeScript to Lua... +[2021-01-29 04:36:15] info: Building "askellon-sector.w3x"... +[2021-01-29 04:36:16] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:39:48] info: Transpiling TypeScript to Lua... +[2021-01-29 04:40:11] info: Building "askellon-sector.w3x"... +[2021-01-29 04:40:12] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... +[2021-01-29 04:44:35] info: Transpiling TypeScript to Lua... +[2021-01-29 04:44:57] info: Building "askellon-sector.w3x"... +[2021-01-29 04:44:58] info: Launching map "E:/codename-askellon/dist/askellon-sector.w3x"... diff --git a/src/app/abilities/ability-hooks.ts b/src/app/abilities/ability-hooks.ts index d3dc15e5..3bc28868 100644 --- a/src/app/abilities/ability-hooks.ts +++ b/src/app/abilities/ability-hooks.ts @@ -57,7 +57,8 @@ import { ABIL_ALIEN_CREATE_TUMOR, ABIL_CULTIST_CEREMONIAL_DAGGER, ABIL_CULTIST_GIFT_MADNESS, - ABIL_ITEM_DRUG_COMEBACK + ABIL_ITEM_DRUG_COMEBACK, + ABIL_ITEM_REMOTE_BOMB } from "resources/ability-ids"; import { AT_ABILITY_DRAGONFIRE_BLAST, SNIPER_ABILITY_ID } from "app/weapons/weapon-constants"; import { DragonFireBlastAbility } from "./human/dragonfire-blast"; @@ -111,6 +112,7 @@ import { SpawnTumorAbility } from "./alien/minions/create-tumor"; import { CeremonialDaggerItemAbility } from "./items/ceremonial-dagger"; import { GiftOfMadnessAbility } from "./cult/gift-of-madness"; import { ComebackDrugAbility } from "./items/comeback-drug"; +import { PlaceBombAbility } from "./items/place-bomb"; @@ -222,3 +224,4 @@ AbilityHooks.Add(ABIL_ALIEN_CREATE_TUMOR, () => new SpawnTumorAbility()); AbilityHooks.Add(ABIL_CULTIST_GIFT_MADNESS, () => new GiftOfMadnessAbility()); AbilityHooks.Add(ABIL_CULTIST_CEREMONIAL_DAGGER, () => new CeremonialDaggerItemAbility()); AbilityHooks.Add(ABIL_ITEM_DRUG_COMEBACK, () => new ComebackDrugAbility()); +AbilityHooks.Add(ABIL_ITEM_REMOTE_BOMB, () => new PlaceBombAbility()); diff --git a/src/app/abilities/alien/minions/create-tumor.ts b/src/app/abilities/alien/minions/create-tumor.ts index 2ccef442..9c24513f 100644 --- a/src/app/abilities/alien/minions/create-tumor.ts +++ b/src/app/abilities/alien/minions/create-tumor.ts @@ -22,13 +22,22 @@ export class SpawnTumorAbility implements Ability { const y = u.y + GetRandomReal(-10, 10); - const bloodSfx = AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadLargeDeathExplode\\UndeadLargeDeathExplode.mdl", x, y); - BlzSetSpecialEffectZ(bloodSfx, getZFromXY(x, y) + 10); - DestroyEffect(bloodSfx); + + const floor = WorldEntity.getInstance().getPointZone(x, y); + + if (floor) { + const bloodSfx = AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadLargeDeathExplode\\UndeadLargeDeathExplode.mdl", x, y); + BlzSetSpecialEffectZ(bloodSfx, getZFromXY(x, y) + 10); + DestroyEffect(bloodSfx); + + // const zone = WorldEntity.getInstance().getPointZone(x, y); + const tumor = new Unit(PlayerStateFactory.AlienAIPlayer1, ALIEN_STRUCTURE_TUMOR, x, y, bj_UNIT_FACING); + CreepEntity.addCreepWithSource(600, tumor); + + // Force our unit to travel too + WorldEntity.getInstance().travel(tumor, floor.id); + } - // const zone = WorldEntity.getInstance().getPointZone(x, y); - const tumor = new Unit(PlayerStateFactory.AlienAIPlayer1, ALIEN_STRUCTURE_TUMOR, x, y, bj_UNIT_FACING); - CreepEntity.addCreepWithSource(600, tumor); } catch(e) { Log.Error(e); diff --git a/src/app/abilities/human/cryo-grenade.ts b/src/app/abilities/human/cryo-grenade.ts index 16af23fe..53a94c01 100644 --- a/src/app/abilities/human/cryo-grenade.ts +++ b/src/app/abilities/human/cryo-grenade.ts @@ -3,7 +3,7 @@ import { Vector2, vectorFromUnit } from "../../types/vector2"; import { Vector3 } from "../../types/vector3"; import { Projectile } from "../../weapons/projectile/projectile"; import { ProjectileTargetStatic, ProjectileMoverParabolic } from "../../weapons/projectile/projectile-target"; -import { FilterIsEnemyAndAlive, FilterIsAlive } from "../../../resources/filters"; +import { FilterIsEnemyAndAlive, FilterIsAlive, FilterAnyUnit } from "../../../resources/filters"; import { MapPlayer, Unit } from "w3ts"; import { getZFromXY } from "lib/utils"; import { BUFF_ID } from "resources/buff-ids"; @@ -67,7 +67,7 @@ export class CryoGrenadeAbility implements Ability { atWhere.x, atWhere.y, EXPLOSION_AOE, - FilterIsAlive(this.castingPlayer) + FilterAnyUnit() ); ForGroup(this.damageGroup, () => this.damageUnit()); } diff --git a/src/app/abilities/items/drop-minerals.ts b/src/app/abilities/items/drop-minerals.ts index 6cc5d8a9..edf59583 100644 --- a/src/app/abilities/items/drop-minerals.ts +++ b/src/app/abilities/items/drop-minerals.ts @@ -22,10 +22,12 @@ export class DropMineralsAbility implements Ability { // Loop through all items and place them on the ground ( that are minerals ) for (let i = 0; i < this.unit.inventorySize; i++) { const item = this.unit.getItemInSlot(i); - const iType = item.typeId; - if (iType === ITEM_MINERAL_REACTIVE || iType === ITEM_MINERAL_VALUABLE) { - item.setPosition(this.targetPoint.x, this.targetPoint.y); - ConveyorEntity.getInstance().checkItem(item.handle); + if (item) { + const iType = item.typeId; + if (iType === ITEM_MINERAL_REACTIVE || iType === ITEM_MINERAL_VALUABLE) { + item.setPosition(this.targetPoint.x, this.targetPoint.y); + ConveyorEntity.getInstance().checkItem(item.handle); + } } } diff --git a/src/app/abilities/items/place-bomb.ts b/src/app/abilities/items/place-bomb.ts new file mode 100644 index 00000000..e955b450 --- /dev/null +++ b/src/app/abilities/items/place-bomb.ts @@ -0,0 +1,218 @@ +import { Ability } from "../ability-type"; +import { Effect, Group, Item, MapPlayer, Unit } from "w3ts/index"; +import { ITEM_GENETIC_SAMPLE, ITEM_GENETIC_SAMPLE_INFESTED, ITEM_MINERAL_REACTIVE, ITEM_MINERAL_VALUABLE, ITEM_REMOTE_BOMB } from "resources/item-ids"; +import { Vector2 } from "app/types/vector2"; +import { ConveyorEntity } from "app/conveyor/conveyor-entity"; +import { PlayerStateFactory } from "app/force/player-state-entity"; +import { UNIT_ID_REMOTE_BOMB } from "resources/unit-ids"; +import { getZFromXY, MessagePlayer, terrainIsPathable } from "lib/utils"; +import { COL_GOLD } from "resources/colours"; +import { InputManager } from "lib/TreeLib/InputManager/InputManager"; +import { MouseInputContainer } from "lib/TreeLib/InputManager/MouseInputContainer"; +import { MouseCallback } from "lib/TreeLib/InputManager/MouseCallback"; +import { PlayNewSoundAt } from "lib/translators"; +import { Log } from "lib/serilog/serilog"; +import { SFX_BLUE_BALL } from "resources/sfx-paths"; +import { FilterAnyUnit, FilterIsAlive } from "resources/filters"; +import { ForceEntity } from "app/force/force-entity"; +import { CrewFactory } from "app/crewmember/crewmember-factory"; +import { GameTimeElapsed } from "app/types/game-time-elapsed"; + +export class PlaceBombAbility implements Ability { + + private unit: Unit; + private player: MapPlayer; + private bomb: Unit; + + private detonating = false; + private detonated = false; + + private detonationDuration = 3.5; + private detonatingTimer = this.detonationDuration; + + private checkTicker = 2; + + private mouseHook: MouseCallback; + private orbEffect: Effect; + + private g = new Group(); + + private placementTimestamp: number; + + constructor() {} + + public initialise() { + this.unit = Unit.fromHandle(GetTriggerUnit()); + this.player = this.unit.owner; + + const targetLoc = new Vector2( GetSpellTargetX(), GetSpellTargetY() ); + + if (terrainIsPathable(targetLoc.x, targetLoc.y)) { + this.g.enumUnitsInRangeCounted(targetLoc.x, targetLoc.y, 350, () => GetUnitTypeId(GetFilterUnit()) === FourCC('n001'), 1); + + if (this.g.size >= 1) { + MessagePlayer(this.unit.owner, `${COL_GOLD}Cannot Place Near Elevator|r`); + } + else { + this.bomb = new Unit(this.player, UNIT_ID_REMOTE_BOMB, targetLoc.x, targetLoc.y, bj_UNIT_FACING); + } + } + else { + MessagePlayer(this.unit.owner, `${COL_GOLD}Cannot Build There|r`); + } + + if (!this.bomb) { + this.unit.issueImmediateOrder("stop"); + this.unit.addItem( new Item(ITEM_REMOTE_BOMB, this.unit.x, this.unit.y) ); + return false; + } + + + this.placementTimestamp = GameTimeElapsed.getTime(); + + // Now add mouse hook + const cbCont = InputManager.addMouseReleaseCallback(MOUSE_BUTTON_TYPE_LEFT, key => { + if (key.triggeringPlayer == this.player.handle) { + this.onClickSearch(key.position); + } + }); + + this.mouseHook = cbCont.callbacks[cbCont.callbacks.length -1]; + + return true; + }; + + public process(delta: number) { + + if (!this.detonating) { + this.checkTicker += delta; + if (this.checkTicker > 2) { + this.checkTicker = 0; + + return !this.detonated && this.bomb.isAlive(); + } + } + else if (this.unit.isAlive()) { + this.detonatingTimer -= delta; + + const p = (this.detonationDuration - this.detonatingTimer) / this.detonationDuration; + this.orbEffect.scale = 0.3 * p; + this.orbEffect.z = getZFromXY(this.bomb.x, this.bomb.y) + 75 * p; + + this.checkTicker += delta; + if (this.checkTicker > 0.15) { + this.checkTicker = 0; + + const sfx = AddSpecialEffect("war3mapImported\\DustWave.mdx", this.bomb.x, this.bomb.y); + BlzSetSpecialEffectHeight(sfx, getZFromXY(this.bomb.x, this.bomb.y) + 5); + BlzSetSpecialEffectYaw(sfx, GetRandomInt(0, 360) * bj_DEGTORAD); + BlzSetSpecialEffectAlpha(sfx, 40); + BlzSetSpecialEffectScale(sfx, 1.5*p); + BlzSetSpecialEffectTimeScale(sfx, 0.9); + BlzSetSpecialEffectTime(sfx, 0); + DestroyEffect(sfx); + } + + + if (this.detonatingTimer <= 0) { + this.explode(); + return false; + } + + } + return true; + }; + + private onClickSearch(targetLoc: Vector2) { + const d = targetLoc.distanceTo( Vector2.fromWidget(this.bomb.handle) ); + if (d <= 75) { + this.onClick(); + } + }; + + private onClick() { + if (GameTimeElapsed.getTime() - this.placementTimestamp <= 3) return; + + // We are exploding, Remove the callbacks + InputManager.removeMouseCallback(this.mouseHook); + this.mouseHook = undefined; + + // Remove our bomb's permanent invisibility + this.bomb.removeAbility(FourCC('Apiv')); + + // Create and play an explosion sound + PlayNewSoundAt("Sounds\\RemoteBombCharge.wav", this.bomb.x, this.bomb.y, 127); + + // We are detonating + this.detonating = true; + this.orbEffect = new Effect(SFX_BLUE_BALL, this.bomb.x, this.bomb.y); + this.orbEffect.z = getZFromXY(this.bomb.x, this.bomb.y); + this.orbEffect.scale = 0; + } + + + private explode() { + if (this.bomb.isAlive()) { + PlayNewSoundAt("Sounds\\FusionExplosion.wav", this.bomb.x, this.bomb.y, 127); + this.bomb.destroy(); + this.detonated = true; + + const sfx = AddSpecialEffect("Objects\\Spawnmodels\\NightElf\\NECancelDeath\\NECancelDeath.mdl", this.bomb.x, this.bomb.y); + BlzSetSpecialEffectScale(sfx, 2); + DestroyEffect(sfx); + + GroupEnumUnitsInRange( + this.g.handle, + this.bomb.x, + this.bomb.y, + 350, + FilterAnyUnit() + ); + + this.g.for(() => this.doDamage()); + this.g.clear(); + } + } + + + public doDamage() { + const unit = Unit.fromHandle(GetEnumUnit()); + + // Check to make sure we are allowed aggression between the two teams + const aggressionAllowed = this.unit.owner === unit.owner + || ForceEntity.getInstance().aggressionBetweenTwoPlayers( + this.unit.owner, + unit.owner + ); + + // If we aren't allowed aggression we stop + // Prevents griefing etc + if (!aggressionAllowed) return; + + // Otherwise continue onwards + const crew = CrewFactory.getInstance().getCrewmemberForUnit(unit); + let damageMult = 1; + if (crew) damageMult = crew.getDamageBonusMult(); + + this.unit.damageTarget( + unit.handle, + 350 * damageMult, + true, + true, + ATTACK_TYPE_MAGIC, + DAMAGE_TYPE_ACID, + WEAPON_TYPE_WHOKNOWS + ) + + } + + + public destroy() { + if (this.mouseHook) InputManager.removeMouseCallback(this.mouseHook); + if (this.bomb.isAlive()) this.bomb.destroy(); + this.g.destroy(); + + if (this.orbEffect) this.orbEffect.destroy(); + return true; + }; +} \ No newline at end of file diff --git a/src/app/abilities/station/scan-for-player.ts b/src/app/abilities/station/scan-for-player.ts index 7517628c..d6b0f75c 100644 --- a/src/app/abilities/station/scan-for-player.ts +++ b/src/app/abilities/station/scan-for-player.ts @@ -6,7 +6,7 @@ import { EventEntity } from "app/events/event-entity"; import { EVENT_TYPE } from "app/events/event-enum"; import { Unit, MapPlayer, playerColors } from "w3ts/index"; import { PlayerStateFactory } from "app/force/player-state-entity"; -import { ABIL_SECURITY_TARGET_ALL, ABIL_ACTIVATE_SCAN_CREW, ABIL_ACTIVATE_SCAN_ALIENS } from "resources/ability-ids"; +import { ABIL_SECURITY_TARGET_ALL, ABIL_ACTIVATE_SCAN_CREW, ABIL_ACTIVATE_SCAN_ALIENS, TECH_MAJOR_SECURITY } from "resources/ability-ids"; import { Players } from "w3ts/globals/index"; import { Log } from "lib/serilog/serilog"; import { Timers } from "app/timer-type"; @@ -18,6 +18,12 @@ export const scanSound = new SoundRef("Sounds\\Ships\\deep_scan.mp3", false, tru export class StationSecurityScanForPlayer implements Ability { private isScanningForAliens = false; + + private scanInterval = 5; + + private duration = 0; + private maxDuration = 10; + constructor(scanForAliens: boolean) { this.isScanningForAliens = scanForAliens; } @@ -28,14 +34,22 @@ export class StationSecurityScanForPlayer implements Ability { GlobalCooldownAbilityEntity.getInstance().onAbilityCast(u.handle, ABIL_ACTIVATE_SCAN_CREW); GlobalCooldownAbilityEntity.getInstance().onAbilityCast(u.handle, ABIL_ACTIVATE_SCAN_ALIENS); + this.maxDuration = u.owner.getTechCount(TECH_MAJOR_SECURITY, true) * 10; MessageAllPlayers(`Activating ${COL_GOLD}Scanners|r: Searching for ${this.isScanningForAliens ? `${COL_ALIEN}Alien Signatures|r` : 'Crew Signals'}`); - Timers.addTimedAction(5.5, () => { - scanSound.playSound(); - }); + return true; + }; + + public process(delta: number) { + this.duration += delta; + this.scanInterval -= delta; + + if (this.scanInterval <= 0) { + this.scanInterval += 5; - Timers.addTimedAction(6, () => { - MessageAllPlayers(`Scan Complete.`); + scanSound.setVolume(40); + scanSound.playSound(); + if (!this.isScanningForAliens) { Players.forEach(p => { const pData = PlayerStateFactory.get(p); @@ -46,10 +60,10 @@ export class StationSecurityScanForPlayer implements Ability { if (pData && crew && crew.unit && crew.unit.isAlive() && crew.unit === pMain) { if (p.id < playerColors.length) { const c = playerColors[p.id]; - if (c) PingMinimapEx(pMain.x, pMain.y, 15, c.red, c.green, c.blue, false); + if (c) PingMinimapEx(pMain.x, pMain.y, 5, c.red, c.green, c.blue, false); } else { - Log.Warning(`${p.id} not in rgb colour array`); + // Log.Warning(`${p.id} not in rgb colour array`); } } }) @@ -60,7 +74,7 @@ export class StationSecurityScanForPlayer implements Ability { PlayerStateFactory.getAlienAI().forEach(p => { GroupEnumUnitsOfPlayer(uGroup, p.handle, Filter(() => { const u = GetFilterUnit(); - PingMinimapEx( GetUnitX(u), GetUnitY(u), 15, 153, 51, 255, false); + PingMinimapEx( GetUnitX(u), GetUnitY(u), 5, 153, 51, 255, false); return false; })); GroupClear(uGroup); @@ -76,15 +90,14 @@ export class StationSecurityScanForPlayer implements Ability { } }); } - }); - return true; - }; + } - public process(delta: number) { - return false; + + return this.duration < this.maxDuration; }; public destroy() { + MessageAllPlayers(`Scan Complete.`); return true; }; } \ No newline at end of file diff --git a/src/app/buff/buffs/drug-comeback.ts b/src/app/buff/buffs/drug-comeback.ts index f3a1d21a..140b87c5 100644 --- a/src/app/buff/buffs/drug-comeback.ts +++ b/src/app/buff/buffs/drug-comeback.ts @@ -43,7 +43,7 @@ export class ComebackDrugBuff extends DynamicBuff { if (this.ticker > 2) { this.ticker -= 2; - const healing = Math.min(this.who.maxLife - this.who.life, 50); + const healing = Math.min(this.who.maxLife - this.who.life, 25); this.who.life += healing; ComebackDrugBuff.healthRegeneratedFromDrug.set(this.who, (ComebackDrugBuff.healthRegeneratedFromDrug.get(this.who) || 0) + healing @@ -71,7 +71,7 @@ export class ComebackDrugBuff extends DynamicBuff { this.who.addAbility(ABIL_MOVESPEED_BONUS_30); const bonusMaxHp = 200 + MathRound((ComebackDrugBuff.healthRegeneratedFromDrug.get(this.who) || 0) / 10); this.who.maxLife += bonusMaxHp; - this.who.life += bonusMaxHp; + // this.who.life += bonusMaxHp; // Reset current health regen ComebackDrugBuff.currentHealthRegeneratedFromDrug.set(this.who, 0); showOverheadText(this.who.x, this.who.y, 119, 221, 119, 200, `+${bonusMaxHp}`); diff --git a/src/app/chat/chat-entity.ts b/src/app/chat/chat-entity.ts index d4681f3d..abbfcc89 100644 --- a/src/app/chat/chat-entity.ts +++ b/src/app/chat/chat-entity.ts @@ -22,7 +22,7 @@ import { Timers } from "app/timer-type"; import { WeaponEntityAttackType } from "app/weapons/weapon-attack-type"; import { AskellonEntity } from "app/station/askellon-entity"; import { CreepEntity } from "app/creep/creep-entity"; -import { ITEM_WEP_NEOKATANA, ITEM_WEP_MINIGUN, ITEM_HUMAN_CORPSE } from "resources/item-ids"; +import { ITEM_WEP_NEOKATANA, ITEM_WEP_MINIGUN, ITEM_HUMAN_CORPSE, ITEM_COMEBACK_DRUG } from "resources/item-ids"; import { ResearchFactory } from "app/research/research-factory"; import { TECH_MINERALS_PROGRESS } from "resources/ability-ids"; import { ALIEN_FORCE_NAME, OBSERVER_FORCE_NAME } from "app/force/forces/force-names"; @@ -223,6 +223,9 @@ export class ChatEntity extends Entity { CreepEntity.addCreepWithSource(600, tumor); }); } + else if (message == "-flare") { + WorldEntity.getInstance().beginASolarFlare(); + } else if (message == "-pf") { // Log.Information("PF "+message); GetPlayerCamLoc(player, (x, y) => { @@ -287,6 +290,11 @@ export class ChatEntity extends Entity { CreateItem(ITEM_WEP_MINIGUN, x, y); }); } + else if (message == "-test thano") { + GetPlayerCamLoc(player, (x, y) => { + CreateItem(ITEM_COMEBACK_DRUG, x, y); + }); + } else if (message == "-test corpse") { GetPlayerCamLoc(player, (x, y) => { const i = CreateItem(ITEM_HUMAN_CORPSE, x, y); diff --git a/src/app/chat/chat-privs-enum.ts b/src/app/chat/chat-privs-enum.ts index e84a590b..1b8e2395 100644 --- a/src/app/chat/chat-privs-enum.ts +++ b/src/app/chat/chat-privs-enum.ts @@ -26,5 +26,6 @@ export const VETERAN_USERS = [ `Вурдалак#21816`, `Serendipity#11633`, `Isaac#1877`, - `PrismaIllya#11412` + `PrismaIllya#11412`, + `LordofRoses#1971` ]; \ No newline at end of file diff --git a/src/app/events/event-enum.ts b/src/app/events/event-enum.ts index 6a6dedc3..ab30a776 100644 --- a/src/app/events/event-enum.ts +++ b/src/app/events/event-enum.ts @@ -80,5 +80,7 @@ export enum EVENT_TYPE { SPAWN_ALIEN_EGG_FOR, - ADD_BUFF_INSTANCE + ADD_BUFF_INSTANCE, + + WORLD_EVENT_SOLAR, } diff --git a/src/app/force/force-entity.ts b/src/app/force/force-entity.ts index 9a12556a..3a35fde5 100644 --- a/src/app/force/force-entity.ts +++ b/src/app/force/force-entity.ts @@ -401,16 +401,18 @@ export class ForceEntity extends Entity { } Players.forEach(p => { const pData = PlayerStateFactory.get(p); - if (pData && pData.getForce() && !pData.getForce().is(OBSERVER_FORCE_NAME)) { - pData.gamesLeft -= 1; + if (pData) { + if (pData.getForce() && !pData.getForce().is(OBSERVER_FORCE_NAME)) { + pData.gamesLeft -= 1; + } + if (winningPlayers.indexOf(p) >= 0) { + pData.playerGamesWon += 1; + } + else { + pData.playerGamesLost += 1; + } + pData.save(); } - if (winningPlayers.indexOf(p) >= 0) { - pData.playerGamesWon += 1; - } - else { - pData.playerGamesLost += 1; - } - pData.save(); }); Timers.addSlowTimedAction(5, () => { diff --git a/src/app/force/player-state-entity.ts b/src/app/force/player-state-entity.ts index 8740268e..ae34bef1 100644 --- a/src/app/force/player-state-entity.ts +++ b/src/app/force/player-state-entity.ts @@ -68,7 +68,7 @@ export class PlayerStateFactory { if (this.state.has(who)) { return this.state.get(who); } - else if (who.slotState !== PLAYER_SLOT_STATE_EMPTY && who.controller === MAP_CONTROL_USER) { + else if (who.slotState === PLAYER_SLOT_STATE_PLAYING && who.controller === MAP_CONTROL_USER) { // Log.Warning(`Pdata.new [${who.id}]${who.name}`) const nState = new PlayerState(who); this.state.set(who, nState); diff --git a/src/app/force/player-type.ts b/src/app/force/player-type.ts index c4ffaa9d..1b153d44 100644 --- a/src/app/force/player-type.ts +++ b/src/app/force/player-type.ts @@ -161,13 +161,13 @@ export class PlayerState { } public log(toWho: MapPlayer = this.player) { - MessagePlayer(this.player, `:: Ship Records [${playerColors[this.player.id].code}${this.originalName}|r] ::`); - MessagePlayer(this.player, `${COL_GOOD}Games Played ::|r ${this.gamesPlayed}`); - MessagePlayer(this.player, `${COL_GOOD}Games Won ::|r ${this.playerGamesWon}`); - MessagePlayer(this.player, `${COL_GOOD}Enemy Kills ::|r ${this.playerTeamkills}`); - - MessagePlayer(this.player, `${COLOUR_CULT}Games Left ::|r ${this.gamesLeft}`); - MessagePlayer(this.player, `${COLOUR_CULT}Games Lost ::|r ${this.playerGamesLost}`); - MessagePlayer(this.player, `${COLOUR_CULT}Team Kills ::|r ${this.playerTeamkills}`); + MessagePlayer(toWho, `:: Ship Records [${playerColors[this.player.id].code}${this.originalName}|r] ::`); + MessagePlayer(toWho, `${COL_GOOD}Games Played ::|r ${this.gamesPlayed}`); + MessagePlayer(toWho, `${COL_GOOD}Games Won ::|r ${this.playerGamesWon}`); + MessagePlayer(toWho, `${COL_GOOD}Enemy Kills ::|r ${this.playerTeamkills}`); + + MessagePlayer(toWho, `${COLOUR_CULT}Games Left ::|r ${this.gamesLeft}`); + MessagePlayer(toWho, `${COLOUR_CULT}Games Lost ::|r ${this.playerGamesLost}`); + MessagePlayer(toWho, `${COLOUR_CULT}Team Kills ::|r ${this.playerTeamkills}`); } } \ No newline at end of file diff --git a/src/app/game.ts b/src/app/game.ts index f18f50f7..de1822bc 100644 --- a/src/app/game.ts +++ b/src/app/game.ts @@ -142,6 +142,7 @@ export class Game { CinematicFadeBJ(bj_CINEFADETYPE_FADEIN, 1.5, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0); + EnableUserUI(true); // Camera follow the main ship this.followMainShip(); @@ -265,6 +266,7 @@ export class Game { CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 4, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0); // CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 4, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 40.00, 50.00, 70.00, 0); + EnableUserUI(true); }); Timers.addTimedAction(18, () => { @@ -338,20 +340,21 @@ export class Game { new Timer().start(2, false, () => { PlayNewSound("Sounds\\ShipDamage\\GroanLong2.mp3", 127); CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 2, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 90.00, 0); + + EnableUserUI(true); }) new Timer().start(3, false, () => { SetDayNightModels("DeepFried\\dnclordaeronunit.mdx", "DeepFried\\dnclordaeronunit.mdx"); CameraSetSourceNoise(5, 50); - for (let i = 0; i < 12; i++) { - BlzFrameSetVisible(BlzGetOriginFrame(ORIGIN_FRAME_COMMAND_BUTTON, i), false); - } }); new Timer().start(6, false, () => { CameraSetSourceNoise(10, 50); }); new Timer().start(7, false, () => { CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 4, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0.00, 0.00, 0.00, 0); + + EnableUserUI(true); CameraSetSourceNoise(15, 50); }); new Timer().start(9, false, () => { @@ -416,37 +419,6 @@ export class Game { }); } else { - // Timers.addTimedAction(i+2, () => { - // const randomPlayer = Quick.GetRandomFromArray(activePlayers, 1)[0] as MapPlayer; - // const crew = PlayerStateFactory.getCrewmember(randomPlayer); - - // if (crew) { - // let message = ''; - // switch(crew.role) { - // case ROLE_TYPES.CAPTAIN: - // message = "Crew, logs are indicating a creature boarded our vessel mid warp." - // break; - // case ROLE_TYPES.ENGINEER: - // message = "Saw some creature running around in the tunnels" - // break; - // case ROLE_TYPES.DOCTOR: - // message = "Captain, there's an alien creature here. I saw it while the power was down." - // break; - // case ROLE_TYPES.PILOT: - // message = "Pilot here, a weird slug like thing got inside our ship" - // break; - // case ROLE_TYPES.INQUISITOR: - // message = "Vile xenos onboard my ship! We must purge it" - // break; - // case ROLE_TYPES.SEC_GUARD: - // message = "Missed my shots, there's a damned bug here." - // break; - // default: - // message = "There's an alien around here..." - // } - // chat.postMessageFor(Players, crew.name, playerColors[randomPlayer.id].code, message, undefined, GENERIC_CHAT_SOUND_REF); - // } - Timers.addTimedAction(2, () => { warningSound.playSound(); PlayNewSound("Sounds\\ComplexBeep.mp3", 127); @@ -464,6 +436,5 @@ export class Game { // }); } }); - } } \ No newline at end of file diff --git a/src/app/interactions/interactables/ships/ship.ts b/src/app/interactions/interactables/ships/ship.ts index 22581427..9fb64071 100644 --- a/src/app/interactions/interactables/ships/ship.ts +++ b/src/app/interactions/interactables/ships/ship.ts @@ -11,6 +11,7 @@ import { BUFF_ID_VOID_SICKNESS } from "resources/buff-ids"; import { MessagePlayer } from "lib/utils"; import { Log } from "lib/serilog/serilog"; import { UPGR_DUMMY_VOID_SICKNESS } from "resources/upgrade-ids"; +import { COLOUR_CULT_GREEN } from "app/force/forces/cultist/constants"; // Interacting with asteroids const noInventorySpace = new SoundRef("Sounds\\DeniedBeep.mp3", false, true); @@ -43,6 +44,11 @@ export function initShipInteractions() { MessagePlayer(source.owner, `You feel too ${COL_ATTATCH}sick|r to use this right now.`) return false; } + + if (interactable.mana <= 30) { + MessagePlayer(source.owner, `Not enough ${COLOUR_CULT_GREEN}Fuel|r to exit the station. Try again later.`) + return false; + } EventEntity.getInstance().sendEvent(EVENT_TYPE.ENTER_SHIP, { source: source, data: { diff --git a/src/app/interactions/interaction-event.ts b/src/app/interactions/interaction-event.ts index c849d94d..fcb797cc 100644 --- a/src/app/interactions/interaction-event.ts +++ b/src/app/interactions/interaction-event.ts @@ -82,6 +82,7 @@ export class InteractionEvent { process(delta: number): boolean { // If we've destroyed between ticks cancel and return false if (!this.interactionTrigger || !this.interactionTrigger.enabled) return false; + if (!this.unit.isAlive() || !this.unit.show) return false; const v1 = vectorFromUnit(this.unit.handle); const v2 = vectorFromUnit(this.targetUnit.handle); diff --git a/src/app/space/ships/perseus-type.ts b/src/app/space/ships/perseus-type.ts index b73ae705..398a629c 100644 --- a/src/app/space/ships/perseus-type.ts +++ b/src/app/space/ships/perseus-type.ts @@ -67,6 +67,7 @@ export class PerseusShip extends ShipWithFuel { onEnterShip(who: Unit) { const newOwner = who.owner; this.unit.owner = who.owner; + this.shipFuel -= 30; if (who && who.owner) { this.unit.color = playerColors[ who.owner.id ].playerColor; diff --git a/src/app/space/ships/ship-type.ts b/src/app/space/ships/ship-type.ts index fcc9268a..4d28803c 100644 --- a/src/app/space/ships/ship-type.ts +++ b/src/app/space/ships/ship-type.ts @@ -126,7 +126,7 @@ export abstract class ShipWithFuel extends Ship { if (this.state === ShipState.inSpace) { const momentumLen = this.engine.getMomentum().getLength(); - const fuelCost = (0.1 + momentumLen / 8000); + const fuelCost = (0.1 + momentumLen / 3000); this.shipFuel -= fuelCost * this.fuelUsagePercent; // Also update some sfx when we update fuel diff --git a/src/app/space/space-module.ts b/src/app/space/space-module.ts index 721d9dc2..6e559f45 100644 --- a/src/app/space/space-module.ts +++ b/src/app/space/space-module.ts @@ -29,7 +29,7 @@ import { Hooks } from "lib/Hooks"; import { SpaceMiningEntity } from "./space-mining-entity"; import { AskellonEntity } from "app/station/askellon-entity"; import { Quick } from "lib/Quick"; -import { getRectsGivenNamespace } from "lib/utils"; +import { getRectsGivenNamespace, getZFromXY } from "lib/utils"; import { PlayerState } from "app/force/player-type"; // For ship bay instansiation @@ -118,6 +118,20 @@ export class SpaceEntity extends Entity { .addListener( new EventListener(EVENT_TYPE.SHIP_ENTERS_SPACE, (self, data) => this.onShipEntersSpace(data.source, data.data.ship)) ) .addListener( new EventListener(EVENT_TYPE.SHIP_LEAVES_SPACE, (self, data) => this.onShipLeavesSpace(data.source, data.data.goal)) ); + // Listen to solar event, on hit remove all ship mana + EventEntity.listen(EVENT_TYPE.WORLD_EVENT_SOLAR, () => { + this.ships.forEach(ship => { + if (ship && ship.unit && ship.unit.isAlive()) { + // Deal damage to ship based on it's current fuel + ship.unit.damageTarget(ship.unit.handle, ship.shipFuel * 3, false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_LIGHTNING, WEAPON_TYPE_WHOKNOWS); + ship.shipFuel = 0; + const sfx = AddSpecialEffect("Abilities\\Weapons\\Bolt\\BoltImpact.mdl", ship.unit.x, ship.unit.y); + BlzSetSpecialEffectZ(sfx, getZFromXY(ship.unit.x, ship.unit.y)+200); + DestroyEffect(sfx); + } + }); + }); + try { this.initShips(); } diff --git a/src/app/station/askellon-entity.ts b/src/app/station/askellon-entity.ts index 619b9cb5..482c4fd1 100644 --- a/src/app/station/askellon-entity.ts +++ b/src/app/station/askellon-entity.ts @@ -3,7 +3,7 @@ import { Hooks } from "lib/Hooks"; import { Log } from "lib/serilog/serilog"; import { EventEntity } from "app/events/event-entity"; import { EVENT_TYPE } from "app/events/event-enum"; -import { ZONE_TYPE } from "app/world/zone-id"; +import { ZONE_TYPE, ZONE_TYPE_TO_ZONE_NAME } from "app/world/zone-id"; import { Timers } from "app/timer-type"; import { Quick } from "lib/Quick"; import { SoundRef } from "app/types/sound-ref"; @@ -123,13 +123,10 @@ export class AskellonEntity extends Entity { : 1)); Quick.GetRandomFromArray(this.poweredFloors, howManyFloors).forEach(floor => { - let howLong = GetRandomReal(0+20*(severity/3), 10+60*(severity/3)); - - Timers.addTimedAction(GetRandomReal(3,10), () => { - PlayNewSound("Sounds\\ComplexBeep.mp3", 127); - DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS, 10, `[${COL_ATTATCH}DANGER|r] POWER SURGE DETECTED IN ${ZONE_TYPE[floor]}`); - EventEntity.send(EVENT_TYPE.STATION_POWER_OUT, { source: null, data: { zone: floor, duration: howLong }}) - }); + let howLong = GetRandomReal(0+20*(severity/3), 10+60*(severity/3)); + PlayNewSound("Sounds\\ComplexBeep.mp3", 127); + DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS, 10, `[${COL_ATTATCH}DANGER|r] Power Surge Detected :: ${ZONE_TYPE_TO_ZONE_NAME.get(floor)}`); + EventEntity.send(EVENT_TYPE.STATION_POWER_OUT, { source: null, data: { zone: floor, duration: howLong }}) }); } catch(e) { diff --git a/src/app/vision/vision-factory.ts b/src/app/vision/vision-factory.ts index a03f5f4f..b1a8c9c0 100644 --- a/src/app/vision/vision-factory.ts +++ b/src/app/vision/vision-factory.ts @@ -72,7 +72,7 @@ export class VisionFactory { * Calcualtes the new vision state of a player * @param forWho */ - private calculateVision(forWho: MapPlayer) { + public calculateVision(forWho: MapPlayer) { const visionType = this.playerVisionType.get(forWho); const oldState = this.playerVisionState.get(forWho); diff --git a/src/app/weapons/guns/laser-rifle.ts b/src/app/weapons/guns/laser-rifle.ts index 4a0cd9dc..d363dee4 100644 --- a/src/app/weapons/guns/laser-rifle.ts +++ b/src/app/weapons/guns/laser-rifle.ts @@ -143,7 +143,7 @@ export class LaserRifle extends GunItem { public getDamage(unit: Unit): number { - return MathRound( 25 * Pow(1.5, this.intensity) * this.getDamageBonusMult()); + return MathRound( 30 * Pow(1.5, this.intensity) * this.getDamageBonusMult()); } diff --git a/src/app/weapons/guns/security/default-security-gun.ts b/src/app/weapons/guns/security/default-security-gun.ts index 33594238..de50bb2b 100644 --- a/src/app/weapons/guns/security/default-security-gun.ts +++ b/src/app/weapons/guns/security/default-security-gun.ts @@ -18,7 +18,10 @@ import { ProjectileTargetStatic } from "app/weapons/projectile/projectile-target import { SoundRef } from "app/types/sound-ref"; export class DefaultSecurityGun extends Gun { - shootRef = new SoundRef("Sounds\\Station\\turretShoot.mp3", false, true); + private shootSound = new SoundRef("Sounds\\turretShoot.mp3", false, false); + private shootSound2 = new SoundRef("Sounds\\turretShoot.mp3", false, false); + private soundTracker = 0; + constructor(equippedTo: ArmableUnit) { super(equippedTo); // Define spread and bullet distance @@ -38,8 +41,16 @@ export class DefaultSecurityGun extends Gun { super.onShoot(unit, targetLocation); try { - const sound = PlayNewSoundOnUnit("Sounds\\turretShoot.mp3", unit, 20); - let casterLoc = new Vector3(unit.x, unit.y, getZFromXY(unit.x, unit.y) + 30).projectTowards2D(unit.facing, 20); + if (this.soundTracker === 0) { + this.shootSound.playSoundOnUnit(unit.handle, 30, false); + this.soundTracker = 1; + } + else { + this.shootSound2.playSoundOnUnit(unit.handle, 30, false); + this.soundTracker = 0; + } + let casterLoc = new Vector3(unit.x, unit.y, getZFromXY(unit.x, unit.y) + 30); + casterLoc = casterLoc.projectTowards2D(casterLoc.angle2Dto(targetLocation), 20); let targetDistance = new Vector2(targetLocation.x - casterLoc.x, targetLocation.y - casterLoc.y).normalise().multiplyN(this.bulletDistance); let newTargetLocation = new Vector3(targetDistance.x + casterLoc.x, targetDistance.y + casterLoc.y, targetLocation.z); @@ -48,7 +59,7 @@ export class DefaultSecurityGun extends Gun { for (let i = 0; i < 4; i++) { Timers.addTimedAction(delay, () => { if (this.equippedTo && this.equippedTo.unit && this.equippedTo.unit.isAlive()) { - this.fireProjectile(unit, newTargetLocation); + this.fireProjectile(unit, casterLoc, newTargetLocation); } }); delay = delay + 0.15; @@ -59,13 +70,11 @@ export class DefaultSecurityGun extends Gun { } }; - private fireProjectile(unit: Unit, targetLocation: Vector3) { - let casterLoc = new Vector3(unit.x, unit.y, getZFromXY(unit.x, unit.y) + 30); - casterLoc = casterLoc.projectTowards2D(casterLoc.angle2Dto(targetLocation)+GetRandomReal(-10,10), 40); + private fireProjectile(unit: Unit, casterLoc: Vector3, targetLocation: Vector3) { let strayTarget = this.getStrayLocation(targetLocation, unit) let deltaTarget = strayTarget.subtract(casterLoc); - new Effect("war3mapImported\\MuzzleFlash.mdx", unit, "hand, right").destroy(); + DestroyEffect(AddSpecialEffectTarget("war3mapImported\\MuzzleFlash.mdx", unit.handle, "hand, right")); const sfxOrientation = getYawPitchRollFromVector(deltaTarget.normalise()); diff --git a/src/app/weapons/weapon-entity.ts b/src/app/weapons/weapon-entity.ts index 9845251b..7fadcf41 100644 --- a/src/app/weapons/weapon-entity.ts +++ b/src/app/weapons/weapon-entity.ts @@ -34,6 +34,7 @@ import { UNIT_ID_EGG_AUTO_HATCH, UNIT_ID_EGG_AUTO_HATCH_LARGE } from "resources/ import { Flamethrower } from "./guns/flamethrower"; import { Vector2 } from "app/types/vector2"; import { InputManager } from "lib/TreeLib/InputManager/InputManager"; +import { FilterIsAlive } from "resources/filters"; export class WeaponEntity extends Entity { private static instance: WeaponEntity; @@ -314,6 +315,7 @@ export class WeaponEntity extends Entity { weaponAttackTrigger = new Trigger(); // For smart casting weaponFacingTrigger = new Trigger(); + weaponFacingHostileGroup = CreateGroup(); initaliseWeaponShooting() { this.weaponFacingTrigger.registerAnyUnitEvent(EVENT_PLAYER_UNIT_SPELL_CAST); this.weaponFacingTrigger.addCondition(() => { @@ -325,7 +327,21 @@ export class WeaponEntity extends Entity { }); this.weaponFacingTrigger.addAction(() => { const u = Unit.fromHandle(GetTriggerUnit()); - const a = new Vector2(u.x, u.y).angleTo(InputManager.getLastMouseCoordinate(u.owner.handle)); + const c = InputManager.getLastMouseCoordinate(u.owner.handle); + const a = new Vector2(u.x, u.y).angleTo(c); + + // Pick nearby units and make them hostile? + GroupEnumUnitsInRange( + this.weaponFacingHostileGroup, + c.x, + c.y, + 250, + FilterIsAlive(u.owner) + ); + + ForGroup(this.weaponFacingHostileGroup, () => { + ForceEntity.getInstance().aggressionBetweenTwoPlayers(u.owner, Unit.fromHandle(GetEnumUnit()).owner); + }) u.facing = a; }); diff --git a/src/app/world/world-entity.ts b/src/app/world/world-entity.ts index d3b24728..1ad7b2e8 100644 --- a/src/app/world/world-entity.ts +++ b/src/app/world/world-entity.ts @@ -1,7 +1,7 @@ import { Zone } from "./zone-types/zone-type"; import { TheAskellon } from "./the-askellon"; import { ZONE_TYPE, STRING_TO_ZONE_TYPE } from "./zone-id"; -import { Trigger, Unit, MapPlayer } from "w3ts"; +import { Trigger, Unit, MapPlayer, Timer } from "w3ts"; import { Log } from "../../lib/serilog/serilog"; import { AlienForce } from "app/force/forces/alien-force"; import { SpaceZone } from "./zones/space"; @@ -14,6 +14,14 @@ import { ALIEN_FORCE_NAME } from "app/force/forces/force-names"; import { Hooks } from "lib/Hooks"; import { Entity } from "app/entity-type"; import { PlanetZone } from "./zones/planet"; +import { AskellonEntity } from "app/station/askellon-entity"; +import { MessageAllPlayers } from "lib/utils"; +import { COL_ATTATCH, COL_BAD } from "resources/colours"; +import { Timers } from "app/timer-type"; +import { PlayNewSound } from "lib/translators"; +import { VisionFactory } from "app/vision/vision-factory"; +import { Players } from "w3ts/globals/index"; +import { SoundRef } from "app/types/sound-ref"; export class WorldEntity extends Entity { private static instance: WorldEntity; @@ -63,6 +71,11 @@ export class WorldEntity extends Entity { // Log.Information("World entity caught unit remove") this.removeUnit(data.source); })); + + EventEntity.listen(EVENT_TYPE.WORLD_EVENT_SOLAR, () => { + Timers.addSlowTimedAction(GetRandomInt(260, 700), () => this.beginASolarFlare()); + }); + Timers.addSlowTimedAction(GetRandomInt(300, 800), () => this.beginASolarFlare()); } step() { @@ -246,4 +259,87 @@ export class WorldEntity extends Entity { this.askellon.allFloors.forEach(z => result.push(z)); return result; } + + + private warpStormSound = new SoundRef("Sounds\\WarpStorm.mp3", true, true); + /** + * Begins a solar flare event + */ + public beginASolarFlare() { + + this.warpStormSound.setVolume(10); + this.warpStormSound.playSound(); + + Timers.addTimedAction(5, () => this.warpStormSound.setVolume(20)); + Timers.addTimedAction(10, () => this.warpStormSound.setVolume(30)); + Timers.addTimedAction(15, () => this.warpStormSound.setVolume(40)); + Timers.addTimedAction(20, () => this.warpStormSound.setVolume(60)); + Timers.addTimedAction(22, () => this.warpStormSound.setVolume(70)); + Timers.addTimedAction(24, () => this.warpStormSound.setVolume(80)); + Timers.addTimedAction(26, () => this.warpStormSound.setVolume(90)); + Timers.addTimedAction(27, () => this.warpStormSound.setVolume(100)); + Timers.addTimedAction(28, () => this.warpStormSound.setVolume(127)); + + + Timers.addTimedAction(30, () => { + const t = new Timer(); + + const dialog = CreateTimerDialog(t.handle); + t.start(30, false, () => { + t.destroy(); + TimerDialogDisplay(dialog, false); + DestroyTimerDialog(dialog) + + this.warpStormSound.stopSound(); + PlayNewSound("Sounds\\SunFlare.wav", 127); + + Timers.addTimedAction(1, () => { + PlayNewSound("Sounds\\ShipDamage\\GroanLong2.mp3", 127); + CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 2, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 90.00, 0); + + EnableUserUI(true); + }) + + Timers.addTimedAction(2, () => { + SetDayNightModels("DeepFried\\dnclordaeronunit.mdx", "DeepFried\\dnclordaeronunit.mdx"); + CameraSetSourceNoise(5, 50); + }); + Timers.addTimedAction(3, () => { + CinematicFadeBJ(bj_CINEFADETYPE_FADEOUTIN, 4, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0.00, 0.00, 0.00, 0); + + EnableUserUI(true); + CameraSetSourceNoise(15, 50); + }); + Timers.addTimedAction(5, () => { + Players.forEach(p => { + const c = PlayerStateFactory.getCrewmember(p); + if (c) { + VisionFactory.getInstance().calculateVision(p); + } + }) + PlayNewSound("Sounds\\ExplosionDistant.mp3", 127); + EventEntity.send(EVENT_TYPE.WORLD_EVENT_SOLAR, { source: undefined }); + AskellonEntity.causePowerSurge(GetRandomReal(0, 100) > 70 ? 3 : 2); + CameraSetSourceNoise(20, 50); + }); + Timers.addTimedAction(11, () => { + CameraSetSourceNoise(10, 50); + EnableUserUI(true); + }); + Timers.addTimedAction(12, () => { + CameraSetSourceNoise(5, 50); + EnableUserUI(true); + }); + Timers.addTimedAction(15, () => { + CameraSetSourceNoise(0, 0); + EnableUserUI(true); + }); + }) + TimerDialogSetTitle(dialog, "Solar Event"); + TimerDialogDisplay(dialog, true); + + AskellonEntity.getInstance().reactorWarningSound.playSound(); + MessageAllPlayers(`[${COL_ATTATCH}DANGER|r] SOLAR EVENT DETECTED, RETURN TO THE ASKELLON.`); + }); + } } \ No newline at end of file diff --git a/src/resources/ability-ids.ts b/src/resources/ability-ids.ts index c6e25817..5c11fab6 100644 --- a/src/resources/ability-ids.ts +++ b/src/resources/ability-ids.ts @@ -194,4 +194,6 @@ export const ABIL_CULTIST_GIFT_MADNESS = FourCC('A02Q'); export const ABIL_MOVESPEED_BONUS_30 = FourCC('A02Y'); export const ABIL_LIFE_REGEN_BONUS_25 = FourCC('A02Y'); -export const ABIL_MAX_LIFE_BONUS_200 = FourCC('A02X'); \ No newline at end of file +export const ABIL_MAX_LIFE_BONUS_200 = FourCC('A02X'); + +export const ABIL_ITEM_REMOTE_BOMB = FourCC('A02Z'); \ No newline at end of file diff --git a/src/resources/filters.ts b/src/resources/filters.ts index 03378b54..e1cd6c30 100644 --- a/src/resources/filters.ts +++ b/src/resources/filters.ts @@ -9,4 +9,9 @@ export const FilterIsEnemyAndAlive = (enemyOfWho: MapPlayer) => Filter(() => { export const FilterIsAlive = (whichPlayer: MapPlayer) => Filter(() => { const fUnit = GetFilterUnit(); return !BlzIsUnitInvulnerable(fUnit) && GetOwningPlayer(fUnit) !== whichPlayer.handle; +}); + +export const FilterAnyUnit = () => Filter(() => { + const fUnit = GetFilterUnit(); + return !BlzIsUnitInvulnerable(fUnit); }); \ No newline at end of file diff --git a/src/resources/item-ids.ts b/src/resources/item-ids.ts index 2e6fc148..c63277da 100644 --- a/src/resources/item-ids.ts +++ b/src/resources/item-ids.ts @@ -21,4 +21,5 @@ export const ITEM_HUMAN_CORPSE = FourCC('I00N'); export const ITEM_CEREMONIAL_DAGGER = FourCC('I00O'); export const ITEM_BROKEN_NEOKATANA = FourCC('I00Q'); export const ITEM_CAPTAINS_CIGAR = FourCC('I00R'); -export const ITEM_COMEBACK_DRUG = FourCC('I00S'); \ No newline at end of file +export const ITEM_COMEBACK_DRUG = FourCC('I00S'); +export const ITEM_REMOTE_BOMB = FourCC('I00T'); \ No newline at end of file diff --git a/src/resources/unit-ids.ts b/src/resources/unit-ids.ts index b35852cd..8834221e 100644 --- a/src/resources/unit-ids.ts +++ b/src/resources/unit-ids.ts @@ -72,4 +72,6 @@ export const UNIT_ID_CULTIST_ALTAR = FourCC('n00T'); export const UNIT_ID_CULTIST_ALTAR_TERMINAL = FourCC('n00W'); export const UNIT_ID_LAVA_PLANET = FourCC(`n00U`); export const UNIT_ID_EGG_AUTO_HATCH = FourCC('u007'); -export const UNIT_ID_EGG_AUTO_HATCH_LARGE = FourCC('u008'); \ No newline at end of file +export const UNIT_ID_EGG_AUTO_HATCH_LARGE = FourCC('u008'); + +export const UNIT_ID_REMOTE_BOMB = FourCC('h00D'); \ No newline at end of file