#MidiQOL

1 messages ยท Page 25 of 1

violet meadow
#

I don't think you can modify the flavor like so @lost estuary

lost estuary
#

Can we get it to prompt for Ath or Acr?

#

technically a grapple can be contested by either in 5e if i recall.

violet meadow
#

You could, but why?

vast bane
#

becaues its a grapple check

violet meadow
#

It automatically chooses the highest

vast bane
#

not his

#

My macro banked that skilltoberolled for later use, hes not using it

lost estuary
#

changing it now

vast bane
#

he needs to replace the second ath with skilltoberolled but I can't remember the formatting, I know its different

lost estuary
#
token: target,
    request:'skill:skilltoberolled'
#

like that?

vast bane
#

I think it has to be like the red ones?

#

doesn't it?

violet meadow
#

ah ok ```js
skill:${skilltoberolled}

vast bane
#

yeah

#

sorry when I make macros I leave stuff in, I'm a hoarder

#

I gave him a taunt key with that left in, so it mislead you ot think he was using it lol

violet meadow
vast bane
#

well it was a const /shrug

#

no harm no foul I thought lol

violet meadow
#

yeah just to make sure that you will spot it easier in the future

vast bane
#

yeah

lost estuary
#

worksk great, auto switches to the highest

#

amazing!

vast bane
#

Yep, depending on your attack workflow you might be able to auto trigger that as an onuse

#

hopefully the author of more automated spells is still hard at work on v10 cause the v9 battlemaster suite is pretty slick

lost estuary
#

When i fast forward the rolls via the macro, I get this error. Timing?

violet meadow
lost estuary
#

np, its a minor thing

violet meadow
#

If you FF you can grab the passed result from the flags

acoustic jasper
#

flags.midi-qol.grants.critical.range - how to use this? What sould I type next to it?

vast bane
#

thats a boolean for things like unconscious

#

so 1 or 0

#

wait no...bad answer

#

You want it to be 5 for the distance or lower that it would be true

#

the only use case I know of is unconscious right?

#

you shouldn't need to make this, dfreds has it already

violet meadow
#

flags.dnd5e.weaponCriticalThreshold | Override | the lowest number you want it to trigger Crit

short aurora
#

@vast bane I asked ripper for ya regarding the recent used action thing you mentioned a few days ago and it is just a flag on the actor, so when using macro.createItem, it should be a snack to populate that one with the created item. Will try to get an example and dump it in the channel here later, my cleric doesn't like the way aura of vitality works right now

vast bane
#

basically edit the combatbooster flag to put the newly created item in the history at the front

#

so things like spirit guardians, aura of vitality and such woudl get the feature added to the history without using it yet

violet meadow
vast bane
#

oh was it paralyzed, I thought it was unconscious

violet meadow
#

all of them

acoustic jasper
#

ohh then I used it wrong

#

thx

vast bane
#

its in dfreds CE's in all the relevant ones if you have midi installed

short aurora
#

I wonder if macro.createItem has the new item ID on the actor it created at somewhere I can fetch it, that would mean I just gotta push it to the array flag in combatbooster

vast bane
#

make a bait and switch item, that has an ae that creates an item on the actor when its attuned to, and have that ae have a cursed item

#

and destroy the original with effect macro I think

#

very very little setup required to handle unidentified items

#

you don't have to have it be cursed, just unidentified

#

one of the longest wanted items in dnd5e is in midi pretty decently easy I think

violet meadow
short aurora
violet meadow
#

On the same actor?

short aurora
#

not relevant in this use case, I just wanted to do it proper :p

vast bane
#

combat booster does have a weird issue where it looks at the proto actor even if you are using a canvas actor beware of that weirdness

violet meadow
#

maybe check the DAE flags for a createdItem with its UUID, which probably DAE needs so as to delete it afterwards

vast bane
#

so I bet you th

#

So its probably referencing the proto actors flags, beware of that. So any npc's using this idea will probably have issues

short aurora
#

Sanity check, in the newest version, if I delete all instances of an active effect belonging to a concentration item, then concentration should drop, right?

vast bane
#

he did that so that your 20 goblins would all have the shortbow and shortsword in its history even though only 1 of them has gone

violet meadow
vast bane
#

I don't think concentration works backwards like that, its the other way around, if you lose conc it kills it

short aurora
#

It works on some of my features but not all of them, I pray tposney doesn't get too tired of me hurling issues at them

vast bane
#

did you update dae?

#

could it be the castdata thing

short aurora
#

Oh wait, it turned into a setting, maybe it's off by default

#

It was! praise, no issue necessary

undone sorrel
#

I once asked about this. No one told me you could request contests with this module ๐Ÿ˜ญ

short aurora
#

It's not possible with just midi

undone sorrel
#

Bugbear did Crymic say anything?

#

Yeah why I said this module I meant MonksTokenBar sorry was unclear

violet meadow
#

Have you tried to use MidiQOL.applyTokenDamage instead?

undone sorrel
#

Will that give a chat card?

violet meadow
#

How would you like it to display?

#

A Chat Card of the secondary item?

undone sorrel
#

Also I'm more concerned about knowing if there's actually a bug at this point tbh

undone sorrel
river urchin
violet meadow
#

The secondary damage is from the same item? I was thinkig you needed it for like a different effect or something, nvm

violet meadow
#

Forgive me, but what was the initial ask? I tend to forget ๐Ÿ˜„

#

@undone sorrel ๐Ÿ‘†

undone sorrel
#

Uh the initial use case was for booming blade

#

So the secondary damage is the applied after moving

violet meadow
#

So you create an Effect that triggers the damage when it gets deleted?

vast bane
vast bane
#

and works with midi

river urchin
violet meadow
# undone sorrel Basically yeah

Do you want to be thorough about it?
duplicate the original item, changing the relevant data to whatever you need for this secondary type of attack and roll that ephemeral item when the effect is deleted ๐Ÿ˜„

with a MidiQOL.completeRoll(item, { parent: actor }) going off memory now

vast bane
#

if you turn that off in midi, you can roll damage even though you missed

#

If you leave the buttons in the merge card, then when you miss, the damage is still there to manually roll for a hit:

river urchin
#

I only tick off the attack one

undone sorrel
vast bane
#

so they could have a feature for favor of the gods, and then click the damge there if they would hit

river urchin
vast bane
#

whether you can or can't roll damage

#

if the button is never removed, then you can still just roll the damage

#

overruling the miss

violet meadow
vast bane
#

the miss is superficial anyway, you can turn off checking for hits in midi, whats making it hard to undo a miss is usually folks remove the damage and attack buttons

river urchin
vast bane
#

so the above guy missed, someone favored the gods, he winds up hitting, he manually clicks damage there, and finishes the workflow

river urchin
#

How about saves?

violet meadow
vast bane
#

how could you ever automate a choice

vast bane
#

otherwise you would get prompted EVERY time for what you want

#

that is worse than manually doing something I'd argue

#

defeats the purpose of fast forward if you have to click no to something to do all your d20 rolls

undone sorrel
river urchin
vast bane
river urchin
#

Rn im not at my pc so I'll check things later, though

vast bane
#

ready set roll and midi are incompatible

#

you could also roll manual dice hehe

river urchin
vast bane
#

physical dice I mean, and then have df manual rolls be your intermediary

vast bane
#

but you have to find really old versions of dnd5e, better rolls, and midi to pull it off

river urchin
#

Yeah, not doing that, i wouldn't know where to start xD

#

Too much complications

vast bane
#

and it would be a prompt for every roll right?

short aurora
#

Depends if they want to see it, could just be background

#

If it's one actor that has the feature, go in on each pre attack roll or whichever phase is most appropriate in midi, do the roll and if it changes a miss into a hit, push that to the workflow and use the feature or prompt for the feature

#

Just kinda depends how much they're willing to let go of RAW because I doubt a feature that changes an outcome is supposed to be powergamed that much

river urchin
vast bane
short aurora
#

Just limit it to the feature's uses

vast bane
vast bane
river urchin
#

That would rerroll the initial roll, right

vast bane
#

thats precisely how ready set roll and better rolls works, midi just doesn't do it well

#

the best midi could do is prompt you yes no at various hooks to repeat or accept a value it got

short aurora
#

They said only if it changes a miss into a hit, you can check for that and give a prompt when it would be relevant. I'd find it less engaging as a player, but if you do full auto and you want those kind of features, that's how I'd implement it.

#

Can also just display the result and offer the gods intervene to change them, add the bonus, without it needing to always be possible, if you want to hide that

vast bane
#

thats alot of pausing fast forwards when you could also just hit the undo keys

short aurora
#

It's the same clicks realistically

river urchin
#

Hmm

short aurora
#

It's just about the exact same time/workflow

vast bane
#

but undoing is on demand 100% useful, prompts for no reason are a waste

#

the player will get sick of the prompts

short aurora
#

It'll only prompt for failed whatever the bonus was to, and you can always limit it further, so the prompt will in theory never be for no reason

vast bane
#

you can just roll the damage on a missed attack, you can undo the saves

river urchin
#

There is nothing that would do this, right?:

  1. Take the results of the roll
  2. roll something else
  3. Add 2 and 1 and send it to midi as a block
#

Yeah, the more i wrote, the less likely that sounded xD

violet meadow
short aurora
river urchin
vast bane
violet meadow
#

You can do it. Add something like 1d4 to the rolled Attack roll? and check if that hits?

vast bane
#

itd'be the same as the always prompt smite idea

violet meadow
#

Nope

#

It does automatically

vast bane
#

the feature has limited uses

short aurora
#

You can just do it automatically and subtract the uses

river urchin
violet meadow
#

Like check the result of the attack and if it is within a range that 1d4 would make it to actually hit, prompt a dialog to add it and spend one charge

short aurora
#

Teccam, how is this feature worded? Can the player see the roll result, before deciding?

vast bane
#

what if its wasted on something you didn't care about, like a grapple check, or a medicine check, or a nature check, or a save against something thats about to die.

short aurora
#

Do they know if they failed or succeeded in either a hit or a save?

vast bane
#

its 2d4 bugbear

vast bane
#

so wider range

violet meadow
short aurora
#

So roll result, but not success result?

#

So if I roll to attack, I get to see I hit a 17 and then decide if I want to add this feature, but I don't know if I hit before deciding?

vast bane
river urchin
violet meadow
vast bane
#

Starting at 1st level, divine power guards your destiny. If you fail a saving throw or miss with an attack roll, you can roll 2d4 and add it to the total, possibly changing the outcome. Once you use this feature, you can't use it again until you finish a short or long rest.

short aurora
#

Definitely worldscript material then, if it's okay the player knows if a roll succeeded or not. Prompt them with a dialog that shows the roll that failed, tell them the Gods offer them a second chance, insert the secondary roll that you already rolled

#

EZ

river urchin
violet meadow
#

Let me find it

short aurora
#

With a failed saving throw? Isn't that prompted by the wrong actor?

violet meadow
#

and it can use the resource or whatever too

#

You click on it, if you fail.

For attacks, if its in range it can prompt the user to activate the ability

vast bane
#

that was an example, not an ask for them. They just wanted to be able to retroactively change attacks to misses and saves from failures to successes in midi.

#

kinda how ready set roll or retroactive advantage did

violet meadow
#

What are we talking about then ๐Ÿ˜…

#

that;s not doable ๐Ÿ˜„

vast bane
#

(thats what i've been saying the whole time)

short aurora
river urchin
#

Yeah, guys, thanks for the help but no need to mess that much if it's not possible/easy! I appreciate it, though

vast bane
#

yeah I'd love to see a saving throw reaction pause cause the war magic wizard gets one that I can't figure out how to prompt

short aurora
#

It's possible, but not on demand, you can incorporate it into feature(s). All assuming you full auto.

violet meadow
vast bane
#

its basically shield for saves

short aurora
vast bane
#

I genuinely would take a reaction save using that bugbear, my wizard has the war magic level 3 feature

violet meadow
#

Check the legendary resitance from MidiQOL sample items

#

It stops eveyrhing

vast bane
#

When you use this feature, you can't cast spells other than cantrips until the end of your next turn.```
violet meadow
#

