Giter Site home page Giter Site logo

tidy5e-sheet's Introduction

Tidy5e Sheet

GitHub issues Latest Release Download Count Forge Installs Foundry Core Compatible Version Latest Version Foundry Hub Endorsements GitHub all releases

Translation status

ATTENTION ! The the new TidySheet is out and the github project is been transfered there.

Github repo: https://github.com/kgar/foundry-vtt-tidy-5e-sheets

Installation

It's always better and easier to install modules through in in app browser.

To install this module manually:

  1. Inside the Foundry "Configuration and Setup" screen, click "Add-on Modules"
  2. Click "Install Module"
  3. In the "Manifest URL" field, paste the following url: https://raw.githubusercontent.com/sdenec/tidy5e-sheet/master/src/module.json
  4. Click 'Install' and wait for installation to complete
  5. Don't forget to enable the module in game using the "Manage Module" button

Color Settings

This module uses the colorsettings. It is a optional dependency but it is recommended for the best experience and compatibility with other modules.

Known issue / TODO

  • The current template for favorite items is to complicated ... we should be apply the same template of the module, Character Sheet Favorites, and divide as a option for the player the inventory between Weapons/Equipment/Consumables

Macro to prepare migration from 2.0.3 to 2.1.X

// IMPORTANT NOTES: 
// 1) THIS MACRO MUST BE LAUNCHED IN A 2.0.3 WORLDS IF YOU DON'T HAVE A BACKUP SADLY YOU LOST THE JOURNAL DATA
// 2) THIS MACRO MUST NOT BE LAUNCHED IN A 2.1.X WORLD
// 3) BEFORE LAUNCH THIS MACRO DO A BACKUP OF THE CURRENT WORLD JUST TO BE SAFE
// Ty to @zhell for the macro
const updates = game.actors.reduce((acc, a) => {
    const flags = foundry.utils.getProperty(a, "flags.tidy5e-sheet") ?? {};
    const asd = a.system.details ?? {};
    const upd = {};
    const props = {
        "character": ["gender", "age", "height", "weight", "eyes", "skin", "hair", "maxPreparedSpells"],
        "npc": ["trait", "ideal", "bond", "flaw"]
    } [a.type];
    if (!props) {
      return acc;
    }
    for (const prop of props) {
      upd[prop] = asd[prop] || flags[prop] || "";
    }
    const notes = ["notes", "notes1", "notes2", "notes3", "notes4"];
    for (const n of notes) {
      upd[`${n}.value`] = asd[n]?.value || flags[n]?.value || "";
    }
    acc.push({
        _id: a.id,
        "flags.tidy5e-sheet": upd
    });
    return acc;
}, []);
await Actor.updateDocuments(updates);

Features

Feature: Item controls

All item controls are hidden by default - you can use right mouse click to show a context menu for all available item interaction: equip/unequip, attuned/attunement required, prepared/unprepared, add/remove favorite, delete. If you don't want the context menu - that was created to conserve space and was the only way to make the option avalable in the grid view - you can bring back the classic item controls as a user setting. The inline controls will only show for PC sheets and the item/spell inventory in list layout. For every other view or sheet it is either impracticable or too spacious.

Feature: Sheet lock

To be able to add or delete items you'll have to "unlock" the sheet with the lock icon in the navigation bar. The lock button in the "locked" position also hides any section that has no content to clean up the sheet a little.

Feature: Grid/List view

You can toggle item and spell inventorys into grid or list layout. List is the default view. Grid offers a more condensed overview of your icons and spell with focus on icon art. Youll still able to see the main infos like quantity, charges, equipment/preparation/attunement and if an item is magical. Every other info will show in the info box to the left when you hover over an item.

Feature: Better Spell Level Buttons for DnD 5e

This is an embedded version of the module Spell Level Buttons for DnD 5e, replaces the spell level select dropdown menu with buttons.

Feature: Multiclass Spellbook Filter

