#MidiQOL

1 messages Β· Page 42 of 1

scarlet gale
#

It really should only be prompting once with multiple labels if you have more than one optional bonus

vast bane
#

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

scarlet gale
#

I just use better roll tables and let my players just drag the items from the chat box

molten solar
#

What part of this is Better RollTables, out of curiosity?

scarlet gale
#

Loot tables specifically

vast bane
#

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:

scarlet gale
#

It rolls all my embedded tables and formats it nicely

vast bane
scarlet gale
#

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

vast bane
#

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

scarlet gale
vast bane
#

yeah I was quite glad when someone forked that, I have been carrying the premade tables along in v10

scarlet gale
#

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

molten solar
scarlet gale
#

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.

molten solar
#

Yeah I won't lie. It can be done better and/or differently

scarlet gale
#

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

molten solar
#

Yeah just getting the .content-links, map them to uuids

scarlet gale
#

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.

covert mason
#

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.

vast bane
#

I do something like this with spreading spores just fine in active auras

obsidian orbit
#

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.

covert mason
vast bane
#

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

violet meadow
#

@covert mason can you post the full OT effect value?

covert mason
#

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.

vast bane
#

give the player the level version, and put the other in a dfreds CE

kind cape
#

@covert mason Could you try (1+floor(((@details.level || 0) + (@details.cr || 0) + 1) / 6))d8 as your damage?

covert mason
#

@kind cape I'll give that a try!

coarse mesa
#

@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

covert mason
#

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

kind cape
#

Yeah that was the hope of the || addition

covert mason
#

However, it's not rolling it.

violet meadow
#

You wouldn't need then the || 0 part

vast bane
#

I honestly don't think it matters much if a dice roll is missing, the dice are superficial anyway

violet meadow
#

For a CR20 NPC

covert mason
violet meadow
#

MidiQOL version?

covert mason
violet meadow
#

Hmm let me double check something. How do you create the effect?

vast bane
#

are there errors in the console?

covert mason
vast bane
# covert mason

is the code you linked above definitely what is in the effect value?

covert mason
#
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``.
coarse mesa
#

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 πŸ™‚

covert mason
vast bane
#

does it work when you don't have the undefined one in?

covert mason
#

Yup!

vast bane
#

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

violet meadow
covert mason
violet meadow
#

Can you send me the export of the item?

vast bane
#

are you on the test version for AA or the official AA

covert mason
#

I'm on v0.5.2

vast bane
#

I wonder if itd be better to play it as a warpgate summons like flaming sphere

molten solar
#

@vast bane
The recent release of VAE should fix your insane week-long effects, please confirm at your leisure. πŸ‘

spice kraken
#

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)

gilded yacht
covert mason
#

Do you have an example of that anywhere? πŸ˜„

scarlet gale
#

I should actually update this to work with multiclassed spellcasting.

spice kraken
#

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

scarlet gale
#

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.

spice kraken
#

I feel that. For work my documentation is mostly clean code and comments. I really should update our sprint records doc, haha

tropic vine
#

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:

  1. Is my @target correct, cause I don't think it is, because it ain't working?
  2. How do I add necro damage into the other formula?

Thanks!

covert mason
spice kraken
scarlet gale
#

I'm actually updating it right now to account for muticlassed characters casting it.

tropic vine
#

@spice kraken Thanks!

scarlet gale
covert mason
scarlet gale
#

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.

scarlet gale
#

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.

molten solar
#

Are you logged in as GM while executing as GM?

scarlet gale
#

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)

molten solar
#

Weird.

scarlet gale
#

1.19 just doesn't seem to have that function anymore

spice kraken
#

Anyone have a way to automate the multi-attack part of scorching ray on v9

molten solar
#

Item5e#rollAttack()

scarlet gale
#

Attack 3 times without using a slot

spice kraken
#

Especially since our current combat has like 50+ actors in it

covert mason
#

Advanced Spell Effects! It automates lots of spells for v9, scorching ray included

#

Sadly not up to date for v10 sad_cat

spice kraken
molten solar
#

What's faster than just clicking the attack button three times?

spice kraken
#

