Close
Close
Advanced Search

Fantasy Grounds 'Advanced Spell Damage' extension

Fantasy Grounds 'Advanced Spell Damage' extension

ADD TO WISHLIST >
Multiple File Formats
$8.50 
$10.00

Welcome to Christmas in July! In celebration, this digital title has been marked down by up to 25%! For more values, visit our Christmas in July sale page.

Fantasy Grounds 'Advanced Spell Damage' extension for use with 'Fantasy Grounds VTT'

This extension will parse 'player's handbook' spells and add the 'at higher level' cast extra dice into the 'damage' section of the spell.

Added onto each 'Spell (Cantrips/level)' header bar, is a 'cast level' box you can use to select the level to cast this group of spells.

You can see these extra lines in the 'Spell/Ability Damage' view. These extra dice will be marked with a 'lvl?', and when the 'damage' is 'cast/pressed/dragged' the dice upto the requested cast level will be included in the roll.

Below you can see the 'Fire Bolt' cast at level 6, rolling 2d10 damage instead of the normal 1d10. Also shown is 'Burning Hands' been cast at level 3, rolling 5d6 instead of the normal 3d6.

RULESET : 5E

Fantasy Grounds Forum (Cut'n'Paste): https://www.fantasygrounds.com/forums/showthread.php?61703-extension-Advanced-Spell-Damage-Extension-casting-spells-at-higher-level

Please report any spells that are rolling the wrong dice amount. I've checked a lot of spells so the chances of missing some are high, and I do not own all modules.

Added extra effect line codes for,

  • [SLVL] - converts into 'spell cast level'.  ie 3rd level spell cast at 3rd level [SLVL] => 3, 4th level [SLVL] => 4
  • [ULVL] - converts into 'upped spell cast level'. ie 3rd level spell cast at 5th level [ULVL] => 2
  • [CLVL] - cantrip casting stage,  1-4 level [CLVL] => 1, 5-10 level [CLVL] => 2, 11-16 level [CLVL] =>3, 17+ level [CLVL] => 4
  • [DLVL] - cantrip up casting stage,  1-4 level [DLVL] => 0, 5-10 level [DLVL] => 1, 11-16 level [DLVL] =>2, 17+ level [DLVL] => 3
Effect line codes support prefix,
  • 'HTQ' for half/third/quarter
  • 2-9 for multiply amount
  • '^' - increment ability value by 1. ( Used with 'H' to make a value of 1-10 when ability is 1-20 )
  • 'T^' - increment ability value by 2.
  • 'Q^'  - increment ability value by 3.
Effect line codes support postfix,
  • 'n' for the dice type to generate
Effect line code samples,
  • [HSLVL4]  -> converts to 'half' spell cast level d4, eg 5th level spell, => 2d4
  • [ULVL8] -> convertes to 'upcast level' d8, eg 3rd level spell cast at 6th level => 3d8
  • [H^ROGUE6] -> converts number of rouge levels 1-20 into 1d6-10d6

Supported modules,  ( Others may also work if they follow the correct spell wording. )

  • 5E SRD Data
  • DD Basic Rules
  • PHB Deluxe
  • Volos Guide to Monsters
  • Xanathar's Guide to Everything
  • Sword Coast Adventurer's Guide
  • Elemental Evil Players Companion
  • Icewind Dale Rime of the Frostmaiden
  • Rise of the Drow Collectors Edition
  • 5E Effects Coding - Spells

Notes,

  • DICE can be a dice or a modifier but not both.  eg, 1d4  or 5
  • LEVEL is the level of spell slot this applies to/from.

Damage parse structure,

  • damage increases by DICE for each slot level above LEVEL[st,nd,rd,th]
  • damage increases by DICE for each slot above LEVEL[st,nd,rd,th]
  • damage dealt by the attack increases by DICE for each slot level above LEVEL[st,nd,rd,th].
  • damage for both effects of the spell increases by DICE for each slot level above LEVEL[st,nd,rd,th].
  • damage (both initial and later) increases by DICE for each slot level above LEVEL[st,nd,rd,th].
  • damage increases by DICE for every two slot levels above [the] LEVEL[st,nd,rd,th].
  • damage increases by DICE when you reach LEVEL[st,nd,rd,th] level (2d6), LEVEL[st,nd,rd,th] level (3d6).