This is an embedded version of the module Multiclass Spellbook filter for 5e (fork), it adds options for players to organize their spellbook by which class the spell is for. Useful for multiclass characters or characters with the magic initiate feat.

To get the filter to work, you will need to populate the data in each spell.

All settings for this module are found in Foundry's settings menu under the module settings tab.

Currently all of the settings that are available are client-side settings. This means that what you change here will not have an effect on any other computer or player.

Using the filter

This module relies on populating data that doesn't seem to exist by default: "Is this spell a {class} spell for you?" So the first step is going to be going through each spell on your sheet and selecting the spell's class in the itemsheet's details tab.

Note: Your selection does not change which ability modifier your spell uses. That is configured elsewhere in the sheet.

Afterwards, if the proper setting is enabled, you will see a dropdown menu at the top of the spellbook with the rest of the filters. Selecting an one of the classes will hide all of the spells that don't match your selection.

Icon Replacement

Some players find it helpful to differentiate spells by class even when the list is not filtered. To help with that this module provides the option to 'cover' the spell's icon in the spellbook with the icon of their source class.

To enable this behavior enable it in the module's settings. This setting is disabled by default.

Note: This feature does not change any data or other behaviors. The spell's icon will still be what is displayed in chat and in other sections of the sheet.

Feature: All your favorite items are synced between modules

The favorite system is syncronized with the module Character Sheet Favorites and Favorite tab

Feature: Lazy Money/Hp/Experience

This is an embedded version of the module Lazy Money, Easily add or remove currency, Hp and Experience with automatic conversion and no overdraft.

Feature: Attunement Tracker

In the PC inventory you'll find the new attunement tracker at the bottom left. By default you can attune to 3 items. DMs can change the attunement limit for each character by entering a max value in the tracker.

Feature: Exhaustion, Death Save and Rest on NPC

An 'integration more from flavor than from system functionality, a very "crude" integration of Exhaustion, Death Save and Rest (both Short and Long) is been applied on the NPC sheet

Settings

there are plenty of settings from dark mode to round/square portraits, health visualization and user specific options. I tried to make each settings description as clear as possible so you should be able to carefully read an pick what you want.

Attribution Languages

Additional Translations generously provided by: Japanese: @BrotherSharp, @Asami Italian: @Simone [UTC +2] Korean: @KLO Brazilian Portuguese: @rinnocenti French: @temvaryen

Thank you very much!

Build

Install all packages

npm install

dev

dev will let you develop you own code with hot reloading on the browser

npm run dev

npm build scripts

build

build will build and set up a symlink between dist and your dataPath.

npm run build

build-watch

build-watch will build and watch for changes, rebuilding automatically.

npm run build-watch

prettier-format

prettier-format launch the prettier plugin based on the configuration here

npm run-script prettier-format

Issues

Any issues, bugs, or feature requests are always welcome to be reported directly to the Issue Tracker, or using the Bug Reporter Module.

License

This package, written by sdenec, is under an Creative Commons Attribution 4.0 International License and the Foundry Virtual Tabletop Limited License Agreement for module development.

Credits

tidy5e-sheet's People

Contributors

346184 avatar akrigline avatar arbron avatar brnmuller avatar brothersharper avatar carnvanbeck avatar drdwing avatar flamewave000 avatar fuyuennju avatar git-gor avatar hmqgg avatar karelzavicak avatar kgar avatar kriszkern avatar macdhollister avatar maximetkt avatar mhilbrunner avatar p4535992 avatar pizzamarinara avatar ravingdragoon avatar riccisi avatar rinnocenti avatar sdenec avatar sumurai8 avatar szefo09 avatar thegiddylimit avatar vitpetricak avatar wallacemcgregor avatar zeteticl avatar zotydev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tidy5e-sheet's Issues

Inspiration button affects first char sheet opened if multiple are open

If you open multiple character sheets, then click on the "inspiration" button, it will affect the first sheet that was opened, regardless of which sheet you are clicking on.

