Compare commits

...
560 Commits
Author SHA1 Message Date
Lukas Obermann aa93dab7fd build(release): 1.5.2 2025-01-02 18:43:46 +01:00
Lukas Obermann 5a9ae86cf9 build(git): merge master 2025-01-02 18:43:14 +01:00
Michel FeddeandLukas Obermann 7f5f94491e fix: throws during startup due to changed devtools identifiers
Refs: #1634
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2025-01-02 18:26:57 +01:00
Lukas Obermann a2979650f2 build(deps): fix auto-fixable vulnerabilities in packages 2025-01-02 18:17:24 +01:00
Lukas Obermann bc80b0479a docs: add easier option to receive the database for contribution purposes 2023-01-24 18:52:20 +01:00
cziermannandChristian Ziermann fdd391b849 docs: correct build command for ts
Refs: #1592
Co-authored-by: Christian Ziermann <christian.ziermann@contabo.de>
2023-01-07 13:09:25 +01:00
Lukas Obermann 057edce846 build(release): 1.5.2-alpha.4 2022-07-22 23:31:27 +02:00
Lukas Obermann c52fc26a1b fix: improvement cost handling for some traditions
The refactoring resulted in no spells being available to intuitive mages.

In general, comparing improvement costs directly did not work.
2022-07-22 23:30:16 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d28667a935 build(deps): bump terser from 5.10.0 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.10.0 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Refs: #1382

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-22 21:03:23 +02:00
Lukas Obermann b92e47cd13 ci: update and streamline test workflow 2022-07-14 13:17:09 +02:00
Lukas Obermann 87a21b6fc4 style(ci): indent lists by two spaces 2022-07-14 13:07:31 +02:00
Lukas Obermann ccd0898f4e ci: provide apple csc env variables to macOS build only 2022-07-14 13:06:40 +02:00
Lukas Obermann c162931e74 fix: show improvement cost in tabular list 2022-07-12 22:16:27 +02:00
Lukas Obermann b578254d75 refactor: remove inconsistent and wrong usage of prefix functions 2022-07-12 10:23:26 +02:00
Lukas Obermann 7b57aca991 build(release): 1.5.2-alpha.3 2022-07-12 10:05:12 +02:00
Lukas Obermann 282467e4af refactor: disallow use of improvement cost as simple number 2022-07-12 10:04:54 +02:00
Lukas Obermann e6d1b8d3fd build(release): 1.5.2-alpha.2 2022-07-11 15:45:53 +02:00
Lukas Obermann f09be7d54b ci: fix package named import 2022-07-11 15:45:39 +02:00
Lukas Obermann 3397ed8cee ci: forward code signing certificates for macos 2022-07-11 15:37:48 +02:00
Lukas Obermann 7b6a0980b9 ci: fix package import 2022-07-11 15:24:55 +02:00
Lukas Obermann 7b245b989b ci: remove reasonml build from test 2022-07-11 15:23:04 +02:00
Lukas Obermann 32058f76c2 build(notarization): adjust plist for notarization 2022-07-11 15:14:23 +02:00
Lukas Obermann a6576bb8ab refactor: remove reasonml from project 2022-07-11 12:12:19 +02:00
Lukas Obermann 7c6e377692 feat: enable auto-update for macOS 2022-07-11 10:00:09 +02:00
Lukas Obermann fe7c5e68ed build: integrate notarization 2022-07-10 23:17:46 +02:00
Lukas Obermann 531530e763 build(deps): upgrade electron to 19.0.4 2022-06-19 12:37:51 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> e1befd1383 build(deps): bump semver-regex from 3.1.3 to 3.1.4 (#1375)
Bumps [semver-regex](https://github.com/sindresorhus/semver-regex) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/sindresorhus/semver-regex/releases)
- [Commits](https://github.com/sindresorhus/semver-regex/commits/v3.1.4)

---
updated-dependencies:
- dependency-name: semver-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 09:40:18 +02:00
Lukas Obermann 2eb87c8f4c build(deps): bump packages with vulnerabilities
- bump ejs from 3.1.6 to 3.1.7
- bump async from 0.9.2 to 3.2.3
- bump filelist from 1.0.2 to 1.0.3
- bump jake from 10.8.2 to 10.8.5
2022-04-29 11:17:10 +02:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Lukas Obermann
531715f171 build(deps): bump plist from 3.0.4 to 3.0.5
Refs: #1371
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2022-04-29 11:11:33 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4c9096b3d5 build(deps): bump minimist from 1.2.5 to 1.2.6
Refs: #1365
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 11:10:27 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 7c3d722d7e build(deps): bump moment from 2.25.3 to 2.29.2
Refs: #1364
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 11:09:26 +02:00
Lukas Obermann c4b995e046 build(release): 1.5.2-alpha.1 2022-04-29 11:01:20 +02:00
Lukas Obermann c987847c9b feat: add krallenkettenzauber as placeholder 2022-04-29 10:54:57 +02:00
Lukas Obermann e99828f1cc docs(changelog): add general changelog for 1.5.1 2022-03-21 11:33:42 +01:00
Lukas Obermann 8e8932cd83 build(release): bump version to 1.5.1 2022-03-20 16:05:05 +01:00
Lukas Obermann 246b3d5c1d build(release): 1.5.1
Refs: #1361
2022-03-20 15:26:41 +01:00
Lukas Obermann c15505062d build(release): 1.5.1
Refs: #1360
2022-03-20 15:26:11 +01:00
Lukas Obermann 8d54177cac Merge branch 'master' into release/1.5.1 2022-03-20 15:21:54 +01:00
Lukas Obermann 96c7b54fce docs(changelog): add Dutch changelogs für 1.5.1 2022-03-20 15:18:38 +01:00
Lukas Obermann 5c7ffd0660 docs(changelog): add initial 1.5.1 changelogs 2022-02-25 08:29:51 +01:00
Lukas Obermann d24fae03b7 build(release): 1.5.1-alpha.2 2022-02-22 11:16:20 +01:00
Lukas Obermann 8102bb1a9a fix: advantage Inspire Confidence could be bought with social Incompetence
Fixes #1351
2022-02-22 11:14:09 +01:00
Lukas Obermann 07d336dbb3 feat(maptool): add project links 2022-02-22 10:51:37 +01:00
Lukas Obermann d40bdac744 refactor(maptool): resolve most TODOs 2022-02-21 15:20:30 +01:00
Lukas Obermann d3926aff86 build(release): 1.5.1-alpha.1 2022-02-21 09:36:44 +01:00
Lukas Obermann 80fdffb373 fix(maptool): no export possible without an avatar
Fixes #1348
2022-02-21 09:36:25 +01:00
Lukas Obermann 92bfcb96b0 build(ide): disable output scanning for release tasks 2022-02-18 11:50:28 +01:00
Lukas Obermann afd32c9827 build(release): 1.5.1-alpha.0 2022-02-18 11:48:57 +01:00
Lukas Obermann 3f87dca910 fix: add missing Italian translations for MapTool export
Fixes #1350
2022-02-18 11:16:14 +01:00
Lukas Obermann 2c9332c37f fix: markdown parser ignores strikethrough
The GFM plugin was missing.

Fixes #1349
2022-02-18 11:06:44 +01:00
Lukas ObermannandLector 9e9a1139d3 fix(maptool): format change for 1.11.4
Since MapTool v1.11.14 a sizeMap needs to be included, otherwise the import does
not work. Maybe the format changed happend earlier.

Co-authored-by: Lector <dragonsfire@gmx.de>
2022-02-10 18:47:31 +01:00
Lukas Obermann c5d2b0a7a4 docs(changelog): add French changelog for 1.5.0 2022-02-09 12:51:33 +01:00
Lukas Obermann f1e16d5c39 docs(changelog): remove unreleased feature
(cherry picked from commit 449f8c7bb2)
2022-02-09 12:10:05 +01:00
Lukas Obermann 449f8c7bb2 docs(changelog): remove unreleased feature 2022-02-09 11:51:59 +01:00
Lukas Obermann 53ab0e704e build(release): merge 1.5.0 2022-02-09 11:41:31 +01:00
Lukas Obermann 5b7f223211 build(release): 1.5.0 2022-02-09 11:33:17 +01:00
Lukas Obermann 5bb9c8ca7b docs(changelog): add Italian changelog translation for 1.5.0 2022-02-07 22:42:36 +01:00
Lukas Obermann ef84a38cf6 docs(changelog): add French, Italian and Dutch changelogs for 1.5.0 in English 2022-02-07 10:36:48 +01:00
Lukas Obermann d2eca82ea5 fix: add more action types that should be ignored for undo history 2022-02-06 22:31:13 +01:00
Lukas Obermann 854995cb3b docs(changelog): add German changelog for 1.5.0 2022-02-06 20:18:46 +01:00
Lukas Obermann 659ab5f8db docs(changelog): remove unnecessary issue prefixes 2022-02-06 18:39:37 +01:00
Lukas Obermann 8777b9a0cd docs(changelog): add Portuguese changelog for initial release 2022-02-06 18:39:14 +01:00
Lukas Obermann 27cbd7abd7 docs(changelog): add English changelog for 1.5.0 2022-02-06 18:38:50 +01:00
Lukas Obermann e4672041db docs(issues): fix more bug report issue form ids 2022-02-06 16:18:02 +01:00
Lukas Obermann fc8c837008 docs(issues): fix bug report issue form ids 2022-02-06 16:17:14 +01:00
Lukas Obermann a3c269dd35 docs(issues): use issue form for bug reports 2022-02-06 16:15:35 +01:00
Lukas Obermann 8753a4656e build(release): 1.5.0-alpha.9 2022-02-06 12:51:39 +01:00
Lukas Obermann bdb3eb7804 fix: typo in German name of Tradition (Illusionist)
Fixes #1239
2022-02-05 23:55:44 +01:00
Lukas Obermann c0dbb3fbcb refactor: use native array in inactive spells list 2022-02-05 17:01:31 +01:00
Lukas Obermann 06eac93221 fix: active animist powers occurred multiple times in addition list
The issue apparently only applied to animist powers, no other spellworks.

Fixes #794
2022-02-05 16:52:02 +01:00
Lukas Obermann d2d3445928 docs(changelog): add explicit MapTool export notice 2022-02-04 23:46:58 +01:00
Lukas Obermann c0d799c057 ci: hide upload progress logging for deployment 2022-02-04 20:35:02 +01:00
Lukas Obermann b1942216e5 build(release): 1.5.0-alpha.8 2022-02-04 20:17:20 +01:00
Lukas Obermann 1e21b6bcd4 refactor: remove unused action type 2022-02-04 17:51:28 +01:00
Lukas Obermann 8b18b26361 feat(logs): add small logging utility function 2022-02-04 17:35:09 +01:00
Lukas Obermann 923b7605fe fix: saving a hero clears the undo history of multiple characters
The current hero identifier was not cleared if leaving a hero view, which lead
to the action clearing the history of both the hero that actually should be
saved as well as the most recently opened character in this session.

Fixes #811
2022-02-04 17:34:14 +01:00
Lukas Obermann 589338fe74 refactor(datatypes): move predicate properties to prototype
This prevents them from showing up in console logs, which makes them less
cluttered.
2022-02-04 17:28:22 +01:00
Lukas Obermann 5f1e1f8148 style: disable redeclaration ESLint rule for the entire file 2022-02-04 17:10:06 +01:00
Lukas Obermann 1f090605a4 fix(prerelease): cult of Levtan not registered as blessed tradition 2022-02-04 16:21:28 +01:00
Lukas Obermann e558c1d80d fix: spells converted by Imitationszauberei cannot use spell enhancements
Fixes #828
2022-02-04 15:37:09 +01:00
Lukas Obermann 232795d129 fix(datatypes): find might return an existing value that is undefined 2022-02-04 13:49:52 +01:00
Lukas Obermann a49048d468 build(ide): use node debugger preview in VSCode 2022-02-04 13:25:46 +01:00
Lukas Obermann 1ce2db9cfb fix: attribute minimum must include combat techniques
The allowed maximum of combat techniques depends on the value of its highest
primary attribute. The reverse dependency - the then-required minimum - was not
applied.

Fixes #836
2022-02-04 00:03:14 +01:00
Lukas Obermann 7e31136083 fix: wrong combat type of special ability Blattschuss
Fixes #1331
2022-02-03 21:09:26 +01:00
Lukas Obermann 4c9a1f9bc5 build(ide): add css build task 2022-02-03 18:05:10 +01:00
Lukas Obermann 2a62e4231d ci: switch to ssh2-sftp-client for deployment
This fixes the unfixed vulnerability in qusly-core.
2022-02-03 15:39:50 +01:00
Lukas Obermann 41ee35ba76 fix: widened rows in seconds column of skills table on character sheet
Fixes #1342
2022-02-03 14:42:36 +01:00
Lukas Obermann cad0f26042 build(deps): upgrade electron to 17 2022-02-03 13:46:55 +01:00
Lukas Obermann 7a9da8f65e docs(changelog): remove unnecessary issue prefix 2022-02-03 13:33:18 +01:00
Lukas Obermann e36099d812 build(ide): add git push --follow-tags for use after release creation 2022-02-03 13:26:56 +01:00
Lukas Obermann 8e66f9b83a build(release): 1.5.0-alpha.7 2022-02-03 13:18:35 +01:00
Lukas Obermann f1024868ff build(ide): add tasks for creating release commits 2022-02-03 13:18:16 +01:00
Lukas Obermann a24ff8082a fix: auto-updater not working in AppImage
Fixes #753
2022-02-03 13:15:04 +01:00
Lukas Obermann 1ed0c64b0d fix: scripts do not require an active matching language
Fixes #1344
2022-02-03 12:02:41 +01:00
Lukas Obermann 83b534d3f9 fix: cannot activate special ability Weg der Schreiberin
Fixes #1233
2022-02-03 11:41:06 +01:00
Lukas Obermann 4dabbdbcd2 fix: requiring one matching languages and script requires all of them
Fixes #1343
2022-02-03 11:40:07 +01:00
Lukas Obermann 0ab65e869c fix: range brackets input influences other bracket fields
Fixes #1251
2022-02-02 13:22:55 +01:00
Lukas Obermann f2e61386ab fix: some item properties were not saved
Fixes #1252
2022-02-02 12:25:14 +01:00
Lukas Obermann e70a8b9d34 build(ide): create useful VSCode tasks 2022-02-02 12:19:47 +01:00
Lukas Obermann c3985275bb refactor: rename misleading variable 2022-02-02 12:18:05 +01:00
Lukas Obermann 8b060b6002 refactor(datatypes): add immutable methods to arrays 2022-02-02 01:38:40 +01:00
Lukas Obermann ac0cdc3778 fix: primary attribute prerequisites may not have been added as dependencies
The previous implementation relied on the tradition being added to the hero
object before the entry having the prerequisite was added, since the dependency
has been added statically, depending on the then-known traditions. But there are
situations where this is not the case, resulting in no prerequisite being added.
The new implementation does not bind the dependencies to a specific attribute,
but instead dynamically infers which is the primary attribute to then apply the
registered primary dependencies. This makes the dependencies independent of
the presence of tradition entries in the initialization phase.

Fixes #1260
2022-02-01 23:55:42 +01:00
Lukas Obermann 8b5eedeb37 fix: typo in German name of Tarnele
Fixes #1330
2022-02-01 22:05:14 +01:00
Lukas Obermann 06b57c9d15 fix: use Brawling Points in special ability Knuckle Storm description
Fixes #1340
2022-02-01 22:02:54 +01:00
Lukas Obermann 03f26214ae docs: change Apple M1 support text 2022-02-01 21:59:08 +01:00
Lukas Obermann d66afba3c1 docs: add Apple M1 native support note 2022-02-01 18:00:47 +01:00
Lukas Obermann 3574d1ba46 fix: unfamiliar spell selection in profession was optional
The selection of an unfamiliar spell for Tradition (Guild Mage), which is
included in a profession package, was not required to apply race, culture and
profession.

Fixes #1315
2022-02-01 17:51:02 +01:00
Lukas Obermann dcfba14df7 build(release): 1.5.0-alpha.6 2022-02-01 17:22:50 +01:00
Lukas Obermann 6669352d06 fix: special ability Tradition (Tsatuara-Anhängerinnen) is in wrong group
Fixes #1137
2022-02-01 17:16:09 +01:00
Lukas Obermann 9cb26586f3 fix: too large PDF output when using a sheet background
Fixes #1094
2022-02-01 17:08:30 +01:00
Lukas Obermann cd16e5314a fix: profession Sharisad gets Earthencraft bonus instead of Clothworking bonus
Fixes #1341
2022-02-01 16:53:49 +01:00
Lukas Obermann 6ba99f2f46 fix: weight column in inventory shows wrong weight in English
Fixes elyukai/optolith-client#1329
2022-02-01 16:33:52 +01:00
Lukas Obermann bd9fc1badc feat: add kilogram hint to English item dialog 2022-02-01 16:32:39 +01:00
Lukas Obermann 47e66d6546 fix: attributes on minimum value do not allow CtR over 6
Fixes elyukai/optolith-client#835
2022-02-01 16:10:31 +01:00
Lukas Obermann bba9b92e5d feat: add utilities for working with tagged unions 2022-02-01 16:02:12 +01:00
Lukas Obermann fb0a0bbbfb test: check TSDoc comments format with ESLint 2022-02-01 16:01:36 +01:00
Lukas Obermann 8bcae62f2f refactor: remove unused ESM preload module 2022-02-01 15:54:46 +01:00
Lukas Obermann 383a9c166c fix: show Hit Zone Armor tab for English Armory
Fixes elyukai/optolith-client#1328
2022-02-01 15:44:57 +01:00
Lukas Obermann 94e751fda1 build: add macOS builds for M1 2022-01-31 18:55:32 +01:00
Lukas Obermann 36c643f04a build(release): 1.5.0-alpha.5 2022-01-27 21:28:57 +01:00
Lukas Obermann 0143c28b0c ci: upgrade all workflows to Node 16 2022-01-27 21:19:54 +01:00
Lukas Obermann 793ad447b4 build(release): 1.5.0-alpha.8 2022-01-27 21:10:16 +01:00
Lukas Obermann 9f3e52b5da ci: update release workflow to use Node 14 2022-01-27 21:08:59 +01:00
Lukas Obermann a7ff9fc901 ci: update prerelease workflow to use Node 14 2022-01-27 21:08:30 +01:00
Lukas Obermann 3ea0d6ee10 build(release): 1.5.0-alpha.7 2022-01-27 21:03:58 +01:00
Lukas Obermann 83d9bd40dd build: upgrade to Electron 16 2022-01-27 21:02:50 +01:00
Lukas Obermann 8fb5f28dd0 build(release): 1.5.0-alpha.6 2022-01-27 20:26:01 +01:00
Lukas Obermann 85eba763ac test: revert to Jest 26 2022-01-27 20:21:48 +01:00
Lukas Obermann a6417ff1de test: use ts-jest preset in Jest config 2022-01-27 19:32:06 +01:00
Lukas Obermann fe85d2d79a ci: upgrade linting to Node 14 2022-01-27 19:22:43 +01:00
Lukas Obermann 4850363119 build: optimize Webpack RAM usage and build times 2022-01-27 19:12:23 +01:00
Lukas Obermann e0f3d5b1a3 style: fix all ESLint errors 2022-01-27 12:09:12 +01:00
Lukas Obermann a26b4094c2 build(release): 1.5.0-alpha.5 2022-01-27 11:23:28 +01:00
Lukas Obermann 47028ab470 Merge branch 'develop' of github.com:elyukai/optolith-client into develop 2022-01-27 11:22:00 +01:00
Lukas Obermann d8c9f52542 feat: portuguese translations 2022-01-27 11:21:49 +01:00
Lukas Obermann 29c7b4bc39 fix: missing import 2022-01-27 11:21:01 +01:00
Lukas Obermann 6b93c15aa0 fix: latest TypeScript compilation errors 2022-01-27 11:07:57 +01:00
Lukas Obermann 0620ff2ab8 Create FUNDING.yml 2022-01-23 21:36:10 +01:00
Lukas Obermann 10582541e0 build(deps): fix vulnerabilities 2021-12-13 00:11:16 +01:00
Lukas Obermann c13b557dd7 ci: linter requires database submodule
Revert: bf9d29a6dc
2021-08-03 13:37:09 +02:00
Lukas Obermann bf9d29a6dc ci: linter does not require database submodule 2021-08-03 13:31:59 +02:00
Lukas Obermann 4699d38a1a build(release): 1.5.0-alpha.4 2021-08-03 13:00:45 +02:00
Lukas Obermann b2fb0353a9 fix: maptools should provide user interface strings 2021-08-03 13:00:33 +02:00
Lukas Obermann 66077430d8 build(release): 1.5.0-alpha.3 2021-08-03 12:46:55 +02:00
Lukas Obermann 08e7817597 build(deps): fix security vulnerabilities 2021-08-03 12:46:08 +02:00
Lukas Obermann 87cec15ba9 Merge pull request #815 from elyukai/maptools_export
Maptools export
2021-08-03 12:42:56 +02:00
Lukas Obermann 63ac0abbe3 Merge branch 'develop' into maptools_export 2021-08-03 12:41:28 +02:00
Lukas Obermann 41278f8316 docs: fix changelog 2021-05-28 16:24:10 +02:00
Lukas Obermann 5d45a6084e build(release): 1.5.0-alpha.2 2021-05-28 16:23:01 +02:00
Lukas Obermann f8114c2f43 fix: "Tradition (Druid)" has invalid prerequisite in data
Fixes #1237
2021-05-28 14:57:47 +02:00
Lukas Obermann e40f995e34 fix: "Physiostabilis" name typo
Fixes #1234
2021-05-28 14:53:41 +02:00
Lukas Obermann ed74170865 fix: hook dagger is not marked as a parrying weapon
Fixes #1232
2021-05-28 14:42:15 +02:00
Lukas Obermann 8297455ddb fix: weapon advantage of Kriegsbogen has wrong DP bonus
Fixes #1074
2021-05-28 14:23:56 +02:00
Lukas Obermann 42891f070c fix: "Gaze into the Essence" spell is misspelled as "Gase into the Essence"
Fixes #1180
2021-05-28 14:19:54 +02:00
Lukas Obermann a5df7c863c fix: wrong English names for spell enhancements of Heptagramma
Fixes #848
2021-05-28 14:18:35 +02:00
Lukas Obermann ec9bd71e10 fix: special ability Deadly Thrust has SA Crossblock's rules text
Fixes #841
2021-05-28 14:16:57 +02:00
Lukas Obermann 21146eb2ab fix: wrong negative prerequisite for Aspect Knowledge entry
Fixes #1243
2021-05-28 14:12:46 +02:00
Lukas Obermann 16bd668313 fix: multiple database fixes
Fixes #854
Fixes #855
Fixes #1136
Fixes #1213
Fixes #1236
Fixes #1242
2021-05-28 14:06:52 +02:00
Lukas Obermann 6eeb430e83 build(release): 1.5.0-alpha.1 2021-05-27 22:23:05 +02:00
Lukas Obermann ae2fbad1c7 fix: equipment info crash 2021-05-27 17:49:34 +02:00
Lukas Obermann d647cf5f4e refactor: tried to reduce character sheet file size but did not work
See #1094
2021-05-26 23:11:15 +02:00
Lector e334e51685 Bugfix in MapToolExporter.ts: MD5 Hashes of the avatar is now based on the image.
Heros without Image are now exported with a stick-figure
2021-05-26 22:53:18 +02:00
Lukas Obermann 092343f45d fix: cannot remove dependent entry with multiple activations
Fixes #1097
2021-05-26 22:25:38 +02:00
Lukas Obermann 7ac4773b05 build(deps): upgrade to electron 13 and fix react-markdown integration 2021-05-26 22:24:27 +02:00
Lector 0b5713d6fd Removed Aspects. This feature is cancelled.
Finished all the rest. I think this version can be merged into the main-branch.
2021-05-26 05:09:12 +02:00
Lukas Obermann 6357b2c4b4 docs: port refactored issue templates from master branch 2021-05-24 12:20:15 +02:00
Lukas Obermann ea86624560 build(deps): fix vulnerabilities 2021-05-22 16:07:59 +02:00
Lector fe34bedc54 Added Spell-Property and Avatar-Export 2021-05-21 23:10:17 +02:00
Lukas Obermann c8094f5ef1 fix: filter professions with CTs higher than EL allows
Closes #1244
2021-05-11 11:06:54 +02:00
Lukas Obermann a02700eecc fix: brawling weapons have no parry on character sheet
Fixes #1229
2021-05-09 00:35:10 +02:00
Lukas Obermann fdde329de5 fix: profession with due to EL impossible attribute values can be selected
Fixes #1109
2021-05-09 00:26:38 +02:00
Lukas Obermann c1b2e267cb fix: spellworks from professions do not register dependencies
Fixes #1240
2021-05-08 23:19:24 +02:00
Lukas Obermann eb5a06884d fix: ini/mov modifiers on armor are handled as penalties
Fixes #1091
2021-05-08 22:06:34 +02:00
Lukas Obermann 0a59d9e5e5 fix: language specializations always cost 1 AP and are multi-buyable
Fixes #1082
2021-05-08 01:04:16 +02:00
Lukas Obermann 3ceeadbdf7 refactor: remove unnecessary logs 2021-05-07 23:46:08 +02:00
Lukas Obermann 28f260a2c4 fix: enhancements on transferred unfamiliar spells as dependency
Fixes #827
2021-05-07 23:42:49 +02:00
Lukas Obermann 5b6a4c8301 build(db): update database submodule 2021-05-06 20:22:43 +02:00
Lukas Obermann cc5ecd6f09 fix: portraits with transparency have black background
Fixes #800
2021-05-06 20:04:19 +02:00
Lukas Obermann 9179bb9ff6 perf: sort template list after filter 2021-05-06 15:34:18 +02:00
Lukas Obermann 6c63ab1b50 fix: primary attribute dropdown does not handle data correctly
Fixes #798
2021-05-06 15:00:26 +02:00
Lukas Obermann 3f9fae30a2 fix: 2H and i weapon settings missing on character sheet
Fixes #797
2021-05-06 14:42:32 +02:00
Lukas Obermann 2ad037ecbc fix: large spell selection and restrictions for Animists
Fixes #803
2021-05-06 12:38:57 +02:00
Lukas Obermann 3d755eb408 build(deps): upgrade to Electron 12 2021-05-06 12:17:30 +02:00
Lukas Obermann 2c6da7bd75 build: package-lock.json update 2021-05-06 01:29:24 +02:00
Lukas Obermann ccd7decc83 fix: include latest database changes 2021-05-06 01:28:26 +02:00
elyukai 397abe2b4a fix: previous database fixes
See #792, #824, #832, #850, #851, #1139, #1224
2021-05-05 23:06:54 +02:00
elyukai 3b05e69e27 fix: weight of Elves is not generated correctly
Fixes #813
2021-05-05 22:57:22 +02:00
elyukai 723e9106eb fix: patch security vulnerabilities 2021-05-05 22:55:57 +02:00
elyukai eef960f496 docs: add UI scaling hint for Linux 2021-05-04 11:03:19 +02:00
Lukas Obermann 6b706d3adb docs: improve sort order for ambiguity template 2021-03-24 15:05:03 +01:00
Lukas Obermann d3a6df526d docs: fix publication ambiguity name 2021-03-24 15:04:02 +01:00
Lukas Obermann a098a97509 docs: update question issue template
Update question issue template to be for questions to Ulisses only, since standard questions can be created as discussion instead.
2021-03-24 13:51:44 +01:00
Lukas Obermann 093a726cf2 Merge pull request #1125 from elyukai/Race-prerequisite-does-not-display-race-required-#1093
Race prerequisite does not display race required #1093
2021-03-24 12:15:34 +01:00
Pepelios 9d033d23df Update WikiActivatableInfo.tsx
remove prefixRace import as never used anymore
2021-03-24 09:02:25 +01:00
Lukas Obermann 912642a5ee Merge pull request #1135 from elyukai/issue-template/publication-bug-report
Update: issue template publication-bug-report.md
2021-03-23 21:56:29 +01:00
Lukas Obermann b92c19a3c8 Merge branch 'master' into issue-template/publication-bug-report 2021-03-23 21:52:45 +01:00
Lukas Obermann c2afd39946 Merge pull request #1134 from elyukai/issue-template/new-book-data
Update: issue template new-book-data.md
2021-03-23 21:45:17 +01:00
Lukas Obermann 444cb12892 Merge branch 'master' into issue-template/new-book-data 2021-03-23 21:42:51 +01:00
Lukas Obermann b1d7ad9ae1 Merge pull request #1133 from elyukai/issue-template/feature_request
Update: issue template feature_request.md
2021-03-23 21:42:35 +01:00
Lukas Obermann f16a8fe249 Merge branch 'master' into issue-template/feature_request 2021-03-23 21:35:02 +01:00
Käthe 764731d02f Implement Markdown Style Guidelines
... and small text changes
2021-03-23 21:34:15 +01:00
Lukas Obermann 02f24b24bc Merge pull request #1132 from elyukai/issue-template/bug-report
Update: issue template bug_report.md
2021-03-23 21:33:30 +01:00
Käthe ee30c4eaea Implement Markdown Style Guidelines 2021-03-23 21:29:49 +01:00
Käthe 8de7b51895 Shorten caption 2021-03-23 21:28:18 +01:00
Käthe 2c1cea9ef8 Implement Markdown Style Guidelines 2021-03-23 21:26:31 +01:00
Käthe f0e8ce17ab Implement Markdown Style Guide 2021-03-23 21:24:27 +01:00
Käthe b6112666b8 Update: issue template publication-bug-report.md
Better readability.
2021-03-23 21:00:50 +01:00
Käthe 99123d5ec0 Update: issue template new-book-data.md
Better readability.
2021-03-23 20:59:35 +01:00
Käthe 17424878e7 Update: issue template feature_request.md
For better readability after filling out the form.
2021-03-23 20:53:48 +01:00
Käthe e44e6f8832 Update: issue template bug_report.md
For better readability after filling out the form.
2021-03-23 20:51:44 +01:00
Pepelios c33e4f1821 Race prerequisite does not display race required #1093
removed "prefixRace" because it added an additional R_ to the lookup value for the races. e.g. value was R_4 (for dwarfs) but after the wrong additional prefixRace, the lookupvalue was R_R_4, which never could be found in any lookup table.
2021-03-22 18:15:54 +01:00
Lukas Obermann c1dab5b312 docs: add required software section 2021-03-19 21:15:24 +01:00
elyukai 31cf5d6c54 docs: add Philipp to imprint 2021-03-18 19:55:21 +01:00
elyukai 63243a2e9d docs: updated AUTHORS 2021-03-18 13:06:28 +01:00
Lukas Obermann 9017dff1fc Changes and prefilled spaces 2021-02-15 20:16:29 +01:00
Lukas Obermann 6a479949e7 docs: database rework issue template adjustments 2021-02-09 12:59:10 +01:00
Lector 228c401666 Money export now works. Tryed to fix attributes. 2021-02-08 12:25:03 +01:00
Lukas Obermann 052b5bbf2f Merge pull request #845 from elyukai/dependabot/npm_and_yarn/electron-10.2.0 2021-01-29 11:46:20 +01:00
dependabot[bot] f30efc84ce build(deps-dev): Bump electron from 10.1.3 to 10.2.0
Bumps [electron](https://github.com/electron/electron) from 10.1.3 to 10.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v10.1.3...v10.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-28 19:45:23 +00:00
Lector 9a2902c9e9 First semi-functioning Version of MapToolExporter.ts 2021-01-17 16:15:30 +01:00
Lector 9b44e29738 Continued work on MapToolExporter.ts 2021-01-12 22:05:55 +01:00
Lector 096af99794 Continued work on MapToolExporter.ts 2021-01-12 07:40:19 +01:00
Lector 073064c030 Continued work on MapToolExporter.ts
Added Strings for MapToolExporter.ts
2021-01-09 14:50:03 +01:00
LectorandLukas Obermann 1ff11d6e9a Update src/App/Utilities/MapToolExporter.ts
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2021-01-03 21:45:56 +01:00
Lector fa1c527381 Merge branch 'develop' into maptools_export
# Conflicts:
#	app/Database

Added maptools-Export-Button to PDF-Export (not finished yet)
2021-01-03 11:53:51 +01:00
elyukai 272095d0b9 build(submodule): bug fixes, mainly for Dutch
See #805
See #814
2020-12-23 16:03:17 +01:00
Lector f416587e33 work on compilable version 2020-12-23 14:42:26 +01:00
Lector cb3a4a24f2 Bugfixes in MapToolExporter.ts 2020-12-21 16:16:04 +01:00
Lector 20a0c7a055 Merge branch 'develop' into maptools_export
# Conflicts:
#	app/Database
#	package-lock.json
#	src/App/Views/Profile/PersonalData.tsx

Also continued work on MapToolExporter.ts
2020-12-18 13:58:59 +01:00
Lector 2ec6fd0ab5 Small changes for bugfix 2020-12-17 12:55:05 +01:00
Lector bea154d6e6 Added Zip-Library.
Worked on MapToolExporter.ts
Changed UI of the Export-Button
2020-12-09 09:15:30 +01:00
Lector 728c7e15a8 Continued work on MapToolExporter.ts 2020-12-08 10:49:47 +01:00
LectorandLukas Obermann 182cb92a20 Update src/App/Utilities/MapToolExporter.ts
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2020-12-07 20:03:49 +01:00
LectorandLukas Obermann 0531ffb657 Update src/App/Utilities/MapToolExporter.ts
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2020-12-07 19:47:43 +01:00
Lukas Obermann f9b4ab6ce4 refactor: added properties to weapon models 2020-12-07 17:55:41 +01:00
Lector 20242a117d misc improvements.
still doesnt work and i need some more advice in MapToolExporter.ts
2020-12-07 17:00:46 +01:00
LectorandLukas Obermann 0cf4c70b5c Update src/App/Actions/HerolistActions.ts
Co-authored-by: Lukas Obermann <lukas.obermann@icloud.com>
2020-12-02 23:54:34 +01:00
Lector a577f6b783 Code-Style teilweise angepasst 2020-12-02 22:56:35 +01:00
Lector d445a3a378 First prototype of the MapToolExporter.ts. There is only the content-xml exported right now. A lot of values need to be determined correctly. Right now there are a lot of dummy-values to check the XML-Output. 2020-11-29 01:23:07 +01:00
Lukas Obermann c58279cc95 fix: typo in effect of Bliksemblind spell (Dutch)
See #805.
2020-11-24 15:28:31 +01:00
Lukas Obermann d63a494305 build: fixed last version in changelog 2020-11-13 17:44:35 +01:00
Lukas Obermann 1df5ac8fee build: added missing prerelease changelog 2020-11-13 17:43:04 +01:00
Lukas Obermann 3edf16d8be build(release): 1.4.3-alpha.1 2020-11-13 17:06:25 +01:00
Lukas Obermann e63713687e fix(sheets): removed margin of hit zone sheet
Closes #788.
2020-11-13 17:06:01 +01:00
Lukas Obermann a35611b4d9 docs(release): added missing old German changelogs 2020-11-13 13:48:47 +01:00
Lukas Obermann 390dcb616a fix: adding LE should affect CON
It affected the STR minimum instead of the CON minimum.

Closes #787.
2020-11-13 12:29:26 +01:00
Lukas Obermann 8055218c8f build(release): added previous changelogs 2020-11-13 00:42:06 +01:00
Lukas Obermann 2cb392e511 build: automate excluding unfinished content
Automate removing unfinished languages and books from stable releases.
2020-11-12 18:19:43 +01:00
Lukas Obermann 8392e368ff Merge pull request #786 from elyukai/feature/restrict-ci-runs
ci: restrict push/pull_request events
2020-11-12 17:02:29 +01:00
Lukas Obermann 692e4011b5 build: fixed release scripts
They used the  --dry-run flag before.
2020-11-12 17:01:57 +01:00
Lukas Obermann bcd3bd0a64 ci: restrict push/pull_request events
This way, push events should not be triggered if pull_requests are made
towards on of the main branches.
2020-11-12 16:58:21 +01:00
Lukas Obermann 93f95c76be Merge pull request #785 from elyukai/feature/automatic-versioning
build: automatic versioning
2020-11-12 16:55:24 +01:00
Lukas Obermann 1af9bf192f build: finished standard-version config 2020-11-12 16:50:30 +01:00
Lukas Obermann 53fbaad5c1 build: added standard-version scripts 2020-11-12 04:04:14 +01:00
Lukas Obermann 4c9caef67a build: added standard-version with basic config 2020-11-12 04:01:21 +01:00
Lukas Obermann ae652e2e60 Merge pull request #782 from elyukai/feature/semantic-commits
feat: semantic commits
2020-11-12 00:51:13 +01:00
Lukas Obermann f18a032ce6 build: fixed TS errors due to bucklescript upgrade 2020-11-12 00:45:15 +01:00
Lukas Obermann 09f98bc094 style: fixed import issues due to last style fixes 2020-11-12 00:24:16 +01:00
Lukas Obermann dd77fc95dd style: fixed dependency upgrade errors
The typescript-eslint upgrade caused errors. Because some types and
values need to be named the same, ignore comments were added to fix
those cases. Remaining style issues due to the upgrade were fixed.
2020-11-12 00:17:57 +01:00
Lukas Obermann f63ea3c2d9 docs: added conventional commits note 2020-11-10 14:29:33 +01:00
Lukas Obermann 32aa20a890 ci: added commitlint workflow 2020-11-10 13:44:08 +01:00
Lukas Obermann 4bbe18092c build: added commitlint 2020-11-10 13:11:30 +01:00
Lukas Obermann acc58c37b0 build: Updated version and database 2020-11-08 22:48:36 +01:00
Lukas Obermann ad1c78ea58 Merge branch 'master' of https://github.com/elyukai/optolith-client 2020-11-08 17:35:46 +01:00
Lukas Obermann b4b477ec73 fix: Updated database to reflect changes from master 2020-11-08 17:35:41 +01:00
Lukas Obermann e11cbd6c52 Merge pull request #779 from elyukai/release/1.4.2
Release 1.4.2
2020-11-08 17:33:46 +01:00
Lukas Obermann b3f9010ef0 Merge 'master' into 'release/1.4.2' 2020-11-08 17:30:51 +01:00
Lukas Obermann 030a3270c3 version: Bumped to 1.4.2 2020-11-08 17:24:13 +01:00
Lukas Obermann 6b9d974db9 buid: Update database to reflect final changes 2020-11-08 17:21:01 +01:00
Lukas Obermann fdbdb24dee docs: Added changelog to reflect latest database changes 2020-11-08 16:41:11 +01:00
Lukas Obermann 42787b8912 build: Updated database to reflect latest changes 2020-11-08 16:36:42 +01:00
Lukas Obermann 7be6ffdd71 docs: Added French changelog for 1.4.2 2020-11-08 16:22:41 +01:00
Lukas Obermann 9ac3fed26e Merge pull request #776 from elyukai/JoveToo-patch-1
Dutch translation
2020-11-08 15:54:36 +01:00
Lukas Obermann f366309fb6 Merge branch 'develop' into JoveToo-patch-1 2020-11-08 15:51:28 +01:00
Lukas Obermann 21b5a4d568 Merge pull request #777 from LorenzCK/feature/ITA-1.4.2
Italian translation of 1.4.2 changelog
2020-11-08 15:51:02 +01:00
Lorenz Cuno Klopfenstein 9baac1a58e Italian translation of 1.4.2 changelog 2020-11-06 22:23:03 +01:00
JoveToo c35f238fd7 Update CHANGELOG.md 2020-11-05 19:32:54 +01:00
JoveToo a40e825f36 Dutch translation 2020-11-05 18:56:25 +01:00
Lukas Obermann 96ef705585 version: Bumped version to 1.4.2-alpha.7 2020-11-05 16:30:13 +01:00
Lukas Obermann c441e1696b fix: Only adjust page size on Mac
See #748 for details.
2020-11-05 16:27:54 +01:00
Lukas Obermann 2a4a2bcf8f build: Fixed tsconfig for webpack
Webpack requires an outut from the compiler.
2020-11-05 15:28:21 +01:00
Lukas Obermann c21a48866c version: Bumped version to 1.4.2-alpha.6 2020-11-05 15:12:32 +01:00
Lukas Obermann 349c83b6e4 docs: Updated changelog to reflect latest changes 2020-11-05 15:11:04 +01:00
Lukas Obermann 8d566f5bd1 build: Updated database to reflect latest changes 2020-11-05 15:03:34 +01:00
Lukas Obermann 775d35377f fix: Blank pages if texture is used
Reduces the height of the page on Mac and Linux.

Closes #748.
2020-11-05 14:42:31 +01:00
Lukas Obermann b24742206c refactor: Change main field to current main script 2020-11-05 14:09:32 +01:00
Lukas Obermann f630a28797 refactor: Remove unused renderer entry file 2020-11-05 12:23:52 +01:00
Lukas Obermann c6ee377057 build: Do not emit TSC output
TypeScript should only check types since building is done by webpack
2020-11-05 12:23:29 +01:00
Lukas Obermann 5ea3820113 build: Upgraded lock file version 2020-11-05 12:22:39 +01:00
Lukas Obermann acb6177317 build: Added CSS watcher and updated sass 2020-11-05 12:16:38 +01:00
Lukas Obermann 8c143fe12f fix: Missing portrait placeholder shown on character sheet
Closes #759.
2020-11-04 11:24:54 +01:00
Lukas Obermann 51abcdad5f fix: Allow uppercase image extensions
Closes #762.
2020-11-04 11:01:27 +01:00
Lukas Obermann 7e459970cc version: Bump to 1.4.2-alpha.5 2020-11-04 09:43:08 +01:00
Lukas Obermann 88f03e0e21 build: Updated databaseto reflect latest changes 2020-11-04 09:04:36 +01:00
Lukas Obermann b70c94358c docs: Updated changelog 2020-11-04 09:02:46 +01:00
Lukas Obermann 28ac73c7cb docs: Added Webpack changes to CONTRIBUTING 2020-10-29 17:27:36 +01:00
Lukas Obermann 3078f1f465 Bumped version to 1.4.2-alpha.4 2020-10-29 16:53:56 +01:00
Lukas Obermann 941acabc7d Merge pull request #769 from elyukai/feature/webpack
build: Added webpack
2020-10-29 16:52:42 +01:00
Lukas Obermann c6e36ed96b build: Added webpack 2020-10-29 16:47:16 +01:00
Lukas Obermann 23e413b53f build: Bumped version to 1.4.2-alpha.3
Forgot to change it to 1.4.2-alpha.2, thus twice increased.
2020-10-14 15:41:51 +02:00
Lukas Obermann d8a809bf92 docs: Added changelog for Ruf des Waldes typo
See #755.
2020-10-14 15:29:47 +02:00
Lukas Obermann 7e7c468dca docs: Updated changelogs to reflect latest changes 2020-10-14 14:54:55 +02:00
Lukas Obermann 5c3f0c27f9 fix: Followers of the Golden One allows IC C
Followers of the Golden One only allows liturgical chants up to IC B,
but it was allowed up to IC C.

Closes #754.
2020-10-14 13:36:50 +02:00
Lukas Obermann ee8033b62c fix: Allow pet skills to span multiple lines
The single line was too small to fit all relevant skills for a pet.

Closes #733.
2020-10-14 11:30:18 +02:00
Lukas Obermann b5c9ede02a chore: Bumped version number to 1.4.2-alpha.1 2020-10-13 17:01:30 +02:00
Lukas Obermann 63c93204ac docs: Updated changelog for 1.4.2-alpha.1 2020-10-13 17:00:28 +02:00
Lukas Obermann 95d6994c65 fix: Multiple skill styles are allowed
Closes #732.
2020-10-13 16:02:25 +02:00
Lukas Obermann 8ce6767b58 fix: Primary damage flat bonus if not present
Apply the primary attribute damage bonus to the flat damage even if the
base item does not have flat damage.

Related: #737.
2020-10-13 15:58:25 +02:00
Lukas Obermann 5da07d8638 fix: Apply Combat Techniques second selection
The profession option has not been applied to the character.

Closes #647.
2020-10-13 13:34:49 +02:00
Lukas Obermann 48bd37ae3e fix: Overlay overflows bottom edge 2020-10-13 12:57:16 +02:00
Lukas Obermann c52d5a4897 fix: Top margin of overlays too small
Closes #727.
2020-10-13 12:28:33 +02:00
Lukas Obermann 4123cc66e3 refactur: Improved main process logs 2020-10-13 00:43:47 +02:00
Lukas Obermann 0cbde7c3cc fix: Combat Techniques didnt use dedicated min/max calculation
Combat techniques didnt use the dedicated file for calculating if it can
be decreased and/or increased.

Closes #749.
2020-10-13 00:20:57 +02:00
Lukas Obermann 13921f06c3 refactor: Switched back to CommonJS modules 2020-10-13 00:00:14 +02:00
Lukas Obermann ab8e5ed632 feat: Upgrade packages 2020-10-12 23:59:50 +02:00
Lukas Obermann ab1cf43a37 Bumped version to 1.4.2-alpha.0 2020-09-28 18:33:31 +02:00
Lukas Obermann d63375084a Switch back to develop 2020-09-28 18:32:03 +02:00
Lukas Obermann 1289d95391 Merge pull request #722 from elyukai/release/1.4.0
Release 1.4.0 Backport
2020-09-28 18:30:57 +02:00
Lukas Obermann 8ce525e3ab Hotfix Italian version 2020-09-28 17:43:20 +02:00
Lukas Obermann 8ff055276e Merge pull request #721 from elyukai/release/1.4.0
Release 1.4.0
2020-09-28 16:45:03 +02:00
Lukas Obermann dbcfcdfdcb Only allow numbers in purse text fields 2020-09-28 16:40:51 +02:00
Lukas Obermann daf95e35b3 Fixed tests for all branches 2020-09-28 15:40:08 +02:00
Lukas Obermann f6c16227df Added relevant branches to GitHub Actions tests 2020-09-28 14:50:03 +02:00
Lukas Obermann a6ee74dfd8 Merge branch 'master' into release/1.4.0 2020-09-28 14:47:23 +02:00
Lukas Obermann 66d76426a7 Bumped version to 1.4.0 2020-09-28 14:44:44 +02:00
Lukas Obermann 6b281c4057 Switched database branch to master 2020-09-28 14:40:08 +02:00
Lukas Obermann c01d91c187 Updated database 2020-09-28 14:33:31 +02:00
Lukas Obermann 22da727071 Bumped version to 1.4.0-alpha.16 2020-09-28 14:29:05 +02:00
Lukas Obermann 11ffa12eb7 Purse Earn/Pay small refactorings 2020-09-28 14:27:37 +02:00
Lukas Obermann 2b5b87f820 Updated changelogs 2020-09-28 14:20:35 +02:00
Lukas Obermann b0f7feca02 Merge pull request #720 from elyukai/bugfix/giftverstaerkung-texts
fix: SA Giftverstärkung text
2020-09-28 13:31:17 +02:00
Lukas Obermann d223d380cb Switched submodule branch 2020-09-28 13:30:12 +02:00
Lukas Obermann 4130eb180d Updated database 2020-09-28 13:20:46 +02:00
Lukas Obermann 549b98b67f Merge pull request #719 from elyukai/bufgix/json-export-missing-extension
fix: JSON export missing extension
2020-09-28 13:07:35 +02:00
Lukas Obermann 56c83ee4b5 Added JSON extension to hero name 2020-09-28 13:06:20 +02:00
Lukas Obermann eeb94be654 Updated French changelog 2020-09-28 13:01:45 +02:00
Lukas Obermann bc77542759 Bumped version to 1.4.0-alpha.15 2020-09-25 23:31:49 +02:00
Lukas Obermann aa66e9cab6 Merge pull request #716 from elyukai/JoveToo-patch-1
Dutch translation
2020-09-25 01:17:36 +02:00
JoveToo 637e8965d3 Update CHANGELOG.md 2020-09-25 01:16:35 +02:00
Lukas Obermann 151370fb77 Merge branch 'develop' into JoveToo-patch-1 2020-09-25 01:09:27 +02:00
JoveToo 1fd8caaafc Dutch translation 2020-09-25 01:06:22 +02:00
Lukas Obermann 2b36e78fcd Merge pull request #715 from elyukai/feature/temporary-custom-entries
feat: Custom Entries – temporary solution
2020-09-25 00:42:58 +02:00
Lukas Obermann 0d4f6d3a36 Updated database to include all custom entry translations 2020-09-25 00:42:42 +02:00
Lukas Obermann 074f75a033 Updated changelogs 2020-09-24 15:25:16 +02:00
Lukas Obermann d9b8223ade Added custom entry feature
Dutch translation missing
2020-09-24 14:15:15 +02:00
Lukas Obermann 875fe0e948 Updated database to include new entries
Entries may include placeholder translations, though
2020-09-24 13:09:02 +02:00
Lukas Obermann 655658c59a Merge pull request #710 from elyukai/bugfix/zugvoegel-multiple-traditions
fix: SA Zugvoegel multiple traditions
2020-09-20 00:41:38 +02:00
Lukas Obermann 872728bb35 Fixed SA Zugvoegel functionality if a chant is available
for both the unfamiliar and the familiar tradition
2020-09-20 00:40:02 +02:00
Lukas Obermann 286c0babc5 Fixed TS errors 2020-09-20 00:19:24 +02:00
Lukas Obermann 88204a54a1 Disable checking updates on Linux
AppImageUpdater should take care of this itself
2020-09-20 00:16:14 +02:00
Lukas Obermann 76b2183954 Now always shows update button 2020-09-19 21:32:32 +02:00
Lukas Obermann 43bdc12cb7 Bumped version to 1.4.0-alpha.14 2020-09-19 20:31:15 +02:00
Lukas Obermann 3cef003549 Updated changelog to reflect current changes 2020-09-19 20:29:22 +02:00
Lukas Obermann 9cbb70ba52 Updated database for #609 2020-09-19 00:32:08 +02:00
Lukas Obermann bd7161062c Merge pull request #707 from elyukai/bugfix/enemy-sense-combat-techniques
fix: SA Enemy Sense applicable combat techniques
2020-09-18 23:28:01 +02:00
Lukas Obermann 080670ced1 Updated database 2020-09-18 23:26:50 +02:00
Lukas Obermann aec0cac9ac Merge pull request #706 from elyukai/bugfix/disable-updater
fix: Disable updater on systems where it does not work
2020-09-18 23:08:48 +02:00
Lukas Obermann 815f4e6344 Added a function to check if updates are possible
Not sure if it works with .tar.gz packaged for Linux
2020-09-18 23:05:25 +02:00
Lukas Obermann cf4b44b5b0 Merge pull request #705 from elyukai/bugfix/duplicate-english-armors
fix: Duplicated English armors
2020-09-18 21:59:14 +02:00
Lukas Obermann a61fa495b3 Updated database 2020-09-18 21:57:53 +02:00
Lukas Obermann fde91bdcab Merge pull request #704 from elyukai/bugfix/gletscherform-effect
fix: Gletscherform effect text
2020-09-18 21:47:06 +02:00
Lukas Obermann 16e39566cc Updated database 2020-09-18 21:46:04 +02:00
Lukas Obermann 7ac849be21 Merge pull request #703 from elyukai/bugfix/gift-melken-uses
Fix: SA Gift melken grants use
2020-09-18 21:39:48 +02:00
Lukas Obermann fab2c017b8 Update database 2020-09-18 21:38:31 +02:00
Lukas Obermann a608e925df Merge pull request #702 from elyukai/bugfix/sheet-length-values-not-floored
Fix: Floor values with a unit on character sheet
2020-09-18 21:22:22 +02:00
Lukas Obermann 49dd8ab6be Fixed flooring values with a unit 2020-09-18 21:21:11 +02:00
Lukas Obermann 6a422fa528 Merge pull request #701 from elyukai/bugfix/profession-second-ct-bonus
Fix: Second combat technique bonus in professions
2020-09-18 21:09:15 +02:00
Lukas Obermann 35e63a40b1 Fixed disabling active combat technique in the other list 2020-09-18 21:07:13 +02:00
Lukas Obermann 31522b85b4 Fixed displaying second combat technique bonus in wiki 2020-09-18 21:06:48 +02:00
Lukas Obermann d0960fa4f8 Merge pull request #700 from elyukai/bugfix/arcane-traditions-prerequisites
Fix: Arcane traditions prerequisites
2020-09-18 19:47:13 +02:00
Lukas Obermann a46bdd7fff Merged database 2020-09-18 19:43:25 +02:00
Lukas Obermann 5276dea8c4 Merge branch 'develop' into bugfix/arcane-traditions-prerequisites 2020-09-18 19:41:14 +02:00
Lukas Obermann 526a80d168 Added new arcane tradition univ parser
Added arcane traditions as fixed select options
Removed special logic not needed because of fixed options
2020-09-18 19:39:54 +02:00
Lukas Obermann 06d175904a Merge pull request #699 from elyukai/bugfix/arcane-dancer-professions
Fix: Arcane Dancer professions
2020-09-18 10:57:47 +02:00
Lukas Obermann b3ea4e62b0 Switched database to develop 2020-09-18 10:57:14 +02:00
Lukas Obermann 82baf13397 Changed database 2020-09-18 10:54:28 +02:00
Lukas Obermann 152e2a133f Merge pull request #698 from elyukai/bugfix/hexenblick-restriction
Fix: Witch's Gaze restriction
2020-09-16 22:09:46 +02:00
Lukas Obermann 445f67fd06 Merge branch 'develop' into bugfix/hexenblick-restriction 2020-09-16 22:06:31 +02:00
Lukas Obermann dcdbd15118 Fixed Witch's Gaze restriction 2020-09-16 22:05:04 +02:00
Lukas Obermann b086de5066 Merge pull request #697 from elyukai/bugfix/aspect-knowledge
Fix: Aspect Knowledge
2020-09-16 21:39:34 +02:00
Lukas Obermann 666c729e43 Fixed aspect knowledge 2020-09-16 21:36:54 +02:00
Lukas Obermann e5aed52707 Fixed Liturgical Chant list keys
Removed innecessary traces
2020-09-16 21:04:52 +02:00
Lukas Obermann 669ce2057d Merge pull request #695 from elyukai/bugfix/additional-lp-with-permanent
Bugfix: Issues with adding LP
2020-09-14 01:00:03 +02:00
Lukas Obermann 7fd7d277c7 Fixed maximum of LE that can be added if CON is 8 2020-09-14 00:48:07 +02:00
Lukas Obermann 3d750ce323 Fixed disabled function in derived characteristic component 2020-09-14 00:47:19 +02:00
Lukas Obermann 4bc8bb8ebf Merge pull request #693 from elyukai/bugfix/fachwissen-unexpected-chars
Bugfix: SA Fachwissen unexpected chars
2020-09-14 00:34:42 +02:00
Lukas Obermann f9a13d56bc Fixed unexpected character in rendered name of SA Fachwissen 2020-09-14 00:33:38 +02:00
Lukas Obermann 34c72bf6ac Merge pull request #691 from elyukai/docs/css-build-in-starter-guide
Docs: CSS build in starter guide
2020-09-13 01:21:05 +02:00
Lukas Obermann e4bb5385f0 Added build shorthand
Added CSS build to first run descriptions
2020-09-13 01:19:58 +02:00
Lukas Obermann 25cddaddc5 Merge pull request #688 from elyukai/bugfix/list-header-text-align
Fix list header text align
2020-09-12 12:02:57 +02:00
Lukas Obermann 78f10da735 Fixed list header text align 2020-09-12 12:01:20 +02:00
Lukas Obermann 3403502004 Merge pull request #687 from elyukai/bugfix/kind-der-natur-multiselect
Enable multiselect for Kind der Natur and similar special abilities
2020-09-11 23:36:09 +02:00
Lukas Obermann 910a006c28 Fixes #649.
Added multiple options to special ability selection.
Sums up AP value.
Displays all skills' names in parenthesis.
2020-09-11 23:30:32 +02:00
Lukas Obermann 8b4cb2b95d Merge pull request #684 from elyukai/feature/remove-tracked-scss-build
Feature: Remove tracked SCSS build from repo
2020-09-11 01:27:39 +02:00
Lukas Obermann ad4f2ecf16 Merge branch 'develop' into feature/remove-tracked-scss-build 2020-09-11 01:26:35 +02:00
Lukas Obermann c04ce290ec Added built CSS to .gitignore 2020-09-11 01:24:15 +02:00
Lukas Obermann cfc8dc65fb Added Sass build to build workflows 2020-09-11 01:23:24 +02:00
Lukas Obermann dad8ffe2b7 Remove SCSS build 2020-09-11 01:22:44 +02:00
Lukas Obermann 99031a2200 Merge pull request #683 from elyukai/bugfix/list-item-info-text-no-overflow
Fix: Secondary list item texts were not restricted in size
2020-09-11 01:19:09 +02:00
Lukas Obermann 174f4d9cc2 Forgot to recompile SCSS 2020-09-11 01:15:59 +02:00
Lukas Obermann 5e6ec3290c Replaced magic number with enum value 2020-09-11 01:15:04 +02:00
Lukas Obermann 8995884070 Added overflow restriction for secondary list item text 2020-09-11 01:14:49 +02:00
Lukas Obermann f48ff3bec8 Updated database 2020-09-11 00:10:20 +02:00
Lukas Obermann 8a25ff9177 Added OS string to update url 2020-09-10 10:44:14 +02:00
Lukas Obermann b3d9ad082e Bumped electron-builder
Simplyfied build.js
Added logging to electron error
2020-09-09 23:33:44 +02:00
Lukas Obermann ea995f4b85 Bumped Optolith version 2020-09-09 22:53:06 +02:00
Lukas Obermann 7cf2c253db Moved defining prerelease folder to scripts 2020-09-09 22:38:12 +02:00
Lukas Obermann 8de2e4287f Some GitHub Actions naming adjustments 2020-09-09 21:50:15 +02:00
Lukas Obermann 9f8e8f4ac3 Fixed switch fallthrough 2020-09-09 20:28:38 +02:00
Lukas Obermann 6467d0bdfb Fixed JS script name 2020-09-09 20:24:37 +02:00
Lukas Obermann b3a3476d66 Reworked build scripts 2020-09-09 20:21:21 +02:00
Lukas Obermann 2c102af348 Added environment variables to build step 2020-09-09 19:37:29 +02:00
Lukas Obermann e21280f809 Added French bugfix changelog
Bumped version
2020-09-09 19:09:04 +02:00
Lukas Obermann 3038efe55d Fixed build trigger 2020-09-09 18:53:35 +02:00
Lukas Obermann 5fd969f0f6 Merge pull request #682 from elyukai/feature/github-actions-releases
Release Workflows
2020-09-09 18:49:13 +02:00
Lukas Obermann 8231129cd8 Removed Travis 2020-09-09 18:47:39 +02:00
Lukas Obermann 57f087f8e0 Switched to array 2020-09-09 18:46:55 +02:00
Lukas Obermann 5a094efd31 Fixed release regex 2020-09-09 18:44:47 +02:00
Lukas Obermann 3d60a25f3a Fixed prerelease regex #2 2020-09-09 18:44:19 +02:00
Lukas Obermann c68634b3ef Fixed tag regex 2020-09-09 18:36:43 +02:00
Lukas Obermann 07d4cb5cfe Added Releases build workflow 2020-09-09 18:36:07 +02:00
Lukas Obermann 69658b361b Fixed job id 2020-09-09 18:34:43 +02:00
Lukas Obermann facf25cf2a Added prerelease builds config 2020-09-09 18:32:05 +02:00
Lukas Obermann 05fef37a1a Fixed stable Mac script name 2020-09-09 18:30:53 +02:00
Lukas Obermann 3bd8ed015d Changed prerelease script names 2020-09-09 18:30:08 +02:00
Lukas Obermann 8b4a632ee4 Create prerelease workflow 2020-09-09 18:15:23 +02:00
Lukas Obermann f01ab59b67 Merge pull request #631 from elyukai/dependabot/npm_and_yarn/electron-8.2.4
Bump electron from 8.2.0 to 8.2.4
2020-09-09 17:40:52 +02:00
Lukas Obermann 1b5c718295 Merge branch 'master' into dependabot/npm_and_yarn/electron-8.2.4 2020-09-09 17:36:58 +02:00
Lukas Obermann 6162e811c5 Merge pull request #644 from elyukai/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-09-09 17:36:44 +02:00
Lukas Obermann 4383b420ac Merge pull request #681 from elyukai/bugfix/typescript-emit-esmodules
Bugfix: TypeScript emit ES Modules
2020-09-09 17:35:22 +02:00
Lukas Obermann d9e89d294d Changed default tsconfig module value to ES modules 2020-09-09 17:33:43 +02:00
Lukas Obermann aa83244e85 Merge pull request #679 from elyukai/feature/database-submodule
Feature: Database Submodule
2020-09-09 15:59:40 +02:00
Lukas Obermann c71641c7b1 Updated CONTRIBUTING to include the submodule 2020-09-09 15:55:53 +02:00
Lukas Obermann 07efadfbf9 Removed removed scripts from Actions 2020-09-09 15:49:45 +02:00
Lukas Obermann 714a3c8d7a Fixed YAML read function
Fixed Travis build config
Removed now unnecessary scripts for Travis
2020-09-09 15:45:57 +02:00
Lukas Obermann b7cd6d8050 Merge branch 'feature/database-submodule' of https://github.com/elyukai/optolith-client into feature/database-submodule 2020-09-09 15:20:30 +02:00
Lukas Obermann 2572d8991f Removed now unnecessary scripts
Fixed TS errors
2020-09-09 15:20:26 +02:00
Lukas Obermann ac900abad8 Added submodule option 2020-09-09 15:09:20 +02:00
Lukas Obermann 56452f154b Added submodule 2020-09-09 15:01:39 +02:00
Lukas Obermann 46f08abf04 Added changelog for latest pull requests 2020-09-09 13:53:34 +02:00
Lukas Obermann c63c30d5e6 Merge pull request #678 from elyukai/bugfix/attributes-minimum-for-checks
Bugfix: Attribute Minimum for Checks
2020-09-09 13:51:05 +02:00
Lukas Obermann 4511ece3b8 Merge branch 'develop' into bugfix/attributes-minimum-for-checks 2020-09-09 13:10:30 +02:00
Lukas Obermann 06217988bd Integrated attribute skill check minimum functions 2020-09-09 13:08:32 +02:00
Lukas Obermann f409358015 Downgraded TypeScript to fix 356 unexpected errors (MINOR upgrade)
Replaced @ts-expect-error with @ts-ignore since 3.8.3 doesnt support that feature
2020-09-09 12:48:48 +02:00
Lukas Obermann 080e760600 Fixed tests 2020-09-09 12:28:16 +02:00
Lukas Obermann 2772154352 Moved some testing files to TS, but does not work yet 2020-09-09 00:30:07 +02:00
Lukas Obermann d03fd862d4 Added cache initialization 2020-09-09 00:29:06 +02:00
Lukas Obermann 86d3a6aa13 Upgraded jest and ts-jest 2020-09-08 20:49:39 +02:00
Lukas Obermann 0b3deba653 Finished functions to handle skill check attributes 2020-09-04 01:53:18 +02:00
Lukas Obermann d5d205dde2 Implemented attribute check cache build and modifiers 2020-08-30 15:57:43 +02:00
Lukas Obermann 9e547f1ac3 Started writing helper functions and tests 2020-08-25 11:37:56 +02:00
Lukas Obermann 757160f909 Added Portuguese templates for changelog and FAQ 2020-08-25 00:39:49 +02:00
Lukas Obermann 039bdca0e8 Merge pull request #673 from LorenzCK/feature/ITA-docs
Docs localization in Italian
2020-08-20 17:15:19 +02:00
Lorenz Cuno Klopfenstein 4057e26102 Docs localization in Italian 2020-08-20 15:55:05 +02:00
Lukas Obermann 7f76f236bc Removed unnecessary FAQ for Italian 2020-08-20 13:00:00 +02:00
Lukas Obermann fbcebdf8bb Merge pull request #671 from elyukai/bugfix/missing-lances-character-sheet
Bugfix: Missing lances character sheet
2020-08-19 19:32:47 +02:00
Lukas Obermann 1f3e613d0c Added lances to melee weapons table
Replaces damage bonus with dash if none is present
2020-08-19 19:31:47 +02:00
Lukas Obermann 0ae1f835c0 Merge pull request #670 from elyukai/bugfix/tricks-duration
Bugfix: Missing range and duration for tricks
2020-08-19 19:11:59 +02:00
Lukas Obermann e018df7afd Added range and duration to tricks component 2020-08-19 19:07:16 +02:00
Lukas Obermann ee2b2b3a29 Merge pull request #669 from elyukai/bugfix/ui-zoom
Bugfix: UI Zoom
2020-08-19 18:41:32 +02:00
Lukas Obermann 225e05deb6 Fix ESLint issues 2020-08-19 18:37:44 +02:00
Lukas Obermann b39408a218 Added calling webFrame zoom limits
Added minimum scale to meta viewport tag
2020-08-19 18:31:47 +02:00
Lukas Obermann cda6d2322d Added missing changes to changelog 2020-08-16 23:33:58 +02:00
Lukas Obermann 61d8e9e112 Fixed YAML bug
Fixed vulnerability issues
Bumped version number
2020-08-16 16:01:07 +02:00
Lukas Obermann b254798d9e Updated database 2020-08-16 15:37:10 +02:00
Lukas Obermann ee2e354c17 Finished French FAQ translation and added placeholders for Italian files 2020-08-16 13:28:52 +02:00
Lukas Obermann a2f457e545 Merge pull request #664 from elyukai/JoveToo-patch-1
First attempt at Dutch translation for FAQ
2020-08-13 17:04:28 +02:00
JoveToo bf4e8d68c1 Removing Armor stuff 2020-08-13 17:02:51 +02:00
JoveToo eb2248c82e First attempt at Dutch translation
I am unsure what the Armor things are about, so i left them untranslated, I'll look it up and check it in later.
2020-08-13 14:43:35 +02:00
Lukas Obermann 2f4fac35a1 Updated FAQ and changelog for current prerelease 2020-08-12 23:25:02 +02:00
Lukas Obermann f8cf46f699 Merge pull request #648 from manuelstengelberger/feature/zoomableherosheet
Feature/zoomableherosheet
2020-07-21 20:14:20 +02:00
Manuel f890961114 zoomFactor default value 2020-07-21 18:45:43 +02:00
Manuel 06ae8991cd i18n 2020-07-21 17:38:19 +02:00
Manuel 23065c93f6 i18n 2020-07-21 16:55:48 +02:00
Manuel 51a63a3f08 zoomFactor now represented as number in config 2020-07-21 13:21:22 +02:00
Manuel 8072ee399f fixed lint errors 2020-07-19 15:49:34 +02:00
Manuel ad6e2d6f83 removed console.log 2020-07-19 15:12:24 +02:00
Manuel d861f80d20 fixed pdf output 2020-07-18 22:19:43 +02:00
Manuel 5abbbac935 fixed invisible horizontal scrollbar in hero sheet 2020-07-18 21:56:10 +02:00
Manuel 5347ddec4f zoomable herosheet 2020-07-18 20:55:11 +02:00
dependabot[bot] 2cad1dd6b6 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-16 19:38:32 +00:00
Lukas Obermann 505a6718ba Merge pull request #629 from Rahjenaos/fix/prevent_e_in_purse
prevent input of "e" in purse popup
2020-07-09 17:24:37 +02:00
dependabot[bot] 856c7da6cf Bump electron from 8.2.0 to 8.2.4
Bumps [electron](https://github.com/electron/electron) from 8.2.0 to 8.2.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.0...v8.2.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 00:31:37 +00:00
Jonas Zimmermann 5218562b53 prevent input of "e" in purse popup 2020-06-23 16:25:48 +02:00
Lukas Obermann 0e04abec01 Merge pull request #626 from Rahjenaos/fix/input-issues-purseaddremovemoney
input fields now only accept emptyString or natural numbers. rest is …
2020-06-19 14:31:33 +02:00
Jonas Zimmermann f54ddee6d6 input fields now only accept emptyString or natural numbers. rest is filtered out. 2020-06-18 23:48:33 +02:00
Lukas Obermann d2814197b7 Merge pull request #623 from Rahjenaos/feature/show-needed-armorsheets-only
show the proper armor sheet(s) depending on the type of armor(s) a ch…
2020-06-18 12:15:43 +02:00
Jonas Zimmermann 5b6b88c7e7 show the proper armor sheet(s) depending on the type of armor(s) a character has 2020-06-18 07:41:31 +02:00
elyukai 1d9b64eafc Fixed console output 2020-06-18 01:49:12 +02:00
elyukai 4773d98216 Switched SFTP client and updated tables 2020-06-18 01:25:24 +02:00
Lukas Obermann a5fd560998 Merge pull request #622 from Rahjenaos/feature/pdfparchmentbackground
allows to use a paper texture for hero sheet
2020-06-17 12:18:24 +02:00
Jonas Zimmermann 0adf7d86a1 added sheetUseParchment to config 2020-06-17 11:44:47 +02:00
Jonas Zimmermann b41cee0ff1 allows to use a paper texture for hero sheet 2020-06-16 23:28:55 +02:00
Lukas Obermann c11fb747cd Fixed issue with fallback language
When selecting a "larger" language as main, it didnt show any race
2020-06-15 13:17:06 +02:00
Lukas Obermann 18fbade7c6 Merge pull request #620 from Rahjenaos/feature/show-weight
show weight in belongings tab
2020-06-15 12:57:39 +02:00
Jonas 8f9f627a30 Merge branch 'develop' into feature/show-weight 2020-06-15 12:53:47 +02:00
Jonas Zimmermann bc1619b231 format the weight for the selected locale 2020-06-15 12:46:02 +02:00
elyukai 1342977583 Added updated YAML files 2020-06-15 09:44:32 +02:00
Lukas Obermann bb17ed75e1 Merge branch 'develop' into feature/show-weight 2020-06-15 09:18:28 +02:00
Lukas Obermann c5f68a4a1d Merge pull request #605 from Rahjenaos/feature/spend-money-from-purse
Feature/spend money from purse
2020-06-15 09:16:23 +02:00
Jonas Zimmermann 8fbdf55e51 show weight in belongings tab 2020-06-15 08:27:32 +02:00
Jonas Zimmermann 57b8c82a17 Merge branch 'feature/spend-money-from-purse' of https://github.com/Rahjenaos/optolith-client into feature/spend-money-from-purse 2020-06-11 20:24:14 +02:00
Jonas Zimmermann a3df7d264b improve indentation + remove superfluous <div> 2020-06-11 20:20:34 +02:00
Jonas Zimmermann be4ef2344d npm run 2020-06-11 20:17:31 +02:00
Jonas Zimmermann 86aee2b6e7 follow comments from PR: fix indentations and remove superfluous <div> 2020-06-04 22:25:22 +02:00
Jonas Zimmermann a78a0a8bd4 Merge branch 'feature/spend-money-from-purse' of https://github.com/Rahjenaos/optolith-client into feature/spend-money-from-purse 2020-06-04 19:30:54 +02:00
Jonas Zimmermann af1d47627c several changes to satisfy lint and make use of useCallback 2020-06-04 14:41:23 +02:00
Jonas Zimmermann 0f44de3812 change packages as requested in PR comment 2020-06-01 13:37:52 +02:00
Lukas Obermann 3cb2beb740 Merge branch 'develop' into feature/spend-money-from-purse 2020-06-01 10:14:21 +02:00
Jonas Zimmermann 098b658c70 adds a popup to the purse that allows a specified amount of money to be added to or subtracted from the currently owned money 2020-06-01 00:43:09 +02:00
Jonas Zimmermann dbb7bf4296 Textfield & TextfieldLazy now support min & max value. Input type number now hides the spinners 2020-06-01 00:32:49 +02:00
Lukas Obermann f6ee17b6cb Merge pull request #600 from elyukai/issue-598
zipBy and mergeBy should remove duplicates
2020-05-25 22:47:05 +02:00
Johan Verrept 702bb95615 More lint issues. 2020-05-25 21:47:30 +02:00
Johan Verrept dfe297ae4e Fixing lint issues. 2020-05-25 21:42:33 +02:00
Johan Verrept e9b6fb16b1 zipBy and mergeBy should remove duplicates 2020-05-25 19:36:05 +02:00
Lukas Obermann 8c0300ea6c Fixed YAML decryption for linting 2020-05-25 14:35:25 +02:00
Lukas Obermann 51e731c37a Added YAML decrypt for linting 2020-05-25 14:31:48 +02:00
Lukas Obermann 568386363e Fixed ESLint errors 2020-05-25 14:03:13 +02:00
Lukas Obermann 64533686ce Separated tests from linting 2020-05-25 12:14:16 +02:00
Lukas Obermann 63073329f9 Added updated tables 2020-05-25 12:03:37 +02:00
Lukas Obermann fbbf493f3e Merge pull request #561 from JoveToo/issue365
Fill up missing entries with second language entries
2020-05-25 11:58:19 +02:00
Lukas Obermann 2d78190baa Merge branch 'develop' into issue365 2020-05-25 11:58:00 +02:00
Johan Verrept 3e08cbb778 Use translated string of general.none. 2020-05-25 11:27:10 +02:00
Johan Verrept c1c04def86 Address comments. 2020-05-25 00:49:04 +02:00
Lukas Obermann a1f7e61c6f Merge pull request #595 from Rahjenaos/ux_improvement_open_wikientry
Allow clicking on the name of each entry in order to show the wiki en…
2020-05-23 12:39:17 +02:00
Lukas Obermann 7ca9e44634 Merge branch 'develop' into ux_improvement_open_wikientry 2020-05-23 12:39:00 +02:00
Jonas 45d9a6f934 Update SkillListItem.tsx
react to feedback: better indentation and remove use less empty line
2020-05-22 22:16:27 +02:00
Johan Verrept 6c5ad44c3f Rename *L10n entries to L10nOverride 2020-05-22 21:07:11 +02:00
Johan Verrept ba65734345 spacing 2020-05-22 20:51:08 +02:00
Johan Verrept bf097a7546 Add setting to settings menu to control fallback language. 2020-05-22 20:47:59 +02:00
Johan Verrept ff99b20219 This was completely wrong. It needs to zip by element key, not by
array index...
2020-05-22 18:44:28 +02:00
Johan Verrept afec30cb94 Correctly handle missing override entry in zipBy 2020-05-22 16:45:53 +02:00
Johan Verrept f535ec532d Switch using a base and an override language.
The base language is used unless there is an entry in
the override language. The changed code can handle
that there is an entry in the override language but
not the base language.
2020-05-22 16:16:28 +02:00
Lukas Obermann 16d590c6e2 Merge pull request #583 from flying-sheep/enable-devtools
Enable devtools
2020-05-22 12:30:37 +02:00
Lukas Obermann 185514e141 Merge branch 'develop' into enable-devtools 2020-05-22 12:28:24 +02:00
Lukas Obermann 717dd96c3d Merge pull request #582 from flying-sheep/enabled-professions
Show individually enabled professions as common
2020-05-22 12:28:08 +02:00
Lukas Obermann 8779e84713 Merge branch 'develop' into enabled-professions 2020-05-22 12:26:13 +02:00
Jonas Zimmermann 479659e871 Allow clicking on the name of each entry in order to show the wiki entry. You now have two ways of opening the wiki entry 2020-05-22 11:48:37 +02:00
JoveToo 8f03ae5694 Merge branch 'develop' into issue365 2020-05-22 01:34:29 +02:00
Lukas Obermann aaa7f547ce Update JS based on BS version bump 2020-05-21 23:03:11 +02:00
Philipp A 2532cc1de9 Switch to ESM, Enable devtools 2020-05-12 15:15:25 +02:00
Philipp A 2897742661 Show individually enabled professions as common 2020-05-12 15:04:07 +02:00
Lukas Obermann 3195e06eb5 Merge branch 'develop' of https://github.com/elyukai/optolith-client into develop 2020-05-08 17:18:53 +02:00
Lukas Obermann 2405a095de Fixed ESLint error 2020-05-08 17:18:49 +02:00
Lukas Obermann 50551e04a5 Fixes lint script 2020-05-08 17:12:02 +02:00
Lukas Obermann 55c4da857e Merge branch 'develop' of https://github.com/elyukai/optolith-client into develop 2020-05-08 17:09:24 +02:00
Lukas Obermann b1086ea312 Added lint script to test 2020-05-08 17:09:11 +02:00
Lukas Obermann 79548077ac Updated dependencies
Finished converting activatableCostUtils.ts into Reason
2020-05-08 17:03:00 +02:00
Lukas Obermann 2e22db6fcb Updated imprint 2020-05-07 12:45:52 +02:00
Lukas Obermann 9860293db5 Bumped version 2020-05-06 23:35:46 +02:00
Lukas Obermann 72051f32d2 Fixed Travis config 2020-05-06 22:58:10 +02:00
Lukas Obermann dd3077164e Renamed Electron build scripts 2020-05-06 22:56:36 +02:00
Lukas Obermann eacfbf9e6f Renamed Electron build scripts 2020-05-06 22:54:11 +02:00
Lukas Obermann bfd8609dac Restore prerelease version and YAML
state
2020-05-06 21:00:09 +02:00
Lukas Obermann 7daa67e72d Backport Release 1.3.2
Merge pull request #572 from elyukai/release/1.3.2
2020-05-06 20:51:50 +02:00
Lukas Obermann 897fae58e1 Merge branch 'develop' into issue365 2020-05-05 13:30:17 +02:00
Johan Verrept 3e1bfb3768 Swap the order of zipBy so it matches mergeBy, make sure it accepts
"undefined" as third argument.
2020-04-26 17:51:32 +02:00
Johan Verrept 449584bc33 Rename all .*Default to .*L10nDefault 2020-04-26 13:40:15 +02:00
Johan Verrept b23ed96733 Missing file.
Closes #365
2020-04-26 04:15:50 +02:00
Johan Verrept 0c74414f8e If a german entry exists and it does not exist for the local language, fall back
to the german entry.

Closes #365
2020-04-26 04:04:44 +02:00
817 changed files with 41372 additions and 58257 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"extends": ["@commitlint/config-conventional"]
}
+3
View File
@@ -1,3 +1,6 @@
src/App/Utilities/YAML/Schema/
*.js
*.gen.tsx
node_modules
/app
/deploy
+32 -11
View File
@@ -1,12 +1,15 @@
root: true
parser: "@typescript-eslint/parser"
plugins:
- "@typescript-eslint"
- eslint-plugin-react
- eslint-plugin-react-hooks
parser: "@typescript-eslint/parser"
- eslint-plugin-tsdoc
parserOptions:
ecmaVersion: 2020
ecmaVersion: latest
sourceType: module
project: ./tsconfig.json
project:
- ./tsconfig.json
ecmaFeatures:
jsx: true
env:
@@ -68,7 +71,12 @@ rules:
no-empty-pattern: 2
no-eq-null: 2
no-eval: 2
no-extend-native: 2
no-extend-native:
- 2
- exceptions:
- "Array"
- "Map"
- "Set"
no-extra-bind: 2
no-extra-label: 2
no-fallthrough: 2
@@ -93,7 +101,7 @@ rules:
no-octal-escape: 2
no-param-reassign: 2
no-proto: 2
no-redeclare: 2
no-redeclare: 0
no-return-assign: 2
no-script-url: 2
no-self-assign: 2
@@ -120,7 +128,7 @@ rules:
init-declarations: 2
no-delete-var: 2
no-label-var: 2
no-shadow: 2
no-shadow: 0
no-shadow-restricted-names: 2
# no-undef: 2
@@ -154,7 +162,7 @@ rules:
- consistent
function-paren-newline:
- 2
- consistent
- multiline-arguments
jsx-quotes: 2
key-spacing: 2
keyword-spacing: 2
@@ -192,7 +200,7 @@ rules:
- code: 100
ignoreComments: true
ignoreTemplateLiterals: true
ignorePattern: "^import |^export \\{(.*?)\\}|^ \\* "
ignorePattern: "^import |^export \\{(.*?)\\}|^ \\* |^ *it ?\\(\"\\w+"
max-statements-per-line: [2, { max: 2 }]
multiline-ternary:
- 2
@@ -307,7 +315,6 @@ rules:
"@typescript-eslint/await-thenable": 2
# "@typescript-eslint/class-name-casing": 2
"@typescript-eslint/consistent-type-assertions": 2
"@typescript-eslint/interface-name-prefix": 2
"@typescript-eslint/member-delimiter-style":
- 2
- multiline:
@@ -315,6 +322,14 @@ rules:
singleline:
delimiter: semi
requireLast: false
"@typescript-eslint/naming-convention":
- error
- selector: interface
format:
- PascalCase
custom:
regex: "^I[A-Z]"
match: false
"@typescript-eslint/no-floating-promises": 2
"@typescript-eslint/no-for-in-array": 2
"@typescript-eslint/no-inferrable-types": 2
@@ -361,10 +376,13 @@ rules:
no-extra-semi: 0
"@typescript-eslint/no-extra-semi": 2
no-unused-expressions: 0
"@typescript-eslint/no-redeclare": 2
"@typescript-eslint/no-shadow": 2
"@typescript-eslint/no-unused-expressions": 2
"@typescript-eslint/no-unused-vars-experimental":
"@typescript-eslint/no-unused-vars":
- 2
- ignoredNamesRegex: "^_"
- argsIgnorePattern: "^_"
varsIgnorePattern: "^_"
"@typescript-eslint/no-use-before-define": 2
no-useless-constructor: 0
"@typescript-eslint/no-useless-constructor": 2
@@ -470,6 +488,9 @@ rules:
# React Hooks
react-hooks/rules-of-hooks: 2
react-hooks/exhaustive-deps: 2
# TSDoc
tsdoc/syntax: warn
settings:
react:
version: detect
+13
View File
@@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: optolith # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
-33
View File
@@ -1,33 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: Bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- OS: [e.g. Windows 10]
- Version: [e.g. 1.1.0, 1.3.0-alpha.5]
**Additional context**
Add any other context about the problem here.
+73
View File
@@ -0,0 +1,73 @@
name: Bug report
description: Create a report to help improve Optolith
labels:
- Bug
body:
- type: checkboxes
id: agreements
attributes:
label: Please confirm the following
options:
- label: I checked the [current issues](https://github.com/elyukai/optolith-client/issues) for duplicate problems.
required: true
- type: textarea
id: description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: to-reproduce
attributes:
label: To Reproduce
description: |
Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
validations:
required: false
- type: dropdown
id: operating-system
attributes:
label: Operating System
description: Which operating systems have you used? You may select more than one.
multiple: true
options:
- macOS
- Windows
- Linux
validations:
required: true
- type: input
id: version
attributes:
label: Version
description: Which Optolith version have you used?
placeholder: 1.1.0, 1.3.0-alpha.5, …
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context about the problem here.
validations:
required: false
+15 -5
View File
@@ -7,14 +7,24 @@ assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
## Is your feature request related to a problem?
A clear and concise description of what the problem is. E.g. _I'm always frustrated when [...]_
## Describe the solution you'd like
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
## Describe alternatives
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
## Additional context
> Add any other context or screenshots about the feature request here.
+20 -11
View File
@@ -7,21 +7,30 @@ assignees: ''
---
**Sources**
## Sources
> List here what is included in this part of the book to implement. E.g., for special abilities, you need to list every source of entries from the book. Example (in German):
>
> - [ ] S. 133 (Berufsgeheimnisse)
> - [ ] S. 165-170 (Zauber- und Liturgiestile)
> - [ ] S. 183 (Stabzauber)
> - [ ] S. 195 (Zeremonialgegenstand Widderkeule)
> - S. 133150 (Berufsgeheimnisse)
**Tables**
> Delete Univ and change locale if necessary. Add specific entries if they could not be resolved.
- S. X (Section/Chapter Name)
- [ ] Univ
- [ ] L10n de-DE
**Code**
> List here what cannot be solved only using the tables. Example (in German):
## Special Notes
> List here any special hints to implement the sources listed above.
>
> - …
## Special Implementations
> List here what cannot be solved only using the database. Example (in German):
>
> - [ ] Voraussetzungen Vorliebe I-II
@@ -0,0 +1,23 @@
---
name: Publication ambiguity
about: An ambiguity in an official publication
title: ''
labels: 'Ulisses: Question'
assignees: ''
---
## Source(s)
Please complete the following information:
- Book: [e.g. Magic of Aventuria I]
- Printing: [e.g. 1st]
- Page(s): [e.g. 199]
- Area: [e.g. Profession Black Mage (Demirion Ophenos's Student), AP value]
## Describe the ambiguity
A clear and concise description of what the ambiguity is.
@@ -7,21 +7,33 @@ assignees: ''
---
**Source (please complete the following information):**
## Source (please complete the following information):
- Book: [e.g. Magic of Aventuria I]
- Printing: [e.g. 1st]
- Page(s): [e.g. 199]
- Area: [e.g. Profession Black Mage (Demirion Ophenos's Student), AP value]
**Describe the bug**
## Describe the bug
A clear and concise description of what the bug is.
**Expected text**
## Expected text
A clear and concise description of what the text *should* be instead.
**Optolith Version:**
## Optolith Version:
If applicable, the exact version of Optolith where you experience the bug, e.g. 1.2.0, 1.3.0-alpha.5.
**Additional context**
## Additional context
If needed, add any other context about the problem here.
-10
View File
@@ -1,10 +0,0 @@
---
name: Question
about: I have a question.
title: ''
labels: Question
assignees: ''
---
+15
View File
@@ -0,0 +1,15 @@
name: Commitlint
on: [pull_request]
jobs:
commitlint:
name: Lint commit messages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@v2
with:
configFile: .commitlintrc.json
+66
View File
@@ -0,0 +1,66 @@
name: Prerelease Builds
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+-[a-z]+.[0-9]+
jobs:
build:
name: Build ${{ matrix.osName }} Prerelease
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macOS-latest
include:
- os: ubuntu-latest
osName: Linux
- os: windows-latest
osName: Windows
- os: macOS-latest
osName: macOS
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
submodules: true
- name: Use Node.js 18.x
uses: actions/setup-node@v1
with:
node-version: 18.x
- name: Install Node.js dependencies
run: npm ci
- name: Compile JavaScript files
run: npm run js:build
- name: Compile Sass files
run: npm run css:build
- name: Build macOS application
if: runner.os == 'macOS'
run: node ./deploy/build.mjs prerelease
env:
APPLEID: ${{ secrets.APPLEID }}
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
TEAMID: ${{ secrets.TEAMID }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Build Linux application
if: runner.os == 'Linux'
run: node ./deploy/build.mjs prerelease
env:
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Build Windows application
if: runner.os == 'Windows'
run: node ./deploy/build.mjs prerelease
env:
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Deploy
run: node ./deploy/deploy.mjs prerelease
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
ROOT: ${{ secrets.ROOT }}
+66
View File
@@ -0,0 +1,66 @@
name: Stable Builds
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+
jobs:
build:
name: Build ${{ matrix.osName }} Stable
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macOS-latest
include:
- os: ubuntu-latest
osName: Linux
- os: windows-latest
osName: Windows
- os: macOS-latest
osName: macOS
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
submodules: true
- name: Use Node.js 18.x
uses: actions/setup-node@v1
with:
node-version: 18.x
- name: Install Node.js dependencies
run: npm ci
- name: Compile JavaScript files
run: npm run js:build
- name: Compile Sass files
run: npm run css:build
- name: Build macOS application
if: runner.os == 'macOS'
run: node ./deploy/build.mjs stable
env:
APPLEID: ${{ secrets.APPLEID }}
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
TEAMID: ${{ secrets.TEAMID }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Build Linux application
if: runner.os == 'Linux'
run: node ./deploy/build.mjs stable
env:
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Build Windows application
if: runner.os == 'Windows'
run: node ./deploy/build.mjs stable
env:
UPDATE_URL: ${{ secrets.UPDATE_URL }}
- name: Deploy
run: node ./deploy/deploy.mjs stable
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
ROOT: ${{ secrets.ROOT }}
+38 -28
View File
@@ -1,39 +1,49 @@
name: TS/RE Tests
name: Integration
on:
push:
branches:
- develop
branches:
- master
- develop
pull_request:
branches:
- develop
- master
- develop
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Use Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: 3.x
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install cryptography
- name: Install Node.js dependencies
run: npm ci
- run: npm run yaml:decrypt
env:
OPTOLITH_KEY: ${{ secrets.OPTOLITH_KEY }}
- run: npm run ci:copyschemes
- run: npm run re:build
- run: npm run ts:build
- run: npm test
env:
CI: true
- uses: actions/checkout@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
submodules: true
- name: Use Node.js 18.x
uses: actions/setup-node@v1
with:
node-version: 18.x
- name: Install Node.js dependencies
run: npm ci
- name: Compile TypeScript files
run: npm run ts:build
- name: Run tests
run: npm test
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
submodules: true
- name: Use Node.js 18.x
uses: actions/setup-node@v1
with:
node-version: 18.x
- name: Install Node.js dependencies
run: npm ci
- name: Run linter
run: npm run lint
+3 -2
View File
@@ -6,13 +6,15 @@ npm-debug.log*
/dist/
.rpt2_cache
.esm-cache
app/index.html
app/main.css
app/**/*.js
app/**/*.js.map
!app/index.js
!app/esmPreload.js
/installer/
electron-builder.env
*.map
app/Database
publishSettings.json
.env*
@@ -20,7 +22,6 @@ publishSettings.json
Tables.zip
tables/
deploy/tablesSrc.json
src/App/Utilities/YAML/Schema/
/lib/bs/
.merlin
.bsb.lock
+3
View File
@@ -0,0 +1,3 @@
[submodule "app/Database"]
path = app/Database
url = https://github.com/elyukai/optolith-data.git
-94
View File
@@ -1,94 +0,0 @@
language: node_js
node_js:
- node
sudo: required
stages:
- Test
- name: Build
if: tag ~= /^v\d+\.\d+\.\d+$/
# if: branch = master
- name: Build Insider
if: tag ~= /^v\d+\.\d+\.\d+\-\w+\.\d+$/
# if: branch = develop
jobs:
include:
# Test stage
- stage: Test
os: linux
install:
- sh ./.travis/InstallLinux.sh
script:
- npm run ci:copyschemes
- npm run re:build
- npm test
- npm run lint
# Normal build stage
- stage: Build
name: Build Windows
os: windows
install:
- ./.travis/InstallWin.bat
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run release:win
- name: Build Linux
os: linux
install:
- sh ./.travis/InstallLinux.sh
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run release:linux
- name: Build OSX
os: osx
osx_image: xcode11.2
install:
- sh ./.travis/InstallMac.sh
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run release:osx
# Insider build stage
- stage: Build Insider
name: Build Windows Insider
os: windows
install:
- ./.travis/InstallWin.bat
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run prerelease:win
- name: Build Linux Insider
os: linux
install:
- sh ./.travis/InstallLinux.sh
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run prerelease:linux
- name: Build OSX Insider
os: osx
osx_image: xcode11.2
install:
- sh ./.travis/InstallMac.sh
script:
- npm run ci:copyschemes
- npm run re:build
- npm run ts:build
- npm run prerelease:osx
-15
View File
@@ -1,15 +0,0 @@
# Updated local cache
echo apt update
sudo apt update
# Install python and pip
echo apt install -y python3 python3-pip python3-setuptools python3-dev build-essential libssl-dev libffi-dev
sudo apt install -y python3 python3-pip python3-setuptools python3-dev build-essential libssl-dev libffi-dev
# Install needed package
echo python3 -m pip install cryptography
python3 -m pip install cryptography
# Decrypt tables
echo python3 prepareTables.py
python3 prepareTables.py
# Prepare node
echo npm ci
npm ci
-9
View File
@@ -1,9 +0,0 @@
# Install python from homebrew
# Not necessary. Python already installed!
# brew install python
# Install neded packages
python3 -m pip install cryptography
# Decrypt tables
python3 prepareTables.py
# Prepare node
npm ci
-12
View File
@@ -1,12 +0,0 @@
REM Install python
choco install python --version 3.7.2
REM Install pip
choco install pip
REM Install OpenSSL
choco install openssl.light
REM Install needed packages
C:/Python37/python.exe -m pip install cryptography
REM Decrypt tables
C:/Python37/python.exe prepareTables.py
REM Prepare node
npm ci
+15
View File
@@ -0,0 +1,15 @@
{
"types": [
{ "type": "feat", "section": "Features" },
{ "type": "fix", "section": "Bug Fixes" },
{ "type": "build", "hidden": true },
{ "type": "chore", "hidden": true },
{ "type": "ci", "hidden": true },
{ "type": "docs", "hidden": true },
{ "type": "style", "hidden": true },
{ "type": "refactor", "hidden": true },
{ "type": "perf", "hidden": true },
{ "type": "test", "hidden": true }
],
"releaseCommitMessageFormat": "build(release): {{currentTag}}"
}
+23 -3
View File
@@ -2,16 +2,36 @@
"version": "0.2.0",
"configurations": [
{
"name": "Debug Main Process",
"type": "node",
"name": "Electron: Debug Main",
"type": "pwa-node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
"windows": {
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"
},
"args" : ["."],
"runtimeArgs": [
"--remote-debugging-port=9223",
"."
],
"outputCapture": "std"
},
{
"name": "Electron: Attach Renderer",
"type": "chrome",
"request": "attach",
"port": 9223,
"webRoot": "${workspaceFolder}",
"timeout": 30000
}
],
"compounds": [
{
"name": "Electron: Debug All",
"configurations": [
"Electron: Debug Main",
"Electron: Attach Renderer"
]
}
]
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"typescript.tsdk": "node_modules\\typescript\\lib",
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.preferences.quoteStyle": "double",
"javascript.preferences.quoteStyle": "double",
"files.exclude": {
+47 -53
View File
@@ -8,64 +8,19 @@
"type": "shell",
"tasks": [
{
"label": "build",
"command": "npm run build",
"problemMatcher": [
"$tsc"
]
},
{
"label": "buildTest",
"command": "npm run buildTest"
},
{
"label": "buildMac",
"command": "npm run buildMac"
},
{
"label": "buildMacTest",
"command": "npm run buildMacTest"
},
{
"label": "watch",
"command": "npm run watch"
},
{
"label": "bundle",
"command": "npm run bundle",
"problemMatcher": [
"$tsc"
]
},
{
"label": "run",
"label": "start",
"command": "npm start"
},
{
"label": "bundle_l10ns",
"command": "npm run bundle_l10ns"
},
{
"label": "bundle_data",
"command": "npm run bundle_data"
},
{
"label": "bundle_css",
"command": "npm run bundle_css"
},
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"isBackground": true,
"problemMatcher": [
"$tsc"
],
"label": "jest",
"command": "npm test",
"group": {
"kind": "build",
"kind": "test",
"isDefault": true
}
},
{
"label": "tsc watch",
"type": "typescript",
"tsconfig": "tsconfig.json",
"option": "watch",
@@ -73,11 +28,50 @@
"problemMatcher": [
"$tsc-watch"
],
"group": "build"
"group": "build",
"presentation": {
"group": "watch"
}
},
{
"type": "npm",
"script": "buildWin",
"label": "webpack watch",
"command": "npm run js:watch",
"isBackground": true,
"group": "build",
"presentation": {
"group": "watch"
}
},
{
"label": "sass watch",
"command": "npm run css:watch",
"isBackground": true,
"group": "build",
"presentation": {
"group": "watch"
}
},
{
"label": "watch",
"dependsOn": ["tsc watch", "webpack watch", "sass watch"],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "create prerelease",
"command": "npm run release:pre",
"problemMatcher": []
},
{
"label": "create release",
"command": "npm run release:main",
"problemMatcher": []
},
{
"label": "git push --follow-tags",
"command": "git push --follow-tags",
"problemMatcher": []
}
]
+2 -1
View File
@@ -1 +1,2 @@
Lukas Obermann <lukas.obermann@outlook.de>
Lukas Obermann <lukas.obermann@icloud.com>
Philipp Borucki <p.borucki@icloud.com>
+1073
View File
File diff suppressed because it is too large Load Diff
+33 -35
View File
@@ -28,23 +28,30 @@ You can suggest features either in the issues tracker or in one of the [listed f
### Important note
Due to licensing, the YAML files containing the crunch elements from the books are **not** included in this repository but in a separate private one. Please join my [Discord Server](https://discord.gg/uDyR4yr) if you want to contribute and thus need to access them. Just text me in a channel on the server or PN me (@elyukai).
Due to licensing, the YAML files containing the crunch elements from the books are **not** included in this repository but in a separate private one. If you only plan to contribute something independent of the database, you can just get the database from an alpha installation. On Windows, for example, the database is available under `Resources/app.asar.unpacked/app/Data` inside the installation folder. If you plan to contribute anything to the database itself and thus need to access its source, please join my [Discord Server](https://discord.gg/uDyR4yr) and text me in a channel on the server or PN me (@elyukai).
### Basic development rules
- Branches (mostly) follow Git Flow. Please try to follow Git Flow as well if you edit this repository. But if it's possible, please fork this repo and create PRs.
- Branches follow Git Flow. Please try to follow Git Flow as well if you edit this repository. But if it's possible, please fork this repo and create PRs.
- Commits need to follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), which is enforced by the CI and Git Hooks locally.
- Please check out the [Style Guide](https://github.com/elyukai/optolith-client/wiki/Code-Style-Guide) for more information on that topic! Sadly, TSLint cannot ensure the whole style so you partially need to take care of that on your own!
- There is a page covering [Naming Conventions](https://github.com/elyukai/optolith-client/wiki/Naming-Conventions) as well!
- The key criteria for the project are mentioned in the [README](README.md). They also apply to pull requests. A feature usually does not consist of the technical part only. Much more important is how the feature presents itself to the user. And that must be planned and discussed.
- Code should follow functional programming practices while maintaining readablilty &ndash; which can be an issue using JavaScript/TypeScript, which is why in certain circumstances imperative/OOP code is allowed. It is also possible to write Reason/OCaml code, which compiles to JS.
- The contribution has to be easy to understand not only for players using the app, but also for coders trying to further enhance the app: Please document at least module exports!
- The contribution has to be easy to understand not only for players using the app, but also for coders trying to further enhance the app: Please document *at least* module exports!
### Install required software
- **Git** &mdash; <https://git-scm.com/downloads> or via a package manager
- **Node.js** with **npm** &mdash; <https://nodejs.org/en/> or via [`nvm`](https://github.com/nvm-sh/nvm)
- *Optional:* **Visual Studio Code** &mdash; <https://code.visualstudio.com/> (you can use your own editor as well, there are project-specific VSCode settings within this repository, though)
### Prepare the repo
Clone the repo.
Clone the repo, including the private submodule.
```sh
git clone https://github.com/elyukai/optolith-client.git
git clone --recurse-submodules https://github.com/elyukai/optolith-client.git
```
Make sure Node.js (lastest version) is installed and run
@@ -55,45 +62,36 @@ npm i
This installs all necessary packages.
Create a `tablesSrc.json` in the `/deploy` folder. The JSON consists of an object that has the following interface:
```ts
{
repository: string[];
}
```
The array is consumed by `path.join` from Node.js and represents the relative path from the optolith client root folder to the root folder of the private repo with the YAMl database.
Example:
```json
{
"repository": ["..", "optolith-data"]
}
```
### First run
Import YAML files.
Compile the source code. `js:` is for TypeScript/Webpack, `re:` for Reason/OCaml and `css:` for CSS/Sass. Webpack does not check the TypeScript validity, to check this, use `ts:` commands.
You have to run the Reason build first as it generates TypeScript files...
```sh
npm run getstatic
```
Compile the source code. `ts:` is for TypeScript, `re:` for Reason/OCaml.
You have to run the Reason build first as it generates TypeScript files.
```sh
npm run re:build
npm run ts:build
npm run css:build
npm run js:build
```
&hellip;or watch it for better performance for subsequent compiling on save.
(There's also a shorthand for that:)
```sh
npm run build
```
&hellip;or watch it for better performance for subsequent compiling on save (you need to use separate terminal instances then).
```sh
npm run re:watch
npm run css:watch
npm run js:watch
```
To check the TypeScript validity, either check once or watch for changes (I'd always recommend to do the latter one).
```sh
npm run ts:build
npm run ts:watch
```
@@ -113,7 +111,7 @@ npm run css:build
### Miscellaneous
Clean the files built by the Reason compiler.
Clean the files built by the Reason compiler, if there are any issue with it.
```sh
npm run re:clean
-1
View File
File diff suppressed because one or more lines are too long
Submodule
+1
Submodule app/Database added at a43a1789d8
+211
View File
@@ -1,3 +1,214 @@
## 1.5.1
### Verbesserungen
* **MapTool:** unter dem Exportbutton sind nun Links zu der MapTool-Erweiterung ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Fehlerbehebungen
* **MapTool:** ohne Avatar konnte nicht exportiert werden ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), schließt [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** für MapTool Version 1.11.4 wurde das Exportformat angepasst ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
* Vorteil *Vertrauenerweckend* konnte selbst mit einem aktiven Nachteil *Inkompetent* in einem Gesellschaftstalent gekauft werden ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), schließt [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Voraussetzungen, die hätten durchgestrichen werden sollen, wurden stattdessen mit umgebenen Tilden dargestellt ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), schließt [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
### Features
* MapTool-Export ([87cec15](https://github.com/elyukai/optolith-client/commit/87cec15ba9751c329ee39719dc654895b9f4f193))
* Portugiesische Übersetzung ([d8c9f52](https://github.com/elyukai/optolith-client/commit/d8c9f52542120f9e5fa569728b3f11cb79102365), [#676](https://github.com/elyukai/optolith-client/issues/676))
* Native Unterstützung für Apples M1 ([94e751f](https://github.com/elyukai/optolith-client/commit/94e751fda169c4de90cdb82346d3d864cf697300))
### Verbesserungen
* Sicherheit ([723e910](https://github.com/elyukai/optolith-client/commit/723e9106ebb178db6a7cccec2a022b3edaed5b98) and others)
### Fehlerbehebungen
* Der Trefferzonenrüstungscharakterbogen hatte einen höheren Abstand nach links als die anderen Bögen ([e637136](https://github.com/elyukai/optolith-client/commit/e63713687eff9b825a79d159fb8b44dc26f64ffe), [#788](https://github.com/elyukai/optolith-client/issues/788))
* Bei hinzugekaufter LE wurde nicht für KO ein entsprechendes Minimum gesetzt, sondern für KK ([390dcb6](https://github.com/elyukai/optolith-client/commit/390dcb616aaa68e5b103bb49dd75d1529c4e7e3a), [#787](https://github.com/elyukai/optolith-client/issues/787))
* Waffenindikatoren für zweihändig (2H) und improvisiert (i) fehlten auf dem Charakterbogen ([3f9fae3](https://github.com/elyukai/optolith-client/commit/3f9fae30a2291b8e53486a74dae8cc1533741b94), [#797](https://github.com/elyukai/optolith-client/issues/797))
* Waffen der Kampftechnik Raufen hatten auf dem Charakterbogen keinen Paradewert ([a02700e](https://github.com/elyukai/optolith-client/commit/a02700eeccbd95a75f778d4d9e78ad7a2447dad8), [#1229](https://github.com/elyukai/optolith-client/issues/1229))
* Ein Eintrag, der von einer einzelnen Aktivierung eines anderen Eintrags abhängt, hat die Möglichkeit, die Aktivierung zu entfernen, auch bei mehreren Aktivierungen dieses anderen Eintrags nicht bereitgestellt ([092343f](https://github.com/elyukai/optolith-client/commit/092343f45da566a45b13b275899a458fed720a76), [#1097](https://github.com/elyukai/optolith-client/issues/1097))
* Einträge, die Fremdzauber in die eigenen Tradition überführen, konnten entfernt werden, wenn für diese Zauber Zaubererweiterungen gekauft worden waren ([28f260a](https://github.com/elyukai/optolith-client/commit/28f260a2c4a96adb0d36585a478676f95c304414), [#827](https://github.com/elyukai/optolith-client/issues/827))
* Der Infobereich für Gegenstände hat manchmal nur Fehler angezeigt ([ae2fbad](https://github.com/elyukai/optolith-client/commit/ae2fbad1c738354dd468c1b36b06eda729a879e5))
* Professionen, die höhere Kampftechnikwerte geben als durch den Erfahrungsgrad erlaubt, wurden nicht ausgeblendet ([c8094f5](https://github.com/elyukai/optolith-client/commit/c8094f5ef15f62f69088386b9fc6c64f7d8bfd02), [#1244](https://github.com/elyukai/optolith-client/issues/1244))
* Bei der Sonderfertigkeit Kernschuss war unter Erschwernis ein Minuszeichen falsch platziert ([ccd7dec](https://github.com/elyukai/optolith-client/commit/ccd7decc8314ca476b6a15932ed9b3fb1c22a1f7), [#1080](https://github.com/elyukai/optolith-client/issues/1080))
* In der Beschreibung von Albernisches Entermesser und Harbener Säbel war die Seitenzahl falsch ([ccd7dec](https://github.com/elyukai/optolith-client/commit/ccd7decc8314ca476b6a15932ed9b3fb1c22a1f7), [#1081](https://github.com/elyukai/optolith-client/issues/1081))
* In der Beschreibung des Zaubers Zauberschnurren waren die QS-Beschreibungen vertauscht ([ccd7dec](https://github.com/elyukai/optolith-client/commit/ccd7decc8314ca476b6a15932ed9b3fb1c22a1f7), [#846](https://github.com/elyukai/optolith-client/issues/846) [#1122](https://github.com/elyukai/optolith-client/issues/1122))
* Schlachtermesser und Fleischerbeil waren nicht als improvisierte Waffen markiert ([ccd7dec](https://github.com/elyukai/optolith-client/commit/ccd7decc8314ca476b6a15932ed9b3fb1c22a1f7), [#808](https://github.com/elyukai/optolith-client/issues/808))
* INI/GS-Modifikatoren von Rüstungen wurden negativ eingerechnet ([eb5a068](https://github.com/elyukai/optolith-client/commit/eb5a06884db1894e1a9f2b4b040b114cb4dc85cb), [#1091](https://github.com/elyukai/optolith-client/issues/1091))
* Sprachspezialisierungen kosteten nicht immer 1 AP und konnten zudem pro Sprache nicht mehrfach aktiviert werden ([0a59d9e](https://github.com/elyukai/optolith-client/commit/0a59d9e5e571e87525b18d0b25035e73f7cd87bf), [#1082](https://github.com/elyukai/optolith-client/issues/1082))
* Portraits mit transparenten Flächen hatten einen schwarzen Hintergrund ([cc5ecd6](https://github.com/elyukai/optolith-client/commit/cc5ecd6f098ae6c080eeb3b306887727a99c1220), [#800](https://github.com/elyukai/optolith-client/issues/800))
* Bei Profession Garether Krieger fehlte Schwerter auf 12 und Orientierung sollte 3 statt 2 betragen ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#792](https://github.com/elyukai/optolith-client/issues/792))
* Das bornländische Kulturpaket führte Lederbearbeitung statt Lebensmittelbearbeitung auf ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#824](https://github.com/elyukai/optolith-client/issues/824))
* Zauber Wirbelform hatte die falsche Tradition und eine falsche Reihenfolge bei den Zaubererweiterungen ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#1139](https://github.com/elyukai/optolith-client/issues/1139))
* Kleine Fehler bei den Maßangaben in der Beschreibung des Zaubers Invocatio Minima ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#1224](https://github.com/elyukai/optolith-client/issues/1224))
* Leiteigenschaftsänderungen bei Gegenständen wurden auf dem Charakterbogen geändert, aber nicht direkt im Editierfenster des Gegenstands ([6c63ab1](https://github.com/elyukai/optolith-client/commit/6c63ab1b5051882ace71f15740c3a69fff4a267f), [#798](https://github.com/elyukai/optolith-client/issues/798))
* Bestimmte Professionen waren trotz eines für vorausgesetzte Eigenschaften zu niedrigen Erfahrungsgrads auswählbar ([fdde329](https://github.com/elyukai/optolith-client/commit/fdde329de591319df3f6da11404dd7523d800c3e), [#1109](https://github.com/elyukai/optolith-client/issues/1109))
* Herbeirufende und beschwörende Zauber aus Professionen haben nicht direkt die Abhängigkeiten für ihre Voraussetzungen registriert ([c1b2e26](https://github.com/elyukai/optolith-client/commit/c1b2e267cb3f02d2d18812415c39c58739ad99ec), [#1240](https://github.com/elyukai/optolith-client/issues/1240))
* Das Gewicht bei Elfen wurde nicht korrekt zufällig generiert ([3b05e69](https://github.com/elyukai/optolith-client/commit/3b05e69e27f7faa1634b50eb134000fe1a2c3a21), [#813](https://github.com/elyukai/optolith-client/issues/813))
* Schreibfehler bei Physiostabilis ([e40f995](https://github.com/elyukai/optolith-client/commit/e40f995e341dc7fbcb1d9688c4b82a9187c180de), [#1234](https://github.com/elyukai/optolith-client/issues/1234))
* Tradition (Druide) referenzierte einen nicht existierenden Nachteil statt des Vorteils Eisenaffine Aura ([f8114c2](https://github.com/elyukai/optolith-client/commit/f8114c2f4318967631b71ea3614bf647e7826fa2), [#1237](https://github.com/elyukai/optolith-client/issues/1237))
* Der Hakendolch war nicht als Parierwaffe markiert ([ed74170](https://github.com/elyukai/optolith-client/commit/ed74170865b2caad8008a345db5c1705e0376bc5), [#1232](https://github.com/elyukai/optolith-client/issues/1232))
* Der Waffenvorteil des Kriegsbogens hatte einen falschen Schadensbonus ([8297455](https://github.com/elyukai/optolith-client/commit/8297455ddbd360035428a4ed244a684e6f1c7e7a), [#1074](https://github.com/elyukai/optolith-client/issues/1074))
* Profession Spinnenhexe hatte einen falschen Tierkunde-Wert ([#1250](https://github.com/elyukai/optolith-client/issues/1250))
* Eigenschaften auf dem niedrigsten möglichen Wert (8) erlaubten Kampftechniken, dessen Leiteigenschaften sie waren, keinen Kampftechnikwert über 6 ([47e66d6](https://github.com/elyukai/optolith-client/commit/47e66d65467999e2661eaac30a97b5a1ebfece94), [#835](https://github.com/elyukai/optolith-client/issues/835))
* Profession Sharisad bekam einen Bonus auf Steinbearbeitung statt auf Stoffbearbeitung ([cd16e53](https://github.com/elyukai/optolith-client/commit/cd16e5314a7f579a5f5f916bb204a15df3220bda), [#1341](https://github.com/elyukai/optolith-client/issues/1341))
* Die PDF-Datei war zu groß, wenn die Hintergrundtextur verwendet wurde ([9cb2658](https://github.com/elyukai/optolith-client/commit/9cb26586f3a5026d06f41801d4bbf714631d06a4), [#1094](https://github.com/elyukai/optolith-client/issues/1094))
* Bei AppImages funktionierte der Auto-Updater nicht ([a24ff80](https://github.com/elyukai/optolith-client/commit/a24ff8082a5556fc07af05f113bacfd9c84428a4), [#753](https://github.com/elyukai/optolith-client/issues/753))
* SF Weg der Schreiberin konnte nicht aktiviert werden ([83b534d](https://github.com/elyukai/optolith-client/commit/83b534d3f9fcd5e63ef7cf482d9dd26f06b5a1a2), [#1233](https://github.com/elyukai/optolith-client/issues/1233))
* Einige Leiteigenschaftsvoraussetzungen wurden ignoriert ([ac0cdc3](https://github.com/elyukai/optolith-client/commit/ac0cdc377800a1eb380993dbb7914fa88b8f254e), [#1260](https://github.com/elyukai/optolith-client/issues/1260))
* Die Texteingabefehler für die Reichweite von Fernkampfwaffen beeinflussten ihre Inhalte gegenseitig ([0ab65e8](https://github.com/elyukai/optolith-client/commit/0ab65e869c26536127b386753db110f2e26b33af), [#1251](https://github.com/elyukai/optolith-client/issues/1251))
* Wenn eine einzige Sprache und dazu passende Schrift vorausgesetzt wurden, wurden stattdessen alle Sprachen und Schriften vorausgesetzt ([4dabbdb](https://github.com/elyukai/optolith-client/commit/4dabbdbcd23c1ffeff18a8b1f9497a4a8315aa6a), [#1343](https://github.com/elyukai/optolith-client/issues/1343))
* Schriften erforderten keine aktive passende Sprache ([1ed0c64](https://github.com/elyukai/optolith-client/commit/1ed0c64b0dd9873593169bd9994082d49299fa3e), [#1344](https://github.com/elyukai/optolith-client/issues/1344))
* Einige Gegenstandswerte wurden nicht gespeichert ([f2e6138](https://github.com/elyukai/optolith-client/commit/f2e61386abe444aa76f0211469d50c30fde99a0c), [#1252](https://github.com/elyukai/optolith-client/issues/1252))
* Schreibfeler bei Tarnele ([8b5eede](https://github.com/elyukai/optolith-client/commit/8b5eedeb372622761480f2511935e8b74bdfcdcd), [#1330](https://github.com/elyukai/optolith-client/issues/1330))
* Die Auswahl eines Fremdzaubers für eine gildenmagische Profession war optional ([3574d1b](https://github.com/elyukai/optolith-client/commit/3574d1ba46725d04a83286cd1055c080fe1de95f), [#1315](https://github.com/elyukai/optolith-client/issues/1315))
* Kampftechniken haben nicht das Minimum ihrer Leiteigenschaften beeinflusst ([1ce2db9](https://github.com/elyukai/optolith-client/commit/1ce2db9cfbb06b1ca8a549957b8225af71de9185), [#836](https://github.com/elyukai/optolith-client/issues/836))
* Das Speichern eines Charakters hat manchmal die Änderungshistorie von mehreren Charakteren gelöscht ([923b760](https://github.com/elyukai/optolith-client/commit/923b7605fee4c4288dc743e962728308f7254ca9), [#811](https://github.com/elyukai/optolith-client/issues/811))
* Zauber, die durch Imitationszauberei in Schelmenstreiche konvertiert wurden, konnten Zaubererweiterungen nutzen ([e558c1d](https://github.com/elyukai/optolith-client/commit/e558c1d80d1c668f926e4a56049029f989081a45), [#828](https://github.com/elyukai/optolith-client/issues/828))
* Dickere Zeilen in der zweiten Spalte der Talenttabelle auf dem Charakterbogen ([41ee35b](https://github.com/elyukai/optolith-client/commit/41ee35ba76af42ad837daa6c45a940406b0c5daa), [#1342](https://github.com/elyukai/optolith-client/issues/1342))
* Sonderfertigkeit Blattschuss zeigte den falschen Kampfsonderfertigkeitstyp an ([7e31136](https://github.com/elyukai/optolith-client/commit/7e31136083ae62e26c5017f3af2376938bd264c3), [#1331](https://github.com/elyukai/optolith-client/issues/1331))
* Schreibfehler bei Tradition (Scharlatane) ([bdb3eb7](https://github.com/elyukai/optolith-client/commit/bdb3eb7804f8464689172f39d5bd8c229140c891), [#1239](https://github.com/elyukai/optolith-client/issues/1239))
### Danke
Zu guter Letzt ein großes **Danke** an alle, die über verschiedeste Kanäle Feedback geben und helfen, sowie an die folgenden Menschen auf GitHub, die an dieser Version mitgewirkt haben!
- [Elidia (@FloraMayr)](https://github.com/FloraMayr)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lector (@Lector)](https://github.com/Lector)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [Marc Schwering (@m4rcsch)](https://github.com/m4rcsch)
- [Pepelios (@Pepelios)](https://github.com/Pepelios)
## 1.4.2
### Enhancements
- Der Start der Anwendung war viel langsamer als in Version 1.3.2. [#751](https://github.com/elyukai/optolith-client/issues/751)
### Fehlerbehebungen
- Das Maximum von Kampftechniken konnte höher sein als es die Regeln eigentlich erlauben. [#749](https://github.com/elyukai/optolith-client/issues/749)
- Der Abstand von Overlays also z. B. wenn Vorteile hinzugefügt werden nach oben war zu klein. [#727](https://github.com/elyukai/optolith-client/issues/727)
- Wenn eine Profession es erlaubt hat, aus einer Menge an Kampftechniken eine zweite für einen niedrigeren Bonus als den der ersten auszuwählen, wurde dieser niedrigere Bonus nicht auf den Charakter angewandt. [#647](https://github.com/elyukai/optolith-client/issues/647)
- Die *Fackel* hatte als L+S KK 15 statt KK 14. [#752](https://github.com/elyukai/optolith-client/issues/752) [#737](https://github.com/elyukai/optolith-client/issues/737)
- Der Schadensbonus durch L+S wurde bei Waffen, die keinen festen Schaden hatten, nicht berücksichtigt. [#737](https://github.com/elyukai/optolith-client/issues/737)
- Es konnte nur ein Talentstil zur gleichen Zeit aktiv sein, obwohl es keine Einschränkung diesbezüglich gibt. [#665](https://github.com/elyukai/optolith-client/issues/665)
- Die Profession *Weißmagier (Akademie Schwert und Stab zu Gareth)* aus dem **Regelwerk** hatte falsche AP-Kosten und *Sternkunde 4* statt *Alchemie 4*. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Das Talentefeld für Tierbegleiter auf dem Charakterbogen was zu klein, um alle relevanten Talente aufnehmen zu können. [#733](https://github.com/elyukai/optolith-client/issues/733)
- Im Regeltext für das *Großzelt, 12 Personen* fehlte ein Wort. [#739](https://github.com/elyukai/optolith-client/issues/739)
- SF *Anhänger des Güldenen* erlaubte Liturgien bis Steigerungsfaktor C, obwohl nur welche bis B erlaubt sind. [#754](https://github.com/elyukai/optolith-client/issues/754)
- SF *Scholar des Magierkollegs zu Honingen* fehlte. [#726](https://github.com/elyukai/optolith-client/issues/726)
- SF *Havena-Stil* fehlte. [#740](https://github.com/elyukai/optolith-client/issues/740)
- Der Name des Feenpaktgeschenks *Ruf des Waldes* hatte einen Schreibfehler. [#755](https://github.com/elyukai/optolith-client/issues/755)
- Profession *Gildenloser Magier nach Vadif sal Karim* hatte eine Bonus auf den falschen *Hagelschlag*-Zauber. [#772](https://github.com/elyukai/optolith-client/issues/772)
- Der Text der dritten Erweiterung des Zaubers *Klarheit des Eises* hatte eine falsche Zeiteinheit in der Zeitangabe. [#766](https://github.com/elyukai/optolith-client/issues/766)
- Der SF *Spiritualistinnen* hatte falsche erweiterte Sonderfertigkeiten. [#763](https://github.com/elyukai/optolith-client/issues/763)
- SF *Klingensturm* hatte falsche Kampftechniken angegeben. [#768](https://github.com/elyukai/optolith-client/issues/768)
- Bilder mit großgeschriebenen Dateiendungen wurden als Portraits nicht akzeptiert. [#762](https://github.com/elyukai/optolith-client/issues/762)
- Wenn ein Portrait fehlte, wurde auf dem Charakterbogen das Upload-Icon angezeigt. [#759](https://github.com/elyukai/optolith-client/issues/759)
- Auf dem Mac wurden, wenn eine Papiertextur für den Charakterbogen ausgewählt wurde, zusätzliche leere Seiten generiert. [#748](https://github.com/elyukai/optolith-client/issues/748)
- Der Effekttext der SF *Bindung des Dolches* hatte einen Schreibfehler. [#773](https://github.com/elyukai/optolith-client/issues/773)
### Danke
Zu guter Letzt ein großes **Danke** an alle, die über verschiedeste Kanäle Feedback geben und helfen, sowie an die folgenden Menschen auf GitHub, die an dieser Version mitgewirkt haben!
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.4.1
### Fehlerbehebungen
- Italienisch war nicht verfügbar.
## 1.4.0
### Features
- **Havena &ndash; Versunkene Geheimnisse** [#460](https://github.com/elyukai/optolith-client/issues/460)
- **Unendlichkeit & Tiefenrausch** [#461](https://github.com/elyukai/optolith-client/issues/461)
- **Katakomben & Ruinen** [#462](https://github.com/elyukai/optolith-client/issues/462)
- Italienische Übersetzung [#667](https://github.com/elyukai/optolith-client/issues/667) [#610](https://github.com/elyukai/optolith-client/issues/610)
- Optionaler Charakterbogenhintergrund in Papieroptik. [#36](https://github.com/elyukai/optolith-client/issues/36)
- Zoom-Option für Charakterbogen-Ansicht. [#665](https://github.com/elyukai/optolith-client/issues/665)
- Geld zum Geldbeutel hinzufügen oder davon abziehen. [#666](https://github.com/elyukai/optolith-client/issues/666)
- Eigene Vorteile, Nachteile und Sonderfertigkeiten mit eigenem Namen und AP-Wert erstellen (temporäre Lösung). [#632](https://github.com/elyukai/optolith-client/issues/632)
### Verbesserungen
- Im Ausrüstungstab wird das Gewicht nun in einer eigenen Spalte angezeigt. [#305](https://github.com/elyukai/optolith-client/issues/305)
- Unnötige Kampfbögen werden jetzt nicht mehr angezeigt und exportiert, stattdessen basiert die Anzeige nun darauf, welche Rüstungen der jeweilige Charakter besitzt. Der Kampfbogen für Komplettrüstungen wird angezeigt, wenn der Charakter keine Rüstung besitzt. [#407](https://github.com/elyukai/optolith-client/issues/407)
- Der Name eines Eintrags zeigt nun, wie der Info-Button am Ende, den Regeltext des Eintrags an. [#556](https://github.com/elyukai/optolith-client/issues/556)
### Fehlerbehebungen
- Waffen aus **Aventurische Magie I** wurden nicht angezeigt. [#617](https://github.com/elyukai/optolith-client/issues/617)
- Gegenstände aus **Aventurische Magie II** wurden nicht angezeigt. [#659](https://github.com/elyukai/optolith-client/issues/659)
- In der Beschreibung der SF *Metessa Galora-Stil* war ein Schreibfehler. [#635](https://github.com/elyukai/optolith-client/issues/635)
- SF *Tannhaus-Stil* hatte eine falsche Kampftechniken-Angabe. [#634](https://github.com/elyukai/optolith-client/issues/634)
- SF *Sippenkrieger-Stil* hatte falsche erweiterte Sonderfertigkeiten. [#587](https://github.com/elyukai/optolith-client/issues/587)
- Bei der Profession *Golgarit* und dessen Variante *Untotenjäger* fehlte die SF *Berittener Kampf*. [#597](https://github.com/elyukai/optolith-client/issues/597)
- Die Profession *Ingerimmgeweihter* hatte falsche AP-Kosten und ihr fehlte eine Liturgie. [#574](https://github.com/elyukai/optolith-client/issues/574)
- Die Varianten der Profession *Borongeweihter* hatten falsche Talentmodifikationen. [#548](https://github.com/elyukai/optolith-client/issues/548)
- SF *Rabenschwestern (Seherin von Heute und Morgen)* hatte falsche erweiterte Sonderfertigkeiten. [#639](https://github.com/elyukai/optolith-client/issues/639)
- Profession *Kammerdiener (Zofe)* hatte einen Bonus auf das falsche Talent. [#614](https://github.com/elyukai/optolith-client/issues/614)
- SF *Elfenfreund* hatte Errata, die aber noch nicht eingepflegt waren. [#621](https://github.com/elyukai/optolith-client/issues/621)
- Profession *Weißmagier (Schwert & Stab zu Gareth)* hatte einen falschen AP-Wert und eine zusätzliche Talentmodifikation. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Der Name der Variante *Pfad der Wächterin* der Profession *Gildenlose Magierin (Bannakademie von Fasar)* hatte einen Schreibfehler. [#566](https://github.com/elyukai/optolith-client/issues/566)
- Zauber *Skelettarius* hatte die Zauberweiterung *Längere Dienste* statt *Längerer Dienst* und auch einen falschen Beschreibungstext. [#602](https://github.com/elyukai/optolith-client/issues/602)
- Spezifisch definierte übliche Professionen einer Kultur werden nun auch dann angezeigt, wenn sie nicht aus dem **Regelwerk** stammen. [#563](https://github.com/elyukai/optolith-client/issues/563)
- SF *Balboram-Stil* hatte Lanzenangriff I statt Beidhändiger Kampf I als Voraussetzung. [#563](https://github.com/elyukai/optolith-client/issues/563)
- Der Erfahrungsgrad *Brillant* wurde zuvor Brilliant geschrieben. Das gleiche Problem gab es auch bei anderen Einträgen. [#567](https://github.com/elyukai/optolith-client/issues/567)
- Zauber *Halluzination* hatte als Verbreitung Elfen, obwohl es Druiden hätte sein müssen. [#564](https://github.com/elyukai/optolith-client/issues/564)
- Das Interface konnte kleiner skaliert werden. [#487](https://github.com/elyukai/optolith-client/issues/487)
- Schelmenstreiche zeigten keine Wirkungsdauer an, obwohl sie eine besitzen. [#663](https://github.com/elyukai/optolith-client/issues/663)
- Waffen der Kampftechnik *Lanzen* wurden nicht auf dem Heldenbogen abgezeigt. [#662](https://github.com/elyukai/optolith-client/issues/662)
- Eigenschaften ignorierten das Minimum, welches durch höhere Fertigkeitswerte entsteht. Das Maximum für Fertigkeitswerte ist die höchste an der Probe beteiligte Eigenschaft&thinsp;+&thinsp;2, wodurch die höchste Eigenschaft mindestens FW&thinsp;&minus;&thinsp;2 sein muss. [#630](https://github.com/elyukai/optolith-client/issues/630)
- Das neue Anwendungsgebiet *Fachpublikationen* für das Talent *Rechtskunde* hatte eine falsche Sonderfertigkeitsvoraussetzung. [#680](https://github.com/elyukai/optolith-client/issues/680)
- Geweihte des Namenlosen konnten keine Segnungen kaufen. [#657](https://github.com/elyukai/optolith-client/issues/657)
- Einige Listeneinträge waren breiter als die eigentliche Liste. [#683](https://github.com/elyukai/optolith-client/pull/683)
- SF *Kind der Natur* und ähnliche SFs erlaubten nur ein Talent. [#649](https://github.com/elyukai/optolith-client/issues/649)
- Listenüberschriften waren standardmäßig nicht zentriert. [#637](https://github.com/elyukai/optolith-client/issues/637)
- SF *Fachwissen* hatte unerwartete Zeichen im generierten Namen. [#611](https://github.com/elyukai/optolith-client/issues/611)
- Permanent ausgegebene LE verbot den Kauf weiterer LeP. [#606](https://github.com/elyukai/optolith-client/issues/606)
- Wenn KO auf 8 war und keine Einträge von ihr abhingen, konnten keine weiteren LeP gekauft werden. [#694](https://github.com/elyukai/optolith-client/issues/694)
- *Aspektkenntnis*-SFs konnten trotz des Minimums von mindestens drei Liturgien des Aspekts auf FW 10 oder höher nicht gekauft werden. [#591](https://github.com/elyukai/optolith-client/issues/591)
- Der Zaubertrick *Hexenblick* konnte von allen Zauberern gekauft werden. [#377](https://github.com/elyukai/optolith-client/issues/377)
- Zaubertänzer konnten keine Zaubertänze kaufen. [#594](https://github.com/elyukai/optolith-client/issues/594)
- Die Varianten der Zaubertänzer und -barden berücksichtigten ihre jeweiligen Kultur- und ggf. Geschlechtsvoraussetzungen nicht. [#565](https://github.com/elyukai/optolith-client/issues/565)
- Wenn bei einer Profession neben der Auswahl einer oder mehrerer Kampftechniken für einen bestimmten KtW eine oder mehrere weitere Kampftechniken für einen niedrigeren KtW ausgewählt werden sollen (z. B. bei der Profession *Soldat*), war dies nicht möglich. [#647](https://github.com/elyukai/optolith-client/issues/647)
- Die SFs *Gift melken (...)* beschrieben ein neues Einsatzgebiet, gemeint ist eine *Einsatzmöglichkeit*. [#651](https://github.com/elyukai/optolith-client/issues/651)
- Die Beschreibung des Zaubers *Gletscherform* entsprach nicht dem Text aus **Aventurische Magie II**. [#654](https://github.com/elyukai/optolith-client/issues/654)
- Meldungen des Updaters sowie der Suche-nach-Updates-Button sind nun auf macOS deaktiviert, da dort aktuell keine automatischen Updates möglich sind. [#589](https://github.com/elyukai/optolith-client/issues/589)
- Die SF *Feindgespür* nannte falsche Kampftechniken, für die die SF gilt. [#658](https://github.com/elyukai/optolith-client/issues/658)
- Auto-Update-Warnungen wurden auf Linux gezeigt selbst wenn keine direkten Auto-Updates möglich waren. [#573](https://github.com/elyukai/optolith-client/issues/573)
- Bei der SF *Zugvögel* und SFs mit vergleichbaren Effekten wurden die zusätzlich ermöglichten Liturgieplätze durch passende aktive Liturgien, die allerdings auch für die eigentliche Tradition der Geweihten verfügbar waren, blockiert. [#677](https://github.com/elyukai/optolith-client/issues/677)
- Die SF *Giftverstärkung* hatte einen falschen Regeltext. [#713](https://github.com/elyukai/optolith-client/issues/713)
- Beim Exportieren eines Charakters als JSON wurde im Speichern-Dialog die Dateiendung nicht an den vorgeschlagenen Dateinamen angefügt. [#718](https://github.com/elyukai/optolith-client/issues/718)
### API
Die nächste Release wird wichtige und mit vorherigen Versionen inkompatible Änderungen mit sich bringen, wenn du also Optolith-Quelldateien oder -Speicherdateien nutzt, würde ich dir empfehlen, mal auf [Discord](https://discord.gg/wfdgB9g) vorbeizuschauen, da kann ich dir dann alles im Detail erläutern. Da mehr und mehr Menschen von der Optolith-Datenbasis abhängen, werde ich ab jetzt Semantic Versioning strikt folgen, sodass du dich allein auf Basis der Version darauf verlassen kannst, dass du mit deiner Software immer noch damit arbeiten kannst. Es wird ein neues Format für Charaktere, aber auch für sämtliche Wikieinträge geben. Du kannst mir auch immer noch Feedback zukommen lassen, da noch nicht alles bis ins letzte Detail fertig ist &ndash; aber ich denke, es macht immer noch Sinn, sich diese Änderungen recht früh anzusehen. Die nächste major Version ist immer noch ein gutes Stück entfernt, sodass noch mehr als genug Zeit ist, um deine Software anzupassen.
### Danke
Zu guter Letzt ein großes **Danke** an die folgenden Menschen auf GitHub, die an dieser Version mitgewirkt haben!
- [Jonas (@Rahjenaos)](https://github.com/Rahjenaos)
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [manuelstengelberger (@manuelstengelberger)](https://github.com/manuelstengelberger)
- [Philipp A. (@flying-sheep)](https://github.com/flying-sheep)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.3.2
### Fehlerbehebungen
+32 -4
View File
@@ -1,4 +1,10 @@
## Ich kann keine Zauber oder Liturgien hinzufügen!
## Gibt es einen Charakterbogen und wenn ja, wo finde ich den?
Ja, es gibt einen Charakterbogen, den du als PDF exportieren kannst! Dazu musst du erst im Profil die Heldenerschaffung beenden. Damit das geht, darfst du maximal 10 AP übrig haben &ndash; und natürlich auch nicht zu viele ausgegeben haben. Wenn du sie dann beendest, findest du oben den Tab *Heldenbogen*. In diesem Tab findest du eine Vorschau deines Bogens und kannst diesen über den Button oben links als PDF speichern.
Für englischsprachige Nutzer eventuell relevant: Es gibt aktuell nur eine A4-Variante des Charakterbogens!
## Ich kann keine Zauber oder Liturgien kaufen!
Es wird daran liegen, dass du die Voraussetzungen dafür nicht erfüllst!
Folgende Voraussetzungen gelten:
@@ -13,9 +19,9 @@ Folgende Voraussetzungen gelten:
* Wähle den Vorteil *Geweihter*.
* Wähle eine karmale *Traditions*-SF.
## Ich kann einen der folgenden Zauber nicht hinzufügen: Invocatio Minor, Invocatio Maior, Elementarer Diener, Dschinnenruf!
## Ich kann stärkere Beschwörungs-/Herbeirufungszauber nicht kaufen!
Diese vier Zauber haben Voraussetzungen, die im Regelwerk auf Seite 263 genannt sind.
Diese Zauber haben Voraussetzungen, die im **Regelwerk** auf Seite **263** genannt sind.
Demnach haben diese Zauber folgende Voraussetzungen und können erst nach Erfüllung dieser gewählt werden:
* Invocatio Minor: Invocatio Minima 10
@@ -23,9 +29,31 @@ Demnach haben diese Zauber folgende Voraussetzungen und können erst nach Erfül
* Elementarer Diener: Manifesto 10
* Dschinnenruf: Elementarer Diener 12
## Warum gibt es den Kampfbogen zweimal?!
Der erste listet unter *Rüstungen* die Einträge der normalen Rüstungen (Komplettrüstungen) aus dem RGW. Der zweite listet dort stattdessen die Trefferzonenrüstungen mit ihren unterschiedlichen Rüstungswerten pro Zone. Du hast in diesem Fall also wohl mindestens eine Komplettrüstung und eine Trefferzonenrüstung deinem Charakter hinzugefügt.
## Wie kann ich mir mehr LE/AE/KE kaufen?
Das hängt davon ab, ob du dich noch in der Heldenerstellung befindest oder diese abgeschlossen hast.
* *Während der Heldenerstellung* kannst du zusätzliche LE/AE/KE über die Vorteile *Hohe Lebenskraft/Astralenergie/Karmaenergie I-VII* kaufen. Das solltest du auch nutzen, wenn es dir auf hohe Werte in diesen Bereichen ankommt, da du Vorteile in der Regel nicht nachträglich kaufen kannst!
* *Nach der Heldenerstellung* kannst du zusätzliche LE/AE/KE im *Eigenschaften*-Tab über den &raquo;+&laquo;-Button bei der jeweiligen Energie kaufen. Die Maxima dafür entsprechen den dafür definierten laut **Regelwerk S. 350&ndash;352**.
* *Nach der Heldenerstellung* kannst du zusätzliche LE/AE/KE im *Eigenschaften*-Tab über den &raquo;+&laquo;-Button bei der jeweiligen Energie kaufen. Die Maxima dafür entsprechen den dafür definierten laut **Regelwerk** S. **350&ndash;352**.
## Wo finde ich meine gespeicherten Charaktere?
Die Charaktere und auch andere Dateien wie die Konfiguration findest du je nach Betriebssystem unter folgenden Orten:
- *Windows:* `C:/Users/<Benutzer>/AppData/Roaming/Optolith`, wobei `<Benutzer>` der Name deines Benutzerordners ist
- *Linux:* `$XDG_CONFIG_HOME/Optolith` oder `~/.config/Optolith`
- *macOS:* `~/Library/Application Support/Optolith`
Hier finden sich verschiedene relevante Dateien:
- `heroes.json` enthält alle Helden, die aktuell in Optolith sind
- `config.json` enthält die Konfiguration deiner Optolith-Anwendung. Enthält keine wichtigen Daten, nur Dinge wie Farbschema, Sprache (falls man eine spezielle eingestellt hat), und ein paar andere Sachen.
*Ein Hinweis zu Windows:* `AppData` ist ein versteckter Ordner. Um ihn zu sehen, müsst ihr im Windows Explorer unter *Ansicht* die Einstellung *Ausgeblendete Elemente* aktivieren.
## Wie skaliere ich die Benutzeroberfläche von Optolith auf meinem Linux-System?
Wenn du die `tar.gz` heruntergeladen hast, kannst du in den entpackten Ordner navigieren und dort `GDK_DPI_SCALE=<Scale> ./Optolith` in der Kommandozeile ausführen. Dabei muss `<Scale>` mit dem gewünschten Skalierungsfaktor ersetzt werden, also z. B. `1.5`.
+180
View File
@@ -1,3 +1,183 @@
## 1.5.1
### Enhancements
* **MapTool:** add links to extension next to export button ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Bug Fixes
* **MapTool:** without an avatar no export was possible ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), closes [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** changed export format for MapTool version 1.11.4 ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
<!-- * **MapTool:** Add missing Italian translations for export ([3f87dca](https://github.com/elyukai/optolith-client/commit/3f87dca910ce5229c7fd5378ba5f4177cbf431ac)), closes [#1350](https://github.com/elyukai/optolith-client/issues/1350) -->
* Advantage *Inspire Confidence* could be bought with an active *Incompetent* in a social skill ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), closes [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Strikethrough prerequisites were rendered with surrounding tildes instead ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), closes [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
### Features
* MapTool export ([87cec15](https://github.com/elyukai/optolith-client/commit/87cec15ba9751c329ee39719dc654895b9f4f193))
* Portuguese translations ([d8c9f52](https://github.com/elyukai/optolith-client/commit/d8c9f52542120f9e5fa569728b3f11cb79102365), [#676](https://github.com/elyukai/optolith-client/issues/676))
* Native Apple M1 support ([94e751f](https://github.com/elyukai/optolith-client/commit/94e751fda169c4de90cdb82346d3d864cf697300))
### Enhancements
* Kilogram input hint for weight in item dialog ([bd9fc1b](https://github.com/elyukai/optolith-client/commit/bd9fc1badc8a408495bd7c1594338b1a5fe6df11))
* Security ([723e910](https://github.com/elyukai/optolith-client/commit/723e9106ebb178db6a7cccec2a022b3edaed5b98) and others)
### Bug Fixes
* Hit Zone Armor character sheet had left margin ([e637136](https://github.com/elyukai/optolith-client/commit/e63713687eff9b825a79d159fb8b44dc26f64ffe), [#788](https://github.com/elyukai/optolith-client/issues/788))
* Additional LE set a minimum required value of STR instead of CON ([390dcb6](https://github.com/elyukai/optolith-client/commit/390dcb616aaa68e5b103bb49dd75d1529c4e7e3a), [#787](https://github.com/elyukai/optolith-client/issues/787))
* Two-handed (2H) and improvised (i) weapon indicators were missing on character sheet ([3f9fae3](https://github.com/elyukai/optolith-client/commit/3f9fae30a2291b8e53486a74dae8cc1533741b94), [#797](https://github.com/elyukai/optolith-client/issues/797))
* Brawling weapons had no parry on character sheet ([a02700e](https://github.com/elyukai/optolith-client/commit/a02700eeccbd95a75f778d4d9e78ad7a2447dad8), [#1229](https://github.com/elyukai/optolith-client/issues/1229))
* An entry that depends on a single activation of another entry disables removing of all activations of that entry if multiple activations are present ([092343f](https://github.com/elyukai/optolith-client/commit/092343f45da566a45b13b275899a458fed720a76), [#1097](https://github.com/elyukai/optolith-client/issues/1097))
* Entries affecting spells to not be unfamiliar could be removed if Spell Enhancements were bought ([28f260a](https://github.com/elyukai/optolith-client/commit/28f260a2c4a96adb0d36585a478676f95c304414), [#827](https://github.com/elyukai/optolith-client/issues/827))
* The equipment info area may have crashed ([ae2fbad](https://github.com/elyukai/optolith-client/commit/ae2fbad1c738354dd468c1b36b06eda729a879e5))
* Professions that granted higher Combat Technique Ratings than what the selected Experience Level allowed were not filtered ([c8094f5](https://github.com/elyukai/optolith-client/commit/c8094f5ef15f62f69088386b9fc6c64f7d8bfd02), [#1244](https://github.com/elyukai/optolith-client/issues/1244))
* INI/MOV modifiers on armor were handled as penalties ([eb5a068](https://github.com/elyukai/optolith-client/commit/eb5a06884db1894e1a9f2b4b040b114cb4dc85cb), [#1091](https://github.com/elyukai/optolith-client/issues/1091))
* Language specializations did not always cost 1 AP and could not be activated multiple times for a single language ([0a59d9e](https://github.com/elyukai/optolith-client/commit/0a59d9e5e571e87525b18d0b25035e73f7cd87bf), [#1082](https://github.com/elyukai/optolith-client/issues/1082))
* Portraits with transparency had a black background ([cc5ecd6](https://github.com/elyukai/optolith-client/commit/cc5ecd6f098ae6c080eeb3b306887727a99c1220), [#800](https://github.com/elyukai/optolith-client/issues/800))
* Bornlander cultural package had Leatherworking instead of Prepare Food ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#824](https://github.com/elyukai/optolith-client/issues/824))
* Spell Wind Shaping had the wrong traditions and wrong spell enhancements order ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#1139](https://github.com/elyukai/optolith-client/issues/1139))
* Primary attribute changes for items were not applied in edit window, only on character sheet ([6c63ab1](https://github.com/elyukai/optolith-client/commit/6c63ab1b5051882ace71f15740c3a69fff4a267f), [#798](https://github.com/elyukai/optolith-client/issues/798))
* Professions with due to EL impossible attribute values could be selected ([fdde329](https://github.com/elyukai/optolith-client/commit/fdde329de591319df3f6da11404dd7523d800c3e), [#1109](https://github.com/elyukai/optolith-client/issues/1109))
* Summoning spellworks from professions did not register dependencies from prerequisites ([c1b2e26](https://github.com/elyukai/optolith-client/commit/c1b2e267cb3f02d2d18812415c39c58739ad99ec), [#1240](https://github.com/elyukai/optolith-client/issues/1240))
* Weight of Elves was not generated correctly ([3b05e69](https://github.com/elyukai/optolith-client/commit/3b05e69e27f7faa1634b50eb134000fe1a2c3a21), [#813](https://github.com/elyukai/optolith-client/issues/813))
* Gaze into the Essence spell was misspelled as Gase into the Essence ([42891f0](https://github.com/elyukai/optolith-client/commit/42891f070c35b74c49bb2c9e16152789cc8cc7df), [#1180](https://github.com/elyukai/optolith-client/issues/1180))
* Tradition (Druid) referenced a non-existent disadvantage instead of advantage Iron-Attuned Aura ([f8114c2](https://github.com/elyukai/optolith-client/commit/f8114c2f4318967631b71ea3614bf647e7826fa2), [#1237](https://github.com/elyukai/optolith-client/issues/1237))
* Hook Dagger was not marked as a parrying weapon ([ed74170](https://github.com/elyukai/optolith-client/commit/ed74170865b2caad8008a345db5c1705e0376bc5), [#1232](https://github.com/elyukai/optolith-client/issues/1232))
* Special ability Deadly Thrust had special ability Crossblock's rules text ([ec9bd71](https://github.com/elyukai/optolith-client/commit/ec9bd71e101abcaf61e84e3da340890e161896ea), [#841](https://github.com/elyukai/optolith-client/issues/841))
* Missing translations for spell enhancements of Heptagramma ([a5df7c8](https://github.com/elyukai/optolith-client/commit/a5df7c863cded391609950fa5b8bf8474ffe2dfd), [#848](https://github.com/elyukai/optolith-client/issues/848))
* Attributes on minimum value (8) did not allow a combat technique rating over 6 if the attribute was the combat technique's primary attribute ([47e66d6](https://github.com/elyukai/optolith-client/commit/47e66d65467999e2661eaac30a97b5a1ebfece94), [#835](https://github.com/elyukai/optolith-client/issues/835))
* Profession Sharisad got Earthencraft bonus instead of Clothworking bonus ([cd16e53](https://github.com/elyukai/optolith-client/commit/cd16e5314a7f579a5f5f916bb204a15df3220bda), [#1341](https://github.com/elyukai/optolith-client/issues/1341))
* The Hit Zone Armor tab in Belongings was not available, even with Aventuria Armory activated ([383a9c1](https://github.com/elyukai/optolith-client/commit/383a9c166c6d8c5d713f4852f40999c5d8c00efc), [#1328](https://github.com/elyukai/optolith-client/issues/1328))
* Too large PDF output when using a sheet background ([9cb2658](https://github.com/elyukai/optolith-client/commit/9cb26586f3a5026d06f41801d4bbf714631d06a4), [#1094](https://github.com/elyukai/optolith-client/issues/1094))
* Weight column in inventory showed wrong weight ([6ba99f2](https://github.com/elyukai/optolith-client/commit/6ba99f2f4610e8a26d1703d978738a907f26bd92), [#1329](https://github.com/elyukai/optolith-client/issues/1329))
* Auto-updater did not work in AppImage ([a24ff80](https://github.com/elyukai/optolith-client/commit/a24ff8082a5556fc07af05f113bacfd9c84428a4), [#753](https://github.com/elyukai/optolith-client/issues/753))
* Some primary attribute prerequisites were not enforced ([ac0cdc3](https://github.com/elyukai/optolith-client/commit/ac0cdc377800a1eb380993dbb7914fa88b8f254e), [#1260](https://github.com/elyukai/optolith-client/issues/1260))
* Range brackets input fields influenced other bracket fields ([0ab65e8](https://github.com/elyukai/optolith-client/commit/0ab65e869c26536127b386753db110f2e26b33af), [#1251](https://github.com/elyukai/optolith-client/issues/1251))
* Requiring only one matching languages and script required all of them instead ([4dabbdb](https://github.com/elyukai/optolith-client/commit/4dabbdbcd23c1ffeff18a8b1f9497a4a8315aa6a), [#1343](https://github.com/elyukai/optolith-client/issues/1343))
* Scripts did not require an active matching language ([1ed0c64](https://github.com/elyukai/optolith-client/commit/1ed0c64b0dd9873593169bd9994082d49299fa3e), [#1344](https://github.com/elyukai/optolith-client/issues/1344))
* Some item properties were not saved ([f2e6138](https://github.com/elyukai/optolith-client/commit/f2e61386abe444aa76f0211469d50c30fde99a0c), [#1252](https://github.com/elyukai/optolith-client/issues/1252))
* Unfamiliar spell selection in profession was optional ([3574d1b](https://github.com/elyukai/optolith-client/commit/3574d1ba46725d04a83286cd1055c080fe1de95f), [#1315](https://github.com/elyukai/optolith-client/issues/1315))
* special ability Knuckle Storm's description used Damage Points instead of Brawling Points ([06b57c9](https://github.com/elyukai/optolith-client/commit/06b57c9d15e1ef6f35da69ea46512bb790119b0a), [#1340](https://github.com/elyukai/optolith-client/issues/1340))
* Combat techniques did not influence the minimum of their primary attributes ([1ce2db9](https://github.com/elyukai/optolith-client/commit/1ce2db9cfbb06b1ca8a549957b8225af71de9185), [#836](https://github.com/elyukai/optolith-client/issues/836))
* Saving a hero cleared the undo history of multiple characters ([923b760](https://github.com/elyukai/optolith-client/commit/923b7605fee4c4288dc743e962728308f7254ca9), [#811](https://github.com/elyukai/optolith-client/issues/811))
* Widened rows in second column of skills table on character sheet ([41ee35b](https://github.com/elyukai/optolith-client/commit/41ee35ba76af42ad837daa6c45a940406b0c5daa), [#1342](https://github.com/elyukai/optolith-client/issues/1342))
### Thank you
Last but definitely not least a big **Thank You** to all of you who give feedback and help out on various channels as well as to the following people on GitHub who contributed to this release!
- [Elidia (@FloraMayr)](https://github.com/FloraMayr)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lector (@Lector)](https://github.com/Lector)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [Marc Schwering (@m4rcsch)](https://github.com/m4rcsch)
- [Pepelios (@Pepelios)](https://github.com/Pepelios)
## 1.4.2
### Enhancements
- Start-up was way slower than in 1.3.2. [#751](https://github.com/elyukai/optolith-client/issues/751)
### Bug Fixes
- Added some missing UI translations. [#723](https://github.com/elyukai/optolith-client/issues/723)
- Added missing aspects for **Gods of Aventuria I**. [#724](https://github.com/elyukai/optolith-client/issues/724)
- Added missing special ability groups for **Gods of Aventuria I**. [#725](https://github.com/elyukai/optolith-client/issues/725)
- SA *Two Blessings at Once* had the wrong rules text. [#750](https://github.com/elyukai/optolith-client/issues/750)
- Combat Techniques maximum CtR could be higher that allowed by rules. [#749](https://github.com/elyukai/optolith-client/issues/749)
- The top margin of overlay windows like when adding advantages was too small. [#727](https://github.com/elyukai/optolith-client/issues/727)
- If a profession allowed to select a second combat technique from a set of combat techniques where the bonus was lower than the bonus for the first combat technique, the selected lower bonus was not applied to the character. [#647](https://github.com/elyukai/optolith-client/issues/647)
- The *Torch* had P+T STR 15 instead of STR 14. [#752](https://github.com/elyukai/optolith-client/issues/752) [#737](https://github.com/elyukai/optolith-client/issues/737)
- The P+T damage bonus was not added to weapons without flat damage. [#737](https://github.com/elyukai/optolith-client/issues/737)
- Profession *White Mage (Gareth Academy of Sword and Staff)* from the **Core Rules** had a wrong AP value and *Astronomy 4* instead of *Alchemy 4*. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Creature skills text field on PDF export was too short to fit all relevant skills of a creature. [#733](https://github.com/elyukai/optolith-client/issues/733)
- SA *Followers of the Golden One* allowed liturgical chants up to improvement cost C instead of up to B. [#754](https://github.com/elyukai/optolith-client/issues/754)
- Profession *Guildless Mage (Vadif sal Karims Student)* had a bonus on the wrong *Hailstorm and Roar of Thunder* spellwork. [#772](https://github.com/elyukai/optolith-client/issues/772)
- SA *Bladestorm* had wrong applicable combat techniques. [#768](https://github.com/elyukai/optolith-client/issues/768)
- Some books were missing the weight. [#760](https://github.com/elyukai/optolith-client/issues/760)
- Images with uppercase file endings have not been accepted as portrait images. [#762](https://github.com/elyukai/optolith-client/issues/762)
- The upload icon was shown in place of the portrait image on the character sheet if no portrait was defined. [#759](https://github.com/elyukai/optolith-client/issues/759)
- On the Mac, if paper background was activated, additional blank pages were generated for the PDF output. [#748](https://github.com/elyukai/optolith-client/issues/748)
### Thank you
Last but definitely not least a big **Thank You** to all of you who give feedback and help out on various channels as well as to the following people on GitHub who contributed to this release!
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.4.1
### Bug Fixes
- Italian was not available.
## 1.4.0
### Features
- **Gods of Aventuria I** [#656](https://github.com/elyukai/optolith-client/issues/656)
- Italian translation [#667](https://github.com/elyukai/optolith-client/issues/667) [#610](https://github.com/elyukai/optolith-client/issues/610)
- Optional paper-style background for character sheet. [#36](https://github.com/elyukai/optolith-client/issues/36)
- Character Sheet view zoom option. [#665](https://github.com/elyukai/optolith-client/issues/665)
- Add/Subtract money from purse. [#666](https://github.com/elyukai/optolith-client/issues/666)
- Create custom advantages, disadvantages and special abilities with custom name and AP value (temporary solution). [#632](https://github.com/elyukai/optolith-client/issues/632)
### Enhancements
- Weight is now shown in an own column in equipment tab. [#305](https://github.com/elyukai/optolith-client/issues/305)
- Unnecessary combat sheets are not used anymore, it now depends on which armor the character has. It defaults to the normal armor if no armor is present. [#407](https://github.com/elyukai/optolith-client/issues/407)
- You can now click on entry names as well to show it's rules text. [#556](https://github.com/elyukai/optolith-client/issues/556)
### Bug Fixes
- Variants of profession *Blessed One of Boron* had wrong skill modifications. [#548](https://github.com/elyukai/optolith-client/issues/548)
- Profession *White Mage (Sword & Staff)* had a wrong AP value and an additional skill modification. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Fixed common professions of a culture will now be shown even if they are not from the **Core Rules**. [#563](https://github.com/elyukai/optolith-client/issues/563)
- The interface could be scaled down. [#487](https://github.com/elyukai/optolith-client/issues/487)
- Weapons of the combat technique *Lances* were not shown on character sheet. [#662](https://github.com/elyukai/optolith-client/issues/662)
- Attributes ignored the minimum caused by high skill ratings. The maximum of skill rating is the highest linked attribute&thinsp;+&thinsp;2, so the highest attribute is required to have a minimum value of SR&thinsp;&minus;&thinsp;2. [#630](https://github.com/elyukai/optolith-client/issues/630)
- The new application *Professional Publications* for skill *Law* had a wrong special ability prerequisite. [#680](https://github.com/elyukai/optolith-client/issues/680)
- Some list items were wider than the actual list. [#683](https://github.com/elyukai/optolith-client/pull/683)
- List headers were not centered by default. [#637](https://github.com/elyukai/optolith-client/issues/637)
- Permanently spent LP did not allow additional LP to be bought. [#606](https://github.com/elyukai/optolith-client/issues/606)
- Additional LP could not be added if CON is 8 and nothing depends on it. [#694](https://github.com/elyukai/optolith-client/issues/694)
- SA *Aspect Knowledge* did not show up even with three chants on SR 10 or higher. [#591](https://github.com/elyukai/optolith-client/issues/591)
- Cantrip Witch's Gaze was selectable by all spell casters. [#377](https://github.com/elyukai/optolith-client/issues/377)
- Arcane Dancers could not add magical dances. [#594](https://github.com/elyukai/optolith-client/issues/594)
- Select options of traditions Arcane Bard and Arcane Dancer did not require their respective culture and possible sex. [#565](https://github.com/elyukai/optolith-client/issues/565)
- If, in addition to the selection of one or more fighting techniques for a certain CtR, one or more other fighting techniques should be selected for a lower CtR (e.g. in the profession *Soldier*), it was not possible. [#647](https://github.com/elyukai/optolith-client/issues/647)
- Certain values on character sheet were not floored. [#655](https://github.com/elyukai/optolith-client/issues/655)
- Chain Mail was available twice. [#570](https://github.com/elyukai/optolith-client/issues/570)
- Scale Mail was available twice and had a typo. [#569](https://github.com/elyukai/optolith-client/issues/569)
- Updater checks and the check for updates button are now disabled on macOS since updates are not possible on macOS currently. [#589](https://github.com/elyukai/optolith-client/issues/589)
- Wrong applicable combat techniques for SA *Enemy Sense*. [#658](https://github.com/elyukai/optolith-client/issues/658)
- Auto-update alerts were enabled on Linux even when there were no direct auto-updates available. [#573](https://github.com/elyukai/optolith-client/issues/573)
- The save dialog for exporting a character as JSON did not add the file extension to the suggested file name. [#718](https://github.com/elyukai/optolith-client/issues/718)
### API
There are important and breaking changes coming with the next release, so if you use the Optolith source or save data, I'd recommend to come over to [Discord](https://discord.gg/wfdgB9g) so that I can tell you what is going to be changed in detail. Since more and more people depend on Optolith's data I will now follow semantic versioning strictly so that you can rely on the compatibility of source files just by checking out the version number. There will be a new format for heroes as well as for the source data. You can also give feedback on the changes, since they are not *completely* done yet &ndash; but I still think it would make sense to check out the changes as early as possible. The next major version is still a bit away, so you'll have plenty of time to adjust your software.
### Thank you
Last but definitely not least a big **Thank You** to the following people on GitHub who contributed to this release!
- [Jonas (@Rahjenaos)](https://github.com/Rahjenaos)
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [manuelstengelberger (@manuelstengelberger)](https://github.com/manuelstengelberger)
- [Philipp A. (@flying-sheep)](https://github.com/flying-sheep)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.3.2
### Bug Fixes
+41 -4
View File
@@ -1,20 +1,57 @@
## I can't add spells or liturgical chants! That's a bug, isn't it?
## Is there a character sheet and where can I find it?
It's likely because you do not meet the (following) requirements for adding spells or liturgical chants:
Yes, there is a character sheet you can export as a PDF! To do that, you have to end hero creation in the character's profile first. To do *that*, you need to have a maximum of 10 AP left &ndash; and you can't have too much AP spent, obviously. If you end it, you'll see the new tab *Character Sheet* above. In that tab you'll get a preview of your sheet and then you can export it via the button in the top left corner!
Might be relevant: There's only an DIN A4 version available!
## I can't add spells or liturgical chants!
It's likely you do not meet the prerequisites for adding spells or liturgical chants:
### Spells:
- Buy advantage *Spellcaster*.
- Buy the magical special ability *Tradition*.
### Liturgien:
### Liturgical Chants:
* Buy advantage *Blessed One*.
* Buy the blessed special ability *Tradition*.
## I can't buy stronger invocations!
Stronger invocation rituals have prerequisites that you can find in the **Core Rules** on page **263**:
* Invocatio Minor: Invocatio Minima 10
* Invocatio Maior: Invocatio Minor 12
* Elemental Servant: Manifesto 10
* Call Djinn: Elemental Servant 12
## Why do I have the combat sheet twice?!
The first lists the default armor from the CR below *Armor* on the sheet. The second lists the hit zone armor with their different PRO values per hit zone there instead. If you have both sheets it's likely you have both default armor and hit zone armor for your character.
## How can I buy additional LP/AE/KP?
That depends on whether you are still in hero creation phase or have completed that.
* *During hero creation* you can add additional LP/AE/KP via the advantages *Increased Life Points/Arcane Power/Karma Points I-VII*. You should use them if you are interested in higher values because you can usually not buy advantages afterwards!
* *After hero creation*, to add additional LP/AE/KP, use the &raquo;+&laquo; button below the respective energy in the *Attributes* tab. The maximum values for these are calculated by using the rules from the **Core Rules p. 350&ndash;352**.
* *After hero creation*, to add additional LP/AE/KP, use the &raquo;+&laquo; button below the respective energy in the *Attributes* tab. The maximum values for these are calculated by using the rules from the **Core Rules** p. **350&ndash;352**.
## Where do I find my saved characters?
Characters and other files such as the application configuration can be found at the following locations, depending on the OS you use:
- *Windows:* `C:/Users/<User>/AppData/Roaming/Optolith`, where `<User>` is the name of your user folder
- *Linux:* `$XDG_CONFIG_HOME/Optolith` or `~/.config/Optolith`
- *macOS:* `~/Library/Application Support/Optolith`
A list of relevant files:
- `heroes.json ` contains all heroes saved in Optolith
- `config.json` contains the configuration of your Optolith. It does not contain critical data but things like color theme, language (only if you selected a specific one) and alike.
*A note on Windows:* `AppData` is a *hidden* folder. To be able to see it, check out the Windows Explorer, go to the *View* tab and activate the setting *Hidden elements*.
## How do I scale the UI for Optolith on Linux?
If you have the `tar.gz`, you can go into the extracted folder and then run `GDK_DPI_SCALE=<Scale> ./Optolith`, where `<Scale>` needs to be replaced with the desired scale, e.g. `1.5`.
+153
View File
@@ -1,3 +1,156 @@
## 1.5.1
### Améliorations
* **MapTool:** ajout de liens vers l'extension près du bouton d'export ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Bugs corrigés
* **MapTool:** sans avatar aucun export n'était possible ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), fermeture [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** modification du format d'export pour MapTool en version 1.11.4 ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
* L'avantage *Rassurant* pouvait être acheté malgré un désavantage *Incompétent* dans un des talents sociaux ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), fermeture [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Les prérequis à ne pas remplir étaient affichés avec des tirets autour au lieu d'être rayés ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), fermeture [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
### Fonctionnalités
* Export MapTool ([87cec15](https://github.com/elyukai/optolith-client/commit/87cec15ba9751c329ee39719dc654895b9f4f193))
* Traductions en portugais ([d8c9f52](https://github.com/elyukai/optolith-client/commit/d8c9f52542120f9e5fa569728b3f11cb79102365), [#676](https://github.com/elyukai/optolith-client/issues/676))
* Support natif Apple M1 ([94e751f](https://github.com/elyukai/optolith-client/commit/94e751fda169c4de90cdb82346d3d864cf697300))
### Améliorations
* Sécurité ([723e910](https://github.com/elyukai/optolith-client/commit/723e9106ebb178db6a7cccec2a022b3edaed5b98) and others)
### Bugs corrigés
* Des PV supplémentaires fixaient une valeur minimale requise de FO au lieu de CN. ([390dcb6](https://github.com/elyukai/optolith-client/commit/390dcb616aaa68e5b103bb49dd75d1529c4e7e3a), [#787](https://github.com/elyukai/optolith-client/issues/787))
* Les indicateurs d'armes à deux mains (2M) et d'armes improvisées (i) manquaient sur la feuille de personnage. ([3f9fae3](https://github.com/elyukai/optolith-client/commit/3f9fae30a2291b8e53486a74dae8cc1533741b94), [#797](https://github.com/elyukai/optolith-client/issues/797))
* Les armes de bagarre n'avaient pas de parade sur la feuille de personnage. ([a02700e](https://github.com/elyukai/optolith-client/commit/a02700eeccbd95a75f778d4d9e78ad7a2447dad8), [#1229](https://github.com/elyukai/optolith-client/issues/1229))
* Une entrée qui dépend d'une seule activation d'une autre entrée désactive la suppression de toutes les activations de cette entrée si des activations multiples sont présentes. ([092343f](https://github.com/elyukai/optolith-client/commit/092343f45da566a45b13b275899a458fed720a76), [#1097](https://github.com/elyukai/optolith-client/issues/1097))
* Les entrées affectant les sorts de façon à ce qu'ils ne soient pas "non familiers" pouvaient être supprimées si des améliorations de sorts étaient achetées. ([28f260a](https://github.com/elyukai/optolith-client/commit/28f260a2c4a96adb0d36585a478676f95c304414), [#827](https://github.com/elyukai/optolith-client/issues/827))
* La zone d'information sur l'équipement pouvait planter ([ae2fbad](https://github.com/elyukai/optolith-client/commit/ae2fbad1c738354dd468c1b36b06eda729a879e5))
* Les professions qui accordaient une valeur de technique de combat supérieure à celle autorisée par le niveau d'expérience sélectionné n'étaient pas filtrées. ([c8094f5](https://github.com/elyukai/optolith-client/commit/c8094f5ef15f62f69088386b9fc6c64f7d8bfd02), [#1244](https://github.com/elyukai/optolith-client/issues/1244))
* Les modificateurs INI/VIT sur les armures étaient traités comme des pénalités. ([eb5a068](https://github.com/elyukai/optolith-client/commit/eb5a06884db1894e1a9f2b4b040b114cb4dc85cb), [#1091](https://github.com/elyukai/optolith-client/issues/1091))
* Les spécialisations linguistiques ne coûtaient pas toujours 1 PA et ne pouvaient pas être activées plusieurs fois pour une même langue. ([0a59d9e](https://github.com/elyukai/optolith-client/commit/0a59d9e5e571e87525b18d0b25035e73f7cd87bf), [#1082](https://github.com/elyukai/optolith-client/issues/1082))
* Les portraits en transparence avaient un fond noir ([cc5ecd6](https://github.com/elyukai/optolith-client/commit/cc5ecd6f098ae6c080eeb3b306887727a99c1220), [#800](https://github.com/elyukai/optolith-client/issues/800))
* Le bagage culturel Sourcelandais avait Cuisine au lieu de Travail du cuir. ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#824](https://github.com/elyukai/optolith-client/issues/824))
* Les changements d'attributs primaires des objets n'étaient pas appliqués dans la fenêtre d'édition, mais uniquement sur la feuille de personnage. ([6c63ab1](https://github.com/elyukai/optolith-client/commit/6c63ab1b5051882ace71f15740c3a69fff4a267f), [#798](https://github.com/elyukai/optolith-client/issues/798))
* Les professions avec des valeurs d'attributs impossibles à sélectionner en raison du niveau d'expérience peuvent être sélectionnées. ([fdde329](https://github.com/elyukai/optolith-client/commit/fdde329de591319df3f6da11404dd7523d800c3e), [#1109](https://github.com/elyukai/optolith-client/issues/1109))
* Les sorts d'invocation des professions n'enregistraient pas les dépendances des prérequis. ([c1b2e26](https://github.com/elyukai/optolith-client/commit/c1b2e267cb3f02d2d18812415c39c58739ad99ec), [#1240](https://github.com/elyukai/optolith-client/issues/1240))
* Le poids des Elfes n'était pas généré correctement ([3b05e69](https://github.com/elyukai/optolith-client/commit/3b05e69e27f7faa1634b50eb134000fe1a2c3a21), [#813](https://github.com/elyukai/optolith-client/issues/813))
* Les attributs ayant une valeur minimale (8) ne permettaient pas d'obtenir une valeur de technique de combat supérieure à 6 si l'attribut était l'attribut principal de la technique de combat. ([47e66d6](https://github.com/elyukai/optolith-client/commit/47e66d65467999e2661eaac30a97b5a1ebfece94), [#835](https://github.com/elyukai/optolith-client/issues/835))
* Sortie PDF trop grande lors de l'utilisation d'un fond de feuille. ([9cb2658](https://github.com/elyukai/optolith-client/commit/9cb26586f3a5026d06f41801d4bbf714631d06a4), [#1094](https://github.com/elyukai/optolith-client/issues/1094))
* Auto-updater ne fonctionne pas dans AppImage ([a24ff80](https://github.com/elyukai/optolith-client/commit/a24ff8082a5556fc07af05f113bacfd9c84428a4), [#753](https://github.com/elyukai/optolith-client/issues/753))
* Certains prérequis d'attributs primaires n'étaient pas appliqués. ([ac0cdc3](https://github.com/elyukai/optolith-client/commit/ac0cdc377800a1eb380993dbb7914fa88b8f254e), [#1260](https://github.com/elyukai/optolith-client/issues/1260))
* Les champs de saisie entre parenthèses influençaient les autres champs entre parenthèses. ([0ab65e8](https://github.com/elyukai/optolith-client/commit/0ab65e869c26536127b386753db110f2e26b33af), [#1251](https://github.com/elyukai/optolith-client/issues/1251))
* L'exigence d'une seule langue et d'une seule écriture correspondante exigeait toutes les langues à la place ([4dabbdb](https://github.com/elyukai/optolith-client/commit/4dabbdbcd23c1ffeff18a8b1f9497a4a8315aa6a), [#1343](https://github.com/elyukai/optolith-client/issues/1343))
* Les écritures ne requièrent pas qu'une langue correspondante soit active. ([1ed0c64](https://github.com/elyukai/optolith-client/commit/1ed0c64b0dd9873593169bd9994082d49299fa3e), [#1344](https://github.com/elyukai/optolith-client/issues/1344))
* Certaines propriétés d'objets n'étaient pas sauvegardées ([f2e6138](https://github.com/elyukai/optolith-client/commit/f2e61386abe444aa76f0211469d50c30fde99a0c), [#1252](https://github.com/elyukai/optolith-client/issues/1252))
* La sélection des sorts non familiers dans la profession était facultative. ([3574d1b](https://github.com/elyukai/optolith-client/commit/3574d1ba46725d04a83286cd1055c080fe1de95f), [#1315](https://github.com/elyukai/optolith-client/issues/1315))
* Les techniques de combat n'influencent pas le minimum de leurs attributs primaires. ([1ce2db9](https://github.com/elyukai/optolith-client/commit/1ce2db9cfbb06b1ca8a549957b8225af71de9185), [#836](https://github.com/elyukai/optolith-client/issues/836))
* La sauvegarde d'un héros efface l'historique d'annulation de plusieurs personnages. ([923b760](https://github.com/elyukai/optolith-client/commit/923b7605fee4c4288dc743e962728308f7254ca9), [#811](https://github.com/elyukai/optolith-client/issues/811))
* Les lignes de la deuxième colonne du tableau des compétences de la fiche de personnage ont été élargies. ([41ee35b](https://github.com/elyukai/optolith-client/commit/41ee35ba76af42ad837daa6c45a940406b0c5daa), [#1342](https://github.com/elyukai/optolith-client/issues/1342))
### Remerciements
Enfin et surtout, un grand **merci** à tous ceux qui font des retours et donnent leur aide sur les différents canaux ainsi qu'aux personnes ci-dessous sur GitHub qui ont contribué à cette version !
- [Elidia (@FloraMayr)](https://github.com/FloraMayr)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lector (@Lector)](https://github.com/Lector)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [Marc Schwering (@m4rcsch)](https://github.com/m4rcsch)
- [Pepelios (@Pepelios)](https://github.com/Pepelios)
## 1.4.2
### Améliorations
- Suppression des *N/D* dans les tableaux des sorts et des liturgies sur la feuille de personnage afin que les valeurs puissent être ajoutées à la main. [#747](https://github.com/elyukai/optolith-client/issues/747)
- Le démarrage était beaucoup plus lent qu'en 1.3.2. [#751](https://github.com/elyukai/optolith-client/issues/751)
### Bugs rectifiés
- La VTC maximale des techniques de combat pourrait être supérieure à celle autorisée par les règles. [#749](https://github.com/elyukai/optolith-client/issues/749)
- La marge supérieure des fenêtres superposées comme lors de l'ajout d'avantages était trop petite. [#727](https://github.com/elyukai/optolith-client/issues/727)
- Le bonus de dommages Q+SD n'était pas ajouté aux armes sans dommages fixes. [#737](https://github.com/elyukai/optolith-client/issues/737)
- La profession *Magicien blanc (Académie de Gareth de l'épée et du bâton)* des **règles de base** avait une mauvaise valeur de PAV et *Astronomie 4* au lieu de *l'Alchimie 4*. [#568](https://github.com/elyukai/optolith-client/issues/568)
- La zone de texte "compétences de la créature" sur l'export PDF était trop courte pour correspondre à toutes les compétences pertinentes d'une créature. [#733](https://github.com/elyukai/optolith-client/issues/733)
- Les images dont la fin de fichier était en majuscules n'étaient pas acceptées comme images de portrait. [#762](https://github.com/elyukai/optolith-client/issues/762)
- L'icône de téléchargement était affichée à la place de l'image du portrait sur la fiche de personnage si aucun portrait n'était défini. [#759](https://github.com/elyukai/optolith-client/issues/759)
- Sur Mac, si le fond papier était activé, des pages vierges supplémentaires étaient générées pour la sortie PDF. [#748](https://github.com/elyukai/optolith-client/issues/748)
### Remerciements
Enfin et surtout, un grand **merci** à tous ceux qui font des retours et donnent leur aide sur les différents canaux ainsi qu'aux personnes ci-dessous sur GitHub qui ont contribué à cette version !
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.4.1
### Bugs rectifiés
- L'italien n'était pas disponible.
## 1.4.0
Veuillez vérifier les personnages pour lesquels vous avez ajouté la CS *intuition tactique* ou la CS *détection des embuscades*. Vous remarquerez qu'elle n'a pas son ancien nom. Ceci est dû à une erreur (mentionnée ci-dessous) où les noms de ces deux capacités spéciales ont été échangés. La représentation interne ne peut pas être modifiée et les entrées doivent donc être "renommées". Cela devrait également corriger les prérequis "incorrects" des deux entrées.
### Fonctionnalités
- Traduction italienne [#667](https://github.com/elyukai/optolith-client/issues/667) [#610](https://github.com/elyukai/optolith-client/issues/610)
- Fond de papier facultatif pour la feuille de personnages. [#36](https://github.com/elyukai/optolith-client/issues/36)
- Option de zoom de la vue sur la feuille de personnages. [#665](https://github.com/elyukai/optolith-client/issues/665)
- Ajouter/Soustraire de l'argent du porte-monnaie. [#666](https://github.com/elyukai/optolith-client/issues/666)
- Créez des avantages, des inconvénients et des capacités spéciales sur mesure avec un nom et une valeur en PAV (solution temporaire). [#632](https://github.com/elyukai/optolith-client/issues/632)
### Améliorations
- Le poids est maintenant indiqué dans une colonne spécifique dans l'onglet équipement. [#305](https://github.com/elyukai/optolith-client/issues/305)
- Les feuilles de combat inutiles ne sont plus utilisées, cela dépend maintenant de l'armure dont dispose le personnage. Par défaut, l'armure normale est utilisée si aucune armure n'est présente. [#407](https://github.com/elyukai/optolith-client/issues/407)
- Vous pouvez maintenant cliquer sur les noms des entrées pour afficher le texte de leurs règles. [#556](https://github.com/elyukai/optolith-client/issues/556)
### Bugs rectifiés
- Les variantes de la profession de *Prêtre de Boron* ont eu de mauvaises modifications de compétences. [#548](https://github.com/elyukai/optolith-client/issues/548)
- La profession *Magicien blanc (Epée & Bâton)* avait une valeur en PAV erronée et une modification de compétence supplémentaire. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Les professions communes fixes d'une culture seront désormais affichées même si elles ne sont pas issues des **règles de base**. [#563](https://github.com/elyukai/optolith-client/issues/563)
- L'interface peut être réduite. [#487](https://github.com/elyukai/optolith-client/issues/487)
- Les armes de la technique de combat *Lances* n'étaient pas indiquées sur la fiche de personnage. [#662](https://github.com/elyukai/optolith-client/issues/662)
- Les valeurs d'attributs minimum étaient ignorées pour les valeurs de compétence élevées. Le maximum de la valeur de compétence est l'attribut lié le plus élevé&thinsp;+&thinsp;2, donc l'attribut le plus élevé doit avoir une valeur minimale de VC&thinsp;&minus;&thinsp;2. [#630](https://github.com/elyukai/optolith-client/issues/630)
- Les noms des CS *Intuition tactique* et *Détection des embuscades* ont été échangés. [#636](https://github.com/elyukai/optolith-client/issues/636)
- Le nouveau domaine d'application *Publications professionnelles* pour le talent *Droit* avait un prérequis de capacité spéciale erronée. [#680](https://github.com/elyukai/optolith-client/issues/680)
- Certains éléments de la liste étaient plus larges que la liste actuelle. [#683](https://github.com/elyukai/optolith-client/pull/683)
- Les en-têtes de liste n'étaient pas centrés par défaut. [#637](https://github.com/elyukai/optolith-client/issues/637)
- Les PV dépensés de façon permanente ne permettaient pas d'acheter des PV supplémentaires. [#606](https://github.com/elyukai/optolith-client/issues/606)
- On ne pouvait pas ajouter de PV supplémentaire si la CON est de 8 et que rien n'en dépend. [#694](https://github.com/elyukai/optolith-client/issues/694)
- La CS *Maîtrise de l'aspect* n'apparait pas même avec trois liturgies de VC 10 ou plus. [#591](https://github.com/elyukai/optolith-client/issues/591)
- La vérification des mises à jour et le bouton de vérification des mises à jour sont maintenant désactivés sur macOS, car les mises à jour ne sont pas possibles sur macOS actuellement. [#589](https://github.com/elyukai/optolith-client/issues/589)
- Techniques de combat mal applicables pour la CS *détection des embuscades*. [#658](https://github.com/elyukai/optolith-client/issues/658)
- Les alertes de mise à jour automatique étaient activées sur Linux même lorsqu'il n'y avait pas de mises à jour automatiques directes disponibles. [#573](https://github.com/elyukai/optolith-client/issues/573)
- Le dialogue de sauvegarde pour l'exportation d'un caractère en JSON n'a pas ajouté l'extension de fichier au nom de fichier suggéré. [#718](https://github.com/elyukai/optolith-client/issues/718)
### API
Il y a des changements importants et radicaux à venir avec la prochaine version, donc si vous utilisez la source Optolith ou enregistrez des données, je vous recommande de venir sur [Discord](https://discord.gg/wfdgB9g) afin que je puisse vous dire ce qui va être changé en détail. Puisque de plus en plus de personnes dépendent des données d'Optolith, je vais maintenant suivre strictement le versionnement sémantique afin que vous puissiez vous fier à la compatibilité des fichiers sources en vérifiant simplement le numéro de version. Il y aura un nouveau format pour les héros ainsi que pour les données sources. Vous pouvez également donner votre avis sur les changements, puisqu'ils ne sont pas encore complètement terminés &ndash; mais je pense qu'il serait quand même judicieux de vérifier les changements le plus tôt possible. La prochaine version majeure est encore un peu loin, vous aurez donc tout le temps d'ajuster votre logiciel.
### Remerciements
Enfin, un grand **merci** aux personnes suivantes sur GitHub qui ont contribué à cette publication !
- [Jonas (@Rahjenaos)](https://github.com/Rahjenaos)
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [manuelstengelberger (@manuelstengelberger)](https://github.com/manuelstengelberger)
- [Philipp A. (@flying-sheep)](https://github.com/flying-sheep)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.3.2
### Bugs rectifiés
+43 -12
View File
@@ -1,20 +1,51 @@
## I can't add spells or liturgical chants! That's a bug, isn't it?
## Y a-t-il une feuille de personnage et si oui, où puis-je la trouver ?
It's likely because you do not meet the (following) requirements for adding spells or liturgical chants:
Oui, il existe une feuille de personnage que vous pouvez exporter au format PDF ! Pour ce faire, vous devez d'abord terminer la création de votre héros dans votre profil. Pour que cela fonctionne, vous devez avoir un maximum de 10 points daventure (PAV) non dépensés — et bien sûr ne pas en avoir dépensé trop. Lorsque vous lavez terminé, un nouvel onglet *FEUILLE DE PERSONNAGE* apparaîtra en haut. Dans cet onglet, vous trouverez un aperçu de votre feuille et vous pourrez l'enregistrer au format PDF à l'aide du bouton en haut à gauche. Pour les utilisateurs anglophones: il n'existe actuellement qu'une seule version A4 de la feuille de personnage !
### Spells:
## Je ne peux pas acheter de sorts ou de liturgies !
- Buy advantage *Spellcaster*.
- Buy the magical special ability *Tradition*.
Cest sans doute parce que votre personnage ne remplit pas les conditions nécessaires ! Celles-ci sont les suivantes :
### Liturgien:
### Sorts :
* Buy advantage *Blessed One*.
* Buy the blessed special ability *Tradition*.
- choisissez l'avantage *pouvoir magique*
- choisissez une *tradition magique* comme capacité spéciale
## How can I buy additional LP/AE/KP?
### Liturgies :
That depends on whether you are still in hero creation phase or have completed that.
- choisissez l'avantage *pouvoir divin*
- choisissez une *tradition cléricale* comme capacité spéciale
* *During hero creation* you can add additional LP/AE/KP via the advantages *Increased Life Points/Arcane Power/Karma Points I-VII*. You should use them if you are interested in higher values because you can usually not buy advantages afterwards!
* *After hero creation*, to add additional LP/AE/KP, use the &raquo;+&laquo; button below the respective energy in the *Attributes* tab. The maximum values for these are calculated by using the rules from the **Core Rules p. 350&mdash;352**.
## Je ne peux pas acheter de sorts d'invocation / de conjuration plus puissants !
Ces sorts ont des conditions présentées à la page 262 et 263 du *Livre des règles*. En conséquence, les sorts de la liste ci-dessous ne peuvent être sélectionnés que si le personnage remplit les conditions indiquées :
- Invocatio minor : invocatio minima 10
- Invocatio maior : invocatio minor 12
- Serviteur élémentaire : manifesto 10
- Appel de djinn : serviteur élémentaire 12
## Pourquoi la page de combat apparaît-elle deux fois dans la feuille de personnage ?!
La première liste les entrées pour les protections normales (armure complète) du *Livre des règles*. La seconde liste à la place les différentes pièces darmure et leur valeur en fonction de la zone touchée. Dans ce cas, cela signifie que vous avez au moins ajouté une armure complète et une pièce darmure spécifique à une zone de frappe sur votre feuille de personnage.
## Comment puis-je acheter plus de points de vie (PV)/astraux (PA)/de karma (PK) et améliorer ainsi mon énergie vitale (EV)/astrale (EA)/karmique (EK) ?
Cela dépend si vous êtes toujours dans le processus de *création du héros* ou si vous l'avez terminé.
- Lors de la *création du héros*, vous pouvez acheter des PV/PA/PK supplémentaires via les avantages Grande énergie vitale / astrale / karmique IVII. Si vous souhaitez des valeurs élevées dans ces domaines pour votre personnage, faites-le pendant la création car vous ne pouvez généralement pas acheter d'avantages par la suite !
- Après la *création du héros*, vous pouvez acheter des PV/PA/PK supplémentaires dans l'onglet *QUALITÉS* en utilisant le bouton « + » pour chaque énergie. Les valeurs maximales correspondantes correspondent à celles définies dans le *Livre des règles* pages 350352.
## Où puis-je trouver mes personnages enregistrés ?
Les personnages et autres fichiers tels que la configuration se trouvent — selon le système d'exploitation — aux emplacements suivants:
- *Windows* : `C:/Utilisateurs/<utilisateur>/AppData/Roaming/Optolith`, où <utilisateur> est le nom de votre dossier utilisateur
- *Linux* : `$XDG_CONFIG_HOME/Optolith` ou `~/.config/Optolith`
- *macOS* : `~/Library/Application Support/Optolith`
On peut y retrouver divers fichiers pertinents :
- `heroes.json` contient tous les héros actuellement dans Optolith
- `config.json` contient la configuration de votre application Optolith. Ne contient aucune donnée importante, juste des éléments comme le jeu de couleurs, la langue (si vous en avez une particulière) et quelques autres choses.
Une note sur *Windows* : `AppData` est un dossier caché. Pour le voir, vous devez activer le paramètre *Éléments masqués* dans l'Explorateur Windows sous *Affichage*.
+129
View File
@@ -0,0 +1,129 @@
## 1.5.1
### Miglioramenti
* **MapTool:** aggiunto collegamento allestensione accanto al pulsante di esportazione ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Correzioni
* **MapTool:** non era possibile esportare senza avatar ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), corregge [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** modificato il formato di esportazione alla versione 1.11.4 di MapTool ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
* **MapTool:** aggiunte traduzioni italiane per lesportazione ([3f87dca](https://github.com/elyukai/optolith-client/commit/3f87dca910ce5229c7fd5378ba5f4177cbf431ac)), corregge [#1350](https://github.com/elyukai/optolith-client/issues/1350)
* Il vantaggio *Affabilità* poteva essere acquistato con lo svantaggio *Incompetenza* su una competenza sociale ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), corregge [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Prerequisiti barrati venivano renderizzati con delle tilde prima e dopo ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), corregge [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
### Features
* Esportazione per MapTool ([87cec15](https://github.com/elyukai/optolith-client/commit/87cec15ba9751c329ee39719dc654895b9f4f193))
* Traduzione portoghese ([d8c9f52](https://github.com/elyukai/optolith-client/commit/d8c9f52542120f9e5fa569728b3f11cb79102365), [#676](https://github.com/elyukai/optolith-client/issues/676))
* Supporto nativo per Apple M1 ([94e751f](https://github.com/elyukai/optolith-client/commit/94e751fda169c4de90cdb82346d3d864cf697300))
### Migliorie
* Sicurezza ([723e910](https://github.com/elyukai/optolith-client/commit/723e9106ebb178db6a7cccec2a022b3edaed5b98) e altre)
### Correzioni
* PV aggiuntivi influenzano il valore minimo di COS e non FOR ([390dcb6](https://github.com/elyukai/optolith-client/commit/390dcb616aaa68e5b103bb49dd75d1529c4e7e3a), [#787](https://github.com/elyukai/optolith-client/issues/787))
* Aggiunti gli indicatori per armi a due mani (2M) e improvvisate (i) sul Foglio didentità ([3f9fae3](https://github.com/elyukai/optolith-client/commit/3f9fae30a2291b8e53486a74dae8cc1533741b94), [#797](https://github.com/elyukai/optolith-client/issues/797))
* Armi usate con Armi nude non avevano il valore di Parata indicato sul Foglio didentità ([a02700e](https://github.com/elyukai/optolith-client/commit/a02700eeccbd95a75f778d4d9e78ad7a2447dad8), [#1229](https://github.com/elyukai/optolith-client/issues/1229))
* Un valore che dipende da una singola attivazione di un altro valore impedisce di rimuovere tutte le attivazioni di quel valore, se ce ne sono più attive ([092343f](https://github.com/elyukai/optolith-client/commit/092343f45da566a45b13b275899a458fed720a76), [#1097](https://github.com/elyukai/optolith-client/issues/1097))
* Valori che hanno effetto sulle magie estranee potevano essere rimossi se venivano acquistati miglioramenti di incantesimo ([28f260a](https://github.com/elyukai/optolith-client/commit/28f260a2c4a96adb0d36585a478676f95c304414), [#827](https://github.com/elyukai/optolith-client/issues/827))
* Terminazione anomala dovuto alle informazioni sullequipaggiamento ([ae2fbad](https://github.com/elyukai/optolith-client/commit/ae2fbad1c738354dd468c1b36b06eda729a879e5))
* Le professioni che garantiscono un Valore di Tecnica di Combattimento più elevato del massimo concesso dal Livello dEsperienza non venivano filtrate ([c8094f5](https://github.com/elyukai/optolith-client/commit/c8094f5ef15f62f69088386b9fc6c64f7d8bfd02), [#1244](https://github.com/elyukai/optolith-client/issues/1244))
* I modificatori di Ini e Mov delle armature venivano gestiti come penalità ([eb5a068](https://github.com/elyukai/optolith-client/commit/eb5a06884db1894e1a9f2b4b040b114cb4dc85cb), [#1091](https://github.com/elyukai/optolith-client/issues/1091))
* Specializzazioni di linguaggio non costavano sempre 1 PAvv e non potevano essere scelte più volte per una singola lingua ([0a59d9e](https://github.com/elyukai/optolith-client/commit/0a59d9e5e571e87525b18d0b25035e73f7cd87bf), [#1082](https://github.com/elyukai/optolith-client/issues/1082))
* Immagini con trasparenza venivano mostrate con sfondo nero ([cc5ecd6](https://github.com/elyukai/optolith-client/commit/cc5ecd6f098ae6c080eeb3b306887727a99c1220), [#800](https://github.com/elyukai/optolith-client/issues/800))
* Il pacchetto culturale bornese modificava Cucinare invece di Lavorazione del cuoio ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#824](https://github.com/elyukai/optolith-client/issues/824))
* Alcuni errori di battitura in oggetti, lingue e scritture ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#832](https://github.com/elyukai/optolith-client/issues/832))
* Corretto il titolo di Volontà del ferro ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#850](https://github.com/elyukai/optolith-client/issues/850))
* Incantesimi e liturgie venivano indicate con punteggiatura e maiuscole diverse ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#851](https://github.com/elyukai/optolith-client/issues/851))
* Le modifiche di attributo primario per gli oggetti venivano mostrate soltanto nella finestra di modifica, non sul Foglio didentità ([6c63ab1](https://github.com/elyukai/optolith-client/commit/6c63ab1b5051882ace71f15740c3a69fff4a267f), [#798](https://github.com/elyukai/optolith-client/issues/798))
* Le professioni con valori di attributi impossibili (a causa del Livello dEsperienza) non possono più essere selezionate ([fdde329](https://github.com/elyukai/optolith-client/commit/fdde329de591319df3f6da11404dd7523d800c3e), [#1109](https://github.com/elyukai/optolith-client/issues/1109))
* Magie di evocazione fornite dalla professione non registravano i prerequisiti corretti ([c1b2e26](https://github.com/elyukai/optolith-client/commit/c1b2e267cb3f02d2d18812415c39c58739ad99ec), [#1240](https://github.com/elyukai/optolith-client/issues/1240))
* Il peso degli elfi non veniva calcolato in maniera corretta ([3b05e69](https://github.com/elyukai/optolith-client/commit/3b05e69e27f7faa1634b50eb134000fe1a2c3a21), [#813](https://github.com/elyukai/optolith-client/issues/813))
* Gli attributi al valore minimo (8) non permettevano di raggiungere un Valore di Tecnica di Combattimento superiore al 6 se facevano da Attributo primario per la Tecnica
([47e66d6](https://github.com/elyukai/optolith-client/commit/47e66d65467999e2661eaac30a97b5a1ebfece94), [#835](https://github.com/elyukai/optolith-client/issues/835))
* PDF troppo grande quando si utilizza lo sfondo ([9cb2658](https://github.com/elyukai/optolith-client/commit/9cb26586f3a5026d06f41801d4bbf714631d06a4), [#1094](https://github.com/elyukai/optolith-client/issues/1094))
* Sistema di aggiornamento non funziona con AppImage ([a24ff80](https://github.com/elyukai/optolith-client/commit/a24ff8082a5556fc07af05f113bacfd9c84428a4), [#753](https://github.com/elyukai/optolith-client/issues/753))
* Alcuni requisiti sugli Attributi primari non venivano rispettati ([ac0cdc3](https://github.com/elyukai/optolith-client/commit/ac0cdc377800a1eb380993dbb7914fa88b8f254e), [#1260](https://github.com/elyukai/optolith-client/issues/1260))
* Gli indicatori di Raggio influenzavano altri campi ([0ab65e8](https://github.com/elyukai/optolith-client/commit/0ab65e869c26536127b386753db110f2e26b33af), [#1251](https://github.com/elyukai/optolith-client/issues/1251))
* Si richiedeva soltanto una lingua compatibile invece di tutte ([4dabbdb](https://github.com/elyukai/optolith-client/commit/4dabbdbcd23c1ffeff18a8b1f9497a4a8315aa6a), [#1343](https://github.com/elyukai/optolith-client/issues/1343))
* Le scritture non richiedevano la conoscenza di una lingua compatibile ([1ed0c64](https://github.com/elyukai/optolith-client/commit/1ed0c64b0dd9873593169bd9994082d49299fa3e), [#1344](https://github.com/elyukai/optolith-client/issues/1344))
* Alcune proprietà degli oggetti non venivano salvati ([f2e6138](https://github.com/elyukai/optolith-client/commit/f2e61386abe444aa76f0211469d50c30fde99a0c), [#1252](https://github.com/elyukai/optolith-client/issues/1252))
* La selezione dei propri incantesimi estranei era opzionale ([3574d1b](https://github.com/elyukai/optolith-client/commit/3574d1ba46725d04a83286cd1055c080fe1de95f), [#1315](https://github.com/elyukai/optolith-client/issues/1315))
* Le Tecniche di Combattimento non influenzavano il minimo richiesto sugli Attributi primari ([1ce2db9](https://github.com/elyukai/optolith-client/commit/1ce2db9cfbb06b1ca8a549957b8225af71de9185), [#836](https://github.com/elyukai/optolith-client/issues/836))
* Salvando un eroe veniva cancellata la cronologia per più eroi ([923b760](https://github.com/elyukai/optolith-client/commit/923b7605fee4c4288dc743e962728308f7254ca9), [#811](https://github.com/elyukai/optolith-client/issues/811))
* Allargate le righe della seconda colonna di abilità nel Foglio didentità ([41ee35b](https://github.com/elyukai/optolith-client/commit/41ee35ba76af42ad837daa6c45a940406b0c5daa), [#1342](https://github.com/elyukai/optolith-client/issues/1342))
### Ringraziamenti
Come ultimo punto, ma non per importanza, un grandissimo **grazie** a tutti coloro che forniscono commenti, suggerimenti e aiuto sui vari canali sociali e un grazie alle seguenti persone su GitHub che hanno contribuito a questa versione!
- [Elidia (@FloraMayr)](https://github.com/FloraMayr)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lector (@Lector)](https://github.com/Lector)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [Marc Schwering (@m4rcsch)](https://github.com/m4rcsch)
- [Pepelios (@Pepelios)](https://github.com/Pepelios)
## 1.4.2
### Migliorie
- Ridotto il tempo di avvio. [#751](https://github.com/elyukai/optolith-client/issues/751)
### Correzioni
- Le formule della caratteristiche derivate occupano troppo spazio sul foglio didentità. [#729](https://github.com/elyukai/optolith-client/issues/729)
- Rimozione dei requisiti doppi in alcune abilità speciali. [#730](https://github.com/elyukai/optolith-client/issues/730)
- Correzioni minori della localizzazione italiana. [#731](https://github.com/elyukai/optolith-client/issues/731)
- Alcune tecniche di combattimento possono essere impostate a valori più elevati di quanto ammesso dal regolamento. [#749](https://github.com/elyukai/optolith-client/issues/749)
- Il margine superiore delle finestre in sovrimpressione, come nellinserimento dei vantaggi, è troppo stretto. [#727](https://github.com/elyukai/optolith-client/issues/727)
- Il bonus di impatto non viene calcolato per alcune armi. [#737](https://github.com/elyukai/optolith-client/issues/737)
- La professione *Mago bianco (Accademia Garetiana di Spada e Bastone)* dal **Regolamento** ha un valore di PAvv sbagliato e *Astronomia&nbsp;4* invece di *Alchimia&nbsp;4*. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Campo di testo delle abilità degli animali nel foglio didentità è troppo piccolo per contenere tutte le abilità. [#733](https://github.com/elyukai/optolith-client/issues/733)
- Labilità speciale *Bladestorm* si applica alle tecniche di combattimento sbagliate. [#768](https://github.com/elyukai/optolith-client/issues/768)
- Immagini con estensione in maiuscoletto non vengono accettate come ritratto. [#762](https://github.com/elyukai/optolith-client/issues/762)
- Viene mostrata licona di caricamento invece del ritratto su fogli didentità di personaggi senza ritratto. [#759](https://github.com/elyukai/optolith-client/issues/759)
- Su Mac, con lo sfondo pergamenato attivato, vengono generate pagine bianche di troppo nel PDF finale. [#748](https://github.com/elyukai/optolith-client/issues/748)
### Ringraziamenti
Come ultimo punto, ma non per importanza, un grandissimo **grazie** a tutti coloro che forniscono commenti, suggerimenti e aiuto sui vari canali sociali e un grazie alle seguenti persone su GitHub che hanno contribuito a questa versione!
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.4.1
### Correzioni
- La localizzazione italiana non era disponibile.
## 1.4.0
Primo rilascio della versione italiana.
### API
Ci sono importanti modifiche in questa nuova versione, che cambiano anche il modo in cui sono memorizzati i dati. Se fai uso dei file memorizzati da Optolith, è possibile fare un salto su [Discord](https://discord.gg/wfdgB9g) in modo da avere più informazioni sulle modifiche nel dettaglio.
Siccome sempre più persone fanno uso dei dati di Optolith, da questa versione in poi seguiremo le regole del *versionamento semantico*, in modo da permettere agli utenti di fare affidamento alla compatibilità dei file sorgente e dei file dei dati, verificandone soltanto il numero di versione.
Ci sarà un nuovo formato di dati sia per gli eroi memorizzati che per i dati sorgente.
Le modifiche non sono ancora finalizzate e la nuova versione maggiore è ancora lontana, ma è consigliato aggiornarsi al nuovo formato di dati il prima possibile.
### Ringraziamenti
Come ultimo punto, ma non per importanza, un grandissimo **grazie** alle seguenti persone su GitHub che hanno contribuito a questa versione!
- [Jonas (@Rahjenaos)](https://github.com/Rahjenaos)
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [manuelstengelberger (@manuelstengelberger)](https://github.com/manuelstengelberger)
- [Philipp A. (@flying-sheep)](https://github.com/flying-sheep)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
+51
View File
@@ -0,0 +1,51 @@
## C’è una scheda del personaggio e dove posso trovarla?
Sì, c’è un Foglio dIdentità pronto da esportare come PDF!
Per farlo dovrai prima terminare la fase di creazione del personaggio del tuo eroe. Per poterlo fare, dovrai innanzitutto accertarti di avere *al più* 10 Punti Avventura rimasti e di non averne spesi troppi per il tuo livello di esperienza. Una volta terminata la creazione del personaggio, comparirà la scheda *Foglio didentità* in alto, che ti permetterà di accedere allanteprima del foglio e di esportarlo come PDF usando il pulsante in alto a sinistra.
Al momento il PDF è disponibile soltanto in formato DIN A4.
## Non riesco ad aggiungere incantesimi e liturgie!
Niente paura, è probabile che semplicemente il tuo eroe non soddisfi i prerequisiti per avere accesso a magia e opere divine.
### Magia:
- Acquista il vantaggio *Dono della magia*.
- Acquista una qualsiasi *Tradizione* di magia come abilità speciale.
### Opere divine:
* Acquista il vantaggio *Grazia divina*.
* Acquista una qualsiasi *Tradizione* divina come abilità speciale.
## Non riesco ad acquistare incantesimi di invocazione/evocazione più forti!
Incantesimi e rituali di invocazione/evocazione più forti hanno dei prerequisiti speciali, come indicati nel **Regolamento** a pagina **263**:
* Invocatio Minor: Invocatio Minima 10
* Invocatio Maior: Invocatio Minor 12
* Servitore elementale: Manifesto 10
* Richiamo del genio: Servitore elementale 12
## Come posso acquistare altri PV/PA/PK?
Dipende. Il meccanismo cambia se sei ancora nella fase di creazione del personaggio oppure se il personaggio è già stato creato.
* *Durante la fase di creazione* è possibile acquistare altri PV/PA/PK tramite i vantaggi *Elevata energia vitale/astrale/karmica* (con livello da I a VII). È bene sceglierli in questa fase se si punta ad avere un numero elevato di PV/PA/PK, perché non è possibile acquistare vantaggi dopo aver creato leroe!
* *Dopo la fase di creazione*, è possibile acquistare PV/PA/PK aggiuntivi usando il pulsante **&raquo;+&laquo;** sotto al rispettivo indicatore dei punti nella scheda degli *Attributi*. Il valore massimo impostabile in questo modo è calcolato usando le regole del **Regolamento** a pag. **350352**.
## Dove trovo i miei personaggi memorizzati?
Personaggi ed altri file, come la configurazione dellapplicazione, si trovano ai seguenti percorsi in base al sistema operativo utilizzato:
- *Windows:* `C:/Users/<User>/AppData/Roaming/Optolith`, dove `<User>` è il tuo nome utente.
- *Linux:* `$XDG_CONFIG_HOME/Optolith` oppure `~/.config/Optolith`.
- *macOS:* `~/Library/Application Support/Optolith`.
Una lista dei file che possono essere rilevanti:
- `heroes.json` contiene tutti gli eroi memorizzati da Optolith.
- `config.json` contiene la configurazione utilizzata dallapplicazione. Non contiene dati di natura critica, ma informazioni come il colore del tema, la lingua attiva e così via.
*Nota bene per utenti Windows:* `AppData` è una cartella *nascosta*. Per visualizzarla in Esplora Risorse, è necessario accedere alla scheda *Visualizza* e attivare la visualizzazione degli *Elementi nascosti*.
+151
View File
@@ -1,3 +1,154 @@
## 1.5.1
### Enhancements
* **MapTool:** voeg links toe naar extensie naast export knop ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Bug Fixes
* **MapTool:** zonder avatar kon je niet exporteren ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), sluit [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** export formaat voor MapTool versie 1.11.4 is aangepast ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
* Voordeel *Inspireer Vertrouwen* kon gekocht worden met een actieve *incompetent* in een sociale vaardigheid ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), sluit [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Doorstreepte vereisten werden gerenderd met omsluitende tildes ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), sluit [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
### Features
* MapTool export ([87cec15](https://github.com/elyukai/optolith-client/commit/87cec15ba9751c329ee39719dc654895b9f4f193))
* Portuguese translations ([d8c9f52](https://github.com/elyukai/optolith-client/commit/d8c9f52542120f9e5fa569728b3f11cb79102365), [#676](https://github.com/elyukai/optolith-client/issues/676))
* Native Apple M1 support ([94e751f](https://github.com/elyukai/optolith-client/commit/94e751fda169c4de90cdb82346d3d864cf697300))
### Verbeteringen
* Security ([723e910](https://github.com/elyukai/optolith-client/commit/723e9106ebb178db6a7cccec2a022b3edaed5b98) and others)
### Probleemoplossingen
* Additional LE set a minimum required value of STR instead of CON ([390dcb6](https://github.com/elyukai/optolith-client/commit/390dcb616aaa68e5b103bb49dd75d1529c4e7e3a), [#787](https://github.com/elyukai/optolith-client/issues/787))
* Two-handed (2H) and improvised (i) weapon indicators were missing on character sheet ([3f9fae3](https://github.com/elyukai/optolith-client/commit/3f9fae30a2291b8e53486a74dae8cc1533741b94), [#797](https://github.com/elyukai/optolith-client/issues/797))
* Brawling weapons had no parry on character sheet ([a02700e](https://github.com/elyukai/optolith-client/commit/a02700eeccbd95a75f778d4d9e78ad7a2447dad8), [#1229](https://github.com/elyukai/optolith-client/issues/1229))
* An entry that depends on a single activation of another entry disables removing of all activations of that entry if multiple activations are present ([092343f](https://github.com/elyukai/optolith-client/commit/092343f45da566a45b13b275899a458fed720a76), [#1097](https://github.com/elyukai/optolith-client/issues/1097))
* Entries affecting spells to not be unfamiliar could be removed if Spell Enhancements were bought ([28f260a](https://github.com/elyukai/optolith-client/commit/28f260a2c4a96adb0d36585a478676f95c304414), [#827](https://github.com/elyukai/optolith-client/issues/827))
* The equipment info area may have crashed ([ae2fbad](https://github.com/elyukai/optolith-client/commit/ae2fbad1c738354dd468c1b36b06eda729a879e5))
* Professions that granted higher Combat Technique Ratings than what the selected Experience Level allowed were not filtered ([c8094f5](https://github.com/elyukai/optolith-client/commit/c8094f5ef15f62f69088386b9fc6c64f7d8bfd02), [#1244](https://github.com/elyukai/optolith-client/issues/1244))
* INI/MOV modifiers on armor were handled as penalties ([eb5a068](https://github.com/elyukai/optolith-client/commit/eb5a06884db1894e1a9f2b4b040b114cb4dc85cb), [#1091](https://github.com/elyukai/optolith-client/issues/1091))
* Language specializations did not always cost 1 AP and could not be activated multiple times for a single language ([0a59d9e](https://github.com/elyukai/optolith-client/commit/0a59d9e5e571e87525b18d0b25035e73f7cd87bf), [#1082](https://github.com/elyukai/optolith-client/issues/1082))
* Portraits with transparency had a black background ([cc5ecd6](https://github.com/elyukai/optolith-client/commit/cc5ecd6f098ae6c080eeb3b306887727a99c1220), [#800](https://github.com/elyukai/optolith-client/issues/800))
* Bornlander cultural package had Leatherworking instead of Prepare Food ([397abe2](https://github.com/elyukai/optolith-client/commit/397abe2b4a69582dc49422add1700807272c32d6), [#824](https://github.com/elyukai/optolith-client/issues/824))
* Primary attribute changes for items were not applied in edit window, only on character sheet ([6c63ab1](https://github.com/elyukai/optolith-client/commit/6c63ab1b5051882ace71f15740c3a69fff4a267f), [#798](https://github.com/elyukai/optolith-client/issues/798))
* Professions with due to EL impossible attribute values could be selected ([fdde329](https://github.com/elyukai/optolith-client/commit/fdde329de591319df3f6da11404dd7523d800c3e), [#1109](https://github.com/elyukai/optolith-client/issues/1109))
* Summoning spellworks from professions did not register dependencies from prerequisites ([c1b2e26](https://github.com/elyukai/optolith-client/commit/c1b2e267cb3f02d2d18812415c39c58739ad99ec), [#1240](https://github.com/elyukai/optolith-client/issues/1240))
* Typo in effect of Bliksemblind spell ([c58279c](https://github.com/elyukai/optolith-client/commit/c58279cc95aba5506824510d83aa6ffbc410107a), [#805](https://github.com/elyukai/optolith-client/issues/805))
* Weight of Elves was not generated correctly ([3b05e69](https://github.com/elyukai/optolith-client/commit/3b05e69e27f7faa1634b50eb134000fe1a2c3a21), [#813](https://github.com/elyukai/optolith-client/issues/813))
* Attributes on minimum value (8) did not allow a combat technique rating over 6 if the attribute was the combat technique's primary attribute ([47e66d6](https://github.com/elyukai/optolith-client/commit/47e66d65467999e2661eaac30a97b5a1ebfece94), [#835](https://github.com/elyukai/optolith-client/issues/835))
* Too large PDF output when using a sheet background ([9cb2658](https://github.com/elyukai/optolith-client/commit/9cb26586f3a5026d06f41801d4bbf714631d06a4), [#1094](https://github.com/elyukai/optolith-client/issues/1094))
* Auto-updater did not work in AppImage ([a24ff80](https://github.com/elyukai/optolith-client/commit/a24ff8082a5556fc07af05f113bacfd9c84428a4), [#753](https://github.com/elyukai/optolith-client/issues/753))
* Some primary attribute prerequisites were not enforced ([ac0cdc3](https://github.com/elyukai/optolith-client/commit/ac0cdc377800a1eb380993dbb7914fa88b8f254e), [#1260](https://github.com/elyukai/optolith-client/issues/1260))
* Range brackets input fields influenced other bracket fields ([0ab65e8](https://github.com/elyukai/optolith-client/commit/0ab65e869c26536127b386753db110f2e26b33af), [#1251](https://github.com/elyukai/optolith-client/issues/1251))
* Requiring only one matching languages and script required all of them instead ([4dabbdb](https://github.com/elyukai/optolith-client/commit/4dabbdbcd23c1ffeff18a8b1f9497a4a8315aa6a), [#1343](https://github.com/elyukai/optolith-client/issues/1343))
* Scripts did not require an active matching language ([1ed0c64](https://github.com/elyukai/optolith-client/commit/1ed0c64b0dd9873593169bd9994082d49299fa3e), [#1344](https://github.com/elyukai/optolith-client/issues/1344))
* Some item properties were not saved ([f2e6138](https://github.com/elyukai/optolith-client/commit/f2e61386abe444aa76f0211469d50c30fde99a0c), [#1252](https://github.com/elyukai/optolith-client/issues/1252))
* Unfamiliar spell selection in profession was optional ([3574d1b](https://github.com/elyukai/optolith-client/commit/3574d1ba46725d04a83286cd1055c080fe1de95f), [#1315](https://github.com/elyukai/optolith-client/issues/1315))
* Combat techniques did not influence the minimum of their primary attributes ([1ce2db9](https://github.com/elyukai/optolith-client/commit/1ce2db9cfbb06b1ca8a549957b8225af71de9185), [#836](https://github.com/elyukai/optolith-client/issues/836))
* Saving a hero cleared the undo history of multiple characters ([923b760](https://github.com/elyukai/optolith-client/commit/923b7605fee4c4288dc743e962728308f7254ca9), [#811](https://github.com/elyukai/optolith-client/issues/811))
* Widened rows in second column of skills table on character sheet ([41ee35b](https://github.com/elyukai/optolith-client/commit/41ee35ba76af42ad837daa6c45a940406b0c5daa), [#1342](https://github.com/elyukai/optolith-client/issues/1342))
### Dank u
Ten laatste maar zeker niet ten minste een dikke **Dank u** voor iedereen die feedback en help geeft in de verschillende kanalen alsook de volgende mensen op GitHub die bijgedragen hebben tot deze release!
- [Elidia (@FloraMayr)](https://github.com/FloraMayr)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lector (@Lector)](https://github.com/Lector)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [Marc Schwering (@m4rcsch)](https://github.com/m4rcsch)
- [Pepelios (@Pepelios)](https://github.com/Pepelios)
## 1.4.2
### Verbeteringen
- Start-up was trager dan in 1.3.2. [#751](https://github.com/elyukai/optolith-client/issues/751)
### Probleemoplossingen
- Gevechtstechnieken maximum GtR kon hoger zijn dan toegelaten. [#749](https://github.com/elyukai/optolith-client/issues/749)
- The top margin van overlay venters zoals bij het toevoegen van Voordelen was te klein. [#727](https://github.com/elyukai/optolith-client/issues/727)
- De P+T schade bonus werd niet toegevoegd aan wapens zonder extra schade. [#737](https://github.com/elyukai/optolith-client/issues/737)
- Beroep *Witte Magier (Gareth Academy van Zwaard en Staf)* van de **Basis regels** had een verkeerde AP waarde en *Astronomie 4* in plaats van *Alchemie 4*. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Dier vaardigheids tekst veld op de PDF export was te kort om alle relevante vaardigheden van een dier te bevatten. [#733](https://github.com/elyukai/optolith-client/issues/733)
- Afbeeldingen met uppercase file extensies werden niet aanvaard asl portret afbeeldingen. [#762](https://github.com/elyukai/optolith-client/issues/762)
- Het upload icon werd getoont in plaats van de portret afbeelding op het helden document als er geen portret opgeven was. [#759](https://github.com/elyukai/optolith-client/issues/759)
- Op de Mac, als de papier achtergrond aan stond, werden er additionele lege paginas toegevoegd aan de PDF output. [#748](https://github.com/elyukai/optolith-client/issues/748)
### Thank you
Ten laatste maar zeker niet ten minste een dikke **Dank u** voor iedereen die feedback en help geeft in de verschillende kanalen alsook de volgende mensen op GitHub die bijgedragen hebben tot deze release!
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.4.1
### Probleemoplossingen
- Italiaans was niet beschikbaar.
## 1.4.0
### Nieuwe features
- Italiaanse vertaling [#667](https://github.com/elyukai/optolith-client/issues/667) [#610](https://github.com/elyukai/optolith-client/issues/610)
- Optionele papier-stijl achtergrond voor helden document. [#36](https://github.com/elyukai/optolith-client/issues/36)
- helden document zoom optie. [#665](https://github.com/elyukai/optolith-client/issues/665)
- Geld toevoegen/aftrekken. [#666](https://github.com/elyukai/optolith-client/issues/666)
- Voeg Voordelen, Nadelen en Competenties op maat toe met gekozen naam en AP waarde (tijdelijke oplossing) [#632](https://github.com/elyukai/optolith-client/issues/632)
### Verbeteringen
- Gewicht wordt nu in zijn eigen kolom getoond in de uitrusting tab. [#305](https://github.com/elyukai/optolith-client/issues/305)
- Onnodige gevechtsdocumenten worden niet meer gebruikt, het hangt nu af van welke wapenrusting de held heeft. Het gaat standaard naar de normale wapenrusting als er geen wapenrusting aanwezig is. [#407](https://github.com/elyukai/optolith-client/issues/407)
- Je kan nu ook klikken op namen om de regeltekst te zien. [#556](https://github.com/elyukai/optolith-client/issues/556)
### Probleemoplossingen
- Varianten van het beroep *Gewijde van Boron* had verkeerde talent aanpassingen. [#548](https://github.com/elyukai/optolith-client/issues/548)
- Beroep *Witte Tovenaar (Zwaard & Staf)* had een verkeerde AP waarde and een extra talent aanpassing. [#568](https://github.com/elyukai/optolith-client/issues/568)
- Vaste veelvoorkomende beroepen van een kultuur zullen nu getoond worden zelfs al zijn de ze niet van de **Basis Regels**. [#563](https://github.com/elyukai/optolith-client/issues/563)
- The interface kon kleiner gemaakt worden. [#487](https://github.com/elyukai/optolith-client/issues/487)
- Wapens van de gevechtscompetentie *Lans* werden niet getoond op het helden document. [#662](https://github.com/elyukai/optolith-client/issues/662)
- Goede Eigenschappen negeerden het minimum veroorzaakt door hoge talent waarden. De maximum van een talent waarde is het hoogste gerelateerde goede eigenschap&thinsp;+&thinsp;2, dus een goede eigenschap moet een minimum waarde hebben van de hoogste talent waarde &thinsp;&minus;&thinsp;2. [#630](https://github.com/elyukai/optolith-client/issues/630)
- Het nieuwe toepassingsgebeird *Professionele Publicaties* voor het talent *Wet* had een verkeerde Competentie vereiste. [#680](https://github.com/elyukai/optolith-client/issues/680)
- Sommige lijst elementen werden breder dan de eigenlijke lijst. [#683](https://github.com/elyukai/optolith-client/pull/683)
- Lijst hoofdingen werden niet automatisch gecentreerd. [#637](https://github.com/elyukai/optolith-client/issues/637)
- Permantent gespendeerde LP lieten niet toe om extra LP te kopen. [#606](https://github.com/elyukai/optolith-client/issues/606)
- Extra LP konden niet worden gekocht als CO 8 was en er niets van afhing. [#694](https://github.com/elyukai/optolith-client/issues/694)
- Competentie *Aspect Kennis* verscheen niet, zelfs met drie liturgieen op talent waarde 10 of hoger. [#591](https://github.com/elyukai/optolith-client/issues/591)
- Tovertruuk Heksenblik kon worden geselecteerd door alle Tovenaars. [#377](https://github.com/elyukai/optolith-client/issues/377)
- Updater tests en de test voor de update knop zijn nu uitgeschakeld op MacOS want updates zijn momenteel niet mogelijk op MacOS. [#589](https://github.com/elyukai/optolith-client/issues/589)
- Verkeerde toegepaste gevechtscompetentie voor Competentie Vijand Waarnemen. [#658](https://github.com/elyukai/optolith-client/issues/658)
- Auto-update waarschuwingen werden aangezet op Linux, zelfs al was er geen direct auto-update beschikbaar. [#573](https://github.com/elyukai/optolith-client/issues/573)
- Het dialoogvenster voor het exporteren van een teken, omdat JSON de bestandsextensie niet heeft toegevoegd aan de voorgestelde bestandsnaam. [#718](https://github.com/elyukai/optolith-client/issues/718)
### API
Er komen belangijke en brekende veranderingen aan met de volgende release, dus als je Optolith source of data gebruikt, raad ik je aan om naar de [Discord](https://discord.gg/wfdgB9g) te komen zodat ik je in detail kan uitleggen wat er gaat veranderen. Vermits meer en meer mensen afhankelijk zijn van Optolith's data zal ik nu strict versiebeheer volgen zodat je op de compatibiliteit van de sources kan rekenen door het versie nummer te controleren. Er zal een nieuw formaat komen voor de helden en de bron data. Je kan ook feedback geven op de veranderingen, vermits ze nog niet *helemaal* volledig zijn &ndash; maar ik denk dat het zinnig zou zijn om de verandering zo snel mogelijk na te kijken. De volgende versie duurt nog wel even, zodat je voldoende tijd hebt om je software aan te passen.
### Thank you
Tenslotte, maar zeker niet tenminste, een dikke **Dankuwel** voor de volgende mensen op GitHub die bijgedragen hebben tot deze release!
- [Jonas (@Rahjenaos)](https://github.com/Rahjenaos)
- [Jordok (@Jordok)](https://github.com/Jordok)
- [JoveToo (@JoveToo)](https://github.com/JoveToo)
- [Lorenz Cuno Klopfenstein (@LorenzCK)](https://github.com/LorenzCK)
- [manuelstengelberger (@manuelstengelberger)](https://github.com/manuelstengelberger)
- [Philipp A. (@flying-sheep)](https://github.com/flying-sheep)
- [ZeSandman (@ZeSandman)](https://github.com/ZeSandman)
## 1.3.2
### Probleemoplossingen
+45 -13
View File
@@ -1,21 +1,53 @@
## Ich kann keine Zauber oder Liturgien hinzufügen! Ist das ein Bug?
## Is er een heldendocument en waar vind ik het?
Es wird daran liegen, dass du die Voraussetungen dafür nicht erfüllst!
Folgende Voraussetungen gelten:
Ja, er is een heldendocument en je kan het exporteren als PDF! Om dat te doen, moet je eerst je held creatie afmaken. Daarvoor mag je maximum 10 AP overhouden &ndash; en je kan natuurlijk ook niet te veel AP hebben uitgegeven. Als je de helden creatie succesvol beëindigd hebt, zie je een nieuwe tab "Heldendocument" bovenaan. In die tab vind je een preview van je heldendocument en je kan dat exporteren met de knop in de linker boven hoek, "Als PDF bewaren".
### Zauber:
Er is enkel een DIN A4 formaat beschikbaar!
- Wähle den Vorteil *Zauberer*.
- Wähle die magische SF *Tradition*.
## Ik kan geen spreuken of liturgieën toevoegen!
### Liturgien:
Je mist waarschijnlijk de vereisten om spreuken of liturgieën toe te voegen:
* Wähle den Vorteil *Geweihter*.
* Wähle die karmale SF *Tradition*.
### Spreuken:
## Wie kann ich mir mehr LE/AE/KE kaufen?
- Koop het voordeel *Tovenaar*.
- Koop de magische Competentie *Traditie*
Das hängt davon ab, ob du dich noch in der Heldenerstellung befindest oder diese abgeschlossen hast.
### Liturgieën:
* *Während der Heldenerstellung* kannst du zusätzliche LE/AE/KE über die Vorteile *Hohe Lebenskraft/Astralenergie/Karmaenergie I-VII* kaufen. Das solltest du auch nutzen, wenn es dir auf hohe Werte in diesen Bereichen ankommt, da du Vorteile in der Regel nicht nachträglich kaufen kannst!
* *Nach der Heldenerstellung* kannst du zusätzliche LE/AE/KE im *Eigenschaften*-Tab über den &raquo;+&laquo;-Button bei der jeweiligen Energie kaufen. Die Maxima dafür entsprechen den dafür definierten laut **Regelwerk S. 350&ndash;352**.
* Koop het voordeel *Gewijde*.
* Koop de gewijde Competentie *Tradition*.
## Ik kan geen hogere invocaties kopen!
Hogere invocatie rituelen hebben vereisten die je in de **Basis regels** kan vinden op pagina **263**:
* Invocatio Minor: Invocatio Minima 10
* Invocatio Maior: Invocatio Minor 12
* Elementale Dienaar: Manifesto 10
* Djinnenroep: Elementale Dienaar 12
## Hoe kan ik extra LP/AE/KP kopen?
Dat hangt er vanaf of je nog in de creatie fase bent of die al beeindigd hebt:
* *Tijdens helden creatie* kan je extra LP/AE/KP kopen via de voordelen *Hoge Levenskracht/Astrale Kracht/Karmale Kracht I-VII*. Als je daarin geïnteresseerd bent, kan je die best nu nemen want je kan normaal geen Voordelen bijkopen als deze fase beëindigd is.
* *Na de helden creatie*, om extra LP/AE/KP toe te voegen, gebruik je de &raquo;+&laquo; knop onder de respectivelijk energie in the *Eigenschappen* tab. De maximale waarden hiervoor worden berekend volgens de regels van de **Basis Regels** p. **350&ndash;352**.
## Waar vind ik mijn opgeslagen helden?
Helden en andere files zoals de configuratie kan je vinden in de volgende locatie, afhankelijk van je OS:
- *Windows:* `C:/Users/<User>/AppData/Roaming/Optolith`, met `<User>` de naam van je gebruiker
- *Linux:* `$XDG_CONFIG_HOME/Optolith` of `~/.config/Optolith`
- *macOS:* `~/Library/Application Support/Optolith`
Een lijst met relevante files:
- `heroes.json ` bevat alle helden opgeslagen in Optolith
- `config.json` bevat de configuratie van Optolith. Het bevat geen kritieke data maar dingen zoals theme, taal (alleen als je een specifieke taal gekozen hebt) en zoverder.
*Een noot voor Windows:* `AppData` is een *verborgen* folder. Om die te kunnen zien, open Windows Explorere, ga naar de "View" tab en activeer de setting "Hidden elements".
## Hoe schaal ik de UI voor Optolith in Linux?
Als je de `.tar.gz` hebt gedownload, ga je naar de uitgepakte folder en start je `GDK_DPI_SCALE=<Scale> ./Optolith` in je terminal, waarbij je `<scale>` moet vervangen met de gewenste schaal, e.g. `1.5`.
+16
View File
@@ -0,0 +1,16 @@
## 1.5.1
### Enhancements
* **MapTool:** add links to extension next to export button ([07d336d](https://github.com/elyukai/optolith-client/commit/07d336dbb3ceba9818185a9b8c0cdffa6283afb3))
### Bug Fixes
* **MapTool:** without an avatar no export was possible ([80fdffb](https://github.com/elyukai/optolith-client/commit/80fdffb373fccc467383cf6d98c1f07a92168ee4)), closes [#1348](https://github.com/elyukai/optolith-client/issues/1348)
* **MapTool:** changed export format for MapTool version 1.11.4 ([9e9a113](https://github.com/elyukai/optolith-client/commit/9e9a1139d3821bb5a36fbaa973236319026d996a))
* Advantage *Inspire Confidence* could be bought with an active *Incompetent* in a social skill ([8102bb1](https://github.com/elyukai/optolith-client/commit/8102bb1a9adac4849499380bf3bc2270aa7dd2c6)), closes [#1351](https://github.com/elyukai/optolith-client/issues/1351)
* Strikethrough prerequisites were rendered with surrounding tildes instead ([2c9332c](https://github.com/elyukai/optolith-client/commit/2c9332c37f9b2d8d9e0359a9e4dadf0a40beeba1)), closes [#1349](https://github.com/elyukai/optolith-client/issues/1349)
## 1.5.0
Lançamento inicial.
+49
View File
@@ -0,0 +1,49 @@
## Is there a character sheet and where can I find it?
Yes, there is a character sheet you can export as a PDF! To do that, you have to end hero creation in the character's profile first. To do *that*, you need to have a maximum of 10 AP left &ndash; and you can't have too much AP spent, obviously. If you end it, you'll see the new tab *Character Sheet* above. In that tab you'll get a preview of your sheet and then you can export it via the button in the top left corner!
Might be relevant: There's only an DIN A4 version available!
## I can't add spells or liturgical chants!
It's likely you do not meet the prerequisites for adding spells or liturgical chants:
### Spells:
- Buy advantage *Spellcaster*.
- Buy the magical special ability *Tradition*.
### Liturgical Chants:
* Buy advantage *Blessed One*.
* Buy the blessed special ability *Tradition*.
## I can't buy stronger invocations!
Stronger invocation rituals have prerequisites that you can find in the **Core Rules** on page **263**:
* Invocatio Minor: Invocatio Minima 10
* Invocatio Maior: Invocatio Minor 12
* Elemental Servant: Manifesto 10
* Call Djinn: Elemental Servant 12
## How can I buy additional LP/AE/KP?
That depends on whether you are still in hero creation phase or have completed that.
* *During hero creation* you can add additional LP/AE/KP via the advantages *Increased Life Points/Arcane Power/Karma Points I-VII*. You should use them if you are interested in higher values because you can usually not buy advantages afterwards!
* *After hero creation*, to add additional LP/AE/KP, use the &raquo;+&laquo; button below the respective energy in the *Attributes* tab. The maximum values for these are calculated by using the rules from the **Core Rules** p. **350&ndash;352**.
## Where do I find my saved characters?
Characters and other files such as the application configuration can be found at the following locations, depending on the OS you use:
- *Windows:* `C:/Users/<User>/AppData/Roaming/Optolith`, where `<User>` is the name of your user folder
- *Linux:* `$XDG_CONFIG_HOME/Optolith` or `~/.config/Optolith`
- *macOS:* `~/Library/Application Support/Optolith`
A list of relevant files:
- `heroes.json ` contains all heroes saved in Optolith
- `config.json` contains the configuration of your Optolith. It does not contain critical data but things like color theme, language (only if you selected a specific one) and alike.
*A note on Windows:* `AppData` is a *hidden* folder. To be able to see it, check out the Windows Explorer, go to the *View* tab and activate the setting *Hidden elements*.
+3
View File
@@ -21,8 +21,11 @@ export interface RawConfig {
equipmentSortOrder: "name" | "groupname" | "where" | "weight"
equipmentGroupVisibilityFilter: number
sheetCheckAttributeValueVisibility?: boolean
sheetUseParchment?: boolean
sheetZoomFactor?: number
enableActiveItemHints: boolean
locale?: string
fallbackLocale?: string
theme?: "light" | "dark"
enableEditingHeroAfterCreationPhase?: boolean
meleeItemTemplatesCombatTechniqueFilter?: string
+9
View File
@@ -73,12 +73,21 @@
"sheetCheckAttributeValueVisibility": {
"type": "boolean"
},
"sheetUseParchment": {
"type": "boolean"
},
"sheetZoomFactor": {
"type": "number"
},
"enableActiveItemHints": {
"type": "boolean"
},
"locale": {
"type": "string"
},
"fallbackLocale": {
"type": "string"
},
"theme": {
"enum": ["light", "dark"]
},
Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

-2
View File
@@ -1,2 +0,0 @@
require = require('esm')(module)
require('./main.js')
-1
View File
File diff suppressed because one or more lines are too long
-25
View File
@@ -1,25 +0,0 @@
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
'use strict';
var WINDOWS = { };
var LINUX = { };
var MAC = { };
var Platform = {
WINDOWS: WINDOWS,
LINUX: LINUX,
MAC: MAC
};
var Config = { };
var ElectronBuilder = {
Platform: Platform,
Config: Config
};
exports.ElectronBuilder = ElectronBuilder;
/* No side effect */
-361
View File
@@ -1,361 +0,0 @@
module ElectronBuilder = {
type target;
module Platform = {
module WINDOWS = {
[@bs.module "electron-builder"] [@bs.scope ("Platform", "WINDOWS")]
external createTarget: unit => target = "createTarget";
};
module LINUX = {
[@bs.module "electron-builder"] [@bs.scope ("Platform", "LINUX")]
external createTarget: unit => target = "createTarget";
};
module MAC = {
[@bs.module "electron-builder"] [@bs.scope ("Platform", "MAC")]
external createTarget: unit => target = "createTarget";
};
};
module Config = {
type directories = {
buildResources: option(string),
output: option(string),
app: option(string),
};
type target = {
target: string,
arch: option(array(string)),
};
type mac = {
artifactName: option(string),
category: option(string),
target: option(string),
icon: option(string),
[@bs.as "type"]
type_: option(string),
hardenedRuntime: option(bool),
gatekeeperAssess: option(bool),
};
type dmg = {sign: option(bool)};
type win = {
artifactName: option(string),
target: option(array(target)),
icon: option(string),
};
type nsis = {
perMachine: option(bool),
deleteAppDataOnUninstall: option(bool),
};
type linux = {
artifactName: option(string),
category: option(string),
target: option(array(target)),
executableName: option(string),
icon: option(string),
};
type publish = {
provider: string,
url: string,
channel: option(string),
useMultipleRangeRequest: option(bool),
};
type t = {
appId: option(string),
productName: option(string),
copyright: option(string),
directories: option(directories),
mac: option(mac),
dmg: option(dmg),
win: option(win),
nsis: option(nsis),
linux: option(linux),
files: option(array(string)),
publish: option(publish),
};
};
type options = {
config: Config.t,
targets: target,
};
[@bs.module "electron-builder"]
external build: options => Js.Promise.t(list(string)) = "build";
};
// module Publisher = {
// // require("dotenv").config()
// // const ftp = require ("basic-ftp")
// // const Client = require ("ssh2-sftp-client")
// // const fs = require ("fs")
// // const path = require ("path")
// // const semver = require ("semver");
// type channel =
// | Stable
// | Insider;
// type os =
// | Windows
// | OSX
// | Linux;
// /**
// * Needed env variables:
// * - `HOST`
// * - `USERNAME`
// * - `PASSWORD`
// */
// let publishToServer = (channel, os) => {
// let subFolder =
// switch (os) {
// | Windows => "win"
// | Linux => "linux"
// | OSX => "mac"
// };
// let updateYmlName =
// switch (os) {
// | Windows => "latest.yml"
// | Linux => "latest-linux.yml"
// | OSX => "latest-mac.yml"
// };
// let distPath =
// switch (channel) {
// | Insider => ["dist", "insider"]
// | Stable => ["dist"]
// };
// let subPathServer =
// switch (channel) {
// | Insider => "insider/"
// | Stable => ""
// };
// let serverPath = "./update.optolith.app/" ++ subPathServer ++ subFolder;
// let regex =
// switch (channel) {
// | Insider =>
// switch (os) {
// | Windows =>
// %re
// "/^OptolithInsiderSetup_(.+)\\.exe$/"
// | Linux =>
// %re
// "/^OptolithInsider_(.+)\\.(?:AppImage|tar\\.gz)$/"
// | OSX =>
// %re
// "/^OptolithInsider_(.+)\\.(?:zip|dmg)$/"
// }
// | Stable =>
// switch (os) {
// | Windows =>
// %re
// "/^OptolithSetup_(.+)\\.exe$/"
// | Linux =>
// %re
// "/^Optolith_(.+)\\.(?:AppImage|tar\\.gz)$/"
// | OSX =>
// %re
// "/^Optolith_(.+)\\.(?:zip|dmg)$/"
// }
// };
// let recreateFileNames =
// switch (channel) {
// | Insider =>
// switch (os) {
// | Windows => (v => ["OptolithInsiderSetup_" ++ v ++ ".exe"])
// | Linux => (
// v => [
// "OptolithInsider_" ++ v ++ ".AppImage",
// "OptolithInsider_" ++ v ++ ".tar.gz",
// ]
// )
// | OSX => (
// v => [
// "OptolithInsider_" ++ v ++ ".dmg",
// "OptolithInsider_" ++ v ++ ".zip",
// ]
// )
// }
// | Stable =>
// switch (os) {
// | Windows => (v => ["OptolithSetup_" ++ v ++ ".exe"])
// | Linux => (
// v => [
// "Optolith_" ++ v ++ ".AppImage",
// "Optolith_" ++ v ++ ".tar.gz",
// ]
// )
// | OSX => (
// v => ["Optolith_" ++ v ++ ".dmg", "Optolith_" ++ v ++ ".zip"]
// )
// }
// };
// ();
// // const allFiles = await fs.promises.readdir (path.join (...distPath))
// // const allInstallerNames = allFiles .filter (fileName => regex .test (fileName))
// // const allInstallerVersionsSorted =
// // allInstallerNames .map (fileName => regex .exec (fileName) [1])
// // .sort (semver .rcompare)
// // if (allInstallerVersionsSorted .length < 1) {
// // throw new RangeError ("Array of sorted installer versions is empty")
// // }
// // const latestFileNames = recreateFileNames (allInstallerVersionsSorted [0])
// // console.log(`Files to upload: ${[updateYmlName, ...latestFileNames] .join (", ")}`);
// // // Actual server connection
// // const client = new Client ()
// // console.log("Connecting to server...");
// // await client.connect ({
// // host: process.env.HOST,
// // port: 22,
// // username: process.env.USERNAME,
// // password: process.env.PASSWORD
// // })
// // console.log(`Server connection established`);
// // for (const fileName of latestFileNames) {
// // console.log(`Uploading ${fileName}`);
// // const stream = fs.readFileSync (path.join (...distPath, fileName))
// // const fileRes = await client.put (stream, `${serverPath}/${fileName}`)
// // console.log(`Upload done: ${fileName} (${fileRes})`);
// // }
// // console.log(`Uploading ${updateYmlName}`);
// // const updateYml = fs.readFileSync (path.join (...distPath, updateYmlName))
// // const ymlRes = await client.put (updateYml, `${serverPath}/${updateYmlName}`)
// // console.log(`Upload done: ${updateYmlName} (${ymlRes})`);
// // await client.end ()
// // console.log("Closed server connection.");
// };
// };
// module Stable = {
// let config: ElectronBuilder.Config.t = {
// appId: Some("com.lukasobermann.optolith"),
// productName: Some("Optolith"),
// copyright:
// Some(
// "This product was created under a license. Das Schwarze Auge and its logo as well as Aventuria, Dere, Myranor, Riesland, Tharun and Uthuria and their logos are trademarks of Significant GbR. The title and contents of this book are protected under the copyright laws of the United States of America. No part of this publication may be reproduced, stored in retrieval systems or transmitted, in any form or by any means, whether electronic, mechanical, photocopy, recording, or otherwise, without prior written consent by Ulisses Spiele GmbH, Waldems. This publication includes material that is protected under copyright laws by Ulisses Spiele and/or other authors. Such material is used under the Community Content Agreement for the SCRIPTORIUM AVENTURIS. All other original materials in this work is copyright 2017-present by Lukas Obermann and published under the Community Content Agreement for the SCRIPTORIUM AVENTURIS.",
// ),
// directories:
// Some({buildResources: None, output: Some("dist"), app: None}),
// files: Some([|"app/**/*"|]),
// mac:
// Some({
// artifactName: Some("Optolith_${version}.${ext}"),
// category: Some("public.app-category.role-playing-games"),
// target: Some("default"),
// icon: Some("app/icon.icns"),
// type_: Some("distribution"),
// hardenedRuntime: Some(true),
// gatekeeperAssess: Some(false),
// }),
// dmg: Some({sign: Some(false)}),
// win:
// Some({
// artifactName: Some("OptolithSetup_${version}.${ext}"),
// target: Some([|{target: "nsis", arch: Some([|"x64", "ia32"|])}|]),
// icon: Some("app/icon.ico"),
// }),
// nsis:
// Some({perMachine: Some(true), deleteAppDataOnUninstall: Some(false)}),
// linux:
// Some({
// artifactName: Some("Optolith_${version}.${ext}"),
// category: Some("RolePlaying"),
// target:
// Some([|
// {target: "AppImage", arch: Some([|"x64"|])},
// {target: "tar.gz", arch: Some([|"x64"|])},
// |]),
// executableName: Some("Optolith"),
// icon: Some("app"),
// }),
// publish:
// Some({
// provider: "generic",
// url:
// Belt.Option.getWithDefault(
// Js.Dict.get(Node.Process.process##env, "PUBLISH_URL"),
// "",
// ),
// channel: Some("latest"),
// useMultipleRangeRequest: None,
// }),
// };
// let buildWindows = (): Js.Promise.t(unit) => {
// Js.log("Building Optolith for Windows...");
// ElectronBuilder.build({
// config,
// targets: ElectronBuilder.Platform.WINDOWS.createTarget(),
// })
// |> Js.Promise.then_(x => {
// Js.log("Optolith Build for Windows successful.");
// x |> ignore |> Js.Promise.resolve;
// })
// |> Js.Promise.then_(_ =>
// Js.Promise.resolve(Publisher.publishToServer(Stable, Windows))
// )
// |> Js.Promise.then_(_ => {
// Js.log("Optolith Build for Windows deployed.");
// Js.Promise.resolve();
// });
// };
// let buildLinux = (): Js.Promise.t(unit) => {
// Js.log("Building Optolith for Linux...");
// ElectronBuilder.build({
// config,
// targets: ElectronBuilder.Platform.LINUX.createTarget(),
// })
// |> Js.Promise.then_(x => {
// Js.log("Optolith Build for Linux successful.");
// x |> ignore |> Js.Promise.resolve;
// })
// |> Js.Promise.then_(_ =>
// Js.Promise.resolve(Publisher.publishToServer(Stable, Linux))
// )
// |> Js.Promise.then_(_ => {
// Js.log("Optolith Build for Linux deployed.");
// Js.Promise.resolve();
// });
// };
// let buildMac = (): Js.Promise.t(unit) => {
// Js.log("Building Optolith for OSX...");
// ElectronBuilder.build({
// config,
// targets: ElectronBuilder.Platform.MAC.createTarget(),
// })
// |> Js.Promise.then_(x => {
// Js.log("Optolith Build for OSX successful.");
// x |> ignore |> Js.Promise.resolve;
// })
// |> Js.Promise.then_(_ =>
// Js.Promise.resolve(Publisher.publishToServer(Stable, OSX))
// )
// |> Js.Promise.then_(_ => {
// Js.log("Optolith Build for OSX deployed.");
// Js.Promise.resolve();
// });
// };
// };
+52
View File
@@ -0,0 +1,52 @@
// @ts-check
/**
* @param {"prerelease" | "stable"} channel
*/
const channelSuffix = channel => {
switch (channel) {
case "prerelease": return "Insider"
case "stable": return ""
}
}
/**
* @param {import("./platform.mjs").System} os
* @param {"prerelease" | "stable"} channel
*/
const prefix = (os, channel) => {
switch (os) {
case "win": return `Optolith${channelSuffix(channel)}Setup`
case "linux":
case "mac": return `Optolith${channelSuffix(channel)}`
}
}
/**
* @param {import("./platform.mjs").System} os
*/
const extensions = os => {
switch (os) {
case "win": return [".exe", ".exe.blockmap"]
case "linux": return [".AppImage", ".tar.gz"]
case "mac": return [".dmg", ".dmg.blockmap", ".zip", ".zip.blockmap"]
}
}
/**
* @param {import("./platform.mjs").System} os
* @param {"prerelease" | "stable"} channel
* @param {string} version
*/
export const getApplicationFileNames = (os, channel, version) =>
extensions(os).map(ext => `${prefix(os, channel)}_${version}${ext}`)
/**
* @param {"win" | "mac" | "linux"} os
*/
export const getUpdateFileName = os => {
switch (os) {
case "win": return "latest.yml"
case "linux": return "latest-linux.yml"
default: return "latest-mac.yml"
}
}
+83
View File
@@ -0,0 +1,83 @@
// @ts-check
import { notarize } from "./notarize.mjs"
/**
* @type {import("electron-builder").Configuration}
*/
const config = {
appId: "com.lukasobermann.optolith",
productName: "Optolith",
copyright: "© 2017present Lukas Obermann. This product was created under a license. Das Schwarze Auge and its logo as well as Aventuria, Dere, Myranor, Riesland, Tharun and Uthuria and their logos are trademarks of Significant GbR. The title and contents of this book are protected under the copyright laws of the United States of America. No part of this publication may be reproduced, stored in retrieval systems or transmitted, in any form or by any means, whether electronic, mechanical, photocopy, recording, or otherwise, without prior written consent by Ulisses Spiele GmbH, Waldems. This publication includes material that is protected under copyright laws by Ulisses Spiele and/or other authors. Such material is used under the Community Content Agreement for the SCRIPTORIUM AVENTURIS. All other original materials in this work is copyright 2017-present by Lukas Obermann and published under the Community Content Agreement for the SCRIPTORIUM AVENTURIS.",
directories: {
output: "dist"
},
files: [
"app/**/*",
"LICENSE"
],
win: {
target: [
{
target: "nsis",
arch: [
"x64",
"ia32"
]
}
],
icon: "app/icon.ico",
artifactName: "OptolithSetup_${version}.${ext}"
},
nsis: {
perMachine: true,
differentialPackage: true,
deleteAppDataOnUninstall: false,
},
linux: {
category: "RolePlaying",
executableName: "Optolith",
icon: "app",
target: [
{
target: "AppImage",
arch: [
"x64"
]
},
{
target: "tar.gz",
arch: [
"x64"
]
}
],
artifactName: "Optolith_${version}.${ext}"
},
mac: {
category: "public.app-category.role-playing-games",
type: "distribution",
icon: "app/icon.icns",
target: [
{
target: "default",
arch: "universal"
}
],
artifactName: "Optolith_${version}.${ext}",
entitlements: "deploy/entitlements.mac.plist",
entitlementsInherit: "deploy/entitlements.mac.plist",
hardenedRuntime: true,
gatekeeperAssess: false,
},
dmg: {
sign: false
},
publish: {
"provider": "generic",
"url": `${process.env.UPDATE_URL}/\${os}`,
"channel": "latest"
},
afterSign: notarize,
}
export default config
-133
View File
@@ -1,133 +0,0 @@
// @ts-check
const builder = require ("electron-builder")
const { publishToServer } = require ("./publishToServer.js")
process.on ('unhandledRejection', error => {
throw new Error (`Unhandled promise rejection: ${error .toString ()}`);
});
module.exports = {
buildWindows:
async () => {
// console.log ("Deleting macOS env variables")
// delete process.env.CSC_LINK
// delete process.env.CSC_KEY_PASSWORD
// delete process.env.APPLEID
// delete process.env.APPLEIDPASS
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith for Windows...")
await builder.build ({ config, targets: builder.Platform.WINDOWS.createTarget () })
console.log ("Optolith Build for Windows successful.")
await publishToServer ("stable", "win")
console.log ("Optolith Build for Windows deployed.")
},
buildLinux:
async () => {
// console.log ("Deleting macOS env variables")
// delete process.env.CSC_LINK
// delete process.env.CSC_KEY_PASSWORD
// delete process.env.APPLEID
// delete process.env.APPLEIDPASS
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith for Linux...")
await builder.build ({ config, targets: builder.Platform.LINUX.createTarget () })
console.log ("Optolith Build for Linux successful.")
await publishToServer ("stable", "linux")
console.log ("Optolith Build for Linux deployed.")
},
buildMac:
async () => {
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith for OSX...")
await builder.build ({ config, targets: builder.Platform.MAC.createTarget () })
console.log ("Optolith Build for OSX successful.")
await publishToServer ("stable", "osx")
console.log ("Optolith Build for OSX deployed.")
},
}
/**
* @type {import ("electron-builder") .Configuration}
*/
const config = {
appId: "com.lukasobermann.optolith",
productName: "Optolith",
copyright: "This product was created under a license. Das Schwarze Auge and its logo as well as Aventuria, Dere, Myranor, Riesland, Tharun and Uthuria and their logos are trademarks of Significant GbR. The title and contents of this book are protected under the copyright laws of the United States of America. No part of this publication may be reproduced, stored in retrieval systems or transmitted, in any form or by any means, whether electronic, mechanical, photocopy, recording, or otherwise, without prior written consent by Ulisses Spiele GmbH, Waldems. This publication includes material that is protected under copyright laws by Ulisses Spiele and/or other authors. Such material is used under the Community Content Agreement for the SCRIPTORIUM AVENTURIS. All other original materials in this work is copyright 2017-present by Lukas Obermann and published under the Community Content Agreement for the SCRIPTORIUM AVENTURIS.",
directories: {
output: "dist"
},
files: [
"app/**/*",
"LICENSE"
],
win: {
target: [
{
target: "nsis",
arch: [
"x64",
"ia32"
]
}
],
icon: "app/icon.ico",
artifactName: "OptolithSetup_${version}.${ext}"
},
nsis: {
perMachine: true,
differentialPackage: true,
deleteAppDataOnUninstall: false,
},
linux: {
category: "RolePlaying",
executableName: "Optolith",
icon: "app",
target: [
{
target: "AppImage",
arch: [
"x64"
]
},
{
target: "tar.gz",
arch: [
"x64"
]
}
],
artifactName: "Optolith_${version}.${ext}"
},
mac: {
category: "public.app-category.role-playing-games",
type: "distribution",
icon: "app/icon.icns",
target: "default",
artifactName: "Optolith_${version}.${ext}",
hardenedRuntime: true,
// entitlements: "deploy/entitlements.mac.plist",
// entitlementsInherit: "deploy/entitlements.mac.plist",
gatekeeperAssess: false,
},
dmg: {
sign: false,
},
publish: {
"provider": "generic",
"url": process.env.PUBLISH_URL,
"channel": "latest"
},
// afterSign: notarize,
}
+27
View File
@@ -0,0 +1,27 @@
// @ts-check
import builder from "electron-builder"
import { getSystem } from "./platform.mjs"
const [channel] = process.argv.slice(2)
if (channel !== "stable" && channel !== "prerelease") {
throw new TypeError (`publishToServer requires a specified channel ("stable" or "prerelease"), but it received ${channel}`)
}
const config =
channel === "prerelease"
? (await import("./build.prerelease.config.mjs")).default
: (await import("./build.config.mjs")).default
process.on ('unhandledRejection', error => {
throw new Error(`Unhandled promise rejection: ${/** @type {Error} */ (error).toString ()}`)
})
const os = getSystem()
const plaformKey = os === "linux" ? "LINUX" : os === "mac" ? "MAC" : "WINDOWS"
await builder.build({
config,
targets: builder.Platform[plaformKey].createTarget(),
})
+84
View File
@@ -0,0 +1,84 @@
// @ts-check
import { notarize } from "./notarize.mjs"
/**
* @type {import ("electron-builder") .Configuration}
*/
const config = {
appId: "com.lukasobermann.optolithinsider",
productName: "Optolith Insider",
copyright: "© 2017present Lukas Obermann. This product was created under a license. Das Schwarze Auge and its logo as well as Aventuria, Dere, Myranor, Riesland, Tharun and Uthuria and their logos are trademarks of Significant GbR. The title and contents of this book are protected under the copyright laws of the United States of America. No part of this publication may be reproduced, stored in retrieval systems or transmitted, in any form or by any means, whether electronic, mechanical, photocopy, recording, or otherwise, without prior written consent by Ulisses Spiele GmbH, Waldems. This publication includes material that is protected under copyright laws by Ulisses Spiele and/or other authors. Such material is used under the Community Content Agreement for the SCRIPTORIUM AVENTURIS. All other original materials in this work is copyright 2017-present by Lukas Obermann and published under the Community Content Agreement for the SCRIPTORIUM AVENTURIS.",
directories: {
output: "dist/insider"
},
files: [
"app/**/*",
"LICENSE"
],
asarUnpack: "app/Database/**/*",
win: {
target: [
{
target: "nsis",
arch: [
"x64",
"ia32"
]
}
],
icon: "app/icon.ico",
artifactName: "OptolithInsiderSetup_${version}.${ext}"
},
nsis: {
perMachine: true,
differentialPackage: true,
deleteAppDataOnUninstall: false,
},
linux: {
category: "RolePlaying",
executableName: "OptolithInsider",
icon: "app",
target: [
{
target: "AppImage",
arch: [
"x64"
]
},
{
target: "tar.gz",
arch: [
"x64"
]
}
],
artifactName: "OptolithInsider_${version}.${ext}"
},
mac: {
category: "public.app-category.role-playing-games",
type: "distribution",
icon: "app/icon.icns",
target: [
{
target: "default",
arch: "universal"
}
],
artifactName: "OptolithInsider_${version}.${ext}",
entitlements: "deploy/entitlements.mac.plist",
entitlementsInherit: "deploy/entitlements.mac.plist",
hardenedRuntime: true,
gatekeeperAssess: false,
},
dmg: {
sign: false
},
publish: {
"provider": "generic",
"url": `${process.env.UPDATE_URL}/insider/\${os}`,
"channel": "latest"
},
afterSign: notarize,
}
export default config
-134
View File
@@ -1,134 +0,0 @@
// @ts-check
const builder = require ("electron-builder")
const { publishToServer } = require ("./publishToServer.js")
process.on ('unhandledRejection', error => {
throw new Error (`Unhandled promise rejection: ${error .toString ()}`);
});
module.exports = {
buildWindows:
async () => {
// console.log ("Deleting macOS env variables")
// delete process.env.CSC_LINK
// delete process.env.CSC_KEY_PASSWORD
// delete process.env.APPLEID
// delete process.env.APPLEIDPASS
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith Insider for Windows...")
await builder.build ({ config, targets: builder.Platform.WINDOWS.createTarget () })
console.log ("Optolith Insider Build for Windows successful.")
await publishToServer ("insider", "win")
console.log ("Optolith Insider Build for Windows deployed.")
},
buildLinux:
async () => {
// console.log ("Deleting macOS env variables")
// delete process.env.CSC_LINK
// delete process.env.CSC_KEY_PASSWORD
// delete process.env.APPLEID
// delete process.env.APPLEIDPASS
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith Insider for Linux...")
await builder.build ({ config, targets: builder.Platform.LINUX.createTarget () })
console.log ("Optolith Insider Build for Linux successful.")
await publishToServer ("insider", "linux")
console.log ("Optolith Insider Build for Linux deployed.")
},
buildMac:
async () => {
// console.log ("Copy tables to directories...")
// await copyTables ()
console.log ("Building Optolith Insider for OSX...")
await builder.build ({ config, targets: builder.Platform.MAC.createTarget () })
console.log ("Optolith Insider Build for OSX successful.")
await publishToServer ("insider", "osx")
console.log ("Optolith Insider Build for OSX deployed.")
},
}
/**
* @type {import ("electron-builder") .Configuration}
*/
const config = {
appId: "com.lukasobermann.optolithinsider",
productName: "Optolith Insider",
copyright: "This product was created under a license. Das Schwarze Auge and its logo as well as Aventuria, Dere, Myranor, Riesland, Tharun and Uthuria and their logos are trademarks of Significant GbR. The title and contents of this book are protected under the copyright laws of the United States of America. No part of this publication may be reproduced, stored in retrieval systems or transmitted, in any form or by any means, whether electronic, mechanical, photocopy, recording, or otherwise, without prior written consent by Ulisses Spiele GmbH, Waldems. This publication includes material that is protected under copyright laws by Ulisses Spiele and/or other authors. Such material is used under the Community Content Agreement for the SCRIPTORIUM AVENTURIS. All other original materials in this work is copyright 2017-present by Lukas Obermann and published under the Community Content Agreement for the SCRIPTORIUM AVENTURIS.",
directories: {
output: "dist/insider"
},
files: [
"app/**/*",
"LICENSE"
],
asarUnpack: "app/Database/**/*",
win: {
target: [
{
target: "nsis",
arch: [
"x64",
"ia32"
]
}
],
icon: "app/icon.ico",
artifactName: "OptolithInsiderSetup_${version}.${ext}"
},
nsis: {
perMachine: true,
differentialPackage: true,
deleteAppDataOnUninstall: false,
},
linux: {
category: "RolePlaying",
executableName: "OptolithInsider",
icon: "app",
target: [
{
target: "AppImage",
arch: [
"x64"
]
},
{
target: "tar.gz",
arch: [
"x64"
]
}
],
artifactName: "OptolithInsider_${version}.${ext}"
},
mac: {
category: "public.app-category.role-playing-games",
type: "distribution",
icon: "app/icon.icns",
target: "default",
artifactName: "OptolithInsider_${version}.${ext}",
hardenedRuntime: true,
// entitlements: "deploy/entitlements.mac.plist",
// entitlementsInherit: "deploy/entitlements.mac.plist",
gatekeeperAssess: false,
},
dmg: {
sign: false,
},
publish: {
"provider": "generic",
"url": process.env.PUBLISH_URL_INSIDER,
"channel": "latest"
},
// afterSign: notarize,
}
-1
View File
@@ -1 +0,0 @@
require ("./buildInsider.js") .buildLinux ()
-1
View File
@@ -1 +0,0 @@
require ("./buildInsider.js") .buildMac ()
-1
View File
@@ -1 +0,0 @@
require ("./buildInsider.js") .buildWindows ()
-1
View File
@@ -1 +0,0 @@
require ("./build.js") .buildLinux ()
-1
View File
@@ -1 +0,0 @@
require ("./build.js") .buildMac ()
-18
View File
@@ -1,18 +0,0 @@
import { writeFile } from 'fs';
import sass from 'sass';
sass .render (
{ file: 'src/Main.scss', outputStyle: 'compressed' },
(err, result) => {
if (err) {
throw err;
}
writeFile ('app/main.css', result.css, err => {
if (err) {
throw err;
}
console.log('SCSS successfully bundled!');
})
})
-1
View File
@@ -1 +0,0 @@
require ("./build.js") .buildWindows ()
-4
View File
@@ -1,4 +0,0 @@
const { copySchema } = require ("./getStaticData")
const { join } = require ("path")
copySchema (join ("app", "Database", "Schema"), join ("src", "App", "Utilities", "YAML", "Schema"))
+52
View File
@@ -0,0 +1,52 @@
// @ts-check
import packageJson from "../package.json" assert { type: "json" }
import { getApplicationFileNames, getUpdateFileName } from "./assetNames.mjs"
import { getLocalPath } from "./localPath.mjs"
import { getSystem, getSystemName } from "./platform.mjs"
import { run, upload } from "./remoteConnection.mjs"
import { getRemotePath } from "./remotePath.mjs"
/**
* Needed env variables:
* - `HOST`
* - `USERNAME`
* - `PASSWORD`
* - `ROOT`
*
* Optional env variables:
* - `CI`
*/
const {
HOST,
USERNAME,
PASSWORD,
ROOT = "/",
CI,
} = process.env
const [channel] = process.argv.slice(2)
const os = getSystem()
if (channel !== "stable" && channel !== "prerelease") {
throw new TypeError(`publishToServer requires a specified channel ("stable" or "prerelease"), but it received ${channel}`)
}
console.log(`Preparing to upload update files for "${getSystemName(os)}" on "${channel}" channel...`)
const localDir = getLocalPath(channel)
const remoteDir = getRemotePath(ROOT, channel, os)
const updateFileName = getUpdateFileName(os)
const applicationFileNames = getApplicationFileNames(os, channel, packageJson.version)
console.log(`Files to upload: ${[updateFileName, ...applicationFileNames] .join (", ")}.`)
await run({ host: HOST, username: USERNAME, password: PASSWORD }, async client => {
for (const applicationFileName of applicationFileNames) {
await upload(client, localDir, remoteDir, applicationFileName)
}
await upload(client, localDir, remoteDir, updateFileName)
})
console.log(`Uploading files finished successfully.`)
+3 -1
View File
@@ -2,7 +2,9 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
-61
View File
@@ -1,61 +0,0 @@
// @ts-check
const { copy, remove, pathExists } = require ("fs-extra")
const { join, resolve } = require ("path")
/**
* Copy schemes from one directory to another.
*
* @param {string} src_dir Source directory containing all schemes
* @param {string} dest_dir Destination directory where the contents will be
* copied to
*/
const copySchema =
async (src_dir, dest_dir) => {
if (await pathExists (src_dir)) {
await remove (dest_dir)
await copy (src_dir, dest_dir)
console.log (`"${src_dir}" contents copied to "${dest_dir}"!`)
}
}
const copyData =
async (src_dir) => {
if (await pathExists (src_dir)) {
const dest_dir = join ("app", "Database")
await remove (dest_dir)
await copy (src_dir, dest_dir)
console.log (`"${src_dir}" contents copied to "${dest_dir}"!`)
}
}
const getStaticData = async () => {
// @ts-ignore
const { repository } = require ("./tablesSrc.json")
const data_src_dir = join (...repository, "Data")
const schema_src_dir = join (...repository, "Schema")
console.log ("Copying most recent static data files...")
await copyData (data_src_dir)
await copySchema (schema_src_dir, join ("app", "Database", "Schema"))
await copySchema (schema_src_dir, join ("src", "App", "Utilities", "YAML", "Schema"))
console.log ("All files copied!")
}
module.exports = {
getStaticData,
copySchema
}
// @ts-ignore
if (require.main === module) {
getStaticData ()
}
+12
View File
@@ -0,0 +1,12 @@
// @ts-check
import { join } from "path"
/**
* @param {"prerelease" | "stable"} channel
*/
export const getLocalPath = channel => {
switch (channel) {
case "prerelease": return join("dist", "insider")
case "stable": return join("dist")
}
}
-29
View File
@@ -1,29 +0,0 @@
// @ts-check
const { notarize } = require ('electron-notarize')
/**
* @param context {import("electron-builder").AfterPackContext}
*/
exports.notarize = async context => {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName === 'darwin') {
const appName = context.packager.appInfo.productFilename
console.log (`Notarizing "${appName}.app"...`)
await notarize ({
appBundleId: 'com.lukasobermann.optolith',
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLEID,
appleIdPassword: process.env.APPLEIDPASS,
})
console.log (`Notarization successful`)
return
}
return
}
+25
View File
@@ -0,0 +1,25 @@
// @ts-check
import { notarize as electronNotarize } from 'electron-notarize'
/**
* @param context {import("electron-builder").AfterPackContext}
*/
export const notarize = async (context) => {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName === 'darwin') {
const appName = context.packager.appInfo.productFilename
console.log(`Notarizing "${appName}.app"...`)
await electronNotarize({
tool: "notarytool",
appPath: `${appOutDir}/${appName}.app`,
appleId: /** @type {string} */ (process.env.APPLEID),
appleIdPassword: /** @type {string} */ (process.env.APPLEIDPASS),
teamId: /** @type {string} */ (process.env.TEAMID),
})
console.log(`Notarization successful`)
}
}
+25
View File
@@ -0,0 +1,25 @@
// @ts-check
import { platform } from "os"
/**
* @typedef {"win" | "mac" | "linux"} System
* @returns {System}
*/
export const getSystem = () => {
switch (platform()) {
case "win32": return "win"
case "darwin": return "mac"
default: return "linux"
}
}
/**
* @param {System} system
*/
export const getSystemName = system => {
switch (system) {
case "win": return "Windows"
case "mac": return "macOS"
case "linux": return "Linux"
}
}
-141
View File
@@ -1,141 +0,0 @@
// @ts-check
require("dotenv").config()
const Client = require ("ssh2-sftp-client")
const fs = require ("fs")
const path = require ("path")
const semver = require ("semver");
/**
* Needed env variables:
* - `HOST`
* - `USERNAME`
* - `PASSWORD`
*
* Needed command line args:
*
* `channel os`
*
* `channel = stable | insider`
*
* `os = win | osx | linux`
*
* @param channel {"stable" | "insider"}
* @param os {"win" | "osx" | "linux"}
*/
const publishToServer =
async (channel, os) => {
if (channel !== "stable" && channel !== "insider") {
throw new TypeError (`publishToServer requires a specified channel ("stable" or "insider"), but it received ${channel}`)
}
if (os !== "win" && os !== "osx" && os !== "linux") {
throw new TypeError (`publishToServer requires a specified OS ("win", "osx" or "linux"), but it received ${os}`)
}
const subFolder = os === "win" ? "win" : os === "linux" ? "linux" : "mac"
const updateYmlName =
os === "win"
? "latest.yml"
: os === "linux"
? "latest-linux.yml"
: "latest-mac.yml"
const distPath = channel === "insider" ? ["dist", "insider"] : ["dist"]
const serverPath = `./update.optolith.app/${channel === "insider" ? "insider/" : ""}${subFolder}`
const regex =
channel === "insider"
? os === "win"
? /^OptolithInsiderSetup_(.+)\.exe$/
: os === "linux"
? /^OptolithInsider_(.+)\.(?:AppImage|tar\.gz)$/
: /^OptolithInsider_(.+)\.(?:zip|dmg)$/
: os === "win"
? /^OptolithSetup_(.+)\.exe$/
: os === "linux"
? /^Optolith_(.+)\.(?:AppImage|tar\.gz)$/
: /^Optolith_(.+)\.(?:zip|dmg)$/
const recreateFileNames =
channel === "insider"
? os === "win"
? /**
* @param {string} v Version
*/ v => [`OptolithInsiderSetup_${v}.exe`, `OptolithInsiderSetup_${v}.exe.blockmap`]
: os === "linux"
? /**
* @param {string} v Version
*/ v => [`OptolithInsider_${v}.AppImage`, `OptolithInsider_${v}.tar.gz`]
: /**
* @param {string} v Version
*/ v => [`OptolithInsider_${v}.dmg`, `OptolithInsider_${v}.dmg.blockmap`, `OptolithInsider_${v}.zip`]
: os === "win"
? /**
* @param {string} v Version
*/ v => [`OptolithSetup_${v}.exe`, `OptolithSetup_${v}.exe.blockmap`]
: os === "linux"
? /**
* @param {string} v Version
*/ v => [`Optolith_${v}.AppImage`, `Optolith_${v}.tar.gz`]
: /**
* @param {string} v Version
*/ v => [`Optolith_${v}.dmg`, `Optolith_${v}.dmg.blockmap`, `Optolith_${v}.zip`]
const allFiles = await fs.promises.readdir (path.join (...distPath))
const allInstallerNames = allFiles .filter (fileName => regex .test (fileName))
const allInstallerVersionsSorted =
allInstallerNames .map (fileName => regex .exec (fileName) [1])
.sort (semver .rcompare)
if (allInstallerVersionsSorted .length < 1) {
throw new RangeError ("Array of sorted installer versions is empty")
}
const latestFileNames = recreateFileNames (allInstallerVersionsSorted [0])
console.log(`Files to upload: ${[updateYmlName, ...latestFileNames] .join (", ")}`);
// Actual server connection
const client = new Client ()
console.log("Connecting to server...");
await client.connect ({
host: process.env.HOST,
port: 22,
username: process.env.USERNAME,
password: process.env.PASSWORD
})
console.log(`Server connection established`);
for (const fileName of latestFileNames) {
console.log(`Uploading ${fileName}`);
const stream = fs.readFileSync (path.join (...distPath, fileName))
const fileRes = await client.put (stream, `${serverPath}/${fileName}`)
console.log(`Upload done: ${fileName} (${fileRes})`);
}
console.log(`Uploading ${updateYmlName}`);
const updateYml = fs.readFileSync (path.join (...distPath, updateYmlName))
const ymlRes = await client.put (updateYml, `${serverPath}/${updateYmlName}`)
console.log(`Upload done: ${updateYmlName} (${ymlRes})`);
await client.end ()
console.log("Closed server connection.");
}
module.exports = {
publishToServer
}
+41
View File
@@ -0,0 +1,41 @@
// @ts-check
import { join } from "path"
import { join as joinPosix } from "path/posix"
import Client from "ssh2-sftp-client"
/**
* @param {Client.ConnectOptions} options
* @param {(client: Client) => Promise<void>} action
*/
export const run = async (options, action) => {
const client = new Client()
console.log("Connecting to server ...")
await client.connect(options)
console.log(`Server connection established.`)
await action(client)
await client.end ()
console.log("Closed server connection.")
}
/**
* @param {Client} client
* @param {string} localDir
* @param {string} remoteDir
* @param {string} fileName
*/
export const upload = async (client, localDir, remoteDir, fileName) => {
console.log(`Uploading ${fileName} ...`);
await client.fastPut (
join (localDir, fileName),
joinPosix (remoteDir, fileName),
{
step: !process.env.CI ? (totalTransferred, _, total) => {
const percent = Math.floor (totalTransferred / total * 100)
console.log(`Progress: ${percent}%`);
} : undefined
}
)
console.log(`Upload done: ${fileName}.`);
}
+31
View File
@@ -0,0 +1,31 @@
// @ts-check
import { join } from "path/posix"
/**
* @param {"prerelease" | "stable"} channel
*/
const remoteChannelPath = channel => {
switch (channel) {
case "prerelease": return "insider"
case "stable": return "."
}
}
/**
* @param {import("./platform.mjs").System} os
*/
const remoteOsPath = os => {
switch (os) {
case "win": return "win"
case "linux": return "linux"
default: return "mac"
}
}
/**
* @param {string} root
* @param {"prerelease" | "stable"} channel
* @param {import("./platform.mjs").System} os
*/
export const getRemotePath = (root, channel, os) =>
join(root, remoteChannelPath(channel), remoteOsPath(os))
-9
View File
@@ -1,9 +0,0 @@
param([switch]$insider)
$source = ".\app\Database"
Write-Output "Source: $(Resolve-Path -Path $source)"
python .\encryptTables.py $source
Write-Output "Table encryption succeeded!"
-58
View File
@@ -1,58 +0,0 @@
import base64
import os
import os.path
import sys
import zipfile
import cryptography
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
def encryptTables(tableFolder):
# Zip files into project
zipf = zipfile.ZipFile('Tables.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir(tableFolder, zipf)
zipf.close()
# Obtain key from enviroment variable
key = os.environ['OPTOLITH_KEY']
# Create encryption key
salt = b'optolithSalt'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend())
cryptoKey = base64.urlsafe_b64encode(kdf.derive(key.encode(encoding='UTF-8')))
# Encrypt file
f = Fernet(cryptoKey)
with open("Tables.zip", "rb") as sourceFile:
with open("Tables.crypto", "wb") as targetFile:
encrypted = f.encrypt(sourceFile.read()) # For now. This creates larger files then necessary
# encryptedBytes = base64.decodebytes(encrypted)
targetFile.write(encrypted)
# Delete old table zip
os.remove("Tables.zip")
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
(p, extension) = os.path.splitext(file)
if extension == ".yaml" or extension == ".json" or extension == ".ts":
ziph.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), path))
if __name__ == "__main__":
if(len(sys.argv)) == 1:
path = input("Bitte Pfad zu den Tabellen eingeben:\n> ")
else:
path = sys.argv[1]
encryptTables(path)
+11
View File
@@ -0,0 +1,11 @@
// @ts-check
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
globals: {
"ts-jest": {
tsconfig: "tsconfig.test.json"
}
}
}
+23488 -5950
View File
File diff suppressed because it is too large Load Diff
+70 -73
View File
@@ -1,109 +1,106 @@
{
"name": "optolith",
"productName": "Optolith",
"version": "1.3.2",
"version": "1.5.2",
"description": "A generator for heroes for the P&P-RPG 'The Dark Eye'.",
"author": {
"name": "Lukas Obermann",
"email": "support@optolith.app"
},
"homepage": "https://github.com/elyukai/optolith-client",
"homepage": "https://optolith.app",
"license": "MPL-2.0",
"main": "app/main.js",
"dependencies": {
"@glennsl/bs-json": "5.0.2",
"ajv": "6.12.0",
"bs-platform": "7.2.2",
"electron-log": "4.1.1",
"electron-updater": "4.2.5",
"@electron/remote": "^2.0.8",
"adm-zip": "^0.5.1",
"ajv": "6.12.6",
"electron-devtools-installer": "^3.2.1",
"electron-log": "^4.4.8",
"electron-updater": "^5.0.5",
"electron-window-state": "5.0.3",
"moment": "2.24.0",
"moment": "^2.29.4",
"mousetrap": "1.6.5",
"react": "16.13.1",
"react-custom-scrollbars": "4.2.1",
"react-dom": "16.13.1",
"react-markdown": "4.3.1",
"react-markdown": "^8.0.0",
"react-portal": "4.2.1",
"react-redux": "7.2.0",
"react-redux": "7.2.1",
"react-textfit": "1.1.0",
"reason-react": "0.7.0",
"reductive": "2.0.1",
"redux": "4.0.5",
"redux-devtools-extension": "2.13.8",
"redux-thunk": "2.3.0",
"remark-breaks": "1.0.5",
"rehype-raw": "^5.1.0",
"remark-breaks": "^2.0.2",
"remark-gfm": "^3.0.1",
"reselect": "4.0.0",
"semver": "7.1.3",
"ssh2-sftp-client": "5.1.2",
"tslib": "1.11.1",
"yaml": "1.8.3"
"semver": "7.3.2",
"tslib": "^2.3.1",
"yaml": "1.10.0"
},
"devDependencies": {
"@glennsl/bs-jest": "0.5.1",
"@types/classnames": "2.2.10",
"@types/jest": "25.1.5",
"@types/mousetrap": "1.6.3",
"@types/node": "13.11.0",
"@types/react": "16.9.32",
"@types/react-custom-scrollbars": "4.0.6",
"@types/react-dom": "16.9.6",
"@commitlint/cli": "11.0.0",
"@commitlint/config-conventional": "11.0.0",
"@types/classnames": "2.2.11",
"@types/jest": "26.0.15",
"@types/mousetrap": "1.6.4",
"@types/node": "14.14.7",
"@types/react": "16.9.56",
"@types/react-custom-scrollbars": "4.0.7",
"@types/react-dom": "16.9.9",
"@types/react-portal": "4.0.2",
"@types/react-redux": "7.1.7",
"@types/semver": "7.1.0",
"@types/styled-components": "5.0.1",
"@types/yaml": "1.2.0",
"@typescript-eslint/eslint-plugin": "2.26.0",
"@typescript-eslint/parser": "2.26.0",
"@types/react-redux": "7.1.11",
"@types/semver": "7.3.4",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"custom-env": "2.0.1",
"electron": "8.2.0",
"electron-builder": "22.4.1",
"electron-notarize": "0.3.0",
"eslint": "6.8.0",
"eslint-plugin-react": "7.19.0",
"eslint-plugin-react-hooks": "3.0.0",
"fs-extra": "9.0.0",
"gentype": "3.18.0",
"jest": "25.2.7",
"madge": "3.8.0",
"sass": "1.26.3",
"ts-jest": "25.3.1",
"typescript": "3.8.3"
"dotenv": "8.2.0",
"electron": "^19.0.8",
"electron-builder": "^23.1.0",
"electron-notarize": "^1.2.1",
"eslint": "^8.7.0",
"eslint-plugin-react": "^7.28.0",
"eslint-plugin-react-hooks": "^4.3.0",
"eslint-plugin-tsdoc": "^0.2.14",
"fs-extra": "9.0.1",
"gentype": "3.38.0",
"html-webpack-plugin": "^5.5.0",
"husky": "^4.3.8",
"jest": "^26.6.3",
"sass": "1.29.0",
"ssh2-sftp-client": "^9.0.1",
"standard-version": "^9.3.1",
"ts-jest": "^26.5.6",
"ts-loader": "^9.2.6",
"typescript": "^4.5.5",
"webpack": "^5.67.0",
"webpack-cli": "^4.9.2"
},
"scripts": {
"prerelease:win": "set NODE_ENV=development && node ./deploy/buildInsiderWin.js",
"prerelease:linux": "NODE_ENV=development node ./deploy/buildInsiderLinux.js",
"prerelease:osx": "NODE_ENV=development node ./deploy/buildInsiderMac.js",
"release:win": "set NODE_ENV=production && node ./deploy/buildWin.js",
"release:linux": "NODE_ENV=production node ./deploy/buildLinux.js",
"release:osx": "NODE_ENV=production node ./deploy/buildMac.js",
"css:build": "node --experimental-modules ./deploy/buildSass.mjs",
"prerelease:linux": "NODE_ENV=development node -r dotenv/config ./deploy/buildInsiderLinux.js",
"prerelease:mac": "NODE_ENV=development node ./deploy/buildInsiderMac.js",
"stable:win": "set NODE_ENV=production && node ./deploy/buildWin.js",
"stable:linux": "NODE_ENV=production node ./deploy/buildLinux.js",
"stable:mac": "NODE_ENV=production node ./deploy/buildMac.js",
"css:build": "sass --style=compressed src/Main.scss app/main.css",
"css:watch": "sass --watch --style=compressed src/Main.scss app/main.css",
"build": "npm run ts:build && npm run css:build && npm run js:build",
"js:build": "webpack",
"js:watch": "webpack -w",
"ts:build": "tsc",
"ts:watch": "tsc --watch",
"re:build": "bsb -make-world",
"re:watch": "bsb -make-world -w",
"re:clean": "bsb -clean-world",
"getstatic": "node ./deploy/getStaticData.js",
"yaml:encrypt": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./encryptTables.ps1",
"yaml:decrypt": "python ./prepareTables.py",
"ci:copyschemes": "node ./deploy/copySchemaCI.js",
"ts:watch": "tsc -w",
"lint": "eslint \"src/\" --ext \".ts\" --ext \".tsx\"",
"start": "electron .",
"test": "jest",
"circ": "madge -c ./src"
"circ": "madge -c ./src",
"release:main": "standard-version --skip.commit --skip.tag",
"release:pre": "standard-version --prerelease=alpha"
},
"repository": "github:elyukai/optolith-client",
"jest": {
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
"testEnvironment": "node"
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
-51
View File
@@ -1,51 +0,0 @@
import base64
import os
import os.path
import sys
import zipfile
import cryptography
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
def decryptTables():
print("Decrypting tables")
# Obtain key from enviroment variable
key = os.environ['OPTOLITH_KEY']
# Create encryption key
salt = b'optolithSalt'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend())
cryptoKey = base64.urlsafe_b64encode(kdf.derive(key.encode(encoding='UTF-8')))
# Encrypt file
f = Fernet(cryptoKey)
with open("Tables.crypto", "rb") as sourceFile:
with open("Tables.zip", "wb") as targetFile:
# encrypted = base64.encodebytes(sourceFile.read())
decrypted = f.decrypt(sourceFile.read())
targetFile.write(decrypted)
print("Tables decrypted")
def prepareTables():
print("Unpacking tables")
# Unpack zip file
os.mkdir("app/Database")
with zipfile.ZipFile("Tables.zip", 'r') as zip_ref:
zip_ref.extractall("app/Database")
print("Tables unpacked")
if __name__ == "__main__":
print("Start to prepare tables...")
decryptTables()
prepareTables()
print("Preparing tables finished")
+7 -4
View File
@@ -1,5 +1,6 @@
import { remote } from "electron"
import { Just, Nothing } from "../../Data/Maybe"
import * as remote from "@electron/remote"
import { Just } from "../../Data/Maybe"
import { getCurrentHeroId } from "../Selectors/stateSelectors"
import { getIsHeroSection } from "../Selectors/uilocationSelectors"
import { TabId } from "../Utilities/LocationUtils"
import { isDialogOpen } from "../Utilities/SubwindowsUtils"
@@ -24,8 +25,10 @@ export const redoAccelerator = (): ReduxAction => (dispatch, getState) => {
export const saveHeroAccelerator: ReduxAction<Promise<void>> =
async (dispatch, getState) => {
if (!isDialogOpen () && getIsHeroSection (getState ())) {
await dispatch (saveHero (Nothing))
const heroId = getCurrentHeroId (getState ())
if (!isDialogOpen () && getIsHeroSection (getState ()) && heroId.isJust) {
await dispatch (saveHero (heroId.value))
}
}
-2
View File
@@ -1,2 +0,0 @@
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
-120
View File
@@ -1,120 +0,0 @@
type action =
| SetLocale(Either.t(string, string))
| SwitchActiveItemHints
| SetTheme(FilterOptions.theme)
| SwitchEditingHeroAfterCreationPhase
| SwitchAnimations
| SetTab(FilterOptions.tab)
| SetHeroListSortOrder(FilterOptions.heroListSortOptions)
| SetHeroListVisibilityFilter(FilterOptions.heroListVisibilityFilter)
| SetHeroListFilterText(string)
| CreateHero(Hero.t)
| OpenHero(int)
| SaveHero(int)
| DeleteHero(int)
| DuplicateHero(int)
| UndoHeroAction
| RedoHeroAction
| SetHeroName(string)
| SetCustomProfessionName(string)
| SetFamily(string)
| SetPlaceOfBirth(string)
| SetDateOfBirth(string)
| SetAge(string)
| SetHairColor(int)
| SetEyeColor(int)
| SetSize(string)
| SetWeight(string)
| SetTitle(string)
| SetSocialStatus(int)
| SetCharacteristics(string)
| SetOtherInfo(string)
| SetCultureAreaKnowledge(string)
| AddAdventurePoints(int)
| EndHeroCreation
| SetPactCategory(Maybe.t(int))
| SetPactLevel(int)
| SetPactTargetType(int)
| SetTargetDomain(int)
| SetCustomTargetDomain(string)
| SetTargetName(string)
| SetRace(int)
| SetRaceVariant(int)
| SetRacesSortOrder(FilterOptions.racesSortOptions)
| SetRacesFilterText(string)
| SetCulture(int)
| SetCulturesSortOrder(FilterOptions.culturesSortOptions)
| SetCulturesVisibilityFilter(FilterOptions.culturesVisibilityFilter)
| SetCulturesFilterText(string)
| SetProfession(int)
| SetProfessionVariant(int)
| SetProfessionsSortOrder(FilterOptions.professionsSortOptions)
| SetProfessionsVisibilityFilter(FilterOptions.professionsVisibilityFilter)
| SetProfessionsGroupVisibilityFilter(
FilterOptions.professionsGroupVisibilityFilter,
)
| SetProfessionsFilterText(string)
| AddAttributePoint(int)
| RemoveAttributePoint(int)
| AddLifePoint
| RemoveLifePoint
| AddArcaneEnergyPoint
| RemoveArcaneEnergyPoint
| AddKarmaPoint
| RemoveKarmaPoint
| AddLostLifePoint
| RemoveLostLifePoint
| AddLostLifePoints(int)
| AddBoughtBackArcaneEnergyPoint
| RemoveBoughtBackArcaneEnergyPoint
| AddLostArcaneEnergyPoint
| RemoveLostArcaneEnergyPoint
| AddLostArcaneEnergyPoints(int)
| AddBoughtBackKarmaPoint
| RemoveBoughtBackKarmaPoint
| AddLostKarmaPoint
| RemoveLostKarmaPoint
| AddLostKarmaPoints(int)
| SetAttributeAdjustment(int)
| AddCombatTechniquePoint(int)
| RemoveCombatTechniquePoint(int)
| SetCombatTechniquesSortOrder(FilterOptions.combatTechniquesSortOptions)
| SetCombatTechniquesFilterText(string)
| AddLiturgicalChant(int)
| RemoveLiturgicalChant(int)
| AddLiturgicalChantPoint(int)
| RemoveLiturgicalChantPoint(int)
| AddBlessing(int)
| RemoveBlessing(int)
| SetLiturgicalChantsSortOrder(FilterOptions.liturgicalChantsSortOptions)
| SetActiveLiturgicalChantsFilterText(string)
| SetInactiveLiturgicalChantsFilterText(string)
| SetPetName(string)
| SetPetSize(string)
| SetPetType(string)
| SetPetSpentAp(string)
| SetPetTotalAp(string)
| SetPetCourage(string)
| SetPetSagacity(string)
| SetPetIntuition(string)
| SetPetCharisma(string)
| SetPetDexterity(string)
| SetPetAgility(string)
| SetPetConstitution(string)
| SetPetStrength(string)
| SetPetLp(string)
| SetPetAe(string)
| SetPetSpi(string)
| SetPetTou(string)
| SetPetPro(string)
| SetPetIni(string)
| SetPetMov(string)
| SetPetAttack(string)
| SetPetAt(string)
| SetPetPa(string)
| SetPetDp(string)
| SetPetReach(string)
| SetPetActions(string)
| SetPetSkills(string)
| SetPetAbilities(string)
| SetPetNotes(string);
+9 -5
View File
@@ -1,5 +1,4 @@
import { clipboard } from "electron"
import { fromLeft_, Left } from "../../Data/Either"
import { fmapF } from "../../Data/Functor"
import { List } from "../../Data/List"
import { Just, Maybe, Nothing } from "../../Data/Maybe"
@@ -25,6 +24,7 @@ interface PromptOptionsCreator extends RecordCreator<PromptOptions<any>> {
<A> (x: PartialMaybeOrNothing<OmitName<PromptOptions<A>>>): Record<PromptOptions<A>>
}
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const PromptOptions: PromptOptionsCreator =
fromDefault ("PromptOptions")
<PromptOptions<any>> ({
@@ -45,6 +45,7 @@ interface PromptButtonCreator extends RecordCreator<PromptButton<any>> {
<A> (x: PartialMaybeOrNothing<OmitName<PromptButton<A>>>): Record<PromptButton<A>>
}
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const PromptButton: PromptButtonCreator =
fromDefault ("PromptButton")
<PromptButton<any>> ({
@@ -72,6 +73,7 @@ interface CustomPromptOptionsCreator extends RecordCreator<CustomPromptOptions<a
<A> (x: PartialMaybeOrNothing<OmitName<CustomPromptOptions<A>>>): Record<CustomPromptOptions<A>>
}
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const CustomPromptOptions: CustomPromptOptionsCreator =
fromDefault ("CustomPromptOptions")
<CustomPromptOptions<any>> ({
@@ -104,6 +106,7 @@ export interface AlertOptions {
message: string
}
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const AlertOptions =
fromDefault ("AlertOptions")
<AlertOptions> ({
@@ -176,13 +179,13 @@ export const addErrorAlert =
export const getErrorMsg =
(staticData: StaticDataRecord) =>
(message: string) =>
(error: Left<Error>): string =>
`${message} (${translate (staticData) ("general.errorcode")}: ${JSON.stringify (fromLeft_ (error))})`
(error: Error): string =>
`${message} (${translate (staticData) ("general.errorcode")}: ${JSON.stringify (error)})`
export const addDefaultErrorAlert =
(staticData: StaticDataRecord) =>
(message: string) =>
(error: Left<Error>) =>
(error: Error) =>
addErrorAlert (AlertOptions ({
message: getErrorMsg (staticData) (message) (error),
title: Just (translate (staticData) ("general.error")),
@@ -192,7 +195,7 @@ export const addDefaultErrorAlertWithTitle =
(staticData: StaticDataRecord) =>
(title: string) =>
(message: string) =>
(error: Left<Error>) =>
(error: Error) =>
addErrorAlert (AlertOptions ({
message: getErrorMsg (staticData) (message) (error),
title: Just (title),
@@ -212,6 +215,7 @@ export interface ConfirmOptions {
useYesNo: boolean
}
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ConfirmOptions =
fromDefault ("ConfirmOptions")
<ConfirmOptions> ({
-2
View File
@@ -1,2 +0,0 @@
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
-23
View File
@@ -1,23 +0,0 @@
type action =
| AddAttributePoint(int)
| RemoveAttributePoint(int)
| AddLifePoint
| RemoveLifePoint
| AddArcaneEnergyPoint
| RemoveArcaneEnergyPoint
| AddKarmaPoint
| RemoveKarmaPoint
| AddLostLifePoint
| RemoveLostLifePoint
| AddLostLifePoints(int)
| AddBoughtBackArcaneEnergyPoint
| RemoveBoughtBackArcaneEnergyPoint
| AddLostArcaneEnergyPoint
| RemoveLostArcaneEnergyPoint
| AddLostArcaneEnergyPoints(int)
| AddBoughtBackKarmaPoint
| RemoveBoughtBackKarmaPoint
| AddLostKarmaPoint
| RemoveLostKarmaPoint
| AddLostKarmaPoints(int)
| SetAttributeAdjustment(int);
+4 -4
View File
@@ -8,7 +8,7 @@ import { getAvailableAPMap } from "../Selectors/adventurePointsSelectors"
import { getIsInCharacterCreation } from "../Selectors/phaseSelectors"
import { getAddedArcaneEnergyPoints, getAddedKarmaPoints, getAddedLifePoints, getCurrentHeroPresent, getWikiAttributes } from "../Selectors/stateSelectors"
import { getMissingAP } from "../Utilities/AdventurePoints/adventurePointsUtils"
import { getAPForInc } from "../Utilities/IC.gen"
import { getAPForInc, ImprovementCost } from "../Utilities/ImprovementCost"
import { getAreSufficientAPAvailableForIncrease } from "../Utilities/Increasable/increasableUtils"
import { pipe, pipe_ } from "../Utilities/pipe"
import { ReduxAction } from "./Actions"
@@ -84,7 +84,7 @@ export const addLifePoint: ReduxAction<Promise<void>> =
liftM2 (pipe (
// get AP for added points
curryN (getAPForInc) ("D"),
curryN (getAPForInc) (ImprovementCost.D),
// AP are passed to result and result finally gets the available AP
getMissingAP (getIsInCharacterCreation (state))
@@ -120,7 +120,7 @@ export const addArcaneEnergyPoint: ReduxAction<Promise<void>> =
liftM2 (pipe (
// get AP for added points
curryN (getAPForInc) ("D"),
curryN (getAPForInc) (ImprovementCost.D),
// AP are passed to result and result finally gets the available AP
getMissingAP (getIsInCharacterCreation (state))
@@ -156,7 +156,7 @@ export const addKarmaPoint: ReduxAction<Promise<void>> =
liftM2 (pipe (
// get AP for added points
curryN (getAPForInc) ("D"),
curryN (getAPForInc) (ImprovementCost.D),
// AP are passed to result and result finally gets the available AP
getMissingAP (getIsInCharacterCreation (state))
+2 -2
View File
@@ -284,14 +284,14 @@ export const removeDisAdvantage =
Race.A.eyeColors,
altF_ (() => fmapF (mrace_var) (RaceVariant.A.eyeColors)),
bindF (uncons),
fmap (fst)
fmap<Pair<number, List<number>>, number> (fst)
)
(race),
pipe (
Race.A.hairColors,
altF_ (() => fmapF (mrace_var) (RaceVariant.A.hairColors)),
bindF (uncons),
fmap (fst)
fmap<Pair<number, List<number>>, number> (fst)
)
(race)
)
+48 -24
View File
@@ -2,13 +2,14 @@ import { fmap } from "../../Data/Functor"
import { bindF, fromJust, isJust, Just, Maybe } from "../../Data/Maybe"
import { keys, lookup, lookupF, OrderedMap } from "../../Data/OrderedMap"
import { Record } from "../../Data/Record"
import { Pair } from "../../Data/Tuple"
import * as ActionTypes from "../Constants/ActionTypes"
import { IdPrefixes } from "../Constants/IdPrefixes"
import { MeleeCombatTechniqueId, RangedCombatTechniqueId } from "../Constants/Ids"
import { AttrId, MeleeCombatTechniqueId, RangedCombatTechniqueId } from "../Constants/Ids"
import { EquipmentSortOptions } from "../Models/Config"
import { EditItem } from "../Models/Hero/EditItem"
import { HitZoneArmor } from "../Models/Hero/HitZoneArmor"
import { Item } from "../Models/Hero/Item"
import { Item, Range } from "../Models/Hero/Item"
import { ItemTemplate } from "../Models/Wiki/ItemTemplate"
import { getHitZoneArmorsState, getItemEditorInstance, getItemsState, getWikiItemTemplates } from "../Selectors/stateSelectors"
import { getNewId, prefixId } from "../Utilities/IDUtils"
@@ -76,6 +77,26 @@ export const addTemplateToList =
return undefined
}
export interface SetMoneyAction {
type: ActionTypes.SET_MONEY
payload: {
d: number
s: number
h: number
k: number
}
}
export const setMoney = (d: number, s: number, h: number, k: number): SetMoneyAction => ({
type: ActionTypes.SET_MONEY,
payload: {
d,
s,
h,
k,
},
})
export interface CreateItemAction {
type: ActionTypes.CREATE_ITEM
}
@@ -355,16 +376,17 @@ export const setDamageFlat = (value: string): SetDamageFlatAction => ({
export interface SetPrimaryAttributeAction {
type: ActionTypes.SET_ITEM_PRIMARY_ATTRIBUTE
payload: {
primary: Maybe<string>
primary: Maybe<AttrId | Pair<AttrId, AttrId>>
}
}
export const setPrimaryAttribute = (primary: Maybe<string>): SetPrimaryAttributeAction => ({
type: ActionTypes.SET_ITEM_PRIMARY_ATTRIBUTE,
payload: {
primary,
},
})
export const setPrimaryAttribute =
(primary: Maybe<AttrId | Pair<AttrId, AttrId>>): SetPrimaryAttributeAction => ({
type: ActionTypes.SET_ITEM_PRIMARY_ATTRIBUTE,
payload: {
primary,
},
})
export interface SetDamageThresholdAction {
type: ActionTypes.SET_ITEM_DAMAGE_THRESHOLD
@@ -490,15 +512,15 @@ export interface SetRangeAction {
type: ActionTypes.SET_ITEM_RANGE
payload: {
value: string
index: number
key: keyof Range
}
}
export const setRange = (value: string, index: number): SetRangeAction => ({
export const setRange = (value: string, key: keyof Range): SetRangeAction => ({
type: ActionTypes.SET_ITEM_RANGE,
payload: {
value,
index,
key,
},
})
@@ -696,12 +718,13 @@ export const applyItemTemplate: ReduxAction =
getItemEditorInstance,
bindF (EditItem.A.template),
bindF (lookupF (getWikiItemTemplates (getState ()))),
fmap (template => dispatch<ApplyItemTemplateAction> ({
type: ActionTypes.APPLY_ITEM_TEMPLATE,
payload: {
template,
},
}))
fmap ((template: Record<ItemTemplate>) =>
dispatch<ApplyItemTemplateAction> ({
type: ActionTypes.APPLY_ITEM_TEMPLATE,
payload: {
template,
},
}))
)
}
@@ -719,12 +742,13 @@ export const lockItemTemplate: ReduxAction =
getItemEditorInstance,
bindF (EditItem.A.template),
bindF (lookupF (getWikiItemTemplates (getState ()))),
fmap (template => dispatch<LockItemTemplateAction> ({
type: ActionTypes.LOCK_ITEM_TEMPLATE,
payload: {
template,
},
}))
fmap ((template: Record<ItemTemplate>) =>
dispatch<LockItemTemplateAction> ({
type: ActionTypes.LOCK_ITEM_TEMPLATE,
payload: {
template,
},
}))
)
}
+21
View File
@@ -0,0 +1,21 @@
import { fromMaybe, isNothing, Maybe } from "../../Data/Maybe"
import { SET_FALLBACK_LOCALE } from "../Constants/ActionTypes"
import { Locale } from "../Models/Config"
import { getSystemLocale } from "../Utilities/IOUtils"
export interface SetFallbackLocaleAction {
type: SET_FALLBACK_LOCALE
payload: {
locale: string
localeType: "default" | "set"
}
}
export const setFallbackLocale =
(locale: Maybe<Locale>): SetFallbackLocaleAction => ({
type: SET_FALLBACK_LOCALE,
payload: {
locale: fromMaybe (getSystemLocale ()) (locale),
localeType: isNothing (locale) ? "default" : "set",
},
})
+7 -8
View File
@@ -1,7 +1,6 @@
import { handleE } from "../../Control/Exception"
import { Either, fromLeft_, fromRight_, isLeft, isRight } from "../../Data/Either"
import { List } from "../../Data/List"
import { elem, fromJust, isJust, Just, Maybe } from "../../Data/Maybe"
import { elem, fromJust, isJust, Just } from "../../Data/Maybe"
import { lookup } from "../../Data/OrderedMap"
import { OrderedSet } from "../../Data/OrderedSet"
import { bind } from "../../System/IO"
@@ -121,7 +120,7 @@ export const loadHero = (id: string): LoadHeroAction => ({
export const saveHeroes: ReduxAction =
async (dispatch, getState) => {
await bind (handleE (dispatch (requestAllHeroesSave)))
(async res => isRight (res)
(async res => res.isRight
? dispatch (addAlert (AlertOptions ({
message: translate (getWiki (getState ()))
("header.dialogs.allsaved"),
@@ -137,12 +136,12 @@ export interface SaveHeroAction {
}
export const saveHero =
(id: Maybe<string>): ReduxAction<Promise<void>> =>
(id: string): ReduxAction<Promise<void>> =>
async (dispatch, getState) => {
await bind (handleE (dispatch (requestHeroSave (id))))
(async res => {
if (isLeft (res)) {
const err = fromLeft_ (res)
if (res.isLeft) {
const err = res.value
const title = translate (getWiki (getState ()))
("header.dialogs.saveheroeserror.title")
@@ -154,8 +153,8 @@ export const saveHero =
await dispatch (addErrorAlert (opts))
}
else if (Either.any (isJust) (res)) {
const save_id = fromJust (fromRight_ (res))
else if (isJust (res.value)) {
const save_id = fromJust (res.value)
dispatch<SaveHeroAction> ({
type: ActionTypes.SAVE_HERO,
+32 -28
View File
@@ -1,13 +1,13 @@
import { remote } from "electron"
import * as remote from "@electron/remote"
import * as fs from "fs"
import { extname, join } from "path"
import { handleE } from "../../Control/Exception"
import { Either, fromLeft_, fromRight_, isLeft, isRight } from "../../Data/Either"
import { Either, fromLeft_, fromRight_, isLeft } from "../../Data/Either"
import { flip } from "../../Data/Function"
import { fmap } from "../../Data/Functor"
import { over } from "../../Data/Lens"
import { List, notNull } from "../../Data/List"
import { alt_, bindF, elem, ensure, fromJust, isJust, isNothing, Just, listToMaybe, Maybe, maybe, Nothing } from "../../Data/Maybe"
import { bindF, elem, ensure, fromJust, isJust, Just, listToMaybe, Maybe, maybe, Nothing } from "../../Data/Maybe"
import { any, lookup, OrderedMap } from "../../Data/OrderedMap"
import { toObject } from "../../Data/Record"
import * as IO from "../../System/IO"
@@ -23,7 +23,7 @@ import { UISettingsState } from "../Models/UISettingsState"
import { StaticDataRecord } from "../Models/Wiki/WikiModel"
import { heroReducer } from "../Reducers/heroReducer"
import { user_data_path } from "../Selectors/envSelectors"
import { getCurrentHeroId, getHeroes, getLocaleId, getWiki } from "../Selectors/stateSelectors"
import { getFallbackLocaleId, getHeroes, getLocaleId, getWiki } from "../Selectors/stateSelectors"
import { getUISettingsState } from "../Selectors/uisettingsSelectors"
import { prepareAPCache, prepareAPCacheForHero, writeCache } from "../Utilities/Cache"
import { translate } from "../Utilities/I18n"
@@ -37,6 +37,7 @@ import { deleteHeroFromFile, saveAllHeroesToFile, saveHeroToFile } from "../Util
import { ReduxAction } from "./Actions"
import { addAlert, addErrorAlert, addPrompt, AlertOptions, CustomPromptOptions, getErrorMsg, PromptButton } from "./AlertActions"
const UISSA = UISettingsState.A
export const requestConfigSave: ReduxAction<Promise<boolean>> =
@@ -50,11 +51,16 @@ export const requestConfigSave: ReduxAction<Promise<boolean>> =
...toObject (uiSettingsState),
sheetCheckAttributeValueVisibility:
Just (UISSA.sheetCheckAttributeValueVisibility (uiSettingsState)),
sheetUseParchment:
Just (UISSA.sheetUseParchment (uiSettingsState)),
sheetZoomFactor:
UISSA.sheetZoomFactor (uiSettingsState),
theme: Just (UISSA.theme (uiSettingsState)),
enableEditingHeroAfterCreationPhase:
Just (UISSA.enableEditingHeroAfterCreationPhase (uiSettingsState)),
enableAnimations: Just (UISSA.enableAnimations (uiSettingsState)),
locale: getLocaleId (state),
fallbackLocale: getFallbackLocaleId (state),
})
return pipe_ (
@@ -64,13 +70,13 @@ export const requestConfigSave: ReduxAction<Promise<boolean>> =
IO.bindF (async res => {
console.log (res)
if (isLeft (res)) {
if (res.isLeft) {
const title = Just (translate (static_data) ("header.dialogs.saveconfigerror.title"))
const message = getErrorMsg (static_data)
(translate (static_data)
("header.dialogs.saveconfigerror.message"))
(res)
(res.value)
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -114,7 +120,7 @@ export const requestAllHeroesSave: ReduxAction<Promise<boolean>> =
const message = getErrorMsg (static_data)
(translate (static_data)
("header.dialogs.saveheroeserror.message"))
(res)
(fromLeft_ (res))
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -139,6 +145,7 @@ export const requestSaveCache = (all_saved: boolean): ReduxAction<Promise<Either
prepareAPCache (all_saved),
writeCache
)
.then (e => e.toOldEither ())
export interface ReceiveHeroSaveAction {
type: ActionTypes.RECEIVE_HERO_SAVE
@@ -163,20 +170,12 @@ const receiveHeroSave = (
})
export const requestHeroSave =
(mcurrent_id: Maybe<string>): ReduxAction<Promise<Maybe<string>>> =>
(id: string): ReduxAction<Promise<Maybe<string>>> =>
async (dispatch, getState) => {
const state = getState ()
const static_data = getWiki (state)
const heroes = getHeroes (state)
const mcurrent_id_alt = alt_ (mcurrent_id) (() => getCurrentHeroId (getState ()))
if (isNothing (mcurrent_id_alt)) {
return Promise.resolve (Nothing)
}
const id = fromJust (mcurrent_id_alt)
const mcache = prepareAPCacheForHero (state, id)
if (isJust (mcache)) {
@@ -189,7 +188,7 @@ export const requestHeroSave =
const message = getErrorMsg (static_data)
(translate (static_data)
("header.dialogs.saveheroeserror.message"))
(res)
(fromLeft_ (res))
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -205,13 +204,13 @@ export const requestHeroSave =
await dispatch (async (_, getState2) => writeCache (prepareAPCache (false)
(getState2 ())))
if (isLeft (cacheRes)) {
if (cacheRes.isLeft) {
const title = Just (translate (static_data) ("header.dialogs.saveheroeserror.title"))
const message = getErrorMsg (static_data)
(translate (static_data)
("header.dialogs.saveheroeserror.message"))
(cacheRes)
(cacheRes.value)
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -263,7 +262,7 @@ export const requestHeroDeletion =
const message = getErrorMsg (staticData)
(translate (staticData)
("header.dialogs.saveheroeserror.message"))
(res)
(fromLeft_ (res))
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -285,7 +284,11 @@ export const imgPathToBase64 =
(path: string): Maybe<string> => {
if (path.length > 0 && !isBase64Image (path)) {
if (fs.existsSync (path)) {
const prefix = `data:image/${extname (path).slice (1)};base64,`
const ext = extname (path)
.slice (1)
.toLowerCase ()
const prefix = `data:image/${ext};base64,`
const file = fs.readFileSync (path)
const fileString = file.toString ("base64")
@@ -298,6 +301,7 @@ export const imgPathToBase64 =
return Just (path)
}
export const requestHeroExport =
(id: string): ReduxAction =>
async (dispatch, getState) => {
@@ -325,7 +329,7 @@ export const requestHeroExport =
filters: [
{ name: "JSON", extensions: [ "json" ] },
],
defaultPath: hero.name.replace (/\//u, "/"),
defaultPath: `${hero.name.replace (/\//u, "/")}.json`,
})
if (isJust (pmfilepath)) {
@@ -333,7 +337,7 @@ export const requestHeroExport =
(flip (IO.writeFile) (JSON.stringify (hero)))
(pmfilepath))
if (isRight (res)) {
if (res.isRight) {
await dispatch (addAlert (AlertOptions ({
message: translate (staticData) ("heroes.dialogs.herosaved"),
})))
@@ -344,7 +348,7 @@ export const requestHeroExport =
const message = getErrorMsg (staticData)
(translate (staticData)
("header.dialogs.saveheroeserror.message"))
(res)
(res.value)
await dispatch (addErrorAlert (AlertOptions ({
title,
@@ -386,14 +390,14 @@ export const requestHeroImport: ReduxAction<Promise<void>> =
if (isJust (mfile_path)) {
const staticData = getWiki (getState ())
const ehero = await parseHero (staticData)
const hero = await parseHero (staticData)
(fromJust (mfile_path))
if (isLeft (ehero)) {
await dispatch (addErrorAlert (fromLeft_ (ehero)))
if (hero.isLeft) {
await dispatch (addErrorAlert (hero.value))
}
else {
dispatch (receiveHeroImport (fromRight_ (ehero)))
dispatch (receiveHeroImport (hero.value))
}
}
}
+29 -27
View File
@@ -1,10 +1,9 @@
import { join } from "path"
import { handleE, toMsg } from "../../Control/Exception"
import { eitherToMaybe, fromLeft_, fromRight_, isLeft, Left } from "../../Data/Either"
import { fromLeft_, fromRight_, isLeft } from "../../Data/Either"
import { flip } from "../../Data/Function"
import { fmap } from "../../Data/Functor"
import { fromArray, intercalate, map } from "../../Data/List"
import { bindF, fromJust, fromMaybe, isJust, Just, Maybe } from "../../Data/Maybe"
import { fromJust, fromMaybe, isJust, Just, Maybe } from "../../Data/Maybe"
import { filter, keysSet, OrderedMap } from "../../Data/OrderedMap"
import { notMember } from "../../Data/OrderedSet"
import { Record } from "../../Data/Record"
@@ -23,6 +22,7 @@ import { user_data_path } from "../Selectors/envSelectors"
import { getHeroes } from "../Selectors/stateSelectors"
import { deleteCache, forceCacheIsAvailable, insertAppStateCache, insertCacheMap, insertHeroesCache, readCache } from "../Utilities/Cache"
import { getSystemLocale } from "../Utilities/IOUtils"
import { Maybe as NewMaybe } from "../Utilities/Maybe"
import { pipe, pipe_ } from "../Utilities/pipe"
import { parseConfig } from "../Utilities/Raw/JSON/Config"
import { RawHerolist } from "../Utilities/Raw/RawData"
@@ -85,17 +85,17 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
const did_update = await readUpdate ()
const dispatchErrorAlertOptions = async (options: Left<Record<AlertOptions>>) => {
await dispatch (addErrorAlert (fromLeft_ (options)))
const dispatchErrorAlertOptions = async (options: Record<AlertOptions>) => {
await dispatch (addErrorAlert (options))
dispatch (setLoadingDoneWithError ())
}
const dispatchError = async (err: Left<Error>) =>
dispatchErrorAlertOptions (Left (AlertOptions ({
title: Just ("Error"),
message: toMsg (fromLeft_ (err)),
})))
const dispatchError = async (err: Error) =>
dispatchErrorAlertOptions (AlertOptions ({
title: Just ("Error"),
message: toMsg (err),
}))
console.log (did_update)
@@ -103,7 +103,7 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
const deleted = await deleteCache ()
if (isLeft (deleted)) {
return dispatchError (deleted)
return dispatchError (fromLeft_ (deleted))
}
}
@@ -111,26 +111,26 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
console.log (show (update_written))
if (isLeft (update_written)) {
return dispatchError (update_written)
if (update_written.isLeft) {
return dispatchError (update_written.value)
}
const econfig = await parseConfig ()
const config = await parseConfig ()
if (isLeft (econfig)) {
return dispatchErrorAlertOptions (econfig)
if (config.isLeft) {
return dispatchErrorAlertOptions (config.value)
}
const config = fromRight_ (econfig)
console.log (show (config.value))
console.log (show (config))
const mheroes = await pipe_ (
const mheroes = (await pipe_ (
join (user_data_path, "heroes.json"),
IO.readFile,
handleE,
fmap (pipe (eitherToMaybe, bindF (parseJSON as (x: string) => Maybe<RawHerolist>)))
)
handleE
))
.toMaybe ()
.bind (x => parseJSON (x) as NewMaybe<RawHerolist>)
.toOldMaybe ()
const mcache = await readCache ()
@@ -142,14 +142,17 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
fromLeft_,
parseErrorsToPairStr,
pairStrErrorToAlertOptions,
Left,
dispatchErrorAlertOptions
)
}
const available_langs = fromRight_ (eavailable_langs)
const estatic_data = await parseStaticData (fromMaybe (defaultLocale) (Config.A.locale (config)))
const estatic_data =
await parseStaticData (
fromMaybe (defaultLocale) (Config.A.locale (config.value)),
Config.A.fallbackLocale (config.value)
)
if (isLeft (estatic_data)) {
return pipe_ (
@@ -157,7 +160,6 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
fromLeft_,
parseErrorsToPairStr,
pairStrErrorToAlertOptions,
Left,
dispatchErrorAlertOptions
)
}
@@ -166,7 +168,7 @@ export const requestInitialData: ReduxAction<Promise<void>> = async (dispatch, g
staticData: fromRight_ (estatic_data),
heroes: mheroes,
defaultLocale,
config: Just (config),
config: Just (config.value),
cache: mcache,
availableLangs: available_langs,
}
+55 -31
View File
@@ -1,8 +1,7 @@
import { fmapF } from "../../Data/Functor"
import { bind, bindF, fromJust, isNothing, join, liftM2 } from "../../Data/Maybe"
import { bind, bindF, fromJust, isJust, isNothing, join, liftM2 } from "../../Data/Maybe"
import { lookup } from "../../Data/OrderedMap"
import { Record } from "../../Data/Record"
import * as ActionTypes from "../Constants/ActionTypes"
import { icFromJs } from "../Constants/Groups"
import { ChantsSortOptions } from "../Models/Config"
import { HeroModel } from "../Models/Hero/HeroModel"
import { LiturgicalChant } from "../Models/Wiki/LiturgicalChant"
@@ -10,9 +9,9 @@ import { getAvailableAPMap } from "../Selectors/adventurePointsSelectors"
import { getIsInCharacterCreation } from "../Selectors/phaseSelectors"
import { getCurrentHeroPresent, getLiturgicalChants, getWikiLiturgicalChants } from "../Selectors/stateSelectors"
import { getMissingAP } from "../Utilities/AdventurePoints/adventurePointsUtils"
import { getAPForActivatation } from "../Utilities/IC.gen"
import { getAPForActivatation } from "../Utilities/ImprovementCost"
import { getAreSufficientAPAvailableForIncrease } from "../Utilities/Increasable/increasableUtils"
import { pipe, pipe_ } from "../Utilities/pipe"
import { pipe_ } from "../Utilities/pipe"
import { ReduxAction } from "./Actions"
import { addNotEnoughAPAlert } from "./AlertActions"
@@ -20,6 +19,7 @@ export interface ActivateLiturgicalChantAction {
type: ActionTypes.ACTIVATE_LITURGY
payload: {
id: string
staticEntry: Record<LiturgicalChant>
}
}
@@ -30,27 +30,36 @@ export const addLiturgicalChant =
const wiki_liturgical_chants = getWikiLiturgicalChants (state)
const mhero = getCurrentHeroPresent (state)
const missingAPForInc =
pipe_ (
mhero,
bindF (hero => getAvailableAPMap (HeroModel.A.id (hero)) (state, { hero })),
join,
liftM2 (getMissingAP (getIsInCharacterCreation (state)))
(fmapF (lookup (id) (wiki_liturgical_chants))
(pipe (LiturgicalChant.A.ic, icFromJs, getAPForActivatation))),
join
)
const maybeStaticLiturgicalChant = lookup (id) (wiki_liturgical_chants)
if (isNothing (missingAPForInc)) {
dispatch<ActivateLiturgicalChantAction> ({
type: ActionTypes.ACTIVATE_LITURGY,
payload: {
id,
},
})
}
else {
await dispatch (addNotEnoughAPAlert (fromJust (missingAPForInc)))
if (isJust (maybeStaticLiturgicalChant)) {
const staticLiturgicalChant = fromJust (maybeStaticLiturgicalChant)
const missingAPForInc =
pipe_ (
mhero,
bindF (hero => getAvailableAPMap (HeroModel.A.id (hero)) (state, { hero })),
join,
bindF (getMissingAP (getIsInCharacterCreation (state))
(pipe_ (
staticLiturgicalChant,
LiturgicalChant.A.ic,
getAPForActivatation
)))
)
if (isNothing (missingAPForInc)) {
dispatch<ActivateLiturgicalChantAction> ({
type: ActionTypes.ACTIVATE_LITURGY,
payload: {
id,
staticEntry: staticLiturgicalChant,
},
})
}
else {
await dispatch (addNotEnoughAPAlert (fromJust (missingAPForInc)))
}
}
}
@@ -93,15 +102,30 @@ export interface DeactivateLiturgyAction {
type: ActionTypes.DEACTIVATE_LITURGY
payload: {
id: string
staticEntry: Record<LiturgicalChant>
}
}
export const removeLiturgicalChant = (id: string): DeactivateLiturgyAction => ({
type: ActionTypes.DEACTIVATE_LITURGY,
payload: {
id,
},
})
export const removeLiturgicalChant =
(id: string): ReduxAction =>
(dispatch, getState) => {
const state = getState ()
const staticLiturgicalChants = getWikiLiturgicalChants (state)
const maybeStaticLiturgicalChant = lookup (id) (staticLiturgicalChants)
if (isJust (maybeStaticLiturgicalChant)) {
const staticLiturgicalChant = fromJust (maybeStaticLiturgicalChant)
dispatch<DeactivateLiturgyAction> ({
type: ActionTypes.DEACTIVATE_LITURGY,
payload: {
id,
staticEntry: staticLiturgicalChant,
},
})
}
}
export interface DeactivateBlessingAction {
type: ActionTypes.DEACTIVATE_BLESSING
+4 -4
View File
@@ -1,11 +1,11 @@
import { PrintToPDFOptions } from "electron"
import { handleE } from "../../Control/Exception"
import { Either, isLeft, isRight, Right } from "../../Data/Either"
import { flip } from "../../Data/Function"
import { appendStr } from "../../Data/List"
import { isJust, maybe } from "../../Data/Maybe"
import * as IO from "../../System/IO"
import { getCurrentHeroName, getWiki } from "../Selectors/stateSelectors"
import { Either, Right } from "../Utilities/Either"
import { translate } from "../Utilities/I18n"
import { showSaveDialog, windowPrintToPDF } from "../Utilities/IOUtils"
import { pipe } from "../Utilities/pipe"
@@ -42,15 +42,15 @@ export const requestPrintHeroToPDF = (): ReduxAction<Promise<void>> =>
(pipe (flip (IO.writeFile) (data), handleE))
(path)
if (isRight (res) && isJust (path)) {
if (res.isRight && isJust (path)) {
await dispatch (addAlert (AlertOptions ({
message: translate (staticData) ("sheets.dialogs.pdfsaved"),
})))
}
else if (isLeft (res)) {
else if (res.isLeft) {
await dispatch (addDefaultErrorAlert (staticData)
(translate (staticData)
("sheets.dialogs.pdfsaveerror.title"))
(res))
(res.value))
}
}
+23 -1
View File
@@ -1,4 +1,4 @@
import { SWITCH_SHEET_ATTR_VALUE_VISIBILITY } from "../Constants/ActionTypes"
import { SWITCH_SHEET_ATTR_VALUE_VISIBILITY, SWITCH_SHEET_USE_PARCHMENT, SET_SHEET_ZOOM_FACTOR } from "../Constants/ActionTypes"
export interface SwitchSheetAttributeValueVisibilityAction {
type: SWITCH_SHEET_ATTR_VALUE_VISIBILITY
@@ -7,3 +7,25 @@ export interface SwitchSheetAttributeValueVisibilityAction {
export const switchAttributeValueVisibility = (): SwitchSheetAttributeValueVisibilityAction => ({
type: SWITCH_SHEET_ATTR_VALUE_VISIBILITY,
})
export interface SwitchSheetUseParchmentAction {
type: SWITCH_SHEET_USE_PARCHMENT
}
export const switchUseParchment = (): SwitchSheetUseParchmentAction => ({
type: SWITCH_SHEET_USE_PARCHMENT,
})
export interface SetSheetZoomFactor {
type: SET_SHEET_ZOOM_FACTOR
payload: {
zoomFactor: number
}
}
export const setSheetZoomFactor = (zoomFactor: number): SetSheetZoomFactor => ({
type: SET_SHEET_ZOOM_FACTOR,
payload: {
zoomFactor,
},
})
+13 -14
View File
@@ -2,7 +2,6 @@ import { bind, bindF, fromJust, isJust, isNothing, join, liftM2 } from "../../Da
import { lookup } from "../../Data/OrderedMap"
import { Record } from "../../Data/Record"
import * as ActionTypes from "../Constants/ActionTypes"
import { icFromJs } from "../Constants/Groups"
import { SpellsSortOptions } from "../Models/Config"
import { HeroModel } from "../Models/Hero/HeroModel"
import { Cantrip } from "../Models/Wiki/Cantrip"
@@ -11,7 +10,7 @@ import { getAvailableAPMap } from "../Selectors/adventurePointsSelectors"
import { getIsInCharacterCreation } from "../Selectors/phaseSelectors"
import { getCurrentHeroPresent, getSpells, getWikiCantrips, getWikiSpells } from "../Selectors/stateSelectors"
import { getMissingAP } from "../Utilities/AdventurePoints/adventurePointsUtils"
import { getAPForActivatation } from "../Utilities/IC.gen"
import { getAPForActivatation } from "../Utilities/ImprovementCost"
import { getAreSufficientAPAvailableForIncrease } from "../Utilities/Increasable/increasableUtils"
import { pipe_ } from "../Utilities/pipe"
import { ReduxAction } from "./Actions"
@@ -21,7 +20,7 @@ export interface ActivateSpellAction {
type: ActionTypes.ACTIVATE_SPELL
payload: {
id: string
wikiEntry: Record<Spell>
staticEntry: Record<Spell>
}
}
@@ -32,10 +31,10 @@ export const addSpell =
const wiki_spells = getWikiSpells (state)
const mhero = getCurrentHeroPresent (state)
const mwiki_spell = lookup (id) (wiki_spells)
const maybeStaticSpell = lookup (id) (wiki_spells)
if (isJust (mwiki_spell)) {
const wiki_entry = fromJust (mwiki_spell)
if (isJust (maybeStaticSpell)) {
const staticSpell = fromJust (maybeStaticSpell)
const missingAPForInc =
pipe_ (
@@ -43,7 +42,7 @@ export const addSpell =
bindF (hero => getAvailableAPMap (HeroModel.A.id (hero)) (state, { hero })),
join,
bindF (getMissingAP (getIsInCharacterCreation (state))
(pipe_ (wiki_entry, Spell.A.ic, icFromJs, getAPForActivatation)))
(pipe_ (staticSpell, Spell.A.ic, getAPForActivatation)))
)
if (isNothing (missingAPForInc)) {
@@ -51,7 +50,7 @@ export const addSpell =
type: ActionTypes.ACTIVATE_SPELL,
payload: {
id,
wikiEntry: wiki_entry,
staticEntry: staticSpell,
},
})
}
@@ -65,7 +64,7 @@ export interface ActivateCantripAction {
type: ActionTypes.ACTIVATE_CANTRIP
payload: {
id: string
wikiEntry: Record<Cantrip>
staticEntry: Record<Cantrip>
}
}
@@ -93,7 +92,7 @@ export const addCantrip =
type: ActionTypes.ACTIVATE_CANTRIP,
payload: {
id,
wikiEntry: fromJust (mwiki_cantrip),
staticEntry: fromJust (mwiki_cantrip),
},
})
}
@@ -107,7 +106,7 @@ export interface DeactivateSpellAction {
type: ActionTypes.DEACTIVATE_SPELL
payload: {
id: string
wikiEntry: Record<Spell>
staticEntry: Record<Spell>
}
}
@@ -126,7 +125,7 @@ export const removeSpell =
type: ActionTypes.DEACTIVATE_SPELL,
payload: {
id,
wikiEntry: wiki_entry,
staticEntry: wiki_entry,
},
})
}
@@ -136,7 +135,7 @@ export interface DeactivateCantripAction {
type: ActionTypes.DEACTIVATE_CANTRIP
payload: {
id: string
wikiEntry: Record<Cantrip>
staticEntry: Record<Cantrip>
}
}
@@ -155,7 +154,7 @@ export const removeCantrip =
type: ActionTypes.DEACTIVATE_CANTRIP,
payload: {
id,
wikiEntry: wiki_entry,
staticEntry: wiki_entry,
},
})
}
+16
View File
@@ -126,3 +126,19 @@ export interface CloseEditPetAvatarAction {
export const closeEditPetAvatar = (): CloseEditPetAvatarAction => ({
type: ActionTypes.CLOSE_EDIT_PET_AVATAR,
})
export interface OpenAddRemoveMoneyAction {
type: ActionTypes.OPEN_ADD_REMOVE_MONEY
}
export const openAddRemoveMoney = (): OpenAddRemoveMoneyAction => ({
type: ActionTypes.OPEN_ADD_REMOVE_MONEY,
})
export interface CloseAddRemoveMoneyAction {
type: ActionTypes.CLOSE_ADD_REMOVE_MONEY
}
export const closeAddRemoveMoney = (): CloseAddRemoveMoneyAction => ({
type: ActionTypes.CLOSE_ADD_REMOVE_MONEY,
})
+1 -1
View File
@@ -24,7 +24,7 @@ export const setUpdateDownloadProgress =
})
enum UpdateAvailableResponse {
UpdateAndRestart, Cancel
UpdateAndRestart, Cancel
}
export const updateAvailable =
+17 -2
View File
@@ -1,6 +1,11 @@
/* eslint-disable @typescript-eslint/no-redeclare */
export const SET_LOCALE = "SET_LOCALE"
export type SET_LOCALE = "SET_LOCALE"
export const SET_FALLBACK_LOCALE = "SET_FALLBACK_LOCALE"
export type SET_FALLBACK_LOCALE = "SET_FALLBACK_LOCALE"
export const RECEIVE_DATA_TABLES = "RECEIVE_DATA_TABLES"
export type RECEIVE_DATA_TABLES = "RECEIVE_DATA_TABLES"
@@ -167,6 +172,10 @@ export const OPEN_EDIT_PET_AVATAR = "OPEN_EDIT_PET_AVATAR"
export type OPEN_EDIT_PET_AVATAR = "OPEN_EDIT_PET_AVATAR"
export const CLOSE_EDIT_PET_AVATAR = "CLOSE_EDIT_PET_AVATAR"
export type CLOSE_EDIT_PET_AVATAR = "CLOSE_EDIT_PET_AVATAR"
export const OPEN_ADD_REMOVE_MONEY = "OPEN_ADD_REMOVE_MONEY"
export type OPEN_ADD_REMOVE_MONEY = "OPEN_ADD_REMOVE_MONEY"
export const CLOSE_ADD_REMOVE_MONEY = "CLOSE_ADD_REMOVE_MONEY"
export type CLOSE_ADD_REMOVE_MONEY = "CLOSE_ADD_REMOVE_MONEY"
export const SET_HIGHER_PARADE_VALUES = "SET_HIGHER_PARADE_VALUES"
export type SET_HIGHER_PARADE_VALUES = "SET_HIGHER_PARADE_VALUES"
@@ -383,8 +392,6 @@ export const EDIT_ITEM = "EDIT_ITEM"
export type EDIT_ITEM = "EDIT_ITEM"
export const REMOVE_ITEM = "REMOVE_ITEM"
export type REMOVE_ITEM = "REMOVE_ITEM"
export const SET_ITEM = "SET_ITEM"
export type SET_ITEM = "SET_ITEM"
export const SET_ITEMS_SORT_ORDER = "SET_ITEMS_SORT_ORDER"
export type SET_ITEMS_SORT_ORDER = "SET_ITEMS_SORT_ORDER"
export const SET_DUCATES = "SET_DUCATES"
@@ -395,6 +402,8 @@ export const SET_HELLERS = "SET_HELLERS"
export type SET_HELLERS = "SET_HELLERS"
export const SET_KREUTZERS = "SET_KREUTZERS"
export type SET_KREUTZERS = "SET_KREUTZERS"
export const SET_MONEY = "SET_MONEY"
export type SET_MONEY = "SET_MONEY"
export const SET_ITEM_NAME = "SET_ITEM_NAME"
export type SET_ITEM_NAME = "SET_ITEM_NAME"
@@ -603,6 +612,12 @@ export type SET_PET_NOTES = "SET_PET_NOTES"
export const SWITCH_SHEET_ATTR_VALUE_VISIBILITY = "SWITCH_SHEET_ATTR_VALUE_VISIBILITY"
export type SWITCH_SHEET_ATTR_VALUE_VISIBILITY = "SWITCH_SHEET_ATTR_VALUE_VISIBILITY"
export const SWITCH_SHEET_USE_PARCHMENT = "SWITCH_SHEET_USE_PARCHMENT"
export type SWITCH_SHEET_USE_PARCHMENT = "SWITCH_SHEET_USE_PARCHMENT"
export const SET_SHEET_ZOOM_FACTOR = "SET_SHEET_ZOOM_FACTOR"
export type SET_SHEET_ZOOM_FACTOR = "SET_SHEET_ZOOM_FACTOR"
export const SWITCH_ENABLE_ACTIVE_ITEM_HINTS = "SWITCH_ENABLE_ACTIVE_ITEM_HINTS"
export type SWITCH_ENABLE_ACTIVE_ITEM_HINTS = "SWITCH_ENABLE_ACTIVE_ITEM_HINTS"
export const SET_THEME = "SET_THEME"

Some files were not shown because too many files have changed in this diff Show More