So I created a character, as part of doing so I had opened its character sheet before I added spells to it. I left the computer and later opened the character on another computer... added spells... got interrupted again...Went back to computer 1. Tried to click ADD on a cantrip... It blew up.
This is most likely because computer 1's character sheet thought it had no known spells and then I clicked "Add Spell"
My suggested fix: Rather than a popup with a stack trace, have a couple conditional checks:
I got an error therefore check:
When was the last time I downloaded content for this character? If longer than X, reload the character data
Display a popup that says, "We detected stale data and refreshed the sheet, check it and try again"
- OR -
I got an error, therefore check:
error condition: Is this an attempt to add something that's already there?
It is! Ignore the error and reload the sheet.
Display a popup that says, "We detected stale data and refreshed the sheet, check it and try again"
~~~~~~~
You have discovered a portal to a new plane where things are not working as intended.
If you report this entry to a D&D Beyond Dungeon Master, please include the following information:
Action
character.SPELL_CREATE
Payload
{"spell":{"id":138298,"entityTypeId":435869154,"definition":{"id":14618,"name":"Word of Radiance","level":0,"school":"Evocation","duration":{"durationInterval":null,"durationUnit":null,"durationType":"Instantaneous"},"activation":{"activationTime":1,"activationType":1},"range":{"origin":"Ranged","rangeValue":5,"aoeType":null,"aoeValue":null},"description":"<p class=\"Core-Styles_Core-Body\">You utter a divine word, and burning radiance erupts from you. Each creature of your choice that you can see within range must succeed on a Constitution saving throw or take 1d6 radiant damage.</p>\r\n<p class=\"Core-Styles_Core-Body\">The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>","snippet":"","concentration":false,"ritual":false,"rangeArea":null,"damageEffect":null,"components":[1,3],"componentsDescription":"a holy symbol","saveDcAbilityId":3,"healing":null,"healingDice":null,"tempHpDice":null,"attackType":null,"canCastAtHigherLevel":true,"isHomebrew":false,"version":null,"sourceId":27,"sourcePageNumber":171,"requiresSavingThrow":true,"requiresAttackRoll":false,"atHigherLevels":{"scaleType":"characterlevel","higherLevelDefinitions":[],"additionalAttacks":[],"additionalTargets":[],"areaOfEffect":[],"duration":[],"creatures":[],"special":[],"points":[]},"modifiers":[{"id":"spell_14618_9473","type":"damage","subType":"radiant","die":{"diceCount":1,"diceValue":6,"diceMultiplier":null,"fixedValue":null,"diceString":"1d6"},"count":1,"duration":0,"durationUnit":null,"restriction":"","friendlyTypeName":"Damage","friendlySubtypeName":"Radiant","usePrimaryStat":false,"atHigherLevels":{"scaleType":"characterlevel","higherLevelDefinitions":[{"level":5,"typeId":15,"dice":{"diceCount":2,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"2d6"},"value":null,"details":""},{"level":11,"typeId":15,"dice":{"diceCount":3,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"3d6"},"value":null,"details":""},{"level":17,"typeId":15,"dice":{"diceCount":4,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"4d6"},"value":null,"details":""}],"additionalAttacks":[],"additionalTargets":[],"areaOfEffect":[],"duration":[],"creatures":[],"special":[],"points":[{"die":{"diceCount":2,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"2d6"},"level":5,"description":""},{"die":{"diceCount":3,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"3d6"},"level":11,"description":""},{"die":{"diceCount":4,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"4d6"},"level":17,"description":""}]}}],"conditions":[],"tags":["Damage"],"castingTimeDescription":""},"prepared":false,"countsAsKnownSpell":true,"usesSpellSlot":true,"castAtLevel":null,"alwaysPrepared":false,"restriction":null,"spellCastingAbilityId":null,"displayAsAttack":null,"additionalDescription":null,"range":{"origin":"Ranged","rangeValue":5,"aoeType":null,"aoeValue":null},"activation":{"activationTime":1,"activationType":1},"baseLevelAtWill":false,"atWillLimitedUseLevel":null,"componentId":0,"componentTypeId":0,"customData":{},"canAdd":true,"entity":{"id":138298,"entityTypeId":435869154,"definition":{"id":14618,"name":"Word of Radiance","level":0,"school":"Evocation","duration":{"durationInterval":null,"durationUnit":null,"durationType":"Instantaneous"},"activation":{"activationTime":1,"activationType":1},"range":{"origin":"Ranged","rangeValue":5,"aoeType":null,"aoeValue":null},"description":"<p class=\"Core-Styles_Core-Body\">You utter a divine word, and burning radiance erupts from you. Each creature of your choice that you can see within range must succeed on a Constitution saving throw or take 1d6 radiant damage.</p>\r\n<p class=\"Core-Styles_Core-Body\">The spell’s damage increases by 1d6 when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).</p>","snippet":"","concentration":false,"ritual":false,"rangeArea":null,"damageEffect":null,"components":[1,3],"componentsDescription":"a holy symbol","saveDcAbilityId":3,"healing":null,"healingDice":null,"tempHpDice":null,"attackType":null,"canCastAtHigherLevel":true,"isHomebrew":false,"version":null,"sourceId":27,"sourcePageNumber":171,"requiresSavingThrow":true,"requiresAttackRoll":false,"atHigherLevels":{"scaleType":"characterlevel","higherLevelDefinitions":[],"additionalAttacks":[],"additionalTargets":[],"areaOfEffect":[],"duration":[],"creatures":[],"special":[],"points":[]},"modifiers":[{"id":"spell_14618_9473","type":"damage","subType":"radiant","die":{"diceCount":1,"diceValue":6,"diceMultiplier":null,"fixedValue":null,"diceString":"1d6"},"count":1,"duration":0,"durationUnit":null,"restriction":"","friendlyTypeName":"Damage","friendlySubtypeName":"Radiant","usePrimaryStat":false,"atHigherLevels":{"scaleType":"characterlevel","higherLevelDefinitions":[{"level":5,"typeId":15,"dice":{"diceCount":2,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"2d6"},"value":null,"details":""},{"level":11,"typeId":15,"dice":{"diceCount":3,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"3d6"},"value":null,"details":""},{"level":17,"typeId":15,"dice":{"diceCount":4,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"4d6"},"value":null,"details":""}],"additionalAttacks":[],"additionalTargets":[],"areaOfEffect":[],"duration":[],"creatures":[],"special":[],"points":[{"die":{"diceCount":2,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"2d6"},"level":5,"description":""},{"die":{"diceCount":3,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"3d6"},"level":11,"description":""},{"die":{"diceCount":4,"diceValue":6,"diceMultiplier":null,"fixedValue":0,"diceString":"4d6"},"level":17,"description":""}]}}],"conditions":[],"tags":["Damage"],"castingTimeDescription":""},"prepared":false,"countsAsKnownSpell":true,"usesSpellSlot":true,"castAtLevel":null,"alwaysPrepared":false,"restriction":null,"spellCastingAbilityId":null,"displayAsAttack":null,"additionalDescription":null,"range":{"origin":"Ranged","rangeValue":5,"aoeType":null,"aoeValue":null},"activation":{"activationTime":1,"activationType":1},"baseLevelAtWill":false,"atWillLimitedUseLevel":null,"componentId":0,"componentTypeId":0}},"characterClassId":4146378}
So I created a character, as part of doing so I had opened its character sheet before I added spells to it. I left the computer and later opened the character on another computer... added spells... got interrupted again...Went back to computer 1. Tried to click ADD on a cantrip... It blew up.
This is most likely because computer 1's character sheet thought it had no known spells and then I clicked "Add Spell"
My suggested fix: Rather than a popup with a stack trace, have a couple conditional checks:
- OR -
~~~~~~~
You have discovered a portal to a new plane where things are not working as intended.
If you report this entry to a D&D Beyond Dungeon Master, please include the following information:
Playtesting Fugare Draconis, an epic tale of adventure, loss, and redemption