Damage parse structure examples,
  • damage increases by 1d6 for each slot level above 1st
  • damage increases by 1d6 for each slot above 1st
  • damage dealt by the attack increases by 1d6 for each slot level above 1st.
  • damage for both effects of the spell increases by 1d8 for each slot level above 3rd.
  • damage (both initial and later) increases by 1d4 for each slot level above 2nd.
  • damage increases by 1d8 for every two slot levels above [the] 2nd.
  • damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).

Heal parse structure,

  • healing increases by DICE for each slot level above LEVEL[st,nd,rd,th]
Damage parse structure examples,
  • healing increases by 10 for each slot level above 6th
Update to v3.2
  • Fix for double spells on drop.
Update to v3.1
  • Special effect code '^' now add 2 or 3 for 'T/Q' mode.
  • Bug fixes for 'Scroll of'.
  • Bug fixes for blank 'POWER' cast level processing.
  • Bug fixes for parse issue fixes with '^' in some situations.
  • Bug fixes for tracking of 'spell tick off' with double click on cast level box.
Updated to v3.0
  • Added "Grim Press" support to copy "link" from spell description and replace it with the referenced text, when a spell is dropped onto the character sheet.
Update to v2.9
  • Updated for rule set use of 'Q' and 'T' in effect code.
  • change 'ILVL' it a general '^' increment by 1 code.
Update to v2.8
  • Tidy up character sheet cast level box and edit boxes due to changes in rule set.
  • added 'ILVL' effect line code.
Update to v2.7
  • Update for FG rule set changes.
Update to v2.6
  • Fix for NPC 'innate spells', that were generating at max level.
  • added new 'Cast Level:' for NPC 'innate spells', to allow for higher level casting. ( See below. )
Updated to v2.5
  • Added support for one click druid.
Updated to v2.4
  • Added up-casting spells in 'action' group.
Updated to v2.3
  • Added custom spell code for searing smite, witch bolt, pulse wave, dragon's breath, ice knife, mind sliver, motivational speech.
  • Fixed a couple of issues with flame strike, and bigby's hand.
Updated to v2.2a
  • Add extra protection when 'advanced effects' is not been used.
Updated to v2.2
  • Added 'option menu' item to enable 'keep spell token' from 'Critically Awesome Essentials' extension
Updated to v2.1
  • Fixed a missing 'on level' change call back
  • Added support for 'AdvancedEffects' extension.
Update to v2.0
  • Added support for spell casting level on npc sheet window
  • Optimisation of spell generation on npc drop on combat tracker
Update to v1.9
  • Added support for spell casting level for npc into the combat tracker.
Update to v1.8
  • Added support to patch effect lines for cast level
  • Checked and added effects cast level for spells
Update to v1.7
  • Better spell cast character update sync when spell cast level changes and character level changes
  • cantrips now reflect character level
  • additional spell parsing for custom spell modules
Update to v1.6
  • adds support for '5E SRD Data'
  • adds support for 'D&D Basic Rules Player'
  • adds support for 'D&D Xanathar's Guide to Everything'
  • adds support for 'D&D Sword Coast Adventurer's Guilde'
  • adds support for 'D&D Volo's Guide to Monsters'
Update to v1.5
  • Added code to patches up the non-parsed spells defined in the 5e rules set.
Update to v1.4
  • Added initial support of parse heal 'at higher level' information.

Update to v1.3

  • Dynamic update of effect damage text and tool tip when spell cast level is changed.
  • Double click on spell cast level box to tick off that spell. ( no checks on validity/availablity of the spell level are made. )

Update to v1.2

  • moves spell cast level to a better location
  • stores the the cast level within the player character so now it keeps its value between sessions
  • better default start values
Known Issues, ( todo... )
  • Adjust 'cast level' value to reflect available spell slots available.
  • Layout might change with the development