You need to click yes or no to go on

vast bane
#

not exactly something we can work with is it lol?

#

no item macro

violet meadow
violet meadow
#

It will prompt you if you fail a save. If you choose success, well you then succeeded /

undone sorrel
violet meadow
#

It is a pretty old function to be honest.
its value was somewhat diminished with the introduction of damageBonusMacro

#

And applyTokenDamage which can damage respecting failed saves etc

vast bane
#

wait, I think leg save doesn't show you does it?

#

I don't think it shows the result\

#

so we'd have to do the math

violet meadow
#

Not sure if it respects the formula reveal settings from Midi

#

It shows the Roll no?

vast bane
#

DSN does for you

vast bane
violet meadow
vast bane
#

how do you put a bonus in?

#

can I see that ae?

violet meadow
#

Instead of success put +1d2638 ๐Ÿ˜›

vast bane
#

thats a really large dice

violet meadow
#

other uses

#

You can also replicate the dex save from things like Shield Master

vast bane
#

how would I set the charges on it?

#

I do the dex save with adv reminder

#

would I have to put it on a resource on the player?

#

I can't reference the charges of an item?

violet meadow
#

Use the resources available to the player instead

vast bane
#

oh wait duh

violet meadow
#

And yes you can

vast bane
#

put this on the item duh

violet meadow
#

๐Ÿ˜„

vast bane
#

yeah so what would be the charges field in an item? If its on the feature, then wouldn't something like @item.uses be it?

#

how do I find the field that is the charges on the item?

#

oh, it would be `@itemuses.abilityname right?

violet meadow
#

Added additional option for optional.NAME.count ItemUses.ItemName, which will use the value of the uses field for the item name ItemName (which must be on the actor), it means you don't need to use a resources entry for these any more.

#

This might have not made its way in the readme ๐Ÿค”

vast bane
#

you had me back in there trying to see where I missed that!

violet meadow
#

And also something I haven't tried... ```
flags.midi-qol.optional.Name.ac bonus to apply to AC of the target - prompted on the target's owner's client. (A bit like a reaction roll)

vast bane
#

thats in there at the bottom

violet meadow
#

yeah just to point it out.

vast bane
#

can you tell me the purpose of NAME in that?

#

does it need to match something?

#

or can I make it up?

violet meadow
#

You can have multiple ones.
It bundles the ones with the same NAME together

#

I am using the same NAME to all of them

vast bane
#

k thanks setting up arcane reflection with it now

violet meadow
#

Not a specific reason to change it if you dont need something in particular

vast bane
#

I wonder if badgers suggestion works?

undone sorrel
violet meadow
dark canopy
#

if you need the charges on the rolled item, yes, that is how you get it

vast bane
#

the aes are on the actual item, so I wonder if dae has the roll data of the item or whatever?

vast bane
#

I feel like your method bugbear, is for when its not on the item its referencing?

violet meadow
#

No idea! Try it as I haven't for a long time and I tend to forget ๐Ÿ˜„

vast bane
#

bah why am I bothering the two of you, I can just set it up both ways and see which one works so you don't have to worry lol

#

Arcane Deflection adds 2 ac AND 4 saving throw, so could I put the save.all AND the new ac thing in the same item?

violet meadow
# undone sorrel Did I misunderstand what you meant when you say duplicate? it seems like using f...

Yeah you will need more than that. I don't have time now but an example of something similar ```js
//const spells = game.packs.get("world.spells-mine"); //I put a spell named "Grease At Will" in a compendium named "Spells mine"
//const GreaseId = (await spells.getIndex()).find(i => i.name === "Grease At Will")._id;
//const Grease = (await spells.getDocument(GreaseId)).toObject();

//From here on its what you need

const pseudoNewItem = oldItem.toObject();

pseudoNewItem.data.target = { "type": "radius", "units": "ft", "value": 60 };
pseudoNewItem.data.range = { "value": "", "long": "", "units": 'self'};
pseudoNewItem.data.preparation = { "mode": "innate", "prepared": "true" };
pseudoNewItem.data.save = { "ability": "dex", "dc": ${actor.getRollData().attributes.spelldc}, "scaling":"spell" }

const ownedItem = new CONFIG.Item.documentClass(pseudoNewItem, { parent: actor });
await MidiQOL.completeItemRoll(ownedItem, {configureDialog: false});

#

You need to "create" the ephemeral Item on the actor and roll that

violet meadow
vast bane
#

uh oh, I think ac is v10 only

#

but thats ok I can make another item that is just a reaction

#

oh nm I spelled it wrong thats why dae wasn't picking it up

#

wow holy shit, genius idea, you could do things like cutting words this way, set it as an aura that affects enemies within X distance

#

I think theres even a setting in active auras for ignore self

undone sorrel
vast bane
#

problem would be expending the resource though

violet meadow
violet meadow
vast bane
#

Requires auto fast forward

violet meadow
#

bugbear's default state of mind

molten solar
violet meadow
#

@undone sorrel ๐Ÿ‘†

undone sorrel
#

what are the differences between the methods?

molten solar
#

One is supported, one is idk

violet meadow
#

๐Ÿคท CONFIG.Item.documentClass in console links to the Item5e class, same as new Item.implementation

undone sorrel
#

well it uh worked I guess so thanks ๐Ÿ‘

molten solar
#

Just a bit of a roundabout then? It should need temporary: true then as well

#

wait what am I on about

#

shit ain't async

undone sorrel
#

okay well the macro FINALLY works, thanks for all your help bugbear

#

hopefully Crymic will answer so I'll know whether the DamageOnly thing is actually an issue that needs raising

short aurora
#

Honestly, if you think it's an issue, throw it up as an issue. Worst case is you get told no. :p

violet meadow
#

