Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c05855fd39 |
370
.gitignore
vendored
370
.gitignore
vendored
@@ -1,6 +1,3 @@
|
|||||||
## Ignore Visual Studio temporary files, build results, and
|
|
||||||
## files generated by popular Visual Studio add-ons.
|
|
||||||
##
|
|
||||||
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
@@ -10,353 +7,8 @@
|
|||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Mono auto generated files
|
|
||||||
mono_crash.*
|
|
||||||
|
|
||||||
# Build results
|
|
||||||
[Dd]ebug/
|
|
||||||
[Dd]ebugPublic/
|
|
||||||
[Rr]elease/
|
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
|
||||||
x86/
|
|
||||||
[Ww][Ii][Nn]32/
|
|
||||||
[Aa][Rr][Mm]/
|
|
||||||
[Aa][Rr][Mm]64/
|
|
||||||
bld/
|
|
||||||
[Bb]in/
|
|
||||||
[Oo]bj/
|
|
||||||
[Ll]og/
|
|
||||||
[Ll]ogs/
|
|
||||||
|
|
||||||
# Visual Studio 2015/2017 cache/options directory
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
.vs/
|
.vs/
|
||||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
|
||||||
#wwwroot/
|
|
||||||
|
|
||||||
# Visual Studio 2017 auto generated files
|
|
||||||
Generated\ Files/
|
|
||||||
|
|
||||||
# MSTest test Results
|
|
||||||
[Tt]est[Rr]esult*/
|
|
||||||
[Bb]uild[Ll]og.*
|
|
||||||
|
|
||||||
# NUnit
|
|
||||||
*.VisualState.xml
|
|
||||||
TestResult.xml
|
|
||||||
nunit-*.xml
|
|
||||||
|
|
||||||
# Build Results of an ATL Project
|
|
||||||
[Dd]ebugPS/
|
|
||||||
[Rr]eleasePS/
|
|
||||||
dlldata.c
|
|
||||||
|
|
||||||
# Benchmark Results
|
|
||||||
BenchmarkDotNet.Artifacts/
|
|
||||||
|
|
||||||
# .NET Core
|
|
||||||
project.lock.json
|
|
||||||
project.fragment.lock.json
|
|
||||||
artifacts/
|
|
||||||
|
|
||||||
# ASP.NET Scaffolding
|
|
||||||
ScaffoldingReadMe.txt
|
|
||||||
|
|
||||||
# StyleCop
|
|
||||||
StyleCopReport.xml
|
|
||||||
|
|
||||||
# Files built by Visual Studio
|
|
||||||
*_i.c
|
|
||||||
*_p.c
|
|
||||||
*_h.h
|
|
||||||
*.ilk
|
|
||||||
*.meta
|
|
||||||
*.obj
|
|
||||||
*.iobj
|
|
||||||
*.pch
|
|
||||||
*.pdb
|
|
||||||
*.ipdb
|
|
||||||
*.pgc
|
|
||||||
*.pgd
|
|
||||||
*.rsp
|
|
||||||
*.sbr
|
|
||||||
*.tlb
|
|
||||||
*.tli
|
|
||||||
*.tlh
|
|
||||||
*.tmp
|
|
||||||
*.tmp_proj
|
|
||||||
*_wpftmp.csproj
|
|
||||||
*.log
|
|
||||||
*.tlog
|
|
||||||
*.vspscc
|
|
||||||
*.vssscc
|
|
||||||
.builds
|
|
||||||
*.pidb
|
|
||||||
*.svclog
|
|
||||||
*.scc
|
|
||||||
|
|
||||||
# Chutzpah Test files
|
|
||||||
_Chutzpah*
|
|
||||||
|
|
||||||
# Visual C++ cache files
|
|
||||||
ipch/
|
|
||||||
*.aps
|
|
||||||
*.ncb
|
|
||||||
*.opendb
|
|
||||||
*.opensdf
|
|
||||||
*.sdf
|
|
||||||
*.cachefile
|
|
||||||
*.VC.db
|
|
||||||
*.VC.VC.opendb
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
|
||||||
*.psess
|
|
||||||
*.vsp
|
|
||||||
*.vspx
|
|
||||||
*.sap
|
|
||||||
|
|
||||||
# Visual Studio Trace Files
|
|
||||||
*.e2e
|
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
|
||||||
$tf/
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
|
||||||
_ReSharper*/
|
|
||||||
*.[Rr]e[Ss]harper
|
|
||||||
*.DotSettings.user
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# AxoCover is a Code Coverage Tool
|
|
||||||
.axoCover/*
|
|
||||||
!.axoCover/settings.json
|
|
||||||
|
|
||||||
# Coverlet is a free, cross platform Code Coverage Tool
|
|
||||||
coverage*.json
|
|
||||||
coverage*.xml
|
|
||||||
coverage*.info
|
|
||||||
|
|
||||||
# Visual Studio code coverage results
|
|
||||||
*.coverage
|
|
||||||
*.coveragexml
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
_NCrunch_*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
nCrunchTemp_*
|
|
||||||
|
|
||||||
# MightyMoose
|
|
||||||
*.mm.*
|
|
||||||
AutoTest.Net/
|
|
||||||
|
|
||||||
# Web workbench (sass)
|
|
||||||
.sass-cache/
|
|
||||||
|
|
||||||
# Installshield output folder
|
|
||||||
[Ee]xpress/
|
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
|
||||||
DocProject/buildhelp/
|
|
||||||
DocProject/Help/*.HxT
|
|
||||||
DocProject/Help/*.HxC
|
|
||||||
DocProject/Help/*.hhc
|
|
||||||
DocProject/Help/*.hhk
|
|
||||||
DocProject/Help/*.hhp
|
|
||||||
DocProject/Help/Html2
|
|
||||||
DocProject/Help/html
|
|
||||||
|
|
||||||
# Click-Once directory
|
|
||||||
publish/
|
|
||||||
|
|
||||||
# Publish Web Output
|
|
||||||
*.[Pp]ublish.xml
|
|
||||||
*.azurePubxml
|
|
||||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
|
||||||
*.pubxml
|
|
||||||
*.publishproj
|
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
|
||||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
|
||||||
# in these scripts will be unencrypted
|
|
||||||
PublishScripts/
|
|
||||||
|
|
||||||
# NuGet Packages
|
|
||||||
*.nupkg
|
|
||||||
# NuGet Symbol Packages
|
|
||||||
*.snupkg
|
|
||||||
# The packages folder can be ignored because of Package Restore
|
|
||||||
**/[Pp]ackages/*
|
|
||||||
# except build/, which is used as an MSBuild target.
|
|
||||||
!**/[Pp]ackages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
|
||||||
#!**/[Pp]ackages/repositories.config
|
|
||||||
# NuGet v3's project.json files produces more ignorable files
|
|
||||||
*.nuget.props
|
|
||||||
*.nuget.targets
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
|
||||||
csx/
|
|
||||||
*.build.csdef
|
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
|
||||||
ecf/
|
|
||||||
rcf/
|
|
||||||
|
|
||||||
# Windows Store app package directories and files
|
|
||||||
AppPackages/
|
|
||||||
BundleArtifacts/
|
|
||||||
Package.StoreAssociation.xml
|
|
||||||
_pkginfo.txt
|
|
||||||
*.appx
|
|
||||||
*.appxbundle
|
|
||||||
*.appxupload
|
|
||||||
|
|
||||||
# Visual Studio cache files
|
|
||||||
# files ending in .cache can be ignored
|
|
||||||
*.[Cc]ache
|
|
||||||
# but keep track of directories ending in .cache
|
|
||||||
!?*.[Cc]ache/
|
|
||||||
|
|
||||||
# Others
|
|
||||||
ClientBin/
|
|
||||||
~$*
|
|
||||||
*~
|
|
||||||
*.dbmdl
|
|
||||||
*.dbproj.schemaview
|
|
||||||
*.jfm
|
|
||||||
*.pfx
|
|
||||||
*.publishsettings
|
|
||||||
orleans.codegen.cs
|
|
||||||
|
|
||||||
# Including strong name files can present a security risk
|
|
||||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
|
||||||
#*.snk
|
|
||||||
|
|
||||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
|
||||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
|
||||||
#bower_components/
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
|
||||||
# because we have git ;-)
|
|
||||||
_UpgradeReport_Files/
|
|
||||||
Backup*/
|
|
||||||
UpgradeLog*.XML
|
|
||||||
UpgradeLog*.htm
|
|
||||||
ServiceFabricBackup/
|
|
||||||
*.rptproj.bak
|
|
||||||
|
|
||||||
# SQL Server files
|
|
||||||
*.mdf
|
|
||||||
*.ldf
|
|
||||||
*.ndf
|
|
||||||
|
|
||||||
# Business Intelligence projects
|
|
||||||
*.rdl.data
|
|
||||||
*.bim.layout
|
|
||||||
*.bim_*.settings
|
|
||||||
*.rptproj.rsuser
|
|
||||||
*- [Bb]ackup.rdl
|
|
||||||
*- [Bb]ackup ([0-9]).rdl
|
|
||||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
|
||||||
|
|
||||||
# Microsoft Fakes
|
|
||||||
FakesAssemblies/
|
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
|
||||||
*.GhostDoc.xml
|
|
||||||
|
|
||||||
# Node.js Tools for Visual Studio
|
|
||||||
.ntvs_analysis.dat
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
|
||||||
*.plg
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
|
||||||
*.opt
|
|
||||||
|
|
||||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
|
||||||
*.vbw
|
|
||||||
|
|
||||||
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
|
||||||
*.vbp
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
|
||||||
*.dsw
|
|
||||||
*.dsp
|
|
||||||
|
|
||||||
# Visual Studio 6 technical files
|
|
||||||
*.ncb
|
|
||||||
*.aps
|
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
|
||||||
**/*.Server/GeneratedArtifacts
|
|
||||||
**/*.Server/ModelManifest.xml
|
|
||||||
_Pvt_Extensions
|
|
||||||
|
|
||||||
# Paket dependency manager
|
|
||||||
.paket/paket.exe
|
|
||||||
paket-files/
|
|
||||||
|
|
||||||
# FAKE - F# Make
|
|
||||||
.fake/
|
|
||||||
|
|
||||||
# CodeRush personal settings
|
|
||||||
.cr/personal
|
|
||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# Cake - Uncomment if you are using it
|
|
||||||
# tools/**
|
|
||||||
# !tools/packages.config
|
|
||||||
|
|
||||||
# Tabs Studio
|
|
||||||
*.tss
|
|
||||||
|
|
||||||
# Telerik's JustMock configuration file
|
|
||||||
*.jmconfig
|
|
||||||
|
|
||||||
# BizTalk build output
|
|
||||||
*.btp.cs
|
|
||||||
*.btm.cs
|
|
||||||
*.odx.cs
|
|
||||||
*.xsd.cs
|
|
||||||
|
|
||||||
# OpenCover UI analysis results
|
|
||||||
OpenCover/
|
|
||||||
|
|
||||||
# Azure Stream Analytics local run output
|
|
||||||
ASALocalRun/
|
|
||||||
|
|
||||||
# MSBuild Binary and Structured Log
|
|
||||||
*.binlog
|
|
||||||
|
|
||||||
# NVidia Nsight GPU debugger configuration file
|
|
||||||
*.nvuser
|
|
||||||
|
|
||||||
# MFractors (Xamarin productivity tool) working folder
|
|
||||||
.mfractor/
|
|
||||||
|
|
||||||
# Local History for Visual Studio
|
# Local History for Visual Studio
|
||||||
.localhistory/
|
.localhistory/
|
||||||
@@ -364,18 +16,6 @@ ASALocalRun/
|
|||||||
# Visual Studio History (VSHistory) files
|
# Visual Studio History (VSHistory) files
|
||||||
.vshistory/
|
.vshistory/
|
||||||
|
|
||||||
# BeatPulse healthcheck temp database
|
|
||||||
healthchecksdb
|
|
||||||
|
|
||||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
|
||||||
MigrationBackup/
|
|
||||||
|
|
||||||
# Ionide (cross platform F# VS Code tools) working folder
|
|
||||||
.ionide/
|
|
||||||
|
|
||||||
# Fody - auto-generated XML schema
|
|
||||||
FodyWeavers.xsd
|
|
||||||
|
|
||||||
# VS Code files for those working on multiple tools
|
# VS Code files for those working on multiple tools
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
@@ -387,12 +27,4 @@ FodyWeavers.xsd
|
|||||||
# Local History for Visual Studio Code
|
# Local History for Visual Studio Code
|
||||||
.history/
|
.history/
|
||||||
|
|
||||||
# Windows Installer files from build outputs
|
src/
|
||||||
*.cab
|
|
||||||
*.msi
|
|
||||||
*.msix
|
|
||||||
*.msm
|
|
||||||
*.msp
|
|
||||||
|
|
||||||
# JetBrains Rider
|
|
||||||
*.sln.iml
|
|
||||||
18
CHANGELOG.md
Normal file
18
CHANGELOG.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
## [0.1.2](https://github.com/xdy/twodsix-foundryvtt/compare/v4.24.5...v4.24.6) (2024-05-04)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
* Affichage de la difficulté pour les Talents Psioniques
|
||||||
|
* Ajout de scrollbar dans la feuille de personnage
|
||||||
|
* Drag & Drop sur la fiche des Carrières, Maladies, Contacts, Espèces
|
||||||
|
* Retrait du style sur les messages (le temps d'uniformiser les messages)
|
||||||
|
* Différents ajustements css
|
||||||
|
|
||||||
|
### Features
|
||||||
|
* Thème Bleu
|
||||||
|
* Amélioration du modèle Espèce
|
||||||
|
* Ajout des champs : Description Détaillée, Modificateurs (tableau) et Traits (tableau)
|
||||||
|
* Lors du Drop d'une Espèce, copie des informations sur la fiche
|
||||||
|
* Ajout de la Durée pour les Talents Psioniques
|
||||||
|
* Bouton pour le jet de la Durée des Talents Psionique sur les messages
|
||||||
|
* Ajout de la difficulté sur la fenêtre des Jets
|
||||||
|
* Affichage du succès et de l'échec sur les messages
|
||||||
25
lang/en.json
25
lang/en.json
@@ -15,9 +15,13 @@
|
|||||||
"TYPES.Actor.vehicule": "Vehicule",
|
"TYPES.Actor.vehicule": "Vehicule",
|
||||||
"TYPES.Actor.container": "Container (backpack, chest)",
|
"TYPES.Actor.container": "Container (backpack, chest)",
|
||||||
"MGT2": {
|
"MGT2": {
|
||||||
|
"Save": "Save",
|
||||||
|
"Cancel": "Cancel",
|
||||||
|
"Close": "Close",
|
||||||
"Themes": {
|
"Themes": {
|
||||||
"BlackAndRed": "Classic Traveller Cover",
|
"BlackAndRed": "Classic Traveller Cover",
|
||||||
"Mwamba": "Oppa Mwamba Style"
|
"Mwamba": "Oppa Mwamba Style",
|
||||||
|
"Blue": "Blue"
|
||||||
},
|
},
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"theme": {
|
"theme": {
|
||||||
@@ -57,6 +61,8 @@
|
|||||||
"NewCareer":"New Career",
|
"NewCareer":"New Career",
|
||||||
"AddCareer":"Add Career",
|
"AddCareer":"Add Career",
|
||||||
"EditCareer":"Edit Career",
|
"EditCareer":"Edit Career",
|
||||||
|
"EditTrait":"Éditer Trait",
|
||||||
|
"DeleteTrait": "Supprimer Trait",
|
||||||
"DeleteCareer":"Delete Career",
|
"DeleteCareer":"Delete Career",
|
||||||
"NewSkill":"New Skill",
|
"NewSkill":"New Skill",
|
||||||
"DeleteSkill":"Delete Skill",
|
"DeleteSkill":"Delete Skill",
|
||||||
@@ -136,6 +142,7 @@
|
|||||||
"ShowMinMax": "Show Min/Max",
|
"ShowMinMax": "Show Min/Max",
|
||||||
"ShowPsionicTalents": "Show Psionic Talents",
|
"ShowPsionicTalents": "Show Psionic Talents",
|
||||||
"Skills": "Skills",
|
"Skills": "Skills",
|
||||||
|
"TabSkills": "Traits & Compétences",
|
||||||
"States": "States",
|
"States": "States",
|
||||||
"StoreEquipment": "Store Equipment",
|
"StoreEquipment": "Store Equipment",
|
||||||
"StoreItem": "Store Item",
|
"StoreItem": "Store Item",
|
||||||
@@ -344,7 +351,9 @@
|
|||||||
"Chat": {
|
"Chat": {
|
||||||
"Roll": {
|
"Roll": {
|
||||||
"ApplyDamages": "Apply Damages",
|
"ApplyDamages": "Apply Damages",
|
||||||
"Damages": "Roll damages"
|
"Damages": "Roll damages",
|
||||||
|
"Success": "Success",
|
||||||
|
"Failure": "Failure"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Items": {
|
"Items": {
|
||||||
@@ -367,10 +376,12 @@
|
|||||||
"Cost": "Cost",
|
"Cost": "Cost",
|
||||||
"Damage": "Damage",
|
"Damage": "Damage",
|
||||||
"Description": "Description",
|
"Description": "Description",
|
||||||
|
"DetailedDescription": "Detailled Description",
|
||||||
"Details": "Details",
|
"Details": "Details",
|
||||||
"Disease": "Disease",
|
"Disease": "Disease",
|
||||||
"Diseases": "Diseases",
|
"Diseases": "Diseases",
|
||||||
"Difficulty": "Difficulty",
|
"Difficulty": "Difficulty",
|
||||||
|
"Duration": "Duration",
|
||||||
"Equipped": "Equipped",
|
"Equipped": "Equipped",
|
||||||
"Equipment": "Equipment",
|
"Equipment": "Equipment",
|
||||||
"Equipments": "Equipments",
|
"Equipments": "Equipments",
|
||||||
@@ -387,6 +398,9 @@
|
|||||||
"LockedDescription": "Locked Description",
|
"LockedDescription": "Locked Description",
|
||||||
"Magazine": "Magazine",
|
"Magazine": "Magazine",
|
||||||
"MagazineCost": "Magazine Cost",
|
"MagazineCost": "Magazine Cost",
|
||||||
|
"Modifier": "Modifier",
|
||||||
|
"Modifiers": "Modifiers",
|
||||||
|
"Name": "Name",
|
||||||
"Nickname": "Nickname",
|
"Nickname": "Nickname",
|
||||||
"NotProficient": "Not proficient (-3)",
|
"NotProficient": "Not proficient (-3)",
|
||||||
"Notes": "Notes",
|
"Notes": "Notes",
|
||||||
@@ -408,6 +422,7 @@
|
|||||||
"Relation": "Relation",
|
"Relation": "Relation",
|
||||||
"Relations": "Relations",
|
"Relations": "Relations",
|
||||||
"Skill": "Skill",
|
"Skill": "Skill",
|
||||||
|
"PsySkill": "Psy Skill",
|
||||||
"Speciality": "Speciality",
|
"Speciality": "Speciality",
|
||||||
"Status": "Status",
|
"Status": "Status",
|
||||||
"Storage": "Storage",
|
"Storage": "Storage",
|
||||||
@@ -417,12 +432,18 @@
|
|||||||
"Terms": "Terms",
|
"Terms": "Terms",
|
||||||
"Title": "Title",
|
"Title": "Title",
|
||||||
"Trait": "Trait",
|
"Trait": "Trait",
|
||||||
|
"Traits": "Traits",
|
||||||
"Type": "Type",
|
"Type": "Type",
|
||||||
"Weapon": "Weapon",
|
"Weapon": "Weapon",
|
||||||
"Weapons": "Weapons",
|
"Weapons": "Weapons",
|
||||||
"Weight": "Weight",
|
"Weight": "Weight",
|
||||||
"Weightless": "Weightless",
|
"Weightless": "Weightless",
|
||||||
"Quantity": "Quantity"
|
"Quantity": "Quantity"
|
||||||
|
},
|
||||||
|
"Durations": {
|
||||||
|
"Seconds": "Seconds",
|
||||||
|
"Minutes": "Minutes",
|
||||||
|
"Heures": "Hours"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
25
lang/fr.json
25
lang/fr.json
@@ -15,9 +15,13 @@
|
|||||||
"TYPES.Actor.vehicule": "Véhicule",
|
"TYPES.Actor.vehicule": "Véhicule",
|
||||||
"TYPES.Actor.container": "Contenant (sac, coffre)",
|
"TYPES.Actor.container": "Contenant (sac, coffre)",
|
||||||
"MGT2": {
|
"MGT2": {
|
||||||
|
"Save": "Sauvegarder",
|
||||||
|
"Cancel": "Annuler",
|
||||||
|
"Close": "Fermer",
|
||||||
"Themes": {
|
"Themes": {
|
||||||
"BlackAndRed": "Couverture Classique Traveller",
|
"BlackAndRed": "Couverture Classique Traveller",
|
||||||
"Mwamba": "Oppa Mwamba Style"
|
"Mwamba": "Oppa Mwamba Style",
|
||||||
|
"Blue": "Bleu"
|
||||||
},
|
},
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"theme": {
|
"theme": {
|
||||||
@@ -57,6 +61,8 @@
|
|||||||
"NewCareer":"Nouvelle Carrière",
|
"NewCareer":"Nouvelle Carrière",
|
||||||
"AddCareer":"Ajouter Carrière",
|
"AddCareer":"Ajouter Carrière",
|
||||||
"EditCareer":"Éditer Carrière",
|
"EditCareer":"Éditer Carrière",
|
||||||
|
"EditTrait":"Éditer Trait",
|
||||||
|
"DeleteTrait": "Supprimer Trait",
|
||||||
"DeleteCareer":"Supprimer Carrière",
|
"DeleteCareer":"Supprimer Carrière",
|
||||||
"NewSkill":"Nouvelle Compétence",
|
"NewSkill":"Nouvelle Compétence",
|
||||||
"DeleteSkill":"Supprimer Compétence",
|
"DeleteSkill":"Supprimer Compétence",
|
||||||
@@ -136,6 +142,7 @@
|
|||||||
"ShowMinMax": "Afficher le Min/Max",
|
"ShowMinMax": "Afficher le Min/Max",
|
||||||
"ShowPsionicTalents": "Afficher les Talents Psy",
|
"ShowPsionicTalents": "Afficher les Talents Psy",
|
||||||
"Skills": "Compétences",
|
"Skills": "Compétences",
|
||||||
|
"TabSkills": "Traits & Compétences",
|
||||||
"States": "États",
|
"States": "États",
|
||||||
"StoreEquipment": "Entreposer Équipement",
|
"StoreEquipment": "Entreposer Équipement",
|
||||||
"StoreItem": "Entreposer Objet",
|
"StoreItem": "Entreposer Objet",
|
||||||
@@ -344,7 +351,9 @@
|
|||||||
"Chat": {
|
"Chat": {
|
||||||
"Roll": {
|
"Roll": {
|
||||||
"ApplyDamages": "Appliquer Dégâts",
|
"ApplyDamages": "Appliquer Dégâts",
|
||||||
"Damages": "Lancer les Dégâts"
|
"Damages": "Lancer les Dégâts",
|
||||||
|
"Success": "Succès",
|
||||||
|
"Failure": "Échec"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Items": {
|
"Items": {
|
||||||
@@ -367,10 +376,12 @@
|
|||||||
"Cost": "Coût",
|
"Cost": "Coût",
|
||||||
"Damage": "Dégâts",
|
"Damage": "Dégâts",
|
||||||
"Description": "Description",
|
"Description": "Description",
|
||||||
|
"DetailedDescription": "Desc. Détailée",
|
||||||
"Details": "Détails",
|
"Details": "Détails",
|
||||||
"Difficulty": "Difficulté",
|
"Difficulty": "Difficulté",
|
||||||
"Disease": "Maladie",
|
"Disease": "Maladie",
|
||||||
"Diseases": "Maladies",
|
"Diseases": "Maladies",
|
||||||
|
"Duration": "Durée",
|
||||||
"Equipped": "Équipé",
|
"Equipped": "Équipé",
|
||||||
"Equipment": "Équipement",
|
"Equipment": "Équipement",
|
||||||
"Equipments": "Équipements",
|
"Equipments": "Équipements",
|
||||||
@@ -387,6 +398,9 @@
|
|||||||
"LockedDescription": "Description Verrouillé",
|
"LockedDescription": "Description Verrouillé",
|
||||||
"Magazine": "Chargeur",
|
"Magazine": "Chargeur",
|
||||||
"MagazineCost": "Coût du Chargeur",
|
"MagazineCost": "Coût du Chargeur",
|
||||||
|
"Modifier": "Modificateur",
|
||||||
|
"Modifiers": "Modificateurs",
|
||||||
|
"Name": "Nom",
|
||||||
"Nickname": "Surnom",
|
"Nickname": "Surnom",
|
||||||
"NotProficient": "Incompétent (-3)",
|
"NotProficient": "Incompétent (-3)",
|
||||||
"Notes": "Notes",
|
"Notes": "Notes",
|
||||||
@@ -408,6 +422,7 @@
|
|||||||
"Relation": "Relation",
|
"Relation": "Relation",
|
||||||
"Relations": "Relations",
|
"Relations": "Relations",
|
||||||
"Skill": "Compétence",
|
"Skill": "Compétence",
|
||||||
|
"PsySkill": "Comp. Psionique",
|
||||||
"Speciality": "Spécialité",
|
"Speciality": "Spécialité",
|
||||||
"Status": "Statut",
|
"Status": "Statut",
|
||||||
"Storage": "Stockage",
|
"Storage": "Stockage",
|
||||||
@@ -417,12 +432,18 @@
|
|||||||
"Terms": "Termes",
|
"Terms": "Termes",
|
||||||
"Title": "Titre",
|
"Title": "Titre",
|
||||||
"Trait": "Trait",
|
"Trait": "Trait",
|
||||||
|
"Traits": "Traits",
|
||||||
"Type": "Type",
|
"Type": "Type",
|
||||||
"Weapon": "Arme",
|
"Weapon": "Arme",
|
||||||
"Weapons": "Armes",
|
"Weapons": "Armes",
|
||||||
"Weight": "Poid",
|
"Weight": "Poid",
|
||||||
"Weightless": "Aucun Poid",
|
"Weightless": "Aucun Poid",
|
||||||
"Quantity": "Quantité"
|
"Quantity": "Quantité"
|
||||||
|
},
|
||||||
|
"Durations": {
|
||||||
|
"Seconds": "Secondes",
|
||||||
|
"Minutes": "Minutes",
|
||||||
|
"Heures": "Heures"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
508
mgt2.bundle.js
508
mgt2.bundle.js
@@ -10,11 +10,21 @@ class CharacterData extends foundry.abstract.TypeDataModel {
|
|||||||
personal: new fields.SchemaField({
|
personal: new fields.SchemaField({
|
||||||
title: new fields.StringField({ required: false, blank: true, trim: true }),
|
title: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
species: new fields.StringField({ required: false, blank: true, trim: true }),
|
species: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
|
speciesText: new fields.SchemaField({
|
||||||
|
description: new fields.StringField({ required: false, blank: true, trim: true, nullable: true }),
|
||||||
|
descriptionLong: new fields.HTMLField({ required: false, blank: true, trim: true })
|
||||||
|
}),
|
||||||
age: new fields.StringField({ required: false, blank: true, trim: true }),
|
age: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
gender: new fields.StringField({ required: false, blank: true, trim: true }),
|
gender: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
pronouns: new fields.StringField({ required: false, blank: true, trim: true }),
|
pronouns: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
homeworld: new fields.StringField({ required: false, blank: true, trim: true }),
|
homeworld: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
ucp: new fields.StringField({ required: false, blank: true, trim: true, initial: "" })
|
ucp: new fields.StringField({ required: false, blank: true, trim: true, initial: "" }),
|
||||||
|
traits: new fields.ArrayField(
|
||||||
|
new fields.SchemaField({
|
||||||
|
name: new fields.StringField({ required: true, blank: true, trim: true }),
|
||||||
|
description: new fields.StringField({ required: false, blank: true, trim: true })
|
||||||
|
})
|
||||||
|
)
|
||||||
}),
|
}),
|
||||||
biography: new fields.HTMLField({ required: false, blank: true, trim: true }),
|
biography: new fields.HTMLField({ required: false, blank: true, trim: true }),
|
||||||
characteristics: new fields.SchemaField({
|
characteristics: new fields.SchemaField({
|
||||||
@@ -212,7 +222,9 @@ class TalentData extends ItemBaseData {
|
|||||||
});
|
});
|
||||||
schema.psionic = new fields.SchemaField({
|
schema.psionic = new fields.SchemaField({
|
||||||
reach: new fields.StringField({ required: false, blank: true, trim: true }),
|
reach: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
cost: new fields.NumberField({ required: false, initial: 1, min: 0, integer: true })
|
cost: new fields.NumberField({ required: false, initial: 1, min: 0, integer: true }),
|
||||||
|
duration: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
|
durationUnit: new fields.StringField({ required: false })
|
||||||
});
|
});
|
||||||
schema.roll = new fields.SchemaField({
|
schema.roll = new fields.SchemaField({
|
||||||
characteristic: new fields.StringField({ required: false, blank: true, trim: true }),
|
characteristic: new fields.StringField({ required: false, blank: true, trim: true }),
|
||||||
@@ -306,9 +318,25 @@ class ComputerData extends PhysicalItemData {
|
|||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class SpeciesData extends ItemBaseData {
|
class SpeciesData extends foundry.abstract.TypeDataModel {
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const schema = super.defineSchema();
|
const fields2 = foundry.data.fields;
|
||||||
|
const schema = {
|
||||||
|
description: new fields2.StringField({ required: false, blank: true, trim: true, nullable: true }),
|
||||||
|
descriptionLong: new fields2.HTMLField({ required: false, blank: true, trim: true }),
|
||||||
|
traits: new fields2.ArrayField(
|
||||||
|
new fields2.SchemaField({
|
||||||
|
name: new fields2.StringField({ required: true, blank: true, trim: true }),
|
||||||
|
description: new fields2.StringField({ required: false, blank: true, trim: true })
|
||||||
|
})
|
||||||
|
),
|
||||||
|
modifiers: new fields2.ArrayField(
|
||||||
|
new fields2.SchemaField({
|
||||||
|
characteristic: new fields2.StringField({ required: false, blank: true, trim: true }),
|
||||||
|
value: new fields2.NumberField({ required: false, integer: true, nullable: true })
|
||||||
|
})
|
||||||
|
)
|
||||||
|
};
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -458,16 +486,21 @@ MGT2.Timeframes = Object.freeze({
|
|||||||
Faster: "MGT2.Timeframes.Faster"
|
Faster: "MGT2.Timeframes.Faster"
|
||||||
});
|
});
|
||||||
MGT2.SpeedBands = Object.freeze({
|
MGT2.SpeedBands = Object.freeze({
|
||||||
Stoppped: "MGT2.Stoppped",
|
Stoppped: "MGT2.SpeedBands.Stoppped",
|
||||||
Idle: "MGT2.Idle",
|
Idle: "MGT2.SpeedBands.Idle",
|
||||||
VerySlow: "MGT2.VerySlow",
|
VerySlow: "MGT2.SpeedBands.VerySlow",
|
||||||
Slow: "MGT2.Slow",
|
Slow: "MGT2.SpeedBands.Slow",
|
||||||
Medium: "MGT2.Medium",
|
Medium: "MGT2.SpeedBands.Medium",
|
||||||
High: "MGT2.High.",
|
High: "MGT2.SpeedBands.High.",
|
||||||
Fast: "MGT2.Fast",
|
Fast: "MGT2.SpeedBands.Fast",
|
||||||
VeryFast: "MGT2.VeryFast",
|
VeryFast: "MGT2.SpeedBands.VeryFast",
|
||||||
Subsonic: "MGT2.Subsonic",
|
Subsonic: "MGT2.SpeedBands.Subsonic",
|
||||||
Hypersonic: "MGT2.Hypersonic"
|
Hypersonic: "MGT2.SpeedBands.Hypersonic"
|
||||||
|
});
|
||||||
|
MGT2.Durations = Object.freeze({
|
||||||
|
Seconds: "MGT2.Durations.Seconds",
|
||||||
|
Minutes: "MGT2.Durations.Minutes",
|
||||||
|
Heures: "MGT2.Durations.Heures"
|
||||||
});
|
});
|
||||||
|
|
||||||
class ActorCharacter {
|
class ActorCharacter {
|
||||||
@@ -975,6 +1008,9 @@ var __publicField = (obj, key, value) => {
|
|||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
const _MGT2Helper = class _MGT2Helper {
|
const _MGT2Helper = class _MGT2Helper {
|
||||||
|
static hasValue(object, property) {
|
||||||
|
return object !== void 0 && object.hasOwnProperty(property) && object[property] !== null && object[property] !== void 0 && object[property] !== "";
|
||||||
|
}
|
||||||
static getItemsWeight(items) {
|
static getItemsWeight(items) {
|
||||||
let weight = 0;
|
let weight = 0;
|
||||||
for (let i of items) {
|
for (let i of items) {
|
||||||
@@ -1043,26 +1079,66 @@ const _MGT2Helper = class _MGT2Helper {
|
|||||||
}
|
}
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
static getDifficultyValue(difficulty) {
|
||||||
|
switch (difficulty) {
|
||||||
|
case "Simple":
|
||||||
|
return 2;
|
||||||
|
case "Easy":
|
||||||
|
return 4;
|
||||||
|
case "Routine":
|
||||||
|
return 6;
|
||||||
|
case "Average":
|
||||||
|
return 8;
|
||||||
|
case "Difficult":
|
||||||
|
return 10;
|
||||||
|
case "VeryDifficult":
|
||||||
|
return 12;
|
||||||
|
case "Formidable":
|
||||||
|
return 14;
|
||||||
|
case "Impossible":
|
||||||
|
return 16;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static getDifficultyDisplay(difficulty) {
|
||||||
|
switch (difficulty) {
|
||||||
|
case "Simple":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Simple") + " (2+)";
|
||||||
|
case "Easy":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Easy") + " (4+)";
|
||||||
|
case "Routine":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Routine") + " (6+)";
|
||||||
|
case "Average":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Average") + " (8+)";
|
||||||
|
case "Difficult":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Difficult") + " (10+)";
|
||||||
|
case "VeryDifficult":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.VeryDifficult") + " (12+)";
|
||||||
|
case "Formidable":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Formidable") + " (14+)";
|
||||||
|
case "Impossible":
|
||||||
|
return game.i18n.localize("MGT2.Difficulty.Impossible") + " (16+)";
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
static getRangeDisplay(range) {
|
static getRangeDisplay(range) {
|
||||||
let value = Number(range.value);
|
let value = Number(range.value);
|
||||||
if (isNaN(value))
|
if (isNaN(value))
|
||||||
return null;
|
return null;
|
||||||
let label;
|
let label;
|
||||||
if (game.settings.get("mgt2", "useDistanceMetric") === true) {
|
if (range.unit !== null && range.unit !== void 0 && range.unit !== "")
|
||||||
if (range.unit !== null && range.unit !== void 0 && range.unit !== "")
|
label = game.i18n.localize(`MGT2.MetricRange.${range.unit}`).toLowerCase();
|
||||||
label = game.i18n.localize(`MGT2.MetricRange.${range.unit}`).toLowerCase();
|
else
|
||||||
else
|
label = "";
|
||||||
label = "";
|
|
||||||
}
|
|
||||||
return `${value}${label}`;
|
return `${value}${label}`;
|
||||||
}
|
}
|
||||||
static getWeightLabel() {
|
static getWeightLabel() {
|
||||||
const label = game.settings.get("mgt2", "useWeightMetric") === true ? "MGT2.MetricSystem.Weight.kg" : "MGT2.ImperialSystem.Weight.lb";
|
return game.i18n.localize("MGT2.MetricSystem.Weight.kg");
|
||||||
return game.i18n.localize(label);
|
|
||||||
}
|
}
|
||||||
static getDistanceLabel() {
|
static getDistanceLabel() {
|
||||||
const label = game.settings.get("mgt2", "useDistanceMetric") === true ? "MGT2.MetricSystem.Distance.km" : "MGT2.ImperialSystem.Distance.mi";
|
return game.i18n.localize("MGT2.MetricSystem.Distance.km");
|
||||||
return game.i18n.localize(label);
|
|
||||||
}
|
}
|
||||||
static getIntegerFromInput(data) {
|
static getIntegerFromInput(data) {
|
||||||
return Math.trunc(this.getNumberFromInput(data));
|
return Math.trunc(this.getNumberFromInput(data));
|
||||||
@@ -1082,16 +1158,10 @@ const _MGT2Helper = class _MGT2Helper {
|
|||||||
return converted;
|
return converted;
|
||||||
}
|
}
|
||||||
static convertWeightForDisplay(weight) {
|
static convertWeightForDisplay(weight) {
|
||||||
if (game.settings.get("mgt2", "useWeightMetric") === true || weight === 0)
|
return weight;
|
||||||
return weight;
|
|
||||||
const pounds = weight * this.POUNDS_CONVERT;
|
|
||||||
return Math.round(pounds * 10) / 10;
|
|
||||||
}
|
}
|
||||||
static convertWeightFromInput(weight) {
|
static convertWeightFromInput(weight) {
|
||||||
if (game.settings.get("mgt2", "useWeightMetric") === true || weight === 0)
|
return Math.round(weight * 10) / 10;
|
||||||
return Math.round(weight * 10) / 10;
|
|
||||||
const kg = this.POUNDS_CONVERT / weight;
|
|
||||||
return Math.round(kg * 10) / 10;
|
|
||||||
}
|
}
|
||||||
static getDataFromDropEvent(event) {
|
static getDataFromDropEvent(event) {
|
||||||
var _a;
|
var _a;
|
||||||
@@ -1127,6 +1197,14 @@ __publicField(_MGT2Helper, "decimalSeparator");
|
|||||||
__publicField(_MGT2Helper, "badDecimalSeparator");
|
__publicField(_MGT2Helper, "badDecimalSeparator");
|
||||||
_MGT2Helper.decimalSeparator = Number(1.1).toLocaleString().charAt(1);
|
_MGT2Helper.decimalSeparator = Number(1.1).toLocaleString().charAt(1);
|
||||||
_MGT2Helper.badDecimalSeparator = _MGT2Helper.decimalSeparator === "." ? "," : ".";
|
_MGT2Helper.badDecimalSeparator = _MGT2Helper.decimalSeparator === "." ? "," : ".";
|
||||||
|
__publicField(_MGT2Helper, "format", function() {
|
||||||
|
var s = arguments[0];
|
||||||
|
for (var i = 0; i < arguments.length - 1; i++) {
|
||||||
|
var reg = new RegExp("\\{" + i + "\\}", "gm");
|
||||||
|
s = s.replace(reg, arguments[i + 1]);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
});
|
||||||
let MGT2Helper = _MGT2Helper;
|
let MGT2Helper = _MGT2Helper;
|
||||||
|
|
||||||
class TravellerItemSheet extends ItemSheet {
|
class TravellerItemSheet extends ItemSheet {
|
||||||
@@ -1208,10 +1286,55 @@ class TravellerItemSheet extends ItemSheet {
|
|||||||
if (this.item.type == "career") {
|
if (this.item.type == "career") {
|
||||||
html.find(".event-create").click(this._onCareerEventCreate.bind(this));
|
html.find(".event-create").click(this._onCareerEventCreate.bind(this));
|
||||||
html.find(".event-delete").click(this._onCareerEventDelete.bind(this));
|
html.find(".event-delete").click(this._onCareerEventDelete.bind(this));
|
||||||
} else if (this.item.type == "armor" || this.item.type == "computer" || this.item.type == "weapon") {
|
} else if (this.item.type == "armor" || this.item.type == "computer" || this.item.type == "species" || this.item.type == "weapon") {
|
||||||
html.find(".options-create").click(this._onOptionCreate.bind(this));
|
html.find(".options-create").click(this._onOptionCreate.bind(this));
|
||||||
html.find(".options-delete").click(this._onOptionDelete.bind(this));
|
html.find(".options-delete").click(this._onOptionDelete.bind(this));
|
||||||
}
|
}
|
||||||
|
if (this.item.type == "species") {
|
||||||
|
html.find(".modifiers-create").click(this._onModifierEventCreate.bind(this));
|
||||||
|
html.find(".modifiers-delete").click(this._onModifierEventDelete.bind(this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async _onModifierEventCreate(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
await this._onSubmit(event);
|
||||||
|
let modifiers = this.item.system.modifiers;
|
||||||
|
let index;
|
||||||
|
if (modifiers.length === 0) {
|
||||||
|
modifiers = {};
|
||||||
|
modifiers["0"] = { characteristic: "Endurance", value: null };
|
||||||
|
} else {
|
||||||
|
index = Math.max(...Object.keys(modifiers));
|
||||||
|
index++;
|
||||||
|
modifiers[index] = { characteristic: "Endurance", value: null };
|
||||||
|
}
|
||||||
|
let update = {
|
||||||
|
system: {
|
||||||
|
modifiers
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return this.item.update(update);
|
||||||
|
}
|
||||||
|
async _onModifierEventDelete(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
await this._onSubmit(event);
|
||||||
|
const element = event.currentTarget.closest(".modifiers-part");
|
||||||
|
const modifiers = foundry.utils.deepClone(this.item.system.modifiers);
|
||||||
|
let index = Number(element.dataset.modifiersPart);
|
||||||
|
const newModifiers = [];
|
||||||
|
let entries = Object.entries(modifiers);
|
||||||
|
if (entries.length > 1) {
|
||||||
|
for (const [key, value] of entries) {
|
||||||
|
if (key != index)
|
||||||
|
newModifiers.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let update = {
|
||||||
|
system: {
|
||||||
|
modifiers: newModifiers
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return this.item.update(update);
|
||||||
}
|
}
|
||||||
async _onCareerEventCreate(event) {
|
async _onCareerEventCreate(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -1291,20 +1414,20 @@ class TravellerItemSheet extends ItemSheet {
|
|||||||
update[`system.${property}`] = newOptions;
|
update[`system.${property}`] = newOptions;
|
||||||
return this.item.update(update);
|
return this.item.update(update);
|
||||||
}
|
}
|
||||||
async _onTraitCreate(event) {
|
// async _onTraitCreate(event) {
|
||||||
event.preventDefault();
|
// event.preventDefault();
|
||||||
await this._onSubmit(event);
|
// await this._onSubmit(event);
|
||||||
const traits = this.item.system.traits;
|
// const traits = this.item.system.traits;
|
||||||
return this.item.update({ "system.traits.parts": traits.parts.concat([["", ""]]) });
|
// return this.item.update({ "system.traits.parts": traits.parts.concat([["", ""]]) });
|
||||||
}
|
// }
|
||||||
async _onTraitDelete(event) {
|
// async _onTraitDelete(event) {
|
||||||
event.preventDefault();
|
// event.preventDefault();
|
||||||
await this._onSubmit(event);
|
// await this._onSubmit(event);
|
||||||
const element = event.currentTarget.closest(".traits-part");
|
// const element = event.currentTarget.closest(".traits-part");
|
||||||
const traits = foundry.utils.deepClone(this.item.system.traits);
|
// const traits = foundry.utils.deepClone(this.item.system.traits);
|
||||||
traits.parts.splice(Number(element.dataset.traitsPart), 1);
|
// traits.parts.splice(Number(element.dataset.traitsPart), 1);
|
||||||
return this.item.update({ "system.traits.parts": traits.parts });
|
// return this.item.update({ "system.traits.parts": traits.parts });
|
||||||
}
|
// }
|
||||||
_getSubmitData(updateData = {}) {
|
_getSubmitData(updateData = {}) {
|
||||||
const formData = foundry.utils.expandObject(super._getSubmitData(updateData));
|
const formData = foundry.utils.expandObject(super._getSubmitData(updateData));
|
||||||
if (formData.hasOwnProperty("system") && formData.system.hasOwnProperty("container") && this.item.system.hasOwnProperty("equipped")) {
|
if (formData.hasOwnProperty("system") && formData.system.hasOwnProperty("container") && this.item.system.hasOwnProperty("equipped")) {
|
||||||
@@ -1351,7 +1474,8 @@ class RollPromptDialog extends Dialog {
|
|||||||
skills: options.skills,
|
skills: options.skills,
|
||||||
skill: options.skill,
|
skill: options.skill,
|
||||||
fatigue: options.fatigue,
|
fatigue: options.fatigue,
|
||||||
encumbrance: options.encumbrance
|
encumbrance: options.encumbrance,
|
||||||
|
difficulty: options.difficulty
|
||||||
});
|
});
|
||||||
const results = new Promise((resolve) => {
|
const results = new Promise((resolve) => {
|
||||||
new this({
|
new this({
|
||||||
@@ -1425,6 +1549,29 @@ class RollPromptHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class EditorFullViewDialog extends Dialog {
|
||||||
|
constructor(dialogData = {}, options = {}) {
|
||||||
|
super(dialogData, options);
|
||||||
|
this.options.classes = ["mgt2", game.settings.get("mgt2", "theme"), "sheet"];
|
||||||
|
this.options.resizable = true;
|
||||||
|
}
|
||||||
|
static async create(title, html) {
|
||||||
|
const htmlContent = await renderTemplate("systems/mgt2/templates/editor-fullview.html", {
|
||||||
|
config: CONFIG.MGT2,
|
||||||
|
html
|
||||||
|
});
|
||||||
|
const results = new Promise((resolve) => {
|
||||||
|
new this({
|
||||||
|
title,
|
||||||
|
content: htmlContent,
|
||||||
|
buttons: {
|
||||||
|
//close: { label: game.i18n.localize("MGT2.Close") }
|
||||||
|
}
|
||||||
|
}).render(true);
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
}
|
||||||
class ActorConfigDialog extends Dialog {
|
class ActorConfigDialog extends Dialog {
|
||||||
constructor(dialogData = {}, options = {}) {
|
constructor(dialogData = {}, options = {}) {
|
||||||
super(dialogData, options);
|
super(dialogData, options);
|
||||||
@@ -1441,7 +1588,7 @@ class ActorConfigDialog extends Dialog {
|
|||||||
content: htmlContent,
|
content: htmlContent,
|
||||||
buttons: {
|
buttons: {
|
||||||
submit: {
|
submit: {
|
||||||
label: "Save",
|
label: game.i18n.localize("MGT2.Save"),
|
||||||
icon: '<i class="fa-solid fa-floppy-disk"></i>',
|
icon: '<i class="fa-solid fa-floppy-disk"></i>',
|
||||||
callback: (html) => {
|
callback: (html) => {
|
||||||
const formData = new FormDataExtended(html[0].querySelector("form")).object;
|
const formData = new FormDataExtended(html[0].querySelector("form")).object;
|
||||||
@@ -1454,14 +1601,6 @@ class ActorConfigDialog extends Dialog {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class CharacterPrompts {
|
|
||||||
static async openConfig(system) {
|
|
||||||
return await ActorConfigDialog.create(system);
|
|
||||||
}
|
|
||||||
static async openCharacteristic(name, hide, showMax, showAll = false) {
|
|
||||||
return await ActorCharacteristicDialog.create(name, hide, showMax, showAll);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class ActorCharacteristicDialog extends Dialog {
|
class ActorCharacteristicDialog extends Dialog {
|
||||||
// https://foundryvtt.wiki/en/development/api/dialog
|
// https://foundryvtt.wiki/en/development/api/dialog
|
||||||
constructor(dialogData = {}, options = {}) {
|
constructor(dialogData = {}, options = {}) {
|
||||||
@@ -1481,7 +1620,7 @@ class ActorCharacteristicDialog extends Dialog {
|
|||||||
content: htmlContent,
|
content: htmlContent,
|
||||||
buttons: {
|
buttons: {
|
||||||
submit: {
|
submit: {
|
||||||
label: "Save",
|
label: game.i18n.localize("MGT2.Save"),
|
||||||
icon: '<i class="fa-solid fa-floppy-disk"></i>',
|
icon: '<i class="fa-solid fa-floppy-disk"></i>',
|
||||||
callback: (html) => {
|
callback: (html) => {
|
||||||
const formData = new FormDataExtended(html[0].querySelector("form")).object;
|
const formData = new FormDataExtended(html[0].querySelector("form")).object;
|
||||||
@@ -1494,6 +1633,56 @@ class ActorCharacteristicDialog extends Dialog {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
class TraitEditDialog extends Dialog {
|
||||||
|
constructor(dialogData = {}, options = {}) {
|
||||||
|
super(dialogData, options);
|
||||||
|
this.options.classes = ["mgt2", game.settings.get("mgt2", "theme"), "sheet"];
|
||||||
|
}
|
||||||
|
static async create(data) {
|
||||||
|
const htmlContent = await renderTemplate("systems/mgt2/templates/actors/trait-sheet.html", {
|
||||||
|
config: CONFIG.MGT2,
|
||||||
|
data
|
||||||
|
});
|
||||||
|
const title = data.hasOwnProperty("name") && data.name !== void 0 ? data.name : game.i18n.localize("MGT2.Actor.EditTrait");
|
||||||
|
const results = new Promise((resolve) => {
|
||||||
|
new this({
|
||||||
|
title,
|
||||||
|
content: htmlContent,
|
||||||
|
buttons: {
|
||||||
|
submit: {
|
||||||
|
label: game.i18n.localize("MGT2.Save"),
|
||||||
|
icon: '<i class="fa-solid fa-floppy-disk"></i>',
|
||||||
|
callback: (html) => {
|
||||||
|
const formData = new FormDataExtended(html[0].querySelector("form")).object;
|
||||||
|
resolve(formData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//cancel: { label: "Cancel" }
|
||||||
|
}
|
||||||
|
// close: (html) => {
|
||||||
|
// console.log("This always is logged no matter which option is chosen");
|
||||||
|
// const formData = new FormDataExtended(html[0].querySelector('form')).object;
|
||||||
|
// resolve(formData);
|
||||||
|
// }
|
||||||
|
}).render(true);
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class CharacterPrompts {
|
||||||
|
static async openConfig(system) {
|
||||||
|
return await ActorConfigDialog.create(system);
|
||||||
|
}
|
||||||
|
static async openCharacteristic(name, hide, showMax, showAll = false) {
|
||||||
|
return await ActorCharacteristicDialog.create(name, hide, showMax, showAll);
|
||||||
|
}
|
||||||
|
static async openTraitEdit(data) {
|
||||||
|
return await TraitEditDialog.create(data);
|
||||||
|
}
|
||||||
|
static async openEditorFullView(title, html) {
|
||||||
|
return await EditorFullViewDialog.create(title, html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class TravellerActorSheet extends ActorSheet {
|
class TravellerActorSheet extends ActorSheet {
|
||||||
/** @inheritdoc */
|
/** @inheritdoc */
|
||||||
@@ -1538,7 +1727,8 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
const wounds = [];
|
const wounds = [];
|
||||||
const contacts = [];
|
const contacts = [];
|
||||||
const settings = {
|
const settings = {
|
||||||
weightUnit: game.settings.get("mgt2", "useWeightMetric") ? "kg" : "lb",
|
weightUnit: "kg",
|
||||||
|
//weightUnit: game.settings.get("mgt2", "useWeightMetric") ? "kg" : "lb",
|
||||||
usePronouns: game.settings.get("mgt2", "usePronouns"),
|
usePronouns: game.settings.get("mgt2", "usePronouns"),
|
||||||
useGender: game.settings.get("mgt2", "useGender"),
|
useGender: game.settings.get("mgt2", "useGender"),
|
||||||
showLife: game.settings.get("mgt2", "showLife")
|
showLife: game.settings.get("mgt2", "showLife")
|
||||||
@@ -1694,6 +1884,12 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
if (i.system.subType === "skill") {
|
if (i.system.subType === "skill") {
|
||||||
skills.push(i);
|
skills.push(i);
|
||||||
} else {
|
} else {
|
||||||
|
if (MGT2Helper.hasValue(i.system.psionic, "reach")) {
|
||||||
|
i.reach = game.i18n.localize(`MGT2.PsionicReach.${i.system.psionic.reach}`);
|
||||||
|
}
|
||||||
|
if (MGT2Helper.hasValue(i.system.roll, "difficulty")) {
|
||||||
|
i.difficulty = game.i18n.localize(`MGT2.Difficulty.${i.system.roll.difficulty}`);
|
||||||
|
}
|
||||||
psionics.push(i);
|
psionics.push(i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1810,6 +2006,55 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
html.find("a[data-roll]").click(this._onRoll.bind(this));
|
html.find("a[data-roll]").click(this._onRoll.bind(this));
|
||||||
html.find('a[name="config"]').click(this._onOpenConfig.bind(this));
|
html.find('a[name="config"]').click(this._onOpenConfig.bind(this));
|
||||||
html.find("a[data-cfg-characteristic]").click(this._onOpenCharacteristic.bind(this));
|
html.find("a[data-cfg-characteristic]").click(this._onOpenCharacteristic.bind(this));
|
||||||
|
html.find(".traits-create").click(this._onTraitCreate.bind(this));
|
||||||
|
html.find(".traits-edit").click(this._onTraitEdit.bind(this));
|
||||||
|
html.find(".traits-delete").click(this._onTraitDelete.bind(this));
|
||||||
|
html.find('a[data-editor="open"]').click(this._onOpenEditor.bind(this));
|
||||||
|
}
|
||||||
|
async _onOpenEditor(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
await CharacterPrompts.openEditorFullView(this.actor.system.personal.species, this.actor.system.personal.speciesText.descriptionLong);
|
||||||
|
}
|
||||||
|
async _onTraitCreate(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
await this._onSubmit(event);
|
||||||
|
let traits = this.actor.system.personal.traits;
|
||||||
|
let index;
|
||||||
|
if (traits.length === 0) {
|
||||||
|
traits = {};
|
||||||
|
traits["0"] = { name: "", description: "" };
|
||||||
|
} else {
|
||||||
|
index = Math.max(...Object.keys(traits));
|
||||||
|
index++;
|
||||||
|
traits[index] = { name: "", description: "" };
|
||||||
|
}
|
||||||
|
return this.actor.update({ system: { personal: { traits } } });
|
||||||
|
}
|
||||||
|
async _onTraitEdit(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
const index = $(event.currentTarget).parents("[data-traits-part]").data("traits-part");
|
||||||
|
const trait = this.actor.system.personal.traits[index];
|
||||||
|
let result = await CharacterPrompts.openTraitEdit(trait);
|
||||||
|
const traits = this.actor.system.personal.traits;
|
||||||
|
traits[index].name = result.name;
|
||||||
|
traits[index].description = result.description;
|
||||||
|
return this.actor.update({ system: { personal: { traits } } });
|
||||||
|
}
|
||||||
|
async _onTraitDelete(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
await this._onSubmit(event);
|
||||||
|
const element = event.currentTarget.closest(".traits-part");
|
||||||
|
const traits = foundry.utils.deepClone(this.actor.system.personal.traits);
|
||||||
|
let index = Number(element.dataset.traitsPart);
|
||||||
|
const newTraits = [];
|
||||||
|
let entries = Object.entries(traits);
|
||||||
|
if (entries.length > 1) {
|
||||||
|
for (const [key, value] of entries) {
|
||||||
|
if (key != index)
|
||||||
|
newTraits.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.actor.update({ system: { personal: { traits: newTraits } } });
|
||||||
}
|
}
|
||||||
async _onOpenConfig(ev) {
|
async _onOpenConfig(ev) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
@@ -1864,6 +2109,7 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
difficulty: null,
|
difficulty: null,
|
||||||
damageFormula: null
|
damageFormula: null
|
||||||
};
|
};
|
||||||
|
const cardButtons = [];
|
||||||
for (const [key, label] of Object.entries(MGT2.Characteristics)) {
|
for (const [key, label] of Object.entries(MGT2.Characteristics)) {
|
||||||
const c = this.actor.system.characteristics[key];
|
const c = this.actor.system.characteristics[key];
|
||||||
if (c.show) {
|
if (c.show) {
|
||||||
@@ -1912,25 +2158,35 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
if (button.dataset.roll === "psionic") {
|
if (button.dataset.roll === "psionic") {
|
||||||
rollOptions.rollObjectName = itemObj.name;
|
rollOptions.rollObjectName = itemObj.name;
|
||||||
|
if (MGT2Helper.hasValue(itemObj.system.psionic, "duration")) {
|
||||||
|
cardButtons.push({
|
||||||
|
label: game.i18n.localize("MGT2.Items.Duration"),
|
||||||
|
formula: itemObj.system.psionic.duration,
|
||||||
|
message: {
|
||||||
|
objectName: itemObj.name,
|
||||||
|
flavor: "{0} ".concat(game.i18n.localize(`MGT2.Durations.${itemObj.system.psionic.durationUnit}`))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (itemObj.system.hasOwnProperty("damage")) {
|
if (itemObj.system.hasOwnProperty("damage")) {
|
||||||
rollOptions.damageFormula = itemObj.system.damage;
|
rollOptions.damageFormula = itemObj.system.damage;
|
||||||
if (itemObj.type === "disease") {
|
if (itemObj.type === "disease") {
|
||||||
if (itemObj.system.subTypetype === "disease") {
|
if (itemObj.system.subTypetype === "disease") {
|
||||||
rollOptions.rollTypeName = game.i18n.localize("DiseaseSubType.disease");
|
rollOptions.rollTypeName = game.i18n.localize("MGT2.DiseaseSubType.disease");
|
||||||
} else if (itemObj.system.subTypetype === "poison") {
|
} else if (itemObj.system.subTypetype === "poison") {
|
||||||
rollOptions.rollTypeName = game.i18n.localize("DiseaseSubType.poison");
|
rollOptions.rollTypeName = game.i18n.localize("MGT2.DiseaseSubType.poison");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (itemObj.system.hasOwnProperty("roll")) {
|
if (itemObj.system.hasOwnProperty("roll")) {
|
||||||
if (itemObj.system.roll.hasOwnProperty("characteristic") && itemObj.system.roll.characteristic !== "" && itemObj.system.roll.characteristic !== void 0) {
|
if (MGT2Helper.hasValue(itemObj.system.roll, "characteristic")) {
|
||||||
rollOptions.characteristic = itemObj.system.roll.characteristic;
|
rollOptions.characteristic = itemObj.system.roll.characteristic;
|
||||||
}
|
}
|
||||||
if (itemObj.system.roll.hasOwnProperty("skill") && itemObj.system.roll.skill !== "" && itemObj.system.roll.skill !== void 0) {
|
if (MGT2Helper.hasValue(itemObj.system.roll, "skill")) {
|
||||||
rollOptions.skill = itemObj.system.roll.skill;
|
rollOptions.skill = itemObj.system.roll.skill;
|
||||||
}
|
}
|
||||||
if (rollOptions.difficulty === null && itemObj.system.roll.hasOwnProperty("difficulty") && itemObj.system.roll.difficulty !== "" && itemObj.system.roll.difficulty !== void 0) {
|
if (MGT2Helper.hasValue(itemObj.system.roll, "difficulty")) {
|
||||||
rollOptions.difficulty = itemObj.system.roll.difficulty;
|
rollOptions.difficulty = itemObj.system.roll.difficulty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1983,6 +2239,9 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
rollFormulaParts.push("+");
|
rollFormulaParts.push("+");
|
||||||
rollFormulaParts.push(s);
|
rollFormulaParts.push(s);
|
||||||
}
|
}
|
||||||
|
if (MGT2Helper.hasValue(userRollData, "difficulty")) {
|
||||||
|
rollOptions.difficulty = userRollData.difficulty;
|
||||||
|
}
|
||||||
const rollData = this.actor.getRollData();
|
const rollData = this.actor.getRollData();
|
||||||
const rollFormula = rollFormulaParts.join("");
|
const rollFormula = rollFormulaParts.join("");
|
||||||
if (!Roll.validate(rollFormula)) {
|
if (!Roll.validate(rollFormula)) {
|
||||||
@@ -2007,13 +2266,31 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
rollTypeName: rollOptions.rollTypeName,
|
rollTypeName: rollOptions.rollTypeName,
|
||||||
rollObjectName: rollOptions.rollObjectName,
|
rollObjectName: rollOptions.rollObjectName,
|
||||||
rollModifiers,
|
rollModifiers,
|
||||||
showRollDamage: rollOptions.damageFormula !== null && rollOptions.damageFormula !== ""
|
showRollDamage: rollOptions.damageFormula !== null && rollOptions.damageFormula !== "",
|
||||||
|
cardButtons
|
||||||
};
|
};
|
||||||
|
if (MGT2Helper.hasValue(rollOptions, "difficulty")) {
|
||||||
|
chatData.rollDifficulty = rollOptions.difficulty;
|
||||||
|
chatData.rollDifficultyLabel = MGT2Helper.getDifficultyDisplay(rollOptions.difficulty);
|
||||||
|
if (roll.total >= MGT2Helper.getDifficultyValue(rollOptions.difficulty)) {
|
||||||
|
chatData.rollSuccess = true;
|
||||||
|
} else {
|
||||||
|
chatData.rollFailure = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
const html = await renderTemplate("systems/mgt2/templates/chat/roll.html", chatData);
|
const html = await renderTemplate("systems/mgt2/templates/chat/roll.html", chatData);
|
||||||
chatData.content = html;
|
chatData.content = html;
|
||||||
|
let flags = null;
|
||||||
if (rollOptions.damageFormula !== null && rollOptions.damageFormula !== "") {
|
if (rollOptions.damageFormula !== null && rollOptions.damageFormula !== "") {
|
||||||
chatData.flags = { mgt2: { damage: { formula: rollOptions.damageFormula, rollObjectName: rollOptions.rollObjectName, rollTypeName: rollOptions.rollTypeName } } };
|
flags = { mgt2: { damage: { formula: rollOptions.damageFormula, rollObjectName: rollOptions.rollObjectName, rollTypeName: rollOptions.rollTypeName } } };
|
||||||
}
|
}
|
||||||
|
if (cardButtons.length > 0) {
|
||||||
|
if (flags === null)
|
||||||
|
flags = { mgt2: {} };
|
||||||
|
flags.mgt2.buttons = cardButtons;
|
||||||
|
}
|
||||||
|
if (flags !== null)
|
||||||
|
chatData.flags = flags;
|
||||||
return roll.toMessage(chatData);
|
return roll.toMessage(chatData);
|
||||||
}
|
}
|
||||||
_onItemCreate(ev) {
|
_onItemCreate(ev) {
|
||||||
@@ -2098,7 +2375,49 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
if (!dropData)
|
if (!dropData)
|
||||||
return false;
|
return false;
|
||||||
const sourceItemData = await MGT2Helper.getItemDataFromDropData(dropData);
|
const sourceItemData = await MGT2Helper.getItemDataFromDropData(dropData);
|
||||||
if (sourceItemData.type !== "contact" && sourceItemData.type !== "talent" && sourceItemData.type !== "armor" && sourceItemData.type !== "weapon" && sourceItemData.type !== "computer" && sourceItemData.type !== "container" && sourceItemData.type !== "species" && sourceItemData.type !== "item" && sourceItemData.type !== "equipment")
|
if (sourceItemData.type === "species") {
|
||||||
|
const update = {
|
||||||
|
system: {
|
||||||
|
personal: {
|
||||||
|
species: sourceItemData.name,
|
||||||
|
speciesText: {
|
||||||
|
description: sourceItemData.system.description,
|
||||||
|
descriptionLong: sourceItemData.system.descriptionLong
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
update.system.personal.traits = this.actor.system.personal.traits.concat(sourceItemData.system.traits);
|
||||||
|
if (sourceItemData.system.modifiers && sourceItemData.system.modifiers.length > 0) {
|
||||||
|
update.system.characteristics = {};
|
||||||
|
for (let modifier of sourceItemData.system.modifiers) {
|
||||||
|
if (MGT2Helper.hasValue(modifier, "characteristic") && MGT2Helper.hasValue(modifier, "value")) {
|
||||||
|
const c = this.actor.system.characteristics[modifier.characteristic];
|
||||||
|
const updateValue = { value: c.value };
|
||||||
|
updateValue.value += modifier.value;
|
||||||
|
if (c.showMax) {
|
||||||
|
updateValue.max = c.max + modifier.value;
|
||||||
|
}
|
||||||
|
update.system.characteristics[modifier.characteristic] = updateValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.actor.update(update);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (sourceItemData.type === "contact" || sourceItemData.type === "disease" || sourceItemData.type === "career" || sourceItemData.type === "talent") {
|
||||||
|
let transferData = {};
|
||||||
|
try {
|
||||||
|
transferData = sourceItemData.toJSON();
|
||||||
|
} catch (err) {
|
||||||
|
transferData = sourceItemData;
|
||||||
|
}
|
||||||
|
delete transferData._id;
|
||||||
|
delete transferData.id;
|
||||||
|
await this.actor.createEmbeddedDocuments("Item", [transferData]);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (sourceItemData.type !== "armor" && sourceItemData.type !== "weapon" && sourceItemData.type !== "computer" && sourceItemData.type !== "container" && sourceItemData.type !== "item" && sourceItemData.type !== "equipment")
|
||||||
return false;
|
return false;
|
||||||
const target = event.target.closest(".table-row");
|
const target = event.target.closest(".table-row");
|
||||||
let targetId = null;
|
let targetId = null;
|
||||||
@@ -2142,7 +2461,6 @@ class TravellerActorSheet extends ActorSheet {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
transferData = sourceItemData;
|
transferData = sourceItemData;
|
||||||
}
|
}
|
||||||
transferData._id;
|
|
||||||
delete transferData._id;
|
delete transferData._id;
|
||||||
delete transferData.id;
|
delete transferData.id;
|
||||||
const recalcWeight = transferData.system.hasOwnProperty("weight");
|
const recalcWeight = transferData.system.hasOwnProperty("weight");
|
||||||
@@ -2193,7 +2511,9 @@ const preloadHandlebarsTemplates = async function() {
|
|||||||
"systems/mgt2/templates/chat/roll.html",
|
"systems/mgt2/templates/chat/roll.html",
|
||||||
//"systems/mgt2/templates/chat/roll-characteristic.html",
|
//"systems/mgt2/templates/chat/roll-characteristic.html",
|
||||||
"systems/mgt2/templates/actors/actor-config-sheet.html",
|
"systems/mgt2/templates/actors/actor-config-sheet.html",
|
||||||
"systems/mgt2/templates/actors/actor-config-characteristic-sheet.html"
|
"systems/mgt2/templates/actors/actor-config-characteristic-sheet.html",
|
||||||
|
"systems/mgt2/templates/actors/trait-sheet.html",
|
||||||
|
"systems/mgt2/templates/editor-fullview.html"
|
||||||
//"systems/mgt2/templates/actors/parts/actor-characteristic.html"
|
//"systems/mgt2/templates/actors/parts/actor-characteristic.html"
|
||||||
];
|
];
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
@@ -2216,6 +2536,33 @@ class ChatHelper {
|
|||||||
html.find('button[data-action="healing"]').click(async (event) => {
|
html.find('button[data-action="healing"]').click(async (event) => {
|
||||||
ui.notifications.warn("healing");
|
ui.notifications.warn("healing");
|
||||||
});
|
});
|
||||||
|
html.find("button[data-index]").click(async (event) => {
|
||||||
|
await this._processRollButtonEvent(message, event);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static async _processRollButtonEvent(message, event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
let buttons = message.flags.mgt2.buttons;
|
||||||
|
const index = event.target.dataset.index;
|
||||||
|
const button = buttons[index];
|
||||||
|
let roll = await new Roll(button.formula, {}).roll({ async: true });
|
||||||
|
const chatData = {
|
||||||
|
user: game.user.id,
|
||||||
|
speaker: message.speaker,
|
||||||
|
formula: roll._formula,
|
||||||
|
tooltip: await roll.getTooltip(),
|
||||||
|
total: Math.round(roll.total * 100) / 100,
|
||||||
|
//formula: isPrivate ? "???" : roll._formula,
|
||||||
|
//tooltip: isPrivate ? "" : await roll.getTooltip(),
|
||||||
|
//total: isPrivate ? "?" : Math.round(roll.total * 100) / 100,
|
||||||
|
type: CONST.CHAT_MESSAGE_TYPES.ROLL,
|
||||||
|
rollObjectName: button.message.objectName,
|
||||||
|
rollMessage: MGT2Helper.format(button.message.flavor, Math.round(roll.total * 100) / 100)
|
||||||
|
};
|
||||||
|
const html = await renderTemplate("systems/mgt2/templates/chat/roll.html", chatData);
|
||||||
|
chatData.content = html;
|
||||||
|
return roll.toMessage(chatData);
|
||||||
}
|
}
|
||||||
static async _processRollDamageButtonEvent(message, event) {
|
static async _processRollDamageButtonEvent(message, event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -2270,7 +2617,8 @@ const registerSettings = function() {
|
|||||||
type: String,
|
type: String,
|
||||||
choices: {
|
choices: {
|
||||||
"black-and-red": "MGT2.Themes.BlackAndRed",
|
"black-and-red": "MGT2.Themes.BlackAndRed",
|
||||||
"mwamba": "MGT2.Themes.Mwamba"
|
"mwamba": "MGT2.Themes.Mwamba",
|
||||||
|
"blue": "MGT2.Themes.Blue"
|
||||||
},
|
},
|
||||||
requiresReload: true
|
requiresReload: true
|
||||||
});
|
});
|
||||||
@@ -2295,30 +2643,12 @@ const registerSettings = function() {
|
|||||||
game.settings.register("mgt2", "showLife", {
|
game.settings.register("mgt2", "showLife", {
|
||||||
name: "MGT2.Settings.showLife.name",
|
name: "MGT2.Settings.showLife.name",
|
||||||
hint: "MGT2.Settings.showLife.hint",
|
hint: "MGT2.Settings.showLife.hint",
|
||||||
default: true,
|
default: false,
|
||||||
scope: "world",
|
scope: "world",
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
config: true,
|
config: true,
|
||||||
requiresReload: false
|
requiresReload: false
|
||||||
});
|
});
|
||||||
game.settings.register("mgt2", "useWeightMetric", {
|
|
||||||
name: "MGT2.Settings.useWeightMetric.name",
|
|
||||||
hint: "MGT2.Settings.useWeightMetric.hint",
|
|
||||||
default: true,
|
|
||||||
scope: "world",
|
|
||||||
type: Boolean,
|
|
||||||
config: true,
|
|
||||||
requiresReload: true
|
|
||||||
});
|
|
||||||
game.settings.register("mgt2", "useDistanceMetric", {
|
|
||||||
name: "MGT2.Settings.useDistanceMetric.name",
|
|
||||||
hint: "MGT2.Settings.useDistanceMetric.hint",
|
|
||||||
default: true,
|
|
||||||
scope: "world",
|
|
||||||
type: Boolean,
|
|
||||||
config: true,
|
|
||||||
requiresReload: true
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function registerHandlebarsHelpers() {
|
function registerHandlebarsHelpers() {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
99
styles/mgt2.min.css
vendored
99
styles/mgt2.min.css
vendored
@@ -43,6 +43,26 @@
|
|||||||
--mgt2-row-inactive-icon: #b5b3a4;
|
--mgt2-row-inactive-icon: #b5b3a4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.blue {
|
||||||
|
--mgt2-color-form: #0A0405;
|
||||||
|
--mgt2-bgcolor-form: #fff;
|
||||||
|
--mgt2-color-primary: #91AAC8;
|
||||||
|
--mgt2-color-primary-active: #BCDCFF;
|
||||||
|
--mgt2-bgcolor-primary: #0A0405;
|
||||||
|
--mgt2-color-primary-light: #4b4a44;
|
||||||
|
--mgt2-color-warning: #EE4050;
|
||||||
|
--mgt2-color-dm: #fff;
|
||||||
|
--mgt2-bgcolor-dm: #0A0405;
|
||||||
|
--mgt2-color-software: #fff;
|
||||||
|
--mgt2-bgcolor-software: #0A0405;
|
||||||
|
--mgt2-input-color: #0A0405;
|
||||||
|
--mgt2-input-bgcolor: #fff;
|
||||||
|
--mgt2-editor-border: #C6C6C6;
|
||||||
|
--mgt2-row-hover: #F2F2F2;
|
||||||
|
--mgt2-subrow-color: #727272;
|
||||||
|
--mgt2-row-inactive-icon: #b5b3a4;
|
||||||
|
}
|
||||||
|
|
||||||
.upcase {
|
.upcase {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
@@ -90,10 +110,6 @@
|
|||||||
.mgt2 .mt-2 {
|
.mgt2 .mt-2 {
|
||||||
margin-top: 14px;
|
margin-top: 14px;
|
||||||
}
|
}
|
||||||
.mgt2 .flex-fix {
|
|
||||||
flex-grow: 0 !important;
|
|
||||||
flex-shrink: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mgt2.sheet header.window-header {
|
.mgt2.sheet header.window-header {
|
||||||
color: var(--mgt2-color-primary);
|
color: var(--mgt2-color-primary);
|
||||||
@@ -112,6 +128,32 @@
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mgt2 .flex-fix {
|
||||||
|
flex-grow: 0 !important;
|
||||||
|
flex-shrink: 0 !important;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-10 {
|
||||||
|
flex-basis: 10%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-20 {
|
||||||
|
flex-basis: 20%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-30 {
|
||||||
|
flex-basis: 30%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-40 {
|
||||||
|
flex-basis: 40%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-50 {
|
||||||
|
flex-basis: 50%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-60 {
|
||||||
|
flex-basis: 60%;
|
||||||
|
}
|
||||||
|
.mgt2 .flex-basis-70 {
|
||||||
|
flex-basis: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
.mgt2.sheet textarea {
|
.mgt2.sheet textarea {
|
||||||
color: var(--mgt2-input-color);
|
color: var(--mgt2-input-color);
|
||||||
background-color: var(--mgt2-input-bgcolor);
|
background-color: var(--mgt2-input-bgcolor);
|
||||||
@@ -207,6 +249,15 @@
|
|||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.species {
|
||||||
|
font-size: 13px;
|
||||||
|
margin: 4px 1rem 0 1rem;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
.species a {
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
.mgt2 .characteristics {
|
.mgt2 .characteristics {
|
||||||
flex-basis: 138px;
|
flex-basis: 138px;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@@ -482,6 +533,17 @@ ul.softwares li:hover a {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.character-body {
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
border-top: 3px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
.actor-footer {
|
.actor-footer {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
color: var(--mgt2-color-primary);
|
color: var(--mgt2-color-primary);
|
||||||
@@ -560,12 +622,6 @@ ul.softwares li:hover a {
|
|||||||
box-shadow: 0 0 2px #FFF inset;
|
box-shadow: 0 0 2px #FFF inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message.message {
|
|
||||||
color: #0A0405;
|
|
||||||
background-color: #fff;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dice-formula,
|
.dice-formula,
|
||||||
.dice-total {
|
.dice-total {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@@ -590,6 +646,13 @@ ul.softwares li:hover a {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.roll-type-group {
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
.roll-type-name {
|
.roll-type-name {
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -601,6 +664,14 @@ ul.softwares li:hover a {
|
|||||||
font-size: 1.4rem;
|
font-size: 1.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.roll-success {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-top: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.mgt2 nav.horizontal-tabs {
|
.mgt2 nav.horizontal-tabs {
|
||||||
color: var(--mgt2-color-primary);
|
color: var(--mgt2-color-primary);
|
||||||
background: var(--mgt2-bgcolor-primary);
|
background: var(--mgt2-bgcolor-primary);
|
||||||
@@ -932,6 +1003,14 @@ ul.softwares li:hover a {
|
|||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table-container.editable .table-row {
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container.editable .table-row:last-child {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.item-options {
|
.item-options {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0.7rem;
|
top: 0.7rem;
|
||||||
|
|||||||
23
system.json
23
system.json
@@ -1,13 +1,14 @@
|
|||||||
{
|
{
|
||||||
"id": "mgt2",
|
"id": "mgt2",
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"title": "MGT2 - Mongoose Traveller (Unofficial)",
|
"title": "MGT2 - Mongoose Traveller (Unofficial)",
|
||||||
"description": "An unofficial implementation of Mongoose Publishing Traveller. Traveller is the property of Mongoose Publishing, and can be purchased at https://www.mongoosepublishing.com",
|
"description": "An unofficial implementation of Mongoose Publishing Traveller (VO/VF). Traveller is the property of Mongoose Publishing, and can be purchased at https://www.mongoosepublishing.com",
|
||||||
"background": "systems/mgt2/assets/screens/rosette-nebula-ngc2239-hoo.webp",
|
"background": "systems/mgt2/assets/screens/rosette-nebula-ngc2239-hoo.webp",
|
||||||
"url": "https://github.com/JDR-Ninja/foundryvtt-mgt2",
|
"url": "https://github.com/JDR-Ninja/foundryvtt-mgt2",
|
||||||
"manifest": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/latest/download/system.json",
|
"manifest": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/latest/download/system.json",
|
||||||
"readme": "https://raw.githubusercontent.com/JDR-Ninja/foundryvtt-mgt2/main/README.md",
|
"readme": "https://raw.githubusercontent.com/JDR-Ninja/foundryvtt-mgt2/main/README.md",
|
||||||
"download": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/download/v0.1.1/mgt2.zip",
|
"download": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/download/v0.1.2/mgt2.zip",
|
||||||
|
"changelog": "https://raw.githubusercontent.com/JDR-Ninja/foundryvtt-mgt2/main/CHANGELOG.md",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "JdR Ninja",
|
"name": "JdR Ninja",
|
||||||
@@ -15,8 +16,12 @@
|
|||||||
"discord": "jdr.ninja"
|
"discord": "jdr.ninja"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"esmodules": ["mgt2.bundle.js"],
|
"esmodules": [
|
||||||
"styles": ["styles/mgt2.min.css"],
|
"mgt2.bundle.js"
|
||||||
|
],
|
||||||
|
"styles": [
|
||||||
|
"styles/mgt2.min.css"
|
||||||
|
],
|
||||||
"packs": [],
|
"packs": [],
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
@@ -36,5 +41,5 @@
|
|||||||
},
|
},
|
||||||
"gridDistance": 1.5,
|
"gridDistance": 1.5,
|
||||||
"gridUnits": "m",
|
"gridUnits": "m",
|
||||||
"primaryTokenAttribute": "life"
|
"primaryTokenAttribute": "life"
|
||||||
}
|
}
|
||||||
749
templates/actors/actor-sheet - Copy.html
Normal file
749
templates/actors/actor-sheet - Copy.html
Normal file
@@ -0,0 +1,749 @@
|
|||||||
|
<form class="{{cssClass}} flexcol" autocomplete="off" style="align-content: flex-start;align-items: baseline;overflow: hidden;height: 100%;">
|
||||||
|
<nav class="sheet-sidebar tabs" data-group="sidebar">
|
||||||
|
<!-- <a class="item tab-select" data-tab="personal" title="Personal"><i class="fa-solid fa-id-card"></i></a> -->
|
||||||
|
<a class="item tab-select" data-tab="health" title="{{ localize 'MGT2.Actor.Health' }}"><i class="fa-solid fa-heart-pulse"></i></a>
|
||||||
|
<a class="item tab-select" data-tab="skills" title="{{ localize 'MGT2.Actor.TabSkills' }}"><i class="fa-solid fa-head-side"></i></a>
|
||||||
|
<a class="item tab-select" data-tab="inventory" title="{{ localize 'MGT2.Actor.Inventory' }}"><i class="fa-solid fa-briefcase-blank"></i></a>
|
||||||
|
<a class="item tab-select" data-tab="relations" title="{{ localize 'MGT2.Actor.Contacts' }}"><i class="fa-solid fa-users"></i></a>
|
||||||
|
<a class="item tab-select" data-tab="notes" title="{{ localize 'MGT2.Actor.Notes' }}"><i class="fa-solid fa-books"></i></a>
|
||||||
|
<a class="item tab-select" data-tab="biography" title="{{ localize 'MGT2.Actor.Biography' }}"><i class="fa-solid fa-book-user"></i></a>
|
||||||
|
</nav>
|
||||||
|
<section class="character-header">
|
||||||
|
<div class="character-header-img">
|
||||||
|
<img class="profile" src="{{img}}" data-edit="img" title="{{name}}" height="130" width="100" />
|
||||||
|
</div>
|
||||||
|
<div class="character-header-body">
|
||||||
|
<input class="field-name" name="name" type="text" value="{{name}}" />
|
||||||
|
<ul class="character-summary">
|
||||||
|
{{#if (and settings.usePronouns settings.useGender)}}
|
||||||
|
<li class="w1-10"><input name="system.personal.pronouns" type="text" value="{{system.personal.pronouns}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderPRONOUNS' }}" /></li>
|
||||||
|
<li class="w1-10"><input name="system.personal.gender" type="text" value="{{system.personal.gender}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderGENDER' }}" /></li>
|
||||||
|
<li class="w4-10"><input name="system.personal.title" type="text" value="{{system.personal.title}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderTITLE' }}" /></li>
|
||||||
|
{{else if settings.usePronouns}}
|
||||||
|
<li class="w5-10"><input name="system.personal.pronouns" type="text" value="{{system.personal.pronouns}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderPRONOUNS' }}" /></li>
|
||||||
|
<li class="w4-10"><input name="system.personal.title" type="text" value="{{system.personal.title}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderTITLE' }}" /></li>
|
||||||
|
{{else if settings.useGender}}
|
||||||
|
<li class="w1-10"><input name="system.personal.gender" type="text" value="{{system.personal.gender}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderGENDER' }}" /></li>
|
||||||
|
<li class="w4-10"><input name="system.personal.title" type="text" value="{{system.personal.title}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderTITLE' }}" /></li>
|
||||||
|
{{else}}
|
||||||
|
<li class="w5-10"><input name="system.personal.title" type="text" value="{{system.personal.title}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderTITLE' }}" /></li>
|
||||||
|
{{/if}}
|
||||||
|
<li class="w2-10"><input name="system.personal.species" type="text" value="{{system.personal.species}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderSPECIES' }}" /></li>
|
||||||
|
<li class="w1-10"><input name="system.personal.age" type="text" value="{{system.personal.age}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderAGE' }}" /></li>
|
||||||
|
<li class="w2-10"><input name="system.personal.wup" type="text" value="{{system.personal.wup}}" placeholder="{{ localize 'MGT2.Actor.PlaceholderUCP' }}" /></li>
|
||||||
|
</ul>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="w4-10">
|
||||||
|
<!-- FULL REST ICON -->
|
||||||
|
</div>
|
||||||
|
<div class="flex-fix">
|
||||||
|
<fieldset class="lifes">
|
||||||
|
<legend><a class="roll upcase" data-roll="initiative" tabindex='-1' style="display: inline-flex;"><i class="fa-solid fa-dice"></i>{{ localize 'MGT2.Actor.Initiative' }}</a></legend>
|
||||||
|
<div>{{showDM initiative}}</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div class="flex-fix">
|
||||||
|
{{#if settings.showLife}}
|
||||||
|
<fieldset class="lifes">
|
||||||
|
<legend class="upcase">{{ localize 'MGT2.Actor.Life' }}</legend>
|
||||||
|
<div>{{system.life.value}}{{#if (gt system.life.max 0) }}/{{system.life.max}}{{/if}}</div>
|
||||||
|
</fieldset>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="flex-fix">
|
||||||
|
<fieldset class="lifes">
|
||||||
|
<legend class="upcase">{{ localize 'MGT2.Actor.Armor' }}</legend>
|
||||||
|
<div>{{system.inventory.armor}}</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div class="w4-10">
|
||||||
|
<fieldset style="margin:0;padding: 0 1rem;">
|
||||||
|
<legend class="upcase">{{ localize 'MGT2.Actor.States' }}</legend>
|
||||||
|
<ul class="character-states">
|
||||||
|
<li><label title="{{ localize 'MGT2.Actor.EncumbranceHint' }}">{{ localize 'MGT2.Actor.Encumbrance' }}</label><input type="checkbox" class="checkbox-small" {{checked system.states.encumbrance}} readonly disabled /></label></li>
|
||||||
|
<li><label title="{{ localize 'MGT2.Actor.FatigueHint' }}">{{ localize 'MGT2.Actor.Fatigue' }}</label><input type="checkbox" class="checkbox-small" name="system.states.fatigue" data-dtype="Boolean" {{checked system.states.fatigue}} /></label></li>
|
||||||
|
<li><label title="{{ localize 'MGT2.Actor.SurgeryRequiredHint' }}">{{ localize 'MGT2.Actor.SurgeryRequired' }}</label><input type="checkbox" class="checkbox-small" name="system.states.surgeryRequired" data-dtype="Boolean" {{checked system.states.surgeryRequired}} /></li>
|
||||||
|
<!-- <li><label>Unconscious</label><input type="checkbox" class="checkbox-small" name="system.states.unconscious" data-dtype="Boolean" {{checked system.states.unconscious}} /></li> -->
|
||||||
|
</ul>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div style="height: 100%;overflow: hidden;display: flex;flex-direction: row;width: 100%;justify-content: flex-start;align-items: flex-start;">
|
||||||
|
<div class="characteristics">
|
||||||
|
<nav class="horizontal-tabs tabs" data-group="characteristics" style="border-right: 7px double #fff;">
|
||||||
|
<a class="item tab-select" data-tab="core">{{ localize 'MGT2.Actor.TabCore' }}</a>
|
||||||
|
<a class="item tab-select" data-tab="other">{{ localize 'MGT2.Actor.TabOthers' }}</a>
|
||||||
|
</nav>
|
||||||
|
<section class="characteristics-panel">
|
||||||
|
<div class="tab" data-group="characteristics" data-tab="core">
|
||||||
|
{{#if system.characteristics.strength.show}}
|
||||||
|
<div class="characteristic-label"><a class="roll" data-roll="characteristic" data-roll-characteristic="strength" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.strength.name' }}<a class="cfg-characteristic" data-cfg-characteristic="strength" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.strength.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.strength.value" value="{{system.characteristics.strength.value}}" data-dtype="Number" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.strength.max" value="{{system.characteristics.strength.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.strength.dm 0)}}+{{/if}}{{system.characteristics.strength.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.strength.value" value="{{system.characteristics.strength.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.strength.dm 0)}}+{{/if}}{{system.characteristics.strength.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.dexterity.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="dexterity" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.dexterity.name' }}<a class="cfg-characteristic" data-cfg-characteristic="dexterity" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.dexterity.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.dexterity.value" value="{{system.characteristics.dexterity.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.dexterity.max" value="{{system.characteristics.dexterity.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.dexterity.dm 0)}}+{{/if}}{{system.characteristics.dexterity.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.dexterity.value" value="{{system.characteristics.dexterity.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.dexterity.dm 0)}}+{{/if}}{{system.characteristics.dexterity.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.endurance.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="endurance" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.endurance.name' }}<a class="cfg-characteristic" data-cfg-characteristic="endurance" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.endurance.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.endurance.value" value="{{system.characteristics.endurance.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.endurance.max" value="{{system.characteristics.endurance.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.endurance.dm 0)}}+{{/if}}{{system.characteristics.endurance.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.endurance.value" value="{{system.characteristics.endurance.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.endurance.dm 0)}}+{{/if}}{{system.characteristics.endurance.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.intellect.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="intellect" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.intellect.name' }}<a class="cfg-characteristic" data-cfg-characteristic="intellect" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.intellect.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.intellect.value" value="{{system.characteristics.intellect.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.intellect.max" value="{{system.characteristics.intellect.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.intellect.dm 0)}}+{{/if}}{{system.characteristics.intellect.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.intellect.value" value="{{system.characteristics.intellect.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.intellect.dm 0)}}+{{/if}}{{system.characteristics.intellect.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.education.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="education" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.education.name' }}<a class="cfg-characteristic" data-cfg-characteristic="education" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.education.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.education.value" value="{{system.characteristics.education.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.education.max" value="{{system.characteristics.education.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.education.dm 0)}}+{{/if}}{{system.characteristics.education.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.education.value" value="{{system.characteristics.education.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.education.dm 0)}}+{{/if}}{{system.characteristics.education.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.social.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="social" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.social.name' }}<a class="cfg-characteristic" data-cfg-characteristic="social" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.social.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.social.value" value="{{system.characteristics.social.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.social.max" value="{{system.characteristics.social.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.social.dm 0)}}+{{/if}}{{system.characteristics.social.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.social.value" value="{{system.characteristics.social.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.social.dm 0)}}+{{/if}}{{system.characteristics.social.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="tab" data-group="characteristics" data-tab="other">
|
||||||
|
{{#if system.characteristics.morale.show}}
|
||||||
|
<div class="characteristic-label"><a class="roll" data-roll="characteristic" data-roll-characteristic="morale" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.morale.name' }}<a class="cfg-characteristic" data-cfg-characteristic="morale" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.morale.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.morale.value" value="{{system.characteristics.morale.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.morale.max" value="{{system.characteristics.morale.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.morale.dm 0)}}+{{/if}}{{system.characteristics.morale.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.morale.value" value="{{system.characteristics.morale.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.morale.dm 0)}}+{{/if}}{{system.characteristics.morale.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.luck.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="luck" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.luck.name' }}<a class="cfg-characteristic" data-cfg-characteristic="luck" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.luck.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.luck.value" value="{{system.characteristics.luck.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.luck.max" value="{{system.characteristics.luck.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.luck.dm 0)}}+{{/if}}{{system.characteristics.luck.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.luck.value" value="{{system.characteristics.luck.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.luck.dm 0)}}+{{/if}}{{system.characteristics.luck.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.sanity.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="sanity" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.sanity.name' }}<a class="cfg-characteristic" data-cfg-characteristic="sanity" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.sanity.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.sanity.value" value="{{system.characteristics.sanity.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.sanity.max" value="{{system.characteristics.sanity.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.sanity.dm 0)}}+{{/if}}{{system.characteristics.sanity.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.sanity.value" value="{{system.characteristics.sanity.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.sanity.dm 0)}}+{{/if}}{{system.characteristics.sanity.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.charm.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="charm" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.charm.name' }}<a class="cfg-characteristic" data-cfg-characteristic="charm" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.charm.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.charm.value" value="{{system.characteristics.charm.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.charm.max" value="{{system.characteristics.charm.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.charm.dm 0)}}+{{/if}}{{system.characteristics.charm.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.charm.value" value="{{system.characteristics.charm.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.charm.dm 0)}}+{{/if}}{{system.characteristics.charm.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.psionic.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="psionic" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.psionic.name' }}<a class="cfg-characteristic" data-cfg-characteristic="psionic" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.psionic.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.psionic.value" value="{{system.characteristics.psionic.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.psionic.max" value="{{system.characteristics.psionic.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.psionic.dm 0)}}+{{/if}}{{system.characteristics.psionic.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.psionic.value" value="{{system.characteristics.psionic.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.psionic.dm 0)}}+{{/if}}{{system.characteristics.psionic.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if system.characteristics.other.show}}
|
||||||
|
<div class="characteristic-label mt-1"><a class="roll" data-roll="characteristic" data-roll-characteristic="other" tabindex='-1'><i class="fa-solid fa-dice"></i></a>{{ localize 'MGT2.Characteristics.other.name' }}<a class="cfg-characteristic" data-cfg-characteristic="other" title="Configure"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
{{#if system.characteristics.other.showMax}}
|
||||||
|
<div class="characteristic-minmax">
|
||||||
|
<div class="minmaxwrapper">
|
||||||
|
<input type="text" maxlength="2" name="system.characteristics.other.value" value="{{system.characteristics.other.value}}" /><span>|</span><input type="text" maxlength="2" name="system.characteristics.other.max" value="{{system.characteristics.other.max}}" />
|
||||||
|
</div>
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.other.dm 0)}}+{{/if}}{{system.characteristics.other.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="characteristic-row">
|
||||||
|
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.other.value" value="{{system.characteristics.other.value}}" />
|
||||||
|
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.other.dm 0)}}+{{/if}}{{system.characteristics.other.dm}}" readonly tabindex='-1' />
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="tab w100" data-group="sidebar" data-tab="health">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.Health' }}</div>
|
||||||
|
<div class="field-group mb-1">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.Rads' }}</label>
|
||||||
|
<input class="field" name="system.health.radiations" type="text" value="{{system.health.radiations}}" />
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Actor.Wounds' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Difficulty' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Damage' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Interval' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="disease" data-subtype="wound" data-create-name="{{ localize 'MGT2.Actor.NewWound' }}" title="{{ localize 'MGT2.Actor.AddWound' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each wounds as |wound id|}}
|
||||||
|
<div class="table-row item" data-item-id="{{wound._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left">{{wound.name}}</div>
|
||||||
|
<div class="row-item row-item-center">{{wound.system.difficulty}}</div>
|
||||||
|
<div class="row-item row-item-center">{{wound.system.damage}}</div>
|
||||||
|
<div class="row-item row-item-center">{{wound.system.interval}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditWound' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteWound' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Items.Diseases' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Difficulty' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Damage' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Interval' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="disease" data-subtype="disease" data-create-name="{{ localize 'MGT2.Actor.NewDisease' }}" title="{{ localize 'MGT2.Actor.AddDisease' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each diseases as |disease id|}}
|
||||||
|
<div class="table-row item" data-item-id="{{disease._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left"><a data-roll="disease" data-item-id="{{disease._id}}"><i class="fa-solid fa-dice"></i></a>{{disease.name}}</div>
|
||||||
|
<div class="row-item row-item-center">{{disease.system.difficulty}}</div>
|
||||||
|
<div class="row-item row-item-center">{{disease.system.damage}}</div>
|
||||||
|
<div class="row-item row-item-center">{{disease.system.interval}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditDisease' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteDisease' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 tab-scroll" data-group="sidebar" data-tab="skills">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.TabSkills' }}</div>
|
||||||
|
<div class="species"><a title="Description longue"><i class="fa-solid fa-book"></i></a>{{system.personal.speciesText.description}}</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-15 row-item-left upcase">{{ localize 'MGT2.Items.Trait' }}</div>
|
||||||
|
<div class="row-item row-item-left">{{ localize 'MGT2.Items.Description' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="traits-create"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each system.personal.traits as |trait i| }}
|
||||||
|
<div class="table-row traits-part" data-traits-part="{{i}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-15 row-item-left">{{trait.name}}</div>
|
||||||
|
<div class="row-item row-item-left">{{trait.description}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control traits-edit" title="{{ localize 'MGT2.Actor.EditTrait' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control traits-delete" title="Delete Trait"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.StudyPeriod' }}</div>
|
||||||
|
<div class="fields mb-1">
|
||||||
|
<div class="field-group" style="flex: 2 1 auto;">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.TrainingInSkill' }}</label>
|
||||||
|
<input class="field" name="system.study.skill" type="text" value="{{system.study.skill}}" />
|
||||||
|
</div>
|
||||||
|
<div class="field-group" style="flex: 1 1 0%;">
|
||||||
|
<label>{{ localize 'MGT2.Actor.Completed' }}</label>
|
||||||
|
<input class="field" name="system.study.completed" type="number" value="{{system.study.completed}}" />
|
||||||
|
</div>
|
||||||
|
<div class="field-group" style="flex: 1 1 0%;">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.Weeks' }}</label>
|
||||||
|
<input class="field" name="system.study.total" type="number" value="{{system.study.total}}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left">{{ localize 'MGT2.Items.Careers' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Terms' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Rank' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="career" data-create-name="{{ localize 'MGT2.Actor.NewCareer' }}" title="{{ localize 'MGT2.Actor.AddCareer' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each careers as |career id|}}
|
||||||
|
<div class="table-row item" data-item-id="{{career._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left">{{career.name}}</div>
|
||||||
|
<div class="row-item row-item-center">{{career.system.terms}}</div>
|
||||||
|
<div class="row-item row-item-center">{{career.system.rank}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditCareer' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteCareer' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left flex-fix">{{ localize 'MGT2.Actor.Skills' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Level' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="talent" data-subtype="skill" data-create-name="{{ localize 'MGT2.Actor.NewSkill' }}" title="{{ localize 'MGT2.Actor.AddSkill' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each skills as |skill id|}}
|
||||||
|
<div class="table-row" data-item-id="{{skill._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left flex-fix">
|
||||||
|
<a data-roll="skill" data-roll-skill="{{skill._id}}"><i class="fa-solid fa-dice"></i></a>{{skill.name}}{{#if skill.system.skill.speciality}} ({{skill.system.skill.speciality}}){{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-center">{{skill.system.level}}</div>
|
||||||
|
<div class="row-item item-controls">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditSkill' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteSkill' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{#if system.config.psionic}}
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Actor.PsionicTalents' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Level' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Cost' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Reach' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Difficulty' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="talent" data-subtype="psionic" data-create-name="{{ localize 'MGT2.Actor.NewPsionicTalent' }}" title="{{ localize 'MGT2.Actor.AddPsionicTalent' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each psionics as |psionic id|}}
|
||||||
|
<div class="table-row" data-item-id="{{psionic._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left">
|
||||||
|
<a data-roll="psionic" data-item-id="{{psionic._id}}"><i class="fa-solid fa-dice"></i></a>{{psionic.name}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.level}}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.cost}}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.reach}}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.difficulty}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Items.EditPsionic' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Items.DeletePsionic' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 subTabs" data-group="sidebar" data-tab="inventory">
|
||||||
|
<nav class="horizontal-tabs tabs" data-group="inventory">
|
||||||
|
<a class="item tab-select" data-tab="onhand"><i class="fa-solid fa-person-walking-luggage"></i>{{ localize 'MGT2.Items.OnHand' }}</a>
|
||||||
|
<a class="item tab-select" data-tab="storage"><i class="fa-solid fa-treasure-chest"></i>{{ localize 'MGT2.Items.Storage' }}</a>
|
||||||
|
<a class="item tab-select" data-tab="finance"><i class="fa-solid fa-credit-card"></i>{{ localize 'MGT2.Actor.Finance' }}</a>
|
||||||
|
{{#if showTrash}}
|
||||||
|
<!-- <a class="item tab-select" data-tab="trash" style="flex-basis: 3rem;flex-grow: 0;" title="Trash"><i class="fa-solid fa-trash" style="margin: 0;"></i></a> -->
|
||||||
|
{{/if}}
|
||||||
|
</nav>
|
||||||
|
<div class="tab w100 tab-scroll" data-group="inventory" data-tab="onhand">
|
||||||
|
<div class="table-container mt-1">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase"><i class="fa-solid fa-gun"></i>{{ localize 'MGT2.Items.Weapons' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{ localize 'MGT2.Items.Range' }}</div>
|
||||||
|
<div class="row-item row-item-20 row-item-center">{{ localize 'MGT2.Items.Damage' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="weapon" data-create-name="{{ localize 'MGT2.Actor.NewWeapon' }}" title="{{ localize 'MGT2.Actor.AddWeapon' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each weapons as |weapon id|}}
|
||||||
|
<div class="table-row{{#if weapon.subInfo}} table-row-mb-4{{/if}} drag-item-list" data-item-id="{{weapon._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left flex-3 row-large">
|
||||||
|
<a data-roll="item" data-item-id="{{weapon._id}}"><i class="fa-solid fa-dice"></i></a>{{weapon.name}}{{#if weapon.subInfo}}<div class="item-options">{{weapon.subInfo}}</div>{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{weapon.range}}</div>
|
||||||
|
<div class="row-item row-item-20 row-item-center">{{weapon.system.damage}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{weapon.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-equip {{weapon.toggleClass}}" title="Equip"><i class="fa-solid fa-shield-halved"></i></a>
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditWeapon' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteWeapon' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-40 row-item-left upcase"><i class="fa-solid fa-shield"></i>{{ localize 'MGT2.Items.Armors' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center">{{ localize 'MGT2.Items.Rads' }}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center">{{ localize 'MGT2.Items.Protection' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="armor" data-create-name="{{ localize 'MGT2.Actor.NewArmor' }}" title="{{ localize 'MGT2.Actor.AddArmor' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each armors as |armor id|}}
|
||||||
|
<div class="table-row{{#if armor.subInfo}} table-row-mb-4{{/if}} drag-item-list" data-item-id="{{armor._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-40 row-item-left">
|
||||||
|
<a data-roll="item" data-item-id="{{armor._id}}"><i class="fa-solid fa-dice"></i></a>{{armor.name}}{{#if armor.subInfo}}<div class="item-options">{{armor.subInfo}}</div>{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center">{{armor.system.radiations}}</div>
|
||||||
|
<div class="row-item row-item-10 row-item-center">{{armor.system.protection}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{armor.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-equip {{armor.toggleClass}}" title="Equip"><i class="fa-solid fa-shield-halved"></i></a>
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditArmor' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteArmor' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase"><i class="fa-solid fa-brain-circuit"></i>{{ localize 'MGT2.Actor.Augments' }}</div>
|
||||||
|
<div class="row-item row-item-40 row-item-left">{{ localize 'MGT2.Items.Improvement' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="equipment" data-subtype="augment" data-create-name="{{ localize 'MGT2.Actor.NewAugment' }}" title="{{ localize 'MGT2.Actor.AddAugment' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each augments as |augment id|}}
|
||||||
|
<div class="table-row drag-item-list" data-item-id="{{augment._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left">{{augment.name}}</div>
|
||||||
|
<div class="row-item row-item-40 row-item-left">{{augment.system.improvement}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-equip {{augment.toggleClass}}" title="Equip"><i class="fa-solid fa-shield-halved"></i></a>
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditAugment' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteAugment' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-50 row-item-left upcase"><i class="fa-solid fa-tablet-screen"></i>{{ localize 'MGT2.Items.Computers' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center"><i class="fa-solid fa-bolt-lightning"></i></div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="computer" data-create-name="{{ localize 'MGT2.Actor.NewComputer' }}" title="{{ localize 'MGT2.Actor.AddComputer' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each computers as |computer id|}}
|
||||||
|
<div class="table-row drop-item-list" data-item-id="{{computer._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-50 row-item-left">
|
||||||
|
<a data-roll="item" data-item-id="{{computer._id}}"><i class="fa-solid fa-dice"></i></a>{{computer.name}}{{#if computer.subInfo}}<div class="item-options">{{computer.subInfo}}</div>{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center {{overloadClass}}">{{computer.system.processingUsed}}/{{computer.system.processing}}
|
||||||
|
{{#if computer.system.overload}}<a title="Overload"><i class="fa-solid fa-triangle-exclamation"></i></a>{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{computer.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-equip {{computer.toggleClass}}" title="Equip"><i class="fa-solid fa-shield-halved"></i></a>
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditComputer' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteComputer' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#each subItems as |subItem|}}
|
||||||
|
<div class="table-row table-subrow drag-item-list" data-item-id="{{subItem._id}}">
|
||||||
|
<div class="row-item row-item-50 row-item-left"><i class="fa-brands fa-usb"></i>{{subItem.name}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{subItem.system.bandwidth}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix"></div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control software-eject" title="{{ localize 'MGT2.Actor.UnloadSoftware' }}"><i class="fa-solid fa-eject"></i></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditSoftware' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
{{/each}}
|
||||||
|
{{#if softwares}}
|
||||||
|
<fieldset style="padding: 5px;margin: 1rem 0;">
|
||||||
|
<legend><i class="fa-brands fa-usb"></i> {{ localize 'MGT2.Items.Softwares' }}</legend>
|
||||||
|
<ul class="softwares">
|
||||||
|
{{#each softwares as |software id|}}
|
||||||
|
<li class="drag-item-list" data-item-id="{{software._id}}">{{software.display}}
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditSoftware' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-delete" title="{{ localize 'MGT2.Actor.DeleteSoftware' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</fieldset>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-85 row-item-left upcase"><i class="fa-solid fa-toolbox"></i>{{ localize 'MGT2.Items.Equipments' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{ localize 'MGT2.Items.Qty' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="equipment" data-create-name="{{ localize 'MGT2.Actor.Equipment' }}" title="{{ localize 'MGT2.Actor.AddEquipment' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each equipments as |equipment id|}}
|
||||||
|
<div class="table-row drag-item-list" data-item-id="{{equipment._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-85 row-item-left">{{equipment.name}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{equipment.system.quantity}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{equipment.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-equip {{equipment.toggleClass}}" title="{{ localize 'MGT2.Actor.EquipUnequip' }}"><i class="fa-solid fa-shield-halved"></i></a>
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreEquipment' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditEquipment' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteEquipment' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-85 row-item-left upcase"><i class="fa-solid fa-backpack"></i>{{ localize 'MGT2.Items.Items' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{ localize 'MGT2.Items.Qty' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="item" data-create-name="{{ localize 'MGT2.Actor.NewItem' }}" title="{{ localize 'MGT2.Actor.AddItem' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each items as |item|}}
|
||||||
|
{{#if (eq item.type "container")}}
|
||||||
|
<div class="table-row drop-item-list" data-item-id="{{item._id}}">
|
||||||
|
{{else}}
|
||||||
|
<div class="table-row drag-item-list" data-item-id="{{item._id}}">
|
||||||
|
{{/if}}
|
||||||
|
<div class="row-item row-item-85 row-item-left">{{item.name}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{item.system.quantity}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{item.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#if (eq item.type "container")}}
|
||||||
|
{{#each subItems as |subItem|}}
|
||||||
|
<div class="table-row table-subrow drag-item-list" data-item-id="{{subItem._id}}">
|
||||||
|
<div class="row-item row-item-85 row-item-left">{{subItem.name}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center">{{subItem.system.quantity}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right flex-fix">{{subItem.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-storage-out" title="{{ localize 'MGT2.Actor.UnstoreItem' }}"><i class="fa-solid fa-inbox-out"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row">
|
||||||
|
<div class="row-item row-item-left" style="flex-basis: 48%">{{ localize 'MGT2.Actor.Encumbrance' }} {{encumbranceNormal}} {{settings.weightUnit}} / {{encumbranceHeavy}} {{settings.weightUnit}}</div>
|
||||||
|
<div class="row-item row-item-right" style="flex-basis: 28%">Total :</div>
|
||||||
|
<div class="row-item row-item-2 row-item-right {{encumbranceClasses}} flex-fix">{{system.inventory.weight}} {{settings.weightUnit}}</div>
|
||||||
|
<div class="row-item row-item-15 row-item-left flex-fix {{encumbranceClasses}}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab" data-group="inventory" data-tab="storage">
|
||||||
|
<div class="mt-1" style="flex-direction: row;display: flex;justify-content: space-between;">
|
||||||
|
<div>
|
||||||
|
<label>{{ localize 'MGT2.Items.Containers' }}</label>
|
||||||
|
<select name="system.containerView">
|
||||||
|
{{selectOptions containers selected=system.containerView nameAttr="_id" labelAttr="display"}}
|
||||||
|
</select>
|
||||||
|
<div class="container-controls">
|
||||||
|
{{#unless containerShowAll}}<a class="container-edit"><i class="fas fa-edit"></i></a>{{/unless}}
|
||||||
|
<a class="container-create"><i class="fas fa-plus"></i></a>
|
||||||
|
{{#unless containerShowAll}}<a class="container-delete"><i class="fas fa-trash"></i></a>{{/unless}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>DropIn</label>
|
||||||
|
<select name="system.containerDropIn">
|
||||||
|
{{selectOptions actorContainers selected=system.containerDropIn nameAttr="_id" labelAttr="display"}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
{{#if (and containerView.system.locked (not isGM))}}
|
||||||
|
<i class="fa-solid fa-lock"></i><label class="upcase">{{ localize 'MGT2.Items.Locked' }}</label>
|
||||||
|
{{else}}
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Items.Items' }}</div>
|
||||||
|
{{#if containerShowAll}}
|
||||||
|
<div class="row-item row-item-center row-item-storage">{{ localize 'MGT2.Items.Storage' }}</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="row-item row-item-2 row-item-center flex-fix">{{ localize 'MGT2.Items.Qty' }}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center flex-fix">{{ localize 'MGT2.Items.Weight' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"></div>
|
||||||
|
</div>
|
||||||
|
{{#each containerItems as |containerItem id|}}
|
||||||
|
<div class="table-row drag-item-list" data-item-id="{{containerItem._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left">{{containerItem.name}}</div>
|
||||||
|
{{#if ../containerShowAll}}
|
||||||
|
<div class="row-item row-item-center row-item-storage">{{containerItem.containerName}}</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="row-item row-item-2 row-item-center flex-fix">{{containerItem.system.quantity}}</div>
|
||||||
|
<div class="row-item row-item-2 row-item-center flex-fix">{{containerItem.weight}}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control item-storage-out" title="{{ localize 'MGT2.Actor.UnstoreItem' }}"><i class="fa-solid fa-inbox-out"></i></a>
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>{{ localize 'MGT2.Actor.TotalWeight' }} : {{containerWeight}} {{settings.weightUnit}}</div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="tab" data-group="inventory" data-tab="finance">
|
||||||
|
<div class="field-groups mb-1 mt-1">
|
||||||
|
<div class="field-group">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.CashOnHand' }}</label>
|
||||||
|
<input class="field" name="system.finance.credits" type="text" value="{{system.finance.credits}}" />
|
||||||
|
</div>
|
||||||
|
<div class="field-group">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.Pension' }}</label>
|
||||||
|
<input class="field" name="system.finance.pension" type="text" value="{{system.finance.pension}}" />
|
||||||
|
</div>
|
||||||
|
<div class="field-group">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.LivingCost' }}</label>
|
||||||
|
<input class="field" name="system.finance.livingCost" type="text" value="{{system.finance.livingCost}}" />
|
||||||
|
</div>
|
||||||
|
<div class="field-group">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.Debt' }}</label>
|
||||||
|
<input class="field" name="system.finance.debt" type="text" value="{{system.finance.debt}}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="field-group mt-1">
|
||||||
|
<label class="upcase">{{ localize 'MGT2.Actor.Notes' }}</label>
|
||||||
|
<textarea name="system.finance.description" rows="3">{{system.finance.description}}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 tab-scroll" data-group="sidebar" data-tab="relations">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.RelationsAndContacts' }}</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item flex-grow-2">{{ localize 'MGT2.Items.Relations' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Relation' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Attitude' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Occupation' }}</div>
|
||||||
|
<div class="row-item row-item-center">{{ localize 'MGT2.Items.Location' }}</div>
|
||||||
|
<div class="row-item item-controls"><a class="item-create" data-type-item="contact" data-create-name="{{ localize 'MGT2.Actor.NewContact' }}" title="{{ localize 'MGT2.Actor.AddContact' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each contacts as |contact id|}}
|
||||||
|
<div class="table-row" data-item-id="{{contact._id}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-left flex-grow-2">{{contact.name}}</div>
|
||||||
|
<div class="row-item row-item-center">{{localize (concat "MGT2.Contact.Relation." contact.system.relation)}}</div>
|
||||||
|
<div class="row-item row-item-center">{{localize (concat "MGT2.Contact.Attitude." contact.system.attitude)}}</div>
|
||||||
|
<div class="row-item row-item-center">{{contact.system.occupation}}</div>
|
||||||
|
<div class="row-item row-item-center">{{contact.system.location}}</div>
|
||||||
|
<div class="row-item item-controls">
|
||||||
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditContact' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteContact' }}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 h100" data-group="sidebar" data-tab="notes">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.Notes' }}</div>
|
||||||
|
{{editor system.notes target="system.notes" button=true editable=true}}
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 h100" data-group="sidebar" data-tab="biography">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.Biography' }}</div>
|
||||||
|
{{editor system.biography target="system.biography" button=true editable=true}}
|
||||||
|
</div>
|
||||||
|
{{#if showTrash}}
|
||||||
|
<!-- <div class="tab" data-group="inventory" data-tab="trash">
|
||||||
|
<p>À FAIRE</p>
|
||||||
|
</div> -->
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<section class="actor-footer">
|
||||||
|
|
||||||
|
<div></div>
|
||||||
|
<div><a name="config" title="Config" style="margin-right: 0.5rem;"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<nav class="sheet-sidebar tabs" data-group="sidebar">
|
<nav class="sheet-sidebar tabs" data-group="sidebar">
|
||||||
<!-- <a class="item tab-select" data-tab="personal" title="Personal"><i class="fa-solid fa-id-card"></i></a> -->
|
<!-- <a class="item tab-select" data-tab="personal" title="Personal"><i class="fa-solid fa-id-card"></i></a> -->
|
||||||
<a class="item tab-select" data-tab="health" title="{{ localize 'MGT2.Actor.Health' }}"><i class="fa-solid fa-heart-pulse"></i></a>
|
<a class="item tab-select" data-tab="health" title="{{ localize 'MGT2.Actor.Health' }}"><i class="fa-solid fa-heart-pulse"></i></a>
|
||||||
<a class="item tab-select" data-tab="skills" title="{{ localize 'MGT2.Actor.Skills' }}"><i class="fa-solid fa-head-side"></i></a>
|
<a class="item tab-select" data-tab="skills" title="{{ localize 'MGT2.Actor.TabSkills' }}"><i class="fa-solid fa-head-side"></i></a>
|
||||||
<a class="item tab-select" data-tab="inventory" title="{{ localize 'MGT2.Actor.Inventory' }}"><i class="fa-solid fa-briefcase-blank"></i></a>
|
<a class="item tab-select" data-tab="inventory" title="{{ localize 'MGT2.Actor.Inventory' }}"><i class="fa-solid fa-briefcase-blank"></i></a>
|
||||||
<a class="item tab-select" data-tab="relations" title="{{ localize 'MGT2.Actor.Contacts' }}"><i class="fa-solid fa-users"></i></a>
|
<a class="item tab-select" data-tab="relations" title="{{ localize 'MGT2.Actor.Contacts' }}"><i class="fa-solid fa-users"></i></a>
|
||||||
<a class="item tab-select" data-tab="notes" title="{{ localize 'MGT2.Actor.Notes' }}"><i class="fa-solid fa-books"></i></a>
|
<a class="item tab-select" data-tab="notes" title="{{ localize 'MGT2.Actor.Notes' }}"><i class="fa-solid fa-books"></i></a>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<div style="height: 100%;overflow: hidden;display: flex;flex-direction: row;width: 100%;justify-content: flex-start;align-items: flex-start;">
|
<div class="character-body">
|
||||||
<div class="characteristics">
|
<div class="characteristics">
|
||||||
<nav class="horizontal-tabs tabs" data-group="characteristics" style="border-right: 7px double #fff;">
|
<nav class="horizontal-tabs tabs" data-group="characteristics" style="border-right: 7px double #fff;">
|
||||||
<a class="item tab-select" data-tab="core">{{ localize 'MGT2.Actor.TabCore' }}</a>
|
<a class="item tab-select" data-tab="core">{{ localize 'MGT2.Actor.TabCore' }}</a>
|
||||||
@@ -275,7 +275,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab w100" data-group="sidebar" data-tab="health">
|
<div class="tab w100 tab-scroll" data-group="sidebar" data-tab="health">
|
||||||
<div class="header upcase">{{ localize 'MGT2.Actor.Health' }}</div>
|
<div class="header upcase">{{ localize 'MGT2.Actor.Health' }}</div>
|
||||||
<div class="field-group mb-1">
|
<div class="field-group mb-1">
|
||||||
<label class="upcase">{{ localize 'MGT2.Actor.Rads' }}</label>
|
<label class="upcase">{{ localize 'MGT2.Actor.Rads' }}</label>
|
||||||
@@ -324,7 +324,26 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab w100" data-group="sidebar" data-tab="skills">
|
<div class="tab w100 tab-scroll" data-group="sidebar" data-tab="skills">
|
||||||
|
<div class="header upcase">{{ localize 'MGT2.Actor.TabSkills' }}</div>
|
||||||
|
<div class="species"><a title="Description détaillé" data-editor="open"><i class="fa-solid fa-book"></i></a>{{system.personal.speciesText.description}}</div>
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-1">
|
||||||
|
<div class="row-item row-item-15 row-item-left upcase">{{ localize 'MGT2.Items.Trait' }}</div>
|
||||||
|
<div class="row-item row-item-left">{{ localize 'MGT2.Items.Description' }}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="traits-create"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each system.personal.traits as |trait i| }}
|
||||||
|
<div class="table-row traits-part" data-traits-part="{{i}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-15 row-item-left">{{trait.name}}</div>
|
||||||
|
<div class="row-item row-item-left">{{trait.description}}</div>
|
||||||
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control traits-edit" title="{{ localize 'MGT2.Actor.EditTrait' }}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control traits-delete" title="Delete Trait"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
<div class="header upcase">{{ localize 'MGT2.Actor.StudyPeriod' }}</div>
|
<div class="header upcase">{{ localize 'MGT2.Actor.StudyPeriod' }}</div>
|
||||||
<div class="fields mb-1">
|
<div class="fields mb-1">
|
||||||
<div class="field-group" style="flex: 2 1 auto;">
|
<div class="field-group" style="flex: 2 1 auto;">
|
||||||
@@ -381,22 +400,22 @@
|
|||||||
{{#if system.config.psionic}}
|
{{#if system.config.psionic}}
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<div class="table-row heading color-1">
|
<div class="table-row heading color-1">
|
||||||
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Actor.PsionicTalents' }}</div>
|
<div class="row-item row-item-left upcase">{{ localize 'MGT2.Actor.PsionicTalents' }}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Level' }}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Level' }}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Cost' }}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Cost' }}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Reach' }}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Reach' }}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{ localize 'MGT2.Items.Difficulty' }}</div>
|
<div class="row-item row-item-15 row-item-center flex-fix">{{ localize 'MGT2.Items.Difficulty' }}</div>
|
||||||
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="talent" data-subtype="psionic" data-create-name="{{ localize 'MGT2.Actor.NewPsionicTalent' }}" title="{{ localize 'MGT2.Actor.AddPsionicTalent' }}"><i class="fas fa-plus"></i></a></div>
|
<div class="row-item row-item row-item-15 item-controls flex-fix"><a class="item-create" data-type-item="talent" data-subtype="psionic" data-create-name="{{ localize 'MGT2.Actor.NewPsionicTalent' }}" title="{{ localize 'MGT2.Actor.AddPsionicTalent' }}"><i class="fas fa-plus"></i></a></div>
|
||||||
</div>
|
</div>
|
||||||
{{#each psionics as |psionic id|}}
|
{{#each psionics as |psionic id|}}
|
||||||
<div class="table-row" data-item-id="{{psionic._id}}" role="rowgroup">
|
<div class="table-row" data-item-id="{{psionic._id}}" role="rowgroup">
|
||||||
<div class="row-item row-item-30 row-item-left">
|
<div class="row-item row-item-left">
|
||||||
<a data-roll="psionic" data-item-id="{{psionic._id}}"><i class="fa-solid fa-dice"></i></a>{{psionic.name}}
|
<a data-roll="psionic" data-item-id="{{psionic._id}}"><i class="fa-solid fa-dice"></i></a>{{psionic.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.level}}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.level}}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.cost}}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.cost}}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.reach}}</div>
|
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.reach}}</div>
|
||||||
<div class="row-item row-item-10 row-item-center flex-fix">{{psionic.system.psionic.difficulty}}</div>
|
<div class="row-item row-item-15 row-item-center flex-fix">{{psionic.difficulty}}</div>
|
||||||
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
<div class="row-item row-item row-item-15 item-controls flex-fix">
|
||||||
<a class="item-control item-edit" title="{{ localize 'MGT2.Items.EditPsionic' }}"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="{{ localize 'MGT2.Items.EditPsionic' }}"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-delete" title="{{ localize 'MGT2.Items.DeletePsionic' }}"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="{{ localize 'MGT2.Items.DeletePsionic' }}"><i class="fas fa-trash"></i></a>
|
||||||
@@ -723,8 +742,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<section class="actor-footer">
|
<section class="actor-footer">
|
||||||
|
|
||||||
<div></div>
|
|
||||||
<div><a name="config" title="Config" style="margin-right: 0.5rem;"><i class="fa-solid fa-gear"></i></a></div>
|
<div><a name="config" title="Config" style="margin-right: 0.5rem;"><i class="fa-solid fa-gear"></i></a></div>
|
||||||
</section>
|
</section>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
12
templates/actors/trait-sheet.html
Normal file
12
templates/actors/trait-sheet.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<form class="{{cssClass}} itemsheet" autocomplete="off">
|
||||||
|
<div class="itemsheet-header"><label class="upcase">{{ localize 'MGT2.Items.Trait' }}</label></div>
|
||||||
|
<div class="itemsheet-panel">
|
||||||
|
<div class="w-100 h100 flexcol">
|
||||||
|
<input class="field field-item-name" name="name" type="text" value="{{data.name}}" style="flex-grow: 0;" />
|
||||||
|
<div class="field-group mt-1">
|
||||||
|
<label>{{ localize 'MGT2.Items.Description' }}</label>
|
||||||
|
<textarea name="description" rows="6">{{data.description}}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
@@ -1,7 +1,14 @@
|
|||||||
<div class="roll-info">
|
<div class="roll-info">
|
||||||
<div class="roll-object-name">{{rollObjectName}}</div>
|
<div class="roll-object-name">{{rollObjectName}}</div>
|
||||||
{{#if rollTypeName}}
|
{{#if rollTypeName}}
|
||||||
<div class="roll-type-name">{{rollTypeName}}</div>
|
{{#if rollDifficulty}}
|
||||||
|
<div class="roll-type-group"><div class="roll-type-name">{{rollTypeName}}</div><div class="roll-type-name">{{ localize rollDifficultyLabel }}</div></div>
|
||||||
|
{{else}}
|
||||||
|
<div class="roll-type-name">{{rollTypeName}}</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
{{#if rollMessage}}
|
||||||
|
<div>{{rollMessage}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollModifiers}}
|
{{#if rollModifiers}}
|
||||||
{{#each rollModifiers as |rollModifier i| }}
|
{{#each rollModifiers as |rollModifier i| }}
|
||||||
@@ -13,12 +20,13 @@
|
|||||||
{{#if flavor}}
|
{{#if flavor}}
|
||||||
<div class="dice-flavor">{{flavor}}</div>
|
<div class="dice-flavor">{{flavor}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="dice-result">
|
<div class="dice-result"><div class="dice-formula">{{formula}}</div>{{{tooltip}}}<h4 class="dice-total">{{total}}</h4></div>
|
||||||
<div class="dice-formula">{{formula}}</div>
|
|
||||||
{{{tooltip}}}
|
|
||||||
<h4 class="dice-total">{{total}}</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
{{#if rollSuccess}}
|
||||||
|
<div class="roll-success">{{ localize 'MGT2.Chat.Roll.Success' }}</div>
|
||||||
|
{{else if rollFailure}}
|
||||||
|
<div class="roll-success">{{ localize 'MGT2.Chat.Roll.Failure' }}</div>
|
||||||
|
{{/if}}
|
||||||
{{#if showButtons}}
|
{{#if showButtons}}
|
||||||
<div class="mgt2-buttons">
|
<div class="mgt2-buttons">
|
||||||
{{#if hasDamage}}
|
{{#if hasDamage}}
|
||||||
@@ -31,5 +39,8 @@
|
|||||||
{{#if showRollDamage}}
|
{{#if showRollDamage}}
|
||||||
<button data-action="rollDamage" title="Roll">{{ localize 'MGT2.Chat.Roll.Damages' }}</button>
|
<button data-action="rollDamage" title="Roll">{{ localize 'MGT2.Chat.Roll.Damages' }}</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{#each cardButtons as |cardButton i| }}
|
||||||
|
<button data-index="{{i}}" title="{{cardButton.label}}">{{cardButton.label}}</button>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
3
templates/editor-fullview.html
Normal file
3
templates/editor-fullview.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off" style="padding: 0 0.5rem;">
|
||||||
|
{{{html}}}
|
||||||
|
</form>
|
||||||
@@ -4,11 +4,66 @@
|
|||||||
<div class="itemsheet-maincol">
|
<div class="itemsheet-maincol">
|
||||||
<img class="profile-img" src="{{item.img}}" data-edit="img" data-tooltip="{{item.name}}" />
|
<img class="profile-img" src="{{item.img}}" data-edit="img" data-tooltip="{{item.name}}" />
|
||||||
</div>
|
</div>
|
||||||
<div class="w-100">
|
<div class="w-100" style="display: flex;flex-direction: column;justify-content: flex-start;align-items: stretch;">
|
||||||
<input class="field item-name" name="name" type="text" value="{{item.name}}" />
|
<input class="field item-name" name="name" type="text" value="{{item.name}}" />
|
||||||
<div class="field-group mt-1">
|
<div class="field-group mt-1">
|
||||||
<label>{{ localize 'MGT2.Items.Description' }}</label>
|
<label>{{ localize 'MGT2.Items.Description' }}</label>
|
||||||
<textarea name="system.description" rows="6">{{system.description}}</textarea>
|
<nav class="horizontal-tabs tabs mt-1" data-group="primary">
|
||||||
|
<a class="item tab-select" data-tab="tab1">{{ localize 'MGT2.Items.Description' }}</a>
|
||||||
|
<a class="item tab-select" data-tab="tab2">{{ localize 'MGT2.Items.DetailedDescription' }}</a>
|
||||||
|
<a class="item tab-select" data-tab="tab3">{{ localize 'MGT2.Items.Details' }}</a>
|
||||||
|
</nav>
|
||||||
|
<div class="tab" data-group="primary" data-tab="tab1">
|
||||||
|
<div class="field-group mt-1">
|
||||||
|
<label>{{ localize 'MGT2.Items.Description' }}</label>
|
||||||
|
<textarea name="system.description" rows="6">{{system.description}}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab w100 h100" data-group="primary" data-tab="tab2">
|
||||||
|
{{editor system.descriptionLong target="system.descriptionLong" button=true editable=true}}
|
||||||
|
</div>
|
||||||
|
<div class="tab" data-group="primary" data-tab="tab3">
|
||||||
|
<div class="table-container">
|
||||||
|
<div class="table-row heading color-2">
|
||||||
|
<div class="row-item row-item-left upcase">{{ localize 'MGT2.Items.Characteristics' }}</div>
|
||||||
|
<div class="row-item row-item-center row-item-15 flex-fix">{{ localize 'MGT2.Items.Modifiers' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="modifiers-create"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each system.modifiers as |modifier i| }}
|
||||||
|
<div class="table-row modifiers-part" data-modifiers-part="{{i}}" role="rowgroup">
|
||||||
|
<div class="row-item row-item-left">
|
||||||
|
<select name="system.modifiers.{{i}}.characteristic">
|
||||||
|
{{selectOptions ../config.Characteristics selected=modifier.characteristic localize = true}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-left row-item-15 flex-fix">
|
||||||
|
<input type="number" name="system.modifiers.{{i}}.value" value="{{modifier.value}}" />
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control modifiers-delete" title="Delete Trait"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
<div class="table-container mt-1">
|
||||||
|
<div class="table-row heading color-2">
|
||||||
|
<div class="row-item row-item-30 row-item-left upcase">{{ localize 'MGT2.Items.Traits' }}</div>
|
||||||
|
<div class="row-item row-item-left">{{ localize 'MGT2.Items.Description' }}</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix"><a class="options-create" data-property="traits"><i class="fas fa-plus"></i></a></div>
|
||||||
|
</div>
|
||||||
|
{{#each system.traits as |trait i| }}
|
||||||
|
<div class="table-row options-part" data-options-part="{{i}}" data-property="traits" role="rowgroup">
|
||||||
|
<div class="row-item row-item-30 row-item-left"><input type="text" name="system.traits.{{i}}.name" value="{{trait.name}}" /></div>
|
||||||
|
<div class="row-item row-item-left">
|
||||||
|
<textarea name="system.traits.{{i}}.description" rows="3">{{trait.description}}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="row-item row-item-15 item-controls flex-fix">
|
||||||
|
<a class="item-control options-delete" title="Delete Trait"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -47,6 +47,17 @@
|
|||||||
<input type="number" name="system.psionic.cost" value="{{system.psionic.cost}}" data-dtype="Number" />
|
<input type="number" name="system.psionic.cost" value="{{system.psionic.cost}}" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="field-groups mt-1">
|
||||||
|
<div class="field-group">
|
||||||
|
<label>{{ localize 'MGT2.Items.Duration' }}</label>
|
||||||
|
<div class="flexrow">
|
||||||
|
<input type="text" name="system.psionic.duration" value="{{system.psionic.duration}}" data-dtype="String" class="flex-basis-50" />
|
||||||
|
<select name="system.psionic.durationUnit" class="flex-basis-50 flex-fix">
|
||||||
|
{{selectOptions config.Durations selected=system.psionic.durationUnit localize = true}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<nav class="horizontal-tabs tabs mt-1" data-group="primary">
|
<nav class="horizontal-tabs tabs mt-1" data-group="primary">
|
||||||
<a class="item tab-select" data-tab="tab1">{{ localize 'MGT2.Items.Description' }}</a>
|
<a class="item tab-select" data-tab="tab1">{{ localize 'MGT2.Items.Description' }}</a>
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
<label>{{ localize 'MGT2.RollPrompt.CustomDM' }}</label>
|
<label>{{ localize 'MGT2.RollPrompt.CustomDM' }}</label>
|
||||||
<input type="text" name="customDM" maxlength="15" />
|
<input type="text" name="customDM" maxlength="15" />
|
||||||
</div>
|
</div>
|
||||||
{{#if showDifficulty}}
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>{{ localize 'MGT2.RollPrompt.Difficulty' }}</label>
|
<label>{{ localize 'MGT2.RollPrompt.Difficulty' }}</label>
|
||||||
<select name="difficulty">
|
<select name="difficulty">
|
||||||
@@ -37,7 +36,6 @@
|
|||||||
{{selectOptions config.Difficulty selected = difficulty localize = true}}
|
{{selectOptions config.Difficulty selected = difficulty localize = true}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>{{ localize 'MGT2.RollPrompt.RollMode' }}</label>
|
<label>{{ localize 'MGT2.RollPrompt.RollMode' }}</label>
|
||||||
<select name="rollMode">
|
<select name="rollMode">
|
||||||
|
|||||||
Reference in New Issue
Block a user