Spell auto setup for higher levels
Casting spells at a higher level
Spell higher level damage/tooltip
Support for casting level on NPC. Adding a 'Cast Level: ' MUST be below the 'Level: ' in an NPC innate spell sections. This will allow the spell to be generated at a higher level. ( Note its also possible to adjust the 'Level: ' value on its own as the highest of each will be used.  ( But changing the 'Level: ' will make it look like a spell mistake, as the reference manual source will now not match the NPC data. )
extra cast level in npc data
When the NPC is added to the combat tracker, 'Innate Spells' will now pick up the 'Cast Level: ' value in the NPC text block for the spell. ( or use the 'Level: ' value, which ever is highest )
Also NPC regular spells get a 'Cast Level' control box that when changed will update the spell description to reflect the selected level.  And if you 'double click' on the 'Cast Level' box it will reduce the available spell at that level by one and reset to the cast level box back to '1'.
npc innate at higher level
 
 More from this Title's Contributors
 
 Customers Who Bought this Title also Purchased
Reviews (2)
Discussions (12)
Customer avatar
mark P July 17, 2021 10:35 pm UTC
PURCHASER
When i change the cast lvl of a npc, the damage not changing for example ray of frost, on pc's it works
Customer avatar
Brian B March 22, 2021 3:42 am UTC
PURCHASER
I absolutely love this extension! Makes spell casting a lot easier! Great job on this.

FYI - The latest update to fantasy grounds seems to have messed up the extension (3/21/2021)
Customer avatar
Bratch N March 22, 2021 4:45 pm UTC
CREATOR
I'm sure it has !!

I'll try and get a look at it soon.. but work is very busy at the moment hence the low update rate. ( On all my extensions. )
Customer avatar
Badger B February 22, 2021 3:41 pm UTC
PURCHASER
No problems but honestly I should have left it a while back when I got the module. It took the huge patch on FG to force me back here looking for all the extension updates :)

but seriously thank you for this extension, like many others it makes me wonder how i coped with the software without it!
Customer avatar
Badger B February 21, 2021 6:09 am UTC
PURCHASER
Thank you very much for such an outstanding job on this app!
Customer avatar
Bratch N February 22, 2021 11:44 am UTC
CREATOR
Thank you for the fantastic review message.
Customer avatar
Daniel G January 27, 2021 5:02 pm UTC
PURCHASER
I was looking for an extension like this. Initial setup is a bit of a pain as it seems you have to re-drag all your spells onto the character sheet for them to be recognized by the extension. Not sure if this can be addressed or not.
Customer avatar
Bratch N January 27, 2021 6:41 pm UTC
CREATOR
for normal spells you can right click and select the re-parse option, which should sort out most spells without the need to re-drag them on.

'Custom' spells like rob2e will not re-parse, but this is also true without my extension due to the way they have custom code.