For example.

Open sheet for Billy the bard.
Open sheet for Sarah the sorcerror.
Click on inspiration button for Sarah.
Billy gets inspiration.

Localization issue

Hello,

There is an issue for the french localization:
image

The first title (first tab) is on two lines when there are items bookmarked.
Default DnD5 sheet doesn't have this issue.

Style Settings

Hey! Thanks for your work, it brings a good option to the (virtual) table.
One of my players likes the layout of the tidy sheet styling, but has asked about the possibility of alternate styling for some of the features so that it could better reflect their own preferences. Would you consider adding settings to toggle the styling of the following features?

  • Font style in general; their comment on the rounded font of the tidy sheet is that it feels too modern.
  • Shaded section backgrounds of the Biography and Journal sheet sections. My player prefers the absence of these shaded sections, which also contribute to the more modern feel.
  • The icons that surround and partially obscure the character portrait. Is there perhaps another sheet location these could be presented?

Essentially they would like to have the presentation/functionality of the tidy styling, but also retain the 'weathered aesthetic' of the default Foundry styling.

Damage Resist/Immune/Vuln Edit Not Functioning

Hello,

As of the most recent update (version 0.2.18), when attempting to edit the Damage Immunities, Damage Resistances, and Damage Vulnerabilities on the PC and NPC sheets, it does not function. Normally clicking on the edit icon pops up a small window that allows you to modify the contents, this is not happening.

The other entries in the Traits section are still working as normal.

Thank you for your work, the sheets are great.

Consider adding charges in the favorites section

Hi,

Consider adding the number of charges remaining for feats or spells in the favorites tab.
For example, a player with a monk character wouldn't have to click on the "feats" tab to know the remaining number of Ki charges he has.

Request: Responsive format/ Simple Mobile support

I would like to request that tidy5e be responsive or support simple mobile.

When using simple mobile:
on landscape, the top section is a fixed height and thus you can't really see anything inside the sheet.
on portrait, things are better, however the top section still gets cut off on the sides. The content is usable, but very smushed together or floats weirdly.

Screenshot_20200730-104736
Screenshot_20200730-104703

Suggestion: Add Ability to click stat bonus to trigger ablity/save throw

Above pretty much sums is up but take the char sheet in the readme and the con stat. If the user clicks on the +2 of the con stat bonus skip the save/stat dialog and go directly to the stat roll dialog and if they click the +4 go directly to the save throw dialog. They can still click the Constitution label as normal this just give a short cut to eliminate one extra dialog box.

Bob

CSS for NPC changes too

image
The CSS in NPC sheet change in highlights as Name, Attributes valor.. etc, for white in Dark version. making it difficult to read the npcs.

Could have a dark version for npc sheet too?

Make the sheet resizable

Consider making the sheet width resizable as well. Would make the bio tab much more readable.

Font Size Spillovers

I don't recall noticing this before, but currently the font size in certain places seems to be a bit too big to fit into certain boxes. For example on a Player Character sheet, the ability scores show spillover, obscuring parts of the words Intelligence and Constitution and even shaving the side on some of the numbers:
image

Also, the checkbox to set proficiency for Charisma isn't accessible because it's gone off the bottom.

On this NPC sheet, it's very noticeable for AC and the 6 in 16 is getting shaved on the side a bit under Dex:
image

Suggested Option: Show Exhaustion/Inspiration Icons on Portrait If > 0

Rather than always being hidden or always being shown, it would also be nice to have an option for Exhaustion and Inspiration icons to be hidden if they have a value of 0 (Exhaustion level 0, Inspiration = false) but shown on the icon while they have a value of 1 or greater (Exhaustion 1-6, Inspiration = true).

edit: It would be a nice reminder for things that a character doesn't always have and might otherwise forget about while they're hidden away.

Always Prepared spells sort weird in Favorites Tab