well fun fact, you can make the item client wide available if you do something like ```js
game.ownedItem = new Item.implementation(itemData, { parent: token.actor });

until a reload ๐Ÿ˜„
undone sorrel
#

just gonna keep that in mind for... shenanigans

violet meadow
#

you never know when you need a semi ephemeral Item ๐Ÿคท

#

No need to add it as an update to an Actor

#

I am cheap like that.

molten solar
#

I have the perfect meme reply but it isn't fit for this server.

short aurora
#

Anyone know how much I can shove into macro.updateActor? Wondering if I can set/update a flag through it or if I have to run a macro separately. edit: Hmm, think it only accepts strings, booleans and numbers, so not applicable for me.

river urchin
#

@vast bane about our previous conversation on the possibility to edit any roll. I have an idea for a hypothetic module and I'd like you to check if it's theoretically possible (not that i am in any power to implement it, just for curiosity sake):

  • A module that has a button or a right click - "edit roll" function. It would do the following:
  1. Take said roll result as a single value (no dice or 8+3+5 shenanigans).
  2. Prompt whoever activated it to write the modifier.
  3. Create an item in the actor with an effect that overrides his next roll.
  4. Roll again whatever was rolled in the first place (to reset midi's workflow).
  5. Delete the item/end the effect
violet meadow
vast bane
#

Hell could even see if df manual rolls has a macro api to trigger it on a workflow or something

kind cape
vast bane
#

then it'd be easier to dice tray a regular roll

#

yeah but if he doesn't have actual dice, dice tray is a nice trick to use to prescreen your roll for success/failure

kind cape
#

It does not, looked into that before, but it seems to flag the rolls, so theoretically you just have to add those flags to the roll object

#

(And have Manual Rolls installed)

vast bane
#

yeah I have a manual roller so I have it too

#

It also has settings to let the DM fudge without being caught

kind cape
#

What is the mechanic thats being implemented here?

vast bane
#

he wants better rolls+midi

#

my suggestion would be to put your word in over at ready set roll to do compatibility checks

kind cape
#

Oh boy.. At that point might as well just update to V10 and do RSR + Midi ๐Ÿ˜‚

vast bane
#

they aren't compatible

#

especialyl now with what midi's got goin on

kind cape
#

Btw what feature from BR/RSR is it that they want?

vast bane
kind cape
#

Sometimes you also just have to accept that there is a fundamental difference between online and offline play, and some things are just not possible at the same time, e.g. automation and retroactive changing stuff is just inherently incompatible

vast bane
#

You take what you throw is generally the way to play

short aurora
#

Feck, my plan hath come undone, CombatBooster's recent actions updates itself after both Midi and Effect Macro does their thing, so it overwrites the array.

river urchin
violet meadow
short aurora
# violet meadow Do you want to add something in the front in the recent actions?

Yup, the closest I've come is having an ItemMacro run by the item, Effect Macro triggers a step too soon if you do on effect creation.

if (args[0] == "on") {
    const casterActor = game.actors.get(args[1].actorId);
    const newItem = casterActor.items.getName("Vitalize").id;
    let recentItems = casterActor.getFlag("combatbooster","recentItems")
    recentItems = [newItem].concat(recentItems);
    await casterActor.setFlag("combatbooster","recentItems",recentItems);
}```

But this happens during the item's roll and right after the roll, CombatBooster updates and instead of the newly created item being the first in the array, it is overwritten by an array with the original item, if that makes sense.
violet meadow
vast bane
short aurora
vast bane
#

combat boosters history is all proto actors actions, thats why if you rename the ability on the canvas actor it fails to work anymore with combat booster

#

are you testing all this on a linked actor?

short aurora
#

These are linked actors. It's Aura of Vitality. You cast a spell and get a new bonus action to heal a target.

#

I have the original spell that handles concentration and spell slot consumption, create a new item with a bonus action to heal a target.

violet meadow
short aurora
#

That could definitely do, let me check

vast bane
#

yeah I dunno why you are trying to do it at the start

#

you want it to create the history entry after the item is created, not for the first time its launched

#

you could also create a fake positive action use

short aurora
#

... it is after the item is created Moto.

vast bane
#

because combat booster just matches the name\

#

can you roll an item and never show any of it in chat?

#

you could just create a fake item to generate the history

#

then the workflow timing doesn't matter

#

combatbooster looks for the item on the actor that matches the name

short aurora
#

it doesn't, it's an array of ids

vast bane
#

so after the spell is cast to create the item, launch a fake item silently to generate the flag

short aurora
celest bluff
short aurora
#

Apparently the issue is actually that CombatBooster looks at the chat message created by the item and then straight up waits 2 seconds before updating. In theory I could just hook onto the same and then wait 3 seconds but uhm... I will get back to that. >_>

#
Hooks.on("createChatMessage", function (msg) {
      try{
        if (
          !game.user.isGM ||
          !msg.speaker.actor ||
          !game.settings.get("combatbooster", "enableHud")
        )
          return;
        const actor = game.actors.get(msg.speaker.actor);
        const messageContent = $(msg.content);
        if(!messageContent.length)return;
        const itemId = messageContent[0].dataset?.itemId;
        if (!itemId) return;
        let oldItemsIds =
          actor.getFlag(COMBAT_BOOSTER_MODULE_NAME, "recentItems") ?? [];
        let newItemsIds = [itemId];
        for (let itemIdo of oldItemsIds) {
          if (itemIdo !== itemId) {
            newItemsIds.push(itemIdo);
          }
        }
        setTimeout(() => {
          actor.setFlag(COMBAT_BOOSTER_MODULE_NAME, "recentItems", newItemsIds);
        }, 2000)
      }catch(e){}
    });```
#

thanks to ripper who has been very cooperative on their discord

dark canopy
#

hard coded update delays is quite the wrench, lolol

vast bane
short aurora
#

I'm getting into race conditions with hard coded delays and I think the wet I feel on my face is from tears

vast bane
#

there was a bug with argon and booster where it would not have the modifiers from the canvas actor in time for the first roll

dark canopy
vast bane
#

its kinda a janky idea we're doing anyway, I don't think it needs to be perfect

#

we just want the combat booster history to update with an item that hasn't actually happened yet

short aurora
#

I strive to make coding the most perfect thing in my life, because everything else in it is a lost cause

short aurora
#

Doesn't setting a flag trigger a hook? In the same vein of ^filtering for that, I guess I could just hook onto that

dark canopy
celest bluff
#

well if it runs twice

dark canopy
#

unless its also being responsible and firing a hook when it completes

vast bane
#

why do you need to play with the hook?

celest bluff
#

technically DAE runs twice also

vast bane
#

why not just run an item called the same as the future created item?

short aurora
#

The hard coded delay means I need to find a way around it or whatever I do is meaningless, my shit's too fast

vast bane
#

like flat out make the whole fake item in the item macro of aura of vitality

molten solar
vast bane
#

have it fire befoire the item rolls, combat booster reads the ability being used, puts it in the history, then casting aura of vitality happens and theres a history entry behind it for the new created aura of vitality heal

celest bluff
#

I would make a temporary item if I want it to do other functons, or you can use completeitemroll

vast bane
#

hes gonna use the new dae createitem function for aura of vitality

celest bluff
#

what function is that?

dark canopy
#

that way you dont care about the delay, just a single Hooks.once('combatbooster.preHistoryUpdate', fn) or something

short aurora
#

Meanwhile my thinking is shot because stray updateActors can finish before combatbooster, so I need to hook on, filter it and wait for recent actions flag to be updated, hook off and oh boy that sounds like a recipe for disaster if anything goes awry.

molten solar
#

Can't you just use the same item, and slap in a big fat if statement

vast bane
#

I just don't understand why you guys are fiddlin with all that stuff. If you cast a spell called bob, delete it, and then rename wish to bob, and try to cast the history entry for bob, it will cast wish

#

So just prefire the aura of vitality in the history before you cast aura of vitality and bam, its probably 2nd in line then from the fake entry beforehand

short aurora
#

Item ids, not names.

vast bane
#

hmmm are you on v10?

short aurora
#

yes

vast bane
#

in v9 I can do that /shrug

#

infact I've even said so much in weird conversations about warpgate macros with booster

#

and at the time zhell and badger said booster behaved weirdly how it was using the proto actors names and trying to match the canvas actor

molten solar
#

isn't it a concentration spell?

vast bane
molten solar
#

and you can put macros in your items, right?

vast bane
#

yeah booster has a different behavior for linked actors vs unlinked, thats a bummer

violet meadow
lost estuary
#

@vast bane The Grappling Strike we got working earlier works for me as the GM, but not the player, any thoughts?

#

This is the error player gets btw:
Macros.js:242 Advanced Macros | TypeError: Cannot read properties of undefined (reading 'tokenId')
at eval (eval at executeScript (Macros.js:44:15), <anonymous>:5:44)
at Macro.eval (eval at executeScript (Macros.js:44:15), <anonymous>:32:5)
at Macro.executeScript (Macros.js:46:15)
at ๐ŸŽMacro.prototype._executeScript#0 (libWrapper-wrapper.js:187:52)
at Macro.renderMacro [as renderContent] (Macros.js:218:16)
at Macro.executeMacro (Macros.js:239:23)
at ๐ŸŽMacro.prototype.execute#0 (libWrapper-wrapper.js:187:52)
at eval (eval at Item._executeScript (helper.js:82:18), <anonymous>:4:48)
at Macro.eval (eval at Item._executeScript (helper.js:82:18), <anonymous>:5:9)
at Item._executeScript (helper.js:88:12)
at Item.executeMacro (helper.js:60:23)
at HTMLDivElement.<anonymous> (helper.js:170:20)
at HTMLDivElement.dispatch (jquery.min.js:2:43064)
at y.handle (jquery.min.js:2:41048)

acoustic jasper
#

Does "Recharging" abillites (like Dragon's Breath) should roll automaticlly on a turn start? If not - is there a way to enable that? In a big fight there is no way for me to remember to click the recharge button :/

short aurora
acoustic jasper
#

great, thank you

feral flame
#

Is there a way to automate damage when a creature hits another creature? Say for example a PC hits a creature with the Heated body feature and is supposed to take a certain amount of damage?

violet meadow
violet meadow
#

I can help more after the weekend

lost estuary
#

i believe i have done all that, it appears the item macro is not passing the args when the player clicks the item. Also DANG sorry to hear about your fibre.

violet meadow
#

You need to use it as a Midi onUse macro

#

The one line macro

lost estuary
#

that is how i have it set

violet meadow
#

Change the macro name in the item macro to match the big ones's

lost estuary
#

Not sure i understand, you mean like this:?

violet meadow
#

Do you have an icon for Item macro on the title bar of the item?

lost estuary
violet meadow
#

Alright and the onUse call on the Item should be ItemMacro | After Active effects

lost estuary
#

Yup, It works for me as the GM, not for the player.

short aurora
#

Here's the macro I found that works for your newly macro.createItem'd items getting thrown into you recent actions with Combat Booster. Add it as an ItemMacro or macro.execute to be run by a secondary effect to your macro.createItem effect. If I make an SRD ability, I'll throw it in as an example later.

if (args[0] == "on") {
    const casterActor = await game.actors.get(args[1].actorId);
    // Improvement: get the actual item ID
    // for the time being, put in the name of the newly created item
    const newItem = await casterActor.items.getName("Vitalize").id;


    // pushing the newly created item into the first of the recent actions in CombatBooster for ease of access
    // CombatBooster does not have a specific hook, so we use updateActor and filter accordingly.
    const combatboosterHook = Hooks.on("updateActor", async (actor, changes) => {
        if (changes.flags?.combatbooster && actor == casterActor) {
            Hooks.off("updateActor", combatboosterHook);
            let recentItems = await casterActor.getFlag("combatbooster", "recentItems")
            recentItems = [newItem].concat(recentItems);
            await casterActor.setFlag("combatbooster", "recentItems", recentItems)
        }
    });
}```

