forked from GitHub-Mirrors/foundry-sw5e
Merge branch 'Develop' into professorbunbury-sw5e
This commit is contained in:
commit
08a5c0be33
41 changed files with 6024 additions and 5848 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
8
CONTRIBUTIONS.md
Normal file
8
CONTRIBUTIONS.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Rick Fisto
|
||||||
|
- [Fisto's Codex](https://www.gmbinder.com/share/-M-qA_FYgTwJjU8yFjjx)
|
||||||
|
|
||||||
|
Heresy
|
||||||
|
- [Heritic's Guide to the Galaxy](https://www.gmbinder.com/share/-M815p5BfQ0wbdKY7zqN)
|
||||||
|
|
||||||
|
Erikstormtrooper
|
||||||
|
- [Englibesh Font](http://www.erikstormtrooper.com/englibesh.htm)
|
|
@ -27,3 +27,10 @@ may do this by cloning the repository or downloading a zip archive from the
|
||||||
Code and content contributions are accepted. Please feel free to submit issues to the issue tracker or submit merge
|
Code and content contributions are accepted. Please feel free to submit issues to the issue tracker or submit merge
|
||||||
requests for code changes. Approval for such requests involves code and (if necessary) design review by The Dev Team.
|
requests for code changes. Approval for such requests involves code and (if necessary) design review by The Dev Team.
|
||||||
Please reach out on the SW5E Foundry Dev Discord with any questions.
|
Please reach out on the SW5E Foundry Dev Discord with any questions.
|
||||||
|
|
||||||
|
## Compatible Modules and Optimum Settings
|
||||||
|
|
||||||
|
- DAE (Dynamic Active Effects) is needed for many automatic features.
|
||||||
|
-**Please enable: "Include active effects in special traits display" in "Configure Game Settings> Module Settings> Dynamic Active Effects".**
|
||||||
|
- Midi QoL is compatible with great features
|
||||||
|
- Token Action Hud has compatibility
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
.bungeeInline();
|
.engli-Besh();
|
||||||
color: @colorOlive;
|
color: @colorOlive;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #111;
|
color: #111;
|
||||||
|
|
|
@ -1,146 +1,146 @@
|
||||||
//override Primary Red
|
//override Primary Red
|
||||||
@colorRed: #E81111;
|
@colorRed: #E81111;
|
||||||
@colorDarkBg: #2b2b2b;
|
@colorDarkBg: #2b2b2b;
|
||||||
//Background
|
//Background
|
||||||
@primaryBackground: linear-gradient(90deg,#626262 0,#4d4d4d 30%,#4d4d4d 70%,#626262);
|
@primaryBackground: linear-gradient(90deg,#626262 0,#4d4d4d 30%,#4d4d4d 70%,#626262);
|
||||||
|
|
||||||
//Typography
|
//Typography
|
||||||
@headingColor: @colorRed;
|
@headingColor: @colorRed;
|
||||||
@headerBorderColor: @colorBlue;
|
@headerBorderColor: @colorBlue;
|
||||||
@bodyFontColor: white;
|
@bodyFontColor: white;
|
||||||
@linkColor: @colorRed;
|
@linkColor: @colorRed;
|
||||||
@linkSecondaryColor: @colorPaleGray;
|
@linkSecondaryColor: @colorPaleGray;
|
||||||
|
|
||||||
@blockquoteBackground: @colorPaleRed;
|
@blockquoteBackground: @colorPaleRed;
|
||||||
@blockquoteBorder: @colorRed;
|
@blockquoteBorder: @colorRed;
|
||||||
@blockquoteShadow: 0 0 20px rgba(@colorRed, 0.8);
|
@blockquoteShadow: 0 0 20px rgba(@colorRed, 0.8);
|
||||||
|
|
||||||
//forms
|
//forms
|
||||||
@inputBackgroundColor: @colorDarkGray;
|
@inputBackgroundColor: @colorDarkGray;
|
||||||
@inputBorderNormal: @colorLightGray;
|
@inputBorderNormal: @colorLightGray;
|
||||||
@inputBorderHover: @colorGray;
|
@inputBorderHover: @colorGray;
|
||||||
@inputBorderFocus: @colorRed;
|
@inputBorderFocus: @colorRed;
|
||||||
@inputTextColor: white;
|
@inputTextColor: white;
|
||||||
|
|
||||||
@buttonBackground: @colorRed;
|
@buttonBackground: @colorRed;
|
||||||
@buttonTextColor: white;
|
@buttonTextColor: white;
|
||||||
@buttonHoverBackground: lighten(@colorRed, 5);
|
@buttonHoverBackground: lighten(@colorRed, 5);
|
||||||
@buttonSecondaryBackground: @colorLightGray;
|
@buttonSecondaryBackground: @colorLightGray;
|
||||||
@buttonSecondaryTextColor: white;
|
@buttonSecondaryTextColor: white;
|
||||||
@buttonSecondaryHoverBackground: lighten(@colorLightGray, 5);
|
@buttonSecondaryHoverBackground: lighten(@colorLightGray, 5);
|
||||||
|
|
||||||
//other bits
|
//other bits
|
||||||
@hrColor: @colorBlue;
|
@hrColor: @colorBlue;
|
||||||
@tableTextColor: white;
|
@tableTextColor: white;
|
||||||
@tableHeaderTextColor: @colorPaleGray;
|
@tableHeaderTextColor: @colorPaleGray;
|
||||||
@tableBackground: @colorGray;
|
@tableBackground: @colorGray;
|
||||||
@tableRowHoverBackground: lighten(@colorLightGray, 10);
|
@tableRowHoverBackground: lighten(@colorLightGray, 10);
|
||||||
@tableRowBorderColor: @colorLightGray;
|
@tableRowBorderColor: @colorLightGray;
|
||||||
|
|
||||||
//universalColors
|
//universalColors
|
||||||
@windowHeaderBackground: @colorDarkBg;
|
@windowHeaderBackground: @colorDarkBg;
|
||||||
@windowHeaderLinkColor: @colorRed;
|
@windowHeaderLinkColor: @colorRed;
|
||||||
|
|
||||||
//Sidebar
|
//Sidebar
|
||||||
@sidebarTabBackground: @windowHeaderBackground;
|
@sidebarTabBackground: @windowHeaderBackground;
|
||||||
@sidebarTabLinkColor: @windowHeaderLinkColor;
|
@sidebarTabLinkColor: @windowHeaderLinkColor;
|
||||||
@sidebarTabLinkUnderline: @colorRed;
|
@sidebarTabLinkUnderline: @colorRed;
|
||||||
|
|
||||||
@chatBackground: @colorDarkGray;
|
@chatBackground: @colorDarkGray;
|
||||||
@chatHeaderColor: @colorRed;
|
@chatHeaderColor: @colorRed;
|
||||||
@chatHeaderBottomBorderColor: @colorBlue;
|
@chatHeaderBottomBorderColor: @colorBlue;
|
||||||
@chatNotificationColor: @colorBlue;
|
@chatNotificationColor: @colorBlue;
|
||||||
@cardButtonBorder: @colorLightGray;
|
@cardButtonBorder: @colorLightGray;
|
||||||
@cardFooterBorder: @colorLightBlue;
|
@cardFooterBorder: @colorLightBlue;
|
||||||
@cardFooterSeparator: @colorPaleGray;
|
@cardFooterSeparator: @colorPaleGray;
|
||||||
|
|
||||||
@diceFormulaBackground: @colorGray;
|
@diceFormulaBackground: @colorGray;
|
||||||
@diceFormualColor: white;
|
@diceFormualColor: white;
|
||||||
@diceTotalBackground: @colorPaleRed;
|
@diceTotalBackground: @colorPaleRed;
|
||||||
@diceTotalBorder: @colorRed;
|
@diceTotalBorder: @colorRed;
|
||||||
@diceTotalShadow: @colorRed;
|
@diceTotalShadow: @colorRed;
|
||||||
@diceSuccessColor: @colorGreen;
|
@diceSuccessColor: @colorGreen;
|
||||||
@diceFailureColor: @colorRed;
|
@diceFailureColor: @colorRed;
|
||||||
@diceCriticalBackground: @colorPaleGreen;
|
@diceCriticalBackground: @colorPaleGreen;
|
||||||
@diceCriticalColor: @colorGreen;
|
@diceCriticalColor: @colorGreen;
|
||||||
@diceFumbleBackground: @colorPaleRed;
|
@diceFumbleBackground: @colorPaleRed;
|
||||||
@diceFumbleColor: @colorRed;
|
@diceFumbleColor: @colorRed;
|
||||||
|
|
||||||
@altRowBackground: @colorGray;
|
@altRowBackground: @colorGray;
|
||||||
|
|
||||||
@combatRoundColor: @colorRed;
|
@combatRoundColor: @colorRed;
|
||||||
@combatRoundBorder: @colorBlue;
|
@combatRoundBorder: @colorBlue;
|
||||||
@combatCombatantControlColor: @colorPaleGray;
|
@combatCombatantControlColor: @colorPaleGray;
|
||||||
@combatCombatantControlColorActive: @colorRed;
|
@combatCombatantControlColorActive: @colorRed;
|
||||||
@combatActiveCombatantColor: @colorBlue;
|
@combatActiveCombatantColor: @colorBlue;
|
||||||
@combatTokenResourceColor: white;
|
@combatTokenResourceColor: white;
|
||||||
@combatTokenResouceBorder: @colorLightGray;
|
@combatTokenResouceBorder: @colorLightGray;
|
||||||
@combatControlsBorder: @colorBlue;
|
@combatControlsBorder: @colorBlue;
|
||||||
|
|
||||||
@folderSearchIconColor: @colorBlue;
|
@folderSearchIconColor: @colorBlue;
|
||||||
@folderSubdirectoryBackground: @colorDarkBg;
|
@folderSubdirectoryBackground: @colorDarkBg;
|
||||||
@folderSubdirectoryBorder: @colorLightGray;
|
@folderSubdirectoryBorder: @colorLightGray;
|
||||||
@directoryListItemBorder: @colorBlue;
|
@directoryListItemBorder: @colorBlue;
|
||||||
@folderHeaderBackground: @colorDarkBg;
|
@folderHeaderBackground: @colorDarkBg;
|
||||||
@folderHeaderColor: white;
|
@folderHeaderColor: white;
|
||||||
@folderIconColor: @colorBlue;
|
@folderIconColor: @colorBlue;
|
||||||
|
|
||||||
@entityBackgroundColor: @colorDarkBg;
|
@entityBackgroundColor: @colorDarkBg;
|
||||||
@entityNameColor: @colorBlack;
|
@entityNameColor: @colorBlack;
|
||||||
|
|
||||||
@sceneBorderColor: @colorBlue;
|
@sceneBorderColor: @colorBlue;
|
||||||
@sceneBackgroundColor: @colorDarkBg;
|
@sceneBackgroundColor: @colorDarkBg;
|
||||||
|
|
||||||
@playlistBackgroundColor: @colorDarkBg;
|
@playlistBackgroundColor: @colorDarkBg;
|
||||||
@playlistHeaderBorder: @colorBlue;
|
@playlistHeaderBorder: @colorBlue;
|
||||||
@playlistSoundColor: @colorBlack;
|
@playlistSoundColor: @colorBlack;
|
||||||
|
|
||||||
@compendiumEntityBackground: @colorDarkBg;
|
@compendiumEntityBackground: @colorDarkBg;
|
||||||
@compendiumStatusIcon: @colorLightGray;
|
@compendiumStatusIcon: @colorLightGray;
|
||||||
|
|
||||||
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
|
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
|
||||||
@foundryNavTextColor: white;
|
@foundryNavTextColor: white;
|
||||||
@foundryNavBorderColor: @colorBlue;
|
@foundryNavBorderColor: @colorBlue;
|
||||||
@foundryNavBgColorGM: @colorBlue;
|
@foundryNavBgColorGM: @colorBlue;
|
||||||
@foundryNavBorderColorGM: @colorPaleBlue;
|
@foundryNavBorderColorGM: @colorPaleBlue;
|
||||||
@foundryNavSceneLinkColor: white;
|
@foundryNavSceneLinkColor: white;
|
||||||
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
|
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
|
||||||
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
|
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
|
||||||
@foundryNavActiveGlow: darken(@colorRed, 20);
|
@foundryNavActiveGlow: darken(@colorRed, 20);
|
||||||
@foundryNavContextShadow: darken(@colorBlue, 20);
|
@foundryNavContextShadow: darken(@colorBlue, 20);
|
||||||
@foundryNavContextBorderColor: @colorBlue;
|
@foundryNavContextBorderColor: @colorBlue;
|
||||||
|
|
||||||
@foundryPlayersArrowColor: @colorLightGray;
|
@foundryPlayersArrowColor: @colorLightGray;
|
||||||
|
|
||||||
@actorPanelBgColor: white;
|
@actorPanelBgColor: white;
|
||||||
@actorNameColor: @colorRed;
|
@actorNameColor: @colorRed;
|
||||||
@actorXPBarBorder: @colorGray;
|
@actorXPBarBorder: @colorGray;
|
||||||
@actorXPBarBackground: @colorPaleBlue;
|
@actorXPBarBackground: @colorPaleBlue;
|
||||||
@actorXPBarColor: @colorBlue;
|
@actorXPBarColor: @colorBlue;
|
||||||
@actorProficiencyTextColor: @colorGray;
|
@actorProficiencyTextColor: @colorGray;
|
||||||
@actorAttributeInputColor: @colorGray;
|
@actorAttributeInputColor: @colorGray;
|
||||||
@actorSeparatorColor: @colorLightGray;
|
@actorSeparatorColor: @colorLightGray;
|
||||||
@actorAttributeButtonBorder: @colorPaleGray;
|
@actorAttributeButtonBorder: @colorPaleGray;
|
||||||
@actorAttributeButtonBorderHover: @colorRed;
|
@actorAttributeButtonBorderHover: @colorRed;
|
||||||
@actorNavigationTabsColor: @colorGray;
|
@actorNavigationTabsColor: @colorGray;
|
||||||
@actorNavigationTabsActiveColor: @colorRed;
|
@actorNavigationTabsActiveColor: @colorRed;
|
||||||
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
|
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
|
||||||
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
|
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
|
||||||
@actorFilterBorderColor: @colorLightGray;
|
@actorFilterBorderColor: @colorLightGray;
|
||||||
@actorFilterHoverColor: @colorRed;
|
@actorFilterHoverColor: @colorRed;
|
||||||
@actorFilterActiveColor: @colorRed;
|
@actorFilterActiveColor: @colorRed;
|
||||||
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
|
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
|
||||||
@actorGroupListTitleBorderColor: @colorBlue;
|
@actorGroupListTitleBorderColor: @colorBlue;
|
||||||
@actorGroupListColumnBorderColor: @colorPaleGray;
|
@actorGroupListColumnBorderColor: @colorPaleGray;
|
||||||
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
|
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
|
||||||
@actorItemRollableD20Color: @colorGray;
|
@actorItemRollableD20Color: @colorGray;
|
||||||
@actorItemRollableD20HoverColor: @colorRed;
|
@actorItemRollableD20HoverColor: @colorRed;
|
||||||
@actorItemControlToggleColor: @colorLightGray;
|
@actorItemControlToggleColor: @colorLightGray;
|
||||||
@actorAbilityScoreColor: @colorGray;
|
@actorAbilityScoreColor: @colorGray;
|
||||||
@actorAbilityBorderColor: @colorPaleGray;
|
@actorAbilityBorderColor: @colorPaleGray;
|
||||||
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
|
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
|
||||||
@actorEncumbranceLabelBackground: @colorPaleGray;
|
@actorEncumbranceLabelBackground: @colorPaleGray;
|
||||||
@actorEncumbranceTextColor: @colorBlack;
|
@actorEncumbranceTextColor: @colorBlack;
|
||||||
@actorEncumbranceBorderColor: @colorBlack;
|
@actorEncumbranceBorderColor: @colorBlack;
|
||||||
@actorEncumbranceBarBgColor: @colorPaleBlue;
|
@actorEncumbranceBarBgColor: @colorPaleBlue;
|
||||||
@actorEncumbranceBarColor: @colorBlue;
|
@actorEncumbranceBarColor: @colorBlue;
|
|
@ -1,143 +1,143 @@
|
||||||
//Background
|
//Background
|
||||||
@primaryBackground: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);// linear-gradient(90deg, @colorPaleBlue 0%, @colorPaleGray 30%, @colorPaleGray 70%, @colorPaleBlue);
|
@primaryBackground: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);// linear-gradient(90deg, @colorPaleBlue 0%, @colorPaleGray 30%, @colorPaleGray 70%, @colorPaleBlue);
|
||||||
|
|
||||||
//Typography
|
//Typography
|
||||||
@headingColor: @colorRed;
|
@headingColor: @colorRed;
|
||||||
@headerBorderColor: @colorBlue;
|
@headerBorderColor: @colorBlue;
|
||||||
@bodyFontColor: @colorBlack;
|
@bodyFontColor: @colorBlack;
|
||||||
@linkColor: @colorRed;
|
@linkColor: @colorRed;
|
||||||
@linkSecondaryColor: @colorGray;
|
@linkSecondaryColor: @colorGray;
|
||||||
|
|
||||||
@blockquoteBackground: @colorPaleBlue;
|
@blockquoteBackground: @colorPaleBlue;
|
||||||
@blockquoteBorder: @colorBlue;
|
@blockquoteBorder: @colorBlue;
|
||||||
@blockquoteShadow: 0 0 20px rgba(@colorBlue, 0.8);
|
@blockquoteShadow: 0 0 20px rgba(@colorBlue, 0.8);
|
||||||
|
|
||||||
//forms
|
//forms
|
||||||
@inputBackgroundColor: @colorGray;
|
@inputBackgroundColor: @colorGray;
|
||||||
@inputBorderNormal: @colorLightGray;
|
@inputBorderNormal: @colorLightGray;
|
||||||
@inputBorderHover: @colorGray;
|
@inputBorderHover: @colorGray;
|
||||||
@inputBorderFocus: @colorRed;
|
@inputBorderFocus: @colorRed;
|
||||||
@inputTextColor: @colorBlack;
|
@inputTextColor: @colorBlack;
|
||||||
|
|
||||||
@buttonBackground: @colorRed;
|
@buttonBackground: @colorRed;
|
||||||
@buttonTextColor: white;
|
@buttonTextColor: white;
|
||||||
@buttonHoverBackground: lighten(@colorRed, 5);
|
@buttonHoverBackground: lighten(@colorRed, 5);
|
||||||
@buttonSecondaryBackground: @colorPaleGray;
|
@buttonSecondaryBackground: @colorPaleGray;
|
||||||
@buttonSecondaryTextColor: @colorBlack;
|
@buttonSecondaryTextColor: @colorBlack;
|
||||||
@buttonSecondaryHoverBackground: lighten(@colorPaleGray, 5);
|
@buttonSecondaryHoverBackground: lighten(@colorPaleGray, 5);
|
||||||
|
|
||||||
//other bits
|
//other bits
|
||||||
@hrColor: @colorBlue;
|
@hrColor: @colorBlue;
|
||||||
@tableTextColor: @colorBlack;
|
@tableTextColor: @colorBlack;
|
||||||
@tableHeaderTextColor: @colorLightGray;
|
@tableHeaderTextColor: @colorLightGray;
|
||||||
@tableBackground: white;
|
@tableBackground: white;
|
||||||
@tableRowHoverBackground: lighten(@colorPaleGray, 10);
|
@tableRowHoverBackground: lighten(@colorPaleGray, 10);
|
||||||
@tableRowBorderColor: @colorPaleGray;
|
@tableRowBorderColor: @colorPaleGray;
|
||||||
|
|
||||||
//universalColors
|
//universalColors
|
||||||
@windowHeaderBackground: white;
|
@windowHeaderBackground: white;
|
||||||
@windowHeaderLinkColor: @colorRed;
|
@windowHeaderLinkColor: @colorRed;
|
||||||
|
|
||||||
//Sidebar
|
//Sidebar
|
||||||
@sidebarTabBackground: @windowHeaderBackground;
|
@sidebarTabBackground: @windowHeaderBackground;
|
||||||
@sidebarTabLinkColor: @windowHeaderLinkColor;
|
@sidebarTabLinkColor: @windowHeaderLinkColor;
|
||||||
@sidebarTabLinkUnderline: @colorRed;
|
@sidebarTabLinkUnderline: @colorRed;
|
||||||
|
|
||||||
@chatBackground: white;
|
@chatBackground: white;
|
||||||
@chatHeaderColor: @colorRed;
|
@chatHeaderColor: @colorRed;
|
||||||
@chatHeaderBottomBorderColor: @colorBlue;
|
@chatHeaderBottomBorderColor: @colorBlue;
|
||||||
@chatNotificationColor: @colorBlue;
|
@chatNotificationColor: @colorBlue;
|
||||||
@cardButtonBorder: @colorLightGray;
|
@cardButtonBorder: @colorLightGray;
|
||||||
@cardFooterBorder: @colorLightBlue;
|
@cardFooterBorder: @colorLightBlue;
|
||||||
@cardFooterSeparator: @colorPaleGray;
|
@cardFooterSeparator: @colorPaleGray;
|
||||||
|
|
||||||
@diceFormulaBackground: @colorPaleGray;
|
@diceFormulaBackground: @colorPaleGray;
|
||||||
@diceFormualColor: @colorBlack;
|
@diceFormualColor: @colorBlack;
|
||||||
@diceTotalBackground: @colorPaleBlue;
|
@diceTotalBackground: @colorPaleBlue;
|
||||||
@diceTotalBorder: @colorBlue;
|
@diceTotalBorder: @colorBlue;
|
||||||
@diceTotalShadow: @colorBlue;
|
@diceTotalShadow: @colorBlue;
|
||||||
@diceSuccessColor: @colorGreen;
|
@diceSuccessColor: @colorGreen;
|
||||||
@diceFailureColor: @colorRed;
|
@diceFailureColor: @colorRed;
|
||||||
@diceCriticalBackground: @colorPaleGreen;
|
@diceCriticalBackground: @colorPaleGreen;
|
||||||
@diceCriticalColor: @colorGreen;
|
@diceCriticalColor: @colorGreen;
|
||||||
@diceFumbleBackground: @colorPaleRed;
|
@diceFumbleBackground: @colorPaleRed;
|
||||||
@diceFumbleColor: @colorRed;
|
@diceFumbleColor: @colorRed;
|
||||||
|
|
||||||
@altRowBackground: @colorPaleBlue;
|
@altRowBackground: @colorPaleBlue;
|
||||||
|
|
||||||
@combatRoundColor: @colorRed;
|
@combatRoundColor: @colorRed;
|
||||||
@combatRoundBorder: @colorBlue;
|
@combatRoundBorder: @colorBlue;
|
||||||
@combatCombatantControlColor: @colorLightGray;
|
@combatCombatantControlColor: @colorLightGray;
|
||||||
@combatCombatantControlColorActive: @colorDarkGray;
|
@combatCombatantControlColorActive: @colorDarkGray;
|
||||||
@combatActiveCombatantColor: @colorBlue;
|
@combatActiveCombatantColor: @colorBlue;
|
||||||
@combatTokenResourceColor: @colorGray;
|
@combatTokenResourceColor: @colorGray;
|
||||||
@combatTokenResouceBorder: @colorLightGray;
|
@combatTokenResouceBorder: @colorLightGray;
|
||||||
@combatControlsBorder: @colorBlue;
|
@combatControlsBorder: @colorBlue;
|
||||||
|
|
||||||
@folderSearchIconColor: @colorBlue;
|
@folderSearchIconColor: @colorBlue;
|
||||||
@folderSubdirectoryBackground: white;
|
@folderSubdirectoryBackground: white;
|
||||||
@folderSubdirectoryBorder: @colorBlack;
|
@folderSubdirectoryBorder: @colorBlack;
|
||||||
@directoryListItemBorder: @colorBlue;
|
@directoryListItemBorder: @colorBlue;
|
||||||
@folderHeaderBackground: white;
|
@folderHeaderBackground: white;
|
||||||
@folderHeaderColor: @colorBlack;
|
@folderHeaderColor: @colorBlack;
|
||||||
@folderIconColor: @colorBlue;
|
@folderIconColor: @colorBlue;
|
||||||
|
|
||||||
@entityBackgroundColor: white;
|
@entityBackgroundColor: white;
|
||||||
@entityNameColor: @colorBlack;
|
@entityNameColor: @colorBlack;
|
||||||
|
|
||||||
@sceneBorderColor: @colorBlue;
|
@sceneBorderColor: @colorBlue;
|
||||||
@sceneBackgroundColor: white;
|
@sceneBackgroundColor: white;
|
||||||
|
|
||||||
@playlistBackgroundColor: white;
|
@playlistBackgroundColor: white;
|
||||||
@playlistHeaderBorder: @colorBlue;
|
@playlistHeaderBorder: @colorBlue;
|
||||||
@playlistSoundColor: @colorBlack;
|
@playlistSoundColor: @colorBlack;
|
||||||
|
|
||||||
@compendiumEntityBackground: white;
|
@compendiumEntityBackground: white;
|
||||||
@compendiumStatusIcon: @colorLightGray;
|
@compendiumStatusIcon: @colorLightGray;
|
||||||
|
|
||||||
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
|
@foundryNavBgColor: rgba(@colorLightBlue, 0.4);
|
||||||
@foundryNavTextColor: white;
|
@foundryNavTextColor: white;
|
||||||
@foundryNavBorderColor: @colorBlue;
|
@foundryNavBorderColor: @colorBlue;
|
||||||
@foundryNavBgColorGM: @colorBlue;
|
@foundryNavBgColorGM: @colorBlue;
|
||||||
@foundryNavBorderColorGM: @colorPaleBlue;
|
@foundryNavBorderColorGM: @colorPaleBlue;
|
||||||
@foundryNavSceneLinkColor: white;
|
@foundryNavSceneLinkColor: white;
|
||||||
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
|
@foundryNavActiveBgColor: rgba(@colorRed, 0.6);
|
||||||
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
|
@foundryNavActiveBorderColor: lighten(@colorRed, 20);
|
||||||
@foundryNavActiveGlow: darken(@colorRed, 20);
|
@foundryNavActiveGlow: darken(@colorRed, 20);
|
||||||
@foundryNavContextShadow: darken(@colorBlue, 20);
|
@foundryNavContextShadow: darken(@colorBlue, 20);
|
||||||
@foundryNavContextBorderColor: @colorBlue;
|
@foundryNavContextBorderColor: @colorBlue;
|
||||||
|
|
||||||
@foundryPlayersArrowColor: @colorLightGray;
|
@foundryPlayersArrowColor: @colorLightGray;
|
||||||
|
|
||||||
@actorPanelBgColor: white;
|
@actorPanelBgColor: white;
|
||||||
@actorNameColor: @colorRed;
|
@actorNameColor: @colorRed;
|
||||||
@actorXPBarBorder: @colorGray;
|
@actorXPBarBorder: @colorGray;
|
||||||
@actorXPBarBackground: @colorPaleBlue;
|
@actorXPBarBackground: @colorPaleBlue;
|
||||||
@actorXPBarColor: @colorBlue;
|
@actorXPBarColor: @colorBlue;
|
||||||
@actorProficiencyTextColor: @colorGray;
|
@actorProficiencyTextColor: @colorGray;
|
||||||
@actorAttributeInputColor: @colorGray;
|
@actorAttributeInputColor: @colorGray;
|
||||||
@actorSeparatorColor: @colorLightGray;
|
@actorSeparatorColor: @colorLightGray;
|
||||||
@actorAttributeButtonBorder: @colorPaleGray;
|
@actorAttributeButtonBorder: @colorPaleGray;
|
||||||
@actorAttributeButtonBorderHover: @colorRed;
|
@actorAttributeButtonBorderHover: @colorRed;
|
||||||
@actorNavigationTabsColor: @colorGray;
|
@actorNavigationTabsColor: @colorGray;
|
||||||
@actorNavigationTabsActiveColor: @colorRed;
|
@actorNavigationTabsActiveColor: @colorRed;
|
||||||
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
|
@actorNavigationTabsHoverBgColor: rgba(@colorGray, 0.1);
|
||||||
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
|
@actorNavigationTabsActiveHoverBgColor: rgba(@colorRed, 0.1);
|
||||||
@actorFilterBorderColor: @colorLightGray;
|
@actorFilterBorderColor: @colorLightGray;
|
||||||
@actorFilterHoverColor: @colorRed;
|
@actorFilterHoverColor: @colorRed;
|
||||||
@actorFilterActiveColor: @colorRed;
|
@actorFilterActiveColor: @colorRed;
|
||||||
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
|
@actorGroupListHeaderBgColor: lighten(@colorPaleGray, 10);
|
||||||
@actorGroupListTitleBorderColor: @colorBlue;
|
@actorGroupListTitleBorderColor: @colorBlue;
|
||||||
@actorGroupListColumnBorderColor: @colorPaleGray;
|
@actorGroupListColumnBorderColor: @colorPaleGray;
|
||||||
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
|
@actorGroupListAltRowColor: lighten(@colorPaleGray, 10);
|
||||||
@actorItemRollableD20Color: @colorGray;
|
@actorItemRollableD20Color: @colorGray;
|
||||||
@actorItemRollableD20HoverColor: @colorRed;
|
@actorItemRollableD20HoverColor: @colorRed;
|
||||||
@actorItemControlToggleColor: @colorLightGray;
|
@actorItemControlToggleColor: @colorLightGray;
|
||||||
@actorAbilityScoreColor: @colorGray;
|
@actorAbilityScoreColor: @colorGray;
|
||||||
@actorAbilityBorderColor: @colorPaleGray;
|
@actorAbilityBorderColor: @colorPaleGray;
|
||||||
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
|
@actorSkillsAltRowColor: lighten(@colorPaleGray, 10);
|
||||||
@actorEncumbranceLabelBackground: @colorPaleGray;
|
@actorEncumbranceLabelBackground: @colorPaleGray;
|
||||||
@actorEncumbranceTextColor: @colorBlack;
|
@actorEncumbranceTextColor: @colorBlack;
|
||||||
@actorEncumbranceBorderColor: @colorBlack;
|
@actorEncumbranceBorderColor: @colorBlack;
|
||||||
@actorEncumbranceBarBgColor: @colorPaleBlue;
|
@actorEncumbranceBarBgColor: @colorPaleBlue;
|
||||||
@actorEncumbranceBarColor: @colorBlue;
|
@actorEncumbranceBarColor: @colorBlue;
|
File diff suppressed because it is too large
Load diff
|
@ -1,416 +1,416 @@
|
||||||
.panel {
|
.panel {
|
||||||
background: @actorPanelBgColor;
|
background: @actorPanelBgColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sw5e.sheet .window-content {
|
.sw5e.sheet .window-content {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
background: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);
|
background: linear-gradient(90deg,#afc6d6 0,#d6d6d6 30%,#d6d6d6 70%,#afc6d6);
|
||||||
input,
|
input,
|
||||||
select {
|
select {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: @inputBorderHover;
|
border-color: @inputBorderHover;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: @inputBorderFocus;
|
border-color: @inputBorderFocus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: @inputBorderFocus;
|
border-color: @inputBorderFocus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sw5e.sheet.actor {
|
.sw5e.sheet.actor {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
input, select, textarea {
|
input, select, textarea {
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: @inputBorderFocus;
|
border-color: @inputBorderFocus;
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: @inputBorderFocus;
|
border-color: @inputBorderFocus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.swalt-sheet {
|
.swalt-sheet {
|
||||||
section>h1 {
|
section>h1 {
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
|
|
||||||
h1.character-name {
|
h1.character-name {
|
||||||
color: @actorNameColor;
|
color: @actorNameColor;
|
||||||
|
|
||||||
input[type="text"] {
|
input[type="text"] {
|
||||||
color: @actorNameColor;
|
color: @actorNameColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.level-experience {
|
.level-experience {
|
||||||
|
|
||||||
.xpbar {
|
.xpbar {
|
||||||
border: 1px solid @actorXPBarBorder;
|
border: 1px solid @actorXPBarBorder;
|
||||||
background-color: @actorXPBarBackground;
|
background-color: @actorXPBarBackground;
|
||||||
|
|
||||||
.bar {
|
.bar {
|
||||||
background-color: @actorXPBarColor;
|
background-color: @actorXPBarColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary {
|
.summary {
|
||||||
|
|
||||||
input,
|
input,
|
||||||
.proficiency {
|
.proficiency {
|
||||||
color: @actorProficiencyTextColor;
|
color: @actorProficiencyTextColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.attributes {
|
.attributes {
|
||||||
|
|
||||||
.attribute-value,
|
.attribute-value,
|
||||||
.attribute-value input {
|
.attribute-value input {
|
||||||
color: @actorAttributeInputColor;
|
color: @actorAttributeInputColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.attribute-value {
|
.attribute-value {
|
||||||
|
|
||||||
.value-separator {
|
.value-separator {
|
||||||
color: @actorSeparatorColor;
|
color: @actorSeparatorColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
button {
|
button {
|
||||||
border: 1px solid @actorAttributeButtonBorder;
|
border: 1px solid @actorAttributeButtonBorder;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @actorAttributeButtonBorderHover;
|
color: @actorAttributeButtonBorderHover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.hit-points,
|
&.hit-points,
|
||||||
&.hit-dice,
|
&.hit-dice,
|
||||||
&.initiative {
|
&.initiative {
|
||||||
button {
|
button {
|
||||||
border: 1px solid @actorAttributeButtonBorder;
|
border: 1px solid @actorAttributeButtonBorder;
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: @actorAttributeButtonBorderHover;
|
border-color: @actorAttributeButtonBorderHover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nav.sheet-navigation {
|
nav.sheet-navigation {
|
||||||
.item {
|
.item {
|
||||||
color: @actorNavigationTabsColor;
|
color: @actorNavigationTabsColor;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: @actorNavigationTabsActiveColor;
|
color: @actorNavigationTabsActiveColor;
|
||||||
border-bottom-color: @actorNavigationTabsActiveColor;
|
border-bottom-color: @actorNavigationTabsActiveColor;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @actorNavigationTabsHoverBgColor;
|
background: @actorNavigationTabsHoverBgColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @actorNavigationTabsHoverBgColor;
|
background: @actorNavigationTabsHoverBgColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
|
|
||||||
.filter-list {
|
.filter-list {
|
||||||
|
|
||||||
.filter-item {
|
.filter-item {
|
||||||
border-bottom: 2px solid @actorFilterBorderColor;
|
border-bottom: 2px solid @actorFilterBorderColor;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @actorFilterHoverColor;
|
color: @actorFilterHoverColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: @actorFilterActiveColor;
|
color: @actorFilterActiveColor;
|
||||||
border-bottom-color: @actorFilterActiveColor;
|
border-bottom-color: @actorFilterActiveColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-list-header {
|
.group-list-header {
|
||||||
background: @actorGroupListHeaderBgColor;
|
background: @actorGroupListHeaderBgColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-list-title {
|
.group-list-title {
|
||||||
border-bottom: 1px solid @actorGroupListTitleBorderColor;
|
border-bottom: 1px solid @actorGroupListTitleBorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-list-header,
|
.group-list-header,
|
||||||
.group-list {
|
.group-list {
|
||||||
.item-detail {
|
.item-detail {
|
||||||
border-left: 1px solid @actorGroupListColumnBorderColor;
|
border-left: 1px solid @actorGroupListColumnBorderColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-list,
|
.group-list,
|
||||||
.group-list ol {
|
.group-list ol {
|
||||||
li.item {
|
li.item {
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background-color: @actorGroupListAltRowColor;
|
background-color: @actorGroupListAltRowColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.item-name {
|
.item-name {
|
||||||
|
|
||||||
.item-image {
|
.item-image {
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
color: @actorItemRollableD20Color;
|
color: @actorItemRollableD20Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
&.rollable:hover {
|
&.rollable:hover {
|
||||||
|
|
||||||
.item-image {
|
.item-image {
|
||||||
&:hover {
|
&:hover {
|
||||||
&::before {
|
&::before {
|
||||||
color: @actorItemRollableD20HoverColor;
|
color: @actorItemRollableD20HoverColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-control {
|
.item-control {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor !important;
|
color: @linkColor !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.item-toggle {
|
&.item-toggle {
|
||||||
color: @actorItemControlToggleColor;
|
color: @actorItemControlToggleColor;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tab.attributes {
|
.tab.attributes {
|
||||||
.abilities {
|
.abilities {
|
||||||
|
|
||||||
.scores {
|
.scores {
|
||||||
li {
|
li {
|
||||||
border: 1px solid @actorAbilityBorderColor;
|
border: 1px solid @actorAbilityBorderColor;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ability-score {
|
.ability-score {
|
||||||
color: @actorAbilityScoreColor;
|
color: @actorAbilityScoreColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ability-modifiers {
|
.ability-modifiers {
|
||||||
|
|
||||||
.ability-mod,
|
.ability-mod,
|
||||||
.ability-save {
|
.ability-save {
|
||||||
border-color: @actorAbilityBorderColor;
|
border-color: @actorAbilityBorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.skills {
|
.skills {
|
||||||
li {
|
li {
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background-color: @actorSkillsAltRowColor;
|
background-color: @actorSkillsAltRowColor;
|
||||||
}
|
}
|
||||||
.proficiency-toggle {
|
.proficiency-toggle {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skill-name {
|
.skill-name {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.traits-resources {
|
.traits-resources {
|
||||||
nav {
|
nav {
|
||||||
button {
|
button {
|
||||||
color: @actorNavigationTabsColor;
|
color: @actorNavigationTabsColor;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: @actorNavigationTabsActiveColor;
|
color: @actorNavigationTabsActiveColor;
|
||||||
border-bottom-color: @actorNavigationTabsActiveColor;
|
border-bottom-color: @actorNavigationTabsActiveColor;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @actorNavigationTabsActiveHoverBgColor;
|
background: @actorNavigationTabsActiveHoverBgColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @actorNavigationTabsHoverBgColor;
|
background: @actorNavigationTabsHoverBgColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
section.traits {
|
section.traits {
|
||||||
.trait-selector {
|
.trait-selector {
|
||||||
i.fas {
|
i.fas {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.languages {
|
.languages {
|
||||||
label {
|
label {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
section.resources {
|
section.resources {
|
||||||
.resource-items {
|
.resource-items {
|
||||||
.resource {
|
.resource {
|
||||||
h1 {
|
h1 {
|
||||||
|
|
||||||
input {
|
input {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.attribute-value,
|
.attribute-value,
|
||||||
.attribute-value input {
|
.attribute-value input {
|
||||||
color: @actorAttributeInputColor;
|
color: @actorAttributeInputColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.attribute-value {
|
.attribute-value {
|
||||||
.value-separator {
|
.value-separator {
|
||||||
color: @actorSeparatorColor;
|
color: @actorSeparatorColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.counters {
|
.counters {
|
||||||
.counter {
|
.counter {
|
||||||
h4 {
|
h4 {
|
||||||
&.rollable {
|
&.rollable {
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.death-success {
|
.death-success {
|
||||||
i {
|
i {
|
||||||
color: @colorGreen;
|
color: @colorGreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.death-fail {
|
.death-fail {
|
||||||
i {
|
i {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.inventory {
|
.tab.inventory {
|
||||||
.currency {
|
.currency {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.encumbrance-wrapper {
|
.encumbrance-wrapper {
|
||||||
.encumbrance-label {
|
.encumbrance-label {
|
||||||
background: @actorEncumbranceLabelBackground;
|
background: @actorEncumbranceLabelBackground;
|
||||||
color: @actorEncumbranceTextColor;
|
color: @actorEncumbranceTextColor;
|
||||||
border: 1px solid @actorEncumbranceBorderColor;
|
border: 1px solid @actorEncumbranceBorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.encumbrance {
|
.encumbrance {
|
||||||
background: @actorEncumbranceBarBgColor;
|
background: @actorEncumbranceBarBgColor;
|
||||||
.encumbrance-bar {
|
.encumbrance-bar {
|
||||||
background: @actorEncumbranceBarColor;
|
background: @actorEncumbranceBarColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tab.powerbook {
|
.tab.powerbook {
|
||||||
.powercasting-ability {
|
.powercasting-ability {
|
||||||
label,
|
label,
|
||||||
h3 {
|
h3 {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.notes {
|
.tab.notes {
|
||||||
section {
|
section {
|
||||||
&>input {
|
&>input {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.npc {
|
&.npc {
|
||||||
.swalt-sheet {
|
.swalt-sheet {
|
||||||
header {
|
header {
|
||||||
.experience {
|
.experience {
|
||||||
color: @actorProficiencyTextColor;
|
color: @actorProficiencyTextColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,105 +1,105 @@
|
||||||
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
|
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
&:hover {
|
&:hover {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
input[type=range] {
|
input[type=range] {
|
||||||
-webkit-appearance: none; /* Hides the slider so that custom slider can be made */
|
-webkit-appearance: none; /* Hides the slider so that custom slider can be made */
|
||||||
width: 100%; /* Specific width is required for Firefox. */
|
width: 100%; /* Specific width is required for Firefox. */
|
||||||
background: transparent; /* Otherwise white in Chrome */
|
background: transparent; /* Otherwise white in Chrome */
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=range]::-webkit-slider-thumb{
|
input[type=range]::-webkit-slider-thumb{
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
background: @colorRed;
|
background: @colorRed;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
border-radius: 32px;
|
border-radius: 32px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
input[type=range]::-moz-range-thumb{
|
input[type=range]::-moz-range-thumb{
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
background: @colorRed;
|
background: @colorRed;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
border-radius: 32px;
|
border-radius: 32px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
input[type=range]::-ms-thumb {
|
input[type=range]::-ms-thumb {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
background: @colorRed;
|
background: @colorRed;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
border-radius: 32px;
|
border-radius: 32px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=range]::-webkit-slider-runnable-track {
|
input[type=range]::-webkit-slider-runnable-track {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 6px;
|
height: 6px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background: @colorLightBlue;
|
background: @colorLightBlue;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid @colorBlue;
|
border: 1px solid @colorBlue;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
input[type=range]:focus::-webkit-slider-runnable-track {
|
input[type=range]:focus::-webkit-slider-runnable-track {
|
||||||
background: @colorBlue;
|
background: @colorBlue;
|
||||||
}
|
}
|
||||||
input[type=range]::-moz-range-track {
|
input[type=range]::-moz-range-track {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 6px;
|
height: 6px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background: @colorLightBlue;
|
background: @colorLightBlue;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid @colorBlue;
|
border: 1px solid @colorBlue;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
input[type=range]::-ms-track {
|
input[type=range]::-ms-track {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 6px;
|
height: 6px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background: @colorLightBlue;
|
background: @colorLightBlue;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid @colorBlue;
|
border: 1px solid @colorBlue;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
input[type=range]:focus {
|
input[type=range]:focus {
|
||||||
outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
|
outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=range]::-ms-track {
|
input[type=range]::-ms-track {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
/* Hides the slider so custom styles can be added */
|
/* Hides the slider so custom styles can be added */
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
button, input[type="button"], input[type="submit"], input[type="reset"] {
|
button, input[type="button"], input[type="submit"], input[type="reset"] {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
|
input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
|
||||||
border: 1px solid @inputBorderNormal;
|
border: 1px solid @inputBorderNormal;
|
||||||
color: @inputTextColor;
|
color: @inputTextColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: @inputBorderHover;
|
border-color: @inputBorderHover;
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: @inputBorderFocus;
|
border-color: @inputBorderFocus;
|
||||||
}
|
}
|
||||||
&::placeholder {
|
&::placeholder {
|
||||||
color: @inputTextColor;
|
color: @inputTextColor;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
::-ms-input-placeholder { /* Microsoft Edge */
|
::-ms-input-placeholder { /* Microsoft Edge */
|
||||||
color: @inputTextColor;
|
color: @inputTextColor;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button, input[type="button"], input[type="submit"], input[type="reset"] {
|
button, input[type="button"], input[type="submit"], input[type="reset"] {
|
||||||
background: @buttonBackground;
|
background: @buttonBackground;
|
||||||
color: @buttonTextColor;
|
color: @buttonTextColor;
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
background: @buttonHoverBackground;
|
background: @buttonHoverBackground;
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
background: @buttonBackground;
|
background: @buttonBackground;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
input[type="reset"], button.secondary, button[type="reset"], input[type="button"].secondary, input[type="submit"].secondary {
|
input[type="reset"], button.secondary, button[type="reset"], input[type="button"].secondary, input[type="submit"].secondary {
|
||||||
background: @buttonSecondaryBackground;
|
background: @buttonSecondaryBackground;
|
||||||
color: @buttonSecondaryTextColor;
|
color: @buttonSecondaryTextColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @buttonSecondaryHoverBackground;
|
background: @buttonSecondaryHoverBackground;
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
background: @buttonSecondaryBackground;
|
background: @buttonSecondaryBackground;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
form {
|
||||||
button {
|
button {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.notes, .hint {
|
.notes, .hint {
|
||||||
color: rgba(@bodyFontColor, 0.8);
|
color: rgba(@bodyFontColor, 0.8);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,76 +1,76 @@
|
||||||
.window-app {
|
.window-app {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: none;
|
border: none;
|
||||||
.dropShadow2();
|
.dropShadow2();
|
||||||
& > header {
|
& > header {
|
||||||
background: @windowHeaderBackground;
|
background: @windowHeaderBackground;
|
||||||
border-radius: 4px 4px 0 0;
|
border-radius: 4px 4px 0 0;
|
||||||
border: none;
|
border: none;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
.window-content {
|
.window-content {
|
||||||
background: @primaryBackground;
|
background: @primaryBackground;
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
footer {
|
footer {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.minimized {
|
&.minimized {
|
||||||
& > header, & > .window-header {
|
& > header, & > .window-header {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#client-settings {
|
#client-settings {
|
||||||
nav.tabs {
|
nav.tabs {
|
||||||
border: none;
|
border: none;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
a.item {
|
a.item {
|
||||||
border-bottom: 3px solid transparent;
|
border-bottom: 3px solid transparent;
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
&.active {
|
&.active {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
border-bottom-color: @sidebarTabLinkUnderline;
|
border-bottom-color: @sidebarTabLinkUnderline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
section.content {
|
section.content {
|
||||||
border: none;
|
border: none;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-buttons {
|
.dialog-buttons {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
button:last-child {
|
button:last-child {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
button:not(.default) {
|
button:not(.default) {
|
||||||
border: 1px solid @buttonBackground;
|
border: 1px solid @buttonBackground;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
background: @buttonSecondaryBackground;
|
background: @buttonSecondaryBackground;
|
||||||
color: @buttonSecondaryTextColor;
|
color: @buttonSecondaryTextColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @buttonSecondaryHoverBackground;
|
background: @buttonSecondaryHoverBackground;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
button.normal.default {
|
button.normal.default {
|
||||||
border: none;
|
border: none;
|
||||||
background: @buttonBackground;
|
background: @buttonBackground;
|
||||||
color: @buttonTextColor;
|
color: @buttonTextColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @buttonHoverBackground;
|
background: @buttonHoverBackground;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,84 +1,84 @@
|
||||||
#navigation {
|
#navigation {
|
||||||
#nav-toggle {
|
#nav-toggle {
|
||||||
background: @foundryNavBgColor;
|
background: @foundryNavBgColor;
|
||||||
color: @foundryNavTextColor;
|
color: @foundryNavTextColor;
|
||||||
|
|
||||||
transform: rotate(-90deg);
|
transform: rotate(-90deg);
|
||||||
|
|
||||||
}
|
}
|
||||||
.nav-item {
|
.nav-item {
|
||||||
border: 1px solid @foundryNavBorderColor;
|
border: 1px solid @foundryNavBorderColor;
|
||||||
}
|
}
|
||||||
#scene-list {
|
#scene-list {
|
||||||
.scene {
|
.scene {
|
||||||
border: 1px solid @foundryNavBorderColor;
|
border: 1px solid @foundryNavBorderColor;
|
||||||
background: rgba(@foundryNavBgColor, 0.4);
|
background: rgba(@foundryNavBgColor, 0.4);
|
||||||
a {
|
a {
|
||||||
color: @foundryNavSceneLinkColor;
|
color: @foundryNavSceneLinkColor;
|
||||||
}
|
}
|
||||||
&.gm {
|
&.gm {
|
||||||
border: 1px solid @foundryNavBorderColorGM;
|
border: 1px solid @foundryNavBorderColorGM;
|
||||||
background: rgba(@foundryNavBgColorGM, 0.4);
|
background: rgba(@foundryNavBgColorGM, 0.4);
|
||||||
}
|
}
|
||||||
&.view, &.context {
|
&.view, &.context {
|
||||||
box-shadow: 0 0 8px @foundryNavContextShadow;
|
box-shadow: 0 0 8px @foundryNavContextShadow;
|
||||||
border-color: @foundryNavContextBorderColor;
|
border-color: @foundryNavContextBorderColor;
|
||||||
}
|
}
|
||||||
&.active {
|
&.active {
|
||||||
border-color: @foundryNavActiveBorderColor;
|
border-color: @foundryNavActiveBorderColor;
|
||||||
background: @foundryNavActiveBgColor;
|
background: @foundryNavActiveBgColor;
|
||||||
box-shadow: 0 0 8px @foundryNavActiveGlow;
|
box-shadow: 0 0 8px @foundryNavActiveGlow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#controls {
|
#controls {
|
||||||
.scene-control, .control-tool {
|
.scene-control, .control-tool {
|
||||||
background: @foundryNavBgColor;
|
background: @foundryNavBgColor;
|
||||||
color: @foundryNavTextColor;
|
color: @foundryNavTextColor;
|
||||||
border: 1px solid @foundryNavBorderColor;
|
border: 1px solid @foundryNavBorderColor;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @foundryNavBgColor;
|
background: @foundryNavBgColor;
|
||||||
box-shadow: 0 0 8px @foundryNavContextShadow;
|
box-shadow: 0 0 8px @foundryNavContextShadow;
|
||||||
}
|
}
|
||||||
&.active {
|
&.active {
|
||||||
border-color: @foundryNavActiveBorderColor;
|
border-color: @foundryNavActiveBorderColor;
|
||||||
background: @foundryNavActiveBgColor;
|
background: @foundryNavActiveBgColor;
|
||||||
box-shadow: 0 0 8px @foundryNavActiveGlow;
|
box-shadow: 0 0 8px @foundryNavActiveGlow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#players {
|
#players {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
h3 {
|
h3 {
|
||||||
background: @sidebarTabBackground;
|
background: @sidebarTabBackground;
|
||||||
border: none;
|
border: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
border-radius: 4px 4px 0 0;
|
border-radius: 4px 4px 0 0;
|
||||||
.players-mode {
|
.players-mode {
|
||||||
color: @foundryPlayersArrowColor;
|
color: @foundryPlayersArrowColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ol {
|
ol {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
.player-name.self {
|
.player-name.self {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
.player {
|
.player {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
.player-active {
|
.player-active {
|
||||||
margin-top: 7px;
|
margin-top: 7px;
|
||||||
&.active {
|
&.active {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,382 +1,382 @@
|
||||||
#sidebar {
|
#sidebar {
|
||||||
border: none; //1px solid @colorBlue;
|
border: none; //1px solid @colorBlue;
|
||||||
&.collapsed {
|
&.collapsed {
|
||||||
#sidebar-tabs {
|
#sidebar-tabs {
|
||||||
min-height: 370px;
|
min-height: 370px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
& > .item.active {
|
& > .item.active {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs {
|
#sidebar-tabs {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
.item.active {
|
.item.active {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
background: none;
|
background: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Chat Tab
|
** Chat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
|
|
||||||
#chat-log {
|
#chat-log {
|
||||||
.chat-message {
|
.chat-message {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
& > header {
|
& > header {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
span {
|
span {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.notification-pip {
|
.notification-pip {
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sw5e.chat-card,
|
.sw5e.chat-card,
|
||||||
.midi-qol-item-card {
|
.midi-qol-item-card {
|
||||||
.card-header {
|
.card-header {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
border: none;
|
||||||
img {
|
img {
|
||||||
flex: 0 0 36px;
|
flex: 0 0 36px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
.russoOne(17px);
|
.russoOne(17px);
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
&:hover {
|
&:hover {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-content {
|
.card-content {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
> * {
|
> * {
|
||||||
-webkit-user-select: text;
|
-webkit-user-select: text;
|
||||||
-moz-user-select: text;
|
-moz-user-select: text;
|
||||||
-ms-user-select: text;
|
-ms-user-select: text;
|
||||||
user-select: text;
|
user-select: text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-buttons {
|
.card-buttons {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
height: auto;
|
height: auto;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-footer {
|
.card-footer {
|
||||||
padding: 4px 0 0;
|
padding: 4px 0 0;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
padding: 0 4px 0 0;
|
padding: 0 4px 0 0;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dice-roll {
|
.dice-roll {
|
||||||
.dice-formula {
|
.dice-formula {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.dice-total {
|
.dice-total {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#chat-controls {
|
#chat-controls {
|
||||||
padding-top: 4px;
|
padding-top: 4px;
|
||||||
}
|
}
|
||||||
#chat-form textarea {
|
#chat-form textarea {
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Combat Tab
|
** Combat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
#combat {
|
#combat {
|
||||||
h3 {
|
h3 {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#combat-tracker {
|
#combat-tracker {
|
||||||
li.combatant {
|
li.combatant {
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
background: none;
|
background: none;
|
||||||
.token-name {
|
.token-name {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
.roll {
|
.roll {
|
||||||
background: none;
|
background: none;
|
||||||
&::before {
|
&::before {
|
||||||
content: "\f6cf";
|
content: "\f6cf";
|
||||||
.fontAwesome();
|
.fontAwesome();
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.initiative {
|
.initiative {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.hidden {
|
&.hidden {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#combat-controls {
|
#combat-controls {
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Folders
|
** Folders
|
||||||
*/
|
*/
|
||||||
.sidebar-tab {
|
.sidebar-tab {
|
||||||
.directory-header {
|
.directory-header {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
.header-search {
|
.header-search {
|
||||||
position: relative;
|
position: relative;
|
||||||
i.fa-search {
|
i.fa-search {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 8px;
|
left: 8px;
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-left: 22px;
|
padding-left: 22px;
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.subdirectory {
|
.subdirectory {
|
||||||
border: none;
|
border: none;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
min-height: 8px;
|
min-height: 8px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.directory-list {
|
.directory-list {
|
||||||
padding-bottom: 4px;
|
padding-bottom: 4px;
|
||||||
.folder {
|
.folder {
|
||||||
& > .folder-header {
|
& > .folder-header {
|
||||||
line-height: default;
|
line-height: default;
|
||||||
padding: 0 0 0 8px;
|
padding: 0 0 0 8px;
|
||||||
position: relative;
|
position: relative;
|
||||||
border: none;
|
border: none;
|
||||||
h3 {
|
h3 {
|
||||||
padding: 8px 4px;
|
padding: 8px 4px;
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
& > i {
|
& > i {
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
i {
|
i {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.create-folder {
|
&.create-folder {
|
||||||
right: 28px;
|
right: 28px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.directory-item img {
|
.directory-item img {
|
||||||
flex: 0 0 32px;
|
flex: 0 0 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
}
|
}
|
||||||
.actor, .item, .journal, .table {
|
.actor, .item, .journal, .table {
|
||||||
border: none;
|
border: none;
|
||||||
.entity-name {
|
.entity-name {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#scenes {
|
#scenes {
|
||||||
.subdirectory {
|
.subdirectory {
|
||||||
border-left: none;
|
border-left: none;
|
||||||
}
|
}
|
||||||
.scene {
|
.scene {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
& + .scene {
|
& + .scene {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
&::after {
|
&::after {
|
||||||
content: '';
|
content: '';
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 99px;
|
height: 99px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 28px;
|
top: 28px;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
padding: 4px 4px 4px 12px;
|
padding: 4px 4px 4px 12px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#playlists {
|
#playlists {
|
||||||
.directory-list {
|
.directory-list {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
li.playlist {
|
li.playlist {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
border-top: inherit;
|
border-top: inherit;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
.playlist-header {
|
.playlist-header {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
li.sound {
|
li.sound {
|
||||||
border: none;
|
border: none;
|
||||||
h4 {
|
h4 {
|
||||||
.openSans(13px, 400);
|
.openSans(13px, 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#compendium {
|
#compendium {
|
||||||
.compendium-entity {
|
.compendium-entity {
|
||||||
margin: 0 4px;
|
margin: 0 4px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: none;
|
border: none;
|
||||||
&+ .compendium-entity {
|
&+ .compendium-entity {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
.russoOne(17px);
|
.russoOne(17px);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
ol.compendium-list {
|
ol.compendium-list {
|
||||||
li.compendium-pack {
|
li.compendium-pack {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border: none;
|
border: none;
|
||||||
.pack-title {
|
.pack-title {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
a {
|
a {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
i {
|
i {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.status-icons {
|
.status-icons {
|
||||||
top: 4px;
|
top: 4px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings {
|
#settings {
|
||||||
h2 {
|
h2 {
|
||||||
border: none;
|
border: none;
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
#game-details, #settings-game, #settings-documentation, #settings-access {
|
#game-details, #settings-game, #settings-documentation, #settings-access {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,297 +1,297 @@
|
||||||
#sidebar-tabs {
|
#sidebar-tabs {
|
||||||
background: @sidebarTabBackground;
|
background: @sidebarTabBackground;
|
||||||
& > .collapse {
|
& > .collapse {
|
||||||
color: @sidebarTabLinkColor;
|
color: @sidebarTabLinkColor;
|
||||||
}
|
}
|
||||||
.item.active {
|
.item.active {
|
||||||
color: @sidebarTabLinkColor;
|
color: @sidebarTabLinkColor;
|
||||||
border-bottom: 3px solid @sidebarTabLinkUnderline;
|
border-bottom: 3px solid @sidebarTabLinkUnderline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Chat Tab
|
** Chat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
|
|
||||||
#chat-log {
|
#chat-log {
|
||||||
.chat-message {
|
.chat-message {
|
||||||
background: @chatBackground;
|
background: @chatBackground;
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
& > header {
|
& > header {
|
||||||
color: @chatHeaderColor;
|
color: @chatHeaderColor;
|
||||||
border-bottom: 2px solid @chatHeaderBottomBorderColor;
|
border-bottom: 2px solid @chatHeaderBottomBorderColor;
|
||||||
span {
|
span {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.notification-pip {
|
.notification-pip {
|
||||||
color: @chatNotificationColor;
|
color: @chatNotificationColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sw5e.chat-card,
|
.sw5e.chat-card,
|
||||||
.midi-qol-item-card {
|
.midi-qol-item-card {
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
h3 {
|
h3 {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.card-buttons {
|
.card-buttons {
|
||||||
span {
|
span {
|
||||||
border: 1px solid @cardButtonBorder;
|
border: 1px solid @cardButtonBorder;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-footer {
|
.card-footer {
|
||||||
border-top: 1px solid @cardFooterBorder;
|
border-top: 1px solid @cardFooterBorder;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
border-right: 1px solid @cardFooterSeparator;
|
border-right: 1px solid @cardFooterSeparator;
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dice-roll {
|
.dice-roll {
|
||||||
|
|
||||||
.dice-formula {
|
.dice-formula {
|
||||||
background: @diceFormulaBackground;
|
background: @diceFormulaBackground;
|
||||||
color: @diceFormualColor;
|
color: @diceFormualColor;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dice-total {
|
.dice-total {
|
||||||
background: @diceTotalBackground;
|
background: @diceTotalBackground;
|
||||||
border: 1px solid @diceTotalBorder;
|
border: 1px solid @diceTotalBorder;
|
||||||
box-shadow: 0 0 12px rgba(@diceTotalShadow,.8);
|
box-shadow: 0 0 12px rgba(@diceTotalShadow,.8);
|
||||||
&.success {
|
&.success {
|
||||||
color: @diceSuccessColor;
|
color: @diceSuccessColor;
|
||||||
}
|
}
|
||||||
&.failure {
|
&.failure {
|
||||||
color: @diceFailureColor;
|
color: @diceFailureColor;
|
||||||
}
|
}
|
||||||
&.critical {
|
&.critical {
|
||||||
color: @diceCriticalColor;
|
color: @diceCriticalColor;
|
||||||
background: @diceCriticalBackground;
|
background: @diceCriticalBackground;
|
||||||
box-shadow: 0 0 12px rgba(@diceCriticalColor,.5);
|
box-shadow: 0 0 12px rgba(@diceCriticalColor,.5);
|
||||||
}
|
}
|
||||||
&.fumble {
|
&.fumble {
|
||||||
color: @diceFumbleColor;
|
color: @diceFumbleColor;
|
||||||
background: @diceFumbleBackground;
|
background: @diceFumbleBackground;
|
||||||
box-shadow: 0 0 12px rgba(@diceFumbleColor,.5);
|
box-shadow: 0 0 12px rgba(@diceFumbleColor,.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#chat-controls {
|
#chat-controls {
|
||||||
.roll-type-select {
|
.roll-type-select {
|
||||||
background: #4f4f4f;
|
background: #4f4f4f;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
label {
|
label {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#chat-form textarea {
|
#chat-form textarea {
|
||||||
background: #4f4f4f;
|
background: #4f4f4f;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Combat Tab
|
** Combat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
#combat {
|
#combat {
|
||||||
#combat-round {
|
#combat-round {
|
||||||
color: @combatRoundColor;
|
color: @combatRoundColor;
|
||||||
border-bottom: 2px solid @combatRoundColor;
|
border-bottom: 2px solid @combatRoundColor;
|
||||||
.encounters {
|
.encounters {
|
||||||
h4 {
|
h4 {
|
||||||
color: @combatRoundColor;
|
color: @combatRoundColor;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: @linkSecondaryColor;
|
color: @linkSecondaryColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#combat-tracker {
|
#combat-tracker {
|
||||||
//padding-top: 4px;
|
//padding-top: 4px;
|
||||||
li.combatant {
|
li.combatant {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@altRowBackground, 0.5);
|
background: rgba(@altRowBackground, 0.5);
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
color: @bodyFontColor
|
color: @bodyFontColor
|
||||||
}
|
}
|
||||||
.roll {
|
.roll {
|
||||||
color: @linkSecondaryColor;
|
color: @linkSecondaryColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.combatant-control {
|
.combatant-control {
|
||||||
color: @combatCombatantControlColor;
|
color: @combatCombatantControlColor;
|
||||||
&.active {
|
&.active {
|
||||||
color: @combatCombatantControlColorActive;
|
color: @combatCombatantControlColorActive;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.token-resource {
|
.token-resource {
|
||||||
color: @combatTokenResourceColor;
|
color: @combatTokenResourceColor;
|
||||||
border-right: 1px solid @combatTokenResouceBorder;
|
border-right: 1px solid @combatTokenResouceBorder;
|
||||||
}
|
}
|
||||||
&.active {
|
&.active {
|
||||||
color: @combatActiveCombatantColor;
|
color: @combatActiveCombatantColor;
|
||||||
.initiative, h4 {
|
.initiative, h4 {
|
||||||
color: @combatActiveCombatantColor;
|
color: @combatActiveCombatantColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.hidden {
|
&.hidden {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#combat-controls {
|
#combat-controls {
|
||||||
border-top: 1px solid @combatControlsBorder;
|
border-top: 1px solid @combatControlsBorder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Folders
|
** Folders
|
||||||
*/
|
*/
|
||||||
.sidebar-tab {
|
.sidebar-tab {
|
||||||
.directory-header {
|
.directory-header {
|
||||||
.header-search {
|
.header-search {
|
||||||
i.fa-search {
|
i.fa-search {
|
||||||
color: @folderSearchIconColor;
|
color: @folderSearchIconColor;
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
background: @inputBackgroundColor;
|
background: @inputBackgroundColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.subdirectory {
|
.subdirectory {
|
||||||
background: @folderSubdirectoryBackground;
|
background: @folderSubdirectoryBackground;
|
||||||
.folder {
|
.folder {
|
||||||
border-left: 2px solid rgba(@folderSubdirectoryBorder, 0.4);
|
border-left: 2px solid rgba(@folderSubdirectoryBorder, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.directory-list {
|
.directory-list {
|
||||||
li + li {
|
li + li {
|
||||||
border-top: 1px solid @directoryListItemBorder;
|
border-top: 1px solid @directoryListItemBorder;
|
||||||
}
|
}
|
||||||
.folder {
|
.folder {
|
||||||
& > .folder-header {
|
& > .folder-header {
|
||||||
background: @folderHeaderBackground;
|
background: @folderHeaderBackground;
|
||||||
h3 {
|
h3 {
|
||||||
background: @folderHeaderBackground;
|
background: @folderHeaderBackground;
|
||||||
color: @folderHeaderColor;
|
color: @folderHeaderColor;
|
||||||
& > i {
|
& > i {
|
||||||
color: @folderIconColor;
|
color: @folderIconColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: @linkSecondaryColor;
|
color: @linkSecondaryColor;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.collapsed > .folder-header {
|
&.collapsed > .folder-header {
|
||||||
background: @folderHeaderBackground;
|
background: @folderHeaderBackground;
|
||||||
}
|
}
|
||||||
& + .entity {
|
& + .entity {
|
||||||
border-top: 1px solid @directoryListItemBorder;
|
border-top: 1px solid @directoryListItemBorder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.actor, .item, .journal, .table {
|
.actor, .item, .journal, .table {
|
||||||
background: @entityBackgroundColor;
|
background: @entityBackgroundColor;
|
||||||
.entity-name {
|
.entity-name {
|
||||||
color: @entityNameColor;
|
color: @entityNameColor;
|
||||||
}
|
}
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@altRowBackground, 0.3);
|
background: rgba(@altRowBackground, 0.3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#scenes {
|
#scenes {
|
||||||
.scene {
|
.scene {
|
||||||
border-top: 1px solid @sceneBorderColor;
|
border-top: 1px solid @sceneBorderColor;
|
||||||
border-left: 4px solid @sceneBorderColor;
|
border-left: 4px solid @sceneBorderColor;
|
||||||
&::after {
|
&::after {
|
||||||
box-shadow: 0 0 20px @sceneBorderColor inset;
|
box-shadow: 0 0 20px @sceneBorderColor inset;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
background: @sceneBackgroundColor;
|
background: @sceneBackgroundColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#playlists {
|
#playlists {
|
||||||
.directory-list {
|
.directory-list {
|
||||||
li.playlist {
|
li.playlist {
|
||||||
background: @playlistBackgroundColor;
|
background: @playlistBackgroundColor;
|
||||||
.playlist-header {
|
.playlist-header {
|
||||||
background: @playlistBackgroundColor;
|
background: @playlistBackgroundColor;
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border-bottom: 2px solid @playlistHeaderBorder;
|
border-bottom: 2px solid @playlistHeaderBorder;
|
||||||
}
|
}
|
||||||
li.sound {
|
li.sound {
|
||||||
color: @playlistSoundColor;
|
color: @playlistSoundColor;
|
||||||
|
|
||||||
}
|
}
|
||||||
a.sound-control {
|
a.sound-control {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#compendium {
|
#compendium {
|
||||||
.compendium-entity {
|
.compendium-entity {
|
||||||
background: @compendiumEntityBackground !important;
|
background: @compendiumEntityBackground !important;
|
||||||
h3 {
|
h3 {
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
ol.compendium-list {
|
ol.compendium-list {
|
||||||
li.compendium-pack {
|
li.compendium-pack {
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@altRowBackground, 0.3);
|
background: rgba(@altRowBackground, 0.3);
|
||||||
}
|
}
|
||||||
.pack-title {
|
.pack-title {
|
||||||
.status-icons {
|
.status-icons {
|
||||||
color: @compendiumStatusIcon;
|
color: @compendiumStatusIcon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
footer.compendium-footer {
|
footer.compendium-footer {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings {
|
#settings {
|
||||||
h2 {
|
h2 {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
#game-details, #settings-game, #settings-documentation, #settings-access {
|
#game-details, #settings-game, #settings-documentation, #settings-access {
|
||||||
color: @bodyFontColor;
|
color: @bodyFontColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,500 +1,500 @@
|
||||||
#sidebar {
|
#sidebar {
|
||||||
border: none; //1px solid @colorBlue;
|
border: none; //1px solid @colorBlue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs {
|
#sidebar-tabs {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
background: white;
|
background: white;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
& > .collapse {
|
& > .collapse {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
.item {
|
.item {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
.item.active {
|
.item.active {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 3px solid @colorRed;
|
border-bottom: 3px solid @colorRed;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
background: none;
|
background: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Chat Tab
|
** Chat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
|
|
||||||
#chat-log {
|
#chat-log {
|
||||||
.chat-message {
|
.chat-message {
|
||||||
background: white;
|
background: white;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
& > header {
|
& > header {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
span {
|
span {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.notification-pip {
|
.notification-pip {
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sw5e.chat-card,
|
.sw5e.chat-card,
|
||||||
.midi-qol-item-card {
|
.midi-qol-item-card {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
flex: 0 0 36px;
|
flex: 0 0 36px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
.russoOne(17px);
|
.russoOne(17px);
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-content {
|
.card-content {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
> * {
|
> * {
|
||||||
-webkit-user-select: text;
|
-webkit-user-select: text;
|
||||||
-moz-user-select: text;
|
-moz-user-select: text;
|
||||||
-ms-user-select: text;
|
-ms-user-select: text;
|
||||||
user-select: text;
|
user-select: text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-buttons {
|
.card-buttons {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 1px solid @colorLightGray;
|
border: 1px solid @colorLightGray;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
height: auto;
|
height: auto;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
background: @colorRed;
|
background: @colorRed;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
background-color: lighten(@colorRed, 5);
|
background-color: lighten(@colorRed, 5);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-footer {
|
.card-footer {
|
||||||
padding: 4px 0 0;
|
padding: 4px 0 0;
|
||||||
border-top: 1px solid @colorLightBlue;
|
border-top: 1px solid @colorLightBlue;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
border-right: 2px groove #FFF;
|
border-right: 2px groove #FFF;
|
||||||
padding: 0 4px 0 0;
|
padding: 0 4px 0 0;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dice-roll {
|
.dice-roll {
|
||||||
|
|
||||||
.dice-formula {
|
.dice-formula {
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.dice-total {
|
.dice-total {
|
||||||
background: @colorPaleBlue;
|
background: @colorPaleBlue;
|
||||||
border: 1px solid @colorBlue;
|
border: 1px solid @colorBlue;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
box-shadow: 0 0 12px rgba(@colorBlue,.5);
|
box-shadow: 0 0 12px rgba(@colorBlue,.5);
|
||||||
&.success {
|
&.success {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
background: #c7d0c0;
|
background: #c7d0c0;
|
||||||
border: 1px solid #006c00;
|
border: 1px solid #006c00;
|
||||||
}
|
}
|
||||||
&.failure {
|
&.failure {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
background: #ffdddd;
|
background: #ffdddd;
|
||||||
border: 1px solid #6e0000;
|
border: 1px solid #6e0000;
|
||||||
}
|
}
|
||||||
&.critical {
|
&.critical {
|
||||||
color: @colorGreen;
|
color: @colorGreen;
|
||||||
background: @colorPaleGreen;
|
background: @colorPaleGreen;
|
||||||
box-shadow: 0 0 12px rgba(@colorGreen,.5);
|
box-shadow: 0 0 12px rgba(@colorGreen,.5);
|
||||||
}
|
}
|
||||||
&.fumble {
|
&.fumble {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#chat-controls {
|
#chat-controls {
|
||||||
&.roll-type-select {
|
&.roll-type-select {
|
||||||
background: #4f4f4f;
|
background: #4f4f4f;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
padding-top: 4px;
|
padding-top: 4px;
|
||||||
label {
|
label {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#chat-form textarea {
|
#chat-form textarea {
|
||||||
background: #4f4f4f;
|
background: #4f4f4f;
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
** Combat Tab
|
** Combat Tab
|
||||||
-----------*/
|
-----------*/
|
||||||
#combat {
|
#combat {
|
||||||
#combat-round {
|
#combat-round {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
.encounters {
|
.encounters {
|
||||||
h4 {
|
h4 {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: @colorGray;
|
color: @colorGray;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#combat-tracker {
|
#combat-tracker {
|
||||||
//padding-top: 4px;
|
//padding-top: 4px;
|
||||||
li.combatant {
|
li.combatant {
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
background: none;
|
background: none;
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@colorPaleBlue, 0.5);
|
background: rgba(@colorPaleBlue, 0.5);
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
.roll {
|
.roll {
|
||||||
background: none;
|
background: none;
|
||||||
color: @colorGray;
|
color: @colorGray;
|
||||||
&::before {
|
&::before {
|
||||||
content: "\f6cf";
|
content: "\f6cf";
|
||||||
.fontAwesome();
|
.fontAwesome();
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
}
|
}
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.combatant-control {
|
.combatant-control {
|
||||||
color: @colorLightGray;
|
color: @colorLightGray;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
&.active {
|
&.active {
|
||||||
color: @colorDarkGray;
|
color: @colorDarkGray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.token-resource {
|
.token-resource {
|
||||||
color: @colorGray;
|
color: @colorGray;
|
||||||
border-right: 1px solid @colorLightGray;
|
border-right: 1px solid @colorLightGray;
|
||||||
}
|
}
|
||||||
.initiative {
|
.initiative {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
&.active {
|
&.active {
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
.initiative, h4 {
|
.initiative, h4 {
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.hidden {
|
&.hidden {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#combat-controls {
|
#combat-controls {
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
border-top: 1px solid @colorBlue;
|
border-top: 1px solid @colorBlue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Folders
|
** Folders
|
||||||
*/
|
*/
|
||||||
.sidebar-tab {
|
.sidebar-tab {
|
||||||
.directory-header {
|
.directory-header {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
.header-search {
|
.header-search {
|
||||||
position: relative;
|
position: relative;
|
||||||
i.fa-search {
|
i.fa-search {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 8px;
|
left: 8px;
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-left: 22px;
|
padding-left: 22px;
|
||||||
background: white;
|
background: white;
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.subdirectory {
|
.subdirectory {
|
||||||
border: none;
|
border: none;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
background: white;
|
background: white;
|
||||||
min-height: 8px;
|
min-height: 8px;
|
||||||
.folder {
|
.folder {
|
||||||
border-left: 2px solid rgba(@colorBlack, 0.4);
|
border-left: 2px solid rgba(@colorBlack, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.directory-list {
|
.directory-list {
|
||||||
padding-bottom: 4px;
|
padding-bottom: 4px;
|
||||||
li + li {
|
li + li {
|
||||||
border-top: 1px solid @colorBlue;
|
border-top: 1px solid @colorBlue;
|
||||||
}
|
}
|
||||||
.folder {
|
.folder {
|
||||||
& > .folder-header {
|
& > .folder-header {
|
||||||
line-height: default;
|
line-height: default;
|
||||||
padding: 0 0 0 8px;
|
padding: 0 0 0 8px;
|
||||||
position: relative;
|
position: relative;
|
||||||
border: none;
|
border: none;
|
||||||
background: white;
|
background: white;
|
||||||
h3 {
|
h3 {
|
||||||
padding: 8px 4px;
|
padding: 8px 4px;
|
||||||
background: white;
|
background: white;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
& > i {
|
& > i {
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
color: @colorLightGray;
|
color: @colorLightGray;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
i {
|
i {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.create-folder {
|
&.create-folder {
|
||||||
right: 28px;
|
right: 28px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.collapsed > .folder-header {
|
&.collapsed > .folder-header {
|
||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
& + .entity {
|
& + .entity {
|
||||||
border-top: 1px solid @colorBlue;
|
border-top: 1px solid @colorBlue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.directory-item img {
|
.directory-item img {
|
||||||
flex: 0 0 32px;
|
flex: 0 0 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
}
|
}
|
||||||
.actor, .item, .journal, .table {
|
.actor, .item, .journal, .table {
|
||||||
background: white;
|
background: white;
|
||||||
border: none;
|
border: none;
|
||||||
.entity-name {
|
.entity-name {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@colorPaleBlue, 0.3);
|
background: rgba(@colorPaleBlue, 0.3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#scenes {
|
#scenes {
|
||||||
.subdirectory {
|
.subdirectory {
|
||||||
border-left: none;
|
border-left: none;
|
||||||
}
|
}
|
||||||
.scene {
|
.scene {
|
||||||
border: none;
|
border: none;
|
||||||
border-top: 1px solid @colorBlue;
|
border-top: 1px solid @colorBlue;
|
||||||
border-left: 4px solid @colorBlue;
|
border-left: 4px solid @colorBlue;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
//margin-bottom: 4px;
|
//margin-bottom: 4px;
|
||||||
& + .scene {
|
& + .scene {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
&::after {
|
&::after {
|
||||||
content: '';
|
content: '';
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 99px;
|
height: 99px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 28px;
|
top: 28px;
|
||||||
left: 0;
|
left: 0;
|
||||||
box-shadow: 0 0 20px @colorBlue inset;
|
box-shadow: 0 0 20px @colorBlue inset;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
padding: 4px 4px 4px 12px;
|
padding: 4px 4px 4px 12px;
|
||||||
background: white;
|
background: white;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#playlists {
|
#playlists {
|
||||||
.directory-list {
|
.directory-list {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
li.playlist {
|
li.playlist {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: white;
|
background: white;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
border-top: inherit;
|
border-top: inherit;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
.playlist-header {
|
.playlist-header {
|
||||||
background: white;
|
background: white;
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
}
|
}
|
||||||
li.sound {
|
li.sound {
|
||||||
border: none;
|
border: none;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
h4 {
|
h4 {
|
||||||
.openSans(13px, 400);
|
.openSans(13px, 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
a.sound-control {
|
a.sound-control {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#compendium {
|
#compendium {
|
||||||
.compendium-entity {
|
.compendium-entity {
|
||||||
margin: 0 4px;
|
margin: 0 4px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
background: white !important;
|
background: white !important;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: none;
|
border: none;
|
||||||
&+ .compendium-entity {
|
&+ .compendium-entity {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
border: none;
|
border: none;
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
.russoOne(17px);
|
.russoOne(17px);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
ol.compendium-list {
|
ol.compendium-list {
|
||||||
li.compendium-pack {
|
li.compendium-pack {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border: none;
|
border: none;
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background: rgba(@colorPaleBlue, 0.3);
|
background: rgba(@colorPaleBlue, 0.3);
|
||||||
}
|
}
|
||||||
.pack-title {
|
.pack-title {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
a {
|
a {
|
||||||
.openSans(13px, 700);
|
.openSans(13px, 700);
|
||||||
i {
|
i {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.status-icons {
|
.status-icons {
|
||||||
top: 4px;
|
top: 4px;
|
||||||
color: @colorLightGray;
|
color: @colorLightGray;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
footer.compendium-footer {
|
footer.compendium-footer {
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings {
|
#settings {
|
||||||
h2 {
|
h2 {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: 2px solid @colorBlue;
|
border-bottom: 2px solid @colorBlue;
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
#game-details, #settings-game, #settings-documentation, #settings-access {
|
#game-details, #settings-game, #settings-documentation, #settings-access {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,47 +1,47 @@
|
||||||
@import "_variables.less";
|
@import "_variables.less";
|
||||||
@import "_variables-dark.less";
|
@import "_variables-dark.less";
|
||||||
|
|
||||||
body.dark-theme {
|
body.dark-theme {
|
||||||
.app {
|
.app {
|
||||||
background: @primaryBackground;
|
background: @primaryBackground;
|
||||||
}
|
}
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
h3,
|
h3,
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:active {
|
&:active {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
background-color: @blockquoteBackground;
|
background-color: @blockquoteBackground;
|
||||||
border: 1px solid @blockquoteBorder;
|
border: 1px solid @blockquoteBorder;
|
||||||
box-shadow: @blockquoteShadow;
|
box-shadow: @blockquoteShadow;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
border-width: 0 0 1px 0;
|
border-width: 0 0 1px 0;
|
||||||
border-bottom: 1px solid @hrColor;
|
border-bottom: 1px solid @hrColor;
|
||||||
}
|
}
|
||||||
@import "components/forms-themes.less";
|
@import "components/forms-themes.less";
|
||||||
@import "components/sidebar-themes.less";
|
@import "components/sidebar-themes.less";
|
||||||
@import "components/foundry-nav-themes.less";
|
@import "components/foundry-nav-themes.less";
|
||||||
@import "components/foundry-app-window-themes.less";
|
@import "components/foundry-app-window-themes.less";
|
||||||
@import "components/actor-themes.less";
|
@import "components/actor-themes.less";
|
||||||
}
|
}
|
|
@ -1,194 +1,194 @@
|
||||||
/* open-sans-regular - latin */
|
/* open-sans-regular - latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/OpenSans-Regular.ttf');
|
src: url('./fonts/OpenSans-Regular.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/OpenSans-Italic.ttf');
|
src: url('./fonts/OpenSans-Italic.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./fonts/OpenSans-Bold.ttf');
|
src: url('./fonts/OpenSans-Bold.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Open Sans';
|
font-family: 'Open Sans';
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./fonts/OpenSans-BoldItalic.ttf');
|
src: url('./fonts/OpenSans-BoldItalic.ttf');
|
||||||
}
|
}
|
||||||
/* russo-one-regular - latin */
|
/* russo-one-regular - latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Russo One';
|
font-family: 'Russo One';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/RussoOne.ttf');
|
src: url('./fonts/RussoOne.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Russo One';
|
font-family: 'Russo One';
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/RussoOne.ttf');
|
src: url('./fonts/RussoOne.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Russo One';
|
font-family: 'Russo One';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
src: url('./fonts/RussoOne.ttf');
|
src: url('./fonts/RussoOne.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Aurebesh';
|
font-family: 'Aurebesh';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/Aurebesh.ttf');
|
src: url('./fonts/Aurebesh.ttf');
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Engli-Besh';
|
font-family: 'Engli-Besh';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/EngliBesh-KG3W.ttf');
|
src: url('./fonts/EngliBesh-KG3W.ttf');
|
||||||
}
|
}
|
||||||
@import "_variables.less";
|
@import "_variables.less";
|
||||||
|
|
||||||
html {
|
html {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
*, *:before, *:after {
|
*, *:before, *:after {
|
||||||
box-sizing: inherit;
|
box-sizing: inherit;
|
||||||
}
|
}
|
||||||
// ::-webkit-scrollbar {
|
// ::-webkit-scrollbar {
|
||||||
// width: 6px;
|
// width: 6px;
|
||||||
// height: 6px;
|
// height: 6px;
|
||||||
// }
|
// }
|
||||||
::-webkit-scrollbar-track {
|
::-webkit-scrollbar-track {
|
||||||
border: 1px solid @colorBlue;
|
border: 1px solid @colorBlue;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
outline: none;
|
outline: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: @colorBlue;
|
background: @colorBlue;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
:root {
|
:root {
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
scrollbar-color: @colorBlue @colorPaleBlue;
|
scrollbar-color: @colorBlue @colorPaleBlue;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
.openSans(13px, 400);
|
.openSans(13px, 400);
|
||||||
background-image: url('./ui/SW5e-logo.svg');
|
background-image: url('./ui/SW5e-logo.svg');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
.russoOne(34px);
|
.russoOne(34px);
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
.russoOne(27px);
|
.russoOne(27px);
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
.russoOne(21px);
|
.russoOne(21px);
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
.russoOne(17px);
|
.russoOne(17px);
|
||||||
}
|
}
|
||||||
h5, h6 {
|
h5, h6 {
|
||||||
.russoOne(13px);
|
.russoOne(13px);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
&:hover, &:active {
|
&:hover, &:active {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.app {
|
.app {
|
||||||
border: none;// 1px solid @colorBlue;
|
border: none;// 1px solid @colorBlue;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
}
|
}
|
||||||
#pause {
|
#pause {
|
||||||
img {display: none;}
|
img {display: none;}
|
||||||
background: none;
|
background: none;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
margin-left: -64px;
|
margin-left: -64px;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 128px;
|
width: 128px;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
background: url("ui/pause-inner.svg") no-repeat 50% 50%;
|
background: url("ui/pause-inner.svg") no-repeat 50% 50%;
|
||||||
animation-name: pause-spin;
|
animation-name: pause-spin;
|
||||||
animation-duration: 10000ms;
|
animation-duration: 10000ms;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
}
|
}
|
||||||
&::after {
|
&::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
margin-left: -64px;
|
margin-left: -64px;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 128px;
|
width: 128px;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
background: url("ui/pause-outer.svg") no-repeat 50% 50%;
|
background: url("ui/pause-outer.svg") no-repeat 50% 50%;
|
||||||
animation-name: pause-spin;
|
animation-name: pause-spin;
|
||||||
animation-duration: 5000ms;
|
animation-duration: 5000ms;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-direction: reverse;
|
animation-direction: reverse;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 256px;
|
width: 256px;
|
||||||
margin-left: -128px;
|
margin-left: -128px;
|
||||||
margin-top: -13px;
|
margin-top: -13px;
|
||||||
text-shadow: 0 0 24px @colorBlue;
|
text-shadow: 0 0 24px @colorBlue;
|
||||||
&::before, &::after {
|
&::before, &::after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
font-family: "Aurebesh", sans-serif;
|
font-family: "Aurebesh", sans-serif;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
color: @colorGray;
|
color: @colorGray;
|
||||||
animation: none;
|
animation: none;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
text-shadow: 0 0 8px @colorBlue;
|
text-shadow: 0 0 8px @colorBlue;
|
||||||
}
|
}
|
||||||
&::before {
|
&::before {
|
||||||
content: "GAME";
|
content: "GAME";
|
||||||
top: -13px;
|
top: -13px;
|
||||||
left: 42px;
|
left: 42px;
|
||||||
}
|
}
|
||||||
&::after {
|
&::after {
|
||||||
content: "PAUSED";
|
content: "PAUSED";
|
||||||
bottom: -13px;
|
bottom: -13px;
|
||||||
right: 42px;
|
right: 42px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@import "components/forms-global.less";
|
@import "components/forms-global.less";
|
||||||
@import "components/sidebar-global.less";
|
@import "components/sidebar-global.less";
|
||||||
@import "components/actor-global.less";
|
@import "components/actor-global.less";
|
||||||
|
|
||||||
@keyframes pause-spin {
|
@keyframes pause-spin {
|
||||||
from {
|
from {
|
||||||
transform:rotate(0deg);
|
transform:rotate(0deg);
|
||||||
}
|
}
|
||||||
to {
|
to {
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,47 +1,47 @@
|
||||||
@import "_variables.less";
|
@import "_variables.less";
|
||||||
@import "_variables-light.less";
|
@import "_variables-light.less";
|
||||||
|
|
||||||
body.light-theme {
|
body.light-theme {
|
||||||
.app {
|
.app {
|
||||||
background: @primaryBackground;
|
background: @primaryBackground;
|
||||||
}
|
}
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
h3,
|
h3,
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
color: @headingColor;
|
color: @headingColor;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
border-bottom: 2px solid @headerBorderColor;
|
border-bottom: 2px solid @headerBorderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: @linkColor;
|
color: @linkColor;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:active {
|
&:active {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
background-color: @blockquoteBackground;
|
background-color: @blockquoteBackground;
|
||||||
border: 1px solid @blockquoteBorder;
|
border: 1px solid @blockquoteBorder;
|
||||||
box-shadow: @blockquoteShadow;
|
box-shadow: @blockquoteShadow;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
border-width: 0 0 1px 0;
|
border-width: 0 0 1px 0;
|
||||||
border-bottom: 1px solid @hrColor;
|
border-bottom: 1px solid @hrColor;
|
||||||
}
|
}
|
||||||
@import "components/forms-themes.less";
|
@import "components/forms-themes.less";
|
||||||
@import "components/sidebar-themes.less";
|
@import "components/sidebar-themes.less";
|
||||||
@import "components/foundry-nav-themes.less";
|
@import "components/foundry-nav-themes.less";
|
||||||
@import "components/foundry-app-window-themes.less";
|
@import "components/foundry-app-window-themes.less";
|
||||||
@import "components/actor-themes.less";
|
@import "components/actor-themes.less";
|
||||||
}
|
}
|
|
@ -1,61 +1,61 @@
|
||||||
@import "variables.less";
|
@import "variables.less";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: @colorRed;
|
color: @colorRed;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
&:hover, &:active {
|
&:hover, &:active {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.app {
|
.app {
|
||||||
background: @sheetBackground;
|
background: @sheetBackground;
|
||||||
border: none;// 1px solid @colorBlue;
|
border: none;// 1px solid @colorBlue;
|
||||||
.dropShadow1();
|
.dropShadow1();
|
||||||
}
|
}
|
||||||
|
|
||||||
#context-menu {
|
#context-menu {
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
color: @colorBlack;
|
color: @colorBlack;
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
ol.context-items {
|
ol.context-items {
|
||||||
background: white;
|
background: white;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid @colorLightGray;
|
border: 1px solid @colorLightGray;
|
||||||
.dropShadow2();
|
.dropShadow2();
|
||||||
li.context-item {
|
li.context-item {
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-top-left-radius: 4px;
|
border-top-left-radius: 4px;
|
||||||
border-top-right-radius: 4px;
|
border-top-right-radius: 4px;
|
||||||
}
|
}
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-bottom-left-radius: 4px;
|
border-bottom-left-radius: 4px;
|
||||||
border-bottom-right-radius: 4px;
|
border-bottom-right-radius: 4px;
|
||||||
}
|
}
|
||||||
i {
|
i {
|
||||||
color: @colorBlue;
|
color: @colorBlue;
|
||||||
}
|
}
|
||||||
&:hover {
|
&:hover {
|
||||||
background: @colorRed;
|
background: @colorRed;
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
i {
|
i {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
& + li {
|
& + li {
|
||||||
border-top: 1px solid @colorPaleGray;
|
border-top: 1px solid @colorPaleGray;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@import "components/forms.less";
|
@import "components/forms.less";
|
||||||
@import "components/sidebar.less";
|
@import "components/sidebar.less";
|
|
@ -458,8 +458,8 @@ export default class Actor5e extends Actor {
|
||||||
return weight + (q * w);
|
return weight + (q * w);
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
// [Optional] add Currency Weight
|
// [Optional] add Currency Weight (for non-transformed actors)
|
||||||
if ( game.settings.get("sw5e", "currencyWeight") ) {
|
if ( game.settings.get("sw5e", "currencyWeight") && actorData.data.currency ) {
|
||||||
const currency = actorData.data.currency;
|
const currency = actorData.data.currency;
|
||||||
const numCoins = Object.values(currency).reduce((val, denom) => val += Math.max(denom, 0), 0);
|
const numCoins = Object.values(currency).reduce((val, denom) => val += Math.max(denom, 0), 0);
|
||||||
weight += numCoins / CONFIG.SW5E.encumbrance.currencyPerWeight;
|
weight += numCoins / CONFIG.SW5E.encumbrance.currencyPerWeight;
|
||||||
|
@ -553,43 +553,56 @@ export default class Actor5e extends Actor {
|
||||||
const isNPC = this.data.type === 'npc';
|
const isNPC = this.data.type === 'npc';
|
||||||
let initial = {};
|
let initial = {};
|
||||||
switch ( itemData.type ) {
|
switch ( itemData.type ) {
|
||||||
|
|
||||||
case "weapon":
|
case "weapon":
|
||||||
initial["data.equipped"] = isNPC; // NPCs automatically equip weapons
|
if ( getProperty(itemData, "data.equipped") === undefined ) {
|
||||||
let hasWeaponProf = isNPC; // NPCs automatically have weapon proficiency
|
initial["data.equipped"] = isNPC; // NPCs automatically equip weapons
|
||||||
if ( !isNPC ) {
|
}
|
||||||
const weaponProf = {
|
if ( getProperty(itemData, "data.proficient") === undefined ) {
|
||||||
"natural": true,
|
if ( isNPC ) {
|
||||||
"simpleVW": "sim",
|
initial["data.proficient"] = true; // NPCs automatically have equipment proficiency
|
||||||
"simpleB": "sim",
|
} else {
|
||||||
"simpleLW": "sim",
|
const weaponProf = {
|
||||||
"martialVW": "mar",
|
"natural": true,
|
||||||
"martialB": "mar",
|
"simpleVW": "sim",
|
||||||
"martialLW": "mar"
|
"simpleB": "sim",
|
||||||
}[itemData.data?.weaponType];
|
"simpleLW": "sim",
|
||||||
const actorWeaponProfs = this.data.data.traits?.weaponProf?.value || [];
|
"martialVW": "mar",
|
||||||
hasWeaponProf = (weaponProf === true) || actorWeaponProfs.includes(weaponProf);
|
"martialB": "mar",
|
||||||
|
"martialLW": "mar"
|
||||||
|
}[itemData.data?.weaponType]; // Player characters check proficiency
|
||||||
|
const actorWeaponProfs = this.data.data.traits?.weaponProf?.value || [];
|
||||||
|
const hasWeaponProf = (weaponProf === true) || actorWeaponProfs.includes(weaponProf);
|
||||||
|
initial["data.proficient"] = hasWeaponProf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
initial["data.proficient"] = hasWeaponProf;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "equipment":
|
case "equipment":
|
||||||
initial["data.equipped"] = isNPC; // NPCs automatically equip equipment
|
if ( getProperty(itemData, "data.equipped") === undefined ) {
|
||||||
let hasEquipmentProf = isNPC; // NPCs automatically have equipment proficiency
|
initial["data.equipped"] = isNPC; // NPCs automatically equip equipment
|
||||||
if ( !isNPC ) {
|
}
|
||||||
const armorProf = {
|
if ( getProperty(itemData, "data.proficient") === undefined ) {
|
||||||
"natural": true,
|
if ( isNPC ) {
|
||||||
"clothing": true,
|
initial["data.proficient"] = true; // NPCs automatically have equipment proficiency
|
||||||
"light": "lgt",
|
} else {
|
||||||
"medium": "med",
|
const armorProf = {
|
||||||
"heavy": "hvy",
|
"natural": true,
|
||||||
"shield": "shl"
|
"clothing": true,
|
||||||
}[itemData.data?.armor?.type];
|
"light": "lgt",
|
||||||
const actorArmorProfs = this.data.data.traits?.armorProf?.value || [];
|
"medium": "med",
|
||||||
hasEquipmentProf = (armorProf === true) || actorArmorProfs.includes(armorProf);
|
"heavy": "hvy",
|
||||||
|
"shield": "shl"
|
||||||
|
}[itemData.data?.armor?.type]; // Player characters check proficiency
|
||||||
|
const actorArmorProfs = this.data.data.traits?.armorProf?.value || [];
|
||||||
|
const hasEquipmentProf = (armorProf === true) || actorArmorProfs.includes(armorProf);
|
||||||
|
initial["data.proficient"] = hasEquipmentProf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
initial["data.proficient"] = hasEquipmentProf;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "power":
|
case "power":
|
||||||
initial["data.prepared"] = true; // NPCs automatically prepare powers
|
initial["data.prepared"] = true; // automatically prepare powers for everyone
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mergeObject(itemData, initial);
|
mergeObject(itemData, initial);
|
||||||
|
@ -1103,7 +1116,7 @@ export default class Actor5e extends Actor {
|
||||||
|
|
||||||
// Recover power slots
|
// Recover power slots
|
||||||
for ( let [k, v] of Object.entries(data.powers) ) {
|
for ( let [k, v] of Object.entries(data.powers) ) {
|
||||||
updateData[`data.powers.${k}.value`] = !Number.isNaN(v.override) ? v.override : (v.max ?? 0);
|
updateData[`data.powers.${k}.value`] = Number.isNumeric(v.override) ? v.override : (v.max ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recover pact slots.
|
// Recover pact slots.
|
||||||
|
@ -1210,10 +1223,10 @@ export default class Actor5e extends Actor {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the original Actor data and the new source data
|
// Get the original Actor data and the new source data
|
||||||
const o = this.toJSON();
|
const o = duplicate(this.toJSON());
|
||||||
o.flags.sw5e = o.flags.sw5e || {};
|
o.flags.sw5e = o.flags.sw5e || {};
|
||||||
o.flags.sw5e.transformOptions = {mergeSkills, mergeSaves};
|
o.flags.sw5e.transformOptions = {mergeSkills, mergeSaves};
|
||||||
const source = target.toJSON();
|
const source = duplicate(target.toJSON());
|
||||||
|
|
||||||
// Prepare new data to merge from the source
|
// Prepare new data to merge from the source
|
||||||
const d = {
|
const d = {
|
||||||
|
@ -1244,7 +1257,7 @@ export default class Actor5e extends Actor {
|
||||||
// Handle wildcard
|
// Handle wildcard
|
||||||
if ( source.token.randomImg ) {
|
if ( source.token.randomImg ) {
|
||||||
const images = await target.getTokenImages();
|
const images = await target.getTokenImages();
|
||||||
d.token.img = images[0];
|
d.token.img = images[Math.floor(Math.random() * images.length)];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep Token configurations
|
// Keep Token configurations
|
||||||
|
@ -1328,7 +1341,7 @@ export default class Actor5e extends Actor {
|
||||||
newTokenData.actorId = newActor.id;
|
newTokenData.actorId = newActor.id;
|
||||||
return newTokenData;
|
return newTokenData;
|
||||||
});
|
});
|
||||||
return canvas.scene.updateEmbeddedEntity("Token", updates);
|
return canvas.scene?.updateEmbeddedEntity("Token", updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
|
@ -33,10 +33,10 @@ export default class ActorSheet5e extends ActorSheet {
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
scrollY: [
|
scrollY: [
|
||||||
".inventory .inventory-list",
|
".inventory .group-list",
|
||||||
".features .inventory-list",
|
".features .group-list",
|
||||||
".powerbook .inventory-list",
|
".powerbook .group-list",
|
||||||
".effects .inventory-list"
|
".effects .effects-list"
|
||||||
],
|
],
|
||||||
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]
|
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]
|
||||||
});
|
});
|
||||||
|
@ -619,6 +619,11 @@ export default class ActorSheet5e extends ActorSheet {
|
||||||
itemData = scroll.data;
|
itemData = scroll.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore certain statuses
|
||||||
|
if ( itemData.data ) {
|
||||||
|
["attunement", "equipped", "proficient", "prepared"].forEach(k => delete itemData.data[k]);
|
||||||
|
}
|
||||||
|
|
||||||
// Create the owned item as normal
|
// Create the owned item as normal
|
||||||
return super._onDropItemCreate(itemData);
|
return super._onDropItemCreate(itemData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -619,6 +619,11 @@ export default class ActorSheet5e extends ActorSheet {
|
||||||
itemData = scroll.data;
|
itemData = scroll.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore certain statuses
|
||||||
|
if ( itemData.data ) {
|
||||||
|
["attunement", "equipped", "proficient", "prepared"].forEach(k => delete itemData.data[k]);
|
||||||
|
}
|
||||||
|
|
||||||
// Create the owned item as normal
|
// Create the owned item as normal
|
||||||
return super._onDropItemCreate(itemData);
|
return super._onDropItemCreate(itemData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,6 +168,8 @@ export default class AbilityUseDialog extends Dialog {
|
||||||
type: item.data.consumableType,
|
type: item.data.consumableType,
|
||||||
value: uses.value,
|
value: uses.value,
|
||||||
quantity: item.data.quantity,
|
quantity: item.data.quantity,
|
||||||
|
max: uses.max,
|
||||||
|
per: CONFIG.SW5E.limitedUsePeriods[uses.per]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
121
module/characterImporter.js
Normal file
121
module/characterImporter.js
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
export default class CharacterImporter {
|
||||||
|
|
||||||
|
// transform JSON from sw5e.com to Foundry friendly format
|
||||||
|
// and insert new actor
|
||||||
|
static async transform(rawCharacter){
|
||||||
|
const sourceCharacter = JSON.parse(rawCharacter); //source character
|
||||||
|
|
||||||
|
const details = {
|
||||||
|
species: sourceCharacter.attribs.find(e => e.name == "race").current,
|
||||||
|
background: sourceCharacter.attribs.find(e => e.name == "background").current,
|
||||||
|
alignment: sourceCharacter.attribs.find(e => e.name == "alignment").current
|
||||||
|
}
|
||||||
|
|
||||||
|
const hp = {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "hp").current,
|
||||||
|
min: 0,
|
||||||
|
max: sourceCharacter.attribs.find(e => e.name == "hp").current,
|
||||||
|
temp: sourceCharacter.attribs.find(e => e.name == "hp_temp").current
|
||||||
|
};
|
||||||
|
|
||||||
|
const ac = {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "ac").current
|
||||||
|
};
|
||||||
|
|
||||||
|
const abilities = {
|
||||||
|
str: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "strength").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'strength_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
dex: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "dexterity").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'dexterity_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
con: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "constitution").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'constitution_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
int: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "intelligence").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'intelligence_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
wis: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "wisdom").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'wisdom_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
cha: {
|
||||||
|
value: sourceCharacter.attribs.find(e => e.name == "charisma").current,
|
||||||
|
proficient: sourceCharacter.attribs.find(e => e.name == 'charisma_save_prof').current ? 1 : 0
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const targetCharacter = {
|
||||||
|
name: sourceCharacter.name,
|
||||||
|
type: "character",
|
||||||
|
data: {
|
||||||
|
abilities: abilities,
|
||||||
|
details: details,
|
||||||
|
attributes: {
|
||||||
|
ac: ac,
|
||||||
|
hp: hp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let actor = await Actor.create(targetCharacter);
|
||||||
|
|
||||||
|
const profession = sourceCharacter.attribs.find(e => e.name == "class").current;
|
||||||
|
let professionLevel = sourceCharacter.attribs.find(e => e.name == "class_display").current;
|
||||||
|
professionLevel = parseInt( professionLevel.replace(/[^0-9]/g,'') ); //remove a-z, leaving only integers
|
||||||
|
CharacterImporter.addClasses(profession, professionLevel, actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static async addClasses(profession, level, actor){
|
||||||
|
let classes = await game.packs.get('sw5e.classes').getContent();
|
||||||
|
let assignedClass = classes.find( c => c.name === profession );
|
||||||
|
assignedClass.data.data.levels = level;
|
||||||
|
await actor.createEmbeddedEntity("OwnedItem", assignedClass.data, { displaySheet: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
static addImportButton(html){
|
||||||
|
const header = $("#actors").find("header.directory-header");
|
||||||
|
const search = $("#actors").children().find("div.header-search");
|
||||||
|
const newImportButtonDiv = $("#actors").children().find("div.header-actions").clone();
|
||||||
|
const newSearch = search.clone();
|
||||||
|
search.remove();
|
||||||
|
newImportButtonDiv.attr('id', 'character-sheet-import');
|
||||||
|
header.append(newImportButtonDiv);
|
||||||
|
newImportButtonDiv.children("button").remove();
|
||||||
|
newImportButtonDiv.append("<button class='create-entity' id='cs-import-button'><i class='fas fa-upload'></i> Import Character</button>");
|
||||||
|
newSearch.appendTo(header);
|
||||||
|
|
||||||
|
let characterImportButton = $("#cs-import-button");
|
||||||
|
characterImportButton.click(ev => {
|
||||||
|
let content = '<h1>Saved Character JSON Import</h1> '
|
||||||
|
+ '<label for="character-json">Paste character JSON here:</label> '
|
||||||
|
+ '</br>'
|
||||||
|
+ '<textarea id="character-json" name="character-json" rows="10" cols="50"></textarea>';
|
||||||
|
let importDialog = new Dialog({
|
||||||
|
title: "Import Character from SW5e.com",
|
||||||
|
content: content,
|
||||||
|
buttons: {
|
||||||
|
"Import": {
|
||||||
|
icon: '<i class="fas fa-file-import"></i>',
|
||||||
|
label: "Import Character",
|
||||||
|
callback: (e) => {
|
||||||
|
let characterData = $('#character-json').val();
|
||||||
|
console.log('Parsing Character JSON');
|
||||||
|
CharacterImporter.transform(characterData);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Cancel": {
|
||||||
|
icon: '<i class="fas fa-times-circle"></i>',
|
||||||
|
label: "Cancel",
|
||||||
|
callback: () => {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
importDialog.render(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -66,7 +66,7 @@ export const displayChatActionButtons = function(message, html, data) {
|
||||||
export const addChatMessageContextOptions = function(html, options) {
|
export const addChatMessageContextOptions = function(html, options) {
|
||||||
let canApply = li => {
|
let canApply = li => {
|
||||||
const message = game.messages.get(li.data("messageId"));
|
const message = game.messages.get(li.data("messageId"));
|
||||||
return message.isRoll && message.isContentVisible && canvas.tokens.controlled.length;
|
return message?.isRoll && message?.isContentVisible && canvas?.tokens.controlled.length;
|
||||||
};
|
};
|
||||||
options.push(
|
options.push(
|
||||||
{
|
{
|
||||||
|
@ -103,15 +103,16 @@ export const addChatMessageContextOptions = function(html, options) {
|
||||||
* Apply rolled dice damage to the token or tokens which are currently controlled.
|
* Apply rolled dice damage to the token or tokens which are currently controlled.
|
||||||
* This allows for damage to be scaled by a multiplier to account for healing, critical hits, or resistance
|
* This allows for damage to be scaled by a multiplier to account for healing, critical hits, or resistance
|
||||||
*
|
*
|
||||||
* @param {HTMLElement} roll The chat entry which contains the roll data
|
* @param {HTMLElement} li The chat entry which contains the roll data
|
||||||
* @param {Number} multiplier A damage multiplier to apply to the rolled damage.
|
* @param {Number} multiplier A damage multiplier to apply to the rolled damage.
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
function applyChatCardDamage(roll, multiplier) {
|
function applyChatCardDamage(li, multiplier) {
|
||||||
const amount = roll.find('.dice-total').text();
|
const message = game.messages.get(li.data("messageId"));
|
||||||
|
const roll = message.roll;
|
||||||
return Promise.all(canvas.tokens.controlled.map(t => {
|
return Promise.all(canvas.tokens.controlled.map(t => {
|
||||||
const a = t.actor;
|
const a = t.actor;
|
||||||
return a.applyDamage(amount, multiplier);
|
return a.applyDamage(roll.total, multiplier);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ export const _getInitiativeFormula = function(combatant) {
|
||||||
|
|
||||||
let nd = 1;
|
let nd = 1;
|
||||||
let mods = "";
|
let mods = "";
|
||||||
|
|
||||||
if (actor.getFlag("sw5e", "halflingLucky")) mods += "r1=1";
|
if (actor.getFlag("sw5e", "halflingLucky")) mods += "r1=1";
|
||||||
if (actor.getFlag("sw5e", "initiativeAdv")) {
|
if (actor.getFlag("sw5e", "initiativeAdv")) {
|
||||||
nd = 2;
|
nd = 2;
|
||||||
|
@ -26,15 +26,3 @@ export const _getInitiativeFormula = function(combatant) {
|
||||||
if ( tiebreaker ) parts.push(actor.data.data.abilities.dex.value / 100);
|
if ( tiebreaker ) parts.push(actor.data.data.abilities.dex.value / 100);
|
||||||
return parts.filter(p => p !== null).join(" + ");
|
return parts.filter(p => p !== null).join(" + ");
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* When the Combat encounter updates - re-render open Actor sheets for combatants in the encounter.
|
|
||||||
*/
|
|
||||||
Hooks.on("updateCombat", (combat, data, options, userId) => {
|
|
||||||
const updateTurn = ("turn" in data) || ("round" in data);
|
|
||||||
if ( !updateTurn ) return;
|
|
||||||
for ( let t of combat.turns ) {
|
|
||||||
const a = t.actor;
|
|
||||||
if ( t.actor ) t.actor.sheet.render(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
|
@ -274,7 +274,7 @@ SW5E.consumableTypes = {
|
||||||
"food": "SW5E.ConsumableFood",
|
"food": "SW5E.ConsumableFood",
|
||||||
"medpac": "SW5E.ConsumableMedpac",
|
"medpac": "SW5E.ConsumableMedpac",
|
||||||
"technology": "SW5E.ConsumableTechnology",
|
"technology": "SW5E.ConsumableTechnology",
|
||||||
"ammunition": "SW5E.ConsumableAmmunition",
|
"ammo": "SW5E.ConsumableAmmunition",
|
||||||
"trinket": "SW5E.ConsumableTrinket",
|
"trinket": "SW5E.ConsumableTrinket",
|
||||||
"force": "SW5E.ConsumableForce",
|
"force": "SW5E.ConsumableForce",
|
||||||
"tech": "SW5E.ConsumableTech"
|
"tech": "SW5E.ConsumableTech"
|
||||||
|
|
|
@ -42,7 +42,7 @@ export function simplifyRollFormula(formula, data, {constantFirst = false} = {})
|
||||||
|
|
||||||
const parts = constantFirst ? // Order the rollable and constant terms, either constant first or second depending on the optional argumen
|
const parts = constantFirst ? // Order the rollable and constant terms, either constant first or second depending on the optional argumen
|
||||||
[constantPart, rollableFormula] : [rollableFormula, constantPart];
|
[constantPart, rollableFormula] : [rollableFormula, constantPart];
|
||||||
|
|
||||||
// Join the parts with a + sign, pass them to `Roll` once again to clean up the formula
|
// Join the parts with a + sign, pass them to `Roll` once again to clean up the formula
|
||||||
return new Roll(parts.filterJoin(" + ")).formula;
|
return new Roll(parts.filterJoin(" + ")).formula;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ export function simplifyRollFormula(formula, data, {constantFirst = false} = {})
|
||||||
/**
|
/**
|
||||||
* Only some terms are supported by simplifyRollFormula, this method returns true when the term is not supported.
|
* Only some terms are supported by simplifyRollFormula, this method returns true when the term is not supported.
|
||||||
* @param {*} term - A single Dice term to check support on
|
* @param {*} term - A single Dice term to check support on
|
||||||
* @return {Boolean} True when unsupported, false if supported
|
* @return {Boolean} True when unsupported, false if supported
|
||||||
*/
|
*/
|
||||||
function _isUnsupportedTerm(term) {
|
function _isUnsupportedTerm(term) {
|
||||||
const diceTerm = term instanceof DiceTerm;
|
const diceTerm = term instanceof DiceTerm;
|
||||||
|
@ -110,8 +110,8 @@ export async function d20Roll({parts=[], data={}, event={}, rollMode=null, templ
|
||||||
let adv = 0;
|
let adv = 0;
|
||||||
fastForward = fastForward ?? (event && (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey));
|
fastForward = fastForward ?? (event && (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey));
|
||||||
if (fastForward) {
|
if (fastForward) {
|
||||||
if ( advantage || event.altKey ) adv = 1;
|
if ( advantage ?? event.altKey ) adv = 1;
|
||||||
else if ( disadvantage || event.ctrlKey || event.metaKey ) adv = -1;
|
else if ( disadvantage ?? (event.ctrlKey || event.metaKey) ) adv = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define the inner roll function
|
// Define the inner roll function
|
||||||
|
|
|
@ -251,12 +251,14 @@ export default class Item5e extends Item {
|
||||||
|
|
||||||
// Item Actions
|
// Item Actions
|
||||||
if ( data.hasOwnProperty("actionType") ) {
|
if ( data.hasOwnProperty("actionType") ) {
|
||||||
|
// if this item is owned, we populate the label and saving throw during actor init
|
||||||
|
if (!this.isOwned) {
|
||||||
|
// Saving throws
|
||||||
|
this.getSaveDC();
|
||||||
|
|
||||||
// Saving throws
|
// To Hit
|
||||||
this.getSaveDC();
|
this.getAttackToHit();
|
||||||
|
}
|
||||||
// To Hit
|
|
||||||
this.getAttackToHit();
|
|
||||||
|
|
||||||
// Damage
|
// Damage
|
||||||
let dam = data.damage || {};
|
let dam = data.damage || {};
|
||||||
|
@ -312,7 +314,7 @@ export default class Item5e extends Item {
|
||||||
* - item's actor's proficiency bonus if applicable
|
* - item's actor's proficiency bonus if applicable
|
||||||
* - item's actor's global bonuses to the given item type
|
* - item's actor's global bonuses to the given item type
|
||||||
* - item's ammunition if applicable
|
* - item's ammunition if applicable
|
||||||
*
|
*
|
||||||
* @returns {Object} returns `rollData` and `parts` to be used in the item's Attack roll
|
* @returns {Object} returns `rollData` and `parts` to be used in the item's Attack roll
|
||||||
*/
|
*/
|
||||||
getAttackToHit() {
|
getAttackToHit() {
|
||||||
|
@ -397,7 +399,7 @@ export default class Item5e extends Item {
|
||||||
// Define follow-up actions resulting from the item usage
|
// Define follow-up actions resulting from the item usage
|
||||||
let createMeasuredTemplate = hasArea; // Trigger a template creation
|
let createMeasuredTemplate = hasArea; // Trigger a template creation
|
||||||
let consumeRecharge = !!recharge.value; // Consume recharge
|
let consumeRecharge = !!recharge.value; // Consume recharge
|
||||||
let consumeResource = !!resource.target && (resource.type !== "ammo") // Consume a linked (non-ammo) resource
|
let consumeResource = !!resource.target && resource.type !== "ammo" && !['simpleB', 'martialB'].includes(id.weaponType); // Consume a linked (non-ammo) resource, ignore if use is from a blaster
|
||||||
let consumePowerSlot = requirePowerSlot; // Consume a power slot
|
let consumePowerSlot = requirePowerSlot; // Consume a power slot
|
||||||
let consumeUsage = !!uses.per; // Consume limited uses
|
let consumeUsage = !!uses.per; // Consume limited uses
|
||||||
let consumeQuantity = uses.autoDestroy; // Consume quantity of the item in lieu of uses
|
let consumeQuantity = uses.autoDestroy; // Consume quantity of the item in lieu of uses
|
||||||
|
@ -915,7 +917,8 @@ export default class Item5e extends Item {
|
||||||
if ( powerLevel ) rollData.item.level = powerLevel;
|
if ( powerLevel ) rollData.item.level = powerLevel;
|
||||||
|
|
||||||
// Configure the damage roll
|
// Configure the damage roll
|
||||||
const title = `${this.name} - ${game.i18n.localize("SW5E.DamageRoll")}`;
|
const actionFlavor = game.i18n.localize(itemData.actionType === "heal" ? "SW5E.Healing" : "SW5E.DamageRoll");
|
||||||
|
const title = `${this.name} - ${actionFlavor}`;
|
||||||
const rollConfig = {
|
const rollConfig = {
|
||||||
actor: this.actor,
|
actor: this.actor,
|
||||||
critical: critical ?? event?.altKey ?? false,
|
critical: critical ?? event?.altKey ?? false,
|
||||||
|
|
|
@ -120,8 +120,8 @@ export const migrateCompendium = async function(pack) {
|
||||||
/**
|
/**
|
||||||
* Migrate a single Actor entity to incorporate latest data model changes
|
* Migrate a single Actor entity to incorporate latest data model changes
|
||||||
* Return an Object of updateData to be applied
|
* Return an Object of updateData to be applied
|
||||||
* @param {Actor} actor The actor to Update
|
* @param {object} actor The actor data object to update
|
||||||
* @return {Object} The updateData to apply
|
* @return {Object} The updateData to apply
|
||||||
*/
|
*/
|
||||||
export const migrateActorData = function(actor) {
|
export const migrateActorData = function(actor) {
|
||||||
const updateData = {};
|
const updateData = {};
|
||||||
|
@ -232,13 +232,24 @@ export const migrateSceneData = function(scene) {
|
||||||
* Migrate the actor speed string to movement object
|
* Migrate the actor speed string to movement object
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function _migrateActorMovement(actor, updateData) {
|
function _migrateActorMovement(actorData, updateData) {
|
||||||
const ad = actor.data;
|
const ad = actorData.data;
|
||||||
const old = actor.type === 'vehicle' ? ad?.attributes?.speed : ad?.attributes?.speed?.value;
|
|
||||||
if ( typeof old !== "string" ) return;
|
// Work is needed if old data is present
|
||||||
const s = (old || "").split(" ");
|
const old = actorData.type === 'vehicle' ? ad?.attributes?.speed : ad?.attributes?.speed?.value;
|
||||||
if ( s.length > 0 ) updateData["data.attributes.movement.walk"] = Number.isNumeric(s[0]) ? parseInt(s[0]) : null;
|
const hasOld = old !== undefined;
|
||||||
updateData["data.attributes.-=speed"] = null;
|
if ( hasOld ) {
|
||||||
|
|
||||||
|
// If new data is not present, migrate the old data
|
||||||
|
const hasNew = ad?.attributes?.movement?.walk !== undefined;
|
||||||
|
if ( !hasNew && (typeof old === "string") ) {
|
||||||
|
const s = (old || "").split(" ");
|
||||||
|
if ( s.length > 0 ) updateData["data.attributes.movement.walk"] = Number.isNumeric(s[0]) ? parseInt(s[0]) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the old attribute
|
||||||
|
updateData["data.attributes.-=speed"] = null;
|
||||||
|
}
|
||||||
return updateData
|
return updateData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +265,7 @@ function _migrateActorSenses(actor, updateData) {
|
||||||
const original = ad.traits.senses || "";
|
const original = ad.traits.senses || "";
|
||||||
|
|
||||||
// Try to match old senses with the format like "Darkvision 60 ft, Blindsight 30 ft"
|
// Try to match old senses with the format like "Darkvision 60 ft, Blindsight 30 ft"
|
||||||
const pattern = /([A-z]+)\s?([0-9]+)\s?([A-z]+)?/
|
const pattern = /([A-z]+)\s?([0-9]+)\s?([A-z]+)?/;
|
||||||
let wasMatched = false;
|
let wasMatched = false;
|
||||||
|
|
||||||
// Match each comma-separated term
|
// Match each comma-separated term
|
||||||
|
|
|
@ -14,11 +14,11 @@ export const preloadHandlebarsTemplates = async function() {
|
||||||
"systems/sw5e/templates/actors/oldActor/parts/actor-inventory.html",
|
"systems/sw5e/templates/actors/oldActor/parts/actor-inventory.html",
|
||||||
"systems/sw5e/templates/actors/oldActor/parts/actor-features.html",
|
"systems/sw5e/templates/actors/oldActor/parts/actor-features.html",
|
||||||
"systems/sw5e/templates/actors/oldActor/parts/actor-powerbook.html",
|
"systems/sw5e/templates/actors/oldActor/parts/actor-powerbook.html",
|
||||||
"systems/sw5e/templates/actors/oldActor/parts/actor-notes.html",
|
"systems/sw5e/templates/actors/oldActor/parts/actor-notes.html",
|
||||||
|
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-biography.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-biography.html",
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-core.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-core.html",
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-active-effects.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-active-effects.html",
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-features.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-features.html",
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html",
|
||||||
"systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html",
|
"systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html",
|
||||||
|
|
3578
sw5e copy.css
3578
sw5e copy.css
File diff suppressed because it is too large
Load diff
|
@ -234,13 +234,14 @@ body.dark-theme .dice-roll .dice-total.fumble {
|
||||||
box-shadow: 0 0 12px rgba(232, 17, 17, 0.5);
|
box-shadow: 0 0 12px rgba(232, 17, 17, 0.5);
|
||||||
}
|
}
|
||||||
body.dark-theme #chat-controls .roll-type-select {
|
body.dark-theme #chat-controls .roll-type-select {
|
||||||
background: #363636;
|
background: #4f4f4f;
|
||||||
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
body.dark-theme #chat-controls label {
|
body.dark-theme #chat-controls label {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
body.dark-theme #chat-form textarea {
|
body.dark-theme #chat-form textarea {
|
||||||
background: #363636;
|
background: #4f4f4f;
|
||||||
}
|
}
|
||||||
body.dark-theme #combat #combat-round {
|
body.dark-theme #combat #combat-round {
|
||||||
color: #E81111;
|
color: #E81111;
|
||||||
|
|
|
@ -54,11 +54,6 @@
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('./fonts/EngliBesh-KG3W.ttf');
|
src: url('./fonts/EngliBesh-KG3W.ttf');
|
||||||
}
|
}
|
||||||
.engli-Besh {
|
|
||||||
font-family: 'Engli-Besh';
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
|
@ -768,7 +763,7 @@ input[type="reset"]:disabled {
|
||||||
grid-template-rows: 1fr 26px auto;
|
grid-template-rows: 1fr 26px auto;
|
||||||
grid-template-columns: 128px 1fr;
|
grid-template-columns: 128px 1fr;
|
||||||
column-gap: 8px;
|
column-gap: 8px;
|
||||||
row-gap: 8px;
|
grid-row-gap: 8px;
|
||||||
}
|
}
|
||||||
.sw5e.sheet.actor .swalt-sheet header img {
|
.sw5e.sheet.actor .swalt-sheet header img {
|
||||||
grid-column-start: 1;
|
grid-column-start: 1;
|
||||||
|
@ -1390,7 +1385,7 @@ input[type="reset"]:disabled {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
grid-gap: 4px;
|
grid-gap: 4px;
|
||||||
row-gap: 4px;
|
grid-row-gap: 4px;
|
||||||
}
|
}
|
||||||
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits ul.passives strong {
|
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits ul.passives strong {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
@ -1601,7 +1596,7 @@ input[type="reset"]:disabled {
|
||||||
}
|
}
|
||||||
.sw5e.sheet.actor .swalt-sheet.limited {
|
.sw5e.sheet.actor .swalt-sheet.limited {
|
||||||
grid-template-rows: 144px auto;
|
grid-template-rows: 144px auto;
|
||||||
row-gap: 8px;
|
grid-row-gap: 8px;
|
||||||
}
|
}
|
||||||
.sw5e.sheet.actor .swalt-sheet.limited header {
|
.sw5e.sheet.actor .swalt-sheet.limited header {
|
||||||
grid-template-rows: 1fr;
|
grid-template-rows: 1fr;
|
||||||
|
|
69
sw5e.css
69
sw5e.css
|
@ -508,6 +508,41 @@
|
||||||
height: 24px;
|
height: 24px;
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
/* ----------------------------------------- */
|
||||||
|
/* HUD
|
||||||
|
/* ----------------------------------------- */
|
||||||
|
.placeable-hud .control-icon {
|
||||||
|
box-sizing: content-box;
|
||||||
|
width: 40px;
|
||||||
|
flex: 0 0 40px;
|
||||||
|
margin: 8px 0;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
color: #FBF4F4;
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
box-shadow: 0 0 15px #000;
|
||||||
|
border: 1px solid #333;
|
||||||
|
border-radius: 8px;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
#token-hud .status-effects {
|
||||||
|
visibility: hidden;
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
top: 0;
|
||||||
|
display: grid;
|
||||||
|
padding: 3px;
|
||||||
|
box-sizing: content-box;
|
||||||
|
width: 100px;
|
||||||
|
color: #FBF4F4;
|
||||||
|
grid-template-columns: 25px 25px 25px 25px;
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
box-shadow: 0 0 15px #000;
|
||||||
|
border: 1px solid #333;
|
||||||
|
border-radius: 4px;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
.sw5e.sheet.actor {
|
.sw5e.sheet.actor {
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
/* Sheet Header */
|
/* Sheet Header */
|
||||||
|
@ -1557,7 +1592,7 @@
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
font-family: 'Bungee Inline';
|
font-family: 'Engli-Besh';
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #4b4a44;
|
color: #4b4a44;
|
||||||
|
@ -1837,35 +1872,3 @@
|
||||||
max-width: 40px;
|
max-width: 40px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
.placeable-hud .control-icon {
|
|
||||||
box-sizing: content-box;
|
|
||||||
width: 40px;
|
|
||||||
flex: 0 0 40px;
|
|
||||||
margin: 8px 0;
|
|
||||||
font-size: 28px;
|
|
||||||
line-height: 40px;
|
|
||||||
text-align: center;
|
|
||||||
color: #FBF4F4;
|
|
||||||
background: rgba(0, 0, 0, 0.6);
|
|
||||||
box-shadow: 0 0 15px #000;
|
|
||||||
border: 1px solid #333;
|
|
||||||
border-radius: 8px;
|
|
||||||
pointer-events: all;
|
|
||||||
}
|
|
||||||
#token-hud .status-effects {
|
|
||||||
visibility: hidden;
|
|
||||||
position: absolute;
|
|
||||||
left: 50px;
|
|
||||||
top: 0;
|
|
||||||
display: grid;
|
|
||||||
padding: 3px;
|
|
||||||
box-sizing: content-box;
|
|
||||||
width: 100px;
|
|
||||||
color: #FBF4F4;
|
|
||||||
grid-template-columns: 25px 25px 25px 25px;
|
|
||||||
background: rgba(0, 0, 0, 0.6);
|
|
||||||
box-shadow: 0 0 15px #000;
|
|
||||||
border: 1px solid #333;
|
|
||||||
border-radius: 4px;
|
|
||||||
pointer-events: all;
|
|
||||||
}
|
|
||||||
|
|
547
sw5e.js
547
sw5e.js
|
@ -1,270 +1,279 @@
|
||||||
/**
|
/**
|
||||||
* The Star Wars 5th Edition game system for Foundry Virtual Tabletop
|
* The Star Wars 5th Edition game system for Foundry Virtual Tabletop
|
||||||
* Author: Kakeman89
|
* Author: Kakeman89
|
||||||
* Software License: GNU GPLv3
|
* Software License: GNU GPLv3
|
||||||
* Content License: https://media.wizards.com/2016/downloads/SW5E/SRD-OGL_V5.1.pdf
|
* Content License: https://media.wizards.com/2016/downloads/SW5E/SRD-OGL_V5.1.pdf
|
||||||
* Repository: https://gitlab.com/foundrynet/sw5e
|
* Repository: https://gitlab.com/foundrynet/sw5e
|
||||||
* Issue Tracker: https://gitlab.com/foundrynet/sw5e/issues
|
* Issue Tracker: https://gitlab.com/foundrynet/sw5e/issues
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Import Modules
|
// Import Modules
|
||||||
import { SW5E } from "./module/config.js";
|
import { SW5E } from "./module/config.js";
|
||||||
import { registerSystemSettings } from "./module/settings.js";
|
import { registerSystemSettings } from "./module/settings.js";
|
||||||
import { preloadHandlebarsTemplates } from "./module/templates.js";
|
import { preloadHandlebarsTemplates } from "./module/templates.js";
|
||||||
import { _getInitiativeFormula } from "./module/combat.js";
|
import { _getInitiativeFormula } from "./module/combat.js";
|
||||||
import { measureDistances, getBarAttribute } from "./module/canvas.js";
|
import { measureDistances, getBarAttribute } from "./module/canvas.js";
|
||||||
|
|
||||||
// Import Entities
|
// Import Entities
|
||||||
import Actor5e from "./module/actor/entity.js";
|
import Actor5e from "./module/actor/entity.js";
|
||||||
import Item5e from "./module/item/entity.js";
|
import Item5e from "./module/item/entity.js";
|
||||||
|
import CharacterImporter from "./module/characterImporter.js";
|
||||||
// Import Applications
|
|
||||||
import AbilityTemplate from "./module/pixi/ability-template.js";
|
// Import Applications
|
||||||
import AbilityUseDialog from "./module/apps/ability-use-dialog.js";
|
import AbilityTemplate from "./module/pixi/ability-template.js";
|
||||||
import ActorSheetFlags from "./module/apps/actor-flags.js";
|
import AbilityUseDialog from "./module/apps/ability-use-dialog.js";
|
||||||
import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js";
|
import ActorSheetFlags from "./module/apps/actor-flags.js";
|
||||||
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
|
import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js";
|
||||||
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
|
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
|
||||||
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
|
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
|
||||||
import ItemSheet5e from "./module/item/sheet.js";
|
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
|
||||||
import ShortRestDialog from "./module/apps/short-rest.js";
|
import ActorSheet5eNPCNew from "./module/actor/sheets/newSheet/npc.js";
|
||||||
import TraitSelector from "./module/apps/trait-selector.js";
|
import ItemSheet5e from "./module/item/sheet.js";
|
||||||
import ActorMovementConfig from "./module/apps/movement-config.js";
|
import ShortRestDialog from "./module/apps/short-rest.js";
|
||||||
import ActorSensesConfig from "./module/apps/senses-config.js";
|
import TraitSelector from "./module/apps/trait-selector.js";
|
||||||
|
import ActorMovementConfig from "./module/apps/movement-config.js";
|
||||||
// Import Helpers
|
import ActorSensesConfig from "./module/apps/senses-config.js";
|
||||||
import * as chat from "./module/chat.js";
|
|
||||||
import * as dice from "./module/dice.js";
|
// Import Helpers
|
||||||
import * as macros from "./module/macros.js";
|
import * as chat from "./module/chat.js";
|
||||||
import * as migrations from "./module/migration.js";
|
import * as dice from "./module/dice.js";
|
||||||
|
import * as macros from "./module/macros.js";
|
||||||
/* -------------------------------------------- */
|
import * as migrations from "./module/migration.js";
|
||||||
/* Foundry VTT Initialization */
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
/* Foundry VTT Initialization */
|
||||||
Hooks.once("init", function() {
|
/* -------------------------------------------- */
|
||||||
console.log(`SW5e | Initializing SW5E System\n${SW5E.ASCII}`);
|
|
||||||
|
Hooks.once("init", function() {
|
||||||
// Create a SW5E namespace within the game global
|
console.log(`SW5e | Initializing SW5E System\n${SW5E.ASCII}`);
|
||||||
game.sw5e = {
|
|
||||||
applications: {
|
// Create a SW5E namespace within the game global
|
||||||
AbilityUseDialog,
|
game.sw5e = {
|
||||||
ActorSheetFlags,
|
applications: {
|
||||||
ActorSheet5eCharacter,
|
AbilityUseDialog,
|
||||||
ActorSheet5eCharacterNew,
|
ActorSheetFlags,
|
||||||
ActorSheet5eNPC,
|
ActorSheet5eCharacter,
|
||||||
ActorSheet5eVehicle,
|
ActorSheet5eCharacterNew,
|
||||||
ItemSheet5e,
|
ActorSheet5eNPC,
|
||||||
ShortRestDialog,
|
ActorSheet5eNPCNew,
|
||||||
TraitSelector,
|
ActorSheet5eVehicle,
|
||||||
ActorMovementConfig
|
ItemSheet5e,
|
||||||
},
|
ShortRestDialog,
|
||||||
canvas: {
|
TraitSelector,
|
||||||
AbilityTemplate
|
ActorMovementConfig
|
||||||
},
|
},
|
||||||
config: SW5E,
|
canvas: {
|
||||||
dice: dice,
|
AbilityTemplate
|
||||||
entities: {
|
},
|
||||||
Actor5e,
|
config: SW5E,
|
||||||
Item5e,
|
dice: dice,
|
||||||
},
|
entities: {
|
||||||
macros: macros,
|
Actor5e,
|
||||||
migrations: migrations,
|
Item5e,
|
||||||
rollItemMacro: macros.rollItemMacro
|
},
|
||||||
};
|
macros: macros,
|
||||||
|
migrations: migrations,
|
||||||
// Record Configuration Values
|
rollItemMacro: macros.rollItemMacro
|
||||||
CONFIG.SW5E = SW5E;
|
};
|
||||||
CONFIG.Actor.entityClass = Actor5e;
|
|
||||||
CONFIG.Item.entityClass = Item5e;
|
// Record Configuration Values
|
||||||
CONFIG.time.roundTime = 6;
|
CONFIG.SW5E = SW5E;
|
||||||
CONFIG.fontFamilies = [
|
CONFIG.Actor.entityClass = Actor5e;
|
||||||
"Engli-Besh",
|
CONFIG.Item.entityClass = Item5e;
|
||||||
"Open Sans",
|
CONFIG.time.roundTime = 6;
|
||||||
"Russo One"
|
CONFIG.fontFamilies = [
|
||||||
];
|
"Engli-Besh",
|
||||||
|
"Open Sans",
|
||||||
// 5e cone RAW should be 53.13 degrees
|
"Russo One"
|
||||||
CONFIG.MeasuredTemplate.defaults.angle = 53.13;
|
];
|
||||||
|
|
||||||
// Add DND5e namespace for module compatability
|
// 5e cone RAW should be 53.13 degrees
|
||||||
game.dnd5e = game.sw5e;
|
CONFIG.MeasuredTemplate.defaults.angle = 53.13;
|
||||||
CONFIG.DND5E = CONFIG.SW5E;
|
|
||||||
|
// Add DND5e namespace for module compatability
|
||||||
// Register System Settings
|
game.dnd5e = game.sw5e;
|
||||||
registerSystemSettings();
|
CONFIG.DND5E = CONFIG.SW5E;
|
||||||
|
|
||||||
// Patch Core Functions
|
// Register System Settings
|
||||||
CONFIG.Combat.initiative.formula = "1d20 + @attributes.init.mod + @attributes.init.prof + @attributes.init.bonus";
|
registerSystemSettings();
|
||||||
Combat.prototype._getInitiativeFormula = _getInitiativeFormula;
|
|
||||||
|
// Patch Core Functions
|
||||||
// Register sheet application classes
|
CONFIG.Combat.initiative.formula = "1d20 + @attributes.init.mod + @attributes.init.prof + @attributes.init.bonus";
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
Combat.prototype._getInitiativeFormula = _getInitiativeFormula;
|
||||||
Actors.registerSheet("sw5e", ActorSheet5eCharacterNew, {
|
|
||||||
types: ["character"],
|
// Register sheet application classes
|
||||||
makeDefault: true,
|
Actors.unregisterSheet("core", ActorSheet);
|
||||||
label: "SW5E.SheetClassCharacter"
|
Actors.registerSheet("sw5e", ActorSheet5eCharacterNew, {
|
||||||
});
|
types: ["character"],
|
||||||
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
|
makeDefault: true,
|
||||||
types: ["character"],
|
label: "SW5E.SheetClassCharacter"
|
||||||
makeDefault: false,
|
});
|
||||||
label: "SW5E.SheetClassCharacterOld"
|
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
|
||||||
});
|
types: ["character"],
|
||||||
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
|
makeDefault: false,
|
||||||
types: ["npc"],
|
label: "SW5E.SheetClassCharacterOld"
|
||||||
makeDefault: true,
|
});
|
||||||
label: "SW5E.SheetClassNPC"
|
Actors.registerSheet("sw5e", ActorSheet5eNPCNew, {
|
||||||
});
|
types: ["npc"],
|
||||||
Actors.registerSheet('sw5e', ActorSheet5eVehicle, {
|
makeDefault: true,
|
||||||
types: ['vehicle'],
|
label: "SW5E.SheetClassNPC"
|
||||||
makeDefault: true,
|
});
|
||||||
label: "SW5E.SheetClassVehicle"
|
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
|
||||||
});
|
types: ["npc"],
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
makeDefault: false,
|
||||||
Items.registerSheet("sw5e", ItemSheet5e, {
|
label: "SW5E.SheetClassNPCOld"
|
||||||
types: ['weapon', 'equipment', 'consumable', 'tool', 'loot', 'class', 'power', 'feat', 'species', 'backpack', 'archetype', 'classfeature', 'background', 'fightingmastery', 'fightingstyle', 'lightsaberform'],
|
});
|
||||||
makeDefault: true,
|
Actors.registerSheet('sw5e', ActorSheet5eVehicle, {
|
||||||
label: "SW5E.SheetClassItem"
|
types: ['vehicle'],
|
||||||
});
|
makeDefault: true,
|
||||||
|
label: "SW5E.SheetClassVehicle"
|
||||||
// Preload Handlebars Templates
|
});
|
||||||
preloadHandlebarsTemplates();
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
});
|
Items.registerSheet("sw5e", ItemSheet5e, {
|
||||||
|
types: ['weapon', 'equipment', 'consumable', 'tool', 'loot', 'class', 'power', 'feat', 'species', 'backpack', 'archetype', 'classfeature', 'background', 'fightingmastery', 'fightingstyle', 'lightsaberform'],
|
||||||
|
makeDefault: true,
|
||||||
/* -------------------------------------------- */
|
label: "SW5E.SheetClassItem"
|
||||||
/* Foundry VTT Setup */
|
});
|
||||||
/* -------------------------------------------- */
|
|
||||||
|
// Preload Handlebars Templates
|
||||||
/**
|
preloadHandlebarsTemplates();
|
||||||
* This function runs after game data has been requested and loaded from the servers, so entities exist
|
});
|
||||||
*/
|
|
||||||
Hooks.once("setup", function() {
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
// Localize CONFIG objects once up-front
|
/* Foundry VTT Setup */
|
||||||
const toLocalize = [
|
/* -------------------------------------------- */
|
||||||
"abilities", "abilityAbbreviations", "abilityActivationTypes", "abilityConsumptionTypes", "actorSizes", "alignments",
|
|
||||||
"armorProficiencies", "armorPropertiesTypes", "conditionTypes", "consumableTypes", "cover", "currencies", "damageResistanceTypes",
|
/**
|
||||||
"damageTypes", "distanceUnits", "equipmentTypes", "healingTypes", "itemActionTypes", "languages",
|
* This function runs after game data has been requested and loaded from the servers, so entities exist
|
||||||
"limitedUsePeriods", "movementTypes", "movementUnits", "polymorphSettings", "proficiencyLevels", "senses", "skills",
|
*/
|
||||||
"powerComponents", "powerLevels", "powerPreparationModes", "powerScalingModes", "powerSchools", "targetTypes",
|
Hooks.once("setup", function() {
|
||||||
"timePeriods", "toolProficiencies", "weaponProficiencies", "weaponProperties", "weaponTypes"
|
|
||||||
];
|
// Localize CONFIG objects once up-front
|
||||||
|
const toLocalize = [
|
||||||
// Exclude some from sorting where the default order matters
|
"abilities", "abilityAbbreviations", "abilityActivationTypes", "abilityConsumptionTypes", "actorSizes", "alignments",
|
||||||
const noSort = [
|
"armorProficiencies", "armorPropertiesTypes", "conditionTypes", "consumableTypes", "cover", "currencies", "damageResistanceTypes",
|
||||||
"abilities", "alignments", "currencies", "distanceUnits", "movementUnits", "itemActionTypes", "proficiencyLevels",
|
"damageTypes", "distanceUnits", "equipmentTypes", "healingTypes", "itemActionTypes", "languages",
|
||||||
"limitedUsePeriods", "powerComponents", "powerLevels", "powerPreparationModes", "weaponTypes"
|
"limitedUsePeriods", "movementTypes", "movementUnits", "polymorphSettings", "proficiencyLevels", "senses", "skills",
|
||||||
];
|
"powerComponents", "powerLevels", "powerPreparationModes", "powerScalingModes", "powerSchools", "targetTypes",
|
||||||
|
"timePeriods", "toolProficiencies", "weaponProficiencies", "weaponProperties", "weaponTypes"
|
||||||
// Localize and sort CONFIG objects
|
];
|
||||||
for ( let o of toLocalize ) {
|
|
||||||
const localized = Object.entries(CONFIG.SW5E[o]).map(e => {
|
// Exclude some from sorting where the default order matters
|
||||||
return [e[0], game.i18n.localize(e[1])];
|
const noSort = [
|
||||||
});
|
"abilities", "alignments", "currencies", "distanceUnits", "movementUnits", "itemActionTypes", "proficiencyLevels",
|
||||||
if ( !noSort.includes(o) ) localized.sort((a, b) => a[1].localeCompare(b[1]));
|
"limitedUsePeriods", "powerComponents", "powerLevels", "powerPreparationModes", "weaponTypes"
|
||||||
CONFIG.SW5E[o] = localized.reduce((obj, e) => {
|
];
|
||||||
obj[e[0]] = e[1];
|
|
||||||
return obj;
|
// Localize and sort CONFIG objects
|
||||||
}, {});
|
for ( let o of toLocalize ) {
|
||||||
}
|
const localized = Object.entries(CONFIG.SW5E[o]).map(e => {
|
||||||
// add DND5E translation for module compatability
|
return [e[0], game.i18n.localize(e[1])];
|
||||||
game.i18n.translations.DND5E = game.i18n.translations.SW5E;
|
});
|
||||||
// console.log(game.settings.get("sw5e", "colorTheme"));
|
if ( !noSort.includes(o) ) localized.sort((a, b) => a[1].localeCompare(b[1]));
|
||||||
let theme = game.settings.get("sw5e", "colorTheme") + '-theme';
|
CONFIG.SW5E[o] = localized.reduce((obj, e) => {
|
||||||
document.body.classList.add(theme);
|
obj[e[0]] = e[1];
|
||||||
});
|
return obj;
|
||||||
|
}, {});
|
||||||
/* -------------------------------------------- */
|
}
|
||||||
|
// add DND5E translation for module compatability
|
||||||
/**
|
game.i18n.translations.DND5E = game.i18n.translations.SW5E;
|
||||||
* Once the entire VTT framework is initialized, check to see if we should perform a data migration
|
// console.log(game.settings.get("sw5e", "colorTheme"));
|
||||||
*/
|
let theme = game.settings.get("sw5e", "colorTheme") + '-theme';
|
||||||
Hooks.once("ready", function() {
|
document.body.classList.add(theme);
|
||||||
|
});
|
||||||
// Wait to register hotbar drop hook on ready so that modules could register earlier if they want to
|
|
||||||
Hooks.on("hotbarDrop", (bar, data, slot) => macros.create5eMacro(data, slot));
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
// Determine whether a system migration is required and feasible
|
/**
|
||||||
if ( !game.user.isGM ) return;
|
* Once the entire VTT framework is initialized, check to see if we should perform a data migration
|
||||||
const currentVersion = game.settings.get("sw5e", "systemMigrationVersion");
|
*/
|
||||||
const NEEDS_MIGRATION_VERSION = "1.2.1";
|
Hooks.once("ready", function() {
|
||||||
const COMPATIBLE_MIGRATION_VERSION = 0.80;
|
|
||||||
const needsMigration = currentVersion && isNewerVersion(NEEDS_MIGRATION_VERSION, currentVersion);
|
// Wait to register hotbar drop hook on ready so that modules could register earlier if they want to
|
||||||
if ( !needsMigration ) return;
|
Hooks.on("hotbarDrop", (bar, data, slot) => macros.create5eMacro(data, slot));
|
||||||
|
|
||||||
// Perform the migration
|
// Determine whether a system migration is required and feasible
|
||||||
if ( currentVersion && isNewerVersion(COMPATIBLE_MIGRATION_VERSION, currentVersion) ) {
|
if ( !game.user.isGM ) return;
|
||||||
const warning = `Your SW5e system data is from too old a Foundry version and cannot be reliably migrated to the latest version. The process will be attempted, but errors may occur.`;
|
const currentVersion = game.settings.get("sw5e", "systemMigrationVersion");
|
||||||
ui.notifications.error(warning, {permanent: true});
|
const NEEDS_MIGRATION_VERSION = "1.2.1";
|
||||||
}
|
const COMPATIBLE_MIGRATION_VERSION = 0.80;
|
||||||
migrations.migrateWorld();
|
const needsMigration = currentVersion && isNewerVersion(NEEDS_MIGRATION_VERSION, currentVersion);
|
||||||
});
|
if ( !needsMigration ) return;
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
// Perform the migration
|
||||||
/* Canvas Initialization */
|
if ( currentVersion && isNewerVersion(COMPATIBLE_MIGRATION_VERSION, currentVersion) ) {
|
||||||
/* -------------------------------------------- */
|
const warning = `Your SW5e system data is from too old a Foundry version and cannot be reliably migrated to the latest version. The process will be attempted, but errors may occur.`;
|
||||||
|
ui.notifications.error(warning, {permanent: true});
|
||||||
Hooks.on("canvasInit", function() {
|
}
|
||||||
|
migrations.migrateWorld();
|
||||||
// Extend Diagonal Measurement
|
});
|
||||||
canvas.grid.diagonalRule = game.settings.get("sw5e", "diagonalMovement");
|
|
||||||
SquareGrid.prototype.measureDistances = measureDistances;
|
/* -------------------------------------------- */
|
||||||
|
/* Canvas Initialization */
|
||||||
// Extend Token Resource Bars
|
/* -------------------------------------------- */
|
||||||
Token.prototype.getBarAttribute = getBarAttribute;
|
|
||||||
});
|
Hooks.on("canvasInit", function() {
|
||||||
|
|
||||||
|
// Extend Diagonal Measurement
|
||||||
/* -------------------------------------------- */
|
canvas.grid.diagonalRule = game.settings.get("sw5e", "diagonalMovement");
|
||||||
/* Other Hooks */
|
SquareGrid.prototype.measureDistances = measureDistances;
|
||||||
/* -------------------------------------------- */
|
|
||||||
|
// Extend Token Resource Bars
|
||||||
Hooks.on("renderChatMessage", (app, html, data) => {
|
Token.prototype.getBarAttribute = getBarAttribute;
|
||||||
|
});
|
||||||
// Display action buttons
|
|
||||||
chat.displayChatActionButtons(app, html, data);
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
// Highlight critical success or failure die
|
/* Other Hooks */
|
||||||
chat.highlightCriticalSuccessFailure(app, html, data);
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
// Optionally collapse the content
|
Hooks.on("renderChatMessage", (app, html, data) => {
|
||||||
if (game.settings.get("sw5e", "autoCollapseItemCards")) html.find(".card-content").hide();
|
|
||||||
});
|
// Display action buttons
|
||||||
Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions);
|
chat.displayChatActionButtons(app, html, data);
|
||||||
Hooks.on("renderChatLog", (app, html, data) => Item5e.chatListeners(html));
|
|
||||||
Hooks.on("renderChatPopout", (app, html, data) => Item5e.chatListeners(html));
|
// Highlight critical success or failure die
|
||||||
Hooks.on('getActorDirectoryEntryContext', Actor5e.addDirectoryContextOptions);
|
chat.highlightCriticalSuccessFailure(app, html, data);
|
||||||
Hooks.on("renderSceneDirectory", (app, html, data)=> {
|
|
||||||
//console.log(html.find("header.folder-header"));
|
// Optionally collapse the content
|
||||||
setFolderBackground(html);
|
if (game.settings.get("sw5e", "autoCollapseItemCards")) html.find(".card-content").hide();
|
||||||
});
|
});
|
||||||
Hooks.on("renderActorDirectory", (app, html, data)=> {
|
Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions);
|
||||||
setFolderBackground(html);
|
Hooks.on("renderChatLog", (app, html, data) => Item5e.chatListeners(html));
|
||||||
});
|
Hooks.on("renderChatPopout", (app, html, data) => Item5e.chatListeners(html));
|
||||||
Hooks.on("renderItemDirectory", (app, html, data)=> {
|
Hooks.on('getActorDirectoryEntryContext', Actor5e.addDirectoryContextOptions);
|
||||||
setFolderBackground(html);
|
Hooks.on("renderSceneDirectory", (app, html, data)=> {
|
||||||
});
|
//console.log(html.find("header.folder-header"));
|
||||||
Hooks.on("renderJournalDirectory", (app, html, data)=> {
|
setFolderBackground(html);
|
||||||
setFolderBackground(html);
|
});
|
||||||
});
|
Hooks.on("renderActorDirectory", (app, html, data)=> {
|
||||||
Hooks.on("renderRollTableDirectory", (app, html, data)=> {
|
setFolderBackground(html);
|
||||||
setFolderBackground(html);
|
CharacterImporter.addImportButton(html);
|
||||||
});
|
});
|
||||||
Hooks.on("ActorSheet5eCharacterNew", (app, html, data) => {
|
Hooks.on("renderItemDirectory", (app, html, data)=> {
|
||||||
console.log("renderSwaltSheet");
|
setFolderBackground(html);
|
||||||
});
|
});
|
||||||
// TODO I should remove this
|
Hooks.on("renderJournalDirectory", (app, html, data)=> {
|
||||||
Handlebars.registerHelper('getProperty', function (data, property) {
|
setFolderBackground(html);
|
||||||
return getProperty(data, property);
|
});
|
||||||
});
|
Hooks.on("renderRollTableDirectory", (app, html, data)=> {
|
||||||
|
setFolderBackground(html);
|
||||||
|
});
|
||||||
function setFolderBackground(html) {
|
Hooks.on("ActorSheet5eCharacterNew", (app, html, data) => {
|
||||||
html.find("header.folder-header").each(function() {
|
console.log("renderSwaltSheet");
|
||||||
let bgColor = $(this).css("background-color");
|
});
|
||||||
if(bgColor == undefined)
|
// TODO I should remove this
|
||||||
bgColor = "rgb(255,255,255)";
|
Handlebars.registerHelper('getProperty', function (data, property) {
|
||||||
$(this).closest('li').css("background-color", bgColor);
|
return getProperty(data, property);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function setFolderBackground(html) {
|
||||||
|
html.find("header.folder-header").each(function() {
|
||||||
|
let bgColor = $(this).css("background-color");
|
||||||
|
if(bgColor == undefined)
|
||||||
|
bgColor = "rgb(255,255,255)";
|
||||||
|
$(this).closest('li').css("background-color", bgColor);
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "sw5e",
|
"name": "sw5e",
|
||||||
"title": "SW 5th Edition",
|
"title": "SW 5th Edition",
|
||||||
"description": "A comprehensive game system for running games of SW 5th Edition in the Foundry VTT environment.",
|
"description": "A comprehensive game system for running games of SW 5th Edition in the Foundry VTT environment.",
|
||||||
"version": "1.2.2",
|
"version": "R1-A2",
|
||||||
"author": "Dev Team",
|
"author": "Dev Team",
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"esmodules": ["sw5e.js"],
|
"esmodules": ["sw5e.js"],
|
||||||
|
@ -135,8 +135,8 @@
|
||||||
"gridUnits": "ft",
|
"gridUnits": "ft",
|
||||||
"primaryTokenAttribute": "attributes.hp",
|
"primaryTokenAttribute": "attributes.hp",
|
||||||
"secondaryTokenAttribute": null,
|
"secondaryTokenAttribute": null,
|
||||||
"minimumCoreVersion": "0.7.6",
|
"minimumCoreVersion": "0.7.7",
|
||||||
"compatibleCoreVersion": "0.7.7",
|
"compatibleCoreVersion": "0.7.9",
|
||||||
"url": "https://github.com/unrealkakeman89/sw5e",
|
"url": "https://github.com/unrealkakeman89/sw5e",
|
||||||
"manifest": "https://raw.githubusercontent.com/unrealkakeman89/sw5e/master/system.json",
|
"manifest": "https://raw.githubusercontent.com/unrealkakeman89/sw5e/master/system.json",
|
||||||
"download": "https://github.com/unrealkakeman89/sw5e/archive/master.zip"
|
"download": "https://github.com/unrealkakeman89/sw5e/archive/master.zip"
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
<div class="panel additional-info">
|
<div class="panel additional-info">
|
||||||
<section><h1 class="section-titles biopage">Personality Traits</h1>
|
<section><h1 class="section-titles biopage">Personality Traits</h1>
|
||||||
{{editor content=data.details.trait target="data.details.trait" button=true owner=owner editable=editable}}
|
{{editor content=data.details.trait target="data.details.trait" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
<section><h1 class="section-titles biopage">Ideals</h1>
|
<section><h1 class="section-titles biopage">Ideals</h1>
|
||||||
{{editor content=data.details.ideal target="data.details.ideal" button=true owner=owner editable=editable}}
|
{{editor content=data.details.ideal target="data.details.ideal" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
<section><h1 class="section-titles biopage">Bonds</h1>
|
<section><h1 class="section-titles biopage">Bonds</h1>
|
||||||
{{editor content=data.details.bond target="data.details.bond" button=true owner=owner editable=editable}}
|
{{editor content=data.details.bond target="data.details.bond" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
<section><h1 class="section-titles biopage">Flaws</h1>
|
<section><h1 class="section-titles biopage">Flaws</h1>
|
||||||
{{editor content=data.details.flaw target="data.details.flaw" button=true owner=owner editable=editable}}
|
{{editor content=data.details.flaw target="data.details.flaw" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel background">
|
<div class="panel background">
|
||||||
<section><h1 class="section-titles biopage">Description</h1>
|
<section><h1 class="section-titles biopage">Description</h1>
|
||||||
{{editor content=data.details.description.value target="data.details.description.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.description.value target="data.details.description.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
<section><h1 class="section-titles">Background</h1>
|
<section><h1 class="section-titles">Background</h1>
|
||||||
{{editor content=data.details.biography.value target="data.details.biography.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.biography.value target="data.details.biography.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
|
@ -1,33 +1,33 @@
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<section class="background">
|
<section class="background">
|
||||||
<input type="text" name="data.details.notesname" value="{{data.details.notesname}}"
|
<input type="text" name="data.details.notesname" value="{{data.details.notesname}}"
|
||||||
placeholder="Personal Journal" />
|
placeholder="Personal Journal" />
|
||||||
|
|
||||||
{{editor content=data.details.notes.value target="data.details.notes.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.notes.value target="data.details.notes.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<input type="text" name="data.details.notes1name" value="{{data.details.notes1name}}"
|
<input type="text" name="data.details.notes1name" value="{{data.details.notes1name}}"
|
||||||
placeholder="Additional Notes" />
|
placeholder="Additional Notes" />
|
||||||
{{editor content=data.details.notes1.value target="data.details.notes1.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.notes1.value target="data.details.notes1.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<input type="text" name="data.details.notes2name" value="{{data.details.notes2name}}"
|
<input type="text" name="data.details.notes2name" value="{{data.details.notes2name}}"
|
||||||
placeholder="Additional Notes" />
|
placeholder="Additional Notes" />
|
||||||
{{editor content=data.details.notes2.value target="data.details.notes2.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.notes2.value target="data.details.notes2.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<input type="text" name="data.details.notes3name" value="{{data.details.notes3name}}"
|
<input type="text" name="data.details.notes3name" value="{{data.details.notes3name}}"
|
||||||
placeholder="Additional Notes" />
|
placeholder="Additional Notes" />
|
||||||
{{editor content=data.details.notes3.value target="data.details.notes3.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.notes3.value target="data.details.notes3.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<input type="text" name="data.details.notes4name" value="{{data.details.notes4name}}"
|
<input type="text" name="data.details.notes4name" value="{{data.details.notes4name}}"
|
||||||
placeholder="Additional Notes" />
|
placeholder="Additional Notes" />
|
||||||
{{editor content=data.details.notes4.value target="data.details.notes4.value" button=true owner=owner editable=editable}}
|
{{editor content=data.details.notes4.value target="data.details.notes4.value" button=true owner=owner editable=editable}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
|
@ -29,7 +29,7 @@
|
||||||
</section>
|
</section>
|
||||||
<section class="counters">
|
<section class="counters">
|
||||||
<div class="counter">
|
<div class="counter">
|
||||||
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
|
<h4 class="death-save rollable" data-action="rollDeathSave">{{ localize "SW5E.DeathSave" }}</h4>
|
||||||
<div class="counter-value">
|
<div class="counter-value">
|
||||||
<div class="death-success">
|
<div class="death-success">
|
||||||
<i class="fas fa-check"></i>
|
<i class="fas fa-check"></i>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<div id="{{id}}" class="app window-app {{classes}} this-is-my-custom-window" data-appid="{{appId}}">
|
<div id="{{id}}" class="app window-app {{classes}} this-is-my-custom-window" data-appid="{{appId}}">
|
||||||
<header class="window-header flexrow">
|
<header class="window-header flexrow">
|
||||||
<h4 class="window-title">{{title}}</h4>
|
<h4 class="window-title">{{title}}</h4>
|
||||||
{{#each headerButtons}}
|
{{#each headerButtons}}
|
||||||
<a class="header-button {{this.class}}"><i class="{{this.icon}}"></i></a>
|
<a class="header-button {{this.class}}"><i class="{{this.icon}}"></i></a>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="window-content">
|
<section class="window-content">
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
Loading…
Add table
Add a link
Reference in a new issue