Because some spells will not re-parse, I do not 'auto' re-parse the spells as this could break your character. Hence you have to use the extension from the character creation or 're-parse/re-drag' as needed.
Customer avatar
Daniel G January 28, 2021 2:54 am UTC
PURCHASER
Thanks. Found it. So far the only spell that doesn't seem to work with the extension is Magic Missile.
Customer avatar
Bratch N January 28, 2021 12:29 pm UTC
CREATOR
why would magic missile be an issue ? As far as I know it does not cause any extra damage when cast at higher level, so it should not add and 'lvl' extra lines for the damage. Magic missile makes more missiles at higher level so you have to process multiple damage rolls possibly against re-selected targets ? As each missile can go to one or any target as needed.
Or are you saying it creates an error ?
Customer avatar
Justin M. C December 02, 2020 11:11 pm UTC
PURCHASER
Can you do this for Class abilities, such as Divine Smite or anything else that works off of spell slots? And if so, how?
Customer avatar
Bratch N December 03, 2020 1:27 pm UTC
CREATOR
That is going to depend on how you expect it to work.... Nothing stops you setting up a non-spell power 'damage' section like the ones in the spells, with configures for 'lvlN' marking, but this would cause you to need to run the weapon damage and then the divine damage.. For me the better way would be to look at 'searing smite', as this creates an effect using the 'DMG: [SLVL6] fire' which when you 'cast' this spell add the effect onto your character but will evaluate this via the spell cast number and replace the 'SLVL' with the cast level as if 'dice', so it will become 'DMG: 4d6 fire' on your character if cast a 4th level. So I'd suggest you create a 'power' for 'divine smite' that created an 'effect' something a bit like 'DMG: 1d8+[SLVL8];IFT type(undead,fiend); DMG: 1d8' ( not tested this as I'm not infront of FG at the moment.. )
Customer avatar
Bratch N December 03, 2020 1:52 pm UTC
CREATOR
I had a quick play and creating a power and and effect line with 'Divine Smite; DMG: 1d8 [SLVL8]; IFT: TYPE(undead,fiend); DMG: 1d8', setting 'duration' to 1 min, and Targeting/expenditure to 'self, on next roll', you can then set the cast level with the number on the header bar, 'press the effect' button and it should evaluate the effect onto your character as 'Divine Smite; DMG: 5d8; IFT: TYPE(undead,fiend); DMG: 1d8' if cast at level 4. Obviously it can not stop you casting at a higher level than the Players guide says is the max... which would be level 4. And then you can roll damage with your weapon and it should add all the dice as required along with your weapon damage. ( You can wait until after the attack roll if you want to 'late decide' to smite or not to apply the effect on your character, then roll the damage for weapon. ) Hope this sorts out your question.
Customer avatar
Justin M. C December 03, 2020 5:28 pm UTC
PURCHASER
Thanks! Will try this out in a bit. It looks close to what I was trying.
Customer avatar
Bratch N December 09, 2020 12:48 pm UTC
CREATOR
Would you like to try the v2.6 npc innate spell fix and let me know ?
Customer avatar
Zuilin's G November 04, 2020 5:26 pm UTC
PURCHASER
This is really slick. Great job.
Customer avatar
Bratch N November 04, 2020 5:56 pm UTC
CREATOR
Thank you for the great comment.
Customer avatar
Bruce M October 14, 2020 7:52 pm UTC
PURCHASER
hello, recently got this ext and its nice thank you. I wanted to make you aware of a conflict that I'm getting with at least one other mod where an error string appears when adding an encounter to the CT and also creates a duplicate(s) of whatever npcs were in the encounter. I've only experienced this with one mod so far and have made that creator aware of the the problem, as a follow up i'm letting you know. The mod is https://www.dmsguild.com/product/268461/Waterdeep-Dragon-Heist-Complete-DMs-Bundle-Guides-Maps-Adventures-and-other-Resources?term=Dragon+Heist+DMs+bundle
I have screens of the error string if you need them, but the conflict is definitely with Adv Spell Dmg mod. Again only had this one experience so far if i have more I'll let you know.
Customer avatar
Bratch N October 15, 2020 12:03 pm UTC
CREATOR
Hi, can you attach the error string and images in to the forum side.. https://www.fantasygrounds.com/forums/showthread.php?61703-extension-Advanced-Spell-Damage-Extension-casting-spells-at-higher-level
Customer avatar
Bratch N October 15, 2020 12:19 pm UTC
CREATOR
Hi Bruce, can you check with v2.2a and let me know if this resolved the issues for you.
Customer avatar
Michael W September 30, 2020 2:57 pm UTC
PURCHASER
Hi, first: I like your extension. Second: If i load your extension every NPC caster, will do healing and damage at the highest possible slot.
For example (copied from the combat tracker):
Fire bolt - cantrip [R] [ATK: +6] [DMG: 1d10 fire + 1d10 fire,lvl5 + 1d10 fire,lvl11 + 1d10 fire,lvl17]
Cone of cold - 5th level [SAVEVS: constitution 14 (H) (magic)] [DMG: 8d8 cold + 1d8 cold,lvl6 + 1d8 cold,lvl7 + 1d8 cold,lvl8 + 1d8 cold,lvl9]
Cure wounds - 1st level (4 slots) [HEAL: 1d8 + 1d8 + 1d8 + 1d8 + 1d8 + 1d8 + 1d8 + 1d8 + 1d8]

How can i choose which lv the NPC is.
Thanks for your help