If anyone got a recommendation of a failsafe in case CombatBooster fails and never triggers, so I can `Hooks.off` *eventually*, I'm all for adding it, I couldn't think of one.
violet meadow
lost estuary
#

I made him the owner of it

violet meadow
#

Do not give him ownership

#

Only the GM cause otherwise the Execute as GM doesnt work

#

Meaning do not share it. Just keep it for the GM

lost estuary
#

Observer?

#

Oh changing it back

#

So yeah, no sharing with player, everything set up with ItemMacro | After active effects.

#

same syntax error

#

Item macro does not pass the arg, or it gets stopped by advanced macros

violet meadow
#

Go to Item Macro settings

lost estuary
#

yup?

violet meadow
#

Uncheck sheet hooks if checked

lost estuary
#

is unchecked.

#

*has been as well

violet meadow
#

And then hooks off the updateActor?

short aurora
#

That's not a bad idea, thanks.

violet meadow
lost estuary
#

Yes

#

doing it from the sheet as a pre game test

#

player is owner of that actor and linked token

dark canopy
#

could also consider using Hooks.once and readding yourself if the condition is NOT met

#

dont have to track the hook ID that way (except...yea, for forcefully killing it)

violet meadow
lost estuary
#

Seems to be the case.

violet meadow
lost estuary
#

no worries, thanks for trying! ๐Ÿ™‚

violet meadow
#

What do the item details look like?

lost estuary
violet meadow
#

Try without the Any in the target details ๐Ÿ˜…

#

No idea otherwise

#

Hmm you are v9?

lost estuary
#

nope V10

violet meadow
#

Is ASE v10?

lost estuary
#

Nope?

violet meadow
#

I am wondering if it breaks something

lost estuary
#

lets test

#

standby

violet meadow
#

And make sure to update all modules and DND system, cause latest midi and DAE need that

lost estuary
#

no dice, everything is updated.

#

no ASE, same issue for player

violet meadow
#

Error?

lost estuary
#

like i said, you tried, thanks for the help!

#

no error atm.

#

just fails to pass

#

which is weird.

short aurora
violet meadow
lost estuary
#

Edited Useless debug output awayyyyyy

#

Man, that is so long.

molten solar
#

๐Ÿค

lost estuary
#

Fixed it

#

i hate it so much

#

I did not have this checked....

#

works fine now SMH

#

Interesting that Monks did not warn me that a player was trying to do something that was denied.

#

but hey, keep away that console spam right?

coarse mesa
short aurora
#

I don't suppose there's a hidden hotkey for the apply button that comes with the midi damage card?

#

Else I'll try and tinker a macro that will allow me to..

coarse mesa
#

Like, an Apply All? We just have it auto apply... the undo button is still there if you need it

short aurora
#

We don't auto apply; the players understand this for damage, but always seem confused about healing not auto applying. A strange cognitive dissonance that repeats itself weekly at this point, so I thought we could move to me having apply buttons for that kind of thing.

violet meadow
#

You could just quickly try with the ItemMacro back in its place

lost estuary
#

Everything works as it was originally set

violet meadow
#

(note to self to remember that)

lost estuary
#

Monk's did not tell me about the setting block, but i get 30k deprecation warnings every time I load a scene.
Consoles are fun.

violet meadow
lost estuary
#

haha

violet meadow
novel gale
#

Speaking of which, I'm using a setup that involves a touch screen table...so I want to hide VAE on that user only so it doesn't appear in the middle of the large screen. Any way to do that?

molten solar
#

I generally abhor client-side settings. You can just nuke it through the html I suppose.

violet meadow
tulip owl
#

Is anyone else seeing an interaction between Dfreds Convenient Effects and Active Token Effects where adding the Equipment Effects to a token resizes the token each time you click them? Could be something simple (new to Foundry) but I know ATE just got updated and didnt know if anyone else has run into this.

violet meadow
short aurora
#

@violet meadow didn't you have a code snippet to filter game messages for the last midi damage card? If so, can I steal that from somewhere?

tulip owl
violet meadow
#

well almost nowadays ๐Ÿ˜›

violet meadow
#

v9 v10 conversion etc etc

#

Cause if you run that snippet in v10 you get only ~100 deprecation warnings ๐Ÿ˜„

#

dev tools to the resque

acoustic jasper
#

MCDM minion rule is dope "Every minion has the Minion trait, which affects the creature
in the following ways:
โ€ข If the minion takes any damage from an attack or as
the result of a failed saving throw, their hit points are
reduced to 0.
โ€ข If the minion takes damage from another effect, they die
if the damage equals or exceeds their hit point maximum,
otherwise they take no damage" - but writing this defeated me ๐Ÿ˜„ The first part is manageable, but the second I wouldn't even know where to start ๐Ÿ˜„

violet meadow
# acoustic jasper MCDM minion rule is dope "Every minion has the Minion trait, which affects the c...

The second part needs a flags.dae.onUpdateSource targeting hp data. Take a look at the DAE readme.

You create the effect with this DAE,~~ transfer to Actor on Item equip~~ and it "monitors" hp changes, using a filter for: filter: 'data.attributes.hp.value' or 'system.attributes.hp.value'

Then it can trigger a macro, inserting logic as to when the Minion drops to 0 HP or regaining the lost HP essentially canceling the damage.

acoustic jasper
#

so if his hp goes to 0 he doesn't heal - ok yeah, thats the start

molten solar
#

(Why not just use a prehook?)

violet meadow
#

Because its there ๐Ÿ˜„

#

and also probably doesn't cut it upon rereading. Need to check for incoming typoe

molten solar
#

Why not just look at the update in the preUpdateActor hook, and if it would not set hp to 0 or lower, remove it from the update?

#

(and do nothing if the actor does not have the Minion trait)

violet meadow
#

The macro will be running in the preUpdateActor call anyways, so you will need to dig through the available data

#

But it saves you from some filtering at least and the need to actually create the Hook (if it works as intended) ๐Ÿคท

acoustic jasper
#

hmm can't find flags.dae.onUpdateSource in DAE readme

acoustic jasper
#

ok I see it - thx

vast bane
#

you were suppose to make a second world macro that was execute as GM, didn't I give that to you as an export so that shouldn't be an issue unless you don't have advanced macros.

scarlet gale
#

Is the world macro set to players having observer permission?

violet meadow
# acoustic jasper ok I see it - thx