Spells that are flagged as 'Always Prepared' are sorted together on the favorites tab instead of by spell level. This results in, for example, cantrips and cleric domain spells sorting together separately from other spells. Would love to see the sorting changed to be by spell level as it is in the Alt5e sheet.

Macros that update sheet cause windows to open?

First of all, thanks for your work, love the UI of the sheet! Way better than stock, imho.
Second, I'm not sure where the issue is coming from, but I experience it using the tidy5e sheets and not on stock sheets so I'm letting you know from a compatibility standpoint.

When using the community rage macro, which I'll copy-paste below, running the macro while a character's sheet is open causes all item/feature windows for that character that have been opened that session to be re-opened.

For example:
Player is controlling Bob the barbarian.
Player opens Bob's sheet.
Player edits a weapon opening a window, then closes it.
Player runs rage macro while Bob's sheet is open.
Macro edits the character, sheet is updated, and the weapon edit window is reopened.

This happens for any/all items/features that have been opened that session.
It only happens when the actor's sheet is open.
It only happens when rage is activated, not when rage is deactivated.

Again, this may be an issue w/the macro? I'm not sure. I looked through the macro code and other than updating the sheet I don't see what could be causing this behavior. I don't experience it w/the stock sheets, which is probably what the script writer is testing against. Not sure how changing the layout of the sheet could cause this problem, but thought you should be aware.

Rage community macro:

//		DISCLAIMER:		This macro is an evolved version of the original D&D 5e Rage Macro masterwork written by Felix#6196.
//						Norc#5108 is now maintaining this macro along with continued support from Felix.
//
//
//		Updates:		1. 	Fixed errors resulting from declarations of "actor" and "token" in a script macro. 
//						2. 	Added automatic Totem Spirit: Bear detection and resistance application 
//							PLEASE NOTE: A minor update to the Totem Spirit item's name in the character sheet is needed if 
//							the VTTA Beyond Integration was not used to create sheet. See Bonus Tip 1 below
//						3. 	Added error messages for trying to rage with no token or no barbarian selected
//						4. 	(Felix) added resource/usage deduction and errors (re-added after accidentally overwriting the addition) 
//						5. 	(Felix, 2020/05/29) Fixed rage damage at level 8
//						6. 	(2020/05/30) Implemented Felix's idea to use global melee weapon attack bonus instead of modifying items
//						7. 	(2020/05/30) Improved Rage icon toggling to be more reliable
//						8. 	(2020/05/30) Removed code from the resource management that created dependency on The Furnace Advanced Macros
//						9. 	(2020/05/30) Implemented Felix's fix for issue where new resistances and rage uses were not saving properly
//						10.	(2020/05/30) Fixed rage damage formula again...
//						11.	(2020/05/30) Added basic support for non-strength Based barbarians (Dex, Hexblade)
//						12.	(2020/05/30) Added optional ability to toggle the icon and name of the macro itself based on current raging state.
//						13. (2020/06/04) Fixed bug with experimental macro name/icon toggle only by renaming "actor" and "token"
//						14. (2020/06/04) Added basic localization support for messages and to allow searching for translated class features

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!	Bonus Tip 1: Bear Totem Spirit Barbs
//!!!	If you chose the Spirit Seeker Primal path, and at level 3 you chose the Bear Totem Spirit (resistance to all non-psychic damage), 
//!!!	in your 5E character sheet, double-check that the name of your Totem Spirit feature to EXACTLY "Totem Spirit: Bear".  Note: Importing
//!!!	via VTTA Beyond Integration uses this name already. The macro then automatically adds the extra Bear Totem Spirit resistances.
//!!!
//!!!	Bonus Tip 2: Thrown Weapons
//!!!	When a barb throws a weapon using strength, typically a javelin but also possibly a dagger, dart, sword, bar table etc, the rage bonus
//!!!	should not be added because it is a ranged attack. However, D&D5E calls javelins and daggers Melee Weapons, because technically they
//!!!	are both. To solve this issue, if you always throw the weapon, click the weapon's details and change the attack type to "Ranged Weapon
//!!!	Attack" in the Action Type dropdown. If you want, you can add a second copy of the item (with no weight/quantity) to use for meleeing.
//!!!
//!!!	Bonus Tip 3: The Rage Condition                                                                                                                       
//!!!	If you use the Combat Utility Belt module's Condition Lab, try adding a condition called "Raging" with the same icon 			   
//!!!	as the optional rage icon overlay, 'icons/svg/explosion.svg' by default.  See EXPERIMENTAL MACRO ICON/NAME TOGGLE section below.
//!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!   OPTIONAL TOKEN ICON-	On by default. If a path to a rage icon is defined, it displays like a condition on the raging barbarian.
//!!!							To use a different icon, manually change the filepath below or leave it empty ('') to disable the effect.
//!!!
const rageIconPath = 'icons/svg/explosion.svg';
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!   OPTIONAL RESOURCE DEDUCTION 	On by default. First option automatically subtracts from the Rage Resource if enabled.
//!!!									Second option prevents raging if no Rage resource is left. Set to false if you do not want this.

				const deductResource = true;
				const preventNegativeResource = true;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!   OPTIONAL NON-STRENGTH BARBARIAN SUPPORT		ONLY override to FALSE if your barbarian does not use Strength to make melee attacks
