#MidiQOL
1 messages · Page 26 of 1
The macro manually handles crit with the default rules, so would have to update that part of it
new CONFIG.Dice.DamageRoll
that gives you all the handling you need
psa: stop constructing dice rolls manually
You can either do that or hook in the dnd5e preDamageRoll and construct the roll update the damageParts there, as this will then apply crit rules automatically
wat
Seems highly overkill to use a hook here 😂
You pass the roll in the MidiQOL workflow and then knows what to do
This is more of a general note. There are things that can be done like so.
Check a post from tposney mentioning Wasp
i'd just update the item tbh
const diceMult = args[0].isCritical ? `${baseDice * baseDice + baseDice}`: 1;
const baseDice = Math.ceil(rogueLevels/2);
...
return {damageRoll: `${diceMult * baseDice}d6`, flavor: "Sneak Attack"};

I've very likely done this wrong, and there's probably an easier way to do this
But heyho, y'don't learn by not trying stuff!
Btw you are using baseDice, which is not yet defined, when defining diceMult.
With that being said, the formula is also wrong 😛
tried this with dndbeyond importer's Spirit guardians (which is quite similar, but still): I changed the fields removing anything mentioning saves (just as here), copying the rest of the configuration and i run into the same issue: damage at the start of the turn does apply, but not when entering the aura
Yeeeeeeah
Javascript is new to me.
Trying to big-brain this, but I can't into coding much goodly.
Hello, i'm having a problem when i enable midi qol , it remove info of ability when used in the chat idk where is option to show it again like normal if that make sense i want to see the top version while using midi qol https://i.imgur.com/AGlglJk.png
Something like this should work, but not tested:
const baseDice = Math.ceil(rogueLevels/2);
let formula = `${baseDice}d6`;
if(args[0].isCritical) {
formula = new CONFIG.Dice.DamageRoll(formula, {}, {critical:true})._formula;
}
...
return {damageRoll: formula, flavor: "Sneak Attack"};
(I don't think MIDI damage bonus supports returning pre-prepared damage rolls, hence extracting the formula)
Ayyy, works perfectly now!
Thank you so much
You need to change this setting in Midi-qol.
thanks
@latent quiver you can't use two different roller modules together, if you want effect transfers on rolls, you can't use ready set roll
you can try effect transferral, its likely not compatible with ready set roll, roll groups maybe definitely not midi
I must laugh at even the thought that ET an RG could be incompatible 😃
Flix and I, making incompatible modules? Pff!
bad wording I knew they do
I had something similar for planar warrior:
// Use same roll options as the one from the damageRoll
const rollOptions = macroData.damageRoll?.options ?? { critical: macroData.isCritical };
// Construct a DamageRoll to compute critical damage using the appropriate defined method and use the resulting formula
const damageBonusResult = new CONFIG.Dice.DamageRoll(
`@scale.horizon-walker.planar-warrior[${newDamageType}]`,
macroData.rollData,
rollOptions
);
return { damageRoll: damageBonusResult.formula, flavor: `${macroData.item.name} Damage` };
Hey there if you are around, is VAE supposed to pulsate when you hover over it?
I have Dfreds module disabled.
pulsate?
Yeah like throb, I have to be careful how I describe it.
Pulsate? Throb? Gyrate? 🤔
Sorry, just done a refresh and the gyrating has stopped.
and which of Dfreds modules do you mean?
That was a bit weird.
The one that basically does the same job, erm, Effects Panel
Why do you have both?
I have just discovered VAE and was comparing.
Sure. Just don't have them both enabled at the same time.
even though i have the attack and damage buttons, if i miss the attack i cannot click the damage one to deal it anyway
cause its already there
you have auto roll damage on
the 6 is the damage
if you are trying to auto apply damage, thats the chaser card, you must not have it on, or its right below where this snippet cuts off
yeah, i was trying to auto apply damage
i have auto apply damage on
is there a card below? if not you need to setup auto apply
nope
ok so you missed so it won't auto apply, click the checkmark right below that image
if it worked when you missed...it wouldn't be a very good setting would it lol
thats not auto apply bud
you do not have that on
unless thats the players view
there ya go
yes but hear me out
If i fail and still wanna treat it as if i had hit, clicking the "Damage" button doesn't make the blue thing below appear
thats not what that button is for
clicking the damage button when failing does nothing, it doesn't bring the check thingy
right click the 7 and you can apply damage to selected tokens
the damage button, is for doing a second attack/damage workflow
if you want to apply damage when missing, you have to do the core method
select the person who should be damaged, right click the damage number(7 above) and choose apply damage accordingly
you have one of the two mod settings to cards on, that ok...
in the main midi settings, not the workflow butt, outside in main midi, there is a drop down setting for adding damage buttons to the cards
if you use either of the two card overrides(merge and something else) then the only way to manually apply damage is by setting the buttons on in the main midi settings
hmm it's easier to just spamm the attack button till it hits xD
yeah, i think i have those overrides
no actually it'd be easier to click the damage button lol
mouse over the 7 and you will see the buttons
the dorp down setting is outside midi's workflow button in the main settings view
aaah
alright, thanks!
i still think i prefer the other way around, i prefer to reduce visual noise
also, i don't like it to be for selected tokens instead of for targeted
I'm of the opinion you don't throw the dice unless you are sure hehe, so a miss should be a miss and a hit is a hit. And those rare times they aren't, easily remedied in a core fashion
Is there a way to give an item uses based on character proficency?
item uses max field accepts that and attributes too I think
@merry ferry.attributes.prof ?
A-A accepts the database paths as well
@prof
in the custom field? I thought I had to do the module one
Nah, you can use both. It sends whatever to Sequencer just like you would a macro
k
A-A is just a UI for Sequencer really
Can someone please confirm they have the same behavior using the attached minimal implementation of the Aid spell? I just want to confirm that this "isn't just me".
Drag spell to actor. Target self.
1st casting: you SHOULD end up with 5 temp hp.
2nd casting (just re-cast the same spell on yourself w/o removing the effect of the original casting): you SHOULD end up with 5 temp hp...but I end up with 0.
If you have the same experience I do, that pattern of works/doesn't will repeat through more recastings.
could you post the macro being used?
It is embedded in the item I posted as an ItemMacro.
If you click the item macro button, at the top of the spell, it will open up the macro being used. Can copy that then, to here
Sorry. I wasn't trying to avoid posting it. I thought you guys felt the macro was missing. Here's what's embedded in the json I posted above.
// It is basically the minimal amount needed to recreate the problem.
const lastArg = args[args.length - 1];
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
const target = canvas.tokens.get(lastArg.tokenId)
let buf = (parseInt(args[1])-1) * 5;
if (args[0] === "on") {
await tactor.update({"system.attributes.hp.temp": buf})
} else {
await tactor.update({"system.attributes.hp.temp": 0})
}```
(I'm FVTT 10.288, dnd2.0.3, dae 10.0.11, midi 10.0.18. Those, plus socketlib and libWrapper, are the minimal recreation environment)
(FWIW: just looking for confirmation that it fails for others in the same way. I DO have a working version so don't need a solution...just confirmation that this most basic implementation SHOULD have worked as expected. If it fails for all, then I think there may be a low-level bug here.)
Ill let @dark canopy or one of the other coders confirm, but reading that ... it checks if has temp hps, if does not it adds 5, if it does, it sets to 0.. it's like a toggle.. but im not a coder, so let one of them confirm that 😛
await the updates
Crud. While what I posted is missing those, I DID use await before each update. Could I ask you to insert the awaits and try one more time to recreate the REAL test?
i dont use the modules involved here
(I have so many test versions floating around I grabbed the wrong one to post)
Got it. I'll repost and await (no pun intended) someone who can hopefully try in the target environment.
how about simply removing the portion that sets to 0?
Hmm. This is one of those cases where I'm scratching my head because everything I THOUGHT I tried wasn't working as expected...but when I add those awaits in the posted ItemMacro (which I'M SO CERTAIN I ALREADY TESTED)...it works. So it calls my entire process into question. head banging repeatedly on desk
Yeah that would be neat. Can maybe see how A-A is achieving that. We kinda need that for all ranged spells tbh. Someone should make a module for that 🙂
Can anyone explain how the Hunter's Mark sample item is supposed to work? I've cast it, and there's an active effect on the caster and the target, but the extra damage isn't being added.
Make an attack with the source of the Hunter's mark, against the marked target.
Nothing?
That's right, the attack proceeds as normal without the extra d6 to damage.
What version of Foundry and MidiQol are you on?
v9 build 280, midi 0.9.83.
Change the name of the feature to Hunter's Mark then
There is a note in the description of the imported item iirc
Ah yeah, I missed that; however, renaming it doesn't change what happens 😔
Recast the spell after
Yeah, I did.
Did you change it on the item in the sidebar?
Oh, do you think I need to, like, import it and rename it BEFORE adding to the character sheet?
Or the actor,s character sheet?
I just changed the name on the sheet, yeah.
Just to be safe, rename it on the sidebar and then add it again
Damn, still nothing :/
Are you auto rolling damage?
Nope.
Try with auto damage quickly to check if that is the reason.
In general it's better to just ask the question directly instead of asking if it's okay! Easier for someone passing by to read it and have an idea, than saying yes, replying etc etc.
If it's not relevant you might get redirected, but no harm there
That doesn't seem to have made any difference either :/ These are the settings I set to try:
I want to make an effect that last for 1d4 turns is this the correct way to do this? It seams is not working.
Have you tried with just 1d4?
I would try:
- 1d4
- 1d4 * 6 (Place spaces between expressions)
- 1d4 x 6
Hey everyone! One question... I'm trying to create a Feature Action that places a template and I would like that template to be removed next turn as it happens with the Fire Ball. I've checked the Fire Ball spell and it has nothing, no macros no effects... Nothing but it still adds an effect to the caster to delete the template. Why this happens? How can I replicate it?
Set the duration of the spell to "Instantaneous"
But it's not a spell, it's a Feature Action
Not sure its possible then 🤔
nothing works or I'm missing something
is that core foundry or is it a module? I can check the code
probably a module
which one? 🙂
is DAE
try "1d4 * 6"
nothing probably I found a bug 😟
so is Dynamic effects using Active Effects
Is this DAE? 🤔
Never used that field and now I am confused!
is DAE yes
It’s internal midi function, the addition of the template AE.
But you could replicate with an onUse macro to add an AE with a duration of end of turn or start of next turn, with the templateUuid as a dae deleteUuid flag.
Any luck? Got side tracked
I know nothing about Uuid 😟
That was a reply to another user 😅
What are you trying to do? An effect to expire after a randomly decided duration?
yes
I would use a small macro for that, updating the effect duration after creation.
I am not at my PC right now, but will be later and will take a look at that field
No, unfortunately :C I don't suppose there's any way to break point and debug a macro, is there? XD
Use debugger
I may need a bit more context, I'm not sure what that means XD
when you have time thanks
Just put that in the macro at points you need it to break point
It will pause execution and you can check in console sources tab
I've heard there may be a Mirror Image macro around here somewhere? 
#dnd5e message
I put it right at the top of the macro, and it doesn't seem to be hitting it at all 🤔
I just edi tthe description and put the only thing that ever matters at the top of it lol
<#macro-polo message>
Mirror image. Discord search can help too 😉 😛
Also the linked one was a reply to Moto 🙂
It didn't work for me, it also doesn't handle truesight/blindsight/tremorsense
Is there a way to re-roll specific roll values?
Lets say halfling lucky or great weapon master
This is midi, not ready set roll 😉
I think you mean great weapon fighting, and those are handled with roll expressions and special traits
Halfling Luck can be found here:
great weapon fighting is just a roll expression option built into foundry I forget the codes
Aye, I've tried that world script. I'm not sure if I've set it up correctly, and if it's just a standard macro you set up as Execute by GM, and then restart the server, or if I need to do something else with it. Casting the Mirror Image spell doesn't seem to do much
holy bigass icon
its often overlooked by new users 😉
(and veteran ones)
not my work, thats a zhell project lol
Oh are you v10?
I'm on v9. The reason I'm trying to automate all these spells is the lack of a v10 ASE that's keeping me on v9. Trying to make all these spells with macros instead of relying on ASE so I can finally make the move to v10
Gotcha, I haven’t used it.
Oh, so i would need to edit the weapons attack roll to include the roll expression?
damage*
I thought it was working. It was a commission too iirc
I don’t have a v9 instance, but I might take a look tomorrow 🤷
I could probably just bite the bullet and move to v10 
I'm not gonna till I see some midi srd esque content for it. why put in all the work for little change
There is no right or wrong way! It’s up to what you feel comfortable with and keeping in mind that development of modules will be v10 driven mostly
Thats what I did 😛
and macros. I hardly remember how to write v9 macros anymore
how to get here from a macro? So I can check "if" X in workflow then "Y"
args[0]?
On use MidiQOL Macro? If yes then you can access the workflow with ```js
const workflow = MidiQOL.Workflow.getWorkflow(args[0].uuid) // args[0].uuid being the used itemUuid
or just `this`
A previous workflow?
what are you trying to do?
Workflows are client specific
So you cannot "easily" get one from another client
still minion thing 😉 I have a world script that triggers when something finishes roll on a monster with "minion" skill
midi
If its a MidiQOL hook, you just define workflow in the function creation and reference it later, e.g. ```js
Hooks.on("midi-qol.updateActor", (workflow) => {
console.log(workflow)
})
got it
ok great I'm close - so one more thing - how to update token health via macro?
so I can change hp to 0
Yeah, so the macro just isn't being run; I found this on the midi gitlab page, but I can't find the "DamageBonusMacro" setting that it's talking about. Anyone know where that setting is?
await token.actor.update({"system.attributes.hp.value":0})
``` as a GM or a player for an owned actor (using the selected token or defined etc. You need to update the actor)
You need a flag on the DAE for the damageBonusMacro.
You are trying the Sneak Attack from MidiQOL samples?
Hunter's mark; but I specifically mean the bit that says "make sure that is enabled in the midi settings."
Ah yes.
In the effect that is transferred to actor on item equip, which is the 1st one with the downwards arrow indicating the Mode.
A couple of the options in that macro feature are not available in v9 fwiw, I had to scrap arcane deflection because the ac setting doesn't work in v9
oh wait my issue was with the optional.macros not that one
let target = workflow.targets.values().next().value;
if(!target.data.actorLink) {
let effects = target.data.actorData.effects;
let minion = effects.find(e => e.label ==="Minion")
if(minion) {
console.log("new", workflow);
console.log(workflow.attackRollCount,workflow.failedSaves.size ,workflow.saveResults?.length, workflow.damageTotal)
if (workflow.attackRollCount || (workflow.failedSaves.size && workflow.saveResults?.length && workflow.damageTotal > 0)) {
target.actor.update({"system.attributes.hp.value":0})
}
}
}
});``` finally - got the first part right (ignore consloe.logs 😛 )
now I need to do the second part
Someone asked if there is a central place to store/share midi-qol items that people want to contribute - which there is not, but I think that sounds like a good idea. First thought was to add a contributed compendium to midi-qol where such items will be included. I'm looking to gauge reaction to such an idea. I'd probably require some help vetting such items, depending on how many there are.
That would be gerat - I'll gladly contribute to such compendium
This could eventually replace Midi SRD?
Sounds like it's something that will help a lot of users
most of midi srd already works in v10, probably expand upon it rather than replace
Use that as a starting point yeah
I guess Midi SRD is the other option - but I'm not sure how much work kandashi is putting into it, or if he is accepting contributions.
MidiSRD needs some rework as MidiQOL has advanced quite a bit
a bunch of v10 changes to midi make things very interesting where some want to revisit how we've done some stuff before
Has someone got the power to pin this message.
Also maybe a Midi-Qol discord server?
the new createitem ae feature in dae makes a bunch of stuff itneresting now
I dunno how much work a compendium module is, but we could just constantly upload the exported items here, just make sure you remove the descriptions.
Uploading to foundry's discord would be bad actually, folks would get in trouble for a few reasons.
When compendium folders are core (v11) could combine it with midi sample items too, so everything is in one handy place
There should be a centralized repository for such an endeavour and add as a compendium module I think
A nifty method I like thats done elsewhere is Otigon's auto recog channel on jb2a's server
but the module itself makes that method easy, as its a file we import into his module
I like sample compendiums because of Quick Insert
Would also be good if there was a standard for listing dependencies in the item description (eg warp gate, AA etc)
(babonus)
let target = workflow.targets.values().next().value;
if(!target.data.actorLink) {
let effects = target.data.actorData.effects;
let minion = effects.find(e => e.label ==="Minion")
if(minion) {
console.log("new", workflow);
if (workflow.damageTotal > 0) {
if (workflow.attackRollCount || (workflow.failedSaves.size && workflow.saveResults?.length && workflow.damageTotal > 0)) {
target.actor.update({"system.attributes.hp.value":0})
} else if (workflow.damageTotal < target.actor.system.attributes.hp.max){
target.actor.update({"system.attributes.hp.value":target.actor.system.attributes.hp.max})
}
}
}
}
});``` - whole minion macro works now. Just one problem - when there are more then 1 targets (which is quite important in minion waves) it only applies to the first target :/
You always get the 1st target only in the Array
crap :/
so there is no way if I want to check those who saved and kill those who didn't
?
distributing and maintaining macro compendiums is the road to pain and suffering.
If you are considering this, look at how Midi SRD is structured -- e.g. compartmentalized functions exposed as an api
workflow.failedSaves
@acoustic jasper you should find the ones that failed in there.
But you currently are updating only the target defined as workflow.targets.values().next().value;
Do a ```js
for (let failedSaveTarget of workflow.failedSaves) {
// kill
}
You could call it "Midi Community Macros" 🙂
Yeah as badger suggested, a module structured as the MidiSRD makes more sense
So... the midi srd? 🤔
The tech savvy will still be able to dig through, and having a way to update/change stuff without the need to re-import items would be good
Ideally it wouldn't be limited to SRD items (as long as copyrighted descriptions etc aren't involved)
I think that makes sense I'll create a github project for it and canvas for volunteers to help manage it.
In other news @gilded yacht is this working 🤔
flags.midi-qol.optional.NAME.criticalDamage
That would be awesome!
const targetFailed = values.find(val => val.actor.id = target.actor.id) how to change actor.id for token uuid?
just "token.uuid"?
(cause all "Goblins" have the same id)
token.document.uuid
No it's not. I can't even remember why I thought I should put it in - cause I can't see any way to trigger it.
A user asked in the Foundry Gearheads about optional bonus damage flags following crit rules.
And I found that in the v0.9.48 release notes
you can do that in a core prehook.
Provided you don't want to do anything async.
eh, I mean you probably have a way to calculate all that you need before the hook
then you just pass it along as options
workflow.targets.forEach(target => {
if(!target.data.actorLink) {
let effects = target.data.actorData.effects;
let minion = effects.find(e => e.label ==="Minion")
if(minion) {
console.log("new", workflow);
if (workflow.damageTotal > 0) {
const values = Array.from(workflow.failedSaves.values());
const targetFailed = values.find(val => val.id === target.id)
const targetDmg = workflow.damageList.find(dmg => dmg.tokenId === target.id);
if (workflow.attackRollCount || (workflow.saveResults?.length && targetFailed && workflow.damageTotal > 0)) {
target.actor.update({"system.attributes.hp.value":0})
} else if (targetDmg.hpDamage < target.actor.system.attributes.hp.max){
target.actor.update({"system.attributes.hp.value":target.actor.system.attributes.hp.max})
}
}
}
}
})
});``` - finally 100% working minion macro! Tommorow I'll try to make Overkill macro to complement this, but I've already used minions in my games in 5e and they are dope 😉
So the midi hook you use is async, is it not?
Wouldn't it be a good idea to make the function async and await the updates in the forEach loop?
I don't actually think it matters.
Plus it's the forEach that would have to be async
Because it's Different documents updated?
Even when you right-click to apply damage in the system (yes I know, sue me), I think it's just canvas.tokens.controlled.map(token => token.actor.applyDamage(...))
Does not matter at all
Ok noted
The returned value isn't used immediately after so no biggie
Just to make sure I am not missing something. Optional bonus damage flags right now are not supposed to crit.
And btw. It's hard to rely on any kind of community Midi-SRD if Active Auras may not be updated (I know there is a workaround, I'm using one right now)
:/
Yeah Mr Primate/kaelad fork for v10 is working fine tbh, from what I ve seen!
Between that, Babonus Auras (and template macro ⌛ ) there are so many good options.
Only a tiny bit, didn't have time yet. Needed to actually prep for some sessions instead of playing around adding stuff which probably my players will never use 😭
ah ok. I figured I might release it soon
Hi all, I am trying to setup a little automation for the Aura of Conquest. the damage it does is half of the paladins level in psychic damage. so i am using DAE and midi-qol's overtime effects so that it does the damage at the start of the creatures turn. But when i use the Expression: "damageRoll=@classes.paladin.levels\2" it errors out.
i have also tried "damageRoll=@classes.paladin.levels*.5" but get a similar error
I am not sure if you caught the edit to my reply when sending you here.
Try /2
Sadly that did not work eithere
Uncaught (in promise) Error: Unresolved StringTerm 2label=Aura Of Conquest requested for evaluation
[Detected 2 packages: system:dnd5e, midi-qol]
Can you screenshot the whole overtime effect?
Just drag the field to open up so it can be seen whole
Missing a comma after the /2
that was certainly a problem but it is doing the incorrect ammoutn of damage
it is doing 11 dmg instead of 4
it's weird though
it displays the math correctly, but the actual damage it does is 11
Do you have another rolling module alongside MidiQOL?
not that i'm aware of, any big ones that i would have heard of?
Ready Set Roll
Roll Groups
Faster Rolling By Default
(Better Rolls, which has been dead since v9)
(Minimal Rolling Enhancements, dead since v10)
i have none of those
Foundry version and midi DAE dnd5e?
everything should be newest versions:
FVV 10 build 288
dnd5e: 2.0.3
midi: 10.0.18
I would try quickly with only MidiQOL/DAE/socketlib,libwrapper active to see if it still does it
Find the culprit module would help
and a new actor.
Yeah it sounds kinda strange 🤔
have tried that aswell, does not work
I wonder if brackets would help?
Maybe use () to wrap the @classes...
it doesn't really work at all if i use it with just those modules. the damage doesn't apply or even roll
hey! the () worked!
thanks ALL for your help!
Yeah forgot times up probably in there.
Anyways good to hear the() solved is but @gilded yacht is this a bug maybe?
<#1010273821401555087 message>
The overtime effect used is a couple of messages above and the missing comma added.
for completion:
Speaking of template macros, @molten solar
I think I have a pretty solid way to count grids moved through now. At least for tokens that are only 1 grid wide.
Seems to be working as expected now with this for my counting grids.
Still need to test what happens with larger tokens however
As best as I can tell
it's a Bresenham's line algorithm
This way also lets me get every single grid the token went through exactly
Doesn't really have that much of a use
but I wound up having to do that since the algorithm can return the same grid spot sometimes so I had to count unique spots
Oh boy 🙂
Same macro for on enter, leave, and stay
I could probably cut out the checking if inside template part for the stay, but I don't think it can't hurt either.
I should probably also add some more checks for running on non-grid scenes
My AA spike growth is running amok in v10 so am keen to try this, thank you!
@molten solar Is it intended for the template macro to trigger multiple times for larger tokens?
Because it's 100% firing the same number of times that a token takes up space on a grid.
No. 😃
No not intended, or no as in it's a bug?
The hook firing multiple times for larger tokens right?
Yeah
cus findContainers is looking at each grid cell individually, I bet
Possibly easy fix, just making the array of found templates a set
Yeeeeh that does it
Now I'm stuck trying to think how on earth I can get this macro to work for larger tokens
Seems to work fine, using your spike growth from before
the one I just made?
No, from a few days ago
that one rounds dumb
If you only ever move one grid at a time it'll work fine
Diagonals over the whole template mess it up.
Yeah moving through, but never triggering enter/leave
Oh no, I meant if you into a template but over nearly the full distance of the template the math gets bad
and normally adds an extra grid distance
especially if it's a diagonal line
The one I just posted fixes that issue
at the cost of being much more complicated
The find grids function in the previous macro currently checks every grid you move through if it's in the template then adds it to the set
It could be changed to check what template you're in
(if any)
ok so
given that it's 6 am here
could you write something up, function declaration, what-have-you,
and I'll see about howto add it in?
I can try, this has mostly just been me fumbling around. I'll rewrite the function to find what template's you pass through
It is a bug. Fixing might be tricky - for the moment put such expressions in ().
function findGrids(ray, template) {
let gridSize = canvas.scene.grid.size;
let gridCenter = gridSize / 2;
let locations = new Set();
const distance = ray.distance;
if ( distance === 0 ) return;
const spacer = canvas.scene.grid.type === CONST.GRID_TYPES.SQUARE ? 1.41 : 1;
const nMax = Math.max(Math.floor(ray.distance / (spacer * Math.min(canvas.grid.w, canvas.grid.h))), 1);
const tMax = Array.fromRange(nMax+1).map(t => t / nMax);
let prior = null;
for ( let [i, t] of tMax.entries() ) {
let {x, y} = ray.project(t);
let [r0, c0] = (i === 0) ? [null, null] : prior;
let [r1, c1] = canvas.grid.grid.getGridPositionFromPixels(x, y);
if ( r0 === r1 && c0 === c1 ) continue;
let [x1, y1] = canvas.grid.grid.getPixelsFromGridPosition(r1, c1);
let contained = template.shape.contains(x1 + gridCenter - template.center.x, y1 + gridCenter - template.center.y); //Replace with checking what template(s) x1,y1 are in here.
if (contained) locations.add({x: x1, y: y1});
prior = [r1, c1];
if (i === 0 ) continue;
if (!canvas.grid.isNeighbor(r0, c0, r1, c1) ) {
let th = tMax[i - 1] + (0.5 / nMax);
let {x, y} = ray.project(th);
let [rh, ch] = canvas.grid.grid.getGridPositionFromPixels(x, y);
let [xh, yh] = canvas.grid.grid.getPixelsFromGridPosition(rh, ch);
let contained2 = template.shape.contains(xh + gridCenter - template.center.x, yh + gridCenter - template.center.y); //Replace with checking what template(s) xh,yh are in here.
if (contained2) locations.add({x: xh, y: yh});
}
}
return locations;
}```
Pretty much you just swap out the two commented lines with a function to check if the points are in a template.
Coolbeans. So it returns all grid cells contained within a template between two points given a Ray made from those coordinates?
Yep. It's the same method the ruler for foundry uses
To highlight spaces
You could remove the template part and have it check if the coordinates are in any template
How does it work for large tokens?
I'm not sure, it should just be based on the center of the token.
You could make a ray for each grid a token takes up
So pass the token size in then make a new ray for each grid it takes up.
I'm actually curious how the foundry ruler handles it
https://github.com/manuelVo/foundryvtt-terrain-ruler/blob/develop/src/measure.js
Terrain ruler has a ton of geometry stuff in it for this exact thing.
Since it needs to calculate terrain cost based on where you move through
Does core foundry handle showing a wider ruler?
Not to my knowledge. It uses the cell of the token you grab
Or is that drag ruler enhancing it
I'm trying to see if it's possible to not use canvas and just relying on scene (template.parent)
My thought was to just grab the list of cells you pass through then check each one for templates that overlap that spot
Doable, for sure
https://github.com/manuelVo/foundryvtt-drag-ruler/blob/develop/src/util.js
Potential other reference for handling larger tokens.
Routinglib looks like it has a function that returns the grids you pass through.
Bit silly for just a line however
I seem to have broken it 👌
this seems to work
Nice
It doesn't. Foundry's core ruler only supports 1x1 highlightings and must always be snapped to the center of a grid
Drag Ruler has quite a lot of code that's necessary for all the ruler-unsapping and highlighting-large-togkens magic
added to the templatemacro api, this is all the code needed to show the cells you will be passing through:
const templateDoc = canvas.scene.templates.get("Yjz4KFP3eWjytVzS");
const A = canvas.scene.tokens.get("tFoAcCZczdfbPtjr").object.center;
const B = canvas.scene.notes.get("7DgQ9dqRciOfDksJ").object.center;
const ray = new Ray(A,B);
const coords = game.modules.get("templatemacro").api.findGrids(ray, templateDoc);
coords.map(c => {
const [x,y] = canvas.grid.getCenter(c.x, c.y);
canvas.ping({x,y});
});
In fact, Foundry cannot handle the combination of rulers and large tokens properly at all. You can easily glitch through walls as player by moving a token close to a wall (so that part of it already sticks through), then ctrl+measure the side that has already moved on the other side, press spacebar and you've moved through the wall
Or just trust the players not to do it lol
👢
Double terrain walls, to get the nice walls art showing too 😄
I'm wondering if the best approach is just a separate macro type, "moved through"
hi guys, can somebody tell me where i can deactivate the "distance" check?
For tokens that move through the template but don't land or stay in it?
Yes
That would be nice
I'll toss this into this as well:
const through = tokenDoc.parent.templates.map(templateDoc => {
return findGrids(previousCoords, coords, templateDoc);
});
or something to that effect. So you can find, for each template, what cells you moved through (and how many)
v10 Midi Settings => Workflow settings => Mechanics tab
🥳
thx m8
though probably just the latter. 🤔 You can easily find any template that isn't one you're leaving, entering, or staying in 🤔
I'm super ready to start making other spells that use templates in weird ways
Huh?
I mean just adding to this
Oh sure
Api method or this, either way is fine. This would make sense in the cases of already having that info on hand so you're not doubling up on calculations you don't need to be doing
It's not entirely accurate. Some cells seem offset when you move on a diagonal. But good enough I say
Are start and end cells exact center of grid?
If it's the same ish code from before
same ish yeah
Ah - no, I swapped them for the previous/current token position, oopsie
Trying to figure out exactly how the Sneak Attack sample item works. When I add it to a character, I can get it to prompt for Sneak Attack damage on a hit if the target has an enemy next to it, but not if I roll with advantage but there is no enemy next to the target. Is that a scenario the sample item doesn't cover?
You also left my out of context comment lol
did I? 🤔
Do you have another roller installed?
No, but ... to be fair I haven't tested in a reasonably clean setup. I should probably have done that before asking ...
no ready set roll, no better rolls, no roll groups, no fast rolls by default, no minimal roll enhancements
(to be fair, RG is so lightweight, it won't break Midi, but Midi will break RG)
did the actor have advantage AND disadvantage and it was cancelled out? Otherwise, something is causing midi not to pickup advantage in the roll, typically cause another roller is rolling.
Not in this case, so I'll try to dig and see what might be getting in the way of midi seeing the advantage
Sup guys
Anyone have some handy video or manual?
I'm lerning QOL now and trying to make uncanny dodge working
I know the formula that they mentioned on their site, but have no clue how to implement it correctly
flags.midi-qol.uncanny-dodge
if you want the other premade stuff from compendiums I can share them but they require 2 experimental modules that have to be manually installed due to them still being worked on to work with v10
Did tim take any action on a new midi srd or whatever its gonna be from yesterdays posts?
Did centering them fix it?
Yeah. I edited the api method so it takes top left positions and returns top left positions
Nice
The method itself converts to centers inbetween
Less to think about for the user I reckon
Yea
updated the release
try this hook in the console
Hooks.on("updateToken", async (tokenDoc, update, context, userId) => {
await CanvasAnimation.getAnimation(tokenDoc.object.animationName)?.promise;
const coords = context.templatemacro.through.flatMap(t => t.cells);
coords.map(c => canvas.ping({x: c.x + canvas.grid.size/2, y: c.y + canvas.grid.size/2}))
});
I'll update my spike growth macro with it later. It's 9 am and I should have gone to bed hours ago
lmao
Wonder what happens on a no grid scene
Foundry has a way to highlight it, so should be able to take the same method again.
It might be the same depending on how those grid from pixels function work.
So, still working on the elusive Sneak Attack with Advantage.
When I roll, it does roll with advantage consistently and accurately, but the Sneak Attack dialog doesn't appear. There is a "testing: advantage/disadvantage" warning in the console every single time I make a roll. (This warning appears whether a hostile creature is next to the target, and whether or not the roll has advantage, disadvantage, or otherwise.) I'm not clever enough to know exactly what's going on in that dialog or if the warning is part of why midi isn't picking up that the roll is made with advantage.
did you already sneak attack that turn?
are you in combat?
Did not already sneak attack. This happens in and out of combat, by the way. And as soon as I move a hostile token next to the target, it reliably starts prompting for sneak attack damage again.
does this behavior persist with just the minimum modules active?
what are your foundry/dnd5e/midi/dae versions?
Yeah, it does happen even without most modules installed. Foundry version 10.288, d&d53 2.0.3, midi 10.0.18, dae 10.0.11.
I'm going to build a completely blank world from scratch to see if I can get it working there with a bare-bones setup.
can you show me the active effects listed on the rogue?
and what compendium did you get the sneak attack from?
(isnt it based on the token disposition, so if you have enemy tokens, but in the config they are set as *friendly * or neutral , then it would trigger the macro?) dont use it, just offering
The only active effect on the rogue is the passive Sneak Attack, which came from the "MidiQOL Sample Items" compendium, originally called Sneak Attack 10.0.13, but I renamed it to just "Sneak Attack" per the note on the description tab
its also suppose to sneak attack when you have advantage
I don't have an active v10 build if someone wants to check, I'm just asuming the sample item works in v10, it works in v9 for sure
is the weapon nonstandard?
It's just a totally normal dagger
from where though
is it an imported dagger or a dnd5e compendium dagger?
assume nothing
Sorry. Items (SRD) compendium was the dagger source
Good point!
k
did you have an older sneak attack on the actor?
oh heres a good one
drag out the starter hero thats a rogue, and try it on him
delete the sneak attack on him before you bring over midis
and can someone with a v10 build try the same to confirm if the sneak attack is broke? I'm elbows deep in mapping in v9 atm
I'll give the delete-before-adding thing a try in thsi vanilla world i'm creating.
And I have v9 on another machine. I'll try it there shortly
oh I know it works in v9, I have a rogue part time player who utilizes it
Sorry. I meant I'll try on v9 but with everything I have set up the way it is here and see if it's something in my setup messing things up
?
if a rogue shoots a bow from a distance and the creature is alone, then sneak attack should also fire then, regardless of allies
and thats what is failing
his allies part of the automation is working fine
well it should only fire in a ranged situation if they had advantage
with advantage* that shot would proc
yeah forgot to add that hehe
I swore they said it fires when enemies are next to the PC.. but leave ya to it 😉
yeah he words it weirdly, kinda assuming his issue is advantage though, maybe he can clarify which part is failing
sneak attack on a standard rogue is possible if there is an ally of the rogue adjacent to the target creature who is also an enemy(not neutral). It is also possible if the rogue has advantage on any finesse weapon using dex or a ranged weapon using dex as long as there is no disadvantage as well.
Sneak attack against a hostile target with a friendly token next to it: sneak attack fires every time, whether rolling with advantage or not. Just tested, and it fires even if rogue has disadvantage (which it should not)
Sneak attack against a hostile target without a friendly token next to it: sneak attack never fires when rolling with advantage
I hope that's unambigious!
that sounds like a roller problem
It does!
I should have tested it earlier.
But for now at least, I'm not sure what's getting in the way ...
I think at this point you ned someone to test it in their setups to see if theres a v10 problem with sneak attack
Sounds like it. Here's hoping someone comes along and does!
someone should just drag the midi sample item out onto the starter rogue and try it out!
there are no errors right?
No errors
Thanks for all the help, by the way!
i'm having a problem with automation. I'm basically doing several changes on 5e, mostly on classes to work on the premise of my table.
Last night i made a class feature that should heal 5 x character level.
I didn't find a way do refer to character total level, so i put the class level, if anyone know how to refer to character total level i will be glad.
But the real problem is, when i activate the ability, it show on chat the roll with the correct result (ex: 5 x 20 = 100) but only healing the token for 5 + 20.
I believe the module that do the automatic healing/damage is the MidiQOL but i'm not totally sure a this point.
Anyone know a way to solve it? Also, if it's the wrong channel, please tell me, i'm new on all the foundry stuff.
you have to decide whether you want midi to automate damage application or not, it looks like you currently have it set to off
or you have another roller running
yeah that does look sketchy
midi usually puts the details of the item at the bottom
go to your module settings, search for the world Roll
(better yet, just disable all but midi requirements)
It is very naughty to run multiple rollers together generally, They are Midi qol, Better Rolls for 5e, Minimal Rolle Enhancements, Roll Groups, Ready Set Roll, Faster Rolls by default(works with roll groups), and ?modify roller? or something like that.
if i disable the modeles, all configurations will return when i activate it again? I take some time to made everything to work and really don't want lose what i already did.
yes
which roller are you running with midi, cause one of them leaves behind stuff that messes up midi even when its disabled
And didnt say disable all modules, highly suggested if wanting automation, to turn off any of the ones mentioned by the Badger
(except Midi, that's the automation module/ roller for dnd5e)
if i search world roll as you ask, the result are the modules that can be causing troubles, right? Also, sorry if i'm a little slow to response, i'm not native speaker and take some time to formulate the phrase.
Just disable every single module that is not relevant to what you are currently trying to accomplish.
personally I'd ask him whether he wants midi or not first, he kinda sounds like he's unaware of the right click/manual application stuff, he could totally rock the roller he has instead if thats acceptable
then the answers as simple as uninstall midi
no other roller im aware of handles application of damage, which appeared to be the basis of the question
Are we allowed to say that in this thread? Won't we get banned?
but his problem was solved in the other channel wasn't it? theres nothing wrong in the screenshot, he can right click the 100 and apply to selected
I don't know what language it is, but is that preserve life?
I'm look somethings here, but in a way, that's a valid solution. I'm trying to conciliate automation but not totally against do some manual work has long it's simple.
What do you use Midi for? 🤔
k then for now disable all modules except for Dynamic Effects using Active effects, Midi qol, socketlib, and libwrapper
then try rerolling it
Its Italian
There was a module called "Mob Attack" but it wasn't compatibile with Midi. Is there anything similar (a module where you can attack with many tokens at once if they share the same attack-item)
I just use the mob conversion rules manually and make the token actor
I have a macro for that
same
I just click the button many times, works for me 😂
https://github.com/trioderegion/fvtt-macros/blob/legacy/v9/honeybadger-macros/utilities/dnd5e/Mob-Group-Split.js v9. Converts selected homogeneous token actors in a single one with a new "group attack" item macro item
midi friendly?
you tell me 😆
this is midi friendly probably with just a minor change
Strange... i try disable every other module but end up making the ability stop healing completely.
I will keep in the way it has before. Even if this heal don't go automatically most of the other things that i need on the midi qol are working just fine.
The ability is some homebrew thing that i did. language is Português Brasileiro and the ability name is something like "veterinarian"
Thanks for the help and time of you all.
ok, but you really should find which roller is conflicting, a bunch of stuff is going to misbehave in your session till you reduce down to 1 roller
anyone spot which one it was?
I will try to activate the modules one be one and see if something change
if i find some relevant information i return here to let you guys know.
Midi qol requires the bare minimum of Socketlib and Libwrapper to work mostly, its suggested you also enable DAE too.
what language are you localized to?
Yap, i let only those enable has you say before.
If you ask the language of my foundry, i put it on English to make easier to search for things on web.
with just those 3 modules installed activated, can you show us the heal in chat to see what it looks like?
Looks like i did a mistake previews, it's actually healing 25, but still didn't heal the 100 that it should.
Were they missing exactly 25 hp? 🤔
Nope. I notice that the heal will heal only missing health, so i set the target max HP to something like 1k, and reduce current life to 1 to test.
What if you removed the [healing]
is it possible the healing forumla needs some () ? like 5 * (@details.level) ? or something similair? it's treating the * as a + for some reason....
yeah I think it does
is the * even needed if theres parenthesis?
the thing that just kinda botheres me though, is how theres two cards there
There was/is an issue flagged by tposney. Always use ()
I think theres a healing button in the first card, and when they press that, they get the new card right?
and they must have the setting on to remove buttons
Core behavior (well, not the removal of a button)
Yap, i did that.
what part do they have to wrap?
Use (@details.level)
Does 2 * 2 work? /s
There may not be a roller conflict now, the odd looking card I now understand from before, and I know its not a conflicting module so they should be fine.
I try do the formula with ( ) and some variations, but without * it's just don't roll, and with ( ) it have the normal resulta no matter what.
5 * (@details.level)?
Is this v10 between?
(5 * @details.level)d1 😏
yap.
i will try it.
or they could do level+level+level+level+level
or a scale value
poor guys google translating our comments lol we're sorry for the confusion
Wow, this actually worked. XD
badger grease: apply directly to the formula!
Nah, i can actually understand english fairly well. I just slow to response
The d1 saves the day
thats some voodoo magic
That sounds really like Zhell's approach.
Door macro. Apply directly to door
excuse me. That's trademarked.
thats what the mayonnaise from the alchemy jug is for
With this solution, maybe the problem is that the midqol somehow can't calculate a multiplication formula without dice(?)
roll systems like rolling dice 😆 what can I say
were you cropping the healing card out of all of these? how is it applying the heal to the token? are you viewing as a player?
Normally theres a chaser card when applying automatically:
I believe it's something with me mid qol configuration. i think i disable those cards on the bottom.
does it stil heal automatically when you do?
or do you have to right click and apply the heal with that menu?
the heal and damage is working just fine. The only problem i have with it has been this one with this formula, but after the d1 that's working just fine too.
just for reference, that's my midi qol configuration. I didn't change anything on any other section of the menu.
But well. I guess my problem is solved now. Thanks again for all you guys help. Hope i can also help someday.
Look at all those beautiful settings @molten solar. That’s about half of them
Imagine if it still had the entries for better rolls!
I wanna see what Otigon did for AA in midi. He added a macro that creates a button in the hotbar for the auto recognition button in settings. Midi needs one for the workflow button lol.
so does dice so nice 8)
I rarely need to go into midi settings, but DSN definitely. There’s probably a way to do it with a macro… or at least summon that welcome card
I guess you’re in midi settings on the regular doing screen grabs for helping folks
Stuff it in a bag and throw it down a manhole
That's one setting with more options in it than I have in all my modules combined, no wonder you need three discord servers and an entire thread to figure it out lmao
Another mystery I'm facing: Ctrl and Alt do fine to skip the dialog and go right to rolling with disadvantage or advantage, but Shift does nothing. The dialog to choose always appears. I thought it was meant to assume a normal roll?
You are describing core behaviour, yes.
OK, that seems to work, but it doesn't seem to work with the attack/damage buttons midi adds to the inventory list
I think its T when you have midi installed
Oh is it?
also if you have DSN installed, and the setting to avoid spoiling, then you have to hold the keys down longer
T will do the opposite of whatever your fast forward button is set to
I didn't know that! Thank you
I think you might be pressing the wrong shift for why you can't get normal to work
T seems to be doing what I expected shift to do. I really had no idea!
Oh yeah it is midi messing with shift
Midi uses shift for versatile
F is technically just fast forward and doing normal most of the time. T technically also toggles the auto roll off/on as well as fast forward for a single attack.
configure controls can show you more indepth
There it is!
i'm trying to get midi to do the reaction when used on a turn but when your turn actually comes up the reaction effect is still on the character and doesn't go away when your turn comes up any ideas what i'm doing wrong?
Don't quite follow that.
Do you mean that the reaction shouldn't consume your available reaction for the round?
Or is the reaction supposed to activate an AE that is expiring prematurely?
Or is the reaction icon not going away at the start of your next round?
sorry i'm not sure how to word it haha it'd be so much easier to just show it on discord and screen share but essentially I have Midi-Qol set up and when I start combat everything works fine. but lets say I have 1 enemie and 1 character regardless of who it is. if they attack not on their turn midi places the reaction effect on them. PERFECT exactly what I want it to do. But when the player or enemie or whoever's turn it is currently is their turn in the round. The reaction effect is still on them, it doesn't disappear or reset if you know what I mean. I have to manually get rid of it. with DFred's Effects. regardless if it's that monster or player's turn the effect doesn't disappear when it's the start of their turn.
does that make sense? I hope haha
I can stream it in one of the Foundry VTT Voice Chat's it'd be easier to show than just type it out I'm awful at describing things haha.
And I bet the icon indicates that the effect has expired?
I had this problem too, on all the effects with a duration, they didn't want to disappear but still displayed as expired
When casting spells with a saving throw it prompts Monks Token Bar, but when all rolls are done the results will also appear in the card of the spell which makes it redundant. How can I stop the Saving Throws from appearing in the spell card too?
no i don't even have that i don't even know where you get that
(do you have Times Up installed? It controls when/ if buffs expire)
Yes
@brittle glen @vast sierra yup i'm a fucking idiot lmfao it was times up sigh* thanks guy's sorry
Learning ™️
Go to Times Up settings and uncheck the disable effects when expired if it’s on
haha i can't believe that ugh lmfao i just spent like 2 hours messing with that
uuugghhhhhhhh
thanks
Oh more messages in between! 😅
But that could be Jinashi's problem 😄
Indeed!
I had to end the current encounter and then restart the "time" in Simple calendar for it to automatically remove some of the effects
Not sure that you can do anything. This might be something for tposney or ironmonk to figure out.
I would suggest creating an issue in midis repository describing the situation and attaching your midi settings export json file.
Some screenshots could be helpful too.
Check the simple calendar settings. You need to use Mixed in the setting for which modules manipulate game time and also make sure that the paused game is linked to start stop time.
I am not at my PC so these settings description should be enough for you to take a look through SC options 😅
@coarse mesa i've been experimenting with the vortex warp macro, but i have a problem:
- if i trigger it through On Use Macro, it doesn't care the target has made their save
- if i trigger it through active effects (macro.itemMacro), it activates twice (but the 2nd time without animation)
btw, about the displaying range thing you mentioned, Lukas, i found a workaround:
- make an active effect and set it to "apply to self when item applies target effects"
- give the active effect an automated animation set as aura with the range of whatever you're doing. Go into the folders and find one with simple things, such as this
modules/JB2A_DnD5e/Library/TMFX/Border/ - at the end of your item macro (or adding an on use macro with this sole purpose), write this (changing CHANGE_ME to the name of the active effect you created for this):
await warpgate.mutate(game.user.targets.first().document, {embedded: {ActiveEffect: { 'CHANGE_ME': warpgate.CONST.DELETE}}}, {}, {permanent: true, comparisonKeys: {ActiveEffect: 'label'}})
(thanks good people at #macro-polo : honeybadger, zhell and flix)
That way once you're done with your spell or whatever, the range visualization will dissipate
Anyone know how to automate "Flash of Genius" reaction?
I've managed to create the effect so that the Artificer can target other tokens (including himself) and give them +INT on checks and saving throws, but I can't figure out how to have it prompt on his screen as a reaction whenever he has to do a saving throw.
Oh damn, I've yet to try using it on an enemy.... just been using it for friendlies. There probably is a way to do it through the AE properly – I'll have a play around when I get some time (I'm using it in v9 at the moment)
i think this is best handled by the player actually reacting -- you can have the ability give them a bonus to their roll for the next roll (right? midi can do that)
so when time comes, the artie says "wait! flash of genius"
I am trying to execute a macro when Detect Magic is cast. Using DAE and MIDI-QOL with Item Macro on Foundry 10 - I set up the effect in DAE to kick off the item macro with macro.itemMacro.GM but when cast, the effect does NOT get applied nor does the macro execute.... I set the effect to "apply to self when item applies target effects" ... what am I missing?
I tried a different method of straight MIDI-QOL using on use macros pointing to macro when only called once a template applied and the macro doesnt kick off then either. In both cases, the macro is simply console logging as I wanted to ensure it would fire before moving into coding the macro fully.
Unless @violet meadow or @vast bane knows how to make an onUse only fire on a failed save
I made a bite attack that grapples on a failed save (applies grappled effect) if that is similar to what you are doing I can share what I did.
Still working out the OverTime part of the effect but overall it works
Applying AEs on failed saves is bread and butter for midi, but I don't think I've tried doing onUse just on failed saves
"Cannot destructure property 'systemCard' of 'options' as it is undefined." "/
midi is likely expecting some additional information for displayCard
Hello there. I am with another question - is there a quick (or just a known) way to set up "ignore poison resistance" of Poisoner feat?
Here you go @vast bane – two hotbar macros (tested in v9):
DSN:
//Macro for opening a module's custom settings menu
const menu = game.settings.menus.get('dice-so-nice.dice-so-nice'); //use your module's setting path
const app = new menu.type();
app.render(true);
Midi:
//Macro for opening a module's custom settings menu
const menu = game.settings.menus.get('midi-qol.midi-qol'); //use your module's setting path
const app = new menu.type();
app.render(true);
(thanks @dark canopy )
yeah, the way to use it on enemies is to make it through AE macro.itemMacro (because the effect is only applied if they don't make the save); if you just set it as an On Use Macro, the saving throw the target makes is essentially useless. The issue is that if you set it as macro.itemMacro for some reason you can tp the target twice
how would you make it prompt for flash of genius for an ally?
I think the reason tposney hasn't tackled this is it would be nuts – effectively prompting the artificer every time something happens. It's going to be even more crazy in 5.5E if bardic inspiration does become a reaction (as proposed)
would it be doable as an aura, though?
still, yeah, the problem is the prompt spam
I think HB has the right idea, just set up an item that the artificer can use to drop a bonus on an ally (if they're paying attention)
if there was a way to edit a roll and rewind midi's workflow
hm true, it's likely too late if the roll dialog is already open
@river urchin I use Situational Shortcuts to add these preset modifiers to my roll dialog:
You can put in whatever you want, so could have it for Flash of Genius. Or use Advantage Reminder (although it would be reminding the target to remind the artificer lol)
Hey there,
I have got Show Ghost dice for hidden rolls ticked in dice so nice and in Midi I have the option ticked under hide GM rolls to use ghost dice, yet nothing has changed for the player? Anyone have an idea what I might be doing wrong?
🙂
The problem are things added after the roll is made
Use ```js
if (!args[0].failedSaves.length) return;
@river urchin 👆
True... it's a tricky one
Hey there,
Is there a way to stop the GM seeing damage card for PCs. NPC one is great. But I just don't need to see the PC one.
🙂
This cannot be done tmk 🤷
Where would that go? First line of the item macro?
yeah
Oke, thanks!
hello there friends, what am I doing wrong here?
Is there something that can be entered into the Activation Condition area to get an ability to only affect creatures that already have a specific condition on them?
such as grappled or frightened?
Try changing mode to Custom and Effect Value to 1
nothing sadly
How are you applying it? (details tab)
I assume this is a passive you want on all the time? Tick the transfer to actor on item equip box
yesss that worked
many thanks!!!
now to give it a good icon and add the wisdom
and of course add it to my compendium so it doesnt get lost
v9 or v10?
For v10 ```js
Array.from(workflow.hitTargets)[0].actor.effects.find(eff=>eff.label==="Charmed") //v9 (eff=>eff.data.label==="Charmed")
I am not sure what exactly happens if you target more than 1 creatures with the same attack, so better use it for single target items.
edit: you can use it fine for Attack Rolls against Multiple creatures. You need to turn on the one attack per target.
There is a bug though.
Yes, it's for v10, and trying to automate Aura of Conquest in this particular case, which will affect any Frightened creature within a 10 ft radius, so it could potentially affect multiple creatures.
And thank you for that, will test it against multiple targets, and go from there.
Hmm might need @gilded yacht input 👆
~~I am not sure how to write the activation condition for an effect to apply, when targeting multiple creatures.
Actually I was testing the 1 attack per target and had some strange results. I will investigate some more~~
Edit: Array.from(workflow.hitTargets)[0].actor.effects.find(eff=>eff.label==="Charmed") works fine when attacking multiple creatures and it rolls one attack per creature respecting activation condition!
👉 A bug though in v10.0.18 at least. If the 1st attack is a natural 1, all the rest of the attacks against other creatures are cancelled! 👈
I have an old build for it before DAE and Midi got all fancy. it is on my to do list to revisit
Another thing too, I don't have any active Conquest Paladins. I do in my main campaign, but we've been playing my side campaign since August 😅
actually this is super easy to write with Active Auras
Actually yes, it should be
or go old school and have a binding detecting distance
I was playing only with Activation Conditions cause I like hitting my head against a wall
yeah AA is what I was planning to use, just needed to know how to limit it to Frightened targets only
let the macro handle that
You can filter application in the macro
You'll also want to know who the source is
technically if the someone else frightens the creature, it doesn't count
If a creature is frightened of you
Supposed to wombo combo it with Conquering Presence
correct
I got a build for Guided Strike too
That would be great
Aura of Conquest was easy to write after all. Am almost done with it
Activation conditions work for attacks against multiple opponents pretty good (for both extra damage and effects application), with the small caveat that if the 1st attack is a Nat 1, all the rest are aborted 😅
I feel like advantage reminder woulld probably work better here than this.
Did you see my message to you just a little bit further up?
I did, bookmarking it for the next time I'm in session thanks!
I wonder though if its for v10 or v9
Works in both, have tested myself
I'm def gonna add the DSN one to the player's hotbars.. they can change dice when they're rolling bad lol
Just to confirm, you have roll a separate attack per target set?
@gilded yacht you do get dex save modifiers due to cover but spell sniper only applies to ranged spell attacks and sharpshooter only applies to ranged weapon attacks. So they don't apply to any templates
And they don't apply to saving throws at all
One full 5Es dumbest rules is you get better Dex saves with partial cover than full cover, and fireball spreads around corners lol
@gilded yacht thanks for integrating Simbul’s so quickly!
Yes. I will try to replicate again later and make an issue with any findings
Could anyone help me with an effect? I'm trying to have it so that creatures with the effect have disadvantage on concentration checks when within 5 ft of a hostile creature. (v10)
There is an example in the MidiQOL release notes
How do you set it up?
I did a search in #package-releases but was unable to find it even after going through 2 pages of the search looking for both "Concentration" and from tposney 😅
Would you mind linking me to it? Perhaps my search-fu simply isn't up to par
flags.midi-qol.disadvantage.concentration | CUSTOM | findNearby(-1, tokenUuid, 5, 0).length > 0
Thank you
How does it differentiate between hostile and friendly targets? In case I want to apply it to an enemy
In the findNearby the -1 gets the Hostile creatures (I think it filters the ones that have the opposite alignment compared to the source)
So for enemies I should put 1 instead of -1?
Nope, use it as is
Ah, understood, thanks for the help 🙂
is there any way to make a target auto-fail a save if their size is medium or smaller?
Is this against a specific item?
Would require a macro is my initial thought
yup, against a specific item
Quick question, does this take into account when the enemy is incapacitated? Or does it still function even then? 🤔
Use this as an ItemMacro | After Targeting complete ```js
for (let target of args[0].targets) {
if (!["tiny","sm","med"].some(s=>target.actor.getRollData().traits.size.includes(s))) continue;
const effectData = {
"changes":[
{ "key": "flags.midi-qol.fail.ability.save.all", "mode": CONST.ACTIVE_EFFECT_MODES.CUSTOM, "value": "1", "priority": "20" }
],
"disabled": false,
"duration": {
"startTime": game.time.worldTime,
},
"icon": "icons/magic/control/debuff-energy-hold-yellow.webp",
"label": "Fail save - size dependant",
"tint": "",
"transfer": false,
"flags": {
"core": { "statusId": "" },
"dae": { "specialDuration": [ "isSave" ] }
}
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: target.actor.uuid, effects: [effectData] });
}
I haven't tried it yet so not sure 🤷
Using ternary operators, is it possible to create an effect that applies if a creature doesn't have proficiency to a specific save?
(Is there a variable that returns a 0/1 if a given save has proficiency added to it?)
Using activation conditions you should be able to do that
What exactly do you want to do? Do you have a shareble item description?
Sure, it's for a camping/rest rules that I created that give minor buffs if PCs do well on certain checks and so on.
This is what the ability is supposed to do:
Balance Diet
You can create a number of vitality-boosting supplements for yourself and up to two other creatures. You and the chosen creatures gain a bonus on Strength, Dexterity, and Constitution saving throws equal to one-half your proficiency bonus, as long as that creature is not proficient with the given saving throw already.
(Lasts until they finish their next long rest)
So I want it to check if they have proficiency in each of those saves, and add 1/2 prof if they don't.
oh, damn, thanks!
Oh, I think I might know how to do it
@abilities.con.proficient > 0 ? "+0" : "+floor(@pb / 2)"
Something like that
Hrmm, that's not working...
This is what I have right now: system.abilities.str.bonuses.save | Add | @abilities.str.proficient > 0 ? "+0" : "+floor(@attributes.prof / 2)"
Where did I get my syntax wrong? 🤔
Been trying to get, what I'm assuming are some older macros working on a players conquest paladin (lvl 20 1-shot) with little success.
About all I can do macro wise, is make sure the macros are named correctly, and check the macro text to double check name references lol
@gilded yacht some remarks on your latest release:
Wrong expiryReason on save failure
https://gitlab.com/tposney/midi-qol/-/commit/3c546ad3aef48a1a7aa87331a448be1bdf8e5a6f#7e0057499ef66a58083dea10bf6fe2756e03c138_1323_1349
The following line does not seem to do anything…
https://gitlab.com/tposney/midi-qol/-/commit/3c546ad3aef48a1a7aa87331a448be1bdf8e5a6f#9d28166856fc80b81fdbc4c5aa2614ff0b05e296_1493_1493
I would create an Item that applies a DAE effect for the save bonus.
I would check the activation condition true for effect application on the Item's details page close to the bottom (needs to be Action Type at least Other or Utility).
This as an activation condition should be enough !!target.abilities.con.proficient.
So I should create 3 features, one for each of the saves affected?
Hmm yeah either one feature for each save needed, or a macro in the end, to go through all saves a character is proficient in and then add the needed ones
Gotcha, thanks 👍
is there any way to trigger an On Use Macro BEFORE targeting? Right now "Called before the item is rolled (*)" happens after targeting
Thanks! (As always - much appreciated)
Except in midi-qol fireballs don't wrap round corners - one day I will fix that.
But a ranged spell attack and ranged weapon attack can have a save - my reading was that spell sniper/sharp shooter would negate those save advantages. Spell sniper/sharp shooter only apply to rsak/rwak respectively.
tokens with 0 hp will not be included in the findNearby
What are you trying to achieve?
I want to be able to see the range of a spell before (and while) selecting its target(s) (which happens before spending the slot). Late targeting is on
I already have a way of displaying range
Through an active effect with an automated animation
That effect is activated by a feature which I could trigger through a simple macro (like the ones created when you drag something to the toolbar
I'd like to activate said simple macro when i click a spell before selecting my targets
I can't think of a way to do it at the moment (except for a convoluted create a token bar macro that calls the auto animation effect, does the late targeting, then rolls the spell), It's not all that hard to add a pre-targeting onUse macro I guess. Can you create a gitlab issue for it and I'll stick it in the next release.
Thanks! I have a use case for this too (where I’m spoofing a location temporarily so midi thinks the echo knights token is where his echo is for range calc). At the moment I’m doing a hotbar macro like you just described that rolls the attack later
done! thanks
If this works I’m gonna slap it on all my ranged spells!
(maybe an Actor onUse that picks up anything you use that has a range 😮)
with my limited knowledge of how to write macros, my current solution (assuming pre-targeting onUse macro gets implemented) is:
-
Create a feature for every range category, let's call it
feature-range-XX(XX being each range). Self, self; as their range. -
Create an AE on each each feature-range-XX called
effect-range-XX(XX being each range). Just in case make it apply to self when item has targets. -
Put the needed feature-ranges into each ranged character. Create a macro to trigger each of them individually,
trigger-range-XXto quickly remember it. -
For each effect-range, create an A-A automatic recognision animation (see picture). Points 1 and 2 are required. Point 3 is to get the same simple circle A-A teleport uses (which is subtle but visible enough), choose its colour through 5; if you want all of them to be the same, you just have to duplicate this effect and adjust the range (keep in mind 1=5). The circle is this one, it's the only visual effect A-A uses that doesn't depend on jb2a
modules/autoanimations/animationPNG/teleportCircle.png -
Create another macro for each range:
remove-range-effect-XX, the macro having this (edit effect-range-XX for every case):
await warpgate.mutate(token.document, {embedded: {ActiveEffect: { 'effect-range-XX': warpgate.CONST.DELETE}}}, {}, {permanent: true, comparisonKeys: {ActiveEffect: 'label'}}) -
On each actual ranged item/spell/feature, set 2 onUse macros:
-
- Pre-targeting (currently non-existent): trigger-range-XX
-
- Before targeting (already existent): remove-range XX
(note that my limited knowledge might need to create a ton of items, effects, macro-trigger and macro-remove, and there is maybe a lighter way to do this)
There can’t have saving throws that I’m aware of. The definition of ranged spell attack/ranged weapon attack is an attack that uses an attack roll. I’m not aware of any ability that uses an attack roll to hit that also requires a dex save. There’s only cover modifiers to dex saves, none of the other saves get cover.
how to create a macro that lets a player select a target and deal damage? For example I have a script that checks if my player attacked an undead and if YES then he can select another target and deal him 1d6 (or any) damage?
I know how to check for undead and deal damage, but don't know to give a player an option to select a target for that damage
This is promising! I think it would be much easier just to use Sequencer directly in the macro and feed it the range from the item. A little out of my area of expertise but sounds doable. Then hopefully you could apply the same idea to an actor onUse macro so that it covers all ranged item rolls without having to set up each item individually. It would still be cool for ranged weapons etc too
probably not what you are talking about, but Ice Knife and Ray of Sickness come to mind.
Drow poison, and the hooked spear come to mind for weapon attacks.
yeah, i'm sure there is a way to NOT have to create each thing for each effect xD
a module/worldscript hooking on a "use item" hook and drawing the range of the spell being used is likely the cleaner and more stable solution
once you start chaining together...i dunno, more than 2 forms of roll/macro execution into a single "thing", I would consider stopping and searching for other approaches.
thing is i have no idea of doing that xD. Would that draw the thing before late targeting?
Ice Knife makes a Ranged Spell Attack followed by an area attack. They are two separate abilities though. The second roll isn't a Ranged Spell Attack. Ray of Sickness doesn't really matter since its saving throw isn't a Dex save
A completely transparent circular MeasuredTemplate created with each dnd5e.useItem
Sounds easy tbh. Two lines of code? 🤔
heck, Crosshairs could do it to avoid touching the DB
Could one be created locally, and sync?
not natively, though at some point i do want to implement "remote crosshairs"
i figured it would be similar to the template previews
(i.e. only locally drawn)
Guess some pixi magic is needed.
I mean if this gets implemented in any module it would be sweet
probably, preUseItem is pretty early in the call list
preUseItem is before the AbilityUseDialog even pops
it's a quality of life improvement for badly space oriented people (like me xd)
eh, really just need to send coordinate updates every X ms as a warpgate Event
You just want everyone to use warpgate
iff it makes things easier 🙂
Though this is the module dependency channel. It's in the name.
i mean if it works i'm not complaining xD
damn, does that reaction mean "one way or another"? first time i see/notice that use lol
iff? It means "if and only if"
aaah logic
a implies b and b implies a
ye, ye
for (let target of args[0].targets) {
if (!["large"].some(s=>target.actor.getRollData().traits.size.includes(s))) continue;
const effectData = {
"changes":[
{ "key": "flags.midi-qol.disadvantage.ability.save.all", "mode": CONST.ACTIVE_EFFECT_MODES.CUSTOM, "value": "1", "priority": "20" }
],
"disabled": false,
"duration": {
"startTime": game.time.worldTime,
},
"icon": "icons/magic/control/debuff-energy-hold-yellow.webp",
"label": "Disadvantage on save - size dependant",
"tint": "",
"transfer": false,
"flags": {
"core": { "statusId": "" },
"dae": { "specialDuration": [ "isSave" ] }
}
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: target.actor.uuid, effects: [effectData] });
}
//js code
trying to use this to make large creatures have disadvantage on the save, but i guess there's something i'm missing
Log the token.actor in the console to check how large is defined. Might not be large and I don't remember now
toss in a console log and make sure you actually get past that first check
Also have you changed size of the token or on the character sheet?
nope
Nope to which one 😅? This macro will check the character sheets size
huh weird
now it works
i was gonna send you the console log but then i see it making the save with disadvantage
i changed literally nothing xd
You can simplify a bit.
const effects = [{
changes: [{
key: "flags.midi-qol.disadvantage.ability.save.all",
mode: CONST.ACTIVE_EFFECT_MODES.CUSTOM,
value: "1"
}],
icon: "icons/magic/control/debuff-energy-hold-yellow.webp",
label: "Disadvantage on save - size dependant",
flags: { dae: { specialDuration: [ "isSave" ] } }
}];
[...args[0].targets].filter(t => {
return t.actor.system.traits.size === "lg";
}).map(target => {
const actorUuid = target.actor.uuid;
return MidiQOL.socket().executeAsGM("createEffects", { actorUuid, effects });
});
is that what "isSave" does?
Nope
I just removed the default values.
That is for 1 save duration of the AE
Do you want to get only the failedSaves one?
But you are giving dis to saves
Ah ok
Yes
hold on, if outside a macro i create an AE with flags.midi-qol.disadvantage.ability.save.all; custom; 1; it will only apply disadvantage to 1 save?
Nope to all
in the case of the macro, yes, i'd like for the target to fail/have disadvantage on the save for the current thing, not everything
So the way these macros work is: you get the relevant targets after targeting is complete and before actually rolling for a save. Then you create an AE on them with a special duration of 1Save, the saving is affected by it as you see fit and the AE gets deleted immediately after.
aah thanks, that makes sense
and the difference between yours and zhell's?
Mine? It's yours. 🤔 I didn't change anything.
Not needed fields removed. I have one as a template and change what's needed on it and, most of the time, has stuff not needed 😅
You could write a world macro along with a warpgate crosshairs to pull this off
aah understood, it makes sense to have a flexible macro
You are too kind thinking I could write a macro lol
I can collage already existing macros with different degrees of success
I am one of those people who just wait, pray and ask nicely for features and macros to be published for free xD
You would hook into preitemRoll or preamble in midi. Badger has some examples of crosshairs, I do too but I am busy with work atm. You can look at his pull10ft macro, it'll show you a working of example in action.
The problem though is how do you want this executable. Is this something happens when they click on the spell it minimizes and gives them a crosshair preview of the spell and let's them place the mock template?
I could see perhaps having something that gave helpful images of the template in the item details would be cool
So you can't have players going, oh I didn't know it was like that..
things with template do show you the area they are going going to affect, but not your range limits. The idea would be that while you are thinking where or who to target, you can see what's your limit, and since you can cancel targeting, you can do so before spending the associated resource
oh, no, you're right
the template is previewed after the spend spell slot dialog
but i wasn't thinking about aoe, i was thinking more about ranged single target (or multi-target) stuff, which do ask you to target something before the spend slot dialog
more or less the same idea -- preItemRoll would be the hook to use
Think a spell preview module would be a cool idea
create the crosshairs (or your range finder of choice) to the size of the spell's range
I was just imagining something like the A-A Misty Step. When you cast a ranged spell or use a ranged weapon, it pops out a ring around your token. Should be fairly easy with Sequencer, just need to feed it your tokens position and the range of the item you’re rolling
there is also this approach
Why not both?
feedback overkill/duplication, imo
yup, that ring is here: modules/autoanimations/animationPNG/teleportCircle.png
that would probably fail in a 3d environment with elevation though
2 questions:
why does it stick to lines and squares instead of just squares in the grid?
if the triangle signals out of range, why the vortex warp macro i'm using (#macro-polo message) always shows the triangle when trying to tp a creature? (i guess because the macro itself has no range indicators)
not lateral distance, that is still accurate.
(assuming 5/5/5)
- configuration option for crosshairs, you can snap to whatever
- because that script isn't actually doing any live rangefinding
here is the (v9) source for the video: https://github.com/trioderegion/fvtt-macros/blob/legacy/v9/honeybadger-macros/abilities/dnd5e/wgMistyStep.js
part of warp gate
hmm i think i prefer the drawing/circle rather than the range indicator on mouse
(but that's just personal)
Ideally you’d want the ring attached to your token so it moves with you if you move before finishing targeting
doesn't ripper have a patreon module that does rangefinding?
definitely not worth a paywall, the idea is maybe....30 lines of code?
casually gestures towards exposed apis in Template Macro and babonus
There exist paid modules with, like, 10 lines of code. 😆
i guess my mention of line count wasn't quite the point, more that "we have basically solved it here"
I'm prepared to go full Hemingway if I would get paid by lines of code.
flags.midi-qol.fail.ability.save.all
if this is the flag to auto-fail, what's the one for auto-succeed?
oh, didn't know you could move while targeting
Hello. After updating to the tenth version, damage is not automatically applied from templates. Can you please tell me which setting is responsible for this?
disable all but the minimum for midi and test again
I just want to understand which of the buttons is responsible for automatic dmg from templates. 🥲
are the templates targetting the targets?
Yes
what is your save method?
Spoiler alert, my next question is going to be, does it happen with just socketlib, libwrapper, and midi qol enabled?
there is a module called find the culprit that makes this question a matter of seconds to find out and doesn't mess up your configuration at all fyi
I think I worked out the spell activation issue (I can get macro to be called) - I removed the DAE and went straight MIDI onUse however it only activates if I use All or Called before item is rolled which means it doesn't wait for ack of consume spell slot or application of template (which is what I'd prefer) - any ideas on how I can make it wait for template placement?
I don’t use Late Targeting yet so I haven’t tried, but that would be ideal. It’s when you have the range indicator ring up you know if you’re close enough, right?
for some reason, this one isn't working for me, while the other one is. Now, issue might be i'm trying to set multiple of these "size filters" for a macro, and I've realised that's not possible because this macro bit already triggers the saving throw, so only the 1st one works properly (while the rest do apply the effect, but it remains on the creature because the save has already been made). Still, the other one works (but just for the 1st filter). The idea would be: tiny, small, medium autofail; large has disadvantage; huge does regular roll; and gargantuan auto-succeeds (or add high str save bonus, since it's a strength save)
Good use of air quotes there. In theory we’ve solved it but it would take me hours of experimenting even just to have it work on the right token 😂
i like late targeting because everyone at my table forgets targeting xD. Also, midi at least lets you know your target is too far when you try something you can't (but just tells you that and then closes the process)
I'm feeling that cheap else if made from barely knowing code keywords isn't gonna work...
for (let target of args[0].targets) {
if (!["lg"].some(s=>target.actor.getRollData().traits.size.includes(s))) continue;
const effectData = {
"changes":[
{ "key": "flags.midi-qol.disadvantage.ability.save.all", "mode": CONST.ACTIVE_EFFECT_MODES.CUSTOM, "value": "1", "priority": "20" }
],
"disabled": false,
"duration": {
"startTime": game.time.worldTime,
},
"icon": "icons/magic/control/debuff-energy-hold-yellow.webp",
"label": "Disadvantage on save - size dependant",
"tint": "",
"transfer": false,
"flags": {
"core": { "statusId": "" },
"dae": { "specialDuration": [ "isSave" ] }
}
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: target.actor.uuid, effects: [effectData] });
else if (!["tiny","sm","med"].some(s=>target.actor.getRollData().traits.size.includes(s))) continue;
const effectData = {
"changes":[
{ "key": "flags.midi-qol.fail.ability.save.all", "mode": CONST.ACTIVE_EFFECT_MODES.CUSTOM, "value": "1", "priority": "20" }
],
"disabled": false,
"duration": {
"startTime": game.time.worldTime,
},
"icon": "icons/magic/control/debuff-energy-hold-yellow.webp",
"label": "Fail save - size dependant",
"tint": "",
"transfer": false,
"flags": {
"core": { "statusId": "" },
"dae": { "specialDuration": [ "isSave" ] }
}
}
await MidiQOL.socket().executeAsGM("createEffects", { actorUuid: target.actor.uuid, effects: [effectData] });
}
thanks xD
but i want being tiny/small/med to be a condition for the following statement
problem is, i guess, i don't actually know where the proper conditions and statements should start/work
This ```js
if (!["lg"].some(s=>target.actor.getRollData().traits.size.includes(s))) continue;
So it will never reach the `else if` statenement
hmm oooh i think i'm getting it
aah
so i remove continue and it would work?
otherwise i could do something like this example, listing the sizes and then writing ifs for each one
#macro-polo is the place for help with scripting outside of MIDI-specific API 🙂
that said, that expression is overly complex
if (!target.actor.system.traits.size.includes('lg')) continue;
is much more clear
oke, sorry
all good, just pointing to the best resource
code academy is a great place to learn
@violet meadow, out of curiosity, what have you accomplished with the babonus api?
When I try to use "@target.details.type.value".includes("dragon") as an activation condition, I'm getting a TypeError Cannot use 'in' operator to search for value in Dragon." This is in V9. Any thoughts what I'm doing wrong?
Stumbled on this conversation, and that's been my experience. I loaded BAB in, and had a lot of trouble doing anything I wanted to. I think an in-depth guide with a ton of examples would help a lot. As it was, I couldn't make heads or tails of how to make the module work well.
What were you trying to create?
I'll give an example of something I tried to do recently; I wanted creatures with an effect to add 1/2 their PB if they didn't already add their PB to str, dex, and con saves.
I assume it was the status id that threw you off
Like I said, I gave BAB a spin, and I have no clue how to make it work 😕
I ended up uninstalling it since I couldn't make heads or tails of it, but I can give it another try
🤷 If it was a while ago, the even-more-in-your-face tooltips I added might help.
I think a lot of people missed that there were titles when you hovered with the cursor.
It might be good for people who understand the code within the game, but as someone who's mostly an end-user who knows very little about the workings of the game, it felt very obtuse to me, which is why I think a repository of examples showing how to build various bonuses would go a long way
If they included things that would otherwise be complex or are incredibly interesting, I think it could raise a lot more enthusiasm for the module 🙂
But if I just want to add +1 to attack rolls, saving throws, AC, or otherwise, I find it easier just to create an item that applies an effect, or just an effect that does that.
Well yeah, you don't use Build-a-Bonus as a replacement for system.bonuses.mwak.attack or some such
Right; giving examples of what it can do, and how to do it, would be extremely helpful IMO
I saw the documentation had a bunch of examples on the right of things that were already made, but I'd have no idea on how to even start reproducing those
The more complicated one, Alchemical Savant, is the one included on the left.
https://i.imgur.com/5xUWQUu.png
But I am not going to disagree.
how would I program in an auto heal over time (every turn)
I have a ghetto version from reverse engineering the overtime flag from phantasmal killer, but despite setting savingthrow=false it still waits for a save
I also turned on damagebeforesave (for this I set the "damage type" to healing)
helpers/simbul's creature aid has regeneration automation you could use
thats a module?
5e helpers on v9, and simbul's on v10
is there no way to do that as a recurring "damage" via midi?
actor.applyDamage(-10),
slap that into Effect Macro
effect macro?
For midi you can use overtime effects or more easily use the module effect macro to attach a macro to the active effect. Effect macro does not provide the workflow context or allow arguments to be passed, but is very easy to use.
I'm not good with coding, I guess I'll just have them use the saving throw every turn
and set the DC to 99
(That is the entire macro, that one line of code, fyi.)
Overtime effects don't require coding (but the coding required is literally what Zhell posted). For a midi overtime effect you want
flags.midi-qol.overTime OVERRIDE turn=start, removeCondition=false, damageRoll=10
turn=start, saveDC=99, saveMagic=false, damageRoll=1d4, damageType=healing, savingThrow=false, damageBeforeSave=true
I took that from your spell
Remove the parts about a save
If you just want to do damage each turn you can skip most of the fields, turn=start, removeCondition=false, damageRoll=2d10 should be enough. I think if the damage type is healing it will heal rather than damage
ok
flags.midi-qol.overTime OVERRIDE turn=start, removeCondition=false, damageRoll=10
What doesremoveCondition=falsedo in the case of this effect? Doesn't it automatically not remove the effect unless there's some sort of save/check? 🤔
Probably correct, I tend to put it in as a reminder that there is no save on purpose.
Where is this advantage notification coming from in v10? 😲 I love it!
I remember talking to Tim about it with regard to midi+AR synergy back in v9... has it come to pass?
Well it ain't core, I can tell you that much
I have this ability on a character, and I'm trying to put it as a passive effect. Is it possible? I can do it for 'all wisdom saves' but im not sure how (if possible) to do the magic check
You have advantage on all Wisdom and Charisma saves against magic.
99% of the time it'll be magic.
haha my current thinking is "just change it to being advantage on all wisdom and charisma saves" and save myself the headache, but thought I'd ask in case there was a simple solution
I would put it on all saves but use Advantage Reminder also, so you can remember not to hit the Advantage button if it's not magic
I think in v10 version of midi you can check the workflow in the custom box
So it might be possible
I'm not on v10 yet, wont be upgrading until after the next game, but maybe
@molten solar The find grids fix isn't in the currently released version of template macros right?
Should be?
0.0.5 has the initial version I think
then you did a fix right after IIRC
I see the fix commit
Yeah, I replaced the files in the release.
ah
check the api, see if its there
This seem correct?
yeh that was a typo, they're now both advantage.ability
then should be good
There is likely more complicated ways to get it to check for magical abilities, but it's unlikely to be worth the effort.
I think most things that target charisma or wisdom are magical anyway
if it was dex or con I'd be more concerned
What feature is this for? I'd say Gnome cunning, but you don't have int there as well.
It's mildly homebrew, a 'wildling' race
Ah cool
So yeh it's mostly gnome-based