diff --git a/CHANGELOG.md b/CHANGELOG.md index 629c8798..a48c0de8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * XP spending now consistently uses a dollar sign to trigger spending instead of the various methods it previously used ([#1629](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1629)) * Settings have been refactored to be more organized and easier to navigate ([#1639](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1639)) * Destiny point flipping is now themed ([#1658](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1658) + * Set default token settings when creating new actor ([#1652](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1652))) * Fixes: * Includes species characteristics bonus when calculating characteristic upgrade cost ([#1638](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1638)) * Specializations: Talents are now correctly looked up in compendium ([#1642](/~https://github.com/StarWarsFoundryVTT/StarWarsFFG/issues/1642))) diff --git a/lang/en.json b/lang/en.json index d58bb09a..0c4b4c8f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -761,5 +761,7 @@ "SWFFG.DragDrop.Title": "Purchase item, or grant for 0 xp?", "SWFFG.DragDrop.PurchaseItem": "Purchase", "SWFFG.DragDrop.GrantItem": "Grant", - "SWFFG.DragDrop.XPLog": "drag-and-drop" + "SWFFG.DragDrop.XPLog": "drag-and-drop", + "SWFFG.Settings.actor.RivalTokenPrepend.Name": "Prepend Adjective to rival tokens", + "SWFFG.Settings.actor.RivalTokenPrepend.Hint": "Unlinked rival's token name will be prepended with an Adjective by default. Example: \"Angry\"" } diff --git a/modules/actors/actor-ffg.js b/modules/actors/actor-ffg.js index 902bb0b6..a09d0569 100644 --- a/modules/actors/actor-ffg.js +++ b/modules/actors/actor-ffg.js @@ -6,6 +6,45 @@ import ModifierHelpers from "../helpers/modifiers.js"; * @extends {Actor} */ export class ActorFFG extends Actor { + + static async create(data, options) { + const createData = data; + + // Only apply defaults for newly created actors + if (!typeof data.system === "undefined") { + return super.create(createData, options); + } + + switch (createData.type) { + case "minion": + createData.prototypeToken = { + actorLink: false, + disposition: CONST.TOKEN_DISPOSITIONS.HOSTILE, + }; + break; + case "character": + createData.prototypeToken = { + actorLink: true, + disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY, + }; + break; + case "rival": + createData.prototypeToken = { + actorLink: false, + disposition: CONST.TOKEN_DISPOSITIONS.HOSTILE, + prependAdjective: game.settings.get("starwarsffg", "RivalTokenPrepend"), + }; + break; + case "nemesis": + createData.prototypeToken = { + actorLink: true, + disposition: CONST.TOKEN_DISPOSITIONS.HOSTILE, + }; + break; + } + return super.create(createData, options); + } + /** * Augment the basic actor data with additional dynamic data. */ diff --git a/modules/settings/settings-helpers.js b/modules/settings/settings-helpers.js index 6533ed95..bc5b8db2 100644 --- a/modules/settings/settings-helpers.js +++ b/modules/settings/settings-helpers.js @@ -315,8 +315,10 @@ export default class SettingsHelpers { onChange: this.debouncedReload, }); - // auto-configure the default values of tokens - once - game.settings.register("starwarsffg", "token_configured", { + // Auto-configure some tokens settings on creation + game.settings.register("starwarsffg", "RivalTokenPrepend", { + name: game.i18n.localize("SWFFG.Settings.actor.RivalTokenPrepend.Name"), + hint: game.i18n.localize("SWFFG.Settings.actor.RivalTokenPrepend.Hint"), scope: "world", config: false, default: false, diff --git a/modules/settings/ui-settings.js b/modules/settings/ui-settings.js index 98e6b15d..966a827e 100644 --- a/modules/settings/ui-settings.js +++ b/modules/settings/ui-settings.js @@ -144,6 +144,7 @@ export class actorSettings extends ffgSettings { "starwarsffg.maxSkill", "starwarsffg.medItemName", "starwarsffg.HealingItemAction", + "starwarsffg.RivalTokenPrepend", ]; return super.getData(includeSettingsNames); }