Initial commit: Fresh start with current state

This commit is contained in:
Claude Code
2025-11-06 14:04:48 +01:00
commit 15355c35ea
20152 changed files with 1191077 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
root = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[{*.json,*.html}]
indent_size = 2
[{*.md}]
trim_trailing_whitespace = false

View File

@@ -0,0 +1,14 @@
node_modules
# Potential Foundry files
foundry.js
foundry/
common/
client/
# Random modules
module/semver.js
# Built files
dist/
docs/

View File

@@ -0,0 +1,509 @@
module.exports = {
env: {
jquery: true,
browser: true,
es2022: true,
node: true,
},
extends: ["eslint:recommended", "plugin:prettier/recommended", "plugin:jsdoc/recommended-typescript-flavor"],
parserOptions: {
ecmaVersion: 2022,
sourceType: "module",
},
rules: {
// Required for Foundry compatibility
"no-underscore-dangle": "off",
"import/extensions": "off",
"class-methods-use-this": "off",
// Personal Preference
"linebreak-style": "off",
"no-mixed-operators": "off",
"no-param-reassign": "off",
"no-continue": "off",
"no-console": "off",
"prefer-const": ["error", { destructuring: "all" }],
"no-var": "error",
"no-unused-vars": "off",
"newline-per-chained-call": "off",
"no-plusplus": "off",
"valid-jsdoc": "off",
// JSDoc plugin
"jsdoc/tag-lines": ["error", "any", { startLines: 1 }],
"jsdoc/no-defaults": ["off"],
"jsdoc/require-jsdoc": ["warn", { enableFixer: false }],
"jsdoc/no-blank-blocks": ["error", { enableFixer: true }],
},
settings: {
jsdoc: {
mode: "typescript",
structuredTags: {
group: { type: "text" },
remarks: { type: "text" },
},
},
},
globals: {
AudioHelper: "readonly",
Collection: "readonly",
Hooks: "readonly",
KeyboardManager: "readonly",
ClientSettings: "readonly",
WorldSettingsStorage: "readonly",
SetupConfiguration: "readonly",
SocketInterface: "readonly",
SortingHelpers: "readonly",
VideoHelper: "readonly",
Application: "readonly",
FormApplication: "readonly",
Localization: "readonly",
Game: "readonly",
Die: "readonly",
FateDie: "readonly",
PoolTerm: "readonly",
Roll: "readonly",
MersenneTwister: "readonly",
Compendium: "readonly",
Canvas: "readonly",
CanvasLayer: "readonly",
PlaceableObject: "readonly",
PlaceablesLayer: "readonly",
ContextMenu: "readonly",
Dialog: "readonly",
Draggable: "readonly",
DragDrop: "readonly",
TextEditor: "readonly",
FilePicker: "readonly",
Notifications: "readonly",
Tabs: "readonly",
TabsV2: "readonly",
WebRTC: "readonly",
WebRTCInterface: "readonly",
WebRTCSettings: "readonly",
ActorSheet: "readonly",
AVConfig: "readonly",
CombatTrackerConfig: "readonly",
FolderConfig: "readonly",
GridConfig: "readonly",
ImagePopout: "readonly",
ItemSheet: "readonly",
JournalSheet: "readonly",
MacroConfig: "readonly",
MeasuredTemplateConfig: "readonly",
PermissionControl: "readonly",
PlayerConfig: "readonly",
PlaylistConfig: "readonly",
PlaylistSoundConfig: "readonly",
RollTableConfig: "readonly",
SceneConfig: "readonly",
CameraPopoutAppWrapper: "readonly",
CameraViews: "readonly",
ChatBubbles: "readonly",
HeadsUpDisplay: "readonly",
SceneControls: "readonly",
Hotbar: "readonly",
BasePlaceableHUD: "readonly",
MainMenu: "readonly",
SceneNavigation: "readonly",
Pause: "readonly",
PlayerList: "readonly",
DrawingConfig: "readonly",
DrawingHUD: "readonly",
AmbientLightConfig: "readonly",
NoteConfig: "readonly",
AmbientSoundConfig: "readonly",
TileConfig: "readonly",
TileHUD: "readonly",
TokenConfig: "readonly",
TokenHUD: "readonly",
WallConfig: "readonly",
EULA: "readonly",
InstallPackage: "readonly",
SetupConfigurationForm: "readonly",
UpdateNotes: "readonly",
UserManagement: "readonly",
WorldConfig: "readonly",
Sidebar: "readonly",
SidebarTab: "readonly",
SidebarDirectory: "readonly",
Actors: "readonly",
Actor: "readonly",
ActorTokenHelpers: "readonly",
CombatEncounters: "readonly",
Combat: "readonly",
Combatant: "readonly",
Folders: "readonly",
Folder: "readonly",
Items: "readonly",
Item: "readonly",
ActiveEffect: "readonly",
Journal: "readonly",
JournalEntry: "readonly",
Macros: "readonly",
Macro: "readonly",
Messages: "readonly",
ChatMessage: "readonly",
Playlists: "readonly",
Playlist: "readonly",
Scenes: "readonly",
Scene: "readonly",
RollTables: "readonly",
RollTable: "readonly",
Users: "readonly",
User: "readonly",
UserTargets: "readonly",
CanvasAnimation: "readonly",
ControlIcon: "readonly",
TextureLoader: "readonly",
MouseInteractionManager: "readonly",
Ray: "readonly",
NormalizedRectangle: "readonly",
ResizeHandle: "readonly",
SightLayerSource: "readonly",
BackgroundLayer: "readonly",
DrawingsLayer: "readonly",
EffectsLayer: "readonly",
LightingLayer: "readonly",
NotesLayer: "readonly",
SightLayer: "readonly",
SoundsLayer: "readonly",
TemplateLayer: "readonly",
TilesLayer: "readonly",
TokenLayer: "readonly",
WallsLayer: "readonly",
Drawing: "readonly",
AmbientLight: "readonly",
Note: "readonly",
AmbientSound: "readonly",
MeasuredTemplate: "readonly",
MeasuredTemplateDocument: "readonly",
Tile: "readonly",
Token: "readonly",
Wall: "readonly",
SettingsConfig: "readonly",
ControlsReference: "readonly",
InvitationLinks: "readonly",
ModuleManagement: "readonly",
PermissionConfig: "readonly",
ActorDirectory: "readonly",
ChatLog: "readonly",
CombatTracker: "readonly",
CompendiumDirectory: "readonly",
CompendiumCollection: "readonly",
ItemDirectory: "readonly",
JournalDirectory: "readonly",
MacroDirectory: "readonly",
PlaylistDirectory: "readonly",
SceneDirectory: "readonly",
Settings: "readonly",
FrameViewer: "readonly",
RollTableDirectory: "readonly",
Cursor: "readonly",
DoorControl: "readonly",
ControlsLayer: "readonly",
Ruler: "readonly",
SpecialEffect: "readonly",
AutumnLeavesWeatherEffect: "readonly",
RainWeatherEffect: "readonly",
SnowWeatherEffect: "readonly",
BaseGrid: "readonly",
HexagonalGrid: "readonly",
GridHighlight: "readonly",
GridLayer: "readonly",
SquareGrid: "readonly",
EasyRTCClient: "readonly",
parent: "readonly",
opener: "readonly",
top: "readonly",
length: "readonly",
frames: "readonly",
closed: "readonly",
location: "readonly",
self: "readonly",
window: "readonly",
document: "readonly",
name: "readonly",
customElements: "readonly",
history: "readonly",
locationbar: "readonly",
menubar: "readonly",
personalbar: "readonly",
scrollbars: "readonly",
statusbar: "readonly",
toolbar: "readonly",
status: "readonly",
frameElement: "readonly",
navigator: "readonly",
origin: "readonly",
external: "readonly",
screen: "readonly",
innerWidth: "readonly",
innerHeight: "readonly",
scrollX: "readonly",
pageXOffset: "readonly",
scrollY: "readonly",
pageYOffset: "readonly",
visualViewport: "readonly",
screenX: "readonly",
screenY: "readonly",
outerWidth: "readonly",
outerHeight: "readonly",
devicePixelRatio: "readonly",
clientInformation: "readonly",
screenLeft: "readonly",
screenTop: "readonly",
defaultStatus: "readonly",
defaultstatus: "readonly",
styleMedia: "readonly",
onsearch: "readonly",
isSecureContext: "readonly",
onabort: "readonly",
onblur: "readonly",
oncancel: "readonly",
oncanplay: "readonly",
oncanplaythrough: "readonly",
onchange: "readonly",
onclick: "readonly",
onclose: "readonly",
oncontextmenu: "readonly",
oncuechange: "readonly",
ondblclick: "readonly",
ondrag: "readonly",
ondragend: "readonly",
ondragenter: "readonly",
ondragleave: "readonly",
ondragover: "readonly",
ondragstart: "readonly",
ondrop: "readonly",
ondurationchange: "readonly",
onemptied: "readonly",
onended: "readonly",
onerror: "readonly",
onfocus: "readonly",
onformdata: "readonly",
oninput: "readonly",
oninvalid: "readonly",
onkeydown: "readonly",
onkeypress: "readonly",
onkeyup: "readonly",
onload: "readonly",
onloadeddata: "readonly",
onloadedmetadata: "readonly",
onloadstart: "readonly",
onmousedown: "readonly",
onmouseenter: "readonly",
onmouseleave: "readonly",
onmousemove: "readonly",
onmouseout: "readonly",
onmouseover: "readonly",
onmouseup: "readonly",
onmousewheel: "readonly",
onpause: "readonly",
onplay: "readonly",
onplaying: "readonly",
onprogress: "readonly",
onratechange: "readonly",
onreset: "readonly",
onresize: "readonly",
onscroll: "readonly",
onseeked: "readonly",
onseeking: "readonly",
onselect: "readonly",
onstalled: "readonly",
onsubmit: "readonly",
onsuspend: "readonly",
ontimeupdate: "readonly",
ontoggle: "readonly",
onvolumechange: "readonly",
onwaiting: "readonly",
onwebkitanimationend: "readonly",
onwebkitanimationiteration: "readonly",
onwebkitanimationstart: "readonly",
onwebkittransitionend: "readonly",
onwheel: "readonly",
onauxclick: "readonly",
ongotpointercapture: "readonly",
onlostpointercapture: "readonly",
onpointerdown: "readonly",
onpointermove: "readonly",
onpointerup: "readonly",
onpointercancel: "readonly",
onpointerover: "readonly",
onpointerout: "readonly",
onpointerenter: "readonly",
onpointerleave: "readonly",
onselectstart: "readonly",
onselectionchange: "readonly",
onanimationend: "readonly",
onanimationiteration: "readonly",
onanimationstart: "readonly",
ontransitionend: "readonly",
onafterprint: "readonly",
onbeforeprint: "readonly",
onbeforeunload: "readonly",
onhashchange: "readonly",
onlanguagechange: "readonly",
onmessage: "readonly",
onmessageerror: "readonly",
onoffline: "readonly",
ononline: "readonly",
onpagehide: "readonly",
onpageshow: "readonly",
onpopstate: "readonly",
onrejectionhandled: "readonly",
onstorage: "readonly",
onunhandledrejection: "readonly",
onunload: "readonly",
performance: "readonly",
stop: "readonly",
open: "readonly",
alert: "readonly",
confirm: "readonly",
prompt: "readonly",
print: "readonly",
queueMicrotask: "readonly",
requestAnimationFrame: "readonly",
cancelAnimationFrame: "readonly",
captureEvents: "readonly",
releaseEvents: "readonly",
requestIdleCallback: "readonly",
cancelIdleCallback: "readonly",
getComputedStyle: "readonly",
matchMedia: "readonly",
moveTo: "readonly",
moveBy: "readonly",
resizeTo: "readonly",
resizeBy: "readonly",
scroll: "readonly",
scrollTo: "readonly",
scrollBy: "readonly",
getSelection: "readonly",
find: "readonly",
webkitRequestAnimationFrame: "readonly",
webkitCancelAnimationFrame: "readonly",
fetch: "readonly",
btoa: "readonly",
atob: "readonly",
setTimeout: "readonly",
clearTimeout: "readonly",
setInterval: "readonly",
clearInterval: "readonly",
createImageBitmap: "readonly",
close: "readonly",
focus: "readonly",
blur: "readonly",
postMessage: "readonly",
onappinstalled: "readonly",
onbeforeinstallprompt: "readonly",
crypto: "readonly",
indexedDB: "readonly",
webkitStorageInfo: "readonly",
sessionStorage: "readonly",
localStorage: "readonly",
chrome: "readonly",
applicationCache: "readonly",
onpointerrawupdate: "readonly",
trustedTypes: "readonly",
speechSynthesis: "readonly",
webkitRequestFileSystem: "readonly",
webkitResolveLocalFileSystemURL: "readonly",
openDatabase: "readonly",
caches: "readonly",
ondevicemotion: "readonly",
ondeviceorientation: "readonly",
ondeviceorientationabsolute: "readonly",
Handlebars: "readonly",
HandlebarsIntl: "readonly",
HowlerGlobal: "readonly",
Howler: "readonly",
Howl: "readonly",
Sound: "readonly",
WebFont: "readonly",
PIXI: "readonly",
io: "readonly",
tinymce: "readonly",
tinyMCE: "readonly",
easyrtc_lang: "readonly",
adapter: "readonly",
easyrtc: "readonly",
duplicate: "readonly",
deepClone: "readonly",
getType: "readonly",
invertObject: "readonly",
filterObject: "readonly",
flattenObject: "readonly",
expandObject: "readonly",
mergeObject: "readonly",
diffObject: "readonly",
hasProperty: "readonly",
getProperty: "readonly",
setProperty: "readonly",
encodeURL: "readonly",
rgbToHsv: "readonly",
hsvToRgb: "readonly",
rgbToHex: "readonly",
hexToRGB: "readonly",
hexToRGBAString: "readonly",
colorStringToHex: "readonly",
isNewerVersion: "readonly",
randomID: "readonly",
loadFont: "readonly",
saveDataToFile: "readonly",
readTextFromFile: "readonly",
fromUuid: "readonly",
fromUuidSync: "readonly",
_handleMouseWheelInputChange: "readonly",
getTemplate: "readonly",
loadTemplates: "readonly",
renderTemplate: "readonly",
srcExists: "readonly",
getTexture: "readonly",
loadTexture: "readonly",
CONST: "readonly",
toRadians: "readonly",
normalizeRadians: "readonly",
validateForm: "readonly",
FormDataExtended: "readonly",
timeSince: "readonly",
_templateCache: "readonly",
CONFIG: "readonly",
socket: "readonly",
ui: "readonly",
canvas: "readonly",
keyboard: "readonly",
JSHINT: "readonly",
game: "readonly",
vtt: "readonly",
DOCUMENT_PERMISSION_LEVELS: "readonly",
DEFAULT_TOKEN: "readonly",
DiceTerm: "readonly",
GRID_TYPES: "readonly",
dragRuler: "readonly",
foundry: "readonly",
TokenDocument: "readonly",
DocumentSheet: "readonly",
StringTerm: "readonly",
ParentheticalTerm: "readonly",
MathTerm: "readonly",
OperatorTerm: "readonly",
NumericTerm: "readonly",
RollTerm: "readonly",
getDocumentClass: "readonly",
KeybindingsConfig: "readonly",
quench: "readonly",
JQuery: "readonly",
VisionMode: "readonly",
LightSource: "readonly",
VisionSource: "readonly",
Color: "readonly",
JournalEntryPage: "readonly",
pf1: "readonly",
DetectionMode: "readonly",
DetectionModeInvisibility: "readonly",
DetectionModeTremor: "readonly",
GlowOverlayFilter: "readonly",
OutlineOverlayFilter: "readonly",
SearchFilter: "readonly",
TooltipManager: "readonly",
showdown: "readonly",
},
};

View File

@@ -0,0 +1,17 @@
*.js text eol=lf
*.ts text eol=lf
*.mjs text eol=lf
*.json text eol=lf
*.md text eol=lf
*.less text eol=lf
*.hbs text eol=lf
*.html text eol=lf
*.svg text eol=lf
# Prevent reformatting
*.woff binary
*.woff2 binary
*.png binary
*.jpg binary
*.webp binary

View File

@@ -0,0 +1,27 @@
# IDE
.idea/
.vs/
.vscode/
*.code-workspace
/.vim
# Node Modules
node_modules/
# Distribution directory
dist/
# Built cache files for build process
public/packs/
public/lang/
public/help/
# Misc
/.eslintcache
stats.html
foundryconfig.json
jsconfig.json
/docs/
# Local configuration
.env.local

View File

@@ -0,0 +1,136 @@
image: node
variables:
# Name of the package; the build directory will be renamed to this, so the name should be free
# in the repo's root dir!
PACKAGE_NAME: pf1
PACKAGE_TYPE: system
PACKAGE_REGISTRY_URL: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/$PACKAGE_NAME
# Directory into which package will be built, and from which the zip will be created
BUILD_DIRECTORY: dist
stages:
- check
- build
- prepare-release
- release
- publish
# Anchor variable to install npm cache
cache: &global_cache
paths:
- .npm
# Anchor script to install package dependencies with npm ci, using cache
.npm-ci: &npm-ci
- npm ci --cache .npm --prefer-offline
# Run ESLint in error-only mode
lint:
stage: check
before_script:
- *npm-ci
script:
- npm run lint:ci
cache:
<<: *global_cache
# Run prettier check
format:
stage: check
before_script:
- *npm-ci
script:
- npm run format:ci
cache:
<<: *global_cache
# Generate manifest links, build dist directory
build:
stage: build
before_script:
- *npm-ci
- apt-get --yes update
- apt-get --yes install jq
script:
- TEMP_MANIFEST=$(mktemp)
- |
jq '.version = $version | .url = $url | .manifest = $manifest | .download = $download' \
--arg version "${CI_COMMIT_TAG:1}" \
--arg url "$CI_PROJECT_URL" \
--arg manifest "$CI_PROJECT_URL/-/releases/permalink/latest/downloads/$PACKAGE_TYPE.json" \
--arg download "$CI_PROJECT_URL/-/releases/$CI_COMMIT_TAG/downloads/$PACKAGE_NAME.zip" \
public/$PACKAGE_TYPE.json > $TEMP_MANIFEST
- mv $TEMP_MANIFEST public/$PACKAGE_TYPE.json
- npm run build
- mv $BUILD_DIRECTORY $PACKAGE_NAME
cache:
<<: *global_cache
artifacts:
paths:
- $PACKAGE_NAME
expire_in: 1 week
# Run for version tags to prepare release, and for MRs to check successful build
rules:
- if: '$CI_COMMIT_TAG =~ /^v[0-9]+(\.[0-9]+)+$/'
# Build docs from master branch
pages:
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "master"
cache:
<<: *global_cache
before_script:
- *npm-ci
- npm run link jsconfig
script:
- mv public vite-public
- npm run docs
- mv docs public
artifacts:
paths:
- public
# Publish artifacts to package registry and generate release notes from changelog
# Link for regex: https://regex101.com/r/OyDskw/1, has to be verified manually in ripgrep
publish_artifacts:
stage: prepare-release
image: alpine:latest
needs:
- build
before_script:
- apk update
- apk add zip curl ripgrep
script:
- cd $PACKAGE_NAME
- zip -r ../$PACKAGE_NAME.zip .
- cd ..
- |
echo "Publishing $PACKAGE_NAME $CI_COMMIT_TAG to $PACKAGE_REGISTRY_URL"
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $PACKAGE_NAME.zip "$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_NAME.zip"
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $PACKAGE_NAME/$PACKAGE_TYPE.json "$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.json"
- echo "**Manifest URL:** $CI_PROJECT_URL/-/releases/$CI_COMMIT_TAG/downloads/$PACKAGE_TYPE.json" > recent-changes.md
- echo "" >> recent-changes.md
- echo "$(rg -U --multiline-dotall '(?P<latest>^[#]{2}\sv?\d.*?)(?:\n^[#]{1,3}\sv?\d.*)' -r '$latest' CHANGELOG.md)" >> recent-changes.md
rules:
- if: '$CI_COMMIT_TAG =~ /^v[0-9]+(\.[0-9]+)+$/'
artifacts:
paths:
- recent-changes.md
expire_in: 1 week
# Create release on GitLab, including release notes and attached links to the zip file and this version's manifest
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- publish_artifacts
rules:
- if: '$CI_COMMIT_TAG =~ /^v[0-9]+(\.[0-9]+)+$/'
script:
- |
release-cli create --name "Release ${CI_COMMIT_TAG:1}" \
--description "$(cat recent-changes.md)" --tag-name $CI_COMMIT_TAG \
--assets-link "{\"name\":\"$PACKAGE_NAME.zip\",\"url\":\"$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_NAME.zip\",\"filepath\":\"/$PACKAGE_NAME.zip\",\"link_type\":\"package\"}" \
--assets-link "{\"name\":\"$PACKAGE_TYPE.json\",\"url\":\"$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.json\",\"filepath\":\"/$PACKAGE_TYPE.json\",\"link_type\":\"other\"}"

View File

@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged

View File

@@ -0,0 +1,21 @@
node_modules/
# Potential foundry files
foundry.js
common/
client/
# Random modules
module/utils/semver.mjs
# Uncheckable files
*.hbs
packs/
# Built files
dist/
docs/
*.css
public/lang/
public/packs/
stats.html

View File

