From 98478ebbd24091422115bc9754d0d3f89dc3a90d Mon Sep 17 00:00:00 2001
From: szapp
Date: Sun, 5 May 2024 16:22:39 +0200
Subject: [PATCH] Update files to align with new patch-template
---
.gitattributes | 52 ++
.github/FUNDING.yml | 1 +
.github/dependabot.yml | 8 +
.github/release.yml | 8 +
.github/workflows/build.yml | 54 ++
.github/workflows/scripts.yml | 27 +
.github/workflows/validation.yml | 29 +
.validator.yml | 8 +
LICENSE | 268 +++++-
Ninja/Stamina/Content/localization.d | 2 +-
.../System/MENU_OPT_CONTROLS_STAMINA.D | 12 +-
README.md | 159 +++-
Stamina.vm | 51 +-
init.bat | 777 ------------------
tool.cfg | 3 +
15 files changed, 618 insertions(+), 841 deletions(-)
create mode 100644 .gitattributes
create mode 100644 .github/FUNDING.yml
create mode 100644 .github/dependabot.yml
create mode 100644 .github/release.yml
create mode 100644 .github/workflows/build.yml
create mode 100644 .github/workflows/scripts.yml
create mode 100644 .github/workflows/validation.yml
create mode 100644 .validator.yml
delete mode 100644 init.bat
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..614bd63
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,52 @@
+# Checkout line endings based on OS (do not force crlf where not necessary)
+* text=auto
+
+# Checkout Windows-style line endings and ensure correct encoding
+# Encoding is not localization but fixed zSTRING::Upper code page handling!
+# See https://forum.worldofplayers.de/forum/threads/1537187/page3
+# and https://forum.worldofplayers.de/forum/threads/759496
+*.[dD] text working-tree-encoding=CP1252 eol=crlf
+*.[cC][sS][lL] text working-tree-encoding=CP1252 linguist-detectable=false
+
+# Exclude (semi-) binary resources from linguist stats
+
+# Output units
+*.[bB][iI][nN] binary linguist-detectable=false
+
+# Animation files
+*.[aA][sS][cC] text linguist-detectable=false
+*.[mM][dD][sS] text linguist-detectable=false
+*.[mM][aA][nN] binary linguist-detectable=false
+*.[mM][dD][hH] binary linguist-detectable=false
+*.[mM][dD][lL] binary linguist-detectable=false
+*.[mM][dD][mM] binary linguist-detectable=false
+*.[mM][mM][bB] binary linguist-detectable=false
+*.[mM][sS][bB] binary linguist-detectable=false
+*.[sS][sS][cC] binary linguist-detectable=false
+
+# Graphic files
+*.[tT][gG][aA] binary linguist-detectable=false
+*.[tT][eE][xX] binary linguist-detectable=false
+*.[fF][nN][tT] binary linguist-detectable=false
+
+# Mesh files (ZEN might be ASCII or binary)
+*.3[dD][sS] binary linguist-detectable=false
+*.[mM][rR][mM] binary linguist-detectable=false
+*.[mM][sS][hH] binary linguist-detectable=false
+*.[zZ][eE][nN] text=auto linguist-detectable=false
+
+# Music files
+*.[dD][lL][sS] binary linguist-detectable=false
+*.[sS][tT][yY] binary linguist-detectable=false
+*.[sS][gG][tT] binary linguist-detectable=false
+
+# Sound files
+*.[wW][aA][vV] binary linguist-detectable=false
+*.[oO][gG][gG] binary linguist-detectable=false
+*.[mM][pP]3 binary linguist-detectable=false
+
+# Video files
+*.[bB][iI][kK] binary linguist-detectable=false
+
+# VDF in case committed (mixed binary and text)
+*.[vV][dD][fF] binary linguist-detectable=false
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..aa3d62b
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+ko_fi: szapp
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..d3bfdc1
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+# This file is keeps the GitHub Actions up-to-date
+# For more information, visit https://docs.github.com/en/code-security/dependabot
+version: 2
+updates:
+- package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000..58fb532
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,8 @@
+# This file excludes bot authors from the automatically generated release notes
+# For more information, visit https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes
+
+changelog:
+ exclude:
+ authors:
+ - dependabot
+ - github-actions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..4a028b6
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,54 @@
+name: build
+
+on:
+ push:
+ tags:
+ - "[Vv]?[0-9]+.[0-9]+*"
+ release:
+ types: [published]
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ vdfsbuilder:
+ name: Create VDF
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get patch name from repository name
+ run: |
+ echo "PATCH_NAME=${GITHUB_REPOSITORY#*/}" >> $GITHUB_ENV
+ echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
+
+ - name: Get short SHA
+ if: (!startsWith(github.ref, 'refs/tags/'))
+ run: echo "VERSION=${GITHUB_SHA::7}" >> $GITHUB_ENV
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Build VDF
+ uses: kirides/vdfsbuilder@aaf901f0c98245af54102a1946d8be0e2e17ba36
+ with:
+ in: ${{ env.PATCH_NAME }}.vm
+
+ - name: Create release with assests (if tag pushed)
+ if: startsWith(github.ref, 'refs/tags/') && github.event_name != 'release'
+ run: gh release create ${{ env.VERSION }} --generate-notes "${{ env.PATCH_NAME }}.vdf" || exit 0
+ env:
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ - name: Upload release assests (if release published)
+ if: github.event_name == 'release'
+ run: gh release upload ${{ env.VERSION }} "${{ env.PATCH_NAME }}.vdf" || exit 0
+ env:
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ - name: Upload artifacts
+ if: github.event_name == 'workflow_dispatch'
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.PATCH_NAME }}-${{ env.VERSION }}
+ path: "${{ env.PATCH_NAME }}.vdf"
+ overwrite: true
diff --git a/.github/workflows/scripts.yml b/.github/workflows/scripts.yml
new file mode 100644
index 0000000..53be788
--- /dev/null
+++ b/.github/workflows/scripts.yml
@@ -0,0 +1,27 @@
+name: scripts
+
+# Trigger workflow on push events with changes in SRC or D files
+on:
+ push:
+ paths:
+ - "Ninja/**/*.src"
+ - "Ninja/**/*.d"
+
+# These permissions are necessary for creating the check runs
+permissions:
+ checks: write
+ contents: read
+
+# The checkout action needs to be run first
+jobs:
+ parsiphae:
+ name: Run Parsiphae
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Check scripts
+ uses: szapp/parsiphae-action@v1
+ with:
+ # Adjust these if changing the directory in the repository
+ # For more information on the configuration, visit https://github.com/szapp/parsiphae-action/#configuration
+ file: Ninja/*/*.src
diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml
new file mode 100644
index 0000000..c7d19e4
--- /dev/null
+++ b/.github/workflows/validation.yml
@@ -0,0 +1,29 @@
+name: validation
+
+# Trigger workflow on push events with changes in SRC or D files
+on:
+ push:
+ paths:
+ - "Ninja/**/*.src"
+ - "Ninja/**/*.d"
+ - "_work/Data/**/*"
+
+# These permissions are necessary for creating the check runs
+permissions:
+ checks: write
+ contents: read
+
+# The checkout action needs to be run first
+jobs:
+ patch-validator:
+ name: Run patch validator
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Check for validity
+ uses: szapp/patch-validator@v1
+ with:
+ # Adjust these if changing the patch name or its root directory in the repository
+ # For more information on the configuration, visit https://github.com/szapp/patch-validator/#configuration
+ patchName:
+ rootPath:
diff --git a/.validator.yml b/.validator.yml
new file mode 100644
index 0000000..2e34e4b
--- /dev/null
+++ b/.validator.yml
@@ -0,0 +1,8 @@
+# This file is required for the patch-validator to work and may contain advanced configuration options
+# For more information, visit https://github.com/szapp/patch-validator/#configuration
+
+prefix:
+ # Re-definitions of the breath scripts: https://forum.worldofplayers.de/forum/threads/1558616
+ - Breath
+ignore-declaration:
+ignore-resource:
diff --git a/LICENSE b/LICENSE
index dc76a5d..02e85fc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,247 @@
-MIT License
-
-Copyright (c) 2018-2019 mud-freak (@szapp)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+
+ Lizenz für die nichtkommerzielle Nutzung von Modifikationen
+ (GothicMOD Lizenz)
+
+ Version 1.0 - April 2004
+ Copyright (c) 2004 Pluto 13 GmbH (Piranha Bytes)
+
+
+Präambel
+
+Ziel der Lizenzierung eines Werkes unter der GothicMOD Lizenz ist es, die
+Verwendung von Inhalten zum Zwecke der unentgeltlichen und nichtkommerziellen
+Nutzung von Modifikationen zu ermöglichen. Die Lizenz richtet sich an
+diejenigen, die ihre urheberrechtlich geschützten Leistungen zum Zwecke der
+unentgeltlichen und nichtkommerziellen Nutzung von Modifikationen zur Verfügung
+stellen wollen, ohne dass für einzelne Nutzungen oder Änderungen gesondert
+Rechte eingeholt werden müssen.
+
+Durch die GothicMOD Lizenz werden dem Lizenznehmer die Nutzungsrechte für alle
+bekannten Nutzungsarten eingeräumt und auch die Bearbeitung des Werkes in jeder
+beliebigen Form gestattet. Die ideellen Interessen der Urheber am Werk werden
+von der Lizenz dabei beachtet, denn es ist eines der Ziele der Lizenz, die
+kreativen Leistungen der Urheber und anderen Leistungsschutzberechtigten in
+angemessener Weise anzuerkennen und ihre geistigen Belange zu schützen. Der
+Urheber soll mit seinem Werk in Verbindung gebracht werden, indem sein Name
+genannt wird oder - für den Fall, dass das Werk bearbeitet wurde - ein
+angemessener Hinweis auf ihn erfolgt.
+
+Die GothicMOD Lizenz schützt die Lizenzgeber davor, dass Lizenznehmer die
+Nutzung des Werkes - auch in bearbeiteter Form - nachträglich beschränken
+können. Dazu dient der "Copyleft"-Effekt, der gewährleistet, dass ein Werk,
+welches dieser Lizenz unterstellt wurde, sowie alle darauf beruhenden
+Bearbeitungen nur gemäß den Bestimmungen dieser Lizenz genutzt werden dürfen.
+
+
+1. Abschluss der Lizenz
+
+(a) Dieser Lizenztext stellt ein Angebot auf Abschluss eines Lizenzvertrages
+ unter den nachfolgenden Bedingungen dar. Das Angebot richtet sich an
+ jedermann. Der Lizenzvertrag kommt durch die Ausübung der in Ziffer 2 und 3
+ genannten Rechte zustande, insbesondere durch die Vervielfältigung oder
+ Verbreitung des Werkes. Der Erwerber dieser Rechte wird im Folgenden als
+ Lizenznehmer bezeichnet.
+
+(b) Für eine bloße Benutzung des Werkes muss dieser Lizenzvertrag nicht
+ abgeschlossen werden. Dies gilt auch für Befugnisse zur Nutzung des Werkes,
+ die sich aus einer gesetzlichen Beschränkung des Urheberrechts ergeben,
+ etwa für das Anfertigen einer Sicherungskopie oder für die Weitergabe eines
+ rechtmäßig erworbenen Vervielfältigungsstückes.
+
+2. Nutzungsrechte
+
+(a) Der Lizenznehmer erwirbt mit Abschluss der Lizenz das zeitlich und räumlich
+ unbeschränkte Recht, das unveränderte Werk in unentgeltlicher und
+ nichtkommerzieller Form zu nutzen. Dies beinhaltet das Recht, das Werk in
+ digitaler und analoger Form, online und offline, körperlich und
+ unkörperlich zu verwenden. Die Nutzung zu anderen Zwecken, insbesondere zur
+ entgeltlichen Verwendung oder Weitergabe, wird durch diese Lizenz nicht
+ gestattet. Die Nutzungserlaubnis erfolgt lizenzgebührenfrei.
+
+(b) Zur Nutzung wird insbesondere das Recht eingeräumt, das Werk zu
+ vervielfältigen, zu verbreiten, zum Download bereitzuhalten oder in anderer
+ Weise öffentlich zugänglich zu machen, vorzutragen, aufzuführen oder in
+ anderer Form öffentlich wiederzugeben.
+
+(c) Wer das Werk nutzt, darf von anderen Lizenznehmern keine Lizenzgebühren
+ oder sonstige Forderungen für das Werk verlangen.
+
+(d) Die durch diese Lizenz erworbenen Nutzungsrechte dürfen nicht an Dritte
+ weiterübertragen werden. Dritte können die Nutzungsrechte durch den
+ Abschluss dieser Lizenz nur direkt von den Urhebern oder sonstigen Inhabern
+ der ausschließlichen Nutzungsrechte erwerben. Dafür genügt es, dass Dritte
+ das Werk mit dieser Lizenz von einer beliebigen Person erhalten und gemäß
+ Ziffer 1 den Lizenzvertrag abschließen.
+
+(e) Der Lizenzgeber räumt mit Veröffentlichung seines Werks den Firmen Pluto 13
+ GmbH, Essen, Deutschland und JoWood Productions AG, Österreich das
+ gemeinsame und zeitlich und räumlich unbeschränkte Recht ein, die Rechte an
+ seinem Werk unter Nennung seines Namens einzeln oder gemeinsam mit anderen
+ Werken zu nutzen, dies abweichend von Ziffer 2 (a) auch in entgeltlicher
+ Form. Pluto 13 GmbH und JoWood werden für die Veröffentlichung jedoch keine
+ Lizenzgebühren für das Werk verlangen, außer dies wird mit dem jeweiligen
+ Lizenzgeber im Einzelnen vereinbart. Die Einräumung eines zu Ziffer 2 (e)
+ ähnlichen Rechts an andere Parteien als die beiden genannten ist
+ ausgeschlossen.
+
+3. Bearbeitungsrecht
+
+(a) Der Lizenznehmer hat das Recht, das Werk zu bearbeiten und das bearbeitete
+ Werk nach Maßgabe der Ziffer 2 zu nutzen. Dies umfasst die Befugnis das
+ Werk zu kürzen, neue Bestandteile hinzuzufügen, Teile des Werkes
+ auszutauschen oder es auf andere Weise zu verändern. Das Werk darf in einen
+ anderen Kontext gestellt und seine Aussagen inhaltlich verändert werden.
+
+(b) Veränderungen dürfen die geistigen oder persönlichen Interessen der Urheber
+ nicht beeinträchtigen. Hierbei ist zu berücksichtigen, dass durch die
+ Lizenzierung unter dieser Lizenz auch substantielle Veränderungen des
+ Werkes bewusst in Kauf genommen werden, da die Freiheit zur Veränderung des
+ Werkes eines der Hauptziele dieser Lizenz ist.
+
+(c) Bei einer Bearbeitung des Werkes muss sein Titel verändert werden. Der
+ Titel des Werkes darf nicht verändert werden, wenn das Werk ansonsten
+ inhaltlich unverändert genutzt wird.
+
+(d) Es wird empfohlen, für jede Bearbeitung des Werkes einen Urhebervermerk zu
+ den bereits bestehenden Vermerken hinzuzufügen.
+
+4. Freigabe von Bearbeitungen und verwandten Schutzrechten ("Copyleft")
+
+(a) Wer bei der Bearbeitung des Werkes ein Urheberrecht erwirbt, muss dieses
+ Recht den Bestimmungen dieser Lizenz unterstellen, wenn er das bearbeitete
+ Werk verbreitet, zum Download bereithält oder in anderer Weise öffentlich
+ zugänglich macht, vorträgt, aufführt oder in anderer Form öffentlich
+ wiedergibt.
+
+(b) Eine Bearbeitung in diesem Sinne liegt nicht vor, wenn das unveränderte
+ Werk
+ - mit einem anderen selbständigen Werk verbunden wird. Dies gilt auch dann,
+ wenn die verbundenen Werke als ein Gesamtwerk genutzt werden;
+ - in eine Datenbank oder ein sonstiges Sammelwerk eingefügt wird;
+ - eine Datenbank oder ein sonstiges Sammelwerk ist und weitere Elemente
+ eingefügt werden.
+ In diesen Fällen muss ein deutlicher Hinweis darauf erfolgen, welche Teile
+ des Gesamtwerkes oder Sammelwerkes dieser Lizenz unterstehen.
+
+(c) Ein selbständiges Werk ist ein Werk, das alleine in sinnvoller Weise
+ genutzt werden kann oder das von der Verkehrsanschauung als selbständiges
+ Werk angesehen wird.
+
+(d) Wer bei der Nutzung oder Bearbeitung des Werkes ein verwandtes Schutzrecht
+ erwirbt, zum Beispiel ein Datenbankherstellerrecht oder ein Recht an einer
+ Interpretation des Werkes, muss dieses Recht den Bestimmungen dieser Lizenz
+ unterstellen, wenn er das Werk verbreitet, zum Download bereithält oder in
+ anderer Weise öffentlich zugänglich macht, vorträgt, aufführt oder in
+ anderer Form öffentlich wiedergibt und das verwandte Schutzrecht für diese
+ Nutzungen erforderlich ist.
+
+5. Namensnennung
+
+(a) Wird das Werk in unveränderter Form verbreitet, zum Download bereitgehalten
+ oder in anderer Weise öffentlich zugänglich gemacht, vorgetragen,
+ aufgeführt oder in anderer Form öffentlich wiedergegeben, müssen
+ Namensnennungen von Urhebern und Interpreten in der vorgefundenen Art und
+ Weise übernommen werden. Die Namensnennung hat dann in einer angemessenen
+ und für die jeweilige Nutzungsart üblichen Form zu erfolgen.
+
+(b) Wird das Werk in inhaltlich veränderter Form verbreitet, zum Download
+ bereitgehalten oder in anderer Weise öffentlich zugänglich gemacht,
+ vorgetragen, aufgeführt oder in anderer Form öffentlich wiedergegeben, darf
+ keine Namensnennung von Urhebern oder Interpreten ohne deren ausdrückliche
+ Zustimmung erfolgen. Übersetzungen gelten als inhaltliche Veränderung in
+ diesem Sinne. Bei bloß formalen Änderungen muss die Namensnennung
+ entsprechend der Nutzung in unveränderter Form erfolgen.
+ Rechtschreibkorrekturen, Formatierungen oder Digitalisierungen sind im
+ Regelfall als bloß formale Änderungen anzusehen.
+
+(c) Dürfen Urheber oder Interpreten wegen einer inhaltlichen Veränderung des
+ Werkes nicht genannt werden, muss bei jeder Nutzung des Werkes ein Hinweis
+ auf die Urheber oder Interpreten des ursprünglichen Werkes in angemessener
+ Form erfolgen. Ein Hinweis in angemessener Form ist jedenfalls dann
+ gegeben, wenn in die Namensnennung mit dem Zusatz "basierend auf einem Werk
+ von" erfolgt.
+
+(d) Die vorstehenden Ausführungen zur Namensnennung gelten entsprechend für die
+ Inhaber der ausschließlichen Nutzungsrechte, sofern diese im Zusammenhang
+ mit dem Werk genannt werden.
+
+6. Sonstige Verpflichtungen
+
+(a) Bei einer Nutzung in körperlicher Form muss eine Kopie dieser Lizenz
+ beigefügt oder eine Internetadresse angegeben werden, bei der der
+ Lizenztext dauerhaft abrufbar ist. Bei unkörperlicher Wiedergabe des Werkes
+ darf eine Wiedergabe der Lizenz unterbleiben, wenn dies untunlich ist. Dies
+ kann der Fall sein bei Vorträgen und Aufführungen, sowie Fernseh- und
+ Rundfunksendungen.
+
+(b) Hinweise auf die Geltung dieser Lizenz und Urheberrechtsvermerke dürfen
+ nicht verändert oder gelöscht werden. Wo ein solcher Hinweis nach der
+ konkreten Art der Nutzung unzumutbar ist, kann er unterbleiben, so etwa in
+ Rundfunksendungen, die nur terrestrisch, via Kabel oder Satellit übertragen
+ werden oder bei der Nutzung des Werkes in der Fernsehwerbung.
+
+(c) Die Nutzung des Werkes darf nicht von der Erfüllung von Verpflichtungen
+ abhängig gemacht werden, die nicht in dieser Lizenz genannt sind.
+
+(d) Wer im Zusammenhang mit der Nutzung des Werkes sonstige Schutzrechte
+ erwirbt, insbesondere Patente, Marken, Geschmacksmuster und
+ Gebrauchsmuster, darf mittels dieser Schutzrechte keine zusätzlichen
+ Verpflichtungen für die Nutzung des Werkes aufstellen. So ist es etwa nicht
+ zulässig, für eine fortentwickelte Version des Werkes ein Patent anzumelden
+ und für die Nutzung des fortentwickelten Werkes mittels der Patentlizenz
+ Bedingungen aufzustellen, die über die Bedingungen dieser Lizenz
+ hinausgehen.
+
+7. Beendigung der Rechte bei Zuwiderhandlung
+
+(a) Jede Verletzung der Verpflichtungen aus dieser Lizenz beendet automatisch
+ die Nutzungsrechte des Zuwiderhandelnden.
+
+(b) Die Nutzungsrechte Dritter, die das Werk oder Rechte an dem Werk von dem
+ Zuwiderhandelnden erworben haben, bestehen weiter.
+
+8. Haftung und Gewährleistung
+
+(a) Die Haftung der Lizenzgeber ist auf das arglistige Verschweigen von
+ Rechtsmängeln beschränkt.
+
+(b) Dieser Haftungshinweis bezieht sich ausschließlich auf die Einräumung von
+ Rechten durch diese Lizenz. Die Haftung und Gewährleistung für andere
+ Leistungen, etwa die Verbreitung von Werkstücken, richtet sich nach den
+ gesetzlichen Bestimmungen oder individuellen Vereinbarungen.
+
+9. Neue Versionen dieser Lizenz
+
+Die Pluto 13 GmbH kann diese Lizenz aktualisieren, soweit eine Veränderung der
+rechtlichen oder tatsächlichen Umstände dies erfordert. Der Lizenzgeber
+überlässt der Pluto13 GmbH die Bestimmung des Inhalts künftiger Versionen
+dieser Lizenz. Die Bestimmung erfolgt durch öffentliche Bekanntgabe des
+Lizenztextes. Künftige Versionen müssen den Grundprinzipien dieser Lizenz
+entsprechen. Soweit ein Werk nicht ausdrücklich einer bestimmten Version dieser
+Lizenz unterstellt ist, gilt die jeweils aktuellste Version.
+
+Anhang: Wie unterstelle ich ein Werk der GothicMOD Lizenz?
+
+Um ein Werk nach den Bestimmungen dieser Lizenz zur freien Nutzung durch
+jedermann zur Verfügung zu stellen, muss dem Werk der folgende Hinweis in gut
+wahrnehmbarer Weise beigefügt werden. Es wird darüber hinaus empfohlen, einen
+Urhebervermerk aufzunehmen, der das Jahr der ersten Veröffentlichung sowie den
+Inhaber der ausschließlichen Nutzungsrechte (Name oder allgemein verständliche
+Abkürzung) enthält.
+
+ Copyright (c) 2020-2024 Sören Zapp.
+ Dieses Werk kann durch jedermann in nichtkommerzieller Form
+ gemäß den Bestimmungen der GothicMOD Lizenz genutzt werden.
+ Die Lizenzbedingungen können unter http://www.gothic2.de/mod
+ oder unter http://www.piranha-bytes.com/mod abgerufen werden.
+
+
+GOTHIC MOD DEVELOPMENT-KIT
+---------------------------
+2001
+
+Nutzungsbedingungen
+---------------------------------
+- Die Nutzung des MOD PLAYER-KIT und des MOD DEVELOPMENT-KIT ist ausschliesslich für nichtkommerzielle Zwecke gestattet.
+- Alle im PLAYER-KIT und DEVELOPMENT-KIT enthaltenen Programme und Daten, sowie alle damit erstellten,
+ bzw. modifizierten Daten dürfen nicht kommerziell genutzt werden.
diff --git a/Ninja/Stamina/Content/localization.d b/Ninja/Stamina/Content/localization.d
index fd2b85e..2dd01c7 100644
--- a/Ninja/Stamina/Content/localization.d
+++ b/Ninja/Stamina/Content/localization.d
@@ -11,7 +11,7 @@ func int Patch_Stamina_GuessLocalization() {
return 1;
} else if (Hlp_StrCmp(panName, "Patelnia")) { // PL
return 2;
- } else if (Hlp_StrCmp(panName, "")) { // RU
+ } else if (Hlp_StrCmp(panName, "Ñêîâîðîäà")) { // RU
return 3;
};
};
diff --git a/Ninja/Stamina/System/MENU_OPT_CONTROLS_STAMINA.D b/Ninja/Stamina/System/MENU_OPT_CONTROLS_STAMINA.D
index 11393b1..e91bda1 100644
--- a/Ninja/Stamina/System/MENU_OPT_CONTROLS_STAMINA.D
+++ b/Ninja/Stamina/System/MENU_OPT_CONTROLS_STAMINA.D
@@ -23,7 +23,7 @@ INSTANCE MENUITEM_INP_EN_PATCH_STAMINA(C_MENU_ITEM_DEF)
INSTANCE MENUITEM_KEY_DE_PATCH_STAMINA(C_MENU_ITEM_DEF)
{
text[0] = "Sprinten";
- text[1] = "Taste ENTF zum Lschen und RETURN zum definieren";
+ text[1] = "Taste ENTF zum Löschen und RETURN zum definieren";
onSelAction[0] = /*SEL_ACTION_EXECCOMMANDS*/ 7;
onSelAction_S[0] = "RUN MENUITEM_INP_DE_PATCH_STAMINA";
@@ -32,7 +32,7 @@ INSTANCE MENUITEM_KEY_DE_PATCH_STAMINA(C_MENU_ITEM_DEF)
INSTANCE MENUITEM_INP_DE_PATCH_STAMINA(C_MENU_ITEM_DEF)
{
type = /*MENU_ITEM_INPUT*/ 3;
- text[1] = "Gewnschte Taste bettigen.";
+ text[1] = "Gewünschte Taste betätigen.";
onChgSetOption = "keyIntSprint";
onChgSetOptionSection = "KEYS";
@@ -53,7 +53,7 @@ INSTANCE MENUITEM_KEY_PL_PATCH_STAMINA(C_MENU_ITEM_DEF)
INSTANCE MENUITEM_INP_PL_PATCH_STAMINA(C_MENU_ITEM_DEF)
{
type = /*MENU_ITEM_INPUT*/ 3;
- text[1] = "Nacinij dany klawisz.";
+ text[1] = "Naci¶nij ¿±dany klawisz.";
onChgSetOption = "keyIntSprint";
onChgSetOptionSection = "KEYS";
@@ -64,8 +64,8 @@ INSTANCE MENUITEM_INP_PL_PATCH_STAMINA(C_MENU_ITEM_DEF)
// Russian
INSTANCE MENUITEM_KEY_RU_PATCH_STAMINA(C_MENU_ITEM_DEF)
{
- text[0] = "";
- text[1] = " DEL, ENTER, ";
+ text[0] = "ñïðèíò";
+ text[1] = "íàæìèòå DEL, ÷òîáû î÷èñòèòü ñëîò èëè ENTER, ÷òîáû ïåðåîïðåäåëèòü";
onSelAction[0] = /*SEL_ACTION_EXECCOMMANDS*/ 7;
onSelAction_S[0] = "RUN MENUITEM_INP_RU_PATCH_STAMINA";
@@ -74,7 +74,7 @@ INSTANCE MENUITEM_KEY_RU_PATCH_STAMINA(C_MENU_ITEM_DEF)
INSTANCE MENUITEM_INP_RU_PATCH_STAMINA(C_MENU_ITEM_DEF)
{
type = /*MENU_ITEM_INPUT*/ 3;
- text[1] = ", .";
+ text[1] = "Ïîæàëóéñòà, íàæìèòå êëàâèøó äëÿ ýòîãî äåéñòâèÿ.";
onChgSetOption = "keyIntSprint";
onChgSetOptionSection = "KEYS";
diff --git a/README.md b/README.md
index 7b5d2c0..8152496 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,154 @@
-
-![Ninja](https://user-images.githubusercontent.com/20203034/42415261-92bed2ae-8248-11e8-875c-5f7408588af8.png)
- Patch Template
+
-You can find the original repository of the patch template at
-[szapp/NinjaPatchTemplate](https://github.com/szapp/NinjaPatchTemplate).
+Disable sprinting (e.g. if another mod already supplies it) and to disable stamina cost for weapon blocking (click to expand)
+
+
+```ini
+[STAMINA]
+sprintTotalSec=0
+supplySprintAni=1
+fistFirstHitCost=10
+fistComboCost=7
+fistParadeCost=0
+1hFirstHitCost=18
+1hComboCost=10
+1hParadeCost=0
+2hFirstHitCost=25
+2hComboCost=15
+2hParadeCost=0
+```
+
+
+
+
+## Notes
+
+- The patch is based on a simple endurance system that was introduced here: https://forum.worldofplayers.de/forum/thread/1558616
+- For more information, visit https://forum.worldofplayers.de/forum/threads/1558617
+
+## Installation
+
+1. Download the latest release of `Stamina.vdf` from the [releases page](https://github.com/szapp/Stamina/releases/latest).
+
+2. Copy the file `Stamina.vdf` to `[Gothic]\Data\`. To uninstall, remove the file again.
+
+The patch is also available on
+- [World of Gothic](https://www.worldofgothic.de/dl/download_639.htm) | [Forum thread](https://forum.worldofplayers.de/forum/threads/1558617)
+- [Spine Mod-Manager](https://clockwork-origins.com/spine/)
+- [Steam Workshop Gothic 1](https://steamcommunity.com/sharedfiles/filedetails/?id=2788242828)
+- [Steam Workshop Gothic 2](https://steamcommunity.com/sharedfiles/filedetails/?id=2788242942)
+
+### Requirements
+
+
+
+
diff --git a/Stamina.vm b/Stamina.vm
index a0a7d4e..6fd0598 100644
--- a/Stamina.vm
+++ b/Stamina.vm
@@ -1,32 +1,51 @@
[BEGINVDF]
-Comment=This patch extends the native dive bar to a wider range of stamina decreasing actions like fighting and sprinting.%%NFor adjustments see Gothic.ini
+Comment=Extend the native dive bar to a wider range of stamina decreasing actions like fighting and sprinting.%%NFor adjustments see Gothic.ini
BaseDir=.\
VDFName=.\Stamina.vdf
[FILES]
-; Resources (list the specific files from _work here)
-_work\Data\Anims\_compiled\STAMINA_HUMANS_DISABLE_MELEE_G1.MDH
-_work\Data\Anims\_compiled\STAMINA_HUMANS_DISABLE_MELEE_G2.MDH
-_work\Data\Anims\_compiled\STAMINA_HUMANS_DISABLE_MELEE_G2.MSB
-_work\Data\Anims\_compiled\STAMINA_HUMANS_SPRINT_CLEAN-S_RUNL.MAN
-_work\Data\Anims\_compiled\STAMINA_HUMANS_SPRINT_CLEAN-T_RUN_2_RUNL.MAN
-_work\Data\Anims\_compiled\STAMINA_HUMANS_SPRINT_CLEAN-T_RUNL_2_RUN.MAN
-_work\Data\Anims\_compiled\STAMINA_HUMANS_SPRINT_CLEAN.MDH
-_work\Data\Anims\_compiled\STAMINA_HUMANS_SPRINT_CLEAN.MSB
-_work\Data\Anims\MDS_Overlay\STAMINA_HUMANS_DISABLE_MELEE_G1.MDS
-_work\Data\Anims\MDS_Overlay\STAMINA_HUMANS_DISABLE_MELEE_G2.MDS
-_work\Data\Anims\MDS_Overlay\STAMINA_HUMANS_SPRINT_CLEAN.MDS
-
-; Script files
+; Modular resources
+_work\Data\Anims\_compiled\*.MAN
+_work\Data\Anims\_compiled\*.MDH
+_work\Data\Anims\_compiled\*.MDL
+_work\Data\Anims\_compiled\*.MDM
+_work\Data\Anims\_compiled\*.MMB
+_work\Data\Anims\_compiled\*.MSB
+_work\Data\Meshes\_compiled\*.MRM
+_work\Data\Meshes\_compiled\*.MSH
+_work\Data\Presets\*.ZEN
+_work\Data\Sound\SFX\*.WAV
+_work\Data\Sound\Speech\*.WAV
+_work\Data\Textures\_compiled\*-C.TEX
+_work\Data\Textures\_compiled\*.FNT
+_work\Data\Worlds\*.ZEN
+
+; Ninja resources
Ninja\Stamina\* -r
+; License and README
+LICENSE
+README.md
+
[EXCLUDE]
+; Exclude sub-directories
+*\Ninja\* -r
+*\_work\* -r
+
+; Exclude source scripts
_work\Data\Scripts\* -r
-empty -r
+
+; Exclude metadata
+.empty -r
*.vm
*.vdf
*.bat
+*.cfg
+.*
[INCLUDE]
+; License and README
+LICENSE
+README.md
[ENDVDF]
diff --git a/init.bat b/init.bat
deleted file mode 100644
index fba560f..0000000
--- a/init.bat
+++ /dev/null
@@ -1,777 +0,0 @@
-:: Initialize new patch with Ninja
-@ECHO OFF
-SET PAGE=0
-SET PAGES_MAX=4
-
-TITLE New Patch with Ninja
-MODE CON:COLS=64 LINES=43
-SET "TAB= "
-
-CALL :SHOWHEADER
-ECHO Patch Properties
-ECHO ================
-ECHO/
-
-ECHO Name
-ECHO ----
-ECHO First, the most imporant thing is the name of the patch. The
-ECHO patch will be identified by this name and it determines the
-ECHO name of the VDF. Allowed are alpha numercial characters only.
-ECHO/
-
-:PROMPT_NAME
-SET NAME=
-SET /P NAME="Patch name: "
-IF "%NAME%" == "" (
- ECHO Input must not be empty!
- ECHO/
- GOTO PROMPT_NAME
-)
-ECHO %NAME%| findstr /XR "^[0-9a-z][0-9a-z]*$" > NUL || (
- ECHO Input must be alpha numeric [0-9a-zA-Z]
- ECHO/
- GOTO PROMPT_NAME
-)
-:: Check if directory already exists
-IF EXIST "%~dp0Ninja\%NAME%" (
- ECHO Directory \Ninja\%NAME% already exists. Please choose
- ECHO another patch name or rename/remove the directory.
- ECHO/
- GOTO PROMPT_NAME
-)
-
-:: Get length of name
-SET NAME_LEN=0
-SET NAME_UNDERLINE=
-SET NAME_TMP=%NAME%
-:GETLEN
-IF NOT DEFINED NAME_TMP GOTO RESULT
-:: Remove first letter until empty
-SET NAME_TMP=%NAME_TMP:~1%
-SET /A NAME_LEN+=1
-SET NAME_UNDERLINE=%NAME_UNDERLINE%^=
-GOTO GETLEN
-:RESULT
-IF %NAME_LEN% GEQ 60 (
- ECHO Input too long!
- ECHO/
- GOTO PROMPT_NAME
-)
-
-ECHO/
-ECHO/
-ECHO Description
-ECHO -----------
-ECHO Please supply a brief sentence describing the patch. It serves
-ECHO as basic information for players in the ingame console and in-
-ECHO side the VDF. Maximum length is 250 characters. Illegal char-
-ECHO acters: ^>^<^|^&
-ECHO You may use %%%%N for line breaks. No more than three lines are
-ECHO supported.
-ECHO/
-
-:PROMPT_SHORT_DESCR
-SET SHORT_DESCR=
-SET /P SHORT_DESCR="Short description: "
-IF "%SHORT_DESCR%" == "" (
- ECHO Input must not be empty!
- ECHO/
- GOTO PROMPT_SHORT_DESCR
-)
-ECHO "%SHORT_DESCR%"| findstr /R "[><|&]" > NUL && (
- ECHO Input contains illegal characters: ^>^<^|^&
- ECHO/
- GOTO PROMPT_SHORT_DESCR
-)
-SET SHORT_DESCR=%SHORT_DESCR:(=^^^(%
-SET SHORT_DESCR=%SHORT_DESCR:)=^^^)%
-:: Get length of description
-SET DESC_LEN=0
-SET NAME_TMP=%SHORT_DESCR%
-:GETLEN_D
-IF NOT DEFINED NAME_TMP GOTO RESULT_D
-:: Remove first letter until empty
-SET NAME_TMP=%NAME_TMP:~1%
-SET /A DESC_LEN+=1
-GOTO GETLEN_D
-:RESULT_D
-IF %DESC_LEN% GEQ 250 (
- ECHO Input too long!
- ECHO/
- GOTO PROMPT_SHORT_DESCR
-)
-
-::=============================================== PAGE BREAK =========================================================::
-
-CALL :SHOWHEADER
-ECHO Changes to Inject
-ECHO =================
-ECHO/
-ECHO A patch can change various resources (see documentation). Here
-ECHO you may choose which resources you want to change.
-ECHO/
-ECHO Because, by default, patches are compatible with both Gothic 1
-ECHO and Gothic 2, you can choose to make changes to both games or
-ECHO separate changes for each game; for each resource.
-ECHO/
-ECHO/
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO Content Scripts
-ECHO ---------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_CONTENT
-SET CONTENT=
-SET /P CONTENT="Please choose (0/1/2/3): "
-IF "%CONTENT%" == "" SET CONTENT=0
-IF "%CONTENT%" == "0" GOTO INIT_MENU_CONT
-IF "%CONTENT%" == "1" GOTO CONTENT_CONT
-IF "%CONTENT%" == "2" GOTO CONTENT_CONT
-IF "%CONTENT%" == "3" GOTO CONTENT_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_CONTENT
-:CONTENT_CONT
-
-ECHO/
-:PROMPT_IKARUS
-SET IKARUS=
-SET /P IKARUS="Patch needs Ikarus (Y/N/?): "
-IF "%IKARUS%" == "Y" SET IKARUS=y
-IF "%IKARUS%" == "y" GOTO IKARUS_CONT
-IF "%IKARUS%" == "N" GOTO LEGO_CONT
-IF "%IKARUS%" == "n" GOTO LEGO_CONT
-IF "%IKARUS%" == "?" (
- ECHO/
- ECHO If you do not know what Ikarus is you are not ready for Ninja.
- ECHO You should start with basic modding first. Bye.
- ECHO/
- GOTO QUIT
-) ELSE (
- ECHO Please supply a valid answer.
- ECHO/
- GOTO PROMPT_IKARUS
-)
-:IKARUS_CONT
-
-:PROMPT_LeGo
-SET LEGO=
-SET /P LEGO="Patch needs LeGo (Y/N/?): "
-IF "%LEGO%" == "Y" SET LEGO=y
-IF "%LEGO%" == "y" GOTO LEGO_CONT
-IF "%LEGO%" == "N" GOTO LEGO_CONT
-IF "%LEGO%" == "n" GOTO LEGO_CONT
-IF "%LEGO%" == "?" (
- ECHO/
- ECHO If you do not know what LeGo is you are not ready for Ninja.
- ECHO You should start with basic modding first. Bye.
- ECHO/
- GOTO QUIT
-) ELSE (
- ECHO Please supply a valid answer.
- ECHO/
- GOTO PROMPT_LEGO
-)
-:LEGO_CONT
-
-ECHO/
-ECHO Ninja offers to call a patch-specific initialzation function
-ECHO after 'Init_Global' (G2) / 'Init_^' (G1) was called.
-IF "%IKARUS%" == "y" (
- ECHO This is useful to add your own initializations especially since
- IF "%LEGO%" == "y" (
- ECHO you use Ikarus and LeGo.
- ) ELSE (
- ECHO you use Ikarus.
- )
-) ELSE (
- ECHO This is useful to add your own initializations.
-)
-:PROMPT_INIT_CONTENT
-SET INIT_CONTENT=
-SET /P INIT_CONTENT="Patch needs content initialization function (Y/N): "
-IF "%INIT_CONTENT%" == "Y" SET INIT_CONTENT=y
-IF "%INIT_CONTENT%" == "y" GOTO INIT_CONTENT_CONT
-IF "%INIT_CONTENT%" == "N" GOTO INIT_CONTENT_CONT
-IF "%INIT_CONTENT%" == "n" GOTO INIT_CONTENT_CONT
-ECHO Please supply a valid answer.
-ECHO/
-GOTO PROMPT_INIT_CONTENT
-:INIT_CONTENT_CONT
-
-ECHO/
-ECHO Ninja also offers a patch-specific initialization function for
-ECHO menus. It is called whenever a menu is opened, including the
-ECHO main menu, before the game even started.
-:PROMPT_INIT_MENU
-SET INIT_MENU=
-SET /P INIT_MENU="Patch needs menu initialization function (Y/N): "
-IF "%INIT_MENU%" == "Y" SET INIT_MENU=y
-IF "%INIT_MENU%" == "y" GOTO INIT_MENU_CONT
-IF "%INIT_MENU%" == "N" GOTO INIT_MENU_CONT
-IF "%INIT_MENU%" == "n" GOTO INIT_MENU_CONT
-ECHO Please supply a valid answer.
-ECHO/
-GOTO PROMPT_INIT_MENU
-:INIT_MENU_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Menu Scritps
-ECHO ------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_MENU
-SET MENU=
-SET /P MENU="Please choose (0/1/2/3): "
-IF "%MENU%" == "" SET MENU=0
-IF "%MENU%" == "0" GOTO MENU_CONT
-IF "%MENU%" == "1" GOTO MENU_CONT
-IF "%MENU%" == "2" GOTO MENU_CONT
-IF "%MENU%" == "3" GOTO MENU_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_MENU
-:MENU_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Particle FX Scripts
-ECHO -------------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_PFX
-SET PFX=
-SET /P PFX="Please choose (0/1/2/3): "
-IF "%PFX%" == "" SET PFX=0
-IF "%PFX%" == "0" GOTO PFX_CONT
-IF "%PFX%" == "1" GOTO PFX_CONT
-IF "%PFX%" == "2" GOTO PFX_CONT
-IF "%PFX%" == "3" GOTO PFX_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_PFX
-:PFX_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Visual FX Scripts
-ECHO -----------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_VFX
-SET VFX=
-SET /P VFX="Please choose (0/1/2/3): "
-IF "%VFX%" == "" SET VFX=0
-IF "%VFX%" == "0" GOTO VFX_CONT
-IF "%VFX%" == "1" GOTO VFX_CONT
-IF "%VFX%" == "2" GOTO VFX_CONT
-IF "%VFX%" == "3" GOTO VFX_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_VFX
-:VFX_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Sound FX Scripts
-ECHO ----------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_SFX
-SET SFX=
-SET /P SFX="Please choose (0/1/2/3): "
-IF "%SFX%" == "" SET SFX=0
-IF "%SFX%" == "0" GOTO SFX_CONT
-IF "%SFX%" == "1" GOTO SFX_CONT
-IF "%SFX%" == "2" GOTO SFX_CONT
-IF "%SFX%" == "3" GOTO SFX_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_SFX
-:SFX_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Music Scripts
-ECHO -------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_MUSIC
-SET MUSIC=
-SET /P MUSIC="Please choose (0/1/2/3): "
-IF "%MUSIC%" == "" SET MUSIC=0
-IF "%MUSIC%" == "0" GOTO MUSIC_CONT
-IF "%MUSIC%" == "1" GOTO MUSIC_CONT
-IF "%MUSIC%" == "2" GOTO MUSIC_CONT
-IF "%MUSIC%" == "3" GOTO MUSIC_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_MUSIC
-:MUSIC_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Camera Scripts
-ECHO --------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_CAMERA
-SET CAMERA=
-SET /P CAMERA="Please choose (0/1/2/3): "
-IF "%CAMERA%" == "" SET CAMERA=0
-IF "%CAMERA%" == "0" GOTO CAMERA_CONT
-IF "%CAMERA%" == "1" GOTO CAMERA_CONT
-IF "%CAMERA%" == "2" GOTO CAMERA_CONT
-IF "%CAMERA%" == "3" GOTO CAMERA_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_CAMERA
-:CAMERA_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Fight AI Scripts
-ECHO ----------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_FIGHT
-SET FIGHT=
-SET /P FIGHT="Please choose (0/1/2/3): "
-IF "%FIGHT%" == "" SET FIGHT=0
-IF "%FIGHT%" == "0" GOTO FIGHT_CONT
-IF "%FIGHT%" == "1" GOTO FIGHT_CONT
-IF "%FIGHT%" == "2" GOTO FIGHT_CONT
-IF "%FIGHT%" == "3" GOTO FIGHT_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_FIGHT
-:FIGHT_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Output Units (Dialog Lines)
-ECHO ---------------------------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_OU
-SET OU=
-SET /P OU="Please choose (0/1/2/3): "
-IF "%OU%" == "" SET OU=0
-IF "%OU%" == "0" GOTO OU_CONT
-IF "%OU%" == "1" GOTO OU_CONT
-IF "%OU%" == "2" GOTO OU_CONT
-IF "%OU%" == "3" GOTO OU_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_OU
-:OU_CONT
-
-::--------------------------------------------------------------------------------------------------------------------::
-
-ECHO/
-ECHO/
-ECHO Animations
-ECHO ----------
-ECHO/
-ECHO 0) Not needed
-ECHO 1) Gothic 1
-ECHO 2) Gothic 2
-ECHO 3) Both
-ECHO/
-
-:PROMPT_ANIMATION
-SET ANIMATION=
-SET /P ANIMATION="Please choose (0/1/2/3): "
-IF "%ANIMATION%" == "" SET ANIMATION=0
-IF "%ANIMATION%" == "0" GOTO ANIMATION_CONT
-IF "%ANIMATION%" == "1" GOTO ANIMATION_CONT
-IF "%ANIMATION%" == "2" GOTO ANIMATION_CONT
-IF "%ANIMATION%" == "3" GOTO ANIMATION_CONT
-ECHO Invalid input!
-ECHO/
-GOTO PROMPT_ANIMATION
-:ANIMATION_CONT
-
-::=============================================== PAGE BREAK =========================================================::
-
-CALL :SHOWHEADER
-
-ECHO Survey Complete
-ECHO ===============
-ECHO/
-ECHO All necessary information has been gathered. No actions have
-ECHO been performed yet. You may press CTRL+C to abort the process.
-ECHO Press any key to create all files to initialize your new
-ECHO patch '%NAME%' . . .
-PAUSE > NUL
-ECHO/
-
-:START
-
-:: Directory structure
-ECHO Create patch directory
-MKDIR "%~dp0Ninja\%NAME%" || GOTO ERR
-
-ECHO Create subdirectories in '_work'
-IF NOT EXIST "%~dp0_work\Data\Anims\_compiled" MKDIR "%~dp0_work\Data\Anims\_compiled" || GOTO ERR
-IF NOT EXIST "%~dp0_work\Data\Meshes\_compiled" MKDIR "%~dp0_work\Data\Meshes\_compiled" || GOTO ERR
-IF NOT EXIST "%~dp0_work\Data\Textures\_compiled" MKDIR "%~dp0_work\Data\Textures\_compiled" || GOTO ERR
-
-SET CONTENT_ONCE=
-IF "%CONTENT%" == "1" CALL :MAKE_CONTENT 1
-IF "%CONTENT%" == "2" CALL :MAKE_CONTENT 2
-IF "%CONTENT%" == "3" CALL :MAKE_CONTENT 1 && CALL :MAKE_CONTENT 2
-
-CALL :MAKE_SRC Menu %MENU% 1
-CALL :MAKE_SRC PFX %PFX% 1
-CALL :MAKE_SRC VFX %VFX% 1
-CALL :MAKE_SRC SFX %SFX% 1
-CALL :MAKE_SRC Music %MUSIC%
-CALL :MAKE_SRC Fight %FIGHT%
-CALL :MAKE_SRC Camera %CAMERA%
-
-IF "%OU%" GTR "0" (
- IF "%OU%" == "3" (
- SET OUF="%~dp0Ninja\%NAME%\OU.csl"
- ECHO Create empty output unit file
- ) ELSE (
- SET OUF="%~dp0Ninja\%NAME%\OU_G%OU%.csl"
- ECHO Create empty output unit file ^(G%OU%^)
- )
-)
-:: Separate IF because of delayed extension
-IF "%OU%" GTR "0" (
- (ECHO ZenGin Archive)> "%OUF%" || GOTO ERR
- (ECHO ver 1)>> "%OUF%" || GOTO ERR
- (ECHO zCArchiverGeneric)>> "%OUF%" || GOTO ERR
- (ECHO ASCII)>> "%OUF%" || GOTO ERR
- (ECHO saveGame 0)>> "%OUF%" || GOTO ERR
- (ECHO date 01/01/1970 00:00:00 AM)>> "%OUF%" || GOTO ERR
- (ECHO user Ninja)>> "%OUF%" || GOTO ERR
- (ECHO END)>> "%OUF%" || GOTO ERR
- (ECHO objects 4)>> "%OUF%" || GOTO ERR
- (ECHO END)>> "%OUF%" || GOTO ERR
- (ECHO/)>> "%OUF%" || GOTO ERR
- (ECHO [%% zCCSLib 0 0])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%NumOfItems=int:1)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%[%% zCCSBlock 0 1])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%blockName=string:NINJA_NONE_15_01)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%numOfBlocks=int:1)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%subBlock0=float:0)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%[%% zCCSAtomicBlock 0 2])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%%TAB%[%% oCMsgConversation:oCNpcMessage:^
-zCEventMessage 0 3])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%%TAB%%TAB%subType=enum:0)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%%TAB%%TAB%text=string:Dialog line shown in-game)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%%TAB%%TAB%name=string:NINJA_NONE_15_01.WAV)>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%%TAB%[])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%%TAB%[])>> "%OUF%" || GOTO ERR
- (ECHO %TAB%[])>> "%OUF%" || GOTO ERR
- (ECHO [])>> "%OUF%" || GOTO ERR
-)
-
-IF "%ANIMATION%" GTR "0" (
- IF "%ANIMATION%" == "3" (
- SET ANIMF="%~dp0Ninja\%NAME%\Anims_Humans.mds"
- ECHO Write animation file
- ) ELSE (
- SET ANIMF="%~dp0Ninja\%NAME%\Anims_Humans_G%ANIMATION%.mds"
- ECHO Write animation file ^(G%ANIMATION%^)
- )
-)
-:: Separate IF because of delayed extension
-IF "%ANIMATION%" GTR "0" (
- (ECHO Model ^("HuS"^))> "%ANIMF%" || GOTO ERR
- (ECHO {)>> "%ANIMF%" || GOTO ERR
- (ECHO/)>> "%ANIMF%" || GOTO ERR
- (ECHO ^/^/ REGISTER NEW ARMOR HERE)>> "%ANIMF%" || GOTO ERR
- (ECHO/)>> "%ANIMF%" || GOTO ERR
- (ECHO aniEnum)>> "%ANIMF%" || GOTO ERR
- (ECHO {)>> "%ANIMF%" || GOTO ERR
- (ECHO/)>> "%ANIMF%" || GOTO ERR
- (ECHO ^/^/ ADD NEW ANIMATIONS HERE)>> "%ANIMF%" || GOTO ERR
- (ECHO/)>> "%ANIMF%" || GOTO ERR
- (ECHO })>> "%ANIMF%" || GOTO ERR
- (ECHO })>> "%ANIMF%" || GOTO ERR
-)
-
-ECHO Write VDFS VM script
-(ECHO [BEGINVDF])> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO Comment=%SHORT_DESCR%)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO BaseDir=.\)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO VDFName=.\%NAME%.vdf)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO/)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO [FILES])>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO ; Resources ^(list the specific files from _work here^))>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO ; _work\* -r)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO/)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO ; Script files)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO Ninja\%NAME%\* -r)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO/)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO [EXCLUDE])>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO _work\Data\Scripts\* -r)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO *.vm)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO *.vdf)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO *.bat)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO/)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO [INCLUDE])>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO/)>> "%~dp0%NAME%.vm" || GOTO ERR
-(ECHO [ENDVDF])>> "%~dp0%NAME%.vm" || GOTO ERR
-
-ECHO/
-ECHO Initialization successful
-ECHO/
-ECHO Press any key to continue . . .
-PAUSE > NUL
-
-::=============================================== PAGE BREAK =========================================================::
-
-:DONE
-CALL :SHOWHEADER
-
-ECHO A VM script was created with which you can create the VDF using
-ECHO GothicVDFS, see ^.
-ECHO/
-ECHO/
-SET ITER=1
-ECHO Next Steps
-ECHO ==========
-ECHO/
-ECHO %ITER%. Add Scripts
-SET /A ITER+=1
-ECHO Add any necessary scripts in the subdirectories 'Content'
-ECHO and 'System' and register them in the respective SRC files.
-ECHO/
-IF "%OU%" GTR "0" (
- ECHO %ITER%. Add Output Units
- SET /A ITER+=1
- ECHO The OU files are empty place holders. Replace them with your
- ECHO compiled versions ^(e.g. using Redefix^). Either the CSL or
- ECHO the BIN file will suffice. Not both of them are required.
- ECHO/
-)
-IF "%ANIMATION%" GTR "0" (
- ECHO %ITER%. Add Animations
- SET /A ITER+=1
- ECHO The MDS file is an empty place holder. Copy/rename it to the
- ECHO desired model name and fill in your new armor/animations.
- ECHO/
-)
-ECHO %ITER%. Add Resources
-SET /A ITER+=1
-ECHO If you have further resources like textures, meshes or ani-
-ECHO mations, add them in the respective directory ^('_compiled'^)
-ECHO in the directory '_work' and add their paths to the VM
-ECHO script. See the comments inside the VM script.
-ECHO/
-ECHO %ITER%. Build the Patch
-SET /A ITER+=1
-ECHO In GothicVDFS click '^(Builder^)' and then 'Open Script'.
-ECHO Navigate to and open
-ECHO %~dp0%NAME%.vm
-ECHO Adjust 'Root Path' to the same directory.
-ECHO Confirm the contents of the fields and click 'Build volume'.
-ECHO/
-ECHO %ITER%. Test the Patch
-SET /A ITER+=1
-ECHO Throughly test your patch in Gothic with different mods.
-IF "%IKARUS%" == "y" (
- IF "%LEGO%" == "y" (
- ECHO It is important to try various mods that ^[don't^] use LeGo!
- ) ELSE (
- ECHO It is important to try various mods that ^[don't^] use Ikarus!
- )
-)
-ECHO/
-
-:QUIT
-ECHO Press any key to quit . . .
-PAUSE > NUL
-CLS
-EXIT /B 0
-
-:ERR
-ECHO ERROR: Operation failed
-PAUSE > NUL
-CLS
-EXIT /B 1
-
-:MAKE_CONTENT GOTHIC_BASE_VERSION
-IF NOT EXIST "%~dp0Ninja\%NAME%\Content" (
- ECHO Create subdirectory 'Content'
- MKDIR "%~dp0Ninja\%NAME%\Content" || GOTO ERR
-)
-
-IF "%IKARUS%" == "y" (
- ECHO Write content SRC ^(G%1^)
- (ECHO Ikarus)> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- IF "%LEGO%" == "y" (
- (ECHO LeGo)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- )
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- (ECHO // LIST YOUR FILES HERE)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
-) ELSE (
- ECHO Create empty content SRC ^(G%1^)
- COPY /Y NUL "%~dp0Ninja\%NAME%\Content_G%1.src" > NUL || GOTO ERR
-)
-IF "%INIT_CONTENT%" == "y" GOTO INIT_D
-IF "%INIT_MENU%" == "y" GOTO INIT_D
-EXIT /B 0
-
-:INIT_D
-IF NOT "%IKARUS%" == "y" (
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- (ECHO // LIST YOUR FILES HERE)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
-)
-(ECHO Content\NinjaInit.d)>> "%~dp0Ninja\%NAME%\Content_G%1.src" || GOTO ERR
-IF NOT EXIST "%~dp0Ninja\%NAME%\Content\NinjaInit.d" (
- ECHO Create empty content init file
- COPY /Y NUL "%~dp0Ninja\%NAME%\Content\NinjaInit.d" > NUL || GOTO ERR
-)
-IF "%INIT_MENU%" == "y" (
- IF NOT DEFINED CONTENT_ONCE (
- ECHO Write content init file
- (ECHO /*)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO * Menu initialization function called by Ninja every ^
-time a menu is opened)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO */)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO func void Ninja_%NAME%_Menu^(var int menuPtr^) {)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- IF "%IKARUS%" == "y" (
- (ECHO MEM_InitAll^(^);)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- )
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO // WRITE YOUR INITIALIZATIONS HERE)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO };)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- )
-)
-IF "%INIT_CONTENT%" == "y" (
- IF NOT DEFINED CONTENT_ONCE (
- (ECHO /*)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO * Initialization function called by Ninja ^
-after "Init_Global" ^(G2^) / "Init_" ^(G1^))>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO */)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO func void Ninja_%NAME%_Init^(^) {)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- IF "%LEGO%" == "y" (
- (ECHO // Wrapper for "LeGo_Init" to ensure correct ^
-LeGo initialization without breaking the mod)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO LeGo_MergeFlags^( /* DESIRED LEGO PACKAGES ^
-*/ ^);)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- ) ELSE (
- IF "%IKARUS%" == "y" (
- (ECHO MEM_InitAll^(^);)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- )
- )
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO // WRITE YOUR INITIALIZATIONS HERE)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO/)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- (ECHO };)>> "%~dp0Ninja\%NAME%\Content\NinjaInit.d" || GOTO ERR
- )
-)
-SET CONTENT_ONCE=1
-EXIT /B 0
-
-:MAKE_SRC SRC_NAME GOTHIC_BASE_VERSION
-IF "%2" == "0" EXIT /B 0
-IF "%3" == "1" (
- IF NOT EXIST "%~dp0Ninja\%NAME%\System" (
- ECHO Create subdirectory 'System'
- MKDIR "%~dp0Ninja\%NAME%\System" || GOTO ERR
- )
-)
-IF "%2" == "3" (
- ECHO Create empty %1 SRC
- COPY /Y NUL "%~dp0Ninja\%NAME%\%1.src" > NUL || GOTO ERR
-) ELSE (
- ECHO Create empty %1 SRC ^(G%2^)
- COPY /Y NUL "%~dp0Ninja\%NAME%\%1_G%2.src" > NUL || GOTO ERR
-)
-EXIT /B 0
-
-
-:SHOWHEADER
-SET /A PAGE+=1
-CLS
-ECHO ________________________________________________________________
-ECHO New Patch with Ninja
-ECHO/
-ECHO This script will aid you in setting up a new patch. You should
-ECHO be familiar with the documentation of Ninja, that is available
-ECHO at ^. You may abort this process at
-ECHO any time by pressing CTRL+C or by closing this command window.
-ECHO/
-ECHO PAGE %PAGE%/%PAGES_MAX%
-ECHO ________________________________________________________________
-ECHO/
-EXIT /B 0
diff --git a/tool.cfg b/tool.cfg
index cb42eb5..3f55381 100644
--- a/tool.cfg
+++ b/tool.cfg
@@ -1,2 +1,5 @@
+; This file adds dependencies for Spine
+; For more information, visit https://clockwork-origins.com/spine-tutorial-tool-cfg/
+
[DEPENDENCIES]
Required=314