Compare commits

..

327 Commits

Author SHA1 Message Date
root 0e0fd22fad auto commit 2025-12-03 20:21:56 +01:00
macniel 80d1b29486 Merge pull request 'feature/zauber-rework' (#67) from feature/zauber-rework into main
Reviewed-on: #67
2025-12-03 20:20:40 +01:00
macniel 24bb15f502 Merge remote-tracking branch 'origin/main' into feature/zauber-rework
Pull Request Check / testing (pull_request) Successful in 21s Details
# Conflicts:
#	src/system.json
2025-12-03 20:20:24 +01:00
macniel 75280e5590 finalises spell system on basic implementation level 2025-12-03 20:07:35 +01:00
macniel 98864464b1 adds value statistics to message 2025-11-30 12:27:00 +01:00
macniel 8be096f464 changes on the form persist now, spell is now correctly queued. 2025-11-30 12:20:53 +01:00
macniel c51e281530 adjust dialog flow to match spell casting in 4.1 2025-11-30 11:21:26 +01:00
macniel 50c28cb380 moves roll mechanic into global file 2025-11-30 11:21:07 +01:00
macniel 2ee6ed775b equalise field probenMod 2025-11-30 11:20:39 +01:00
macniel 235dd0928d adds clausel that Kosten Einsparen reduces the costs by at least 1 AsP. 2025-11-28 15:05:45 +01:00
macniel 07ba1c889b fixes error found with ATTRIBUTO 2025-11-28 14:59:42 +01:00
macniel cc60f9e57f finalises calculation for SpoMods 2025-11-28 14:50:47 +01:00
macniel 94a80eb321 implements spell restrictions 2025-11-27 15:25:40 +01:00
macniel 959f47f348 implements partial (display) support for SpoMods 2025-11-26 20:54:32 +01:00
macniel 5f85631679 displays ZfW based on selected Mods and its initial Spell Value 2025-11-26 19:03:52 +01:00
macniel 957584206d first attempts at normalising dialog flow 2025-11-23 20:51:14 +01:00
macniel 9727d7bc3a src/system.json aktualisiert 2025-11-19 16:14:35 +01:00
macniel 4a9bfe2865 adds english language file 2025-11-19 16:13:53 +01:00
macniel ce6207be95 reworked BRW spells as a PoC 2025-11-17 17:35:39 +01:00
root 468984a83b auto commit 2025-11-16 23:35:11 +01:00
macniel 3f8794e181 the return of the paperdoll 2025-11-16 23:32:49 +01:00
macniel f5b4633f76 README.md aktualisiert 2025-11-16 17:03:41 +01:00
macniel c6829ff697 README.md aktualisiert 2025-11-16 17:03:21 +01:00
macniel 3207020d57 README.md aktualisiert 2025-11-16 17:03:07 +01:00
root df61621565 auto commit 2025-11-16 17:02:10 +01:00
macniel 61e1bd2836 Merge pull request 'feature/after_review' (#65) from feature/after_review into main
Reviewed-on: #65
2025-11-16 16:58:15 +01:00
macniel f7d772b6ca Merge branch 'main' into feature/after_review
Pull Request Check / testing (pull_request) Successful in 19s Details
2025-11-16 16:58:01 +01:00
macniel 02f0ecc9dd implements last standalone tab 2025-11-16 16:56:54 +01:00
macniel 182aeb2dc6 implements optional fatigue system. 2025-11-16 16:07:42 +01:00
macniel c00a6b11b7 fixes NPE as ranged items could be equipped when the actor doesnt even have the skill to do so. 2025-11-16 13:35:39 +01:00
macniel eca965e434 increases discoverability of die interactions 2025-11-16 13:26:02 +01:00
macniel 6f935644c1 spell and liturgy dice are now easier to recognise 2025-11-16 13:19:54 +01:00
macniel 4f4446d327 introduces socketlib as hard requirement enabling players to loot and buy even when they lack the permission to update items they don't own (yet). 2025-11-16 12:36:19 +01:00
macniel e0e70d126f fix faulty tab config on creatureSheet 2025-11-16 11:52:56 +01:00
macniel 692867f2ac finalises missing sidebutton tabs 2025-11-16 11:41:35 +01:00
macniel 46b6ed8f2a implements colorful sidebar buttons 2025-11-16 11:03:50 +01:00
macniel 189db593aa fixes styling in merchant sheet 2025-11-16 10:18:02 +01:00
macniel d355cb2d5c fixes orientiation of sidebuttons 2025-11-14 21:29:00 +01:00
macniel accd2d1f16 continues development on mini character sheet 2025-11-14 15:57:07 +01:00
macniel 0fffebdab9 implements mini character sheet, now it also needs tabs on the side to open dedicated sections from the big boy character sheet as dialogs. 2025-11-14 00:07:31 +01:00
macniel 6d366188ea begins implementing sidebar elements for pinned Items 2025-11-13 22:40:48 +01:00
macniel 47280f7216 beginning operation:health. 2025-11-13 15:04:34 +01:00
macniel bbf181eb8c implements selecting an item and buying that if the coin is sufficent. 2025-11-13 15:04:11 +01:00
macniel 1bc6d9673a inverts cooldown display, removes unintuitive progress/activate button and also fixes a bug in the tooltip 2025-11-12 20:42:29 +01:00
macniel 811806a68b makes talents more subtle also adds tooltips to rollable on the skill sheet. 2025-11-12 20:13:21 +01:00
macniel bdcb09c82e fixes rounding issue 2025-11-12 19:09:44 +01:00
macniel cfc5bc15b1 fixes rounding issue 2025-11-12 19:09:07 +01:00
macniel 29d25f8afe Implements Filtering 2025-11-12 17:05:45 +01:00
macniel c2b8a7d895 implements creating Equipment from scratch and also an Equipment/Item Browser from where to drag and drop (perhaps even buy from) new Equipment onto an Actor. 2025-11-12 00:21:55 +01:00
macniel ed893f6b9d fixes some user experience issues 2025-11-11 22:20:01 +01:00
macniel 316ab90c67 fixes some user experience issues 2025-11-11 22:19:54 +01:00
macniel 7e34251397 fixes some user experience issues 2025-11-09 19:14:35 +01:00
root 28f19772f2 auto commit 2025-11-09 10:54:04 +01:00
macniel d51aa18a19 finalise darkmode 2025-11-09 10:53:11 +01:00
macniel 0f9032c3f5 beginnings of darkmode 2025-11-09 00:41:54 +01:00
root 34d7175c39 auto commit 2025-11-08 20:52:11 +01:00
macniel 97fe0fa9a6 implements deity model and sheet.
the model includes stats important for clerics as it contains miracle Plus and miracle Minus.
2025-11-08 14:21:28 +01:00
root 7b0f407239 auto commit 2025-11-07 22:53:23 +01:00
macniel f402661488 fixes jsons 2025-11-07 22:51:47 +01:00
macniel 03de483e9a fixes paths 2025-11-07 22:49:09 +01:00
root 1adff7568d auto commit 2025-11-04 18:20:18 +01:00
macniel 97466ed45d Merge pull request 'starts cleaning code and also localisation' (#64) from feature/cleanup-and-localisation into main
Reviewed-on: #64
2025-11-04 18:19:30 +01:00
macniel 12c9b0766a starts cleaning code and also localisation 2025-11-04 00:20:41 +01:00
macniel 5104f43e2f inventory is now contained in its own scrollView. 2025-11-03 18:14:53 +01:00
macniel 34c95891e6 cleans up code 2025-11-03 18:14:39 +01:00
macniel 223ea9e26b cleans up init Hook 2025-11-03 16:26:05 +01:00
macniel 4be53924d8 best stock prices guaranteed. 2025-11-02 21:00:50 +01:00
macniel 8258f53a3a enables buying of goods and reducing the wealth of the actor who bought the good and proclaiming it loudly in chat. 2025-11-02 20:53:09 +01:00
root 6d4f8694df auto commit 2025-11-01 12:30:31 +01:00
macniel 72248f2635 fixes styling of merchant items 2025-11-01 12:29:05 +01:00
macniel 1d714a3773 enables selling of goods 2025-11-01 12:26:14 +01:00
root 95712704b5 auto commit 2025-11-01 11:54:43 +01:00
macniel 7788035c8c restores lep calculation 2025-11-01 11:53:13 +01:00
root b66e4e77ac auto commit 2025-11-01 11:45:08 +01:00
macniel e862185803 fixes casing 2025-11-01 11:44:06 +01:00
root dc97fffba2 auto commit 2025-11-01 11:29:28 +01:00
macniel db81e2def1 fixes asynchronous error with gitkeep, but do not process them 2025-11-01 11:28:30 +01:00
macniel 373781b5b0 fixes asynchronous error with gitkeep as the directory was not pushed 2025-11-01 11:26:40 +01:00
macniel 394992d447 fixes asynchronous error with a pinky promise 2025-11-01 11:24:15 +01:00
macniel ec4c9768dd fixes asynchronous error with a pinky promise 2025-11-01 11:21:10 +01:00
macniel df4fd6061d fixes asynchronous error with a pinky promise 2025-11-01 11:16:08 +01:00
macniel bb35d0d6e7 fixes asynchronous error with a pinky promise 2025-11-01 11:08:29 +01:00
macniel 7476c55e63 fixes asynchronous error 2025-11-01 10:58:44 +01:00
macniel 5b46f36c58 fixes asynchronous error 2025-11-01 10:55:13 +01:00
macniel 026f222718 fixes asynchronous error 2025-11-01 10:45:08 +01:00
root b69511f93a auto commit 2025-11-01 10:35:41 +01:00
macniel 9a57bcd77a establishes fixed randomIDs 2025-11-01 10:26:24 +01:00
macniel 62c5702992 removes stray generated abvenenum 2025-11-01 10:25:24 +01:00
macniel 9948521512 liturgies can now be pushed into queue. 2025-10-31 19:15:15 +01:00
macniel a861245d44 adds special ability group support. 2025-10-31 16:12:43 +01:00
root e69374f6f4 auto commit 2025-10-31 16:03:21 +01:00
root 7a89809af4 auto commit 2025-10-31 16:01:04 +01:00
macniel b179545a8e README.md aktualisiert 2025-10-31 15:59:51 +01:00
macniel 7d04520470 src/system.json aktualisiert 2025-10-31 15:58:48 +01:00
macniel f4af6fa56b fix buildscript to not overwrite static manifest path 2025-10-31 15:57:56 +01:00
root 95ce581f52 auto commit 2025-10-31 15:57:02 +01:00
macniel 0e667398ae update raw 2025-10-31 15:55:57 +01:00
root 80aa21ea53 auto commit 2025-10-31 15:54:14 +01:00
macniel 03f20554a3 update buildscript to commit changes to main 2025-10-31 15:53:32 +01:00
macniel 5c6d588b04 update buildscript to commit changes to main 2025-10-31 15:51:46 +01:00
macniel f073b6570c update buildscript to commit changes to main 2025-10-31 15:49:03 +01:00
macniel d5f3a10956 update buildscript to commit changes to main 2025-10-31 15:48:24 +01:00
macniel 1ba4d340f8 update buildscript to commit changes to main 2025-10-31 15:46:22 +01:00
macniel db8ad0a83f update buildscript to commit changes to main 2025-10-31 15:45:13 +01:00
macniel 2b33613801 update buildscript to commit changes to main 2025-10-31 15:44:12 +01:00
macniel 932f935b88 update buildscript to commit changes to main 2025-10-31 15:43:01 +01:00
macniel d5ae25a52c update buildscript to commit changes to main 2025-10-31 15:37:47 +01:00
macniel 83b5b79f61 update buildscript to commit changes to main 2025-10-31 15:33:32 +01:00
macniel 2872aa743e update buildscript to commit changes to main 2025-10-31 15:29:57 +01:00
macniel b4e614ec74 fixes buildscript 2025-10-31 15:16:56 +01:00
macniel 517bd2f50b removes strange loca key 2025-10-31 14:07:04 +01:00
macniel 6dec43c1b2 adds some fluff to attributes. 2025-10-31 13:59:57 +01:00
macniel 453db6f599 implements die roll dialogs for attributes / flaws. 2025-10-31 13:52:54 +01:00
macniel 277318a37b using new potions icon for Ink. 2025-10-31 13:01:31 +01:00
macniel 819ab5c790 removes deprecated commented code 2025-10-31 13:00:29 +01:00
macniel 0fb82d01e7 fixes situational bonuses to not apply constantly on attributes and the like 2025-10-31 11:54:38 +01:00
macniel fcbf6abaf6 implements dialog for rolling skills 2025-10-31 11:46:10 +01:00
macniel d3f5702fd5 fix eigenschaften 2025-10-31 10:18:38 +01:00
macniel f1052d77b9 Merge pull request 'feature/liturgy-dialog' (#63) from feature/liturgy-dialog into main
Reviewed-on: #63
2025-10-30 23:10:43 +01:00
macniel dda93eeacb implements basic liturgy casting dialog 2025-10-30 23:06:51 +01:00
macniel bf78cfde87 Merge remote-tracking branch 'origin/main' into feature/liturgy-dialog 2025-10-30 11:54:39 +01:00
macniel 2362631465 fixes catastrophic failure in xmlImport 2025-10-30 11:08:07 +01:00
macniel eb6f13f78e restores wounds logic 2025-10-30 11:03:58 +01:00
macniel d62bbe9886 frees the dice from the box 2025-10-30 10:40:11 +01:00
macniel 23543efe45 adds recently released SODA icons 2025-10-30 10:21:08 +01:00
macniel 9ce299a202 enables rolling of character flaws 2025-10-30 10:20:35 +01:00
macniel 4395ada6f5 removes alveranian construction site 2025-10-30 10:20:31 +01:00
macniel db4428938b README.md aktualisiert 2025-10-29 15:22:23 +01:00
macniel 1833027cef Merge pull request 'feature/battle-dialog' (#62) from feature/battle-dialog into main
Reviewed-on: #62
2025-10-29 15:16:46 +01:00
macniel 196b99b52e implements roll mechanic for battle dice 2025-10-29 15:14:22 +01:00
macniel b50e4d3090 implements ui for battle dice 2025-10-29 13:21:48 +01:00
macniel b04315946b shelving for now 2025-10-29 10:46:21 +01:00
macniel db708d991c updates kreutzer design 2025-10-29 01:32:19 +01:00
macniel 9e8cadde24 README.md aktualisiert 2025-10-29 01:16:09 +01:00
macniel cabd35be04 README.md aktualisiert 2025-10-29 01:13:12 +01:00
macniel c342d8d366 fixes some glitches in display logic and also enables rolling the regeneration dice, closes the dialog afterwards. 2025-10-29 00:51:28 +01:00
macniel 9e0e85efe6 adds the ability to sumon the rest and relax dialog 2025-10-28 14:11:25 +01:00
macniel f5be5250ab enables application of Advantages and Specialabilities to character values 2025-10-28 14:11:25 +01:00
macniel bc4e1691fb enables application of Advantages and Specialabilities to character values 2025-10-28 14:11:25 +01:00
macniel 9cfa86a815 README.md aktualisiert 2025-10-27 16:56:33 +01:00
macniel 4d3fdd1d74 README.md aktualisiert
ergänzt Features aus Spielersicht
2025-10-27 16:55:02 +01:00
macniel 03650cccd3 Merge pull request 'feature/new_icons' (#61) from feature/new_icons into main
Reviewed-on: #61
2025-10-27 16:33:10 +01:00
macniel eef89c5a10 fixes default behavior for editing an image 2025-10-27 16:15:13 +01:00
macniel fca38ec507 fixes tab alignment 2025-10-27 15:42:43 +01:00
macniel 6b64b0b6db adds reverse inventory mechanic with "zusammenlegen" 2025-10-27 15:42:31 +01:00
macniel 7849ba2a90 adds Feinmechanik, Freizeitbedarf and Ketten 2025-10-27 14:10:55 +01:00
macniel 6fd5dfc4be adds Feinmechanik, Freizeitbedarf and Ketten 2025-10-27 13:57:19 +01:00
macniel 5d75e3b160 adds new icons by kitbashing already existing Icons by SODA. 2025-10-27 10:55:59 +01:00
macniel ff09875ad3 adds with splitStack a new equipment interaction 2025-10-27 10:55:31 +01:00
macniel 92540c58cb adds new equipment 2025-10-27 10:34:56 +01:00
macniel 87a785e65d adds new icons made by SODA 2025-10-27 00:21:56 +01:00
macniel 1e93d552b1 adds currency to compendia.
Also fixes skittish hover-behavior of equipment items.
2025-10-26 22:04:52 +01:00
macniel 8cf8a61730 adds currency to compendia.
Also fixes skittish hover-behavior of equipment items.
2025-10-26 21:11:49 +01:00
macniel e7a1e3d3cf adds forgotten assets 2025-10-26 18:07:44 +01:00
macniel a57cf98aa1 implements lootable creatures 2025-10-26 17:44:08 +01:00
macniel 2da34b6af3 fix broken json 2025-10-26 17:09:25 +01:00
macniel 5f1011b441 upgrades compendium data to final form 2025-10-26 16:45:09 +01:00
macniel 5f802aa275 adds GM Tool "Merchant" 2025-10-26 14:08:55 +01:00
macniel 2e217abe8f increases drop target for equipment and also fixes display of item icons 2025-10-25 10:26:47 +02:00
macniel d0c9fb56fc fixes finally import error of height 2025-10-24 14:20:37 +02:00
macniel dce8df4b50 increases affordance 2025-10-24 14:15:31 +02:00
macniel b42bb8caca fixes import 2025-10-24 13:41:23 +02:00
macniel 957ce31eb1 fixes typo 2025-10-24 13:32:21 +02:00
macniel 408ef3ddc0 adds GRW races to compendia 2025-10-24 13:31:19 +02:00
macniel ae57e2f90e adds Mod Info and the Current choice to SpecialAbility Sheet 2025-10-24 11:05:06 +02:00
macniel 3f6b4a0303 implements defense screen 2025-10-24 09:57:11 +02:00
macniel f67560a2b1 removes unused code 2025-10-23 12:46:49 +02:00
macniel 7d23af8902 implements cooldowntracker for ongoing actions 2025-10-23 12:41:52 +02:00
macniel 3c7426bf56 adds benefit display of mod value 2025-10-22 23:57:40 +02:00
macniel 47a1881442 removes worse options when an SF could be applied 2025-10-22 23:06:45 +02:00
macniel 2b22a8fa6f finalises dialog 2025-10-22 16:42:07 +02:00
macniel 10d05683ad fixes typo 2025-10-22 16:41:51 +02:00
macniel 7f18c62270 implements combat attack dialog 2025-10-22 13:21:24 +02:00
macniel b2d9a82af8 adjusting SFs for better and consistent parsing 2025-10-22 13:21:05 +02:00
macniel dcdcecb39f fixes issue with import xmls of characters that dont have gegenstände 2025-10-21 17:04:47 +02:00
macniel a7164eab53 first fruitful attempts of managing actions based on SF requirements 2025-10-21 17:04:09 +02:00
macniel 9352a418a8 reworks requirements of SF into a workable solution. 2025-10-21 17:03:39 +02:00
macniel 4d7d71f2e5 fixes styling of equipment sheet, atleast the meta page 2025-10-21 13:31:22 +02:00
macniel 81f9357c10 fixes linkage 2025-10-21 13:23:30 +02:00
macniel c4863b4493 adds import of equipment 2025-10-21 12:38:04 +02:00
macniel b49f945a74 fixes general styling 2025-10-21 12:16:08 +02:00
macniel 7fe5ba1595 rigs specialabilities for import. 2025-10-21 12:15:59 +02:00
macniel 9f91606516 restores styling of advantages/disadvantages and specialabilities. 2025-10-21 12:15:31 +02:00
macniel 1993c1696f rigs nachteile for compendium import 2025-10-21 11:29:42 +02:00
macniel 1c9d4a1f1f repackages xml-import into class and adds configuration dialog to it 2025-10-21 11:02:19 +02:00
macniel 53c5c7b53a Merge pull request 'feature/applicationv2' (#57) from feature/applicationv2 into main
Reviewed-on: #57
2025-10-21 01:19:41 +02:00
macniel 5132649a7c Merge branch 'main' into feature/applicationv2
Pull Request Check / testing (pull_request) Successful in 16s Details
2025-10-21 01:18:40 +02:00
macniel 3494573cd0 Merge pull request 'src/packs/_source/zauber/Windstille.json aktualisiert' (#58) from macniel-patch-1 into main
Reviewed-on: #58
2025-10-21 01:18:20 +02:00
macniel 905b0eb405 prepares xml-import to no longer append items, but instead cleans them out before adding. This will be controllable via dialog
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-21 01:17:41 +02:00
macniel 4bc2de6ed5 src/packs/_source/zauber/XenographusSchriftenkunde.json aktualisiert
Pull Request Check / testing (pull_request) Successful in 16s Details
2025-10-20 23:56:26 +02:00
macniel 02c8cf8ac7 src/packs/_source/zauber/Windstille.json aktualisiert 2025-10-20 23:55:17 +02:00
macniel 6d97b4b2f3 src/packs/_source/zauber/MemorabiaFalsafir.json aktualisiert
json korrektur
2025-10-20 23:53:11 +02:00
macniel 2e1d747661 Merge branch 'main' into feature/applicationv2
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-20 21:22:24 +02:00
macniel faa5853aa4 adjusts styling of actions
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-20 20:57:14 +02:00
macniel b3f5e68c23 reestablishes armor values
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-20 20:30:54 +02:00
macniel 89d427b711 fixes kinks in equipping weapons 2025-10-20 19:43:43 +02:00
macniel 321ba7d3d6 restores drag and drop functionality for items onto character sheet
Pull Request Check / testing (pull_request) Successful in 21s Details
2025-10-20 18:11:52 +02:00
macniel ad28cf48f3 fixes Wounds display 2025-10-20 12:47:25 +02:00
macniel c9f9c920a6 fixes Wounds for simplified system 2025-10-20 12:46:05 +02:00
macniel eb88377f14 repairs visuals advantages and special abilities 2025-10-20 12:34:00 +02:00
macniel 523cbb9f62 repairs visuals of combat tab 2025-10-20 12:24:46 +02:00
macniel 49896e0966 repairs visuals of combat tab 2025-10-20 12:24:43 +02:00
macniel e118e8ba92 restores opening of linked documents in their respective sheet 2025-10-20 10:43:49 +02:00
macniel ee578e430e restores equipment drag and drop while sacrificing paperdoll view 2025-10-20 10:31:15 +02:00
yuna 32503a03c1 restores inventory template 2025-10-18 11:55:37 +02:00
yuna b13fc29791 fixes display of liturgies and preliminary styling 2025-10-18 11:47:04 +02:00
macniel 2dd920a094 shortens display of language skills 2025-10-17 23:28:02 +02:00
macniel 2900a45959 restores rollability also for combat skills 2025-10-17 22:55:44 +02:00
macniel e031fe712c restores rollability 2025-10-17 22:16:15 +02:00
macniel aa6a8d1bcc restores visuals of skills 2025-10-17 22:06:10 +02:00
macniel 355f55e2bd finally fixes the stubborn tab error 2025-10-17 21:52:40 +02:00
macniel d0c2d74721 fixes pathing 2025-10-17 18:29:08 +02:00
macniel 69ceb48871 restores hiding of unimportant sheets 2025-10-17 18:24:58 +02:00
macniel 34a5028e30 removes labeling and adds custom fonts 2025-10-17 18:10:22 +02:00
macniel 74e91d206f adds optional styling according to Paramanthus 2025-10-17 00:10:24 +02:00
macniel 96d7b18742 requires retargeting of styling 2025-10-16 21:46:35 +02:00
macniel 561e34d0ff first push of charactersheet 2025-10-16 21:16:57 +02:00
macniel f74bb38f3a fixes groupsheet dragging and dropping 2025-10-16 18:22:09 +02:00
macniel 6f1bad0b67 partial migration of groupsheet 2025-10-16 16:24:36 +02:00
Poppy 84215a6b0a Update-Kampffertigkeiten 2025-10-16 14:33:20 +02:00
Poppy b6aecb586a Update-Kampffertigkeiten 2025-10-16 13:01:25 +02:00
macniel e14e4e7108 WIP group sheet 2025-10-16 00:06:54 +02:00
macniel 5e41285b1c WIP group sheet 2025-10-16 00:06:50 +02:00
macniel 9984db4ca6 migrates CreatureSheet to ActorSheetV2 2025-10-15 22:29:48 +02:00
macniel 6bfd509c2c modifies structuring of stylesheets to reflect the first semblance of a design pattern 2025-10-15 21:07:56 +02:00
macniel 626474178d migrates active effect to DocumentV2 2025-10-15 21:02:56 +02:00
Poppy bcc70f1b52 Update-Kampffertigkeiten 2025-10-15 20:30:28 +02:00
macniel 7ea6b4a2e0 Fixes styling of attack-statistics and visibility of different statistics base on the nature of the given skill 2025-10-15 20:19:59 +02:00
macniel f505a233df Migrates Specialabilities and Liturgies to DocumentV2 2025-10-15 20:10:52 +02:00
macniel 962fc482a8 Removes old spell sheet 2025-10-15 19:55:24 +02:00
macniel 3f5ef8fbd7 migrates spells and equipment to DocumentV2 2025-10-15 19:55:13 +02:00
Poppy 217eb654df Merge remote-tracking branch 'origin/main' 2025-10-15 18:15:20 +02:00
Poppy 94e6088a4d Erste Kampffertigkeiten + Glossarerweiterung 2025-10-15 18:15:09 +02:00
macniel 343d180568 removes old sheet 2025-10-15 16:25:11 +02:00
macniel 3869982927 migrates advantages to DocumentV2 2025-10-15 16:24:51 +02:00
macniel 232347aae5 fixes typos and stuff 2025-10-15 16:24:35 +02:00
macniel 64ae1b44b5 migrates Skill sheet to DocumentV2 2025-10-15 15:50:27 +02:00
macniel 9a61327dec adds disadvantages (as example Curiosity) to character sheet 2025-10-14 14:46:50 +02:00
macniel b681d9e05b fixes rendering issues of advantage badge and sheet 2025-10-14 14:32:03 +02:00
macniel 6d178b8793 repairs skill sheet and buries display of skill requirements, for now. 2025-10-14 14:11:20 +02:00
macniel 09db6091ba repairs skill sheet and buries display of skill requirements, for now. 2025-10-14 14:11:02 +02:00
macniel c311bb36d3 chore: moves sheets into namespace 2025-10-14 13:15:52 +02:00
Poppy dbe1d10f6a Merge branch 'main' of https://git.macniel.online/macniel/foundry-dsa41-game 2025-10-14 12:26:24 +02:00
Poppy 0cd4f2d9a3 T- ENDE 2025-10-14 12:19:03 +02:00
macniel 8b0e11f071 imports combatstatistics 2025-10-13 23:45:01 +02:00
macniel 4388cc8f60 fixes wound names 2025-10-13 23:44:46 +02:00
macniel 8fc2d37942 adds languages and scripts to talent import, also prevents breaks inside a talent group on the character sheet 2025-10-13 23:44:32 +02:00
macniel 416830a56e adds wound threshold and actor based action to takeDamage by a certain amount to a specific zone (or non which is only allowed when play with zones is active) 2025-10-13 23:40:07 +02:00
macniel 719e571b21 fixes dice formula for AT, FKAT and PA rolls. Also adds Damage formula on the equipped items. 2025-10-12 19:09:19 +02:00
Poppy 064379c5ca M-S 2025-10-12 18:54:08 +02:00
macniel 5275a59b70 adds macro support to skills/talents 2025-10-12 17:43:40 +02:00
macniel 39a408fb3d Merge pull request 'feature/group-table' (#56) from feature/group-table into main
Reviewed-on: #56
2025-10-12 14:57:27 +02:00
macniel c5febb346a Merge branch 'refs/heads/main' into feature/group-table
Pull Request Check / testing (pull_request) Successful in 17s Details
# Conflicts:
#	src/module/sheets/groupSheet.mjs
2025-10-12 14:56:18 +02:00
macniel 912a8dde88 removes todo marker 2025-10-12 14:53:17 +02:00
macniel 5db955c250 skills on group sheet can now be rolled on with GM Roll per default 2025-10-12 14:52:53 +02:00
macniel 099d1c5d16 tableized group sheet 2025-10-12 10:49:37 +02:00
macniel cdeeba9445 Merge pull request 'feature/wounds' (#55) from feature/wounds into main
Reviewed-on: #55
2025-10-11 18:27:20 +02:00
macniel 6dbed94850 Merge branch 'main' into feature/wounds
Pull Request Check / testing (pull_request) Successful in 19s Details
2025-10-11 18:27:05 +02:00
macniel c474d63156 Fixes display issue with background column 2025-10-11 16:06:49 +02:00
macniel ca847ac135 Fixes an import from compendium error, as the imported document does not yet have any statistics when it has been dropped
Pull Request Check / testing (pull_request) Successful in 18s Details
2025-10-11 14:05:07 +02:00
macniel b781a1935b implements calculations for wounds without zones 2025-10-11 13:50:11 +02:00
macniel 917eec11f4 implements calculations for zone wounds 2025-10-11 13:44:13 +02:00
macniel b34ca30a33 implements visuals for Trefferzonen and Zonenrüstung, also adds World Settings. 2025-10-11 10:34:00 +02:00
Poppy 7f40619d21 N-O für Magierei 2025-10-10 23:38:45 +02:00
macniel bbe3bc2718 implements visuals for BRW wound system 2025-10-10 14:30:05 +02:00
macniel 169e41d2c8 implements simple filter method for group member' skills and advantages 2025-10-09 23:55:38 +02:00
macniel faa3bc1328 feature/meta (#54)
implements styling of meta and various other segments e.g. sheets
2025-10-09 21:16:51 +02:00
macniel 5b76df3653 feature/spells (#53)
implements spells and liturgies
2025-10-09 21:09:31 +02:00
Poppy 38e3824c6f Merge branch 'main' of https://git.macniel.online/macniel/foundry-dsa41-game
# Conflicts:
#	src/packs/_source/zauber/abvenenum.json
2025-10-06 14:09:51 +02:00
macniel b08884426d fix illegal characters on windows 2025-10-05 19:20:39 +02:00
Poppy 662ee0f20d Fixed Abvenenum maybe? 2025-10-05 16:55:06 +02:00
Poppy 887c8c48ce Buchste M für die Tschauberei 2025-10-05 16:50:03 +02:00
macniel bbfac43c02 adds creature documents and models 2025-10-05 16:00:23 +02:00
macniel 651029f751 chore: emergency fix 2025-10-05 13:53:30 +02:00
macniel 06dedfc6e9 Merge pull request 'feature/basic-combat' (#52) from feature/basic-combat into main
Reviewed-on: #52
2025-10-05 13:48:23 +02:00
macniel 21bef3afb5 Merge branch 'main' into feature/basic-combat
Pull Request Check / testing (pull_request) Successful in 16s Details
2025-10-05 13:48:12 +02:00
macniel 30f8f30c71 Merge pull request 'feature/heldengruppe' (#51) from feature/heldengruppe into main
Reviewed-on: #51
2025-10-05 13:47:46 +02:00
macniel 36fc2e2b22 Merge branch 'main' into feature/heldengruppe
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-05 13:47:24 +02:00
macniel 249c10c197 Merge pull request 'feature/inventory' (#49) from feature/inventory into feature/heldengruppe
Reviewed-on: #49
2025-10-05 13:43:27 +02:00
macniel e4b6458520 Merge pull request 'feature/import-from-compendium' (#47) from feature/import-from-compendium into main
Reviewed-on: #47
2025-10-05 13:43:10 +02:00
macniel fa05bed932 chore: eslinted
Pull Request Check / testing (pull_request) Successful in 17s Details
2025-10-05 13:41:52 +02:00
macniel b3b247d1a7 adds missing combat skills and implements a rudimentary action manager which should accumulate all available actions coming from talents, special abilities and what not.
Pull Request Check / testing (pull_request) Successful in 18s Details
2025-10-05 13:37:57 +02:00
macniel a5c702059c fix id 2025-10-04 22:36:48 +02:00
macniel 9895809ccb adds ini mod to initiative 2025-10-04 22:24:51 +02:00
macniel e80ed623ec adds derived values for hold weapons 2025-10-04 22:15:25 +02:00
macniel 801de801ba initial draft of combat 2025-10-04 16:58:26 +02:00
macniel adff5b951f adds combat initiative
Pull Request Check / testing (pull_request) Successful in 18s Details
2025-10-04 15:18:02 +02:00
macniel cc460eb06c adds todo 2025-10-04 14:54:00 +02:00
macniel 2814fabbbe fixes weird behaviour of adding and removing items to the paperdoll, verbose technique adds technical debt! 2025-10-04 14:53:25 +02:00
macniel 65fcc13822 updates paperdoll and character model to allow multiple sets of equipment 2025-10-04 14:32:41 +02:00
macniel e92de1a9b0 updates paperdoll and character model to allow multiple sets of equipment 2025-10-04 14:32:34 +02:00
macniel f5248c57aa introduces a paperdoll for equipment handling 2025-10-03 23:45:17 +02:00
macniel 2a17fd7ae7 removes duplicate items 2025-10-03 22:25:27 +02:00
macniel 0cd7ff697e move into branch 2025-10-03 22:22:38 +02:00
macniel cb8536918c adds equipments 2025-10-03 22:07:33 +02:00
macniel 6b6388b126 adds equipments to compendium 2025-10-03 21:56:19 +02:00
macniel 2eb2e8f9b5 allows to set and edit equipment icons 2025-10-03 16:08:16 +02:00
macniel 882ebf8392 fixes eventlistener binding 2025-10-03 15:29:51 +02:00
macniel 39917a0f89 Implements rudimentary item management 2025-10-03 15:27:48 +02:00
macniel edf6dcab1a Adds Inventory Management 2025-10-03 14:44:26 +02:00
Poppy dcf81415a8 Kleines Update für Vor- und Nachteile 2025-10-03 14:02:39 +02:00
macniel 691a811275 Adds Group Management 2025-10-03 11:03:34 +02:00
macniel 41045cb482 Repairs XML-Import for Advantages/Vornachteile 2025-10-02 20:43:50 +02:00
macniel b6814c9f74 Repairs XML-Import for SKills/Talents 2025-10-02 20:28:31 +02:00
macniel e47deaf938 Implements simple advantage template that is then placed on the character sheet.
also fixes rollable partial and skills can be rolled on again.
2025-10-02 18:14:35 +02:00
macniel 21479ce082 Updates Rollables (Attributes, Skills) to include a ContextMenu to delete or adjust their values. Also added the capability to open SkillsSheets. 2025-10-02 17:45:52 +02:00
macniel 1afdd483e6 Character Creation with Default Values is no longer possible (got to be but its not scope of MVP anyway).
Skills either from Compendia or Imported Entries can now be uniquely added to a Character.

This approach will help us later with adding other Elements like Advantages (these need a "uniqueness" Attribute), Spells (always unique), Miracles (also always unique), Equipment
2025-10-02 16:52:56 +02:00
macniel 32031eb548 When a character is created, its base-skills are now added from compendium and added to the actor as an embedded document. 2025-10-01 22:27:21 +02:00
macniel 5fb8559fbf chore: update database again 2025-09-29 18:19:20 +02:00
macniel b8e3af8922 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/main.mjs
#	src/templates/actor/actor-character-sheet.hbs
#	transformSources.mjs
2025-09-29 17:56:21 +02:00
macniel 1c811faf08 chore: update database 2025-09-29 17:53:28 +02:00
macniel a36415e62c Merge pull request 'feature/charactersheet-sytling' (#43) from feature/charactersheet-sytling into main
Reviewed-on: #43
2025-09-29 17:49:45 +02:00
macniel 1d56953c6e Merge branch 'main' into feature/charactersheet-sytling
Pull Request Check / testing (pull_request) Successful in 18s Details
2025-09-29 17:49:25 +02:00
macniel b7bcc7de5d Merge remote-tracking branch 'origin/main' 2025-09-29 16:08:02 +02:00
macniel 88179d63bd chore: vcs info for webstorm 2025-09-29 16:07:56 +02:00
macniel 267ada56d7 vcs info for webstorm 2025-09-29 16:07:41 +02:00
macniel 2f45f6d4d6 Repairs sheet to accomodate DataModel changes
Pull Request Check / testing (pull_request) Successful in 18s Details
2025-09-29 14:51:46 +02:00
macniel 403557b0f8 Improves management of json files
Pull Request Check / testing (pull_request) Successful in 20s Details
2025-09-29 14:35:50 +02:00
macniel f3f52e77aa Merge remote-tracking branch 'origin' into feature/charactersheet-sytling
Pull Request Check / testing (pull_request) Successful in 18s Details
# Conflicts:
#	src/main.mjs
#	src/module/sheets/characterSheet.mjs
2025-09-29 14:19:39 +02:00
macniel f8e5b94b77 Adds Sidebar and also adds more styling via scss 2025-09-29 13:42:19 +02:00
macniel 073c25e89a Talents can now be added or replaced via drag and drop 2025-09-29 00:19:41 +02:00
macniel 35271b8c83 Implements the first draft of styling our character sheet. 2025-09-28 19:15:29 +02:00
Poppy b777254af9 Einbau der restlchen Vorteile - erstmal großteilig ohne modifikatoren - das müssen wir noch nachholen 2025-09-28 18:06:29 +02:00
Poppy 630cef5272 Korrekturen der Boni und hinzufuegen von f-i 2025-09-28 17:19:15 +02:00
Poppy dba39e2c54 Merge remote-tracking branch 'origin/main' 2025-09-28 15:57:11 +02:00
Poppy ea5978da97 Vorteile Korrigiert und die Buchstaben b-e hinzugefügt 2025-09-28 15:52:39 +02:00
paranoidSpectre 3ec419ae26 Fertigstellung XML-Import (#13)
Co-authored-by: Jendrik <jendrik.witt@gmail.com>
Reviewed-on: #13
2025-09-28 12:46:24 +02:00
3422 changed files with 190322 additions and 11869 deletions

View File

@ -1,8 +1,8 @@
name: Pull Request Check
run-name: ${{ gitea.actor }} is updating the pull request 🚀
on:
on:
pull_request:
types: [synchronize]
types: [ synchronize ]
jobs:
testing:

View File

@ -1,12 +1,14 @@
name: Release Job
run-name: ${{gitea.actor}} is releasing a package
on:
on:
release:
types: [published]
types: [ published ]
jobs:
build:
runs-on: node-01
permissions:
contents: write
steps:
- name: Print Tag
run: |
@ -38,11 +40,15 @@ jobs:
zip -r release.zip . # Adjust the path to your build output directory
mv release.zip /tmp/release.zip
- name: Auto Commit
run: |
git add .
git commit -m "auto commit"
git push origin HEAD:main
- name: Package Upload
uses: akkuman/gitea-release-action@v1
with:
server_url: https://git.macniel.online
files: |
/tmp/release.zip
./dist/system.json
/tmp/release.zip

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
dist
node_modules
src/packs/__source

14
.idea/DSA41.iml 100644
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
<excludeFolder url="file://$MODULE_DIR$/src/packs/__source" />
<excludeFolder url="file://$MODULE_DIR$/src/packs/__source" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,21 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="HtmlUnknownTag" enabled="true" level="WARNING" enabled_by_default="true">
<option name="myValues">
<value>
<list size="7">
<item index="0" class="java.lang.String" itemvalue="nobr" />
<item index="1" class="java.lang.String" itemvalue="noembed" />
<item index="2" class="java.lang.String" itemvalue="comment" />
<item index="3" class="java.lang.String" itemvalue="noscript" />
<item index="4" class="java.lang.String" itemvalue="embed" />
<item index="5" class="java.lang.String" itemvalue="script" />
<item index="6" class="java.lang.String" itemvalue="prose-mirror" />
</list>
</value>
</option>
<option name="myCustomValuesEnabled" value="true" />
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/DSA41.iml" filepath="$PROJECT_DIR$/.idea/DSA41.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml 100644
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -1,7 +1,10 @@
Modulentwicklung eines Systems was Das Schwarze Auge 4.1 in FoundryVTT abbildet.
----
In diesem Repository findet die Codeentwicklung des Moduls statt.
Manifest des Systems: `https://git.macniel.online/macniel/foundry-dsa41-game/raw/branch/main/src/system.json`
In diesem Repository findet die Codeentwicklung des Moduls statt.
## Weitere Resourcen
@ -17,4 +20,67 @@ API: https://foundryvtt.com/api/classes/foundry.abstract.Document.html
Demo: https://github.com/foundryvtt/dnd5e
Flim Flam
# Features
## Spieler Tools
### Währungsanzeige
Mit dieser handlichen Anzeige kann man auf einem Blick sehen, über wieviele Geldmittel man verfügt. Hierzu werden alle Dukaten, Silbertaler, Kreuzer und Heller im Inventar zusammengezählt und ansprechend präsentiert.
### Teilen und Zusammenlegen von Gegenstands-Stapeln
Es ist möglich via Kontextmenü Gegenstands-Stapel in zwei Stapel aufzuteilen, dies ist vorallem dann hilfreich, wenn man Loot aufteilen möchte. Gleichermaßen ist es möglich gleichartige Gegenstands-Stapel zusammenzuführen, in dem man einen Stapel auf ein anderen fallen lässt.
### Attacke Dialog
Über den Charakterbogen kann eine Attacke gestartet werden. In diesem Dialog kann das Ziel, die Waffe sowie das Manvör und etwaige Erschwernisse und Ansagen eingestellt werden. Je nach Länge des Manövers wird die Attacke direkt ausgeführt oder in die Abklingleiste deponiert.
### Verteidigungs Dialog
Über den Charakterbogen kann eine Verteidigung gestartet werden. In diesem Dialog kann die Waffe oder das Manöver ausgewählt werden womit sich der Charakter verteidigen soll. Der Verteidigungswurf wird automatisch durchgeführt.
### Rasten und Regeneration
Es ist möglich den Rasten und Regenerations Dialog von dem Charakterbogen eines Charakters aufzurufen worin man die Einstellungen vornehmen kann die die Regeneration während einer Rest von Lebensenergie und Astralenergie sowie der Heilung von Wunden beeinflussen.
### Mini Charakterbogen
Wenn der Charakterbogen schmall genug gezogen ist, wird dieser aktiviert und enthält lediglich die Seitenleiste sowie die Attribute auf denen gewürfelt werden können. Daneben allerdings befinden sich die Reiter des großen Charakterbogens welche die jeweiligen Seiten in kleiner Form als separates Fenster öffnen lassen.
### Item Browser
Es ist nun möglich auf dem Charakterbogen unter dem Reiter "Inventar" den Item Browser zu öffnen wo alle Gegenstände der aktuellen Welt enthalten sind und mit rudimentären Filtern durchsucht werden können. Ein Spieler kann hierrüber neue Gegenstände kaufen, der Spielleiter hingegen kann per Drag and Drop die gesuchten Gegenstände auf alle Actor Sheets hinzufügen.
## GM Tools
### Gruppenmanagement
Um die Übersicht zu wahren, gibt es mit Gruppen das Werkzeug in die Hände der Spielleitung um wichtige Infos wie
Eigenschaften, Vor und Nachteile und andere Statistiken eines Charakters innerhalb einer Gruppe zu haben und diese
gleichzeitigt mit denen anderer vergleichen zu können.
### Kreaturen
Da die Erstellung eines Charakters sehr komplex ist, gibt es mit Kreaturen eine stark abgespeckte Variante, die leicht
während der Sitzung oder in Vorbereitung angelegt werden können. Nur die für kämpfischer Begegnungen relevanten
Informationen sind verfügbar.
### Händler
Um die Vorbereitung einer Sitzung so komfortabel wie möglich zu gestalten, gibt es mit Händler die Möglichkeit Gebäude
oder NSCs vorzubereiten welche Waren und oder (ggf. in Anzahl beschränkte) Dienstleistungen bereitstellen, gegen einen
Preis natürlich.
### Battle
Um heimlich vergleichend Talentproben von zwei Charakteren und oder Kreaturen durchzuführen gibt es den Battle Dialog. In diesem können Charaktere/Kreaturen ausgewählt werden, deren Talente ausgewählt oder eingegeben (samt Eigenschaften) werden, Erschwernisse eingetragen werden und dann geht es auch schon los.
---
# Acknowledgments
Icon Theme of Equipment Items (e.g. Weapons, Armory, Adventuring Gear) is made by https://soda-1.itch.io/
Tanja für den UI UX Support.

View File

@ -2,8 +2,41 @@
"maxASP": "Gibt an um wieviel der ASP-Wert verändert wird",
"maxLEP": "Gibt an um wieviel der LEP-Wert verändert wird",
"maxAUP": "Gibt an um wieviel der AUP-Wert verändert wird",
"maxMR": "Gibt den Modifikator für die maximale basis MR an",
"regenerationASP": "Gibt an um wieviel die ASP-Regeneration verändert wird",
"intRollRegeneration": "Gibt an wie hoch der Bonus ist beim Wurf auf die Initiative um in der Nacht mehr ASP zu regeneireren",
"regenerationLEP": "Modifikator der n#chtlichen LEP-Regeneration",
"inRollRegeneration": "Gibt an wie hoch der Bonus ist beim Wurf auf die Intuition um in der Nacht mehr ASP zu regeneireren",
"koRollRegeneration": "Gibt an wie hoch der Bonus ist beim Wurf auf die Konstitution um in der Nacht mehr LEP zu regeneireren",
"modGrosseMeditation": "Gibt die Modifikation an für den Wurf auf die große Meditation zum erhöhren des ASP-Grundwerts",
"erschoepfungBonus": "Gibt den Bonus an ab wann ein Held erschöpft ist (normal ist KO, aber mit dem Bonus eben mehr oder weniger)"
"erschoepfungBonus": "Gibt den Bonus an ab wann ein Held erschöpft ist (normal ist KO, aber mit dem Bonus eben mehr oder weniger)",
"talentBonus": "Der Bonus der für den jeweiligen Wurf auf das Talent gegeben wird",
"talente": "Eine Liste der Talente auf die der talentBonus zieht",
"attributBonus": "Der Bonus der in der jeweiligen Situation auf das Attribut gegeben wird",
"ritualBonus": "Ein Bonus der für ein spezielles Ritual gilt",
"wundschwellenModifikator": "Wert um den die Wundschwelle verändert wird",
"inBonus": "Ein Bonus der situativ für Intuition verwendet werden kann",
"geBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"koBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"kkBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"chBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"ffBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"klBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"muBonus": "Ein Bonus der situativ für Gewandheit verwendet werden kann",
"fkBonus": "Bonus der für Fernkampf-Proben benutzt wird",
"zauberBonus": "Bonus für Zauberproben",
"zauberPatzerMod": "Bei + benötigt man neben den zwei Zwanzigen eine 18,19 oder 20. Bei - benötigt man nicht 20-20-X sondern es reicht 19-20-X für den Patzer",
"gsMod": "Veränderung der Geschwindigkeit um x",
"ausweichMod": "Veränderung des Ausweichen-Wertes",
"beVoraussetzung": "Voraussetzung, dass eine BE kleiner sein muss als der Wert",
"eigenschaft": "Auf welche Eigenschaft bezieht es sich?",
"iniBonus": "Ein Bonus der sich auf den Initiative-Basis-Wert bezieht",
"linkhandMalus": "Ist der Bonus der benutzt wird anstelle von -6/-6 für AT und PA",
"tpKKLinkhand": "Normalerweise wird kein TPKK-Bonus für Linkhand benutzt, mit true schon",
"zusatzAktionMitLinkhand": "Eine Zusätzliche Aktion (AT oder PA) für die 'Falsche' Hand",
"sfPflicht": "Gibt an ob man die Sonderfertigkeit für das Mannöver benötigt (true) oder ob diese Optional ist und man es auch ohne, aber schwerer machen kann (false)",
"kombiSF": "Welche Sonderfertigkeiten lassen sich Kombinieren oder finden gemeinsam Anwendung",
"schadensart": "Wird die Schadensart geändert? Lethal, Ausdauer oder whatever",
"aktionsText": "Text zur nutzbaren Aktion aus WDS",
"mehrereAktionen": "Gibt an ob die Sonderfertigkeit im Kampf mehr als eine Aktion benötigt",
"nichtNutzbareWaffen": "Waffen die nicht verwendet werden dürfen für diese Sonderfertigkeit"
}

View File

@ -1,67 +1,211 @@
import { src, dest, series } from 'gulp';
import {dest, series, src} from 'gulp';
import gulp from 'gulp';
import process from 'node:process';
import replace from 'gulp-replace';
import jsonModify from 'gulp-json-modify';
import {subtle} from 'node:crypto';
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
import {deleteAsync} from 'del';
import {readdirSync, readFileSync, writeFileSync, rmdirSync, existsSync, mkdirSync, statSync} from "fs";
import {join} from 'node:path';
import { deleteAsync } from 'del';
import {compilePack} from '@foundryvtt/foundryvtt-cli';
import { readdirSync } from 'node:fs';
import { join } from 'node:path';
const sass = gulpSass(dartSass)
import { compilePack } from '@foundryvtt/foundryvtt-cli';
function cleanDist() {
return deleteAsync(['dist/**']);
/**
* Generate a random alphanumeric string ID of a given requested length using `crypto.getRandomValues()`.
* @param {string} reference The reference which should be used to generate a semi random ID
* @param {number} length The length of the random string to generate, which must be at most 16384.
* @returns {string} A string containing random letters (A-Z, a-z) and numbers (0-9).
*/
function randomID(reference = "", length = 16) {
const encoder = new TextEncoder()
const data = encoder.encode(reference)
return subtle.digest('SHA-256', data).then(hashBuffer => {
// Step 2: Convert the hash to a Base62 string
const base62Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const hashArray = new Uint8Array(hashBuffer)
let num = BigInt(0)
// Convert hash buffer to a BigInt
for (let byte of hashArray) {
num = (num << BigInt(8)) | BigInt(byte)
}
let base62Id = '';
while (num > 0) {
const remainder = num % BigInt(62)
base62Id = base62Chars[Number(remainder)] + base62Id
num = num / BigInt(62)
}
// Step 3: Return the first 16 characters
return base62Id.slice(-length)
});
}
const convert = function (from, to, ofType, overwrite = true) {
const SOURCE = from;
const DEST = to;
const TYPE = ofType;
if (overwrite) {
try {
rmdirSync(DEST, {force: true, recursive: true})
} catch (e) {
}
mkdirSync(DEST)
}
let promises = []
const filewalker = async (source) => {
console.debug("entering directory", source)
for (let file of readdirSync(source)) {
if (statSync(join(source, file)).isDirectory()) {
await filewalker(join(source, file))
} else {
if (file.endsWith(".json")) {
console.debug("processing file", join(source, file))
let originalSource = JSON.parse(readFileSync(join(source, file), {encoding: "utf8"}))
promises.push(new Promise((resolve2) => {
randomID("DSA_4-1" + TYPE + originalSource.name.trim()).then(id => {
let targetSource = {
_id: id,
_key: "!items!" + id,
type: TYPE,
img: originalSource.image,
name: originalSource.name.trim(),
system: {...originalSource},
}
delete targetSource.system.image;
let target = JSON.stringify(targetSource, null, 2)
let newFileName = "./" + join(DEST, id + ".json")
if (!existsSync(join("./", DEST))) {
mkdirSync(join("./", DEST))
}
writeFileSync(newFileName, target, {encoding: "utf8"})
resolve2()
})
}))
}
}
}
}
filewalker(SOURCE)
return Promise.allSettled(promises)
}
function cleanDist() {
return deleteAsync(['dist/**'])
}
function buildStyles() {
return src('src/style/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(dest('dist/style/'))
};
return src('src/style/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(dest('dist/style/'))
}
function copySource() {
return src(['src/**/*', '!src/style/**/*.scss', '!src/packs/**/*'])
.pipe(dest('dist/'));
return src(['src/**/*', '!src/assets/**/*', '!src/style/**/*.scss', '!src/packs/**/*'])
.pipe(dest('dist/'));
}
function copyAssets() {
return src(['src/assets/**/*'], {encoding: false})
.pipe(dest('dist/assets/'))
}
function updateManifestFile() {
return src('dist/system.json')
.pipe(replace('{{VERSION}}', process.env.VERSION))
.pipe(dest('dist/'))
return src('src/system.json')
.pipe(
jsonModify({
key: "version",
value: process.env.VERSION
})
)
.pipe(
jsonModify({
key: "download",
value: "https://git.macniel.online/macniel/foundry-dsa41-game/releases/download/{{VERSION}}/release.zip".replace("{{VERSION}}", process.env.VERSION)
})
)
.pipe(dest('src/'))
}
function buildDB() {
// Determine which source folders to process
gulp.task('prepareDB', async function (done) {
const PACK_SRC = "src/packs/_source"
const PACK_DEST = "dist/packs/"
return new Promise(async (resolve, reject) => {
const folders = readdirSync(PACK_SRC, { withFileTypes: true }).filter(file =>
file.isDirectory()
);
try {
if (!existsSync("./src/packs/__source")) {
mkdirSync("./src/packs/__source");
}
for (const folder of folders) {
const src = join(PACK_SRC, folder.name);
const dest = join(PACK_DEST, folder.name);
console.info(`Compiling pack ${folder.name}`);
await compilePack(src, dest, { recursive: true, log: true, nedb: false });
}
resolve()
})
}
await convert("./src/packs/_source/talente", "./src/packs/__source/talente", "Skill")
await convert("./src/packs/_source/zauber-brw", "./src/packs/__source/zauber", "Spell")
await convert("./src/packs/_source/vorteile", "./src/packs/__source/vorteile", "Advantage")
await convert("./src/packs/_source/nachteile", "./src/packs/__source/vorteile", "Advantage", false)
await convert("./src/packs/_source/sonderfertigkeiten", "./src/packs/__source/sonderfertigkeiten", "SpecialAbility")
await convert("./src/packs/_source/waehrungen", "./src/packs/__source/waehrungen", "Equipment")
await convert("./src/packs/_source/Gegenstaende/Waffen", "./src/packs/__source/waffen", "Equipment")
await convert("./src/packs/_source/Gegenstaende/Munition", "./src/packs/__source/munition", "Equipment")
await convert("./src/packs/_source/Gegenstaende/Ruestzeug", "./src/packs/__source/ruestzeug", "Equipment")
await convert("./src/packs/_source/Gegenstaende/Behaelter", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Bekleidung", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Beleuchtung", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Buecher", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Essutensilien", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Sonstiges", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Werkzeug", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/Gegenstaende/Seile", "./src/packs/__source/gegenstaende", "Equipment", false)
await convert("./src/packs/_source/liturgien-und-segnungen", "./src/packs/__source/liturgien", "Liturgy")
await convert("./src/packs/_source/wunden", "./src/packs/__source/wunden", "ActiveEffect")
await convert("./src/packs/_source/kulturen", "./src/packs/__source/kulturen", "Culture")
await convert("./src/packs/_source/spezien", "./src/packs/__source/spezien", "Species")
await convert("./src/packs/_source/professionen", "./src/packs/__source/professionen", "Profession")
done()
} catch (err) {
console.error(err)
}
})
gulp.task('buildDB', function (done) {
// Determine which source folders to process
const PACK_SRC = "src/packs/__source"
const PACK_DEST = "dist/packs/"
return new Promise(async (resolve, reject) => {
const folders = readdirSync(PACK_SRC, {withFileTypes: true}).filter(file =>
file.isDirectory()
);
for (const folder of folders) {
const src = join(PACK_SRC, folder.name)
const dest = join(PACK_DEST, folder.name)
console.info(`Compiling pack ${folder.name}`)
await compilePack(src, dest, {recursive: true, nedb: false})
}
resolve()
done()
})
})
export default series(
cleanDist,
copySource,
buildStyles,
buildDB,
updateManifestFile
cleanDist,
updateManifestFile,
copySource,
copyAssets,
buildStyles,
gulp.task('prepareDB'),
gulp.task('buildDB')
)

View File

@ -1,14 +1,14 @@
import { cpSync, existsSync } from 'node:fs';
import { resolve, join } from 'node:path';
import {cpSync, existsSync} from 'node:fs';
import {join, resolve} from 'node:path';
const MODULE_ID = process.cwd();
const SRC = join(MODULE_ID, "/dist")
const DEST = "/home/macniel/.local/share/FoundryVTT/Data/systems/DSA_4-1"
if ( existsSync(SRC)) {
cpSync(SRC, resolve(DEST), { recursive: true })
console.log(`copied ${SRC} to ${DEST}`)
if (existsSync(SRC)) {
cpSync(SRC, resolve(DEST), {recursive: true})
console.debug(`copied ${SRC} to ${DEST}`)
} else {
console.error(`Source ${SRC} does not exists. Forgot to compile?`)
}

16480
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +1,33 @@
{
"name": "DSA41Module",
"version": "0.0.1",
"description": "Another DSA 4.1 System Module for FoundryVTT",
"repository": {
"type": "git",
"url": "git+https://git.macniel.online/macniel/foundry-dsa41-game.git"
},
"type": "module",
"scripts": {
"test": "true",
"build": "gulp",
"installToFoundry": "node installToFoundry.mjs"
},
"devDependencies": {
"@foundryvtt/foundryvtt-cli": "^3.0.0",
"cb": "^0.1.1",
"del": "^8.0.1",
"fvtt-types": "npm:@league-of-foundry-developers/foundry-vtt-types@^13.346.0-beta.20250812191140",
"gulp": "^5.0.1",
"gulp-replace": "^1.1.4",
"gulp-sass": "^6.0.1",
"merge-stream": "^2.0.0",
"nedb": "^1.8.0",
"sass": "^1.93.2",
"sass-build": "^1.1.6"
},
"dependencies": {
"gulp-cli": "^3.1.0"
}
"name": "DSA41Module",
"version": "0.0.1",
"description": "Another DSA 4.1 System Module for FoundryVTT",
"repository": {
"type": "git",
"url": "git+https://git.macniel.online/macniel/foundry-dsa41-game.git"
},
"type": "module",
"scripts": {
"test": "true",
"build": "gulp",
"localBuild": "VERSION=0.0.1 gulp",
"installToFoundry": "node installToFoundry.mjs"
},
"devDependencies": {
"@foundryvtt/foundryvtt-cli": "^3.0.2",
"cb": "^0.1.1",
"del": "^8.0.1",
"fvtt-types": "npm:@league-of-foundry-developers/foundry-vtt-types@^13.346.0-beta.20250812191140",
"gulp": "^5.0.1",
"gulp-replace": "^1.1.4",
"gulp-sass": "^6.0.1",
"merge-stream": "^2.0.0",
"nedb": "^1.8.0",
"sass": "^1.93.2",
"sass-build": "^1.1.6"
},
"dependencies": {
"gulp-cli": "^3.1.0",
"gulp-json-modify": "^1.0.2"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

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