//!!!												and therefore does not get the Rage bonus to melee weapon attack damage. 
//!!!		
				const strAttacks = true;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!	EXPERIMENTAL MACRO ICON/NAME TOGGLE		If enabled, the macro icon and name toggles based on the barbarian's rage state. 
//!!!											CAUTIONS: 	1. 	This feature is off by default and is intended for ADVANCED USERS ONLY. 
//!!!														2. 	Requires configuration using "The Furnace" module for a player to run!
//!!!															The GM needs to grant The Furnace's "Run as GM" permission for this macro.
//!!!														3. 	Works best with only one barbarian using this feature at a time.

				//To auto-toggle the macro's icon/name, override toggleMacro to true below.
				const toggleMacro = false;

				//To use a different icon, manually change the filepath here
				const stopRageIconPath = 'icons/svg/unconscious.svg';

				//You must update the following constant to this macro's exact name for the macro icon toggling to work.
				const rageMacroName = 'Rage';
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//declarations
let barb = '';
let chatMsg = '';
let bear = '';
let noRage = false;
let toggleResult = false;
let macroActor = actor;
let macroToken = token;

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!	BASIC LOCALIZATION SUPPORT				Sets names of D&D5E features as constants instead of hardcoding to allow easier translation.
//!!!											Sets error messages as constants also for easier translation.
const barbClassName = 'Barbarian';
const rageFeatureName = 'Rage';
const bearTotemFeatureName = 'Totem Spirit: Bear';

const errorSelectBarbarian = 'Please select a single barbarian token.';;
const errorNoRage = ' does not have any rage left, time for a long rest!';
const warnMacroNotFound = ' is not a valid macro name, please fix. Rage toggle successful but unable to alter macro.';
const errorSelectToken = 'Please select a token.';
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