Unchecking consume spell slot

molten solar
#

No, the attack button 🀷

spice kraken
#

Slows down my player. He's not the most attentive

#

Hmm, let me see if that will attack a new target

scarlet gale
#

As a player I wouldn't want to be forced to pick all 3 targets at once

spice kraken
#

Well I'll be, that works

#

ty

scarlet gale
#

In the case where a single ray may kill the target

molten solar
#

lol.

spice kraken
#

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

covert mason
#

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. πŸ˜‚

spice kraken
#

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

covert mason
spice kraken
#

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

scarlet gale
#

I've been meaning to make that spell actually

molten solar
#

Would just be a dialog to pick the skill and update the effect's changes array

scarlet gale
#

yea

covert mason
#

Aye

scarlet gale
#

Or just create the effect in the macro

molten solar
#

And no you can't modify a module on Forge

spice kraken
#

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

molten solar
#

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

covert mason
#

Zhell MVP

violet meadow
#

@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>

coarse mesa
#

Thanks will take a look when I get home!

violet meadow
#

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) => {

molten solar
#

game.dice3d.showForRoll(currentRoll, game.users.get("userId"), true); think you have a mistake there, the quotes

violet meadow
#

indeed... facepalmpicard

molten solar
#

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 ?? {};
violet meadow
#

Yeah I think its safe after the checks before that line, so I didn't pay that much attention

molten solar
#

Yeah it's all safe cause you wrapped it in try/catch πŸ˜›

violet meadow
#

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... 😩

covert mason
#

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)

molten solar
#

Does it work? πŸ™‚

violet meadow
#

cannot think properly. ~~ but list and condition_list~~

scarlet gale
#

If you're on v10, you should remove the .data parts

molten solar
#

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

covert mason
molten solar
#

Nowhere to be found in this macro far as I can tell

coarse mesa
#

@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

violet meadow
coarse mesa
#

Caster to another target, GM

#

If it works for players only that’s probably ok

violet meadow
#

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 πŸ€”

coarse mesa
#

just about to head to bed but will quickly test that πŸ™‚

#

same deal...

#

no stress tho, wasn't expecting a fix anytime soon haha

violet meadow
#

Ok just send me over your midi settings and will take a look

coarse mesa
#

Zhell would faint if they saw this

opaque current
#

What does "Temporary (Expired)" mean in VAE

#

If my effect has expired it should be auto deleting itself πŸ€”

violet meadow
# coarse mesa here are my dirty secrets

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

coarse mesa
#

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

violet meadow
# opaque current What does "Temporary (Expired)" mean in VAE

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

opaque current
#

Maybe I moved time forward in smalltime and forgot. Probably PEBCAK.

coarse mesa
violet meadow
coarse mesa
#

our group is really into the tension of the rolls... having come from tabletop

violet meadow
coarse mesa
violet meadow
coarse mesa
#

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 πŸ‘€

violet meadow
#

Legendary resistances for the plebs?! 😱

coarse mesa
violet meadow
#

Yeah I saw that. I am just playing around with something that would anyways need a MidiQol workflow change to be solved tbh

coarse mesa
#

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 🀯

scarlet stump
#

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:

  1. Have a mounted combatant have access to both its mount and its own attacks;
  2. Have an incoming attack have a chance to strike the mount instead of the mounted combatant;
  3. 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:

  1. Since the mount is specific for each actor, just have the mount attacks added to the mounted combatant actor.
  2. 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.
  3. 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!

violet meadow
# scarlet stump Ok this is a doozy. I'm trying to figure out a good way to automate mounted comb...

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?

molten solar
scarlet stump
violet meadow
#

yeah that too! <= regarding Zhell's comment.

violet meadow
scarlet stump
#

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?

violet meadow
#

