Skip to content

Commit f0708ae

Browse files
authored
Highlight multi-patch support (#69)
1 parent c1eaf37 commit f0708ae

9 files changed

Lines changed: 73 additions & 17 deletions

File tree

_doc/features.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,12 @@ navigation:
1515
- /features/agents
1616
---
1717

18-
WurstScript is more than a programming language. It is a complete, integrated development environment for Warcraft III map making, from writing code to viewing assets to running your map, all from VS Code.
18+
WurstScript is more than a programming language. It is a patch-aware Warcraft III development toolchain: Grill selects the target game patch and fetches the matching core Jass definitions and standard library, while the compiler, CLI, and VS Code tooling use that same target consistently.
19+
20+
This lets one ecosystem support classic Warcraft III installations and modern Reforged clients at the same time. Older MPQ-era patches can receive Jass output and layered MPQ game data, classic CASC-era patches can receive Jass output from CASC-backed clients, and Reforged projects can use Lua or Jass with CASC game data. The editor, client detection, map runner, asset browser, and model viewer all fit into that same workflow.
21+
22+
| Target | Typical output | Installed game data |
23+
| --- | --- | --- |
24+
| Older MPQ-era classic patches | Jass | Layered MPQ archives |
25+
| Classic CASC-era patches (1.30/1.31) | Jass | CASC storage |
26+
| Reforged | Lua or Jass | CASC storage |

_doc/features/backends.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Set `compilationTarget` in your `wurst.build` file:
2222
compilationTarget: lua
2323
```
2424
25-
Jass is the default and requires no configuration. Lua targets Reforged and is required if you want to run on Battle.net with modern clients.
25+
Jass is the default and works well for classic and pre-Reforged patches. Lua targets Reforged and is required if you want to run on Battle.net with modern clients. The patch selected for the project determines which core Jass definitions and standard library revision Grill provides alongside the compiler.
2626
2727
## Why They Differ
2828

_doc/features/vscode.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,20 @@ The extension can render common Warcraft III asset formats directly in the edito
4444

4545
Open any of these files from the VS Code explorer and they are displayed inline.
4646

47+
## Installed Game Data
48+
49+
Wurst supports both MPQ-era classic installations and CASC-backed clients such as Warcraft III 1.30/1.31 and Reforged.
50+
51+
The extension is the editor-facing part of Wurst’s broader patch-aware workflow. It detects the available Warcraft III client when possible and uses the selected game data for previews and map tooling, whether the project targets classic Jass or modern Reforged Lua.
52+
53+
Wurst can also read assets directly from the Warcraft III installation — not only from files inside your project. This works with both Reforged CASC storage and classic Warcraft III MPQ installations.
54+
55+
For MPQ-era classic installations, Wurst follows the game’s layered archive model, resolving files through the base game, expansion, locale, and patch archives so patched assets override their older versions:
56+
57+
`war3.mpq``war3local.mpq``war3x.mpq``war3xlocal.mpq``war3patch.mpq`
58+
59+
That means the asset browser, object metadata, icons, model viewer, textures, and model thumbnails can use the same game data that an older Warcraft III installation uses. Set `wurst.wc3path` to your Warcraft III installation directory if it is not detected automatically.
60+
4761
## MPQ Inspector
4862

4963
`.w3x` and `.w3m` map archives can be browsed directly in VS Code:

_doc/start.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ icon:
88
color: green
99
---
1010

11-
WurstScript is a programming language and modding toolkit for Warcraft 3 maps.
11+
WurstScript is a patch-aware programming language and modding toolkit for Warcraft 3 maps.
1212
This guide covers the current streamlined setup with VS Code.
1313

1414
## Prerequisites
@@ -49,6 +49,18 @@ grill install
4949

5050
For this flow, you usually do not need to run `grill install` manually right away.
5151

52+
## Target a Warcraft III Patch
53+
54+
Wurst supports multiple Warcraft III generations from one toolchain. Grill can select the patch your project targets and downloads the matching core Jass definitions and standard library version, keeping the compiler and dependencies aligned with the client you actually run.
55+
56+
This is useful for both ends of Warcraft III’s history:
57+
58+
- **Older MPQ-era classic patches** use Jass output and layered MPQ game data.
59+
- **Classic CASC-era patches such as 1.30/1.31** use Jass output and CASC game data.
60+
- **Reforged** projects can use Lua or Jass output and modern CASC game data.
61+
62+
The VS Code extension detects the installed client when it can, and the asset and map tooling follows the same game-data selection. You can therefore work against an older MPQ installation without losing the modern Reforged workflow.
63+
5264
## Running Your Map
5365

5466
Use the play button in VS Code to run your project quickly.

_includes/branding.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="branding">
44
<h1 class="logo">
55
<a href="{{ '/' | relative_url }}">
6-
{% if include.home %} <img src="/assets/images/wurst_icon64.png" style="margin:0px 0px 15px 00px"><br>{% else %}{% include icon.html icon=site.branding.icon %}{% endif %}
6+
{% if include.home %} <img src="/assets/images/wurst_icon64.png" style="margin:0px 0px 15px 00px" alt="WurstScript"> <br>{% else %}{% include icon.html icon=site.branding.icon %}{% endif %}
77
<span class="text-highlight">{{ site.branding.highlight }}</span><span class="text-bold">{{ site.branding.bold }}<br></span>
88
</a>
99
</h1>

_includes/header.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<header class="branding">
2-
<img src="/assets/images/wurst_icon64.png" class="logo">
2+
<img src="/assets/images/wurst_icon64.png" class="logo" alt="WurstScript">
33
<a class="branding-text" href="{{ '/' | relative_url }}">
44
<span class="text-highlight">{{ site.branding.highlight }}</span><span class="text-bold">{{ site.branding.bold }}<br></span>
55
</a>
6-
<nav>
6+
<nav aria-label="Primary navigation">
77
<a class="nav-link" href="{{ '/start.html' | relative_url }}">Installation</a>
88
<a class="nav-link" href="{{ '/documentation.html' | relative_url }}">Documentation</a>
99
<a class="nav-link" href="{{ '/community.html' | relative_url }}">Community</a>

_layouts/home.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ <h1 class="name">WurstScript</h1>
2626
<a class="btn btn-primary" href="/start">Get Started</a>
2727
</div>
2828
<div class="img-container">
29-
<img src="/assets/images/wurst-scroll.png">
29+
<img src="/assets/images/wurst-scroll.png" alt="WurstScript code scroll illustration">
3030
<!-- Place this tag where you want the button to render. -->
3131
<a class="github-button" href="https://github.com/wurstscript/wurstscript" data-color-scheme="no-preference: dark; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star wurstscript/wurstscript on GitHub">Star</a>
3232
</div>
@@ -38,7 +38,7 @@ <h2 class="title">Latest Updates</h2>
3838
{% assign posts = site.news | sort: 'date' | reverse %}
3939
{% for post in posts limit:3 %}
4040
<a class="btn card" href="{{ post.url }}">
41-
<div class="card-image"><img src="{{ post.image }}"></div>
41+
<div class="card-image"><img src="{{ post.image }}" alt=""></div>
4242
<div class="card-content date">
4343
<p class="date">{{ post.date | date: '%B %d, %Y' }}</p>
4444
<h3>{{ post.title }}</h3>
@@ -97,24 +97,24 @@ <h3>VS Code knows WC3</h3>
9797
<h2 class="title">Join the Community</h2>
9898

9999
<div class="cards">
100-
<a class="btn card" href="https://github.com/wurstscript" target="_blank">
101-
<div class="card-image"><img src="/assets/images/github-mark-white.png"></div>
100+
<a class="btn card" href="https://github.com/wurstscript" target="_blank" rel="noopener noreferrer">
101+
<div class="card-image"><img src="/assets/images/github-mark-white.png" alt=""></div>
102102
<div class="card-content">
103103
<h3>GitHub</h3>
104104
<p>Report bugs, suggest features, contribute code.</p>
105105
</div>
106106
</a>
107107

108-
<a class="btn card" href="https://discord.gg/mSHZpWcadz" target="_blank">
109-
<div class="card-image"><img src="/assets/images/icon_clyde_blurple_RGB.png"></div>
108+
<a class="btn card" href="https://discord.gg/mSHZpWcadz" target="_blank" rel="noopener noreferrer">
109+
<div class="card-image"><img src="/assets/images/icon_clyde_blurple_RGB.png" alt=""></div>
110110
<div class="card-content">
111111
<h3>Discord</h3>
112112
<p>General chat for WurstScript and Warcraft mapping. Bridged to matrix.</p>
113113
</div>
114114
</a>
115115

116-
<a class="btn card" href="https://matrix.to/#/!qppIznMkBZgRaYJNYA:matrix.org?via=matrix.org" target="_blank">
117-
<div class="card-image"><img src="/assets/images/Matrix_icon.png"></div>
116+
<a class="btn card" href="https://matrix.to/#/!qppIznMkBZgRaYJNYA:matrix.org?via=matrix.org" target="_blank" rel="noopener noreferrer">
117+
<div class="card-image"><img src="/assets/images/Matrix_icon.png" alt=""></div>
118118
<div class="card-content">
119119
<h3>Matrix</h3>
120120
<p>General chat for WurstScript and Warcraft mapping. Bridged to discord.</p>

_sass/base.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ select {
397397
}
398398
}
399399

400-
nav {
400+
.branding nav {
401401
display: flex;
402402
gap: 12px;
403403
margin-left: 24px;

_sass/landing.scss

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,12 +247,17 @@
247247
}
248248

249249
.card {
250+
display: flex;
251+
flex-direction: column;
250252
padding: 0;
251253
width: clamp(250px, 31%, 300px);
252254
min-height: 220px;
253255
border-radius: 10px;
254256
border: 1px solid var(--divider-dark);
255257
background-color: var(--smoky-white);
258+
color: var(--text-color);
259+
text-align: left;
260+
text-decoration: none;
256261
box-shadow: var(--shadow-soft);
257262
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
258263

@@ -261,6 +266,12 @@
261266
box-shadow: var(--shadow-strong);
262267
transform: translateY(-2px);
263268
}
269+
270+
&:focus-visible {
271+
outline: 3px solid var(--color-primary-light);
272+
outline-offset: 3px;
273+
text-decoration: none;
274+
}
264275
}
265276

266277
.card-image {
@@ -280,6 +291,7 @@
280291
}
281292

282293
.card-content {
294+
flex: 1;
283295
background-color: var(--smoky-white);
284296
min-height: 0;
285297
width: 100%;
@@ -303,6 +315,7 @@
303315
}
304316

305317
p {
318+
margin-bottom: 0;
306319
color: var(--text-color-secondary);
307320
font-size: 14px;
308321
}
@@ -365,7 +378,7 @@
365378
position: relative;
366379
width: 100%;
367380
border: 1px solid var(--divider);
368-
@include border-radius(4px);
381+
@include border-radius(10px);
369382

370383
.link {
371384
position: absolute;
@@ -375,6 +388,12 @@
375388
left: 0;
376389
z-index: 1;
377390
background-image: url("../images/empty.png"); /* for IE8 */
391+
392+
&:focus-visible {
393+
outline: 3px solid var(--color-primary-light);
394+
outline-offset: -3px;
395+
border-radius: 10px;
396+
}
378397
}
379398

380399
transition: 0.2s ease;
@@ -494,7 +513,10 @@
494513

495514
.greeting {
496515
flex-direction: column;
497-
516+
517+
> div:first-child {
518+
text-align: center;
519+
}
498520

499521
.name {
500522
font-size: 42px;

0 commit comments

Comments
 (0)