Skip to content

Commit

Permalink
pre update 0.8. Saving state before t esting attack bonuses
Browse files Browse the repository at this point in the history
  • Loading branch information
Moerill committed Jun 15, 2020
1 parent 214478c commit 19eb796
Show file tree
Hide file tree
Showing 32 changed files with 1,010 additions and 251 deletions.
41 changes: 27 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ Settings allow to granularly dis-/enable features to your liking. *Important*: I

## Current Feature List
- [System independent](#universal)
* [Scaling and animated template textures](#scaling-and-animated-template-textures)
* [Momentum based preview snapping](#momentum-based-preview-snapping)
* [Template Changes](#template-changes)
- [Scaling and animated template textures](#scaling-and-animated-template-textures)
* [Miscellaneous](#miscellaneous)
- [Momentum based preview snapping](#momentum-based-preview-snapping)
- [DnD5e specific](#dnd5e-specific)
* [More streamlined rolling and targeting](#rolling-and-targeting-change)
- [Custom chat cards](#custom-attack-and-damage-roll-chat-cards)
Expand Down Expand Up @@ -64,14 +66,24 @@ Want to help me develop? Send a merge request on this gitlab or contact me on Di
Want to support me in another way?
Leave me some nice comments (e.g. on Discord), recommend this module to others and/or leave a donation over at my [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FYZ294SP2JBGS&source=url).

# Features
# Universal Features

## Universal
## Template Changes
### Scaling and animated template textures
![video templates](img/animated_templates.gif)
Tired of FVTTs tiling for template textures? Then this feature is perfect for you! When this feature is enabled template textures are scaled up and rotated to match the template. This also allows for the usage of video files as template textures! Nice! (For all textures the same rules as for all FVTT image and video files do apply)
This also automatically activates [Automatic Ability template texture](#ability-template-textures) when you're using the DnD5e system.

### Hide grid highlight and border for textured templates
![hide highlight](img/highlight_on_hover.gif)
When the template borders and grid highlights stand in the way of a fully immersive experience, use this feature to just hide them! This only hides borders and highlights for all _textured_ templates. If you want to make sure which grid squares are covered by the templates, just hover over it and the highlight and border will get displayed!

### Auto targetting on template move
Using this feature you automatically target each token inside a template you move around!
Activating this feature also activates [Automatic template targeting for DnD5e](#auto-targeting-with-ability-templates).

## Miscellaneous

### Momentum based preview snapping
![preview snapping](img/preview_snapping.gif)
When moving placeables, like tiles or tokens, around you never know exactly where they end up, as long as grid snapping is enabled. This feature adds momentum based preview placement, to counter this issue!
Expand All @@ -83,11 +95,12 @@ Let me explain: As long as you drag the placeable quickly around, the preview wo
To make dragging around more beautiful! Letting the placeable always snap, makes it kinda jumpy when dragging around, resulting in a less smooth and visually less appealing experience. Using the past momentum of the mouse, the algorithm notices when you slow down to precisely place a placeable, snapping it at the position it will really end up.
*Imporant*: This feature still needs a bit fine tuning, adjusting the parameters, ... Feedback for this is valuable! You can provide feedback [here](https://github.com/Moerill/Mess/issues/1)

## DnD5e specific
### Rolling and targeting change

# DnD5e specific features
## Rolling and targeting change
This is a big one and encompasses a variety of features.

#### Custom attack and damage roll chat cards
### Custom attack and damage roll chat cards
![Attacking](img/attacking.gif)
Default DnD5e does need way to many clicks, just to do a single attack. There do exist other approaches to handle this, like BetterRolls, but i am not a fan of those. This feature streamlines the process of attacking or using an item/feature/spell (from now on summarized together as ability).
Each time you use an ability the default chat card gets created as well as an *attack card* for each target you selected (or just one if no target is selected or the ability is an AoE skill.). Example card:
Expand All @@ -96,31 +109,31 @@ Hovering over the target in the card does highlight it on the map (if visible) a
If a crit is rolled the dmg formulas are automatically adjusted to respect it by using the double amount of dice.
The flavor text (in the example ``The cat swipes at Badger lazily with a clawed paw.``) is the chat flavor text specified for the item. If you want to display the targets name in it, use ``[target.name]`` inside the flavor text.

#### Autoroll and Advantage toggle
### Autoroll and Advantage toggle
![Roll toggles](img/roll-toggles.png)
The roll change also adds options to toggle between *(dis-)advantage* and *normal* rolls, by clicking on the D20 above the chats roll mode selector. Right click will cycle through in the opposite direction. This will get applied at the time you click on the *to hit* button, not beforehand!
This also adds a selection to choose if *to hit* or *damage* rolls should be rolled automatically on *attack card* creation.

### Ability template textures
## Ability template textures
![Auto Template](img/auto_template.gif)
Want to be cool and really show a fireball each time you cast it, instead of the blank template for targeting?
This feature lets you specify textures for your templates automatically created by using a feature or spell. It adds to the item sheet a field to select an image or video file as texture. If no file is specified the module will automatically try to select a file depending on the settings set or blank if none found.
**Important** This feature gets automatically activated when you activate [Scaling and animated template textures](#scaling-and-animated-template-textures) and are using the DnD5e system.

#### Auto targeting with ability templates
### Auto targeting with ability templates
This awesome template gets created when you cast a spell, but you still have to manually specify the tokens as targets? Uff! But i'm here to help: This feature automatically targets the tokens inside of your placed template.
This doesn't do anything with the targets though, since, to my knowledge, RAW you roll only one dmg die for all AoE skills. So it only rolls *once* for AoE abilities, without a target, as seen in the GIF, in the previous section.

### Actor Sheet Changes
## Actor Sheet Changes
A collection of small actor sheet enhancements, mainly aimed at the default DnD 5e Actor sheet. Each of them can be dis-/enabled independently. These settings are also client side, so each user can decide for him-/herself if (s)he wants to use it.

#### Numerical scroller
### Numerical scroller
To lazy to use the keyboard to just reduce the hitpoints by just *1*? I got you covered! When enabling this feature you can click on a numerical field and use the mousewheel to de-/increase the value of the field!

#### Alphabetical item sort
### Alphabetical item sort
![sort button](img/sort-btn.png)
Keeping order is an ordeal! This feature adds a button that sorts all items of the current category alphabetically, so you don't have to!

#### Prepared Spell Tracker
### Prepared Spell Tracker
![pepared-spell-tracker-example](img/prepared-spell-tracker.png)
Always forget how many spells you're allowed to prepare? Fret not, this feature adds a field to the actor sheet to allow you to specify the maximum number of allowed prepared spells.
102 changes: 102 additions & 0 deletions dist/css/mess.css
Original file line number Diff line number Diff line change
Expand Up @@ -207,3 +207,105 @@
color: #3F88E6;
text-shadow: 0 0 10px #3F88E6;
}
.mess.settings {
--border-color: #666;
--div-border-color: #6666;
--div-bg-color: rgba(0, 0, 0, 0.05);
--highlight-color: red;
--hint-color: #444;
max-height: 650px;
}
.mess.settings .window-content {
padding: 0;
}
.mess.settings nav {
background: var(--div-bg-color);
padding: 6px;
margin: 0;
margin-bottom: 3px;
border-bottom: 1px solid var(--border-color);
margin: 0 0 6px 0;
}
.mess.settings section {
padding: 0.8em;
}
.mess.settings a[href] {
color: #4a52ca;
}
.mess.settings .mess-info {
font-weight: 900;
font-family: "Font Awesome 5 Free";
position: relative;
top: -0.4em;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
margin: 0;
padding: 0 0.3rem;
}
.mess.settings .mess-info:before {
font-size: 0.6rem;
content: "\f059";
border: none;
}
.mess.settings input[type="checkbox"] {
opacity: 0;
width: 0;
padding: 0;
margin: 0;
flex: 0;
}
.mess.settings label[for] {
cursor: pointer;
}
.mess.settings .form-checkbox-group {
display: flex;
flex-flow: row wrap;
align-items: center;
margin: 3px 0;
}
.mess.settings .form-checkbox-group label:hover {
text-shadow: 0 0 4px var(--highlight-color);
}
.mess.settings .form-checkbox-group label:before {
font-weight: 400;
font-family: "Font Awesome 5 Free";
padding: 0 0.3em;
content: "\f0c8";
}
.mess.settings .form-checkbox-group input:checked + label:before {
font-weight: 900;
content: "\f14a";
}
.mess.settings .mess-hint {
flex: 0 100%;
padding: 0 1em 0.3em 0;
margin-left: 4ch;
font-size: 0.9em;
color: var(--hint-color);
}
.mess.settings .mess-template-chooser {
flex: 1;
overflow: scroll;
background: var(--div-bg-color);
padding: 0.5em 0;
border: 2px inset var(--div-border-color);
border-radius: 0.5em;
}
.mess.settings .mess-template-chooser h3 {
border-bottom: 1px solid var(--border-color);
padding: 0 0.3em;
margin: 0;
}
.mess.settings .mess-template-chooser .form-group {
padding: 0 1em;
}
.dark-mode .mess.settings {
--border-color: #aaa;
--div-bg-color: rgba(150, 150, 150, 0.05);
--highlight-color: #7bb4ff;
--hint-color: #797979;
}
26 changes: 15 additions & 11 deletions dist/lang/de.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
{
"MESS.target": "Ziel",
"MESS.cardTargetTooltip": "Doppelklick um die Kamera auf das Token zu zentrieren, falls momentan die korrekte Szene betrachtet wird.",
"MESS.toHit": "Treffer",
"MESS.damage": "Schaden",
"MESS.rollConfigAdvantage": "W20 mit Vorteil würfeln.",
"MESS.rollConfigNormal": "Nur mit einem W20 würfeln.",
"MESS.rollConfigDisadvantage": "Mit Nachteil würfeln. :(",
"MESS.rollConfigModifierTitle": "Situationsbedingter Modifikator für W20 basierte Würfe.",
"MESS.rollConfigModifierPlaceholder": "Modifikator",
"MESS.rollConfigHit": "Treffer",
"MESS.rollConfigDmg": "Schaden"
"MESS": {
"target": "Ziel",
"cardTargetTooltip": "Doppelklick um die Kamera auf das Token zu zentrieren, falls momentan die korrekte Szene betrachtet wird.",
"toHit": "Treffer",
"damage": "Schaden",
"rollConfig": {
"Advantage": "W20 mit Vorteil würfeln.",
"Normal": "Nur mit einem W20 würfeln.",
"Disadvantage": "Mit Nachteil würfeln. :(",
"ModifierTitle": "Situationsbedingter Modifikator für W20 basierte Würfe.",
"ModifierPlaceholder": "Modifikator",
"Hit": "Treffer",
"Dmg": "Schaden"
}
}
}
102 changes: 90 additions & 12 deletions dist/lang/en.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,92 @@
{
"MESS.target": "Target",
"MESS.cardTargetTooltip": "Double click to pan to token, if its scene is currently viewed.",
"MESS.chatCardResourceError": "There were not enough resources left for this attack!",
"MESS.toHit": "To Hit",
"MESS.damage": "Damage",
"MESS.rollConfigAdvantage": "Roll with Advantage!",
"MESS.rollConfigNormal": "Roll with just 1d20!",
"MESS.rollConfigDisadvantage": "Roll with Disdvantage! :(",
"MESS.rollConfigModifierTitle": "Situational modifier für d20 based rolls.",
"MESS.rollConfigModifierPlaceholder": "modifier",
"MESS.rollConfigHit": "Hit",
"MESS.rollConfigDmg": "Dmg"
"MESS": {
"attackCard": {
"target": "Target",
"cardTargetTooltip": "Double click to pan to token, if its scene is currently viewed.",
"chatCardResourceError": "There were not enough resources left for this attack!",
"toHit": "To Hit",
"damage": "Damage"
},
"rollConfig": {
"Advantage": "Roll with Advantage!",
"Normal": "Roll with just 1d20!",
"Disadvantage": "Roll with Disdvantage! :(",
"ModifierTitle": "Situational modifier für d20 based rolls.",
"ModifierPlaceholder": "modifier",
"Hit": "Hit",
"Dmg": "Dmg"
},
"actorSheet": {
"preparedSpellTracker": "prepared spells"
},
"itemSheet": {
"templateTexture": "Template Texture"
},
"FVTTSettings": {
"button": "make a mess!",
"description": "Mess settings menu."
},
"settings": {
"tabs": {
"info": "Info",
"templates": "Templates",
"dnd5e": "DnD5e",
"misc": "Misc."
},
"DnD": {
"specifics": "DnD5e specific options."
},
"templates": {
"alternateTexturesLabel": "Enable alternatative template texture rendering.",
"autotargetting": {
"label": "Enables automatic targetting of tokens when a template is moved around."
},
"drawTemplateBorders": {
"label": "Neither draw template borders nor highlight grid for textured templates.",
"hint": "Activating this removes borders and grid highlight of textured templates only. If you hover over the templates control, the highlight and the borders will be shown."
},
"DnD": {
"textureInfo": {
"header": "Default template textures",
"1": "Allows you to specify default textures chosen for spell templates, if none is set for the item.",
"2": "The damage type of the first damage field of the item is chosen."
}
}
},
"dnd5e": {
"numericalScrolling": {
"label": "Numerical Scrolling.",
"hint": "Allows to scroll inside of numerical input fields to modify them."
},
"itemSort": {
"label": "Sort Items Button.",
"hint": "Adds a button to automatically sort items in increasing alphabetical order."
},
"preparedSpellTracker": {
"label": "Prepared Spell Tracker.",
"hint": "Adds a tracker to the spellbook tab. This tracker allows for easier tracking of the maximum number of allowed spells. This does not get calculated automatically, it is more of a reminder as to how many you're allowed to have."
},
"rolling": {
"header": "Alternative rolling and targetting",
"activate": "Activate.",
"hint": "All following settings do only work if Activate is selected.",
"maxCrit": {
"label": "Use maximum crits.",
"hint": "Changes behaviour of critical damage rolls to maximize the damage of the extra dice!"
}
}
},
"misc": {
"placeables":{
"label": "Activate placeables changes.",
"hint": "Changes the way placeable previews are displayed, when dragged around. They will follow your mouse smoothly. Only when you start slowing down to place them precisely, they will be shown at the exact place (e.g. snapped to grid) where they will end up after creation."
}
}
},
"reloadReminder": {
"text": "Please refresh the page for you and all clients for most changes to take effect.",
"yes": "Ok, reload for me.",
"no": "No, i'll refresh manually."
}
}
}
26 changes: 15 additions & 11 deletions dist/lang/ja.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
{
"MESS.target": "対象",
"MESS.cardTargetTooltip": "ダブルクリックで現在のコマに注目します。",
"MESS.toHit": "ヒット",
"MESS.damage": "ダメージ",
"MESS.rollConfigAdvantage": "有利でロールする",
"MESS.rollConfigNormal": "通常ロール(d20を1個)をする",
"MESS.rollConfigDisadvantage": "不利でロールする(´・ω・`)",
"MESS.rollConfigModifierTitle": "d20用の状況修正値",
"MESS.rollConfigModifierPlaceholder": "修正値",
"MESS.rollConfigHit": "ヒット",
"MESS.rollConfigDmg": "ダメージ"
"MESS": {
"target": "対象",
"cardTargetTooltip": "ダブルクリックで現在のコマに注目します。",
"toHit": "ヒット",
"damage": "ダメージ",
"rollConfig": {
"Advantage": "有利でロールする",
"Normal": "通常ロール(d20を1個)をする",
"Disadvantage": "不利でロールする(´・ω・`)",
"ModifierTitle": "d20用の状況修正値",
"ModifierPlaceholder": "修正値",
"Hit": "ヒット",
"Dmg": "ダメージ"
}
}
}
Loading

0 comments on commit 19eb796

Please sign in to comment.