So something like ```
if attack
check target
if target mounted, roll d100
if roll hits mount, target mount
else target mounted
workflow continue

scarlet stump
#

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 🀣

violet meadow
#

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.

scarlet stump
#

yeah that's if you like your mount

#

this is mostly to handle enemies tbh since I usually don't have mounted pcs

violet meadow
#

Yeah so depending on the choices you want the player to have at their disposal, you can either --

scarlet stump
#

not after the oubliette accident

violet meadow
scarlet stump
#

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

violet meadow
violet meadow
#

Oh that poor Raxi. She bears the signs of tests for so many modules and macros.

molten solar
#

and worse, she's a gnome

violet meadow
#

you sire are off the party list

molten solar
#

Darn. Now I, too, have been uninvited from a birthday party.

violet meadow
#

You still can salvage this. What about my fav Svirfneblin Gnome?

scarlet stump
#

Svirfneblins are ok

molten solar
#

If you want me to be good with gnomes, I would rather not experience the bouncy castle your mom ordered. Good day, sir

scarlet stump
vast bane
opaque current
vast bane
#

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.

opaque current
#

Versatile damage baby

vast bane
#

yeah I was thinkin an advantage reminder for my setup

vast bane
#

reason why I wouldn't do versatile is cause my players hate keyboard shortcuts anyway and we don't fast forward

opaque current
#

..?

#

If you aren't fast forwarding, you can just click the Vers button

#

Or are you autrolling damage or something

vast bane
#

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

opaque current
#

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

vast bane
#

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

vast bane
#

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

opaque current
#

You've already got hotbar and Token Action HUD, how many levels of action accessibility do you need

vast bane
#

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

marsh crescent
opaque current
#

Takes up too much space for my liking. TBH I don't use any such mods.

molten solar
opaque current
#

Just regular old character sheets

molten solar
opaque current
#

As a DM maybe TAH would be worth my while πŸ€”

vast bane
#

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

opaque current
#

That is some godless nonsense

vast bane
#

its cause up until 3 weeks ago they all used argon

#

so we never managed the TAH for the players

molten solar
#

At that point you might as well just use the sheet.

vast bane
#

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

molten solar
#

At least it will be organised.

vast bane
#

(the sheets just as messy)

molten solar
#

Starting to sound more like an Error40.

#

(the error sits 40 inches from the screen)

vast bane
#

my players are hoarders and procrastinators

#

only 2/5 login outside of gametime to do anything

molten solar
#

Sucks to be them

covert mason
#

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);
}```
covert mason
# covert mason I'd like to add a sequencer effect to the summoning of the MidiQoL spiritual wea...

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);
}```
opaque current
#

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

covert mason
#

It's just the one from the Midi sample items

spice kraken
#

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

covert mason
#

Aye, though does it do an effect upon the token spawn?

spice kraken
#

You get to pick if you want it on source actor or target

vast bane
#

there is technically no target in the casting of a summons

covert mason
#

That's what I'm thinking and wondering

spice kraken
#

I've personally never mentioned with summons cause I don't use warpgate

vast bane
#

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

kind cape
#

@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();
marsh helm
#

Ya, I am looking around for why False Life is not working

vast bane
#

Does anyone know how dfreds CE is interfering with False Life? It makes no sense to me whatsoever

marsh helm
#

Midi seems to to be doing the same thing Dfed CE is doing but no timer also. Lol

vast bane
covert mason
# kind cape <@151011383092183041> Add this after the creation of the AE: ```js new Sequence(...

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);
}```
vast bane
#

dfreds clearly has a duration set on it

kind cape
marsh helm
covert mason
#

I have a basic understanding of sequencer, I'm just a wee bit clueless as to whhere to put the string in the code. πŸ˜‚

marsh helm
#

But both do not upcast

vast bane
#

you have to manually create an empty ae on the item

marsh helm
#

hmmmm

vast bane
#

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

marsh helm
#

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.

vast bane
#

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

marsh helm
#

ok let me test that out

vast bane
#

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

marsh helm
#

Ok, ya with CE disabled now Timer is applied but still no upcast. So ya it must be a bug somewhere.

vast bane
#

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

marsh helm
vast bane
#

action type healing...

#

didn't even realize that was a thing

marsh helm
#

Seems it imported to healing

#

yep in log that makes sense

vast bane
#

doubt thats the problem are you auto consuming or something?

#

in midi?

marsh helm
#

It is appllying 10 healing aand 7 temp hp lol

#

I have auto consumption

#

yes

vast bane
#

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

marsh helm
#

Even with the dialog popping up to ask if you want to consume?

vast bane
#

if thats happening then you don't have auto consume on

marsh helm
#

let me check my midi. But yes that dialog is popping up

vast bane
#

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

marsh helm
#

ahhhh

#

ok testing that

vast bane
#

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

kind cape
#

@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();
}
marsh helm
#

I watch this happen in the character sheet

#

15 and then immediately 5

vast bane
marsh helm
#

hmm ok

vast bane
#

thtas exactly what happens when dfreds is toggled on

#

did you accidentally uncheck the box

marsh helm
#

yessss

#

haha

vast bane
#

this is why we don't want dfreds to be broken, random npcs with false life are going to have this happen to them

marsh helm
#

too much switching back and forth

#

ok false life is working now

vast bane
#

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

marsh helm
#

So CE has a bug. And Primates importer needs to look at action types for temp hp spells.

vast bane
#

on our end all we see is a basic looking CE with nothing to it but an image

marsh helm
#

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"

kind cape
vast bane
#

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

marsh helm
#

Does it attach it so that when the AE expires the temp hp goes awway?

vast bane
#

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

marsh helm
#

ahhh ok

vast bane
#

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

marsh helm
#

cause I noticed without dfreds midi shows the timer expire but the temp hp remains.

vast bane
marsh helm
#

hmmm ok

#

thanks for the help btw, once again. haha

vast bane
#

@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

proud jungle
#

Hmmm yes but if the person want to switch between different poisons I tried to do this with effects that can just be toggled

vast bane
#

I personally would make the weapon X times and have them pick which weapon

marsh helm
vast bane
#

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

proud jungle
#

The player use it on all her weapons and want many different kinds of poisons >.<

vast bane
#

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

proud jungle
#

I can't compute macros at all πŸ™‚

vast bane
#

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

proud jungle
#

she has that

#

and is a theif mastermind

vast bane
#

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

proud jungle
#

Isn't it easier to make new abilities to just roll after any form of wpn?

vast bane
#

the problem with that is it'd be two rolls

#

does the rogue really use multiple weapons?

proud jungle
#

bow/dagger

vast bane
#

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

proud jungle
#

why is there a problem with 2 rolls?

vast bane
#

it'll mess with concentration checks though

kind cape
#

What is it the effect of the poison is?

vast bane
#

probably the core poisons

proud jungle
#

well - I have many poisons in my games

vast bane
#

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

proud jungle
#

hm, okay, thnx for the tips πŸ™‚

icy star
#

Hey QQ for something like Spiritual Weapon how do I get the attack to happen again?

vast bane
#

by not using the dnd5e srd version

covert mason
#

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.

vast bane
#

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

covert mason
#

Aye, fair enough

violet meadow
vast bane
#

there is an automated max heal grave cleric feature aorund here I have it installed for my cleric

vast bane
#

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

violet meadow
#

Oh you've been busy bees today!
Just realised how many messages were in between the one I read and commented and the bottom 🀣

vast bane
#

obviously fast forward won't work here

covert mason
#

You say I shouldn't automate this stuff...

...but monkey brain sees fancy mechanics and the dopamine make go unga bunga. smug

#

I may have a problem

vast bane
#

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

covert mason
#

Yeah. The other stuff is simple to do with an effect and flags.

vast bane
#

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

vast bane
#

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:

torpid kestrel
#

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.

sly eagle
#

is there a way to force midiqol to roll atk/dmg , ignoring momentarily a wall or a range setting

rocky jewel
#

I’m having some trouble automating the concentration bonus using midi, is someone else having the same problem?

icy star
vast bane
#

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

coarse mesa
#

Very useful for opportunity attacks when the player has already moved their token

vast bane
#

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

coarse mesa
#

fair enough, we like the range check but it's great that the GM can easily override when needed – works for walls/cover too

sly eagle
coarse mesa
#

yep and then you’ve mucked up that drag ruler history

vast bane
#

you can reset the drag ruler history by right clicking I think in combat tracker

coarse mesa
#

yep override just saves that whole kerfuffle

sly eagle
#

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

vast bane
#

its probably a conflict with cover, turn off cover

sly eagle
vast bane
#

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

sly eagle
#

the walls should be diffrent?

vast bane
#

did you try backing up a square or two?

sly eagle
#

yes

vast bane
#

hes less than a square away from something twice his height

sly eagle
#

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)

vast bane
#

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

sly eagle
#

i thought this was an inbuilt function of levels+wall height

#

oh

vast bane
#

you are in miidqol's channel not rippers discord

sly eagle
#

i was told it was as simple as turning it on :

vast bane
#

I personally do not know how rippers stuff works if at all with midi

sly eagle
#

ill try in mod-discussion

vast bane
#

your problem is likely this setting in midi qol's mechanics tab

sly eagle
#

well simbuls is being used...

#

let me see

vast bane
#

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)

sly eagle
#

well its a start

dark canopy
#

As it's not a core concept

sly eagle
#

ah

vast bane
#

yeah the next setting down should probably be shut off

#

I haven't been able to get either cover modules to work personally

coarse mesa
# vast bane

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

vast bane
#

I live with it cause its better than a bright one

coarse mesa
#

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 πŸ€”

vast bane
#

I assume its just cause of my darkmode choice in it?

coarse mesa
#

@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:

dark canopy
vast bane
dark canopy
#

That is correct. Any creature in the way is half cover

#

Size is irrelevant to cover by token

vast bane
#

weird I thought it had to be 1 size smaller to provide enough cover?

dark canopy
#

Nope

#

Dmg cover rules

coarse mesa
#

there are overrides in the settings tho, no?

dark canopy
#

Step one square to the side, haha

dark canopy
#

You can set that token to explicitly provide no cover though

coarse mesa
#

iirc you can set sizes to provide no cover... eg tiny

dark canopy
#

Gotcha

#

Homebrew nonsense can be supported as long as I'm not doing it, lol

scarlet gale
covert mason
#

Do you happen to have a copy of this on hand? πŸ˜„

vast bane
#

its not rules as written

#

also I have exploding dice on, so you may want to edit that

covert mason
#

Ah

vast bane
#

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

covert mason
#

And it doesn't appear to be damaging the source actor.

vast bane
scarlet gale
#

Damage only workflows are currently bugged with cover

vast bane
#

Yep that fixed it

#

just turn off simbuls settings in the cover/wall section

covert mason
#

So turn off computer cover?

vast bane
#

seems to work for me now

covert mason
vast bane
#

mechanics I think

scarlet gale
#

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

covert mason
#

Ah! There it is

#

that fixes it. Yup

scarlet gale
#

In reality you can probably change that to apply damage instead

#

That doesn't look like it really needs a damage only workflow

violet meadow
scarlet gale
#

Found the fix @covert mason change sourceToken to sourceToken.object

#

In the damage only workflow part

violet meadow
#

Or canvas.tokens.get instead of canvas.scene.tokens.get

sudden crane
vast bane
#

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

cyan shuttle
#

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?

vast bane
#

can ya show us the feature you are trying to do?

#

I wonder if the fumble threshold fires off halfling luck?

cyan shuttle
# vast bane are you trying to do reliable talent or something?

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)

scarlet gale
#

Should be pretty doable with an on use macro.

vast bane
#

elven accuracy gonna make that alot messier

scarlet gale
#

Nah

cyan shuttle
#

yea I know that the latter is possible I just am not familiar with the syntax in the least.

vast bane
#

its insanely easy if you use real life dice and df manual rolls ;p

cyan shuttle
#

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.

cyan shuttle
scarlet gale
#

Although I'm adding to the roll, but there isn't anything stopping you from replacing the d20 rolls

cyan shuttle
scarlet gale
#

flags.midi-qol.onUseMacroName CUSTOM macroName,macroPass

#

preCheckHits

#

In this case

cyan shuttle
#

so "before check hits"

scarlet gale
#

Yep

#

You just modify or replace the existing roll

cyan shuttle
#

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

scarlet gale
#

You should be able to check the d20's and reroll the undesired ones

covert mason
#

Do you have an example of this anywhere?

vast bane
#

yeah I need aura of life and death ward really badly, I know its probably best in EM

#

EM+ AA

covert mason
#

"EM"?

vast bane
#

Effect macro

covert mason
#

Ooh right

vast bane
#

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

scarlet gale
#

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

vast bane
#

EM wouldn't be able to do that with like If this actor drops to 0 hp.value, add 1?

scarlet gale
#

May just be easier as an effect that expires on hitting 0 hp

#

Then just bring it back up to 1

#

With EM

vast bane
#

but inevitably half us have automated deads/defeateds so we'd need it to undo those too

scarlet gale
#

Not that hard, especially if you use CE

#
actor.update({'system.attributes.hp.value': 1});```