//main
//check to see if Actor exists and is a barbarian
if (macroActor !== undefined && macroActor !== null) {
				
	// get the barbarian class item
	barb = macroActor.items.find(i => i.name === `${barbClassName}`);
	if (barb == undefined) {
		ui.notifications.warn(`${errorSelectBarbarian}`);
	}
	if (barb !== undefined && barb !== null) {
		chatMsg = '';
		let enabled = false;
		// store the state of the rage toggle in flags
		if (macroActor.data.flags.rageMacro !== null && macroActor.data.flags.rageMacro !== undefined) {
			enabled = true;
		}
		
		// if rage is active, disable it
		if (enabled) {
			chatMsg = `${macroActor.name} is no longer raging.`;
			// reset resistances and melee weapon attack bonus
			let obj = {};
			obj['flags.rageMacro'] = null;
			obj['data.traits.dr'] = macroActor.data.flags.rageMacro.oldResistances;		
			obj['data.bonuses.mwak.damage'] = macroActor.data.flags.rageMacro.oldDmg;	
			macroActor.update(obj);
			
		// if rage is disabled, enable it
		} else {
			if (deductResource) {
				let hasAvailableResource = false;
				let newResources = duplicate(macroActor.data.data.resources)				
				let obj = {}
				// Look for Resources under the Core macroActor data
				let resourceKey = Object.keys(macroActor.data.data.resources).filter(k => macroActor.data.data.resources[k].label === `${rageFeatureName}`).shift();
				if (resourceKey && (macroActor.data.data.resources[resourceKey].value > 0 || !preventNegativeResource)) {
					hasAvailableResource = true;
					newResources[resourceKey].value--;					
					obj['data.resources'] = newResources 
					macroActor.update(obj);
				}
				if (!hasAvailableResource) {
					ui.notifications.error(`${macroActor.name} ${errorNoRage}`);
					noRage=true;
				}
				if (macroActor.sheet.rendered) {
					// Update the macroActor sheet if it is currently open
					macroActor.render(true);
				}
			}
			
			//activate rage if there is rage available, or if it is okay to rage with 0 resources
			if (!noRage) {
				chatMsg = `${macroActor.name} is RAAAAAGING!`;
				// update resistance
				let obj = {};
				// storing old resistances in flags to restore later
				obj['flags.rageMacro.enabled'] = true;
				obj['flags.rageMacro.oldResistances'] = JSON.parse(JSON.stringify(macroActor.data.data.traits.dr));
				// add bludgeoning, piercing and slashing resistance
				let newResistance = duplicate(macroActor.data.data.traits.dr);
				if (newResistance.value.indexOf('bludgeoning') === -1) newResistance.value.push('bludgeoning');
				if (newResistance.value.indexOf('piercing') === -1) newResistance.value.push('piercing');
				if (newResistance.value.indexOf('slashing') === -1) newResistance.value.push('slashing');
				//If bear totem, add bear totem resistances.
				bear = macroActor.items.find(i => i.name === `${bearTotemFeatureName}`)
				if (bear !== undefined && bear!== null) {
					if (newResistance.value.indexOf('acid') === -1) newResistance.value.push('acid');
					if (newResistance.value.indexOf('cold') === -1) newResistance.value.push('cold');
					if (newResistance.value.indexOf('fire') === -1) newResistance.value.push('fire');
					if (newResistance.value.indexOf('force') === -1) newResistance.value.push('force');
					if (newResistance.value.indexOf('lightning') === -1) newResistance.value.push('lightning');
					if (newResistance.value.indexOf('necrotic') === -1) newResistance.value.push('necrotic');
					if (newResistance.value.indexOf('poison') === -1) newResistance.value.push('poison');
					if (newResistance.value.indexOf('radiant') === -1) newResistance.value.push('radiant');
					if (newResistance.value.indexOf('thunder') === -1) newResistance.value.push('thunder');
				}
				obj['data.traits.dr'] = newResistance;
				macroActor.update(obj);
			
				// For Strength barbarians, update global melee weapon attack bonus to include rage bonus
				if (strAttacks) {
					// Preserve old mwak damage bonus if there was one
					let dmg = macroActor.data.data.bonuses.mwak.damage;
					if (dmg==null || dmg == undefined || dmg == '') dmg = 0;
					obj['flags.rageMacro.oldDmg'] = JSON.parse(JSON.stringify(dmg));
			
					// Determining the barbarian level
					let barblvl = barb.data.data.levels;
			
					// Formula to determine the rage bonus damage depending on barbarian level
					let lvlCorrection =  barblvl === 16 || barblvl === 17 ? 1 : 0;
					let rageDmg = 2 + Math.floor(barblvl / 9) + lvlCorrection;
				
					//actually add the bonus rage damage to the previous bonus damage
					//respect roll formulas if present.
					if (parseInt(dmg) == dmg) {
						obj['data.bonuses.mwak.damage'] = parseInt(dmg) + rageDmg;
					} else {
					obj['data.bonuses.mwak.damage'] = `${dmg} + ${rageDmg}`;
					}
					
					macroActor.update(obj);
				}
			}
		}

		if (!noRage) {
			// toggle rage icon, if rage path is defined above
			(async () => { 
				toggleResult = await macroToken.toggleEffect(rageIconPath);
				if (toggleResult == enabled) macroToken.toggleEffect(rageIconPath);  
			})();
			
			//toggle macro icon and name, if macro name is correct and stop rage icon path is defined
			let rageMacro = game.macros.getName(rageMacroName);
				//check for name of macro in its "off" form
				if (rageMacro == null || rageMacro == undefined) {
					rageMacro = game.macros.getName('Stop ' + rageMacroName);
				}
			let obj = {};
			if ( (rageMacro !== null && rageMacro !== undefined) && toggleMacro == true && 
					+ (stopRageIconPath !== null && stopRageIconPath !== undefined && stopRageIconPath !== '') ) {
				if (enabled) {
				  obj['img'] = rageIconPath;
				  obj['name'] = rageMacroName;
				} else {
				  obj['img'] = stopRageIconPath;
				  obj['name'] = 'Stop ' + rageMacroName;
				}
				rageMacro.update(obj);
			} else {
			if (toggleMacro == true) ui.notifications.warn(`${rageMacroName} ${warnMacroNotFound}`);
			}	
		}
	}
} else ui.notifications.warn(errorSelectToken);
// write to chat if needed:
if (chatMsg !== '') {
	let chatData = {
		user: game.user._id,
		speaker: ChatMessage.getSpeaker(),
		content: chatMsg
	};
	ChatMessage.create(chatData, {});
}