Customer avatar
Bratch N October 01, 2020 9:20 am UTC
CREATOR
Hi Michael, the NPC are not supposed to get the extra cast levels... I'll look into this and maybe add an option to disable this and/or have a look to adding a spell cast level at the end of the 'spells' line. I'm not sure that NPC 'should' be able to cast at higher levels, but I think allowing an option for the DM to do this might make things interesting.. -pete
Customer avatar
Bratch N October 01, 2020 11:30 pm UTC
CREATOR
Check out the updated version 1.9, which now has a casting level for characters on the combat tracker for the DM.
Customer avatar
Michael W October 02, 2020 2:14 pm UTC
PURCHASER
Thank you. I had to remove the NPC from the combat tracker and put it again in. Now everything is working fine and I like the Option to cast on higher spell level for the NPC.
Customer avatar
Bratch N October 02, 2020 4:18 pm UTC
CREATOR
Thanks for the feedback, I'm about to update with the ability to higher level cast off the npc sheet window. ( Not that many people do this, but I wanted to do this case as well.. )
Customer avatar
Justin M. C December 06, 2020 10:47 pm UTC
PURCHASER
This works for Spellcasting, but I still have all NPCs with Innate Spellcasting doing this at highest possible level. Has this not been reported yet?
Customer avatar
Bratch N December 07, 2020 12:08 pm UTC
CREATOR
You are the first to point this out as an issue, I've added a bug item to look into it.
Customer avatar
Bratch N December 08, 2020 10:42 am UTC
CREATOR
Can I ask which NPC you are using ?
I've looked at a couple of NPC with a innate spell but could not find one that had a variable spell causing issues. ( I could find ones that evaluated into 'effect' lines, and not spell lines with different levels.
I can guess why because the innate do not have 'per level cast amount boxes' which then gets my extra 'spell level' cast box.. ( Like the normal Spells )
Customer avatar
Bratch N December 08, 2020 12:17 pm UTC
CREATOR
Ive made a couple NPC with innate spells that have Lvl parts, and I can see they run at max level.

What do we want to do with 'Innate' spell, should they cast a higher level or should they just cast as defined.. ( I think as defined, as they are 'special' instances of those spells... )
Customer avatar
Gary W September 14, 2020 7:01 pm UTC
PURCHASER
Hello, purchased the extension and don't seem to be able to get it working. Just noticed that it specifically says "players handbook." Does it not work if you are using any of the Rob2E spell codings?
Customer avatar
Gary W September 14, 2020 7:17 pm UTC
PURCHASER
Actually it seems like the only problem I have had is upcasting Earth Tremor
Customer avatar
Bratch N September 14, 2020 7:34 pm UTC
CREATOR
yep, Rob2E spell coding, works for a lot of the spells.. some will need hand patching. I'm checking 'SRD data', 'basic rules', 'volo', 'Xanathars', 'sword coast' at the moment. A full pass on Rob2E spells will take a while as its a lot of spells !!
Customer avatar
Bratch N September 14, 2020 8:02 pm UTC
CREATOR
The issue with 'Earth Tremor' is that the source spell damage is 'bludgeoning,magic' and this has to match for my system to add extra level lines. So the issue is the damage type in Rob2E encode 'bludgeoning'. You can check this by using the 're-parse spell action', while it will 'break' the Rob2E encoded data for that spell, you will see that the spell description returns a magic type and now has the required extra lines. I've seen a couple of issues with the Rob2E encoded data, but I've not checked all the spells.
Customer avatar
Rob T September 17, 2020 6:34 am UTC
Does this mean when people pull my spells, it will add the extra levels but leave the rest of the spell as is?
Customer avatar
Bratch N September 17, 2020 9:10 am UTC
CREATOR
Yep, it works around your setting when you drag on a spell. You have a couple of miss-match spells that dont merge due you the odd missing space or incorrect damage type as I only merge if the damage type exactly matches what the spell would parse as.. ( You can check by reparse your spell and see if the damage changes, like 'Earth Temor' which you have a 'magic' type missing on the damage.. ) And at the moment I dont merge in the 'spell_data' 5e rules set custom spells that dont parse... these have a look up table in the ruleset and so it goes via a different code path I have not patched yet.. ) I've been checking different spells from released books I have and these are listed above and should all work. I'm about to get back onto your spell set and figure out how to merge in the custom spells in the rule set code. If you want to 'try' a feature with your spells you can change the 'effect' line damage generation to generate dice with my extension. While its not linked to the spell cast level yet, it does...See more
Customer avatar
Justin M. C October 11, 2020 7:14 am UTC
PURCHASER
For some reason, I cannot get this to work with ANY of the Rob2e spell effects. Is there something I may be missing? If I pull a PHB spell to the action tab, it works fine, but if I use a spell from the Spell effects, it does not. I can manually change it to work, but don't think I want to do that for every spell and effect.
Customer avatar
Bratch N October 11, 2020 4:56 pm UTC
CREATOR
I just checked a few spell with the extension and Rob2e spell effects, and it all seems to work for me. If you drag on some cantrips you should get the extra 5,11,17 lvl items as needed. I checked a few level 1 spells and they were also ok. Can you check with just the extension and the spell effects loaded, to make sure its not a conflict with some other extension. If this still does not work, please reply with a spell that you think does not work and I will double check that spell. Some of Rob2e spells are actually coded wrong, with respect to the rule-set, and if the spell does not match correctly then I will not apply the extra 'lvl' sections. A good check for this is to drag both Rob2e spell effect version of the spell and the original module source spell and make sure the 'damage' or 'heal' lines match up. Rob2e has a few spells that have damage set to 'slashing,magic' when the original spell would only result in damage 'slashing', and some Rob2e spells are damage 'slashing' when the original rule...See more
Customer avatar
Maarten K September 12, 2020 2:56 pm UTC
PURCHASER
Hey nice extension! Was wondering if upon casting the spell, you could add that it will tick off your spell slots automatically? I understand that this is quite difficult to achieve, but might be something want to look at?
Thanks!
Customer avatar
Bratch N September 12, 2020 6:03 pm UTC
CREATOR
Hi, thanks for the question... you can 'double click' the spell cast level box to tick off that spell level. ( Spell slots have higher priority than pact magic slots.. for multi-class usage... ) But no checks are made for if you have slots available or if you had slots left... This is all I could think of as been possible, due to dynamic spell ticks at the top of the characters sheet and back evaluation into the listed cast level... and what to do if you have it selected at level 5 and you hand tick off all the level 5 slots before you cast or in the process of the steps to cast.. and spells have multiple 'parts' to them, so working out 'when' its actually 'been' cast is basically impossible due to order of operations and multiple stages... But I hope the 'double click' ability to tick off a spell gives you the sort of feel, when you have done your actions for that spell you can 'tick' it off... ( added in v1.3, now at v1.5 released yesterday, so maybe check the updated version and check out this ability. )
Customer avatar
Benjamin P September 08, 2020 6:28 am UTC
PURCHASER
I've been looking for something along these lines as some of my players find it difficult to level up spells using the right mouse button as they use targeting and clicking damage in their character sheets and not dragging dice to the chat window.