Would literally be it as an effect removed macro.
vast bane
#

how to cause it to fade on 0 though?

scarlet gale
#

Fade?

vast bane
#

how to cause the ae to end

covert mason
#

Duration > Special Duration

vast bane
#

ooooooh theres one for 0???

#

damn I need to look more closely at those

scarlet gale
#

Yea

#

0 hp special duration

vast bane
#

Chris theres a marked defeated trigger in EM

#

could that be something worth doing?

scarlet gale
#

Nah

#

Dae expired better

vast bane
#

On effect deletion then?

scarlet gale
#

Yep

#
await game.dfreds.effectInterface.removeEffect(
            {
                'effectName': 'Unconscious',
                'uuid': actor.uuid
            }
        );```
vast bane
#

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?

scarlet gale
#

Oh interesting

#

Don't think so

vast bane
#

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

scarlet gale
#

Did that oh my phone too lol

covert mason
#

Wait hold up how did you get it to work?

vast bane
covert mason
#

Oh, death ward. thought you were automating Aura of Life πŸ˜‚

vast bane
#

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)

covert mason
coarse mesa
#

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:

vast bane
#

my method wouldn't work because its an aura, when they walk out it would fade lol

coarse mesa
#
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
vast bane
#

I think single datas get yeeted and doubles get system

covert mason
#
if(!game.combat) return{};

if (actor.system.attributes.hp.value === 0) {
    await actor.update({"attributes.hp.value": 1});
    console.log("Healed");
    }```
