#MidiQOL
1 messages Β· Page 42 of 1
yeah, I use a fixed loot entity just so my players don't have to go fishing and my journal doesn't build up with useless extras
it even prompts for indomitable too
let me see if I can capture a gif
I just use better roll tables and let my players just drag the items from the chat box
What part of this is Better RollTables, out of curiosity?
Loot tables specifically
I think indomitable is missing a label
For some reason when emboldening bond is on him, indomitable does not work but emboldening gets 2 prompts, here is Indomitable:
It rolls all my embedded tables and formats it nicely
That's weird
the first one is just saving throw in the dialog
and the 2nd one is dexterity saving throw
That may be why you're getting two dialogs
I don't see how he could have a rogue bonus on him
oh wait actor on use maybe?
he just has crusher actor on use active
I'm gonna just ignore this issue until MTB 10.6 releases
Just a heads up if you're looking at the module you'll need to dig around on Github for the unofficial v10 port.
yeah I was quite glad when someone forked that, I have been carrying the premade tables along in v10
I pretty heavily use it in my game, I wound putting a request in for it on the The League of Extraordinary Foundry VTT Developers Discord
Was the last module holding me back on v9 for a long time.
Now if only GM screen would get an update / unofficial update that works
Oh no not at all, I was just curious what part of the picture was actually the module's doing
Ah gotcha
The total part is my own macro that just parses the message and totals it
That one was a giant mess to make
One of my first macros I've made. Pretty sure it can be done better, but I really don't want to mess with parsing html again.
Yeah I won't lie. It can be done better and/or differently
I can likely grab the item id and look at the value there
But I didn't know how to do that when I made this lol
Yeah just getting the .content-links, map them to uuids
At the end of the day it's just the gems and trinket items from the DMG roll tables. So it's ugly having them set in the macro, it's very unlikely I'll ever add more.
So I've been looking for a way to Automate Create Bonfire and found this. I'm on v10.
It all works fine up until whenever it gets around to the enemy's turn in the bonfire, and he takes no damage, and I'm prevented from rolling over to his turn.
I do something like this with spreading spores just fine in active auras
Hi there, I'm trying to add the sneak attack feature to a monster. I would like it to trigger using Midi's auto sneak attack. Looking at the item macro the feature has it seems like it's dependent on having rogue levels? I'm not very family with coding language. Can someone help me pull out the rogue level dependency please. Thank you.
I think I figured out the problem.
#dnd5e message
You'd probably have to either manually change the scale when it matters and use straight integers or go the route of spirit guardians with that hot mess of macro shenanigans
@covert mason can you post the full OT effect value?
turn=start,
saveAbility=dex,
saveDC=@attributes.spelldc,
rollType=save,
saveRemove=false,
damageRoll=(1+floor((@details.level + 1) / 6))d8,
damageType=fire,
label=Take damage upon entering and/or end of turn```
Trying to make a Create Bonfire cantrip that works for both players and NPCs.
The @details.level/@details.cr bit seems to be what's causing errors. I'm trying to find a way to make the formula take into consideration either CR or Level depending on what it detects.
give the player the level version, and put the other in a dfreds CE
@covert mason Could you try (1+floor(((@details.level || 0) + (@details.cr || 0) + 1) / 6))d8 as your damage?
@kind cape I'll give that a try!
@violet meadow @vast bane OK I'm just starting to get my head around how Emboldening Bond is set up using optional bonuses (I'd not encountered those before).... I think my best course of action would just be to put a request on Tim's git asking if we can await a DSN roll before the dialog pops with the result, and then π€ he takes a look at it
It returned this on the token that was afflicted with it
damageRoll=(1+floor(((0 || 0) + (10 || 0) + 1) / 6))d8,```
So it's no longer counting the @details.level as unidentified
Yeah that was the hope of the || addition
However, it's not rolling it.
You wouldn't need then the || 0 part
I honestly don't think it matters much if a dice roll is missing, the dice are superficial anyway
This works correctly for me though
For a CR20 NPC
...Huh.
Maybe I've done something wrong
MidiQOL version?
It should be the most recent version. 10.0.23
Hmm let me double check something. How do you create the effect?
I basically just followed this: #1010273821401555087 message
are there errors in the console?
is the code you linked above definitely what is in the effect value?
turn=start,
saveAbility=dex,
saveDC=18,
rollType=save,
saveRemove=false,
damageRoll=(1+floor((undefined +10+ 1) / 6))d8,
damageType=fire,
label=Take damage upon entering and/or end of turn```
This is what's appearing on the enemy creature when it's affected by the bonfire.
``Undefined`` was the ``@details.level``.
Starting to understand this a bit better and it seems like a tweak to midi itself rather than the sample item would be required. Would it be ok if I put a request on your git to consider letting the DSN roll before popping the optional bonus dialog? Then you can ignore it until you feel like it π
Here's the original code. This effect is being cast by a CR 10 NPC.
turn=start,
saveAbility=dex,
saveDC=18,
rollType=save,
saveRemove=false,
damageRoll=(1+floor((@details.level +@details.cr+ 1) / 6))d8,
damageType=fire,
label=Take damage upon entering and/or end of turn```
does it work when you don't have the undefined one in?
Yup!
just split them up, put the player one on the item and the npc one in a dfreds ce
and set the player one not to use dfreds
then all your npc bonfires just need to be set to do a template
wait can dfreds work with active auras?
I don't see why not
what versions of dae do the two of you have
Ohh is that an Active Auras?
Yup!
Can you send me the export of the item?
are you on the test version for AA or the official AA
I'm on v0.5.2
I wonder if itd be better to play it as a warpgate summons like flaming sphere
@vast bane
The recent release of VAE should fix your insane week-long effects, please confirm at your leisure. π
hehe I noticed
Well looks like you're getting other people to help you out so I'll let them handle everything (plus I'm still on v9)
Go ahead. I'll have to give it some thought as the display of the roll is a side effect of displaying the chat card (more or less).
Do you have an example of that anywhere? π
https://github.com/chrisk123999/foundry-macros/tree/main/Spells/Sanctuary
No documentation for it yet. But when I'm at my PC if a little bit I can screenshot how to set it up
I should actually update this to work with multiclassed spellcasting.
Just some feedback, I would add what foundry version these are for. Initial glance it looks like v10 but eventually there will be v11 and onwards
Yea, I need to add documentation to a lot of my stuff still. I only recently updated to v10 and have been more focused on getting my old stuff updated to v10 still.
Everything on the github is v10.
I feel that. For work my documentation is mostly clean code and comments. I really should update our sprint records doc, haha
Hey, I have a question for all you MidiQOL experts out there. I am looking to create an Unholy Mace that does an extra 1d6 necrotic damage to Good aligned players. Under Activation Condition, I have:
"@target.details.alignment.value".includes("good")
I also have Activation Condition true ... etc. selected and 1d6 in Other Formula. So two questions, if I may:
- Is my @target correct, cause I don't think it is, because it ain't working?
- How do I add necro damage into the other formula?
Thanks!
Works like a charm! Thank you
"@target.details.alignment".includes("Good")
Add the necrotic damage in the other formula 1d10000[necrotic]
I'm actually updating it right now to account for muticlassed characters casting it.
@spice kraken Thanks!
Updated the macro. No longer needs the DAE field. But should still put an active effect on the target (with no keys set).
Nice. I'm also trying to get your Cloudkill working, but I'm, having a wee bit of trouble. I think I've set it up right, but it's dealing no damage
That's a complicated one for sure
That one relies on advanced macros
and I haven't tested it on the newer version that rewrote it
I've had mine locked on v1.18.1 for advanced macros since the newer ones were pretty buggy. I haven't time time to check if that's still the case.
Yea, v1.19 of advanced macros still breaking my stuff. I need to replace it or figure out why called GM macros with it aren't doing returns anymore.
Are you logged in as GM while executing as GM?
Yep
It still works fine when the player uses it
Advanced macros has a GM run the macro then sends back the return (in v1.18)
Weird.
1.19 just doesn't seem to have that function anymore
Anyone have a way to automate the multi-attack part of scorching ray on v9
Item5e#rollAttack()
Attack 3 times without using a slot
That's how we currently do it but was looking to make it faster
Especially since our current combat has like 50+ actors in it
Advanced Spell Effects! It automates lots of spells for v9, scorching ray included
Sadly not up to date for v10 
In Item Macro?
What's faster than just clicking the attack button three times?
Unchecking consume spell slot
No, the attack button π€·
Slows down my player. He's not the most attentive
Hmm, let me see if that will attack a new target
As a player I wouldn't want to be forced to pick all 3 targets at once
In the case where a single ray may kill the target
lol.
Oh no, I don't force them. But it's nice to not have to go back to the char sheet since for some reason always prepared spells aren't showing up in TAH
Oh never mind, he was out of spell slots. That's why they weren't showing up. That's a neat feature, good to know for the future
I'm looking to automate the Borrowed knowledge spell, which gives proficiency in a skill of your choice for the spell's duration. What'd make sense to me is some sort of dialogue selection with all the skills you can select, and then you gain proficiency in that skill with an active effect. I've found a Protection from Energy macro I'm trying to cannibalize, but I don't think I'm proficient (ha) enough to get it working with proficiency instead of resistance. π
Someone probably has a better way to do it than I do but if no one can, I'll show you how with a custom nested effect with CE. I don't recommend this at all though
Oh, I've been watching your video on that. As a novice coder...
It scares me. π
Also, I don't think I have access to the module files in Forge anyhoo.
It's not hard. Just basically copy something similar and make your own version of it. But I can't help with forge since idk how they store the module data
I've been meaning to make that spell actually
Would just be a dialog to pick the skill and update the effect's changes array
yea
Aye
Or just create the effect in the macro
And no you can't modify a module on Forge
I'm assuming you could probably download your module data (or even all of user data), make the changes, and upload back. But I treat forge like the plague, I'm not messing with it at all
You can't download modules, no
You would get it from github or gitlab, modify it, then upload as a custom module
It would count against your user data size or whatever
anyway--
const options = Object.entries(actor.system.skills).reduce((acc, [key, {value}]) => {
if(value > 0) return acc;
return acc + `<option value="${key}">${CONFIG.DND5E.skills[key].label}</option>`;
}, "");
const content = `
<form>
<div class="form-group">
<label>Skill</label>
<div class="form-fields">
<select>${options}</select>
</div>
</div>
</form>`;
const key = await Dialog.prompt({
title: "Borrowed Knowledge",
content,
rejectClose: false,
label: "Become wisdomous",
callback: (html) => html[0].querySelector("select").value
});
if(!key) return;
const effect = actor.effects.find(e => e.getFlag("world", "borrowed-knowledge"));
const mode = CONST.ACTIVE_EFFECT_MODES.UPGRADE;
const changes = [{key: `system.skills.${key}.value`, value: 1, mode}];
if(effect) return effect.update({changes});
return actor.createEmbeddedDocuments("ActiveEffect", [{
icon: "your icon here.webp",
label: "Borrowed Knowledge",
duration: {seconds: 600},
"flags.world.borrowed-knowledge": true,
changes
}]);
tested.
yeah that's gucci. ezpz
Zhell MVP
@coarse mesa Emboldening Bond show dice (Sanitised description of the item).
Show dice as in, show the d20 DSN roll when you decide to use the optional bonus effect. Normally the original d20 DSN is not shown rolling in this case, but only the extra d4
Small issue with attacks when reactions (hit) are available.
To solve small change in MidiQOL utils.js:2842 which for now I don't know if it breaks something (...seems innocent enough π
) ```js
case "d20":
//@ts-ignore
if (!attackRoll?.terms[0].results) break; //added this line.
const theRoll = attackRoll?.terms[0].results[0].result ?? "";
content = <h4>${reactionFlavor} ${rollOptions.d20} ${theRoll}</h4>;
break;
@gilded yacht With ~~the attached item~~ the changed macro just below for the Emboldening Bond, this error was triggered if you could take a look π . ```js
utils.js:2844 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '0')
[Detected 1 package: midi-qol]
at doReactions (utils.js:2844)
at async Workflow.checkHits (workflow.js:2784)
at async Workflow._next (workflow.js:443)
at async Workflow.next (workflow.js:262)
at async Item5e.doAttackRoll (itemhandling.js:500)
at async Workflow._next (workflow.js:416)
at async Workflow.next (workflow.js:262)
at async Workflow.next (workflow.js:262)
at async Workflow.next (workflow.js:262)
at async Workflow.next (workflow.js:262)
at async Workflow.next (workflow.js:262)
Macro: <#1010273821401555087 message>
Thanks will take a look when I get home!
Actually as this is the same item as the one in the sample items, I will share the macro directly.
Hmm also the js if (token.actor.getFlag('world','emboldeningBondHookIds.hookId2')) Hooks.off("preDeleteActiveEffect", token.actor.getFlag('world','emboldeningBondHookIds.hookId2')) just to be safe should be moved just after the ```js
hookId1 = Hooks.on("renderApplication", async (rollModifyDialog) => {
game.dice3d.showForRoll(currentRoll, game.users.get("userId"), true); think you have a mistake there, the quotes
indeed... 
Dunno if you know but something like this let {currentRoll} = rollModifyDialog?.data is gonna error no matter what if it doesn't succeed
You would do
let {currentRoll} = rollModifyDialog?.data ?? {};
Yeah I think its safe after the checks before that line, so I didn't pay that much attention
Yeah it's all safe cause you wrapped it in try/catch π
Well that too π
Hope this is OK for now
Argggh you can cast it on other tokens not owned. Need to change the createEmdebbedDocuments to ```js
await MidiQOL.socket().executeAsGM("createEffects", {'actorUuid': token.actor.uuid, effects: [effectData]});
oof and game.user should be enough
Done... π©
Am I doing this right?
let target = canvas.tokens.get(args[0].targets[0].id);
let condition_list = ["Charmed", "Frightened"];
let effect = target.actor.effects.filter(i => condition_list.includes(i.data.label));
let selectOptions = effect.reduce((list, activeEffect) => {
let condition = activeEffect.data.label;
list.push(`<option value="${condition}">${condition}</option>`);
return list;
}, []);
if (selectOptions.length === 0) return ui.notifications.error(`Nothing happens.. There's nothing to calm on ${target.name}.`);
let the_content = `<form class="flexcol"><div class="form-group"><select id="element">${selectOptions.join('')}</select></div></form>`;
new Dialog({
title: `Calm Emotions : ${target.name}`,
content: the_content,
buttons: {
yes: {
icon: '<i class="fas fa-check"></i>',
label: 'Remove it!',
callback: async (html) => {
let element = html.find('#element').val();
let effect = target.actor.effects.find(i => i.data.label === element);
await MidiQOL.socket().executeAsGM("removeEffects", { actorUuid: target.actor.uuid, effects: [effect.id] });
let chatMessage = game.messages.get(args[0].itemCardId);
let chatContent = `<div class="midi-qol-nobox"><div class="midi-qol-flex-container"><div>Cures ${element}:</div><div class="midi-qol-target-npc midi-qol-target-name" id="${target.data._id}"> ${target.name}</div><div><img src="${target.data.img}" width="30" height="30" style="border:0px"></img></div></div></div>`;
let content = duplicate(chatMessage.data.content);
let searchString = /<div class="midi-qol-hits-display">[\s\S]*<div class="end-midi-qol-hits-display">/g;
let replaceString = `<div class="midi-qol-hits-display"><div class="end-midi-qol-hits-display">${chatContent}`;
content = content.replace(searchString, replaceString);
chatMessage.update({ content: content });
ui.chat.scrollBottom();
}
}
},
default: "yes"
}).render(true);```
(Cannibalized from a lesser restoration macro)
Does it work? π
cannot think properly. ~~ but list and condition_list~~
If you're on v10, you should remove the .data parts
selectOptions can also simply just return a string, not an Array that is join'd later on anyway.
const target = canvas.scene.tokens.get(args[0].targets[0].id);
const conditionList = ["Charmed", "Frightened"];
const options = target.actor.effects.filter(i => {
return conditionList.includes(i.label);
}).reduce((acc, effect) => {
return acc + `<option value="${effect.id}">${effect.label}</option>`;
}, "");
if (!selectOptions.length) {
ui.notifications.error(`Nothing happens.. There's nothing to calm on ${target.name}.`);
return;
}
const content = `
<form>
<div class="form-group">
<div class="form-fields">
<select>${options}</select>
</div>
</div>
</form>`;
return Dialog.prompt({
title: `Calm Emotions : ${target.name}`,
content,
label: 'Remove it!',
callback: async (html) => {
const effectId = html[0].querySelector("select").value;
const effect = target.actor.effects.get(effectId);
await MidiQOL.socket().executeAsGM("removeEffects", { actorUuid: target.actor.uuid, effects: [effectId] });
const message = game.messages.get(args[0].itemCardId);
const chatContent = `
<div class="midi-qol-nobox">
<div class="midi-qol-flex-container">
<div>Cures ${effect.label}:</div>
<div class="midi-qol-target-npc midi-qol-target-name" id="${target.id}"> ${target.name}</div>
<div><img src="${target.texture.src}" width="30" height="30" style="border:0px"></img></div>
</div>
</div>`;
const searchString = /<div class="midi-qol-hits-display">[\s\S]*<div class="end-midi-qol-hits-display">/g;
const replaceString = `<div class="midi-qol-hits-display"><div class="end-midi-qol-hits-display">${chatContent}`;
const content = foundry.utils.duplicate(message.content).replace(searchString, replaceString);
await message.update({content});
}
}
});
should be fully updated for v10
I seem to be getting this error
Nowhere to be found in this macro far as I can tell
@violet meadow maybe I missed a step somewhere... tweaked midi, using the latest active effect with the additional change β not getting any errors, but still no dice
literally
Ok, how are you testing it?
Caster to self or another target?
GM only? Player?
Can you test GM caster to self?
Will be at my desk in about 30 and will test it again. It was quite late and I might have botched something π€
just about to head to bed but will quickly test that π
same deal...
no stress tho, wasn't expecting a fix anytime soon haha
Ok just send me over your midi settings and will take a look
What does "Temporary (Expired)" mean in VAE
If my effect has expired it should be auto deleting itself π€
Hmm I might have been trying to solve a slightly different issue than what you wanted now that I think about it again .
The d20 will be "rolled" after you accept to roll with the emboldening bond d4.
Did you need the actual d20 DSN to be rolled before the pop up dialog for the optional effect?
As things are now, if you accepted the bonus, DSN would grab only the d4 roll
yeah what I'm after is DSN rolls for the d20 (everyone sees that)... player with EB gets a prompt, if they hit yes everyone sees the d4
Hmm for some reason effects might fail to be removed automatically.
Does it happen often?
I remember seeing that, but it's not a VAE or DFreds Effects Panel issue.
You should be able to see the effect having a negative duration in the effects tab of the character sheet to I think
Maybe I moved time forward in smalltime and forgot. Probably PEBCAK.
It's just strange not having a dice roll at all, especially for saves where everyone is rolling (I know you can catch up in chat but it's still jarring)
Ok so the macro I think solves that but not quite like that.
It will show the initial d20 after the dialog closes, even if you accept the bonus.
Before it wouldn't show that, but only the d4
yeah that's an improvement but ruins the illusion of the dice roll (if you already know the result and then it rolls after)
our group is really into the tension of the rolls... having come from tabletop
Could happen if you are out of combat and the specific effect has only rounds and not any reference to seconds iirc.
Depending on how it's been created, DAE might not have picked up the creation to make the conversion.
I know, Emboldening Bond is an annoying feature! Wish I'd read it first before recommending that subclass
Yeah now I understand more clearly. It might be more of a Midi mainframe issue, but I will take a look.
Kinda the way the design is heading for OneD&D though, can add guidance/resistance/inspiration after the roll... things not consuming uses if they don't result in success... Tim is going to be busy π
Legendary resistances for the plebs?! π±
Thanks β I did pop it on the git btw
Yeah I saw that. I am just playing around with something that would anyways need a MidiQol workflow change to be solved tbh
When I first tried it I thought why canβt you just tell DSN to roll the d20 result before showing the dialogβ¦ seemed simple enough with my very limited understanding π€¨
But yeah you sent me into like line 3000 of but one midi source file π€―
Ok this is a doozy. I'm trying to figure out a good way to automate mounted combatants. What I would like to do is:
- Have a mounted combatant have access to both its mount and its own attacks;
- Have an incoming attack have a chance to strike the mount instead of the mounted combatant;
- If the mount goes to 0 HP, replace the token/actor from the Large, mounted combatant one to the Medium one representing the now on-foot combatant.
My current cobbled together solutions is:
- Since the mount is specific for each actor, just have the mount attacks added to the mounted combatant actor.
- Add a resource to the mounted combatant actor called "Mount HP", have a criteria for certain attacks to strike the mount and reduce this resource, while causing no damage to the mounted combatant itself.
- If the resource goes to 0, use a warpgate macro to despawn the mounted combatant and spawn the on-foot version of the same actor. Update its HP to match the mounted combatant ones at this moment.
Looking for feedback on the process!
Posting here as well my #macro-polo answer.
With MidiQOL, as you said that you were thinking of "moving" the Mount's actions on the actor, another Reaction Damaged item would make sense. If triggered you would insert the logic of the target percentages and damage application/healing.
Without, I guess the GM or the attacker would need to have a specific macro to trigger the attack against the mounted combatant, in which the logic of all that would be implemented?
I see this happen with effects that are created but for some reason do not get a 'start time'.
ah so when the target is attacked, I would select manually to "hit the mount" instead?
yeah that too! <= regarding Zhell's comment.
You wcould use the reaction to, roll or however you wanna do it, decide which one is hit
I'm asking cause the only instance of "Reaction Damaged" I've used is something like Shield...can you specify that for that specific Reaction Damaged item the process is automatic, IE: it triggers every time the actor is damaged?
If you want to do it full on auto, Hooks and a worldscipt should be used.
You would need to flag the "mounted" combatants, so whenever an attack is rolled against them, a percentage roll would be made and decide the target of the attack to come π€
So something like ```
if attack
check target
if target mounted, roll d100
if roll hits mount, target mount
else target mounted
workflow continue
mmm I also guess there is an argument to be made for the Reaction Damaged to be an active use of the mounted combatant Reaction for that round as a defensive measure
if they hate their mount I mean π€£
Mounted Combatant feat ```
You have advantage on melee attack rolls against any unmounted creature that is smaller than your mount.
You can force an attack targeted at your mount to target you instead.
If your mount is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throw, and only half damage if it fails.
yeah that's if you like your mount
this is mostly to handle enemies tbh since I usually don't have mounted pcs
Yeah so depending on the choices you want the player to have at their disposal, you can either --
not after the oubliette accident
ah OK then, still I think that if you use something like Mount UP module and a flag to be picked up by a world script, you will be golden π
let me check that module :v
on a partially related note, can you "store" a value on a character's sheet to reference it later in a macro? IE: if the entire content of the mounted actor's biography is the name of the on-foot actor, so that when the mount dies I can just have a universal macro to reference that value and spawn a token for the actor with that name
maybe there's an easier way with tags or something
Yeah. Or you can use yet another module to have them all the spawns tied in the actors (even though I think it currently has a bug and shows all spawns for everyone)
You could place all the relevant info even on a flag on the actor for all intents and purposes
Oh that poor Raxi. She bears the signs of tests for so many modules and macros.
and worse, she's a gnome
you sire are off the party list
Darn. Now I, too, have been uninvited from a birthday party.
You still can salvage this. What about my fav Svirfneblin Gnome?
Svirfneblins are ok
If you want me to be good with gnomes, I would rather not experience the bouncy castle your mom ordered. Good day, sir
I've ended up just using Mount Up btw :v And I'll let the players decide if they want to become enemies of PETA
do you lack the module times up?
Hell naw, that's a staple
One little thing I didn't realize, how on earth would one work this into the spell Call Lightning?
If you are outdoors in stormy conditions when you cast this spell, the spell gives you control over the existing storm instead of creating a new one. Under such conditions, the spellβs damage increases by 1d10.
Versatile damage baby
yeah I was thinkin an advantage reminder for my setup
reason why I wouldn't do versatile is cause my players hate keyboard shortcuts anyway and we don't fast forward
..?
If you aren't fast forwarding, you can just click the Vers button
Or are you autrolling damage or something
fast forward=/=auto roll
fast forward removes the popouts, auto roll removes the chat card buttons
well it doesn't remove them so much as it auto rolls the default
Yeah versatile would be a button on card not popup, so only affected by auto not ff
I stick with auto roll attack but not damage
I have auto roll damage when needed on
man somehow tokenmagic fx had its template settings turned back on, I swear I have had that off forever
Man its too bad CombatBooster can't be set to use canvas actors for roll history, its slowly getting phased out for VAE now
its just inherantly incompatible with dae's macro.createitem
because if an item doesn't exist on the proto actor and the canvas actor the buttons are dead in the token hud ui
You've already got hotbar and Token Action HUD, how many levels of action accessibility do you need
yeah good point
Is there a way to have a document link activate an item macro?
use case: I have my premade Call Lightning all fancy and great, but the VAE button is a link to a folder macro, if only it could be a link to an item macro or something
or if there was a slot in effect macro for just a plain old storage macro
I really like Action Pack, much more visibility as a DM to see all of the attacks and abilities for NPCs, my players like it as well.
Takes up too much space for my liking. TBH I don't use any such mods.
Check the Item Macro readme
Just regular old character sheets
Check the Effect Macro readme.
As a DM maybe TAH would be worth my while π€
Yeah I just need to get used to it, up until I started having all these createitems sitting on npcs, I was using combatbooster
I also need to go in and reclassify the items with spells as crew actions to clean up everyones TAH
Cause this is messy
That is some godless nonsense
its cause up until 3 weeks ago they all used argon
so we never managed the TAH for the players
At that point you might as well just use the sheet.
I also need to go find the settings to not show 0 cost items so I can exclude some of that entirely in character action list
At least it will be organised.
Yer not gonna believe this
(the sheets just as messy)
my players are hoarders and procrastinators
only 2/5 login outside of gametime to do anything
Sucks to be them
I'd like to add a sequencer effect to the summoning of the MidiQoL spiritual weapon sample item, at the point where it's summoned. How would I achieve that?
I've been using a similar effect for Animate Dead. I'm just trying to figure out how to implement it with Spiritual Weapon.
console.log(args)
const buttonData = {
buttons: [{
label: "Skeleton",
value: {
token: {
name: "Skeleton",
},
actor: {
name: "Skeleton",
}
}
},{
label: "Zombie",
value: {
token: {
name: "Zombie",
},
actor: {
name: "Zombie",
}
}
}]
}
const level = args[0].spellLevel;
const number = (level - 3)*2 + 1;
async function myEffectFunction(tokenDoc) {
//prep summoning area
new Sequence()
.sound()
.file("/Sounds/Combat/Ghostly_Swells*.ogg")
.volume(0.5)
.sound()
.file("/Sounds/Creatures/Zombie/MON_northrendskeleton_birth_*.ogg")
.volume(0.5)
.effect()
.file('jb2a.magic_signs.circle.02.necromancy.intro.blue')
.atLocation(tokenDoc)
.center()
.scaleToObject(2)
.belowTokens()
.fadeIn(500)
.fadeOut(500)
.randomizeMirrorX()
.randomizeMirrorY()
.randomRotation()
.effect()
.file('animated-spell-effects-cartoon.earth.debris.03')
.atLocation(tokenDoc)
.center()
.scaleToObject(4)
.belowTokens()
.fadeIn(500)
.fadeOut(500)
.randomizeMirrorX()
.randomizeMirrorY()
.randomRotation()
.play();
}
const callbacks = {
post: async (location, tokenDoc, updates, iteration) => {
await myEffectFunction(tokenDoc);
}
}
for(let i = 0; i < number; i++){
buttonData.title = `Animating which type? (${i+1} of ${number})`;
const choice = await warpgate.buttonDialog(buttonData);
if (choice === true) return;
await warpgate.spawn(choice.actor.name, choice, callbacks);
}```
This is what I'd like to add the sequencer effect to.
try {
const origin = args[0].itemUuid;
if (origin) {
const removeList = actor.effects.filter(ae => ae.origin === origin && getProperty(ae, "flags.dae.transfer") !== 3).map(ae=>ae.id);
await actor.deleteEmbeddedDocuments("ActiveEffect", removeList)
}
const updates = {
Item: {
"Spiritual Weapon Attack": {
"type": "weapon",
"img": args[0].itemData.img,
"system.actionType" : "msak",
"system.properties.mgc": true,
"system.attackBonus": `${Number(args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod) + Number(args[0].actor.system.attributes.prof) + Number(args[0].actor.system.bonuses.msak.attack)}`,
"system.proficient": false,
"system.damage.parts":[[`${1 + Math.floor((args[0].spellLevel-2)/2)}d8 + ${args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod || ""}`,"force"]]
}
}
}
const result = await warpgate.spawn("Spiritual Weapon", {embedded: updates}, {}, {});
if (result.length !== 1) return;
const createdToken = game.canvas.tokens.get(result[0]);
await createdToken.actor.items.getName("Spiritual Weapon Attack").update({"data.proficient": false});
const targetUuid = createdToken.document.uuid;
await actor.createEmbeddedDocuments("ActiveEffect", [{
label: "Summon",
icon: args[0].item.img,
origin,
duration: {seconds: 60, rounds:10},
"flags.dae.stackable": false,
changes: [{key: "flags.dae.deleteUuid", mode: CONST.ACTIVE_EFFECT_MODES.ADD, value: [targetUuid]}]
}]);
} catch (err) {
console.error(`${args[0].itemData.name} - Spiritual Weapon ${version}`, err);
}```
I feel like this would be a lot easier with a Warpgate spiritual weapon
Oh it is using warp gate
Still seems overly complex to me
It's just the one from the Midi sample items
If you use automated animations you can just use that to add visual effects
Sequencer wiki also has info on how you'd wanna add visual effects
Aye, though does it do an effect upon the token spawn?
You get to pick if you want it on source actor or target
wait a minute here, are you saying that AA can put animations on the crosshair destination cause thats like the only reason I have to do sequencer macros now
there is technically no target in the casting of a summons
That's what I'm thinking and wondering
I've personally never mentioned with summons cause I don't use warpgate
that spiirtual weapon macro is very very busy with stuff, I'm still using the v9 one just fine
@covert mason Here is a simpler example of a macro that plays animation atLocation:
const imgs = await game.actors.getName("Zombie").getTokenImages()
await Promise.all(imgs.map(i => loadTexture(i)));
for(let i = 0; i < 5; i++){
const [spawn] = await warpgate.spawn("Zombie");
new Sequence().effect().file("jb2a.misty_step.01.blue").atLocation(spawn).play()
}
I have absolutely no idea wtf is going on with dfreds CE's False Life
@covert mason Add this after the creation of the AE:
new Sequence()
.effect()
.file('jb2a.magic_signs.circle.02.necromancy.intro.blue')
.atLocation(createdToken.document)
.center()
.scaleToObject(2)
.belowTokens()
.fadeIn(500)
.fadeOut(500)
.randomizeMirrorX()
.randomizeMirrorY()
.randomRotation()
.play();
Ya, I am looking around for why False Life is not working
Does anyone know how dfreds CE is interfering with False Life? It makes no sense to me whatsoever
Midi seems to to be doing the same thing Dfed CE is doing but no timer also. Lol
I think your problem is missing modules personally, either times up or dae or something
Nice. Something like this?
const version = "10.0.13";
try {
const origin = args[0].itemUuid;
if (origin) {
const removeList = actor.effects.filter(ae => ae.origin === origin && getProperty(ae, "flags.dae.transfer") !== 3).map(ae=>ae.id);
await actor.deleteEmbeddedDocuments("ActiveEffect", removeList)
}
const updates = {
Item: {
"Spiritual Weapon Attack": {
"type": "weapon",
"img": args[0].itemData.img,
"system.actionType" : "msak",
"system.properties.mgc": true,
"system.attackBonus": `${Number(args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod) + Number(args[0].actor.system.attributes.prof) + Number(args[0].actor.system.bonuses.msak.attack)}`,
"system.proficient": false,
"system.damage.parts":[[`${1 + Math.floor((args[0].spellLevel-2)/2)}d8 + ${args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod || ""}`,"force"]]
}
}
}
const result = await warpgate.spawn("Spiritual Weapon", {embedded: updates}, {}, {});
if (result.length !== 1) return;
const createdToken = game.canvas.tokens.get(result[0]);
await createdToken.actor.items.getName("Spiritual Weapon Attack").update({"data.proficient": false});
const targetUuid = createdToken.document.uuid;
await actor.createEmbeddedDocuments("ActiveEffect", [{
label: "Summon",
icon: args[0].item.img,
origin,
duration: {seconds: 60, rounds:10},
"flags.dae.stackable": false,
changes: [{key: "flags.dae.deleteUuid", mode: CONST.ACTIVE_EFFECT_MODES.ADD, value: [targetUuid]}]
}]);
new Sequence()
.effect()
.file('jb2a.magic_signs.circle.02.necromancy.intro.blue')
.atLocation(createdToken.document)
.center()
.scaleToObject(2)
.belowTokens()
.fadeIn(500)
.fadeOut(500)
.randomizeMirrorX()
.randomizeMirrorY()
.randomRotation()
.play();
} catch (err) {
console.error(`${args[0].itemData.name} - Spiritual Weapon ${version}`, err);
}```
dfreds clearly has a duration set on it
Yeah that should do it. Also if the AE application is slow, you can actually move it all the way up so that it happens right after the spawning
CE is applying the timer correctly for False Life. When I disable CE for it (when Midi should take over) no timer is present.
I have a basic understanding of sequencer, I'm just a wee bit clueless as to whhere to put the string in the code. π
But both do not upcast
that is because false life has no ae on it, so its an instant effect
you have to manually create an empty ae on the item
hmmmm
what what is frikkin weird, is that when you let dfred do it, its doing something that I see no reason why it should
there is no effect macro and no item macro, its just flat out rolling a level 1 false life when dfreds CE is involved no matter the upcast
all dfreds CE is, is the blank duration ae. it has nothing in it that should automate anything but somehow its stopping the upcasting of the spell
Using that Checkbox to either not apply CE or let it Apply.
Letting it Apply: False Life is applied at level 1 no matter what, timer is applied.
Not letting it apply: False Life is applied at level 1 no matter what, timer is not applied.
That is the current situation with no modifications.
if your spell has no ae on it, click the wrench for DAE, and just create new and close all out
the dae should auto pickup the items details duration and the ae is just there to track the temp hp duration
ok let me test that out
The Dfreds CE interferring with upcasting I strongly feel is a bug with either midi or dfreds
then again I haven't updated to his newest so
Ok, ya with CE disabled now Timer is applied but still no upcast. So ya it must be a bug somewhere.
did you forget to upcast?
is the item set to scaling?
If I recall you are using an importer for your items so...show us the details of the spell
noteably the bottom third
thats your problem
I dunno who uses that but I find its insanely awkward to utilize, never auto consume, cause in order to upcast you have to hold down a key to upcast
either F or T I forget
Even with the dialog popping up to ask if you want to consume?
if thats happening then you don't have auto consume on
let me check my midi. But yes that dialog is popping up
I just confirmed for you, its healing
that action type is fubar
change the action type to utility or other
something in either midi or dnd5e is screwy
should probably alert Mrprimate if thats indeed the dndbeyond version
I don't see any errors in the console, it just behaves weirdly I gues
My guess for Dfreds CE is that it has some sort backend automation that we can't see when we duplicate it. Kinda how Enlarge Reduce works. and its breaking in v10
@covert mason Try this version, cleaned it up a bit and did some timing stuff, looks pretty good IMO π
const version = "10.0.13";
try {
const origin = args[0].itemUuid;
if (origin) {
const removeList = actor.effects.filter(ae => ae.origin === origin && getProperty(ae, "flags.dae.transfer") !== 3).map(ae=>ae.id);
await actor.deleteEmbeddedDocuments("ActiveEffect", removeList)
}
const updates = {
Item: {
"Spiritual Weapon Attack": {
"type": "weapon",
"img": args[0].itemData.img,
"system.actionType" : "msak",
"system.properties.mgc": true,
"system.attackBonus": `${Number(args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod) + Number(args[0].actor.system.attributes.prof) + Number(args[0].actor.system.bonuses.msak.attack)}`,
"system.proficient": false,
"system.damage.parts":[[`${1 + Math.floor((args[0].spellLevel-2)/2)}d8 + ${args[0].actor.system.abilities[args[0].actor.system.attributes.spellcasting]?.mod || ""}`,"force"]]
}
}
}
async function postSpawn(location, createdToken, updates, iteration) {
console.log(createdToken);
await createdToken.actor.items.getName("Spiritual Weapon Attack").update({"data.proficient": false});
const targetUuid = createdToken.uuid;
await actor.createEmbeddedDocuments("ActiveEffect", [{
label: "Summon",
icon: args[0].item.img,
origin,
duration: {seconds: 60, rounds:10},
"flags.dae.stackable": false,
changes: [{key: "flags.dae.deleteUuid", mode: CONST.ACTIVE_EFFECT_MODES.ADD, value: [targetUuid]}]
}]);
}
const result = await warpgate.spawn("Spiritual Weapon", {embedded: updates}, {pre: preSpawn, post: postSpawn}, {});
if (result.length !== 1) return;
} catch (err) {
console.error(`${args[0].itemData.name} - Spiritual Weapon ${version}`, err);
}
async function preSpawn(location, updates, iteration) {
await new Sequence()
.effect()
.file('jb2a.shatter.blue')
.atLocation(location)
.center()
.scaleToObject(2)
.fadeOut(500)
.randomizeMirrorX()
.randomizeMirrorY()
.randomRotation()
.wait(750)
.play();
}
Ok, so more jankness. In the chat log from Midi it reports the correct amount of [15] (upcast to level 3) temporary hp. It sets the PC to 15 temp HP. And then immediately sets the temp HP to if it had been cast at level 1 [5].
I watch this happen in the character sheet
15 and then immediately 5
sounds like cub or dfreds overriding
hmm ok
thtas exactly what happens when dfreds is toggled on
did you accidentally uncheck the box
this is why we don't want dfreds to be broken, random npcs with false life are going to have this happen to them
I dunno how to dig into his files for any thing fancy in false life but there has to be something cause its overriding midi
So CE has a bug. And Primates importer needs to look at action types for temp hp spells.
on our end all we see is a basic looking CE with nothing to it but an image
Just for reference. In your Midi Workflow. Do you use "Apply CE, if absent apply item effects" or "Apply Items effects, if absent apply CE"
I forget now but yeah probably, that settign directly influences the way the checkbox works
ok I figured it out
dfreds CE defintely has some sort of attachment of temp hp to the ae behind the scenes, thats naughty temp hp shouldn't be in an ae
Does it attach it so that when the AE expires the temp hp goes awway?
if you turn off all but dfreds CE and socketlib, applying false life via dfreds puts a level 1 false life on them. The dfreds CE shows absolutely nothing about it that it would mod temp hp
this has to be a bug, the invisible item holding them probably has 2 false lifes on it
yes thats why I think its in the ae
ahhh ok
when you toggle off dfreds t clears the temp hp
if a smarter person wants to find his entry in his files that may shed light on this
its something not shown to the user
cause I noticed without dfreds midi shows the timer expire but the temp hp remains.
theres a way to do that with a world script but its highly frowned upon to put temp and health changes in AE's so you can't use an ae's duration to kill temp hp
what version of dfreds CE are you on
@proud jungle Midi automates save damage in addition to attack rolls, put the poison/save damage in the other formula field on the attack and then set a saving throw
depending on your midi settings the other formula should apply on save fail
if you want it to be a save or suck, I think that is a checkbox at the bottom of the items details
Hmmm yes but if the person want to switch between different poisons I tried to do this with effects that can just be toggled
I personally would make the weapon X times and have them pick which weapon
Dfred CE version 3.1.0
if its actual poison rules, you could also make all the poisons a bunch of warpgate on use macros to mutate the weapon
if its an archers various types of arrows, I'd personally just make bow attacks for each one
the non macro, easy method is to just make all the various forms of the weapon and make the player roll accordingly
The player use it on all her weapons and want many different kinds of poisons >.<
if you are cool with macros then by all means spin up some warpgate shenannigans
I hope you are following the dnd5e poison rules cause imo poison sucks
I can't compute macros at all π
that'll ween them off poisons quick if you run the rules right
only poison system that is cool is the poisoner feat or a thief rogue
yeah either get going with warpgate or make multiple versions of their dagger and shortbow/crossbow
I'd also make all the poison versions of the weapons consume the poison items
Isn't it easier to make new abilities to just roll after any form of wpn?
the problem with that is it'd be two rolls
does the rogue really use multiple weapons?
bow/dagger
I can count on one hand the amount of times my 5 players have used a non usual weapon in combat in the last 4 months
yeah so probably make a poison save attack for each one
why is there a problem with 2 rolls?
it'll mess with concentration checks though
What is it the effect of the poison is?
probably the core poisons
well - I have many poisons in my games
so various status markers and poison damage
theres an automation somewhere in here for drow poison, which involves fail by more than 5
a common theme in poisons in dnd
hm, okay, thnx for the tips π
Hey QQ for something like Spiritual Weapon how do I get the attack to happen again?
by not using the dnd5e srd version
Is there a grant max healing flag?
trying to automate Beacon of Hope
I know there's one for flags.midi-qol.max.damage.heal.
I don't really see a need for that
healing doesn't cause weird stuff to happen, just undo the heal and max the heal
it'd be different if it was damage
Aye, fair enough
Illandrils quick token actions is a good one too, but just for actions.
I like that it's shown when you select the actual token as a token hud extension.
Not much moving around the screen that way
there is an automated max heal grave cleric feature aorund here I have it installed for my cleric

ooooh I think I just spotted a good advantage reminder usage in beacon of hope
quickly dives into the readme
you could use the grant.message.damage.all key in advantage reminder and throw it on all your beacon of hope targets to remind the cleric to max heal
Oh you've been busy bees today!
Just realised how many messages were in between the one I read and commented and the bottom π€£
obviously fast forward won't work here
You say I shouldn't automate this stuff...
...but monkey brain sees fancy mechanics and the dopamine make go unga bunga. 
I may have a problem
the lazy overworked DM inme constantly doesn't want to see wasted time on stuff that is easily handled with an undo button press
although theres more to beacon of hope than the max heal fwiw
Yeah. The other stuff is simple to do with an effect and flags.
Midi srd version of beacon of hope is setup poorly
Target is set to Blank | Any | Creature. It could totally be setup for all and ally
Hmmm, I definitely have the newest AR version but DAE is not auto completing the new keys
what I'd love to have here is a document link to a damage only workflow for midi that does healing, but the healing is a prompt with an open dialogue for the player to type in their dice equation
this is another one of those times where I wish the dropdown for customize formula let me do 0
Is it possible to toggle a midi qol setting between two of its options with a macro?
I want to be able to quickly toggle between auto and MTB for the two GM settings here:
I was hoping to make a modification to the Hex spell Item macro so that it would consume a scaled value. See below. I would appreciate any advice on making this work.
is there a way to force midiqol to roll atk/dmg , ignoring momentarily a wall or a range setting
Iβm having some trouble automating the concentration bonus using midi, is someone else having the same problem?
is there a public list of better versions?
you should also install midi SRD from the fork of it for v10 if you are on v10, as it replaces all the dnd5e srd items that are very often setup poorly for midi
GMs can hold down O (for override)... check your key mappings tho. Edit: O is not the default btw
Very useful for opportunity attacks when the player has already moved their token
I just slowly but surely remove ranges from melee weapons
I have very few left that have them lol
zhell gave me a macro that takes a canvas actor and updates its prototype actor, which makes this strategy alot more efficient on the fly
fair enough, we like the range check but it's great that the GM can easily override when needed β works for walls/cover too
thank GOD and so true for the opp. always telling them hey wait come back realll quick
yep and then youβve mucked up that drag ruler history
you can reset the drag ruler history by right clicking I think in combat tracker
yep override just saves that whole kerfuffle
any1 have a yt or a guide i can look over making wallheight+levels work ? tryin to shoot things in the air but a wall keeps blocking midiqol
remove the range from the weapon
its probably a conflict with cover, turn off cover
Is it that the tokens not viewable, or is it that midi says its too far away/beind full cover?
thats cover, turn it off
the walls should be diffrent?
did you try backing up a square or two?
yes
hes less than a square away from something twice his height
ok regardless of the small details, is there some setting im missing
its as simple as putting the wall 10ft right
adjusting wall height (top)
Setting aside the fact that this is alot more work for a hypothetical attack, you could turn off wall restrictions for ranged attacks, or you could just move the token and attack and move back
midi doesn't work with levels that easily, midi just sees a wall and says nope
you are in miidqol's channel not rippers discord
i was told it was as simple as turning it on :
I personally do not know how rippers stuff works if at all with midi
ill try in mod-discussion
just go and look at the options, one of the options is very obviously the answer lol
(I don't have it installed so it won't let me choose it)
well its a start
To my knowledge, simbul's/helpers cover doesn't consider wall height at all
As it's not a core concept
ah
yeah the next setting down should probably be shut off
I haven't been able to get either cover modules to work personally
Looks like that dropdown is another victim of Tidy 5E screwing with the core css styles β I can't believe that's been sitting unfixed since September
I live with it cause its better than a bright one
At this point it might be easier to go in and edit Tidy 5E rather than patch up all the elements it's messing with π€
I assume its just cause of my darkmode choice in it?
It doesn't matter what sheet you're using, the styles in the module override some of the core CSS vars. But yeah it's the styles for the dark mode sheet that are the culprits
@cosmic surge β sorry for the ping, just wondering if a fix is far off? Otherwise I won't bother. Item Piles is actually one of the worst hit... although it even borks the core prosemirror edit tools:
Simbul's should just be a matter of selecting a token, hovering over another and pressing "r" by default
I mean with midi. It seems to be broken or calculating wrong. A large creature gets +2 cover from a small owl in the line of attack
That is correct. Any creature in the way is half cover
Size is irrelevant to cover by token
weird I thought it had to be 1 size smaller to provide enough cover?
there are overrides in the settings tho, no?
Step one square to the side, haha
Maybe, not in the original though as it follows raw
You can set that token to explicitly provide no cover though
iirc you can set sizes to provide no cover... eg tiny
Levels auto cover instead of Simbuls
Do you happen to have a copy of this on hand? π
its not rules as written
also I have exploding dice on, so you may want to edit that
Ah
its just the healing formula has an extra X on the end
the item macro probably isn't v10
const {tokenId, damageTotal, itemCardId} = args[0];
const sourceToken = canvas.scene.tokens.get(tokenId);
const sourceActor = sourceToken.actor;
const necroDamageTotal = 0.5 * damageTotal;
const necroDamageRoll = await new Roll(`${necroDamageTotal}`).evaluate({async:true});
new MidiQOL.DamageOnlyWorkflow(sourceActor, sourceToken, necroDamageTotal, "necrotic", [sourceToken], necroDamageRoll, {flavor: "Life Transference", itemCardId});
I don't see any data's but I'm sure a guru will glance at it
Aye, getting this.
And it doesn't appear to be damaging the source actor.
Guess we need to wait for Bugbear or someone else. He hasn't used it since v10, it must have a syntax problem
Damage only workflows are currently bugged with cover
So turn off computer cover?
seems to work for me now
Is this in a midi tab? Which one?
mechanics I think
This was brought up to @gilded yacht before. I guess it still needs to be looked at. Iirc you need to pass it a different token object
In reality you can probably change that to apply damage instead
That doesn't look like it really needs a damage only workflow
Find the scale value in the actor data and feed that in the return for the dmageBonusMacro
Found the fix @covert mason change sourceToken to sourceToken.object
In the damage only workflow part
Or canvas.tokens.get instead of canvas.scene.tokens.get
There is a note about this in DFreds CE on false life:
this._falseLife, // TODO figure out higher level casting
I issued it and he chimed in another channel, and I replied to him there too
What was thorwing us for a loop was that it didn't show us anything on our end, its all done kinda secretly under the hood
was told to forward this here.
5E Question about macros, and if what I am looking for already exists? Is there a way to have a macro that is triggered by an attack (like set up with MidiQOL) to read the die rolls for said attack and roll an additional d20 for very raw 1/2 on said attack roll? (note attack roll not damage roll) Or a way to rework the lucky halfling racial to only apply to attack rolls and to 2s as well?
are you trying to do reliable talent or something?
can ya show us the feature you are trying to do?
I wonder if the fumble threshold fires off halfling luck?
its a table feat that allows me to reroll 1/2s on attack rolls once. As a note I do have elven accuracy as well (this is with a melee weapon attack roll) so ideally which i believe can not be done the roll formula would be hijacked with say /rxd20r<3 but the alternative of something that says roll x d20 where x is equal to the number of 1/2s in the attack roll (ie possibly 3 from advantage)
Should be pretty doable with an on use macro.
elven accuracy gonna make that alot messier
Nah
yea I know that the latter is possible I just am not familiar with the syntax in the least.
its insanely easy if you use real life dice and df manual rolls ;p
primary language is python and cant for the life of me find any documentation on the syntax the foundry uses, the official web pages get 404ed for me.
lol effectively doing it that way.. just can be a slight time sink when making several attacks and then there's remembering to check the raw rolls.
I sort of do something similar for a monks focused aim feature.
https://github.com/chrisk123999/foundry-macros/blob/main/Features/Class Features/Monk/Focused Aim/Chris-FocusedAim.js
Although I'm adding to the roll, but there isn't anything stopping you from replacing the d20 rolls
what is the trigger you use for this?
flags.midi-qol.onUseMacroName CUSTOM macroName,macroPass
preCheckHits
In this case
so "before check hits"
ty i will have to toy around with this as a base to see if i can rework it to work as i need it to
You should be able to check the d20's and reroll the undesired ones
Do you have an example of this anywhere?
yeah I need aura of life and death ward really badly, I know its probably best in EM
EM+ AA
"EM"?
Effect macro
Ooh right
one of zhells modules and its got some nice autmation hooks in it
Right now my death ward spell is just a keyless active effect to remind me of it
I feel like death ward would be better as a world script hook
Check if target has an effect called death ward and if so remove the effect and prevent the damage from fully knocking them out
Although that could mess with concentration checks I guess
EM wouldn't be able to do that with like If this actor drops to 0 hp.value, add 1?
May just be easier as an effect that expires on hitting 0 hp
Then just bring it back up to 1
With EM
but inevitably half us have automated deads/defeateds so we'd need it to undo those too
Not that hard, especially if you use CE
actor.update({'system.attributes.hp.value': 1});```
Would literally be it as an effect removed macro.
how to cause it to fade on 0 though?
Fade?
how to cause the ae to end
Duration > Special Duration
On effect deletion then?
Yep
await game.dfreds.effectInterface.removeEffect(
{
'effectName': 'Unconscious',
'uuid': actor.uuid
}
);```
wow that works perfectly
the unconscious never happens for me
but prone does....I can't remember if they fall in death ward do they?
k I'll just repurpose your entry above for prone then
yeah something auto removes the unconscious probably midi with the 1 hp add
Wow that is amazing how easy that is lol thanks Chris
Did that oh my phone too lol
Wait hold up how did you get it to work?
Oh, death ward. thought you were automating Aura of Life π
Its on my next to do list lol
you could probably just have it reapply?
Literally the same command thats undoing the prone, change it to apply Death ward lol
lol
but you would need it to be a CE
so the aura on the source actor would be applying a macro.ce of Death Ward
although, seriously, there are far smarter people here than me.
we could just ask @coarse mesa nicely to share theirs too 8)

I dug out my old v9 to take a look... this is how it is set up, basically an active aura that puts this CE on your allies:
my method wouldn't work because its an aura, when they walk out it would fade lol
if(!game.combat) return{};
if (actor.data.data.attributes.hp.value === 0) {
await actor.update({"data.attributes.hp.value": 1});
console.log("Healed");
}
``` v9 though
I think single datas get yeeted and doubles get system
if(!game.combat) return{};
if (actor.system.attributes.hp.value === 0) {
await actor.update({"attributes.hp.value": 1});
console.log("Healed");
}```
v10 now (?)
second one was just suppose to be deleted
this is how the AE on the spell is set up
I think thats it, but if it fails we can ask one of the smaaaht ones
I'd remove the macro.ce and instead do a EM trigger for defeated
that would go on the actual aura right?
Yep
actually Lukas' spell is not rules as written
Life-preserving energy radiates from you in an aura with a 30-foot radius. Until the spell ends, the aura moves with you, centered on you. Each nonhostile creature in the aura (including you) has resistance to necrotic damage, and its hit point maximum can't be reduced. In addition, a nonhostile, living creature regains 1 hit point when it starts its turn in the aura with 0 hit points.
you have to rise at the start of your turn
Then do it on turn start in em
oh actually he does have it setup that way
my bad Lukas
the death ward is gonna mess up concentrations in midi
if (actor.system.attributes.hp.value === 0) actor.update({'system.attributes.hp.value': 1});```
@covert mason β¬οΈ
Don't need that combat checking part with the EM trigger
Just do on turn start
As it only triggers in combat already
Good point, not sure where I yoinked that from
How so?
I tried to make Chris' but my problem is the problem I always have with active auras
I never make them right
its duplicating the aura on everyone
I'm on the test version too
Do I stop midi from applying? with the false in activation condition?
I dunno if its a bug with the test version from primate or if its just a bad active auras setup
@keen mesa what does the spell have for target/range for aura of life?
oops wrong lukas
@coarse mesa What does the spell have for target/range for aura of life?
I already copied that, its the spells actual details tab
damn
yeah gonna have to roll back and pray its a bug
do you have the aa helpers macro in it by chance?
This was just proof of concept for me though, I tried it once and it worked fine but we never used it prior to that campaign wrapping up
wow ok, after a refresh of the server its now working
F5 is you and your player's best friend when things go wonky.
nah I think its a bug with 0.5.3
Lukas is on v9, @covert mason what version of active auras are you on?
yeah I'll have to post it to kandashi's server for primate to see
some sort of glitch with duplicate auras when you cast an aura
Yeah, I've noticed that too, but it's not present on the sheets
this particular aura won't have issues but a pally aura or something would definitely be bad
for me its definitely applying twice to sheet too
Ah
gonna try downgrading and if no change I'll just post the bug as a generic bug
Now... how to automate Aura of Purity 
doesn't condition immunity also remove existing said conditions?
It gives you advantage on saves against certain conditions. i don't think anything's capable of that yet
I'm just gonna use my lesser restoration item macro redone in EM for aura of purity
oooh ok nm
that has advantage reminder written all over it
Exactly what I'm thinking
Erh... how do I format the save advantage with the optional flag again?
instead of 0 or 1 you can have it be something equals condition
I think they are very similar to the activation conditions but I can't find the info on them, the best bet is to search bugbears posts lol
hes the only one posting about them
wait, I think he said it was in tposney's changelog in package releases for midi
flags.midi-qol.optional.NAME.advantage.ability.save.all
I... don't think that's correct
Anyyone got any input?
its the normal flag for advantage
the new thing is that in the effect value, instead of 0 or 1, you can put an equation in there
so Source.token.actor=poisoned or something
whatever the activation conditions usually have
cause the key just needs to evaluate true to be active
now that I'm looking at it, I don't think I have a chance of figuring it out
I get to take the easy way out and just use advantage reminder lol
Hello #1010273821401555087 channel!
I'm attempting to get Spiritual Weapon to work. I have DAE, MidiQOL, DFred's, Active Auras, Warp Gate, and several other modules installed.
I have a 5th level Cleric ("John Salvator") who has the 2nd level spell, "Spiritual Weapon" on his character sheet under the "Spells" tab.
I also have a separate Actor called "Spiritual Weapon"
I'm not even sure the Item Macro is executing.
Midi Sample Items compendium
character sheet hooks should be unchecked if you use midi on use macros
midi suggests installing Itemmacro not for its actual features but because its a great storage device for macros that midi and other automaters use.
ok, let me try "unchecking" that "Character Sheet Hook" box and trying again
With it enabled, I'm getting this error in my console:
did you forget to save the setting
I also deleted the Spiritual Weapon on the Actor's sheet and dragging in the one from the Midi Sample Items Compendium
are you using the midi sample item or using a macro you made yourself?
my money is on you forgot to hit save
an itemacro error means it was actually doing its thing, which you were suppose to click off
if that item was trully rolling, it would have workflow errors not item macro errors
well actually it wouldn't have any errors cause it works in my world
what does chat look like when you roll the item?
Okay, it has spawned the Spiritual Weapon actor token
you should be good then
you are all set, the actor has the attack on it
did it give you a warning that warpgate couldn't update the item?
any red errors?
I still need to create teh "Slash" attack as described in the chat dialog I think..
no the sample item scales it up
does the canvas actor spiritual weapon have the attack?
Or better yet... how do I get the Spiritual Item global Actor ..? this is one I made myself...
No the canvas token has the old attacks I made last night when I was trying to do this earlier:
double click the weapon on the map, does it have spiritual weapon attack?
ok the one with the purple icon is the right one I believe
Let me take a look..
Okay, yes, the purple one looks right and the other one was probably made by me and was incomplete, so I deleted it.
Okay, great, that seems to work!
oh, right, thank you.
I had forgotten that.
Do you know how I can add a cool shimmery magical aura to the summoned token?
Like a light effect..?
if you scrolled up pretty far you'd see guys figuring that out about 10 hours ago
I have Active Auras and similar
Janner was the user figuring it out
@errant cosmos β¬οΈ
You will want to replace the item macro on that item with this one
Yes, thank you, it's looking pretty good.
@vast bane Do you have any insight into how to implement Ancestral Protectors?
I see a thread from several months ago (probably v9 era?) where @sudden crane shared a macro, but he also indicated that the macro was before the ability was included in DDB-Importer.
probably alot easier nowadays with v10 feature to put evaluations in the effect values of the disadvantage key
Here is another version of Ancestral Protectors, from July 7:
https://github.com/JamesBrandts/FoundryVTT/blob/main/Ancestral Protectors Macro.js
I don't know though
Hm, so, how would I explore that..?
flags.midi-qol.disadvantage.attack.all CUSTOM effects.some(ef=>ef.label==="Restrained")
So instead you'd need to find out how to make the equation filter out for not the barbarian's name
the effect value needs to evaluate true to cause disadvantage
so Name not include Bob
but you'd have to get the smart folks here to get the syntax cause I suck at this
I have no idea how you'd deal with the resistances either
Hm, well, I think I'll wait to see if I can catch Kelwin online some time - they already invested a lot of time writing this ~300 line macro.
I'm just a DM, not a javascript programmer, so ... reinventing this wheel seems daunting.
I appreciate your help, Moto.
Right now anything tidy5e ist not on my priority list. Especially regarding other modules. I'll try to find some time over the Holidays to Take a General Look at tidy5e and the v10 issues.
if you put 4, 1-4 will be a red number and auto fail if its an attack
if you put 1-4 it will fail to work
I don't really see a use for it personally
Some DMs are evil I guess
I actually use fail by more than 5 way more often in dnd5e, wish that could be setup instead
I know its possible in activation conditions and macros
flags.midi-qol.optional.NAME.advantage.ability.save.all Is this how I format this flag?
Also, is there a simpler way to achieve multiple conditions here?
await game.dfreds.effectInterface.removeEffect(
{
'effectName': 'Prone',
'uuid': actor.uuid
}
);
await game.dfreds.effectInterface.removeEffect(
{
'effectName': 'Dead',
'uuid': actor.uuid
}
);
await game.dfreds.effectInterface.removeEffect(
{
'effectName': 'Defeated',
'uuid': actor.uuid
}
);```
Hi! I'm having trouble with the Let Me Roll That For You! or the Midi QOL module, I'm not sure
I activated the Active Defense optional rule and installed LMRTFY and, while it is technically working, it only rolls the attack in private, so the player sees it but not the GM
Is there a way to make that roll public?
The system is D&D 5e of course
so that is by design i believe.
it does show the result in the char window, but not the roll itself, at least not on the DSN
the circled part is the result of the defense roll
so the GM does see it.
Oh I see, the thing is I don't have the automatic hit detection activated, and I don't really like it
So the roll looks like this
Plus, I would like everyone to see it, not just the player/GM
I believe that is a wrong setting potentially, but not at a PC right now
I tried mingling with the settings for a while, but couldn't find anything that changed this
then you can have the player reveal the roll.
it would be after the fact
have them right click on the chat card, reveal to everyone
It would be a solution, but I want everyone to watch de dice rolling, it adds suspense
seems like the custom roll be called from midi via LMRTFY is set as private
Could you screenshot your workflow MIDI settings?
Sorry
Oh right, stuff got moved around, could you do.. misc instead, I believe that is where it got moved
if your looking for the optional rules, they are under Rules
Looking for where the dice rolling/hiding got moved π€
Looks fine as well, I wonder... Do you have monks token bar?
No, I do have Token Action HUD tho
Wait nevermind, can't configure which requestor is used for active defense
What does your player and GM settings look like?
Cause I feel like this should definitely be possible.. wish I was at a PC so I could quickly check π
This is the only option I found but i think it has nothing to do whit it
Yeah I had the same feeling, but idk
Don't worry btw, I'm in no rush
I'll spin up a test world when I get home and test it
That would be great! Thanks a lot
Let me know if you need something else
I'll keep trying on my end
Hmm, testing it out, I think you are right, damn
Oh that's a shame
Well, don't worry
Thanks anyways!
I don't think there is a dfreds CE for defeated.
The combat tracker just uses 'Dead' as the equivalent of 'Defeated'. Core, at least.
Hi there I was wondering if anyone could help me with an aspect of this weapon I made in my game. Specifically it rolls additional d4 and then the damage type it deals changes based on that. Is there anyway I can attach a macro to do that automatically?
look for premades for chaos bolt
aka, search here, gearheads discord, and any other automation community for a midiqol version of chaos bolt to repurpose
Could I get a link to the gearheads discord?
Thank you
It's actually very helpful for my games! We use a misfire chance for firearms. It's usually only always 1, but some firearms can have modifications which make them stronger while increasing their crit-fail chance.
Is there a way to have a macro play only when a weapon crit fails, and that macro add a condition to the weapon which requires an action to remove?
you can't add conditions to weapons
You could have the wepaon have an active effect that evaluates true if the roll is less than 2, and have the effect apply to self, and have the affect be either an item macro key to a macro or an effect macro
2 or less sorry
and have the effect macro/item macro be a warpgate mutation of the gun
but my god how many guns are we talkin about
is this a swade conversion?
no
could probably have the mutate target the rolled gun, I'm the last person to ask this shit I should be quiet lol
You have a really bad habit of asking why someone needs to do what they are asking midi to do, instead of either providing what's been asked or referring them to someone else. I gotta say Moto, a lot of times you're really helpful, but not when you do this.
Fyi its because you can solve solutions faster if you get the why
I'm sorry, I don't mean to call you out in front of everyone. I apologize for being direct.
for instance if it was a swade conversion I would have suggested talking to a guy I helped automate guns in swade similarly
and the why would tell us what exactly the mutation would be doing. all valid questions. sorry if you felt offended
Well, for our games, we're using my Revised Martial Equipment. When someone uses a firearm, there's a misfire chance. Like I said, it's minor, usually only a 1. When they roll a 1, the gun jams and requires them to spend an action to clear the jam.
the weapon can't be used until they clear the jam
and I'm looking for a way to automate that process with a macro
Create an active effect on the gun, that is set to apply to self on item roll. Have the activation condition on the weapon evaluate true if a 1 or 2 is rolled(I don't know the syntax here). Then the gun will never apply the ae unless you fumble. the AE would have either an effect macro or a DAE macro.itemacro that has the warpgate mutation to the rolled gun to reduce its range to 0
then you could make a feature to unjam the gun that dismisses the mutation on it.
the only part of this you need help here with is the syntax of the activation condition, a good head start example would be to look at the activation conditions on sample items/midi srd as theres a few "roll 20" conditions
well, the mutation will require some work but warpgates wiki is pretty dope with examples
If you really wanted to get cheeky with it, you could mutate the weapon into a thrown object improvised weapon till its unjammed
I think the one hitch and I bet you the gurus could solve it, is if theres more than one gun
I bet effect macro has something that could solve it though, like mutate the item that the effect is on
If It was me, and I had to build this, I'd go all in with the mutation to a javelin lol
how so?
just full on mutate it to a thrown hammer object
dig into warpgates wiki, its not as bad as you think the wiki for warpgates pretty dope theres an example mutate an item and create an item
I"ll check it out
the hardest part is going to be figuring out how to target the item you want to mutate. But since none of this really uses midi, you could probably sneakily ask in #macro-polo
Thanks for the direction
the only part of midi thats getting utilized is the condition which is totally solved outside the macro
I'd start with the mutation first, give this channel time for a smaaaht person to chime in with the proper activation condition
wow this kinda gives me an idea for the Polymorph Blade
Is someone willing to help me rewrite the midi sneak attack macro to pull out the rogue levels so I can apply it to a monster?
I made a sneak attack advantage reminder instead for myself.
I just picked up Situational Shortcuts so I can have an easy sneak attack modifier, but I really like the fast forward of Midi and so I have to remember to press the buttons to suspend FF for that attack.
I just put sneak attack damage in the versatile box
I made a generic sneak attack advantage reminder in dfreds so that when I drop a monster thats new I don't have to go in and fiddle, just toggle it on them
Iirc it's one line in the macro. Look for where it's getting the rogue levels and swap it to check for CR level or something
Oh thatβs a good idea
are these servers where i can find some macros for some feats and random stuff i might need that midi doesnt provide for 5e?
99% of the stuff I've found have all been here
You can mostly make alot of stuff just by finding something similar, trying to repurpose and if you run into a snag, post here and one of the kind fellas will step up
For instance the gun failure earlier, I would have looked at bugbears mutation of his call lightning he posted earlier for the mutate code, then looked through all of midi srd/midi sample items for an activation code syntax for add effect on natural 20(something like lifestealing sword or something). Then Id' try to check out some effect macros for any tricks to pick out the effects item to target
If you understand how to set up scaling subclass values that's the best way to do it. I can help you if you want
Yes I would appreciate that
hmm its not working, holding O is named "roll other formula" in keybinds. is that a workaround for ignoring range and wall checks for an attack?
that is correct. Lukas' game has custom settings enabled. The default keybindings for roll other is O, and the default roll binding for override is unbound:
personally I think lukas' game has it right, theres very little reason to manually roll other, unbind it and rebind to no optional rules
I'm trying to create some degree of automation for Summon Celestial. That is, to have the spell trigger a dialogue one can select between warpgate-summoning an Avenging Spirit, or a Defender spirit, and also triggering a sequencer effect upon the point it''s summoned at. Are there any examples of something similar out there?
Hey guys I'm trying to make a midi-qol overtime effect that sets poisoned at end of turn on a failed save, how do I do it?
The spiritual badger example on the wiki is the mechanical portion. And most of the examples contributed by silicon saint have sequencer anims as part of it
Oh! Nice!
I like using the post callbacks for animations, but you can do it based on the returned ids instead
Dialogs man, frikkin dialogs. The bane of my foundry experience.
Is there a way I can replace 'Morthos' with womever-is-casting-the-spell?
define the source actors token name, and then use it in that spot
but the odds of anyone other than 1 guy in your table casting it is slim to none so you could just put their name in
or go the video game route and say "The Adventurer casts..."
Sorry team Iβd forgotten Iβd overridden the override keybind. O is just easier to remember
Depending on your execution method, I'm sure it's easy to grab the casting actor
I vaguely recall there being a way to make a cone attack only work when centered on the caster... but I don't seem to be able to get it to work? Doesn't it involve using 'special' as a range?
cones are not suppose to include the casters square
Okay, here's what I've come up with for Summon Celestial, cannibalizing the Summon Spiritual Badger.
const actor = game.actors.getName("Tora Jornmire");
const item = actor.items.getName("Summon Celestial");
/* dnd5e specific helper -- rolls the item and retrieves
* the final spell level chosen to cast (i.e. upcasting)
*/
const level = await warpgate.dnd5e.rollItem(item);
/* Computing values needed for scaling attacks/DCs */
const summonerDc = actor.system.attributes.spelldc;
const summonerAttack = summonerDc - 8;
/* Prompt the user for which type of celestial to summon */
const buttonData = {
buttons: [{
label: 'Celestial Avenger',
value: {
token: {
name: "Celestial Avenger"
},
actor: {
name: "Celestial Avenger"
},
embedded: {
Item: {
"Radiant Mace (Defender Only)": warpgate.CONST.DELETE,
"Radiant Mace - Healing (Defender Only)": warpgate.CONST.DELETE,
}
}
}
}, {
label: 'Celestial Defender',
value: {
actor: {
name: "Celestial Defender"
},
token: {
name: "Celestial Defender"
},
embedded: {
Item: {
"Radiant Bow (Avenger Only)": warpgate.CONST.DELETE
}
}
}
}
],
title: 'Which Celestial?'
}
;
let celestial = await warpgate.buttonDialog(buttonData);
/* Craft the updates that are common to all celestials */
let updates = {
token: {
"displayName": CONST.TOKEN_DISPLAY_MODES.HOVER
},
actor: {
'system.attributes.ac.flat': 11 + level,
'system.attributes.hp': {
value: 40 + 10 * (level - 4),
max: 40 + 10 * (level - 4)
},
},
embedded: {
Item: {
"Multiattack": {
name: `Multiattack (${Math.floor(level / 2)} attacks)`
},
"Radiant Bow (Avenger Only)": {
'system.damage.parts': [
[`2d6 + 2 + ${level}`]
],
'system.attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Radiant Bow (Avenger Only)": {
'system.damage.parts': [
[`2d6 + 2 + ${level}`]
],
'attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Healing Touch (1/Day)": {
'system.damage.parts': [
[`2d8 + ${level}`]
],
}
}
}
}
/* Combine the general and specific updates */
updates = mergeObject(updates, celestial);
await warpgate.spawn("Celestial Spirit", updates);```
Line 1 feels very redundant
make sure the actors are not linked
I definitely feel as though I'm being sloppy with this, but I'm just trying to make use of what's there and learning from prior code π
I'm not very proficient with coding
Ah, yup. Missing a bracket somewhere
I think it might be the last 3 closing brackets you may have an extra
its not midi related so you could totally ask in macro polo
Aye, I could do. I've no idea what I'm doing at this point 
the let updates line seems weird
janner the bracket I told you to drop shouldn't have been
that whole function starts at let updates and that opening bracket is unclosed now because of my advice
Oh fu-
those last 3 were for Let updates opener, and then embedded: { Item:{
I think after celestial is the rogue bracket?
or what fotoply is saying theres one in the middle
If that macro is run via midi, you can do let actor = args[0].actor;
Instead of searching via the actor name.
So let actor = args[0].actor; instead of const actor = game.actors.getName("Tora Jornmire");?
Assuming this is an item macro, yes
wait a minute
doesn't v10 have a very angry rule about defining actor?
unless Janner has advanced macros installed?
const actor = game.actors.getName("Tora Jornmire");
const item = actor.items.getName("Summon Celestial");
/* dnd5e specific helper -- rolls the item and retrieves
* the final spell level chosen to cast (i.e. upcasting)
*/
const level = await warpgate.dnd5e.rollItem(item);
/* Computing values needed for scaling attacks/DCs */
const summonerDc = actor.system.attributes.spelldc;
const summonerAttack = summonerDc - 8;
/* Prompt the user for which type of celestial to summon */
const buttonData = {
buttons: [{
label: 'Celestial Avenger',
value: {
token: {
name: "Celestial Avenger"
},
actor: {
name: "Celestial Avenger"
},
embedded: {
Item: {
"Radiant Mace (Defender Only)": warpgate.CONST.DELETE,
"Radiant Mace - Healing (Defender Only)": warpgate.CONST.DELETE,
}
}
}
}, {
label: 'Celestial Defender',
value: {
actor: {
name: "Celestial Defender"
},
token: {
name: "Celestial Defender"
},
embedded: {
Item: {
"Radiant Bow (Avenger Only)": warpgate.CONST.DELETE
}
}
}
}
}
],
title: 'Which Celestial?'
};
let badger = await warpgate.buttonDialog(buttonData);
/* Craft the updates that are common to all celestials */
let updates = {
token: {
"displayName": CONST.TOKEN_DISPLAY_MODES.HOVER
},
actor: {
'attributes.ac.flat': 11 + level,
'attributes.hp': {
value: 40 + 10 * (level - 4),
max: 40 + 10 * (level - 4)
},
},
embedded: {
Item: {
"Multiattack": {
name: `Multiattack (${Math.floor(level/2)} attacks)`
},
"Radiant Bow (Avenger Only)": {
'damage.parts': [
[`2d6 + 2 + ${level}`]
],
'attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Radiant Bow (Avenger Only)": {
'damage.parts': [
[`2d6 + 2 + ${level}`]
],
'attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Healing Touch (1/Day)": {
'damage.parts': [
[`2d8 + ${level}`]
],
}
}
}
}
/* Combine the general and specific updates */
updates = mergeObject(updates, badger);
await warpgate.spawn("Celestial Spirit", updates);
Try this
It had 2 {missing and a rogue `
It looks like this macro was designed as hotbar macro
So some stuff could be done differently
I swear that you need advanced macros installed to define actor
Aye, I had intended for this to be executed via ItemMacro
No
how can u tell what macro is for the hot bar and what is for a item macro? im looking at the ancestral protectors macro json
Actor might actually be already available with item macros
99% of automation stuff that involves midi is not going to be on a hotbar
usually you can spot it because they aren't using the shortcuts that item macro and effect macro gives us
I think actor is one of those right?
Yea
do you have advanced macros installed?
I do!
π€
just throwing it out there....did you forget to hit save when you pasted fotoplys in?
Nope, it's definitely saved in there
Okay, done multitasking, let me take a proper look π
@covert mason
const actor = game.actors.getName("Tora Jornmire");
const item = actor.items.getName("Summon Celestial");
/* dnd5e specific helper -- rolls the item and retrieves
* the final spell level chosen to cast (i.e. upcasting)
*/
const level = await warpgate.dnd5e.rollItem(item);
/* Computing values needed for scaling attacks/DCs */
const summonerDc = actor.system.attributes.spelldc;
const summonerAttack = summonerDc - 8;
/* Prompt the user for which type of celestial to summon */
const buttonData = {
buttons: [{
label: 'Celestial Avenger',
value: {
token: {
name: "Celestial Avenger"
},
actor: {
name: "Celestial Avenger"
},
embedded: {
Item: {
"Radiant Mace (Defender Only)": warpgate.CONST.DELETE,
"Radiant Mace - Healing (Defender Only)": warpgate.CONST.DELETE,
}
}
}
}, {
label: 'Celestial Defender',
value: {
actor: {
name: "Celestial Defender"
},
token: {
name: "Celestial Defender"
},
embedded: {
Item: {
"Radiant Bow (Avenger Only)": warpgate.CONST.DELETE
}
}
}
}
],
title: 'Which Celestial?'
}
;
let badger = await warpgate.buttonDialog(buttonData);
/* Craft the updates that are common to all celestials */
let updates = {
token: {
"displayName": CONST.TOKEN_DISPLAY_MODES.HOVER
},
actor: {
'attributes.ac.flat': 11 + level,
'attributes.hp': {
value: 40 + 10 * (level - 4),
max: 40 + 10 * (level - 4)
},
},
embedded: {
Item: {
"Multiattack": {
name: `Multiattack (${Math.floor(level / 2)} attacks)`
},
"Radiant Bow (Avenger Only)": {
'damage.parts': [
[`2d6 + 2 + ${level}`]
],
'attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Radiant Bow (Avenger Only)": {
'damage.parts': [
[`2d6 + 2 + ${level}`]
],
'attackBonus': `- @mod - @prof + ${summonerAttack}`,
},
"Healing Touch (1/Day)": {
'damage.parts': [
[`2d8 + ${level}`]
],
}
}
}
}
/* Combine the general and specific updates */
updates = mergeObject(updates, badger);
await warpgate.spawn("Celestial Spirit", updates);
This one, should have the right brackets
Haven't really read through the code
Just fixed the brackets π
yeah definitely it
I think badgers got a radar sensor just for that error so hes gonna come charging in here soon lol
Went and updated my original code. That should have the system settings there
It also looks like it's infinitely trying to prompt me to cast the spell
not a fan of flat ac calcs, better to go natural
Still having the issue π¦
is the actor linked?
you are editing the names of the items, if the actor is linked then after the first cast it will always throw that error
all of your mutations are edits, not creations afaik so make sure the sidebar actor has the items perfectly named as what the macro says and unlink the actor
Nope, actor's not linked. I also just found one stat that didn't have systems. before it
Maybe that'll fix it
Hhm... same issue
You may be interested in this module if you're doing a lot of summons:
https://github.com/p4535992/foundryvtt-automated-evocations-variant
This is my go to for stuff like this
That's caused a few problems for me when it's come to built-in automatic recognition of spells like Spiritual Weapon, and not allowing me to dissociate the spell from the auto-rec.
I'm wondering if there's a way in midi (or core, or dnd5e) to have a macro run if the attack roll measures against the target AC in a specific variable?
For example, some of my weapons gain a +1 or +2 to attack (depending on 1handed or 2handed) if the target's AC is 15 or higher. Some other weapons gain an extra damage dice if the attack roll is +10 or higher than the target's AC. Is there a way to do that?
The second one for sure, look to sword of life stealing for an activation condition to then apply a bonus damage macro
Catching up with some messages.
As Moto mentioned do not redeclare the symbols token and actor if you are in v10. It will produce an error.
If the Advanced Macros module is installed, you can get away with it.
Would you be willing to give your input on this?
#1010273821401555087 message
I've been wracking my mind trying to make this into some sort of ItemMacro, and I keep getting this error 
#1010273821401555087 message
