From 65d8ec2d39c6aa9e4e16dc8696c500be24e1844e Mon Sep 17 00:00:00 2001 From: Mike Bloy Date: Mon, 24 Jun 2024 21:28:15 -0500 Subject: [PATCH] 3.0.2 release. --- CHANGELOG.md | 11 ++++ src/module.json | 2 +- src/module/powers/powers.js | 7 +++ src/module/powers/shapeChange.js | 17 ++++- src/module/powers/summon.js | 44 +++++++++++++ src/packs/common-actions/000005.ldb | Bin 17134 -> 18330 bytes src/packs/common-actions/LOG | 10 +-- src/packs/common-actions/MANIFEST-000002 | Bin 162 -> 162 bytes src/packs/gear/LOG | 10 +-- src/packs/helper-actors/LOG | 10 +-- src/packs/helper-macros/LOG | 10 +-- src/packs/module-docs/000005.ldb | Bin 20877 -> 21157 bytes src/packs/module-docs/LOG | 10 +-- src/packs/module-docs/MANIFEST-000002 | Bin 162 -> 162 bytes .../Companion_WfqlcSZ7OPaa7lR2.json | 58 ++++++++++++++++++ .../Eidolon_jlcWxKDqboK2xLzV.json | 58 ++++++++++++++++++ .../module-docs/Macros_Mw1g2Fx5dp4SoqVP.json | 8 +-- 17 files changed, 224 insertions(+), 31 deletions(-) create mode 100644 src/packsrc/common-actions/Companion_WfqlcSZ7OPaa7lR2.json create mode 100644 src/packsrc/common-actions/Eidolon_jlcWxKDqboK2xLzV.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 12506e0..3e49e02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.0.2] 2024-06-24 + +### Fixed + +- Fixed bug in which effects would disappear on the target's next turn + +### Added + +- Eidolon summon effect and helper action +- Companion "summon" effect and helper action + ## [3.0.1] 2024-06-18 ### Added diff --git a/src/module.json b/src/module.json index 9969456..092782b 100644 --- a/src/module.json +++ b/src/module.json @@ -8,7 +8,7 @@ } ], "url": "https://git.bloy.org/foundryvtt/swade-mb-helpers", - "version": "3.0.1", + "version": "3.0.2", "compatibility": { "minimum": "11", "verified": "11" diff --git a/src/module/powers/powers.js b/src/module/powers/powers.js index baf79e1..e4b0bb7 100644 --- a/src/module/powers/powers.js +++ b/src/module/powers/powers.js @@ -66,6 +66,8 @@ import { SummonPlanarAllyEffect, SummonAnimalEffect, SummonUndeadEffect, + SummonEidolonEffect, + SummonCompanionEffect, } from './summon.js'; import { TelekinesisEffect } from './telekinesis.js'; import { TeleportEffect } from './teleport.js'; @@ -77,6 +79,7 @@ import { ZombieEffect } from './zombie.js'; import { InquisitorJudgementEffect } from './inquisitor.js'; const PowerClasses = { + 'animal-companion': SummonCompanionEffect, 'arcane-protection': ArcaneProtectionEffect, 'baleful-polymorph': BalefulPolymorphEffect, banish: BanishEffect, @@ -90,6 +93,7 @@ const PowerClasses = { 'boost-trait': BoostLowerTraitEffect, burrow: BurrowEffect, burst: BurstEffect, + companion: SummonCompanionEffect, 'conceal-arcana': DetectConcealArcanaEffect, confusion: ConfusionEffect, 'conjure-item': ConjureItemEffect, @@ -106,6 +110,7 @@ const PowerClasses = { dispel: DispelEffect, divination: DivinationEffect, 'drain-power-points': DrainPowerPointsEffect, + eidolon: SummonEidolonEffect, 'elemental-manipulation': ElementalManipulationEffect, empathy: EmpathyEffect, entangle: EntangleEffect, @@ -158,6 +163,8 @@ const PowerClasses = { sound: SoundSilenceEffect, 'speak-language': SpeakLanguageEffect, stun: StunEffect, + summoner: SummonEidolonEffect, + 'summon-eidolon': SummonEidolonEffect, 'summon-ally': SummonAllyEffect, 'summon-animal': SummonAnimalEffect, 'summon-monster': SummonMonsterEffect, diff --git a/src/module/powers/shapeChange.js b/src/module/powers/shapeChange.js index b76ed01..3d0ea2f 100644 --- a/src/module/powers/shapeChange.js +++ b/src/module/powers/shapeChange.js @@ -12,7 +12,7 @@ export class ShapeChangeEffect extends ActorFolderEffect { } get duration() { - return this.data.duration ? 50 : 5; + return (this.data.duration ? 50 : 5) * (this.data.wildShape ? 2 : 1); } get isTargeted() { @@ -55,16 +55,27 @@ export class ShapeChangeEffect extends ActorFolderEffect { } get modifiers() { + const wildShape = !!this.source.actor.items.find((i) => i.type === 'edge' && i.system.swid === 'wild-shape'); return [ ...super.modifiers, { name: 'Duration', type: 'checkbox', value: 1, + default: false, id: 'duration', epic: false, effect: false, }, + { + name: 'Wild Shape (Druid)', + type: 'checkbox', + value: 0, + default: wildShape, + id: 'wildShape', + epic: false, + effect: false, + }, { name: 'Transform Other?', type: 'select', @@ -206,6 +217,10 @@ export class ShapeChangeEffect extends ActorFolderEffect { } export async function shapeChangeTokenDeleteHandler(token, options, userId) { + if (token.flags?.['multilevel-tokens']?.stoken) { + // if the deleted token is a dummy token from multilevel-tokens, ignore it + return; + } log('TOKEN DELETED |', token, options, userId); const sourceInfo = token.getFlag(moduleName, 'shapeChange'); if (!sourceInfo?.srcTokenId) { diff --git a/src/module/powers/summon.js b/src/module/powers/summon.js index 39f0bac..9e92a77 100644 --- a/src/module/powers/summon.js +++ b/src/module/powers/summon.js @@ -485,3 +485,47 @@ export class SummonUndeadEffect extends BaseAllyEffect { return 'icons/magic/death/skeleton-glow-yellow-black.webp'; } } + +export class SummonEidolonEffect extends BaseSummonEffect { + get name() { + return 'Eidolon'; + } + + get icon() { + return 'icons/environment/creatures/monster-barbed-carapace-purple.webp'; + } + + get basePowerPoints() { + return 0; + } + + get duration() { + return 0; + } + + get isTargeted() { + return false; + } + + get isRaisable() { + return false; + } + + get summonCount() { + return 1; + } + + get modifiers() { + return super.modifiers.filter((m) => m.id === 'actorId'); + } +} + +export class SummonCompanionEffect extends SummonEidolonEffect { + get name() { + return 'Companion'; + } + + get icon() { + return 'icons/creatures/mammals/dog-husky-white-blue.webp'; + } +} diff --git a/src/packs/common-actions/000005.ldb b/src/packs/common-actions/000005.ldb index 3088784cd34b06ecea3bb59abd6ca118c5148553..7541494b804e3f91643eaa8b4c0f1d94948fd86b 100644 GIT binary patch delta 6732 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 delta 5856 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 Iu&(j{0rmh4d;kCd diff --git a/src/packs/common-actions/LOG b/src/packs/common-actions/LOG index 964c5b8..7f7bc4d 100644 --- a/src/packs/common-actions/LOG +++ b/src/packs/common-actions/LOG @@ -1,5 +1,5 @@ -2024/06/18-10:41:57.594700 7526dca00640 Delete type=3 #1 -2024/06/18-10:41:57.597427 7526db000640 Level-0 table #5: started -2024/06/18-10:41:57.598484 7526db000640 Level-0 table #5: 17134 bytes OK -2024/06/18-10:41:57.599441 7526db000640 Delete type=0 #3 -2024/06/18-10:41:57.599672 7526db000640 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) +2024/06/24-21:25:51.691281 7f0ee1fbd700 Delete type=3 #1 +2024/06/24-21:25:51.693418 7f0ee0fbb700 Level-0 table #5: started +2024/06/24-21:25:51.696862 7f0ee0fbb700 Level-0 table #5: 18330 bytes OK +2024/06/24-21:25:51.700171 7f0ee0fbb700 Delete type=0 #3 +2024/06/24-21:25:51.700246 7f0ee0fbb700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) diff --git a/src/packs/common-actions/MANIFEST-000002 b/src/packs/common-actions/MANIFEST-000002 index 21aabab841d05096cf9aae9cd07b88eed2a6d4f4..eac4ccf796efb383c98e4829c1ab27070d037093 100644 GIT binary patch delta 67 zcmZ3)xQKCrk>T{{=tG$dj7%(?49sjS>g-Icv-%ko71Q!_Qc{bG6%F!Sg4}X_or+Ce ToV-FUeHj%dCR?xzGk^gAMVAk- delta 67 zcmZ3)xQKCrk>Q$87t1mk7@1f&8JO8vRN0wW-?cI-DyHSyIg3J)g diff --git a/src/packs/gear/LOG b/src/packs/gear/LOG index 2b727e9..102ae3d 100644 --- a/src/packs/gear/LOG +++ b/src/packs/gear/LOG @@ -1,5 +1,5 @@ -2024/06/18-10:41:57.680100 70f947600640 Delete type=3 #1 -2024/06/18-10:41:57.682228 70f946c00640 Level-0 table #5: started -2024/06/18-10:41:57.683460 70f946c00640 Level-0 table #5: 6787 bytes OK -2024/06/18-10:41:57.684707 70f946c00640 Delete type=0 #3 -2024/06/18-10:41:57.684956 70f946c00640 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end) +2024/06/24-21:25:51.813834 7fd3f8fbd700 Delete type=3 #1 +2024/06/24-21:25:51.816127 7fd3f7d40700 Level-0 table #5: started +2024/06/24-21:25:51.819760 7fd3f7d40700 Level-0 table #5: 6787 bytes OK +2024/06/24-21:25:51.827595 7fd3f7d40700 Delete type=0 #3 +2024/06/24-21:25:51.827676 7fd3f7d40700 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end) diff --git a/src/packs/helper-actors/LOG b/src/packs/helper-actors/LOG index a1924ce..20aca2f 100644 --- a/src/packs/helper-actors/LOG +++ b/src/packs/helper-actors/LOG @@ -1,5 +1,5 @@ -2024/06/18-10:41:57.762408 7f3ebe800640 Delete type=3 #1 -2024/06/18-10:41:57.765316 7f3ebd800640 Level-0 table #5: started -2024/06/18-10:41:57.766837 7f3ebd800640 Level-0 table #5: 1751 bytes OK -2024/06/18-10:41:57.768732 7f3ebd800640 Delete type=0 #3 -2024/06/18-10:41:57.769025 7f3ebd800640 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end) +2024/06/24-21:25:51.937578 7f0e72fbe700 Delete type=3 #1 +2024/06/24-21:25:51.939623 7f0e71540700 Level-0 table #5: started +2024/06/24-21:25:51.943112 7f0e71540700 Level-0 table #5: 1751 bytes OK +2024/06/24-21:25:51.946116 7f0e71540700 Delete type=0 #3 +2024/06/24-21:25:51.946188 7f0e71540700 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end) diff --git a/src/packs/helper-macros/LOG b/src/packs/helper-macros/LOG index 093d627..c4947f8 100644 --- a/src/packs/helper-macros/LOG +++ b/src/packs/helper-macros/LOG @@ -1,5 +1,5 @@ -2024/06/18-10:41:57.843986 725194a00640 Delete type=3 #1 -2024/06/18-10:41:57.846307 72518f800640 Level-0 table #5: started -2024/06/18-10:41:57.847516 72518f800640 Level-0 table #5: 20105 bytes OK -2024/06/18-10:41:57.848771 72518f800640 Delete type=0 #3 -2024/06/18-10:41:57.848911 72518f800640 Manual compaction at level-0 from '!folders!8FWN37c0gcpAisAv' @ 72057594037927935 : 1 .. '!macros!ypFtlnrgQkzqLpxI' @ 0 : 0; will stop at (end) +2024/06/24-21:25:52.063889 7f3526ffd700 Delete type=3 #1 +2024/06/24-21:25:52.066002 7f35267fc700 Level-0 table #5: started +2024/06/24-21:25:52.069526 7f35267fc700 Level-0 table #5: 20105 bytes OK +2024/06/24-21:25:52.072473 7f35267fc700 Delete type=0 #3 +2024/06/24-21:25:52.072548 7f35267fc700 Manual compaction at level-0 from '!folders!8FWN37c0gcpAisAv' @ 72057594037927935 : 1 .. '!macros!ypFtlnrgQkzqLpxI' @ 0 : 0; will stop at (end) diff --git a/src/packs/module-docs/000005.ldb b/src/packs/module-docs/000005.ldb index 7492ed5938d64bea4e70cbb6bf5602ac72592054..ee4ac18a835116614cd8fe4c98fca9acb710867a 100644 GIT binary patch delta 827 zcmYL{TWkzb0EW+5GdkOyot?24ZPoU4vNalO?dWZH(WqXiTeqriiNv&XFtIzc-QDSG zL|eS55@}9^BBU+}UR?Htgh(ZbC?X9Ked5W3?dNJ3=V8WR1eEukf~ zw5i05t-G>a zSFxh{(GDZtq2Y20v_*=@Y};ran`@$F^4vCPf$zyS_ME)|W%gnnnJG=*gR*~E8-(|> zHg5l{*$m2H?k+hh=rpAzJ!i-dVZ5(B>}u3hBW9Ei0X^V$faTsNHY#Jl58OfrKy%*N zueUH5NzeA74XbjS1{2$A&^wy-_siaF>+YCIv?6 zOxIloQuzsXW{lLl9;B*xzozfjbS;gMY9>GSCFFUaZSg20rI5XsHet!AG~fZ9!hyP> zg^8HbgOez(^dLM=r48uho^Ye9>Q;jUJq$GO7&mZOcxvrxK50+7U(*LRmV>5WfI&%I zcYb6U$MB`6xt$D;I&doOnP6G0bnY!0U>=Js+Jn=Fmce1R)X3;a{BAFsLgGQc*sZD9 z;7;QLJQd9*=IvyM63u@24sI%PDG{Ot>*VM@W|Kt~AN-Dj< z^N8;!D`5e55X=PTc(JQ{B>T|0aXIu6E?P*X^|7^NQM62WI0AeBS>VHw{<}np7Q>gM zH(Kmq$DP03$ASQ~2tn7|a&j%|4Nt6iHK)k{4Xu@0o4meR>*=XcI!&c1uud@8o6&o& zoWFg>|D=8qKtb(A05%CF1(V(6PZV*(1Mo8sth6Wyw~n7Bi(CEn8#mjTN0*>HeF;uO W($(rB{jGEkE7VONo*Ek*~`k)H%Iq=lj4Uq28(?P zlkbTrO#aPjA*`UL5L}R1lvz@mn4=J$nplvZH~F87IJ2cy(&Uduij(`exF$c-P-o(t zI(a{row!eEUP@|WijG25er{4`s*XZpUW$Sp*JL5?gDk3SjGHFk;_hZrd@wnkXEu+F zLU~4NoXOOc@cfR1b&g?^2C%>B|(3NFtIjH z1tlvbV?7f+LnS_aewLzCNih*aLp@_dQ$}&V4&KQ%A`;Sj_ylD=%nd<7V`ge(U}>hK zl#^Io;wyHSZ}NH(WtP+NYkfCg6Y;Z=(`8^_0AVvAwg+MlAPxj#ZibUzj<28W6sRh= zVm@OXP=tXILAnimal Companions, guard dogs, familiars, etc