v10 now (?)
vast bane
#

second one was just suppose to be deleted

coarse mesa
#

this is how the AE on the spell is set up

vast bane
#

I think thats it, but if it fails we can ask one of the smaaaht ones

scarlet gale
#

I'd remove the macro.ce and instead do a EM trigger for defeated

vast bane
scarlet gale
#

Yep

vast bane
#

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

scarlet gale
#

Then do it on turn start in em

vast bane
#

oh actually he does have it setup that way

#

my bad Lukas

#

the death ward is gonna mess up concentrations in midi

scarlet gale
#
if (actor.system.attributes.hp.value === 0) actor.update({'system.attributes.hp.value': 1});```
vast bane
#

@covert mason ⬆️

scarlet gale
#

Don't need that combat checking part with the EM trigger

#

Just do on turn start

#

As it only triggers in combat already

coarse mesa
covert mason
#

Ayyyyyy, nice!

#

It works!

vast bane
#

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

coarse mesa
vast bane
#

damn

#

yeah gonna have to roll back and pray its a bug

#

do you have the aa helpers macro in it by chance?

coarse mesa
#

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

vast bane
#

wow ok, after a refresh of the server its now working

marsh crescent
#

F5 is you and your player's best friend when things go wonky.

vast bane
#

nah I think its a bug with 0.5.3

#

Lukas is on v9, @covert mason what version of active auras are you on?

covert mason
#

v0.5.2

#

I'm on v10

vast bane
#

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

covert mason
#

Yeah, I've noticed that too, but it's not present on the sheets

vast bane
#

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

covert mason
#

Ah

vast bane
#

gonna try downgrading and if no change I'll just post the bug as a generic bug

covert mason
#

Now... how to automate Aura of Purity blobthinkingglare

vast bane
#

doesn't condition immunity also remove existing said conditions?

covert mason
#

It gives you advantage on saves against certain conditions. i don't think anything's capable of that yet

vast bane
#

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

covert mason
#

Exactly what I'm thinking

#

Erh... how do I format the save advantage with the optional flag again?

vast bane
#

oh shit

#

I forgot about that!

#

the advantage flags can now have comparisons

covert mason
#

Ohh shit

#

How-do?

vast bane
#

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

covert mason
#

flags.midi-qol.optional.NAME.advantage.ability.save.all

I... don't think that's correct

Anyyone got any input?

scarlet gale
#

They're not documented well

#

In the changelogs most likely

vast bane
#

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

vast bane
#

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

errant cosmos
#

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.

errant cosmos
vast bane
# errant cosmos

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.

errant cosmos
#

ok, let me try "unchecking" that "Character Sheet Hook" box and trying again

#

With it enabled, I'm getting this error in my console:

vast bane
errant cosmos
#

I also deleted the Spiritual Weapon on the Actor's sheet and dragging in the one from the Midi Sample Items Compendium

vast bane
#

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

errant cosmos
#

Okay, let me start again.

#

So now Item Macro is set up like this:

vast bane
#

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?

errant cosmos
#

Okay, it has spawned the Spiritual Weapon actor token

vast bane
#

you should be good then

errant cosmos
vast bane
#

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?

errant cosmos
#

I still need to create teh "Slash" attack as described in the chat dialog I think..

vast bane
#

no the sample item scales it up

#

does the canvas actor spiritual weapon have the attack?

errant cosmos
#

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:

vast bane
#

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

errant cosmos
#

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!

vast bane
#

the canvas actor is temporary

#

open the side bar and delete the attack there

errant cosmos
#

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..?

vast bane
#

if you scrolled up pretty far you'd see guys figuring that out about 10 hours ago

errant cosmos
#

I have Active Auras and similar

vast bane
#

Janner was the user figuring it out

#

@errant cosmos ⬆️

#

You will want to replace the item macro on that item with this one

errant cosmos
#

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.

vast bane
#

probably alot easier nowadays with v10 feature to put evaluations in the effect values of the disadvantage key

errant cosmos
vast bane
#

I don't know though

errant cosmos
vast bane
#

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

errant cosmos
#

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.

cosmic surge
spring dove
#

Can someone explain to me what "Fumble Threshold" does and how to use it?

vast bane
#

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

coarse mesa
#

Some DMs are evil I guess

vast bane
#

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

covert mason
#

flags.midi-qol.optional.NAME.advantage.ability.save.all Is this how I format this flag?

covert mason
#

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
            }
        );```