Suggestion 3-way toggle for spell book filter

It would be really nice to have the spell book and possibly other filters to be three way. For example it would be nice to see all spells that don't require concentration vs only spells that do require it or not set. Perhaps the use strike through font for the third option.

Traits overlap Survival skill on Firefox

The traits section overlaps the Survival skill when viewed via Firefox. Running Tidy5e 0.2.8. Seems to occur regardless of whether the Skill Customization for D&D 5e module is active or not. Occurs regardless of whether the traits toggle is on or not as well.
image
image

[Bug?] Roll Hit Dice - TypeError

Roll Hit Dice +@bonus in the roll formula comes up with an error message:

TypeError: Cannot read property "value" of undefined

03j0Rcv

The error message appears with or without boni added in the "Situational Bonus?" field.

Css items

image

the number of quantities, and price, is dark. and the hotlinks are clear.

Issue in the skills column

Hi,

I have an issue in the skills column of the first tab. It's truncated and I can not scroll to reveal the bottom of this section. See screenshot:

image

FoundryVTT 0.6.3
DnD 0.9.3

Link Tooltips Appearing Behind Character Sheet Window

Link tooltips are appearing behind the character sheet window on hover. Not sure what's causing this or if it's due to your mod. Screen shot attached. Thank you!

PS I love this mod, the char sheet layout is gorgeous and very readable. Fantastic work. <3

DndBeyond Integration Doesn't work

Not sure if this is your issue or VTA - Dndbeyond Integration...

If I import my character the only thing that isn't working is the Background / Traits / Personality Traits, Ideals, Bonds, Flaws, don't seem to go to the correct spot in the sheet. Everything else is awesome.

Cannot edit damage immunities, resistances, vulnerabilities

NPC and actor damage immunities, resistances, and vulnerabilities cannot be edited with Tidy sheet enabled. Clicking on any of the three in Tidy sheet does not open a menu with the option to add or remove different elements. If Tidy sheet is disabled, the menu appears as expected.

Request on NPC sheets

Hi!
As a DM I find super useful to have attack, features, actions and even inventory and spellbook all expanded as a default. Having to expand all of this one by one to check what a monster does on the fly is a bit cumbersome.