", + "notes": "", + "source": "", + "swid": "companion", + "additionalStats": {}, + "favorite": false, + "category": "Savage Pathfinder", + "templates": { + "cone": false, + "stream": false, + "small": false, + "medium": false, + "large": false + }, + "actions": { + "trait": "", + "traitMod": "", + "dmgMod": "", + "additional": { + "E4Pbzvi0": { + "name": "Place Companion", + "type": "macro", + "dice": null, + "resourcesUsed": null, + "modifier": "", + "override": "", + "uuid": "Compendium.swade-mb-helpers.helper-macros.Macro.AjuA11hQ48UJNwlH", + "macroActor": "self", + "isHeavyWeapon": false + } + } + }, + "choiceSets": [] + }, + "effects": [], + "sort": 0, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.4.1", + "coreVersion": "11.315", + "createdTime": 1719281390401, + "modifiedTime": 1719281480747, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!items!WfqlcSZ7OPaa7lR2" +} diff --git a/src/packsrc/common-actions/Eidolon_jlcWxKDqboK2xLzV.json b/src/packsrc/common-actions/Eidolon_jlcWxKDqboK2xLzV.json new file mode 100644 index 0000000..c171c77 --- /dev/null +++ b/src/packsrc/common-actions/Eidolon_jlcWxKDqboK2xLzV.json @@ -0,0 +1,58 @@ +{ + "name": "Eidolon", + "type": "action", + "folder": "rXqlP1phfPHNZrRT", + "_id": "jlcWxKDqboK2xLzV", + "img": "icons/environment/creatures/monster-barbed-carapace-purple.webp", + "system": { + "description": "", + "notes": "", + "source": "", + "swid": "eidolon", + "additionalStats": {}, + "favorite": false, + "category": "Savage Pathfinder (Summoner)", + "templates": { + "cone": false, + "stream": false, + "small": false, + "medium": false, + "large": false + }, + "actions": { + "trait": "", + "traitMod": "", + "dmgMod": "", + "additional": { + "E4Pbzvi0": { + "name": "Summon Eidolon", + "type": "macro", + "dice": null, + "resourcesUsed": null, + "modifier": "", + "override": "", + "uuid": "Compendium.swade-mb-helpers.helper-macros.Macro.AjuA11hQ48UJNwlH", + "macroActor": "self", + "isHeavyWeapon": false + } + } + }, + "choiceSets": [] + }, + "effects": [], + "sort": 0, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.4.1", + "coreVersion": "11.315", + "createdTime": 1719281279098, + "modifiedTime": 1719281348612, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!items!jlcWxKDqboK2xLzV" +} diff --git a/src/packsrc/module-docs/Macros_Mw1g2Fx5dp4SoqVP.json b/src/packsrc/module-docs/Macros_Mw1g2Fx5dp4SoqVP.json index 7569aa1..7ac5399 100644 --- a/src/packsrc/module-docs/Macros_Mw1g2Fx5dp4SoqVP.json +++ b/src/packsrc/module-docs/Macros_Mw1g2Fx5dp4SoqVP.json @@ -38,7 +38,7 @@ }, { "sort": 200000, - "name": "Summoning & Spiritual Weapon", + "name": "Summoning, Spiritual Weapon, and Companions", "type": "text", "_id": "9kDcPyCrI6hbF0qA", "title": { @@ -48,7 +48,7 @@ "image": {}, "text": { "format": 1, - "content": "