versed quarry
#

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

orchid hound
#

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.

versed quarry
#

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

kind cape
#

I believe that is a wrong setting potentially, but not at a PC right now

versed quarry
orchid hound
#

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

versed quarry
orchid hound
#

seems like the custom roll be called from midi via LMRTFY is set as private

kind cape
#

Could you screenshot your workflow MIDI settings?

versed quarry
#

Sorry

kind cape
#

πŸ˜‚

#

It happens, no worry

versed quarry
#

Yea probably the one saying Workflow haha

kind cape
#

Oh right, stuff got moved around, could you do.. misc instead, I believe that is where it got moved

orchid hound
#

if your looking for the optional rules, they are under Rules

versed quarry
#

This are the options in LMRTFY

#

All 3 of them

kind cape
#

Looking for where the dice rolling/hiding got moved πŸ€”

#

Looks fine as well, I wonder... Do you have monks token bar?

versed quarry
#

No, I do have Token Action HUD tho

kind cape
#

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 πŸ˜…

versed quarry
versed quarry
kind cape
#

I'll spin up a test world when I get home and test it

versed quarry
kind cape
versed quarry
#

Well, don't worry
Thanks anyways!

vast bane
molten solar
#

The combat tracker just uses 'Dead' as the equivalent of 'Defeated'. Core, at least.

