diff --git a/lang/en.json b/lang/en.json index 8dc34bf7..5699d9f1 100755 --- a/lang/en.json +++ b/lang/en.json @@ -1221,7 +1221,7 @@ }, "burning": { "name": "Burning", - "description": "When you roll the maximum value on a damage die, roll an additional damage die.", + "description": "When you roll a 6 on a damage die, the target must mark a Stress.", "actions": { "burn": { "name": "Burn", diff --git a/module/applications/sidebar/tabs/daggerheartMenu.mjs b/module/applications/sidebar/tabs/daggerheartMenu.mjs index 0f98f5a0..4166614d 100644 --- a/module/applications/sidebar/tabs/daggerheartMenu.mjs +++ b/module/applications/sidebar/tabs/daggerheartMenu.mjs @@ -58,7 +58,7 @@ export default class DaggerheartMenu extends HandlebarsApplicationMixin(Abstract if (['character', 'adversary'].includes(actor.type) && actor.prototypeToken.actorLink) { const updates = {}; for (let item of actor.items) { - if (item.system.metadata.hasResource && types.includes(item.system.resource?.recovery)) { + if (item.system.metadata?.hasResource && types.includes(item.system.resource?.recovery)) { if (!refreshedActors[actor.id]) refreshedActors[actor.id] = { name: actor.name, img: actor.img, refreshed: new Set() }; refreshedActors[actor.id].refreshed.add( @@ -76,7 +76,7 @@ export default class DaggerheartMenu extends HandlebarsApplicationMixin(Abstract : Roll.replaceFormulaData(item.system.resource.max, actor.getRollData()) }; } - if (item.system.metadata.hasActions) { + if (item.system.metadata?.hasActions) { const refreshTypes = new Set(); const actions = item.system.actions.filter(action => { if (types.includes(action.uses.recovery)) { diff --git a/module/data/actor/base.mjs b/module/data/actor/base.mjs index 772a5af3..c7f7ee75 100644 --- a/module/data/actor/base.mjs +++ b/module/data/actor/base.mjs @@ -106,6 +106,21 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { return data; } + async _preDelete() { + /* Clear all partyMembers from tagTeam setting.*/ + /* Revisit this when tagTeam is improved for many parties */ + if (this.parent.parties.size > 0) { + const tagTeam = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + await tagTeam.updateSource({ + initiator: this.parent.id === tagTeam.initiator ? null : tagTeam.initiator, + members: Object.keys(tagTeam.members).find(x => x === this.parent.id) + ? { [`-=${this.parent.id}`]: null } + : {} + }); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, tagTeam); + } + } + async _preUpdate(changes, options, userId) { const allowed = await super._preUpdate(changes, options, userId); if (allowed === false) return; diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 638da365..c5ab914c 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -678,6 +678,8 @@ export default class DhCharacter extends BaseDataActor { } async _preDelete() { + super._preDelete(); + if (this.companion) { this.companion.updateLevel(1); } diff --git a/module/data/actor/party.mjs b/module/data/actor/party.mjs index 06731246..18fe9959 100644 --- a/module/data/actor/party.mjs +++ b/module/data/actor/party.mjs @@ -36,6 +36,23 @@ export default class DhParty extends BaseDataActor { } } + async _preDelete() { + /* Clear all partyMembers from tagTeam setting.*/ + /* Revisit this when tagTeam is improved for many parties */ + const tagTeam = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + await tagTeam.updateSource({ + initiator: this.partyMembers.some(x => x.id === tagTeam.initiator) ? null : tagTeam.initiator, + members: Object.keys(tagTeam.members).reduce((acc, key) => { + if (this.partyMembers.find(x => x.id === key)) { + acc[`-=${key}`] = null; + } + + return acc; + }, {}) + }); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, tagTeam); + } + _onDelete(options, userId) { super._onDelete(options, userId); diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index ee963dc1..82d413d1 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -204,7 +204,7 @@ export default class DhpActor extends Actor { for (let domainCard of domainCards) { const itemCard = this.items.find(x => x.uuid === domainCard); - itemCard.delete(); + itemCard?.delete(); } } @@ -337,6 +337,8 @@ export default class DhpActor extends Actor { const embeddedItem = await this.createEmbeddedDocuments('Item', [ { ...multiclassData, + uuid: multiclassItem.uuid, + _stats: multiclassItem._stats, system: { ...multiclassData.system, features: multiclassData.system.features.filter(x => x.type !== 'hope'), @@ -349,6 +351,8 @@ export default class DhpActor extends Actor { await this.createEmbeddedDocuments('Item', [ { ...subclassData, + uuid: subclassItem.uuid, + _stats: subclassItem._stats, system: { ...subclassData.system, isMulticlass: true @@ -363,12 +367,15 @@ export default class DhpActor extends Actor { for (var domainCard of domainCards) { if (levelupAuto) { - const itemData = (await foundry.utils.fromUuid(domainCard.data[0])).toObject(); + const cardItem = await foundry.utils.fromUuid(domainCard.data[0]); + const cardData = cardItem.toObject(); const embeddedItem = await this.createEmbeddedDocuments('Item', [ { - ...itemData, + ...cardData, + uuid: cardItem.uuid, + _stats: cardItem._stats, system: { - ...itemData.system, + ...cardData.system, inVault: true } } @@ -382,12 +389,15 @@ export default class DhpActor extends Actor { const achievementDomainCards = []; if (levelupAuto) { for (var card of Object.values(level.achievements.domainCards)) { - const itemData = (await foundry.utils.fromUuid(card.uuid)).toObject(); + const cardItem = await foundry.utils.fromUuid(card.uuid); + const cardData = cardItem.toObject(); const embeddedItem = await this.createEmbeddedDocuments('Item', [ { - ...itemData, + ...cardData, + uuid: cardItem.uuid, + _stats: cardItem._stats, system: { - ...itemData.system, + ...cardData.system, inVault: true } } diff --git a/module/systemRegistration/migrations.mjs b/module/systemRegistration/migrations.mjs index 00b07dc1..b3116459 100644 --- a/module/systemRegistration/migrations.mjs +++ b/module/systemRegistration/migrations.mjs @@ -191,6 +191,25 @@ export async function runMigrations() { lastMigrationVersion = '1.2.0'; } + + if (foundry.utils.isNewerVersion('1.2.7', lastMigrationVersion)) { + const tagTeam = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + const initatorMissing = tagTeam.initiator && !game.actors.some(actor => actor.id === tagTeam.initiator); + const missingMembers = Object.keys(tagTeam.members).reduce((acc, id) => { + if (!game.actors.some(actor => actor.id === id)) { + acc[`-=${id}`] = null; + } + return acc; + }, {}); + + await tagTeam.updateSource({ + initiator: initatorMissing ? null : tagTeam.initiator, + members: missingMembers + }); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, tagTeam); + + lastMigrationVersion = '1.2.7'; + } //#endregion await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion); diff --git a/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json b/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json index dfa5f29c..64fbb572 100644 --- a/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json +++ b/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json @@ -4,7 +4,7 @@ "type": "class", "img": "icons/tools/instruments/harp-red.webp", "system": { - "description": "
Note: At level 5 use Rally (Level 5) instead of Rally under class feature. (Automation will be implemented in a later release)
Bards are the most charismatic people in all the realms. Members of this class are masters of captivation and specialize in a variety of performance types, including singing, playing musical instruments, weaving tales, or telling jokes. Whether performing for an audience or speaking to an individual, bards thrive in social situations. Members of this profession bond and train at schools or guilds, but a current of egotism runs through those of the bardic persuasion. While they may be the most likely class to bring people together, a bard of ill temper can just as easily tear a party apart.
Note: At level 5 use Rally (Level 5) instead of Rally under class feature. (Automation will be implemented in a later release)
Bards are the most charismatic people in all the realms. Members of this class are masters of captivation and specialize in a variety of performance types, including singing, playing musical instruments, weaving tales, or telling jokes. Whether performing for an audience or speaking to an individual, bards thrive in social situations. Members of this profession bond and train at schools or guilds, but a current of egotism runs through those of the bardic persuasion. While they may be the most likely class to bring people together, a bard of ill temper can just as easily tear a party apart.
A romance novel or a letter never opened
Make a Scene: Spend 3 Hope to temporarily Distract a target within Close range, giving them a -2 penalty to their Difficulty.
Rally
Once per session, describe how you rally the party and give yourself and each of your allies a Rally Die. At level 1, your Rally Die is a d6. A PC can spend their Rally Die to roll it, adding the result to their action roll, reaction roll, damage roll, or to clear a number of Stress equal to the result. At the end of each session, clear all unspent Rally Dice.
At level 5, your Rally Die increases to a d8.
", "domains": [ "grace", "codex" @@ -85,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754174600538, - "modifiedTime": 1756399046200, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764073562847, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_id": "vegl3bFOq3pcFTWT", "sort": 300000, diff --git a/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json b/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json index 5e30b889..27f70356 100644 --- a/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json +++ b/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json @@ -4,7 +4,7 @@ "_id": "ZNwUTCyGCEcidZFv", "img": "icons/creatures/mammals/wolf-howl-moon-black.webp", "system": { - "description": "Becoming a druid is more than an occupation; it’s a calling for those who wish to learn from and protect the magic of the wilderness. While one might underestimate a gentle druid who practices the often-quiet work of cultivating flora, druids who channel the untamed forces of nature are terrifying to behold. Druids cultivate their abilities in small groups, often connected by a specific ethos or locale, but some choose to work alone. Through years of study and dedication, druids can learn to transform into beasts and shape nature itself.
", + "description": "Becoming a druid is more than an occupation; it’s a calling for those who wish to learn from and protect the magic of the wilderness. While one might underestimate a gentle druid who practices the often-quiet work of cultivating flora, druids who channel the untamed forces of nature are terrifying to behold. Druids cultivate their abilities in small groups, often connected by a specific ethos or locale, but some choose to work alone. Through years of study and dedication, druids can learn to transform into beasts and shape nature itself.
A small bag of rocks and bones or a strange pendant found in the dirt
Evolution: Spend 3 Hope to transform into a Beastform without marking a Stress. When you do, choose one trait to raise by +1 until you drop out of that Beastform.
Beastform: Mark a Stress to magically transform into a creature of your tier or lower from the Beastform list. You can drop out of this form at any time. While transformed, you can’t use weapons or cast spells from domain cards, but you can still use other features or abilities you have access to. Spells you cast before you transform stay active and last for their normal duration, and you can talk and communicate as normal. Additionally, you gain the Beastform’s features, add their Evasion bonus to your Evasion, and use the trait specified in their statistics for your attack. While you’re in a Beastform, your armor becomes part of your body and you mark Armor Slots as usual; when you drop out of a Beastform, those marked Armor Slots remain marked. If you mark your last Hit Point, you automatically drop out of this form.
Wildtouch: You can perform harmless, subtle effects that involve nature—such as causing a flower to rapidly grow, summoning a slight gust of wind, or starting a campfire—at will.
", "domains": [ "sage", "arcana" @@ -87,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754222247012, - "modifiedTime": 1756399003725, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764073660360, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!ZNwUTCyGCEcidZFv" } diff --git a/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json b/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json index c412abba..8b52874d 100644 --- a/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json +++ b/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json @@ -4,7 +4,7 @@ "_id": "nRAyoC0fOzXPDa4z", "img": "icons/equipment/shield/heater-wooden-sword-green.webp", "system": { - "description": "The title of guardian represents an array of martial professions, speaking more to their moral compass and unshakeable fortitude than the means by which they fight. While many guardians join groups of militants for either a country or cause, they’re more likely to follow those few they truly care for, majority be damned. Guardians are known for fighting with remarkable ferocity even against overwhelming odds, defending their cohort above all else. Woe betide those who harm the ally of a guardian, as the guardian will answer this injury in kind.
", + "description": "The title of guardian represents an array of martial professions, speaking more to their moral compass and unshakeable fortitude than the means by which they fight. While many guardians join groups of militants for either a country or cause, they’re more likely to follow those few they truly care for, majority be damned. Guardians are known for fighting with remarkable ferocity even against overwhelming odds, defending their cohort above all else. Woe betide those who harm the ally of a guardian, as the guardian will answer this injury in kind.
A totem from your mentor or a secret key
Frontline Tank: Spend 3 Hope to clear 2 Armor Slots.
Unstoppable: Once per long rest, you can become Unstoppable. You gain an Unstoppable Die. At level 1, your Unstoppable Die is a d4. Place it on your character sheet in the space provided, starting with the 1 value facing up. After you make a damage roll that deals 1 or more Hit Points to a target, increase the Unstoppable Die value by one. When the die’s value would exceed its maximum value or when the scene ends, remove the die and drop out of Unstoppable. At level 5, your Unstoppable Die increases to a d6.
While Unstoppable, you gain the following benefits:
• You reduce the severity of physical damage by one threshold (Severe to Major, Major to Minor, Minor to None).
• You add the current value of the Unstoppable Die to your damage roll.
• You can’t be Restrained or Vulnerable.
", "domains": [ "valor", "blade" @@ -83,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754246931974, - "modifiedTime": 1756398951257, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764073702031, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!nRAyoC0fOzXPDa4z" } diff --git a/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json b/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json index f85f6d59..3bb01173 100644 --- a/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json +++ b/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json @@ -4,7 +4,7 @@ "_id": "BTyfve69LKqoOi9S", "img": "icons/weapons/bows/shortbow-recurve-yellow-blue.webp", "system": { - "description": "Rangers are highly skilled hunters who, despite their martial abilities, rarely lend their skills to an army. Through mastery of the body and a deep understanding of the wilderness, rangers become sly tacticians, pursuing their quarry with cunning and patience. Many rangers track and fight alongside an animal companion with whom they’ve forged a powerful spiritual bond. By honing their skills in the wild, rangers become expert trackers, as likely to ensnare their foes in a trap as they are to assail them head-on.
", + "description": "Rangers are highly skilled hunters who, despite their martial abilities, rarely lend their skills to an army. Through mastery of the body and a deep understanding of the wilderness, rangers become sly tacticians, pursuing their quarry with cunning and patience. Many rangers track and fight alongside an animal companion with whom they’ve forged a powerful spiritual bond. By honing their skills in the wild, rangers become expert trackers, as likely to ensnare their foes in a trap as they are to assail them head-on.
A trophy from your first kill or a seemingly broken compass
Hold Them Off: Spend 3 Hope when you succeed on an attack with a weapon to use that same roll against two additional adversaries within range of the attack.
Ranger’s Focus: Spend a Hope and make an attack against a target. On a success, deal your attack’s normal damage and temporarily make the attack’s target your Focus. Until this feature ends or you make a different creature your Focus, you gain the following benefits against your Focus:
• You know precisely what direction they are in.
• When you deal damage to them, they must mark a Stress.
• When you fail an attack against them, you can end your Ranger’s Focus feature to reroll your Duality Dice.
", "domains": [ "bone", "sage" @@ -83,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754268869310, - "modifiedTime": 1756398897309, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764074066172, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!BTyfve69LKqoOi9S" } diff --git a/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json b/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json index a0a59613..68b1e5b4 100644 --- a/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json +++ b/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json @@ -4,7 +4,7 @@ "_id": "CvHlkHZfpMiCz5uT", "img": "icons/magic/defensive/shield-barrier-blades-teal.webp", "system": { - "description": "Rogues are scoundrels, often in both attitude and practice. Broadly known as liars and thieves, the best among this class move through the world anonymously. Utilizing their sharp wits and blades, rogues trick their foes through social manipulation as easily as breaking locks, climbing through windows, or dealing underhanded blows. These masters of magical craft manipulate shadow and movement, adding an array of useful and deadly tools to their repertoire. Rogues frequently establish guilds to meet future accomplices, hire out jobs, and hone secret skills, proving that there’s honor among thieves for those who know where to look.
", + "description": "Rogues are scoundrels, often in both attitude and practice. Broadly known as liars and thieves, the best among this class move through the world anonymously. Utilizing their sharp wits and blades, rogues trick their foes through social manipulation as easily as breaking locks, climbing through windows, or dealing underhanded blows. These masters of magical craft manipulate shadow and movement, adding an array of useful and deadly tools to their repertoire. Rogues frequently establish guilds to meet future accomplices, hire out jobs, and hone secret skills, proving that there’s honor among thieves for those who know where to look.
A set of forgery tools or a grappling hook
Rogue’s Dodge: Spend 3 Hope to gain a +2 bonus to your Evasion until the next time an attack succeeds against you. Otherwise, this bonus lasts until your next rest.
Cloaked: Any time you would be Hidden, you are instead Cloaked. In addition to the benefits of the Hidden condition, while Cloaked you remain unseen if you are stationary when an adversary moves to where they would normally see you.
After you make an attack or end a move within line of sight of an adversary, you are no longer Cloaked.
Sneak Attack: When you succeed on an attack while Cloaked or while an ally is within Melee range of your target, add a number of d6s equal to your tier to your damage roll.
", "domains": [ "midnight", "grace" @@ -87,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754325275832, - "modifiedTime": 1756398839983, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764074347573, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!CvHlkHZfpMiCz5uT" } diff --git a/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json b/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json index 7c3ce471..7c9b2882 100644 --- a/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json +++ b/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json @@ -4,7 +4,7 @@ "_id": "5ZnlJ5bEoyOTkUJv", "img": "icons/magic/holy/barrier-shield-winged-cross.webp", "system": { - "description": "Seraphs are divine fighters and healers imbued with sacred purpose. A wide array of deities exist within the realms, and thus numerous kinds of seraphs are appointed by these gods. Their ethos traditionally aligns with the domain or goals of their god, such as defending the weak, exacting vengeance, protecting a land or artifact, or upholding a particular faith. Some seraphs ally themselves with an army or locale, much to the satisfaction of their rulers, but other crusaders fight in opposition to the follies of the Mortal Realm. It is better to be a seraph’s ally than their enemy, as they are terrifying foes to those who defy their purpose.
", + "description": "Seraphs are divine fighters and healers imbued with sacred purpose. A wide array of deities exist within the realms, and thus numerous kinds of seraphs are appointed by these gods. Their ethos traditionally aligns with the domain or goals of their god, such as defending the weak, exacting vengeance, protecting a land or artifact, or upholding a particular faith. Some seraphs ally themselves with an army or locale, much to the satisfaction of their rulers, but other crusaders fight in opposition to the follies of the Mortal Realm. It is better to be a seraph’s ally than their enemy, as they are terrifying foes to those who defy their purpose.
A bundle of offerings or a sigil of your god
Life Support: Spend 3 Hope to clear a Hit Point on an ally within Close range.
Prayer Dice: At the beginning of each session, roll a number of d4s equal to your subclass’s Spellcast trait and place them on your character sheet in the space provided. These are your Prayer Dice. You can spend any number of Prayer Dice to aid yourself or an ally within Far range. You can use a spent die’s value to reduce incoming damage, add to a roll’s result after the roll is made, or gain Hope equal to the result. At the end of each session, clear all unspent Prayer Dice.
", "domains": [ "valor", "splendor" @@ -83,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.350", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754351482530, - "modifiedTime": 1760018751908, - "lastModifiedBy": "fBcTgyTzoARBvohY" + "modifiedTime": 1764074673043, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!5ZnlJ5bEoyOTkUJv" } diff --git a/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json b/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json index ce1ced71..e1076faf 100644 --- a/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json +++ b/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json @@ -4,7 +4,7 @@ "_id": "DchOzHcWIJE9FKcR", "img": "icons/magic/symbols/rune-sigil-horned-white-purple.webp", "system": { - "description": "Not all innate magic users choose to hone their craft, but those who do can become powerful sorcerers. The gifts of these wielders are passed down through families, even if the family is unaware of or reluctant to practice them. A sorcerer’s abilities can range from the elemental to the illusionary and beyond, and many practitioners band together into collectives based on their talents. The act of becoming a formidable sorcerer is not the practice of acquiring power, but learning to cultivate and control the power one already possesses. The magic of a misguided or undisciplined sorcerer is a dangerous
force indeed.
", + "description": "Not all innate magic users choose to hone their craft, but those who do can become powerful sorcerers. The gifts of these wielders are passed down through families, even if the family is unaware of or reluctant to practice them. A sorcerer’s abilities can range from the elemental to the illusionary and beyond, and many practitioners band together into collectives based on their talents. The act of becoming a formidable sorcerer is not the practice of acquiring power, but learning to cultivate and control the power one already possesses. The magic of a misguided or undisciplined sorcerer is a dangerous force indeed.
A whispering orb or a family heirloom
Volatile Magic: Spend 3 Hope to reroll any number of your damage dice on an attack that deals magic damage.
Arcane Sense: You can sense the presence of magical people and objects within Close range.
Minor Illusion: Make a Spellcast Roll (10). On a success, you create a minor visual illusion no larger than yourself
within Close range. This illusion is convincing to anyone at Close range or farther.
Channel Raw Power: Once per long rest, you can place a domain card from your loadout into your vault and choose to either:
• Gain Hope equal to the level of the card.
• Enhance a spell that deals damage, gaining a bonus to your damage roll equal to twice the level of the card.
", "domains": [ "arcana", "midnight" @@ -91,12 +91,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.350", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754349743129, - "modifiedTime": 1760018753854, - "lastModifiedBy": "fBcTgyTzoARBvohY" + "modifiedTime": 1764074848299, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!DchOzHcWIJE9FKcR" } diff --git a/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json b/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json index 3ecb2b72..5b07f909 100644 --- a/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json +++ b/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json @@ -4,7 +4,7 @@ "_id": "xCUWwJz4WSthvLfy", "img": "icons/weapons/swords/sword-broad-crystal-paired.webp", "system": { - "description": "Becoming a warrior requires years, often a lifetime, of training and dedication to the mastery of weapons and violence. While many who seek to fight hone only their strength, warriors understand the importance of an agile body and mind, making them some of the most sought-after fighters across the realms. Frequently, warriors find employment within an army, a band of mercenaries, or even a royal guard, but their potential is wasted in any position where they cannot continue to improve and expand their skills. Warriors are known to have a favored weapon; to come between them and their blade would be a grievous mistake.
", + "description": "Becoming a warrior requires years, often a lifetime, of training and dedication to the mastery of weapons and violence. While many who seek to fight hone only their strength, warriors understand the importance of an agile body and mind, making them some of the most sought-after fighters across the realms. Frequently, warriors find employment within an army, a band of mercenaries, or even a royal guard, but their potential is wasted in any position where they cannot continue to improve and expand their skills. Warriors are known to have a favored weapon; to come between them and their blade would be a grievous mistake.
The drawing of a lover or a sharpening stone
No Mercy: Spend 3 Hope to gain a +1 bonus to your attack rolls until your next rest.
Attack of Opportunity: If an adversary within Melee range attempts to leave that range, make a reaction roll using a trait of your choice against their Difficulty. Choose one effect on a success, or two if you critically succeed:
• They can’t move from where they are.
• You deal damage to them equal to your primary weapon’s damage.
• You move with them.
Combat Training: You ignore burden when equipping weapons. When you deal physical damage, you gain a bonus to your damage roll equal to your level.
", "domains": [ "blade", "bone" @@ -87,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754255776706, - "modifiedTime": 1756398696324, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764075006528, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!xCUWwJz4WSthvLfy" } diff --git a/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json b/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json index d5cc53ca..febf0f50 100644 --- a/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json +++ b/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json @@ -4,7 +4,7 @@ "_id": "5LwX4m8ziY3F1ZGC", "img": "icons/magic/symbols/circled-gem-pink.webp", "system": { - "description": "Whether through an institution or individual study, those known as wizards acquire and hone immense magical power over years of learning using a variety of tools, including books, stones, potions, and herbs. Some wizards dedicate their lives to mastering a particular school of magic, while others learn from a wide variety of disciplines. Many wizards become wise and powerful figures in their communities, advising rulers, providing medicines and healing, and even leading war councils. While these mages all work toward the common goal of collecting magical knowledge, wizards often have the most conflict within their own ranks, as the acquisition, keeping, and sharing of powerful secrets is a topic of intense debate that has resulted in innumerable deaths.
", + "description": "Whether through an institution or individual study, those known as wizards acquire and hone immense magical power over years of learning using a variety of tools, including books, stones, potions, and herbs. Some wizards dedicate their lives to mastering a particular school of magic, while others learn from a wide variety of disciplines. Many wizards become wise and powerful figures in their communities, advising rulers, providing medicines and healing, and even leading war councils. While these mages all work toward the common goal of collecting magical knowledge, wizards often have the most conflict within their own ranks, as the acquisition, keeping, and sharing of powerful secrets is a topic of intense debate that has resulted in innumerable deaths.
A book you’re trying to translate or a tiny, harmless elemental pet
Not This Time: Spend 3 Hope to force an adversary within Far range to reroll an attack or damage roll.
Prestidigitation: You can perform harmless, subtle magical effects at will. For example, you can change an object’s color, create a smell, light a candle, cause a tiny object to float, illuminate a room, or repair a small object.
Strange Patterns: Choose a number between 1 and 12. When you roll that number on a Duality Die, gain a Hope or clear a Stress.
You can change this number when you take a long rest.
", "domains": [ "codex", "splendor" @@ -87,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.351", "systemId": "daggerheart", - "systemVersion": "1.1.2", + "systemVersion": "1.2.6", "createdTime": 1754253505323, - "modifiedTime": 1756391897762, - "lastModifiedBy": "gbAAZWyczKwejDNh" + "modifiedTime": 1764075272924, + "lastModifiedBy": "9HOfUKAXuCu7hUPY" }, "_key": "!items!5LwX4m8ziY3F1ZGC" } diff --git a/system.json b/system.json index bfcf2a31..4972a395 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "daggerheart", "title": "Daggerheart", "description": "An unofficial implementation of the Daggerheart system", - "version": "1.2.6", + "version": "1.2.7", "compatibility": { "minimum": "13", "verified": "13.351",