I'd love if the module had an option for npc or pc sheets to have all of this expanded as a default, so you can turn this on or off depending on your preferences.

Thank you for the module in any case!

Unable to Increase Spell Slots Above Default Maximum

The user is prohibited from increasing a spell slot above its default maximum spell slots for your level. For instance, you cannot give yourself a second 8th level spell slot, even if through some means (such as Dynamic Effects), an item grants you a second 8th level slot.

'Secret' Text Spacing

The spacing between the top bar of the 'Secret' text styling does not match the bottom spacing. It displays properly when editing the text, but the spacing changes when viewing the result.

Editing
image
Viewing
image

Support for narrow displays

On very narrow displays - and when using the "Simple-Mobile" module - the range for the attributes is not high enough, so the value for Charisma disappears.

Simply increasing the height for the css class ".tidy5e.sheet.actor .ability-scores" in line 963 of the file "tidy5e-sheet.css" to 373px would fix this.

This change would allow the character sheet to be displayed and used on a smaller tablet.

2020-07-27 08_38_43-Foundry Virtual Tabletop โ€ข A Standalone Virtual Tabletop Application

Feature Request: Make Initiative Label Clickable to Roll

Adding the ability to click the 'Initiative' label so roll would be a small quality of life change. Most of my players are used to rolling Initiative this way from the Roll20 or Alt5e sheets and miss it on the Tidy5e sheet.

Overlap in attributes panel

overlapp

I get this pretty ugly overlap between my skills and my traits.

Browser: Firefox
FoundryVTT: 0.6.2
D&D5e: 0.93
Resolution: Full HD
Tidy5e: 2f5124c

Charges not saving properly

If you update the number charges on the character sheet using the quick way in the column next to the item it does not save. You have to go all the way into details to get the charges to change properly.

Usage Error

choose not to put the dead overlay.

it is a suggestion, because I use CUB and I prefer to use the lab, and I prefer to use the unconscious icon when a player fall with 0 HP.

Vehicle sheet support

Hi, love this module, adds a lot more functionality to the sheets, and is just a whole lot more aesthetically pleasing with its minimalist design. Do you plan on bringing this module to the new vehicle sheets? They are rather handy, but it would be so much easier to use provided this module was compatible.

Just a few suggestions/requests (mostly requests) if and when you:

  • more than one place for speed or easily changeable speed, vehicles usually have more than one, and you seem to add to fit needed functionality.

  • More obvious layout for stations, the current equipment page is rather lackluster for the case of crew stations, maybe they could have their own tab, so that they can be more opened, and have kinda dedicated mini-sheets within that tab.

At the end of the day whatever you do will be grand, hope you can get to this sheet one day.

Formatting Issues as Viewed by Players without Owner Permissions

Currently the view that other players can see for player character sheets they don't own could use some tidying.

Here's the Tidy Sheet for a player character as viewed by someone with Limited permission:
image

I'm not sure what the empty section on the top is and at least for my purposes I'd prefer the biography next to the description field as opposed to under it.

I think the Alt5E Sheet layout as shown below in the same situation is a good layout to emulate (even if a little redundant on the name display):
image

Feature Request: Death Save Tracking

Would love a section for tracking Death Saves, even if it's just a series of checkboxes or circles you can fill in. I feel like there is space for this under the Hit Points/Hit Dice/etc row, above the varies tabs.

Request: Option to Favorite by Type

If possible, I'd like to request the ability to favorite by item/spell type. For example: when playing, I will always favorite any equipped weapons, so that I can easily have my attacks ready. If I could favorite all weapons, I wouldn't need to track and manually favorite whatever I pick up (much like how D&D Beyond has it's Attack/Actions section). The same goes for any prepared spells or cantrips.

I feel like this would add great compatibility with modules that frequently change your items or spells, like VTTA-Beyond or Pick-Up-Stix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.