The Summon effects (Summon Ally, Summon Monster, Summon Nature's Ally, Summon Animal, Summon Planar Ally, Summon Undead, Zombie, and Spiritual Weapon (a modifier on Smite)) expect to have zero targets, and depends on the existence of an Actor folder called \"Summonables/<POWER>\" on the Actor sidebar (eg \"Summonables/Summon Ally\"). For the specialty summon effects (Summon Monster and the like) the folder is \"Summonables/Creatures\" for a shared folder. If this folder has subfolders, they'll be used by the macro to sort the list of available summonables. In the Summonables/<POWER> folder and subfolders, place the Actors that are available for summoning.

Template Actors

The Summonables/<POWER> folders are enhanced by template npc actors. If present, these enable additional automation when using some aspects of SWADE or SWPF summoning.

Summon Animal, Summon Monster, Summon Nature's Ally, Summon Planar Ally, Summon Undead

The specialty summon powers use a shared folder \"Summonables/Creatures\", with summoning costs and per-power availability set by the Set Summoning Cost macro. There are no template actors for Summonables/Creatures.

Summon Ally

The Summon Ally power requires some additional setup:

  1. an NPC actor called \"Mirror Self\" that has your version of the Construct and Fearless special abilities (only)

  2. (optional but recommended) the additional template actors described below

\"Summonables/Summon Ally\" also benefit from \"raise_template\", \"combat-edge_template\", \"flight_template\", in addition to \"raise_template\" mentioned above. In all template actors, please ensure that no two Items are named exactly the same (eg an Edge named 'Frenzy' and an action named 'Frenzy' will not work) due to a limitation in WarpGate.

(I cannot include these template actors in this module because a) they'd be different for SWADE and SWPF, and b) I can't redistribute the embedded abilities as it is copyrighted material).