You will need to create the feature with the flags.dae.onUpdateSource | CUSTOM | Label, ItemMacro, system.attributes.hp.value and ROLL the item once.

Then the effect will be created on the source and during an HP update, you can find what you need.
In the damageDetail you can check for damageType and make sure it is not types you dont want.

These are all available as args[args.length-1] (or args.at(-1) ๐Ÿ˜ )

acoustic jasper
#

ok i think I get it - I'll try to tinker with it tommorow

vast bane
#

but hisissue was actually that he never gave players the setting to use mtb

violet meadow
vast bane
#

in the original form

#

once you made it a two macro solution it worked for me perfectly

violet meadow
#

Yeah, they are using the one macro version after selecting the option in MTB, that's why I was asking you.
But hey, if it works ๐Ÿคท

vast bane
#

literally, two items

digital lagoon
#

@abilities.str.mod Does not seem to work. I do not see any changes in the docs. Am I just crazy?

vast bane
#

the item that was a feature had the gm args macro in it lol

digital lagoon
#

in a damage formula

vast bane
#

on an item? that seems to core to be midi lol

molten solar
#

Yep. Core.

vast bane
#

can you show us it with a snippet?

digital lagoon
#

sizeRoll(1, 8, @size, 0) + @abilities.str.mod[Strength] = 1d8+0 for a 12 strength

molten solar
#

... what is that?

vast bane
#

well thats not wise to use in midi

#

this is like the back of a cereal box, find all the bad things

digital lagoon
#

OOPs -- wrong forum

molten solar
#

What... what is a sizeRoll

digital lagoon
#

How did I get here?

molten solar
#

I am panicking. What is a sizeRoll?!

vast bane
#

pf2e maybe?

violet meadow
vast bane
#

We welcome all, blessed be the way of tposney

violet meadow
molten solar
#

Ah. pf1e

vast bane
#

but also, sizeroll aside, its naughty to do a non damage flavor in damage formulas in midi qol

violet meadow
#

ah ๐Ÿ˜ฆ
I have eveything else off ๐Ÿ˜„

molten solar
#

Are we having a contest of whose is smaller?

vast bane
#

I have other systems on cause my side project is converting battletech to a d20 system to work inside dnd5e so I need to ask around

#

I just don't know how I'm gonna be able to do multiple bars for mechs in dnd5e

#

cause in that game each part of a mech has hps

short aurora
#

Bar Brawl and make each part an item with uses on it for "health"?

#

(if you need to see them easily)

scarlet gale
violet meadow
vast bane
vast bane
violet meadow
#

nobody can resist a moto moto

vast bane
#

I think a few might have immunity to it at this point

#

but isn't the point of why you don't, because it will pierce immunities?

#

also, atleast in v9, it breaks if you put two flavors back to back

#

no roll no error

violet meadow
#

yeah it will probably break it, but if you add it in a world script, then someone could resist moto moto

molten solar
vast bane
#

I know custom conditions are or wrere, well are in v9, likely fixable in v10

short aurora
#

Not as far as I know, seems to respect them fine

vast bane
#

cause I had hoped I could create a uniformed stat drain immunity ability but nope, monsters can still stat drain

violet meadow
vast bane
#

oh hey, idea

#

if they are immune to a condition called say Stat Drain. Put a blank Stat Drain on them that doesn't stack permenantly? Right?

#

That...seems to simple, but why wouldn't that work lol?

violet meadow
#

Anyway, there seems to be an issue with custom resistances, but won't test it now anymore and it might be user error.
Got to prep a bit for the weekend session and go to sleep. ๐Ÿ‘‹
Gith invade Forgotten Realms and next step a bit of spelljammer

vast bane
#

yeah I need to scrub my session for tomorrow of the mess from last week but most my prep is all set cause I overprep anyway

vast bane
#

Anyone know why my monks token bar initiative requests are no longer normal? It fast forwards and... I dunno even what the hell this is:

molten solar
#

You got tiebreakers on?

vast bane
#

yeah but the macro is this: game.MonksTokenBar.requestRoll([],{request:'misc:init', silent:false, fastForward:false, rollMode:'roll'}) Its fast forwarding even though this is set to false AND it even does it with only MTB enabled, plus even when midi is on, I don't fast forward.

violet meadow
#

Also @vast bane sanity check cause I think the TokenBar shove macro works as one, without the execute as GM part.

Do you have both selected?!

vast bane
#

my macro failed long ago cause the player did not have permissions to apply an effect on an unowned token, thats why you remade it, so the gm had the args

#

the monks roll was always functional, it was the dfreds line that failed

violet meadow
vast bane
#

are you sure that guy was not using the two item method? the feature I gave him had the one line args in the item macro, so he was probably always using it lol

#

and never knew he had it

violet meadow
#

No idea. Just checked, seems fine and that's me done!

#

๐Ÿ‘‹

vast bane
#

k

#

are you on v9 when checking?

violet meadow
#

no v10 anymore

#

might create a v9 instance for checks, but... ๐Ÿ˜ฉ

vast bane
#

I can't figure out what has changed that would cause MTB's intiatives to all fast forward this is so annoying

violet meadow
vast bane
violet meadow
#

fast forward ๐Ÿคท

vast bane
#

yeah thats the problem for me, I have fast forward off with everything, and its fast forwarding that roll, even when just mtb is enabled, its JUST initiative that fast forwards

#

it never did this before cause I have a player with an advantage reminder for intiiative rolls

#

its also not respecting overrides in core or in midi, I can't hold alt or ctrl down to change the roll

#

something is screwy with my server, I logged in a player and requested init from them and its refusing to resolve:

molten solar
#

I'm getting deja vu.

#

All (unrelated) modules off?

vast bane
#

yes, this is just MTB, so no world scripts

#

I'm doing a full reboot of the local machine now to see if that fixes it

molten solar
#

Have you considered just deleting everything and reinstalling

vast bane
#

the old issue was core, not modules

vast bane
#

Its a v9/v10 cache issue another reason not to fiddle with v10 I guess

molten solar
#

That's not a thing. ๐Ÿ‘

lost estuary
stone forge
#

I'm guessing this is Midi related - Is there an activation condition kind of thing I can set so that a weapon crits on a 19 if the target is undead?

median path
# stone forge I'm guessing this is Midi related - Is there an activation condition kind of thi...

not by default - pretty sure you'll have to rely on macros to implement this in a automated fashion. The divine smite might macro is likely a good starting point (in midi sample items). Your best bet without using macros is to manually add the increased crit range effect to character (flags.dnd5e.weaponCriticalThreshold) when fighting undead (for example - by having two versions of the weapon )

stone forge
#

Ah I see, yeah that second option is a useful one for a non-coder like me

#

Cheers

vast bane
#

I'd check to see if theres a champion feature in midi srd for it

covert mason
#

While wearing this breastplate, you can use an action on your turn to channel the armor's magic and cause it emit a flash of blinding, radiant light. All other creatures within 10 feet of you are forced to make a DC 14 Constitution saving throw when you do. On a failure, a creature is blinded until the end of its next turn. Undead creatures have disadvantage on the saving throw, and take 2d8 radiant damage on a failure. Once you use this feature, you can't use it again until the following dawn.

Is there a way via ItemMacro I can detect whether or not the target of the saving throw is undead, and thus impose the disadvantage and extra radiant damage upon them?

latent spade
#

if you apply damage to each separately with DamageOnlyWorkflow i have an idea how it could work, but that is highly inefficient i guess

#

pretty sure the Midi Big Brains here have a better idea ๐Ÿ˜„

vast bane
#

I'm a tiny brain but I have to believe there are examples in midi srd or sample items for this stuff

#

or similar things

coarse mesa
#

No help sorry but I do love the idea of skeletons stumbling around blinded

covert mason
#

I did manage to find this from a Sunblade. Perhaps I could cannibalize this code somehow.

if (!["mwak"].includes(args[0].item.data.actionType)) return {}; // weapon attack
if (args[0].hitTargets.length < 1) return {};
actor = await fromUuid(args[0].actorUuid);
let target = await fromUuid(args[0].hitTargetUuids[0]);
if (!actor || !target) return {};
let PC = target.actor.data.data.details?.race ?? null
let npc = target.actor.data.data.details.type?.value ?? null
const isType = ["undead"].includes(PC ? PC : npc || "");
if (!isType) return {};
const diceMult = args[0].isCritical ? '1d8 + ': '1d';
const damageRoll = await (new Roll(`${diceMult}8`)).roll();
new MidiQOL.DamageOnlyWorkflow(actor, token, damageRoll.total,"Radiant", [target], damageRoll, {flavor: "Extra damage against undead (Radiant)", damageList: args[0].damageList, itemCardId: args[0].itemCardId});
 // if (game.dice3d) await game.dice3d.showForRoll(damageRoll);```
#

Though that's for melee weapon attacks, not saves.

molten solar
median path
#

I don't know how to give undead disadvantage - but I have something that only deals damage to undead that failed the save

#
if (!["save"].includes(args[0].item.data.actionType)) return {};  
actor = await fromUuid(args[0].actorUuid); 
if(!actor) return {};
 