@@ -0,0 +1,5 @@
{
"tabWidth": 2,
"printWidth": 120,
"trailingComma": "es5"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,121 @@
# Contributing
All manner of contributions to the project are welcome:
- Opening issues for bugs or feature requests
- Creating or maintaining translations
- Contributing code to fix bugs or add features
- Helping out in any way
We really appreciate it.
## Issues
Issues are a valuable part of this project.
**Before creating a new issue, search already existing ones for possible keywords to avoid creating duplicates.**
When creating a new issue, the following information is especially appreciated:
- Clear reproduction steps, i.e. the fewest amount of steps from “installing a new world” to “this is where it breaks”.
- If you cannot reproduce the problem reliably, provide an estimation of how often you encounter the issue, and under which conditions.
- Describe the expected behavior and contrast it with the one observed.
- Screenshots are useful if the problem in question is a visual one, e.g. if something is rendered incorrectly.
- Feature requests should not only contain a summary of the desired feature, but ideally examples for which this feature would be necessary or useful.
- If the change in question includes matters of design or layout, attaching mock-ups is a valuable tool to make sure all contributors can visualize it.
## Localization
Translations of `lang` files are managed using [Weblate](https://weblate.vtthub.de/projects/pf1/), a web-based translation platform.
Editing translations on Weblate is the preferred way to contribute translations.
The contents of the help browser are written in Markdown and managed separately.
To contribute translations for those files, create and/or edit files in the [`help`](help) directory, following the directory structure of the [English files](help/en).
To merge changes to markdown files into `lang` files and check them within Foundry, run `npm run lang`.
## Merge Requests
Merge requests are the most direct way to get ideas or changes implemented into the system and provide a streamlined way to update and share system translations.
### Setup
This project uses [npm](https://www.npmjs.com/) as its package manager, [less](http://lesscss.org/) to create CSS files, [Vite](https://vitejs.dev/) to bundle JS and build all other files, and [ESLint](https://eslint.org/) as well as [Prettier](https://prettier.io/) to lint and format code.
npm installation instructions for specific operating systems are given at the above URL.
To create a development setup:
- Fork the project to create a repository to push changes to.
- Optionally, you can configure your GitLab repository to mirror changes from this project.
- This can be set up in the repository's settings, under "Repository" > "Mirroring repositories" and adding "Pull" mirroring.
- Clone the forked repository into a local directory using `git clone` or another git client of your choice.
- Install JavaScript dependencies with `npm ci`.
- In an optional, but recommended step, create a `foundryconfig.json` and insert a configuration specific to your setup:
```json5
{
dataPath: "<path to your home directory>/.local/share/FoundryVTT>",
appPath: "<path to your Foundry installation>",
routePrefix: "<your routePrefix for Foundry, or leave this out if you do not use one>",
openBrowser: true, // Open a web browser when running `npm run build:serve`; defaults to false
}
```
- Run `npm run link jsconfig` to create a `jsconfig.json` file.
To build the system, you now have multiple options:
- Recommended:
- Run `npm run build:serve`.
This builds the system _and_ starts a Vite development server, which serves as a proxy for a Foundry server running on port `30000`.
File changes will either trigger a reload of the browser page, or be hot reloaded (in case of less or handlebars files).
- Alternative methods:
- Run `npm run build`.
This builds the complete, production-ready system into a `dist` directory.
Copying this directory into your game's `Data/systems/` folder with its name changed to `pf1`, or symlinking the `dist` directory as `pf1` will install the system.
- Run `npm run build:watch`.
This builds the system and afterwards watches for changes, rebuilding the system when a change is detected.
> _Note_:
> If you want the build process to skip building packs, you can run `npx vite build`.
After the system has been built at least once, you can also run `npm run serve` to directly start the development server.
This will not trigger a build and therefore not mirror any changes to compendium, language, or help files, handlebars template files, or any other static content stored in `public`, but does allow rapidly starting an environment to test JavaScript changes.
If you entered a `dataPath` in your `foundryconfig.json` and want to create a symlink from Foundry's `Data/systems/pf1` directory to the generated `dist` directory, run `npm run link dist`.
Installing the system's dependencies will also install a git commit hook, which will automatically lint and format files before they are committed.
If committing changes is not possible due to ESLint or Prettier encountering non-fixable problems, change the code in question to follow the rules setup for that file type.
### Compendium Changes
The system provides extra tooling to deal with compendiums, including their compilation to and from JSON.
Source files for all pack entries are stored in `packs`, with each compendium in its own directory.
When `npm run packs:compile` is run which happens automatically when invoking `npm run build` the compendiums are compiled into a `.db` file, which is then stored in `public/packs`.
From there, the actual build process copies the `.db` files into the `dist` directory.
Compendium content can be edited from within Foundry, so that changes are stored in their respective `.db` files.
To then transfer these changes to the compendium's source files, run `npm run packs:extract`.
This will extract the contents of `dist/packs/*.db` into their respective directories.
If Foundry's `Data/systems/pf1` is symlinked to `dist`, you can change content in Foundry, close the server, and then run `npm run packs:extract` to immediately see the changes in the source files.
### Documentation
All changes have to be documented in the [changelog](CHANGELOG.md).
To add your changes to it, run `npm run addlog`.
[Changelogify](https://github.com/wanadev/changelogify) will then prompt you for a message that will appear in the changelog, the type of change, and an issue number that will be used to create a link in the log.
The issue number is optional if there is no issue your merge request will close, you can leave the number out.
This prompt will create a file in `changelogs/unreleased`, which you will have to commit alongside your changes.
For commit messages, describe what the commit does in a very short summary in the first line, e.g. "Add BAB to combat tab".
After the first line, reference issues or merge requests the commit relates to, using [keywords](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) recognized by GitLab whenever applicable (e.g. "Fixes #123").
### Opening merge requests
Give the merge request a concise title, referencing issues or explaining the merge request's content in the description.
The description can also contain references to open issues to automatically close upon a successful merge.
This project's CI/ CD will run after opening a merge request and create a result of either "passed" or "failed".
In the latter case, check the job for which error caused it to fail, and correct the issue if possible.
If you encounter any problems at any point during the setup, feel free to message one of the developers via Discord, or leave a message in the `#pf1e` channel of the [FoundryVTT Discord server](https://discord.gg/foundryvtt) or the `#pathfinder1e-dev` channel of the [League Discord server](https://discord.gg/rNzh6U2qMG).

View File

@@ -0,0 +1,208 @@
## Disclaimer
None of the people on this list necessarily endorse this project or those involved. See the respective licences for more info.
People and credits are listed in no particular order.
## Lorc's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Battle Gear](https://game-icons.net/1x1/lorc/battle-gear.html)
- [Bleed](https://game-icons.net/1x1/lorc/bleeding-wound.html)
- [Brain](https://game-icons.net/1x1/lorc/brain.html)
- [Cowering](https://game-icons.net/1x1/lorc/screaming.html)
- [Dazzled](https://game-icons.net/1x1/lorc/laser-sparks.html)
- [Divert](https://game-icons.net/1x1/lorc/divert.html)
- [Dying](https://game-icons.net/1x1/lorc/pummeled.html)
- [Exhausted](https://game-icons.net/1x1/lorc/oppression.html)
- [Flat-Footed](https://game-icons.net/1x1/lorc/footprint.html)
- [Gears](https://game-icons.net/1x1/lorc/gears.html)
- [Grappled](https://game-icons.net/1x1/lorc/grapple.html)
- [Hand](https://game-icons.net/1x1/lorc/hand.html)
- [Hazard Sign](https://game-icons.net/1x1/lorc/hazard-sign.html)
- [Heart Inside](https://game-icons.net/1x1/lorc/heart-inside.html)
- [Helpless](https://game-icons.net/1x1/lorc/imprisoned.html)
- [Incorporeal](https://game-icons.net/1x1/lorc/ghost-ally.html)
- [Magic Palm](https://game-icons.net/1x1/lorc/magic-palm.html)
- [Magic Swirl](https://game-icons.net/1x1/lorc/magic-swirl.html)
- [Nauseated](https://game-icons.net/1x1/lorc/vomiting.html)
- [Paralyzed](https://game-icons.net/1x1/lorc/deadly-strike.html)
- [Punch Blast](https://game-icons.net/1x1/lorc/punch-blast.html)
- [Quill and Ink](https://game-icons.net/1x1/lorc/quill-ink.html)
- [Shaken](https://game-icons.net/1x1/lorc/suspicious.html)
- [Staggered](https://game-icons.net/1x1/lorc/two-shadows.html)
## Cathelineau's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Frightened](https://game-icons.net/1x1/cathelineau/dread.html)
## Caro Asercion's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Squeezing](https://game-icons.net/1x1/caro-asercion/mole.html)
## Delapouite's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Coins](https://game-icons.net/1x1/delapouite/coins.html)
- [Confused](https://game-icons.net/1x1/delapouite/misdirection.html)
- [Expense](https://game-icons.net/1x1/delapouite/expense.html)
- [Info](https://game-icons.net/1x1/delapouite/info.html)
- [Pinned](https://game-icons.net/1x1/delapouite/pin.html)
- [Plug](https://game-icons.net/1x1/delapouite/plug.html)
- [Sickened](https://game-icons.net/1x1/delapouite/medical-thermometer.html)
- [Skills](https://game-icons.net/1x1/delapouite/skills.html)
- [Spellbook](https://game-icons.net/1x1/delapouite/spell-book.html)
- [Stable](https://game-icons.net/1x1/delapouite/heart-beats.html)
- [Upgrade](https://game-icons.net/1x1/delapouite/upgrade.html)
- [Weight](https://game-icons.net/1x1/delapouite/weight.html)
- [Wheelbarrow](https://game-icons.net/1x1/delapouite/wheelbarrow.html)
## sbed's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Battery Pack](https://game-icons.net/1x1/sbed/battery-pack.html)
## Skoll's icons ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/))
- [Dazed](https://game-icons.net/1x1/skoll/knockout.html)
## tw-dnd's icons ([GPL3](https://www.gnu.org/licenses/gpl-3.0.en.html))
- [Disabled](https://github.com/intrinsical/tw-dnd/blob/main/icons/condition/stunned.svg)
- [Petrified](https://github.com/intrinsical/tw-dnd/blob/main/icons/condition/petrified.svg)
- [Unconscious](https://github.com/intrinsical/tw-dnd/blob/main/icons/condition/unconscious.svg)
## Simone Ricciardi
- Fixed a compatibility issue with Babele
## holyplankton
- Added most class abilities to their compendium
- Linked class abilities to classes
## Alexdandre Nizoux
- Helped with the French translation
## Iron
- Added roll tables for Ultimate Equipment
## Marco
- Added the Italian translation
- Put effort into improving user accessability
## ManaHime
- Added basic functionality and compendium entries for Mythic Paths
## Dorgendubal/Sven Werlen
- Helped with the Bestiary compendiums
- Added quick attacks to tokens
- Added initial support for the metric system
## Primer
- Helped with the Bestiary compendiums
## jimjambojangles
- Helped with the Bestiary compendiums
## Adam
- Added a Wild Shape macro
## Pecomica
- Added missing items to the items compendium
## Marc Robinson
- Added Rapid Shot and Point-blank Shot to attack prompts
## rectulo
- Helped with the French translation
## Lo
- Added an initial generated items compendium
## Dan Gomme
- Made a big improvement to Measure Template calculation
## Og
- Added most armor, weapons and feats to their compendiums
## Grenadier
- Added the Health Configuration screen
- Added support for the Wounds and Vigor optional ruleset
## Xam
- Changed up some hard-coded strings
## John Shetler
- Fixed a mistake in the Fractional Base Bonuses optional ruleset
## JusticeNoon
- Was here
## Ethaks
- Added base dice selector to attack roll dialogs
- Did some bug fixing
- Added conditional attack modifiers
## Nico Weichbrodt
- Added to the German translation
- Made class skill and ability score bonuses a visible source on skills
- Added minor features
## Wharomaru Zhamal
- Created the Spanish translation
## bnp800
- Added Chinese translation
## Manuel Vögele
- Made some code contributions
## mkahvi
- Wound Thresholds optional rule
- Formula-based extra attacks
- Class casting autoconfig
- Buff durations and auto expiration
- Deferred rolled bonuses for skills
- Nonproficient ACP
- Bunch of other features, improvements and bug fixes
## Grarl
- Made some code contributions
## claudekennilol
- Made some code contributions
## Daniela Howe and Ivan Montiel
- Created the [RPG Awesome font and CSS toolkit](https://github.com/nagoshiashumari/Rpg-Awesome)
## McGreger
- Added missing spells to compendium
- Fixed various errors in compendium entries
- Added various missing class feats to compendium
- Harmonized pf1-system compendium with content of pf1-content module

View File

@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Foundry VTT 5th Edition
Copyright (C) 2019 Foundry Network
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Foundry VTT 5th Edition Copyright (C) 2019 Foundry Network
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@@ -0,0 +1,43 @@
OPEN GAME LICENSE Version 1.0a
The following text is the property of Wizards of the Coast, Inc. and is Copyright 2000 Wizards of the Coast, Inc ("Wizards"). All Rights Reserved.
1. Definitions:
(a)"Contributors" means the copyright and/or trademark owners who have contributed Open Game Content;
(b)"Derivative Material" means copyrighted material including derivative works and translations (including into other computer languages), potation, modification, correction, addition, extension, upgrade, improvement, compilation, abridgment or other form in which an existing work may be recast, transformed or adapted;
(c) "Distribute" means to reproduce, license, rent, lease, sell, broadcast, publicly display, transmit or otherwise distribute;
(d) "Open Game Content" means the game mechanic and includes the methods, procedures, processes and routines to the extent such content does not embody the Product Identity and is an enhancement over the prior art and any additional content clearly identified as Open Game Content by the Contributor, and means any work covered by this License, including translations and derivative works under copyright law, but specifically excludes Product Identity.
(e) "Product Identity" means product and product line names, logos and identifying marks including trade dress; artifacts; creatures characters; stories, storylines, plots, thematic elements, dialogue, incidents, language, artwork, symbols, designs, depictions, likenesses, formats, poses, concepts, themes and graphic, photographic and other visual or audio representations; names and descriptions of characters, spells, enchantments, personalities, teams, personas, likenesses and special abilities; places, locations, environments, creatures, equipment, magical or supernatural abilities or effects, logos, symbols, or graphic designs; and any other trademark or registered trademark clearly identified as Product identity by the owner of the Product Identity, and which specifically excludes the Open Game Content;
(f) "Trademark" means the logos, names, mark, sign, motto, designs that are used by a Contributor to identify itself or its products or the associated products contributed to the Open Game License by the Contributor
(g) "Use", "Used" or "Using" means to use, Distribute, copy, edit, format, modify, translate and otherwise create Derivative Material of Open Game Content.
(h) "You" or "Your" means the licensee in terms of this agreement.
2. The License: This License applies to any Open Game Content that contains a notice indicating that the Open Game Content may only be Used under and in terms of this License. You must affix such a notice to any Open Game Content that you Use. No terms may be added to or subtracted from this License except as described by the License itself. No other terms or conditions may be applied to any Open Game Content distributed using this License.
3. Offer and Acceptance: By Using the Open Game Content You indicate Your acceptance of the terms of this License.
4. Grant and Consideration: In consideration for agreeing to use this License, the Contributors grant You a perpetual, worldwide, royalty-free, non-exclusive license with the exact terms of this License to Use, the Open Game Content.
5. Representation of Authority to Contribute: If You are contributing original material as Open Game Content, You represent that Your Contributions are Your original creation and/or You have sufficient rights to grant the rights conveyed by this License.
6. Notice of License Copyright: You must update the COPYRIGHT NOTICE portion of this License to include the exact text of the COPYRIGHT NOTICE of any Open Game Content You are copying, modifying or distributing, and You must add the title, the copyright date, and the copyright holder's name to the COPYRIGHT NOTICE of any original Open Game Content you Distribute.
7. Use of Product Identity: You agree not to Use any Product Identity, including as an indication as to compatibility, except as expressly licensed in another, independent Agreement with the owner of each element of that Product Identity. You agree not to indicate compatibility or co-adaptability with any Trademark or Registered Trademark in conjunction with a work containing Open Game Content except as expressly licensed in another, independent Agreement with the owner of such Trademark or Registered Trademark. The use of any Product Identity in Open Game Content does not constitute a challenge to the ownership of that Product Identity. The owner of any Product Identity used in Open Game Content shall retain all rights, title and interest in and to that Product Identity.
8. Identification: If you distribute Open Game Content You must clearly indicate which portions of the work that you are distributing are Open Game Content.
9. Updating the License: Wizards or its designated Agents may publish updated versions of this License. You may use any authorized version of this License to copy, modify and distribute any Open Game Content originally distributed under any version of this License.
10. Copy of this License: You MUST include a copy of this License with every copy of the Open Game Content You Distribute.
11. Use of Contributor Credits: You may not market or advertise the Open Game Content using the name of any Contributor unless You have written permission from the Contributor to do so.
12. Inability to Comply: If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Open Game Content due to statute, judicial order, or governmental regulation then You may not Use any Open Game Material so affected.
13. Termination: This License will terminate automatically if You fail to comply with all terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses shall survive the termination of this License.
14. Reformation: If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
15. COPYRIGHT NOTICE
Open Game License v 1.0 Copyright 2000, Wizards of the Coast, Inc.
System Reference Document Copyright 2000-2003, Wizards of the Coast, Inc.; Authors Jonathan Tweet, Monte Cook, Skip Williams, Rich Baker, Andy Collins, David Noonan, Rich Redman, Bruce R. Cordell, John D. Rateliff, Thomas Reid, James Wyatt, based on original material by E. Gary Gygax and Dave Arneson.
Foundry Virtual Tabletop © 2019, Foundry Gaming LLC

View File

@@ -0,0 +1,59 @@
<div align="center">
<h1>Pathfinder 1e for Foundry VTT</h1>
<br>
<img alt="Gitlab pipeline status" src="https://img.shields.io/gitlab/pipeline-status/foundryvtt_pathfinder1e/foundryvtt-pathfinder1?branch=master&label=Checks&logo=gitlab">
<img alt="Supported Foundry Versions" src="https://img.shields.io/endpoint?url=https://foundryshields.com/version?url=https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/releases/permalink/latest/downloads/system.json">
<a href="https://forge-vtt.com/bazaar#package=pf1">
<img src="https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fpf1&colorB=4aa94a" alt="Forge Install %" />
</a>
<a href="https://www.foundryvtt-hub.com/package/pf1/">
<img src="https://img.shields.io/endpoint?logoColor=white&url=https%3A%2F%2Fwww.foundryvtt-hub.com%2Fwp-json%2Fhubapi%2Fv1%2Fpackage%2Fpf1%2Fshield%2Fendorsements" alt="Foundry Hub Endorsements" />
</a>
<a href="https://weblate.vtthub.de/engage/pf1/">
<img src="https://weblate.vtthub.de/widgets/pf1/-/svg-badge.svg" alt="Translation status" />
</a>
</div>
An implementation of the first edition of Pathfinder for Foundry Virtual
Tabletop (http://foundryvtt.com).
## Installation
Install the following game system in FoundryVTT's game system tab:
[https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/releases/permalink/latest/downloads/system.json](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/releases/permalink/latest/downloads/system.json)
If you wish to manually install the system, you must extract a built version into the `Data/systems/pf1` folder.
You may do this by downloading a `pf1.zip` archive from the [Releases Page](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/releases).
Be careful not to download a source code archive, as those will not work within Foundry.
## Building
1. Clone or download this repository.
2. Change directory to the repository root and run `npm ci`.
3. Run `npm run build` to create a `dist` directory containing all files necessary to use the system in Foundry.
Alternatively, you can run `npm run build:serve` to build the system and start a Vite development server.
For additional information regarding the build process, see the [Setup](CONTRIBUTING.md#setup) section of the [contributing guide](CONTRIBUTING.md).
## API
This system provides module and macro developers with an API, including the ability to listen to system-specific hook events and extending the system's functionality.
Its automatically generated documentation can be found in the [API documentation](https://foundryvtt_pathfinder1e.gitlab.io/foundryvtt-pathfinder1/index.html).
## User Documentation
While running the system in Foundry, you can find a Help browser in the Settings tab.
An English mirror of that information can also be found in [this repository's wiki](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/wikis/Help/Home) in the `System reference sheet / Help` section.
The rest of [the wiki](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/wikis/home) also includes [FAQs](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/wikis/FAQs) and some other helpful content.
## Legal
The software component of this system is distributed under the GNUv3 license while the game content is distributed under the Open Gaming License v1.0a.
This system uses trademarks and/or copyrights owned by Paizo Inc., which are used under Paizo's Community Use Policy.
We are expressly prohibited from charging you to use or access this content.
This [website, character sheet, or whatever it is] is not published, endorsed, or specifically approved by Paizo Inc.
For more information about Paizo's Community Use Policy, please visit [paizo.com/communityuse](http://paizo.com/communityuse).
For more information about Paizo Inc. and Paizo products, please visit [paizo.com](https://paizo.com).

View File

@@ -0,0 +1,9 @@
{
"types": ["Bug Fixes", "Changelog", "Compendium", "Localization", "API"],
"gitIssueTemplate": "[NUMBER](https://gitlab.com/foundryvtt_pathfinder1e/foundryvtt-pathfinder1/-/issues/NUMBER)",
"autoCommitAdd": false,
"changelogMessageAdd": "Add changelog entry for #NUMBER",
"autoCommitRelease": false,
"changelogMessageRelease": "changelog",
"defaultCommand": "add"
}

View File

@@ -0,0 +1,16 @@
const fs = require("fs");
try {
const changelog = fs.readFileSync("./CHANGELOG.md", "utf-8");
const recentChanges = changelog.toString().match(/^# Changelog\n*(## (.|\n)*?)^\n^## \d*/m)?.[1] ?? "";
const manifestFile = fs.readFileSync("system.json", "utf-8");
const manifest = JSON.parse(manifestFile.toString());
let url = manifest.manifest;
url = url.replaceAll("latest", manifest.version);
const releaseNotes = `**Manifest URL: ${url}**\n\n${recentChanges}`;
fs.writeFileSync("recent-changes.md", releaseNotes);
} catch (e) {
console.error(e);
}

View File

@@ -0,0 +1,45 @@
import * as _pf1 from "./pf1.mjs";
export {};
declare global {
export import pf1 = _pf1;
// Document classes
export import ActorPF = pf1.documents.actor.ActorPF;
export import ItemPF = pf1.documents.item.ItemPF;
export import ChatMessagePF = pf1.documents.ChatMessagePF;
export import TokenDocumentPF = pf1.documents.TokenDocumentPF;
export import ActiveEffectPF = pf1.documents.ActiveEffectPF;
export import CombatPF = pf1.documents.CombatPF;
export import CombatantPF = pf1.documents.CombatantPF;
// Component classes
export import ItemChange = pf1.components.ItemChange;
export import ItemAction = pf1.components.ItemAction;
// Canvas classes
export import TokenPF = pf1.canvas.TokenPF;
export import MeasuredTemplatePF = pf1.canvas.MeasuredTemplatePF;
// Roll-related classes
export import RollPF = pf1.dice.RollPF;
// UI classes
export import TooltipPF = pf1.applications.TooltipPF;
interface DocumentClassConfig {
// Documents
// Actor and Item types are not technically correct, as they are not the base classes.
// They are however the base class for system-specific classes, and provide easier access to system-specific autocomplete.
Actor: typeof pf1.documents.actor.ActorPF;
Item: typeof pf1.documents.item.ItemPF;
ChatMessage: typeof pf1.documents.ChatMessagePF;
TokenDocument: typeof pf1.documents.TokenDocumentPF;
}
interface LenientGlobalVariableTypes {
game: unknown; // the type doesn't matter
quench: unknown;
}
}

View File

@@ -0,0 +1,10 @@
# Aktoren
## Normale Aktortypen
- [Spielercharaktere (SCs)](Help/Actors/Character)
- [Nichtspielercharaktere (NCSs)](Help/Actors/NPC)
## Sonstige Aktortypen
- [Basic](Help/Actors/Basic)

View File

@@ -0,0 +1,5 @@
# Basic-Aktor
Basic-Aktoren besitzen keine systembedingten Daten, weshalb sie platzsparend
sind. Somit eignen sie sich gut für Module, die Aktoren oder Tokens benötigen,
aber nicht die gesamte Menge an Daten, die Charakere oder NSCs mitbringen.

View File

@@ -0,0 +1,3 @@
# Spielercharaktere (SCs)
Dieser Teil der Hilfedatei befindet sich momentan im Aufbau.

View File

@@ -0,0 +1,6 @@
# Nichtspielercharaktere (NSCs)
Der einzige besondere Unterschied zwischen [Spielercharakteren (SCs)](Help/Actors/Character)
und Nichtspielercharakteren ist, dass NSCs Erfahrungspunkte _geben_, während
SCs Erfahrungspunkte _verdienen_. Dies ist in der rechten oberen Ecke der
Charakterbögen vermerkt.

View File

@@ -0,0 +1,88 @@
# Formeln
Dieser Teil der Hilfedatei befindet sich momentan im Aufbau.
Formeln sind wichtige Aspekte im Pathfinder-1e-System. Sie können so nur eine einzelne Nummer sein oder ein komplexer Ausdruck. Sie spielen eine große Rolle in Veränderungen von Gegenständen.
## Variablen
Viele dieser Informationen kannst du auch in Tooltips auf dem Charakterbogen finden.
### `@abilities.X.total`
Die Gesamtwert der Eigenschaft. Ersetze X durch eins der folgenden: 'str' (Stärke), 'dex' (Geschicklichkeit), 'con' (Konstitution), 'int' (Intelligenz), 'wis' (Weisheit), 'cha' (Charisma).
### `@abilities.X.mod`
Der Modifikator des Eigenschaftswerts. Ersetze X durch eins der folgenden: 'str' (Stärke), 'dex' (Geschicklichkeit), 'con' (Konstitution), 'int' (Intelligenz), 'wis' (Weisheit), 'cha' (Charisma).
### `@attributes.hd.total`
Die gesamten Trefferwürfel des Aktors. Dies ist eine Kombination aus Klassenstufen und Volkstrefferwürfeln, ohne Legendenstufen.
### `@attributes.savingThrows.X.total`
Der Gesamtbonus eines Rettungswurfs für diesen Aktor. X kann 'fort' (Zähigkeit), 'ref' (Reflex) or 'will' (Wille) sein.
### `@attributes.savingThrows.X.base`
Der Gesamtgrundbonus eines Rettungswurfs für diesen Aktor entsprechend der Klassenstufe. X kann 'fort' (Zähigkeit), 'ref' (Reflex) or 'will' (Wille) sein.
### `@attributes.encumbrance.level`
Der momentane Belastungszustand des Aktors.
- `0`: Leichte Last
- `1`: Mittlere Last
- `2`: Schwere Last
### `@armor.type`
Die Art der Rüstung, die der Aktor trägt.
- `0`: Keine Rüstung
- `1`: Leichte Rüstung
- `2`: Mittlere Rüstung
- `3`: Schwere Rüstung
### `@shield.type`
Die Art des ausgerüsteten Schildes.
- `0`: Kein Schild
- `1`: Sonstiger Schild (wie Tartsche)
- `2`: Leichter Schild
- `3`: Schwerer Schild
- `4`: Turmschild
### `@combat.round`
Die derzeitige Kampfrunde, oder `0` falls nicht im Kampf.
### `@critMult`
Der Multiplikator eines kritischen Treffers, oder 1 wenn der Angriff keine kritische Bedrohung ist.
Nur in Schadenswürfen und Angriffs- und Schadensnotizen angemessen.
## Funktionen
Foundry (und dadurch auch dieses System) erlaubt die [`Math`-Formeln](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) von JavaScript in Formeln.
Informationen über das Schreiben von Formeln mithilfe von Ausdrücken, die die Aktor- und Gegenstandsdaten benutzen befinden sich in der ["Knowledge Base" von Foundry](https://foundryvtt.com/article/dice-advanced/).
Abgesehen von diesen Funktionen bietet das Pathfinder-1e-System noch einige spezifischere Helferfunktionen an:
### `sizeRoll`
Verändert die Schadensformel entsprechend für eine bestimmte Größenkategorie.
**Beispiel:** `sizeRoll(1, 8, @size)` Wirft 1W8 für mittelgroße Aktoren und verändert die Schadensformel entsprechend der Größe des ausführenden Aktors.
**Beispiel:** `sizeRoll(1, 4, 6, 2)` Ändert den Schadenswurf von 1W4 eines kleines Aktors (Größe '2') zu einem Schadenswurf eines großen Aktors (Größe '6'); Ergebnis: 3W6
### `sizeReach`
Generiert eine Zahl für die Reichweite einer Kreature einer bestimmten Größe und Gestalt (lang oder hoch).
**Beispiel:** `sizeReach(@size + 1, false, @traits.stature)` Gibt die normale Nahkampfreichweite zurück als wäre der Aktor eine Größenkategorie größer.
**Beispiel:** `sizeReach(6, true, "long")` Gibt die Reichweite zurück, die eine riesige, lange Kreatur mit einer Reichweitenwaffe hat.

View File

@@ -0,0 +1,22 @@
# Help
- [Aktoren](Help/Actors)
- Aktortypen
- [Spielercharaktere (SCs)](Help/Actors/Character)
- [Nichtspielercharaktere (NCSs)](Help/Actors/NPC)
- [Basic](Help/Actors/Basic)
- [Gegenstände](Help/Items)
- Gegenstandstypen
- [Verbrauchsgegenstände](Help/Items/Consumables)
- [Behälter](Help/Items/Containers)
- [Ausrüstung](Help/Items/Equipment)
- [Beute](/Help/Items/Loot)
- [Waffen](Help/Items/Weapons)
- [Angriffe](Help/Items/Attacks)
- Konzepte
- [Beschreibungen](Help/Items/Description)
- [Änderungen](Help/Items/Changes)
- [Flags](Help/Items/Flags)
- [Skriptaufrufe](Help/Items/Script-Calls)
- Speziell
- [Formeln](Help/Formulas)

View File

@@ -0,0 +1,13 @@
# Gegenstände
## Körperliche Gegenstände
- [Verbrauchsgegenstände](Help/Items/Consumables)
- [Behälter](Help/Items/Containers)
- [Ausrüstung](Help/Items/Equipment)
- [Beute](/Help/Items/Loot)
- [Waffen](Help/Items/Weapons)
## Andere
- [Angriffe](Help/Items/Attacks)

View File

@@ -0,0 +1,9 @@
# Angriffe
Angriffe sind eine Art von Gegenstände, die benutzt werden können, um
verschiedene Arten von Angriffswürfen ohne eine körperliche Waffe auszuführen.
Beispiele beinhalten natürliche Angriffe und Angriffe, die von einer Waffe
erstellt wurden.
Abgesehen davon und dass sie keine körperlichen Attribute haben, funktionieren
sie sehr ähnlich zu [Waffen](Help/Items/Weapons).

View File

@@ -0,0 +1,34 @@
# Änderungen
![Beispiel](/Help/img/item-changes.webp)
- **Flags**
- **Zwergenähnliche Traglast**: Solange ein Gegenstand mit dieser Änderung aktiv ist, wird sein Träger nicht durch mittlere oder schwere Last verlangsamt.
- **Bewegungsrate in Mittlerer Rüstung**: Solange ein Gegenstand mit dieser Änderung aktiv ist, wird sein Träger nicht durch mittlere Rüstung verlangsamt.
- **Bewegungsrate in Schwerer Rüstung**: Solange ein Gegenstand mit dieser Änderung aktiv ist, wird sein Träger nicht durch schwerer Rüstung verlangsamt.
- **Geschicklichkeit von RK abziehen**: Solange ein Gegenstand mit dieser Änderung aktiv ist, verliert sein Träger seinen GE-Bonus auf seine Rüstungsklasse.
- **Änderungen**: Dies ist die Liste der Änderungen, die einen Aktor mit diesem Gegenstand betreffen. Von links nach rechts:
- **Formel**: Die Formel nach der der Wert der Änderungen errechnet wird. Die Art der Änderung wird durch den Operator (siehe unten) festgelegt.
- **Operator**: Die Operatoren sind '+' (relativ), '=' (absolut) oder 'S' (Skript). Relative Werte werden auf das Attribut addiert, während absolute Werte das Attribut setzen. Siehe unten für den Skript-Operator.
- **Ziel**: Das zu verändernde Attribut.
- **Modifikator**: Der Modifikator dieser Änderung.
- **Priorität**: Die Priorität dieser Änderung. Änderungen mit einer niedrigen Priorität werden später verarbeitet. Niedrigere Prioritäten sind in seltenen Fällen notwendig.
- **Kontextnotizen**: Dies ist eine Liste der Kontextnotizen, die in den entsprechenden Situationen gezeigt werden. Von links nach rechts:
- **Beschreibung**: Die Beschreibung, die in der entsprechenden Situation gezeigt werden soll. Jede neue Zeile erstellt eine neue Beschreibung für das selbe Zielt. Du kannst hier Foundry-artige inline-Würfe verwenden.
- **Ziel**: Das zu verändernde Attribut.
## Skript-Operator
Die 'Formel' von Änderungen mit Skript-Operator sind in Wirklichkeit kleine JavaScript-Skripe, die laufen, wenn die Änderungen verarbeitet werden. Um sie zu verstehen ist JavaScript-Wissen erforderlich.
> ⚠ Skript-Operatoren sind per Default deaktiviert. ⚠
>
> **Aktiviere sie nur, wenn du deinen Spielern vertraust, denn mit aktivierten Skript-Operatoren können sie JavaScript-Code mit erhöhter Berechtigung ausführen!**
>
> Wenn du jeden einzelnen deiner Spieler vertraust, und nur dann, kannst du Skript-Operator in den Systemeinstellungen aktivieren, unter dem Punkt "Script-Änderungen zulassen".
In diesen Skripten können folgende Variablen verwendet werden:
- `d` Die Daten des Wurfs zur Zeit der Verarbeitung der Änderung. Alle Variablen, die in normalen Formeln mit dem `@`-Symbol verwendet werden können, können auch hier verwendet werden.
- `result` Dies enthält zwei weitere Variablen, `value` und `operator`. Setze `value` auf den numerischen Wert, den du für diese Änderung möchtest und `operator` auf entweder "add" oder "set".
Der Default ist `0` für `value` und "add" für `operator`.

View File

@@ -0,0 +1,3 @@
# Verbrauchsgegenstände
Verbrauchsgegenstände repräsentieren Gegenstände mit einer begrenzten Benutzung, wie zum Beispiel Tränke oder Zauberstäbe.

View File

@@ -0,0 +1,3 @@
# Behälter
Behälter sind Gegenstände die andere Gegenstände enthalten können.

View File

@@ -0,0 +1,10 @@
# Beschreibungen
![Beispiel](/Help/img/item-description.webp)
1. **Name**: Der Name des Gegenstands, sofern identifiziert.
1. **Unidentifizierter Name**: Der Name des Gegenstands, sofern nicht identifiziert. Wenn leer wird der identifizierte Name angezeigt.
1. **Beschreibung**: Die Beschreibung die angezeigt wird, sofern identifiziert.
1. **Unidentifizierte Beschreibung**: Die Beschreibung die angezeigt wird, sofern nicht identifiziert.
1. **Preis**: Der Preis des Gegenstands in Gold, sofern identifiziert.
1. **Unidentifizierter Preis**: Der Preis des Gegenstands in Gold, sofern nicht identifiziert.

View File

@@ -0,0 +1,22 @@
# Ausrüstung
Ausrüstung repräsentiert alle ausrüstbaren Gegenstände, die keine Waffen sind, wie zum Beispiel Rüstungen, Schilde, Ringe, wundersame Gegenstände.
![Ausrüstungsdetails](/Help/img/equipment-details.webp)
**Umgang mit Waffen und Rüstungen, Sprachen**: Kenntnisse, die von dem Gegenstand gewährt werden. Sie erscheinen in den Eigenschaften des Aktors und beeinflussen zum BeispielRüstungsmali, die vom ungeübten Umhang mit einer Rüstung stammen.
**Kategorie**: Die Kategorie der Rüstung (ist es eine Rüstung, ein Schild oder etwas anderes)
**Typ**: Art der Rüstung, des Schilds, oder Gegenstands
**Slot**: Der Ausrüstungsplatz des Gegenstands (nur für Gegenstände, die keine Rüstungen oder Schilde sind)
**Größe**: Die Größe des Gegenstands, ähnlich zur Charaktergröße
**Ausrüstungsstatus**: Status für diesen Gegenstand:
- **Ausgerüstet**: Ob der Gegenstand momentan ausgerüstet ist und seine Änderungen an den Aktor überträgt
- **Identifiziert (nur SL)**: Ob der Gegenstand momentan identifiziert ist und die Spieler dessen Informationen sehen
- **Meisterarbeit**: Ob der Gegenstand entsprechend den Grundregeln die Qualität Meisterarbeit hat
- **Beschädigt**: Ob der Gegenstand entsprechend den Grundregeln beschädigt ist

View File

@@ -0,0 +1,8 @@
# Flags
Flags können von Modulen und Makros verwendet werden.
Boolsche Flags tun selbst nichts, aber Dictionary-Flags können zusätzlich zu Modulen und Makros auch in Würfen verwendet werden.
## Dictionary-Flags
Du kannst Dictionary-Flags in Würfen mit `@dFlags.(itemTag).(flagName)` verwenden, oder mit `@item.dFlags.(flagName)` im aktuellen Gegenstand.

View File

@@ -0,0 +1,3 @@
# Beute
Beute sind alle Gegenstände die in keine andere Kategorie passen, wie zum Beispiel Handelswaren und Munition.

View File

@@ -0,0 +1,46 @@
# Skriptaufrufe
Die meisten Gegenstände haben bestimmte Kategorien von Skriptaufrufen, die eine Kombination auf Makros und inline-Skripten sind, die bei bestimmten Ereignissen des Gegenstandes ausgelöst werden.
## Makros als Skriptaufrufe verwenden
Um Makros als Skriptaufrufe zu verwenden, ziehe einfach ein Makro von irgendwoher auf die Kategorie von Skriptaufrufen, bei der du es laufen lassen möchtest.
## Variablen
Die zu Verfügung stehenden Variablen unterscheiden sich von denen in regulären Makros.
Unten findest du eine Liste von Variablen, die du in Skriptaufrufen benutzen kannst.
| Name | Beschreibung|
| ------ | ------ |
| `item` | Der Gegenstand von dem aus das Ereignis aufgerufen wurde. |
| `actor` | Der Aktor, der den auslösenden Gegenstand besitzt. Kann `null` sein, wenn der Gegenstand nicht von einem Aktor besitzt wird. |
| `shared` | Ein Objekt, das leer anfängt, aber zwischen allen Skriptaufrufen eines einzelnen Ereignisses geteilt wird. Danach wird es zur aufrufenden Funktion übergeben, die etwas damit tun kann. |
## Kategorien
### Benutzen
Wird aufgerufen, wenn der Gegenstand benutzt wird.
Wenn ein Gegenstand mindestens ein Skriptaufruf dieser Kategorie enthält, ist es immer benutzbar.
Dieser Aufruf enthält eine weitere Variablen: `shared.attackData.action` die der Aktion, die benutzt wurde, entspricht. Du kannst `shared.attackData.action.tag` benutzen, um zwischen verschiedenen Aktionen zu unterscheiden.
Optional kann auch `shared.reject` auf `true` gesetzt werden, um die Benutzen des Gegenstandes abzubrechen.
### Ausrüsten
Wird aufgerufen, wenn der Gegenstand an- oder abgelegt wird.
Dieser Aufruf enthält eine weitere Variable `equipped`, die entweder `true` (wenn der Gegenstand angelegt wurde) oder `false` (wenn der Gegenstand abgelegt wurde) sein kann.
### Umschalten
Wird aufgerufen, wenn ein Buff oder Talent an- oder ausgeschaltet wurde.
Dieser Aufruf enthält eine weitere Variable `state`, die entweder `true` (wenn der Gegenstand angeschaltet wurde) oder `false` (wenn der Gegenstand ausgeschaltet wurde) sein kann.
### Mengenänderung
Wird aufgerufen, wenn die Menge eines Gegenstands verändert wurde.
Dieser Aufruf enthält zwei weitere Variablen `quantity.previous` und `quantity.new`, die die Menge vor und nach der Änderung enthalten.
### Stufenänderung
Wird aufgerufen, wenn die Stufe eines Gegenstands verändert wurde.
Dieser Aufruf enthält zwei weitere Variablen `level.previous` und `level.new`, die die Stufe vor und nach der Änderung enthalten.

View File

@@ -0,0 +1,41 @@
# Weapons
Waffen repräsentieren körperliche Waffen die ein Charakter halten kann.
![Waffendetails](/Help/img/weapon-details.webp)
## Aktionen
Hier stehen die einzelnen Aktionen des Gegenstands.
Wenn angegriffen wird, dann bestimmen die Einstellungen der Aktion, wie der Angriff ausgewürfelt wird.
**Begrenzte Nutzungen**: Wenn der Gegenstand nur eine begrenzte Anzahl an Nutzungen oder Ladungen pro Tag hat, kann dies hier eingestellt werden.
## Angriffs- und Effektnotizen
Diese Notizen erscheinen in den Chatkarten und sind nur sichtbar für die Nutzer mit Besitzer-Rechten für diesen Gegenstand.
## Aura
Die magische Aura der Waffe, mitsamt Schule und Zauberstufe, kann hier eingetragen werden.
## Details
**Angriff erstellen**: Wenn dieser Knopf gedrückt wird, dann wird ein Angriffsgegenstand im Kampf-Tab der Aktors erstellt.
**Kategorie**: Die Kategorie der Waffe (einfach, Kriegswaffe, exotische Waffe oder sonstige)
**Typ**: Der Typ der Waffe (leicht, einhändig, zweihändig oder Fernkampfwaffe)
**Waffengrüße**: Die Größe der Waffe, ähnlich zur Charaktergröße
**Ausrüstungsstatus**:
- **Ausgerüstet**: Ob der Gegenstand momentan ausgerüstet ist und seine Änderungen an den Aktor überträgt
- **Identifiziert (nur SL)**: Ob der Gegenstand momentan identifiziert ist und die Spieler dessen Informationen sehen
- **Meisterarbeit**: Ob der Gegenstand entsprechend den Grundregeln die Qualität Meisterarbeit hat
- **Beschädigt**: Ob der Gegenstand entsprechend den Grundregeln beschädigt ist
**Waffeneigenschaften**: Die Waffeneigenschaften, entsprechend der Grundregeln (hat keine mechanischen Auswirkungen)
**Verbesserungsbonus**: Der Verbesserungsbonus des Gegenstands, entsprechend den Grundregeln

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,12 @@
# Actors
## Normal Actor Types
- [Character](Help/Actors/Character)
- [NPC](Help/Actors/NPC)
## Miscellaneous Actor Types
- [Haunt](Help/Actors/Haunt)
- [Trap](Help/Actors/Trap)
- [Vehicle](Help/Actors/Vehicle)

View File

@@ -0,0 +1,67 @@
# Characters
This part of the help file is WIP.
Actor type for player characters, providing all basic functionality needed.
Character actors by default have vision and actor linking enabled regardless of default token settings, and their disposition is set to friendly. Some of these default can be configured in system settings.
## Tabs
### Summary
General overview of the character with health, level, classes, defenses, quick actions and classes.
### Attributes
Ability scores, senses, size, languages and other proficiencies, and great number of other small details.
Point buy calculator can be found here for actors that have not been configured yet.
### Combat
Listing of dedicated attack items and details needed for combat. Caveat: Health is not here.
### Inventory
All your physical items and equipment.
### Features
Class features, feats, and other special abilities and features.
### Skills
All of your skills. Self explanatory.
### Spells
Only visible if you've enabled a spellbook either via settings tab or added a class with spellcasting.
Includes all your spellbooks. Currently limited to 4. The default labels of them don't mean anything for their functionality.
Each spellbook can be farther configured via the gear icon found at top-right corner of each spellbook.
### Buffs
Listing of all available conditions and their state, along with buff and debuff items.
Clicking a condition toggles it, right-clicking a condition prompts for duration and enables the condition if it wasn't so already.
### Biography
For recording details about your character.
Biography is visible to players with limited permissions to the character. Secret blocks can be used to limit what such people see here.
### Notes
For all your recording needs. Has no explicit purpose than what you give it.
Additionally GM can see list of magical items the character has here with their identified state along with identified and unidentified names and other relevant info.
### Settings
For configuring the actor in unusual ways, such as ability score used for hit points, initiative and AC.
Point buy calculator can be found here after the actor is configured.

View File

@@ -0,0 +1,5 @@
# Haunts
Specialized actor and sheet for haunts, to handle their unique features.
This part of the help file is WIP.

View File

@@ -0,0 +1,21 @@
# NPCs
The only notable difference between [Characters](Help/Actors/Character) and
NPCs, is that NPCs _give_ experience points, and Characters _earn_ experience
points, which is represented in the top-right of their sheets.
NPCs also by default do not care about proficiencies (as per RAW), though there is a system setting to enable this functionality for them.
## Sheets
### NPC Sheet
Same as PC sheet except displays CR and experience reward on the summary tab.
### NPC Lite Sheet
Bare bones sheet with special handling for minimalist actor handling.
### Loot
Simple container sheet to ease looting monsters after they're defeated. Can also function for party storage or similar uses.

View File

@@ -0,0 +1,5 @@
# Traps
Specialized actor and sheet for traps, to handle their unique features.
Provides dedicated fields on their detection, disabling, and how the trap operates.

View File

@@ -0,0 +1,5 @@
# Vehicles
Specialized actor and sheet for vehicles, to handle their unique features.
This part of the help file is WIP.

View File

@@ -0,0 +1,264 @@
# Text Enrichers
Common input format: `@Command[key;options]{label}`
Options format: `key=value` pairs separated with semicolon (`;`)
Label adds a prefix to the button, for example `@Ability[str]{Flex}` would show up as `Flex: Strength`. Some enrichers deviate from this however.
Roll data is drawn from the card speaker by default.
## Common Options
| Option | Example | Explanation |
| :-------- | :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `speaker` | `@Use[Cure Light Wounds;speaker]` | Limit activation to card speaker. Alias of `as=speaker`. |
| `as` | `@Use[Cure Light Wounds;as=speaker]` | Limit or guide activation.<br>`speaker`, `sheet`, and `auto` are the only valid options for now. Speaker is for chat cards, sheet is for sheets, and auto tries to automatically choose either of the former. |
| `bonus` | `@Skill[per;bonus=15]` | Bonus to the roll. |
| `roll` | `@Skill[dip;roll=10]` | Roll replacement, e.g. for Take 10 or fortune effect. |
| `vars` | `@Heal[@attributes.hd.total;vars=target]` | Roll data is pulled from something else than speaker.<br>`target` is only valid option for now. |
## Button Enrichers
These enrichers provide buttons you may press.
### `@Ability`
| Input | Explanation |
| :-------------- | :---------------------------------- |
| `@Ability[str]` | Roll strength with any valid actor. |
### `@Action`
Trigger action from same item as the card is for.
Meant as a shorthand for `@Use` when you don't need to refer to different items.
#### Examples
| Input | Explanation |
| :------------------------ | :------------------------------------ |
| `@Action[Grab]{Followup}` | Trigger Grab action on the same item. |
### `@Apply`
Apply defined buff (by UUID or name) to actors. The buff is set to active state automatically.
If the item is found, displays the item name as default label.
If name is defined instead of UUID, item is searched from items directory and compendiums.
#### Examples
| Input | Explanation |
| :----------------------------------------------------------------- | :--------------------------------------- |
| `@Apply[Special Mood]` | Add custom buff with level untouched. |
| `@Apply[Compendium.pf1.commonbuffs.Item.IlO0CNpAIKZtNYu8;level=5]` | Add Mage Armor with buff level set to 5. |
| `@Apply[Rage;level=3]` | Add Rage with buff level set to 10. |
#### Special Options
- `level` for setting buff level.
### `@Browse`
Open specified compendium browser.
Currently only supports raw IDs as they appear in `pf1.applications.compendiums`.
Unlike other enrichers, custom label replaces the text entirely.
#### Examples
| Input | Explanation |
| :--------------- | :------------------ |
| `@Browse[feats]` | Open feats browser. |
### `@Condition`
Add, remove, toggle or link conditions.
If toggle or removal is not defined, the condition is added.
Label replaces the entire text unlike with most enrichers.
#### Examples
| Input | Explanation |
| :---------------------------------- | :------------------------------------- |
| `@Condition[nauseated]` | Add nauseated condition. |
| `@Condition[grappled;toggle]` | Toggle grappled condition. |
| `@Condition[dazed;disable]{Undaze}` | Remove dazed condition. |
| `@Condition[fatigued;info]` | Link sleep condition compendium entry. |
#### Special Options
- `toggle` - Toggle condition.
- `remove` - Remove condition.
- `disable` - Alias for remove.
- `info` - Link compendium entry as defined in
### `@Damage`
Damages selected tokens by defined amount.
The key is damage formula instead.
#### Examples
| Input | Explanation |
| :--------------------- | :--------------------------------------------- |
| `@Damage[2d4]` | Rolls 2d4 and damages the actors by that much. |
| `@Damage[6;nonlethal]` | Causes 6 nonlethal damage. |
#### Special Options
- `nonlethal` - Adds nonlethal damage.
### `@Draw`
Draws an entry from the given Roll Table.
#### Examples
| Input | Explanation |
| :------------------------------------------------------------- | :-------------------------------------------------------------------------- |
| `@Draw[Your Roll Table]` | Draws from the tabled named "Your Roll Table" within your world. |
| `@Draw[Compendium.pf1.roll-tables.RollTable.NQ3T7rnXC5agjl6D]` | Draws from the system's Confusion table. |
| `@Draw[Your Roll Table]{Displayed Name}` | Draws from "Your Roll Table" but the button shows "Displayed Name" instead. |
### `@Heal`
Heals selected tokens by defined amount.
The key is heal formula instead.
**Note!** Label replaces formula display instead of becoming a prefix.
#### Examples
| Input | Explanation |
| :------------------- | :------------------------------------------- |
| `@Heal[3d6]` | Rolls 3d6 and heals the actors by that much. |
| `@Heal[6;nonlethal]` | Heals 6 nonlethal damage. |
| `@Heal[17;dual]` | Heals 17 health _and_ nonlethal damage. |
#### Special Options
- `nonlethal` - Heals nonlethal damage.
- `dual` - Heals both normal health and nonlethal.
### `@Save`
#### Examples
| Input | Explanation |
| :-------------------------- | :------------------------------------------------------------------------ |
| `@Save[ref]{Dodge!}` | Roll reflex saving throw with any valid actor. |
| `@Save[fort;dc=15]{Resist}` | Roll fortitude save, displaying DC 15 as additional detail in the button. |
#### Special Options
- `dc` - Defines DC for the roll. Only used for display.
### `@Skill`
Skill roll button.
#### Examples
| Input | Explanation |
| :-------------------------------------- | :------------------------------------------------------------------------------------------- |
| `@Skill[acr]` | Roll acrobatics with any valid actor. |
| `@Skill[acr;bonus=15;roll=10]{Take 10}` | Roll acrobatics with Take 10, +15 bonus, and with extra Take 10 label, with any valid actor. |
| `@Skill[acr;speaker]` | Roll acrobatics as card's speaker. |
| `@Skill[per;info]` | Link to perception's compendium entry. |
#### Special Options
- `info` - Button instead links to the compendium entry as configured in `pf1.config.skillCompendiumEntries`
#### Limitations
- Subskills and custom skills are not supported.
### `@Use`
Item use button.
#### Examples
| Input | Explanation |
| :------------------------------------------------- | :------------------------------------------------------------------------------------------------------ |
| `@Use[Hero Points]` | Use hero points item's default action as any valid actor. |
| `@Use[Fireball#cast;type=spell;speaker]{Cast}` | Use Fireball spell's cast action as card's speaker. |
| `@Use[Fireball#tag:cast;type=spell;speaker]{Cast}` | Use Fireball spell's cast action with card's speaker, using action tag instead of name to match action. |
#### Special Options
| Option | Description |
| :--------- | :---------------------------------------------- |
| `type` | Item type |
| `#tag:TAG` | Action tag, needs to be part of the item name. |
| `#id:ID` | Action ID, needs to be part of the item name. |
| `#name` | Action name, needs to be part of the item name. |
## Information Enrichers
These enhance provided information.
### `@Distance`
Informational distance conversion and display.
Format: `@Distance[value;options]`
Value parameter can either be a formula, or a number with `ft` or `m` unit.
Default unit is imperial feet unless otherwise specified.
#### Examples
Examples outputs are with imperial unit system enabled.
| Input | Explanation | Output |
| :------------------------ | :--------------------------------------------------------------------------- | :------------ |
| `@Distance[100]` | Convert and display 100 feet. | `100 ft` |
| `@Distance[9 * 4;metric]` | Convert and display result of 9×4, treating the math result to be in meters. | `120 ft` |
| `@Distance[30 ft;dual]` | Convert and display 30 feet in both imperial and metric. | `30 ft (9 m)` |
#### Special Options
| Options | Description |
| :--------- | :------------------------------------------- |
| `dual` | Displays both imperial and metric distances. |
| `metric` | Treats provided distance as meters. |
| `imperial` | Treats provided distance as feet. |
### `@Weight`
Informational weight conversion and display.
Format: `@Weight[value;options]`
Value parameter can either be a formula, or a number with or without `lbs` or `kg` unit attached.
Default unit is imperial pounds unless otherwise specified.
#### Examples
Examples outputs are with imperial unit system enabled.
| Input | Explanation | Output |
| :---------------------- | :------------------------------------------------------------------------------ | :--------------- |
| `@Weight[100]` | Convert and display 100 lbs. | `100 lbs` |
| `@Weight[3 * 5;metric]` | Convert and display result of 3×5, treating the math result to be in kilograms. | `30 lbs` |
| `@Weight[30 lbs;dual]` | Convert and display 30 lbs in both imperial and metric. | `30 lbs (15 kg)` |
#### Special Options
| Options | Description |
| :--------- | :----------------------------------------- |
| `dual` | Displays both imperial and metric weights. |
| `metric` | Treats provided weight as kilograms. |
| `imperial` | Treats provided weight as pounds. |

View File

@@ -0,0 +1,129 @@
# Formulas
This section is currently a Work In Progress (WIP).
Formulas are an important aspect in the Pathfinder 1e system. They can be as simple as a single numerical value, or as complex as single lines of code. They play a great role in item changes.
## Variables
For a quick reference, you can find a lot of this information in tooltips on actor sheets as well.
### `@abilities.X.total`
The total value of an ability score. Replace `X` with one of the following: `str`, `dex`, `con`, `int`, `wis`, `cha`.
### `@abilities.X.mod`
The modifier of an ability score. Replace `X` with one of the following: `str`, `dex`, `con`, `int`, `wis`, `cha`.
### `@attributes.hd.total`
The total hit die the actor has. This is a combination of class levels and racial hit die, and it excludes mythic tiers.
### `@attributes.savingThrows.X.total`
The total bonus of the appropriate saving throw for that actor. X can be either 'fort' (Fortitude), 'ref' (Reflex) or 'will' (Will)
### `@attributes.savingThrows.X.base`
The total bonus of the appropriate saving throw for that actor. X can be either 'fort' (Fortitude), 'ref' (Reflex) or 'will' (Will)
### `@attributes.encumbrance.level`
The current encumbrance level of the actor.
- `0`: Light Load
- `1`: Medium Load
- `2`: Heavy Load
### `@armor.type`
The type of armor the actor is wearing.
- `0`: No Armor
- `1`: Light Armor
- `2`: Medium Armor
- `3`: Heavy Armor
### `@shield.type`
The type of shield the actor is holding.
- `0`: No Shield
- `1`: Miscellaneous Shield (such as a buckler)
- `2`: Light Shield
- `3`: Heavy Shield
- `4`: Tower Shield
### `@combat.round`
The current round of combat, or `0` if not in combat.
### `@critMult`
The critical multiplier of the attack, or `1` if the attack is not a critical threat.
Only appropriate for use in damage rolls and attack and effect notes.
### `@sizeBonus`
Effective attack roll bonus or penalty from size.
### `@powerAttackBonus`
Base bonus damage given by power attack to individual damage. E.g. two-handed attack at level 2 would always give 3 for this.
Defaults to `0` if power attack is disabled.
### `@powerAttackPenalty`
Attack penalty power attacking causes. Goes hand in hand with `@powerAttackBonus`.
For example furious focus is easy to implement with conditional attack roll modifier of `-@powerAttackPenalty` on the first attack.
Defaults to `0` if power attack is disabled.
### `@attackCount`
Zero-indexed counter for which attack is being processed. So if this was placed as damage bonus, it would give you `0`, `1`, `2`, `3`, etc. bonus to damage as the attacks progress.
Can also be used for ternaries to add modifications to specific attack, e.g. `@attackCount == 0 ? 4 : 0` would add 4 to first attack but no other.
## Functions
Foundry (and by extension this system) allow using JavaScript's [`Math` functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) in its formulas.
Information about writing formulas using such expressions and referencing actor and item data can be found in [Foundry's Knowledge Base](https://foundryvtt.com/article/dice-advanced/).
In addition to the functions mentioned there, the Pathfinder 1e system provides some specific helpers available for use in some formulas.
### `sizeRoll`
Alters a damage roll to that of another size category.
**Example:** `sizeRoll(1, 8, @size)` Rolls 1d8 for medium actors, and alters the damage formula according to the calling actor's current size.
**Example:** `sizeRoll(1, 4, 6, 2)` Translates a damage roll of `1d4` from a tiny actor (size `2`) to a huge actor (size `6`); Output: `3d6`
| `@size` | Actual |
| :------ | :--------- |
| `0` | Fine |
| `1` | Diminutive |
| `2` | Tiny |
| `3` | Small |
| `4` | Small |
| `5` | Large |
| `6` | Huge |
| `7` | Gargantuan |
| `8` | Colossal |
Normally you should not need the fourth parameter. It's mainly useful if you have damage for non-medium character and use that info to fill the first two parameters, then the fourth parameter should include the size for which the first two were for.
The function does not really do anything useful with less than 3 parameters provided.
You can also use `@item.size` to use the item's own size instead of `@size` which refers to actor's size.
### `sizeReach`
Generates a number equal to the reach of a creature of a certain size and stature.
**Example:** `sizeReach(@size + 1, false, @traits.stature)` Returns the normal melee reach as if the actor was 1 size category higher.
**Example:** `sizeReach(6, true, "long")` Returns the reach a huge, long actor would have with a reach weapon.

View File

@@ -0,0 +1,40 @@
# Pathfinder 1 Knowledge Base
## Rules
- [Core Rules](Help/Rules)
- [Optional](Help/Rules/Optional)
- [Homebrew](Help/Rules/Homebrew)
## Actors
- [Character](Help/Actors/Character)
- [NPC](Help/Actors/NPC)
- [Haunt](Help/Actors/Haunt)
- [Trap](Help/Actors/Trap)
- [Vehicle](Help/Actors/Vehicle)
## Items
### Item Types
- [Attacks](Help/Items/Attacks)
- [Classes](Help/Items/Classes)
- [Consumables](Help/Items/Consumables)
- [Containers](Help/Items/Containers)
- [Equipment](Help/Items/Equipment)
- [Loot](/Help/Items/Loot)
- [Weapons](Help/Items/Weapons)
### Concepts
- [Description](Help/Items/Description)
- [Changes](Help/Items/Changes)
- [Actions](Help/Items/Actions)
- [Flags](Help/Items/Flags)
- [Script Calls](Help/Items/Script-Calls)
## Special
- [Formulas](Help/Formulas)
- [Enrichers](Help/Enrichers)

View File

@@ -0,0 +1,13 @@
# Items
## Physical Item Types
- [Weapons](Help/Items/Weapons)
- [Equipment](Help/Items/Equipment)
- [Consumables](Help/Items/Consumables)
- [Containers](Help/Items/Containers)
- [Loot](Help/Items/Loot)
## Other
- [Attacks](Help/Items/Attacks)

View File

@@ -0,0 +1,98 @@
# Actions
Each action defines singular way to use an item. Although most usable items have only one action associated with them, some may have more, such as a dagger might have stab and throw actions.
## Usage Tab
Usage tab defines how the action is used, action cost, charge cost, its targeting, range, duration, area, ammunition usage and similar information. Anything that is needed to know _before_ you can resolve the effects of the action.
## Action Tab
Here you define the actual effects of the action.
### Attack
Attack Roll Bonus is used to define any modifiers specific to this attack, such as two-weapon fighting penalty
### Extra Attacks
You configure iteratives and other additional attacks that are performed on full-attack here.
You can add static extra attacks here with specific modifiers that are performed on full attack always, for example if you have multiple identical claw attacks, defining them in the static top part is an easy way to deal with them.
The formula-based extra attacks below is for more advanced cases that previously were used for BAB iterative handling or other similar complex or automatically scaling cases.
#### Options
| Option | Details |
| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| Iteratives | BAB based extra attacks are automatically accounted for. |
| Flurry of Blows (Chained) | Original _monk_ two-weapon fighting style _Flurry of Blows_. Requires _BAB override_ to be configured. |
| Flurry of Blows (Unchained) | Unchained Monk's Flurry of Blows. Functions fully without customization. |
| Iteratives + Custom | Same as the first option but with additional customization options. |
| Custom | Fully customizable, no automatically handled iteratives. Most useful for spells and natural attacks with specific requirements. |
Note: Chained flurry will display the two-weapon fighting penalty (`-2`) in attack dialog always as it is integrated. This will not be applied when performing singular attacks.
Chained flurry is easiest to handle for single class monk, ensuring the ability is linked to monk class at bottom of details tab, and adding BAB override in the attack simply as `@class.level` (or `@classes.monk.level` without linking).
Both chained and unchained flurry require you set class association for the attack item to the monk class at bottom of the item's details tab.
#### Formula-based extra attacks
**Variables**
| Variable | Use |
| :------------- | :---------------------------------------------------------------------------------------------- |
| `@bab` | Short-hand for `@attributes.bab.total` and may later has more meaning. |
| `@attackCount` | How manyth attack in the defined set it is, starting with `0`. Only accounting for the formula. |
Historically the following were the BAB iterative formulas.
| Use | Formula |
| :----------- | :-------------------------------------------- |
| Attack count | `min(3, ceil(@attributes.bab.total / 5) - 1)` |
| Attack bonus | `@formulaicAttack * -5` |
### Damage / Healing
**Base Formula** is for the base damage or healing of the action. This is multiplied on critical if the action has an attack roll.
**On-critical Bonus Formula** is damage added _only_ to critical damage rolls. This is multiplied by critical multiplier with one subtracted, so _Flaming Burst_ for example should be entered simply as `1d10` for all weapons.
**Non-multiplying Bonus Formula** is damage added to base damage that is unaffected by critical hits, usually this is elemental and precision bonus damge, such as from magical weapon qualities.
_Historical note: Formerly these were labeled in order: Damage Formula, Critical Damage Bonus Formula, and Non-critical Damage Bonus Formula_
See [Formulas](Help/Formulas) article for more help in how to write damage formulas.
#### Special Variables
| Variable | Description |
| :------------- | :------------------------------------------------- |
| `@critCount` | Which critical multiplier pass is being processed. |
| `@attackCount` | Which attack is being processed. |
#### Advanced Formulas
Critical-only bonus damage that is not multiplied:
`(@critCount == 1) ? 1d6 : 0`
Damage only on the second attack:
`(@attackCount == 1) ? 2d8 : 0`
## Miscellaneous
This allows you to define a template for the action or sound effect.
The template size formula should resolve to number of feet.
Non-square rectangles are not possible, nor placing multiple templates.
## Conditional Modifiers
Conditional Modifiers are useful for any modifiers that affect specific attack or are only occasionally true.
The available options here depend on the action and item they're used on.
These are presented as choices in the attack dialog. Any default on conditionals are enabled even when skipping the dialog.

View File

@@ -0,0 +1,8 @@
# Attacks
Attacks are types of items that can be used to roll various types of attacks
without requiring a physical weapon. Examples include natural attacks and
attacks generated from weapons.
Aside from not being a physical item and lacking physical properties, they
function very similar to [Weapons](Help/Items/Weapons).

View File

@@ -0,0 +1,32 @@
# Changes
![Changes examples](/Help/img/item-changes.webp)
## Flags
- **Unaffected by Heavy Encumbrance**: While an item with this change is active, its actor will not be slowed down by being in a medium load.
- **Unaffected by Heavy Encumbrance**: While an item with this change is active, its actor will not be slowed down by being in a heavy load.
- **Full Speed in Medium Armor**: While an item with this change is active, its actor will not be slowed down by wearing medium armor.
- **Full Speed in Heavy Armor**: While an item with this change is active, its actor will not be slowed down by wearing heavy armor.
- **Lose Dex to AC**: While an item with this change is active, a character loses his Dexterity bonuses to Armor Class.
## Changes
This is a list of changes which affect the actor owning the item directly.
From left to right:
- **Operator**: The operators are '±' (relative) or '=' (absolute). Relative values add to an attribute, while absolute values set the attribute to the result of the formula.
- **Target**: The attribute or attribute set to alter with this change.
- **Type**: The bonus type of this change.
- **Priority**: The priority of this change. Changes with lower priorities will be processed later. In rare cases, a lower priority is necessary.
- **Formula**: The formula by which to affect this particular change. The way this alters an actor's attribute depends on the operator (see next). See this page for more details.
## Context Notes
This a list of contextual notes, which are shown in appropriate situations.
From left to right:
- **Text**: The text to show in appropriate situations. Every newline adds a new note block to the same target without needing to multiply notes for same target. The contents are enriched so inline rolls and enrichers work in these.
- **Target**: The context in which the text is to be provided in.

View File

@@ -0,0 +1,14 @@
# Classes
Class item covers base PC classes, NPC classes, racial HD, prestige classes, and mythic paths.
## Homebrew
Custom BAB and saving throw formulas accept only few special variables:
| Variable | Description |
| :--------- | :------------------------------------------ |
| `@level` | Same as `@item.level` but only used here. |
| `@hitDice` | Same as `@item.hitDice` but only used here. |
No other variables are available for these as they're resolved before anything else is calculated.

View File

@@ -0,0 +1,3 @@
# Consumables
Consumables represent physical items with limited uses, such as potions, scrolls, poisons, drugs or wands.

View File

@@ -0,0 +1,9 @@
# Containers
Containers are items which can contain other items.
These have few special fields not available to other items.
- Currency
- Weight reducton % - for minor 3.5 compatibility.
- Weight reduction, flat

View File

@@ -0,0 +1,10 @@
# Descriptions
![Description example](/Help/img/item-description.webp)
1. **Name**: The name of the item, if identified.
1. **Unidentified Name**: The name of the item, if unidentified. Shows the identified name for players if left empty.
1. **Description**: The description to show, if identified.
1. **Unidentified Description**: The description to show to players, if unidentified.
1. **Price**: The price of the item, in gold pieces, if identified.
1. **Unidentified Price**: The price of the item, in gold pieces, if unidentified.

View File

@@ -0,0 +1,22 @@
# Equipment
Equipment represents all non-weapon equippable items, including armor, shields, rings and wondrous items.
![Equipment details](/Help/img/equipment-details.webp)
**Weapon/Armor Proficiencies, Languages**: Proficiencies and languages granted by this item, which will appear in the actor's attributes and affect e.g. Armor Check Penalty due to not being proficient in armor.
**Category**: The armor's category (whether it's armor, a shield, or something else)
**Type**: Armor or Shield size type, or other item type (clothing, wondrous item, etc.)
**Slot**: What slot this item is for (only shows up for items other than armor or shields)
**Size**: The item's size, similar to a character's size
**Equipment Status**: Status flags of this particular item:
- **Equipped**: Whether the item is currently equipped, and transfers its changes to its actor (if any)
- **Identified (GM only)**: Whether the item is currently identified, and shows its identified information to players
- **Masterwork**: Whether the item is masterwork, as per the Core rules
- **Broken**: Whether the item is broken, as per the Core rules

View File

@@ -0,0 +1,11 @@
# Flags
Flags can be used by modules, macros and in roll formulas.
## Dictionary Flags
You can access Dictionary Flags within rolls by using `@dFlags.(itemTag).(flagName)`, or with `@item.dFlags.(flagName)` within the current item.
## Boolean Flags
Boolean flags are available via `@bFlags.(flagName)` or item specific flags with `@item.bFlags.(flagName)` within the item.

View File

@@ -0,0 +1,3 @@
# Loot
Loot items are all types of physical items that don't have a specific item type, such as trade goods and ammunition.

View File

@@ -0,0 +1,91 @@
# Script Calls
Most items have certain categories of script calls, which are a combination of macros and inline scripts which run at specific events for that item.
## Using Macros as Script Calls
In order to use Macros as Script Calls, simply drag a macro over from somewhere to the category of Script Calls you wish to run them on.
## Variables
The variable availability differs somewhat from what's available in regular Macros.
Below you will find a list of variables which are present within Script Calls.
| Name | Description |
| ------ | ------ |
| `item` | The item from which this event was called. |
| `actor` | The actor which owns the calling item. Can be `null` if the item is not on an actor. |
| `action` | The action that triggered this. Can be `null` if there's no action. |
| `token` | Token associated with unlinked actor, or the first active token for linked actor on currently viewed scene. |
| `shared` | An object which starts out as empty, but is shared between all script calls of a single event, after which it is returned to the calling function, which may or may not do something with it. |
## Categories
### Use
Called when an item has been used.
If an item has at least one script call under this category, it's usable no matter what.
| Special Variables | Description |
| :---------------- | :---------------------------------------------------------------------------------- |
| `action` | refers to the specific action being used. |
| `shared.reject` | can be set to `true` to cancel the item's use similar to cancelling the use dialog. |
| `shared.hideChat` | can be set to `true` to eliminate the action's normal chat message creation. |
You can use `action.tag` to differentiate between actions.
### Post-Use
Called after an item has been used and all its processing has completed, including the chat message creation.
| Special Variables | Description |
| :---------------- | :---------------------------------------------- |
| `shared.message` | Reference to the chat message created (if any). |
### Equip
Called when an item has been equipped or unequipped.
| Special Variables | Description |
| :---------------- | :---------------------------------------------------------------------------------------------- |
| `equipped` | which is either `true` if it has just been equipped, or `false` if it has just been unequipped. |
### Implant
Called when an item has been implanted or unimplanted. Works nearly identically to _Equip_ script.
| Special Variables | Description |
| :---------------- | :------------------------------------------------------------------------------------------------------------ |
| `implanted` | works identically to _Equip_ script's `equipped` variable. A boolean representing the new implantation state. |
### Toggle
Called when a buff or feature has been toggled on/off.
| Special Variables | Description |
| :---------------- | :---------------------------------------------------------------------------- |
| `state` | Representation of the buff's state, `false` for disabled, `true` for enabled. |
### Change Quantity
Called when the quantity of a physical item has been changed.
| Special Variables | Description |
| :------------------ | :-------------------------- |
| `quantity.previous` | Quantity before the update. |
| `quantity.new` | Quantity after the update. |
### Change Level
Called when the level of a item has been changed.
| Special Variables | Description |
| :---------------- | :----------------------- |
| `level.previous` | Level before the update. |
| `level.new` | Level after the update. |
## Shared Data Object
You can control item use workflow by altering the `shared` object.
The shared object contains additional data based on use that you can investigate via normal JS debugging methods, such as `console.log(shared)` or `debugger`. It is too expansive and variable to describe here.

View File

@@ -0,0 +1,41 @@
# Weapons
Weapons are meant to represent physical weapons that a character can hold.
![Weapon Details](/Help/img/weapon-details.webp)
## Actions
Individual actions embedded in this action can be found here.
When attacking, it will be the action's configuration that determines how the attack is rolled.
**Limited Uses**: If the item only has a limited number of uses, or charges per day, this can be configured here.
## Attack & Effect Notes
These notes will appear in chat cards, visible only to users with owner permissions for this item.
## Aura
The weapon's magic aura, including its school and caster level, can be entered here.
## Details
**Create Attack**: Clicking this button will create an Attack item in this actor's combat tab.
**Category**: The weapon's category (simple, martial, exotic or misc)
**Type**: The weapon's type (light, one-handed, two-handed or ranged)
**Weapon Size**: The weapon's size, similar to a character's size
**Equipment Status**:
- **Equipped**: Whether the item is currently equipped, and transfers its changes to its actor (if any)
- **Identified (GM only)**: Whether the item is currently identified, and shows its identified information to players
- **Masterwork** Whether the item is masterwork, as per the Core rules
- **Broken** Whether the item is broken, as per the Core rules
**Weapon Properties**: The weapon's properties, as per the Core rules (does nothing mechanically)
**Enhancement Bonus**: The item's enhancement bonus, as per the Core rules

View File

@@ -0,0 +1,39 @@
# Rules
## Core Rule Deficiencies
The following rules are not directly supported. They require manual work to make them work as expected.
- Archetypes
- Workaround: Manually alter the existing base class.
- Hands of Effort
- Workaround: Manually unequip excess.
- Hasty Donning
- Materials for weapons and armor
- Workaround: Manually alter the affected item.
- Metamagic
- Workaround: Create altered copies of spells.
- Opposition Schools
- Workaround: Manually edit slot cost of each spell.
- Qualities for magic weapons and armor
- Workaround: Manually alter the affected item.
- Racial weapon proficiency
- e.g. dwarves treating anything with dwarven in its name as martial
- Workaround: Mark forced proficiency on relevant items on actors.
- School / Domain slot spells
- Slots themselves are supported, but not automatically knowing what spells should be in them.
- Workaround: Manually mark affected spells as school/domain.
- Shapeshifting / Polymorphing / Wild Shaping
- Siege Weapons
- Spontaneous casting (cleric, druid, etc. variant where prepared slots are substituted)
- Inappropriately Sized Weapons
### Quality of Life deficiencies
- Ability Damage/Drain for actions
- Workaround: Manually adjust the values.
- Persistent effects from spells and abilities
- Workaround: Manually add relevant buff item to target.
- Summons
- No tracking of available summons or their duration
- Tracking of how many rogue talents, rage powers, mystery powers, or the like you're supposed to have.

View File

@@ -0,0 +1,19 @@
# Homebrew, House Rules, and Third Party
This describes settings in the system to support non-standard rules.
## Spell Points
Enabled per character spellbook.
Default spellpoint cost can be configured in system settings. Individual spells can have their own cost.
## NPC proficiencies
Toggled in system settings.
By default NPCs/monsters are fully proficient with everything with the system implementation. That is, their lacking proficiency is ignored. The NPC proficiency toggle allows them to follow same rules as PCs.
## Coin Weight
Coin Weight Divisor in system settings. Zero disables coin weight.

View File

@@ -0,0 +1,97 @@
# Optional Rules
## Fully Supported
### Background Skills
Enabled in system settings.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1732)
### Fractional Base Bonuses
Enabled in system settings.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1726)
### Wound Thresholds
Enabled in health settings in system settings.
Not compatible with Wounds & Vigor due to Paizo not providing guidelines how the two would interact.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1903)
### Revised Action Economy
Enabled in system settings.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1884)
## Partially Supported
### Armor as Damage Reduction (DR)
Critical confirmation rolls can be disabled in system settings for partial support.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1123)
### Wounds & Vigor
Enabled in health settings in system settings.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1155)
## Unsupported
### Automatic Bonus Progression
Requires manual work.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1950)
### Consolidated Skills
No easy workarounds.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1745)
### Corruption
Workaround: Track with misc features.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=2278)
### Hero Points
Workaround: Track with misc feature.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=445)
### Horror Rules
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=2258)
#### Levels of Fear
Workaround: Create and use fear buffs.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=2268)
#### Sanity
Workaround: Track with misc feature.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=2274)
### Piecemeal Armor
No easy workarounds.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1141)
### Words of Power
No easy workarounds.
[Rules reference](https://www.aonprd.com/Rules.aspx?ID=1016)

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

View File

@@ -0,0 +1,10 @@
# Acteurs
## Types dacteurs normaux
- [Joueur](Help/Actors/Character)
- [PNJ](Help/Actors/NPC)
## Types dacteurs divers
- [Basique](Help/Actors/Basic)

View File

@@ -0,0 +1,5 @@
# Acteur basique
Les acteurs basiques n'ont pas de données définies par le système, ce qui les rend très légers et utilisables en
conjonction avec des modules qui nécessitent des acteurs ou des jetons, mais pas toutes les données qu'un personnage ou
un PNJ inclut.

View File

@@ -0,0 +1,3 @@
# Personnages
Cette partie du fichier d'aide est en cours de travail (WIP).

View File

@@ -0,0 +1,5 @@
# PNJs
La seule différence notable entre les [personnages](Help/Actors/Character) et les PNJ est que les PNJ _donnent_ des
points d'expérience et que les personnages _gagnent_ des points d'expérience, ce qui est représenté en haut à droite de
leurs feuilles.

View File

@@ -0,0 +1,104 @@
# Formules
Cette section est actuellement en cours de travail (WIP).
Les formules sont un aspect important du système Pathfinder 1e. Elles peuvent être aussi simples quune valeur numérique
seule ou complexes via une seule ligne de code. Elles jouent un grand rôle dans les changements dobjets.
## Variables
Pour une référence rapide, vous pouvez aussi trouver beaucoup dinformations dans les info-bulles daide sur les
feuilles dacteur.
### `@abilities.X.total`
La valeur totale dun score de caractéristique. Remplacez `X` avec une des valeurs suivantes : `str` (pour `for`), `dex`
, `con`, `int`, `wis` (pour `sag`), `cha`.
### `@abilities.X.mod`
Le modificateur dun score de caractéristique. Remplacez X avec une des valeurs suivantes : `str` (pour `for`), `dex`,
`con`, `int`, `wis` (pour `sag`), `cha`.
### `@attributes.hd.total`
Le total de Dés de vie que lacteur possède. Cest une combinaison de niveaux de classes et de niveaux raciaux et cela
exclut les rangs mythiques.
### `@attributes.savingThrows.X.total`
Le bonus total des jets de sauvegarde appropriés pour cet acteur. `X` peut être soit `fort` (Vigueur), `ref` (Réflexes)
ou `will` (Volonté)
### `@attributes.savingThrows.X.base`
Le bonus de base total du jet de sauvegarde approprié pour cet acteur, comme indiqué par le niveau de classe. `X` peut
être soit `fort` (Vigueur), `ref` (Réflexes) ou `will` (Volonté)
### `@attributes.encumbrance.level`
Le niveau dencombrement actuel de lacteur.
- `0`: Charge légère
- `1`: Charge intermédiaire
- `2`: Charge lourde
### `@armor.type`
Le type darmure revêtue par lacteur.
- `0`: Pas darmure
- `1`: Armure légère
- `2`: Armure intermédiaire
- `3`: Armure lourde
### `@shield.type`
Le type de bouclier tenu par lacteur.
- `0`: Pas de bouclier
- `1`: Bouclier divers (tel quune targe)
- `2`: Bouclier léger
- `3`: Bouclier lourd
- `4`: Pavois
### `@combat.round`
Le round actuel de combat ou `0` hors combat.
### `@critMult`
Le multiplicateur de critique de lattaque, ou `1` si lattaque nest pas un critique.
Convient uniquement pour une utilisation dans les jets de dégâts et les notes dattaque et deffet.
## Fonctions
Foundry (et par extension ce système) autorise lutilisation des
[fonctions `Math`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) de JavaScript
dans ses formules.
Des informations à propos de comment utiliser ce genre dexpressions et référencer les données dun acteur ou dun
objet peuvent être trouvés dans la [Base de Connaissance de Foundry](https://foundryvtt.com/article/dice-advanced/).
En plus des fonctions qui y sont mentionnées, le système Pathfinder 1e fournit des aides spécifiques disponibles pour
une utilisation dans certaines formules.
### `sizeRoll`
Modifie le jet de dégât à celui dune autre catégorie de taille.
**Exemple :** `sizeRoll(1, 8, @size)` Lance 1d8 pour un acteur de taille M et altère la formule de dégâts en fonction
de la taille actuelle de lacteur appelé.
**Exemple :** `sizeRoll(1, 4, 6, 2)` Transforme le jet de dégâts de 1d4 dun acteur de taille TP (size `2`) vers un
acteur de taille TG (size `6`); Sortie : `3d6`.
### `sizeReach`
Génère un nombre égal à la portée dune créature dune certaine taille et stature.
**Exemple :** `sizeReach(@size + 1, false, @traits.stature)` Renvoie lallonge normale au corps à corps si lacteur
était dune catégorie de taille supérieure.
**Exemple :** `sizeReach(6, true, "long")` Renvoie lallonge quun Très grand et long acteur devrait avoir avec une
arme dallonge.

View File

@@ -0,0 +1,22 @@
# Aide
- [Acteurs](Help/Actors)
- Types dacteur
- [Personnage](Help/Actors/Character)
- [PNJ](Help/Actors/NPC)
- [Basique](Help/Actors/Basic)
- [Objets](Help/Items)
- Types dobjet
- [Consommables](Help/Items/Consumables)
- [Conteneurs](Help/Items/Containers)
- [Équipement](Help/Items/Equipment)
- [Butin](/Help/Items/Loot)
- [Armes](Help/Items/Weapons)
- [Attaques](Help/Items/Attacks)
- Concepts
- [Description](Help/Items/Description)
- [Changements](Help/Items/Changes)
- [Flags](Help/Items/Flags)
- [Appel de scripts](Help/Items/Script-Calls)
- Spécial
- [Formules](Help/Formulas)

View File

@@ -0,0 +1,13 @@
# Objets
## Types dobjets physiques
- [Armes](Help/Items/Weapons)
- [Équipement](Help/Items/Equipment)
- [Consommables](Help/Items/Consumables)
- [Conteneurs](Help/Items/Containers)
- [Butin](Help/Items/Loot)
## Autres types dobjets
- [Attaques](Help/Items/Attacks)

View File

@@ -0,0 +1,7 @@
# Attaques
Les attaques sont des types d'objets qui peuvent être utilisés pour lancer différents types d'attaques sans nécessiter
d'arme physique. Les exemples incluent les attaques naturelles et les attaques générées par des armes.
En plus de ne pas être un objet physique et de manquer de propriétés physiques, elles fonctionnent de manière très
similaire aux [armes](Help/Items/Weapons).

View File

@@ -0,0 +1,49 @@
# Changements
![Exemples de changements](/Help/img/item-changes.webp)
- **À cocher**
- **Encombrement spécifique des nains** : Lorsqu'un objet avec ce changement est actif, son acteur ne sera pas
ralenti en étant dans une charge moyenne ou lourde.
- **Vitesse de Déplacement en armure Intermédiaire** : Lorsqu'un objet avec ce changement est actif, son acteur ne
sera pas ralenti en portant une armure moyenne.
- **Vitesse de Déplacement en armure lourde** : Lorsqu'un objet avec ce changement est actif, son acteur ne sera pas
ralenti par le port d'une armure lourde.
- **Perte du bénéfice de Dex à la CA** : Lorsquun objet avec ce changement est actif, un personnage perd son bonus de
Dextérité à la Classe dArmure.
- **Changements** : Il s'agit d'une liste de changements qui affectent directement l'acteur propriétaire de l'élément.
De gauche à droite :
- **Formule** : La formule par laquelle affecter ce changement particulier. La manière dont cela altère lattribut
dun acteur dépend de lopérateur (vois après). Voir [cette page](/Help/Formulas) pour plus de détails.
- **Opérateur** : Lopérateur est soit `+` (relatif) ou `=` (absolu). Les valeurs relatives _ajoutent_ à un attribut,
alors que les valeurs absolues _fixent_ lattribut au résultat de la formule.
- **Cible** : L'attribut à modifier avec ce changement.
- **Modificateur** : Le modificateur de ce changement.
- **Priorité** : La priorité de ce changement. Les changements avec de moindres propriétés seront effectués plus tard.
- **Notes de contexte** : Cest une liste de notes contextuelles qui sont montrées dans les situations appropriées. De
gauche à droite :
- **Description** : La description à montrer dans les situations appropriées. Chaque nouvelle ligne ajoute une
nouvelle description à la même cible. Vous pouvez utiliser les styles de jets utilisables dans Foundry dans
celles-ci.
- **Cible** : L'attribut à modifier avec ce changement.
## Opérateur de script
Les 'formules' des changements utilisant l'opérateur script sont actuellement des petits scripts en JavaScript qui sont
lancés lorsque vous faites les changements. Des connaissances en JavaScript sont requises pour les comprendre.
> ⚠ Les opérateurs Script sont désactivés par défaut. ⚠
>
> **Activez-les uniquement si vous faites confiance à vos joueurs, les activer leur permettra d'exécuter du code
> JavaScript avec des autorisations élevées !**
>
> Si, et seulement si, vous faites confiance à chaque joueur, vous pouvez activer les opérateurs de script dans
> Paramètres système de jeu > Activer les changements par Script.
Au sein de ces scripts, les variables suivantes sont utilisées :
- `d` Les donnés du lancer au moment de procéder au changement. Contient toute variable que vous pourriez utiliser au
sein dun changement normal de formule en utilisant le symbole `@`.
- `result` Ceci contient deux variables de plus, `value` et `operator`. Définissez `value` au résultat numérique que
vous souhaitez pour le changement et `operator` sur `add` ou `set`.
Par défaut `value` vaut `0` et `operator` vaut `add`.

View File

@@ -0,0 +1,3 @@
# Consommables
Les consommables représentent des objets physiques avec une utilisation limitée, tels que potions et baguettes.

View File

@@ -0,0 +1,3 @@
# Conteneurs
Les conteneurs sont des objets qui peuvent en contenir dautres.

View File

@@ -0,0 +1,11 @@
# Description
![Description example](/Help/img/item-description.webp)
1. **Nom** : Le nom de lobjet une fois identifié.
1. **Nom (non-identifié)** : Le nom de l'objet, s'il n'est pas identifié. Affiche le nom identifié aux joueurs si laissé
vide.
1. **Description** : La description à montrer une fois lobjet identifié.
1. **Unidentified Description** : La description à montrer aux joueurs, si l'objet n'est pas identifié.
1. **Prix** : Le prix de l'objet, en pièces d'or, si identifié.
1. **Prix (non-identifié)** : Le prix de l'objet, en pièces d'or, si non identifié.

View File

@@ -0,0 +1,26 @@
# Équipement
Léquipement représente tous les objets autres que les armes équipables, incluant les armures, les boucliers et les
objets merveilleux.
![Détails de l'équipement](/Help/img/equipment-details.webp)
**Maniement des armes / armures, Langues** : Maniements et langues accordés par cet objet, qui apparaîtront dans les
attributs de l'acteur et affecteront par exemple la vérification de la pénalité d'armure due à la non maîtrise de
l'armure.
**Catégorie** : La catégorie darmure (armure, bouclier ou autre chose)
**Type** : La taille de larmure ou du bouclier ou un autre type dobjet (vêtement, objet merveilleux, etc.)
**Emplacement** : Quel emplacement cet objet occupe (seulement pour les objets autres que les armures ou les boucliers)
**Taille** : La taille de l'objet, similaire à la taille d'un personnage
**Statut de l'équipement** : Les étiquettes de statut de cet objet particulier :
- **Équipé** : Si lobjet est actuellement équipé et transfère ses modifications à son acteur (sil y en a)
- **Identifié (MJ seulement)** : Si l'objet est actuellement identifié et montre les informations identifiées aux
joueurs
- **De maître** : Si lobjet est de maître, selon les règles de base
- **Brisé** : Si lobjet est brisé, selon les règles de base

View File

@@ -0,0 +1,9 @@
# Flags
Les flags peuvent être utilisés par des modules et des macros. Les flags booléens ne font rien par eux-mêmes, mais les
flags dictionnaire peuvent être utilisés dans les jets, en plus de leur utilisation dans les macros et les modules.
## Flags dictionnaire
Vous pouvez accéder aux Flags dictionnaire à l'intérieur des jets en utilisant `@dFlags.(itemTag).(flagName)` ou
avec `@item.dFlags.(flagName)` au sein de l'objet actuel.

View File

@@ -0,0 +1,4 @@
# Butin
Les objets de butin sont toutes sortes dobjets physiques qui ne rentrent pas dans les autres catégories majeures, comme
des munitions et des biens de consommation courante.

View File

@@ -0,0 +1,62 @@
# Appels de scripts
La plupart des objets ont certaines catégories d'appels de script, qui sont une combinaison de macros et de scripts en
ligne qui s'exécutent lors d'événements spécifiques pour cet élément.
## Utilisation de macros comme appel de script
Pour utiliser les macros en tant qu'appel de script, faites simplement glisser une macro de quelque part vers la
catégorie d'appel de script sur laquelle vous souhaitez les exécuter.
## Variables
La disponibilité de variables diffère quelque peu de ce qui est disponible dans les macros classiques.
Vous trouverez ci-dessous une liste des variables présentes dans les appels de script.
| Nom | Description |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `item` | L'objet à partir duquel cet événement a été appelé. |
| `actor` | L'acteur qui possède l'objet appelant. Peut être `null` si l'élément n'est pas sur un acteur. |
| `shared` | Un objet qui commence vide, mais qui est partagé entre tous les appels de script d'un même événement, après quoi il est renvoyé à la fonction appelante, qui peut ou non en faire quelque chose. |
## Catégories
### Utiliser
Appelé lorsqu'un objet a été utilisé.
Si un objet a au moins un appel de script dans cette catégorie, il est utilisable quoi qu'il en soit.
Cet appel aura une variable supplémentaire `shared.attackData.action` qui fait référence à l'action spécifique utilisée.
Vous pouvez utiliser `shared.attackData.action.tag` pour différencier les actions.
Optionnellement, `shared.reject` peut être défini sur `true` pour annuler l'utilisation de l'élément.
### Équiper
Appelé lorsqu'un objet a été équipé ou déséquipé.
Cet appel aura une variable supplémentaire `equipped` qui vaudra soit `true` s'il vient d'être équipé, soit `false` s'il
vient d'être déséquipé.
### Basculer
Appelé lorsqu'un buff ou une fonctionnalité a été activé / désactivé.
Cet appel aura une variable supplémentaire `state` qui vaudra `true` si elle vient d'être activée ou `false` si elle
vient d'être désactivée.
### Modifier la quantité
Appelé lorsque la quantité d'un objet physique a été modifiée.
Cet appel aura les variables supplémentaires `quantity.previous` et `quantity.new`, qui contiennent respectivement la
quantité avant et après la mise à jour.
### Changer de niveau
Appelé lorsque le niveau d'un objet a été modifié.
Cet appel aura les variables supplémentaires `level.previous` et `level.new`, qui contiennent respectivement le niveau
avant et après la mise à jour.

View File

@@ -0,0 +1,45 @@
# Armes
Les armes sont censées représenter les armes physiques qu'un personnage peut détenir.
![Weapon Details](/Help/img/weapon-details.webp)
## Actions
Les actions individuelles intégrées à cette action peuvent être trouvées ici.
Lors de l'attaque, ce sera la configuration de l'action qui déterminera comment l'attaque est lancée.
**Utilisations limitées :** Si l'objet n'a qu'un nombre limité d'utilisations ou de charges par jour, cela peut être
configuré ici.
## Notes sur les attaques et les effets
Ces notes apparaîtront dans les encarts du chat, visibles uniquement par les utilisateurs disposant des autorisations de
propriétaire pour cet élément.
## Aura
L'aura magique de l'arme, y compris son école et son niveau de lanceur de sorts, peut être saisie ici.
## Weapon Details
**Créer une attaque** : Cliquer sur ce bouton créera un élément d'attaque dans l'onglet de combat de cet acteur.
**Catégorie** : La catégorie de l'arme (simple, de guerre, exotique ou divers)
**Type** : Le type d'arme (légère, à une main, à deux mains ou à distance)
**Taille** : La taille de l'arme, similaire à la taille d'un personnage
**Statut de l'équipement** :
- **Équipé** : Si lobjet est actuellement équipé et transfère ses modifications à son acteur (sil y en a)
- **Identifié (MJ seulement)** : Si l'objet est actuellement identifié et montre les informations identifiées aux
joueurs
- **De maître** : Si lobjet est de maître, selon les règles de base
- **Brisé** : Si lobjet est brisé, selon les règles de base
**Propriétés d'arme** : Les propriétés de larme, selon les règles de base (ne fait rien mécaniquement)
**Bonus d'altération** : Le bonus daltération de l'objet, selon les règles de base

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,761 @@
/**
* This namespace contains hook events fired by the system.
* All hooks introduced by the system are prefixed with `pf1` to namespace them.
* Each hook contains a remark denoting whether it is called with [`Hooks.callAll`](https://foundryvtt.com/api/v10/classes/client.Hooks.html#callAll)
* or [`Hooks.call`](https://foundryvtt.com/api/v10/classes/client.Hooks.html#callAll).
* Only hooks that are called with `Hooks.call` can be stopped by returning `false` from the callback.
*
* @module hookEvents
* @example Registering callback
* ```javascript
* Hooks.on("pf1PostReady", () => {
* console.log("The system is now ready.");
* });
* ```
* @example Stopping a process by returning `false`
* ```javascript
* Hooks.on("pf1PreActorRollSkill", () => {
* return false; // No chat message will be posted
* });
* ```
*/
import { ActorPF } from "@actor/actor-pf.mjs";
import { ItemPF } from "@item/item-pf.mjs";
import { ItemBuffPF } from "@item/item-buff.mjs";
import { ItemSheetPF_Container } from "./module/applications/item/container-sheet.mjs";
import { ItemAction } from "@component/action.mjs";
import { ItemChange } from "@component/change.mjs";
import { ItemClassPF } from "@item/item-class.mjs";
import { ActionUse } from "@actionUse/action-use.mjs";
import * as actorPF from "@actor/actor-pf.mjs";
import * as itemPF from "@item/item-pf.mjs";
declare global {
namespace Hooks {
interface StaticCallbacks {
// ------------------------- //
// Initialization //
// ------------------------- //
/**
* A hook event fired by the system when it has finished its own `init` phase.
*
* @group Initialization
* @remarks Called by {@link Hooks.callAll}
*/
pf1PostInit: () => void;
/**
* A hook event fired by the system when it has finished its own `setup` phase.
*
* @group Initialization
* @remarks Called by {@link Hooks.callAll}
*/
pf1PostSetup: () => void;
/**
* A hook event fired by the system when it has finished its own `ready` phase.
* As the system's `ready` hook is asynchronous, this is the only hook that guarantees that the system is ready.
* The default `ready` hook includes no such guarantee.
*
* @group Initialization
* @remarks Called by {@link Hooks.callAll}
*/
pf1PostReady: () => void;
// ------------------------- //
// Actor //
// ------------------------- //
/**
* A hook event fired by the system when one or more of an actor's conditions have changed.
* The `conditions` object can be found in `actor.system.conditions`.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @see {@link pf1.registry.conditions conditions}
* @param actor - The actor whose conditions have changed.
* @param condition - The name of the condition that has changed as per `CONFIG.PF1.conditionTypes`.
* @param state - The new state of the condition.
*/
pf1ToggleActorCondition: (
actor: ActorPF,
condition: keyof typeof pf1.config.conditionTypes | (string & {}), // string & {} prevents the enum strings from disappearing into string
state: boolean
) => void;
/**
* A hook event fired by the system when the `system.active` property of an {@link ItemBuffPF} embedded
* in an {@link ActorPF} has changed.
* This is also fired when a buff with its `active` state already set to `true` is added to an actor.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor whose buff's active state has changed.
* @param item - The buff whose active state has changed.
* @param state - The new state of the buff.
*/
pf1ToggleActorBuff: (actor: ActorPF, item: ItemBuffPF, state: boolean) => void;
/**
* Extended tooltip render hook just before tooltip is activated.
*
* @group Actor Sheet
* @remarks Called by {@link Hooks.callAll}
* @param sheet - Linked sheet
* @param id - Tooltip ID
* @param template - HTML document fragment providing live DOM to the tooltip.
* @since PF1 v10
*/
renderPF1ExtendedTooltip: (sheet: ActorSheet, id: string, template: DocumentFragment) => void;
/**
* A hook event fired by the system when an {@link ActorPF} gains XP.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who gained XP.
* @param xp - An object containing a number that can be adjusted in callbacks.
* @param xp.value - The amount of XP gained.
*/
pf1GainXp: (actor: ActorPF, xp: { value: number }) => void;
/**
* A hook event fired by the system when an {@link ActorPF}'s base data is prepared.
* This happens whenever an actor is updated, and the preparation process is expected to be synchronous.
* Data added or mutated asynchronously might not be factored in at all.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor whose data is prepared.
*/
pf1PrepareBaseActorData: (actor: ActorPF) => void;
/**
* A hook event fired by the system when an {@link ActorPF}'s derived data is prepared.
* This happens whenever an actor is updated, and the preparation process is expected to be synchronous.
* Data added or mutated asynchronously might not be factored in at all.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor whose data is prepared.
*/
pf1PrepareDerivedActorData: (actor: ActorPF) => void;
/**
* A hook event fired by the system when an actor's {@link ActorPF.performRest} is called.
*
* @group Actor
* @remarks Called by {@link Hooks.call}
* @see {@link pf1.documents.actor.ActorPF.performRest ActorPF#performRest}
* @param actor - The actor who is resting.
* @param restOptions - The options passed to the method's call.
* Mutating this data will not affect the system's calculations, as they are finished when this hook is fired.
* This data can be used to base different rest calculations on, however.
* @param updateData - The data the resting actor will be updated with.
* This data object can be mutated to affect the update (e.g. the number of hit points).
* @param itemUpdates - An array of item updates to be applied to the resting actor.
* This array can be mutated to affect the update (e.g. which item's uses are restored).
* @returns Explicitly return `false` to prevent the actor from resting.
*/
pf1PreActorRest: (
actor: ActorPF,
restOptions: actorPF.ActorRestOptions,
updateData: Record<string, unknown>,
itemUpdates: Record<string, unknown>[]
) => boolean;
/**
* A hook event fired by the system after an actor has rested.
*
* @group Actor
* @remarks Called by {@link Hooks.callAll}
* @see {@link pf1.documents.actor.ActorPF.performRest ActorPF#performRest}
* @param actor - The actor who has rested.
* @param restOptions - The options passed to the method's call.
* Mutating this data will not affect the system's calculations, as they are finished when this hook is fired.
* This data can be used to base different rest calculations on, however.
* @param updateData - The data the resting actor was updated with.
* @param itemUpdates - An array of item updates applied to the resting actor.
*/
pf1ActorRest: (
actor: ActorPF,
restOptions: ActorRestOptions,
updateData: Record<string, unknown>,
itemUpdates: Record<string, unknown>[]
) => void;
// ------------------------- //
// Actor Rolls //
// ------------------------ //
/**
* A hook event fired by the system when an {@link ActorPF} rolls a skill.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling a skill
* @param options - Additional options for the roll
* @param skill - The ID of the skill being rolled
* @returns Explicitly return `false` to prevent the actor from rolling the skill.
*/
pf1PreActorRollSkill: (actor: ActorPF, options: ActorRollOptions, skill: string) => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled a skill.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled a skill
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
* @param skill - The ID of the skill that was rolled
*/
pf1ActorRollSkill: (actor: ActorPF, result: ChatMessage | object, skill: string) => void;
/**
* A hook event fired by the system when an {@link ActorPF} rolls their BAB.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling their BAB
* @param options - Additional options for the roll
* @returns Explicitly return `false` to prevent the actor from rolling their BAB.
*/
pf1PreActorRollBab: (actor: ActorPF, options: ActorRollOptions) => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled their BAB.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled their BAB
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
*/
pf1ActorRollBab: (actor: ActorPF, result: ChatMessage | object) => void;
/**
* A hook event fired by the system when an {@link ActorPF} rolls a caster level check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling a caster level check
* @param options - Additional options for the roll
* @param spellbook - The key of the spellbook whose caster level is rolled
* @returns Explicitly return `false` to prevent the actor from rolling the caster level check.
*/
pf1PreActorRollCl: (actor: ActorPF, options: ActorRollOptions, spellbook: string) => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled a caster level check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled a caster level check
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
* @param spellbook - The key of the spellbook whose caster level was rolled
*/
pf1ActorRollCl: (actor: ActorPF, result: ChatMessage | object, spellbook: string) => void;
/**
* A hook event fired by the system when an {@link ActorPF} rolls a concentration check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling a concentration check
* @param options - Additional options for the roll
* @param spellbook - The key of the spellbook whose concentration is rolled
* @returns Explicitly return `false` to prevent the actor from rolling the concentration check.
*/
pf1PreActorRollConcentration: (actor: ActorPF, options: ActorRollOptions, spellbook: string) => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled a concentration check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled a concentration check
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
* @param spellbook - The key of the spellbook whose concentration was rolled
*/
pf1ActorRollConcentration: (actor: ActorPF, result: ChatMessage | object, spellbook: string) => void;
/**
* A hook event fired by the system when an {@link ActorPF} rolls a save.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling a save
* @param options - Additional options for the roll
* @param save - The key of the save being rolled
* @returns Explicitly return `false` to prevent the actor from rolling the save.
*/
pf1PreActorRollSave: (actor: ActorPF, options: ActorRollOptions, save: "fort" | "ref" | "will") => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled a save.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled a save
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
* @param save - The key of the save that was rolled
*/
pf1ActorRollSave: (actor: ActorPF, result: ChatMessage | object, save: "fort" | "ref" | "will") => void;
/**
* A hook event fired by the system when an {@link ActorPF} rolls an ability check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.call}
* @param actor - The actor rolling an ability check
* @param options - Additional options for the roll
* @param ability - The key of the ability being rolled
* @returns Explicitly return `false` to prevent the actor from rolling the ability check.
*/
pf1PreActorRollAbility: (actor: ActorPF, options: ActorRollOptions, ability: string) => boolean;
/**
* A hook event fired by the system after an {@link ActorPF} rolled an ability check.
*
* @group Actor Rolls
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor who rolled an ability check
* @param result - The roll result, either as {@link ChatMessage} if one was created, or as object containing
* data that would have been used to create one.
* @param ability - The key of the ability that was rolled
*/
pf1ActorRollAbility: (actor: ActorPF, result: ChatMessage | object, ability: string) => void;
// ------------------------- //
// Item //
// ------------------------ //
/**
* A hook event fired by the system when the level of a class item is changed.
*
* @group Item
* @remarks Called by {@link Hooks.callAll}
* @param actor - The actor whose class item's level is being changed.
* @param classItem - The class item whose level is being changed.
* @param currentLevel - The current level of the class item.
* @param newLevel - The new level of the class item.
*/
pf1ClassLevelChange: (actor: ActorPF, classItem: ItemClassPF, currentLevel: number, newLevel: number) => void;
/**
* A hook event fired by the system when an item's chat card is to be displayed.
*
* @group Item
* @remarks Called by {@link Hooks.call}
* @see {@link pf1.documents.item.ItemPF.displayCard ItemPF#displayCard}
* @param item - The item whose chat card is being displayed.
* @param data - Data related to the item's use.
* @returns Explicitly return `false` to prevent the item's chat card from being displayed.
*/
pf1DisplayCard: (
item: ItemPF,
data: {
/** The path of the template used to render the chat card */
template: string;
/**
* The data to be passed to the {@link foundry.utils.renderTemplate} call.
* The contents of this object can change unexpectedly, as each change to the system's chat card template
* or item data will affect it.
*/
templateData: Record<string, unknown>;
/** The data passed to {@link ChatMessage.create} (excluding `content` from the rendered template) */
chatData: Record<string, unknown>;
}
) => boolean;
// ------------------------- //
// Actions //
// ------------------------- //
/**
* A hook event fired by the system when an action is to be used.
* This hook fires before any updates are applied to the actor/item, like ammo or spell slots, and before
* any attacks are rolled.
*
* @group Actions
* @remarks Called by {@link Hooks.callAll}
* @param actionUse - The {@link ActionUse} instance containing all data relevant to the action use.
*/
pf1CreateActionUse: (actionUse: ActionUse) => void;
/**
* A hook event fired by the system when an action is to be used.
* This hook fires before any updates are applied to the actor/item, like ammo or spell slots and includes
* all of the action's rolled attacks.
*
* @group Actions
* @remarks Called by {@link Hooks.call}
* @param actionUse - The {@link ActionUse} instance containing all data relevant to the action use.
* @returns Explicitly return `false` to prevent the action from being used.
*/
pf1PreActionUse: (actionUse: ActionUse) => boolean;
/**
* A hook event fired by the system when an action is used, before the chat message is created.
*
* @group Actions
* @remarks Called by {@link Hooks.call}
* @param actionUse - The {@link ActionUse} instance containing all data relevant to the action use.
* @returns Explicitly return `false` to prevent the action's usage chat card being displayed.
*/
pf1PreDisplayActionUse: (actionUse: ActionUse) => boolean;
/**
* A hook event fired by the system when an action has been successfully used.
* This hook fires after the action has been used and after any chat .
*
* @group Actions
* @remarks Called by {@link Hooks.callAll}
* @param actionUse - The {@link ActionUse} instance containing all data relevant to the action use.
* @param chatMessage - The {@link ChatMessage | null} created by using the action, or null if no message was created.
*/
pf1PostActionUse: (actionUse: ActionUse, chatMessage: ChatMessage?) => void;
/**
* Pre-attack roll hook fired before rolling an attack.
*
* @param action - Action triggering the attack roll
* @param config - Attack configuration
* @param rollData - Roll data
* @param rollOptions - Options to be passed to D20RollPF
* @param parts - Individual Roll parts added to formula
* @param changes - The {@link pf1.components.ItemChange ItemChange}s applicable to this attack before they're reduced to the highest bonus of each type
*/
pf1PreAttackRoll: (
action: ItemAction,
config: object,
rollData: object,
rollOptions: object,
parts: string[],
changes: ItemChange[]
) => void;
/**
* Post attack roll hook fired after evaluating attack roll.
*
* @param {ItemAction} action - Action that triggered the attack roll
* @param {D20RollPF} roll - The attack roll
* @param {object} config - Attack configuration
*/
pf1AttackRoll: (action: ItemAction, roll: D20RollPF, context: object) => void;
/**
* Pre-attack roll hook fired before rolling an attack.
*
* @param action - Action triggering the attack roll
* @param rollData - Roll data
* @param parts - Individual DamageParts added to formula (only the first's `extra` is used)
* @param changes - The ItemChanges applicable to this attack before they're reduced to the highest bonus of each type
*/
pf1PreDamageRoll: (action: ItemAction, rollData: object, parts: DamagePart[], changes: ItemChange[]) => void;
// ------------------------- //
// Changes //
// ------------------------- //
/**
* A hook event fired by the system when the system determines which data fields a change target should affect,
* i.e. flattens the change target to target data fields.
* This is called for every {@link pf1.components.ItemChange ItemChange} on every actor for every data preparation,
* so callbacks should be efficient.
*
* @group Changes
* @remarks Called by {@link Hooks.callAll}
* @example Adding a (weird) Change that increases an actor's gold
* ```js
* // Add a change target
* Hooks.once("init", () => {
* CONFIG.PF1.buffTargets.gp = {
* label: "Gold Pieces",
* category: "misc",
* };
* });
* // Define the correct data field for the change to target
* Hooks.on("pf1GetChangeFlat", (result, target, modifierType, value, actor) => {
* if (target === "gp") {
* result.push("system.currency.gp");
* }
* });
* ```
* @param result - An array of target data fields.
* @param target - The change target as per the change's `subTarget` property,
* see {@link pf1.components.ItemChange.target ItemChange#target} and {@link pf1.config.buffTargets change targets}.
* @param modifierType - The change type as per the change's `modifier` property,
* see {@link pf1.components.ItemChange.type ItemChange#type} and {@link pf1.config.bonusTypes change types}.
* @param value - The numerical change value, if any.
* @param actor - The actor the change is being applied to.
*/
pf1GetChangeFlat: (
result: string[],
target: BuffTarget | (string & {}),
modifierType: ModifierType | (string & {}) | undefined,
value: number | undefined,
actor: ActorPF
) => void;
/**
* A hook event fired by the system when an actor's data is prepared and the system adds inherent/default Changes.
*
* @group Changes
* @remarks Called by {@link Hooks.callAll}
* @example Adding a default Change that increases every actor's strength
* ```js
* Hooks.on("pf1AddDefaultChanges", (actor, changes) => {
* changes.push(
* new pf1.components.ItemChange({
* subTarget: "str",
* formula: "2",
* })
* );
* });
* ```
* @param actor - The actor whose data is being prepared.
* @param changes - An array of default changes to be applied to the actor.
*/
pf1AddDefaultChanges: (actor: ActorPF, changes: ItemChange[]) => void;
// ------------------------- //
// Migration //
// ------------------------- //
/**
* A hook event fired by the system when it starts its {@link pf1.migrations.migrateWorld migration}.
*
* @group Migration
* @remarks Called by {@link Hooks.callAll}
*/
pf1MigrationStarted: () => void;
/**
* A hook event fired by the system when it has finished its {@link pf1.migrations.migrateWorld migration}.
*
* @group Migration
* @remarks Called by {@link Hooks.callAll}
*/
pf1MigrationFinished: () => void;
// ------------------------- //
// Sheet Events //
// ------------------------- //
/**
* A hook event fired by the system when data is dropped onto an {@link ItemSheetPF_Container}.
*
* @group Sheet Events
* @remarks Called by {@link Hooks.call}
* @param item - The container item the sheet belongs to.
* @param sheet - The container item's sheet.
* @param data - The data that was dropped.
* @returns Explicitly return `false` to prevent the drop event from being handled.
*/
pf1DropContainerSheetData: (
item: ItemContainerPF,
sheet: ItemSheetPF_Container,
data: Record<string, unknown>
) => boolean;
// ------------------------- //
// Item Links //
// ------------------------- //
/**
* A hook event fired by the system after an item link is created.
*
* @group Item Links
* @remarks Called by {@link Hooks.callAll}
* @param item - The item on which the link is being created.
* @param link - The link being created.
* @param kind - The kind of link being created.
*/
pf1CreateItemLink: (
item: ItemPF,
link: ItemLink,
kind: "children" | "charges" | "classAssociations" | "ammunition"
) => void;
/**
* A hook event fired by the system after an item link is deleted.
*
* @group Item Links
* @remarks Called by {@link Hooks.callAll}
* @param item - The item whose links data was changed.
* @param link - Link data that was deleted.
* @param kind - The type of the link that was deleted.
*/
pf1DeleteItemLink: (
item: ItemPF,
link: ItemLink,
kind: "children" | "charges" | "classAssociations" | "ammunition"
) => void;
// ------------------------- //
// Roll Data //
// ------------------------- //
/**
* A hook event fired by the system when roll data is created.
* The hook is fired at the end of the system's roll data creation process.
*
* @group Roll Data
* @remarks Called by {@link Hooks.callAll}
* @see {@link pf1.documents.actor.ActorPF.getRollData ActorPF#getRollData}
* @see {@link pf1.documents.item.ItemPF.getRollData ItemPF#getRollData}
* @see {@link pf1.components.ItemAction.getRollData ItemAction#getRollData}
* @param document - The document or component whose roll data is to be created.
* @param data - The created roll data that can be modified.
*/
pf1GetRollData: (document: ActorPF | ItemPF | ItemAction, data: Record<string, unknown>) => void;
// ------------------------- //
// D20 Rolls //
// ------------------------- //
/**
* A hook event fired by the system when a {@link pf1.dice.d20Roll} is rolled. Primarily used by actor non-attack rolls (e.g. skills, attributes, etc).
*
* @group D20 Rolls
* @remarks Called by {@link Hooks.call}
* @param roll - The roll object, before it's evaluated
* @param options - Options used to create the roll
* @returns Explicitly return `false` to prevent the roll.
*/
pf1PreD20Roll: (roll: D20RollPF, options: Partial<D20ActorRollOptions>) => boolean;
// ------------------------- //
// Combat //
// ------------------------- //
/**
* Hook event fired when turns are skipped in combat.
*
* @group Combat
* @remarks Called by {@link Hooks.callAll}
* @param combat - Relevant combat instance
* @param skipped - Set of combatants whose turn was passed over.
* @param context - Combat update context object.
*/
pf1CombatTurnSkip: (combat: CombatPF, skipped: Set<CombatantPF>, context: Record<string, unknown>) => void;
}
/**
* A hook event fired by the system when a registry is initialized.
* Substitute the `Registry` part of the hook name with the name of the registry,
* for example `pf1RegisterDamageTypes`.
*
* @group Registry
* @remarks Called by {@link Hooks.callAll}
* @param registry - The registry that is initialized.
* @see {@link pf1.registry.Registry.register Registry#register}
* @see {@link pf1.registry.Registry.unregister Registry#unregister}
* @example
* ```js
* Hooks.on("pf1RegisterDamageTypes", (registry, model) => {
* registry.register("my-module", "bleed", {
* name: "Bleed",
* icon: "ra ra-droplet",
* color: "red",
* category: "misc",
* });
* });
* ```
*/
export type pf1RegisterRegistry<R extends pf1.registry.Registry = pf1.registry.Registry> = (registry: R) => void;
}
}
interface DamagePart {
/** The base damage formula */
base: string;
/** The damage types for the damage */
damageType: { custom: string; values: string[] };
/** Extra damage parts, used only by the first damage part instance in the array (e.g. `5[bonus damage]`) */
extra: string[];
/** Type type of damage */
type: "crit" | "nonCrit" | "normal";
}
interface ItemLink {
/** The unique ID of this link */
id: string;
dataType: string;
/** The displayed name of this link */
name: string;
/** The path to the image of this link */
img: string;
/** The index at which this link is displayed */
_index: number;
/** The level at which the feature linked by this class association is gained. */
level?: number;
}
// Initialization
export declare const pf1PostInit: Hooks.StaticCallbacks["pf1PostInit"];
export declare const pf1PostSetup: Hooks.StaticCallbacks["pf1PostSetup"];
export declare const pf1PostReady: Hooks.StaticCallbacks["pf1PostReady"];
// Actor
export declare const pf1ToggleActorCondition: Hooks.StaticCallbacks["pf1ToggleActorCondition"];
export declare const pf1ToggleActorBuff: Hooks.StaticCallbacks["pf1ToggleActorBuff"];
export declare const pf1GainXp: Hooks.StaticCallbacks["pf1GainXp"];
export declare const renderPF1ExtendedTooltip: Hooks.StaticCallbacks["renderPF1ExtendedTooltip"];
export declare const pf1PrepareBaseActorData: Hooks.StaticCallbacks["pf1PrepareBaseActorData"];
export declare const pf1PrepareDerivedActorData: Hooks.StaticCallbacks["pf1PrepareDerivedActorData"];
export declare const pf1PreActorRest: Hooks.StaticCallbacks["pf1PreActorRest"];
export declare const pf1ActorRest: Hooks.StaticCallbacks["pf1ActorRest"];
// Actor Rolls
export declare const pf1PreActorRollSkill: Hooks.StaticCallbacks["pf1PreActorRollSkill"];
export declare const pf1PreActorRollBab: Hooks.StaticCallbacks["pf1PreActorRollBab"];
export declare const pf1PreActorRollCl: Hooks.StaticCallbacks["pf1PreActorRollCl"];
export declare const pf1PreActorRollConcentration: Hooks.StaticCallbacks["pf1PreActorRollConcentration"];
export declare const pf1PreActorRollSave: Hooks.StaticCallbacks["pf1PreActorRollSave"];
export declare const pf1PreActorRollAbility: Hooks.StaticCallbacks["pf1PreActorRollAbility"];
export declare const pf1ActorRollSkill: Hooks.StaticCallbacks["pf1ActorRollSkill"];
export declare const pf1ActorRollBab: Hooks.StaticCallbacks["pf1ActorRollBab"];
export declare const pf1ActorRollCl: Hooks.StaticCallbacks["pf1ActorRollCl"];
export declare const pf1ActorRollConcentration: Hooks.StaticCallbacks["pf1ActorRollConcentration"];
export declare const pf1ActorRollSave: Hooks.StaticCallbacks["pf1ActorRollSave"];
export declare const pf1ActorRollAbility: Hooks.StaticCallbacks["pf1ActorRollAbility"];
// Item
export declare const pf1ClassLevelChange: Hooks.StaticCallbacks["pf1ClassLevelChange"];
export declare const pf1DisplayCard: Hooks.StaticCallbacks["pf1DisplayCard"];
// Action
export declare const pf1CreateActionUse: Hooks.StaticCallbacks["pf1CreateActionUse"];
export declare const pf1PostActionUse: Hooks.StaticCallbacks["pf1PostActionUse"];
export declare const pf1PreActionUse: Hooks.StaticCallbacks["pf1PreActionUse"];
export declare const pf1PreAttackRoll: Hooks.StaticCallbacks["pf1PreAttackRoll"];
export declare const pf1PreDamageRoll: Hooks.StaticCallbacks["pf1PreDamageRoll"];
export declare const pf1AttackRoll: Hooks.StaticCallbacks["pf1AttackRoll"];
export declare const pf1PreDisplayActionUse: Hooks.StaticCallbacks["pf1PreDisplayActionUse"];
// Changes
export declare const pf1GetChangeFlat: Hooks.StaticCallbacks["pf1GetChangeFlat"];
export declare const pf1AddDefaultChanges: Hooks.StaticCallbacks["pf1AddDefaultChanges"];
// Migration
export declare const pf1MigrationStarted: Hooks.StaticCallbacks["pf1MigrationStarted"];
export declare const pf1MigrationFinished: Hooks.StaticCallbacks["pf1MigrationFinished"];
// Sheet Events
export declare const pf1DropContainerSheetData: Hooks.StaticCallbacks["pf1DropContainerSheetData"];
// Item Links
export declare const pf1CreateItemLink: Hooks.StaticCallbacks["pf1CreateItemLink"];
export declare const pf1DeleteItemLink: Hooks.StaticCallbacks["pf1DeleteItemLink"];
// Roll Data
export declare const pf1GetRollData: Hooks.StaticCallbacks["pf1GetRollData"];
// D20 Rolls
export declare const pf1PreD20Roll: Hooks.StaticCallbacks["pf1PreD20Roll"];
// Combat
export declare const pf1CombatTurnSkip: Hooks.StaticCallbacks["pf1CombatTurnSkip"];
// Dynamic hooks
// Registry
export import pf1RegisterRegistry = Hooks.pf1RegisterRegistry;

View File

@@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Initial Index (for Vite)</title>
</head>
<body>
<script async defer type="module" src="./pf1.js"></script>
<script>
window.location = "/";
</script>
</body>
</html>

View File

@@ -0,0 +1,27 @@
{
"compilerOptions": {
"target": "ES2022",
"lib": ["DOM", "ES2022"],
"allowJs": true,
"checkJs": false,
"moduleResolution": "node",
"esModuleInterop": true,
"strict": true,
"skipLibCheck": true,
"baseUrl": ".",
"paths": {
"@actor/*": ["./module/documents/actor/*"],
"@item/*": ["./module/documents/item/*"],
"@component/*": ["./module/components/*"],
"@app/*": ["./module/applications/*"],
"@dice/*": ["./module/dice/*"],
"@config": ["./module/config.mjs"],
"@actionUse/*": ["./module/action-use/*"],
"@utils": ["./module/utils/lib.mjs"],
"@utils/*": ["./module/utils/*"]
},
"types": ["@league-of-foundry-developers/foundry-vtt-types", "@ethaks/fvtt-quench"]
},
"include": ["**/*.mjs", "**/*.js", "**/*.d.ts"],
"exclude": ["node_modules", "dist", "foundry"]
}

View File

@@ -0,0 +1,907 @@
{
"PF1": {
"Title": "开拓者 1",
"KEYBINDINGS": {
"SkipConfirmPrompt": {
"Name": "跳过确认对话"
},
"HideTokenTooltip": {
"Name": "隐藏指示物提示",
"Hint": "按下此键时隐藏指示物提示"
},
"HideTokenTooltipGMInfo": {
"Name": "显示玩家视角的指示物提示"
},
"ForceShowItem": {
"Name": "强制显示物品",
"Hint": "是否在使用物品宏时在聊天中显示该物品"
}
},
"OptionalAndVariantRules": "选项及变体规则",
"WoundThresholdOverride": "伤害临界覆盖",
"ExperienceConfigName": "设置经验",
"ExperienceConfigLabel": "设置经验",
"ExperienceConfigHint": "设置升级经验.",
"AccessibilityConfigName": "无障碍功能配置",
"AccessibilityConfigLabel": "无障碍功能",
"AccessibilityConfigHint": "改变无障碍功能设定",
"AccessibilityFontSize": "字体大小",
"AccessibilityFontSizeHint": "改变游戏中某些特定位置的字体大小,例如攻击投骰",
"OnMouse": "跟随鼠标",
"Sheet": {
"PC": "玩家角色 (PC)",
"NPC": "非玩家角色 (NPC)",
"NPCLite": "简洁NPC",
"NPCLoot": "战利品",
"Item": "泛用物品",
"Container": "容器"
},
"LevelUp": {
"Chat": {
"Header": "升级报告",
"Health": {
"Header": "生命值",
"Roll": "已为生命值投骰: {add}",
"Manual": "手动生命值: {add}"
},
"FC": {
"Header": "天赋职业奖励"
},
"Extra": {
"Header": "额外",
"NewFeat": "你有一个新专长可选择",
"NewFeats": "你有{newValue}个新专长可选"
},
"AbilityScore": {
"Header": "属性值提升"
}
},
"Health": {
"Roll": {
"Desc": "你该等级的生命值将会基于你生命骰大小投骰决定。"
},
"Manual": {
"Desc": "你会决定该等级自己获得多少生命值。"
}
},
"FC": {
"Label": "天赋职业奖励",
"HP": {
"Desc": "你会获得一点生命值作为该等级的天赋职业奖励。"
},
"Skill": {
"Desc": "你会获得一点自由使用的技能点作为该等级的天赋职业奖励。"
},
"Alt": {
"Desc": "你会获得与种族和职业关联的特殊能力作为该等级的天赋职业奖励。"
}
},
"AbilityScore": {
"Label": "属性值",
"PointsLeft": "剩余点数: {value}",
"Item": {
"Name": "添加属性值",
"Desc": "<p>该功能是用于追踪你获得生命骰时的属性值变化的。</p>"
}
},
"Summary": {
"Label": "概要"
}
},
"General": "总体",
"Apply": "应用",
"ApplyHalf": "减半",
"ApplyDamage": "应用伤害",
"ApplyCriticalDamage": "应用重击伤害",
"ApplyHealing": "应用治疗",
"ApplyCriticalHealing": "应用重击治疗",
"ReduceBy": "减免",
"SwapSelected": "切换选中",
"ClearReduction": "清除减免值",
"Flags": "标志",
"FlagsBoolean": "布尔标志",
"FlagsDictionary": "字典标志",
"AbilityDamage": "属性伤害",
"AbilityDrain": "属性吸取",
"CreateItem": "创建物品",
"EditItem": "编辑物品",
"DuplicateItem": "复制物品",
"DeleteItem": "删除物品",
"DeleteItemTitle": "删除物品: {name}",
"LinkTypeChildren": "附属",
"LinkTypeCharges": "充能",
"LinkTypeClassAssociations": "职业关联",
"LinkHelpChildren": "关联的附属物品会随其附属对象(该物品)一起被删除。",
"LinkHelpCharges": "关联的物品从关联对象(该物品)处继承和共享充能。",
"LinkHelpClassAssociations": "职业关联物品将在角色到达特定职业等级时自动添加。不像其他物品关联,这些必须从合集包中关联。",
"HelpSellMultiplierN": "贩卖比率",
"HelpSellMultiplier": "非交易品出售时的价格比率默认为0.5。交易品总以原价出售.",
"AbilityStr": "力量",
"AbilityDex": "敏捷",
"AbilityCon": "体质",
"AbilityInt": "智力",
"AbilityWis": "感知",
"AbilityCha": "魅力",
"AbilityStrMod": "力量调整值",
"AbilityDexMod": "敏捷调整值",
"AbilityConMod": "体质调整值",
"AbilityIntMod": "智力调整值",
"AbilityWisMod": "感知调整值",
"AbilityChaMod": "魅力调整值",
"AbilityShortStr": "力",
"AbilityShortDex": "敏",
"AbilityShortCon": "体",
"AbilityShortInt": "智",
"AbilityShortWis": "感",
"AbilityShortCha": "魅",
"SavingThrowFort": "强韧",
"SavingThrowRef": "反射",
"SavingThrowWill": "意志",
"ACNormal": "AC",
"ACTouch": "接触AC",
"ACFlatFooted": "措手不及AC",
"CMDFlatFooted": "措手不及CMD",
"WeaponHoldTypeNormal": "正常",
"WeaponHoldTypeTwoHanded": "双手",
"WeaponHoldTypeOffhand": "副手",
"CostGP": "花费 (GP)",
"ClassType": "职业类型",
"Alignment": "阵营",
"ChatReqMats": "需要材料",
"ChatOtherFormula": "其他公式",
"Currency": {
"Label": "货币"
},
"BuffTarAC": "AC",
"BuffTarACGeneric": "泛型",
"BuffTarACArmor": "护甲AC",
"BuffTarACShield": "盾牌AC",
"BuffTarACNatural": "天生护甲AC",
"BuffTarACTouch": "接触AC",
"BuffTarACFlatFooted": "措手不及AC",
"BuffTarStrSkills": "力量技能",
"BuffTarDexSkills": "敏捷技能",
"BuffTarConSkills": "体质技能",
"BuffTarIntSkills": "智力技能",
"BuffTarWisSkills": "感知技能",
"BuffTarChaSkills": "魅力技能",
"BuffTarSpecificSkill": "特殊技能",
"BuffTarAbilityChecks": "属性检定",
"BuffTarStrChecks": "力量检定",
"BuffTarDexChecks": "敏捷检定",
"BuffTarConChecks": "体质检定",
"BuffTarIntChecks": "智力检定",
"BuffTarWisChecks": "感知检定",
"BuffTarChaChecks": "魅力检定",
"BuffTarBonusSkillRanks": "奖励技能等级",
"BuffTarBonusFeats": "奖励专长",
"BuffTarAllAttackRolls": "所有攻击骰",
"BuffTarAllDamageRolls": "所有伤害骰",
"BuffTarAllSavingThrows": "所有豁免骰",
"BuffTarAllSkills": "所有技能",
"BuffTarAllAbilityChecks": "所有属性检定",
"BuffTarAllSpeeds": "所有速度",
"BuffTarMeleeAttack": "近战攻击骰",
"BuffTarRangedAttack": "远程攻击骰",
"BuffTarSpells": "法术",
"SkillAcr": "特技",
"SkillApr": "估价",
"SkillArt": "技艺",
"SkillBlf": "哄骗",
"SkillClm": "攀爬",
"SkillCrf": "工艺",
"SkillDip": "交涉",
"SkillDev": "解除装置",
"SkillDis": "易容",
"SkillEsc": "脱逃",
"SkillFly": "飞行",
"SkillHan": "驯养动物",
"SkillHea": "医疗",
"SkillInt": "威吓",
"SkillKAr": "知识 (奥秘)",
"SkillKDu": "知识 (地城)",
"SkillKEn": "知识 (工程)",
"SkillKGe": "知识 (地理)",
"SkillKHi": "知识 (历史)",
"SkillKLo": "知识 (地方)",
"SkillKNa": "知识 (自然)",
"SkillKNo": "知识 (贵族)",
"SkillKPl": "知识 (位面)",
"SkillKRe": "知识 (宗教)",
"SkillLin": "语言学",
"SkillLor": "学识",
"SkillPer": "察觉",
"SkillPrf": "表演",
"SkillPro": "专业",
"SkillRid": "骑术",
"SkillSen": "察言观色",
"SkillSlt": "巧手",
"SkillSpl": "法术辨识",
"SkillSte": "隐匿",
"SkillSur": "生存",
"SkillSwm": "游泳",
"SkillUMD": "使用魔法装置",
"AddSkill": "添加技能",
"SpellPrepAtWill": "随意",
"SpellPrepPrepared": "准备",
"SpellPrepSpontaneous": "自发",
"SpellsKnown": "已知法术",
"Arcanist": "奥能师",
"RedMantisAssassin": "红螳螂杀手",
"Psychic": "异能者",
"AutoSpellClassLevelOffset": {
"Formula": "职业等级调整",
"InfoBox": "如果你有可以替换你职业等级的进阶职业,将其加在这里(例如 @classes.mysticTheurge.level)"
},
"WeaponType": "武器类型",
"WeaponTypeSimple": "简易",
"WeaponTypeMartial": "军用",
"WeaponTypeExotic": "异种",
"WeaponTypeSplash": "泼溅",
"WeaponSubtype": "武器子类",
"WeaponSubtypeRanged": "远程",
"FavouredClassBonus": {
"Label": "天赋职业奖励",
"HP": "生命值",
"Skill": "技能点",
"Alt": "职业"
},
"Key_Control": "Control",
"InventoryWeapons": "武器",
"InventoryConsumables": "消耗品",
"InventoryContainers": "容器",
"Undefined": "未定义",
"NotificationCreatedAttack": "从 {item} 创建攻击",
"Action_DisplayDefenses": "显示防御信息",
"Info_FirstClass": "从{html}中拖出一个\n或点击上面的'+添加'按钮。",
"Info_FirstClass_Compendium": "职业合集包",
"Info_MissingClass": "你的人物缺少一个职业,查看人物卡概览页中的职业子标签页。",
"CMDNotes": "CMD 备注",
"EffectNotes": "效果备注",
"SpellResistanceNotes": "法术抗力备注",
"ContextNotes": "备注",
"ACNotes": "AC备注",
"SaveNotes": "豁免备注",
"CLNotes": "施法者等级备注",
"NonApplicable": "N/A",
"SkillTypeAdventure": "冒险技能",
"SkillTypeBackground": "背景技能",
"ACP": "ACP",
"ACPLong": "防具检定减值",
"ACPTooltip": "防具检定减值",
"CS": "CS",
"CSTooltip": "本职技能",
"RT": "RT",
"RTTooltip": "需受训",
"SkillModTooltip": "技能调整值",
"BrowseSpells": "浏览法术",
"BrowseItems": "浏览物品",
"BrowseBestiary": "浏览怪物",
"BrowseFeats": "浏览特性",
"BrowseClasses": "浏览职业",
"BrowseRaces": "浏览种族",
"BrowseBuffs": "浏览增益",
"Rest": "休息",
"RestoreHealth": "恢复生命值",
"RestoreDailyUses": "恢复每日充能",
"LongTermCare": "长期护理",
"RollSkillMacroName": "{actor}:骰{skill}",
"DisplayDefensesMacroName": "{actor}:显示防御",
"RollCMBMacroName": "{actor}:骰CMB",
"RollCLMacroName": "{actor}:骰CL({book})",
"RollConcentrationMacroName": "{actor}:骰专注({book})",
"RollBABMacroName": "{actor}:骰BAB",
"RollSaveMacroName": "{actor}: 骰{type}豁免",
"SourceInfoSkillRank_ClassBase": "{className} (基础)",
"SourceInfoSkillRank_ClassFC": "{className} (天赋职业)",
"CreateItemForSpell": "从 {name} 创建物品",
"CreateItemWand": "魔杖",
"CreateItemScroll": "卷轴",
"CreateItemPotion": "药水",
"CreateItemWandOf": "{name}魔杖",
"CreateItemScrollOf": "{name}卷轴",
"CreateItemPotionOf": "{name}药水",
"CombatInfo_Header": "战斗",
"CombatInfo_Round": "第{round}轮",
"ScriptCalls": {
"Name": "调用脚本",
"NewName": "调用新脚本",
"Use": {
"Name": "使用",
"Info": "当物品被使用时调用(攻击,饮用药水等)。有一个叫'attacks'的额外数组变量,内含了可能有的动作攻击骰子结果。"
},
"Equip": {
"Name": "装备",
"Info": "当装备/解除装备物品时调用,有一个额外的变量'equipped',值为'true'或'false'。"
},
"Toggle": {
"Name": "开关",
"Info": "当物品被启用/禁用时调用。有一个额外的变量'state',值为'true'或'false'。"
},
"ChangeQuantity": {
"Name": "改变数量",
"Info": "当物品的数量被改变时调用。有额外的变量'quantity.previous'和'quantity.new',两者均为数字。"
},
"ChangeLevel": {
"Name": "改变等级",
"Info": "当物品的等级被改变时调用。有额外的变量'quantity.previous'和'quantity.new',两者均为数字。"
}
},
"AddClass": "添加职业",
"Horizontal": "水平",
"Vertical": "垂直",
"HideHeld": "隐藏所持物品",
"HideArmor": "隐藏护甲",
"HideBuffs": "隐藏增益",
"HideConditions": "隐藏状态",
"HideClothing": "隐藏服装",
"HideName": "隐藏名字",
"Action": "动作",
"All": "全部",
"Attack": "攻击",
"AddEffect": "添加效果",
"AddConditional": "添加情况",
"AddChange": "添加改变",
"AddNote": "添加备注",
"AddEntry": "添加条目",
"Attributes": "属性",
"ArmorClass": "AC",
"Attacks": "攻击",
"Biography": "传记",
"Buffs": "增益",
"Change": "改变",
"Changes": "改变",
"ClassAbilities": "职业能力",
"Conditionals": "特定调整值",
"ConImm": "状态免疫",
"ConRes": "状态抗力",
"Critical": "重击",
"CriticalConfirmation": "重击确认",
"Damage": "伤害",
"DamageCritical": "重击伤害",
"DamageRoll": "伤害掷骰",
"DamageType": "伤害类型",
"DamImm": "伤害免疫",
"DamRed": "伤害减免",
"DamVuln": "易伤",
"Drain": "汲取",
"Penalty": "减值",
"Defense": "防御",
"Defenses": "防御",
"Description": "描述",
"Details": "详情",
"Edit": "编辑",
"Enchantments": "附魔",
"EnRes": "能量抗力",
"Equipped": "已装备",
"NotEquipped": "未装备",
"Carried": "携带",
"Identified": "鉴定",
"Iterative": "迭代",
"Unidentified": "未鉴定",
"Health": "生命",
"Healing": "治疗",
"Wounds": "受伤",
"Vigor": "活力",
"HitDice": "生命骰",
"HitDie": "生命骰",
"InfoShort": "信息",
"Inventory": "所持物",
"Feature": "特性",
"Features": "特性",
"FullRoundAttack": "整轮攻击",
"Languages": "语言",
"LevelDrain": "等级汲取",
"None": "无",
"Notes": "备注",
"Operator": "操作符",
"Quadruped": "四足型",
"Senses": "感官",
"Save": "豁免",
"Size": "体型",
"Resizing": "体型变化",
"Special": "特殊",
"Spells": "法术",
"Stature": "身高",
"StatureLong": "长",
"StatureTall": "高",
"Items": "物品",
"Skills": "技能",
"CharacterName": "人物名",
"Level": "等级",
"Gender": "性别",
"Deity": "信仰",
"Race": "种族",
"RaceSubtypePlural": "亚种",
"Age": "年龄",
"Height": "身高",
"Weight": "体重",
"ItemWeight": "重量",
"Base": "基础",
"TempShort": "临时。",
"TempHP": "临时生命",
"Nonlethal": "瘀伤",
"Initiative": "先攻",
"MaxDexShort": "最大敏捷",
"Type": "类型",
"ActionPlural": "动作",
"ChargePlural": "充能",
"ConditionPlural": "状态",
"Add": "添加",
"ItemName": "物品名",
"BuffName": "增益名",
"SkillName": "技能名",
"AttackName": "攻击名",
"CreateAttack": "创建攻击",
"Active": "激活",
"SpellBook": "法术书",
"SpellBookPlural": "法术书",
"SpellLevel": "法术等级",
"SpellSchool": "法术学派",
"SpellComponents": {
"Label": "法术成分"
},
"SpellResistance": "法术抗力",
"SpellEffect": "特殊效果",
"SubSchool": "子学派",
"SubSchoolExample": "例:召唤, 胁迫",
"TypePlural": "类型",
"SpellTypesExample": "例:强酸, 邪恶",
"SpellEffectExample": "例:一滴酸液",
"Area": "区域",
"Melee": "近战",
"MeleeWeapon": "近战武器",
"MeleeSpell": "近战法术",
"Ranged": "远程",
"RangedWeapon": "远程武器",
"RangedSpell": "远程法术",
"WeaponDamage": "武器伤害",
"SpellDamage": "法术伤害",
"AttackRollPlural": "攻击骰",
"DamageRollPlural": "伤害骰",
"AbilityScore": "属性值",
"AbilityScoreLinks": "属性值关联",
"SavingThrow": "豁免",
"SavingThrowPlural": "豁免",
"SavingThrowEffect": "豁免效果",
"Misc": "杂项",
"MiscShort": "杂项",
"HitPoints": "生命值",
"VulnerableTo": "对 {vulnerability} 易伤",
"ImmuneTo": "对 {immunity} 免疫",
"AbilityTest": "{ability} 属性检定",
"SkillCheck": "{skill} 技能检定",
"SavingThrowRoll": "{save} 豁免",
"SavingThrowButtonLabel": "{type}DC{dc}",
"SavingThrowButtonLabelGMSensitive": "{save} 豁免",
"SpellResistanceNote": "法术抗力 {value}",
"ImmunityPlural": "免疫",
"BABAbbr": "BAB",
"BAB": "基本攻击加值",
"CMBAbbr": "CMB",
"CMB": "战技加值",
"CMDAbbr": "CMD",
"CMDFFAbbr": "失敏CMD",
"CMD": "战技防御",
"Untrained": "未受训",
"DeleteItemConfirmation": "你确定要删除该物品吗?",
"Range": "射程",
"MinRange": "最小射程",
"RangeNote": "射程: {distance} {units}",
"Target": "目标",
"Targets": "目标",
"Effect": "效果",
"Effects": "效果",
"AmountPrepared": "已准备 {count}",
"Prepared": "剩余已准备",
"Unprepared": "未准备",
"InitiallyPrepared": "准备总量",
"ClassPlural": "职业",
"FeatPlural": "专长",
"ClassFeaturePlural": "职业特性",
"NewClassFeaturePlural": "新职业特性",
"TraitPlural": "特质",
"RacialTraitPlural": "种族特性",
"TemplatePlural": "模板",
"Temporary": "临时",
"Permanent": "永久",
"Item": "物品",
"WeaponSize": "武器尺寸",
"WeaponProperties": "武器属性",
"EnhancementBonus": "增强加值",
"BaseWeaponDamage": "基础武器伤害",
"BaseWeaponCritical": "基础武器重击值",
"SpellPreparationType": "法术准备类型",
"CastsLeft": "剩余施法次数",
"CasterLevelOffset": "施法者等级偏移",
"CasterLevelCheck": "施法者等级检定",
"CasterLevel": "施法者等级",
"CasterLevelBonusFormula": "施法者等级加值公式",
"CasterLevelNotes": "施法者等级备注",
"School": "学派",
"Domain": "领域",
"SubDomain": "子领域",
"CastingTime": "施法时间",
"Components": "材料",
"SpellRangeShort": "(25尺+5尺/2等级)",
"SpellRangeMedium": "(100尺+10尺/等级)",
"SpellRangeLong": "(400尺+40尺/等级)",
"SpellRangeShortMetric": "(7.5米+1.5米/2等级)",
"SpellRangeMediumMetric": "(30米+3米/等级)",
"SpellRangeLongMetric": "(120米+12米/等级)",
"ElementalSchool": "元素学派",
"Bloodline": "血统",
"ConcentrationCheck": "专注检定",
"Concentration": "专注",
"ConcentrationBonusFormula": "专注加值公式",
"ConcentrationNotes": "专注备注",
"SpellLevelOffset": "法术环位偏移",
"SpellSlotCost": "法术位消耗",
"SpellCasting": "施展法术",
"SpellcastingClass": "施法职业",
"SpellcastingAbility": "施法属性",
"SpellEffects": "法术效果",
"Usage": "用法",
"Slot": "栏位",
"MaxDexterityModifier": "最大敏捷加值",
"ArmorCheckPenalty": "防具检定减值",
"ArcaneSpellFailure": "奥术失败率",
"AutoCalculateSpellSlots": "自动计算法术位",
"HasCantrips": "拥有戏法/祷念",
"Modifications": "调整",
"PreparePerDay": "每日可准备",
"CastPerDay": "每日可施放",
"SkillsPerLevel": "技能/等级",
"Source": "来源",
"Unlimited": "无限",
"Requirements": "需求",
"Formula": "公式",
"BonusFormula": "加值公式",
"FormulaResult": "公式结果",
"ActionType": "动作类型",
"AttackRollBonus": "攻击加值",
"CriticalThreatRange": "重击范围",
"CriticalMultiplier": "重击倍率",
"CriticalConfirmBonus": "重击确认加值",
"AttackAbility": "攻击属性",
"ExtraAttacks": {
"Label": "额外攻击"
},
"HPAbility": "生命值属性",
"Name": "名字",
"DamageAbility": "伤害属性",
"DamageFormula": "伤害公式",
"BonusDamageFormula": "伤害加值公式",
"BonusAttackFormula": "攻击加值公式",
"HealingFormula": "治疗公式",
"DamageBonus": "伤害加值",
"ActivationCost": "激活费用",
"Duration": "持续时间",
"LimitedUses": {
"Label": "使用限制"
},
"MaximumUsesFormula": "最大使用公式",
"CheckFlags": "标志",
"Quantity": "数量",
"Price": "价格",
"PricePerCharge": "每发充能价格",
"HPShort": "HP",
"Hardness": "硬度",
"SituationalBonus": "环境加值",
"RollMode": "掷骰模式",
"UpdateActor": "更新角色",
"UpdateItem": "更新物品",
"BonusCarryStrength": "负重力量加值",
"BonusCarryMultiplier": "负重乘数加值",
"CarryStrength": "负重力量",
"CarryMultiplier": "负重乘数",
"Multiplier": "乘数",
"CarryLightLoad": "轻载",
"CarryMediumLoad": "中载",
"CarryHeavyLoad": "重载",
"CarryAboveHead": "举过头顶",
"CarryOffGround": "抬离地面",
"CarryDragPush": "拖拽/推动",
"CarryLabel": "携带 {lbs} 磅",
"CarryLabelKg": "携带 {kg} 公斤",
"SkillBonusRankFormula": "加值等级公式",
"ToggleSkillLock": "开关技能清单上几乎不需要部分的编辑锁。",
"Rank": "等级",
"SkillRankPlural": "技能等级",
"Used": "已使用",
"BGSkillRanks": "背景技能等级",
"BGUsed": "背景使用",
"AllSkills": "所有技能",
"AutomaticSpellSlots": "自动法术位",
"Uses": "使用",
"SeeText": "见正文",
"DC": "DC",
"DCOffset": "DC调整",
"DCDescriptionExample": "e.g. 反射减半",
"InitiativeBonus": "先攻加值",
"PowerAttack": "猛力攻击",
"DeadlyAim": "致命瞄准",
"PrimaryAttack": "主要攻击",
"SecondaryAttack": "次要攻击",
"Enabled": "已启用",
"Disabled": "已禁用",
"Enable": "启用",
"Disable": "禁用",
"AttackPenalty": "攻击减值",
"Low": "低",
"Medium": "中",
"High": "高",
"Poor": "不良",
"Good": "良好",
"Proficient": "熟练",
"Masterwork": "精制品",
"ClassSkills": "职业技能",
"MeasureTemplate": "测量板",
"TemplateType": "量板类型",
"LearnedAt": "学习于",
"EquipmentType": "装备类型",
"EquipmentSubtype": "装备子类",
"ConsumableType": "消耗品类型",
"CreatureType": "生物类型",
"CustomColor": "自定义颜色",
"CustomTexture": "自定义贴图",
"FromSources": "来源",
"UnidentifiedName": "未知名称",
"UnidentifiedPriceShort": "未知价格",
"Yes": "是",
"No": "否",
"Other": "其他",
"AutoDeductCharges": "自动消耗充能",
"BaseDCFormula": "基础DC公式",
"Lbs": "磅",
"Kgs": "公斤",
"Category": "类别",
"ShowInQuickbar": "在快捷栏显示",
"Tag": "标签",
"Tags": "标签",
"Refresh": "刷新",
"AttackDetails": "攻击详情",
"AttackType": "攻击类型",
"AttackUsage": "攻击用法",
"AttackAction": "攻击动作",
"SingleAttack": "单次攻击",
"FullAttack": "全力攻击",
"Cast": "施放",
"Use": "使用",
"Regeneration": "再生",
"FastHealing": "快速治疗",
"Links": "关联",
"Confirm": "确认",
"CROffset": "挑战等级补偿",
"Haste": "加速",
"Manyshot": "多重射击",
"RapidShot": "快速射击",
"PointBlankShot": "近距射击",
"AmmoRemaining": "弹药剩余: {0}",
"AmmoDepleted": "弹药耗尽!",
"Priority": "优先级",
"Creatures": "生物",
"ChargeCost": "充能消耗",
"ChargeCostFormula": "充能消耗公式",
"Value": "总值",
"TotalItems": "{count}总物品",
"FilteredItems": "{count}筛选后物品",
"SearchFilterPlaceholder": "搜索…",
"QuickInfo": "预览",
"QuickActions": "快捷操作",
"ConvertCurrency": "货币兑换",
"SoundEffect": "音效",
"Classes": "职业",
"Races": "种族",
"SetTo": "设置为{value}",
"Feats": "专长",
"ByLevel": "等级专长",
"ByBonus": "奖励专长",
"Total": "合计",
"BonusFeatFormula": "奖励专长公式",
"Advanced": "高级",
"LeftToPrepare": "剩余可准备法术位",
"SpellsTotalEachDay": "每日法术总量(不包括领域和学派法术)",
"UseItem": "使用物品",
"UseSpell": "使用法术",
"UseFeat": "使用特性",
"PerformAttack": "发动攻击",
"UseSpellPoints": "使用法术点",
"MaxFormula": "最大值公式",
"SpellPoints": "法术点",
"SpellPointsCurrent": "当前法术点",
"SpellPointsMax": "最大法术点",
"SpellPointsCost": "法术点消耗",
"RestoredOnRest": "休息时已恢复",
"CMBAbility": "CMB属性",
"Broken": "破损",
"Compendium": "合集包",
"Custom": "自定义",
"RecoverChancePercentage": "回收机率%",
"RecoverAmmunition": "回收弹药",
"Recover": "回收",
"ForceRecover": "强制回收",
"Default": "默认",
"Vision": "视野",
"Held": "持握",
"GiveItem": "给予物品",
"HideFromToken": "对token隐藏",
"ACPArmor": "防具检定减值(护甲)",
"ACPShield": "防具检定减值(盾牌)",
"MaxDexArmor": "最大敏捷修正(护甲)",
"MaxDexShield": "最大敏捷修正(盾牌)",
"Encumbrance": "负重",
"Raw": "原始",
"Normal": "正常",
"Changelog": "更新日志",
"DontShowAgain": "系统更新后不再显示日志",
"IdentifyDC": "鉴定DC",
"IdentifyDCNumber": "鉴定DC{dc}",
"MagicItems": "魔法物品",
"Summary": "概览",
"HitDieShort": "HD",
"ChallengeRatingShort": "CR",
"Experience": "经验",
"Combat": "战斗",
"Current": "当前",
"Maximum": "最大值",
"Ability": "属性",
"Modifier": "调整值",
"OpenAssociatedCompendiumEntry": "打开已关联的合集包项目",
"OpenCompendium": "打开合集包",
"Tier": "阶层",
"ReducedMovementSpeed": "移速降低",
"Settings": "设置",
"SpellbookUsage": "使用的法术书",
"SpellSlotAbilityBonus": "法术位属性加值",
"SpellbookName": "法术书名称",
"StaticSize": "静态大小",
"DomainSlotValue": "领域/学派法术位",
"DomainSlotValueDesc": "领域/学派法术每环提供多少额外法术位?",
"DisableLightLowLightVision": "为光源禁用昏暗视觉",
"Command": "命令",
"MaximumRangeIncrements": "最大射程增量",
"DuplicateInitiative": "复制先攻",
"InitiativeOffset": "先攻调整",
"NotImplemented": "未执行",
"StepsRequired": "必要步骤",
"RemoveInfo": "移除信息",
"CustomRollDesc": "该投骰使用的是非默认公式",
"Hidden": "隐藏",
"Bright": "光亮",
"Dim": "昏暗",
"PCs": "PC",
"NPCs": "NPC",
"Options": "选项",
"Cancel": "取消",
"Migration": {
"Start": "为PF1系统版本{version}执行迁移中。 请稍等。",
"Ongoing": "迁移进行中,请等待其完成。",
"End": "PF1升级至版本{version}成功!"
},
"Application": {
"ChangeTargetSelector": {
"Title": "选择改变目标"
},
"ContextNoteTargetSelector": {
"Title": "选择备注目标"
},
"XPDistributor": {
"Title": "经验分配器",
"Options": {
"BonusExperience": "奖励经验"
},
"SplitEvenly": "平分",
"GiveToAll": "给予所有人",
"TotalExperience": "总经验",
"SplitExperience": "平分经验"
},
"EntrySelector": {
"Title": "条目选择器"
}
},
"Info": {
"AddClassDialog": "你可以按住Shift来跳过该对话。",
"AddClassDialog_Desc": "点击“正常”会出现一个简短的向导,点击“原始”则会不作任何替换地添加一个职业。",
"NotFunctioning": "系统(目前)不使用该特性"
},
"Help": {
"Label": "Help"
},
"DeleteSkillTitle": "删除技能: {name}",
"Spellcasting": {
"Type": {
"Label": "法术类型",
"Arcane": "奥术",
"Divine": "神术",
"Psychic": "灵能",
"Alchemy": "炼金"
},
"Progression": {
"Label": "进度"
}
},
"ApplyToAll": "应用至全部",
"Roll": "投骰",
"TakeX": "取{number}",
"EditSkill": "编辑技能",
"DeleteSkill": "删除技能",
"DeleteSkillConfirmation": "你确定要删除这个技能吗?",
"DamageTypeCategory": {
"misc": "其他",
"physical": "物理",
"energy": "能量"
},
"Abundant": "补给",
"AbundantDesc": "使用后不移除该弹药。",
"Copy": "复制",
"Descriptor": "描述符",
"DescriptorPlural": "描述符",
"CustomHitDice": "自定义生命骰",
"CustomHitDiceHint": "输入公式例如floor(@item.level / 2)",
"Skill": "技能",
"Precision": "精准",
"Tiebreaker": "细分",
"SpellBookPrimary": "首选",
"SpellBookSecondary": "次选",
"SpellBookTertiary": "备选",
"SpellBookSpelllike": "类法术",
"SavingThrowGoodFractionalBonus": "高豁免骰加值",
"EnhancementBonusOverride": "覆盖增强加值",
"Preparation": "准备",
"Unknown": "位置",
"DamageModifiers": "伤害调整值",
"AbilityMultiplier": "属性倍数",
"Override": "覆盖",
"Offsets": "偏移",
"UsesAmmo": "使用弹药",
"Ammunition": "弹药",
"AmmunitionAbbr": "弹药",
"WeaponGroups": "武器组",
"SplitItem": "拆分物品",
"ModifierAbbr": "调整值",
"Bonus": "加值",
"CustomVisionRules": {
"Label": "自定义视野规则",
"Description": "无视角色的感官,使自定义视野规则能正确应用。"
},
"Split": "拆分",
"ChooseAnAction": "选择一个动作",
"Drink": "饮用",
"Properties": "性质",
"Dialog": {
"SplitItem": {
"Title": "拆分物品: {name}"
}
},
"CompendiumBrowserTitle": "合集包浏览器: {type}",
"TraitType": "背景类型",
"Subtype": "子类",
"Disposition": {
"None": "无",
"Hostile": "敌对",
"All": "全部",
"Non-Friendly": "非友善"
},
"LoadingItemsFromIndexes": "从{indexes}索引中读取{items}物品…",
"CopyUuidToClipboard": "复制UUID至剪贴板",
"BuffTarUntrainedSkills": "未受训技能",
"CastsPerDayUsedFormula": "每日施法量消耗公式",
"Enhancement": "+{bonus} 增强加值",
"ArcaneSpellFailureAbbr": "奥术失败率",
"DCThreshold": "DC {threshold}",
"TouchAttack": "接触攻击",
"TouchAttackShort": "接触",
"FilterBooleanOperatorHint": "在匹配全部过滤规则和匹配任意过滤规则间切换。",
"Any": "任意",
"Reset": "重置",
"FilterNoChoices": "未找到匹配的选项。",
"CreateItemNamePlaceholder": "魔杖,卷轴,或药水",
"CreateSpellbook": "创建法术书",
"Minimum": "最小"
},
"TOKEN": {
"VisionLowLight": "昏暗视觉",
"VisionLowLightMultiplier": "昏暗视觉乘数"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,983 @@
{
"PF1": {
"Title": "Pathfinder 1",
"KEYBINDINGS": {
"SkipConfirmPrompt": {
"Name": "Ignorer les demandes de confirmation"
},
"HideTokenTooltip": {
"Name": "Cacher les infobulles de token",
"Hint": "Cacher les infobulles de token lorsque cette touche est pressée"
},
"HideTokenTooltipGMInfo": {
"Name": "Afficher les infobulles de token en tant que Joueur"
},
"ForceShowItem": {
"Name": "Forcer l'affichage d'objet",
"Hint": "Affiche l'objet dans le chat lorsqu'une macro liée est utilisée"
}
},
"OptionalAndVariantRules": "Règles optionnelles et variables",
"WoundThresholdOverride": "Hors de combat",
"ExperienceConfigName": "Configuration de lExpérience",
"ExperienceConfigLabel": "Configurer lExpérience",
"ExperienceConfigHint": "Configurer les aspects de la montée de niveau.",
"AccessibilityConfigName": "Configuration de laccessibilité",
"AccessibilityConfigLabel": "Accessibilité",
"AccessibilityConfigHint": "Changez les paramètres daccessibilité",
"AccessibilityFontSize": "Taille de police",
"AccessibilityFontSizeHint": "Changez la taille de police sur certains aspects du jeu (comme les jets d'attaque envoyés dans le chat)",
"OnMouse": "Souris sur",
"Sheet": {
"PC": "Personnage-joueur (PJ)",
"NPC": "Personnage-non-joueur (PNJ)",
"NPCLite": "PNJ (Léger)",
"NPCLoot": "Butin",
"Item": "Objet générique",
"Container": "Contenant"
},
"Disposition": {
"None": "Aucun",
"Hostile": "Hostile",
"Non-Friendly": "Inamical",
"All": "Tous"
},
"LevelUp": {
"Health": {
"Roll": {
"Desc": "Le nombre de points de vie gagnés pour ce niveau seront déterminés selon le nombre de faces de votre Dé de vie."
},
"Manual": {
"Desc": "Vous déciderez du nombre de points de vie gagnés pour ce niveau."
}
},
"FC": {
"Label": "Bonus de classe de prédilection",
"HP": {
"Desc": "Vous gagnerez un point de vie comme bonus de classe de prédilection pour ce niveau."
},
"Skill": {
"Desc": "Vous gagnerez un rang de compétence à dépenser librement comme bonus de classe de prédilection pour ce niveau."
},
"Alt": {
"Desc": "Vous gagnerez un avantage spécifique dépendant de votre classe et de votre race comme bonus de classe de prédilection pour ce niveau."
}
},
"AbilityScore": {
"Label": "Valeurs de caractéristique",
"PointsLeft": "Points restants : {value}",
"Item": {
"Name": "Accroissement de caractéristique",
"Desc": "<p>Cet élément traque les changements aux valeurs de caractéristique dus au gain de Dé de vie.</p>"
}
},
"Summary": {
"Label": "Sommaire"
},
"Chat": {
"Header": "Rapport de montée de niveau",
"Health": {
"Header": "Points de vie",
"Roll": "Lancer de dé : {add}",
"Manual": "Sélection manuelle : {add}"
},
"FC": {
"Header": "Bonus de classe de prédilection"
},
"AbilityScore": {
"Header": "Accroissement de caractéristique"
},
"Extra": {
"Header": "Extra",
"NewFeat": "Vous avez 1 nouveau don à choisir",
"NewFeats": "Vous avez {newValue} nouveaux dons à choisir"
}
}
},
"General": "Général",
"Apply": "Appliquer",
"ApplyHalf": "Appliquer moitié",
"ApplyDamage": "Appliquer dégâts",
"ApplyCriticalDamage": "Appl. dégâts critiques",
"ApplyHealing": "Appliquer soins",
"ApplyCriticalHealing": "Appl. soins critiques",
"ApplyToAll": "Appliquer à tout",
"ReduceBy": "Réduit par",
"SwapSelected": "Échanger la sélection",
"ClearReduction": "Annuler la réduction",
"Roll": "Lancer",
"TakeX": "Faire {number}",
"Flags": "Flags",
"FlagsBoolean": "Flag boléen",
"FlagsDictionary": "Flags dictionnaire",
"AbilityDamage": "Affaiblissement de carac",
"AbilityDrain": "Diminution de carac",
"CreateItem": "Créer un objet",
"EditItem": "Éditer lobjet",
"DuplicateItem": "Dupliquer lobjet",
"DeleteItem": "Effacer lobjet",
"DeleteItemTitle": "Effacer objet : {name}",
"DeleteItemConfirmation": "Êtes vous certain de vouloir effacer cet objet ?",
"EditSkill": "Éditer la compétence",
"DeleteSkill": "Supprimer la compétence",
"DeleteSkillTitle": "Supprimer compétence : {name}",
"DeleteSkillConfirmation": "Êtes vous certain de vouloir effacer cette compétence ?",
"LinkTypeChildren": "Enfants",
"LinkTypeCharges": "Charges",
"LinkTypeClassAssociations": "Associations de classe",
"LinkHelpChildren": "Les sous-liens sont supprimés de lacteur lorsque le lien parent (cet objet) est supprimé.",
"LinkHelpCharges": "Les objets liés de cette manière partagent leur compte de charges avec le lien parent (cet objet).",
"LinkHelpClassAssociations": "Les objets liés de cette manière sont automatiquement ajoutés à lacteur au niveau de classe approprié. Contrairement aux autres liens d'objets, ceux-ci doivent être liés depuis un compendium.",
"HelpSellMultiplierN": "Taux de vente",
"HelpSellMultiplier": "Le taux de vente des objets. Les produits de consommation courante sont revendus à leur prix total.",
"AbilityStr": "Force",
"AbilityDex": "Dextérité",
"AbilityCon": "Constitution",
"AbilityInt": "Intelligence",
"AbilityWis": "Sagesse",
"AbilityCha": "Charisme",
"AbilityStrMod": "Modificateur de Force",
"AbilityDexMod": "Modificateur de Dextérité",
"AbilityConMod": "Modificateur de Constitution",
"AbilityIntMod": "Modificateur de Intelligence",
"AbilityWisMod": "Modificateur de Sagesse",
"AbilityChaMod": "Modificateur de Charisme",
"AbilityShortStr": "For",
"AbilityShortDex": "Dex",
"AbilityShortCon": "Con",
"AbilityShortInt": "Int",
"AbilityShortWis": "Sag",
"AbilityShortCha": "Cha",
"SavingThrowFort": "Vigueur",
"SavingThrowRef": "Réflexes",
"SavingThrowWill": "Volonté",
"ACNormal": "CA",
"ACTouch": "Contact",
"ACFlatFooted": "Pris au dépourvu",
"CMDFlatFooted": "DMD au dépourvu",
"WeaponHoldTypeNormal": "Normal",
"WeaponHoldTypeTwoHanded": "À deux mains",
"WeaponHoldTypeOffhand": "Main non-directrice",
"CostGP": "Coût (po)",
"ClassType": "Type de classe",
"Alignment": "Alignement",
"ChatReqMats": "Matériaux nécessaires",
"ChatOtherFormula": "Autre formule",
"Currency": {
"Label": "Monnaie"
},
"BuffTarAC": "CA",
"BuffTarACGeneric": "CA générique",
"BuffTarACArmor": "Amure",
"BuffTarACShield": "Bouclier",
"BuffTarACNatural": "Armure naturelle",
"BuffTarACTouch": "CA au contact",
"BuffTarACFlatFooted": "CA pris au dépourvu",
"BuffTarStrSkills": "Comp. basées sur la Force",
"BuffTarDexSkills": "Comp. basées sur la Dextérité",
"BuffTarConSkills": "Comp. basées sur la Constitution",
"BuffTarIntSkills": "Comp. basées sur lIntelligence",
"BuffTarWisSkills": "Comp. basées sur la Sagesse",
"BuffTarChaSkills": "Comp. basées sur le Charisme",
"BuffTarSpecificSkill": "Compétence spécifique",
"BuffTarAbilityChecks": "Tests de caractéristique",
"BuffTarStrChecks": "Tests de Force",
"BuffTarDexChecks": "Tests de Dextérité",
"BuffTarConChecks": "Tests de Constitution",
"BuffTarIntChecks": "Tests dIntelligence",
"BuffTarWisChecks": "Tests de Sagesse",
"BuffTarChaChecks": "Tests de Charisme",
"BuffTarBonusSkillRanks": "Rangs de compétence supplémentaires",
"BuffTarBonusFeats": "Dons supplémentaires",
"BuffTarAllAttackRolls": "Tous les jets d'attaque",
"BuffTarAllDamageRolls": "Tous les jets de dégâts",
"BuffTarAllSavingThrows": "Tous les jets de sauvegarde",
"BuffTarAllSkills": "Toutes les compétences",
"BuffTarAllAbilityChecks": "Tous les tests de carac",
"BuffTarAllSpeeds": "Toutes les vitesses",
"BuffTarMeleeAttack": "Jets d'attaque au corps-à-corps",
"BuffTarRangedAttack": "Jets d'attaque à distance",
"BuffTarSpells": "Sorts",
"SkillAcr": "Acrobaties",
"SkillApr": "Estimation",
"SkillArt": "Création artistique",
"SkillBlf": "Bluff",
"SkillClm": "Escalade",
"SkillCrf": "Artisanat",
"SkillDip": "Diplomatie",
"SkillDev": "Sabotage",
"SkillDis": "Déguisement",
"SkillEsc": "Évasion",
"SkillFly": "Vol",
"SkillHan": "Dressage",
"SkillHea": "Premiers secours",
"SkillInt": "Intimidation",
"SkillKAr": "Connaissances (mystères)",
"SkillKDu": "Connaissances (exploration souterraine)",
"SkillKEn": "Connaissances (ingénierie)",
"SkillKGe": "Connaissances (géographie)",
"SkillKHi": "Connaissances (histoire)",
"SkillKLo": "Connaissances (folklore local)",
"SkillKNa": "Connaissances (nature)",
"SkillKNo": "Connaissances (noblesse)",
"SkillKPl": "Connaissances (plans)",
"SkillKRe": "Connaissances (religion)",
"SkillLin": "Linguistique",
"SkillLor": "Savoir",
"SkillPer": "Perception",
"SkillPrf": "Représentation",
"SkillPro": "Profession",
"SkillRid": "Équitation",
"SkillSen": "Psychologie",
"SkillSlt": "Escamotage",
"SkillSpl": "Art de la magie",
"SkillSte": "Discrétion",
"SkillSur": "Survie",
"SkillSwm": "Natation",
"SkillUMD": "Utilisation dobjets magiques",
"AddSkill": "Ajouter une compétence",
"SpellPrepAtWill": "À volonté",
"SpellPrepPrepared": "Préparé",
"SpellPrepSpontaneous": "Spontané",
"SpellsKnown": "Sorts connus",
"Arcanist": "Arcaniste",
"RedMantisAssassin": "Assassin des mantes rouges",
"Psychic": "Psychiste",
"Spellcasting": {
"Progression": {
"Label": "Progression",
"HighHint": "Les niveaux de sort vont jusqu'à 9.",
"MediumHint": "Les niveaux de sort vont jusqu'à 6.",
"LowHint": "Les niveaux de sort vont jusqu'à 4."
},
"Type": {
"Label": "Type de magie",
"Arcane": "Profane",
"Divine": "Divine",
"Psychic": "Psychique",
"Alchemy": "Alchimique"
}
},
"AutoSpellClassLevelOffset": {
"Formula": "Modification du niveau de classe",
"InfoBox": "Si vous avez une classe de prestige qui altère votre niveau de classe (par ex. @classes.mysticTheurge.level)"
},
"LoadingItemsFromIndexes": "Chargement de {items} objets depuis {indexes} indexes…",
"CopyUuidToClipboard": "Copier l'UUID dans le presse-papier",
"WeaponType": "Type darme",
"WeaponTypeSimple": "Courante",
"WeaponTypeMartial": "De guerre",
"WeaponTypeExotic": "Exotique",
"WeaponTypeSplash": "À aspersion",
"WeaponSubtype": "Sous-type darme",
"WeaponSubtypeRanged": "À distance",
"FavouredClassBonus": {
"Label": "Bonus de classe de prédilection",
"HP": "Point de vie",
"Skill": "Rang de compétence",
"Alt": "Bonus alternatif"
},
"Key_Control": "Contrôle",
"InventoryWeapons": "Armes",
"InventoryConsumables": "Consommables",
"InventoryContainers": "Contenants",
"Undefined": "Indéfini",
"NotificationCreatedAttack": "Attaque créée pour {item}",
"Action_DisplayDefenses": "Lancer les défenses",
"Info_FirstClass": "Glisser-déposer depuis {html}\nou cliquer sur le bouton '+ Ajouter' ci-dessus.",
"Info_FirstClass_Compendium": "Compendium de classe",
"Info_MissingClass": "Votre personnage na pas de classe. Allez au paragraphe Classes dans longlet Sommaire de votre Fiche de personnage.",
"CMDNotes": "Notes sur le DMD",
"EffectNotes": "Notes sur les effets",
"SpellResistanceNotes": "Notes sur la Résistance à la magie",
"ContextNotes": "Notes de contexte",
"ACNotes": "Notes sur la CA",
"SaveNotes": "Notes sur les Jets de sauvegarde",
"CLNotes": "Notes sur le NLS",
"NonApplicable": "N/A",
"SkillTypeAdventure": "Compétences d'aventure",
"SkillTypeBackground": "Compétences contextuelles",
"ACP": "MAT",
"ACPLong": "Malus darmure aux tests",
"ACPTooltip": "Malus darmure aux tests",
"CS": "CC",
"CSTooltip": "Compétence de classe",
"RT": "FN",
"RTTooltip": "Formation nécessaire",
"SkillModTooltip": "Modificateur total",
"BrowseSpells": "Nav. Sorts",
"BrowseItems": "Nav. Objets",
"BrowseBestiary": "Nav. Bestiaire",
"BrowseFeats": "Nav. Aptitudes",
"BrowseClasses": "Nav. Classes",
"BrowseRaces": "Nav. Races",
"BrowseBuffs": "Nav. Effets",
"Rest": "Se reposer",
"RestoreHealth": "Récup. vie",
"RestoreDailyUses": "Récup. utilisations quotidiennes",
"LongTermCare": "Repos prolongé",
"RollSkillMacroName": "{actor}: Lance {skill}",
"DisplayDefensesMacroName": "{actor}: Lance Défenses",
"RollCMBMacroName": "{actor}: Lance Bonus de manœuvre offensive",
"RollCLMacroName": "{actor}: Lance Niveau de lanceur de sorts ({book})",
"RollConcentrationMacroName": "{actor}: Lance Concentration ({book})",
"RollBABMacroName": "{actor}: Lance Bonus de base à lattaque",
"RollSaveMacroName": "{actor}: Lance Jet de {type}",
"DamageTypeCategory": {
"misc": "Divers",
"physical": "Physique",
"energy": "Énergie"
},
"SourceInfoSkillRank_ClassBase": "{className} (Base)",
"SourceInfoSkillRank_ClassFC": "{className} (Classe de préd.)",
"CreateItemForSpell": "Créer un objet pour {name}",
"CreateItemWand": "Baguette",
"CreateItemScroll": "Parchemin",
"CreateItemPotion": "Potion",
"CreateItemWandOf": "Baguette de {name}",
"CreateItemScrollOf": "Parchemin de {name}",
"CreateItemPotionOf": "Potion de {name}",
"CombatInfo_Header": "Combat",
"CombatInfo_Round": "Round {round}",
"ScriptCalls": {
"Name": "Appel de script",
"NewName": "Nouvel appel de script",
"Use": {
"Name": "Utiliser",
"Info": "Appelé lorsque l'objet est 'utilisé' (attaquer, boire une potion, etc). Inclut la variable 'attacks' (attaques), un regroupement des jets d'attaque de l'action, le cas échéant."
},
"Equip": {
"Name": "Équiper",
"Info": "Appelé lorsque l'objet est équipé ou dé-équipé. Inclut la variable 'eqquiped' (équippé), égale soit à 'true' (vrai) soit à 'false' (faux)."
},
"Toggle": {
"Name": "Basculer",
"Info": "Appelé lorsque l'objet est activé ou désactivé. Inclut la variable 'state' (état), égale soit à 'true' (vrai) soit à 'false' (faux)."
},
"ChangeQuantity": {
"Name": "Changer la quantité",
"Info": "Appelé lorsque la quantité de l'objet est modifiée. Inclut les variables 'quantity.previous' (quantité précédente) et 'quantity new' (nouvelle quantité), qui sont des nombres."
},
"ChangeLevel": {
"Name": "Changer le niveau",
"Info": "Appelé lorsque le niveau de l'objet est modifiée. Inclut les variables 'quantity.previous' (quantité précédente) et 'quantity new' (nouvelle quantité), qui sont des nombres."
},
"Create": "Créer un appel de script intégré"
},
"Abundant": "Abondance",
"AbundantDesc": "Ne diminue jamais cette munition lorsqu'elle est utilisée.",
"AddClass": "Ajouter une classe",
"Horizontal": "Horizontal",
"Vertical": "Vertical",
"HideHeld": "Cacher les objets tenus",
"HideArmor": "Cacher larmure",
"HideBuffs": "Cacher les effets",
"HideConditions": "Cacher les états",
"HideClothing": "Cacher les vêtements",
"HideName": "Cacher le nom",
"Action": "Action",
"All": "Tous",
"Attack": "Attaque",
"AddEffect": "Ajouter un effet",
"AddConditional": "Ajouter une condition",
"AddChange": "Ajouter un changement",
"AddNote": "Ajouter une note",
"AddEntry": "Ajouter une entrée",
"Attributes": "Attributs",
"ArmorClass": "Classes dArmure",
"Attacks": "Attaques",
"Biography": "Biographie",
"Buffs": "Effets",
"Change": "Changement",
"Changes": "Changements",
"ClassAbilities": "Capacités de classe",
"Conditionals": "Modificateurs conditionnels",
"ConImm": "Immunités aux états",
"ConRes": "Résistances aux états",
"Copy": "Copie",
"Critical": "Critique",
"CriticalConfirmation": "Confirmation de critique",
"Damage": "Dégâts",
"DamageCritical": "Dégâts critiques",
"DamageRoll": "Jet de dégâts",
"DamImm": "Immunités aux dégâts",
"DamRed": "Réduction de dégâts",
"DamVuln": "Vulnérabilités aux dégâts",
"Drain": "Diminution",
"Penalty": "Affaiblissement",
"Defense": "Défense",
"Defenses": "Défenses",
"Description": "Description",
"Descriptor": "Registre",
"DescriptorPlural": "Registres",
"Details": "Détails",
"Edit": "Éditer",
"Enchantments": "Enchantements",
"EnRes": "Résistances aux énergies",
"Equipped": "Équipé",
"NotEquipped": "Pas équipé",
"Carried": "Transporté",
"Identified": "Identifié",
"Iterative": "Itératif",
"Unidentified": "Non-identifié",
"Health": "Santé",
"Healing": "Soins",
"Wounds": "Blessures",
"Vigor": "Vitalité",
"HitDice": "Dés de vie",
"HitDie": "Dé de vie",
"CustomHitDice": "Dés de vie personnalisés",
"CustomHitDiceHint": "Entrez une formule, ex : floor(@item.level / 2)",
"InfoShort": "Info",
"Inventory": "Inventaire",
"Feature": "Capacité",
"Features": "Capacités",
"FullRoundAttack": "Attaque à outrance",
"Languages": "Langues",
"LevelDrain": "Niveaux négatifs",
"None": "Aucune",
"Notes": "Notes",
"Operator": "Opérateur",
"Quadruped": "Quadrupède",
"Senses": "Sens",
"Save": "Jets de sauvegarde",
"Size": "Taille",
"Resizing": "Taille (modifiée)",
"Special": "Spéciale",
"Spells": "Sorts",
"Stature": "Stature",
"StatureLong": "Longueur",
"StatureTall": "Hauteur",
"Items": "Objets",
"Skill": "Compétence",
"Skills": "Compétences",
"CharacterName": "Nom du Personnage",
"Level": "Niveau",
"Gender": "Genre",
"Deity": "Divinité",
"Race": "Race",
"RaceSubtypePlural": "Sous-types",
"Age": "Âge",
"Height": "Taille",
"Weight": "Poids",
"ItemWeight": "Poids",
"Base": "Base",
"TempShort": "Temp.",
"TempHP": "Points de vie temporaires",
"Nonlethal": "Non létal",
"Precision": "Précision",
"Initiative": "Initiative",
"Tiebreaker": "Départage",
"MaxDexShort": "Max. Dex",
"Type": "Type",
"Subtype": "Sous-type",
"ActionPlural": "Actions",
"ChargePlural": "Charges",
"ConditionPlural": "États préjudiciables",
"Add": "Ajouter",
"ItemName": "Nom de lobjet",
"BuffName": "Nom de l'effet",
"SkillName": "Nom de la compétence",
"AttackName": "Nom de lattaque",
"CreateAttack": "Créer une attaque",
"CreateSpellbook": "Créer un grimoire",
"Active": "Actif",
"SpellBook": "Grimoire",
"SpellBookPlural": "Grimoires",
"SpellBookPrimary": "Primaire",
"SpellBookSecondary": "Secondaire",
"SpellBookTertiary": "Tertiaire",
"SpellBookSpelllike": "Pouvoirs magiques",
"SpellLevel": "Niveau du sort",
"SpellSchool": "École de magie",
"SpellComponents": {
"Label": "Composantes du sort"
},
"SpellResistance": "Résistance à la magie",
"SpellEffect": "Effet du sort",
"SubSchool": "Branche",
"SubSchoolExample": "ex : convocation, coercition",
"TypePlural": "Types",
"SpellTypesExample": "ex : acide, mal",
"SpellEffectExample": "ex : un globe dacide",
"Area": "Zone deffet",
"Melee": "Corps à corps",
"MeleeWeapon": "Arme au corps à corps",
"MeleeSpell": "Sort au corps à corps",
"Ranged": "À distance",
"RangedWeapon": "Arme à distance",
"RangedSpell": "Sort à distance",
"WeaponDamage": "Dégâts de larme",
"SpellDamage": "Dégât du sort",
"AttackRollPlural": "Jets dattaque",
"DamageRollPlural": "Jets de dégâts",
"AbilityScore": "Valeur de caractéristique",
"AbilityScoreLinks": "Liens des valeurs de caractéristique",
"SavingThrow": "Jet de sauvegarde",
"SavingThrowPlural": "Jets de sauvegarde",
"SavingThrowEffect": "Effet du jet de sauvegarde",
"SavingThrowGoodFractionalBonus": "Bonus au jet de sauvegarde fort",
"Misc": "Divers",
"MiscShort": "Div.",
"HitPoints": "Points de vie",
"VulnerableTo": "Vulnérable au/à {vulnerability}",
"ImmuneTo": "Immunisé contre le/la {immunity}",
"AbilityTest": "Test de caractéristique : {ability}",
"SkillCheck": "Test de compétence : {skill}",
"SavingThrowRoll": "Jet de sauvegarde : {save}",
"SavingThrowButtonLabel": "{type} DD {dc}",
"SavingThrowButtonLabelGMSensitive": "Jet de {save}",
"SpellResistanceNote": "Résistance à la magie {value}",
"ImmunityPlural": "Immunités",
"BABAbbr": "BBA",
"BAB": "Bonus de Base à lAttaque",
"CMBAbbr": "BMO",
"CMB": "Bonus de Manœuvre Offensive",
"CMDAbbr": "DMD",
"CMDFFAbbr": "DMD Dép.",
"CMD": "Degré de Manœuvre Défensive",
"Untrained": "Non-entraîné",
"Range": "Portée",
"MinRange": "Portée minimale",
"RangeNote": "Portée : {distance} {units}",
"Target": "Cible",
"Targets": "Cibles",
"Effect": "Effet",
"Effects": "Effets",
"AmountPrepared": "{count} Préparé(s)",
"Prepared": "Préparé(s)",
"Unprepared": "Non préparé",
"InitiallyPrepared": "Initialement préparé(s)",
"ClassPlural": "Classes",
"FeatPlural": "Dons",
"ClassFeaturePlural": "Capacités de classe",
"NewClassFeaturePlural": "Nouvelles capacités de classe",
"TraitPlural": "Traits",
"RacialTraitPlural": "Traits raciaux",
"TemplatePlural": "Archétypes de créature",
"Temporary": "Temporaire",
"Permanent": "Permanent",
"Item": "Objet",
"WeaponSize": "Taille de l'arme",
"WeaponProperties": "Attributs spéciaux d'arme",
"EnhancementBonus": "Bonus daltération",
"EnhancementBonusOverride": "Bonus d'altération (modifié)",
"BaseWeaponDamage": "Dégâts de base de larme",
"BaseWeaponCritical": "Dégâts critiques de base de larme",
"SpellPreparationType": "Type de préparation de sort",
"Preparation": "Préparation",
"CastsLeft": "Utilisations restantes",
"CasterLevelOffset": "Niveau de lanceur compensé",
"CasterLevelCheck": "Test de niveau de lanceur de sorts",
"CasterLevel": "Niveau de lanceur de sorts",
"CasterLevelBonusFormula": "Formule de Bonus au NLS",
"CasterLevelNotes": "Notes sur le NLS",
"School": "École",
"Domain": "Domaine",
"SubDomain": "Sous-domaine",
"CastingTime": "Temps dincantation",
"Components": "Composantes",
"SpellRangeShort": "(25 ft. + 5 ft./2 niveaux)",
"SpellRangeMedium": "(100 ft. + 10 ft./niveau)",
"SpellRangeLong": "(400 ft. + 40 ft./niveau)",
"SpellRangeShortMetric": "(7.5 m + 1.5 m/2 niveaux)",
"SpellRangeMediumMetric": "(30 m + 3 m/niveau)",
"SpellRangeLongMetric": "(120 m + 12 m/niveau)",
"Unknown": "Inconnu",
"ElementalSchool": "École élémentaire",
"Bloodline": "Lignage",
"ConcentrationCheck": "Test de concentration",
"Concentration": "Concentration",
"ConcentrationBonusFormula": "Formule de Bonus à la concentration",
"ConcentrationNotes": "Notes sur la Concentration",
"SpellLevelOffset": "Niveau de sort compensé",
"SpellSlotCost": "Coût en emplacement de sort",
"SpellCasting": "Lancement de sort",
"SpellcastingClass": "Classe utilisant la magie",
"SpellcastingAbility": "Caractéristique d'incantation",
"SpellEffects": "Effets de sort",
"Usage": "Utilisation",
"Slot": "Emplacement",
"MaxDexterityModifier": "Modificateur de Dex. Max.",
"ArmorCheckPenalty": "Malus d'armure aux tests",
"ArcaneSpellFailure": "Risque déchec (profane)",
"AutoCalculateSpellSlots": "Calcul automatique des emplacements de sort",
"HasCantrips": "a des tours/oraisons",
"Modifications": "Modifications",
"PreparePerDay": "Préparations par jour",
"CastPerDay": "Sorts par jour",
"SkillsPerLevel": "Rangs de compétence/Niv.",
"Source": "Source",
"Unlimited": "Illimité",
"Requirements": "Conditions",
"Formula": "Formule",
"BonusFormula": "Formule de Bonus",
"FormulaResult": "Résultat de la formule",
"ActionType": "Type daction",
"AttackRollBonus": "Bonus au jet dattaque",
"CriticalThreatRange": "Zone de critique",
"CriticalMultiplier": "Facteur de critique",
"CriticalConfirmBonus": "Bonus de confirmation de critique",
"AttackAbility": "Caractéristique à lattaque",
"ExtraAttacks": {
"Label": "Attaques supplémentaires"
},
"HPAbility": "Capacité PV",
"Name": "Nom",
"DamageAbility": "Caractéristique aux dégâts",
"DamageFormula": "Formule de Dégâts",
"BonusDamageFormula": "Formule de Bonus aux dégâts",
"BonusAttackFormula": "Formule de Bonus dattaque",
"HealingFormula": "Formule de Soins",
"DamageType": "Type de dégâts",
"DamageModifiers": "Modificateurs aux dégâts",
"DamageBonus": "Bonus aux dégâts",
"ActivationCost": "Coût dactivation",
"Duration": "Durée",
"LimitedUses": {
"Label": "Utilisations limitées"
},
"MaximumUsesFormula": "Formule de Limite dutilisations maximale",
"CheckFlags": "À cocher",
"Quantity": "Quantité",
"Price": "Prix",
"PricePerCharge": "Prix par charge",
"HPShort": "PV",
"Hardness": "Solidité",
"SituationalBonus": "Bonus situationnel",
"RollMode": "Visibilité",
"UpdateActor": "Mettre à jour l'acteur",
"UpdateItem": "Mettre à jour lobjet",
"BonusCarryStrength": "Bonus de Force au poids transportable",
"BonusCarryMultiplier": "Multiplicateur au poids transportable",
"CarryStrength": "Force au poids transportable",
"CarryMultiplier": "Multiplicateur au poids transportable",
"Multiplier": "Multiplicateur",
"AbilityMultiplier": "Mutliplicateur de carac.",
"CarryLightLoad": "Charge légère",
"CarryMediumLoad": "Charge intermédiaire",
"CarryHeavyLoad": "Charge lourde",
"CarryAboveHead": "Au dessus de la tête",
"CarryOffGround": "Soulever",
"CarryDragPush": "Tirer & Pousser",
"CarryLabel": "Charge {lbs}",
"CarryLabelKg": "Charge de {kg} kg",
"SkillBonusRankFormula": "Formule de Rangs supplémentaires",
"ToggleSkillLock": "Basculer le verouillage des parties rarement utilisées de la liste des compétences.",
"Rank": "Rang",
"SkillRankPlural": "Rangs de compétence",
"Used": "Utilisé",
"BGSkillRanks": "Rangs de compétence contextuelle",
"BGUsed": "Context. utilisés",
"AllSkills": "Toutes les compétences",
"AutomaticSpellSlots": "Emplacement de sort automatique",
"Uses": "Utilisations",
"SeeText": "Voir texte",
"DC": "DD",
"DCOffset": "DD compensé",
"DCThreshold": "DD {threshold}",
"DCDescriptionExample": "ex : Réflexes 1/2 dégâts",
"InitiativeBonus": "Bonus à linitiative",
"PowerAttack": "Attaque en puissance",
"DeadlyAim": "Viser",
"PrimaryAttack": "Attaque primaire",
"SecondaryAttack": "Attaque secondaire",
"Enabled": "Activé",
"Disabled": "Désactivé",
"Enable": "Activer",
"Disable": "Désactiver",
"AttackPenalty": "Malus d'attaque",
"Low": "Bas",
"Medium": "Moyen",
"High": "Haut",
"Poor": "Faible",
"Good": "Fort",
"Proficient": "Entraîné",
"Masterwork": "Objet de maître",
"ClassSkills": "Compétences de classe",
"MeasureTemplate": "Modèle de mesure",
"TemplateType": "Type de modèle",
"LearnedAt": "Appris par",
"EquipmentType": "Type déquipement",
"EquipmentSubtype": "Sous-type d'équipement",
"ConsumableType": "Type de consommable",
"CreatureType": "Type de créature",
"Override": "Écraser",
"CustomColor": "Couleur personnalisée",
"CustomTexture": "Texture personnalisée",
"FromSources": "Sources",
"UnidentifiedName": "Nom (non-identifié)",
"UnidentifiedPriceShort": "Prix (non-identifié)",
"Yes": "Oui",
"No": "Non",
"Other": "Autre",
"AutoDeductCharges": "Déduire automatiquement les charges",
"BaseDCFormula": "Formule de DD de base",
"Lbs": "lbs.",
"Kgs": "kg",
"Category": "Catégorie",
"ShowInQuickbar": "Afficher dans la barre d'accès rapide",
"Tag": "Étiquette",
"Tags": "Étiquettes",
"Refresh": "Rafraîchir",
"Reset": "Réinitialiser",
"AttackDetails": "Détails de l'attaque",
"AttackType": "Type dattaque",
"AttackUsage": "Utilisation",
"AttackAction": "Action",
"SingleAttack": "Attaque simple",
"FullAttack": "Attaque à outrance",
"Cast": "Incanter",
"Use": "Utiliser",
"Regeneration": "Régénération",
"FastHealing": "Guérison accélérée",
"Links": "Liens",
"Confirm": "Confirmer",
"CROffset": "FP (compensé)",
"Offsets": "Équilibrages",
"Haste": "Rapidité",
"Manyshot": "Feu nourri",
"RapidShot": "Tir rapide",
"PointBlankShot": "Tir à bout portant",
"UsesAmmo": "Utilise des munitions",
"Ammunition": "Munitions",
"AmmunitionAbbr": "Munition",
"AmmoRemaining": "{0} munition(s) restante(s)",
"AmmoDepleted": "Plus de munitions !",
"Priority": "Priorité",
"Creatures": "Créatures",
"ChargeCost": "Coût en charge",
"ChargeCostFormula": "Formule de Coût en charge(s)",
"Value": "Valeur",
"TotalItems": "{count} objets au total",
"FilteredItems": "{count} objets filtrés",
"SearchFilterPlaceholder": "Filtre de recherche…",
"QuickInfo": "Info rapide",
"QuickActions": "Actions rapides",
"ConvertCurrency": "Convertir en monnaie",
"SoundEffect": "Effet sonore",
"Classes": "Classes",
"Races": "Races",
"SetTo": "Réglé à {value}",
"Feats": "Dons",
"ByLevel": "Par Niv.",
"ByBonus": "par bonus",
"Total": "Total",
"BonusFeatFormula": "Formule de Don supplémentaire",
"Advanced": "Avancé",
"LeftToPrepare": "Nombre d'emplacements restants à préparer",
"SpellsTotalEachDay": "Total de sorts par jour (excluant les sorts libres comme ceux de domaine/décole)",
"UseItem": "Utiliser l'objet",
"UseSpell": "Utiliser le sort",
"UseFeat": "Utiliser le don",
"PerformAttack": "Porter une attaque",
"UseSpellPoints": "Utiliser des points de sort",
"MaxFormula": "Formule maximale",
"SpellPoints": "Points de sort",
"SpellPointsCurrent": "Points de sort actuels",
"SpellPointsMax": "Maximum de points de sort",
"SpellPointsCost": "Coût en point du sort",
"RestoredOnRest": "Récupéré lors du repos",
"CMBAbility": "Capacité BMO",
"Broken": "Brisé",
"Compendium": "Compendium",
"Custom": "Personnalisé",
"RecoverChancePercentage": "% chance de Récupération",
"RecoverAmmunition": "Récupère des munitions",
"Recover": "Récupère",
"ForceRecover": "Récupération (Forcer)",
"Default": "Défaut",
"Vision": "Vision",
"Held": "Tenu",
"WeaponGroups": "Groupes d'arme",
"GiveItem": "Donner objet",
"SplitItem": "Diviser l'objet",
"HideFromToken": "Cacher du jeton",
"ACPArmor": "MAT (Armure)",
"ACPShield": "MAT (Bouclier)",
"MaxDexArmor": "Bonus Max de Dex (armure)",
"MaxDexShield": "Bonus Max de Dex (bouclier)",
"Encumbrance": "Encombrement",
"Raw": "Brut",
"Normal": "Normal",
"Changelog": "Journal des modifications",
"DontShowAgain": "Ne pas afficher le journal des modifications après les mises à jour du système",
"IdentifyDC": "DD d'identification",
"IdentifyDCNumber": "DD d'identification {dc}",
"MagicItems": "Objets magiques",
"Summary": "Sommaire",
"HitDieShort": "DV",
"ChallengeRatingShort": "FP",
"Experience": "Expérience",
"Combat": "Combat",
"Current": "Actuel",
"Maximum": "Maximum",
"Minimum": "Minimum",
"Ability": "Caractéristique",
"Modifier": "Modificateur",
"ModifierAbbr": "Mod.",
"Bonus": "Bonus",
"OpenAssociatedCompendiumEntry": "Ouvre le compendium associé à lentrée",
"OpenCompendium": "Ouvrir le compendium",
"Tier": "Tiers",
"ReducedMovementSpeed": "Vitesse de déplacement réduite",
"Settings": "Réglages",
"SpellbookUsage": "Usage du grimoire",
"SpellSlotAbilityBonus": "Emplacement bonus dû à une caractéristique élevée",
"SpellbookName": "Nom du grimoire",
"StaticSize": "Taille statique",
"CustomVisionRules": {
"Label": "Règles de vision alternatives",
"Description": "Ignore les sens de l'acteur, permettant à des règles de vision personnalisés d'être appliquées correctement."
},
"DomainSlotValue": "Nombre d'emplacements de domaine/d'école",
"DomainSlotValueDesc": "Nombre demplacements 'libres' un domaine/une école offre pour chaque niveau de sort.",
"DisableLightLowLightVision": "Désactiver Vision nocturne pour la source lumineuse",
"Command": "Commande",
"MaximumRangeIncrements": "Facteurs de portée maximum",
"DuplicateInitiative": "Dupliquer linitiative",
"InitiativeOffset": "Initiative compensée",
"NotImplemented": "Pas implémenté",
"StepsRequired": "Étapes requises",
"RemoveInfo": "Retirer les infos",
"CustomRollDesc": "Ce jet utilise une formule qui n'est pas par défaut",
"Hidden": "Caché",
"Bright": "Vive",
"Dim": "Faible",
"PCs": "PJs",
"NPCs": "PNJs",
"Options": "Options",
"Cancel": "Annuler",
"Split": "Diviser",
"ChooseAnAction": "Choisir une action",
"Drink": "Boire",
"Properties": "Statistiques",
"Migration": {
"Start": "Application de la migration du Système PF1 pour la version {version}. Merci de patienter.",
"Ongoing": "Migration en cours. Merci d'attendre qu'elle se termine.",
"End": "La migration du Système PF1 vers la version {version} a fonctionné !"
},
"Application": {
"ChangeTargetSelector": {
"Title": "Choisir changer de cible"
},
"ContextNoteTargetSelector": {
"Title": "Choisir cibler une note de contexte"
},
"XPDistributor": {
"Title": "Distributeur d'Expérience",
"Options": {
"BonusExperience": "Expérience supplémentaire"
},
"SplitEvenly": "Distribuer équitablement",
"GiveToAll": "Donner à tous",
"TotalExperience": "Expérience totale",
"SplitExperience": "Expérience distribuée"
},
"EntrySelector": {
"Title": "Choisir changer de cible"
},
"TraitSelector": {
"CustomHint": "Vous pouvez séparer des valeurs distinctes par un point-virgule (;)."
},
"DamageResistanceSelector": {
"CombinationFormattedOr": "{type1} ou {type2}",
"CombinationFormattedAnd": "{type1} et {type2}",
"DRTitle": "Sélection de Réduction de Dégâts",
"ERTitle": "Sélection de Résistance aux Énergies Destructrices",
"DamageAmount": "Montant",
"Bypassed": "Surpassé par",
"Resisted": "Contre",
"CombinationType": "Opérateur",
"CombinationOr": "ou",
"CombinationAnd": "et"
}
},
"Dialog": {
"SplitItem": {
"Title": "Diviser l'objet : {name}"
}
},
"Info": {
"AddClassDialog": "Vous pouvez maintenir Shift pour passer ce dialogue.",
"AddClassDialog_Desc": "Sélectionner Normal ouvre un assistant manuel, tandis que sélectionner Brut ajoutera la classe sans modification.",
"NotFunctioning": "Le système n'utilise pas (encore) cette fonctionnalité"
},
"Help": {
"Label": "Aide"
},
"CompendiumBrowserTitle": "Explorateur de Compendium : {type}",
"ArcaneSpellFailureAbbr": "RE",
"TraitType": "Type de trait",
"TouchAttackShort": "Contact",
"CreateItemNamePlaceholder": "Baguette, parchemin ou potion",
"FilterBooleanOperatorHint": "Est-ce que les résultats correspondent à Tous les filtres ou au moins Un.",
"CastsPerDayUsedFormula": "Formule de Sorts Utilisés par Jour",
"TouchAttack": "Attaque de Contact",
"BuffTarUntrainedSkills": "Compétences non formées",
"Enhancement": "+{bonus} Amélioration",
"Any": "Tous",
"FilterNoChoices": "Aucun choix correspondant n'a été trouvé.",
"SecondaryAttackModifier": "Modificateur d'attaque secondaire",
"SecondaryAttackAbilityMultiplier": "Multiplicateur de capacité d'attaque secondaire",
"ProficientAttack": "Compétent (Attaque)",
"ChargeSource": "Source de charge",
"Troubleshooter": {
"Actions": {
"MigrateWorldHint": "La migration s'exécute normalement de façon automatique lorsque le MJ se connecte pour la première fois après une mise à jour du système Pathfinder 1e.<br>Une migration manuelle peut parfois résoudre des problèmes, comme par exemple avec des documents importés depuis une source qui n'a pas encore été migrée.",
"MigrateWorld": "Migrer le Monde",
"Label": "Opérations",
"MigrateModules": "Migrer les Packs de Modules",
"MigrateModulesHint": "Au cas où vous avez des modules avec des compendiums qui n'ont pas été migrés vers la version actuelle du système."
},
"Button": "Outil de Dépannage",
"Title": "Outil de dépannage du système Pathfinder 1e",
"Steps": {
"Label": "Étapes",
"HelpLink": "navigateur d'aide",
"FAQ": "Consulter la FAQ",
"DisableModules": "Lancer Foundry VTT en mode sans échec est un moyen rapide de désactiver tous les modules.",
"DiscordHint": "Les messages épinglés dans ce canal incluent la plupart des informations pertinentes.",
"Report": "Pour signaler un bogue ou demander une nouvelle fonctionnalité : {reportlink}.",
"ReportLinkText": "signaler votre problème",
"Modules": "Assurez vous que les modules n'en soient pas la cause.",
"Discord": "Se rendre dans le serveur Discord {link} anglais.",
"DiscordChannel": "Le canal <code>{channel}</code> existe pour vous aider sur Pathfinder 1e.",
"Help": "Consultant le {link} (bouton d'aide prêt de l'endroit où vous avez ouvert cette boite de dialogue).",
"Log": "Consulter la console dans les outils de développement pour les erreurs (F12 [ou Option + Commande + I sur Mac], onglet console)",
"ModuleSuggest": "{link} peut également aider pour isoler les modules fautifs."
},
"Prelude": "Voici certaines choses à faire lorsque vous rencontrez des problèmes."
},
"UseBuff": "Utiliser Buff",
"CompendiumBrowser": {
"HiddenPack": "Pack dissimulé dans le navigateur de compendium",
"ShowPack": "Afficher dans le navigateur de compendium",
"HidePack": "Masquer dans le navigateur de compendium"
},
"BaseSetup": "Configuration de base",
"UtilityFunctions": "Fonctions utilitaires",
"Identifier": "Identifiant",
"RollSkill": "Jet de Compétence",
"DisplayInChat": "Afficher dans le tchat",
"Identify": "Identifier",
"Unidentify": "Désidentifier",
"DCFormula": "Formule DD",
"DCOffsetFormula": "Formule de Compensation du DD",
"RechargeFormula": "Formule de Recharge",
"InitiativeCheck": "{name} : Test d'Initiative",
"BaseTypes": {
"Label": "Types d'Équipement de Base",
"Description": "Pour les capacités qui ont un effet sur des types spécifiques, comme Arme de Prédilection."
},
"RollInitiativeMacroName": "{actor} : Lance Initiative",
"RollAbilityMacroName": "{actor } : Lance {ability}",
"RollMeleeMacroName": "{actor} : Lance attaque au corps à corps",
"RollRangedMacroName": "{actor} : Lance attaque à distance",
"HealthPerTier": "Vie par Grade"
},
"TOKEN": {
"VisionLowLight": "Vision nocturne",
"VisionLowLightMultiplier": "Facteur de la vision nocturne"
}
}

View File

@@ -0,0 +1,757 @@
{
"PF1": {
"ACFlatFooted": "Impreparato",
"ACNormal": "CA",
"ACNotes": "Note CA",
"ACP": "PAP",
"ACPArmor": "PAP (Armatura)",
"ACPLong": "Penalità di Armatura alla Prova",
"ACPShield": "PAP (Scudo)",
"ACPTooltip": "Penalità di Armatura alla Prova",
"ACTouch": "Contatto",
"Ability": "Caratteristica",
"AbilityCha": "Carisma",
"AbilityCon": "Costituzione",
"AbilityDamage": "Danno di Caratteristica",
"AbilityDex": "Destrezza",
"AbilityDrain": "Risucchio di Caratteristica",
"AbilityInt": "Intelligenza",
"AbilityScore": "Modificatore di Caratteristica",
"AbilityShortCha": "Car",
"AbilityShortCon": "Cos",
"AbilityShortDex": "Des",
"AbilityShortInt": "Int",
"AbilityShortStr": "For",
"AbilityShortWis": "Sag",
"AbilityStr": "Forza",
"AbilityTest": "Prova di Caratteristica su {ability}",
"AbilityWis": "Saggezza",
"AccessibilityConfigHint": "Cambia le configurazioni di accessibilità",
"AccessibilityConfigLabel": "Accessibilità",
"AccessibilityConfigName": "Configurazioni di Accessibilità",
"AccessibilityFontSize": "Grandezza Font",
"AccessibilityFontSizeHint": "Cambia la grandezza del font in alcuni aspetti del gioco (ad esempio le card degli attacchi mostrate in chat)",
"Action": "Azione",
"ActionPlural": "Azioni",
"ActionType": "Tipo d'Azione",
"ActivationCost": "Costo di Attivazione",
"Active": "Attivo",
"Add": "Aggiungi",
"AddConditional": "Aggiungi Condizione",
"AddEffect": "Aggiungi Effetto",
"Advanced": "Avanzate",
"Age": "Età",
"Alignment": "Allineamento",
"All": "Tutto",
"AllSkills": "Tutte le Abilità",
"AmountPrepared": "{count} Preparate",
"Apply": "Applica",
"ApplyCriticalDamage": "Applica Danno Critico",
"ApplyCriticalHealing": "Applica Cura Critica",
"ApplyDamage": "Applica Danno",
"ApplyHalf": "Applica Metà",
"ApplyHealing": "Applica Cura",
"ArcaneSpellFailure": "Fallimento Incantesimi Arcani",
"Area": "Area",
"ArmorCheckPenalty": "Penalità di Armatura alla Prova",
"ArmorClass": "Classe Armatura",
"Attack": "Attacco",
"AttackAbility": "Caratteristica di Attacco",
"AttackAction": "Azione di Attacco",
"AttackDetails": "Dettagli dell'Attacco",
"AttackPenalty": "Penalità di Attacco",
"AttackRollBonus": "Bonus al Tiro per Colpire",
"AttackRollPlural": "Tiri per Colpire",
"AttackType": "Tipo di Attacco",
"AttackUsage": "Utilizzi Attacco",
"Attacks": "Attacchi",
"Attributes": "Attributi",
"AutoDeductCharges": "Sottrai automaticamente le cariche",
"AutomaticSpellSlots": "Slot Incantesimo Automatici",
"BAB": "Bonus Attacco Base",
"BABAbbr": "BAB",
"BGSkillRanks": "Gradi di Abilità per Background",
"BGUsed": "Background in Uso",
"Base": "Base",
"BaseDCFormula": "Formula di Base CD",
"BaseWeaponCritical": "Critico di Base dell'Arma",
"BaseWeaponDamage": "Danno di Base dell'Arma",
"Biography": "Biografia",
"Bloodline": "Stirpe",
"BonusAttackFormula": "Formula del Bonus all'Attacco",
"BonusCarryStrength": "Bonus di Forza alla Capacità di Trasporto",
"BonusDamageFormula": "Formula del Bonus al Danno",
"BonusFeatFormula": "Formula Telenti Bonus",
"Broken": "Rotto",
"BrowseBestiary": "Sfoglia Bestiario",
"BrowseClasses": "Sfoglia Classi",
"BrowseFeats": "Sfoglia Capacità",
"BrowseItems": "Sfoglia Oggetti",
"BrowseRaces": "Sfoglia Razze",
"BrowseSpells": "Sfoglia Incantesimi",
"BuffName": "Nome Effetto",
"BuffTarAC": "CA",
"BuffTarACArmor": "Armatura",
"BuffTarACGeneric": "CA Generica",
"BuffTarACNatural": "Armatura Naturale",
"BuffTarACShield": "Scudo",
"BuffTarAbilityChecks": "Prove di Caratteristica",
"BuffTarChaChecks": "Prove di Carisma",
"BuffTarChaSkills": "Abilità sul Carisma",
"BuffTarConChecks": "Prove di Costituzione",
"BuffTarConSkills": "Abilità su Costituzione",
"BuffTarDexChecks": "Prove di Destrezza",
"BuffTarDexSkills": "Abilità su Destrezza",
"BuffTarIntChecks": "Prove di Intelligenza",
"BuffTarIntSkills": "Abilità su Intelligenza",
"BuffTarSpecificSkill": "Abilità Specifica",
"BuffTarSpells": "Incantesimi",
"BuffTarStrChecks": "Prove di Forza",
"BuffTarStrSkills": "Abilità su Forza",
"BuffTarWisChecks": "Prove di Saggezza",
"BuffTarWisSkills": "Abilità su Saggezza",
"Buffs": "Effetti",
"ByBonus": "Per Bonus",
"ByLevel": "Per Livello",
"CLNotes": "Note Livello Incantatore",
"CMB": "Bonus Manovra in Combattimento",
"CMBAbbr": "BMC",
"CMBAbility": "Caratteristica BMC",
"CMDAbbr": "DMC",
"CMDFFAbbr": "DMC Impreparato",
"CMDFlatFooted": "DMC Impreparato",
"CMDNotes": "Note DMC",
"CROffset": "Offset Grado Sfida",
"CS": "AdC",
"CSTooltip": "Abilità di Classe",
"Carried": "Trasportato",
"CarryAboveHead": "Sopra la Testa",
"CarryDragPush": "Trascinare e Spingere",
"CarryHeavyLoad": "Carico Pesante",
"CarryLabel": "Sta trasportando {lbs} lbs",
"CarryLabelKg": "Sta trasportando {kg} kg",
"CarryLightLoad": "Carico Leggero",
"CarryMediumLoad": "Carico Medio",
"CarryOffGround": "Alzare da Terra",
"Cast": "Lancia incantesimo",
"CasterLevel": "Livello Incantatore",
"CasterLevelBonusFormula": "Formula Bonus LI",
"CasterLevelCheck": "Prova del Livello Incantatore",
"CasterLevelNotes": "Note Livello Incantatore",
"CasterLevelOffset": "Offset Livello Incantatore",
"CastingTime": "Tempo di Lancio",
"CastsLeft": "Utilizzi rimanenti",
"Category": "Categoria",
"ChallengeRatingShort": "GS",
"Changelog": "Note di Rilascio",
"Changes": "Modifiche",
"CharacterName": "Nome del Personaggio",
"ChargeCost": "Costo Carica",
"ChargePlural": "Cariche",
"ChatOtherFormula": "Altra Formula",
"ChatReqMats": "Materiali Richiesti",
"CheckFlags": "Flag",
"ClassAbilities": "Privilegi di Classe",
"ClassFeaturePlural": "Privilegi di Classe",
"ClassPlural": "Classi",
"ClassSkills": "Abilità di Classe",
"ClassType": "Tipo di Classe",
"Classes": "Classi",
"Combat": "Combattimento",
"CombatInfo_Header": "Combattimento",
"CombatInfo_Round": "Round {round}",
"Compendium": "Compendio",
"Components": "Componenti",
"ConImm": "Immunità alle Condizioni",
"ConRes": "Resistenze alle Condizioni",
"Concentration": "Concentrazione",
"ConcentrationBonusFormula": "Formula Bonus Concentrazione",
"ConcentrationCheck": "Prova di Concentrazione",
"ConcentrationNotes": "Note Concentrazione",
"ConditionPlural": "Condizioni",
"Conditionals": "Modificatori Condizionali",
"Confirm": "Conferma",
"ConsumableType": "Tipo di Consumabile",
"ContextNotes": "Note Contestuali",
"ConvertCurrency": "Converti Monete",
"CostGP": "Costo (MO)",
"CreateAttack": "Crea Attacco",
"CreateItem": "Crea Oggetto",
"CreateItemForSpell": "Crea Oggetto per {name}",
"CreateItemPotion": "Pozione",
"CreateItemPotionOf": "Pozione di {name}",
"CreateItemScroll": "Pergamena",
"CreateItemScrollOf": "Pergamena di {name}",
"CreateItemWand": "Bacchetta",
"CreateItemWandOf": "Bacchetta di {name}",
"CreatureType": "Tipo di Creatura",
"Creatures": "Creature",
"Critical": "Critico",
"CriticalConfirmBonus": "Bonus per Confema del Critico",
"CriticalConfirmation": "Conferma del Critico",
"CriticalMultiplier": "Moltiplicatore Critico",
"CriticalThreatRange": "Intervallo di Minaccia del Critico",
"Currency": {
"Label": "Monete"
},
"Current": "Attuali",
"Custom": "Personalizzato",
"CustomColor": "Colore Personalizzato",
"CustomTexture": "Texture Personalizzata",
"DC": "CD",
"DCDescriptionExample": "es.: Riflessi dimezza",
"DCOffset": "Offset CD",
"DamImm": "Immunità ai Danni",
"DamRed": "Riduzione del Danno",
"DamVuln": "Vulnerabilità ai Danni",
"Damage": "Danno",
"DamageAbility": "Caratteristica dei Danni",
"DamageBonus": "Bonus ai Danni",
"DamageCritical": "Danno Critico",
"DamageFormula": "Formula dei Danni",
"DamageRoll": "Tiro per i Danni",
"DamageRollPlural": "Tiri per i Danni",
"DamageType": "Tipo di Danno",
"DeadlyAim": "Mira Letale",
"Default": "Default",
"Defenses": "Difese",
"Deity": "Divinità",
"DeleteItem": "Elimina Oggetto",
"DeleteItemConfirmation": "Sei sicuro di voler eliminare questo oggetto?",
"Description": "Descrizione",
"Details": "Dettagli",
"Disabled": "Disabilitato",
"Domain": "Dominio",
"DontShowAgain": "Non mostrare il changelog dopo gli aggiornamenti del sistema",
"Drain": "Risucchio",
"DuplicateItem": "Duplica Oggetto",
"Duration": "Durata",
"EditItem": "Modifica Oggetto",
"Effect": "Effetto",
"EffectNotes": "Note Effetto",
"Effects": "Effetti",
"ElementalSchool": "Scuola Elementale",
"EnRes": "Resistenze alle Energie",
"Enabled": "Abilitato",
"Enchantments": "Incantamenti",
"Encumbrance": "Ingombro",
"EnhancementBonus": "Bonus di Potenziamento",
"EquipmentSubtype": "Sottotipo di Equipaggiamento",
"EquipmentType": "Tipo di Equipaggiamento",
"Equipped": "Equipaggiato",
"Experience": "Esperienza",
"ExperienceConfigHint": "Configura aspetti dell'avanzamento di livello.",
"ExperienceConfigLabel": "Configura Esperienza",
"ExperienceConfigName": "Configurazione Esperienza",
"ExtraAttacks": {
"Label": "Attacchi Extra"
},
"FastHealing": "Guarigione Rapida",
"FeatPlural": "Talenti",
"Feats": "Talenti",
"Features": "Capacità",
"FilteredItems": "{count} Oggetti Filtrati",
"ForceRecover": "Forza Recupero",
"Formula": "Formula",
"FromSources": "Provenienti da",
"FullAttack": "Attacco Completo",
"FullRoundAttack": "Attacco Round Completo",
"Gender": "Genere",
"GiveItem": "Dai Oggetto",
"Good": "Buono",
"HPAbility": "Caratteristica Punti Ferita",
"HPShort": "PF",
"Hardness": "Durezza",
"Healing": "Cura",
"HealingFormula": "Formula della Cura",
"Health": "Punti Ferita",
"Height": "Altezza",
"Held": "Impugnatura",
"HelpSellMultiplier": "Il tasso a cui gli oggetti che vengono venduti.<br>Il valore di default è 0.5.<br>Le Merci di Scambio si vendono sempre a prezzo pieno (1.0).",
"HelpSellMultiplierN": "Tasso di Vendita",
"HideFromToken": "Nascondi dal token",
"High": "Alto",
"HitDice": "Dadi Vita",
"HitDie": "Dado Vita",
"HitDieShort": "DV",
"HitPoints": "Punti Ferita",
"Identified": "Identificato",
"IdentifyDC": "CD Identificare",
"IdentifyDCNumber": "CD Identificare {dc}",
"ImmuneTo": "Immune a {immunity}",
"ImmunityPlural": "Immunità",
"InfoShort": "Info",
"Info_FirstClass": "Fai drag & drop dal {html}\noppure clicca il pulsante '+ Aggiungi' presente sopra.",
"Info_FirstClass_Compendium": "Compendio delle Classi",
"Info_MissingClass": "Il tuo personaggio non ha una classe. Vai nella sottoscheda Classi nella scheda del Sommario della scheda del personaggio.",
"InitiallyPrepared": "Preparati inizialmente",
"Initiative": "Iniziativa",
"InitiativeBonus": "Bonus di Iniziativa",
"Inventory": "Inventario",
"InventoryConsumables": "Consumabili",
"InventoryContainers": "Contenitori",
"InventoryWeapons": "Armi",
"Item": "Oggetto",
"ItemName": "Nome Oggetto",
"ItemWeight": "Peso",
"Items": "Oggetti",
"Kgs": "kg",
"Languages": "Linguaggi",
"Lbs": "lbs",
"LearnedAt": "Imparato a",
"LeftToPrepare": "Rimanenti da preparare",
"Level": "Livello",
"LevelDrain": "Livelli Negativi",
"LimitedUses": {
"Label": "Utilizzi Limitati"
},
"LinkHelpCharges": "Gli oggetti collegati in questo modo condividono le cariche. Aggiungi tutti i collegamenti all'oggetto principale.",
"LinkHelpChildren": "I figli collegati vengono eleminati dall'attore quanto il collegamento padre viene eliminato.",
"LinkHelpClassAssociations": "Gli oggetti collegati in questo modo verranno aggiunti automaticamente al personaggio quando raggiunge il livello di classe appropriato.",
"LinkTypeCharges": "Cariche",
"LinkTypeChildren": "Figli",
"LinkTypeClassAssociations": "Associazione di Classe",
"Links": "Collegamenti",
"LongTermCare": "Cura a Lungo Termine",
"Low": "Basso",
"MagicItems": "Oggetti Magici",
"Masterwork": "Perfetto",
"MaxDexArmor": "Bonus Destrezza Max (Armatura)",
"MaxDexShield": "Bonus Destrezza Max (Scudo)",
"MaxDexShort": "Des Max",
"MaxDexterityModifier": "Modificatore Destrezza Massimo",
"MaxFormula": "Formula del Massimo",
"Maximum": "Massimo",
"MaximumUsesFormula": "Formula degli Utilizzi Massimi",
"MeasureTemplate": "Modello di Misurazione",
"Medium": "Medio",
"Melee": "In Mischia",
"Misc": "Miscellanee",
"MiscShort": "Misc.",
"Modifier": "Modificatore",
"Multiplier": "Moltiplicatore",
"Name": "Nome",
"No": "No",
"NonApplicable": "N/A",
"None": "Nessuno",
"Nonlethal": "Non Letali",
"Normal": "Normale",
"NotEquipped": "Non Equipaggiato",
"Notes": "Note",
"NotificationCreatedAttack": "Attacco creato per {item}",
"OpenAssociatedCompendiumEntry": "Apri nel compendio",
"OpenCompendium": "Apri Compendio",
"Other": "Altro",
"Penalty": "Penalità",
"PerformAttack": "Esegui Attacco",
"Permanent": "Permanente",
"PointBlankShot": "Tiro Ravvicinato",
"Poor": "Scarso",
"PowerAttack": "Attacco Poderoso",
"Prepared": "Preparato",
"Price": "Prezzo",
"PrimaryAttack": "Attacco Principale",
"Priority": "Priorità",
"Proficient": "Competente",
"Quadruped": "Quadrupede",
"Quantity": "Quantità",
"QuickActions": "Azioni Rapide",
"QuickInfo": "Informazioni Rapide",
"RT": "RA",
"RTTooltip": "Richiede Addestramento",
"Race": "Razza",
"RaceSubtypePlural": "Sottotipi",
"Races": "Razze",
"RacialTraitPlural": "Tratti Razziali",
"Range": "Portata",
"RangeNote": "Portata: {distance} {units}",
"Ranged": "A Distanza",
"Rank": "Grado",
"RapidShot": "Tiro Rapido",
"Recover": "Recupero",
"RecoverAmmunition": "Recupero Munizioni",
"RecoverChancePercentage": "% Chance di Recupero",
"ReducedMovementSpeed": "Velocità di Movimento Ridotta",
"Refresh": "Aggiorna",
"Regeneration": "Rigenerazione",
"Requirements": "Requisiti",
"Rest": "Riposo",
"RestoreDailyUses": "Recupera utilizzi giornalieri",
"RestoreHealth": "Recupera Punti Ferita",
"RestoredOnRest": "Ripristinato al Riposo",
"RollBABMacroName": "{actor}: Tira Bonus di Attacco Base",
"RollCLMacroName": "{actor}: Tira Livello Incantatore ({book})",
"RollCMBMacroName": "{actor}: Tira Bonus di Manovra in Combattimento",
"RollConcentrationMacroName": "{actor}: Tira Concentrazione ({book})",
"DisplayDefensesMacroName": "{actor}: Tira Difese",
"RollMode": "Modalità Tiro",
"RollSkillMacroName": "{actor}: Tira {skill}",
"Save": "Salva",
"SaveNotes": "Note Tiro Salvezza",
"SavingThrow": "Tiro Salvezza",
"SavingThrowButtonLabel": "{type} CD {dc}",
"SavingThrowEffect": "Effetto Tiro Salvezza",
"SavingThrowFort": "Tempra",
"SavingThrowPlural": "Tiri Salvezza",
"SavingThrowRef": "Riflessi",
"SavingThrowRoll": "Tiro Salvezza su {save}",
"SavingThrowWill": "Volontà",
"School": "Scuola",
"SeeText": "Vedi Testo",
"Senses": "Sensi",
"SetTo": "Imposta a {value}",
"Settings": "Impostazioni",
"ShowInQuickbar": "Mostra nella Quickbar",
"SingleAttack": "Attacco Singolo",
"SituationalBonus": "Bonus Situazionali",
"Size": "Taglia",
"SkillAcr": "Acrobazia",
"SkillApr": "Valutare",
"SkillArt": "Artistica",
"SkillBlf": "Raggirare",
"SkillBonusRankFormula": "Formula per Gradi Bonus",
"SkillCheck": "Prova di Abilità di {skill}",
"SkillClm": "Scalare",
"SkillCrf": "Artigianato",
"SkillDev": "Disattivare Congegni",
"SkillDip": "Diplomazia",
"SkillDis": "Camuffare",
"SkillEsc": "Artista della Fuga",
"SkillFly": "Volare",
"SkillHan": "Addestrare Animali",
"SkillHea": "Guarire",
"SkillInt": "Intimidire",
"SkillKAr": "Conoscenze (Arcane)",
"SkillKDu": "Conoscenze (Dungeon)",
"SkillKEn": "Conoscenze (Ingegneria)",
"SkillKGe": "Conoscenze (Geografia)",
"SkillKHi": "Conoscenze (Storia)",
"SkillKLo": "Conoscenze (Locali)",
"SkillKNa": "Conoscenze (Natura)",
"SkillKNo": "Conoscenze (Nobiltà)",
"SkillKPl": "Conoscenze (Piani)",
"SkillKRe": "Conoscenze (Religioni)",
"SkillLin": "Linguistica",
"SkillLor": "Sapienza",
"SkillModTooltip": "Modificatore di Abilità",
"SkillName": "Nome Abilità",
"SkillPer": "Percezione",
"SkillPrf": "Intrattenere",
"SkillPro": "Professione",
"SkillRankPlural": "Gradi di Abilità",
"SkillRid": "Cavalcare",
"SkillSen": "Intuizione",
"SkillSlt": "Rapidità di Mano",
"SkillSpl": "Sapienza Magica",
"SkillSte": "Furtività",
"SkillSur": "Sopravvivenza",
"SkillSwm": "Nuotare",
"SkillTypeAdventure": "Avventura",
"SkillTypeBackground": "Background",
"SkillUMD": "Utilizzare Congegni Magici",
"Skills": "Abilità",
"SkillsPerLevel": "Abilità/Livello",
"Slot": "Slot",
"SoundEffect": "Effetto Sonoro",
"Source": "Fonte",
"Special": "Speciale",
"SpellBook": "Libro degli Incantesimi",
"SpellCasting": "Lancio Incantesimi",
"SpellComponents": {
"DFVariants": {
"FDF": "F/FD"
}
},
"SpellDamage": "Danno Incantesimo",
"SpellEffect": "Effetto Incantesimo",
"SpellEffectExample": "es.: un globo d'acido",
"SpellEffects": "Effetti Incantesimo",
"SpellLevel": "Livello Incantesimo",
"SpellLevelOffset": "Offset Livello Incantesimo",
"SpellPoints": "Punti Incantesimo",
"SpellPointsCost": "Costo in Punti Incantesimo",
"SpellPointsCurrent": "Punti Incantesimo Attuali",
"SpellPointsMax": "Punti Incantesimo Massimi",
"SpellPrepAtWill": "A Volontà",
"SpellPrepPrepared": "Preparato",
"SpellPrepSpontaneous": "Spontaneo",
"SpellPreparationType": "Tipo di Preparazione Incantesimi",
"SpellResistance": "Resistenza agli Incantesimi",
"SpellResistanceNote": "Resistenza agli Incantesimi {0}",
"SpellResistanceNotes": "Note Resistenza agli Incantesimi",
"SpellSchool": "Scuola Incantesimo",
"SpellTypesExample": "es.: acido, malvagio",
"SpellbookUsage": "Uso Libro degli Incantesimi",
"SpellcastingAbility": "Caratteristica Incantatore",
"SpellcastingClass": "Classe da Incantatore",
"Spells": "Incantesimi",
"SpellsTotalEachDay": "Incantesimi totali al giorno",
"SubDomain": "Sottodominio",
"SubSchool": "Sottoscuola",
"SubSchoolExample": "es.: convocazione, compulsione",
"Summary": "Sommario",
"Tag": "Tag",
"Tags": "Tag",
"Target": "Target",
"Targets": "Bersagli",
"TempHP": "Punti Ferita Temporanei",
"TempShort": "Temp.",
"TemplatePlural": "Archetipi",
"TemplateType": "Tipo di Modello",
"Temporary": "Temporaneo",
"Tier": "Rango",
"Total": "Totale",
"TotalItems": "{count} Oggetti Totali",
"TraitPlural": "Tratti",
"Type": "Tipo",
"TypePlural": "Tipi",
"Unidentified": "Non Identificato",
"UnidentifiedName": "Nome da Non Identificato",
"UnidentifiedPriceShort": "Prezzo (Non Identificato)",
"Unlimited": "Illimitato",
"Unprepared": "Non Preparato",
"Untrained": "Non Addestrato",
"UpdateActor": "Aggiorna Attore",
"UpdateItem": "Aggiorna Oggetto",
"Usage": "Utilizzo",
"Use": "Usa",
"UseFeat": "Usa Capacità",
"UseItem": "Usa Oggetto",
"UseSpell": "Usa Incantesimo",
"UseSpellPoints": "Usa Punti Incantesimo",
"Used": "Utilizzati",
"Uses": "Utilizzi",
"Value": "Valore",
"Vigor": "Vigore",
"Vision": "Visione",
"VulnerableTo": "Vulnerabile a {vulnerability}",
"WeaponDamage": "Danno dell'Arma",
"WeaponHoldTypeNormal": "Normale",
"WeaponHoldTypeOffhand": "Mano Secondaria",
"WeaponHoldTypeTwoHanded": "A Due Mani",
"WeaponProperties": "Proprietà dell'Arma",
"WeaponSize": "Taglia dell'Arma",
"WeaponSubtype": "Sottotipo di Arma",
"WeaponSubtypeRanged": "A Distanza",
"WeaponType": "Tipo di Arma",
"WeaponTypeExotic": "Esotica",
"WeaponTypeMartial": "Da Guerra",
"WeaponTypeSimple": "Semplice",
"WeaponTypeSplash": "A Spargimento",
"Weight": "Peso",
"Wounds": "Ferite",
"Yes": "Sì",
"SpellBookPlural": "Libri degli Incantesimi",
"AbilityScoreLinks": "Collegamenti Modificatori Caratteristica",
"Stature": "Statura",
"StatureLong": "Lungo",
"StatureTall": "Alto",
"SearchFilterPlaceholder": "Cerca…",
"Feature": "Capacità",
"General": "Generale",
"OptionalAndVariantRules": "Varianti e Regole Opzionali",
"WoundThresholdOverride": "Gestione Soglie di Ferimento",
"HideHeld": "Nascondi Oggetti Impugnati",
"HideArmor": "Nascondi Armatura",
"HideBuffs": "Nascondi Effetto",
"HideConditions": "Nascondi Condizioni",
"HideClothing": "Nasconti Abbigliamento",
"HideName": "Nascondi Nome",
"SpellbookName": "Nome Libro Incantesimi",
"SpellSlotAbilityBonus": "Slot Incantesimi Bonus",
"DomainSlotValue": "Slot di Dominio/Scuola",
"DomainSlotValueDesc": "Numero di slot bonus che gli incantesimi di Dominio/Scuola hanno per ciascun livello di incantesimo.",
"AutoSpellClassLevelOffset": {
"Formula": "Modificatore Livello Classe",
"InfoBox": "Se hai una classe di prestigio che altera il tuo livello di classe, aggiungine il livello qui (e.g. @classes.mysticTheurge.level)"
},
"AutoCalculateSpellSlots": "calcolo Automatico Slot Incantesimi",
"HasCantrips": "Ha Trucchetti/Orazioni",
"Arcanist": "Arcanista",
"RedMantisAssassin": "Assassino Mantide Rossa",
"SpellsKnown": "Inc. Conosciuti",
"CastPerDay": "Lanci al Giorno",
"PreparePerDay": "Prep. al Giorno",
"Modifications": "Modificatori",
"SpellSlotCost": "Costo Slot Incantesimi",
"AttackName": "Nome Attacco",
"AddNote": "Aggiungi Nota",
"AddChange": "Aggiungi Modifica",
"LevelUp": {
"Chat": {
"Header": "Report Nuovo Livello",
"Health": {
"Header": "Salute",
"Roll": "Risultato del dado: {add}",
"Manual": "Valore Manuale: {add}"
},
"FC": {
"Header": "Bonus Classe Preferita"
},
"Extra": {
"Header": "Extra",
"NewFeat": "Hai 1 nuovo Talento da scegliere",
"NewFeats": "Hai {newValue} nuovi Talenti da scegliere"
}
}
},
"FavouredClassBonus": {
"Label": "Bonus Classe Preferita",
"HP": "Punto Ferita",
"Skill": "Abilità",
"Alt": "Alt"
},
"MinRange": "Gittata Minima",
"MaximumRangeIncrements": "Max Incrementi di gittata",
"AddClass": "Aggiunta Classe",
"Info": {
"AddClassDialog": "Puoi tenere premuto Shift per saltare questo step.",
"AddClassDialog_Desc": "Scegliendo Normale si apre un breve Wizard, mentre scegliendo RAW si aggiungerà la classe senza alterazioni."
},
"DeleteItemTitle": "Elimina Elemento: {name}",
"Haste": "Velocità",
"DisableLightLowLightVision": "Disabilita Vista Crepuscolare per la fonte di luce",
"BuffTarAllAttackRolls": "Tutti gli Attacchi",
"BuffTarAllDamageRolls": "Tutti i Danni",
"BuffTarAllSavingThrows": "Tutti i Tiri Salvezza",
"BuffTarAllSkills": "Tutte le Abilità",
"BuffTarAllAbilityChecks": "Tutte le prove Caratteristica",
"BuffTarAllSpeeds": "Tutte le Velocità",
"BuffTarBonusSkillRanks": "Bonus Gradi Abilità",
"BuffTarMeleeAttack": "Attacco in Mischia",
"BuffTarRangedAttack": "Attacco a Distanza",
"Defense": "Difesa",
"BuffTarACTouch": "CA Contatto",
"BuffTarACFlatFooted": "CA Impreparato",
"CMD": "Difesa Manovra Combattimento",
"BuffTarBonusFeats": "Bonus Talenti",
"AbilityStrMod": "Mod. Forza",
"AbilityDexMod": "Mod. Destrezza",
"AbilityConMod": "Mod. Costituzione",
"AbilityIntMod": "Mod. Intelligenza",
"AbilityWisMod": "Mod. Saggezza",
"AbilityChaMod": "Mod. Carisma",
"SpellRangeShort": "(25 ft. + 5 ft./2 livelli)",
"SpellRangeMedium": "(100 ft. + 10 ft./livello)",
"SpellRangeLong": "(400 ft. + 40 ft./livello)",
"SpellRangeShortMetric": "(7.5 m + 1.5 m/2 livelli)",
"SpellRangeMediumMetric": "(30 m + 3 m/livello)",
"SpellRangeLongMetric": "(120 m + 12 m/livello)",
"Action_DisplayDefenses": "Lancia Difese",
"AmmoDepleted": "Munizioni Esaurite!",
"AmmoRemaining": "Munizioni rimanenti: {quantity}",
"Application": {
"ChangeTargetSelector": {
"Title": "Seleziona Cambio Target"
},
"ContextNoteTargetSelector": {
"Title": "Seleziona Nota contestuale Target"
}
},
"Bright": "Intensa",
"BrowseBuffs": "Sfoglia Effetti",
"Change": "Modifica",
"ClearReduction": "Cancella Riduzione",
"CustomRollDesc": "Questo lancio usa una formula non-default",
"Dim": "Fioca",
"Disable": "Disabilita",
"DuplicateInitiative": "Duplica Iniziativa",
"Edit": "Modifica",
"Enable": "Abilita",
"Flags": "Flag",
"FlagsBoolean": "Flags Booleani",
"FlagsDictionary": "Flags Dizionario",
"FormulaResult": "Risultato Formula",
"Hidden": "Nascosto",
"Horizontal": "Orizzontale",
"InitiativeOffset": "Offset Initiativa",
"Iterative": "Iterattivo",
"Key_Control": "Controllo",
"Manyshot": "Tiro Multiplo",
"MeleeSpell": "Incantesimo in Mischia",
"MeleeWeapon": "Arma da Mischia",
"Migration": {
"End": "Migrazione Sistema PF1 alla versione {version} completato!",
"Ongoing": "Migrazione in corso. Prego attendere.",
"Start": "Applicazione Migrazione Sistema PF1 alla versione {version}. Prego attendere."
},
"NewClassFeaturePlural": "Nuovi Privilegi di Classe",
"NotImplemented": "Non Implementato",
"OnMouse": "On Mouse",
"Operator": "Operatore",
"RangedSpell": "Incantesimo a Distanza",
"RangedWeapon": "Arma a Distanza",
"Raw": "Raw",
"ReduceBy": "Ridotto da",
"RemoveInfo": "Remuovi Info",
"SecondaryAttack": "Attacco Secondario",
"SourceInfoSkillRank_ClassBase": "{className} (Base)",
"SourceInfoSkillRank_ClassFC": "{className} (Classe Preferita)",
"StaticSize": "Statistiche Taglia",
"StepsRequired": "Passi Richiesti",
"SwapSelected": "Scambia Selezionati",
"Vertical": "Verticale",
"ScriptCalls": {
"Name": "Script",
"NewName": "Nuovo Script",
"Use": {
"Name": "Utilizzo",
"Info": "Richiamato quando l'oggetto viene 'usato' (attacco, bere pozione, ecc.). Prevede la variabile array <code>attacks</code>, che contiene i tiri per colpire dell'azione, se disponibile."
},
"Equip": {
"Name": "Equipaggiato",
"Info": "Richiamato quando l'oggetto viene equipaggiato o disequipaggiato. Prevede la variabile booleana extra <code>equipped</code>."
},
"Toggle": {
"Name": "Attiva/Disattiva",
"Info": "Richiamato quando l'oggetto viene attivato o disattivato. Prevede la variabile booleana extra <code>state</code>."
},
"ChangeQuantity": {
"Name": "Cambio Quantità",
"Info": "Richiamato quando vengono cambiate le quantità dell'oggetto. Prevede le variabili numeriche extra <code>quantity.previous</code> e <code>quantity.new</code>."
},
"ChangeLevel": {
"Name": "Cambio Livello",
"Info": "Richiamato quando viene cambiato il livello dell'oggetto. Prevede le variabili numeriche extra <code>level.previous</code> e <code>level.new</code>."
}
},
"Help": {
"Label": "Guida"
},
"Title": "Pathfinder 1e",
"KEYBINDINGS": {
"SkipConfirmPrompt": {
"Name": "Salta Richiesta di Conferma"
},
"HideTokenTooltip": {
"Hint": "Nasconde i tooltip dei token quando il tasto è premuto",
"Name": "Nascondi Tooltip del Token"
},
"HideTokenTooltipGMInfo": {
"Name": "Mostra Tooltip dei Token come Giocatore"
},
"ForceShowItem": {
"Name": "Forza Mostra Oggetto",
"Hint": "Se mostrare l'oggetto in chat o meno quando si usa una macro usandolo"
}
},
"Sheet": {
"PC": "Personaggio Giocante (PG)",
"Item": "Oggetto Generico",
"NPC": "Personaggio Non Giocante (PNG)",
"NPCLite": "PNG Lite",
"NPCLoot": "Bottino",
"Container": "Contenitore"
},
"Disposition": {
"None": "Nessuna",
"Hostile": "Ostile",
"Non-Friendly": "Non Amichevole",
"All": "Tutte"
}
},
"TOKEN": {
"VisionLowLight": "Visione Crepuscolare",
"VisionLowLightMultiplier": "Moltiplicatore Vis.Crepuscolare"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,787 @@
.pf1.sheet.actor {
min-width: 672px;
min-height: 736px;
/* ----------------------------------------- */
/* Sheet Header */
/* ----------------------------------------- */
.charactermancer {
&.warning {
flex: 0;
background-color: var(--pf1-warning-bg);
border: 1px solid var(--pf1-warning-border);
border-radius: 2px;
padding: 0.2em 0.5em;
}
}
.tab {
footer {
flex: 0;
}
/* ----------------------------------------- */
/* Summary Tab */
/* ----------------------------------------- */
&.summary {
.summary-header {
display: flex;
flex-flow: row nowrap;
flex: 0;
border-bottom: var(--pf1-border-groove);
display: flex;
flex-flow: row nowrap;
gap: 2px;
.basic-info {
flex: 4;
border-left: var(--pf1-border-groove);
padding: 0 0 0 0.3em;
}
.name-xp {
flex: 0;
gap: 3px;
h1.char-name {
flex: 3 0 300px;
line-height: 1.5em;
margin: 0;
input {
height: 100%;
padding: 0;
}
}
}
.character-summary {
flex: 0;
& > div {
flex: 0 0 33%;
//height: 32px;
line-height: 2;
border-right: var(--pf1-border-groove);
border-bottom: var(--pf1-border-groove);
align-content: center;
&:nth-child(3n + 0) {
border-right: none;
}
&.alignment {
padding: 1px 3px;
}
}
}
}
.pseudo-table {
background: var(--pf1-bg-dark-0);
border-top: 1px solid #7a7971;
border-bottom: 1px solid #7a7971;
ul {
margin: 0;
padding: 0;
}
.header,
.sub-header {
margin: 0;
color: #f0f0e0;
text-shadow: 1px 1px #000;
}
.header,
.sub-header,
.value {
width: 100%;
text-align: center;
line-height: 1.5;
flex: 0;
}
.value {
flex: 1;
line-height: 2;
padding: 0;
margin: 0;
}
.header {
font-weight: bold;
background: var(--pf1-bg-dark-4);
}
.sub-header {
background: var(--pf1-bg-dark-3);
}
}
.attributes > .attribute {
margin: 0;
border-left: none;
border-bottom: none;
border-top: var(--pf1-border-groove);
border-right: var(--pf1-border-groove);
border-radius: 0;
height: auto;
}
img.profile {
flex: 0 0 160px;
width: 160px;
height: 160px;
padding: 0 3px;
object-fit: contain;
border: none;
}
.misc-header-items {
flex: 0.5;
.actor-quick-actions {
display: flex;
justify-content: space-evenly;
flex-flow: row wrap;
button {
min-height: 24px;
line-height: 1.5;
}
}
}
.attributes {
display: flex;
flex-flow: row;
gap: 3px;
flex: 0;
.wounds-vigor {
display: flex;
flex-flow: row;
gap: 3px;
}
.health-details {
flex: 4;
.wounds {
flex: 2;
}
.vigor {
flex: 3;
}
.speed-details {
flex: 3.5;
}
}
.speed-details {
flex: 5;
.fly-details {
flex: 3;
.maneuverability-details {
flex: 2;
}
}
}
.health-details {
&.wounds-vigor {
flex: 5;
}
}
li {
padding: 0;
border-top: var(--pf1-border-groove);
&:not(:last-child) {
border-right: var(--pf1-border-groove);
}
}
}
.subdetails-body {
.quick-info {
h3 {
// Override Foundry bottom margin (0.5rem)
margin-bottom: 0.2rem;
}
}
}
.quick-info {
.generic-defenses {
h3 {
margin: 0;
border: unset;
}
}
}
// Note: Only used by alignment selection
.controls {
.control {
flex: 0;
visibility: hidden;
margin-right: 4px;
}
&:hover {
.control {
visibility: visible;
}
}
}
}
.alignment {
color: black;
}
/* ----------------------------------------- */
/* General Styles */
/* ----------------------------------------- */
// Box Headers
h4.box-title {
line-height: 16px;
margin: 4px 8px 2px;
font-size: var(--font-size-20);
border-bottom: 1px solid var(--color-border-light-secondary);
}
/* ----------------------------------------- */
/* Attributes */
/* ----------------------------------------- */
&.attributes {
.traits {
overflow: hidden auto;
.scrollbar();
> * {
flex: 0 0 24px;
.itemBackground();
}
}
table {
margin: 0;
}
}
ul.attributes.misc-base,
ul.attributes.misc-defenses {
.attribute-footer input {
width: 100%;
}
}
.attributes-root {
flex: 0 0 30%;
}
ul.attributes {
list-style: none;
margin: 0;
padding: 0;
flex: 0;
h3 {
margin: 0;
}
table {
span.text-box,
input[type="text"] {
height: 20px;
padding: 1px 3px;
}
}
}
/* ----------------------------------------- */
/* Defenses */
/* ----------------------------------------- */
.defenses {
.attributes {
flex: 0;
}
.attribute .attribute-footer input {
width: 32px;
}
}
/* ----------------------------------------- */
/* Ability Scores */
/* ----------------------------------------- */
&.attributes {
.ability-scores {
flex: 0;
display: flex;
flex-flow: column nowrap;
gap: 2px;
}
}
.bottom {
overflow-y: auto;
.scrollbar();
}
/* ----------------------------------------- */
/* Buffs & Conditions */
/* ----------------------------------------- */
.condition {
flex: 0;
margin: 2px;
flex-basis: calc(20% - 4px);
display: flex;
align-items: center;
> a {
font-size: var(--font-size-12);
flex: 1;
}
> .compendium-entry {
display: none;
flex: 0;
}
&:hover {
> .compendium-entry {
display: inline;
}
}
}
/* ----------------------------------------- */
/* Traits */
/* ----------------------------------------- */
.traits {
overflow-x: hidden;
overflow-y: hidden;
margin: 0 5px;
.form-group,
.form-group-stacked {
margin: 0;
justify-content: space-between;
}
.trait-selector,
.senses-selector,
.resistance-selector {
flex: 0 0 16px;
padding: 2px 0;
color: var(--pf1-control-color);
font-size: var(--font-size-14);
}
.configure-flags {
flex: 1;
}
.checkbox {
text-align: right;
justify-content: end;
}
.traits-list {
list-style: none;
margin: 0;
padding: 0;
text-align: right;
justify-content: end;
align-items: center;
}
select {
flex: 0 0 180px;
}
label {
flex: 0 0 150px;
line-height: 20px;
font-weight: bold;
margin: 0;
text-align: right;
}
input {
text-align: right;
}
i.fas {
margin-right: 3px;
text-align: right;
&:hover {
text-shadow: 0 0 10px red;
}
}
.inactive {
color: var(--pf1-tan);
}
}
/* ----------------------------------------- */
/* Inventory Lists */
/* ----------------------------------------- */
/* Encumbrance Bar */
.encumbrance {
height: 12px;
background: var(--pf1-tan);
margin: 1px 15px 0 1px;
border: 1px solid var(--color-border-dark-2);
border-radius: 3px;
position: relative;
.encumbrance-bar {
position: absolute;
top: 1px;
left: 1px;
background: #6c8aa5;
height: 8px;
border: 1px solid #cde4ff;
border-radius: 2px;
}
.encumbrance-label {
height: 10px;
padding: 0 5px;
position: absolute;
top: 0;
right: 0;
font-size: var(--font-size-12);
line-height: 1;
text-align: right;
color: #eee;
text-shadow: 0 0 5px #000;
}
&.encumbered {
.encumbrance-bar {
background: #a80d0d;
border-color: #e14949;
}
}
.encumbrance-breakpoint {
position: absolute;
left: 66%;
}
.arrow-up {
bottom: 0;
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-bottom: 4px solid var(--color-border-dark-5);
}
.arrow-down {
top: 0;
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid var(--color-border-dark-5);
}
&.encumbered {
.arrow-up {
border-bottom: 4px solid #000;
}
.arrow-down {
border-top: 4px solid #000;
}
}
}
footer {
.tag {
flex: 0 1 auto;
}
}
label.checkbox {
flex: 1;
text-align: left;
}
&.buffs {
.condition {
border: 1px transparent;
border-radius: 10px;
a.checkbox {
display: flex;
flex-flow: row nowrap;
gap: 4px;
align-items: center;
color: var(--color-text-dark-primary);
> img {
border: none;
&[src*=".png"] {
filter: invert(88%) sepia(11%) saturate(158%) hue-rotate(13deg) brightness(98%) contrast(93%);
}
&[src*=".svg"] {
filter: invert(1);
}
}
> .details {
display: flex;
flex-flow: row wrap;
> .sources {
text-shadow: none;
font-weight: normal;
font-size: var(--font-size-11);
&::before {
content: "(";
}
&::after {
content: ")";
}
}
}
.name {
flex: 1 100%;
}
}
&.immune {
a.checkbox {
> img {
opacity: 0.3;
}
.details {
opacity: 0.6;
}
}
}
&:hover {
background-color: rgba(0, 0, 0, 0.05);
}
&.active {
font-weight: 600;
background-color: rgba(0, 0, 0, 0.1);
text-shadow: 0 0 8px red;
&:hover {
background-color: rgba(0, 0, 0, 0.15);
}
}
&.active a.checkbox > img {
filter: unset;
&[src*=".svg"] {
background: black;
}
}
}
}
.buffs-conditions {
flex: 0;
}
.inventory-group {
height: 100%;
overflow: hidden;
}
.item-list {
input[type="checkbox"] {
height: 18px;
}
}
div.attributes-traits {
align-items: flex-start;
margin: 0;
overflow-y: hidden;
}
/* Inventory List Filters */
.inventory-filters {
flex: 0;
h3,
.filter-title {
.modesto();
color: var(--pf1-olive);
font-size: var(--font-size-24);
margin: 0;
}
}
&.inventory {
footer {
display: flex;
flex-flow: row wrap;
gap: 3px;
.inventory-tags,
.carry-bonus {
flex: 1;
align-self: center;
}
.inventory-tags {
justify-content: flex-end;
}
.carry-capacity,
.lift {
flex: 1 100%;
}
}
}
.carry-label {
flex: 0 0 24px;
}
.carry-bonus {
label {
flex: 0;
margin-left: 8px;
text-align: right;
line-height: 20px;
color: var(--pf1-tan);
white-space: nowrap;
}
input[type="text"],
span.text-box {
height: 20px;
flex: 0 0 48px;
text-align: center;
margin-left: 8px;
border-bottom: var(--pf1-border-groove);
}
}
/* ----------------------------------------- */
/* Features */
/* ----------------------------------------- */
section.feats-body {
overflow-y: auto;
.scrollbar();
.feats-group {
.item-detail.item-type {
flex: 0 0 40px;
}
}
}
/* ----------------------------------------- */
/* Spellbook */
/* ----------------------------------------- */
a.rollable {
display: inline-flex;
gap: 2px;
}
/* ----------------------------------------- */
/* TinyMCE */
/* ----------------------------------------- */
.editor {
padding: 0 8px;
}
/* ----------------------------------------- */
/* Misc */
/* ----------------------------------------- */
hr {
margin: 2px 0;
flex: 0;
}
&.actor-notes {
overflow: hidden scroll;
.scrollbar();
.primary-content {
flex: 1 0 320px;
display: flex;
.editor {
flex: 1;
}
}
}
table {
table-layout: fixed;
overflow: hidden;
&.ability-table {
input[type="text"] {
height: 20px;
}
}
td {
img {
vertical-align: middle;
margin-right: 2px;
}
}
}
.skill-lock-button {
flex: 0;
&:before {
font-family: "Font Awesome 5 Free";
font-weight: 900;
content: "\f023";
margin-right: 0.5em;
}
&.unlocked:before {
content: "\f3c1";
}
}
}
}
.locked {
img.sheet-profile {
max-height: 360px;
max-width: 240px;
}
}

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