raise_template

this npc actor should have your handmade or purchased system content's Resilient ability and any effects embedded in that ability.

combat-edge_template

This npc actor should have every combat edge you want to support dragged to the actor.

flight_template

This npc actor should have a Flight Item (probably a special ability) and/or the Flying active effect.

Zombie

The Zombie power requires an additional step as well. Raises are different for Zombie, as are some other effects. Zombie therefore does not require a \"raise_template\", but does need an \"armed_template\" which should have (only) Items that represent a hand weapon and a ranged weapon.

Spiritual Weapon

Smite's Spiritual Weapon works as a separate macro from the effect macro, selected using the 'Spiritual Weapon' modifier on the main power, that summons a spiritual weapon. Put the potential Spiritual Weapon tokens in a Summonables/Spiritual Weapon folder. The macro will copy the specified arcane skill from the summoner, but the spiritual weapon actor should have a weapon object with a swid of 'spritual-weapon'. This item will be modified with an action for the arcane skill, and if a raise the damage will be increased.

" + "content": "

The Summon effects (Summon Ally, Summon Monster, Summon Nature's Ally, Summon Animal, Summon Planar Ally, Summon Undead, Zombie, and Spiritual Weapon (a modifier on Smite)) expect to have zero targets, and depends on the existence of an Actor folder called \"Summonables/<POWER>\" on the Actor sidebar (eg \"Summonables/Summon Ally\"). For the specialty summon effects (Summon Monster and the like) the folder is \"Summonables/Creatures\" for a shared folder. If this folder has subfolders, they'll be used by the macro to sort the list of available summonables. In the Summonables/<POWER> folder and subfolders, place the Actors that are available for summoning.

Template Actors

The Summonables/<POWER> folders are enhanced by template npc actors. If present, these enable additional automation when using some aspects of SWADE or SWPF summoning.

Summon Animal, Summon Monster, Summon Nature's Ally, Summon Planar Ally, Summon Undead

The specialty summon powers use a shared folder \"Summonables/Creatures\", with summoning costs and per-power availability set by the Set Summoning Cost macro. There are no template actors for Summonables/Creatures.

Summon Ally

The Summon Ally power requires some additional setup:

  1. an NPC actor called \"Mirror Self\" that has your version of the Construct and Fearless special abilities (only)

  2. (optional but recommended) the additional template actors described below

\"Summonables/Summon Ally\" also benefit from \"raise_template\", \"combat-edge_template\", \"flight_template\", in addition to \"raise_template\" mentioned above. In all template actors, please ensure that no two Items are named exactly the same (eg an Edge named 'Frenzy' and an action named 'Frenzy' will not work) due to a limitation in WarpGate.

(I cannot include these template actors in this module because a) they'd be different for SWADE and SWPF, and b) I can't redistribute the embedded abilities as it is copyrighted material).