for(let i=0;i < args[0].failedSaveUuids.length;i++)
{
let target = await fromUuid(args[0].failedSaveUuids[i]);
let PC = target.actor.data.data.details?.race ?? null;
let npc = target.actor.data.data.details.type?.value ?? null;
let isUndead = ["undead"].includes(PC ? PC : npc || "");
if (isUndead)
{
const damageRoll = await (new Roll(`2d8`)).roll();
new MidiQOL.DamageOnlyWorkflow(actor, token, damageRoll.total,"Radiant", [target], damageRoll, {flavor: "Extra damage against undead (Radiant)", damageList: args[0].damageList, itemCardId: args[0].itemCardId});
}
}
median path
undone sorrel
#

If you're using dae you can have the macro apply an effect that gives disadvantage right before the save happens with a special duration of isSave

undone sorrel
vast bane
molten solar
vast bane
#

also I learned more from picking apart midi srd/sample items than the readme

molten solar
#

it is as shareable as any other embedded document because it is just flags embedded in documents

#

and it has a UI and bonuses can be edited as much as you like

#

There is nothing to 'learn', it's flooded with tooltips and descriptions

vast bane
#

Well if babonus can do what they want, set it up for them and share the item?

river urchin
#

Hi! if you are available, i'm trying to work out how to set vortex warp. I set the item macro but i don't know how to proceed or configure the rest (and I'd also like auto fail friendly), could you help me please?

vast bane
#

have it grant a temporary use item that is a misty step clone

#

would make automated animations simpler too

river urchin
vast bane
river urchin
#

step 1, i guess

vast bane
#

what was step 1?

river urchin
vast bane
#

Step 1 should be creating the temporary item in the sidebar that is a clone of misty step as a feature instead of a spell

river urchin
#

it just created a temporary effect on the targed that did nothing

vast bane
#

that key is definitely not right

#

wait I dunno, I'm in v9 mode today, does the drag and drop really not do a real link?

#

did you literally drag the item from the side bar onto that effect value field, or did you click the uuid button?

#

but thats not step 1

#

step 1 is making the misty step clone as a feature instead of a spell

#

and that is very easy, make a feature called Misty Step with Automated Animations installed

#

put it in the sidebar(though you really should put it in a compendium of createitem stuff). drag the feature onto the above effect value window(clear that bogus one out)

river urchin
vast bane
#

then that is what you were suppose to do

#

it looks like you did a uuid?

river urchin
#

i tried both ways

vast bane
#

ok whats the item?

#

cause you can very easily just let automated animations handle it if you have that installed, by making a blank ass feature called "Misty Step"

river urchin
#

now the target just has the effect

vast bane
#

what is the item you are putting in the effect value

#

you are on like step 20 and haven't resolved step 1 with me yet

river urchin
vast bane
#

ok, thats ok cause its probably tposney's version

#

personally I would not use a spell though, cause the other dude won't have spell slots and the resource popout is pointless

#

but lets get proof of concept handled

#

show me the effect vaalue of that effect in the image you just posted on the other actor

#

edit that effect, show me effect tab

river urchin
#

it has no item macro or anything, i imported it from somewhere i don't remember, but it just works, because it targets a space or something like that

vast bane
#

Step 1: Make Misty Step or find an Automated Misty Step
Step 2: Make an effect on vortex warp that uses createitem and drag step 1 to the effect value field(do not just plug in a uuid thats wrong DRAG AND DROP)
Step 3: Confirm the actor you are casting the spell on does not have vortext warp on them still from previous failures as affects do not stack
Step 4: With an actor target who does not have a vortex warp effect on them, target them and cast the spell on them and auto fail it.
Step 5: If Step 1 was a spell, find the spell on the new actor, if it is a feature, find the feature and roll it.

river urchin
vast bane
#

click details of this please

#

and show me the effect value

#

in the effect tab

#

I'm pretty sure you are screwing up step 2 above

#

showing the effect value of the casted spell on the target will confirm this

river urchin
#

that's step 2

#

i imported a new misty step because the one before was modified

vast bane
#

that actor should have a misty step in their spellbook tab now

#

ok imported sounds really bad, thats probably the cause of your problems

#

you already have atleast 1 perfectly automated misty step in midi sample items

river urchin
#

oh, true, it has it

vast bane
vast bane
#

thats ok, automated animations is a better method

river urchin
#

this misty step works perfectly

#

it does its animation and everything

#

it doesn't have an item macro

vast bane
#

just create a generic ass self/self feature called Misty Step, pop it in a compendium somewhere so it doesn't get deleted and then drag it to the sheet(probably give it a fancy icon)

#

actually call it misty step2 or Vortex Warp2

#

then clone the automatic recognitition entry for misty step and rename the clone to that

#

cause I assume vortex warp has a different range finder than misty step

river urchin
vast bane
river urchin
#

but that misty step works

vast bane
#

100% of your misty step is handled by automated animations, its the only animation with automation in it in aa

#

You could create a loot item called Misty Step and it would work ๐Ÿ˜‰

river urchin
vast bane
#

the point of self/self in the fake misty step, is so that the user doesn't need a target to cast the spell

vast bane
#

module settings>automated animations>auto recog button>presets tab>misty step

#

the ui looks different in v10 for aa but I'm sure the buttons there somewhere

#

Its also worth pointing out that a macro guru could probably do this with an item macro much easier and without the added step of firing a button on the other actor

#

this is just how I'd do it without bothering folks to write macros

river urchin
#

found it, done that

vast bane
#

what sthe new vortex warp entry caled

#

cause the name of your temp item needs to match it perfectly

#

also when you duplicate it, there should be a pretty obvious setting for the range

#

change the duplicated new auto recog to whatever vortex warp is cool with

river urchin
#

changed that to 90

#

(its equivalent in v10, the ui is a bit different)

vast bane
#

k now make a feature called that item, make sure the feature is set to 0 action or 1 special, and then set its target/range to self/self

#

probably give it vortex warps icon

river urchin
#

issue is that vortex warp is 90 ft from the caster, not the creature

vast bane
#

then store it somewhere that wont get it deleted by accident like a compendium

river urchin
#

(but let's ignore that by now)

vast bane
#

and once its in the stored location, drag it to the effecdt value where misty step was dragged

#

I don't think that range finder issue matters

#

its too niche to matter when it would

river urchin
#

yup, now it works! thanks!

vast bane
#

though I might suggest setting it to 180 instead of 90 then since the range isn't right anway, that way the target can go the full radius of 180 around the caster

#

thats the genius of this idea though, you don't have to redo it all, just edit the auto animation entry

river urchin
#

but it still has its issues

vast bane
#

oh wait that might be bad...we need a smart person

river urchin
#

idk if those are solved by that macro

vast bane
#

I'll ask in dnd5e

#

there is a chance that a 180 aura would fail to animate if the maps dimensions are smaller than 180, so you may have to keep it down to 90

#

its a v9 limitation not sure if its still in v10

celest bluff
#

you should resize it based on canvas.scene.data.grid or canvas.scene.grid

vast bane
#

I don't think we have access to what automated animations is doing with the preset teleport magic

celest bluff
#

I compare it then add a -3 if it's too large

river urchin
#

it's not having issues though

vast bane
#

yeah which is fine, v9 can't even createitem so it won't be an issue if anyone searches and follows you with vortex warp in v9

river urchin
#

I'm just hoping that the macro LukasPrism found solves all of this. If not, your version is good enough

vast bane
#

you also want that vortex warp ae to end after like 1 turn or round or 6 seconds

stiff basin
#

Nevermind - the token I was targeting no longer had an actor in the world...

vast bane
river urchin
vast bane
#

so the ae ends when it uses the feature?

#

oh you know what, you could have also made it an expendable lol and destroy on consume

river urchin
hot flower
#

what would be the activation condition for this? If the target takes any of the cold damage, the target must succeed on a DC 15 Constitution saving throw or have disadvantage on its attack rolls until the end of its next turn.

#

currently set up like this:

#

maybe if target doesn't have cold immunity?

coarse ridge
#

Is Ready Set Roll wholly incompatible with Midi or is there some settings I can disable with Midi to make it work well with each other?

vast sierra
#

none of the other rolling modules work with Midi.. pick one and go with it ๐Ÿ˜‰

#

If you want RSR , use it, and not Midi.. if you want automation, use Midi (and nothing else)

celest bluff
coarse ridge
#

That's a shame. So many non-rolling things that work well with Midi(Prompting Rolls with Monks, Requiring Targets, Showing Hit or miss among others). But it handles rolling so awkwardly/badly when compared to BR/RSR.

hot flower
#

well, i think it's geared toward those creatures with cold immunity. They'll take the slashing damage, but not the cold damage.

#

and if they don't take the cold damage, they don't have to make the save

celest bluff
#

it provides both damage types

hot flower
#

right.

celest bluff
#

so if it's 0 then just don't have it goto the next stage

hot flower
#

but only for the cold damage

#

not the slashing damage

vast sierra
hot flower
#

so, just wondering how to structure it so it if there is no cold damage, no saving throw ... etc.

celest bluff
#

you'd just write a loop which checks each target's damageList

#

can do it in either in a for or reduce

hot flower
#

hm.

#

also, for the midi regeneration item, how would you halt it for that turn if the creature has, say, taken fire damage?

celest bluff
#

guess what you could do... is have DAE create the regen effect at the end of turn. Have the effect have a times up ending condition if taking fire damage

#

so then it removes the effect when taking damage, then end of the turn they recreate it

#

you'll need to make sure it checks if it already exists prior to applying it, so you don't end up with dupes

hot flower
#

Ah I just tested it. It queries at tye start of the turn. So if he took fire damage Iโ€™ll just say no thanks to the regen.

celest bluff
#

5e helpers adds the dialog

coarse mesa
#

@river urchin How'd you get on? My setup is very simple, most important thing is just calling the ItemMacro at the bottom. I also added the auto fail friendly at the bottom of the decription (you don't need the brackets)

#

This is the item macro I'm using (if you don't have JB2A patreon you'll need to swap some of the file paths to anims you do have) #dnd5e message

#

Actually, does anyone know if there's a way you can put a scaling formula in the range? ๐Ÿค” I'm guessing not

#

I'm fine with doing that manually with Rangefinder anyway

acoustic jasper
#

It it possible to trigger a macro via Midi-Qol (dae) when an actor with a specific effect is damaged?

#

I know I can use flags.dae.onUpdateTarget but the problem is - I need this as a passive skill, and for this flag to work I would need to apply an effect every time manually

celest bluff
#

Secondary effect has the special end. The primary effect detect when the secondary effect ends and can remake it

acoustic jasper
#

great - thx

#

I've done it so the first effect end when the token is added to a combat - and when that effect end it fires the abillity that adds the second effect

acoustic jasper
#

ok second question - my macro fires on "flags.dae.onUpdateTarget" - how can I make a condition so that macro do something when the actor is hit by an attack or fails a saving throw?

vast bane
celest bluff
acoustic jasper
#

I tried that but couldn't get midi-qol.damageRollComplete" to work

#

so the first condition (being damaged) wasn't met

celest bluff
#

You use that or go by chat

molten solar
#

(This is a PSA that if you have to 'go by chat' in v10, you are doing it wrong.)

scarlet gale
#

Is this for a specific spell or feature that isn't homebrew?

coarse mesa
#

I'm curious if you could fool a workflow into thinking you're in a different position, for range and cover purposes? Back on the Echo wagon again... I'm using Crymic's suggestion for the character to have a separate rangeless weapon for the Echo but there's also cover to consider. If there was a way for midi to think your character was standing where the Echo is for that attack that would be neat

molten solar
#

Standard procedure is to look at whatever hooks are firing, and seeing what you can change about the data passed through. Maybe that includes coordinates. Maybe not.

acoustic jasper
scarlet gale
#

ah, still working on that

acoustic jasper
#

yeah - no luck so far

scarlet gale
#

IIRC midi-qol flanking is checked whenever you change your target

molten solar
#

Did the updateActor hooks approach not work?
in regards to Minions.

scarlet gale
#

In regards to the echo message

acoustic jasper
molten solar
#

No, a hook

#

(I don't know what that flag is)

coarse mesa
# scarlet gale In regards to the echo message

Interesting, although we don't use flanking. I probably could teleport the player to the echo space before the attack roll and port them back after lol. Just wondering if there would be a less drastic approach, might have to ask Tim

acoustic jasper
#

ok then I have no idea how to do that

molten solar
acoustic jasper
#

yes

molten solar
#

Damage means an actor's hp is updated.

#

This triggers a preUpdateActor and updateActor hook

#

The pre hook triggers before any updates are applied

#

You can use that to read the target's current hit points, as well as see what their future hit points will be (because the object used to update the actor is passed to the hook as well)

#

You can use this to determine if the actor should be straight-up killed - that's what you want, right?

acoustic jasper
#

ok then I will have te trigger - but how then check if the target failed a saving throw or was hit by an attack?

scarlet gale
acoustic jasper
#

because if his hp was modified in any other way I don't want him to die

molten solar
#

The hooks also pass an object of options. Depending on your modules, it may be you can pass a tag or something along (or maybe there already is one)

#

Slap this in the console:

Hooks.on("preUpdateActor", (...T) => console.log("PREUPDATE:", T));
Hooks.on("updateActor", (...T) => console.log("UPDATE:", T));
#

then do whatever it is you like to do to deal damage

#

It will show you what is passed to the hooks and what you have to work with

coarse mesa
acoustic jasper
#

ok reading it now

scarlet gale
#

Could just have the echo copy all the effects during a midi pre attack hook

coarse mesa
molten solar
#

It is. 100% is

#

it's kinda jank and I don't recommend it but can you just locally overwrite the coordinates during an attack?

scarlet gale
#

What do spell slots have to do with the echo?

coarse mesa
coarse mesa
scarlet gale
#

Oh hmm

molten solar
#

Should test that first. If midi prevents you from making an attack with a melee weapon while you are more than 5 feet away from the target, try placing the token within 5 feet, put _token.document.x = someRidicilousValue in the console and see what happens

scarlet gale
#

You can turn off range checking

molten solar
#

or do that

#

But the idea is you do want range checking, but from a different position, right?

coarse mesa
#

Yeah thought about that too, but this player is the one who needs range checking the most

molten solar
#

Try the above to see if Midi can be fooled then

coarse mesa
#

Ok hang on

scarlet gale
#

Sounds dumb still, but syncing the effects between two tokens can't be that hard

molten solar
#

data.x if on v9

scarlet gale
#

Especially if you only check for differences

coarse mesa
#

It did get fooled, thought there was a wall in the way (there is one miles away)

dark canopy
#

and what about just summoning a copy of yourself with a modified token to indicate the echo?

coarse mesa
scarlet gale
#

Would require resummoning it

coarse mesa
#

I think Zhell might be onto something... if I can run an itemMacro that spoofs my position then we're golden

scarlet gale
#

Thankfully my echo knight player hasn't multiclassed yet

molten solar
#

in short.

dark canopy
coarse mesa
# dark canopy i dont follow

Oh because they're both linked, they'd have slot parity... but there would be other consequences (it would get hit by auras, miss out on spells, get targeted by things it shouldn't etc)

scarlet gale
#

That might be the easiest

molten solar
#

Can confirm. Not even babonus likes linked actors with multiple tokens on the scene.

coarse mesa
#

not even babonus

molten solar
#

There's zero way to know which token you are rolling from ๐Ÿคท

#

cus each token links to the same sheet when the actor is linked

scarlet gale
#

If 2 auras from the same linked token overlap does it make an infinite loop?

molten solar
#

no

dark canopy
coarse mesa
#

if I can get the echo's position (by it's name), tell midi that's where my paladin is for that attack... then job done.... I just don't know how to write that

dark canopy
#

takes a village

molten solar
#

But for linked as well?

dark canopy
#

si

celest bluff
#

Dunno if this changed in v10, didn't check for it

molten solar
#

You should need much fewer flags in chat

coarse mesa
acoustic jasper
#

well I was able to make a hook that chceks if damage was done, but I don't think it's possible to check if it was a succesful save or a hit without chat

molten solar
molten solar
coarse mesa
molten solar
#

You tried to move it?

#

This was just a test. You would (should) put it back at its old coordinates afterwards.

acoustic jasper
molten solar
#

Ah too bad. Maybe Midi has its own hooks

#

CONFIG.debug.hooks = true and you'll see all of them as they trigger

coarse mesa
molten solar
#

lul

#

If you change the coordinates back and forth fast enough maybe it's no issue

coarse mesa
#

I would likely need a Before Attack Roll onUse macro, that somehow caches the position and an After Attack Roll one that restores original position

molten solar
#

Store and set new position:

token.document._oldx = token.document.x;
token.document._oldy = token.document.y;
token.document.x = newX;
token.document.y = newY;
#

then just overwrite x and y with _oldx etc

#

(yes you can store all you like directly on the docs)

acoustic jasper
scarlet gale
#

The workflow has the failed saves

#

As long as you're working late enough.

molten solar
scarlet gale
#

Post check saves hook iirc

coarse mesa
#

I'm gonna need to use all my macro copy/paste skills to make this work rubs hands together

molten solar
molten solar
coarse mesa
modern badger
#

how can I set up a staggered attack with MidiQOL?

#

aka something like Ice Knife

#

attack roll, damage, then save, then damage

coarse mesa
#

This is seriously sweet and so simple

scarlet gale
modern badger
#

how do I modify this .3.

#

I see the damage parts

#

but I need it to be an AOE with a placed template

coarse mesa
molten solar
#

Well. That was easy.

#

My job here is done.

scarlet gale
#

I'll have to copy that for my echo knight player

coarse mesa
coarse mesa
scarlet gale
#

Drop-down box maybe

coarse mesa
scarlet gale
#

Grab the list of equipped weapons and if there is only one don't even prompt

molten solar
molten solar
coarse mesa
#

I should test that

molten solar
#

It's a local change, you want to make sure it works on their client

coarse mesa
#

I believe midi does it all on the client, but yes will test

molten solar
#

Well it sure doesn't do damage application on the client ๐Ÿ™‚

scarlet gale
#

Midi processes the attack locally then has a GM handle damage

molten solar
#

Perfect. ๐Ÿ‘Œ

coarse mesa
scarlet gale
#

Hooks.callAll("midi-qol.damageRollComplete", workflow) - called after damage application is complete. The targets may not have their hit points updated when this call is made since the hit point update is farmed off to a gm client

That's the exact wording

#

I think the client does the math and the GM just applies it

scarlet gale
#

Might just be easier to have it have another item or feature if the template needs to be manually placed after the attack

coarse mesa
scarlet gale
#

Could you copy it instead of "moving" it?

#

Might not be worth the effort

acoustic jasper
violet meadow
#

If the attack is a hit atleast

acoustic jasper
#

yeah I figured that out - sadly it didn't - all other hooks are working

violet meadow
#

Oh shit misread. Though was midi roll complete

acoustic jasper
#

I'm trying something like if (workflow, "hitTargets", Set(1)) but It's a longshot

coarse mesa
# scarlet gale Might not be worth the effort

OK this feels a bit hacky, but it works ๐Ÿคทโ€โ™‚๏ธ

let target = canvas.scene.tokens.getName("Vestige of Vengeance").object;

let oldx = token.document.x;
let oldy = token.document.y;

token.document.x = target.document.x;
token.document.y = target.document.y;

dnd5e.documents.macro.rollItem("Halberd +2");

await new Promise((resolve) => setTimeout(resolve, 1000));

token.document.x = oldx;
token.document.y = oldy;
#

(enough time for midi to bring up the attack dialog is all you need)

scarlet gale
#

Can you await the full item roll?

coarse mesa
#

I don't know how to do async stuff... I tried just putting await at the front, that didn't work

scarlet gale
#

Might need to use the midi method to roll the item

coarse mesa
#

I couldn't get it to work as an itemMacro but it would prob be better if it was

molten solar
#

You want the coords reset as soon as the attack dialog is rendered?

coarse mesa
#

yeah

#

actually, no sorry

#

they should reset regardless, because midi might not allow an attack

#

this way he's going home whether the dialog comes up or a range warning banner

molten solar
#

and if no attack is allowed, what is returned?

#

if anything?

#

does it just hang?

coarse mesa
#

let me test... midi does pop a banner to let you know you're not in range, will see what happens with this macro

molten solar
#

I doubt anything will be returned by the macro function

#

cus it's not meant to

coarse mesa
molten solar
#

It's not really a thing you should ever use in a regular script macro

coarse mesa
#

purple is me moving to the echo and back again

molten solar
#

That's a log, not a return value

coarse mesa
#

I'm just seeing what's going on lol... idk how to do what you're asking

#

the good news is, he's moving back after the attack fails

modern badger
river urchin
# coarse mesa <@270270714706264064> How'd you get on? My setup is very simple, most important ...

motto motto helped me with a workaround, but i'll try this one now, thanks!

I don't have jb2a patreon, how does the path to file work? If this is the file i want modules/JB2A_DnD5e/Library/Generic/Magic_Signs/Runes/EvocationRuneIntro_01_Regular_Red_400x400.webm after comparing with the paths you have, what i shoud write is this JB2A_DnD5e.Library.Generic.Magic_Signs.Runes.EvocationRuneIntro_01_Regular_Red_400x400 ? (essentially starting by jb2a's folder and changing / to . and excluding .webm?

river urchin
#

nope, it doesn't work that way

#

(i have sequencer installed, but i guess it's trying to search on sequencer's folders instead of jb2a's?)

kind cape
#

jb2a.magic_signs.rune.evocation.intro.red

#

Their asset browser is very easy to use

vast bane
#

you want the right hand sequencer code in the bottom right of this sites previews for most stuff, the only reason you would use a filepath link is if you are trying to use a custom path in automated animations UI. Most macros should want the right hand versions.

river urchin
#

Thanks

river urchin
#

now it works like a charm @coarse mesa ! Though i'd like to see the range of the teleport as a ring around the target token, as if was casting misty step (which has like a circle around to tell you where you can click)

river urchin
#

Ok so now i'm trying to emulate this effect
Disruption Field. Waves of energy ripple in a 10-foot sphere centered on you. Every creature other than you that starts its turn in that area, or that moves into that area for the first time on a turn, takes 1d8 force damage.

I obviously started by copying spirit guardians and modifying it, but i'm doing something wrong

#

(the first console image is for my feature and the other one is for spirit guardians, in red i mark the part i changed)

#

It's failing to deal the damage on entry

vast bane
#

theres more to the tabs than what you showed, make sure the other tabs are right, I dunno about v10 spirit guardians, but v9 was an active aura

river urchin
#

yep, it's also an aura, all of what i don't show are the same

#

i'm feeling i'm messing with midi's workflow by leaping over the saving throw step (edit: nope, tried making it through a saving throw but it still fails to deal damage on entry)

#

(well, the aura is 10 ft instead of 15, and affects all instead of enemies)

covert mason
#

The sneak attack in the sample items. Is there a way I can modify it to consider both NPC Challenge Ratings and PC rogue levels? I'd like to use this on NPC rogues, too.

const version = "0.9.52"
try {
    if (!["mwak","rwak"].includes(args[0].itemData.data.actionType)) return {}; // weapon attack
    if (args[0].itemData.data.actionType === "mwak" && !args[0].itemData.data.properties?.fin) 
      return {}; // ranged or finesse
    if (args[0].hitTargets.length < 1) return {};
    token = canvas.tokens.get(args[0].tokenId);
    actor = token.actor;
    if (!actor || !token || args[0].hitTargets.length < 1) return {};
    const rogueLevels = actor.getRollData().classes.rogue?.levels;
    if (!rogueLevels) {
      MidiQOL.warn("Sneak Attack Damage: Trying to do sneak attack and not a rogue");
      return {}; // rogue only
    }
    let target = canvas.tokens.get(args[0].hitTargets[0].id ?? args[0].hitTargers[0]._id);
    if (!target) MidiQOL.error("Sneak attack macro failed");
    
    if (game.combat) {
      const combatTime = `${game.combat.id}-${game.combat.round + game.combat.turn /100}`;
      const lastTime = actor.getFlag("midi-qol", "sneakAttackTime");
      if (combatTime === lastTime) {
       MidiQOL.warn("Sneak Attack Damage: Already done a sneak attack this turn");
       return {};
      }
    }
    let foundEnemy = true;
    let isSneak = args[0].advantage;
    
    if (!isSneak) {
      foundEnemy = false;
      let nearbyEnemy = canvas.tokens.placeables.filter(t => {
        let nearby = (t.actor &&
             t.actor?.id !== args[0].actor._id && // not me
             t.id !== target.id && // not the target
             t.actor?.data.data.attributes?.hp?.value > 0 && // not incapacitated
             t.data.disposition !== target.data.disposition && // not an ally
             MidiQOL.getDistance(t, target, false) <= 5 // close to the target
         );
        foundEnemy = foundEnemy || (nearby && t.data.disposition === -target.data.disposition)
        return nearby;
      });
      isSneak = nearbyEnemy.length > 0;
    }
    if (!isSneak) {
      MidiQOL.warn("Sneak Attack Damage: No advantage/ally next to target");
      return {};
    }
    let useSneak = getProperty(actor.data, "flags.dae.autoSneak");
    if (!useSneak) {
        let dialog = new Promise((resolve, reject) => {
          new Dialog({
          // localize this text
          title: "Conditional Damage",
          content: `<p>Use Sneak attack?</p>`+(!foundEnemy ? "<p>Only Nuetral creatures nearby</p>" : ""),
          buttons: {
              one: {
                  icon: '<i class="fas fa-check"></i>',
                  label: "Confirm",
                  callback: () => resolve(true)
              },
              two: {
                  icon: '<i class="fas fa-times"></i>',
                  label: "Cancel",
                  callback: () => {resolve(false)}
              }
          },
          default: "two"
          }).render(true);
        });
        useSneak = await dialog;
    }
    if (!useSneak) return {}
    const diceMult = args[0].isCritical ? 2: 1;
    const baseDice = Math.ceil(rogueLevels/2);
    if (game.combat) {
      const combatTime = `${game.combat.id}-${game.combat.round + game.combat.turn /100}`;
      const lastTime = actor.getFlag("midi-qol", "sneakAttackTime");
      if (combatTime !== lastTime) {
         await actor.setFlag("midi-qol", "sneakAttackTime", combatTime)
      }
    }
    // How to check that we've already done one this turn?
    return {damageRoll: `${baseDice * diceMult}d6`, flavor: "Sneak Attack"};
} catch (err) {
    console.error(`${args[0].itemData.name} - Sneak Attack ${version}`, err);
}```
molten solar
#
const rogueLevels = actor.getRollData().classes.rogue?.levels ?? actor.getRollData().details.cr;
covert mason
molten solar
#

dunno.