unreal vector
#

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?

vast bane
#

aka, search here, gearheads discord, and any other automation community for a midiqol version of chaos bolt to repurpose

unreal vector
#

Could I get a link to the gearheads discord?

vast bane
unreal vector
#

Thank you

spring dove
#

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?

vast bane
spring dove
#

An effect.

#

You know what I meant

vast bane
#

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?

spring dove
#

no

vast bane
#

could probably have the mutate target the rolled gun, I'm the last person to ask this shit I should be quiet lol

spring dove
#

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.

vast bane
#

Fyi its because you can solve solutions faster if you get the why

spring dove
#

I'm sorry, I don't mean to call you out in front of everyone. I apologize for being direct.

vast bane
#

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

spring dove
#

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

vast bane
#

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

spring dove
#

lmao

#

click click

#

chucks gun

vast bane
#

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

spring dove
#

how so?

vast bane
#

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

spring dove
#

I"ll check it out

vast bane
#

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

spring dove
#

Thanks for the direction

vast bane
#

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

obsidian orbit
#

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?

vast bane
obsidian orbit
opaque current
#

I just put sneak attack damage in the versatile box

vast bane
scarlet gale
obsidian orbit
sly eagle
vast bane
#

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

spring dove
obsidian orbit
sly eagle
vast bane
#