Is there anyway for the number to revert back to the original level after damage is rolled? Maybe an Off/On option for those that don't want it to revert? I have a feeling players will forget then roll everything onwards at a higher level not realising.

As a future enhancement if it's possible could you use the number in that box check off the spell slot for that level?

Excellent work though
Customer avatar
Bratch N September 08, 2020 10:32 am UTC
CREATOR
Thanks for the feedback, I'll look into something like that once I'm happy the main functionality works.

Note, you can 'double click' the number as I have debug chat output that prints the cast level... as I do plan to use this to 'mark' off a spell usage. But not sure on the interaction with the number and if the level you select has no spell slots available and stopping you set that value.. It need thought.

I'm just working on some tidy up and the 'tool tip' and 'damage line' display updating when you change the cast level, which will get me close to the minimum I think is needed for basic use.
Narrow Results
 Follow Your Favorites!
NotificationsSign in to get custom notifications of new products!











Product Information
Silver seller
Community Content
Author(s)
Rules Edition(s)
Format
Original electronic
Scanned image
These products were created by scanning an original printed edition. Most older books are in scanned image format because original digital layout files never existed or were no longer available from the publisher.

For PDF download editions, each page has been run through Optical Character Recognition (OCR) software to attempt to decipher the printed text. The result of this OCR process is placed invisibly behind the picture of each scanned page, to allow for text searching. However, any text in a given book set on a graphical background or in handwritten fonts would most likely not be picked up by the OCR software, and is therefore not searchable. Also, a few larger books may be resampled to fit into the system, and may not have this searchable text background.

For printed books, we have performed high-resolution scans of an original hardcopy of the book. We essentially digitally re-master the book. Unfortunately, the resulting quality of these books is not as high. It's the problem of making a copy of a copy. The text is fine for reading, but illustration work starts to run dark, pixellating and/or losing shades of grey. Moiré patterns may develop in photos. We mark clearly which print titles come from scanned image books so that you can make an informed purchase decision about the quality of what you will receive.
Original electronic format
These ebooks were created from the original electronic layout files, and therefore are fully text searchable. Also, their file size tends to be smaller than scanned image books. Most newer books are in the original electronic format. Both download and print editions of such books should be high quality.
File Last Updated:
May 25, 2021
This title was added to our catalog on September 06, 2020.