forked from public/foundryvtt-wh4-lang-fr-fr
		
	Add all systems effects scripts + translations
This commit is contained in:
		| @@ -1,4 +1,5 @@ | |||||||
| /************************************************************************************/ | /************************************************************************************/ | ||||||
|  | import loadScripts from "./loadScripts.js"; | ||||||
| import statParserFR from "./modules/import-stat-2.js"; | import statParserFR from "./modules/import-stat-2.js"; | ||||||
|  |  | ||||||
| /************************************************************************************/ | /************************************************************************************/ | ||||||
| @@ -116,6 +117,8 @@ Hooks.once('init', () => { | |||||||
|     console.log("PARSER FR DONE"); |     console.log("PARSER FR DONE"); | ||||||
|     return statParserFR(statString, type); |     return statParserFR(statString, type); | ||||||
|   } |   } | ||||||
|  |    | ||||||
|  |   loadScripts(); | ||||||
|  |  | ||||||
|   /*---------------------------------------------------------------------*/ |   /*---------------------------------------------------------------------*/ | ||||||
|   /* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) { |   /* DEPRECATED : game.wfrp4e.entities.ItemWfrp4e.prototype.computeSpellDamage = function (formula, isMagicMissile) { | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								fr.json
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								fr.json
									
									
									
									
									
								
							| @@ -1684,7 +1684,7 @@ | |||||||
|     "NAME.TraitWeapon": "Arme", |     "NAME.TraitWeapon": "Arme", | ||||||
|     "NAME.TraitRanged": "A Distance", |     "NAME.TraitRanged": "A Distance", | ||||||
|     "NAME.TraitArmour": "Armure", |     "NAME.TraitArmour": "Armure", | ||||||
|     "NAME.MeleeBrawling": "Corps à coprs (Bagarre)", |     "NAME.MeleeBrawling": "Corps à corps (Bagarre)", | ||||||
|     "NAME.AcuteSense":"Sens aiguisé", |     "NAME.AcuteSense":"Sens aiguisé", | ||||||
|     "NAME.AnimalCare":"Soins des animaux", |     "NAME.AnimalCare":"Soins des animaux", | ||||||
|     "NAME.AnimalTraining":"Dressage", |     "NAME.AnimalTraining":"Dressage", | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								loadScripts.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								loadScripts.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -12,7 +12,8 @@ | |||||||
|   "esmodules": [ |   "esmodules": [ | ||||||
|     "babele-register.js", |     "babele-register.js", | ||||||
|     "addon-register.js", |     "addon-register.js", | ||||||
|     "modules/import-stat-2.js" |     "modules/import-stat-2.js", | ||||||
|  |     "./loadScripts.js" | ||||||
|   ], |   ], | ||||||
|   "styles": [ |   "styles": [ | ||||||
|     "patch-styles.css" |     "patch-styles.css" | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | { | ||||||
|  |   "name": "foundryvtt-wh4-lang-fr-fr", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "description": "WH4 Translation", | ||||||
|  |   "main": "babele-register.js", | ||||||
|  |   "type": "module", | ||||||
|  |   "scripts": { | ||||||
|  |     "build": "node scriptPacker.js",   | ||||||
|  |     "test": "echo \"Error: no test specified\" && exit 1" | ||||||
|  |   }, | ||||||
|  |   "repository": { | ||||||
|  |     "type": "git", | ||||||
|  |     "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr.git" | ||||||
|  |   }, | ||||||
|  |   "author": "LeRatierBretonnien", | ||||||
|  |   "license": "ISC" | ||||||
|  | } | ||||||
| @@ -1 +1 @@ | |||||||
| MANIFEST-000673 | MANIFEST-000689 | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.544546 7f505e0006c0 Recovering log #671 | 2024/05/17-00:32:51.990246 7fe5356006c0 Recovering log #687 | ||||||
| 2024/05/14-23:48:30.556244 7f505e0006c0 Delete type=3 #669 | 2024/05/17-00:32:52.000905 7fe5356006c0 Delete type=3 #685 | ||||||
| 2024/05/14-23:48:30.556333 7f505e0006c0 Delete type=0 #671 | 2024/05/17-00:32:52.001011 7fe5356006c0 Delete type=0 #687 | ||||||
| 2024/05/14-23:52:38.338843 7f50574006c0 Level-0 table #676: started |  | ||||||
| 2024/05/14-23:52:38.338863 7f50574006c0 Level-0 table #676: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.344995 7f50574006c0 Delete type=0 #674 |  | ||||||
| 2024/05/14-23:52:38.345156 7f50574006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/12-19:57:00.248099 7f003e0006c0 Recovering log #667 | 2024/05/16-23:31:09.265904 7fe5356006c0 Recovering log #683 | ||||||
| 2024/05/12-19:57:00.258537 7f003e0006c0 Delete type=3 #665 | 2024/05/16-23:31:09.275748 7fe5356006c0 Delete type=3 #681 | ||||||
| 2024/05/12-19:57:00.258601 7f003e0006c0 Delete type=0 #667 | 2024/05/16-23:31:09.275914 7fe5356006c0 Delete type=0 #683 | ||||||
| 2024/05/12-20:49:52.183624 7f00374006c0 Level-0 table #672: started | 2024/05/16-23:31:47.713351 7fe52e2006c0 Level-0 table #688: started | ||||||
| 2024/05/12-20:49:52.183681 7f00374006c0 Level-0 table #672: 0 bytes OK | 2024/05/16-23:31:47.713384 7fe52e2006c0 Level-0 table #688: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.190384 7f00374006c0 Delete type=0 #670 | 2024/05/16-23:31:47.720374 7fe52e2006c0 Delete type=0 #686 | ||||||
| 2024/05/12-20:49:52.197399 7f00374006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.740138 7fe52e2006c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal!suuYN87Al1ZZWtQQ' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000675 | MANIFEST-000691 | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.559289 7f505fe006c0 Recovering log #673 | 2024/05/17-00:32:52.003117 7fe536a006c0 Recovering log #689 | ||||||
| 2024/05/14-23:48:30.569004 7f505fe006c0 Delete type=3 #671 | 2024/05/17-00:32:52.013524 7fe536a006c0 Delete type=3 #687 | ||||||
| 2024/05/14-23:48:30.569056 7f505fe006c0 Delete type=0 #673 | 2024/05/17-00:32:52.013746 7fe536a006c0 Delete type=0 #689 | ||||||
| 2024/05/14-23:52:38.318581 7f50574006c0 Level-0 table #678: started |  | ||||||
| 2024/05/14-23:52:38.318638 7f50574006c0 Level-0 table #678: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.325513 7f50574006c0 Delete type=0 #676 |  | ||||||
| 2024/05/14-23:52:38.325810 7f50574006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/12-19:57:00.261517 7f003f4006c0 Recovering log #669 | 2024/05/16-23:31:09.278348 7fe536a006c0 Recovering log #685 | ||||||
| 2024/05/12-19:57:00.271873 7f003f4006c0 Delete type=3 #667 | 2024/05/16-23:31:09.288721 7fe536a006c0 Delete type=3 #683 | ||||||
| 2024/05/12-19:57:00.271979 7f003f4006c0 Delete type=0 #669 | 2024/05/16-23:31:09.288781 7fe536a006c0 Delete type=0 #685 | ||||||
| 2024/05/12-20:49:52.155346 7f00374006c0 Level-0 table #674: started | 2024/05/16-23:31:47.726632 7fe52e2006c0 Level-0 table #690: started | ||||||
| 2024/05/12-20:49:52.155386 7f00374006c0 Level-0 table #674: 0 bytes OK | 2024/05/16-23:31:47.726653 7fe52e2006c0 Level-0 table #690: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.162269 7f00374006c0 Delete type=0 #672 | 2024/05/16-23:31:47.733317 7fe52e2006c0 Delete type=0 #688 | ||||||
| 2024/05/12-20:49:52.176604 7f00374006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.740158 7fe52e2006c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000673 | MANIFEST-000689 | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.588953 7f505fe006c0 Recovering log #671 | 2024/05/17-00:32:52.030367 7fe536a006c0 Recovering log #687 | ||||||
| 2024/05/14-23:48:30.598904 7f505fe006c0 Delete type=3 #669 | 2024/05/17-00:32:52.040956 7fe536a006c0 Delete type=3 #685 | ||||||
| 2024/05/14-23:48:30.598970 7f505fe006c0 Delete type=0 #671 | 2024/05/17-00:32:52.041025 7fe536a006c0 Delete type=0 #687 | ||||||
| 2024/05/14-23:52:38.332297 7f50574006c0 Level-0 table #676: started |  | ||||||
| 2024/05/14-23:52:38.332334 7f50574006c0 Level-0 table #676: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.338769 7f50574006c0 Delete type=0 #674 |  | ||||||
| 2024/05/14-23:52:38.345148 7f50574006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/12-19:57:00.287738 7f003f4006c0 Recovering log #667 | 2024/05/16-23:31:09.306312 7fe536a006c0 Recovering log #683 | ||||||
| 2024/05/12-19:57:00.298489 7f003f4006c0 Delete type=3 #665 | 2024/05/16-23:31:09.315802 7fe536a006c0 Delete type=3 #681 | ||||||
| 2024/05/12-19:57:00.298560 7f003f4006c0 Delete type=0 #667 | 2024/05/16-23:31:09.315852 7fe536a006c0 Delete type=0 #683 | ||||||
| 2024/05/12-20:49:52.177056 7f00374006c0 Level-0 table #672: started | 2024/05/16-23:31:47.740329 7fe52e2006c0 Level-0 table #688: started | ||||||
| 2024/05/12-20:49:52.177114 7f00374006c0 Level-0 table #672: 0 bytes OK | 2024/05/16-23:31:47.740348 7fe52e2006c0 Level-0 table #688: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.183382 7f00374006c0 Delete type=0 #670 | 2024/05/16-23:31:47.746309 7fe52e2006c0 Delete type=0 #686 | ||||||
| 2024/05/12-20:49:52.197375 7f00374006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.746432 7fe52e2006c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal!cZtNgayIw2QFhC9u' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000673 | MANIFEST-000689 | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.530779 7f505fe006c0 Recovering log #671 | 2024/05/17-00:32:51.977571 7fe536a006c0 Recovering log #687 | ||||||
| 2024/05/14-23:48:30.541409 7f505fe006c0 Delete type=3 #669 | 2024/05/17-00:32:51.987927 7fe536a006c0 Delete type=3 #685 | ||||||
| 2024/05/14-23:48:30.541472 7f505fe006c0 Delete type=0 #671 | 2024/05/17-00:32:51.987985 7fe536a006c0 Delete type=0 #687 | ||||||
| 2024/05/14-23:52:38.311751 7f50574006c0 Level-0 table #676: started |  | ||||||
| 2024/05/14-23:52:38.311798 7f50574006c0 Level-0 table #676: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.318370 7f50574006c0 Delete type=0 #674 |  | ||||||
| 2024/05/14-23:52:38.325791 7f50574006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/12-19:57:00.235722 7f003f4006c0 Recovering log #667 | 2024/05/16-23:31:09.251603 7fe536a006c0 Recovering log #683 | ||||||
| 2024/05/12-19:57:00.245590 7f003f4006c0 Delete type=3 #665 | 2024/05/16-23:31:09.263101 7fe536a006c0 Delete type=3 #681 | ||||||
| 2024/05/12-19:57:00.245724 7f003f4006c0 Delete type=0 #667 | 2024/05/16-23:31:09.263306 7fe536a006c0 Delete type=0 #683 | ||||||
| 2024/05/12-20:49:52.132991 7f00374006c0 Level-0 table #672: started | 2024/05/16-23:31:47.720499 7fe52e2006c0 Level-0 table #688: started | ||||||
| 2024/05/12-20:49:52.133062 7f00374006c0 Level-0 table #672: 0 bytes OK | 2024/05/16-23:31:47.720525 7fe52e2006c0 Level-0 table #688: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.140350 7f00374006c0 Delete type=0 #670 | 2024/05/16-23:31:47.726531 7fe52e2006c0 Delete type=0 #686 | ||||||
| 2024/05/12-20:49:52.148293 7f00374006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.740148 7fe52e2006c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal!yzw9I0r3hCK7PJnz' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000673 | MANIFEST-000689 | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.517212 7f505e0006c0 Recovering log #671 | 2024/05/17-00:32:51.964446 7fe5356006c0 Recovering log #687 | ||||||
| 2024/05/14-23:48:30.526840 7f505e0006c0 Delete type=3 #669 | 2024/05/17-00:32:51.974644 7fe5356006c0 Delete type=3 #685 | ||||||
| 2024/05/14-23:48:30.526888 7f505e0006c0 Delete type=0 #671 | 2024/05/17-00:32:51.974702 7fe5356006c0 Delete type=0 #687 | ||||||
| 2024/05/14-23:52:38.305306 7f50574006c0 Level-0 table #676: started |  | ||||||
| 2024/05/14-23:52:38.305336 7f50574006c0 Level-0 table #676: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.311573 7f50574006c0 Delete type=0 #674 |  | ||||||
| 2024/05/14-23:52:38.325771 7f50574006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 2024/05/12-19:57:00.221253 7f003e0006c0 Recovering log #667 | 2024/05/16-23:31:09.239221 7fe5356006c0 Recovering log #683 | ||||||
| 2024/05/12-19:57:00.232421 7f003e0006c0 Delete type=3 #665 | 2024/05/16-23:31:09.249489 7fe5356006c0 Delete type=3 #681 | ||||||
| 2024/05/12-19:57:00.232556 7f003e0006c0 Delete type=0 #667 | 2024/05/16-23:31:09.249541 7fe5356006c0 Delete type=0 #683 | ||||||
| 2024/05/12-20:49:52.140566 7f00374006c0 Level-0 table #672: started | 2024/05/16-23:31:47.706801 7fe52e2006c0 Level-0 table #688: started | ||||||
| 2024/05/12-20:49:52.140628 7f00374006c0 Level-0 table #672: 0 bytes OK | 2024/05/16-23:31:47.706831 7fe52e2006c0 Level-0 table #688: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.147897 7f00374006c0 Delete type=0 #670 | 2024/05/16-23:31:47.713069 7fe52e2006c0 Delete type=0 #686 | ||||||
| 2024/05/12-20:49:52.148331 7f00374006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.713228 7fe52e2006c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000316 | MANIFEST-000332 | ||||||
|   | |||||||
| @@ -1,8 +1,3 @@ | |||||||
| 2024/05/14-23:48:30.572338 7f505e0006c0 Recovering log #314 | 2024/05/17-00:32:52.016354 7fe5356006c0 Recovering log #330 | ||||||
| 2024/05/14-23:48:30.582605 7f505e0006c0 Delete type=3 #312 | 2024/05/17-00:32:52.027826 7fe5356006c0 Delete type=3 #328 | ||||||
| 2024/05/14-23:48:30.582656 7f505e0006c0 Delete type=0 #314 | 2024/05/17-00:32:52.027974 7fe5356006c0 Delete type=0 #330 | ||||||
| 2024/05/14-23:52:38.325971 7f50574006c0 Level-0 table #319: started |  | ||||||
| 2024/05/14-23:52:38.326024 7f50574006c0 Level-0 table #319: 0 bytes OK |  | ||||||
| 2024/05/14-23:52:38.332122 7f50574006c0 Delete type=0 #317 |  | ||||||
| 2024/05/14-23:52:38.345133 7f50574006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) |  | ||||||
| 2024/05/14-23:52:38.345174 7f50574006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| 2024/05/12-19:57:00.275118 7f003e0006c0 Recovering log #310 | 2024/05/16-23:31:09.291953 7fe5356006c0 Recovering log #326 | ||||||
| 2024/05/12-19:57:00.285010 7f003e0006c0 Delete type=3 #308 | 2024/05/16-23:31:09.303368 7fe5356006c0 Delete type=3 #324 | ||||||
| 2024/05/12-19:57:00.285145 7f003e0006c0 Delete type=0 #310 | 2024/05/16-23:31:09.303512 7fe5356006c0 Delete type=0 #326 | ||||||
| 2024/05/12-20:49:52.162355 7f00374006c0 Level-0 table #315: started | 2024/05/16-23:31:47.733464 7fe52e2006c0 Level-0 table #331: started | ||||||
| 2024/05/12-20:49:52.162382 7f00374006c0 Level-0 table #315: 0 bytes OK | 2024/05/16-23:31:47.733512 7fe52e2006c0 Level-0 table #331: 0 bytes OK | ||||||
| 2024/05/12-20:49:52.168680 7f00374006c0 Delete type=0 #313 | 2024/05/16-23:31:47.740033 7fe52e2006c0 Delete type=0 #329 | ||||||
| 2024/05/12-20:49:52.176626 7f00374006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.740167 7fe52e2006c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) | ||||||
| 2024/05/12-20:49:52.176865 7f00374006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) | 2024/05/16-23:31:47.740190 7fe52e2006c0 Manual compaction at level-1 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal!yfZxl4I7XAuUF6r3' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/tables-des-traductions/MANIFEST-000332
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/tables-des-traductions/MANIFEST-000332
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -13,10 +13,7 @@ for(let file of scripts) | |||||||
|  |  | ||||||
| let scriptLoader = `export default function()  | let scriptLoader = `export default function()  | ||||||
| { | { | ||||||
|     Hooks.on("init", () =>  |   mergeObject(game.wfrp4e.config.effectScripts, ${JSON.stringify(scriptObj)}); | ||||||
|     { |  | ||||||
|         mergeObject(game.wfrp4e.config.effectScripts, ${JSON.stringify(scriptObj)}); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
| }` | }` | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ await this.actor.addCondition("poisoned", 3) | |||||||
| await this.actor.modifyWounds(this.actor.system.characteristics.t.bonus) | await this.actor.modifyWounds(this.actor.system.characteristics.t.bonus) | ||||||
|  |  | ||||||
| // and acquires the Regenerate Creature Trait. | // and acquires the Regenerate Creature Trait. | ||||||
| const hasRegenerate = this.actor.has("Regenerate") | const hasRegenerate = this.actor.has("Régénération") | ||||||
| if (hasRegenerate === undefined) { | if (hasRegenerate === undefined) { | ||||||
|   fromUuid("Compendium.wfrp4e-core.items.SfUUdOGjdYpr3KSR").then(trait => { |   fromUuid("Compendium.wfrp4e-core.items.SfUUdOGjdYpr3KSR").then(trait => { | ||||||
|     let traitItem = trait.toObject() |     let traitItem = trait.toObject() | ||||||
| @@ -14,12 +14,12 @@ if (hasRegenerate === undefined) { | |||||||
|   }) |   }) | ||||||
| } | } | ||||||
|  |  | ||||||
| this.script.scriptMessage(`<p><strong>${this.actor.prototypeToken.name}</strong> has  | this.script.scriptMessage(`<p><strong>${this.actor.prototypeToken.name}</strong> : | ||||||
|     <ul> |     <ul> | ||||||
|       <li>gained 3 Poisoned Conditions that cannot be resisted at first</li> |       <li>Reçoit 3 états Empoisonnés, sans Test de Résistance possible</li> | ||||||
|       <li>recovered ${this.actor.system.characteristics.t.bonus} Wounds</li> |       <li>Récupère ${this.actor.system.characteristics.t.bonus} Blessures</li> | ||||||
|       <li>acquired the Regenerate Creature Trait.</li> |       <li>Acuiert le Trait de Creature Régénération.</li> | ||||||
|     </ul> |     </ul> | ||||||
|     It’s up to Ranald if their regenerating can outpace their poisoning.</p> |     C'est à Ranaldde choisir si la régénératin peut guérir de l'empoisonnement.</p> | ||||||
|     <p>When all Poisoned Conditions are lost, so too is Regenerate.</p>`,  |     <p>Lorsque tout les états Empoisonnés sont terminés, le Trait Régénération est perdu également.</p>`,  | ||||||
|     { whisper: ChatMessage.getWhisperRecipients("GM"), blind: true })    |     { whisper: ChatMessage.getWhisperRecipients("GM"), blind: true })    | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| if (args.applyAP && args.modifiers.ap.metal)  | if (args.applyAP && args.modifiers.ap.metal)  | ||||||
| { | { | ||||||
|     args.modifiers.ap.ignored += args.modifiers.ap.metal |     args.modifiers.ap.ignored += args.modifiers.ap.metal | ||||||
|     args.modifiers.ap.details.push("<strong>" + this.effect.name + "</strong>: Ignore le Métal (" + args.modifiers.ap.metal + ")"); |     args.modifiers.ap.details.push("<strong>" + this.effect.name + "</strong>: Ignore le m<EFBFBD>tal (" + args.modifiers.ap.metal + ")"); | ||||||
|     args.modifiers.ap.metal = 0 |     args.modifiers.ap.metal = 0 | ||||||
| } | } | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| let type = this.item.getFlag("wfrp4e", "breath"); | let type = this.item.getFlag("wfrp4e", "breath"); | ||||||
|  |  | ||||||
| if (["fire", "electricity", "poison"].includes(type)) | if (["feu", "electricité", "poison"].includes(type)) | ||||||
| { | { | ||||||
|     args.applyAP = false; |     args.applyAP = false; | ||||||
| } | } | ||||||
| @@ -7,22 +7,22 @@ if (!this.item.name.includes("(") || this.item.system.tests.value.includes("Terr | |||||||
|     if (name.includes("(")) |     if (name.includes("(")) | ||||||
|     { |     { | ||||||
|         let terrain = name.split("(")[1].split(")")[0] |         let terrain = name.split("(")[1].split(")")[0] | ||||||
|         tests = tests.replace("the Terrain", terrain) |         tests = tests.replace("Terrain", terrain) | ||||||
|     } |     } | ||||||
|     else // If no sense specified, provide dialog choice |     else // If no sense specified, provide dialog choice | ||||||
|     { |     { | ||||||
|         let choice = await ItemDialog.create(ItemDialog.objectToArray({ |         let choice = await ItemDialog.create(ItemDialog.objectToArray({ | ||||||
|             coastal : "Coastal", |             coastal : "Côtes", | ||||||
|             deserts : "Deserts", |             deserts : "Déserts", | ||||||
|             marshes : "Marshes", |             marshes : "Marches", | ||||||
|             rocky : "Rocky", |             rocky : "Rocailles", | ||||||
|             tundra : "Tundra", |             tundra : "Tundra", | ||||||
|             woodlands : "Woodlands" |             woodlands : "Forêts" | ||||||
|         }, this.item.img), 1, "Choose Terrain"); |         }, this.item.img), 1, "Choisir le Terrain"); | ||||||
|         if (choice[0]) |         if (choice[0]) | ||||||
|         { |         { | ||||||
|             name = `${name.split("(")[0].trim()} (${choice[0].name})` |             name = `${name.split("(")[0].trim()} (${choice[0].name})` | ||||||
|             tests = tests.replace("the Terrain", choice[0].name + " Terrain") |             tests = tests.replace("Terrain", "Terrain " + choice[0].name ) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| let item = await fromUuid("Compendium.wfrp4e-core.items.eWPN3CV2Eddwz8aM") | let item = await fromUuid("Compendium.wfrp4e-core.items.eWPN3CV2Eddwz8aM") | ||||||
| let data = item.toObject(); | let data = item.toObject(); | ||||||
| data.system.location.value = "Back" | data.system.location.value = "Dos" | ||||||
| this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| let skill = `Trade (${this.item.parenthesesText})` | let skill = `Métier (${this.item.parenthesesText})` | ||||||
| let currentCareer = this.actor.system.currentCareer; | let currentCareer = this.actor.system.currentCareer; | ||||||
| let existingSkill = this.actor.itemTypes.skill.find(i => i.name == skill); | let existingSkill = this.actor.itemTypes.skill.find(i => i.name == skill); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| let item = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS") | let item = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS") | ||||||
| let data = item.toObject(); | let data = item.toObject(); | ||||||
| data.name = data.name += " (Hearing)" | data.name = data.name += " (Ouïe)" | ||||||
| this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | ||||||
| @@ -4,15 +4,15 @@ if (!currentCareer) | |||||||
|     return; |     return; | ||||||
| } | } | ||||||
|  |  | ||||||
| let talents = ["Aethyric Attunement", | let talents = ["Harmonisation Aethyrique", | ||||||
| "Arcane Magic (Any)", | "Magie des Arcanes (Domaine)", | ||||||
| "Chaos Magic (Tzeentch)", | "Magie du Chaos (Tzeentch)", | ||||||
| "Fast Hands", | "Mains agiles", | ||||||
| "Instinctive Diction", | "Diction Instinctive", | ||||||
| "Magical Sense", | "Sens de la Magie", | ||||||
| "Petty Magic", | "Magie Mineure", | ||||||
| "Second Sight", | "Seconde Vue", | ||||||
| "War Wizard", | "Mage de guerre", | ||||||
| "Witch!"].filter(t => !currentCareer.system.talents.includes(t)) | "Sorcier!"].filter(t => !currentCareer.system.talents.includes(t)) | ||||||
|  |  | ||||||
| currentCareer.system.talents = currentCareer.system.talents.concat(talents) | currentCareer.system.talents = currentCareer.system.talents.concat(talents) | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| let wounds = this.actor.system.status.wounds | let wounds = this.actor.system.status.wounds | ||||||
| if (wounds.value == 0) | if (wounds.value == 0) | ||||||
|   return this.script.scriptNotification("No effect at 0 Wounds", "error") |   return this.script.scriptNotification("Aucun effet à 0 Blessures", "error") | ||||||
|  |  | ||||||
| this.script.scriptNotification(`Healed ${this.actor.characteristics.t.bonus} Wounds`) | this.script.scriptNotification(`Soin de ${this.actor.characteristics.t.bonus} Blessures`) | ||||||
| await this.actor.modifyWounds(this.actor.characteristics.t.bonus) | await this.actor.modifyWounds(this.actor.characteristics.t.bonus) | ||||||
| @@ -5,5 +5,5 @@ let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll / | |||||||
| let ones = Number(args.test.result.roll.toString().split("").pop()) | let ones = Number(args.test.result.roll.toString().split("").pop()) | ||||||
|  |  | ||||||
| if (ones > SL) | if (ones > SL) | ||||||
|    args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} SL</span>`) |    args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`) | ||||||
| } | } | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| let fatigue = this.actor.hasCondition("fatigued") | let fatigue = this.actor.hasCondition("fatigued") | ||||||
| if (fatigue) | if (fatigue) | ||||||
| { | { | ||||||
|    this.script.scriptNotification("Removing Fatigued Condition, disabled effect") |    this.script.scriptNotification("Suppression de l'état Fatigué, effet désactivé.") | ||||||
|     this.effect.update({disabled : true}) |     this.effect.update({disabled : true}) | ||||||
|    await this.actor.removeCondition("fatigued") |    await this.actor.removeCondition("fatigued") | ||||||
| } | } | ||||||
| @@ -13,7 +13,7 @@ if (["lArm", "rArm"].includes(location)) | |||||||
|  |  | ||||||
|     if (dropped.length) |     if (dropped.length) | ||||||
|     { |     { | ||||||
|         this.script.scriptNotification(`Dropped ${dropped.map(i => i.name).join(", ")}!`) |         this.script.scriptNotification(`Lache ${dropped.map(i => i.name).join(", ")}!`) | ||||||
|         for(let weapon of dropped) |         for(let weapon of dropped) | ||||||
|         { |         { | ||||||
|             await weapon.system.toggleEquip(); |             await weapon.system.toggleEquip(); | ||||||
|   | |||||||
| @@ -10,10 +10,13 @@ let characteristics = { | |||||||
|     "wp" : 25, |     "wp" : 25, | ||||||
|     "fel" : 10 |     "fel" : 10 | ||||||
| } | } | ||||||
| let skills = ["Cool", "Dodge", "Intimidate", "Intuition", "Leadership", "Lore (Warfare)", "Perception"] | //let skills = ["Cool", "Dodge", "Intimidate", "Intuition", "Leadership", "Lore (Warfare)", "Perception"] | ||||||
|  | let skills = ["Calme", "Equive", "Intimidation", "Intuition", "Commandement", "Savoir (Guerre)", "Perception"] | ||||||
|  |  | ||||||
| let skillAdvancements = [15, 15, 15, 15, 15, 10, 10] | let skillAdvancements = [15, 15, 15, 15, 15, 10, 10] | ||||||
| let talents = ["Combat Aware", "Combat Reflexes", "Feint", "Inspiring", "Resolute", "War Leader"] | let talents = ["Vigilance", "Combat Instinctif", "Feinte", "Exaltant", "Déterminé", "Seigneur de guerre"] | ||||||
| let trappings = ["Hand Weapon", "Shield"] | // TODO | ||||||
|  | let trappings = ["Arme simple", "Bouclier"] | ||||||
| let items = []; | let items = []; | ||||||
|  |  | ||||||
| let updateObj = this.actor.toObject(); | let updateObj = this.actor.toObject(); | ||||||
| @@ -48,7 +51,7 @@ for (let talent of talents) | |||||||
|     } |     } | ||||||
|     else  |     else  | ||||||
|     { |     { | ||||||
|         ui.notifications.warn(`Could not find ${talent}`, {permanent : true}) |         ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true}) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -65,7 +68,7 @@ for (let trapping of trappings) | |||||||
|     } |     } | ||||||
|     else  |     else  | ||||||
|     { |     { | ||||||
|         ui.notifications.warn(`Could not find ${trapping}`, {permanent : true}) |         ui.notifications.warn(`Impossible de trouver ${trapping}`, {permanent : true}) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {skipTargets: true, | |||||||
|      if (test.failed) |      if (test.failed) | ||||||
|      { |      { | ||||||
|          let char = Math.ceil(CONFIG.Dice.randomUniform() * 2) == 2 ? "s" : "t"; |          let char = Math.ceil(CONFIG.Dice.randomUniform() * 2) == 2 ? "s" : "t"; | ||||||
|          this.script.scriptMessage(`<strong>${this.actor.name}</strong> lost 1 point of ${game.wfrp4e.config.characteristics[char]}`) |          this.script.scriptMessage(`<strong>${this.actor.name}</strong> perd 1 point de ${game.wfrp4e.config.characteristics[char]}`) | ||||||
|          this.actor.update({[`system.characteristics.${char}.initial`] : this.actor.system.characteristics[char].initial - 1}) |          this.actor.update({[`system.characteristics.${char}.initial`] : this.actor.system.characteristics[char].initial - 1}) | ||||||
|      } |      } | ||||||
| }) | }) | ||||||
| @@ -3,5 +3,5 @@ await test.roll(); | |||||||
| if (test.failed && this.actor.type == "character") | if (test.failed && this.actor.type == "character") | ||||||
| { | { | ||||||
|     this.actor.update({"system.status.corruption.value" : parseInt(this.actor.status.corruption.value) + 1}) |     this.actor.update({"system.status.corruption.value" : parseInt(this.actor.status.corruption.value) + 1}) | ||||||
|     this.script.scriptMessage("Gained a Corruption point", {whisper : ChatMessage.getWhisperRecipients("GM")}) |     this.script.scriptMessage("Gain d'un Point de Corruption", {whisper : ChatMessage.getWhisperRecipients("GM")}) | ||||||
| } | } | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| let sourceActor = this.effect.sourceActor; | let sourceActor = this.effect.sourceActor; | ||||||
| let damage = args.totalWoundLoss; | let damage = args.totalWoundLoss; | ||||||
| let tb = sourceActor.system.characteristics.t.bonus | let tb = sourceActor.system.characteristics.t.bonus | ||||||
| args.abort = `<strong>${this.effect.name}</strong>: Damage applied to ${sourceActor.name}`; | args.abort = `<strong>${this.effect.name}</strong>: Dommages appliqués à ${sourceActor.name}`; | ||||||
|  |  | ||||||
| let message = await sourceActor.applyBasicDamage(damage - tb, {damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_AP, suppressMsg : true}) | let message = await sourceActor.applyBasicDamage(damage - tb, {damageType: game.wfrp4e.config.DAMAGE_TYPE.IGNORE_AP, suppressMsg : true}) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| if (args.opposedTest.result.differenceSL >= 0 && args.opposedTest.result.differenceSL <= 2 && args.opposedTest.result.winner == "attacker") | if (args.opposedTest.result.differenceSL >= 0 && args.opposedTest.result.differenceSL <= 2 && args.opposedTest.result.winner == "attacker") | ||||||
| {  | {  | ||||||
|    this.actor.update({"system.status.fortune.value" : Math.max(0, (this.actor.system.status.fortune?.value - 1) || 0)}) |    this.actor.update({"system.status.fortune.value" : Math.max(0, (this.actor.system.status.fortune?.value - 1) || 0)}) | ||||||
|     this.script.scriptMessage(`Fortune point stolen from <strong>${this.actor.name}</strong>`, {blind : true, whisper : ChatMessage.getWhisperRecipients("GM")}) |     this.script.scriptMessage(`1 Point de Fortune volé à  <strong>${this.actor.name}</strong>`, {blind : true, whisper : ChatMessage.getWhisperRecipients("GM")}) | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -1 +1 @@ | |||||||
| return args.skill?.name.includes("Channelling") || args.type == "channelling" || args.skill?.name == game.i18n.localize("NAME.Charm") || args.skill?.name.includes("Language (Magick)") || args.type == "cast" | return args.skill?.name.includes("Focalisation") || args.type == "channelling" || args.skill?.name == game.i18n.localize("NAME.Charm") || args.skill?.name.includes("Langue (Magick)") || args.type == "cast" | ||||||
| @@ -10,7 +10,7 @@ let characteristics = { | |||||||
|     "wp" : 5, |     "wp" : 5, | ||||||
|     "fel" : 0 |     "fel" : 0 | ||||||
| } | } | ||||||
| let skills = ["Dodge", "Perception"] | let skills = ["Esquive", "Perception"] | ||||||
| let skillAdvancements = [10, 10] | let skillAdvancements = [10, 10] | ||||||
| let talents = ["Flee!", "Marksman"] | let talents = ["Flee!", "Marksman"] | ||||||
| let trappings = ["Hand Weapon"] | let trappings = ["Hand Weapon"] | ||||||
|   | |||||||
| @@ -10,10 +10,11 @@ let characteristics = { | |||||||
|     "wp" : 15, |     "wp" : 15, | ||||||
|     "fel" : 0 |     "fel" : 0 | ||||||
| } | } | ||||||
| let skills = ["Cool", "Dodge", "Intimidate", "Leadership"] | //let skills = ["Cool", "Dodge", "Intimidate", "Leadership"] | ||||||
|  | let skills = ["Calme", "Esquive", "Intimidation", "Commandement"] | ||||||
| let skillAdvancements = [15, 15, 10, 5] | let skillAdvancements = [15, 15, 10, 5] | ||||||
| let talents = ["Combat Aware", "Combat Reflexes", "Feint", "Resolute"] | let talents = ["Vigilance", "Combat Instinctif", "Feinte", "Déterminé"] | ||||||
| let trappings = ["Mail Coat", "Mail Chausses", "Mail Coif", "Hand Weapon", "Shield"] | let trappings = ["Cotte de Mailles", "Chausses de Mailles", "Coiffe de Mailles", "Arme simple", "Bouclier"] | ||||||
| let items = []; | let items = []; | ||||||
|  |  | ||||||
| let updateObj = this.actor.toObject(); | let updateObj = this.actor.toObject(); | ||||||
| @@ -48,7 +49,7 @@ for (let talent of talents) | |||||||
|     } |     } | ||||||
|     else  |     else  | ||||||
|     { |     { | ||||||
|         ui.notifications.warn(`Could not find ${talent}`, {permanent : true}) |         ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true}) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -65,7 +66,7 @@ for (let trapping of trappings) | |||||||
|     } |     } | ||||||
|     else  |     else  | ||||||
|     { |     { | ||||||
|         ui.notifications.warn(`Could not find ${trapping}`, {permanent : true}) |         ui.notifications.warn(`Impossible de trouver ${trapping}`, {permanent : true}) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,15 +1,15 @@ | |||||||
| let etiquette = (await fromUuid("Compendium.wfrp4e-core.items.Item.sYbgpSnRqSZWgwFP")).toObject(); | let etiquette = (await fromUuid("Compendium.wfrp4e-core.items.Item.sYbgpSnRqSZWgwFP")).toObject(); | ||||||
| etiquette.name += ` (Followers of Tzeentch)`; | etiquette.name += ` (Suivants de Tzeentch)`; | ||||||
|  |  | ||||||
| let animosity = (await fromUuid("Compendium.wfrp4e-core.items.Item.0VpT5yubw4UL7j6f")).toObject(); | let animosity = (await fromUuid("Compendium.wfrp4e-core.items.Item.0VpT5yubw4UL7j6f")).toObject(); | ||||||
| animosity.system.specification.value = "Followers of Nurgle"; | animosity.system.specification.value = "Suivants de Nurgle"; | ||||||
|  |  | ||||||
| let roll = await new Roll("ceil(1d10 / 3)").roll(); | let roll = await new Roll("ceil(1d10 / 3)").roll(); | ||||||
|  |  | ||||||
| roll.toMessage(this.script.getChatData()); | roll.toMessage(this.script.getChatData()); | ||||||
|  |  | ||||||
| let mutations = []; | let mutations = []; | ||||||
| let msg = `<p><strong>Mutations Gained</strong></p>` | let msg = `<p><strong>Mutations acquises</strong></p>` | ||||||
| for(let i = 0; i < roll.total; i++) | for(let i = 0; i < roll.total; i++) | ||||||
| { | { | ||||||
|     let item; |     let item; | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| return !(["Animal Care", "Charm Animal"].includes(args.item?.name) || args.item?.name.includes("Ride") || args.item?.name.includes("Animal Training")) | return !(["Soin aux animaux", "Emprise sur les animaux"].includes(args.item?.name) || args.item?.name.includes("Chevaucher") || args.item?.name.includes("Dressage")) | ||||||
| @@ -5,5 +5,5 @@ let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll / | |||||||
| let ones = Number(args.test.result.roll.toString().split("").pop()) | let ones = Number(args.test.result.roll.toString().split("").pop()) | ||||||
|  |  | ||||||
| if (ones > SL) | if (ones > SL) | ||||||
|    args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} SL</span>`) |    args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} DR</span>`) | ||||||
| } | } | ||||||
| @@ -1,12 +1,12 @@ | |||||||
| // Imbibing this substance grants the user the Painless Creature Trait. | // Imbibing this substance grants the user the Painless Creature Trait. | ||||||
| const hasColdBlooded = this.actor.has("Cold Blooded") | const hasColdBlooded = this.actor.has("A Sang Froid") | ||||||
| if (hasColdBlooded === undefined)  | if (hasColdBlooded === undefined)  | ||||||
| { | { | ||||||
|   let item = await fromUuid("Compendium.wfrp4e-core.items.mCh1KK9jomwFZcLB") |   let item = await fromUuid("Compendium.wfrp4e-core.items.mCh1KK9jomwFZcLB") | ||||||
|   let data = item.toObject() |   let data = item.toObject() | ||||||
|   this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) |   this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) | ||||||
|    |    | ||||||
|   this.script.scriptMessage(`<p><strong>${this.actor.prototypeToken.name}</strong> has gained the Cold Blooded Creature Trait and may reverse any failed Willpower based Tests.</p> |   this.script.scriptMessage(`<p><strong>${this.actor.prototypeToken.name}</strong> reçoit le Trait de Créatuer A Sang Froid et peut inverser n'importe quel test de Force Mentale échoué.</p> | ||||||
|   <p>If they gain a Surprised Condition, this Condition is not lost the first time it should be (which is typically at the end of the Round or if they victim is attacked).</p>`,  |   <p>Si il reçoit un état Surpris, cet état n'est pas perdu la première fois (typiquement à la fin du Round ou si il est attaqué).</p>`,  | ||||||
|   {whisper: ChatMessage.getWhisperRecipients("GM"), blind: true })    |   {whisper: ChatMessage.getWhisperRecipients("GM"), blind: true })    | ||||||
| } | } | ||||||
| @@ -2,8 +2,8 @@ | |||||||
|  |  | ||||||
| if (args.equipped) {   | if (args.equipped) {   | ||||||
|   this.actor.createEmbeddedDocuments("ActiveEffect", [this.item.effects.contents[1]?.convertToApplied()])   |   this.actor.createEmbeddedDocuments("ActiveEffect", [this.item.effects.contents[1]?.convertToApplied()])   | ||||||
|   this.script.scriptMessage(`${this.actor.name} dons the <strong>${this.item.name}</strong>. <br> |   this.script.scriptMessage(`${this.actor.name} porte le <strong>${this.item.name}</strong>. <br> | ||||||
|       They gain +1 Corruption point if an exposure Test is failed, which will need to be manually applied.<br>If they wear the mask for more than an hour or benefit from any of its effects, they are exposed to @Corruption[moderate]{Moderate Corruption}  |       Il gagne +1 Point de Corruption point si un Test de Corruption est échoué, à appliquer manuellement.<br>Si le personnage porte le masque pendant plus d'une heure ou utilise les effets du masque, il est exposé à une @Corruption[moderate]{Corruption Modérée}  | ||||||
|       `, |       `, | ||||||
|       {whisper: ChatMessage.getWhisperRecipients("GM")})  |       {whisper: ChatMessage.getWhisperRecipients("GM")})  | ||||||
| } | } | ||||||
| @@ -12,8 +12,8 @@ if (args.equipped) { | |||||||
| else if (!args.equipped) | else if (!args.equipped) | ||||||
| { | { | ||||||
|     await this.item.effects.contents[0].delete(); |     await this.item.effects.contents[0].delete(); | ||||||
|     await this.item.update({name : this.item.name += " (Used)"}) |     await this.item.update({name : this.item.name += " (Utilisé)"}) | ||||||
|     this.script.scriptMessage(`<strong>${this.item.name}</strong> on ${this.actor.name} has been taken off and loses its properties. However, the effects last for [[1d10+4]] days, after which they should be manually removed.`,  |     this.script.scriptMessage(`<strong>${this.item.name}</strong> de ${this.actor.name} a été enlevé et a perdu ses propriétés. Cependant, les effets perdurent pendant [[1d10+4]] jours, après quoi ils devront être manuellement supprimés.`,  | ||||||
|     {whisper: ChatMessage.getWhisperRecipients("GM")} |     {whisper: ChatMessage.getWhisperRecipients("GM")} | ||||||
|     ) |     ) | ||||||
|      |      | ||||||
|   | |||||||
| @@ -1,2 +1,2 @@ | |||||||
| if (args.totalWoundLoss > 0) | if (args.totalWoundLoss > 0) | ||||||
|      this.script.scriptMessage(`<b>Blade of Nurglitch: ${args.actor.name}</b> must pass an <b>Difficult (-10) Endurance</b> Test or gain a @UUID[Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb]{Festering Wound}`, {whisper: ChatMessage.getWhisperRecipients("GM") }) |      this.script.scriptMessage(`<b>Lame de Nurglitch: ${args.actor.name}</b> doit réussir un <b>Test d'Endurance Difficile (-10) </b> ou recevoir une @UUID[Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb]{Blessure Purulente}`, {whisper: ChatMessage.getWhisperRecipients("GM") }) | ||||||
| @@ -4,5 +4,5 @@ let biteData = bite.toObject(); | |||||||
| let senseData = sense.toObject(); | let senseData = sense.toObject(); | ||||||
|  |  | ||||||
| biteData.system.specification.value = 6 - this.actor.characteristics.s.bonus; | biteData.system.specification.value = 6 - this.actor.characteristics.s.bonus; | ||||||
| senseData.name = senseData.name += " (Smell)" | senseData.name = senseData.name += " (Odorat)" | ||||||
| this.actor.createEmbeddedDocuments("Item", [biteData, senseData], {fromEffect : this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [biteData, senseData], {fromEffect : this.effect.id}) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| let regenerate = this.actor.items.getName('Regenerate') | let regenerate = this.actor.items.getName('Régénération') | ||||||
|  |  | ||||||
| if (regenerate) | if (regenerate) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| let roll = Math.ceil(CONFIG.Dice.randomUniform() * 10) | let roll = Math.ceil(CONFIG.Dice.randomUniform() * 10) | ||||||
| if (args.test.isFumble && roll == 1 && !args.test.result.misfire) | if (args.test.isFumble && roll == 1 && !args.test.result.misfire) | ||||||
| { | { | ||||||
|   args.test.result.misfire = game.i18n.localize("Misfire") + " (Rolled 1)" |   args.test.result.misfire = game.i18n.localize("Misfire") + " (Résultat 1)" | ||||||
|   args.test.result.misfireDamage = eval(parseInt(args.test.result.roll.toString().split('').pop()) + args.test.item.Damage) |   args.test.result.misfireDamage = eval(parseInt(args.test.result.roll.toString().split('').pop()) + args.test.item.Damage) | ||||||
| } | } | ||||||
| else if (args.test.isFumble && roll != 1) | else if (args.test.isFumble && roll != 1) | ||||||
| { | { | ||||||
|     args.test.result.other.push("Misfire Roll: " + roll) |     args.test.result.other.push("Résultat du Raté: " + roll) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| let item = await fromUuid("Compendium.wfrp4e-core.items.Q2MCUrG2HppMcvN0") | let item = await fromUuid("Compendium.wfrp4e-core.items.Q2MCUrG2HppMcvN0") | ||||||
| item = item.toObject() | item = item.toObject() | ||||||
| let species = args.actor.Species || " of your species" | let species = args.actor.Species || " de votre espèce" | ||||||
| item.name = `Animosity (all not ${species})` | item.name = `Animosité (tous sauf ${species})` | ||||||
| this.actor.createEmbeddedDocuments("Item", [item], {fromEffect : this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [item], {fromEffect : this.effect.id}) | ||||||
| @@ -1,2 +1,2 @@ | |||||||
| args.abort = true; | args.abort = true; | ||||||
| this.script.scriptNotification(`Cannot use ${game.wfrp4e.config.locations[this.effect.getFlag("wfrp4e", "location")]}!`, "error") | this.script.scriptNotification(`Impossible d'utiliser ${game.wfrp4e.config.locations[this.effect.getFlag("wfrp4e", "location")]}!`, "error") | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| let useWard = await Dialog.wait({ | let useWard = await Dialog.wait({ | ||||||
| 	title : this.effect.name, | 	title : this.effect.name, | ||||||
| 	content : `<p>Use Ward provided by <strong>${this.effect.name}</strong>?`, | 	content : `<p>Utiliser Ward fourni par <strong>${this.effect.name}</strong>?`, | ||||||
| 	buttons : { | 	buttons : { | ||||||
| 		yes : { | 		yes : { | ||||||
| 			label : "Yes", | 			label : "Yes", | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| if (this.actor.system.status.advantage.value >= 2) | if (this.actor.system.status.advantage.value >= 2) | ||||||
| { | { | ||||||
|     await this.actor.modifyAdvantage(-2); |     await this.actor.modifyAdvantage(-2); | ||||||
|     this.script.scriptNotification("Advantage Subtracted") |     this.script.scriptNotification("Avvantage soustrait") | ||||||
| } | } | ||||||
| else  | else  | ||||||
| { | { | ||||||
|     return this.script.scriptNotification("Not enough Advantage!", "error") |     return this.script.scriptNotification("Pas assez d'Avantages!", "error") | ||||||
| } | } | ||||||
|  |  | ||||||
| let test = await this.actor.setupTrait(this.item) | let test = await this.actor.setupTrait(this.item) | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ let item = await fromUuid("Compendium.wfrp4e-core.items.uqGxFOEqeurwkAO3") | |||||||
| item = item.toObject() | item = item.toObject() | ||||||
|  |  | ||||||
| item.system.specification.value = 10; | item.system.specification.value = 10; | ||||||
| item.name += " (Fire)" | item.name += " (Feu)" | ||||||
| setProperty(item, "flags.wfrp4e.breath",  "fire") | setProperty(item, "flags.wfrp4e.breath",  "fire") | ||||||
|  |  | ||||||
| Item.create(item, {parent : this.actor, fromEffect: this.effect.id}) | Item.create(item, {parent : this.actor, fromEffect: this.effect.id}) | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| if (getProperty(args.data, "system.status.fortune.value")) | if (getProperty(args.data, "system.status.fortune.value")) | ||||||
| { | { | ||||||
| 	this.script.scriptNotification("Cannot update Fortune"); | 	this.script.scriptNotification("Impossible de mettre à jour la Fortune"); | ||||||
| 	delete args.data.system.status.wounds.value; | 	delete args.data.system.status.wounds.value; | ||||||
| } | } | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| if (args.item.type  == "skill" && args.item.name == "Melee (Basic)") | if (args.item.type  == "skill" && args.item.name == "Corps à corps (Base)") | ||||||
| { | { | ||||||
|      args.item.system.modifier.value += 20; |      args.item.system.modifier.value += 20; | ||||||
| } | } | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| if (args.test.result.castOutcome == "failure") | if (args.test.result.castOutcome == "failure") | ||||||
| { | { | ||||||
|     ValueDialog.create("Enter Wounds Lost to gain SL", this.effect.name, "0").then(async value => { |     ValueDialog.create("Sasir le nombre de Blessures perdues en échange de DR", this.effect.name, "0").then(async value => { | ||||||
|         value = Math.clamped(value, 0, 3) |         value = Math.clamped(value, 0, 3) | ||||||
|         if (value == 0) |         if (value == 0) | ||||||
|         { |         { | ||||||
| @@ -8,11 +8,11 @@ if (args.test.result.castOutcome == "failure") | |||||||
|         } |         } | ||||||
|         else if (Number.isNumeric(value)) |         else if (Number.isNumeric(value)) | ||||||
|         { |         { | ||||||
|             this.script.scriptNotification(`Lost ${value} Wounds`) |             this.script.scriptNotification(`Perte de ${value} Blessures`) | ||||||
|             this.actor.modifyWounds(-1 * value) |             this.actor.modifyWounds(-1 * value) | ||||||
|             await this.item.system.toggleEquip(); |             await this.item.system.toggleEquip(); | ||||||
|             args.test.addSL(value); |             args.test.addSL(value); | ||||||
|             args.test.preData.other.push(`<strong>${this.effect.name}</strong>: +${value} SL`) |             args.test.preData.other.push(`<strong>${this.effect.name}</strong>: +${value} DR`) | ||||||
|         } |         } | ||||||
|     }) |     }) | ||||||
| } | } | ||||||
| @@ -3,8 +3,8 @@ | |||||||
| if (args.equipped)  | if (args.equipped)  | ||||||
| {   | {   | ||||||
|   this.actor.createEmbeddedDocuments("ActiveEffect", [this.item.effects.contents[1]?.convertToApplied()])   |   this.actor.createEmbeddedDocuments("ActiveEffect", [this.item.effects.contents[1]?.convertToApplied()])   | ||||||
|   this.script.scriptMessage(`${this.actor.name} dons the <strong>${this.item.name}</strong>. <br> |   this.script.scriptMessage(`${this.actor.name} porte le <strong>${this.item.name}</strong>. <br> | ||||||
|       If they wear the mask for more than an hour or benefit from any of its effects, they are exposed to @Corruption[moderate]{Moderate Corruption}.  |       Si le personnage porte le masque pendant plus d'une heure ou bénéficie de ses effets, il s'espose à une @Corruption[moderate]{Corruption Modérée}.  | ||||||
|       `, |       `, | ||||||
|       {whisper: ChatMessage.getWhisperRecipients("GM")})  |       {whisper: ChatMessage.getWhisperRecipients("GM")})  | ||||||
| } | } | ||||||
| @@ -13,8 +13,8 @@ if (args.equipped) | |||||||
| else if (!args.equipped) | else if (!args.equipped) | ||||||
| { | { | ||||||
|     await this.item.effects.contents[0].delete(); |     await this.item.effects.contents[0].delete(); | ||||||
|     await this.item.update({name : this.item.name += " (Used)"}) |     await this.item.update({name : this.item.name += " (Utilisé)"}) | ||||||
|     this.script.scriptMessage(`<strong>${this.item.name}</strong> on ${this.actor.name} has been taken off and loses its properties. However, the effects last for [[1d10+4]] days, after which they should be manually removed.`,  |     this.script.scriptMessage(`<strong>${this.item.name}</strong> porté par ${this.actor.name} a été enlevé et a perdu ses capacités. Cependant, les effets perdurent pendant [[1d10+4]] jours, après quoi ils doivent être retirés manuellement.`,  | ||||||
|     {whisper: ChatMessage.getWhisperRecipients("GM")} |     {whisper: ChatMessage.getWhisperRecipients("GM")} | ||||||
|     ) |     ) | ||||||
|      |      | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| let poisoned = args.actor.hasCondition("poisoned") | let poisoned = args.actor.hasCondition("poisoned") | ||||||
| if (poisoned) | if (poisoned) | ||||||
| { | { | ||||||
|    this.script.scriptNotification(`Removed ${poisoned.conditionValue} Poisoned Conditions`) |    this.script.scriptNotification(`Suppression de ${poisoned.conditionValue} états Empoisonné`) | ||||||
|    poisoned.delete();   |    poisoned.delete();   | ||||||
| } | } | ||||||
| else | else | ||||||
|   this.script.scriptNotification(`No Poisoned Conditions`) |   this.script.scriptNotification(`Aucun état Empoisonné`) | ||||||
| @@ -1 +1 @@ | |||||||
| this.script.scriptMessage(`Claimed <strong>${this.effect.name}</strong> Bonus`); | this.script.scriptMessage(`Revendiquer le Bonus de <strong>${this.effect.name}</strong> `); | ||||||
| @@ -1 +1 @@ | |||||||
| return args.skill?.name == "Melee (Brawling)" || args.item?.weaponGroup?.value == "brawling" | return args.skill?.name == "Corps à corps (Bagarre)" || args.item?.weaponGroup?.value == "brawling" | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| // Imbibing this substance grants the user the Painless Creature Trait. | // Imbibing this substance grants the user the Painless Creature Trait. | ||||||
| const hasPainless = this.actor.has("Painless"); | const hasPainless = this.actor.has("Insensible à la douleur"); | ||||||
| if (hasPainless === undefined)  | if (hasPainless === undefined)  | ||||||
| { | { | ||||||
|   let item = await fromUuid("Compendium.wfrp4e-core.items.wMwSRDmgiF2IdCJr"); |   let item = await fromUuid("Compendium.wfrp4e-core.items.wMwSRDmgiF2IdCJr"); | ||||||
| @@ -7,11 +7,7 @@ if (hasPainless === undefined) | |||||||
|   this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) |   this.actor.createEmbeddedDocuments("Item", [data], {fromEffect: this.effect.id}) | ||||||
|    |    | ||||||
|   this.script.scriptMessage( |   this.script.scriptMessage( | ||||||
|   `<p><strong>${this.actor.prototypeToken.name}</strong> has gained the Painless Creature Trait. This |   `<p><strong>${this.actor.prototypeToken.name}</strong> gagne le Trait de Creature Insensible à la Douleur. Cet effet dure 1 heure, après quoi il disparait et le total des Blessures encaissés par le buveur sont encaissés d'un coup.</p> | ||||||
|     effect lasts for one hour, after which it dissipates and the full effect |     <p>Notez que cela n'empêche pas le buveur de recevoir une Blessure Critique ou de mourrir. Cela permet par contre d'éviter la majorité de leur effets.</p>`,  | ||||||
|     of all the imbiber's wounds come crashing down at once.</p> |  | ||||||
|     <p>Note that this does not prevent the user from acquiring a Critical |  | ||||||
|     Wound or dying from one. It merely allows them to ignore most |  | ||||||
|     of their effects.</p>`,  |  | ||||||
|     { whisper: ChatMessage.getWhisperRecipients("GM"), blind: true}) |     { whisper: ChatMessage.getWhisperRecipients("GM"), blind: true}) | ||||||
| } | } | ||||||
| @@ -1 +1 @@ | |||||||
| return (["Animal Care", "Charm Animal"].includes(args.item?.name) || args.item?.name.includes("Ride") || args.item?.name.includes("Animal Training")) | return (["Soin aux animaux", "Emprise sur les animaux"].includes(args.item?.name) || args.item?.name.includes("Chevaucher") || args.item?.name.includes("Dressage")) | ||||||
| @@ -1,9 +1,9 @@ | |||||||
| let strLoss = Math.ceil(CONFIG.Dice.randomUniform() * 10) | let strLoss = Math.ceil(CONFIG.Dice.randomUniform() * 10) | ||||||
| let tghLoss = Math.ceil(CONFIG.Dice.randomUniform() * 10) | let tghLoss = Math.ceil(CONFIG.Dice.randomUniform() * 10) | ||||||
|  |  | ||||||
| if (!this.actor.has("Undead") && !this.actor.has("Daemonic"))  | if (!this.actor.has("Mort-vivant") && !this.actor.has("Démoniaque"))  | ||||||
| { | { | ||||||
|     this.actor.setupSkill(game.i18n.localize("NAME.Cool"), { appendTitle: " - " + this.effect.name, fields: { difficulty: "average" }, context: { failure: `Lost ${strLoss} Strength and ${tghLoss} Toughness` } }).then(async test => { |     this.actor.setupSkill(game.i18n.localize("NAME.Cool"), { appendTitle: " - " + this.effect.name, fields: { difficulty: "average" }, context: { failure: `Pert de ${strLoss} en Force et ${tghLoss} en Endurance` } }).then(async test => { | ||||||
|         await test.roll(); |         await test.roll(); | ||||||
|         if (test.failed) { |         if (test.failed) { | ||||||
|             this.actor.update({ "system.characteristics.s.initial": this.actor.system.characteristics.s.initial - strLoss, "system.characteristics.t.initial": this.actor.system.characteristics.t.initial - tghLoss }) |             this.actor.update({ "system.characteristics.s.initial": this.actor.system.characteristics.s.initial - strLoss, "system.characteristics.t.initial": this.actor.system.characteristics.t.initial - tghLoss }) | ||||||
| @@ -12,5 +12,5 @@ if (!this.actor.has("Undead") && !this.actor.has("Daemonic")) | |||||||
|  |  | ||||||
| } | } | ||||||
| else { | else { | ||||||
|     this.script.scriptNotification(`<strong>${this.actor.name}</strong> is immune to ${this.effect.name}`) |     this.script.scriptNotification(`<strong>${this.actor.name}</strong> est immunisé à ${this.effect.name}`) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| let type = this.item.getFlag("wfrp4e", "breath") | let type = this.item.getFlag("wfrp4e", "breath") | ||||||
| let types = { | let types = { | ||||||
|     none : "None", |     none : "Aucun", | ||||||
|     cold : "Cold", |     cold : "Froid", | ||||||
|     corrosion : "Corrosion", |     corrosion : "Corrosion", | ||||||
|     fire : "Fire", |     fire : "Feu", | ||||||
|     electricity : "Electricity", |     electricity : "Electricité", | ||||||
|     poison : "Poison", |     poison : "Poison", | ||||||
|     smoke : "Smoke", |     smoke : "Fumée", | ||||||
|     various : "Various" |     various : "Divers" | ||||||
| } | } | ||||||
| if (!type) | if (!type) | ||||||
| { | { | ||||||
|     type = (await ItemDialog.create(ItemDialog.objectToArray(types, this.item.img), 1, "Choose Breath"))[0]?.id; |     type = (await ItemDialog.create(ItemDialog.objectToArray(types, this.item.img), 1, "Choisir le Souffle"))[0]?.id; | ||||||
|     this.item.updateSource({"flags.wfrp4e.breath" : type}) |     this.item.updateSource({"flags.wfrp4e.breath" : type}) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,5 +3,5 @@ let APIgnored = args.AP.layers.reduce((prev, current) => prev + ((current.weakpo | |||||||
| if (APIgnored) | if (APIgnored) | ||||||
| { | { | ||||||
|     args.modifiers.ap.ignored += APIgnored |     args.modifiers.ap.ignored += APIgnored | ||||||
|     args.modifiers.ap.details.push(`<strong>${this.effect.name}</strong>: Ignore AP with Weakpoints (${APIgnored})`) |     args.modifiers.ap.details.push(`<strong>${this.effect.name}</strong>: Ignorer les PA avec des Points Faibles (${APIgnored})`) | ||||||
| } | } | ||||||
| @@ -3,5 +3,5 @@ if (caster) | |||||||
| { | { | ||||||
|     let healed= caster.characteristics.wp.bonus |     let healed= caster.characteristics.wp.bonus | ||||||
|     this.actor.modifyWounds(healed); |     this.actor.modifyWounds(healed); | ||||||
|     this.script.scriptMessage(`<strong>${this.actor.prototypeToken.name}</strong> regains ${healed} Wounds`) |     this.script.scriptMessage(`<strong>${this.actor.prototypeToken.name}</strong> regagne ${healed} Blessures`) | ||||||
| } | } | ||||||
| @@ -3,5 +3,5 @@ let weakpointsAP = args.AP.layers.filter(i => !i.ignored && i.weakpoints).reduce | |||||||
| if (weakpointsAP > 0) | if (weakpointsAP > 0) | ||||||
| { | { | ||||||
|     args.modifiers.ap.ignored += weakpointsAP; |     args.modifiers.ap.ignored += weakpointsAP; | ||||||
|     args.modifiers.ap.details.push(`${this.effect.name} - Ignore Weakpoints (${weakpointsAP})`); |     args.modifiers.ap.details.push(`${this.effect.name} - Ignore les Points Faibles (${weakpointsAP})`); | ||||||
| } | } | ||||||
| @@ -9,7 +9,7 @@ let filters = [ | |||||||
|     } |     } | ||||||
| ] | ] | ||||||
|  |  | ||||||
| let petty = await game.wfrp4e.apps.ItemDialog.createFromFilters(filters, 6, "Choose 6 Petty Spells") | let petty = await game.wfrp4e.apps.ItemDialog.createFromFilters(filters, 6, "Choisir 6 sorts de Magie Mineure") | ||||||
|  |  | ||||||
|  |  | ||||||
| filters = [ | filters = [ | ||||||
| @@ -23,7 +23,7 @@ filters = [ | |||||||
|     } |     } | ||||||
| ] | ] | ||||||
|  |  | ||||||
| let arcane = await game.wfrp4e.apps.ItemDialog.createFromFilters(filters, 9, "Choose 9 Arcane Spells") | let arcane = await game.wfrp4e.apps.ItemDialog.createFromFilters(filters, 9, "Choisir 9 Sorts d'Arcane") | ||||||
|  |  | ||||||
| let items = petty.concat(arcane).map(i => i.toObject()) | let items = petty.concat(arcane).map(i => i.toObject()) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| fromUuid("Compendium.wfrp4e-core.items.5QcrpLQWWrsbKR79").then(item => { | fromUuid("Compendium.wfrp4e-core.items.5QcrpLQWWrsbKR79").then(item => { | ||||||
|      let data = item.toObject(); |      let data = item.toObject(); | ||||||
|      data.system.tests.value = data.system.tests.value.replace("coins", "metal objects"); |      data.system.tests.value = data.system.tests.value.replace("coins", "metal objects"); | ||||||
|      data.system.description.value += "<p>This Talent also extends to any metal object because of <strong>Metallic Affinity</strong></p>" |      data.system.description.value += "<p>Ce Talent s'applique également à tout objet métallique à cause de <strong>l'Affinité Metallique</strong></p>" | ||||||
|      this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) |      this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | ||||||
| }) | }) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| let item = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS") | let item = await fromUuid("Compendium.wfrp4e-core.items.9h82z72XGo9tfgQS") | ||||||
| let data = item.toObject(); | let data = item.toObject(); | ||||||
| data.name += ` (Smell)` | data.name += ` (Odorat)` | ||||||
| this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| let item = await fromUuid("Compendium.wfrp4e-core.items.AtpAudHA4ybXVlWM") | let item = await fromUuid("Compendium.wfrp4e-core.items.AtpAudHA4ybXVlWM") | ||||||
| let data = item.toObject(); | let data = item.toObject(); | ||||||
| data.name += ` (When Charging)` | data.name += ` (Si Charge)` | ||||||
| this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | this.actor.createEmbeddedDocuments("Item", [data], {fromEffect : this.effect.id}) | ||||||
| @@ -3,5 +3,5 @@ let sourceItem = this.effect.sourceItem; | |||||||
| if (sourceItem) | if (sourceItem) | ||||||
| { | { | ||||||
| 	this.actor.applyEffect({effectUuids : [sourceItem.effects.contents[2].uuid]}) | 	this.actor.applyEffect({effectUuids : [sourceItem.effects.contents[2].uuid]}) | ||||||
| 	this.script.scriptNotification("Applied after effects"); | 	this.script.scriptNotification("Applique après les effets"); | ||||||
| } | } | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| if (this.item.getFlag("wfrp4e", "failedCool")) | if (this.item.getFlag("wfrp4e", "failedCool")) | ||||||
| { | { | ||||||
|     this.item.name += " (No AP)" |     this.item.name += " (Aucun PA)" | ||||||
|     this.item.system.AP = { |     this.item.system.AP = { | ||||||
|         "head": 0, |         "head": 0, | ||||||
|         "lArm": 0, |         "lArm": 0, | ||||||
|   | |||||||
| @@ -2,11 +2,11 @@ let test = await this.actor.setupSkill(game.i18n.localize("NAME.Endurance"), {sk | |||||||
| await test.roll(); | await test.roll(); | ||||||
| if (test.failed) | if (test.failed) | ||||||
| { | { | ||||||
|       this.script.scriptNotification("Gained a <strong>Festering Wound</strong>") |       this.script.scriptNotification("Subi une <strong>Blessure Purulente</strong>") | ||||||
|       let item = await fromUuid("Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb") |       let item = await fromUuid("Compendium.wfrp4e-core.items.kKccDTGzWzSXCBOb") | ||||||
|       this.actor.createEmbeddedDocuments("Item", [item.toObject()]) |       this.actor.createEmbeddedDocuments("Item", [item.toObject()]) | ||||||
| } | } | ||||||
| else  | else  | ||||||
| { | { | ||||||
|     this.script.scriptNotification("Avoided a <strong>Festering Wound</strong>") |     this.script.scriptNotification("Evite une <strong>Blessure Purulente</strong>") | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| if (args.test.result.SL < 0) | if (args.test.result.SL < 0) | ||||||
| { | { | ||||||
|     this.script.scriptMessage(`Gained ${Math.abs(args.test.result.SL)} Corruption points`, {whisper : ChatMessage.getWhisperRecipients("GM")}) |     this.script.scriptMessage(`Reçoit ${Math.abs(args.test.result.SL)} Points de Corruption`, {whisper : ChatMessage.getWhisperRecipients("GM")}) | ||||||
|     if (args.test.failed && this.actor.type == "character") |     if (args.test.failed && this.actor.type == "character") | ||||||
|     { |     { | ||||||
|         this.actor.update({"system.status.corruption.value" : parseInt(this.actor.status.corruption.value) + Math.abs(args.test.result.SL)}) |         this.actor.update({"system.status.corruption.value" : parseInt(this.actor.status.corruption.value) + Math.abs(args.test.result.SL)}) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| let choice1 = [ | let choice1 = [ | ||||||
|     { |     { | ||||||
|         type : "skill", |         type : "skill", | ||||||
|         name : "Melee (Basic)", |         name : "Corps à corps (Base)", | ||||||
|         diff : { |         diff : { | ||||||
|             system : { |             system : { | ||||||
|                 advances : { |                 advances : { | ||||||
| @@ -14,7 +14,7 @@ let choice1 = [ | |||||||
| let choice2 = [ | let choice2 = [ | ||||||
|     { |     { | ||||||
|         type : "skill", |         type : "skill", | ||||||
|         name : "Melee (Polearm)", |         name : "Corps à corps (Armes d'hast)", | ||||||
|         diff : { |         diff : { | ||||||
|             system : { |             system : { | ||||||
|                 advances : { |                 advances : { | ||||||
| @@ -26,14 +26,14 @@ let choice2 = [ | |||||||
| ] | ] | ||||||
|  |  | ||||||
| let choice = await Dialog.wait({ | let choice = await Dialog.wait({ | ||||||
|     title : "Choice", |     title : "Choix", | ||||||
|     content :  |     content :  | ||||||
|     `<p> |     `<p> | ||||||
|     Select your choice |     Choisissez une option | ||||||
|     </p> |     </p> | ||||||
|     <ol> |     <ol> | ||||||
|     <li>Melee (Basic)</li> |     <li>Corps à corps (Base)</li> | ||||||
|     <li>Melee (Polearm)</li> |     <li>Corps à corps (Armes d'hast)</li> | ||||||
|     </ol>  |     </ol>  | ||||||
|     `, |     `, | ||||||
|     buttons : { |     buttons : { | ||||||
| @@ -44,7 +44,7 @@ let choice = await Dialog.wait({ | |||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         2 : { |         2 : { | ||||||
|             label : "Polearm", |             label : "Armes d'hast", | ||||||
|             callback : () => { |             callback : () => { | ||||||
|                 return choice2; |                 return choice2; | ||||||
|             } |             } | ||||||
| @@ -76,7 +76,7 @@ for (let c of choice) | |||||||
|                 items.push(mergeObject(item, (c.diff || {}))) |                 items.push(mergeObject(item, (c.diff || {}))) | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|             ui.notifications.warn(`Could not find ${talent}`, {permanent : true}) |             ui.notifications.warn(`Impossible de trouver ${talent}`, {permanent : true}) | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| let roll = await new Roll("1d10").roll() | let roll = await new Roll("1d10").roll() | ||||||
|  |  | ||||||
| roll.toMessage(this.script.getChatData({flavor : `${this.effect.name} (Duration)`})); | roll.toMessage(this.script.getChatData({flavor : `${this.effect.name} (Durée)`})); | ||||||
|  |  | ||||||
| this.effect.updateSource({"duration.rounds" : roll.total}) | this.effect.updateSource({"duration.rounds" : roll.total}) | ||||||
| @@ -1 +1 @@ | |||||||
| return !args.skill?.name.includes("Channelling") && args.type != "channelling" | return !args.skill?.name.includes("Focalisation") && args.type != "channelling" | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| let halve; | let halve; | ||||||
| if (args.opposedTest.attackerTest.item?.type != "spell") | if (args.opposedTest.attackerTest.item?.type != "spell") | ||||||
| { | { | ||||||
|     halve = await Dialog.confirm({title : this.effect.name, content : "Halve Damage? (Halves all damage other than fire, cold, and magic)"}) |     halve = await Dialog.confirm({title : this.effect.name, content : "Diviser les dommages? (Divise par 2 tout les dommages autre que ceux causés par le feu, le froid et magiques)"}) | ||||||
| } | } | ||||||
| else | else | ||||||
| { | { | ||||||
| @@ -11,5 +11,5 @@ else | |||||||
| if (halve) | if (halve) | ||||||
| { | { | ||||||
|     args.totalWoundLoss /= 2; |     args.totalWoundLoss /= 2; | ||||||
|     args.modifiers.other.push({label : this.effect.name, details : "Halved", value : "× 0.5"}) |     args.modifiers.other.push({label : this.effect.name, details : "Divisé par 2", value : "× 0.5"}) | ||||||
| } | } | ||||||
| @@ -1 +1 @@ | |||||||
| return args.type != "cast" || !["death", "necromancy", "life", "light", "heavens"].includes(args.spell?.system.lore.value) | return args.type != "cast" || !["mort", "nécromancie", "vie", "lumière", "cieux"].includes(args.spell?.system.lore.value) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| if (args.opposedTest.result.differenceSL >= 0 && args.opposedTest.result.differenceSL <= 2 && args.opposedTest.result.winner == "attacker") | if (args.opposedTest.result.differenceSL >= 0 && args.opposedTest.result.differenceSL <= 2 && args.opposedTest.result.winner == "attacker") | ||||||
| {  | {  | ||||||
|     this.script.scriptMessage(`Emits a cloud of foul-smelling blackpowder. Enable the <strong>Fellowship Penalty</strong> Active Effect on @UUID[${this.actor.uuid}].`, {blind : true, whisper : ChatMessage.getWhisperRecipients("GM")}) |     this.script.scriptMessage(`Émet un nuage de poudre noire nauséabonde. Active l'effet <strong>Fellowship Penalty</strong> sur @UUID[${this.actor.uuid}].`, {blind : true, whisper : ChatMessage.getWhisperRecipients("GM")}) | ||||||
| } | } | ||||||
| @@ -1 +1 @@ | |||||||
| return args.skill?.name == "Ranged (Blackpowder)" | return args.skill?.name == "Projectiles (Poudre noire)" | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user