personally I think lukas' game has it right, theres very little reason to manually roll other, unbind it and rebind to no optional rules

covert mason
#

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?

burnt bison
#

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?

dark canopy
covert mason
#

Oh! Nice!

dark canopy
#

I like using the post callbacks for animations, but you can do it based on the returned ids instead

vast bane
#

Dialogs man, frikkin dialogs. The bane of my foundry experience.

covert mason
vast bane
#

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..."

coarse mesa
dark canopy
chrome gale
#

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?

vast bane
#

cones are not suppose to include the casters square

covert mason
#

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);```
vast bane
#

make sure the actors are not linked

covert mason
# vast bane Line 1 feels very redundant

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

covert mason
vast bane
#

I think it might be the last 3 closing brackets you may have an extra

covert mason
#

Doesn't look like it(?)

vast bane
#

its not midi related so you could totally ask in macro polo

covert mason
#

Aye, I could do. I've no idea what I'm doing at this point rcon_wheeze

kind cape
#

Its one of these two I am pretty sure

vast bane
#

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

covert mason
#

Oh fu-

vast bane
#

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

kind cape
#

Actually, put it into a formatter, its at the end

#

But multitasking xD

scarlet gale
#

If that macro is run via midi, you can do let actor = args[0].actor;
Instead of searching via the actor name.

covert mason
scarlet gale
#

Assuming this is an item macro, yes

vast bane
#

wait a minute

#

doesn't v10 have a very angry rule about defining actor?

#

unless Janner has advanced macros installed?

kind cape
#
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 `

scarlet gale
#

It looks like this macro was designed as hotbar macro

#

So some stuff could be done differently

vast bane
#

I swear that you need advanced macros installed to define actor

covert mason
#

Aye, I had intended for this to be executed via ItemMacro

scarlet gale
#

No

sly eagle
#

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

scarlet gale
#

Actor might actually be already available with item macros

vast bane
#

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?

scarlet gale
#

Yea

vast bane
covert mason
kind cape
#

πŸ€”

vast bane
# covert mason I do!

just throwing it out there....did you forget to hit save when you pasted fotoplys in?

covert mason
kind cape
#

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 πŸ˜›

vast bane
#

hes missing systems

#

system.damage.parts

#

yeah theres a bunch of systems missing

covert mason
#

That may be it xD

vast bane
#

yeah definitely it

#

I think badgers got a radar sensor just for that error so hes gonna come charging in here soon lol

covert mason
vast bane
#

not a fan of flat ac calcs, better to go natural

covert mason
vast bane
#

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

covert mason
#

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

scarlet gale
#

This is my go to for stuff like this

covert mason
#

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.

spring dove
#

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?

vast bane
#

The second one for sure, look to sword of life stealing for an activation condition to then apply a bonus damage macro

violet meadow
#

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.

covert mason
vast bane
#

the error is a mismatched spelling of something you are changing on the actor

#

show us the features/inventory tab of the actor is the best thing we can do to diagnose your problem