raise_template

this npc actor should have your handmade or purchased system content's Resilient ability and any effects embedded in that ability.

combat-edge_template

This npc actor should have every combat edge you want to support dragged to the actor.

flight_template

This npc actor should have a Flight Item (probably a special ability) and/or the Flying active effect.

Zombie

The Zombie power requires an additional step as well. Raises are different for Zombie, as are some other effects. Zombie therefore does not require a \"raise_template\", but does need an \"armed_template\" which should have (only) Items that represent a hand weapon and a ranged weapon.

Spiritual Weapon

Smite's Spiritual Weapon works as a separate macro from the effect macro, selected using the 'Spiritual Weapon' modifier on the main power, that summons a spiritual weapon. Put the potential Spiritual Weapon tokens in a Summonables/Spiritual Weapon folder. The macro will copy the specified arcane skill from the summoner, but the spiritual weapon actor should have a weapon object with a swid of 'spritual-weapon'. This item will be modified with an action for the arcane skill, and if a raise the damage will be increased.

Eidolons and Companions

Two actions exist in the 'SWADE MB Common Actions' compendium: Eidolon and Companion. These act as 'summoning' powers with an infinite duration for the Summoner's Eidolon and for any other companions a player may need to place on the map. Their folders are Summonables/Eidolon and Summonables/Companion respectively, and work best when each named actor gets their own subfolder.

" }, "video": { "controls": true, @@ -65,7 +65,7 @@ "systemVersion": "3.4.1", "coreVersion": "11.315", "createdTime": 1695617584063, - "modifiedTime": 1718163652096, + "modifiedTime": 1719281763900, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.9kDcPyCrI6hbF0qA" @@ -471,7 +471,7 @@ "systemVersion": "3.4.1", "coreVersion": "11.315", "createdTime": 1678169291843, - "modifiedTime": 1718163809765, + "modifiedTime": 1719281763900, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "Mw1g2Fx5dp4SoqVP",